PLC编程—S7、OPC UA、Web通讯
PLC的通讯一般有串口、网口通讯两大类。本节讲网口通讯,分为S7、OPC UA、WEB...;下一节将开放式用户通讯;
目录
- 前言
- 要求:PLC的CPU属性设置
- 一、S7(PUT、GET)
- 1)在B-PLC中使用S7通信(PUT/GET)
- 2)注意事项:
- 二、OPC UA(Server、Client)
- 1)PLC作为OPC Server与Client用户通讯
- 2)PLC作为OPC Client与Server用户通讯
- 三、Web服务器(WWW)
- 1)PC端访问
- 2)移动端访问
前言
CPU 的 PROFINET 通信口主要支持以下通信协议及服务:
- S7 通信
- OPC UA 服务器
- Web 服务器
- 开放式用户通信
- PG 通信(编程调试)
- HMI 通信
以太网通讯
要求:PLC的CPU属性设置
- 设备组态——防护与安全——(访问级别<完全访问>、连接机制<勾选允许PG/PC>)
- 项目——属性——保护<块编译时支持仿真>
- 通讯块程序一边写在循环中断块中(OB30…38),缩短PLC循环时间,降低PLC通讯负载
SIMTIC NET
以太网通讯
一、S7(PUT、GET)
在不更改A-PLC程序的前提下,通过修改B-PLC程序实现与A-PLC的数据交换。最推荐、最可靠且最高效的方式是使用西门子S7-1500内置的S7通信协议(PUT/GET指令)。以下是详细的实现步骤和说明:
1)在B-PLC中使用S7通信(PUT/GET)
前提:
- 确保PLC A和PLC B通过工业以太网连接在同一个子网中(记录好两台PLC的IP地址)
- A-PLC中的 属性->常规->防护与安全”里“连接机制”一项需要勾选“允许来自远程对象的PUT/GET通信访问”(一般做项目的均默认勾选,未勾选的联系项目负责人进行程序修改)
步骤:
在B-PLC中创建用于通信的DB块(数据缓冲区)
创建接收(GET)映射区域
创建发送(PUT)映射区域
接收/发送数据的数据类型至少为Byte;要传送单个Bool除外
在B-PLC中编写GET通讯程序
- GET指令配置示例 (读取A-PLC的I区到B-PLC的DB):
- 指令块:“Get” (在指令列表 -> “通信” -> “S7通信” 下)
- 参数:
- REQ: 上升沿触发 (例如用时钟存储器M0.7-0.5Hz的上升沿 M0.5-1Hz测试不可-1.4)
- ID: 连接标识符。关键步骤:在GET指令右上方的工具箱上点击。
- 在弹出窗口中:“伙伴”选择“未知”。
- 伙伴地址填写对应的IP
- 连接名称新建“S7连接”;可以同一IP建立多个S7连接
- 默认勾选主动建立连接;单向连接
- ADDR_1: A-PLC源数据区域的指针。核心配置!
- 部分连续读取:对于I3122.0开始的字节:P#I3122.0 BYTE 1(只关心I3122的2.3.4位,这是连续的,可读取一个字节)
- 单个位读取:如果只读取一个位I880.7,则直接写:P#I880.7 BOOL 1
- 多个区域读:ADDR_2.3.4中填写
- RD_1: B-PLC目标DB接收区的指针。核心配置!
- 部分连续接收:对于接收I3122.2.3.4填写:DB50.DBB0/ P#DB50.DBX0.0 Byte 1
- 单个位接收:位I880.7的接收填写:B50.DBX3.1/ P#DB50.DBX3.1 BOOL 1
- 多个区域接收:RD_2.3.4中填写
- DONE, BUSY, ERROR, STATUS: 用于监控指令执行状态和错误信息。
- 跨区域读取过多,则需要创建多个GET指令
在B-PLC中编写PUT通讯程序
- PUT指令配置示例 (将B-PLC的DB数据写入A-PLC的Q区)
- 指令块:“Put” (在指令列表 -> “通信” -> “S7通信” 下)
- 参数:
- REQ: 上升沿触发
- ID:并行(同时触发)通讯必须使用与GET指令不同的连接ID!重复新建连接的步骤,TIA会自动分配另一个唯一的ID(如W#16#101);可以串行(轮询)通讯使用相同ID。
- ADDR_1: A-PLC目标数据区域的指针。
- 对于写入Q1778.5.6.7开始的字节:P#Q1778.5 BYTE 1
- 对于写入Q496.2的单个Bool值:P#Q496.2 BOOL 1
- SD_1: B-PLC源DB发送区的指针。
- 对于发送Q1778.5.6.7开始字节: DB51.DBB0/ P#DB51.DBX0.0 BYTE 1
- 对于发送Q496.2的单个Bool值:DB51.DBX4.6
- DONE, BUSY, ERROR, STATUS: 状态监控。
- 同样,如果目标地址不连续(如Q987和Q897),需要多个PUT指令。
| 场景 | 是否允许相同ID | 条件 |
|---|---|---|
| PUT和GET同时执行 | ❌ 不允许 | 必须不同ID |
| PUT和GET串行执行 | ✅ 允许 | 用BUSY信号(status代码写程序)确保不重叠 |
| 多个GET同时执行 | ❌ 不允许 | 每个GET需独立ID |
| 多个GET串行执行 | ✅ 允许 | 同一ID可重复使用 |
- 在B-PLC中处理接收到的数据:
- 从A-PLC读取的数据(开关量状态)现在存储在中DB50.DBB0中。
- 例如,要使用A-PLC的I3122.2状态:
- 访问“DB_Name”.PV_Name.%X2即可:“leak_R”.I3122.%X2
2)注意事项:
- 字节操作:这是S7通信的基础。必须读取/写入包含目标位的整个字节。在B-PLC侧,需要在DB中定义这些字节变量,并在逻辑中处理特定位。《假设Q1778.5、Q1778.6、Q1778.7是连续的位(虽然不是字节对齐,但S7通信按字节来操作操作ADDR_1:P#Q1778.0 Byte 1》
- 地址映射:GET指令的ADDR_1指向A-PLC的物理地址(I/Q区)、RD_1指向B-PLC的DB接收区。PUT指令ADDR_1指向A-PLC的物理地址(Q区)、SD_1指向B-PLC的DB发送区。
- 连接ID:每个PUT或GET指令需要一个唯一的连接ID。同一活动PUT/GUT通讯ID必须不同,轮巡可使用同一ID,S7-1500 CPU有最大S7连接数限制(如CPU 1511最多16个),合理分配ID。
- 通信伙伴:在B-PLC的网络视图中添加的“PLC_A”设备只是一个通信伙伴的符号表示,用于组态连接。A-PLC不需要做任何组态修改或下载。(直接添加的S7连接、测试过程没有单独组态伙伴)
- 通信速率与负载:S7通信高效可靠。对于少量开关量点,通信负载极低,使用OB1即可。如果数据量非常大或要求严格同步,考虑使用更快的循环中断OB和优化数据打包。避免过于频繁地调用PUT/GET(例如每个周期都调用),可以在定时中断或状态变化时触发。
- 错误处理: 强烈建议添加对GET/PUT指令ERROR和STATUS输出的监控。将错误信息记录或报警。配置好OB86(机架故障OB,用于处理通信丢失)和OB121/122(编程错误OB)。
S7通讯
二、OPC UA(Server、Client)
OPC UA是一种面向服务的通信协议,可实现从机器到机器间的水平通信和从机器到云端的垂直通信。专门用于连接工业自动化及物联网设备和云端服务器之间,提供跨平台、安全、可扩展的数据交互。
技术特性
- 跨平台信息模型(支持.NET, Java, C++)
- 内置安全机制(X.509证书,AES256加密)
- 支持Pub/Sub模式(与MQTT结合)
典型应用
- 跨厂级数据采集(SCADA到MES层)
- 数字孪生数据对接
使用方法
1)PLC作为OPC Server与Client用户通讯
- 要求:设备组态—OPC UA—启动OPC UA服务器…设置相关参数(系统运行许可证)
- 服务器接口 :项目树OPC UA通讯—服务器接口—新增接口…
- 说明:接口定义成服务器接口与不定义接口直接访问全局变量的节点属性、格式均不一样(定义成接口更标准化)
什么是服务器接口?
2)PLC作为OPC Client与Server用户通讯
- 要求:在 CPU 特性中选择“OPC UA > 客户端”(OPC UA > Client)——选择“启用 OPC UA 客户端” 选项
- 第一步(创建客户端接口):项目树“OPC UA 通信 > 客户端接口”>双击“添加新客户端接口”(Max=40/4)>选择客户端接口>添加读取/写列表>选择“源”>拖拽变量到列表>编译(自动生成[Name]_Data/Configuration数据块:更改后会自动更新无需手动更改)
- 第二步(分配连接参数):右击客户端接口>属性>组态>设置连接地址(可“在线访问查看”)
- 第三步(编程及测试):编写FB块(连接-读写-释放…官方块<添加5个PLC数据类型UDT>变量表(用户常量4个)>)>调用FB块填写引脚参数(依据[Name]_Data/Configuration数据块填写)
- PLCServer亲测有效;KepServer测试失败(两者节点类型不同(n=4;i=3/n=2;s=通道1.标记1)有关);
S7-1500 OPC UA 客户端
三、Web服务器(WWW)
功能:
- 可通过 Internet 或公司内网监视 CPU,进行远程评估和诊断。
- 使用 Web 浏览器访问自由设计的Web 应用程序。
要求:CPU特性—勾选“启用通过接口IP访问Web服务”—“Web服务器”设置相关参数(用户管理、监视表等…)。
过程:PC端、手机终端分别通过有线、无线的方式连接PLC,访问到WEB界面(标准界面、自定义界面)。
结构:如下图所示
1)PC端访问
- PC 和 PLC 分别连接到交换机上(无交换机可直连);PC端浏览器键入IP进入标准界面
- 注意:PC的有线网卡设置为PLC的IP段,确保联通性即可。
2)移动端访问
- 移动端无网络接口,只能通过无线形式,So,PLC 须通过无线设备(路由器)映射成无线(Wifi)信号供移动端连接;
- 注意:若手机端连接路由器Wifi信号(无需固定无线IP<路由器设置成DHCP为无线终端自动分配>),须关闭流量(确保只有一个WIFI信号连接)
3)自定义Web应用程序(需用WWW指令)
4)总结
1.路由器设置方法(注意不能用WAN口),局域网IP段设置成PLC相同段(DHCP功能开启)
2.虚拟机无线连接PLC,虚拟网络编辑器-设置到无线网卡模式;网络形式为物理桥接
3.无线设备尽可能选用工业产品,这里测试用家用/企业华为路由器
Web Server 说明
Web 常见问题
PC端访问
手机端访问
