关于西门子S7-200PLC的modbus通讯,PLC做主站(轮询)

大家好,我在学西门子S7-200PLC的modbus通讯中,做了这样一个程序,假设我现在的PLC要不断的读取传感器的温度数据,温度是从VW0传进来的,那么下面程序中网络3可以看出是初启动读数据的,我想把网络3的I0.1改为用M0.0或SM0.1+m0.5这样的形式做初启动,为什么不行,我不想用I点,因为真实中的I点是很宝贵的,大家看看这是为什么
网络1
LD     SM0.0
=      L60.0
LD     SM0.0
=      L63.7
LD     L60.0
CALL   MBUS_CTRL:SBR1, L63.7, 19200, 2, 1000, M0.0, MB1
网络2
LD     SM0.1
R      M0.1, 1
网络3
LD     I0.1
EU
S      M0.1, 1
网络4
LD     M0.1
=      L60.0
LD     M0.1
EU
=      L63.7
LD     L60.0
CALL   MBUS_MSG:SBR2, L63.7, 1, 0, 30001, 1, &VB0, M0.2, MB2
网络5
LD     M0.2
EU
S      M0.3, 1
R      M0.1, 1
网络6
LD     SM0.0
LPS
A      M0.2
ITD    VW0, VD10
AENO
DTR    VD10, VD20
AENO
MOVR   VD20, VD30
/R     10.0, VD30
LRD
AR>    VD30, 10.0
MOVW   1, VW50
LPP
AR<    VD30, 10.0
MOVW   0, VW50
网络7
LD     M0.3
=      L60.0
LD     M0.3
EU
=      L63.7
LD     L60.0
CALL   MBUS_MSG:SBR2, L63.7, 1, 1, 40001, 1, &VB50, M0.5, MB3
网络8
LD     M0.5
EU
R      M0.3, 1
S      M0.1, 1

最佳答案

M0.0肯定不行,在网络1中,M0.0作为MBUS_CTRL初始化完成会被置1,如果用M0.0代替I0.1来使能MBUS_MSG会导致通讯堵塞,一直激活发送;SM0.1+M0.5也不行,SM0.1是第一个扫描周期通,会导致信息最多只发送一个扫描周期,最多也就能发送一次消息。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年12月21日 下午3:04
下一篇 2017年12月21日 下午3:04

相关推荐