场景与背景:多种设备间通讯协议uart,rs485,can,Ethernet,ethercat等性能与实时性和灵活性的要求下,应该如何设计与组建大型工业化项目。
以下将由ai(deepseek)作为分析大脑,用户作为决策方,进行开放性思考与设计。
提问1,给出场景供ai思考以确定大致的选型方向
用户Q:现在有以下场景:某大型设备,需要集成108个子节点,每个节点模块独立包含电机驱动板控制子模块,为保证实时性,控制时间精度小于10ms,且为了控制成本和节点模块体积(pcb板材小于80*80mm,每个子模块间距离为800mm),在rs485,usart,can,ethercat,ethernet里进行选型和对比,列出他们的优缺点和应用在该场景的作用,并思考是否有其他可替代方案可以应用与该大型设备。另外,该大型设备,是部署于试验场内,且该实验内最多可拥有20000台该设备进行集中控制,每台设备也需要通讯,设备间与服务器端的链接方式也需要进行设计和考虑,目前方案是使用ethernet多层路由的方式,每200台设备为一组,组成第一层路由,每32台或16台一层路由为一组,组成第二层路由,所有的第二层路由都接到服务器内,设备与路由,路由与路由使用上述可选择的链接方式,第二层路由和服务器使用ethernet连接。每台设备间间距大概为12m,设备布置高度为8m。根据以上分析的连接方式优缺点分析该试验场目前使用的网络机构应该如何选择设备与路由间的通讯方式,以及路由与服务器使用的通讯协议是否满足要求,场景使用100mbps以太网,服务器与设备通讯控制延迟为1s,最大10s内。
针对您描述的大型设备及试验场网络需求,我将从设备内部子节点通讯选型、试验场网络结构设计两个方面进行详细分析和推荐。首先,我会对比RS485、USART、CAN、EtherCAT、Ethernet在设备内部子节点通讯中的优缺点,然后基于试验场需求评估当前网络方案的合理性,并提出建议。
一、设备内部子节点通讯选型分析(108个子节点)
每个子节点是电机驱动板控制模块,要求实时性(控制时间精度<10ms)、低成本、小体积(PCB<80*80mm),节点间距离800mm。通讯选项包括RS485、USART、CAN、EtherCAT、Ethernet。
选项对比:
通讯方式 | 优点 | 缺点 | 应用在该场景的作用 | 是否推荐 |
---|---|---|---|---|
RS485 | - 成本低,硬件简单 - 支持多点通信,距离长(可达1200m) - 可靠性高 |
- 速度慢(典型波特率≤115.2kbps) - 主从轮询机制,实时性差 - 轮询108个节点时延可能>10ms - 协议开销大(如Modbus RTU) |
可用于数据采集和控制,但难以满足<10ms的实时性要求。轮询计算:假设波特率115.2kbps,每个节点查询需2ms,轮询108节点约216ms,远超10ms。 | 不推荐 |
USART | - 成本低,简单 - 点对点通信 |
- 不支持多节点网络 - 需额外硬件(如RS485转换)才能组网 |
不适合多节点网络,仅适用于点对点场景,无法用于108个节点。 | 不推荐 |
CAN (2.0B或FD) | - 成本低,许多MCU集成CAN控制器 - 多主架构,优先级仲裁,实时性好 - 距离适中(1Mbps时达40m) - 可靠性高,抗干扰强 |
- CAN 2.0B带宽有限(1Mbps) - 108节点时总线负载可能较高 - 需精心设计报文优先级和负载 |
适用于实时控制。计算:CAN FD(5Mbps)时,每帧(8字节数据)时间约22.8μs,108帧约2.46ms,负载25%,延迟<3ms,满足<10ms要求。CAN 2.0B类似但风险稍高。 | 推荐(成本敏感时) |
EtherCAT | - 实时性极好,延迟低(<1ms) - 高带宽(100Mbps),数据吞吐率高 - 菊花链拓扑,布线简单 - 同步精度高(纳秒级) |
- 成本较高(需专用ESC芯片如LAN9252) - PCB设计更复杂(需以太网PHY) - 开发难度较大 |
完美满足实时性要求,适合高性能电机控制。108节点循环周期可<1ms,但成本较高。 | 推荐(性能优先时) |
Ethernet | - 高带宽(100Mbps) - 广泛使用 |
- 实时性差(TCP/IP栈不确定延迟) - 需处理协议栈,MCU资源占用高 - 成本较高(需PHY和处理器) |
标准以太网难以保证<10ms实时性,除非使用实时协议(如EtherNet/IP),但增加复杂性。 | 不推荐 |
推荐方案:
- 如果成本敏感:选择CAN FD(优先)或CAN 2.0B。CAN FD提供更高带宽(5Mbps),能轻松处理108个节点的数据,延迟<3ms,满足10ms要求。硬件成本低,PCB尺寸易满足80*80mm。
- 如果性能优先:选择EtherCAT。虽然成本较高,但实时性和同步性最佳,适合精密控制。PCB尺寸80*80mm足以容纳ESC芯片和PHY。
- 其他方案:RS485和USART实时性不足,不推荐;标准Ethernet实时性差,不推荐。
二、试验场网络结构分析
试验场有20000台设备,每台设备有108个子节点。设备间距离12m,高度8m。服务器与设备通讯延迟要求1s(最大10s)。当前方案:Ethernet多层路由,每200台设备为第一层路由组,每32或16台第一层路由为第二层路由组,第二层路由连接服务器。设备与路由、路由与路由通讯方式需选择,第二层路由与服务器用Ethernet。
设备与路由通讯方式选型:
设备与路由距离短(12m),但设备数量多(20000台),需考虑带宽、延迟、成本和可靠性。选项包括RS485、CAN、EtherCAT、Ethernet。
通讯方式 | 优点 | 缺点 | 应用在该场景的作用 | 是否推荐 |
---|---|---|---|---|
RS485 | - 成本低 - 距离长 |
- 轮询延迟高(200设备轮询时间约400ms) - 带宽低(115.2kbps),限制数据量 - 需主从架构,管理复杂 |
可用于设备通讯,但延迟可能接近1s极限,且大数据量时带宽不足。 | 不推荐 |
CAN | - 成本低 - 实时性好,多主架构 - 距离适中(12m没问题) |
- 节点数有限(每总线≤110节点) - 带宽1Mbps,200设备共享可能紧张 - 需网关聚合多个总线 |
如果设备已有CAN接口,可节省成本。计算:200设备每秒发送100字节,需求160Kbps,1Mbps带宽足够,延迟低。但需分段管理。 | 可考虑(成本敏感时) |
EtherCAT | - 实时性极好 - 高带宽 |
- 成本高(设备需EtherCAT从站接口) - 过度kill用于设备间通讯 |
适用于设备内部,用于设备间通讯则成本高,不经济。 | 不推荐 |
Ethernet | - 高带宽(100Mbps) - 延迟低(毫秒级) - 易于管理(IP网络) - 与服务器网络一致 |
- 设备需以太网接口,成本稍高 - 需交换机和布线 |
完美满足延迟要求(1s易实现),带宽充足,支持20000台设备聚合。 | 推荐 |
路由与路由通讯方式:
- 第一层路由与第二层路由之间、第二层路由与服务器之间均推荐使用Ethernet,保持网络一致性,带宽高,延迟低,易于扩展和管理。
当前网络方案评估:
- 设备与路由通讯:当前方案未指定方式,但基于分析,推荐使用Ethernet。如果设备已有CAN接口(从内部子节点),可考虑CAN以节省成本,但会增加网络复杂性(需网关)。Ethernet更简单可靠。
- 路由与路由通讯:使用Ethernet合理,延迟可忽略不计。
- 服务器与设备延迟:要求1s(最大10s),使用Ethernet时,网络传输延迟仅毫秒级,主要延迟来自数据处理和队列。假设每设备每秒发送100字节,总数据量16Mbps,服务器网络(千兆/万兆)轻松处理,延迟远小于1s,满足要求。
- 网络结构:分层路由(第一层200设备/组,第二层32或16组/组)合理,可缩放。第一层路由可用交换机实现,第二层路由用更高性能交换机。
推荐方案:
- 设备与路由通讯:使用Ethernet(100Mbps)。每个设备配备以太网接口,连接到第一层交换机(每200台设备一个交换机)。
- 路由与路由通讯:使用Ethernet,第一层交换机汇聚到第二层交换机(每32组第一层交换机一个第二层交换机),第二层交换机连接服务器。
- 服务器连接:第二层交换机通过千兆/万兆Ethernet连接服务器,确保带宽。
三、其他可替代方案考虑
- 无线方案(如Wi-Fi、Zigbee):不推荐,因实时性不可靠、频谱拥堵、干扰多,且20000台设备管理复杂。
- Powerline Communication:不推荐,因电力线噪声大,稳定性差。
- 工业以太网协议(如PROFINET、EtherNet/IP):如果设备已支持,可用于设备与路由通讯,但成本高,不如标准Ethernet经济。
四、总结
- 设备内部子节点通讯:优先选择CAN FD(成本敏感)或EtherCAT(性能优先),以满足实时性要求。
- 试验场设备网络:设备与路由之间推荐使用Ethernet,路由与路由之间使用Ethernet,当前网络结构合理,满足延迟要求。
- 整体建议:采用Ethernet统一网络架构,简化管理,确保扩展性和可靠性。如果设备内部已用CAN,设备与路由可沿用CAN以节省成本,但需评估网关复杂性。
提问2:用户给出明确的方案,提出更加明确的要求
用户Q:明确一下,设备与节点间有读写操作,单台设备通讯延时在10ms内,群控50ms内;设备与路由和服务器,路由会实时查询设备数据并存储,服务器每秒钟都会通过二层路由查询一层路由下每台设备的数据,该请求可以设置查询和控制指令,控制指令会被二层路由转发给一层路由再转发给设备,进而控制设备的子节点。经过以上数据分析,目前预选用can2.0b设置1mbps用作设备与节点间通讯,设备与路由也使用can2.0b设置1mbps单独另一个can接口进行连接,一层路由与二层路由使用ethernet 100mbps,二层与服务器使用ethnet + 企业级32口交换机进行连接,目前需要解决的问题是:1. 一层路由与二层路由如何连接ethernet口? 2. 以及设备与一层路由连接时,200台设备can2.0b是否能够容纳得下;3. 请辅助设计通讯间模型建立:子节点状态数据有18个4字节数据,控制数据有6个4字节数据;每个设备状态数据有64个16位数据和20个32位数据;每个设备应该如何设计地址,每个设备得子节点如何设计地址;路由和设备是否必须需要存储节点得数据以方便服务器快速读取?还是服务器能够通过网络结构频繁的io去实时(1s内)读取设备状态?路由应该扮演什么样的角色仅仅使用路由器网络中转路由还是使用mcu实现更多功能?
非常感谢您的明确需求!这是一个非常典型的大型工业控制系统架构设计问题。基于您提供的详细参数和预选方案,我将逐一回答您的问题,并提供完整的通讯模型设计建议。
核心问题分析与解答
1. 一层路由与二层路由如何连接Ethernet口?
答案: 通过工业以太网交换机进行连接。
- 具体实现: 您的一层路由和二层路由不应是简单的“路由器”,而应是集成了CAN主站和以太网接口的嵌入式网关设备。
- 硬件构成: 这个网关设备通常是一个高性能的工业级ARM MCU(如STM32MP1系列、NXP i.MX8系列)或X86工控板,运行Linux等操作系统。它需要具备:
- 多个CAN接口: 作为CAN主站,连接下属的200台设备。
- 至少一个以太网接口 (100Mbps): 用于接入上层网络,与二层路由交换机通信。
- 网络拓扑:
- 每个一层路由网关的以太网口,都连接到一台二层路由交换机上。
- 这台二层交换机连接16或32个这样的一层网关。
- 所有二层交换机最终通过企业级核心交换机连接到服务器。
结论: 一层路由与二层路由之间是标准的、星型拓扑的以太网连接,使用交换机进行汇聚。
2. 200台设备通过1Mbps CAN2.0B能否容纳得下?
答案: 非常勉强,负载率极高,风险很大,强烈不建议。 需要进行理论计算。
CAN总线负载率计算:
CAN总线负载率是评估实时性和可靠性的核心指标,业内通常要求低于30%-40% 以保证稳定性和实时性。
- 假设条件:
- 波特率:1 Mbps (1,000,000 b/s)
- 数据帧:标准数据帧(44+8*8+3+7+1=108位 ~ 110位/帧,估算)
- 服务器查询频率:1 Hz (每秒查询所有设备一次)
- 数据量分析:
- 每台设备状态数据:
64个 * 2字节 + 20个 * 4字节 = 128 + 80 = 208字节
。 - 为了传输208字节,需要拆分成多个CAN帧(每帧最多8字节数据场)。需要
208 / 8 = 26
帧。 - 因此,每台设备每次被查询,需要上传26帧数据。
- 每台设备状态数据:
- 总负载计算:
- 每秒总帧数:
200台设备 * 26帧/台 = 5200 帧/秒
。 - 每秒总位数:
5200帧/秒 * 110位/帧 = 572,000 位/秒
。 - 总线负载率:
572,000 / 1,000,000 = 57.2%
。
- 每秒总帧数:
结论:
57.2%的负载率远高于30%的安全阈值。这将导致:
- 延迟急剧增加: 低优先级的报文可能需要等待很长时间才能发送。
- 稳定性下降: 网络稍有任何干扰或增加新的报文,负载率会进一步升高,极易导致总线拥塞、报文丢失,甚至完全瘫痪。
- 无法满足实时性: 50ms的群控指令可能无法及时送达所有设备。
解决方案:
- 首选方案(强烈推荐): 将设备与路由之间的CAN总线升级为CAN FD。假设将数据段波特率提升至5Mbps,则负载率降至约11.4%,游刃有余。
- 妥协方案(不推荐): 大幅降低数据更新频率。例如,服务器每5秒请求一次数据,负载率可降至11.4%,但无法满足实时监控需求。
- 架构调整方案: 减少每个CAN总线上的设备数量。例如,每个一层路由网关设计4个CAN接口,每个接口连接50台设备。这样每条总线的负载率可以降至14.3%。
3. 通讯模型与地址设计
a) 地址设计原则:
需要分层编址,确保整个系统内每个数据点都有唯一标识。
子节点地址 (位于设备内部):
- 格式:
设备内部地址
(1字节) - 分配: 0x01 到 0x6C (108个节点,十进制1-108)。这个地址在设备内部CAN总线上是唯一的。
- 作用: 用于设备内部的MCU通过CAN与各个子节点通信。
- 格式:
设备地址 (用于设备与一层路由之间):
- 格式:
CAN总线节点ID
(11位标准ID或29位扩展ID) - 分配: 建议使用11位ID,范围0x001 到 0xC8 (200个设备,十进制1-200)。这个地址在连接到一个一层路由网关的同一条CAN总线上是唯一的。
- 作用: 一层路由网关通过这个ID来区分不同的设备。
- 格式:
设备全局地址 (用于服务器和路由之间):
- 格式:
[网关ID, 设备ID]
- 分配:
- 网关ID (一层路由ID): 1 - 100 (假设有100个一层网关)
- 设备ID: 1 - 200
- 示例: 服务器要访问第55号网关下的第123号设备,它的全局地址就是
(55, 123)
。 - 作用: 这个地址信息体现在以太网通信的应用层协议中(例如Modbus-TCP的寄存器地址映射,或自定义协议的数据包结构)。
- 格式:
b) 路由的角色与数据存储:
答案: 路由(网关)必须缓存数据,绝不能仅做网络中继。
- 角色定位: 一层路由网关应该是一个智能数据采集器和协议转换器。
- 功能1:数据缓存与聚合。 网关应主动并周期性地(例如每100ms)轮询其下属200台设备,将所有设备的状态数据读取并存储在本地内存或数据库中。
- 功能2:协议转换。 实现CAN协议与TCP/IP协议之间的转换。当服务器通过以太网发送查询请求时,网关不再去实时轮询CAN设备,而是立刻将缓存的数据打包,通过以太网返回给服务器。这被称为报告异常法或缓存机制。
- 工作流程:
- 服务器向网关55发送请求:“获取你旗下所有设备的数据”。
- 网关55接收到请求,直接从本地缓存中取出最新数据,组成TCP/IP报文回复服务器。
- 整个过程在毫秒级内完成,完美满足1秒的查询周期要求。
- 对于控制指令,服务器发送给网关,网关再通过CAN总线实时下发到指定设备。
- 优点:
- 极大减轻CAN总线压力: 服务器的高频查询压力被隔离在以太网层面,CAN总线仅在网关主动轮询时工作。
- 响应极快: 服务器获取数据的延迟极低,不再受CAN总线轮询时间限制。
- 可靠性高: 即使某个时刻CAN总线繁忙或短暂故障,服务器仍能获取到网关缓存的最新数据。
总结与最终方案建议
问题 | 推荐方案 |
---|---|
设备内部通讯 | CAN 2.0B (1Mbps)。108个子节点,数据量小,实时性要求高,CAN 2.0B完全足够。 |
设备与一层路由通讯 | 升级为 CAN FD。数据段波特率至少5Mbps。这是解决200设备/总线瓶颈的最有效方案。 |
一层与二层路由连接 | 以太网交换机。一层路由是智能网关,通过网线接入交换机。 |
地址设计 | 分层编址:子节点用1字节地址,设备在CAN总线上用11位ID,设备全局地址为(网关ID, 设备ID)元组。 |
路由角色 | 智能网关,需具备数据缓存和协议转换功能,绝不能是简单路由。 |
最终架构图逻辑:
1 | [服务器] <-TCP/IP-> [企业级核心交换机] <-TCP/IP-> [多个二层交换机] <-TCP/IP-> [多个一层智能网关] <-CAN FD-> [200台设备/网关] <-CAN 2.0B-> [108个子节点/设备] |
请您务必调整方案,重点关注设备与一层路由间CAN FD的升级和一层路由网关的智能缓存功能设计,这是整个系统能否稳定、高效运行的关键。
提问3:用户给出最终方案,并提出扩展的可能性
用户Q:经过以上数据分析,目前预采用的方案为:设备采用有两个can 2.0b的mcu作为主控制器(stm32g4或f4系列),一个can口连接108个子节点(节点控制器使用stm32f4或g4系列),一个口用来连接一层智能路由网关;一层智能路由网关预采用stm32mp1,使用4个can口和一个100mbps以太网口,每个can口连接50台设备降低can总线的负载率,100mbps以太网口星型连接二层的32口工业交换机;若干32口的工业交换机,星型连接到服务器的企业级交换机;这样,只有设备与一层智能网关需要嵌入式软件开发,二层与服务器直接使用ethnet标准进行连接,服务器使用上位机开发,即可完成整个项目的开发流程。该方案可行性如何?是否还有优化的空间?若一层的只能网关为降低开发难度,使用stm32h7系列,只有两个can接口(此时can总线负载率也在30%以下),使用fmc进行sdram扩充,能否满足系统运行所需?满足需求的话扩充sdram最小需要多大sdram?
非常好!您基于之前的分析提出的这个方案非常具体,并且做出了关键改进(减少每条CAN总线的设备数量),这大大提高了可行性。我们来逐一分析这个方案的可行性和优化空间。
一、方案可行性分析
结论:此方案核心架构合理,技术上完全可行,是大型工业控制系统的典型设计。
优点:
- 分层明确,责任清晰:
- 设备层 (STM32G4/F4):专注于实时控制,与子节点和设备间CAN通信。
- 采集汇聚层 (STM32MP1/H7网关):负责协议转换、数据缓存和上传,承上启下。
- 网络与服务器层 (工业交换机、企业交换机、服务器):负责高速数据汇聚和海量连接管理。
- 负载均衡有效: 将200台设备分摊到4条CAN总线上(每条50台),从根本上解决了CAN总线负载率过高的问题,保证了实时性和稳定性。
- 技术选型合理:
- 设备MCU选用STM32G4/F4,性能足够,生态完善。
- 网关选用STM32MP1(MPU)或STM32H7(高性能MCU),符合网关“连接+计算”的需求。
- 网络部分使用标准工业以太网,成熟可靠。
潜在风险点与考量:
- 网关的软件复杂性: 这是本方案的开发核心和难点。网关需要实现:
- 4个CAN接口的主站驱动和报文调度。
- TCP/IP网络栈(如LWIP)的服务器端/客户端实现。
- 一个高效的数据缓存数据库(在内存中管理所有设备的数据)。
- 一套应用层协议(例如自定义的JSON格式或高效的二进制格式),用于和服务器通信。
- 系统稳定性、看门狗、断线重连等运维功能。
- STM32MP1的Linux开发门槛: 如果团队不熟悉Linux驱动开发、多线程编程、网络编程,前期会有一定的学习成本。
- 物理连接: 4条CAN总线意味着网关设备需要5个物理接口(4xCAN + 1xETH),对网关的硬件设计和布线有一定要求。
二、优化空间探讨
网关数据上报策略优化:
- 避免轮询,采用变化上报: 网关可以主动轮询设备获取数据,但上传给服务器时,不必每次都全量上传。可以在网关内做判断,只有数据变化超过一定阈值或达到一定时间间隔后,才打包上传。这可以极大减少网络带宽消耗和服务器压力。
- 压缩: 对上传的数据包进行压缩(如简单的差分压缩),进一步减少流量。
应用层协议选择:
- 自定义二进制协议: 效率最高,带宽占用最小,解析速度快,但需要自行定义和维护。
- MQTT: 优点是跨平台、生态好(服务器端有现成的Broker如EMQX)。网关作为Publisher发布数据,服务器作为Subscriber订阅。缺点是协议头有一定开销,且需要引入额外的Broker服务器。
- Modbus-TCP: 工业标准,上位机软件支持多,但数据模型(寄存器映射)需要精心设计,适合传输规整的数据。
冗余设计:
- 网关热备份: 对于极其重要的系统,可以考虑网关级别的冗余,一台故障另一台立刻接管。
- 网络冗余: 采用环形以太网协议(如STP/RSTP)或双网卡,避免单点故障。
三、STM32H7方案替代分析
结论:完全可行,且是降低开发难度的有效途径。
1. 可行性评估:
- CAN负载率: 每条总线连接100台设备(2个CAN口 * 100台/口 = 200台/网关)。
- 计算负载率:
(100设备 * 26帧/设备 * 110位/帧) / 1,000,000位/秒 = 28.6%
- 28.6% < 30%,满足稳定性要求,方案成立。
- 计算负载率:
- 性能: STM32H7系列(如H743/750)主频高达480MHz,带有双精度FPU和大量内存。处理2条CAN总线的数据、运行LWIP协议栈、管理数据缓存绰绰有余,性能不是瓶颈。
2. SDRAM需求分析:
网关需要SDRAM primarily用于:
- 操作系统和程序运行: (如果使用RTOS like FreeRTOS,需求很小)
- 网络协议栈缓冲区: (LWIP的mem大小,通常几百KB足够)
- 设备数据缓存池: 这是主要消耗者
计算缓存池所需内存:
- 每个设备数据量:
64个16位 + 20个32位 = 64*2 + 20*4 = 128 + 80 = 208字节
- 每个网关管理设备数:
200台
- 总数据量:
208字节/台 * 200台 = 41,600字节 ≈ 41 KB
结论:
即使为每个设备的数据预留10个历史样本(用于变化判断或短期追溯),也仅需 41 KB * 10 = 410 KB
。再加上LWIP和系统开销,总共1MB的内存都远远足够。
因此,为STM32H7扩展SDRAM更多是出于“系统冗余和设计裕量” 的考虑,而非绝对必要。STM32H7系列内部通常有1MB的Flash和几百KB的RAM,对于这个应用甚至可以不扩展SDRAM,直接使用内部RAM都完全可行(内部RAM约1MB,足够用)。
如果为了未来扩展和开发方便,扩展一片8MB或16MB的SDRAM(如IS42S16400J)是非常常见和经济的选择,能提供极大的富余空间。
最终建议
方案选择:
- 如果团队有Linux经验,追求更强的网关功能(如未来运行数据库、Web配置页面),STM32MP1方案更优。
- 如果团队更熟悉裸机或RTOS开发,希望快速上手,STM32H7 + FreeRTOS方案是更佳选择,能有效降低开发难度,且性能完全满足需求。
内存: 对于STM32H7方案,无需扩展SDRAM也能运行。但出于最佳实践,建议扩展一颗8MB的SDRAM,成本增加不多,但为后续开发留下巨大空间。
开发重点: 无论选择哪个方案,开发重心都应放在网关的稳定性和数据处理逻辑上,这是连接上下层、保证系统可靠的核心。
您的方案已经非常完善,后续只需根据团队的技术储备在MP1和H7之间做出选择,并开始进行详细的软件模块设计即可。这是一个值得投入的好项目。
提问4:用户提出调试相关的问题,并给出预设方案
用户Q:如果上报的数据包含每台设备内每个节点的数据呢?路由应该如何扩展sdram?当前的网络架构是否合适?另外如果需要维护人员对单点或者多台设备进行调试维护,维护人员与设备或者路由连接的设备应该具备工业化设计的设备且成本低故障率低,那么设备和一层路由应该开放什么样的接口供维护人员使用?连接设备或路由的设备应该如何设计使用mcu+通讯+屏幕+lvgl是否可行?或者使用现成的安卓或者ios平板设备,通过局域网连接服务器上位机(网页简易版或者单独平台的调试使用版本)直接控制省去连接设备的过程?
您提出的问题非常关键,涉及到系统扩展性、可维护性和人机交互设计,这些都是工业系统能否成功落地的重要环节。我们来逐一深入分析。
一、上报数据包含所有节点数据的影响及应对
这是一个重要的需求变化,数据量会急剧膨胀,必须重新评估。
1. 数据量重新计算:
- 单个子节点数据: 18个4字节状态数据 = 72字节。
- 单台设备的子节点数据总量: 108个子节点 * 72字节/节点 = 7776字节。
- 单台设备自身数据: 64个16位 + 20个32位 = 128 + 80 = 208字节。
- 单台设备总数据量(自身+所有节点): 208 + 7776 = 7984字节。
- 一个网关(200台设备)总数据量: 200 * 7984 ≈ 1.56 MB。
2. 对网关SDRAM的需求:
- 需求: 网关必须能在内存中完整缓存至少一个周期的全量数据(1.56MB)。
- 分析:
- 如果仅做简单缓存,2MB的SDRAM是底线。
- 但考虑到操作系统、协议栈、数据历史记录(如缓存最近2-3个周期数据以判断变化)、程序运行空间,只扩展2MB会非常紧张。
- 建议: 为STM32MP1或STM32H7扩展32MB或64MB的SDRAM(例如使用IS42S16800F)。这是一个成本不高但能提供极大设计裕量的方案,允许您在网关上实现更复杂的功能(如数据预处理、历史日志、Web服务器等)。
3. 对网络架构的影响:
- 分析: 架构拓扑无需改变,但带宽压力激增。
- 计算: 一个网关每秒上报1次,需要约1.56 MB/s * 8 ≈ 12.5 Mbps的稳定上行带宽。
- 结论: 100Mbps以太网对于连接一个网关来说依然绰绰有余(12.5Mbps < 100Mbps)。即使二层交换机连接了32个这样的网关,总带宽需求为400Mbps,仍在1000Mbps上行链路的承载范围内。因此,当前网络架构仍然是合适的,但必须确保核心交换机和企业级交换机的背板带宽和处理能力足够强,以应对近500Mbps的汇聚流量。
二、维护接口设计与维护终端方案
您的两种思路非常 representative,代表了“嵌入式本地调试”和“信息化远程调试”两种方向。
方案A:专用手持维护设备(MCU + 通讯 + 屏幕 + LVGL)
- 优点:
- 高可靠性、专机专用: 针对工业环境设计,防水防尘抗干扰。
- 不依赖网络: 可直接连接到设备或网关的调试口进行操作,在网络故障时至关重要。
- 实时性极高: 直接通讯,无延迟。
- 缺点:
- 开发成本高: 需要独立研发一套硬件和软件。
- 成本高: 量产数量少,单台成本高。
- 功能更新困难: 需要固件升级才能更新功能。
- 应开放的接口:
- CAN接口: 最底层、最直接。设备端需要预留一个维护CAN口,并定义一套专用的调试指令集(如读取特定节点状态、写入控制参数)。维护设备可以直接“监听”或“介入”总线。
- 串口(UART): 最常用、最简单的调试接口。用于输出日志、连接命令行控制台(Console),进行最基础的固件调试和烧录。
- 以太网口(ETH): 智能网关可以开放一个Telnet或SSH服务,供高级维护人员登录进行命令行操作;或者开放一个简单的Web服务器,提供基础状态查看功能。
方案B:商用平板 + 局域网连接服务器
- 优点:
- 开发速度快、成本低: 利用现成的硬件和平台(Android/iOS),应用开发效率高。
- 功能强大、体验好: 大屏幕、丰富的UI库、强大的处理能力。
- 易于更新和维护: 更新服务器上的软件即可让所有平板同步更新。
- 集中管控: 所有操作通过服务器中转,便于记录日志和权限管理。
- 缺点:
- 依赖网络: 如果网络不通,无法对设备进行调试。
- 工业适应性: 需要为商用平板配备坚固耐用的防护外壳。
- 实现方式:
- 维护人员使用平板电脑,通过Wi-Fi连接到厂区的无线网络(AP),访问部署在服务器上的一个专用调试Web页面或App。
- 该页面/App通过WebSocket或HTTP长连接与服务器通信。
- 服务器收到调试指令后,通过正常的网络路径(二层路由->一层网关->设备)下发到目标设备。
结论与最终建议
- 数据上报变更: 上报节点数据后,网关需扩展至32MB+ SDRAM,网络带宽仍需100Mbps但需关注核心交换机性能。
- 维护方案选择: 强烈推荐采用“方案B:商用平板 + 服务器”的模式。这是当前工业互联网的主流趋势,优势明显,更符合您大型系统的定位。开发一个强大的服务器上位机调试功能,其价值远高于开发专用手持设备。
- 接口开放作为备份: 尽管主推方案B,但必须在设备和网关硬件上预留物理调试接口(如CAN和UART)。这是系统最后的维修保障,当网络全面故障时,技术人员依然可以通过有线方式连接到设备进行诊断和恢复,这符合工业系统的高可靠性要求。“云端化调试为主,物理接口调试为辅” 是最佳策略。
总结:
您的架构需要针对数据量增大调整网关内存,但其主体非常优秀。在维护性上,应拥抱信息化方案,用平板通过服务器进行调试,同时保留硬件调试口作为最终保障。这样既保证了先进性、易用性和低成本,又确保了系统的鲁棒性。
用户总结:
关于数据量的问题:
假设按照上述,200
台设备,一层智能网关,存储需要1.6MB
数据每秒传输,连接上级二层交换机的连接速度为100Mbps
,假设16台(16口工业交换机,单口100Mbps
,主口1Gbps
),出口数据为1.6 * 16 * 8 = 204.8Mbps
;出口数据连接到服务器机房的企业级交换机,至少1Gbps
的连接速率,当前场景下,每秒钟总数据量为1.6 * 100 * 8 = 1280 MB
,交换机到服务器需要的带宽至少为2.5Gbps
。服务器每秒钟接收并处理的数据为160Mb
,这是纯二进制数据,若未压缩且使用json格式传送,那么数据量可能会指数级变高,一层智能网关出口数据要小于12.5MB
(实际应该控制在10MB
以内),那么二层的工业交换机的出口就会来到12.5 * 16 * 8 = 1600Mbps
,至少2.5G
的出口速率;而服务器这里,接收的总数据量变为12.5 * 100 * 8 = 10Gb(1.25GB)
,服务器数据处理的压力倍增且入口速率为满载的10Gbps(万兆)
,对服务器后端的要求提出了更为严苛的要求,必须能够实现多线程多进程以满足1.25GB
的数据的实时处理。
考虑到实时性和数据一致性,且在一层智能网关存储了实时数据的前提下,服务器应该以一层智能网关节点为单位,一次读取节点内200个设备的所有数据,让数据上报尽量占满所有带宽,减少单台设备数据打包时间。对于控制数据,在不占用智能网关的mcu时间的前提下,应该从数据传输方式下手,将数据上传带宽的占用降下来,为控制数据传输留出带宽。
降带宽的方式(或的关系):
- 一层智能网关少带点设备。
- 使用私有协议,压缩上传数据的数据包大小。不使用json而是私有的二进制传输或者其他方式。
- 采用二进制json协议。这样上传的数据量并不会增加多少。
- 压缩数据。对json数据进行压缩(不太现实,或者很少腾出空间);
- 使用动态上传,未变动数据不上传。(需要服务器做适配)将大幅度降低带宽占用和服务器压力。
最终效果(开放性想象):
- 服务器呈现出的ui,有整体试验场的位置信息和整体的工作状态
- 每台设备的位置和颜色区分的状态
- 汇总的多少台设备在干什么,上下线以及当前工作状态的数量
- 可以点击单个设备,控制单个设备的子节点。
- 对单个设备的信息,进行绝对三维建模,进行单个设备的精准控制
- 配合安保设备,实时的可以针对单台设备进行远程操控调整
- 配合安保设备,可以实时监控整个试验场
- 配合移动端服务器界面,可以实现现场对单台设备的调整调试。
- 配合调试设备,可以单独连接单台设备或者一层智能网关进行在线设备配置。
- 设备开机应该展示所有设备信息,以供验证是否与铭牌匹配以供售后和现场服务器配置位置
- 智能网关开机应该展示所有设备信息,以供验证是否与铭牌匹配以供售后和现场服务器配置位置