各位好,本人在用
modbus与仪表通讯中,读取变送器的温度湿度值,此程序源自网上下载的相关例程稍作了修改,能够正常通讯,我试着将CALL行中的MB1改为VB1或者VB2\VB3,均不能正常通讯,但改为VB4后却可以正常通讯了,,按理说VB数据也应该支持呀,却不能进行正常通讯了,想来想去想不出什么原因,请教各位,谢了;为何用MB可以呢?
Network 1
// 第一扫秒周期, 复位各标志位和起始位
LD SM0.1
R M2.0, 8
R M4.0, 8
R M0.0, 2
Network 2
//
modbus 主站初始化完成后, 启动读写指令
LD M0.0
EU
S M0.1, 1
Network 3 // 网络标题
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL SBR1, L63.7, 9600, 0, 1000, M0.0, MB1
Network 4
LD M0.1
O M2.2
= L60.0
LD M0.1
EU
LD M2.2
EU
OLD
= L63.7
LD L60.0
CALL SBR2, L63.7, 1, 0, 30001, 2, &VB1000, M2.1, MB1
Network 5
// 读取从站保持寄存器的数据完成,复位请求
LD M2.1
R M2.2, 1
R M0.1, 1
Network 6
//
// 读取2#从站保持寄存器的数据
//
LD M2.1
= L60.0
LD M2.1
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 2, 0, 30001, 2, &VB2000, M2.2, MB1
Network 7
// 读取从站保持寄存器的数据完成,复位请求
LD M2.2
R M2.1, 1