[西门子] S7-1200/1500的Http通信

[复制链接]
查看51003 | 回复0 | 2024-5-5 11:12:23 | 显示全部楼层 |阅读模式

概述

随着工业4.0及智能制造的推进,现代工业生产对自动化系统及信息化系统的要求越来越高,不同系统之间的数据交互也越来越普遍。但是自动化和信息化一直以来是两个不同的领域,协议并不通用,长期以来一直以OPC占据主流。以SIEMENS系列PLC来看,控制系统之间数据交互用的比较多的是S7、Modbus、Socket这些常规协议。但是和MES通信大多使用的是KepServer这类网关转成OPC协议,或者如果有上位机的话,则由组态软件作为OPC SERVER。

HTTP通信

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个基于TCP/IP的通信协议,用来传递数据(HTML文件), 图片文件, 查询结果等。通常我们用浏览器上网浏览的信息就是通过HTTP协议从后台返回的数据。

HTTP协议工作于客户端-服务端架构上,我们编写的用来响应请求的后台应用程序通常作为HTTP SERVER,而用来查询等操作的客户端或者浏览器则作为HTTP CLIENT。



LHTTP指令

LHTTP是SIEMENS提供的一个开放式通信指令,用以将S7-1200/1500作为HTTP Client接入到HTTP Server。它支持GET、POST和PUT方法,对于和第三方系统的非实时数据交换非常方便。如前所述,因为很多信息化系统并不支持S7、Modbus这些工控行业的通信协议,但是基本都会支持HTTP通信,这为将控制系统接入到信息化系统提供了另一种选择。

LHTTP指令集包含了LHTTP_Get和LHTTP_PostPut两个主要指令,分别对应Get、Post与Put方法。下面以Get方法为例,简单介绍下LHTTH指令集的使用。首先拖一个LHTTP_Get指令到程序里,并分配好参数。



上图中的“http://192.168.6.89:8080/hello”是服务端提供的一个RESTful风格的API。其中192.168.6.89是服务器的IP地址,8080是HTTP SERVER绑定的端口号。

至于其它引脚参数定义,可以查看帮助文件。



HTTP SERVER

这里我们使用C#搭建了一个简单的HTTP SERVER,它提供了几个简单的API用于测试。



需要注意的是LHTTP指令中填写的端口号要和HTTP SERVER中绑定的一致。



下载程序到PLC(如果没有物理PLC,也可以使用S7-PLCSIM Advanced),运行C#程序,当我们触发PLC侧的HTTP请求时,会看到返回的数据。



应用场景

HTTP适用于和第三方系统的非实时数据交换,对于对接不支持S7、Modbus等工控协议的信息化系统非常方便。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则