西门子PLC作为市场占有率非常高的一款PLC,支持Profinet、Profibus、S7、Modbus、TCP等多种通信协议,本案例以S7-1200 PLC为例,主要讲述使用西门子PLC作为ModbusTCP服务器,上位机作为ModbusTCP客户端的应用场景。西门子S7-1200 PLC并不支持直接ModbusTCP,需要编写一些PLC程序,PLC程序的主要目的是通信参数及地址映射的设置。
【新阁在线教育 服务号:thinger_as】
1. PLC程序编写
步 骤 | 操作 | 说明 |
---|---|---|
1 | 通过博图软件创建一个新的PLC项目, | |
2 | 双击PLC的以太网口,设置IP地址, | |
3 | 创建一个新的DB块用于数据传输,定义为DB100,其中<ModbusData为200个 | |
4 | 打开OB1,将指令MB_SERVER拖拽至OB1的程序段1中,根据操作提示,添加背景数据块 | |
5 | 将MB_SERVER功能块各个引脚填写完整: | |
6 | 编译PLC程序,下载PLC程序 | |
2. Modbus地址映射
PLC程序编写完成后,下一步进行Modbus测试,在测试之前,首先明确Modbus地址与PLC地址的映射关系:
由上表可知,Modbus的0区、1区和3区,分别对应PLC的过程映像输出、过程映像输入和过程映像输入,但实际应用中,这三个区应用较少,主要使用的是4区,4区的映射地址是由自己设置,也就是MB_HOLD_REG。
3. 通信功能测试
下面我们使用ModbusPoll软件来针对各个区做下简单的测试,具体如下所示:
-
输出Q点对应0区:该存储区是可读可写的,可以通过ModbusPoll读取到PLC中Q点的值,也可以进行写入,PLC监控及Modbus软件监控结果如下:
-
输入I点对应1区:该存储区是只读的,可以通过ModbusPoll读取到PLC中I点的值,PLC监控及Modbus软件监控结果如下:
-
过程输入存储区对应3区:该存储区是只读的,可以通过ModbusPoll读取到PLC中输入存储区的值,PLC监控及Modbus软件监控结果如下:
-
创建的DB存储区对应4区:该存储区是可读可写的,可以通过ModbusPoll读取到PLC中DB存储区的值,也可以进行写入,PLC监控及Modbus软件监控结果如下:
S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器
如何在 WinCC Runtime Professional 中自动调整画面分辨率适应窗口的大小?
巨控协议转换网关GRM321GRM322GRM323应用场景
精智面板/二代精简PN面板如何使用Modbus TCP/IP 通信组态
WinCC Flexible Smart快速导入 Smart PLC变量
S7_1200配方功能快速入门