成华区建设局质检站网站,杭州网站建设浙江,互联网公司排名榜,网站 宗旨具体讲解 前言正文modbus tcp主机请求数据基本讲解Modbus Poll工具简单使用讲解 modbus tcp从机响应数据Modbus Slave工具简单使用讲解 前言
关于modbus tcp从0到1的讲解#xff0c;案例结合讲解#xff0c;详细了解整个modbus的可以参考这个#xff1a;详解Modbus通信协议… 具体讲解 前言正文modbus tcp主机请求数据基本讲解Modbus Poll工具简单使用讲解 modbus tcp从机响应数据Modbus Slave工具简单使用讲解 前言
关于modbus tcp从0到1的讲解案例结合讲解详细了解整个modbus的可以参考这个详解Modbus通信协议。
正文
首先说明一下一个概念所谓的传输协议不管是mqtt也好还是modbus也罢实际上传递的基本都是16进制的字节数组不同的是每个协议每个字节每个字节对应的每一位具有不同的含义所以想了解一种协议就要明白它的字节含义即可切勿急躁。
言归正传Modbus就是一个总线通信协议说白了就是一条线上挂了很多个设备和一个主设备。 通信的规则是从机不能主动给主机发送消息只能主机给从机发消息从机回应无论是你想查看某一个从机的数据还是修改某个从机的数据都需要通过主机先发送一个消息给从机然后从机根据主机发过来的数据指令去做对应的操作最后将结果回应给主机。 注重说一下在tcp通信中主机充当的是客户端的角色从机充当的是服务端的角色所有从机用的端口都一样不同从机用id地址区分也就是从机号
modbus tcp主机请求数据
基本讲解
我们说一下主机请求从机需要发送的基本数据
针对性的讲一下每个参数先有个映像后边还会举例说明 事物标识符 就是一个递增的数字每次发送消息递增一下即可尽量不重复因为占用2个字节所以范围是0~65535 协议标识符 这个默认给固定值0表示modbus协议 长度 等于协议标识符的长度2协议数据单元PDU的长度不固定 单元标识符 这个就是从机地址就是slave id 功能码 Modbus规定了多个功能那么为了方便的使用这些功能我们给每个功能都设定一个功能码就是上边说的你要对从机做什么操作那么就在这里设定好从机读取到这个数据就知道要做什么啦。 数据 数据对于主机来说就是想要操作从机寄存器里的哪些数据什么是寄存器就是从机用来存数据的地方讲从机的时候具体再将。 讲完了基本概念咱们来实操一下在这之前咱们需要用到两个工具Modbus Poll 和 Modbus Slave
Modbus Poll工具简单使用讲解 明白这些就可以啦。 现在我们来连接上1号从机。 连接之后会发现收到了从机的数据了并且在界面上显示了出来这里提前给看一下从机的页面注意不一个软件哈。 从图上就知道了确实我们收到了从机的数据 好那么我们接下来深入看一下主机到底给从机发送了什么数据 006-01 03 00 00 00 06 01 03 00 00 00 0A 其中因为软件显示的原因006-01 03这其实就是事物标识符的两个字节那么来实际看一下数据到底是不是我们上边讲的
006-01 03【事物标识符】00 00【协议标识符】 00 06【长度】01【单元标识符】 03【功能码】 00 00 00 0A【数据】
算一下吧长度单元标识符1PDU(功能码)56功能码03代表查询数据单元标识符01代表从机id号所有都对应上了没问题 再看下发送的数据 其中 00 00代表要查询的寄存器起始位00 0A十进制就是10代表要查询从起始位往后10位对应工具设置的这里. 当然你也可以把起始位置和查询数量的参数改一下再去跟发送的内容对比一下是同步的另外显示界面也会变化的可以多尝试一下。
modbus tcp从机响应数据
参考主机发送数据一样的道理毕竟用的都是modbus tcp协议。 这里就直接实操讲解
Modbus Slave工具简单使用讲解 这里说明一下工具上显示的寄存器只有0-9位但是不代表实际中就只有10位哈。 从上边的讲解中可以看出寄存器是分区的范围一般是0~49999工具为了模拟所以只做了10位。 好了这两步知道就可以了 当我们启动这边主机那边才能连接上并且发送数据主机连接上之后看下发送的数据和收到的数据吧。 031-08 13 00 00 00 17 01 03 14 03 E8 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
为了方便讲解把响应的数据拆成两部分讲解 031-08 13 00 00 00 17 01 这部分代表报文头其他参数都没疑问就是这个17变化了十六进制的17转化成十进制是23。 这就对了231(单元标识符)22(下边的PDU)。
03 14 03 E8 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PDU的变化相对于主机发送的数据来说变长了那么我们来解释一下 03代表功能码主机那边传递过来的原封不动返回去。 14代表的是数据长度转换成十进制正好是20从数据可以看出从14往后数正好有20位。 03 E8代表寄存器0号位置的数值转换成十进制就是1000。 00 0C代表寄存器1好位置的数据转换成十进制就是12。 后边的就不一一讲解了吧都是每个位置对应的值。
再对比下前边的图 不难理解了吧。
ok讲解完毕后边会整合springboot、netty实现一套完成的主机客户端。