IEC61131-3 PLC 編程方式已經獲得了廣泛的應用,特別是梯形圖更是深入到了OT 工程師的骨子里,哪怕是再復雜的控制邏輯,OT 工程師都能夠撰寫出復雜的梯形圖來,如果與他們討論IEC611499 基于事件功能塊編程時,他們仍然覺得與他們過往的經驗和思維方式存在很大的差別,能否使用PLC 的設計方式來實作IEC61499 功能塊應用呢?本文討論IEC61131-3 與IEC61499 集成,相互融合的問題,
現狀
IEC61131 在大量的工業控制場合得到了長期大量的使用,大多數OT 工程師熟悉了IEC61131的編程方法,它是一種基于周期掃描的執行方式,
IEC61131 標準適合單機運行,實作分布式控制的設計作業量大,效率不高,
IEC61499 是基于事件功能塊在分布式控制系統中的標準,它更適合分布式工業控制的場景,這對于OT 工程師而言是一個相當比較新的概念,轉變設計方法和理念,需要一個很長的程序,
問題
1 是否能夠使用IEC61499 功能塊來實作IEC61131 的周期掃描執行方式?
2 是否能夠在一個設備中同時實作IEC61131和IEC61499?
3 IEC61131-3 和IEC61499 相融合帶來了什么?
第一個問題
大家知道,PLC 的程式是基于周期掃描的方式執行的,如下圖所示:

如果IEC61499 功能塊的一個時鐘是基于時鐘(E_CYCLE)的周期性事件,那么實作PLC IEC61131 理論上是看來是可能的,比如下面這個應用就是基于時鐘的周期性事件的,
IEC61131 梯形圖

這是最簡單的一個梯形圖,兩個串聯的開關,控制一個燈,
IEC61499 功能塊應用
我們使用E_CYCLE 功能塊產生周期事件,將輸入輸出功能塊IX和QI 串在事件鏈中,并且建立了一個常開功能塊(NormalOpen),每個周期事件產生時,程式從E_CYCLE 開始執行一遍

由此可見,除了沒有梯形圖那么簡約之外,IEC61499 功能塊網路能夠簡單粗暴地實作PLC 周期掃描方式的梯形圖程式,E_CYCLE 周期性產生事件,觸發兩個讀DI 功能塊讀取開關A和B的值,然后通過兩個常開功能塊塊,當A和B 都為1 是,輸出功能塊Light輸出1,我們還可以定義一個NormalClose 功能塊,實作常閉觸點,以及線圈等等,假如將IX 和NormalClose 封裝在一個復合功能塊中,IEC61499 功能塊網路會相對簡單一些,
不過,問題還不那么簡單,我們知道,IEC61131 PLC 具有公共的存盤器,所有的IO值和內部變數都是存放在公共存盤器中的,而IEC61499 并不直接支持公共變數,IEC61499 功能塊之間共享變數是很麻煩的事情,比如下面的梯形圖,它采用了三個內部變數Int1,Int2和Int3.

在IEC61499 功能塊網路中,雖然我們可以設定RS 功能塊來作為Int1,Int2和Int3 的存盤器,下圖是一個例子,它使用RS功能塊實作了一個內部變數Int1,

但是你會發現功能塊網路會非常的雜亂無章,如果一臺設備中有很多的IO介面和內部變數,相應的功能塊網路會非常復雜,
IEC61499 實作全域變數的方法
那么是否存在一種方式,在IEC61499中實作公共變數,從而簡化IEC61499 仿真IEC61131呢?筆者認為至少有三種種方式來實作:
1 實作一個內部變數的功能塊(例如下面的RAM功能塊),在它內部定義一個INT16 陣列,作為公共內部變數.

RW 是讀寫控制
DIN 寫入位元
DIN16 寫入16為字
ADDR 為地址,可以寫成 1000,1000.1.字串,1000.1表示是1000記憶體的第一位,DOUT和DOUT16 是讀出位元和字,
這種方式顯然是最簡單的,
2 在IEC61499 運行時的資源中提供一個記憶體變數區域(陣列),IEC61499 功能塊應用通過服務介面功能塊SIFB 訪問內部變數,
這種方式不太可取,應為造成了不兼容問題,
3 在PLC OS 下獨立實作一個內部變數管理執行緒,SIFB通過遠程程序呼叫RPC,
在設備的OS上實作一個獨立的執行緒,通過RPC與運行時內部的功能塊交換內部變數就可以了,系統結構如下圖所示:

在這種架構下,對應IEC61131 PLC 梯形圖的IEC611499 功能塊網路變成如下簡約方式:

其中NormalOpen,NormalClose和Coil 是一個復合功能塊,其中的Variables 是一個訪問內部變數的服務介面功能塊,用于通過RPC 訪問內部變數,

更進一步地,我們也可以采用PLC 的IO方式,將IO 讀出程式搬到IEC611499 運行時的外面來實作:

在某些應用場合,采取這樣的方式,可以大大簡化應用網路的復雜性,比如大量IO介面的應用場合,
第二個問題
當我們研究了第一個問題后,第二個問題基本已經有答案了,我們完全可以在一個設備中同時運行IEC61499 運行時(4diac)和IEC61131 運行時(ProConOS)
在IEC61499 和IEC61131 運行時中分別實作一個功能塊,通過功能塊之間的資料交換實作記憶體共享,


第三個問題
一個設備中同時包含61499/61131兩個運行時,這件事情充滿了想象空間,這里不僅僅是為了迎合OT 工程師的偏好,還能夠做的更多,
- 在PLC 中增加61499 運行時,實作PLC 的分布式處理能力,
PLC 實時能力強,而61499 具有分布式控制的優勢,兩者相加,各自發揮優勢
- PLC 實作Realtime控制,61499 實作Anytime功能(云端訪問,物聯網,AI,,,)
目前異構多核處理器架構已經開始流行,可以在一個內核中跑PLC 程式,完成實時任務,在其它內核中運行61499 應用,實作Any time 的任務,比如訪問資料庫,云端等等,
結束語
在IEC61499 設備中,通過一個SIFB 功能塊,可以實作類似PLC 內部存盤器的公共變數,會給某些應用帶來便利,并且使IEC61499 應用更加接近傳統PLC 周期掃描執行方式,
在一臺設備中同時運行IEC61499 運行時和IEC61131 運行時,通過SIFB和FD 通信實作資料共享是可行的,這種異構控制系統會帶來無窮遐想,
本文的內容再一次表明,IEC61499 功能塊是軟體組件的模型,并且采納了面向物件的思想,如果不做二次開發,那它只是一種模型,沒什么使用價值,一旦你使用它們繼續發展的化,它們可以做任何事情,就像任何一種計算機語言一樣,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272568.html
標籤:其他
上一篇:使用正點原子stm32f103zet6+rt_thread+eps8266+mqtt實作硬體和服務器之間的通信(二)
下一篇:第一課——進制轉換學習實體
