SIEMENS PLC Web API 学习记录

文章介绍了西门子S7-1200和S7-1500PLC如何通过WebAPI进行基于HTTP的JSON-RPC通讯,支持读写PLC数据和远程监控。WebAPI基于PLC的WebServer,遵循JSON-RPC2.0规范,允许通过编程语言与CPU交互。测试表明,不同型号的PLC在响应速度和支持的API上有差异。启用WebAPI需配置权限,API包括变量浏览、读写、登录/登出等操作。

SIEMENS PLC Web API 学习记录

为顺应时代发展,西门子为 S7-200SMART/1200/1500 PLC 添加IT通讯所需要的 Web API。(由于S7-200 SMART 新固件必须配合新的硬件才能使用,手头没有),添加微信可获取文中测试源代码,部署自己电脑或PLC中测试相关API

序号 PLC类型 固件开始支持版本 当前API 版本
1 S7-200 SMART V2.7 未知
2 S7-1200 V4.5 V1.46
3 S7-1500 V2.8 V2.00

Web Api 概述

Web Api 是基于PLC Web Server 实现的,Web Server 是西门子PLC很早就开始支持的特性,提供基础数据查看,诊断、故障更新、变量监测、文件浏览下载等功能,并提供一套 AWP 语法实现自定义网页数据读写监控;从新版本开始支持 Web Api 功能,所谓Web Api就是通讯定义的接口和方法,直接获取PLC运行数据,而不需要登陆网页。具体可以干嘛?官方文档如下:

CPU 提供基于 Web 的 API (​Web API​) 作为读取和写入 CPU 数据的界面。Web API ​可用于:
​- 使用最新的先进技术实现 Web 应用程序
​- 通过脚本和编程语言与 CPU 的 Web 服务器通信
​- 创建可同时连接到多个 CPU 的 Web 应用程序,例如,创建可显示多个 CPU 状态的仪表板

具体包括读写PLC数据,远程监控PLC运行状态等等;

S7-1200/1500 所实现的 Web API 是一个标准的 JSON-RPC 规范的 API 特性,遵循 JSON-RPC 2.0 规范。API 基于 HTTP URL POST方法,即发送 POST 请求到 https://[ip]/api/jsonrpc,CPU 根据权限及请求方法回应相关数据或错误指示。Web API​ 支持 JSON-RPC 2.0 中定义的批量操作。

JSON-RPC API格式

{
   
   
    "id": $(in_request),
    "jsonrpc": "2.0",
    "method": $(method), // 方法名称
    "params": $(params) // 方法对应的参数,如果不需要,可忽略
}
// 处理成功返回
{
   
   
    "id": $id_in_request,
    "jsonrpc": "2.0",
    "result":"$(data)"
}

// 处理失败返回
{
   
   
   "id": $id_in_request,
    "jsonrpc": "2.0",
    "error":{
   
   
    	"code": $(error),
    	"message": $(error_message)
    }
}

已经测试的支持的客户端包括 Chrome,Firefox,Edge,Safari 等主流浏览器,Python,GNU Wget,cURL等工具及库。

Web Api 测试

测试 S7-1500 为 CPU 1511-1 PN , 固件版本 2.9.4,最新 V3.0 并没有更新1511。S7-1200 为 CPU 1215C AC/DC/Rl,固件版本 V4.5(V4.6和V4.5相同)。测试工具包括Edge 100+版本,PostMan,JavaScript等

JavaScript 写的客户端
通过实际测试,发现S7-1200/1500 的 Web Api 因为 CPU 计算能力及API版本不同而差异较大,S7-1200 Web Api 响应速度与 S7-1500 相比明显慢,且支持的 API 有限,差异后面会列出;

启用 Web Api 功能

控制器启用 Web Api 的Web Server 方法参见参考资料所附的官方资料,此处不再展开。

值得注意的是,Web Api 的读写权限是与 Web Server 里面配置的权限相关,默认用户名为 EveryBody,默认用户的权限需要配置;管理员权限可以读写PLC数据,读取PLC启停状态,控制PLC启停状态,获取PLC时间,下载文件等等;Api.Version / Api.Browse / Api.Ping 等几个指令是不需要传递权限的,随意调用。

Api.Version/Api.Browse

// api Version
{
   
   
    "id": 5,
    "jsonrpc": "2.0",
    "method": "Api.Version"
}
// ---响应----
{
   
   
    "jsonrpc": "2.0",
    "id": 5,
    "result": 1.46
}

// api browse
{
   
   
    "id": 6,
    "jsonrpc": "2.0",
    "method": "Api.Browse"
}

//响应
{
   
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z@=

你的鼓励,换取更多的回报与惊喜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值