基于Windows的華中數(shù)控世紀(jì)星數(shù)控系統(tǒng)PLC編程系統(tǒng)設(shè)計(jì)
點(diǎn)擊:1748
A+ A-
所屬頻道:新聞中心
數(shù)控系統(tǒng)內(nèi)部控制邏輯是由通用或內(nèi)裝式可編程控制器(PLC)來實(shí)現(xiàn)的。目前,PLC的編程方法主要有專用編程器和基于PC的軟件編程器兩種。當(dāng)前,華中數(shù)控系統(tǒng)PLC控制是基于DOS環(huán)境使用C語言而設(shè)計(jì)的,該軟件已經(jīng)不太符合現(xiàn)代計(jì)算機(jī)大多采用Windows操作系統(tǒng)的實(shí)際要求,設(shè)計(jì)人員使用起來不直觀、不方便,而且使用C語言編程同使用梯形圖編程相比,對(duì)編程人員要求較高。根據(jù)這些情況,有必要研發(fā)一個(gè)基于個(gè)人計(jì)算機(jī)的能為用戶提供直觀、方便、高效的編程環(huán)境的PLC軟件開發(fā)平臺(tái),使數(shù)控實(shí)驗(yàn)臺(tái)在最大程度上發(fā)揮它的積極效用,使學(xué)生能夠直觀、方便地了解和掌握數(shù)控系統(tǒng)中PLC的編程和仿真操作。
1 華中數(shù)控系統(tǒng)中的可編程控制器
華中數(shù)控世紀(jì)星采用的是“內(nèi)裝型”PLC。和CNC共用一個(gè)CPU、輸A./輸出、電源。該P(yáng)LC是從屬于CNC裝置的一部分,與CNC之間的信號(hào)傳送在CNC內(nèi)部實(shí)現(xiàn),PC與機(jī)床側(cè)的信息傳送則通過CNC的I/O接口電路實(shí)現(xiàn)。由于CNC的功能和PLC的功能一起考慮,因而這種類型的系統(tǒng)在硬件和軟件的整體結(jié)構(gòu)上合理、實(shí)用、性能價(jià)格比高。PLC和CNC之間沒有多余的連線,而且PLC上的信息可以在CNC的顯示器上顯示,PLC的編程更為方便,故障的診斷功能也有所提高。
2 數(shù)控PLC編程系統(tǒng)的整體設(shè)計(jì)
2.1 整體設(shè)計(jì)方案
在數(shù)控器系統(tǒng)中,CNC和PLC協(xié)調(diào)配合共同完成對(duì)數(shù)控機(jī)床的控制。PLC主要完成與邏輯運(yùn)算有關(guān)的一些動(dòng)作,沒有軌跡上的具體要求,它接受CNC的控制代碼M、S、T等順序動(dòng)作信息。對(duì)其進(jìn)行譯碼,轉(zhuǎn)換成對(duì)應(yīng)的控制信號(hào)控制輔助裝置完成機(jī)床相應(yīng)的開關(guān)動(dòng)作,如工件的裝夾、刀具的更換等一些輔助動(dòng)作;它還接受機(jī)床操作面板的指令,一方面直接控制機(jī)床的動(dòng)作,另一方面將一部分指令送往CNC用于加工過程的控制。PLC內(nèi)嵌在數(shù)控裝置中,可以進(jìn)行讀寫操作,借助CNC系統(tǒng)的全部硬件資源,具有友好的界面接口,便于用戶編程和操作。基于Windows系統(tǒng)的圖形開發(fā)系統(tǒng),進(jìn)行圖形化編程。
2.2 開發(fā)工具的選擇
根據(jù)設(shè)計(jì)需要選擇C++Builder 5.0為開發(fā)工具,該工具是基于Microsoft公司的32位Windows系列操作系統(tǒng)的可視化開發(fā)工具,使用的程序語言是C++語言,既可進(jìn)行過程化程序設(shè)計(jì),又可進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),強(qiáng)調(diào)對(duì)高級(jí)抽象的支持,用它開發(fā)出的應(yīng)用程序具有可重用的特點(diǎn)。采取面向?qū)ο蠹夹g(shù),高質(zhì)量的代碼能有效降低軟件的復(fù)雜度和提高開發(fā)效率。
2.3 數(shù)據(jù)結(jié)構(gòu)的選擇
數(shù)據(jù)結(jié)構(gòu)類型的選擇首先要滿足對(duì)于待處理的數(shù)據(jù)元素及其關(guān)系的描述;其次在能夠完整描述問題空間所有數(shù)據(jù)元素及它們之間關(guān)系的基礎(chǔ)上,應(yīng)采用盡可能簡單的數(shù)據(jù)結(jié)構(gòu),以避免復(fù)雜數(shù)據(jù)結(jié)構(gòu)帶來的復(fù)雜操作;同時(shí),應(yīng)考慮與其他模塊之間數(shù)據(jù)結(jié)構(gòu)的通用性?;谝陨峡紤],作者采用具有線性特性的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)梯形圖編輯過程中元件添加、刪除及修改時(shí)設(shè)計(jì)數(shù)據(jù)的保存和讀取數(shù)據(jù)的高效性。
系統(tǒng)采用了標(biāo)準(zhǔn)模板庫(STL)中的標(biāo)準(zhǔn)順序容器list來存儲(chǔ)設(shè)計(jì)過程中涉及到的梯形圖數(shù)據(jù),主要對(duì)象容器定義如下:
(1)梯級(jí)鏈表:Tyr,edef list<CRung*>CRungList;
(2)行鏈表:Typedef list<CRow*>CRowList;
(3)元件鏈表:Typedef list<CElement*>CEle—mentList o
通過list容器模板自帶的push—back成員函數(shù)將要加入的對(duì)象壓入到相應(yīng)種類容器中,通過這樣的操作把各對(duì)象逐一地放人容器中,再通過其他成員函數(shù)如ecase、insert等對(duì)它們進(jìn)行操作,實(shí)現(xiàn)各對(duì)象數(shù)據(jù)的集中管理。
當(dāng)用梯形圖編程系統(tǒng)繪制梯形圖時(shí),每在計(jì)算機(jī)屏幕上畫一個(gè)梯級(jí),就會(huì)生成該梯級(jí)類的一個(gè)對(duì)象,同時(shí)程序把該對(duì)象加入到梯形圖類中的CRungList鏈表當(dāng)中;每畫一個(gè)行,就會(huì)生成該行類的一個(gè)對(duì)象,同時(shí)程序把該對(duì)象加入到對(duì)應(yīng)的梯級(jí)對(duì)象中的CRowList鏈表當(dāng)中;每畫一個(gè)元件,就會(huì)生成該元件類的一個(gè)對(duì)象,同時(shí)程序把該對(duì)象加入到對(duì)應(yīng)行對(duì)象中的CElementList鏈表當(dāng)中。所以,在CElementList鏈表中的一個(gè)結(jié)點(diǎn)對(duì)應(yīng)梯形圖中一個(gè)水平連線、元件或功能塊等。
3 數(shù)控PLC編程系統(tǒng)中的梯形圖元件基類設(shè)計(jì)
梯形圖一般由多個(gè)不同的梯級(jí)組成,每一個(gè)梯級(jí)又可以由“一行”或“數(shù)行”組成,每行由一個(gè)或幾個(gè)輸入元件及一個(gè)輸出元件組成。輸出元件應(yīng)出現(xiàn)在梯級(jí)的最右邊,而輸入元件則出現(xiàn)在輸出指令的左邊。
從計(jì)算機(jī)角度看,梯形圖是一幅位圖,它由一個(gè)個(gè)像素組成。計(jì)算機(jī)沒有能力分析梯形圖并判斷出每個(gè)元件之間的邏輯關(guān)系,所以,需要找到一種描述方法,讓計(jì)算機(jī)能“看懂”梯形圖。為此,作者采用面向?qū)ο笤O(shè)計(jì)方法來開發(fā)梯形圖編輯器。
首先分析和識(shí)別梯形圖中的不同對(duì)象。根據(jù)對(duì)象的性質(zhì)和功能抽象歸并為不同類,建立類的層次結(jié)構(gòu)。面向?qū)ο筌浖O(shè)計(jì)主要是類的設(shè)計(jì),而不是對(duì)象的設(shè)計(jì),因?yàn)楦鞣N對(duì)象是在梯形圖對(duì)應(yīng)的編輯過程中動(dòng)態(tài)產(chǎn)生的。通過對(duì)系統(tǒng)的梯形圖對(duì)象、梯級(jí)對(duì)象、行對(duì)象及元件對(duì)象進(jìn)行抽象,建立了梯形圖編程系統(tǒng)的類層次結(jié)構(gòu),其類層次結(jié)構(gòu)中六大類對(duì)象為:梯形圖類、梯級(jí)類、行類、梯形圖畫布類、梯形圖文檔類。元件庫模型的基類CElement是從梯形圖編程系統(tǒng)所支持的所有元件抽象出來的一個(gè)類,它定義了其他類的共有操作接口和屬性,是其他圖元類的父類。模塊中所有的元件子類都根據(jù)C++的繼承機(jī)制繼承了基類的屬性,并根據(jù)自己支持的圖元形狀有選擇地重載基類相應(yīng)的操作,以滿足子類的需要。所以基類的定義在梯形圖編輯模塊的實(shí)現(xiàn)過程中是非常關(guān)鍵的一步。
作者采用的規(guī)則是:將具有相同性質(zhì),包括相同外部性質(zhì)和內(nèi)部處理能力的對(duì)象歸為一類作為最低層次,然后采用自下而上逐步抽象的方法,將具有共性的類的公共性質(zhì)再并人一個(gè)相對(duì)于被抽取共性的類的基類中;被抽取共性的類便為導(dǎo)出類,抽取成形的類為基類。如此類推,不斷產(chǎn)生更多的基類,最終建立了類的層次結(jié)構(gòu)。在對(duì)所有梯形圖元件進(jìn)行共性抽象之前,做了如下處理:
(1)梯形圖元件除元件自身信息外,還應(yīng)包含其連接線的信息;
(2)把梯形圖的空格和水平連接線作為特殊元件;
(3)在梯形圖中,常開觸點(diǎn)、常閉觸點(diǎn)等元件有一個(gè)操作參數(shù);定時(shí)器、計(jì)數(shù)器等元件有兩個(gè)操作參數(shù);空格和水平連接線等元件沒有操作參數(shù)。為了對(duì)所有梯形圖元件進(jìn)行共性的抽象表示,作者為每個(gè)元件設(shè)置了兩個(gè)操作參數(shù)。例如常開觸點(diǎn)只有一個(gè)操作參數(shù)時(shí),另外一個(gè)操作參數(shù)設(shè)置為空。
拋開梯形圖的圖像表象,梯形圖中每個(gè)元件包含的共同屬性如圖1所示。元件基類定義元件的所在位置、持久化和事件處理等操作,其定義描述如下:
圖1基類元件的共同屬性
(1)標(biāo)識(shí)信息:元件唯一的功,類型及元件的操作參數(shù);
(2)位置信息:元件的頂點(diǎn)位置、長度等;
(3)繪制行為:繪制元件圖符,繪制元件包含的線型;
(4)命中測試行為:鼠標(biāo)的位置是否命中圖元以及具體部位;
(5)持久化行為:存盤和讀取。
梯形圖元件基類的關(guān)鍵代碼如下:
4 結(jié)束語
以整體設(shè)計(jì)為基礎(chǔ),有了元件基類,就可以以其為父類,根據(jù)每個(gè)元件的不同特性,為每個(gè)元件設(shè)計(jì)一個(gè)子類。作者把各元件類以相應(yīng)的英文單詞來命名,如常開觸點(diǎn)類(Normally Open Contact)命名為CContactNO。每一種元件都在該程序的工程組當(dāng)中單列一個(gè)單元,并把相應(yīng)元件類的定義寫進(jìn)去,為編輯器的具體實(shí)現(xiàn)打下基礎(chǔ)。
(審核編輯: 滄海一土)
分享