实例中是PN转modbusTCP设备、PLC1200、Modbus slave(模拟下端仪表)之间的通讯测试实例,本例我们PN转Modbus设备作主站(modbusTCP客户端),下端仪表作从站(modbusTCP服务端),下端仪表用Modbus slave模拟。PLC侧用04H指令读,10H指令写。三格电子使用型号为SG-PN-TCP-210进行测试,这个为案例
实际接线:PORT1、PORT2分别用网线连接交换机的LAN口和PLC,电脑接到交换机的LAN口,本设备的LAN用网线接到交换机的LAN口。
测试准备:将电脑的IP改成192.168.1.100,在浏览器地址栏中输入本设备的LAN口IP 192.168.37,用户名和密码都输入admin,进入网页配置界面如下:
上图中的服务器1编辑框改成192.168.1.100,对应的从机地址改成1,点击设置并重启模块。
打开电脑软件Simens(博图),新建工程,加载主站GSD(SG-PN-MODTCP-M1.0),硬件组态,选择相应的模块,本例选择03H Read2Word_1和10H write2Word_1,会看到PLC为俩模块自动分配了输入地址4…7输出地址4…7,建立相应的监控表。
通讯参数配置:选择好相应的模块后,还需要设置03H Read2Word_1和10H write2Word_1属性下的Modbus No和Start address这两个参数,Modbus No即下端仪表的地址(本例中都为1),Start address 即从下端仪表的哪个寄存器开始读写数据。本例中03H Read2Word_1的起始地址为0,10H write2Word_1的起始地址为2,即Modbus slave建立1个弹窗,地址从0开始,寄存器个数为4,这样数据位置就对应上了。
注:在Modbus slave中的0其实对应的是Modbus的寄存器地址40001,而博图03H模块Start address设置为0,意思就是从下端设备的40001开始读两个字。如果我想读取下端仪表寄存器地址从40031以后的变量数据,那么我博图模块起始地址可以设置为30,在slave软件中我就从30开始输入两个数据,这样就可以在博图的监控表看到相应的数据。如果连接实际现场仪表给的寄存器地址是16进制,则需要先转换成十进制将对应的数填入03H模块的起始地址里,比如寄存器地址是0X0014,那么它对应的十进制为20,那我们把20相应的填入03H起始地址一栏即可。
测试:选择PLC设备转至在线。ModBus Slave工作在modbus TCP模式,IP地址选择192.168.1.100,Slave 03对话框0、1寄存器改数据,在博图监控03对应的变量IW4、IW6会有相应的数据变化,在博图10H对应的变量QW4、QW6输出数据,Slave 03H对话框 2、3寄存器会有相应的数据变化。
注2:在Modbus协议中03H和10H指令的寄存器地址都是从40001开始,所以03H和10H同时用于slave时,需要将地址错开,即把PLC博图设置界面的03H和10H的Start address设置为不同的地址即可。
另外,需要注意的是若采集变量是浮点型,则一个浮点数占用两个寄存器,即两个字,比如温度。
楼主最近还看过