当前位置: 首页 > article >正文

WinCC学习系列-高阶应用(WinCC REST通信)

WinCC作为一个经典SCADA系统,它是OT与IT数据无缝集成桥梁,自WinCC7.5版本开始,可以直接提供Rest服务用于其它系统数据访问和操作。

WinCC REST 服务允许外部应用程序访问 WinCC 数据。
外部应用程序可以通过 REST 接口读取和写入 WinCC 组态数据和变量值。
支持以下操作:
– 查询数据
– 编辑数据
要进行访问,可使用常规的 HTTP 方法和 JSON 资源显示格式。

1.环境搭建

使用REST服务需要安装WinCC可选组件ConnectivityPack,如果未安装则需要进行安装。

2.系统设置

打开系统服务,也就是运行services.msc,找到SIMATIC WinCC CCRestService服务,并启动服务。

3.WinCC设置

(1)项目REST开启设置

新建或打开一个已有的WinCC项目。点击左侧计算机,右侧找到与本机名称相同的计算机(如果存在多个的话),右键选择属性。点击启动选项卡,将最后一项“REST服务”打勾。

如果证书还未配置,点击“端口证书”。选择一个证书,也可以在IIS自己创建证书,本示例默认选择系统提供的第一个证书。

(2)添加REST权限

在WinCC主界面,双击左侧项目中用户管理器。点击左上角用户管理器,在中间一栏最底端点击权限等级。在权限等级中新增两项,分别为Rest读写权限,ID与名称可以任意命名,只要后面记住使用即可。

(3)添加用户

在左侧用户管理器中右键单击Administrator-Group,添加新用户,这个用户就是后期用来以Rest访问WinCC的授权用户,本示例中新建admin用户,在右侧设置一个密码,在权限列表中勾选刚才新添加的权限,其它权限按实际需要进行选择。

(4)变量配置

通过REST服务暴露的变量,需要进行单独设置,本案例使用WinCC提供内部变量,其他类型的变量操作相同。找到需要的变量,在右侧属性的最下端找到REST API,将读写权限设置为刚才新建的读写权限。

(5)运行WinCC

4.ApiPost或者Postman测试

(1)新建Get请求,在Api工具中输入地址https://{Host}:{Port}/WinCCRestService/tagManagement/Value/,HOST和PORT就是在第3部分中描述设置的地址。

(2)Api工具中认证中选择Basic Auth,填入在WinCC中新建的用户和密码(本案例admin用户)。

(3)点击发送请求,就会获取到WinCC中内部变量Value的实时值,读取成功,状态码为200。

谨记:需要启动WinCC项目。

图中Value是WinCC的一个内部变量名称

(4)使用Post方法可以,对变量进行写入数据,Api工具操作类似,只是把Get方法改为Put,在Body中使用Json格式设置写入的数据值{"value":80},通过WinCC Tag Simulator可以监控到写入的值,写入成功,状态码为200。

5.如果读写或者写入失败,根据Api工具返回的代码,查找原因后进行调整。

若读取失败,也可能存在以下原因。

状态码 401 Unauthorized:未授权。可能是前面Auth和SSL设置的地方出现问题。

状态码 200 OK,但读取的内容显示error : Forbidden。可能是WinCC中变量的REST API属性设置有问题。

请求发送失败:没有状态码,显示发送失败或者主机错误。可能是WinCC的REST设置问题,检查主机名是否对应,检查证书是否选择正确。

6.WinCC REST服务支持的数据读写方法

支持的读写数据方法,支持变量管理和数据读写,也提供对归档变量的管理和数据读写,非常强大。

(1)变量管理方法

基本 URL
https://<Host>:<Port>/WinCCRestService/tagManagement/

提供方法
• Connection/<ConnectionName>
读取一个连接的组态数据 
• Connections
读取所有连接的组态数据 
• Group/<GroupName>
读取一个变量组的组态数据 
• Groups
读取所有变量组的组态数据 
• StructureType/<StructureName>
读取一个结构类型的组态数据 
• StructureTypes
读取所有结构类型的组态数据
• StructureVariable/<StructureTypeName>
读取一个结构类型的实例
• StructureVariables
读取多个结构类型的实例
• Value/<VariableName>
读取一个变量的运行系统值 
将值写入到一个变量
• Values
读取所有变量的运行系统值 
将值写入到多个变量
• variable/<VariableName>
读取一个变量的组态数据
• variables
读取所有变量的组态数据 

(2)归档系统方法

基本 URL
https://<Host>:<Port>/WinCCRestService/tagLogging/
提供方法
• Archives
读取所有过程值归档的组态数据
• Archive/
– <ArchiveName>
读取单个过程值归档的组态数据
– <ArchiveName>/Variable/<VariableName>
读取单个过程值归档变量的组态数据
– <ArchiveName>/Variables
读取过程值归档所有变量的组态数据
– <ArchiveName>/Value/<VariableName>
读取过程值归档变量的运行系统值
– <ArchiveName>/Values
读取单个过程值归档的多个变量的运行系统值
从不同过程值归档中读取多个变量的运行系统值
• Timer/<TimerName>
读取归档系统单个时间的组态数据
• Timers
读取归档系统所有时间的组态数据
• Variable/<VariableName>
读取归档系统变量的组态数据
• Variables
读取所有归档系统变量的组态数据

http://www.lryc.cn/news/2401720.html

相关文章:

  • 八、Python模块、包
  • 使用交叉编译工具提示stubs-32.h:7:11: fatal error: gnu/stubs-soft.h: 没有那个文件或目录的解决办法
  • macOS 连接 Docker 运行 postgres,使用navicat添加并关联数据库
  • 指针的使用——基本数据类型、数组、结构体
  • TK海外抢单源码/指定卡单
  • Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法
  • 【Linux】Linux 环境变量
  • OpenCV在图像上绘制文字示例
  • Java 抗量子算法:构建后量子时代的安全基石
  • Kubernetes 集群到 Jumpserver
  • Android7 Input(十)View 处理Input事件pipeline
  • 图像数据如何表示为概率单纯形
  • (11)Service Mesh架构下Java应用实现零信任安全模型
  • 什么是内网映射?如何将内网ip映射到外网访问?
  • 为什么要选择VR看房?VR看房有什么优点?
  • linux 串口调试命令 stty
  • C++STL-vector的使用
  • 图简记。。
  • pytorch基本运算-范数
  • uefi协议设计目的
  • springcloud openfeign 偶现 Caused by: java.net.UnknownHostException
  • Transformer实战——词嵌入技术详解
  • [pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)
  • Vue3入门指南:从零到精通的快速上手
  • 前端常见错误
  • 吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
  • 关于DDOS
  • 云服务器自带的防御可靠吗
  • Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
  • 设计模式——抽象工厂设计模式(创建型)