在數(shù)控系統(tǒng)中,可編程邏輯控制器(PLC)在處理開關(guān)量輔助控制問題時(shí)起著重要作用,它主要負(fù)責(zé)NC側(cè)和機(jī)床側(cè)的邏輯信號(hào)處理。在NC側(cè),CNC向PLC發(fā)送M,S,T等輔助功能代碼信息;PLC將M, S, T命令的應(yīng)答信號(hào)回送給CNC,并且控制CNC設(shè)置各坐標(biāo)的機(jī)床基準(zhǔn)點(diǎn)。在機(jī)床側(cè),PLC向機(jī)床傳送控制機(jī)床執(zhí)行的信號(hào),機(jī)床將其操作面板上開關(guān)、按鈕信號(hào)等傳送給PLC。以前,需要根據(jù)數(shù)控機(jī)床的控制要求來分析PLC與CNC及PLC與機(jī)床之間的信息交互種類和信息交互量,然后選用相應(yīng)的外部硬件PLC,或者在系統(tǒng)設(shè)計(jì)時(shí)將硬件PLC嵌入到NC硬件中口這種方法突出的缺點(diǎn)是開放性差,設(shè)計(jì)一旦定型就很難更改。
隨著計(jì)算機(jī)及相關(guān)技術(shù)的發(fā)展,使用工業(yè)PC機(jī)、基于開放式結(jié)構(gòu)已成為數(shù)控系統(tǒng)發(fā)展的主要方向。與這種情況相適應(yīng),基于PC平臺(tái)的嵌入式軟件PLC由于無需專門的編程器,可以充分利用PC機(jī)的軟硬件資源,直接采用梯形圖或語(yǔ)言編程,具有良好的人機(jī)界面等優(yōu)點(diǎn),在數(shù)控系統(tǒng)中正逐漸取代硬件PLC成為該領(lǐng)域輔助功能控制的新方法。
本文討論我們開發(fā)的開放式數(shù)控系統(tǒng)中所采用的軟PLC技術(shù)。PLC功能在我們的數(shù)控系統(tǒng)中作為一個(gè)子系統(tǒng)得以實(shí)現(xiàn),該子系統(tǒng)支持梯形圖和語(yǔ)言兩種編程方式,梯形圖和語(yǔ)言之間可通過一個(gè)通用數(shù)據(jù)結(jié)構(gòu)進(jìn)行相互轉(zhuǎn)換,同時(shí)這個(gè)通用數(shù)據(jù)結(jié)構(gòu)也是PLC執(zhí)行模塊的輸入。目前該子系統(tǒng)支持30個(gè)國(guó)際通用的PLC基本指令和功能指令,能滿足絕大多數(shù)PLC應(yīng)用的需求。
1 軟件PLC系統(tǒng)的結(jié)構(gòu)
在數(shù)控系統(tǒng)開放性要求越來越高的今天,硬件PLC的缺點(diǎn)越來越突出,主要表現(xiàn)在:
兼容性差:生產(chǎn)廠家眾多,各種機(jī)型互不兼容,沒有統(tǒng)一的標(biāo)準(zhǔn),在編程元件的種類、數(shù)目、編程語(yǔ)言等方面各不相同;
封閉、擴(kuò)展能力差:產(chǎn)品的功能實(shí)現(xiàn)有賴于硬件,數(shù)據(jù)結(jié)構(gòu)相對(duì)封閉,用戶難以改變或增添PLC的功能;
對(duì)使用者的素質(zhì)要求高:現(xiàn)行的PLC產(chǎn)品,其編程方式要求使用者對(duì)PLC的硬件結(jié)構(gòu)、PLC電氣原理、編程指令均要有相當(dāng)?shù)牧私?,不利于PLC的進(jìn)一步推廣使用;
可維護(hù)性差:當(dāng)PLC出現(xiàn)故障時(shí),需由專業(yè)人員用專用工具檢測(cè)硬件,再維修硬件;
成本較高。
為了解決目前數(shù)控機(jī)床和數(shù)控系統(tǒng)中PLC存在的問題,我們?cè)诨赪intlows2000的開放式數(shù)控系統(tǒng)開發(fā)中對(duì)軟件PLC進(jìn)行了研究和開發(fā)口開發(fā)原則是體現(xiàn)開放式數(shù)控系統(tǒng)的要求,采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)和開放的外部接口,PLC控制功能的完成不依賴于具體的硬件,編程元件的數(shù)目、種類可根據(jù)需要?jiǎng)討B(tài)添加,無需更改硬件,降低PLC編程進(jìn)門門檻,降低整個(gè)數(shù)控系統(tǒng)的成本。
1.1 軟件PLC的結(jié)構(gòu)
基于Winoows2000的開放式數(shù)控系統(tǒng)軟件在物理上可劃分為在計(jì)算機(jī)CPU上運(yùn)行的上位機(jī)部分和在運(yùn)動(dòng)控制卡DSP處理器上運(yùn)行的下位機(jī)部分。因此PLC子系統(tǒng)也可分為上、下位機(jī)兩大部分,上位機(jī)又可分為離線的PLC程序編輯部分和在線的PLC執(zhí)行人機(jī)界面部分,其結(jié)構(gòu)如圖3所示。
上位機(jī)離線部分主要完成PLC梯形圖編程、語(yǔ)言編程、梯形圖程序語(yǔ)法檢查、梯形圖程序邏輯檢查、語(yǔ)言程序語(yǔ)法檢查、語(yǔ)言程序邏輯檢查、梯形圖程序與通用數(shù)據(jù)結(jié)構(gòu)雙向轉(zhuǎn)換、語(yǔ)言程序與通用數(shù)據(jù)結(jié)構(gòu)雙向轉(zhuǎn)換;上位機(jī)在線執(zhí)行部分通過人機(jī)界面控制和反饋下位機(jī)對(duì)PLC程序的執(zhí)行;PLC程序的具體執(zhí)行由下位機(jī)在線處理。其中:
圖1 軟PLC結(jié)構(gòu)圖
梯形圖和語(yǔ)言編程模塊在Windows2000環(huán)境下負(fù)責(zé)離線PLC圖形化和語(yǔ)言化編程;
梯形圖程序語(yǔ)法檢查模塊檢查用戶PLC圖形程序有無
指令標(biāo)記重復(fù)、指令地址越界等語(yǔ)法錯(cuò)誤;
梯形圖程序邏輯檢查模塊檢查PLC圖形程序有無邏輯錯(cuò)誤,如指令位置不正確、梯級(jí)中缺少輸出指令等;
語(yǔ)言程序語(yǔ)法檢查模塊檢查用戶語(yǔ)句程序有無拼寫、指令格式、指令地址越界等語(yǔ)法錯(cuò)誤;
語(yǔ)言程序邏輯檢查模塊檢查語(yǔ)句表程序是否存在邏輯錯(cuò)誤,如RD X2.0AND. STK就是錯(cuò)誤指令段,因?yàn)锳ND.STK操作需要堆棧中至少有兩個(gè)有效位,若將該指令段改為RDX2.0RD X2.1AND. STK其邏輯就正確了,同理,指令段RnR2.0RD X2.1AND. STKG1.2SUB9PRM2也是錯(cuò)誤的PLC指令段,因?yàn)镃OM指令只需要一個(gè)控制條件,而該指令段有兩個(gè)控制條件;
梯形圖與通用數(shù)據(jù)結(jié)構(gòu)雙向轉(zhuǎn)換模塊對(duì)梯形圖程序解釋得到一個(gè)通用的數(shù)據(jù)結(jié)構(gòu),從這個(gè)通用數(shù)據(jù)結(jié)構(gòu)反過來也可得到梯形圖程序;
語(yǔ)言程序與通用數(shù)據(jù)結(jié)構(gòu)雙向轉(zhuǎn)換模塊對(duì)語(yǔ)言程序解釋得到一個(gè)通用的數(shù)據(jù)結(jié)構(gòu),從這個(gè)通用數(shù)據(jù)結(jié)構(gòu)反過來也可得到語(yǔ)言程序;
PLC執(zhí)行模塊在實(shí)時(shí)多任務(wù)環(huán)境下實(shí)現(xiàn)在線PLC功能。
通過通用數(shù)據(jù)結(jié)構(gòu)的銜接,實(shí)現(xiàn)了梯形圖程序和語(yǔ)言程序的雙向轉(zhuǎn)換,而且這個(gè)通用數(shù)據(jù)結(jié)構(gòu)也是PLC執(zhí)行模塊的輸入。
1.2 軟件PLC白勺特點(diǎn)
相對(duì)于硬件PLC來說,軟件PLC具有下述特點(diǎn):
(1)傳統(tǒng)PLC的功能以應(yīng)用軟件的形式實(shí)現(xiàn)。軟件PLC實(shí)際上就是傳統(tǒng)PLC的功能以應(yīng)用軟件的形式實(shí)現(xiàn),這是軟件數(shù)控的表現(xiàn)形式,也是開放式數(shù)控系統(tǒng)的要求。軟件數(shù)控可以認(rèn)為是開放式數(shù)控的高級(jí)階段,軟件數(shù)控的主要特性表現(xiàn)在兩個(gè)方面:一是高度開放的體系結(jié)構(gòu);二是應(yīng)用軟件的表現(xiàn)形式,即系統(tǒng)的主要功能部件均表現(xiàn)為應(yīng)用軟件的形式。軟件化可大大增強(qiáng)了系統(tǒng)的伸縮性和可調(diào)節(jié)性,從而使其體系結(jié)構(gòu)實(shí)現(xiàn)高度開放性成為可能。
(2)易于實(shí)現(xiàn)與硬件無關(guān)性要求口軟PLC控制功能的完成不依賴于具體的硬件,不存在機(jī)型不兼容問題;編程軟元件的數(shù)目、種類可根據(jù)需要?jiǎng)討B(tài)添加,無需更改硬件。
(3)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)易于實(shí)現(xiàn)深度的系統(tǒng)開放。由于采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),對(duì)特定機(jī)床,只需編寫相應(yīng)的梯形圖程序或語(yǔ)句程序,不必另加硬件或另外重新設(shè)計(jì)軟件,這簡(jiǎn)化了PLC的使用,使數(shù)控系統(tǒng)有可能向深度方向開放。這種靈活的實(shí)現(xiàn)機(jī)制有望大幅度提升數(shù)控系統(tǒng)的控制性能,促使數(shù)控系統(tǒng)的智能化時(shí)代早日到來。
(4)方便用戶使用。由于在Windows2000圖形化界面下完成用戶梯形圖或語(yǔ)言程序編制,并可實(shí)現(xiàn)梯形圖和語(yǔ)言的相互轉(zhuǎn)化,降低了PLC編程進(jìn)門門檻。
(5)成本低口PLC的控制功能由軟件完成,這種實(shí)現(xiàn)形式上的變革使得系統(tǒng)可以更方便、更廣泛地應(yīng)用計(jì)算機(jī)技術(shù)的先進(jìn)成果,簡(jiǎn)化系統(tǒng)實(shí)現(xiàn)難度,縮短研發(fā)周期,有助于技術(shù)創(chuàng)新,可相應(yīng)降低整個(gè)數(shù)控系統(tǒng)的成本。
2 PLC程序圖形化編程環(huán)境的實(shí)現(xiàn)和梯形圖與語(yǔ)言的轉(zhuǎn)換
2.1 PLC程序圖形化編程環(huán)境的實(shí)現(xiàn)
PLC圖形編程環(huán)境采用雙向鏈表數(shù)據(jù)結(jié)構(gòu)描述和記錄屏幕編輯位置的狀態(tài)。該鏈表的數(shù)據(jù)結(jié)構(gòu)如下:以梯形圖每行的頭指針作為鏈表的一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)指向一個(gè)動(dòng)態(tài)數(shù)組,動(dòng)態(tài)數(shù)組的每一元素中存儲(chǔ)的是特定行的梯形圖元素。PLC有2類指令:基本指令和功能指令?;局噶罟?2個(gè),完成簡(jiǎn)單的“與”、“或”等基本邏輯運(yùn)算;功能指令共24個(gè),實(shí)現(xiàn)定時(shí)、記數(shù)、譯碼、加、減、乘、除等復(fù)雜功能口單個(gè)梯形圖元素的數(shù)據(jù)結(jié)構(gòu)為:
2.3 語(yǔ)言程序轉(zhuǎn)換為梯形圖程序的算法
語(yǔ)言程序轉(zhuǎn)換為對(duì)應(yīng)梯形圖程序的算法如下:
(1)讀取一條PL.C.指令,若為指令結(jié)束標(biāo)志則轉(zhuǎn)(6)口若為RD,RD. NOT等建立新梯級(jí)指令則轉(zhuǎn)(2):若為AND, AND用.NOT或OR , OR .NOT或RTI.STK, RD.NOT. DTK或TMR01、SUB5等增加梯形圖的列或行的指令則轉(zhuǎn)(3);若為DR.STK,AND.STK等塊并聯(lián)指令則轉(zhuǎn)(4):
(2)添加一新數(shù)組元素,根據(jù)當(dāng)前指令和上一梯級(jí)最大行值填寫該數(shù)組元素的數(shù)據(jù)域;
(3)添加一新數(shù)組元素,根據(jù)當(dāng)前指令和前一數(shù)組元素?cái)?shù)據(jù)域信息填寫新數(shù)組元素的數(shù)據(jù)域;
(4)添加一新數(shù)組元素,根據(jù)因DR.STK、AND.STK增加的數(shù)組元素?cái)?shù)目修改前一數(shù)組元素?cái)?shù)據(jù)域的連接方式,然后刪掉因OR.STK指令和}AND.STK指令增加的數(shù)組元素;
(5)轉(zhuǎn)(1);
(6)按動(dòng)態(tài)數(shù)組各元素?cái)?shù)據(jù)域的信息繪制梯形圖。
此算法稍作修改就可作為梯形圖程序向語(yǔ)言程序轉(zhuǎn)換的算法:此時(shí)指令結(jié)束標(biāo)志、建立新梯級(jí)指令、行或列增加指令、塊并聯(lián)中表示連接方式的DR.STK, AND.STK指令等均表現(xiàn)為相應(yīng)的梯形圖符號(hào)口
3 PLC程序的執(zhí)行
數(shù)控系統(tǒng)中的PLC根據(jù)所處理機(jī)床事件的實(shí)時(shí)性要求,可劃分為高級(jí)PLC和低級(jí)PLC。前者主要處理急停、超程、循環(huán)啟動(dòng)、進(jìn)給保持等實(shí)時(shí)性要求較高的事件,后者處理機(jī)床控制面板輸入和輔助功能M、S、T)等實(shí)時(shí)性要求較低事件。
對(duì)每一個(gè)PLC指令,都需要編寫好其對(duì)應(yīng)的執(zhí)行函數(shù),建立函數(shù)地址表口當(dāng)PLC程序執(zhí)行時(shí),查詢指令鏈表并從函數(shù)地址表中調(diào)用執(zhí)行函數(shù)。
3.1 PLC程序在內(nèi)存中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)
上位機(jī)PLC程序在內(nèi)存中的表示使用了動(dòng)態(tài)數(shù)組,這樣可以將PLC程序直接存儲(chǔ)為相應(yīng)的文件,以便將來的修改等操作。對(duì)下位機(jī)而言,一個(gè)好的數(shù)據(jù)結(jié)構(gòu)對(duì)提高系統(tǒng)的執(zhí)行效率是非常關(guān)鍵的,特別是對(duì)數(shù)控系統(tǒng)這種具有較高實(shí)時(shí)性要求的系統(tǒng)更是如此,而由于下位機(jī)不是在Windows2000下運(yùn)行,因此需要對(duì)上位機(jī)數(shù)據(jù)結(jié)構(gòu)作較小的轉(zhuǎn)換??疾霵LC指令系統(tǒng)發(fā)現(xiàn):基本上每個(gè)功能指令前面都有一個(gè)或幾個(gè)基本指令作為控制指令,對(duì)于沒有控制指令的功能指令,可為其增加一空操作(NOP)指令作為控制指令,這樣就可利用每一個(gè)功能指令與它的最后一個(gè)基本控制指令,將功能指令同基本指令聯(lián)系起來,即用圖2所示的鏈表結(jié)構(gòu)來實(shí)現(xiàn)PLC程序在內(nèi)存中的存儲(chǔ)。
該鏈表的數(shù)據(jù)結(jié)構(gòu)如下:
3.2 PLC程序的執(zhí)行算法
PLC的執(zhí)行如圖2所示:當(dāng)某級(jí)PLC程序被調(diào)用時(shí),頭指針指向基本指令鏈表的表頭,然后沿鏈表往后移動(dòng)并執(zhí)行相應(yīng)的指令,一直到該級(jí)PLC鏈表的結(jié)尾為止。在執(zhí)行過程中,當(dāng)某一基本指令鏈接有功能指令時(shí),即基本指令為功能指令的最后一個(gè)控制條件時(shí)執(zhí)行該功能指令口當(dāng)功能指令執(zhí)行完后,返回到基本指令并執(zhí)行下一個(gè)基本指令。在PLC執(zhí)行過程中,各指令邏輯操作的結(jié)果暫存于“堆棧寄存器”中,同時(shí)各指令也從“堆棧寄存器”中獲取中間結(jié)果參與邏輯運(yùn)算口所謂“堆棧寄存器”是一個(gè)16位的內(nèi)存區(qū),所涉及的“移位”,“與”,“或”等基本邏輯操作是用C語(yǔ)言的相應(yīng)邏輯運(yùn)算來實(shí)現(xiàn)的。
PLC執(zhí)行程序的具體算法可用偽代碼表示如下:
4 PLC程序編輯和轉(zhuǎn)換實(shí)例
編輯PLC梯形圖程序時(shí),只需用鼠標(biāo)單擊窗口左側(cè)工具欄中的圖標(biāo),在左窗口的相應(yīng)位置即可白動(dòng)畫出需要的梯形圖元素口通過雙擊已畫出的梯形圖元素,可彈出對(duì)話框。在對(duì)話框的標(biāo)記欄和地址欄中可分別輸入該元素的標(biāo)識(shí)和地址,如W1和Y1.0;在對(duì)話框的參數(shù)欄中可輸入?yún)?shù),如20和R30整個(gè)梯形圖編輯過程非常直觀、簡(jiǎn)單。通過點(diǎn)擊程序生成菜單中的語(yǔ)句生成生成子菜單,可實(shí)現(xiàn)梯形圖程序向語(yǔ)句程序的轉(zhuǎn)換,如圖3。編輯PLC語(yǔ)言程序時(shí),可在右窗口輸入PLC指令,如RD X7.0口同理點(diǎn)擊程序生成菜單中的梯圖生成子菜單,可將右邊的語(yǔ)言程序轉(zhuǎn)換成左邊的梯形圖程序。
圖2 PLC編輯界面
5 結(jié)束語(yǔ)
本文提出的內(nèi)嵌式軟PLC在基于Windows2000的開放式數(shù)控系統(tǒng)中的實(shí)現(xiàn)方法體現(xiàn)了數(shù)控系統(tǒng)的開放性要求,易于實(shí)現(xiàn)與硬件無關(guān)性要求,統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)易于實(shí)現(xiàn)深度的系統(tǒng)開放,方便的編程環(huán)境、靈活的編程方式可降低PLC編程進(jìn)門門檻,方便用戶使用,另外該方法降低了系統(tǒng)成本。
(審核編輯: 滄海一土)
分享