跳到主要内容

西门子S7-1200与海为PLC进行Modbus TCP通讯


提示

海为 PLC 作为从机时,不需要写任何通讯程序,上位直接访问 PLC 的数据地址即可。

本例中,西门子 S7-1200PLC 的 IP 地址为 192.168.14.117,海为 PLC 的 IP 地址分别为 192.168.14.232 和 192.168.14.233。

一、S7-1200 编程

1.设计 IP 及查看硬件标识符

设置 S7-1200 IP 地址,需要确保 PLC 的 IP 地址在都在同一个网段,将 PLC 的 IP 地址设置为 192.168.14.117,查看硬件标识符如下图(博图 V13 以下版本硬件标识符在常规-高级选项-硬件标识符):

2.调用 MB_CLIENT

将 MB_CLIENT 指令块在“ 程序块 > OB1 ”中的程序段里调用,调用时会自动生成背景 DB1 ,点击确定即可:

3.创建 CONNECT 引脚的数据块

先创建一个新的全局数据块 DB2,如图所示:

在双击打开 DB2,定义变量名称为“aa",数据类型为“TCON_IP_v4”,然后点击“回车”按键。该数据类型结构创建完毕,如图所示:

4.创建 MB_DATA_PTR 数据缓冲区

先创建一个新的全局数据块 DB3,创建方法可以参考数据块 DB2,连同上一步创建的 DB2 位于 CPU 程序块中,如图所示:

在双击打开 DB3,定义变量名称为“ff",数据类型为 word 数组,以便通信中存放数据,然后点击“回车”按键,打开数据块 DB3 属性,去掉块的优化,使之成为标准的块结构,如图所示:

然后编译,出来偏移量如下图:

5.完成 MB_CLIENT 客户端指令编辑

使用功能码 03,从海为 PLC(服务器 192.168.14.232)中读取 2 个保持寄存器 V0 开始的值, MB_MODE = 0,MB_DATA_ADDR = 40513,MB_DATA_LEN = 2,如图所示:

根据上面 2、3、4,完成海为 PLC(192.168.14.233)的 MB_CLIENT 指令编辑,并编写控制程序,完成后如下图:

二、监控测试

对海为 PLC(IP 分别为 192.168.14.232 和 192.168.14.233)的寄存器 V0-V1 赋值。

启动触发 q0.0,MB_CLIENT 指令执行通讯成功,REQ 的状态值会加 1,并且数据块 DB3 和 DB7 中有读取到的值。西门子 S7-1200 与海为 PLC 通讯成功。