陳嬋娟 李 龍
(陜西科技大學機電工程學院,陜西西安 710021)
軟PLC技術是一種基于IPC或EPC的將PLC的控制功能封裝在軟件內的控制技術[1],也就是通過軟件來實現標準硬件PLC的基本功能[2]。它不但具有傳統PLC的PID調節、離散控制和I/O控制功能,而且具有微型計算機的高速數據處理和網絡功能。由于國際編程標準IEC61131-3的制定和推廣應用,軟PLC技術已經成為一項新興的技術[3]。
軟PLC由開發系統和運行系統兩部分組成,其中編輯模塊是開發系統的重點也是軟PLC其它功能實現的前提,根據IEC61131-3的標準,可選用的編程語言有:梯形圖(LD),指令表(IL),結構文本(ST),功能模塊(FB)和順序功能圖(SFC)[4]。本開發系統主要包括梯形圖編輯模塊和指令表編輯模塊。指令表語言與微機匯編語言中的指令具有相似的特點,可以方便地用于程序的編譯,所以除了已開發的梯形圖編輯模塊,指令表編輯模塊的開發也具有很大的實用意義。
本指令表編輯模塊是建立在Visual C++的MFC庫支持多文檔應用程序之上,該編輯模塊的核心是指令表編輯器的開發,方法在應用程序里插入一個對話框資源[5],同時構建一個基于對話框的類去實現。編輯器的調用則是通過在菜單項“指令表”里添加“編程”這一子項,然后給該項添加菜單命令消息WM_COMMAND、構建消息處理函數來實現的。同時為了使用戶使用更加快捷和方便,本開發系統也在工具欄里加入了調用編程器工具“IL”。指令表編輯模塊運行原理框圖如圖1所示。

本開發系統指令表編輯器是通過在應用程序之上添加一個對話框資源去實現的,該對話框包過4個Static Text控件,3個Edit Box控件,5個Button控件和1個List Control控件,其中3個Edit Box控件對List Control控件實現的預覽進行輸入3項內容分別為:步數、指令和操作數;5個Button控件分別實現提交、插入、刪除、清空和輸出;同時也通過添加語句:LVS_EX_GRIDLINES,為列表視圖控件添加了網格線的風格等[4]。指令表的編輯器最終編輯界面如圖2所示。

根據指令表語言的格式結構,本指令表編輯器通過列表視圖控件來實現“步數”、“指令”和“操作數”,其中通過3個Edit Box控件去獲取用戶編程的信息,當用戶輸入完該步驟的數據后,通過為“提交”按鈕將所要編輯的程序提交到列表視圖控件上。同時,編輯器給各個控件均設置一定限制從而更有效地幫助程序員去編輯程序。指令表編輯器的編輯原理如圖3所示。

本開發系統是基于VC的多文檔應用程序通過靜態分割首先將窗口切分為2行1列,最后再將第一行切分成1行4列,取第1行第3列為梯形圖編輯區域,第1行第4列為指令表顯示區域,采用添加一個列表視圖控件去顯示指令表程序,其中列表視圖控件的顯示通過多視圖的實現方法實現,即通過采用創建窗格視圖Createview()函數去實現[6]。本開發系統實現列表視圖控件相關語句如下:

其中CILView為自己插入的基于CListview類的新的類資源,該類的主要函數有重載CILView類的OnInitialUpdate()函數和OnUpdate()函數,實現指令表程序顯示區域的初始化和更新[6],而指令表編輯器里程序的導出同樣也是通過為“輸出”按鈕添加的BN_CLICKED消息響應函數void CEDITILDLG::OnOK()來實現的。指令表程序最終輸出界面如圖4所示。

軟PLC相對于傳統PLC來說,它更靈活,可以根據用戶自己的需求開發出相應的產品,并且價格低廉。指令表編輯模塊是軟PLC開發系統不可或缺的部分,該模塊的開發對于整個開發系統的完整性具有重要意義。其優點是方便快捷地編輯模式,良好的人機對話界面以及各個控件之間的邏輯限制關系能夠有效地幫助用戶進行程序的編輯。指令表編輯模塊的開發對于以后的仿真等模塊的開發具有很大的意義,為后續的軟PLC開發工作打下了良好的基礎。
[1]陳鳳蘭,孫竹梅.軟PLC技術的發展趨勢與應用前景[J].電力學報,2006(2):88-90.
[2]黃延延,林躍,于海斌.軟PLC技術研究及實現[J].計算機工程,2004,30(1):15-17.
[3]陳嬋娟,高帥,王杰.軟PLC開發系統梯形圖編輯模塊的實現[J].組合機床與自動化加工技術,2010(10):5-6.
[4]Open-PLC programming using IECll31-3[OL].http://www.engineeringtalk.com.
[5]郭清宇,王海龍,王國勝,等.Visual C++[M].北京:清華大學出版社,2009.
[6]候俊杰.深入淺出 MFC[M].2版.武漢:華中科技大學出版社,2001.