『7x24小时有问必答』
西门子 S7-1500 PLC 的 HTTP 通信主要分为两种应用场景:
作为 HTTP 客户端 (Client):PLC 主动向外部的 Web 服务器、API 接口或云平台发送请求(GET/POST),获取数据或上传数据。这是最常用的数据交互方式。作为 HTTP 服务器 (Server):利用 PLC 内置的 Web 服务器功能,允许浏览器或其他客户端通过 HTTP/HTTPS 访问 PLC 的状态页面、诊断信息,甚至通过自定义脚本读写数据。
以下是针对这两种模式的详细配置与使用指南。

---

一、S7-1500 作为 HTTP 客户端 (HTTP_CLIENT)

此模式用于 S7-1500 主动访问互联网或局域网内的 Web 服务(如 REST API、MQTT Broker 的 HTTP 接口、ERP 系统等)。

1. 硬件与软件要求

CPU 固件:建议 V2.6 及以上(早期版本功能受限),推荐 V2.9+ 以获得更好的 HTTPS 支持。TIA Portal 版本:V15.1 及以上(指令块  HTTP_CLIENT  在 V15.1 中引入并不断完善)。网络:PLC 需配置 IP 地址,且能路由到目标服务器(若访问外网,需配置网关和 DNS)。

2. 核心指令:HTTP_CLIENT

在 TIA Portal 右侧“指令” -> “通信” -> “开放式用户通信” -> “其他协议”中找到  HTTP_CLIENT  指令块。

3. 关键参数配置

将指令块拖入 OB1 或 FB/FC 中,主要参数如下:
参数名
数据类型
说明
REQ
Bool
上升沿触发通信请求。通常使用脉冲信号(如每次扫描周期的第一个周期,或定时器触发)。
URL
String
目标服务器的完整地址。例如:http://192.168.1.100:8080/api/data  或  https://api.example.com/login
METHOD
String
HTTP 方法。常用值:GET  (读取),  POST  (提交),  PUT,  DELETE
HEADERS
String (可选)
HTTP 请求头。例如:Content-Type: application/json  或  Authorization: Bearer token。多行需用 CR/LF 分隔。
BODY
Variant/String
请求体数据。用于 POST/PUT 请求,通常传递 JSON 字符串或 XML。
RESPONSE
Variant
输出。接收服务器返回的完整响应(包含状态行、头和体)。通常需要配合  GetBody  等库函数解析。
STATUS
Word
指令执行状态代码(参考 Siemens 帮助文档,0x0000 表示空闲,0x0001 表示忙碌,其他为错误码)。
ERROR
Bool
出错标志。

4. 典型编程步骤

构建 URL:在静态变量或 DB 块中定义 String 类型的 URL。设置请求头 (Headers):如果发送 JSON 数据,必须设置  Content-Type: application/json。如果需要认证,添加  Authorization  头。
示例:"Content-Type: application/json\r\nAuthorization: Basic dXNlcjpwYXNz"
构建报文体 (Body):如果是 POST 请求,将数据格式化为 JSON 字符串存入  BODY  引脚。
示例:"{\"temperature\": 25.5, \"status\": \"OK\"}"
触发执行:给  REQ  一个上升沿。注意不要每个扫描周期都触发,通常配合  BUSY  引脚或使用定时器间隔触发。处理响应:
检查  STATUS  和  ERROR
从  RESPONSE  中提取 HTTP 状态码(如 200 OK, 404 Not Found)。
解析返回的 JSON/XML 数据(S7-1500 标准库中没有直接的 JSON 解析器,通常需要编写 SCL 代码进行字符串处理,或使用第三方库/UDT 映射)。

5. 常见问题与调试

DNS 解析失败:确保在 CPU 属性 -> PROFINET 接口 -> IP 参数中配置了正确的  DNS 服务器HTTPS 证书问题:访问 HTTPS 站点时,如果服务器证书不受信任,通信可能失败。在较新的固件中,可以在指令属性中配置是否验证证书,或者将根证书导入 PLC。数据长度限制:HTTP_CLIENT  对请求和响应的大小有限制(取决于 CPU 型号和固件,通常在几 KB 到几十 KB 之间)。大数据传输需分片。防火墙:确保 PLC 所在网络的防火墙允许出站流量(端口 80 或 443)。

---

二、S7-1500 作为 HTTP 服务器 (Web Server)

S7-1500 内置了一个 Web 服务器,无需编写代码即可启用,主要用于诊断和基础数据访问。

1. 启用 Web 服务器

在 TIA Portal 项目树中,双击  设备组态 (Device configuration)
选中 CPU,打开  属性 (Properties)  选项卡。
找到  Web 服务器 (Web server)  ->  常规 (General)
勾选  启用 Web 服务器 (Enable Web server)
安全设置:
可以选择仅允许  HTTPS(推荐,更安全)。
配置  用户管理 (User management):创建用户(如 Administrator, User),分配权限(如 HMI、诊断、读写变量等)。如果不配置用户,默认可能无法登录或权限受限。

2. 访问方式

浏览器访问:在 PC 或手机浏览器输入  http://<plc_ip>  或  https://<plc_ip>功能页面:启动列表 (Start list):查看 PLC 状态。诊断 (Diagnostics):查看缓冲区、模块信息。变量表 (Variable tables):如果权限允许,可以在线监控和修改已定义的 PLC 变量(需在变量表中勾选“HMI 可访问”或在 Web 服务器设置中暴露特定区域)。文件浏览器:访问 PLC 存储卡中的文件。

3. 高级应用:通过 HTTP 读写数据 (RESTful API 风格)

虽然内置 Web 服务器主要用于诊断,但结合  Openness  或  用户自定义网页 (User-defined Web pages)  (部分旧型号或通过特定方式),可以实现更灵活的数据交互。
注意:S7-1500 原生不支持像 Node.js 那样直接运行自定义后端脚本来处理复杂的 HTTP POST 逻辑。替代方案:如果需要 S7-1500 作为服务器接收复杂 HTTP 请求(如接收 MES 系统的指令),通常建议使用  TCP 开放通信 (TCON/TSEND/TRCV)  自行解析 HTTP 报文,或者使用  OPC UA(S7-1500 原生支持 OPC UA 服务器,更适合工业数据交互)。

---

三、场景对比与建议

特性
HTTP_CLIENT (PLC 做客户端)
Web Server (PLC 做服务器)
TCP 开放通信 (自行解析 HTTP)
OPC UA (推荐替代)
主要用途
上报数据到云/MES,调用外部 API
远程诊断,简单监控
高度定制的 HTTP 服务
标准化数据交换,跨平台
配置难度
中等 (需处理 JSON/字符串)
低 (勾选即可)
高 (需手动解析 HTTP 协议)
中等 (需配置信息模型)
数据方向
PLC -> 外部
外部 -> PLC (主要是读)
双向
双向
实时性
取决于轮询周期
较低
高 (订阅机制)
推荐度
(上云/对接 API 必选)
(运维诊断必选)
(除非特殊需求)
(系统间集成首选)

四、实战案例:S7-1500 发送 JSON 数据到 Web 服务器

假设要将温度数据发送到本地测试服务器  http://192.168.0.50:3000/upload
定义数据结构:创建一个 DB 块,包含温度值  Temp_Real  (Real)。编写 SCL 代码构建 JSON (在调用  HTTP_CLIENT  之前):
// 假设 JsonBody 是 String 类型变量

JsonBody := '{"device": "PLC_01", "temperature": ' + RealToString(Temp_Real) + ', "timestamp": "' + GetTimeString() + '"}';

(注:实际工程中需要完善的字符串处理函数来处理引号和特殊字符)
调用 HTTP_CLIENT:REQ: M10.0 (上升沿)URL:  'http://192.168.0.50:3000/upload'METHOD:  'POST'HEADERS:  'Content-Type: application/json'BODY: JsonBody监控状态:

观察  STATUS  引脚,若返回  160000  (IDLE) 且无 Error,且服务器收到数据,则成功。若  STATUS  显示错误码,查阅手册排查(如 0x000B 表示 DNS 错误,0x000E 表示连接超时)。

总结

对外交互:首选  HTTP_CLIENT  指令,适合现代化的 REST API 对接。对内诊断:开启  内置 Web 服务器,方便手机/PC 随时查看状态。复杂集成:如果是与 SCADA、MES 或其他 PLC 进行高频、稳定的数据交换,OPC UA  往往比 HTTP 更稳定且易于维护。
</plc_ip></plc_ip>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码