你的 PLC 会说 JSON 吗?
大多数人都使用网络浏览器来浏览互联网。他们熟悉在浏览器地址栏中输入网站名称,有时会以“http://”(或“https://”表示安全站点)开头。网站地址正式成为统一资源定位器 (URL),它指向特定的域和网页。HTTP 协议定义了应用程序如何通过万维网 (www) 进行通信。具体来说,HTTP 描述了如何格式化、传输和处理消息。
当用户在浏览器中键入 URL 时,会向目标 Web 服务器生成 HTTP 请求,并使用相应的 HTTP 响应来填充浏览器显示。HTTP 请求和响应都是轻量级的文本文件,易于软件创建和解析。
PLC 可以以类似的方式与互联网交互,但有一些关键区别。
API 在行动
虽然许多网站提供各种 API 定义,但 PLC 社区可能对那些提供对自动化机器、设备和系统有用的硬数据的网站最感兴趣。要获取此类信息,PLC 需要出站 Internet 访问权限,以便连接到所需的网站。
通过搜索“网站 API”和类似术语在互联网上进行的研究将识别各种网站及其提供的 API。一些 API 提供免费访问,或者每天至少提供有限数量的免费连接。其他网站,通常具有更有价值的信息,可能需要注册并收取使用费或订阅费。
程序员在开始第一个将 PLC 与 Internet 网站连接的项目时应该有一些可用的软件工具,包括开源 Wireshark 数据包监控软件和 JSON 感知文本编辑器。
解包 JSON
对网站 API 的 HTTP 请求将返回 JSON 格式的响应,这在原始格式中不易被人类阅读(图 1)。但是,JSON 具有定义明确的层和嵌套系统,并且这些信息对象可以使用兼容的文本编辑器轻松查看(图 2)。
图 1:典型的 JSON 数据负载需要进行一些解析才能提取所需的数据。
用户想要的信息通常嵌套在 JSON 文件的深处,必须逐步解析才能检索到。在图 2 示例中,44 华氏度的温度位于第 3 层,位于第 2 层“Imperial”和第 1 层“Temperature”之下。
AutomationDirect BRX PLC 包含四个关键功能,使与互联网网站的通信成为可能:
在工厂网络上配置的以太网端口,具有允许 PLC 连接到互联网的适当权限
能够配置为传输控制协议 (TCP) 客户端,因此 PLC 可以打开逻辑通道来发起 HTTP 指令
HTTP 命令指令,因此可以将请求字符串发送到目标 URL 的 API
一条 JSON 解析指令,以便处理响应数据负载
PLC 询问“明天的温度是多少?”
使用 PLC 获取 Internet 数据的最常见实例可能是当 PLC 联系天气网站以确定第二天的预测当地温度时。当前的局部温度也可以通过这种方式或通过连接到 PLC 的室外温度传感器获得。
例如,AccuWeather 网站在“API 参考”选项卡下提供了一个包含许多详细信息的 API。用户应始终咨询目标网站有关注册、创建应用程序、成本和其他技术细节或限制的信息。
在这种情况下,需要一个私有用户 API 密钥来启动 HTTP 通信。此用户 API 密钥授权通信,类似于密码。
该 API 提供了许多获取数据的方法。例如,如果 PLC 位于大城市,则可以在此基础上一部获得温度。为了获得更好的准确性,用户可以选择纬度/经度甚至邮政编码来查找位置键,改键用于调用其他 API 方法。
本示例使用后一种方法。首先,向目标网站发出 HTTPCMD 指令,以“获取”“邮政编码搜索”的结果(图 3)。
按照 API 规则,JSON 响应将是一个包含“键”值的数据负载,在这种情况下,它是所需位置的查找索引。JSONPARSE 指令允许 PLC 深入研究有效负载并提取必要的密钥(图 4)。
一旦知道密钥,就可以使用它来配置另一组 HTTPCMD 和 JSONPARSE 指令,然后根据温度值的需要多次重复。
在这种情况下,为了获取第二天的温度预报,用户将配置 HTTPCMD 以“获取”“forecasts/1day”,然后使用 JSONPARSE 以度数为单位提取温度。请注意,JSON 响应是作为字符串变量处理的,可能需要多个连续的 JSONPARSE 指令来向下钻取层以找到所需的数据。
虽然初始编程需要几个步骤,但后续请求可以自动生成。
保持控制
PLC 向互联网查询有用数据的能力非常强大,但用户必须为任何能够连接互联网的工业设备或网络提供谨慎的安全性。此外,PLC 程序必须经过稳健安排,以便能够承受任何类型的互联网中断。
互联网提供了大量信息,其中大部分信息无法通过本地传感器和仪器轻松获得。通过正确的 PLC、一些规划和一些编程,用户可以通过让他们的 PLC 直接从互联网网站收集信息来增强他们的应用程序。