1)、PLC2台,分别是200SMART 的CR60和SR20;2)、2个DP插头(6ES7972-0BX12-0XA0)3)、衔接导线若干(plc电源及通讯)
验证内容:令:CR60 PLC为主站,发送PLC体系时钟(8个字节的信息)给SR20从站;SR20从站发送一个双字的循环移位数据给主站,并由通讯数据VD100接纳输出到QD0。
主站程序:
在验证过程中从前出现一个过错,使MSG指令始终显示为6,表明从站无呼应。我验证时,由于衔接2台plc之间的3+、8-没有承认,形成接线过错,使MSG的error过错信息为6,查看后找到原因,重新接线后依然报警6。***后查看为控制程序不完整,主要原因是没有给MB0一个初始化操作,形成过错值没有得到有用的刷新。于是,在程序段1中参加初始化操作得到解决。
主站MSG指令主要了解Addr地址的使用,下面有描绘。
从站程序:从站通讯地址设置为1#
从站自VB31开端为读取主站VB11开端的8个字节主站体系时钟数据,指定VB31的开端地址是由Addr地址40011定义的,从站循环指令VD11运转成果,将由Mbus_init的Holdstart定义的开端地址发送和接纳。
通讯数据:
Modbus通讯程序相对的难点是通讯映射的地址关系。
主站读取从站的数据,开端地址是根据从站Holdstart管脚定义的开端地址开端算,而不是指从站的V区物理地址。在验证程序中,从站的Mbus_init开端地址为VB11,那么,主站MSG指令的Addr 40001,应该是指从站的VB11地址。
同理,从站读取主站体系时钟,主站的MSG指令的Addr 40011,对应到从站的地址相当于偏移了10个字(偏移量10word + 11byte = 31byte) ,即为VB31开端的8个字节中寄存,Modbus通讯地址计算是40001开端的。