原创 CAN总线和Modbus总线,该如何选择

2021-4-12 13:17 3427 24 3 分类: MCU/ 嵌入式

关键词: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所示。

                      image.png               图1

在工业过程控制常用的10kbps的通信速率下,47bit的时间是:4.7ms,这仅仅是传输方面的延时,当然还会有两侧节点信号转换和处理的延时,但总的延时也远小于一个继电器的工作延时(20ms),因此这种情况应该是可以满足实时性要求的。

这里说一个题外话,很多工程师在设计工控项目的时候,喜欢用硬接线的方式来处理急停信号,理由是硬接线反应快,其实,按照孔丙火上面的分析,CAN总线通信在处理稳定的情况下,要比一个继电器的反应要快的多。

5.总结

Modbus总线是一个统称,传输介质可以是双绞线(串口)或网线(以太网),孔丙火在本文中比较的是以串口通信为基础的Modbus,即Modbus-RTUASCII,以RTU最多。CAN总线和Modbus-RTU都以双绞线为介质进行传输,这种比较才有意义。

系统集成怎么选、实时语音传输怎么选、传输故障停机信号怎么选,以3个小案例为基础,描述了该如何在CAN总线和Modbus总线之间进行抉择。对应用场景进行了一些延伸性的描述,有些啰嗦,只是为了更清晰地说明问题。

文章在公众号(孔丙火)同步推出,欢迎查看更多系列文章。

单片机、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。



文章评论5条评论)

登录后参与讨论

kws.1982_674886565 2021-4-19 14:03

小小毛: 那你就错了,恰好是协议对物理层没有规定。
Modbus可以运行在RS485总线上,RS232总线上等等。
你说的是对的,Modbus国家标准中虽然对物理层进行了描述,但就Modbus本身而言,它是在OSI模型的第7层,属于应用层协议。还是交流出真知,以前还真没仔细考虑过这个问题。

kws.1982_674886565 2021-4-19 13:46

小小毛: 那你就错了,恰好是协议对物理层没有规定。
Modbus可以运行在RS485总线上,RS232总线上等等。
Modbus国家标准中有专门的部分对物理层进行描述,物理层可以是串行链路,也可以是以太网

kws.1982_674886565 2021-4-19 13:41

小小毛: 严格意义来讲,Modbus是一种协议,没有Modbus总线的说法
欢迎交流,你说的有道理,但Modbus从功能上看几乎等同于现场总线,因此,也有Modbus总线的说法。

小小毛 2021-4-19 13:39

那你就错了,恰好是协议对物理层没有规定。
Modbus可以运行在RS485总线上,RS232总线上等等。

小小毛 2021-4-13 08:33

严格意义来讲,Modbus是一种协议,没有Modbus总线的说法
相关推荐阅读
孔丙火 2021-07-09 21:10
Modbus的通信参数存在flash中,如果改乱了,该怎么办--FreeModbus从站设计(12)
FreeModbus从站设计(12)-Modbus的通信参数存在flash中,如果改乱了,该怎么办关键词:FreeModbus 复位默认参数 HAL库 flash STM32在上一篇文章中,介绍了如何...
孔丙火 2021-07-09 15:21
如何把Modbus的通信参数存在单片机的flash中-FreeModbus从站设计(11)
FreeModbus从站设计(11)-把Modbus的通信参数存在单片机的flash中关键词:FreeModbus CubeMX HAL库 flash 通信参数作为从站,Modbus-RTU通信的参数...
孔丙火 2021-06-19 22:31
单片机程序中,Modbus功能码的回调函数如何编写--FreeModbus从站设计(10)
FreeModbus从站设计(10)-Modbus功能码的回调函数如何编写 关键词:FreeModbus CubeMX HAL库 串口 功能码   此系列的前面几篇文章,主要是阐述...
孔丙火 2021-05-19 15:51
为什么有的PLC需要上电停止功能,能防止PLC变砖
关键词:PLC可编程控制器 上电停止 串口通信 梯形图 摘要:PLC(可编程控制器)在工业控制中使用非常广泛,型号很多,有一部分PLC有上电停止的功能,它们为什么需要这个功能呢?孔丙火(微信公众号:...
孔丙火 2021-05-06 22:57
不要小瞧TVS管哦,否则要吃大亏
摘要:TVS管是常用的保护器件,但在平时正常环境的测试中,并不能明显地感觉到它的存在,好像有没有TVS管,都一个样。TVS管表示很委屈。TVS管本身就是为了在意外情况(比如瞬间高压串扰)保护电路的...
孔丙火 2021-04-20 13:07
当RS485隔离遇见Freemodbus,你碰到问题了吗?
摘要: 基于RS485物理接口的Modbus总线在工业控制中广泛应用。Freemodbus是一个免费的实用的协议栈,孔丙火(微信公众号:孔丙火)用它实现了一个从站。串口收发信号和RS485芯片的收发使...
我要评论
5
24
关闭 站长推荐上一条 /2 下一条