对于modbusRTU地址有些弄糊涂了,我看一些仪表手册上提供的地址都是从0开始的,例如200 201等等,PLC读取它的话需要40001加上200才能读取到数据。但是使用串口调试工具读写PLC数据为什么不需要加上40001呢,串口调试工具直接就是从0开始就行了,也不用加什么40001,为什么呢,谁能给我详细的说一下这个地址怎么回事啊。
最佳答案
所谓通讯协议就是将不同位置的数据通过相同的方式进行交流,modbus的40001这种地址形式就是标准,相当于翻译器,而2个不同的设备,可以各自将不同寄存器地址的数据放在40001进行交流。
40001 等地址名称对应的是modbus的协议的地址,是个抽象的地址;而你所谓的0,200等是实际的寄存器地址,就像西门子的DB区,M区。其他厂家有其他的寄存器地址定义方式。
你看下帮助文件里MODBUS的地址对应关系看附图,这里就规定的是西门子地址和modbus地址的对应关系,modbus地址40001~49999,对应寄存器地址是0~9998,0就是对应40001这是西门子规定死的,200,就是对应40201,这里的寄存器地址的0指的是你所指定的寄存器的起始字是从0位开始的,0可以对应MW0,也可以是MW11,看你modbus master指令中DATA_PTR关联的实际寄存器的起始指针。
其他厂家的设备,也要看他们寄存器地址和modbus地址的对应关系,看他的寄存器地址是从0开始还是1开始,甚至是300开始,若从300开始,则300对应40001,400就对应40101,大概就是这个意思。
图片说明:
提问者对于答案的评价:
已找到相关答案:
寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代表寄存器类型。PLC地址例如40001、30002等。
寄存器modbus协议地址指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002。在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279849.html