测试项目:
测试项目的内容,把西门子200 smart 的IB0的状态值,通讯自由口方式传送到三菱FX3U的Y0 ~ Y7,同样三菱FX3U的X0 ~ X7通过自由口通讯方式把状态信息传送到西门子200 smart的QB0中,实现2种不同类型的plc之间的数据交换。
数据传送方式:
西门子 200 smart 三菱FX3U
IB0 → Y0 - Y7
QB0 ← X0 – X7
得到:I0.0 = Y0,.....I0.7 = Y7; X0 = Q0.0,..... X7 = Q0.7。
西门子200smart侧与串口调试软件的编程测试思路:
首先在西门子200smart侧,定义好自由口通讯的必要参数,定义发送完成中断,连接中断,在发送完成中断所连接的中断子程序中,编辑接收完成中断,在接收完成中断所连接的子程序中,继续编辑发送指令XMT,如此引成一个“闭环”的通讯循环。
其次在三菱FX2N侧,完成对西门子200 smart侧是通讯参数设置及数据交换程序段。
程序:
定义通讯初始化:接收中断子程序;发送中断子程;在主程序调用:
将200smart的输入IB0状态值传送到VB1,通过XMT指令发送给三菱FX3U的Y0 `- Y7中表示,同样,三菱FX2N的X0 – X7状态值通过通讯传送到200 smart的RCV接收,由VB11传送到QB0的通讯过程。
先验证西门子200 smart侧的通讯状态,老方法串口调试软件伺候它非常方便,除了外部的硬件外的通讯程序部分测试非常合适,将待测试的用户程序编译、保存、下载到测试的plc中。打开串口调试软件,在方式区写入16#A 16#A,2个“A”字符,点击发送,图示:
为测试方便,我把200smart侧的IB0修改为MB0,创建状态图表,监控通讯数据:
串口调试软件发送的16#A 16#A,相当于在200smart 侧的VB11 = 2#1010 1010,,同样原理,我写在200smart侧的MB0中写一个任意的数据,看串口调试软件是否也能够正确接收,假设写16#B 16#B这样的数据:
200smart侧的数据同样也能够传送到串口调试软件的接收区,说明通讯程序基本是正常了的,能够自动触发转换发送中断和接收中断。
三菱FX3U plc侧与串口调试软件的测试编程思路:
1)同样,定义三菱FX2N的串口通讯格式,将16#0C81写入通讯口控制的D8120中,M8161 = 1,8位数据模式;
三菱的RS指令容易理解,D100存放的是发送的数据,K1是数据长度,就是发送一个D100的数据到西门子200smart,同样道理,D200是接收数据寄存器,存放的是接收到来自西门子200smart侧IB0(测试方便起见用MB0替代)的数据。特殊继电器M8122为数据发送标志位,因为是半双工,M8122与M8123进行必要的互锁。
2)三菱的发送数据寄存器存放在D100,接收数据寄存器存放在D200(16位数据),打开串口调试软件,检测三菱FX3U侧的通讯程序:
3)修改双方的数据看各自的窗口数据双方能够随之改变:
在双方窗口中改变数据,各自窗口上的数据能够随之改变,说明三菱侧的通讯也基本正常。
4)连接西门子200smart与三菱FX3Uplc的通讯口,看2个plc之间的数据交换情况:
硬件正确连接后,能够建立起对等的数据交换,本次测试完成。
测试拔掉通讯线,再次连接通讯线,通讯能够自动连接上。
1500PLC如何更好地配置一个OPC UA客户机使其与服务器进行有效的通信?
如何快速切换 WinCC V7.5 Runtime 的显示模式,如进行日间、夜间显示模式切换?