200 modbus通讯问题

比方说我要读写40001这个寄存器的数据,根据西门子给的modbus库的程序块,一个写一个读,如果我有10台表,那是不是说我要建立20个这样的快才能实现,如果我要读10个寄存器的数据那是不是就要建立200个块啊,我感觉应该不是这样的
 我用改变count的数值的方法读到了其它所有位的值,但是发现了问题,在count为一时我可以读写数值,但是当把count改为2以上的值时,发现写的块报错一次,马上又好了,而且不能写值(一台表时写、读一个寄存器地址都没问题)。我想办法看了一下串口的数据交换,发现了和平常不同的数据如下:

 一台表,读写40019号地址,count=3
 01 10 00 12 00 03 06 00 00 00 00 00 00 46 DF 
 01 10 00 12 00 03 20 0D 
 01 03 00 12 00 03 A5 CE 
 01 03 06 00 00 00 0F 00 2D D1 6B 
 01 10 00 12 00 03 06 00 00 00 00 00 00 46 DF
 -----
 一台表,读写40019号地址,count=1
 01 06 00 12 00 00 29 CF 
 01 06 00 12 00 00 29 CF  
 01 03 00 12 00 01 24 0F 
 01 03 02 00 00 B8 44 
  
 问题:1.我这些表可以建几个块,count和addr相应如何设定
       2.为什么就报错一次就又好了
       3.01 10 00 12 00 03 06 00 00 00 00 00 00 46 DF这个01 10的10是什么东西啊

最佳答案

1 如果ADDR在40000和50000之间,RW=1,COUNT=1则为功能6,COUNT>1则为功能16
 功能6将一个数据字写入对方存储器,
 功能16用来写多个存储器字

 2 01 10的10是什么东西啊 
 01是地址,10是16#10 ,是功能16.

 3 建议你先学习一下modbus的基本结构。

提问者对于答案的评价:
xeixie le

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc346406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论