虹科分享 | 平衡速度和优先级:为多样化的实时需求打造嵌入式网络(2)——实时通信系统的需求
现代实时应用的复杂性和需求不断增加,需要强大而可靠的通信系统。正如本系列第一部分所述,这些应用涵盖从秒到毫秒的广泛响应时间要求,它们的成功通常取决于其响应的精确时间。因此,所选的通信系统必须能够满足这些严格的时序限制。然而,实现所需的实时能力并不是唯一的考虑因素。很多情况下,这些系统还需要保证用户、设备和周围环境的安全。此外,鉴于威胁形势日益严峻,确保这些通信系统的安全也变得同样重要。平衡实时响应、安全性和保障是一个多方面的挑战。因此,在本系列的第二部分中,我们将研究使通信系统能够满足这些需求的具体属性和注意事项。
随着时间的推移,对实时通信系统的要求不断发展并且变得更加严格。早期,主要关注点是以合理的可靠性水平实现实时要求。如果系统能够在指定的时间范围内处理和传输数据,即使偶尔发生错误,通常也被认为是足够的。随着技术的进步和系统变得更加复杂,对安全的需求变得显而易见。“稍微可靠”已不再足够,特别是对于人身安全、产品质量或系统操作受到威胁的应用。为了解决这些问题,开发了特定的协议,以确保实时系统即使在出现故障或中断的情况下也能安全运行。
安全的重要性日益凸显,特别是在车辆或医疗设备等关键应用中。最近,随着实时系统越来越互连,甚至可以通过互联网访问,安全性成为另一个重要的考虑因素。由于存在网络攻击和未经授权访问的可能性,因此不仅需要保护数据,还需要保护通信系统本身的完整性和可用性。
如今,一个全面的实时通信系统必须满足所有三个标准:实时响应性、安全性和保密性。在为任何实时应用设计嵌入式通信系统时,不再建议从头开始。曾经,开发人员采取临时方法很常见,例如重新利用其中一个串行端口以在多个节点之间共享它,从而有效地创建 RS485 式网络。然而,这种方法无法适应实时系统日益增加的复杂性。
1. 有普遍适用的方案吗?
遗憾的是,没有一种网络技术能够普遍适用于所有应用。每种应用都有其独特的要求和限制,因此有必要仔细评估和选择适当的通信技术和协议。因此,必须考虑应用程序的具体需求,并将其与最合适的可用网络技术相匹配,同时考虑所需的吞吐量、实时响应性、安全性和保密性等因素。
2. 有多少数据?多久1次?
首先,评估系统的整体架构。除了实时要求和必须执行完整控制步骤的时间范围外,还要考虑所需输入和输出的总数、它们之间的距离以及每个时间范围内和设备之间需要交换的信号数量及其数据长度。一般来说,不建议将任何系统推向“极限”,因此您选择的任何网络技术都应该具有足够的能力来适应应用程序随时间的增长。
3. 有安全保障的要求吗?
一旦您为您的应用确定了适用的时间范围,确定需要采取哪些安全措施就至关重要。如果您的应用程序必须遵守特定的安全标准或认证,您对通信网络的选择范围将自动缩小。在本文中,我们重点讨论实时性要求。在进行研究时,请仔细检查最新进展,因为所有活跃的现场总线组织和委员会都在不断致力于提高安全性和保障性。
4. 有同步要求吗?
考虑是不是任何信号都需要同步,这意味着应在同一时刻捕获输入。对于组合了多个输入的应用,同步至关重要。在实时通信系统中,同步在确保准确的数据传输和解释方面发挥着重要作用。一些应用程序因其性质而需要同步(例如,同步同时处理同一材料的多个操纵器),而其他影响可能更微妙:假设模拟传感器根据其内部计时器每100毫秒生成输入数据的场景,该数据也每100毫秒传输到网络上一次,由单独的网络计时器触发。如果这些计时器不同步,它们可能会逐渐偏离,导致两种可能的情况:
重复数据传输:如果网络计时器的窗口短于传感器的窗口,则在网络准备好传输时传感器可能尚未生成新的输入数据。在这种情况下,相同的数据可以传输两次。
数据丢失:如果传感器的计时器窗口短于网络的计时器窗口,则可能会在传输前一个值之前生成新值。这种情况可能会导致数据跳过或丢失。
这些场景的影响很大程度上取决于信号及其使用情况。例如,如果该值代表温度并且主处理单元只需要知道它是否落在正确的范围内,则这些场景没有任何影响。然而,如果它是一个计数器或代表波的快速变化的信号,丢失或重复的数据可能会产生严重的后果。
5. 其他考虑因素
选择实时通信系统时,还有许多额外的考虑因素:现成的产品、开发和诊断工具是否随时可用?它可以轻松地与现有(或计划的)系统集成吗?如果需要单毫秒的硬实时,则这种集成可能需要“更深入”到系统中,可能需要在硬件的最低级别定制软件。
了解应用程序的具体要求(实时响应性、安全性、系统架构和同步)可以指导您选择合适的通信网络。除了广泛认可的现场总线之外,许多网络通常由制造商或联盟制作,以满足特定应用或行业的需求。它们可能提供针对某些应用程序需求量身定制的独特功能、专用协议或专有技术。
例如,控制器局域网 (CAN) 是一种多功能通信协议,通过其专用协议支持众多应用。J1939 等协议适合商用车辆(如建筑、农业),标准化消息格式和信号,以方便制造商制作可互操作的组件。NMEA 2000 由美国国家海洋电子协会 (NMEA) 开发,有助于海洋电子设备的集成,简化复杂海洋系统的配置和管理。CANaerospace 专为航空航天而设计,可满足航空电子系统的独特需求,确保飞机上可靠的数据交换。
CANopen协议具有灵活性,拥有许多设备和应用配置文件,例如电梯、紧急车辆的配置文件和垃圾收集车辆的CleANopen。这些配置文件决定了设备或整个应用程序的通信行为和数据结构,从而简化了开发过程。
除了CAN之外,还有大约10多种不同的解决方案用于支持以太网的实时通信,每种解决方案都针对不同的应用。一般来说,如果您的应用程序的实时要求大约为100毫秒或更长,您就有多种选择,因为大多数嵌入式通信网络或现场总线都可以满足这些要求,即使对于更广泛的系统也是如此。然而,对于大型机械(跨越数百米或更远的电缆),仔细检查通信运行时间和吞吐量至关重要。
总结
对于严格的实时性要求,短至10ms甚至更短,必须认真审查哪些网络技术可以满足您的需求。通常,时间触发的通信系统(可在CAN、以太网和其他平台上使用)是最具确定性的。这里,每个有实时性要求的信号都被分配一个专属时隙,确保信号传输的可预测性。
作为CAN和CANopen通信领域的专家,本系列的下一部分将重点介绍CAN和CANopen,作为许多可用嵌入式通信系统的示例。后续的文章中将探索它对具有实时要求的不同系统的适用性,强调可实现的响应时间、需要仔细关注的领域以及突破界限的情况,建议对替代方案进行评估。
相关文章:
虹科分享 | 平衡速度和优先级:为多样化的实时需求打造嵌入式网络(2)——实时通信系统的需求
现代实时应用的复杂性和需求不断增加,需要强大而可靠的通信系统。正如本系列第一部分所述,这些应用涵盖从秒到毫秒的广泛响应时间要求,它们的成功通常取决于其响应的精确时间。因此,所选的通信系统必须能够满足这些严格的时序限制…...
佳易王各行业收银管理系统软件,企业ERP管理软件,企业或个体定制开发软件以及软件教程资源下载总目录,持续更新,可关注收藏查阅
系统简介 1、佳易王软件功能实用、操作简单、软件绿色免安装,解压即可使用,软件已经内置数据库,不需再安装其他数据库文件。 2、佳易王软件,已经形成系列,上百款管理系统软件涵盖多个行业。 3、已为多个企业个体定制…...
C_4练习题
一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 定义如下变量和数组: int i; int x[3][3]{1,2,3,4,5,6,7,8,9}; 则下面语句的输…...
自动化测试-Selenium
一. Selenium介绍 selenium 是用来做web自动化测试的框架,支持各种浏览器,各种,支持各种语言 原理: 二. 元素定位 2.1 XPath 定位 绝对路径: /html/head/title 相对路径以双斜杠开头,常见的相对路径定位有以下几种: <1>相对路径索引: 索引是从1开始的 <2>相…...
基于单片机的温湿度检测系统设计
目录 摘 要... 2 第一章 绪论... 5 1.1 研究课题背景... 5 1.2 国内外发展概况... 7 1.3 课题研究的目的... 8 1.4 课题的研究内容及章节安排... 8 第二章 温湿度检测系统控制系统的设计方案... 10 2.1 设计任务及要求... 10 2.2 温湿度检测系统总体设计方…...
C# 关于异常处理 try-catch语句的使用
在实际应用中,比如涉及文件读写、网络通信时,会因为文件不存在、权限不够、网络异常等原因引发异常,或者对数据库连接、查询、更新等操作,会因为连接超时、语法错误、唯一约束冲突等引发异常。 看过去的代码,当进行上…...
【LeeCode】26.删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums ,请你原地删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需…...
4-Docker命令之docker create
1.docker create介绍 docker create命令是用于创建一个新的容器,等价于docker run -d命令,但是与docker run -d不同的是,docker create创建的容器并未实际启动,需要指定docker start命令启动。 2.docker create用法 docker create [参数] [root@centos79 ~]# docker cr…...
leetcode每日一题33
86.分隔链表 因为对链表中的一个节点进行更换位置的操作需要知道该节点的上一个节点 所以建立一个虚拟头节点 ListNode* pnew ListNode(-201,head);根据题意,我们需要找到第一个大于x或等于x的节点large 并且将第一个大于或等于x的节点large后的所有小于x的节点都…...
性能测试【一】:Jmeter的常用操作
性能测试【一】:Jmeter的常用操作 一、使用命令行方式运行Jmeter1、为什么2、怎么用3、示例4、结果文件 二、生成动态报告1、准备2、命令3、报告示例4、报告释义 三、使用问题汇总 推荐使用命令行运行,GUI方式会经常卡死,尤其跑稳定性 一、使…...
【JAVA】SpringBoot + mongodb 分页、排序、动态多条件查询及事务处理
【JAVA】SpringBoot mongodb 分页、排序、动态多条件查询及事务处理 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mongodb ↓ -->&…...
nrm安装及使用
一、介绍 nrm 是一个 Node.js 的 registry 管理工具,它允许你快速地在不同的 npm registry 之间进行切换。通过使用 nrm,你可以方便地将 npm 的 registry 切换为淘宝镜像、npm 官方镜像或者其他定制的镜像,以加快包的下载速度。nrm仓库请点击…...
docker报错standard init linux.go:228 exec user process caused: exec format error
1、报错 使用Dockerfile自己做的服务镜像,docker run时启动失败,报错如下: standard init linux.go:228 exec user process caused: exec format error2、原因一 当前服务器的CPU架构和构建镜像时的CPU架构不兼容。比如做镜像是在arm机器下…...
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
Docker 是一种容器化技术,它将一个应用程序及其所有依赖项打包在一起,形成一个独立的、可移植的容器。这个容器可以在任何支持 Docker 的操作系统上运行,而且具有很好的可移植性和可扩展性。以下是 Docker 的基本概念和优势: 镜像…...
libmosquitto库的一个bug,任务消息id(mid)分配后不起作用
代码如图所示: 当订阅了所有主题后,每个主题的mid是他们的下标索引加100的数字,可是实际打印出来的值是: mid依然是1,2,这个参数在这里失效了,不知道是bug还是mqtt的什么机制?...
亚马逊云科技re:Invent大会:云计算与生成式AI共筑科技新局面,携手构建未来
随着科技的飞速发展,云计算和生成式 AI 已经成为了推动科技进步的重要力量。这两者相互结合,正在为我们创造一个全新的科技局面。 亚马逊云科技的re:Invent大会再次证明了云计算和生成式AI的强大结合正在塑造科技的新未来。这次大会聚焦了云计算的前沿技…...
Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息
前面的话 默认你已经懂 Docker、docker-compose Nacos版本:v2.2.3 MySQL 版本:8.2.0 一、下载 打开 Nacos 官网 官网地址:官网 点击手册 左侧 Nacos Docker 克隆项目到本地 # 克隆项目,如果提示连接不到 github 请自行解决 …...
【LeeCode】35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 解: class Solution {public int searchInsert(int[] nums, int target) {int …...
18.天气小案例
1►新增带Layout组件的页面 直接在views文件夹下面新增weather.vue。然后随便写一个123,现在先让我们页面能跳过去先。 让页面能跳过去,有好几种方法: 1、在菜单管理自己添加一个菜单,然后把菜单分配给某个角色,再把…...
医保线上购药系统:代码驱动的医疗创新
医保线上购药系统,这是一个融合技术和医疗的创新典范。本文将通过简单的技术代码示例,为您揭示这一系统是如何通过技术驱动医疗创新,为用户提供更智能、便捷的健康管理体验的。 1. 前端界面开发 使用React框架,我们可以轻松构建…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
