IEC61499 是分布式工業測量,控制和監控系統的功能塊標準,既然它是面向工業測量和控制的系統,對系統的確定性(Deterministic)要求必然也比較高,確定性又是安全性的前提,保證系統的確定性的兩個重要措施是保證系統的實時性和同步性, 分布式系統結構又進一步增加了實作確定性的難度,本文探討在實作IEC61499 的時間敏感性應用(time-critical Application) 程序中,如何滿足IEC61499 設備中功能塊執行的確定性,實時性和同步性的一些問題,
實時系統(Real-time syetems)
大多數工業控制系統都是實時系統(Real time Systems),這樣的控制系統從設備內部的控制(比如CNC,自動化設備中控制系統)到生產程序控制系統,我們經常提到實時系統,不過并沒有在意它的確切定義,作者認為比較貼切的定義是-“實時系統是在有限和規定周期的時間內回應外部激勵的資訊處理系統“,從上面的定義看,實時系統能夠在規定的周期內回應外部激勵,它強調的是規定的周期內,而不是我們通常講的“快速回應“,實時(real time)不是意味著快速(fast),快速是指平均回應時間,而實時是指每一次回應都不超過規定的時間周期, 在一個實時系統中,不僅要求邏輯結果正確,而且要求遞交結果的時間正確,超時的回應同樣是系統故障,
實時系統的回應期限(Dead line)
實時系統并不是回應時間越快越好, 回應時間越短,意味著成本越高,不同的應用場合對實時性的要求是不一樣的,比如像通信系統的中信號處理是一個對回應時間要求比較高的實時系統,信號采樣頻率高達每秒幾百兆,而對于工業控制系統而言,回應時間通常10ms~100ms , 低于10ms回應周期的系統稱為“強實時系統“,
假設一個閥門需要10秒鐘將從開啟到關閉(0% 到100%),流量傳感器的精度為1% 的話,那么采樣周期選擇為10ms,
發動機控制器,如果發動機的轉速為6000轉/分鐘,那么曲軸每10ms 轉360 度,如果我們的控制精度要求達到0.1 度的話, 采樣周期應該為27 微秒,
實時系統的不同模式
實時系統根據對實時性要求的不同,可以分為:
-硬實時(Hard Real-Time systems)
回應時間超過期限(Deadline)時將引起生命和財產損失,例如,火車來時,紅燈必須在規定的事件內亮,硬實時要求在規定的時間內必須完成操作 ,硬實時系統不允許超時,硬實時也稱為安全敏感(Safety-critical )實時計算機系統.
-軟實時系統(Soft Real-Time)
如果回應時間超過期限,但是仍然具有利用價值,在軟實時里面處理程序超時的后果就沒有那么嚴格,
-固實時系統(Firm Real-TimeSystems)
如果在規定的期限內計算沒有完成,該計算結果就沒有利用價值了,但是不會造成嚴重后果,典型的例子是預測系統,
系統同步
某些控制系統需要各個部件之間實作時間同步來保證系統的確定性和實時性,比如機器人控制,多軸運動控制系統,設備資料檢測等等,一個獨立設備的時鐘同步是容易做到的,但是基于網路的分布式系統會變得復雜一點,IEEE1588 是網路測量和控制系統的精密時鐘同步協議標準,目前許多的處理器芯片的以太網介面支持1588 協議,
IEEE1588的基本原理是網路中有一個主節點不斷地發送時間標簽,其它節點根據受到的時間標簽與自己的時鐘進行修正.保持全網同步的,流行的實時通信協議都支持網路同步技術,
IEC61499 運行環境
IEC61499 標準將一個分布式工業控制系統定義為由網路連接的多臺設備構成的系統,每個設備上由一個或者多個資源,這里的資源,

資源是能夠運行IEC61499 功能塊網路的運行環境(runtime),你可以將資源理解為運行功能塊應用所需要的一組程式(或者執行緒)構成,
一個完整的分布式控制應用將會分解為若干段,分別部署到各個設備的資源上運行,資源是運行功能塊網路的最小單元,
IEC61499 功能塊應用的運行基礎是計算機硬體,它們可能是基于X86 的高性能處理器,也可能基于Arm 處理器為主的低成本芯片,Arm 處理器由多個Coetex-A 核構成多處理器SOC 芯片,比較流行的NXP 的i.mx 6,i.mx8 和瑞芯微,全志公司的Arm 芯片,最近ST 公司也推出了STM32MP1系列產品,
影響IEC61499 運行時實時性的因素
基于IEC61499 標準的設備是一個軟體為中心的實時系統,功能塊網路圖看上去與硬體系統的原理圖十分相似,但是它們運行的行為卻不像硬體系統那么確定,由許多的因素影響IEC61499 功能塊應用的實時執行,它們包括:
處理器性能
這是顯而易見的,處理器的計算性能直接影響軟體的執行時間,
IO 介面性能
在帶有作業系統的設備中,應用程式通過IO驅動來控制硬體,它不像裸機的嵌入式系統那樣可以簡單直接地控制硬體,哪怕是控制一個LED 燈的狀態,都將通過一系列復雜的呼叫才能夠完成,因此,通常在帶有OS 的設備中,除了PCIe 介面的網路,EMMC 存盤器,GPU 等標準化外圍電路以外,IO控制的實時性比起裸機系統更差,為了解決這個問題,嵌入式處理器廠商嘗試開發了所謂異構性多處理器架構,將多個cortex-A 處理器和cortex-M 集成在一起,由cortex-M 完成IO 的實時控制,而cortex-A 完成資料處理,例如NXP 公司的i.mx 系列處理器就具有這樣的架構,
為了滿足實時系統的性能要求,IEC61499 功能塊需要借助于硬體實作 也可以使用軟體實作,或者軟硬體混合實作,顯然采用軟體實作實時系統是最靈活和低成本的,隨著處理器性能的不斷提高,以及多處理器架構的出現,軟體實時系統也來越流行,出現個各種各樣“軟體定義“的實時系統,例如軟體無線電,軟體PLC ,軟體定義網路等等,使用軟體定義的前提是通用處理器的性能足夠強大,對于IEC61499 設備而言, 與IO介面相關的邏輯需要采用處理器的IO外圍電路,FPGA ,或者專用IO 處理器來實作,比如1KHz 以上的脈沖產生,PWM 信號,脈沖計數等等,應該采用處理器的外圍電路(TIM)來實作,而1K以上的ADC 模擬量采樣和信號處理.可以使用專用IO處理器來實作,
在設計IEC61499 功能塊時,經常需要在軟硬體實作方案之間做出權衡,一方面能夠提高設備的實時性能,另一方面可以大幅度降低處理器的負荷,
作業系統性能
前面提到,IEC61499 模型中的資源提供了功能塊應用的運行環境,它們由多個執行緒構成,作業系統的實時性能將直接影響到設備的性能,可以選擇商業化的實時作業系統 ,例如Vxworks,QNX 等,也可以考慮開源OS,例如各種版本的Linux ,
功能塊應用中功能塊的執行時間
IEC61499 是一個開放性系統,用戶和第三方開發者能夠開發面向各種應用的功能塊,這些功能有的可能比較簡單,其中演算法的執行時間很短,有的可能比較龐大,執行時間比較長,功能塊內部演算法甚至會通過其它外部微服務來完成,比如信號濾波,FFT 變換等等,應用中呼叫不同的功能塊將會影響整體的執行時間,
功能塊應用的結構也將會影響實時性能,如果你習慣PLC 掃描方式(SCAN),可能更加傾向采用SCAN 方式來撰寫IEC61499 的應用程式,
例如下面是一個按鍵控制LED指示燈

功能塊應用按照1ms 的周期讀取Button 的狀態,并且傳遞到LED 輸出端,這類似與程式“輪詢“方式,顯然占用的CPU 負荷更多,如果我采用類似“中斷方式的IO 功能塊,當GPIO 狀態發生變化時能夠主動產生IND 事件,不需要REQ請求,那么,功能塊應用占用CPU 的時間大大降低,這類似于”中斷“ 方式,事實上,硬體中斷是一個典型的”事件“,

同一設備中其它應用程式
與傳統PLC 不同,IEC61499 設備中能夠運行其它的服務來支持功能塊的運行,例如本地資料庫,HMI ,數值計算,網路協議等各種應用服務,IEC61499 運行時(runtime)和其它軟體同在同一個硬體平臺上運行,它們會相互影響和牽制,其它應用程式運行多了,勢必會導致IEC61499 運行時的性能下降,
在邊緣服務器中,為了實作應用程式的隔離和解耦,流行采用容器(docker)技術,它們同樣需要占用處理器資源,
網路和協議的性能
功能塊執行時間由兩部分構成,一是功能塊中演算法的計算時間,二是功能塊之間的事件和資料傳遞的事件,一個資源內的功能塊之間的事件/資料傳遞是通過記憶體訪問來完成的,相對訪問時間比較短,如果是跨資源之間的事件/資料傳遞可能涉及執行緒之間的訊息交換,而不同設備功能塊之間的事件/資料傳遞要通過網路協議來完成,網路傳輸會增加資料傳輸的時延,對于回應時間要求高的分布式系統而言,選擇一個合適的實時通信網路及其協議是非常重要的,
IEC61499 并沒有對網路的型別和協議做出規定,不過目前大多數的實作都是基于以太網上的TCP/IP 協議,雖然以太網已經高達1Gbps ,但是對應IEC61499 功能塊之間的短小的碎片化資料,TCP/IP以太網的傳輸效率并不高,而且也不一定能夠滿足具體應用對實時性的要求,
如果應用對實時性要求比較高,需要使用實時性通信協議,PROFINET、POWERLINK、EtherCAT等工業網路已經可以達到比較高的實時性指標,
功能塊執行的調度演算法
IEC61499 運行時本質上是一個外部事件回應系統,當一個事件產生時,將呼叫相關的功能塊執行,在一個實時系統中,外部事件是具有優先等級的,如果調度演算法能夠根據優先等級來調度功能塊的執行,將會提升功能塊執行的實時性,
如果必要,可以在IO模塊中增加優先級引數,實作優先級調度,比如在下面的例子中,我們建立了一個帶優先級的IO 功能塊,當外部按下STOP 按鍵時,以最高優先級處理STOP 事件,以便應用快速停止,在這里我們假設功能塊的priority 的值越大,它輸出的事件優先級越高,

實時通信協議
前面已經提到,功能塊應用的運行時間是分別包括演算法和傳輸耗費的時間,設備之間的通信協議將影響IEC61499 功能塊應用的執行性能,有許多的為實時系統設計的實時通信協議,例如Powerlink,EtherCAT,航空領域TTP 協議,汽車工業的CAN ,
實時通信協議
實時通信協議分為兩種:
-事件觸發通信(Event-Triggered Communication Systems)
事件觸發通信的傳輸是由一個狀態的改變(事件)而發起,也就是說,傳輸是由設備發起的,而不是由通信系統發起的,采用共享通信網路(例如以太網) 時,如果兩個設備同時產生了事件,可能會引起沖突,當然,共享型通信網具有防止沖突的技術,
-時間觸發通信(Time--Triggered Communication Systems)
時間觸發通信的傳輸是由一個時間點發起的,典型的事件觸發通信協議采用了時分復用技術(TDMA),各個設備分時使用通信總線,目前流行的PowerLink,EtherCAT 實時通信協議都是時間觸發通信方式,對于高性能CPU,powerlink的掃描周期可達 100us~200us,抖動小于1us,
與事件觸發通信相對比,時間觸發通信的每一次傳輸都是由通信系統發起的,比如在Power link 協議中,系統有一個管理節點(MN),多個受控節點(CN),
-時間敏感網路(TSN)
時間敏感網路技識訓于帶寬預留的方式,TSN 將資料進行所謂的Traffic Scheduling ,對于實時要求高的周期性資料流,要預先告訴交換機,例如 Flow A to B 128 Byte 200us,然后交換機可以根據這個要求,優先調度通信流量,只有沒有傳送TSN 的流的空隙中,可以用來傳送非TSN 的資料,這個程序稱為Traffic shaping(交通整形),
TSN 的優點在于能夠很好地實作實時資料和非實時資料在同一個網路中的傳輸,
IEC61499 分布式系統的通信協議
IEC61499 分布式系統的通信協議是一種事件觸發通信協議,
其實,IEC61499 并沒有對設備之間的網路協議做過多的規定,最普通的是使用以太網上的TCP/IP 或者UDP 協議來實作不同設備中功能塊網路之間的輸入輸出事件和資料的交換,這是基于Client/Server 的網路方式,另外也可以采用Publish/Subscribe 的訊息方式,訊息方式通常需要通過一個訊息代理來實作資料交換,MQTT是典型的訊息系統,
Client/Server 模式
IEC61499 設備之間的通信協議可以采用最常見的Client/Server模式,其中發送端是Client模式,而接收端為Server模式,通信協議為TCP/IP,資料編碼為ASN.1 編碼方式,
Publish/Subscribe 模式
MQTT 訊息系統是訊息存盤轉發的方式實作訊息分發的,MQTT 代理的轉發時延同樣依賴于運行MQTT 代理的作業系統和服務器硬體性能,對于一個獨立的小型IEC61499 分布式控制系統而言,不可能單獨建立一個性能強大的MQTT代理服務器,而是將MQTT 代理部署在某個設備上,MQTT 代理的性能將會受到限制,
UDP 組播
在一個局域網中,可以使用UDP 組播方式實作高速的Pulish/subscribe 通信,這種方式的通信效率非常高,
IEC61499 設備的組網方式
IEC61499 模型下的應用系統是一個全分布式控制系統,這與傳統的集中式控制系統有很大的不同,我們要突破集中控制的思維模式來構建分布式系統,而不是采用分布式技術去構建一個傳統的集中控制系統,
在一個典型的集中控制系統中,使用一個運行SCADA 軟體的PC 連接若干臺PLC 構成,如果采用IEC61499 模型,我們當然也可以定義一個具有HMI界面的“主” 設備,連接若干臺設備構成一個傳統的控制系統,將控制演算法功能塊部署在主設備上,而其它設備承擔傳感器資料采集和執行部件,

如果采用分布式控制的思維方式,我們可以將演算法功能塊放置在執行部件的設備上,有傳感器設備與執行部件直接通信,交換事件和資料,

IEC61499 系統的基礎通信
IEC61499分布式系統適合各種網路架構,如果控制系統是主從架構,時間的周期性很強,對同步性要求高的場合,采用基于時間觸發的協議( Powerlink,etherCAT)比較合適, 如機器人控制,高速資料采集應用, 而對于異步事件的分布式控制使用事件觸發通信協議更合適,為了提高功能塊之間的事件/資料交換的實時性,可以使用TSN 時間敏感網路,將功能塊之間的事件/資料交換規定為時間敏感通信(Realtime),而其它資料交換(資料庫訪問,云端訪問,IT系統交換資料)規定為非敏感通信(Anytime),
對于實時性要求不高的場合,我們可以為每個設備提供兩個Ethernet 介面,一個用于傳輸實時性資料,另一個用于傳輸非實時資料, 一個傳輸Real time 的功能塊之間的事件/資料交換 ,另一個傳輸非實時資料,這不失為一種低成本的解決方案,
功能塊應用的實時運行
IEC61499 運行時的架構會直接影響功能塊應用的實時運行效率,可以針對系統對實時性的要求 進行優化,它們包括:
-事件鏈調度演算法
-多執行緒架構,提高運行時的實時回應能力
-動態功能塊庫介面優化
-與其它服務之間的介面優化
一個好的運行時就好比一個好的OS,能否針對IEC61499 功能塊運行環境開發一個特別的作業系統,也是一個特別有意思的課題,只不過我沒有想好它應該是什么樣的?希望讀者給我一點啟發,
事件鏈和調度程式
在IEC61499 運行時內部通常會維護一個事件鏈(event chain),它是一個先進先出的佇列,當產生一個事件后,就將該事件添加到事件鏈中,運行時內部的調度程式不斷地讀取事件佇列中的事件,并且通過功能塊連接表尋找與之連接的功能塊執行,直到所有的事件處理完成后,暫時掛起調度程式執行,等待下一個事件進入,
功能塊優先級
盡管IEC61499 標準中并沒有規定功能塊的執行優先級,不過,如果需要的話,我們可以在功能塊中添加優先級引數,帶有優先級的功能塊產生的事件將排列在事件鏈的前面被優先執行,
功能塊網路的運行的實時監測
監測的重要性
我們已經討論了影響IEC61499 功能塊網路實時執行的各個因素,如果在設計程序中充分地考慮確定性,實時性,系統的性能將會有改善,但是我們也看到,通過設計來滿足控制系統的預測性和實時性是比較困難的,而且對于OT 工程師而言,確定功能塊網路的實時回應能力更加不容易,需要額外地進行各種測驗和仿真,
IEC 61499 標準中規定了監控功能塊應用中各個功能塊的輸入輸出事件和資料值的方法,這是通過管理功能塊和管理命令來實作的,在4diac 中,只要對功能塊應用中的某個功能塊的輸入輸出事件或者資料擊右鍵,選擇 watch 選項,就能夠監控相應事件或者資料的當前值,
不過,這種監控是相當粗略的,首先監控是設定事件間隙的,比如 設定為200ms ,而且由IDE 開發環境異步發起的命令,所以,某些事件和資料將會忽略和丟失,
其次,IDE開發環境的管理命令是基于XML 的,解釋執行這些命令并回傳結果,是相當耗費設備運行資源的,過于頻繁地發送管理命令將會影響功能塊網路的運行,
最后,類似4diac IDE ,它們僅僅是在功能塊網路圖上標注的時間或者資料的值,沒有更進一步的分析工具,例如每個功能塊的執行時間,兩個事件之間的時間間隔等等,
在IEC61499 運行時程式中增加測驗功能非常重要,IEC61499 開發環境(比如4diacIDE)的在線檢測實時性差,而且采用了XML 格式的管理命令,處理XML 命令增加了處理器和網路的負載,所以,實作IEC61499 控制系統運行監控更好的方法有兩種:
日志記錄
將事件的時間標簽記錄在記憶體,然后成塊地寫入檔案中,然后通過分析程式讀取日志檔案,然后可視化顯示和分析,通常日志檔案只能記錄最近的一段事件時間標簽,而且記錄事件也會增加一部分處理器負載,日志記錄的格式不能過于復雜,要不然也會影響運行的實時性,
硬體事件信號
在我們開發嵌入式設備的程序中,比較喜歡采用除錯硬體的方式來檢測軟體,結合IEC61499 功能塊模式,可以使用若干GPIO 輸出信號作為事件指示信號,當功能塊網路中產生某一個事件,就在相對應的GPIO 輸出端子上輸出一個短脈沖,或者翻轉狀態,然后使用示波器,或者邏輯分析儀來觀察不同事件之間的關系,利用邏輯分析儀也能夠精確地測量功能塊執行時間,
在下面的例子中,使用QX IO 功能塊實時監控 E_CYCLE 事件E0 和E_SWITCH 事件EO1 ,

你可以通過示波器觀測兩個事件的頻率和相互關系,在我們開發嵌入式實時系統的實踐中,采用示波器,邏輯分析儀除錯程式一直是我們行之有效的方法,
對于變化比較慢,并且沒有周期性的事件,適合采用日志方式,高頻率周期性事件適合使用硬體監控方式,
分析軟體

結束語
以軟體為中心的控制系統帶來了靈活性和可擴展性,IEC61499 設備上可以安裝各種服務和功能塊庫,構建功能強大的分布式控制系統,不過也正是這個原因,開放性系統的確定性和實時性顯然不如PLC 這樣封閉式系統可靠和確定,因此,開發和使用IEC61499 開放性實時系統時,要注意如下幾點:
-對于特定的應用系統而言,安裝的應用軟體是預先確定的,經過嚴格測驗的,
-功能塊應用需要預先經過嚴格的實時性,確定性測驗,
-處理器和網路的負荷能力要具有足夠的富余量,滿足時間峰值的要求,
-可以通過引數設定敏感功能塊的優先級,
-實時性要求高的IO 功能塊可以采用硬體方式實作內部演算法
-可以采用實時通信協議實作IEC61499 系統中的通信,比如powerlink,etherCAT,TSN
-使用硬體信號來檢測功能塊運行是一個簡單而直接的方式,
如何保證 控制系統的確定性,安全性,實時性和同步性是一個非常復雜的問題,其中涉及許多的行業經驗,就實時系統而言,國外學者開設了一門課程,并且寫了厚厚的一本書,在這篇博文中只能寫一些我們在設計IEC61499 控制器時的某些思考,難免有很大的局限性,就算拋磚引玉吧!希望引起讀者的思考和建議,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260667.html
標籤:其他
