幾十年來,可編程邏輯控制器(PLC)的特征定義都是圍繞在可靠、快速地解決工業自動化邏輯問題上。這些基本原則在今天仍然有效,但這并不意味著最終用戶只應關注這些功能。現在,PLC已獲得更多高級功能,其中一些功能有助于解決最終用戶的應用問題。
傳統的PLC受到來自有線輸入/輸出(I/O)點和聯網智能設備所提供可用信息的限制。但在互聯網上,存在大量信息可資利用,最終用戶可以通過網頁瀏覽器和應用程序來獲取、利用這些信息。許多網站都提供用編程來傳遞信息的方法,這就是PLC如何獲取數據并將其付諸實踐的方式。
為什么需要連接網絡?
但是,為什么PLC需要連接到網絡呢?原因之一是許多常見的應用程序需要了解當前環境的天氣情況。例如,灌溉或冷卻塔自動化系統,可以獲取實時和預測的溫度和局部降水值,以調整運營活動。
另一個例子是太陽能設備,該設備從某些網站獲取方位角和高度信息,并使用其來優化太陽能電池板的對準方式。從網站獲得的信息,可能不直接參與控制活動,但對運營商可能有用。電線生產商可以每日從證券交易所網站獲取銅商品的價格,以幫助在人機界面(HMI)上顯示近乎實時的利潤率。
為了以這種方式連接到互聯網,PLC需要使用工具來訪問超文本傳輸協議(HTTP)和處理JavaScript對象符號(JSON)。具有這些指令的PLC,可以使用適當的應用程序接口(API)啟動與網站的通信,從網站接收數據,并將數據解析為所需的信息。
使用瀏覽器瀏覽互聯網時需要哪些操作?首先,在瀏覽器地址欄中,鍵入到達特定網站所需的字符串,我們稱之為統一資源定位符(URL),它指向特定的域和網頁。在瀏覽器中鍵入URL會生成對網頁服務器的HTTP請求,并且HTTP響應用于填充瀏覽器的顯示。HTTP請求和響應,是易于理解的輕量級文本文件,易于軟件創建和解析。這就是人類使用瀏覽器與互聯網網站進行交互的方式,但是PLC的過程略有不同。
了解應用程序接口
許多網站都提供API定義,PLC可以使用它們來交換某些數據。PLC社區更感興趣的是提供可能對自動化機器、設備和系統有用的那種硬數據的站點。當然,PLC必須具有出站訪問互聯網的權限,才能與提供API的站點連接。信息可能包括當前和未來的天氣狀況、太陽的位置、商品或能源的當前價格或許多其它可能相關的數據。
互聯網搜索將指出哪些網站提供訪問所需信息的API。一些API允許免費訪問,而另一些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指令,為應用程序添加新的功能。