陳嬋娟 李 龍
(陜西科技大學(xué)機(jī)電工程學(xué)院,陜西西安 710021)
軟PLC技術(shù)是一種基于IPC或EPC的將PLC的控制功能封裝在軟件內(nèi)的控制技術(shù)[1],也就是通過(guò)軟件來(lái)實(shí)現(xiàn)標(biāo)準(zhǔn)硬件PLC的基本功能[2]。它不但具有傳統(tǒng)PLC的PID調(diào)節(jié)、離散控制和I/O控制功能,而且具有微型計(jì)算機(jī)的高速數(shù)據(jù)處理和網(wǎng)絡(luò)功能。由于國(guó)際編程標(biāo)準(zhǔn)IEC61131-3的制定和推廣應(yīng)用,軟PLC技術(shù)已經(jīng)成為一項(xiàng)新興的技術(shù)[3]。
軟PLC由開(kāi)發(fā)系統(tǒng)和運(yùn)行系統(tǒng)兩部分組成,其中編輯模塊是開(kāi)發(fā)系統(tǒng)的重點(diǎn)也是軟PLC其它功能實(shí)現(xiàn)的前提,根據(jù)IEC61131-3的標(biāo)準(zhǔn),可選用的編程語(yǔ)言有:梯形圖(LD),指令表(IL),結(jié)構(gòu)文本(ST),功能模塊(FB)和順序功能圖(SFC)[4]。本開(kāi)發(fā)系統(tǒng)主要包括梯形圖編輯模塊和指令表編輯模塊。指令表語(yǔ)言與微機(jī)匯編語(yǔ)言中的指令具有相似的特點(diǎn),可以方便地用于程序的編譯,所以除了已開(kāi)發(fā)的梯形圖編輯模塊,指令表編輯模塊的開(kāi)發(fā)也具有很大的實(shí)用意義。
本指令表編輯模塊是建立在Visual C++的MFC庫(kù)支持多文檔應(yīng)用程序之上,該編輯模塊的核心是指令表編輯器的開(kāi)發(fā),方法在應(yīng)用程序里插入一個(gè)對(duì)話(huà)框資源[5],同時(shí)構(gòu)建一個(gè)基于對(duì)話(huà)框的類(lèi)去實(shí)現(xiàn)。編輯器的調(diào)用則是通過(guò)在菜單項(xiàng)“指令表”里添加“編程”這一子項(xiàng),然后給該項(xiàng)添加菜單命令消息WM_COMMAND、構(gòu)建消息處理函數(shù)來(lái)實(shí)現(xiàn)的。同時(shí)為了使用戶(hù)使用更加快捷和方便,本開(kāi)發(fā)系統(tǒng)也在工具欄里加入了調(diào)用編程器工具“IL”。指令表編輯模塊運(yùn)行原理框圖如圖1所示。
本開(kāi)發(fā)系統(tǒng)指令表編輯器是通過(guò)在應(yīng)用程序之上添加一個(gè)對(duì)話(huà)框資源去實(shí)現(xiàn)的,該對(duì)話(huà)框包過(guò)4個(gè)Static Text控件,3個(gè)Edit Box控件,5個(gè)Button控件和1個(gè)List Control控件,其中3個(gè)Edit Box控件對(duì)List Control控件實(shí)現(xiàn)的預(yù)覽進(jìn)行輸入3項(xiàng)內(nèi)容分別為:步數(shù)、指令和操作數(shù);5個(gè)Button控件分別實(shí)現(xiàn)提交、插入、刪除、清空和輸出;同時(shí)也通過(guò)添加語(yǔ)句:LVS_EX_GRIDLINES,為列表視圖控件添加了網(wǎng)格線(xiàn)的風(fēng)格等[4]。指令表的編輯器最終編輯界面如圖2所示。
根據(jù)指令表語(yǔ)言的格式結(jié)構(gòu),本指令表編輯器通過(guò)列表視圖控件來(lái)實(shí)現(xiàn)“步數(shù)”、“指令”和“操作數(shù)”,其中通過(guò)3個(gè)Edit Box控件去獲取用戶(hù)編程的信息,當(dāng)用戶(hù)輸入完該步驟的數(shù)據(jù)后,通過(guò)為“提交”按鈕將所要編輯的程序提交到列表視圖控件上。同時(shí),編輯器給各個(gè)控件均設(shè)置一定限制從而更有效地幫助程序員去編輯程序。指令表編輯器的編輯原理如圖3所示。
本開(kāi)發(fā)系統(tǒng)是基于VC的多文檔應(yīng)用程序通過(guò)靜態(tài)分割首先將窗口切分為2行1列,最后再將第一行切分成1行4列,取第1行第3列為梯形圖編輯區(qū)域,第1行第4列為指令表顯示區(qū)域,采用添加一個(gè)列表視圖控件去顯示指令表程序,其中列表視圖控件的顯示通過(guò)多視圖的實(shí)現(xiàn)方法實(shí)現(xiàn),即通過(guò)采用創(chuàng)建窗格視圖Createview()函數(shù)去實(shí)現(xiàn)[6]。本開(kāi)發(fā)系統(tǒng)實(shí)現(xiàn)列表視圖控件相關(guān)語(yǔ)句如下:
其中CILView為自己插入的基于CListview類(lèi)的新的類(lèi)資源,該類(lèi)的主要函數(shù)有重載CILView類(lèi)的OnInitialUpdate()函數(shù)和OnUpdate()函數(shù),實(shí)現(xiàn)指令表程序顯示區(qū)域的初始化和更新[6],而指令表編輯器里程序的導(dǎo)出同樣也是通過(guò)為“輸出”按鈕添加的BN_CLICKED消息響應(yīng)函數(shù)void CEDITILDLG::OnOK()來(lái)實(shí)現(xiàn)的。指令表程序最終輸出界面如圖4所示。
軟PLC相對(duì)于傳統(tǒng)PLC來(lái)說(shuō),它更靈活,可以根據(jù)用戶(hù)自己的需求開(kāi)發(fā)出相應(yīng)的產(chǎn)品,并且價(jià)格低廉。指令表編輯模塊是軟PLC開(kāi)發(fā)系統(tǒng)不可或缺的部分,該模塊的開(kāi)發(fā)對(duì)于整個(gè)開(kāi)發(fā)系統(tǒng)的完整性具有重要意義。其優(yōu)點(diǎn)是方便快捷地編輯模式,良好的人機(jī)對(duì)話(huà)界面以及各個(gè)控件之間的邏輯限制關(guān)系能夠有效地幫助用戶(hù)進(jìn)行程序的編輯。指令表編輯模塊的開(kāi)發(fā)對(duì)于以后的仿真等模塊的開(kāi)發(fā)具有很大的意義,為后續(xù)的軟PLC開(kāi)發(fā)工作打下了良好的基礎(chǔ)。
[1]陳鳳蘭,孫竹梅.軟PLC技術(shù)的發(fā)展趨勢(shì)與應(yīng)用前景[J].電力學(xué)報(bào),2006(2):88-90.
[2]黃延延,林躍,于海斌.軟PLC技術(shù)研究及實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30(1):15-17.
[3]陳嬋娟,高帥,王杰.軟PLC開(kāi)發(fā)系統(tǒng)梯形圖編輯模塊的實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2010(10):5-6.
[4]Open-PLC programming using IECll31-3[OL].http://www.engineeringtalk.com.
[5]郭清宇,王海龍,王國(guó)勝,等.Visual C++[M].北京:清華大學(xué)出版社,2009.
[6]候俊杰.深入淺出 MFC[M].2版.武漢:華中科技大學(xué)出版社,2001.