《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 軟PLC編程系統(tǒng)軟件的設(shè)計
軟PLC編程系統(tǒng)軟件的設(shè)計
來源:電子技術(shù)應(yīng)用2012年第6期
侯艷君
華北水利水電學(xué)院, 河南 鄭州 450011
摘要: 采用面向?qū)ο蠛投嗑€程技術(shù)設(shè)計,,實(shí)現(xiàn)了軟PLC編程系統(tǒng)軟件在PC環(huán)境中進(jìn)行梯形圖的繪制,、編輯,、存儲,、加載,、調(diào)試及仿真等功能,。研究了梯形圖程序存儲與加載的實(shí)現(xiàn)方式和仿真模塊中線程的應(yīng)用,,提出了一種編碼規(guī)則表示控件,,采用記事本格式存儲程序,。軟件界面友好,,用戶操作方便,提高了PLC編程效率,,方便了PLC的離線調(diào)試,。
中圖分類號: TP391
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)06-0141-04
Development of soft PLC programming system
Hou Yanjun
North China Institute of Water Conservancy and Hydroelectric Power, Zhengzhou 450011, China
Abstract: The soft PLC programming system software was designed and implemented using object-oriented technology and multithread technology. It was achieved to design, edit, save, load, debug ladder diagram and to simulate program run etc. in PC(Personal Computer) environment. The thesis focused on realization of saving and loading ladder diagram programs and multithread technology application in simulating module. A kind of coding rule was proposed to express controls, to save programs with notepad format. It has friendly user interface, easy operation, which promotes efficiency of programming, and also facilitates PLC off-line debugging.
Key words : soft PLC; simulation; multithread technology; C++ Builder

    計算機(jī)科學(xué)的快速發(fā)展和IEC61131-3標(biāo)準(zhǔn)的制定有力推動了軟PLC(Programmable Logic Controller)技術(shù)的發(fā)展。軟PLC技術(shù)是一種基于PC的新型控制技術(shù),相對于傳統(tǒng)的硬PLC而言,軟PLC具有開放的體系結(jié)構(gòu),、強(qiáng)大的網(wǎng)絡(luò)通信能力和數(shù)據(jù)處理能力, 能較好地滿足工業(yè)自動化領(lǐng)域中控制系統(tǒng)開放性和柔性的要求,是目前工業(yè)自動化領(lǐng)域研究的熱點(diǎn)之一,。所謂軟PLC技術(shù)[1],就是以PC作為硬件支撐平臺,利用軟件實(shí)現(xiàn)傳統(tǒng)PLC的基本功能,即將PLC的控制運(yùn)算功能封裝在軟件內(nèi),運(yùn)行于PC的環(huán)境中,。這樣的控制系統(tǒng)在提供了PLC相同功能的同時,,也具備了PC的各種優(yōu)點(diǎn)。

    本文介紹的軟PLC編程系統(tǒng)軟件采用Windows多任務(wù)環(huán)境下的多線程技術(shù),,以C++ Builder為主要開發(fā)平臺,,利用其強(qiáng)大的軟件功能,使人機(jī)交互界面更為友好,。由于C++ Builder固有的面向?qū)ο髾C(jī)制,可方便地設(shè)計梯形圖數(shù)據(jù)結(jié)構(gòu),,并結(jié)合相應(yīng)的算法,完成軟PLC編程系統(tǒng)設(shè)計,。本文設(shè)計了界面友好的編輯環(huán)境和方便靈活的編輯方式,,實(shí)現(xiàn)了可視化、規(guī)范化的梯形圖設(shè)計,,方便用戶使用,,提高了PLC編程效率。對提高當(dāng)前軟PLC梯形圖編程軟件通用化和標(biāo)準(zhǔn)化做出了有益的嘗試和探索,。
1 總體設(shè)計
1.1軟PLC系統(tǒng)的體系結(jié)構(gòu)

    軟PLC系統(tǒng)包括編程系統(tǒng)和運(yùn)行系統(tǒng),如圖1所示[1-2],。編程系統(tǒng)是基于Windows環(huán)境的編程工具,運(yùn)行于普通PC機(jī)上,。它獨(dú)立于運(yùn)行系統(tǒng),主要完成PLC源程序的編輯,、編譯以及仿真功能。編程系統(tǒng)最終產(chǎn)生一份滿足控制要求的目標(biāo)代碼,,運(yùn)行系統(tǒng)在啟動時就可以加載該目標(biāo)代碼,,對其進(jìn)行解釋執(zhí)行,,并控制對象進(jìn)行交互,完成輸入,、輸出處理等工作,,最終實(shí)現(xiàn)控制功能。

1.2 功能分析
    經(jīng)分析,編程系統(tǒng)軟件應(yīng)具有以下功能:(1)編程和仿真功能:編程功能主要包括程序錄入,、修改,、文件存取和語法檢查功能;仿真功能包括模擬開關(guān)控制,、模擬脫機(jī)運(yùn)行過程,。(2)提供菜單和工具欄兩種操作方式,輸入輸出采用直觀的圖形方式,,便于用戶直觀地編輯梯形圖程序,。(3)順序控制功能、邏輯控制功能,、數(shù)據(jù)控制功能,、定時/計數(shù)功能和監(jiān)控功能。(4)可對PLC用戶程序進(jìn)行正確性檢查(包括編程元件的使用,、語法和邏輯關(guān)系正確性檢查),。(5)實(shí)現(xiàn)常見PLC的內(nèi)部編程元件的仿真,實(shí)現(xiàn)PLC指令解釋器的仿真。(6)與Windows界面一致,,提供中英文兩種語言界面與隨機(jī)幫助,支持對程序的注釋,。
1.3 模塊劃分
    根據(jù)功能需求分析,采用模塊化的思想進(jìn)行軟件設(shè)計,,將編輯系統(tǒng)軟件劃分為主模塊,、輸入模塊、支持模塊,,仿真模塊和通信模塊,。軟件的組成及其相互間的關(guān)系如圖2所示。

    主模塊完成軟件運(yùn)行參數(shù)的初始化,,協(xié)調(diào)其他各模塊調(diào)用控制,,程序打開、顯示,、保存等,。支持模塊進(jìn)行類、對象和結(jié)構(gòu)體的定義,。輸入模塊通過對具體的指令類對象的調(diào)用,對數(shù)據(jù)成員進(jìn)行賦值,、修改等操作,,錄入,、編輯PLC應(yīng)用程序。仿真模塊模擬PLC中的繼電器,、寄存器及相關(guān)I/O變量,,有效模擬現(xiàn)場被控對象信號輸入,直觀地描述各個繼電器的相互控制關(guān)系,,通過時序圖實(shí)時監(jiān)控所有(或部分) 程序使用的繼電器的通斷狀態(tài),。通信模塊在編輯系統(tǒng)和運(yùn)行系統(tǒng)間進(jìn)行通信,把經(jīng)過編譯和脫機(jī)調(diào)試后的目標(biāo)代碼文件下載到運(yùn)行系統(tǒng)中,。
2 存儲與加載的實(shí)現(xiàn)
    IEC61131-3標(biāo)準(zhǔn)[3]規(guī)定了5種編程語言,,其中梯形圖(Ladder Diagram)是應(yīng)用最廣泛的編程語言,是PLC編程的最重要編程語言,,因此本系統(tǒng)采用梯形圖(LD),,其他語言待以后進(jìn)一步加入和完善。梯形圖程序的保存采用操作系統(tǒng)自帶的記事本,由此需要制定編碼規(guī)則,并按照這個固定的規(guī)則存儲數(shù)據(jù)或打開顯示梯形圖,。
2.1 編碼規(guī)則制定
     PLC程序中需要表示的控件主要有常開觸點(diǎn)NO,常閉觸點(diǎn)NC,輸出觸點(diǎn)OP,記時器觸點(diǎn)TM,記數(shù)器觸點(diǎn)CT,、MC、MCE,、跳轉(zhuǎn)控制觸點(diǎn)JP,、LAL,上升沿觸點(diǎn)DF、下降沿DF/,進(jìn)棧ANS,、ORS,、PUSH、RDS,、POPS,、置位觸點(diǎn)SET,復(fù)位觸點(diǎn)RST,保持觸點(diǎn)KEEP,橫線及豎線等[3-4]。必須為每個觸點(diǎn)設(shè)定一個專用的標(biāo)志符號,,以便于保存,、打開程序時能夠識別這些控件。采用字符串與數(shù)字組合表示每一個觸點(diǎn)控件的相關(guān)信息,制定規(guī)則如圖3所示,。

 

 


    文件加載時,通過制定的規(guī)則進(jìn)行譯碼,,執(zhí)行的順序與存儲文件基本相同。
3 多線程技術(shù)的應(yīng)用
    Windows多任務(wù)環(huán)境下的多線程技術(shù)是將CPU的時間劃分成許多時間片段,,并按照一定的優(yōu)先級將時間片段分配給各個線程,,各線程在各自的時間片段內(nèi)共享CPU,從而實(shí)現(xiàn)微觀上的輪次執(zhí)行宏觀上并發(fā)運(yùn)行的多任務(wù)機(jī)制,。多線程技術(shù)的主要優(yōu)勢在于充分利用了CPU的空閑時間片,,用盡可能少的時間對用戶的要求做出響應(yīng),使得進(jìn)程的整體運(yùn)行效率得到較大提高,同時增強(qiáng)了應(yīng)用程序的靈活性,。
    PLC的工作原理是一個“順序掃描,、不斷循環(huán)”的單線程循環(huán)過程[4]。如果軟件采用單線程,,一旦開始執(zhí)行PLC程序,,CPU將被這個死循環(huán)完全占用,軟件的其他事件得不到系統(tǒng)響應(yīng),,無法運(yùn)行,。因此,決定采用多線程機(jī)制[5-6],。仿真模塊占用2個線程:(1)控制程序在“在線模式”與“離線模式”之間轉(zhuǎn)換;(2)精確地實(shí)時監(jiān)控,。加上系統(tǒng)本身的主線程,共有3個線程,。在C++Builder中,,通過File/New/Other下new頁面的“Thread Object” 即可輕松地建立多個線程[5]。
     實(shí)時監(jiān)控線程的作用是不斷地讀取程序運(yùn)行中各個繼電器的狀態(tài),,并將狀態(tài)的值返回到時序圖,,以控制時序圖的輸出。線程對各繼電器狀態(tài)的讀取采用鏈表的形式,,依次讀各節(jié)點(diǎn)的屬性,。當(dāng)啟動線程時,線程會執(zhí)行Execute()函數(shù)中的程序,,GO按鈕調(diào)用Resume()函數(shù)啟動線程,,STOP按鈕調(diào)用Suspend()函數(shù)暫停線程。運(yùn)行時,,從頭開始遍歷讀取各個繼電器的通電狀態(tài)的powered屬性,,如果powered=true,則在時序圖上做高為20,、以淡綠色填充的矩形,,表示繼電器處于通電狀態(tài);如果powered=false,,則在梯形圖上作高為20的矩形,,將矩形設(shè)置為與窗體相同的顏色,使視覺上感覺好像沒有畫矩形圖,,以達(dá)到顯示不通電狀態(tài)的效果,。矩形左上角的X坐標(biāo)用一個xstart變量來取值,xstart的值為powered 改變的那一刻的Image1的水平位置,;右下角的X坐標(biāo)始終為Image1的水平位置,,不停地變化,。為了限制時序圖的大小,等到Image1走到一定的位置,,即將它復(fù)位到起始點(diǎn),,重新開始畫圖,。程序片段如下[5]:
    if(powered)   
    {TimingmapForm->Canvas->Brush->Color=clLime;                TimingmapForm->Canvas->Pen->Style=psSolid; }
    else
    {TimingmapForm->Canvas->Brush->Color=clWhite;                 TimingmapForm->Canvas->Pen->Style=psClear;}
    TimingmapForm->Canvas->Rectangle(xstart,count*30+50,left-1,count*30+70),。
    以C++ Builder為開發(fā)平臺,采用面向?qū)ο蠛投嗑€程技術(shù),實(shí)現(xiàn)了在PC機(jī)上進(jìn)行PLC程序的編制,、調(diào)試和邏輯結(jié)果的仿真,使PLC程序編制,、調(diào)試與硬件脫離。軟件提供了菜單和工具欄兩種操作方式,,操作簡單,,便于用戶直觀地畫梯形圖程序,具有較高的應(yīng)用和實(shí)踐價值, 對其他類似模擬系統(tǒng)的設(shè)計也具有參考價值,。
參考文獻(xiàn)
[1] 吳玉香,周東霞,林錦赟.嵌入式軟PLC系統(tǒng)的研究和實(shí)現(xiàn)[J].計算機(jī)工程,2009,35(10):235-237.
[2] 賀無名,余強(qiáng)國.基于嵌入式軟PLC的礦井提升機(jī)控制系統(tǒng)設(shè)計[J].煤礦機(jī)械,2011,32(6):244-246.
[3] 彭瑜,何衍慶.IEC 61131-3編程語言及應(yīng)用基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2009.
[4] 吳建強(qiáng).可編程控制器原理及其應(yīng)用(第2版)[M].北京:高等教育出版社,2004.
[5] 陸衛(wèi)忠,劉文亮.C++Builder 6程序設(shè)計教程(第2版)[M].北京:科學(xué)出版社,2009.
[6] 章德賓,胡斌,張金隆.多線程技術(shù)與分布式并發(fā)離散事件仿真[J].計算機(jī)仿真,2007,24(1):97-100.
[7] 王紀(jì)森,王俊,周宇.基于多線程的電液伺服加載系統(tǒng)測控軟件設(shè)計[J].機(jī)床與液壓,2009,37(10):159-160.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。