使用WebSocket,可接收变量、报警和系统错误的通知。要接收通知,需要建立会话并订阅它们。
可以使用WebSocket(版本13)协议,最大WebSocket会话数为5。
如果使用安全,则发送授权命令。如果未完成授权或安全级别不够,您将不会收到来自人机界面的通知。
如果客户端没有通讯,人机界面将每隔10秒在WebSocket上发送一次Ping。如果5次Ping没有响应(即客户端没有通讯,包括Pong 60秒),会话将从人机界面关闭。
当画面编辑软件中所创建变量的值和/或质量发生变化时,您可以收到通知。
要接收通知,需要订阅要监视的变量。如果订阅的变量是外部变量,则人机界面开始从外接设备读取值。
不支持用户数据类型(结构、数组)的变量。
当报警或系统错误在人机界面中发生/确认/恢复时,您可以接收通知。要接收通知,您需要订阅。
下面是命令:
建立WebSocket会话。
| 项目 | 值 | ||||||||||
| 方法 | GET | ||||||||||
| URL | <Base URL>/ws Base URL | ||||||||||
| 参数 | N/A | ||||||||||
| 标题 |
|
||||||||||
| 正文 | N/A | ||||||||||
| 示例 |
GET http://192.168.1.100:8000/api/v1/ws HTTP/1.1 Host: localhost:8082 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Version: 13 Sec-WebSocket-Key: k3CyFjeNOBNzFZx4blx9kg== Origin: ws://localhost:8082 |
| 项目 | 值 | ||||||||
| 状态代码 |
成功建立会话,人机界面将发送101(切换协议)。
|
||||||||
| 标题 |
|
||||||||
| 正文 | N/A | ||||||||
| 示例 |
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc= |
如果使用用户管理,请先发送授权命令。
| 项目 | 值 | ||||||||
| 发件人 | 客户端 | ||||||||
| 数据 |
|
||||||||
| 示例 |
{ "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IlVzZXIxIiwibGV2ZWwiOjF9.eqVwAuo0KMqdggICllJVPs3IE67oHdUpo04w68md7kI " } |
添加要订阅的变量。如果监控变量的数量超过最大值,则会被缩减。对于添加的变量,作为初始值将立即发送通知。
| 项目 | 值 | ||||||||||||
| 发件人 | 客户端 | ||||||||||||
| 数据 |
|
||||||||||||
| 示例 |
{ "command": "add_monitor", "variable": ["Variable1","Variable2"] } |
移除变量以取消订阅。
| 项目 | 值 | ||||||||||||
| 发件人 | 客户端 | ||||||||||||
| 数据 |
|
||||||||||||
| 示例 |
{ "command": "remove_monitor", "variable": ["Variable1","Variable2"] } |
替换所有订阅的变量。如果监控变量的数量超过最大值,则会被缩减。
对于添加的变量,作为初始值将立即发送通知。
| 项目 | 值 | ||||||||||||
| 发件人 | 客户端 | ||||||||||||
| 数据 |
|
||||||||||||
| 示例 |
{ "command": "replace_monitor", "variable": ["Variable1","Variable2"] } |
移除所有订阅的变量。
| 项目 | 值 | ||||||||
| 发件人 | 客户端 | ||||||||
| 数据 |
|
||||||||
| 示例 |
{ "command": "clear_monitor" } |
订阅报警和系统错误。
| 项目 | 值 | ||||||||||||
| 发件人 | 客户端 | ||||||||||||
| 数据 |
|
||||||||||||
| 示例 |
{ "command": "subscribe", "alarm": ["alarm","error"] } |
取消订阅报警和系统错误。
| 项目 | 值 | ||||||||||||
| 发件人 | 客户端 | ||||||||||||
| 数据 |
|
||||||||||||
| 示例 |
{ "command": "unsubscribe", "alarm": ["alarm","error"] } |
当订阅变量的值或/和质量发生变化时,从人机界面接收通知。
| 项目 | 值 | ||||||||||||||||||||||||||||
| 发件人 | 服务器(人机界面) | ||||||||||||||||||||||||||||
| 数据 |
变量信息:
|
||||||||||||||||||||||||||||
| 示例 |
{ "updated":”variable”, "data": [ { “name”: “Variable1”, “quality”: “good”, “value”: 100 }, { “name”: “Variable2”, “quality”: “bad” }, { “name”: “Variable3”, “quality”: “unknown” } ] } |
下表列出了画面编辑软件和WebSocket之间支持的数据类型:
| 数据类型 | WebSocket (JSON类型) | WebSocket 值范围 |
| BOOL | 布尔 | true/false |
| BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME | 数字 | 64位浮点值的值范围。 *LWORD、LINT和ULINT的精度在52位以内。 *当REAL或LREAL值为NaN或无穷大时为空。 |
| STRING、WSTRING | 字符串 | UTF-8支持的字符 |
| DATE, TIME_OF_DAY, DATE_AND_TIME | 字符串 | ISO 8601格式 |
LWORD 值以浮点数类型显示在人机界面上。
当人机界面发生/确认/恢复/未确认报警时,接收来自人机界面的通知。
| 项目 | 值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| 发件人 | 服务器(人机界面) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| 数据 |
报警信息:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| 示例 |
{ "updated": “alarm”, "data”:[ { "message": "BOOL_Hi", "parameter": 100, "status": "Active", "time": "2017-07-07T16:20:01", "type": "Hi", "variable": "BOOL_Internal" “groupname”: “AlarmGroup1”, “severity”: 1, “value”: true } ] } |
当人机界面中发生/确认/恢复系统错误时,接收来自人机界面的通知。
| 项目 | 值 | ||||||||||||||||||||||||||||||||
| 发件人 | 服务器(人机界面) | ||||||||||||||||||||||||||||||||
| 数据 |
系统错误信息:
|
||||||||||||||||||||||||||||||||
| 示例 |
{ "updated”:”error", "data": [ { "equipment": "MODBUS_Equipment", "message": "MODBUS_Equipment:TCP connection open error (IP Address:127.0.0.2)", "status": "Active", "time": “2017-07-07T16:42:00" } ] } |