modbus-poll,modbus-slave用法(有关功能码和读写)
最近在做modbus协议模拟,没啥基础,功能码到底是怎么设的看了好多都没说清楚。 记录下吧…来看看到底它怎么读写的!
需要知道的前提
poll是主站,即控制者 slave是从站,即响应者 从站是不能主动给主站发消息的
安装就不说了
很重要!!看下这个图,01 03的功能码才能又读又写!!! 功能码指的是address的范围而不是真的功能!!
读取
首先我们实现一下主站读取从站的数据 先看从站的配置 点击setup->slave defination 这里的function不是功能码!不是功能码!不是功能码!(重要的事说三遍) 我之前在想为什么只有这4种好少啊,但这个其实只是设备寄存器或线圈的不同地址!
我们可以随便选,不过主从站要一致!地址要一致!前两个是0-1值,后两个就随意了
这里用4做下示范吧(证明它不是写数据。。。) 其他配置都默认就行不用改!
然后connection->connect,我这里测试modbus TCP/IP的,需要串口通信的自行搜索吧。 ok之后等待主站连接 好再看主站配置,同样setup进来,功能选4(其实可以从3x看出来是地址为3x处的寄存器) 然后connect连接,什么都不用改 然后他们就愉快的开始交流了~ 可以随便改改从设备寄存器的值试试看
来看下报文 Display->communication(下图是在主站看到的) rx即对端报文,我设置了一个自动增加,可以看到传回来的数据都在自动增加 tx是主设备报文,不停发送查询指令
写入
写入的功能在哪里呢 首先把功能码改成03,主从都改 主设备! 改个寄存器的值 点击send 我们看下报文(从设备收到的) 如图,红色圈出的是写命令的消息
结束!撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。