PLC编程—S7、OPC UA、Web通讯

发布时间:2026/6/17 15:48:47
PLC编程—S7、OPC UA、Web通讯
PLC的通讯一般有串口、网口通讯两大类。本节讲网口通讯分为S7、OPC UA、WEB...下一节将开放式用户通讯目录前言要求PLC的CPU属性设置一、S7PUT、GET1在B-PLC中使用S7通信PUT/GET2注意事项二、OPC UAServer、Client1PLC作为OPC Server与Client用户通讯2PLC作为OPC Client与Server用户通讯三、Web服务器WWW1PC端访问2移动端访问前言CPU 的 PROFINET 通信口主要支持以下通信协议及服务S7 通信OPC UA 服务器Web 服务器开放式用户通信PG 通信编程调试HMI 通信以太网通讯要求PLC的CPU属性设置设备组态——防护与安全——访问级别完全访问、连接机制勾选允许PG/PC)项目——属性——保护块编译时支持仿真通讯块程序一边写在循环中断块中OB30…38,缩短PLC循环时间降低PLC通讯负载SIMTIC NET以太网通讯一、S7PUT、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 1SD_1: B-PLC源DB发送区的指针。对于发送Q1778.5.6.7开始字节 DB51.DBB0/ P#DB51.DBX0.0 BYTE 1对于发送Q496.2的单个Bool值DB51.DBX4.6DONE, BUSY, ERROR, STATUS: 状态监控。同样如果目标地址不连续如Q987和Q897需要多个PUT指令。场景是否允许相同ID条件PUT和GET同时执行❌ 不允许必须不同IDPUT和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.%X22注意事项字节操作这是S7通信的基础。必须读取/写入包含目标位的整个字节。在B-PLC侧需要在DB中定义这些字节变量并在逻辑中处理特定位。《假设Q1778.5、Q1778.6、Q1778.7是连续的位虽然不是字节对齐但S7通信按字节来操作操作ADDR_1P#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必须不同轮巡可使用同一IDS7-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 UAServer、ClientOPC UA是一种面向服务的通信协议可实现从机器到机器间的水平通信和从机器到云端的垂直通信。专门用于连接工业自动化及物联网设备和云端服务器之间提供跨平台、安全、可扩展的数据交互。技术特性跨平台信息模型支持.NET, Java, C内置安全机制X.509证书AES256加密支持Pub/Sub模式与MQTT结合典型应用跨厂级数据采集SCADA到MES层数字孪生数据对接使用方法1PLC作为OPC Server与Client用户通讯要求设备组态—OPC UA—启动OPC UA服务器…设置相关参数系统运行许可证服务器接口 项目树OPC UA通讯—服务器接口—新增接口…说明接口定义成服务器接口与不定义接口直接访问全局变量的节点属性、格式均不一样定义成接口更标准化什么是服务器接口2PLC作为OPC Client与Server用户通讯要求在 CPU 特性中选择“OPC UA 客户端”(OPC UA Client)——选择“启用 OPC UA 客户端” 选项第一步创建客户端接口项目树“OPC UA 通信 客户端接口”双击“添加新客户端接口”Max40/4选择客户端接口添加读取/写列表选择“源”拖拽变量到列表编译自动生成[Name]_Data/Configuration数据块更改后会自动更新无需手动更改第二步分配连接参数右击客户端接口属性组态设置连接地址可“在线访问查看”第三步编程及测试编写FB块连接-读写-释放…官方块添加5个PLC数据类型UDT变量表用户常量4个调用FB块填写引脚参数依据[Name]_Data/Configuration数据块填写PLCServer亲测有效KepServer测试失败两者节点类型不同n4;i3/n2;s通道1.标记1有关S7-1500 OPC UA 客户端三、Web服务器WWW功能可通过 Internet 或公司内网监视 CPU进行远程评估和诊断。使用 Web 浏览器访问自由设计的Web 应用程序。要求CPU特性—勾选“启用通过接口IP访问Web服务”—“Web服务器”设置相关参数用户管理、监视表等…。过程PC端、手机终端分别通过有线、无线的方式连接PLC访问到WEB界面标准界面、自定义界面。结构如下图所示1PC端访问PC 和 PLC 分别连接到交换机上无交换机可直连PC端浏览器键入IP进入标准界面注意PC的有线网卡设置为PLC的IP段确保联通性即可。2移动端访问移动端无网络接口只能通过无线形式SoPLC 须通过无线设备路由器映射成无线Wifi信号供移动端连接注意若手机端连接路由器Wifi信号无需固定无线IP路由器设置成DHCP为无线终端自动分配须关闭流量确保只有一个WIFI信号连接3自定义Web应用程序需用WWW指令4总结1.路由器设置方法注意不能用WAN口局域网IP段设置成PLC相同段DHCP功能开启2.虚拟机无线连接PLC虚拟网络编辑器-设置到无线网卡模式网络形式为物理桥接3.无线设备尽可能选用工业产品这里测试用家用/企业华为路由器Web Server 说明Web 常见问题PC端访问手机端访问