大家好,我在学西门子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