天天看點

從PLC到IEC 61499系統

目錄

從PLC 曆史談起

PLC标準化-IEC 61131-3

PLCOpen

IEC 61499标準

IEC 61499與IEC 61131-3,的不同

IEC 61499 功能塊

IEC 61499的程式設計方式

IEC61499的開發者

IEC61499 開源項目Eclipse 4 diac

對IEC 61499 開發的看法

從PLC 曆史談起

PLC (可程式設計邏輯控制器)是美國汽車行業Bedford 協會的一位聰明的雇員Richard E. Morley在1968年發明的。起初的名稱為子產品化數字控制器(Modular Digital Controller MODICON),在GE 公司的一個咨詢項目中,采用Programmable Logic Controller (PLC)的名稱,Bedford協會也更名為Modicon PLC。成為世界上第一個PLC 供應商。第一台商業應用PLC 産品MODICON084。

Morley先生為了使當時的技術人員和維修電工易于了解和程式設計PLC。采用了類似繼電器接線圖的,也就是梯形圖來為PLC程式設計。這種方式一直延續到現在微處理器時代。自動控制工程師接受的教育訓練和工作經驗都是基于梯形圖程式設計方式。

目前PLC 已經成為使用最為廣泛的制動控制裝置。在生産線控制,機床裝置,動車,地鐵中,PLC産品幾乎無處不在。

PLC 可程式設計邏輯控制器一直是中國自動控制廠商心中的梗。PLC領域長期以來都是歐,美,日企業把控的地盤。 在上個世紀80年代我曾經有機會在英國的Allen-Bradley公司學習PLC技術,回國後也曾極力地宣傳PLC 的重要性,但是并沒有被多少人認可,不久,無錫輕工系統的一家國企曾引進GE公司的PLC 産品(大散件組裝,實際上就是整機引進),而Allen-Bradley 公司在廈門設立了獨資公司。逐漸在中國推廣PLC産品和技術。後來西門子,日本三菱等公司也相繼進入中國市場。之後的幾十年間,也有一些公司嘗試開發國産的PLC 産品,不過終究沒有成為氣候。目前少數國内PLC 公司。他們的産品主要是面向“自主可控”的重點領域。在普通工業市場沒有競争力。

從硬體上來看,PLC 并不是十分複雜的工業電腦。也沒有多少專用電路。開發上并沒有多少不可逾越的地方。問題主要出在軟體上。程式設計環境,可靠的嵌入式程式還是有難度的,成為了PLC 産品的護城河之一。

事實上,在國外PLC 産品的軟體也大多數并不是硬體廠商開發,而是第三方軟體公司開發的。比較集中的是Taylor Software,和 ICOM。其它軟體公司不是被硬體裝置公司收購了,就是倒閉了。後來Taylor Software,被Total Control Products收購,之後這家公司又被GE Fanuc收購,而施耐德公司購買了Taylor 的一部分軟體。

現在許多的PLC 廠商是購買的CoDeSys 公司的程式設計工具和嵌入式運作時程式(runtime)。 目前很多廠商的PLC控制器使用的都是Codesys系統,比如彙川技術的中型PLC,德國倍福的控制器,日本歐姆龍以及法國施耐德等等主流廠家也都有基于codesys平台二次開發的控制器産品。

PLC标準化-IEC 61131-3

各家PLC廠商的程式設計環境和語言是互相不相容的。也就是為西門子PLC 編寫的程式無法再三菱PLC上運作。為了解決這一困境。國際電工委員會IEC 于1982 年,釋出了IEC 61131-3 标準。緻力于PLC 标準化工作。IEC 61131-3标準很重要,因為它為所有符合該标準的軟體産品帶來了一緻性。無論內建開發環境(IDE)的品牌或使用者界面桌面的名稱如何,功能和功能塊看起來都一樣,并具有相同的定義的輸入和輸出,進而使工程師或維護人員能夠從任何制造商的軟體中快速了解邏輯和程式流程。

該标準定義了五種程式設計語言:

  1. 梯形圖LD
  2. 功能塊(FBD)
  3. 順序功能圖(SFC)
  4. 結構化文本(ST)
  5. 指令表 IL 類似于計算機的彙編指令

IEC 61131-3定義了标準資料類型,命名約定,程式流程和各種其他程式設計元素。當PLC OEM聲明其程式設計軟體符合IEC 61131-3時,通常意味着該軟體符合部分标準。IEC聲明,要符合要求,程式設計包必須至少支援五種語言中的一種。CoDeSys可能是唯一支援所有這五個平台的程式設計平台。

PLCOpen協會

人們意識到僅有一個标準是不夠的,還有許多的事情要做。于是成立了PLCOpen 協會。來推廣,論證和進一步規範IEC 61131-3标準。

     PLCopen是一個獨立的全球組織,可根據使用者需求提供工業自動化效率。它成立于1992年,總部位于荷蘭,在美國,日本,中國和南韓設有支援辦事處。

前面提到,在IEC 61131-3中,除了傳統的梯形圖和指令表以外,提出了功能塊圖程式設計(FBD)方式。這是一種基于圖型的程式設計方式。

      FBD 類似于硬體的電路圖,一個PLC 程式是由若幹個功能塊用線連接配接起來的。功能塊都有一個或多個輸入和輸出。塊的功能是其輸入和輸出狀态之間的關系。下面是一個FBD的例子,是不是很像硬體的原理圖?

從PLC到IEC 61499系統

類似于原理圖,基本的功能塊相當于小規模內建電路。基礎的功能塊包括了

  1. -标準功能塊
  2. 位邏輯功能塊
  3. 雙穩态功能塊
  4. 邊緣檢測
  5. -定時器功能塊
  6. -計數器功能塊
  7. -比較功能塊
  8. -選擇功能塊

除了這些在  IEC 61131-3 标準中規範的核心功能塊以外,在PLC 中還有大量的功能塊。例如

  1. 算術功能塊
  2. 移位功能塊
  3. 字元串功能塊
  4. 轉換功能塊
  5. 通訊功能塊

還可以有許多許多,事實上使用者可以編寫自己的功能塊,它們可以使用梯形圖,結構化語言或者其它程式設計語言來實作。複雜功能塊提升了PLC 的能力,例如電機控制,PID和運動控制類的功能子產品。未來也許會有AI 功能塊。但是功能塊就像程式庫那樣。如何能保證不同廠商開發的功能塊互相相容,是一個需要互相規範和協調的事情。PLCOpen 在功能塊設計等方面,提出了更進一步的規範。例如軟體構造指南,運動控制使用者指南和安全使用者指南等。

按照IEC 61131-3 标準編寫的PLC程式要最終在PLC中運作,需要通過翻譯成硬體可執行的機器指令,或者一種中間代碼在PLC 運作程式中解釋執行。對于機器代碼和中間代碼的規範并沒有在IEC 61131-3 中明确規範,具體的做法有兩種:

1 将PLC 程式翻譯成為C或者C++ 語言,使用C語言編譯器編譯成為機器代碼

2 輸出中間代碼,由PLC運作時解釋執行(就像JAVA的JVM那樣)。

   各個廠商的中間代碼是格式不開放。這對軟體仿真,調試,版本控制等帶來的不便。于是PLCOpen 成立了一個名為TC6 for XML(可擴充标記語言)的工作組。形成了IEC 61131-3的XML格式。

不同廠商的IDE 軟體可以輸出XML 文檔。然後将XML文檔進一步轉換成為特定PLC的輸出代碼。

綜上所述,PLCOpen 協會緻力于IEC 61131-3 的進一步規範。不過,它并沒有開源任何PLC 開發環境和PLC 運作時。它隻是一些規範而已。

網絡上有一個OpenPLC 項目,名字經常會和PLCOpen 混淆。其實OpenPLC 是一個開源項目,将樹莓派改造稱為PLC ,不夠它相對簡陋,還是停留再業餘愛好者水準。

IEC 61499标準

    IEC 61131-3隻是一個裝置上的程式的标準。但是現代控制系統走向分散數字控制系統時。IEC 61131-3顯得不夠了。

  于是,IEC 與2008年首先釋出了面向分布式控制系統的标準IEC61499.

       IEC 61499定義了一種特定領域的模組化語言,用于開發分布式工業控制解決方案。IEC 61499通過改進軟體元件的封裝來擴充IEC 61131-3,以提高可重用性,提供與供應商無關的格式,并簡化對控制器到控制器通信的支援。它的分發功能和對動态重新配置的固有支援為Industry 4.0和工業IoT應用程式提供了必需的基礎結構。

     基于IEC 61499的控制技術可用于對整個工廠和裝置進行程式設計,即使在分布式控制系統中具有多個控制器也是如此。

從PLC到IEC 61499系統

IEC 61499與IEC 61131-3,的不同

IEC 61499

  1. 事件驅動程式執行
  2. 完整系統的程式設計
  3. 實時啟用
  4. 使用其他IEC 61499工程工具建立的程式無需導入/導出即可進行處理
  5. 控制邏輯可以配置設定給多個控制器。定義了控制器之間的通訊
  6. 任何符合IEC 61499的工程工具均可使用不同供應商的庫

IEC 61131

  1. 循環程式執行
  2. 單個控制器的程式設計
  3. 實時啟用

IEC 61499 功能塊

IEC61499 标準使用基于功能塊圖形程式設計方法,功能塊(FB)是其重要的概念。

從PLC到IEC 61499系統

和IEC 61131-3 中的功能塊類似,61499 的功能塊有資料輸入和資料輸出(底部)。與61131 不同的是 61499 的功能塊具有事件輸入和輸出端(頂部)。這是反映了兩種标準不同的控制方式。

在PLC 中,是采取循環程式控制方式,或者稱為掃描(Scanning)控制方式。在一個循環周期(通常為1ms)中,PLC 讀取是以的輸入端,将輸入端子的狀态存放在存放在記憶體,然後執行梯形圖一次,修改内部和輸出狀态。

在IEC 61499 控制器中,外部輸入産生一個事件信号,每個功能塊隻有輸入事件發生變化時,内部功能才運作一次。同時輸出新的事件和輸出新的資料。由此可以看出,61499 控制器采取的一種異步控制方式。系統中的事件和資料也許在一個控制器内部傳遞,也可能通過網絡在系統的多個裝置之間傳遞。61499 系統的通信機制更适合采納釋出訂閱模式(publish/subscribe)。

IEC 61499定義了在開發應用程式時可以使用的三種類型的FB:

  1. 基本功能塊(BFB)
  2. 基本功能塊(BFB)
  3. 服務功能塊(SFB)

IEC 61499的程式設計方式

在一個分布式系統中,我們通常的方式是定義每個控制器的功能以及控制器之間的通信協定,資料格式,API,然後分别開發各個控制器内部程式和伺服器程式。而在IEC 61499 中則不同,它是從系統的角度開發一個有各種功能塊組成的程式。然後将程式中的各個功能塊映射到每一個實體控制中。這個過程稱為Mapping。

      IEC 61499 使設計者從系統的角度開發應用程式。設計者不再關心裝置之間的接口和通信。這樣做的好處是提高的程式開發的效率。不像傳統方式開發分布式控制系統那麼碎片化。

從PLC到IEC 61499系統

IEC61499的開發者

從PLC到IEC 61499系統

            和PLC 控制程式類似,IEC61499 開發工具同樣由少數的第三方公司開發,其中比較著名的是奧地利的nxtControl公司,它是符合IEC 61499分布式系統控制技術領域的全球上司者。公司成立于2007年,過去十年來,公司已在這項技術上投入近1500萬歐元。2017年nxtControl 公司被施耐德公司收購

   利用nxtControl的建築和工業自動化軟體,可使用拖放功能在多個控制器之間輕松實作整個工廠的控制智能化。互動通信的實作是完全自動的。基礎标準IEC 61499的事件驅動執行模型更易于将控制邏輯內建到更高層次的IT系統和雲應用中,建立一個從現場層到管理層的無縫資料高速通道。

IEC61499 開源項目Eclipse 4 diac

值得幸喜的是,與IEC 61131-3 不同,IEC61499 标準的開發工具出現了一個開源項目-Eclipse 4 diac。

從PLC到IEC 61499系統

4diac 是基于eclipse IDE 架構和Java 開發的ICE611499.它包括四個部分 :

  1. IDE 開發環境-使用Java編寫
  2. FORTE – 一個運作時,使用C++編寫
  3. 功能塊庫
  4. 系統執行個體

對IEC 61499 開發的看法

  1. 相對古老的PLC而言,IEC 61499控制系統還比較年輕,傳統的制動控制廠商還沒有完全成熟的産品。如果現在加快研發投入,有機會彎道超車。
  2. 出現了Eclipse 4 diac 這樣的開源項目,能夠大大幫助我們進入IEC61499 控制系統的開發領域。當然在開源項目上完善和優化還有許多的工作要做。畢竟,開源項目為我們指明了方向,讓我們知道從哪裡開始。
  3. 硬體子產品化,标準化很重要。IEC61499 的功能塊實作了硬體和軟體的分離,硬體的虛拟化,參數化,但是是以的功能塊最終還是要mapping 到控制器的硬體上去運作。硬體不規範和子產品化,很難去開發針對所有接口的功能塊。之前,我們嘗試開發基于圖形化的開發工具,經驗告訴我們,開發一些AND ,OR,Counter 等基礎功能塊比較容易,但是一旦開發複雜一點的功能塊,就必須和硬體子產品開發同步進行。每開發一個硬體子產品,就同步地開發一個或者幾個功能塊。
  4. 要從某個具體的行業開始。和上面第3點類似,如果漫無目标地開發同樣的功能塊。你會發現工作量非常大,而且到具體的應用時總發現還缺一個。是以一開始針對某個特定領域比較合适,nxtControl好像也是從建築自動化開始的。做好一個行業,再做一個行業。讓你的功能塊滿足特定行業的所有應用場景。
  5. 如果我們現在什麼也不做,PLC的今天,就是IEC61499 控制系統的明天,我們永遠進入不了自動控制的高端領域。什麼工業4.0,工業物聯網,中國制造2025 都将是浮雲。
  6. 梯形圖,組态軟體的概念在控制工程師心中已經根深蒂固。其它方式他們難以接受。IT工程師和自動控制工程師就像雞和鴨對話,尿不到一個壺裡。IT 工程師隻有妥協,才有機會。

        如果有人點贊,我将繼續這個話題。國内網絡中,這個課題的文章并不多。

繼續閱讀