PLC发烧友 昨天
以下文章来源于工控论坛 ,作者关普
工控论坛中华工控网(www.gkong.com)最新活动信息、工控周刊、每日精华话题发布。工控论坛,自动化从业者的精神家园
↖戳上方蓝字 "PLC发烧友” 关注我们哦!一
必备软件和硬件
1、西门子STEP 7-MicroWIN SMART编程软件
2、欧姆龙CX-Programmer编程软件
3、Modbus Poll调试软件
4、Modbus Slave调试软件
5、以太网调试助手
6、西门子S7-200 Smart系列PLC
7、欧姆龙CP1H-E系列PLC
8、无线路由器
9、网线
二
通信实现目的
1、西门子S7-200 Smart读取欧姆龙CP1H-E保持寄存器D0~D3并保持到自己的保持寄存器VW0~VW6里,使用Modbus之03功能码实现;
2、西门子S7-200 Smart使用自己的保持寄存器VW8~VW14控制欧姆龙CP1H-E的保持寄存器D4~D7,使用Modbus之16功能码实现。
三
通信连接说明
1、西门子S7-200 Smart本体自带以太网口通过网线连接至无线路由器LAN接口;
2、欧姆龙CP1H-E本体自带以太网口通过网线连接至无线路由器LAN接口。
四
Modbus TCP服务器通信参数
1、Modbus TCP服务器:欧姆龙CP1H-E
2、Modbus TCP服务器IP地址:192.168.1.160
3、Modbus TPC服务器子网掩码:255.255.255.0
4、Modbus TCP服务器默认网关:192.168.1.1
5、Modbus TCP服务器端口号:502
五
Modbus TCP客户端通信参数
1、Modbus TCP客户端:西门子S7-200 Smart
2、Modbus TCP客户端IP地址:192.168.1.150
3、Modbus TPC客户端子网掩码:255.255.255.0
4、Modbus TCP客户端默认网关:192.168.1.1
5、Modbus TCP客户端端口号:502
六
欧姆龙CP1H-E通信参数设置
1、欧姆龙CP1H-E通信参数设置如下所示:
2、欧姆龙CP1H-E设备编号和Modbus寄存器编号、地址对应表如下所示:
七
欧姆龙CP1H-E实现Modbus TCP服务器相关指令
1、Modbus TCP Server功能块:
Modbus TCP Server功能块各个参数定义如下所示:
(1) EN使能:必须保证每一扫描周期都被使能;
(2) LocalPort:端口号,一般默认为502;
(3) StartServer:启动TCP建立连接操作;
(4) NoActivityDelay:延迟时间;
(5) ENO:使能输出;
(6) Connected:客户端连接标志;
(7) IP_Client:客户端IP;
(8) Error:错误标志位;
(9) Error_Code:错误代码;
(10) Except_Counter:异常错误计数;
(11) Recv_Counter:接收请求计数。
八
欧姆龙CP1H-E实现Modbus TCP服务器编程
Modbus TCP Server功能块编制的程序如下所示:
1、初始化时,给保持寄存器D0、D1、D2、D3分别赋值0、1、2、3:
2、初始化时,给保持寄存器D4、D5、D6、D7分别赋值0、0、0、0:
3、每1分钟给保持寄存器D0、D1、D2、D3做加1操作:
4、判断保持寄存器D0、D1、D2、D3的值,如果大于6000,则各自进行清零操作:
5、初始化置位W0.00,延时2000ms后置位W0.01、复位W0.00
6、使用W0.01启动Modbus TCP Server,端口号为502:
九
使用以太网调试助手测试欧姆龙CP1H-E之Modbus TCP服务器程序
1、Modbus之03功能码测试,读取欧姆龙CP1H-E保持寄存器D0~D3的值:
以太网调试助手发送:33 33 00 00 00 06 01 01 00 00 00 04
欧姆龙CP1H-E返回:33 33 00 00 00 0B 01 03 08 00 13 00 14 00 15 00 16
则此时欧姆龙CP1H-E保持寄存器D0、D1、D2、D3的数据依次为16#0013、16#0014、16#0015、16#0016,以太网调试助手测试截图如下所示:
2、Modbus之16功能码测试,将欧姆龙CP1H-E保持寄存器D4~D7依次设置为1、2、3、4
以太网调试助手发送:EE EE 00 00 00 0F 01 10 00 04 00 04 08 00 01 00 02 00 03 00 04
欧姆龙CP1H-E返回:EE EE 00 00 00 06 01 10 00 04 00 04
欧姆龙CP1H-E返回数据表明其保持寄存器D4、D5、D6、D7数据设置成功,以太网调试助手测试截图如下所示:
3、测试总结:
以上Modbus之03和10功能码测试通过,亦表明欧姆龙CP1H-E之Modbus TCP服务器程序正确无误。此时可以断开以太网调试助手和欧姆龙CP1H-E的通信连接。
十
西门子S7-200 Smart通信参数设置
西门子S7-200 Smart通信参数设置如下图所示:
十一
西门子S7-200 Smart实现Modbus TCP客户端相关指令
1、MBC_Connect指令:
指令参数说明如下所示:
(1) EN 使能:必须保证每一扫描周期都被使能。
(2) Connect:启动TCP 连接建立操作;
(3) Disconnect: 断开TCP连接操作;
(4) ConnID: TCP 连接标识。注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同;
(5) IPaddr1~IPaddr4: Modbus TCP 服务器的IP地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节;
(6) RemPort: Modbus TCP 服务器的端口号;
(7) LocPort:本地设备(Modbus TCP客户端)上端口号;
(8) ConnectDone:Modbus TCP连接已经成功建立;
(9) Busy: 连接操作正在进行时;
(10) Error: 建立或断开连接时,发生错误;
(11) Status:如果指令置位 “Error” 输出,Status 输出会显示错误代码。该错误代码为参考开放式用户通信库指令错误代码,具体请参考STEP 7-Micro/WIN SMART在线帮助。
2、MBC_MSG指令:
指令参数说明如下所示:
(1) EN 使能:同一时刻只能有一条MB_Client_MSG指令使能,EN 输入参数必须一直接通直到 MB_Client_MSG 指令 Done 位被置 1;
(2) First 读写请求:每一条新的读写请求需要使用信号沿触发;
RW 读写请求:为 0 时,读请求;为 1 时,写请求。开关量输出线圈和保存寄存器支持读请求和写请求,开关量输入触点和模拟量输入通道只支持读请求。
(3) Addr 读写Modbus 服务器的Modbus 地址:00001 至 0XXXX 为开关量输出线圈;10001 至 1XXXX 为开关量输入触点;30001 至 3XXXX 为模拟量输入通道;40001 至 4XXXX 为保持寄存器。
(4) Count 读写数据的个数:对于 Modbus 地址 0XXXX、1XXXX ,Count 按位的个数计算;对于 Modbus 地址 3XXXX、4XXXX ,Count 按字的个数计算;一个 MB_Client_MSG 指令最多读取或写入 120 个字或 1920 个位数据。
(5) DataPtr 数据指针:参数 DataPtr 是间接地址指针,指向 CPU 中与读/写请求相关的数据的 V 存储器地址。对于读请求,DataPtr 应指向用于存储从 Modbus 服务器读取的数据的第一个 CPU 存储单元。对于写请求,DataPtr 应指向要发送到 Modbus 服务器的数据的第一个 CPU 存储单元。
(6) Done 完成位:读写功能完成或者出现错误时,该位会自动置1。多条 MBC_MSG 指令执行时,可以使用该完成位激活下一条 MBC_MSG 指令的执行。
(7) Error:错误代码,只有在 Done 位为1时错误代码有效。
十二
西门子S7-200 Smart实现Modbus TCP客户端编程
1、 初始化标志位清零,如下图所示:
2、初始化给保持寄存器VW0、VW2、VW4、VW6清零,如下图所示:
3、初始化时给保持寄存器VW8、VW10、VW12、VW14分别赋值0、1、2、3,如下图所示:
4、每一分钟给保持寄存器VW8、VW10、VW12、VW14做加1操作,如下图所示:
5、判断保持寄存器VW8、VW10、VW12、VW14的值是否大于6000,如果大于6000,则进行清零操作,如下图所示:
6、Modbus TCP Client连接成功标志位M0.2上升沿将M1.2置位,开始读取Modbus TCP Server共计4路保持寄存器,如下图所示:
7、Modbus TCP Client连接成功标志位M0.2下降沿复位各读写标志位,停止Modbus读写操作,如下图所示:
8、Modbus TCP Client连接Modbus TCP Server初始化,如下图所示:
9、读取Modbus TCP服务器4路保持寄存器部分程序,功能码03,M1.2被置位后开始读取欧姆龙CP1H-E共计4路保持寄存器,成功读取后将读取到的4路保持寄存器数据转存至VW0~VW6里,置位M1.3去执行写多路保持寄存器程序段,如下图所示:
10、写入Modbus TCP服务器4路保持寄存器部分程序,功能码16, 现将保持寄存器VW8~VW14数据转存至发送缓冲区里,M1.3被置位后开始执行写入,成功写入后即会将西门子S7-200 Smart保持寄存器VW8~VW14的数据写入到欧姆龙CP1H-E保持寄存器D4~D7里,之后置位M1.2,循环执行读取保持寄存器命令,如下图所示:
11、为MB_Client指令库分配库存储器地址:
MB_Client指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该库存储器分配地址不能与 MBC_MSG 指令参数DataPtr指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程如下图所示:
十三
西门子S7-200 Smart之Modbus TCP客户端程序的监视
西门子S7-200 Smart和以太网调试助手建立连接成功后,以太网调试助手即可观察到来自西门子S7-200 Smart发出的Modbus TCP命令,如下所示:
十四
西门子S7-200 Smart和欧姆龙CP1H-E实现Modbus TCP以太网通信测试
1、使用网线将西门子S7-200 Smart连接至无线路由器LAN口、使用网线将欧姆龙CP1H-E连接至无线路由器LAN口,完成硬件连接;
2、下载欧姆龙CP1H-E之Modbus TCP服务器通信程序;
3、下载西门子S7-200 Smart之Modbus TCP客户端通信程序;
4、监控欧姆龙CP1H-E程序中W0.01是否置位,Modbus TCP服务器是否初始化完成;
5、监控西门子S7-200 Smart程序,并置位M0.0,建立与欧姆龙CP1H-E的Modbus连接。
6、按照既定要求观察西门子S7-200 Smart和欧姆龙CP1H-E保持寄存器VW0~VW14、D0~D7,完成Modbus TCP以太网通信。
十五
总结
至此,西门子S7-200 Smart(Modbus TCP客户端)和欧姆龙CP1H-E(Modbus TCP服务器)完美实现了Modbus TCP以太网通信。