Modbus协议应用的不足讨论

Modbus是工业设备的标准通信协议了,一般通过串口进行通信,为了适应现在互联网也支持通过网络传输的TCP版本,我司现在一般要求设备方提供TCP版本,毕竟部署方便,不过在现行的主从模式下,也并非能支持所有场景

基本能力的不足

Modbus/TCP 协议本身并不复杂,这里就不详解解释了,另开一篇讨论。这里要说的是其通信模型,在正常的场景下,其包含2个角色,即设备端为Modbus从机,控制端(开发的程序)为Modbus主机。一般情况下的通信场景如下:

  1. Master连接Slave,发送读请求,Slave实时返回读取结果
  2. Master连接Slave,发送写请求,Slave实时返回写结果

基本的模式就是请求响应模式,而且必须是Master请求,这就限制了现在很多设备的功能,特别是很多设备希望在内部敏感数据变化时候进行通知,也就是进行反向通知,在这些场景下Modbus除了定期刷数据之外就没其他办法了。所以一般的厂商也就会定制自定义的协议,并且这些自定义协议质量参差不齐,而且各家不一,对于系统集成也是不小的工作量。

网络模型的不足

一般设备,都会在部署地搭建局域网,本地进行操作。然后还是有一些设备无法实现局域网打通,比如在草原上使用4G的物联网模块,这种没有公网能力的模式,Modbus也没有办法支持,另外现在一些采用太阳能设备为了节省能量,只希望进行定期的数据上报,上报成功后进行休眠,定期被自动唤醒进行数据上报。

基于这样的模型,采用Modbus协议,主机是没有办法访问从机的,因此可以考虑让从机访问主机,这种模式下,让从机主动连接主机,主机按协议请求数据即可,当然了在多个从机使用一个主机的情况下,要通过从机ID进行区分,也就支持两百多个吧,也还是可以的。

这种模式下,从机连接后,主机并不能知晓从机的ID,只能依靠广播地址去请求,各个从机均支持广播消息的返回,主机从而可以区分出各个从机,如果在连接没有断开的情况下,主机后续可以准确的请求到从机

其他

在能使用上网络的地方,其实就多了很多选择,比如物联网协议MQTT、CoAP等等,不过目前很多设备在提供网络功能之前都是串口通信,然后加了网络转接模块实现了网络,并且Modbus协议也是足够的简单,因此Modbus还有很多的应用场地。

最近的文章

浏览器迷之UA

不光是网页前台,网页后台经常也会出于统计等目的进行用户信息进行统计,而用户的信息一般只可能标记在浏览器的身份信息里面,也就是User-Agent,但是当你仔细的查看各个浏览器的UA(User-Agent)时候,你会惊奇的发现其如此的混乱,这要从浏览器的发展历史说起。 浏览器UA起源在万维网兴起之后, …

闲言 继续阅读
更早的文章

FFMPEG和SDL实现流媒体播放控件

之前为项目中使用ffmpeg与SDL封装了一个视频播放控件,用起来挺简单的,在此分享下大概的实现方法和效果。 基本需求原本项目中被C#调用了一个第三方的播放RTMP的控件,但是呢问题特别多,而且不能再定制功能,因为我接手给实现了一个,大致的需求如下 提供DLL供其他语言调用,主要是C# 支持多窗 …

技术 继续阅读