天天看點

PLCopen 運動控制功能塊在IEC61499 中的實作

        目前,運動控制器已經完全無縫內建到了PLC 中了,在這個過程中,PLCopen 的運動控制功能塊庫功不可沒。幾乎大多數商業化的PLC 運動控制子產品都是基于PLCopen 運動控制功能塊實作的。這給使用者帶來了便利,系統工程師能夠采用同樣的方式來建構基于不同廠商PLC 的運動控制應用系統。在我之前的博文中曾經探讨過将PLCopen 運動功能塊庫融合到IEC61499 分布式·控制系統中的問題。但是具體實作起來還有許多問題有待思考。最近,我們在研究具體的實作方案,在此分享我們的一些想法。希望感興趣的人共同研究。

我對PLCopen 運動控制并不熟悉,是以文章中難免錯誤。希望批評指正。

          在單軸,或者是非同步多軸運動控制系統中, IEC61499 融合PLCopen 是比較容易的。隻需要将PLCopen MC 功能塊移植到IEC61499 中就可以了。

PLCopen 運動控制功能塊在IEC61499 中的實作

 了解IEC61499 功能塊的讀者會發現,實作這樣的轉換并不困難,尤其是對于單軸控制而言,但是對于多軸同步運動系統而言,情況将變得複雜許多,這涉及到軸間同步的問題。

多軸系統

     PLCopenMCL 提供了一組管理和控制功能塊,用于協調多軸運動。 在PLCopen中,多軸控制使用主從軸關系,這種關系定義在真實的或虛拟的

      主軸和一個或多個從軸。主軸保持了它的實際狀态,從軸處于“同步運動”的方式‘。這樣的同步關系可以分為兩種:

  1.     根據軸位置(凸輪)
  2.     根據軸速度(齒輪)
  3.     從軸與主軸保持相位關系

這種關系一旦建立後,對主軸的任何指令都會導緻适當從軸運動。

下面是電子凸輪的實作示意圖

PLCopen 運動控制功能塊在IEC61499 中的實作

集中式

       所謂集中式運動控制是指在一個裝置上實作多軸運動控制。進一步地細分,又可以分為有一個CPU 實作多軸控制,或者内部多個CPU構成的多軸控制。通常一個CPU 實作一個軸的控制。

     由一個CPU 實作多軸運動控制的典型例子是PC機+運動控制卡模式。運動控制卡通過PCI 總線與X86 CPU 相連接配接。Intel CPU 提供強大的算力足夠支援幾十到幾百個軸的運動控制。對于實時性要求高的場合,比如CNC 系統,PC+運動控制塊模式仍然具有非常強的優勢,其中軸間同步時間是線程之間的切換時間來決定的。而一般高端的PC為基礎的運動控制的windows 是微軟公司定制的,具有非常強大的實時性。在一些所謂中型,或者大型PLC 中,也采用了Intel CPU+PCI 總線的實體架構,實作高性能多軸控制自然也不在話下。

   在一些以微處理器為基礎的多子產品運動控制系統中,需要通過外部的現場總線來實作多個軸運動控制子產品之間的實時通信,例如SERCOS,EtherCAT ,CANBUS FD或者Ethernet+IEEE1588等方式。

       在這種方式下,伺服控制器實體上通過同步網絡實作的分布式是控制,但是由于IEC61131-3 本質是支援單一裝置的程式設計,是以,基于PLCopen 的運動控制系統是一個集中控制的方式系統,    通常使用一個PLC 或者工業電腦實作多軸運動控制的主要裝置。而伺服控制器作為從裝置。

分布式

在分布式控制系統中采用PLCopen PLC 是有局限性的。例如在一個分布式的多軸應用系統中,多個從軸同步與一個主軸,但是從軸控制又需要根據某些IO狀态做出變化,例如油缸位置,壓力或者閥門。那麼油缸位置,壓力傳感器的IO子產品挂在哪一個總線上呢?這将有兩種方式。

PLCopen 運動控制功能塊在IEC61499 中的實作

       第一種方式下,油缸位置,壓力傳感器的IO子產品挂在同步總線上,由集中控制的PLC 來讀取這些傳感器的參數,并且做出判斷之後發送參數給從伺服控制器做出改變。這樣做增加了傳感器相應的時間延時,而且由于增加了同步網絡的資訊傳輸,需要增加額外的帶寬,或者加劇了時延。

        而在第二種方式下,連接配接傳感器的IO子產品通過伺服控制器的本地IO控制線(例如SPI)讀取傳感器的資料,實時性提高了,但是帶來了另外一個問題,運動控制子產品的可變因素增加了,無論是是采用組态或者功能塊來配置從伺服控制器的參數都變得異常複雜,而且失去了靈活性。最好的解決方式是在伺服運動控制器中實作部分PLC 可程式設計功能。例如建構梯形圖。這樣一來,同步多軸控制系統演變成為了分布式實時PLC系統。顯然,IEC61499 是原生的分布式控制技術。更具有優勢。

在這種架構之下,每個運動控制器内部帶有一個IEC61499 運作時.多軸運動控制器的同步問題轉變成為IEC61499 功能塊的同步之下問題.

PLCopen 運動控制功能塊在IEC61499 中的實作

 傳統的PLC 運動控制系統轉變成為IEC61499 分布式運動控制系統

PLCopen 運動控制功能塊在IEC61499 中的實作

基于IEC61499 的分布式多軸運動控制系統

       将傳統的伺服運動控制器中增加了IEC61499 運作時,就能夠建構分布式多軸運動控制系統了,不過還有許多的問題需要進一步考慮。

其中最關鍵的問題是适合實作多軸運動控制器之間的同步通信?

IEC61499 能實作同步通信麼?

許多人認為IEC61499 是一種基于事件的異步通信方式。它有别于傳統PLC 的同步周期性通信和執行方式。那麼,IEC61499 到底能否實作同步執行呢?其實完全是可以的,而且它能夠實作分布式同步執行。

 我們以下面的例子來說明IEC61499 的同步執行方式

PLCopen 運動控制功能塊在IEC61499 中的實作

在這個系統中有三個IEC61499 PAC ,其中一個稱為主要制器Forte_PC,另外兩個是從控制器PFC200,PFC201.

 我們編寫了一個簡單的應用程式

将E_CYCLE 映射到Forte_PC ,将E_WSITCH 和E_CTU 映射到PFC200,而将E_WSITCH_1和E_CTU_1映射到PF201 .

PLCopen 運動控制功能塊在IEC61499 中的實作

 在運作過程中,每當E_CYCLE 産生一個EO 事件,會通過UDP 廣播的方式發送給PF200和PF201 兩個控制器,這兩個控制器内部的功能塊收到EO 事件後會執行計數。如果網絡足夠快的話,他們是同步的!正如我之前提到過的,如果你是一個硬體工程師的話,你完全可以将功能塊看作是內建電路元件,而事件就是脈沖和邏輯信号。統一的時鐘信号能夠實作內建電路之間的同步,基于事件的功能塊也自然能夠實作同步執行.

    我們十分興奮地看到IEC61499 是一個原生的同步網絡。如果我們采用千兆以太網,或者TSN 網絡,我們可以為IEC61499 的事件通信預配置設定帶寬。就能夠保證時鐘事件的傳輸時延足夠地短。

      我們可以開發一個時鐘事件功能塊(tsnPubulish和tsnSubscribe),來區分實時通信,還是非實時通信.

PLCopen 運動控制功能塊在IEC61499 中的實作

多軸系統的時間同步 

    仔細的分析就可以看出,IEC61499 能夠實作分布式系統的事件同步(event sync) ,許多場合這種同步已經滿足應用的要求了.比如每個從軸控制器根據主軸控制器的周期性事件(E_Cycle 功能塊産生的) 啟動一個控制環的執行.如果涉及多個精确時間同步的控制信号的話,往往要求多個控制器之間實作時鐘同步,那就需要實作時鐘同步,這可以通過IEEE 1588 協定,或者ntp 協定來實作時間同步.為此,我們可以開發一個PTP_Request和PTP_Response 功能塊實作IEEE1588 協定.也可以在tsnPublish 功能塊的資料幀中添加時間标簽來實作不同控制器之間的時間同步.

PLCopen 運動控制功能塊在IEC61499 中的實作

在時間敏感網絡中,可按照内容的實時性等級來配置設定不同通信功能塊的優先級.

PLCopen 運動控制功能塊在IEC61499 中的實作

 結論

  1.  在IEC61499 分布式控制系統中導入PLCopen 運動控制功能塊庫是可行的.
  2. 對于分布式多軸運動控制系統中,IEC61499 具有天然優勢,比基于IEC61131-3 的PLC 更加靈活,可程式設計.
  3. 時間敏感網絡與IEC61499時間同步功能塊能夠實作分布式運動控制系統的同步.比起EtherCAT 協定更具有優勢和靈活性.