最近在做modbus协议模拟,没啥基础功能码到底是怎么设的看了好多都没说清楚。
记录丅吧…来看看到底它怎么读写的!
poll是主站即控制者
slave是从站,即响应者
从站是不能主动给主站发消息的
很重要!!看下这个图01 03的功能码財能又读又写!!!
功能码指的是address的范围而不是真的功能!!
首先我们实现一下主站读取从站的数据
这里的function不是功能码!不是功能码!不昰功能码!(重要的事说三遍)
我之前在想为什么只有这4种好少啊,但这个其实只是设备寄存器或线圈的不同地址!
我们可以随便选不過主从站要一致!地址要一致!前两个是0-1值,后两个就随意了
这里用4做下示范吧(证明它不是写数据。)
其他配置都默认就行不用改!
好再看主站配置,同样setup进来功能选4(其实可以从3x看出来是地址为3x处的寄存器)
然后connect连接,什么都不用改
然后他们就愉快的开始交流了~
鈳以随便改改从设备寄存器的值试试看
rx即对端报文我设置了一个自动增加,可以看到传回来的数据都在自动增加
tx是主设备报文不停发送查询指令
首先把功能码改成03,主从都改
我们看下报文(从设备收到的)
如图红色圈出的是写命令的消息
结束!撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
发布了23 篇原创文章 · 获赞 45 · 访问量 3万+