modbus的类型介绍基本告了一个段落。下面来给大家介绍一下mobus中的一些异类。
Modbus 异类的黑历史
早期的modbus主要在串口上,随着后面网络的发展,TCP\IP的普及度越来越高,于是有了modbus TCP。但是串口由于其结构简单,成本低廉,在modbus RTU和ASCII在后面的很长一段时间仍然占据主流。后面随着大批量设备联网的需求越来越多,TCP\IP以其组网的方便快捷的原因,TCP\IP组件受到了人们的青睐,而串口其抗干扰能力弱、通讯速率慢、不易于组网等因素受人诟病。
有矛盾的产生,就会有商机的出现。人们开始寻求如何让Modbus的串口的数据也能在网络上传输。然后出现两种方式。
Modbus TCP网关:其主要功能就是将Modbus TCP的协议转换成modbus RTU或者ASCII。大概的组网过程如下:
串口服务器:串口数据之所以不能在网络上传输,是因为没有TCP\IP标识。所以聪明的人类,就通过在串口的数据头部添加了TCP\IP的头部,这样就可以串口数据就可以在网络上传输了。这种方式也被称为over TCP RTU\ASCII
Modbus 异类的解读
RTU/ASCIIOVER TCP的报文是TCP/IP的头+ASCII/RTU报文组成。同样需要遵循TCP的建立连接和断开连接的过程。与modbus TCP的不同主要在于中间报文。在这里我们打开ASCIIovertcp.pcapng的抓包报文进行查看。建立连接和断开连接我们就不看了。我们直接进入modbus报文交互环节。
其中data区域,如果大家对前面ASCII章节所讲的内容有映像的话不能认出是modbus ASCII报文:
3a:30:31:30:31:30:30:30:41:30:30:31:34:45:30:0d:0a
具体含义大家可以查一下前面的文章。
Modbus异类的繁衍
Modbus异类的并没有到此结束,反而进一步进行了衍生。
由于远程监控的兴起,设备的连接数激增,到达成百上千。而且距离较为分散,设备间相隔几千米甚至几十千米。传统的联网方式已经不能满足需求,所以人们又再次发挥他们的智慧,搭建了一个公网IP,通过一个专用设备,来和服务器之间维持通讯,这样服务器就能随时拿到各地设备的数据。这种设备就叫做DTU。其常见的组网如下:
由于设备众多,DTU服务为了方便区分各个地方设备,所以在传输的时候在报文中加入了一个唯一的标识,DTU ID。这样就能够区分不同设备了。
常见加DTU的ID的标识的方法有两种:
1、建立连接的时候加。
2、每一个报文都加。没有上图中的单独的DTU ID的标识过程。而报文传输变成如下:
上面两种方式都解决了DTU身份识别问题。其中通连接的时候发起传输DTU的ID,节省传输过程中流量。而每个报文都加一个DTU的ID,使得数据的解析更为方便。
领取专属 10元无门槛券
私享最新 技术干货