如图,他addr写着CPU作为从站地址不是1吗,但是右边写着地址是2。
还有下面的&VB200什么意思?
问题补充:
MBUS_INIT初始化从站指令,也就是说CPU当主站,通过485,读取其他信息,然后储存到VB2OO开始
图片说明:
最佳答案
1、他addr写着CPU作为从站地址不是1吗,但是右边写着地址是2?
右边的2是CPU与编程软件或触屏通过串口连接的方式通讯时CPU的地址,在这种方式下,通讯口走的是西门子专有协议PPI、MPI串行通讯协议。
你的程序中MODBUS 从站初始化指令 MBUS_INIT在CPU处于RUN模式时,该指令就将这个PORT0 口进行了重定义,按你的指令左边的addr管脚值为1,将CPU的 PORT0口定义成了MODBUS RTU从站,从站地址就是1了。
CPU在 STOP模式,这个PORT0口又自动恢复成了PPI、MPI地址为2的串行通讯协议。
2、从你补充提问来看,主站和从站你理解的不对。
主站(有些资料上叫作客户机),它主动向从站(有些资料上叫作服务器)发送读写请求,而从站是在那等着,什么时候接到主站发来的正确请求帧,它才去响应这个请求帧,向主站做出相应的回复。如果主站一直没有请求,它就默默等在那,一直等待主站请求。
3、MBUS_INIT 的 HoldStart 管脚用来定义参与通讯的保持寄存器对应 V 存储区的起始地址(指针形式),多少个MODBUS保持寄存器,是由 MaxHold 管脚来定义的。
你的例子中 HoldStart 是 &VB200,MaxHold 管脚是 100。它的意思是指令正确执行后,就将从VB200到VB399之间的200个字节,共100个字定义成了MODBUS 协议的保持寄存器。
地址对应 关系统为
VW200 40001
VW202 40002
VW204 40003
VW206 40004
……
VW296 40099
VW298 40100
MODBUS 从站方面具体内容参考下面连接中的MOUBUS RTU 从站部分。
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/communication/serial_port/modbus/Slave/Slave.htm
更多内容可以参考
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
提问者对于答案的评价:
MBUS_INIT初始化从站,使CPU变为从站
MBUS_CTRL初始化主站,使CPU变为主站,是这样吧。
MBUS_MSG中的Slave,是指对哪个从站进行请求是吧。
最佳答案作者回复:
最后的理解是对的
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc368399.html