当前位置: 主页 > PLC控制

如何读取通过modebus传的V0.0~V0.7

PLC通过modebus传数据是V0.0~V0.7的开关量,MODBUS地址是40001,如何将各开关量分离出来?

程序如下,如何读取V0.7~V0.7?M0.0~M0.7?MW12?


NETwork1
LDSM0.1
OI0.3
CALLSBR1,1,VB10,9600,0,0,128,32,1000,&VB0,V110.1,VB101
Network2
LDSM0.0
CALLSBR2,V110.0,VB100
Network3
LDI0.1
=V0.0
=Q0.1
Network4
LDI0.2
=M0.2
=Q0.2
=V0.2
Network5
LDSM0.0
MOVR33.33,VD4
Network6
LDSM0.0
MOVW55,VW8
Network7
LDSM0.0
MOVB2,VB10
Network8
LDSM0.0
MOVW12,MW12

问题补充:
我用modscan测得V0.0~V0.7为40001,但是一个16进制的数值,如何得出Bool的开关量?
MW2和M0.2能读取吗?如何读取?

最佳答案

1V区这样计算的

从站对应的V区地址为:2*(Addr-40001)+HoldSTaRT.。若这里的Addr=40100,而从站中的Holdstart=&VB0,则从站中对应的地址为2*(40100-40001)+&VB0=VB198
2注:写从站实际Q值时,Count值=1或8n(n=1、2、3…….)当Count为1时,Addr可以为任何离散输出,
当Count为8n时,Addr=8m+1(m=0、1、2…..)
31001..10128=数字量输入I0.0..Q15.7
30001..30092=模拟量输入AIW0..AIW62
40001..49999=保持寄存器2Count位或字的个数(0xxxx,1xxxx)/words(3xxxx,4xxxx)


问题补充
40001读出来传送到某个储存器如MW0
把MW0分解MB0MB1再分解
M0.0到M0.7就是对应的V
M读取也是一样,整体读,然后对应分解。

提问者对于答案的评价:
谢谢回答,但
40001读出来传送到某个储存器如MW0
把MW0分解MB0MB1再分解
M0.0到M0.7就是对应的V
M读取也是一样,整体读,然后对应分解
不知实际该如何做?

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号