几十年来,可编程逻辑控制器(PLC)的特征定义都是围绕在可靠、快速地解决工业自动化逻辑问题上。这些基本原则在今天仍然有效,但这并不意味着最终用户只应关注这些功能。现在,PLC已获得更多高级功能,其中一些功能有助于解决最终用户的应用问题。
传统的PLC受到来自有线输入/输出(I/O)点和联网智能设备所提供可用信息的限制。但在互联网上,存在大量信息可资利用,最终用户可以通过网页浏览器和应用程序来获取、利用这些信息。许多网站都提供用编程来传递信息的方法,这就是PLC如何获取数据并将其付诸实践的方式。
为什么需要连接网络?
但是控制工程网版权所有,为什么PLC需要连接到网络呢?原因之一是许多常见的应用程序需要了解当前环境的天气情况。例如,灌溉或冷却塔自动化系统,可以获取实时和预测的温度和局部降水值,以调整运营活动。
另一个例子是太阳能设备CONTROL ENGINEERING China版权所有,该设备从某些网站获取方位角和高度信息,并使用其来优化太阳能电池板的对准方式。从网站获得的信息,可能不直接参与控制活动,但对运营商可能有用。电线生产商可以每日从证券交易所网站获取铜商品的价格,以帮助在人机界面(HMI)上显示近乎实时的利润率。
为了以这种方式连接到互联网,PLC需要使用工具来访问超文本传输协议(HTTP)和处理JavaScript对象符号(JSON)。具有这些指令的PLC,可以使用适当的应用程序接口(API)启动与网站的通信,从网站接收数据,并将数据解析为所需的信息。
使用浏览器浏览互联网时需要哪些操作?首先,在浏览器地址栏中,键入到达特定网站所需的字符串,我们称之为统一资源定位符(URL),它指向特定的域和网页。在浏览器中键入URL会生成对网页服务器的HTTP请求,并且HTTP响应用于填充浏览器的显示。HTTP请求和响应,是易于理解的轻量级文本文件,易于软件创建和解析。这就是人类使用浏览器与互联网网站进行交互的方式,但是PLC的过程略有不同。
了解应用程序接口
许多网站都提供API定义,PLC可以使用它们来交换某些数据。PLC社区更感兴趣的是提供可能对自动化机器、设备和系统有用的那种硬数据的站点。当然,PLC必须具有出站访问互联网的权限,才能与提供API的站点连接。信息可能包括当前和未来的天气状况、太阳的位置、商品或能源的当前价格或许多其它可能相关的数据。
互联网搜索将指出哪些网站提供访问所需信息的API。一些API允许免费访问CONTROL ENGINEERING China版权所有,而另一些API则限制用户每天访问的次数。提供更具价值信息的提供商,则可能会收取一定的订阅费。
当PLC或其它软件,按照定义的格式发起HTTP请求时,网站将返回JSON格式的响应。用户可以解析此响应以获得特定数据。
在尝试将PLC与网站人机界面连接或任何形式的低层级以太网通信时,应为程序员配备一些有用的工具。一种是开源的Wireshark,它将公开HTTP请求和响应数据包。另一个是文本编辑器,可以方便地查看JSON响应。任何文本编辑器都可以,但是有许多免费的编辑器,能够提供增强显示的JSON格式内容以简化工作。
使用JSON文件开展工作
JSON响应以紧凑的ASCII字符串形式接收,对于工作人员而言,以原始格式阅读并不容易(图1)。使用兼容的文本编辑器查看JSON字符串,可以展示JSON文件中信息对象的分层和嵌套性质(图2)。
图1 :典型的JSON 数据有效负载, 需要进行分析才能提取所需的数据。本文图片来源:Automation Direct
图2:此高亮显示的JSON示例,展示了信息的分层性质,其中包含可供软件解析的人类可读数据。
感兴趣的信息通常向下嵌套几层,必须系统地解析和提取。在图2的示例中,从第0层开始,然后进入第1层的“温度”对象,接着进入第2层的“英制单位”对象,最后获得华氏温度的“值”为44。
每个PLC都不同,但是任何PLC都需要支持一些通用的基本功能,例如HTTP请求和JSON响应解析。
第一步,PLC设备必须在工厂网络上配置以太网端口,并带有适用的默认网关、域名系统(DNS)、IP地址和子网掩码。同样,用于此目的的以太网端口必须能够通过现场网络连接到因特网。
第二步,PLC设备必须可配置为充当传输控制协议(TCP)的客户端。这相当于在PLC中打开逻辑通道,因此HTTP指令可以通过以太网端口,发起网站API请求。
第三步,PLC编程必须具有用于定义目标API服务器名称(URL)和其它详细信息的HTTP指令(图3)。此配置包括请求字符串以及响应信息应放置的位置。
图3:HTTP指令使PLC可以发起对互联网网站API的请求,从而获取所需的数据。
最后,PLC编程软件必须具有可识别JSON的指令,该指令可以解析对象的各个分层,以获得所需的数据(图4)。由于JSON中的嵌套层控制工程网版权所有,此解析操作可能需要执行数个步骤。
图4:需要一个解析指令以便PLC可以挖掘JSON数据有效负载中的对象层,并提取所需的信息。
通过联网检查温度
一种常见的应用程序,可以提供良好的概念验证,它使用PLC与天气网站联系,以确定当前或预测的本地温度。在此示例中,已通过具有必要指令(HTTP指令和JSON解析)的设计软件对PLC进行配置。
例如,AccuWeather网站上,在“API参考”标签下,提供了具有许多详细信息的API。用户应始终向目标网站咨询有关注册、创建应用程序、费用和其它技术细节或限制的信息。创建应用程序时,将提供用户专用的API密钥,这对于启动HTTP通信是必需的。该用户API密钥有点像授权通信的密码。
该API提供了许多获取数据的方法。例如,如果PLC在大城市中,则可以在此基础上实现一步获得温度。为了获得更高的准确性,用户可以选择纬度/经度,甚至邮递区号来查找位置键,该位置键用于调用其它API方法。对于此示例,我们将使用后一种方法。
搜索参考位置部分,将显示“邮政编码搜索”的“获取”方法,显示所有有效参数并允许用户构建有效的HTTP请求字符串。该工具还可用于执行请求并查看响应消息和有效载荷(JSON数据)的外观。遵循API规则,“键”值包含所需的位置键。
接下来,搜索参考的“当前条件”部分,将显示“当前条件”的“获取”方法。如果使用用户的API密钥和新的位置密钥来执行此方法,则将获得另一个包含温度的响应。在开发过程中,可以通过这种方式使用AccuWeather网站来搜索通讯选项。在实际运行时,将PLC配置为可以发出带有正确请求字符串的HTTP命令。收到每个响应时,PLC需要将数据放入字符串变量中,然后发出连续的JSON解析指令,以向下挖掘所需的数据。
保证网络的安全性
使PLC能够与互联网连接控制工程网版权所有,这开启了无限可能性,但也带来了一些问题。用户必须确保,在工业设备连接到互联网的任何时间点上,都能保证网络的安全性。同样,最终应用程序必须足够强大,以承受任何形式的互联网中断。
对于本文中的示例应用程序,安装本地温度变送器可能会更好地为最终用户服务。但是控制工程网版权所有,互联网提供了大量有用的信息,而这些信息无法在本地进行检测。稍加思考和一些额外的编程工作,用户就可以利用基于PLC的HTTP和JSON指令,为应用程序添加新的功能。(作者:Bill Dehner)