史先桂
(安徽新華學院 信息工程學院,合肥 230088)
史先桂
(安徽新華學院 信息工程學院,合肥 230088)
介紹一種采用VC++2010開發(fā)梯形圖編程工具軟件的設計與實現方法。利用面向對象的方法,進行系統(tǒng)類層次結構的設計,使系統(tǒng)具有更強的執(zhí)行效率、開放性和可擴展性;采用鏈表結構存儲梯形圖,能夠方便、靈活地進行動態(tài)編輯操作;運行程序將梯形圖圖形語言轉換為鏈表指令程序,通過高效邏輯和運算管理鏈表指令快速執(zhí)行。
VC++;梯形圖;可編程邏輯控制器控制;組態(tài)軟件
在自動控制領域,梯形圖因其直觀易學的優(yōu)勢,成為PLC(Programmable Logic Controller,可編程邏輯控制器)中應用廣泛的編程語言[1]。基于工控機的PCI(Peripheral Component Interconnect,外設部件互連標準)插槽、運動控制卡多軸控制系統(tǒng)以及基于以太網、串口等智能終端的控制編程都要通過組態(tài)軟件或上位機自編開發(fā)軟件。針對擁有大量輸入輸出的復雜邏輯控制系統(tǒng),采用上位機自編開發(fā)軟件,需要定義大量的變量,靠編寫代碼等控制工藝動作。因此,項目開發(fā)時間長、可控性差、風險大,一旦出現故障和漏洞,需要開發(fā)人員才能解決。同時,復雜的邏輯控制通過在組態(tài)軟件上編寫腳本語言實現也非常困難,沒有梯形圖編程方便、直觀。這種情況下,在組態(tài)軟件基礎上開發(fā)類似PLC的梯形圖編程工具軟件,那么只要是有梯形圖編程經驗的人員,就可以在上位機上開發(fā)復雜的控制項目,使復雜的上位機軟件開發(fā)大大簡化,不需要編寫代碼,而且調試方便、直觀、快捷,項目風險降低。本文利用VC++2010開發(fā)梯形圖編程工具軟件,并重點介紹梯形圖指令圖形化編輯系統(tǒng)、梯形圖編程系統(tǒng)、梯形圖運行系統(tǒng)[2],等功能模塊的實現方法。
完成梯形圖指令圖形化編輯系統(tǒng),首先要確定梯形圖的指令系統(tǒng),然后將梯形圖指令符號用不同圖形表示出來。
1.1 指令系統(tǒng)
首先規(guī)劃系統(tǒng)需要支持哪些指令,并且要容易擴展。本系統(tǒng)支持的梯形圖命令有:
常規(guī)指令:常開、常閉、>、 >=、 <、 <=、 ==、M繼電器輸出、M繼電器上升沿微分、M繼電器下降沿微分、DI輸入、DO輸出、AI輸入 、AO輸出、時間計時器計時、計時器計數、置位、復位、位設置;
運算指令:數據+、-、*、/、絕對值運算;
數據傳送指令:字節(jié)傳送、字傳送、數字快傳送;
伺服步進指令:設置常速、設置高速、設置恒速、加速,設置運行脈沖數,制動,清零,查詢當前脈沖數、原位、方向、運行狀態(tài);
特殊指令:子程序、功能塊、報警信息提示。
1.2 指令符號繪制

圖1 類層次結構
圖1是畫指令圖元的相關繼承關系,每個畫圖對象由以下數據結構實現:
typedef struct _TBObjInfo

所有對象在虛函數 virtual void Draw(CDC* pDC)里實現畫圖,這種設計方案簡單且指令可擴展性強。
一個完善的梯形圖編程系統(tǒng),首先要將梯形圖指令與相關的繼電器關聯,其次要完成梯形圖編程的編輯系統(tǒng)
2.1 繼電器定義
梯形圖在編輯時,指令要與相關繼電器關聯。繼電器一般有2種:外部I/O繼電器和內部輔助繼電器。
本系統(tǒng)規(guī)劃的外部I/O繼電器最多可提供0~255個設備的虛擬地址,供工控機插卡輸入輸出編址用,數字量和模擬量輸入輸出變量地址支持0.00~0.31到255.00~255.32,具體地址分配根據配置的虛擬地址編號用對話框設置如圖2所示。

圖2 輸入、輸出地址配置
如一塊16位DI插卡,地址編號=1,編址為1.00~1.15,沒有編址的不能在梯形圖里使用。地址編號為0,1,...,255,不能重復;另外數字量輸入/輸出、模擬量輸入/輸出的數量要和實際插卡設備一致,以便梯形圖正確編址。
系統(tǒng)規(guī)劃的內部繼電器有:M輔助繼電器,地址支持M0~M10000,共具有10 000個M輔助繼電器。其中:特殊繼電器M0,程序第一次循環(huán)是ON,以后為OFF;M1,0.5 s脈沖;M2,1 s脈沖;M3,M4備用,編程選擇從M5開始;DW數據寄存器,共有DW0~DW5000可用;時間繼電器T,共有T0~T500可用;計數器C,共有C0~C500可用。
2.2 梯形圖編程的編輯系統(tǒng)
完成梯形圖編程的編輯系統(tǒng)開發(fā)有2個要點:智能編輯和存儲。梯形圖的智能編輯系統(tǒng)對繪制的梯形圖是否正確具有智能判斷功能,可根據梯形圖符號、指令類型,左、右連接的對象,上、下連接的對象、位置等檢測繪制是否正確。
2.2.1 梯形圖智能編輯
程序完成相關功能后,可根據工藝要求進行梯形圖編程。圖3是本系統(tǒng)編輯的一段梯形圖。

圖3 梯形圖編程實例
程序的每個段編輯完成,系統(tǒng)將自動檢測判斷是否符合邏輯要求,如果不合要求則梯形圖開始端會變紅色,同時提示錯誤。同樣,梯形圖指令繪制位置不正確時也會有錯誤提示[4]。
2.2.2 梯形圖存儲
每行梯形圖編輯順序為從左到右、從上到下,下面以圖4所示的一段梯形圖來說明存儲方法。

圖4 一段梯形圖
梯形圖的每個段由兩部分組成:圖4中虛線左邊是邏輯關系組合,右邊是輸出結果。梯形圖程序編輯完成后,存儲梯形圖要將邏輯關系轉換成關系表達式存儲,以鏈表形式存儲,其結構如下。
typedef struct _TBControLadInfo

結構_TBControLadInfo存儲梯形圖的ID、子程序號、梯形圖段牽引、梯形圖所屬頁面ID、梯形圖邏輯關系組合關系表達式、最后一列輸出結果表達式。其中成員變量ladder存儲梯形圖每個段中虛線左邊的邏輯關系組合表達式。圖4所示的一段梯形圖存儲表達式如下:(((M50&M101|T22)|T28)|M217)&!M226&M215&!M224,表達式通過+、-、*、、^、=、&、|、!=、<=、<、>=、>、==等邏輯關系,在梯形圖運行時經過運算得出一個邏輯狀態(tài)0或1,然后確定最右邊一列的輸出結果。
成員變量ControlOut存儲梯形圖的每個段最右邊一列,輸出結果為組合表達式,圖4中存儲結果是(M,217),表示輔助繼電器M217線圈輸出為0或1。
在存儲時要求系統(tǒng)能自動將梯形圖符號轉換成對應的運算關系和邏輯符號,存儲在TBControLadInfo結構鏈表里,并最終存儲到數據庫。
運行系統(tǒng)首先從數據庫讀取梯形圖存儲的相關信息,然后不停循環(huán)掃描主程序,根據梯形圖程序掃描順序和相關繼電器狀態(tài),逐行分析和計算每個程序段的邏輯關系組合表達式值。若邏輯狀態(tài)為1,在最后一列輸出相關動作,若邏輯狀態(tài)為0則不輸出相關動作,從而實現梯形圖的實時執(zhí)行[5]。梯形圖運行系統(tǒng)開發(fā)有2個難點:
1)高效分析和計算程序段前面的邏輯關系表達式值
針對邏輯表達式專門開發(fā)一個運算管理類CLadParser,能滿足常用的=、&、|、!=、<=、<、>=、>、==、+、-、*、、^等所有邏輯運算,判斷邏輯和運行優(yōu)先級別。運行速度要快,否則會影響整個系統(tǒng)實時性。其實現分析和計算程序段前面的邏輯關系的方法如下:
CLadParser m_Parser; //聲明一個對象
Cstring sLad=(((M50&M101|T22)|T28)|M217)&!M226&M215&!M224;//梯形圖邏輯關系組合表達式
bool bV = m_Parser.JudgeEaluate(sLad);//計算梯形圖邏輯關系組合表達式值
if(bV){ //執(zhí)行最后一列輸出相關動作,M227置1 }
系統(tǒng)實時獲得相關繼電器的值,再通過CladParser進行分析判斷,計算出邏輯狀態(tài)值(0或1),這樣就能確定如何執(zhí)行后序動作[6]。
2)梯形圖實時調試
梯形圖一大優(yōu)點就是調試時直觀、方便,所以梯形圖在運行時,要實時觀察到相關繼電器數值和狀態(tài),某段梯形圖導通要用不同顏色來顯示。如果梯形圖前面邏輯關系表達式值為1,則這段梯形圖全部用灰色線條聯通,如圖5所示。

圖5 梯形圖編程調試
另外實時調試要有強迫和取消繼電器值改變功能,這樣可為調試帶來很多方便,在此不一一贅述。
梯形圖編程系統(tǒng)的開發(fā),將使上位機軟件開發(fā)大大簡單化,不同項目不需要編寫代碼只需要根據梯形圖來編程實現相關控制,調試方便、直觀、快捷,本文介紹的開發(fā)梯形圖編輯工具的方法,也適用于開發(fā)其他任何控制器的梯形圖編程工具。
[1]韓偉,宋明偉,魏志強,等.基于Windows的華中世紀星數控系統(tǒng)PLC編程系統(tǒng)設計[J].機床與液壓,2011,39(14):97-99.
[2]陳雪,劉蔭忠,徐恩松.基于Qt的軟PLC梯形圖編輯軟件的設計與實現[J].計算機系統(tǒng)應用,2011,20(12):64-69.
[3]吳盼盼,嚴義.基于構件的梯形圖算法模塊封裝方法[J].機電工程,2013,30(6):764-768.
[4]石銳,周雷,楊正益.軟PLC梯形圖到語句表轉換新策略的研究[J].計算機工程與應用,2010,46(18):244-248.
[5]郭書杰,馬躍,王品,等.軟件PLC梯形圖開發(fā)系統(tǒng)的研究與實現[J].組合機床與自動化加工技術,2010(5):47-51.
[6]張漢兵,葉伯生,楊道善.數控系統(tǒng)中內嵌式PLC梯形圖編程的軟件實現[J].組合機床與自動化加工技術,2002(1):26-28.
Design and Implementation of Ladder Diagram Programming Tool Software based on VC++
SHIXiangui
(School of Information Science and Technology,Xinhua University,Hefei 230088,China)
This paper introduces the design and implementation of ladder diagram programming tool software based on VC++2010.Using object-oriented method,the author designs the system hierarchical structure,makes the system more efficient,open and expansible;the storage list structure of ladder diagram,can be easily and flexibly dynamically edited;ladder graphics language can be converted into the list instruction program by running the program,and be implemented through the efficient and rapid logic and operation management instruction list.
VC++;ladder diagram;PLC control;configuration software
10.13542/j.cnki.51-1747/tn.2017.02.003
2017-03-15
安徽省教育廳重點自然科研項目(KJ2015A306)
史先桂(1975—),女,講師,碩士,研究方向:建模仿真、單片機開發(fā)、嵌入式系統(tǒng),電子郵箱:sndy999@163.com。
TP273
A
2095-5383(2017)02-0013-04