modbus通讯指令问题

modbus通讯指令问题:
 使用了MBUS_INIT指令,其中一个参数是HOldstart,我设置成了&vb100,然后MAXhold设置1000.而后,我使用串口软件,访问VW100的值(里边的值为12),软件画面提示“通讯超时”或返回VW100的值为0;如果我要是,将HOldstart,我设置成了&vb0,就没有这个问题。我想问下各位,我的起始地址HOldstart设置都与什么有关系?和系统块中的掉电数据保持V存储区的偏移量和单元个数,有无关系。

问题补充:
Network 1 // 网络标题
 // 
 LD     SM0.1
 CALL   SBR1, 1, 2, 9600, 2, 0, 128, 32, 200, &VB10, V10239.0, VB10238
 Network 2 
 LD     SM0.0
 CALL   SBR2, V10236.0, VB10237
 Network 3 // 网络标题
 // 网络注释
 LD     SM0.0
 MOVW   15, VW10
 AENO
 MOVW   15, VW12
 Network 4 
 我进行串口调试时,查看VW10,VW12中的数都是0.这是怎么回事呢

最佳答案

1 和系统块中的掉电数据保持V存储区的偏移量和单元个数没有关系。

 2 地址对应关系:
 VW/HoldStrt         0(040001)
 VW/HoldStrt+2       1(040002)
 如果用串口调试软件调试,那么就不用括号内的地址,而用0 ,1 等

 阿鸣的回答文不对题,尽是废话。

提问者对于答案的评价:
呵呵。谢谢,鸣和LAO-HUAI
 。我知道了。
 串口发送时的格式为 :站地址、功能字、起始地址(字)、访问的单元的个数、CRC校验(高低位调换)
 其中的 起始地址=(要查看的V区-Mbus_INIT指令中的起始地址holdstat)/2
 例如holdstart=&VB12,而我要访问VW36的值,那么我要发送的格式为
 02{站地址}03{读} 00 0c {(36-12)/2 =12} 00 01{访问一个字} CRC{反写}
 真是惭愧啊,因为这个问题曾经,laohuai给我讲过, 不过那个时候也没总结。
 希望对发生同样问题的人们,有所帮助。
 

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

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

相关推荐

发表回复

登录后才能评论