開(kāi)放式數(shù)控系統(tǒng)中軟PLC的研究開(kāi)發(fā)
點(diǎn)擊:1463
A+ A-
所屬頻道:新聞中心
引言
開(kāi)放式數(shù)控系統(tǒng)已是當(dāng)今研究熱點(diǎn),在其發(fā)展高速、高效、高精度、智能化性能的同時(shí),功能也在越來(lái)越強(qiáng),盡量采用軟件實(shí)現(xiàn)數(shù)控功能,盡量使硬件規(guī)模最小化。作為機(jī)床運(yùn)動(dòng)控制核心的PLC也應(yīng)以軟件的形式來(lái)實(shí)現(xiàn)。本文基于SERCOS的開(kāi)放式數(shù)控系統(tǒng)為硬件平臺(tái),構(gòu)建了軟82. 的體系結(jié)構(gòu),以Windows2000為操作系統(tǒng),在VC++6.0環(huán)境下開(kāi)發(fā)出軟PLC系統(tǒng)。
1 軟PLC開(kāi)發(fā)系統(tǒng)
本文的軟PLC開(kāi)發(fā)系統(tǒng)實(shí)現(xiàn)了從梯形圖到. 程序的轉(zhuǎn)化,省棄PLC的專用語(yǔ)言及其語(yǔ)法分析,采用可靠性高、效率高、通用的C語(yǔ)言,符合了開(kāi)放性的要求。
1.1 梯形圖的繪制
PLC是按巡回掃描方式工作,一般有三種編程語(yǔ)言:梯形圖、語(yǔ)句表和順序功能流程圖,其中梯形圖使用最廣。本文的軟PLC開(kāi)發(fā)系統(tǒng)就以梯形圖繪制為切入點(diǎn),在VC++6.0集成開(kāi)發(fā)環(huán)境下,基于MFC的文檔/視結(jié)構(gòu),用其GDI對(duì)象中的位圖資源表示梯形圖符號(hào),在視窗口的客戶區(qū)內(nèi)繪制梯形圖。為了正確畫出梯形圖,使用數(shù)據(jù)結(jié)構(gòu)鏈表來(lái)存取各個(gè)節(jié)點(diǎn)數(shù)據(jù)信息外,還有一個(gè)指向下一節(jié)點(diǎn)的指針;這樣,當(dāng)插入或刪除節(jié)點(diǎn)元素時(shí),只需改變指針指向。
本文使用的數(shù)據(jù)結(jié)構(gòu)如下:
這樣定義的數(shù)據(jù)結(jié)構(gòu)是正確繪制梯形圖所需。
由于本文的軟PLC是基于SERCOS接口的開(kāi)放式數(shù)控系統(tǒng),繪制梯形圖時(shí),符號(hào)地址和實(shí)際地址的對(duì)應(yīng)就與SERCOS-RECO通訊模塊相連的I/O站的地址設(shè)置??蓪⒎从硨?shí)際地址和符號(hào)地址對(duì)應(yīng)關(guān)系的表稱為助記符表。在生成助記符表文件時(shí),采用了VC6.0++提供的屬性頁(yè)資源和列表框控件。考慮到梯形圖在顯示器的一屏內(nèi)畫不完,采用了水平滾動(dòng)條和豎直滾動(dòng)條實(shí)現(xiàn)梯形圖的瀏覽,并考慮到梯形圖的重繪。
1.2 梯形圖的編譯
(1)矩陣表:梯形圖是圖像文件,上下左右工整對(duì)應(yīng),好像是個(gè)矩陣??蓪⑺鎏菪螆D節(jié)點(diǎn)元素信息的鏈表里的數(shù)據(jù)拷貝一份到數(shù)組中,并對(duì)其進(jìn)行操作得到真正意義上的矩陣表,這是實(shí)現(xiàn)編譯和生成. 程序的關(guān)鍵。生成矩陣表用到的數(shù)據(jù)結(jié)構(gòu)如下:
(2)梯形圖的編譯:繪制完梯形圖后,在運(yùn)行程序前,先要對(duì)梯形圖進(jìn)行編譯,檢查其中錯(cuò)誤。正確的梯形圖是轉(zhuǎn)化為正確的C程序并預(yù)期輸出的關(guān)鍵。
1.3 梯形圖轉(zhuǎn)化到C程序文件
本文的主要依靠生成. 程序,實(shí)現(xiàn)掃描語(yǔ)言到結(jié)構(gòu)化語(yǔ)言的轉(zhuǎn)化,用以提高82. 運(yùn)行速度。生成. 程序時(shí),先將矩陣表中各元素的符號(hào)地址做替換標(biāo)志字符$,例如常開(kāi)元素前加!,常閉元素前加$,輸出元素前加;,輸出反相元素前加!等。這樣在將來(lái)進(jìn)行實(shí)際和符號(hào)地址的地址替換,生成PLC開(kāi)發(fā)系統(tǒng)可操作的地址文件時(shí),非常方便。此外,考慮到梯形圖是以網(wǎng)絡(luò)為基礎(chǔ)順序執(zhí)行的,一個(gè)網(wǎng)絡(luò)不管由多少行組成,它只能有一個(gè)輸出,故梯形圖最終是把并聯(lián)轉(zhuǎn)化為串聯(lián)執(zhí)行的,并且遵循從下到上,從里而外的八字原則。所謂從上到下,就是處理各網(wǎng)絡(luò)時(shí)從最后一行開(kāi)始找并聯(lián)。至于從里而外,需先解釋關(guān)聯(lián)類型。本文采用梯形圖并聯(lián)開(kāi)始點(diǎn)和結(jié)束點(diǎn)之間所包含的元素個(gè)數(shù)來(lái)判斷并聯(lián)類型。如并聯(lián)開(kāi)始點(diǎn)和結(jié)束點(diǎn)之間只有一個(gè)元素,稱為單個(gè)元素并聯(lián);如有兩個(gè)元素,稱為兩個(gè)元素并聯(lián);如并聯(lián)開(kāi)始點(diǎn)和結(jié)束點(diǎn)之間有n個(gè)元素,稱為n個(gè)元素并聯(lián)。這樣,所謂從里而外就是如果網(wǎng)絡(luò)里存在多種并聯(lián),先處理單個(gè)元素并聯(lián),后處理多個(gè)元素的并聯(lián)。如果一個(gè)網(wǎng)絡(luò)中既有單個(gè)元素的并聯(lián)又有多個(gè)元素并聯(lián),第一次處理有單個(gè)元素的并聯(lián),第二次處理兩個(gè)元素的并聯(lián),第n次處理n個(gè)元素的并聯(lián)。經(jīng)過(guò)層層轉(zhuǎn)換,最終會(huì)把一個(gè)網(wǎng)絡(luò)變成一個(gè)串聯(lián)機(jī)構(gòu),相當(dāng)于梯形圖的一行。這樣就可針對(duì)這行梯形圖寫出結(jié)構(gòu)化if語(yǔ)句,進(jìn)而實(shí)現(xiàn)整個(gè)梯形圖到+ 程序文件的轉(zhuǎn)化。要成功編譯+ 程序,不僅寫出幾行正確語(yǔ)句,還須有頭文件、主函數(shù)min()、以及必要的變量說(shuō)明和賦值。圖1是生成C程序的流程圖。本文把這次轉(zhuǎn)化生成的C程序文件稱為Csiurse.c,然后根據(jù)助記符表文件中實(shí)際地址和符號(hào)地址的對(duì)應(yīng)關(guān)系轉(zhuǎn)換為PLC開(kāi)發(fā)系統(tǒng)操作的地址文件address.c。
2 軟PLC模型運(yùn)行系統(tǒng)
軟PLC模擬運(yùn)行系統(tǒng)是軟PLC的核心。通常的開(kāi)發(fā)系統(tǒng)先將編寫的PLC源程序編譯成中間代碼,然后運(yùn)行系統(tǒng)的編譯器再將中間代碼翻譯為與硬件平臺(tái)相關(guān)的機(jī)器可執(zhí)行代碼并運(yùn)行后,即可輸出結(jié)果實(shí)現(xiàn)邏輯控制目的。本文的軟PLC模擬運(yùn)行系統(tǒng)是以開(kāi)發(fā)系統(tǒng)生成的地址文件address.c為輸入。
硬PLC是按巡回掃描原理工作的。在每個(gè)掃描周期內(nèi),它都經(jīng)過(guò)輸入采樣、執(zhí)行用戶程序、輸出刷新三個(gè)階段。PLC在工作時(shí)建立1/10, 映像區(qū),所有輸入采樣的現(xiàn)場(chǎng)信息都存儲(chǔ)到輸入映像區(qū)中供程序執(zhí)行時(shí)取用,所有輸出結(jié)果都存放到輸出映像區(qū)中,最后集中進(jìn)行輸出刷新。軟PLC的工作原理亦是如此。
本文采用windows提供的定時(shí)器實(shí)現(xiàn)巡回掃描。程序開(kāi)發(fā)運(yùn)行時(shí),用函數(shù)Set Time設(shè)置定時(shí)器;程序結(jié)束時(shí),用函數(shù)KillTimer消除定時(shí)器。巡回掃描功能在WM_TIMER信息映射的Ontimer函數(shù)里實(shí)現(xiàn)。只要定時(shí)器不取消,PLC程序就一直地循環(huán)執(zhí)行,輸出結(jié)果也在實(shí)時(shí)變化。
3 軟PLC性能測(cè)試
軟PLC優(yōu)于硬PLC的主要特點(diǎn)是掃描時(shí)間短、執(zhí)行速度快。本文的軟PLC系統(tǒng)把梯形圖掃描語(yǔ)言變成了結(jié)構(gòu)化+ 語(yǔ)言,采用if語(yǔ)句實(shí)現(xiàn)所有邏輯。因結(jié)構(gòu)化if語(yǔ)句執(zhí)行速度非???,故軟PLC的執(zhí)行速度自然地得到了提高。為了驗(yàn)證這一特點(diǎn),本文采用數(shù)字示波器結(jié)合)CL 實(shí)時(shí)子系統(tǒng)提供的測(cè)量時(shí)間的實(shí)時(shí)函數(shù): RtEablePortIO,測(cè)量了1800多行if語(yǔ)句的執(zhí)行時(shí)間。測(cè)試結(jié)果為328us(而一般的PLC掃描時(shí)間為幾毫秒到幾十毫秒)??梢?jiàn),將梯形圖轉(zhuǎn)化為12 語(yǔ)句后,可使PLC的執(zhí)行速度大大提高。
4 結(jié)束語(yǔ)
數(shù)控機(jī)床中的PLC是連接NC和機(jī)床的橋梁或紐帶。本文開(kāi)發(fā)的軟PLC系統(tǒng),把梯形圖轉(zhuǎn)化為C程序,將掃描執(zhí)行轉(zhuǎn)化為編譯執(zhí)行,克服了硬PLC的缺點(diǎn),增強(qiáng)了通用性和兼容性,提高了性能價(jià)格比;這對(duì)發(fā)展開(kāi)放式數(shù)控系統(tǒng)有著重要意義。
(審核編輯: 智匯張瑜)
分享