甘建水



【摘 要】論文旨在探討在工業控制領域PLC程序的智能化開發問題。通過對羅克韋爾Logix平臺的研究與分析,在掌握了RSLogix 5000工程文件的格式和編碼規范的基礎上,以軌道交通BAS系統PLC開發為應用例子,采用Microsoft C#語言實現了BAS系統的智能化開發。
【Abstract】The paper aims to explore the intelligent development of the PLC program in the field of industrial control. Through researching and analyzing the Logix platform of Rockwell, and on the basis of mastering the format and encoding specifications of RSLogix5000 project file, the paper takes the PLC development of rail transit BAS system as an application example, and realizes the intelligent development of BAS system by using Microsoft C # language.
【關鍵詞】PLC;智能開發;Logix平臺;工業控制
【Keywords】PLC; intelligent development; Logix platform; industrial control
【中圖分類號】TP273 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻標志碼】B ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章編號】1673-1069(2019)02-0170-02
1 引言
在工業控制系統內,一個PLC控制器往往需要對幾百甚至上千個設備進行監控,每個設備又有若干個不同的監控點。PLC編程的過程中,需要將這些設備的監控點規劃分配到PLC程序里,這將是一件極度煩瑣而又容易出錯的工作。傳統的工業控制PLC系統開發流程是先在Excel文檔里對所有的監控點進行規劃分配,然后再將規劃好的設備監控點填入到PLC程序里[1]。
2 Logix平臺簡介
羅克韋爾自動化Logix平臺提供了單一的集成化控制構架,能夠實現離散、傳動、運動以及過程控制。這種集成式的Logix控制構架提供了通用的控制引擎、軟件編程環境和跨多硬件平臺的通訊支持。
3 工程定義
工程定義主要由工程本身屬性定義、用戶數據類型、模塊組態定義、用戶指令、TAG變量、PLC程序、PLC任務等組成,格式為:CONTROLLER 工程名稱 (ProcessorType := “控制器類型”,Major := 程序主版本號,[其他工程屬性 := 屬性定義]),[用戶數據類型]、[模塊組態定義]、[用戶指令]、[TAG變量]、[PLC程序]、[PLC任務]、[其他定義]、END_CONTROLLER,其中工程本身屬性定義包括指定工程名稱、控制器類型、程序主版本號等。
第一,用戶數據類型,格式為:DATATYPE 用戶數據類型名稱,[各數據成員定義]、END_DATATYPE;其中各數據成員定義格式為:數據類型 : 成員名稱;數據類型可以是內置類型(BOOL、INT、DINT、COUNTER、TIMER、CONTROL等)也可以是用戶定義的數據類型。
第二,模塊組態定義,格式為:MODULE 模塊名稱 (Parent := “父節點模塊名稱”,CatalogNumber := “模塊型號”,[其他模塊屬性 := 屬性定義]);[模塊配置等定義]、END_MODULE;模塊以屬性Parent說明模塊關聯的父節點模塊。PLC控制器模塊名稱默認為與工程一致,Parent屬性默認為Local,本地模塊的Parent皆為Local。
第三,用戶指令,格式為:、ADD_ON_INSTRUCTION_DEF
INITION 指令名稱([指令創建信息]),PARAMETERS,[各指令參數定義],END_PARAMETERS,LOCAL_TAGS,[各本地標簽定義],END_LOCAL_TAGS,ROUTINE Logic,[例程各邏輯定義],END_ROUTINE,END_ADD_ON_INSTRUCTION_DEFINIT
ION,其中參數定義和本地標簽定義格式見下面TAG變量定義部分。例程每一行邏輯以“N:”開始,以“;”結束。
第四,TAG變量,格式為:變量名 : 數據類型(顯示樣式) := 默認值;其中數據類型可以是內置類型或者用戶定義類型。
第五,PLC程序,格式為:PROGRAM MainProgram (MAIN := "主例程名稱")TAG,[各本地TAG變量],END_TAG,ROUTINE 例程名稱,[例程各邏輯定義],END_ROUTINE,END_PROGRAM,各本地TAG變量定義見TAG變量定義部分,例程每一行邏輯以“N:”開始,以“;”結束。
第六,PLC任務,格式為:TASK MainTask (Type := 任務類型),[任務內各程序];,END_TASK
任務類型分為三種:連續性任務、周期性任務和事件觸發任務。任務內程序必須是PLC程序部分定義了的程序名稱。
4 編程實現PLC智能開發系統
在軌道交通BAS系統中,BAS系統的PLC除了對它們進行實時監控外還需要向綜合監控系統上傳設備的狀態信息,同時接收綜合監控系統命令并下發給設備以執行相應動作[2]。因此BAS系統的設計開發流程需要統一規范,一般分為以下幾個工作:①將設計院藍圖設計好的監控設備點分配到指定的遠程IO控制箱具體模塊點位上,形成設備監控點表文件,此為BAS-設備IO映射過程;②分門別類規劃好各種設備在綜合監控系統上的地址,形成數據點表文件,此為綜合監控-BAS IO映射過程;③設計各種設備PLC驅動程序,程序以功能塊形式封裝,方便調用;④根據遠程IO箱的模塊配置信息組態IO模塊;⑤將①和②映射好的數據分別填到設備驅動功能塊參數上,至此基本完成一個完整的BAS PLC程序。
BAS智能開發系統主要就是對以上的④和⑤實現自動化。
4.1 實現自動組態
系統自動組態的前提條件是獲取IO模塊組態信息,以下提供了一種最簡單的模塊組態信息定義格式:
[DI,DO,CE,AI,AO; DI,DO,CE,AI,AO]
其中,中括號將不同的遠程IO箱模塊隔開,IO箱內以“;”間隔每個通信模塊上的IO模塊(往往一個通信模塊會帶若干個IO模塊),而每個模塊的類型又以DI、DO、AI、AO或CE形式表示,并以“,”隔開,其中CE表示的是模塊之間連接的擴展電纜。
智能開發系統讀取模塊組態信息,通過圖1所以流程完成對模塊組態信息的分析,并最終形成RSLogix 5000工程文件模塊組態定義部分。
4.2 實現自動編程
PLC程序設備驅動功能塊一般都包括輸入輸出參數,輸入參數對應BAS-設備IO映射數據,輸出參數對應綜合監控-BAS IO映射數據。功能塊內部邏輯程序以文本的形式固化在程序模板上。因此,將IO映射數據填寫到相應的功能塊輸入輸出參數上便實現了BAS系統PLC的自動化編程。具體流程如圖2所示。圖3所示為采用Microsoft C#語言實現的BAS智能開發系統的軟件界面。經過現場實地使用,發現軟件大大提高了工程開發和調試的效率,PLC程序出錯率大大降低。
5 結論及展望
①通過對RSLogix 5000工程文件的格式以及規律的分析,結合現有的BAS系統設計開發流程,實現了BAS系統的智能化開發[3]。②在實際應用過程中,智能開發系統能夠極大降低BAS系統開發過程的重復勞動,從而提高工作效率,減少邏輯程序出錯的概率。③本文僅僅實現了Logix平臺的智能化開發,由于標準不統一,不同的自動控制系統平臺有著不同的工程文件格式,后續的工作應該努力將智能化開發應用到多種平臺上。
【參考文獻】
【1】薛迎成.羅克韋爾PLC技術基礎及應用[M].北京:中國電力出版社,2009.
【2】鄧李.ControlLogix系統實用手冊[M].北京: 機械工業出版社,2008.
【3】黃允凱,談英姿. 深入淺出NetLinx網絡架構[M].北京: 機械工業出版社,2009.