如图:这个CODE表示是不是一个寄存器地址?我们用C++开发好了界面后,直接去调用这个CODE地址就可以读取里面的数据了?如果要改写一个值,是否也只要去修改这个CODE对应的地址号就行?
最佳答案
Code代表功能代码,如功能代码有:
01:读单个线圈(0***地址)数据
02:读输入信号(1***地址)数据
03:读连续多个寄存器地址(4***)
04:读连续多个输入模拟量地址(3***)
05:写单个线圈(0***地址)数据
06:写单个寄存器数据(4***)
07:读以外状态信息
08:诊断:
15:写多个连续线圈(0***地址)数据
16:写多个连续寄存器(4***)数据
17:返回从站ID:
20:读参考信息(文件记录)
21:写参考信息(文件记录)
23:读写寄存器
24:读写FIFO队列
最常用的是03和16。由于读和写不同的地址区时功能代码都不同,因此,从C++开发界面时必须根据需要的功能代码编写相应的请求。
如果写一个值或写多个值,楼主的功能代码选择16即可。
关于Modbus请求的格式楼主可以参考我以前的帖子
http://www.ad.siemens.com.cn/club/bbs/post_elite.aspx?b_id=3&a_id=849645
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc163352.html