热度 3
2021-4-12 13:17
3467 次阅读|
5 个评论
关键词: CAN 总线 现场总线 Modbus 实时性 摘要: CAN 总线和 Modbus 总线是工控领域常用的两种现场总线,简单的说哪个好哪个不好是没有意义的,要根据不同的应用场景来做选择。 CAN 总线是无主结构,在通信方式上更加灵活,且是短帧发送,单帧数据消耗的总线带宽更少,但传输大量数据时效率会降低。 Modbus 总线是主从结构,只有主站能发起通信,但每帧数据的数据量比较大,在传输大量数据时有优势。实时性方面也不能单纯地说哪个高哪个低,还是要看用户的需求。系统集成怎么选、实时语音传输怎么选、传输故障停机信号怎么选,以 3 个小案例为基础,描述了该如何在 CAN 总线和 Modbus 总线之间进行抉择。 1. 总述 CAN 总线和 Modbus 总线是工控领域常用的两种现场总线。经常会听到有的同事说, CAN 总线的实时性好,更加先进, Modbus 总线太简单,太 low ,孔丙火认为,这种说法不准确。不同的现场总线有不同的特性,适应的应用场景也不一样,仅就使用面来讲, Modbus 总线用的更加多,很多 PLC 上都会自带 Modbus 接口,但自带 CAN 总线接口却不是很多。因此,对两种总线做一个比较,尤其是针对不同的应用场景(不同需求)做比较,能更清晰地看清本质,便于选择。 2. 系统集成怎么选 在工控领域,尤其是过程控制系统领域,经常会碰到系统集成的案例。有一些控制系统由多个子系统组成,每个子系统可能是不同时期实施的,或者是不同厂家设计的,但系统作为一个整体需要集中的信息展示与控制。举个例子,系统 1 和系统 2 各自控制一些生产设备,各有自己的控制逻辑,有自己的控制器和传感器,但它们之间也有顺序控制关系,这时,可以把两个系统的信息集成到一个平台,并可以在平台上实现两个系统的顺序控制关系。 这种系统集成的案例,信息传输若采用现场总线时,应该优先选择 Modbus ,一个子系统的信息量是比较大的,若采用 CAN 总线传输,需要分成很多帧才能完成,传输效率太低,且每个帧都有 ID 部分,这种情况下也是一种总线带宽的浪费。 3. 实时语音传输怎么选 某些控制系统需要传输语音信号,有些是系统报警信号,有的是操作员时间的对讲语音。传统的语音信号是模拟传输的,这种方案容易实现,信号几乎无延时,但缺点也很明显,长距离传输信号幅值衰减会导致远端语音音量小,缺少远端设备的信息管理(若要增加管理,需要增加通信线路),因此,很多对于语音传输数字化改造的案例。数字语音采用何种现场总线进行传输,但就 CAN 总线和 Modbus 来选的话,应该选 CAN 总线。 这个要从语音信号的采样编码、压缩讲起,模拟语音信号经过采样编码变为数字信号,数字信号经过压缩芯片压缩后,发送到总线上。一般语音信号都要经过压缩传输的,不然数据量太大,总线带宽有限无法传输。例如, AMBE1000 就是常用的一种压缩芯片。采样压缩后的语音数据需要周期性地向总线发送,根据不同的压缩比,周期不同,可以是 20ms 发送一次,也可以 10ms 甚至更短的时间。每个语音设备作为一个总线节点存在,都有可能随时发送语音数据,因此, Modbus 这种主从式的总线,是无法满足要求的。在对音质要求不是太高的情况下(工业现场噪声比较大,更注重音量,一般对音质要求不高), CAN 总线一帧或两帧数据就可以完成一次采样数据的发送。对于语音信号的实时传输,采用 CAN 总线是合适的。 4. 传输故障停机信号怎么选 所谓故障停机信号,就是当信号发生时,系统必须在最短的时间内停机,不然会引发安全事故。例如,当检测到超越危险区域时,必须立即停机。如果这种信号采用现场总线的方式传输的,很显然是不能采用 Modbus 的。 Modbus 的主从结构,决定了作为从站的传感器不能在第一时间把需要传输的信息传输出去,它要等待主站的询问。 这种信号若采用 CAN 总线传输,可以把这种信号的帧 ID 设为最高优先级,这样,故障停机信号发生后,发生在总线传输阶段的延时最多只有一个数据帧加帧间隔的时间。如图 1 所示。 图 1 在工业过程控制常用的 10kbps 的通信速率下, 47bit 的时间是: 4.7ms ,这仅仅是传输方面的延时,当然还会有两侧节点信号转换和处理的延时,但总的延时也远小于一个继电器的工作延时( 20ms ),因此这种情况应该是可以满足实时性要求的。 这里说一个题外话,很多工程师在设计工控项目的时候,喜欢用硬接线的方式来处理急停信号,理由是硬接线反应快,其实,按照孔丙火上面的分析, CAN 总线通信在处理稳定的情况下,要比一个继电器的反应要快的多。 5. 总结 Modbus 总线是一个统称,传输介质可以是双绞线(串口)或网线(以太网),孔丙火在本文中比较的是以串口通信为基础的 Modbus ,即 Modbus-RTU 或 ASCII ,以 RTU 最多。 CAN 总线和 Modbus-RTU 都以双绞线为介质进行传输,这种比较才有意义。 系统集成怎么选、实时语音传输怎么选、传输故障停机信号怎么选,以 3 个小案例为基础,描述了该如何在 CAN 总线和 Modbus 总线之间进行抉择。对应用场景进行了一些延伸性的描述,有些啰嗦,只是为了更清晰地说明问题。 文章在公众号( 孔丙火 )同步推出,欢迎查看更多系列文章。 单片机、 PLC 、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。