S7-200 SMART V2.4版本的软件已经发布,V2.4版本的软件增加了Profinet通讯,还增加了Modbus TCP库。本次试验前期工作实现组态王与SMART200进行Modbus TCP通讯,我的目的最终要实现labview与SMART200进行Modbus TCP通讯。
PLC软件由v2.2升级至v2.4后,不知道哪里出现问题,始终无法与组态王(6.53及6.55)通讯(如果哪位大神知道原因,请不吝赐教),不得已重新安装V2.2版本,下载SMART200 Modbus TCP库文件,最终在V2.2及6.55运行环境下实现 Modbus TCP通讯。
本次通讯能成功参考了‘串口通信之家’这位大神的帖子,此大神在爱奇艺以‘关育谋’的名称上发布了不少教程视频,深受启发。
我在上一篇帖子上发布过组态王与SMART200以太网通讯(通讯协议是S7-200 TCP),以上一篇为基础,在连接成功的基础上进行本阶段试验。
PLC的IP地址为192.168.1.35,主机IP地址为192.168.1.50
1、MB_Server指令库安装
A、打开STEP 7-Micro/WIN SMART V2.2 版本软件,鼠标右键项目树的“库”节点,并从快捷菜单中选择“打开库文件夹”,如图 1. 所示。
图1.打开库文件夹
B、将MB_Server指令库添加到打开的STEP 7-Micro/WIN SMART库文件夹中,如图2. 所示。(将解压之后的库文件复制到下列路径)
图2.添加MB_Server指令库
备注:STEP 7-Micro/WIN SMART库文件夹一般存储路径为C:\Users\Public\Documents\Siemens\STEP 7-MicroWIN SMART\Lib
C、关闭STEP 7-Micro/WIN SMART库文件夹,然后鼠标右键项目树的“库”节点,并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Server_0”指令库已经被添加到项目树的库节点下。
MB_Server指令库包含MBS_Connect和MBS_Slave等2个指令。MBS_Connect指令用于建立或断开Modbus TCP连接;MBS_Slave指令用于处理来自Modbus TCP客户端的请求,并且该指令必须在每次扫描时执行,以便检查和响应 Modbus 请求。
每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART 需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令库(例如MB_Server_0,MB_Server_1,MB_Server_2)。
A、在“MAIN”主程序中调用MBS_Connect和MBS_Slave指令,如图 3. 所示
图3.主程序中调用MB_Server指令库
MBS_Connect指令各个参数定义如下:
· EN 使能:必须保证每一扫描周期都被使能。
· Connect:启动TCP 连接建立操作。
· Disconnect: 断开TCP连接操作。
· ConnID: TCP 连接标识。
注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同。
· IPaddr1~IPaddr4: Modbus TCP 客户端的IP地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节。如果不指定伙伴 IP ,则可以设置为0.0.0.0 。
· LocPort: 本地设备上端口号
· MaxHold: 用于设置 Modbus 地址 4xxxx 或 4yyyyy 可访问的 V 存储器中的字保持寄存器数。
· HoldStart: 间接地址指针,指向 CPU 中 V 存储器中保持寄存器的起始地址。本例中VW0 即对于 Modbus 地址 40001 。
· ConnectDone:Modbus TCP连接已经成功建立。
· Busy: 连接操作正在进行时。
· Error: 建立或断开连接时,发生错误。
· Status:如果指令置位 “Error” 输出,Status 输出会显示错误代码。
MBS_Slave指令各个参数定义如下:
· EN 使能:必须保证每一扫描周期都被使能。
· Done:当 MB_Server 指令响应 Modbus 请求时,Done 完成位在当前扫描周期被设置为 1 ; 如果未处理任何请求,Done 完成位为 0 。
· Error: 错误代码,只有在 Done 位为1时错误代码有效。MB_Server指令库错误代码见3.3章节。
3、为MB_Server指令库分配库存储器地址
MB_Server指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该库存储器分配地址不能与 MBS_Connect 指令参数 HoadStart指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程见图4.所示。
图4.为MB_Server指令库分配库存储区
MB_Server错误代码 | 描述 |
0 | 无错误 |
1~31 | 开放式用户通信库指令错误代码,请参考STEP 7-Micro/WIN SMART在线帮助 |
50 | TCP连接未成功建立 |
51 | HoldStart存储器范围错误 |
52 | 保持寄存器地址与库存储区地址重叠 |
53 | TCP接收数据长度错误 |
54 | Modbus TCP报文长度校验错误 |
55 | 非法的Modbus TCP功能码 |
56 | 请求的存储区地址非法 |
4、写PLC其他程序
为了验证通讯成功与否,我这里随便写了5个流水灯及1个状态位
PLC地址 | Q0.0 | Q0.1 | Q0.2 | Q0.3 | Q0.4 | VW0 |
组态王地址 | 00001 | 00002 | 00003 | 00004 | 00005 | 40001 |
5、组态王组态
1)添加设备,设备-PLC-莫迪康-Modbus TCP。设备地址192.168.1.35:502 1/50
用6.55版本ModbusTCP驱动成功连接后没继续做6.53版本的试验,感兴趣的可以自己试一下。
2) 添加变量,数据库-数据词典
3)添加画面,连接地址,运行。