主站S7-200PLC,并联二个MODBUSRTU接口的从站,把T33,T34定时时间设置成相等,发现一个站能正常读回数据;而另一站不能正常读回数据,完成位总是显示“1”,错误码为“6”。把T33,T34定时时间设置成不相等,发现两个站都不能正常读回数据,有时能读回,而有时又不能读回数据,完成位显示“1”,错误码为“6”。不知是何原因,请各位老师帮忙解决,看问题出在哪里?主程序如下:
网络1
LDSM0.0
=L60.0
LDSM0.0
=L63.7
LDL60.0
CALLMBUS_CTRL:SBR1,L63.7,9600,2,1000,M24.0,MB25
网络2
LDM24.0
AB=MB25,0
LPS
ANM2.4
TONT33,5
LPP
AT33
=M2.4
网络3
LDM24.0
AB=MB25,0
=L60.0
LDT33
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,1,0,30002,2,&VB1000,M24.1,MB26
网络4
LDM24.0
AB=MB25,0
LPS
ANM2.5
TONT34,10
LPP
AT34
=M2.5
网络5
LDM24.0
AB=MB25,0
=L60.0
LDT34
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,2,0,30002,2,&VB2000,M27.1,MB28
问题补充:
对不起!网络4的内容输入错,更改为如下(与网络2基本相同):
LDM24.0
AB=MB25,0
LPS
ANM2.5
TONT34,10
LPP
AT34
=M2.5
最佳答案
利用初始化完成DONE位同时启动两个读从站的指令不合适,虽然使用了延时定时器,想错开连个读指令,建议改成如下程序:(M30.0,M30.1是我随意选的,如果你程序已经使用,请改成别的地址)
网络1
LDSM0.0
=L60.0
LDSM0.0
=L63.7
LDL60.0
CALLMBUS_CTRL:SBR1,L63.7,9600,2,1000,M24.0,MB25
网络2
LDM24.0
AB=MB25,0
EU
SM30.0,1
网络3
LDM30.0
=L60.0
LDM30.0
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,1,0,30002,2,&VB1000,M24.1,MB26
网络4
LDM24.1
AB=MB26,0
EU
SM30.1,1
RM30.0,1
网络5
LDM30.1
=L60.0
LDM30.1
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,2,0,30002,2,&VB2000,M27.1,MB28
网络6
LDM27.1
AB=MB28,0
EU
SM30.0,1
RM30.1,1
提问者对于答案的评价:
此法存在的问题:有一站不能正常工作,则另一站也不能正常工作。请问老师有无更好的解决方法。
最佳答案作者回复:
把DONE,error加入逻辑判断即可