如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

樹莓派最近有點“火”,它究竟是啥?能幹什麼?偶然機會,我瞭解到樹莓派也能和咱工業上的

PLC撩上關係,而且還有一些成熟方案,挺有興趣,可以科普一下(歡迎大家留言探討)。

本文將分別從<strong>背景和硬件、<strong>系統軟件以及<strong>控制軟件三個部分來作闡述分享,希望對大家開拓思路和實際項目有所幫助。

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

  



第一部分:如何用樹莓派DIY一個邊緣計算PLC?【上篇:背景和硬件】


為啥要用“樹莓派”?

Raspberry Pi(中文名為“樹莓派”)是<strong>為學生計算機編程教育而設計,只有信用卡大小的卡片式電腦。樹莓派基於開放式Linux系統,可以自由進行C/C++、Python、Javascript等等編程語言的開發,為眾多編程愛好者提供了絕佳的學習測試平臺。藉助於開放式的軟硬件資源,讓我們快速實現IEC61131-3標準的邊緣計算PLC產品成為了可能。

什麼是邊緣計算PLC?

正式介紹實現樹莓派邊緣計算PLC之前首先我們還是需要看看邊緣計算PLC的概念提出的背景。在工業4.0時代,傳統的控制技術OT(Operation Technology)與信息技術IT(Information Technology)的邊界越來越模糊,目前在工業自動化領域如果需要將傳統PLC控制器與IT系統進行結合,大量使用網關產品,在目前階段也許這是無奈之舉。

但是系統架構的複雜化大大增加了工業數據的延時,降低了大數據的採集效率,從而制約了未來的工業大數據分析的精準性。同時所有的工業原始數據將由雲平臺服務器進行收集以及分析,隨著工廠應用越來越複雜,雲平臺的算力限制以及數據庫的臃腫不堪都將使得未來工業智能面臨極大的挑戰。

<strong>因此,我們需要儘可能簡化工業4.0時代的系統設計,需要一種新型的PLC產品能夠將OT與IT技術相融合,既能高速處理工業現場OT數據,同時能夠承擔與IT系統的開放式交互,並且具有一定的運算能力可以對大量的工業現場OT數據進行預處理,僅僅交付雲平臺需要的數據,而不是所有的數據處理功能都在雲平臺上完成,這就是我們理想中的邊緣計算PLC。

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

為了實現這一目標,除了強大的數據處理能力,大容量的存儲器等等硬件支持以外,在軟件上需要同時支持開放式OT與IT平臺,例如:IEC61131-3編程、PLCopen MC運動控制、EtherCAT、CANopen、Modbus等等傳統OT技術,開放式物聯網編程平臺Node-RED、本地嵌入式數據庫、OPC-UA、MQTT等等IT技術。

而樹莓派作為今天的主角是一個非常不錯的硬件平臺,同時基於x86架構的PC Based解決方案則會為我們開啟另外一扇窗,本文中,我們將聚焦分析樹莓派實現邊緣計算PLC的關鍵技術點。

樹莓派硬件用於工業控制可能會有啥問題?

穩定可靠的硬件是工業控制器的基礎,即使有強大的開源社區軟硬件資源的支持,但是由於標準的樹莓派(包括最新的樹莓派3B/3B+/4B)產品硬件不是面對工業級的應用而設計,僅僅適用於實驗、學習與測試,而不適合於在環境較複雜以及對可靠性要求較高的工業現場進行使用。面對工業級產品應用,樹莓派官方社區發佈了最新的樹莓派3B+ Compute Module核心板(後面統一簡稱樹莓派CM核心板),通過DDR2 SODIMM接口連接擴展板信號,可以用於工業級控制器產品設計:

這裡我們也為大家初步整理了下樹莓派3B+ Compute Module核心板的相關技術參數:

處理器:Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.2GHz

RAM存儲器:1GB LPDDR2 SDRAM

Flash存儲器:8GB/16GB/32GB eMMC Flash

工作溫度範圍:-25℃ - 80℃

硬件認證:

Electromagnetic Compatibility Directive (EMC) 2014/30/EU

Restriction of Hazardous Substances (RoHS) Directive 2011/65/EU

維護截至日期:2026年1月

從整體硬件規格來看,樹莓派CM核心板在硬件設計上保持比較高的規格,處理器性能較高,存儲器空間非常大,成本較低,符合工業級的溫度以及硬件認證要求,並且其硬件設計原理圖完全都公開,因此基於樹莓派CM核心板實現的PLC產品可以有極高的運算性能與超大的存儲器空間。

但是經過全面分析,我們認為樹莓派CM核心板處理器面向工業控制應用時,其外設接口上依然偏少,比如實現工業控制器的RS232/RS485/RS422接口的UART外設只有2個,沒有CAN總線接口,以太網必須通過USB接口的芯片擴展出,大大限制網絡交互實時性,對於一些速度要求較快的現場總線將會是較大的挑戰:如EtherCAT,主要受限於該模塊內部的USB轉以太網接口芯片的帶寬以及USB芯片處理以太網報文的實時性。

當然我們需要給與基於樹莓派CM核心板開發的工業控制器產品一個合適的定位,充分發揮出其硬件特點。通常傳統工業控制器使用的處理器主頻較低,存儲器空間非常有限,因此對於樹莓派CM工業控制器來說,就是應該發揮出其高性能運算以及大存儲容量的特點,原來傳統工業控制需要上到雲端進行的運算以及數據存儲,可以根據需要下放到樹莓派CM工業控制器上實現,這就是我們在前面介紹的邊緣計算PLC的概念,同時其還可以通過工業現場總線以及通訊協議與其他工業控制器或者傳感器進行通訊,如:Modbus、CANopen、EtherCAT、OPC-UA等等。

關於硬件部分,最後需要特別說明的一點:樹莓派CM核心板處理器發熱較嚴重,設計需要做好散熱工作,同樣其功耗較高,並不適合一些低功耗或者對控制器發熱量有要求的應用場景。




第二部分:用樹莓派搭PLC有硬傷麼?如何改進?【中篇:基礎系統】


上一部分,我們主要介紹了基本的邊緣計算PLC概念以及在工業場景中應用應用樹莓派CM核心板的硬件優劣勢,在這一部分,將進一步分析樹莓派的基礎Linux系統用於工業控制過程中的問題與改進方案。

樹莓派提供了標準開源Linux系統Raspbian(基於Debian的發行版)支持,但是標準的Linux用於工業控制系統時,我們永遠繞不開一個話題:實時性Realtime

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

工業控制器到底是否需要實時性?

<strong>工業控制器到底是否需要實時性?這是在開發工業控制器產品時很常見的問題。實時性的定義就是系統在規定時間內的響應能力,這裡的“規定時間”沒有明確的定義,因此實時性的要求是與實際現場應用緊密結合的。

舉個例子,例如:我們使用手機過程中,點擊一個界面後,手機響應快一點或者慢一點,我們的使用者感覺是不一樣的,這個就是一種實時性的體現。

安卓系統手機使用時間越長,響應速度會越慢,實時性就越低,而蘋果手機相對安卓手機的實時性就要高很多,所以感覺更流暢,因此我們對手機的實時性是有要求的。但是日常生活中的應用要求實時性要求並不高,並且即使出現了偶然性的超時,並不會造成嚴重的後果,最多體驗上稍稍差了點,這就是<strong>軟實時的概念。

在咱們工業自動化領域的控制器則有些小目標,有些工業應用場景要求非常高,在接收到外部信號後需要立即進行處理並輸出信號,通常使用PLC中斷子程序來進行處理。而要求不是很高的場景通常使用指定的週期進行循環即可:讀取I/O信號->進行邏輯處理->輸出I/O信號,通常根據應用場景不同達到精確的1-500ms的PLC程序執行循環週期,PLC工作原理如下圖所示:

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

無論是觸發外部信號中斷立即執行PLC程序邏輯,還是精確定時從而可以達到精確的1-200ms循環週期執行PLC程序邏輯,本文中涉及樹莓派的Linux操作系統實時性就是非常關鍵的因素,而實時性與操作系統的定時精度、中斷響應時間、任務切換時間等等因素的確定性都息息相關,相關因素的時間需要具有嚴格確定性才可以稱之為<strong>硬實時。

不同場景以及對PLC循環週期的要求

這裡我們通過下面的例子講解不同的應用場景對於實時性以及PLC循環週期的要求:

  • 運動控制場景

控制器通過EtherCAT總線控制驅動器,PLC系統通常需要在收到數據50us以內就做出總線數據處理,這樣才能實現穩定的1ms週期循環發送位置指令給驅動器。

  • 工廠自動化場景

智能製造工廠內的實時數據需要穩定實現4-32ms的週期性數據通訊。

  • 過程控制場景

而過程控制應用場景(如水處理、油氣、化工、電力等等行業)控制週期則在100-500ms範圍。

但是無論如何,<strong>工業控制器作為工業自動化的核心大腦,是不允許出現任何偶發性超出實時性要求的情況發生,不然會對整個複雜的工業現場造成極大的風險,這就是硬實時的概念

,也是一些國產品牌工業控制器不穩定的源頭之一(在研發工業控制器產品前,操作系統選型上可以參考國外類似控制器產品的選型,儘可能選用穩定可靠的實時操作系統,如:FreeRTOS、embOS、Keil RTX、RT-Thread、uCOSIII、VxWorks、QNX、RTX64、INtime等等。如果一定需要用到Linux系統,那麼請注意開發面向運動控制的產品儘量選用RTAI與Xenomai而不是PREEMPT-RT實時內核補丁,關於實時操作系統分析與Linux實時內核的擴展,我們可以在以後的文章中再詳細與大家一起分享)。

因此<strong>對於開發工業控制器的工程師與產品經理而言,一定不能抱有僥倖心理,一定要選擇穩定可靠的實時操作系統(RTOS)構建工業控制器的基礎平臺,除非是現場的實際應用需求只有軟實時的要求,系統實時性出現問題不會造成重大的現場問題,例如:智能樓宇商用應用場合,燈光、風機、空調開關偶然性慢一點雖然最好能夠及時響應,但是偶然超出設計指標也不會造成什麼問題,那麼這種場合下軟實時的要求就可以了。

回到樹莓派的話題上,樹莓派支持的傳統的Linux系統Raspbian是沒有任何硬實時的支持,因此將樹莓派CM核心板用於實現工業控制器時,一定需要對標準的Linux其進行升級改造才能提高其實時性。因此這裡我們對標準的樹莓派Linux系統進行了升級改造,集成Linux的PREEMPT-RT實時內核補丁,將樹莓派上標準的控制最差的響應延時從不確定的>200us(通常在200-500us,但是隨著處理器負荷提高,偶發性的響應延遲將達到ms級別以上)控制在確定的<120us以內(通過cyclictest工具在處理器滿負荷情況下測定)。

這裡提到的確定性就是達到硬實時的一個條件,只要能確保這個響應的完全確定性,那麼就可以認為其達到了硬實時,雖然不同場合下對硬實時的要求是有不同,具體還是得結合應用場景來進行分析。

結論

<strong>因此我們這裡對前面文章中樹莓派硬件與基礎平臺Linux操作系統得出結論:

1、經過PREEMPT-RT實時性優化後,樹莓派可以達到<120us以內的硬實時響應要求,對應於工業自動化領域內的通用工廠自動化、過程控制、智能樓宇等等對硬實時要求不高的應用。

2、由於處理器功耗與發熱量較大,在低容量電池供電(AGV小車電池容量較大,相對於x86解決方案功耗依然較小,因此也適用),以及對於控制器發熱量有防爆要求的場景需要慎用(例如煤礦、油氣現場控制器等)。

3、由於樹莓派CM核心板需要通過USB接口擴展出以太網接口,因此對於要求較高的工業以太網現場總線(如:EtherCAT)需要進一步考量其穩定性和確定性,防止現場出現偶發性故障風險。




第三部分:樹莓派+IEC61131-3+NodeRED=邊緣控制PLC?【下篇:控制軟件】



前兩部分,我們著重分析了樹莓派CM核心板應用於工業場景的軟硬件優劣勢。在第三部分,我們將正式引入實現邊緣計算PLC的軟件平臺IEC61131-3標準LogicLab與開放式物聯網開發平臺Node-RED。

為什麼選擇IEC61131-3標準?

從1968年美國GM(通用汽車)公司提出取代繼電器控制裝置的要求,並在第二年美國數字公司研製出了第一代可編程序控制器PLC以來,PLC產品經歷了20多年的發展後,誕生了大量編程風格的技術與產品。<strong>不同PLC廠家對於PLC理解的不同,都有各自的技術實現,編程語法風格也越來越多,造成使用者在不同廠家PLC產品之間轉換碰到極大的挑戰。

1993年,在那個PLC戰火紛飛的年代,IEC61131-3標準(初次命名為IEC1131-3,後更名為IEC61131-3,後文統稱IEC61131-3標準)終於誕生了,國際電工委員會(International Electrotechnical Commission,簡稱IEC)蒐集了市場上主流PLC編程標準,並在1993年制定了IEC61131-3標準用於統一PLC的編程語法(五種主流PLC編程語言,包括功能塊圖FBD、梯形圖LD、結構化文本ST、順序流程圖SFC與指令表IL)、通用PLC架構模型(配置Configuration、資源Resource、多任務MultiTask、變量Variable、地址Address、程序Program、功能Function、功能塊Function Block、功能/功能塊二次封裝與代碼重用等等概念)。


如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

到今天離IEC61131-3標準的誕生已經將近三十年時間,PLC產品經歷了漫長的發展與變革,在最近十年間西門子、三菱、歐姆龍、施耐德、羅克韋爾等等業內知名企業都在逐步支持IEC61131-3的編程體系與系統模型。而在歐洲IEC61131-3標準則是PLC編程的入門必經之路,幾乎每一位PLC工程師都是從IEC61131-3標準中的FBD、LD、ST語言入門學習,而在我國則遠遠落後,這裡我們就不深挖,在以後的文章中我們再與大家一同分享。但是無論怎樣,<strong>面對未來的PLC產品開發與應用,IEC61131-3標準毫無疑問是未來工業自動化控制系統長遠發展的大方向

前面聊了下IEC61131-3標準的歷史與近些年的發展,那麼對應到具體樹莓派邊緣計算PLC產品上,我們需要支持面向OT應用的IEC61131-3控制技術與面向IT應用的開放式物聯網平臺,項目規劃之初我們再次面臨選擇:<strong>完全自主研發IEC61131-3編程軟件與控制器產品 OR 基於成熟軟件技術由專業團隊協助進行二次開發?

為什麼首選成熟IEC61131-3技術夥伴

為什麼中小企業應首選成熟IEC61131-3技術夥伴而不是自主研發基礎平臺?

首先我們依然聚焦在IEC61131-3標準的控制器平臺技術上,從IEC61131-3誕生到今天已經將近三十年時間,歐美日的PLC控制器龍頭企業早早開始投入大量資金研發符合IEC61131-3標準的控制器平臺軟件與硬件產品,而國內企業起步相對較晚。由於工業自動化市場細分行業較多,並且單個細分市場的體量較小,這些工業自動化細分領域的優秀公司難以投入巨量的資金進行基礎IEC61131-3平臺研發工作。根據過去十年我們的經驗,<strong>如果期望自主研發具有一定國際競爭力的覆蓋小型、中型以及大型的PLC系統,投入的研發資金可能會達到大幾千萬到上億元人民幣不等

,從產品規劃、研發、市場推廣應用,並具備一定的影響力可能需要5-20年時間,這對於國內大量的工業自動化細分行業龍頭企業來說,是非常大的一個挑戰。

大量企業需要自主研發符合IEC61131-3標準的控制器產品,而自主研發投入又是巨大的資金需求,因此歐美在過去的二十多年誕生了專門為這些中小企業實現IEC61131-3標準控制器的PLC軟件解決方案公司,這裡我介紹一下我所在的翌控科技的戰略合作伙伴意大利AXEL S.r.l.公司,在二十年前意大利AXEL S.r.l公司成立並開始為伺服驅動器與變頻器廠商在非常有限的處理器平臺上實現高性能的PLC編程軟件與運行時Runtime,這些設備空閒存儲器資源非常有限,通常按照KB級別來計算,同時由於運行了高速的算法,空閒的處理器資源也相當有限,因此AXEL公司的PLC代碼編譯器與運行時Runtime就是面向低資源、高性能、擴展性強為目標而設計。

我們在工業自動化IEC61131-3軟件平臺方向上努力十年時間,雖然相對整個PLC發展歷史來說只是彈指一瞬間,但是藉助於這十年的IEC61131-3標準、現場總線、運動控制、各種處理器平臺、實時操作系統等等技術的積累,同時與AXEL公司深度綁定與合作,將繼續為國內企業提供最貼近客戶需求的穩定、高效、開放的PLC系統級解決方案。

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

相信到這裡,大家應該已經明白自主研發IEC61131-3標準的PLC產品,應該如何佈局未來研發路線。從目前工業自動化市場格局來看,大多數的PLC控制系統都把持在歐、日、美三大派系龍頭企業上,所以對於我們各個工業自動化細分領域的領軍企業來說,<strong>首先確保控制系統硬件產品完全自主研發,並且通過與國內外優秀的軟件技術合作伙伴合作實現IEC61131-3平臺與系統,再逐步自主研發,這可能是更穩妥的路線

怎麼快速實現樹莓派邊緣計算PLC?

筆者認為,與我們共同合作開發是最快速、穩定、風險小的路線。目前我們已經提供標準IEC61131-3標準的LogicLab編程工具,包括支持五種標準編程語言(FBD、LD、ST、SFC與IL)與實時多任務架構,同時支持豐富的調試手段與功能(在線變量實時監控、包括強制、軟件示波器、斷點與單步調試等等功能),LogicLab編程工具可以進行OEM貼牌以及進行二次擴展開發進行開放式定製,另外也支持Modbus、CANopen、EtherCAT等現場總線,HMI與運動控制等等解決方案:

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了


基於樹莓派標準硬件平臺,使用LogicLab系統可以通過樹莓派擴展I/O控制工業信號,如下圖所示:

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了


也可以對Modbus總線進行組態,實現PLC之間的站間訪問,而在未來我們也將為樹莓派CAN總線擴展板添加CANopen協議以及訪問自定義協議的I/O模塊的驅動支持。

通過開放式的LogicLab Runtime CSDK,開發者可以將任何基於Linux C語言開發的功能或算法通過插件方式集成到IEC61131-3應用體系中,包括樹莓派標準的I/O擴展,UART、SPI、I2C接口的外設訪問,各種運行在Linux上的C語言應用程序等:

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了


另外面向工業物聯網應用,Node-RED平臺將進一步增強控制器的開放性,提升數據處理與通訊能力。

Node-RED是由IBM主導的開源物聯網開發平臺,基於Node.JS開發。使用Web瀏覽器就可以對數據流進行拖拽式組態、參數設定、程序加密、調試與下載等等,有了這麼優秀的平臺,我們為什麼要去重複造輪子呢?

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了


在樹莓派的Linux平臺上LogicLab已經支持與Node-RED之間的無縫數據交換,LogicLab與Node-RED之間通過LLSymbol遠程訪問組件相互交換數據,進程間的通訊數據訪問效率與及時性更高,因此這樣的架構更能支撐未來邊緣計算PLC對於數據及時性的需求。

如何用樹莓派DIY一個邊緣計算PLC?看完這篇你可以出師了

寫在最後


以上三部分,我們從概念到硬件再到系統及控制軟件,對使用樹莓派快速開發邊緣計算PLC做了詳細闡述。樹莓派作為最近幾年最優秀的開源社區產品,強大的社區資源可以大大降低產品研發投入,<strong>藉助於我們對樹莓派與實時Linux系統的應用經驗,可以快速開發出面對適合工業應用場景的IEC61131-3標準的工業控制器產品。

我們也為大家準備了資料包(如有需要,請私信留言),包括基於樹莓派3B/3B+的預集成實時Linux鏡像,集成Linux PREEMPT-RT實時內核補丁,LogicLab SoftPLC運行系統,Node-RED物聯網開發平臺,一體化的鏡像更方便系統安裝與測試。大家可以快速進行實時Linux內核+PLC系統+Node-RED環境安裝並進行IEC61131-3與Node-RED編程實踐。


包銳,翌控科技CTO、聯合創始人,曾就職於德國KW-Software從事10年IEC61131-3軟件解決方案研發、技術支持、與市場推廣工作,對IEC61131-3標準以及涉及到的工業控制器產品、現場總線研發與應用、系統架構、基礎平臺技術等等有深度研究與經驗。


分享到:


相關文章: