幾十年來(lái),可編程邏輯控制器(PLC)的特征定義都是圍繞在可靠、快速地解決工業(yè)自動(dòng)化邏輯問(wèn)題上。這些基本原則在今天仍然有效,但這并不意味著最終用戶只應(yīng)關(guān)注這些功能?,F(xiàn)在,PLC已獲得更多高級(jí)功能,其中一些功能有助于解決最終用戶的應(yīng)用問(wèn)題。
傳統(tǒng)的PLC受到來(lái)自有線輸入/輸出(I/O)點(diǎn)和聯(lián)網(wǎng)智能設(shè)備所提供可用信息的限制。但在互聯(lián)網(wǎng)上,存在大量信息可資利用,最終用戶可以通過(guò)網(wǎng)頁(yè)瀏覽器和應(yīng)用程序來(lái)獲取、利用這些信息。許多網(wǎng)站都提供用編程來(lái)傳遞信息的方法,這就是PLC如何獲取數(shù)據(jù)并將其付諸實(shí)踐的方式?! ?/span>
為什么需要連接網(wǎng)絡(luò)?
但是,為什么PLC需要連接到網(wǎng)絡(luò)呢?原因之一是許多常見的應(yīng)用程序需要了解當(dāng)前環(huán)境的天氣情況。例如,灌溉或冷卻塔自動(dòng)化系統(tǒng),可以獲取實(shí)時(shí)和預(yù)測(cè)的溫度和局部降水值,以調(diào)整運(yùn)營(yíng)活動(dòng)?! ?/span>
另一個(gè)例子是太陽(yáng)能設(shè)備,該設(shè)備從某些網(wǎng)站獲取方位角和高度信息,并使用其來(lái)優(yōu)化太陽(yáng)能電池板的對(duì)準(zhǔn)方式。從網(wǎng)站獲得的信息,可能不直接參與控制活動(dòng),但對(duì)運(yùn)營(yíng)商可能有用。電線生產(chǎn)商可以每日從證券交易所網(wǎng)站獲取銅商品的價(jià)格,以幫助在人機(jī)界面(HMI)上顯示近乎實(shí)時(shí)的利潤(rùn)率。
為了以這種方式連接到互聯(lián)網(wǎng),PLC需要使用工具來(lái)訪問(wèn)超文本傳輸協(xié)議(HTTP)和處理JavaScript對(duì)象符號(hào)(JSON)。具有這些指令的PLC,可以使用適當(dāng)?shù)膽?yīng)用程序接口(API)啟動(dòng)與網(wǎng)站的通信,從網(wǎng)站接收數(shù)據(jù),并將數(shù)據(jù)解析為所需的信息?! ?/span>
使用瀏覽器瀏覽互聯(lián)網(wǎng)時(shí)需要哪些操作?首先,在瀏覽器地址欄中,鍵入到達(dá)特定網(wǎng)站所需的字符串,我們稱之為統(tǒng)一資源定位符(URL),它指向特定的域和網(wǎng)頁(yè)。在瀏覽器中鍵入U(xiǎn)RL會(huì)生成對(duì)網(wǎng)頁(yè)服務(wù)器的HTTP請(qǐng)求,并且HTTP響應(yīng)用于填充瀏覽器的顯示。HTTP請(qǐng)求和響應(yīng),是易于理解的輕量級(jí)文本文件,易于軟件創(chuàng)建和解析。這就是人類使用瀏覽器與互聯(lián)網(wǎng)網(wǎng)站進(jìn)行交互的方式,但是PLC的過(guò)程略有不同?! ?/span>
了解應(yīng)用程序接口
許多網(wǎng)站都提供API定義,PLC可以使用它們來(lái)交換某些數(shù)據(jù)。PLC社區(qū)更感興趣的是提供可能對(duì)自動(dòng)化機(jī)器、設(shè)備和系統(tǒng)有用的那種硬數(shù)據(jù)的站點(diǎn)。當(dāng)然,PLC必須具有出站訪問(wèn)互聯(lián)網(wǎng)的權(quán)限,才能與提供API的站點(diǎn)連接。信息可能包括當(dāng)前和未來(lái)的天氣狀況、太陽(yáng)的位置、商品或能源的當(dāng)前價(jià)格或許多其它可能相關(guān)的數(shù)據(jù)?! ?/span>
互聯(lián)網(wǎng)搜索將指出哪些網(wǎng)站提供訪問(wèn)所需信息的API。一些API允許免費(fèi)訪問(wèn),而另一些API則限制用戶每天訪問(wèn)的次數(shù)。提供更具價(jià)值信息的提供商,則可能會(huì)收取一定的訂閱費(fèi)?! ?/span>
當(dāng)PLC或其它軟件,按照定義的格式發(fā)起HTTP請(qǐng)求時(shí),網(wǎng)站將返回JSON格式的響應(yīng)。用戶可以解析此響應(yīng)以獲得特定數(shù)據(jù)?! ?/span>
在嘗試將PLC與網(wǎng)站人機(jī)界面連接或任何形式的低層級(jí)以太網(wǎng)通信時(shí),應(yīng)為程序員配備一些有用的工具。一種是開源的Wireshark,它將公開HTTP請(qǐng)求和響應(yīng)數(shù)據(jù)包。另一個(gè)是文本編輯器,可以方便地查看JSON響應(yīng)。任何文本編輯器都可以,但是有許多免費(fèi)的編輯器,能夠提供增強(qiáng)顯示的JSON格式內(nèi)容以簡(jiǎn)化工作?! ?/span>
使用JSON文件開展工作
JSON響應(yīng)以緊湊的ASCII字符串形式接收,對(duì)于工作人員而言,以原始格式閱讀并不容易(圖1)。使用兼容的文本編輯器查看JSON字符串,可以展示JSON文件中信息對(duì)象的分層和嵌套性質(zhì)(圖2)。
圖1 :典型的JSON 數(shù)據(jù)有效負(fù)載, 需要進(jìn)行分析才能提取所需的數(shù)據(jù)。本文圖片來(lái)源:Automation Direct
圖2:此高亮顯示的JSON示例,展示了信息的分層性質(zhì),其中包含可供軟件解析的人類可讀數(shù)據(jù)。
感興趣的信息通常向下嵌套幾層,必須系統(tǒng)地解析和提取。在圖2的示例中,從第0層開始,然后進(jìn)入第1層的“溫度”對(duì)象,接著進(jìn)入第2層的“英制單位”對(duì)象,最后獲得華氏溫度的“值”為44。
每個(gè)PLC都不同,但是任何PLC都需要支持一些通用的基本功能,例如HTTP請(qǐng)求和JSON響應(yīng)解析。
第一步,PLC設(shè)備必須在工廠網(wǎng)絡(luò)上配置以太網(wǎng)端口,并帶有適用的默認(rèn)網(wǎng)關(guān)、域名系統(tǒng)(DNS)、IP地址和子網(wǎng)掩碼。同樣,用于此目的的以太網(wǎng)端口必須能夠通過(guò)現(xiàn)場(chǎng)網(wǎng)絡(luò)連接到因特網(wǎng)。
第二步,PLC設(shè)備必須可配置為充當(dāng)傳輸控制協(xié)議(TCP)的客戶端。這相當(dāng)于在PLC中打開邏輯通道,因此HTTP指令可以通過(guò)以太網(wǎng)端口,發(fā)起網(wǎng)站API請(qǐng)求。
第三步,PLC編程必須具有用于定義目標(biāo)API服務(wù)器名稱(URL)和其它詳細(xì)信息的HTTP指令(圖3)。此配置包括請(qǐng)求字符串以及響應(yīng)信息應(yīng)放置的位置。
圖3:HTTP指令使PLC可以發(fā)起對(duì)互聯(lián)網(wǎng)網(wǎng)站API的請(qǐng)求,從而獲取所需的數(shù)據(jù)。
最后,PLC編程軟件必須具有可識(shí)別JSON的指令,該指令可以解析對(duì)象的各個(gè)分層,以獲得所需的數(shù)據(jù)(圖4)。由于JSON中的嵌套層,此解析操作可能需要執(zhí)行數(shù)個(gè)步驟。
圖4:需要一個(gè)解析指令以便PLC可以挖掘JSON數(shù)據(jù)有效負(fù)載中的對(duì)象層,并提取所需的信息。
通過(guò)聯(lián)網(wǎng)檢查溫度
一種常見的應(yīng)用程序,可以提供良好的概念驗(yàn)證,它使用PLC與天氣網(wǎng)站聯(lián)系,以確定當(dāng)前或預(yù)測(cè)的本地溫度。在此示例中,已通過(guò)具有必要指令(HTTP指令和JSON解析)的設(shè)計(jì)軟件對(duì)PLC進(jìn)行配置。
例如,AccuWeather網(wǎng)站上,在“API參考”標(biāo)簽下,提供了具有許多詳細(xì)信息的API。用戶應(yīng)始終向目標(biāo)網(wǎng)站咨詢有關(guān)注冊(cè)、創(chuàng)建應(yīng)用程序、費(fèi)用和其它技術(shù)細(xì)節(jié)或限制的信息。創(chuàng)建應(yīng)用程序時(shí),將提供用戶專用的API密鑰,這對(duì)于啟動(dòng)HTTP通信是必需的。該用戶API密鑰有點(diǎn)像授權(quán)通信的密碼?! ?/span>
該API提供了許多獲取數(shù)據(jù)的方法。例如,如果PLC在大城市中,則可以在此基礎(chǔ)上實(shí)現(xiàn)一步獲得溫度。為了獲得更高的準(zhǔn)確性,用戶可以選擇緯度/經(jīng)度,甚至郵遞區(qū)號(hào)來(lái)查找位置鍵,該位置鍵用于調(diào)用其它API方法。對(duì)于此示例,我們將使用后一種方法?! ?/span>
搜索參考位置部分,將顯示“郵政編碼搜索”的“獲取”方法,顯示所有有效參數(shù)并允許用戶構(gòu)建有效的HTTP請(qǐng)求字符串。該工具還可用于執(zhí)行請(qǐng)求并查看響應(yīng)消息和有效載荷(JSON數(shù)據(jù))的外觀。遵循API規(guī)則,“鍵”值包含所需的位置鍵?! ?/span>
接下來(lái),搜索參考的“當(dāng)前條件”部分,將顯示“當(dāng)前條件”的“獲取”方法。如果使用用戶的API密鑰和新的位置密鑰來(lái)執(zhí)行此方法,則將獲得另一個(gè)包含溫度的響應(yīng)。在開發(fā)過(guò)程中,可以通過(guò)這種方式使用AccuWeather網(wǎng)站來(lái)搜索通訊選項(xiàng)。在實(shí)際運(yùn)行時(shí),將PLC配置為可以發(fā)出帶有正確請(qǐng)求字符串的HTTP命令。收到每個(gè)響應(yīng)時(shí),PLC需要將數(shù)據(jù)放入字符串變量中,然后發(fā)出連續(xù)的JSON解析指令,以向下挖掘所需的數(shù)據(jù)?! ?/span>
保證網(wǎng)絡(luò)的安全性
使PLC能夠與互聯(lián)網(wǎng)連接,這開啟了無(wú)限可能性,但也帶來(lái)了一些問(wèn)題。用戶必須確保,在工業(yè)設(shè)備連接到互聯(lián)網(wǎng)的任何時(shí)間點(diǎn)上,都能保證網(wǎng)絡(luò)的安全性。同樣,最終應(yīng)用程序必須足夠強(qiáng)大,以承受任何形式的互聯(lián)網(wǎng)中斷?! ?/span>
對(duì)于本文中的示例應(yīng)用程序,安裝本地溫度變送器可能會(huì)更好地為最終用戶服務(wù)。但是,互聯(lián)網(wǎng)提供了大量有用的信息,而這些信息無(wú)法在本地進(jìn)行檢測(cè)。稍加思考和一些額外的編程工作,用戶就可以利用基于PLC的HTTP和JSON指令,為應(yīng)用程序添加新的功能。