大家好,我在学西门子S7-200PLC的MODBUS通讯中,做了这样一个程序,假设我现在的PLC要不断的读取传感器的温度数据,温度是从VW0传进来的,那么下面程序中网络3可以看出是初启动读数据的,我想把网络3的I0.1改为用M0.0或SM0.1+m0.5这样的形式做初启动,为什么不行,我不想用I点,因为真实中的I点是很宝贵的,大家看看这是为什么
网络1
LDSM0.0
=L60.0
LDSM0.0
=L63.7
LDL60.0
CALLMBUS_CTRL:SBR1,L63.7,19200,2,1000,M0.0,MB1
网络2
LDSM0.1
RM0.1,1
网络3
LDI0.1
EU
SM0.1,1
网络4
LDM0.1
=L60.0
LDM0.1
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,1,0,30001,1,&VB0,M0.2,MB2
网络5
LDM0.2
EU
SM0.3,1
RM0.1,1
网络6
LDSM0.0
LPS
AM0.2
ITDVW0,VD10
AENO
DTRVD10,VD20
AENO
MOVRVD20,VD30
/R10.0,VD30
LRD
AR>VD30,10.0
MOVW1,VW50
LPP
AR<VD30,10.0
MOVW0,VW50
网络7
LDM0.3
=L60.0
LDM0.3
EU
=L63.7
LDL60.0
CALLMBUS_MSG:SBR2,L63.7,1,1,40001,1,&VB50,M0.5,MB3
网络8
LDM0.5
EU
RM0.3,1
SM0.1,1
最佳答案
M0.0肯定不行,在网络1中,M0.0作为MBUS_CTRL初始化完成会被置1,如果用M0.0代替I0.1来使能MBUS_MSG会导致通讯堵塞,一直激活发送;SM0.1+M0.5也不行,SM0.1是第一个扫描周期通,会导致信息最多只发送一个扫描周期,最多也就能发送一次消息。
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。