謝勁松,梁宏斌
(遼寧科技大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,遼寧 鞍山 114051)
隨著開放式數(shù)控系統(tǒng)的發(fā)展,采用軟件控制縮小硬件規(guī)模、降低成本是目前高端數(shù)控機(jī)床的發(fā)展趨勢(shì)。軟PLC 以軟件形式實(shí)現(xiàn)了傳統(tǒng)PLC 的控制功能,具有開放的體系結(jié)構(gòu)、強(qiáng)大的網(wǎng)絡(luò)通訊功能和更強(qiáng)的數(shù)據(jù)處理能力等特點(diǎn)[1]。目前,國(guó)外已有成熟的軟PLC 產(chǎn)品,如:Servo Works 軟件中的PLC 引擎模塊、SOFTPLC公司的SoftPLC、西門子的SIMATIC WinAC 等等。國(guó)內(nèi)對(duì)軟PLC 也進(jìn)行了研究,取得了一些進(jìn)展[2-3]。文獻(xiàn)[4]給出了一種基于DSP/BIOS 嵌入式的軟PLC 執(zhí)行系統(tǒng)構(gòu)架,文獻(xiàn)[5]提出了一種基于μC/OS-II 的軟PLC 的實(shí)現(xiàn)方法,從一定程度上提升了軟PLC 的穩(wěn)定性,但他們采用的是專用操作系統(tǒng),不符合開放的要求和趨勢(shì),且軟PLC 控制系統(tǒng)的功能和穩(wěn)定性與國(guó)外相比有很大差距。
五軸數(shù)控銑床具有很高的加工精度和效率,能夠一次性完成三軸銑床很難加工的大型、復(fù)雜的自由曲面[6],但需要其軟PLC 控制系統(tǒng)更快地做出響應(yīng)。因此,性能穩(wěn)定的軟PLC 和更快的數(shù)據(jù)傳輸速率非常重要。文獻(xiàn)[7]提出了一種基于SERCOS 接口的軟PLC 系統(tǒng),但未對(duì)軟PLC 運(yùn)行系統(tǒng)深入 分析,文獻(xiàn)[8]則詳細(xì)描述了軟PLC 多任務(wù)的實(shí)現(xiàn)方法,但未給出實(shí)現(xiàn)函數(shù)等細(xì)節(jié)。因此,本文針對(duì)上述問題對(duì)五軸數(shù)控銑床的軟PLC 控制系統(tǒng)進(jìn)行了研究。
與其它開放的操作系統(tǒng)相比,Windows 具有豐富的軟件資源和極高的市場(chǎng)占有率,有利于多任務(wù)軟件的開發(fā)。但它不是實(shí)時(shí)操作系統(tǒng),無法滿足軟PLC 實(shí)時(shí)性的要求[9]??上騑indowsXP 系統(tǒng)內(nèi)核嵌入實(shí)時(shí)擴(kuò)展子系統(tǒng)RTX (Real-Time Extension)解決實(shí)這一問題。所以本文選用WindowsXP +RTX5.0 作為軟PLC的開發(fā)和運(yùn)行的軟件平臺(tái),既符合開放的要求,又能滿足數(shù)控系統(tǒng)和軟PLC 的實(shí)時(shí)性。
五軸數(shù)控銑床軟PLC 的控制流程如圖1 所示。當(dāng)有加工信息輸入時(shí),首先軟CNC 進(jìn)行分析、譯碼,然后將M、S、T 等開關(guān)量信息交由軟PLC 進(jìn)行處理,最后將CPU 處理完的開關(guān)量信息通過I/O 接口輸出,通過控制主電路電器元件通斷來驅(qū)動(dòng)銑床部件動(dòng)作。

圖1 五軸數(shù)控銑床軟PLC 的控制流程
軟PLC 控制系統(tǒng)由開發(fā)系統(tǒng)和運(yùn)行系統(tǒng)兩部分組成。開發(fā)系統(tǒng)是一個(gè)標(biāo)準(zhǔn)通用的開發(fā)環(huán)境,采用國(guó)際標(biāo)準(zhǔn)IEC61131-3 中的五種開發(fā)語言編寫用戶程序,利用通信接口模塊將可執(zhí)行的目標(biāo)代碼傳送給運(yùn)行系統(tǒng)。運(yùn)行系統(tǒng)是整個(gè)軟PLC 控制的核心,負(fù)責(zé)解釋和執(zhí)行用戶程序,將開關(guān)量控制信息輸出給電氣部分,以驅(qū)動(dòng)設(shè)備動(dòng)作。
合理的設(shè)計(jì)軟PLC 的結(jié)構(gòu)有利于提升控制系統(tǒng)的穩(wěn)定性。根據(jù)軟件組件的思想,可將軟PLC 控制系統(tǒng)分為幾個(gè)具有獨(dú)立功能的模塊,模塊間定義規(guī)范的接口[10]。五軸數(shù)控銑床軟PLC 控制系統(tǒng)總體結(jié)構(gòu)如圖2 所示。
由于軟PLC 開發(fā)系統(tǒng)只是提供一個(gè)開發(fā)環(huán)境和控制方案,而目標(biāo)代碼的執(zhí)行是由運(yùn)行系統(tǒng)完成,因此下面重點(diǎn)對(duì)軟PLC 運(yùn)行系統(tǒng)各模塊進(jìn)行分析。

圖2 軟PLC 控制系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)管理模塊是軟PLC 運(yùn)行系統(tǒng)的“大腦”,用于運(yùn)行時(shí)分配系統(tǒng)資源,調(diào)度任務(wù)線程并監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。在一個(gè)掃描周期內(nèi),如何調(diào)度各任務(wù)線程是保證軟PLC 穩(wěn)定運(yùn)行的關(guān)鍵。本文利用RTXAPI 函數(shù)庫(kù)中提供的RtSetThreadPriority()函數(shù)根據(jù)執(zhí)行的先后順序設(shè)定各任務(wù)線程優(yōu)先級(jí),當(dāng)某一任務(wù)事件觸發(fā)后,線程隊(duì)列中等級(jí)最高的線程優(yōu)先獲得CPU 時(shí)間片被執(zhí)行,從而實(shí)現(xiàn)任務(wù)線程的合理調(diào)度。任務(wù)線程執(zhí)行過程如圖3 圖示。

圖3 軟PLC 任務(wù)線程執(zhí)行過程
通訊接口模塊用于建立軟PLC 運(yùn)行系統(tǒng)與開發(fā)系統(tǒng)、軟CNC、人機(jī)操作面板以及其它應(yīng)用程序進(jìn)行數(shù)據(jù)通訊任務(wù)。其中,軟PLC 開發(fā)系統(tǒng)與運(yùn)行系統(tǒng)采用COM 組件方式進(jìn)行通訊,即開發(fā)系統(tǒng)作為客戶端向運(yùn)行系統(tǒng)傳送目標(biāo)代碼,運(yùn)行系統(tǒng)作為服務(wù)器端接收目標(biāo)代碼并反饋軟PLC 的運(yùn)行狀態(tài)。
軟PLC 運(yùn)行系統(tǒng)與軟CNC、人機(jī)操作面板通過訪問自創(chuàng)建的共享內(nèi)存區(qū)單元PLC_CNCbuffer、PLC_Platebuffer 進(jìn)行數(shù)據(jù)交換。由Communication 類來實(shí)現(xiàn)上述通信任務(wù)。

存儲(chǔ)模塊用來保存軟PLC 運(yùn)行過程中所需的數(shù)據(jù)、操作指令和數(shù)據(jù)地址,可表示為:存儲(chǔ)模塊= 數(shù)據(jù)地址 + 數(shù)據(jù) + 操作指令,因此將其分為三個(gè)子模塊:用戶程序存儲(chǔ)模塊、數(shù)據(jù)存儲(chǔ)模塊和指令存儲(chǔ)模塊。
用戶程序存儲(chǔ)模塊用于保存開發(fā)系統(tǒng)編譯完成的目標(biāo)代碼。這些目標(biāo)代碼是C/C++ 語句;例如AND X0 操作對(duì)應(yīng)如下C++代碼[11]:
{strcpy(m_statement. m_basicorder. address[0],"X0"); //提取軟元件X0 中保存的數(shù)據(jù)m_statement.m_basicorder.funcname =INSTRUCTION_AndBit;
//提供對(duì)數(shù)據(jù)X0 的操作p_execute - >pstru_funclist- >insertAtBack(m_statement); //更新鏈表數(shù)據(jù)域中的數(shù)據(jù)}
數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)輸入/輸出端子的狀態(tài)、內(nèi)部繼電器、定時(shí)器的狀態(tài)和功能塊邏輯運(yùn)算的中間結(jié)果等數(shù)據(jù)。這些數(shù)據(jù)作為全局變量供軟PLC 控制系統(tǒng)各模塊進(jìn)行訪問和修改。在執(zhí)行用戶程序過程中,CPU 根據(jù)指令存儲(chǔ)模塊中指令參數(shù)的地址來訪問數(shù)據(jù)存儲(chǔ)模塊區(qū),獲取數(shù)據(jù)進(jìn)行邏輯運(yùn)算。
指令存儲(chǔ)模塊用于存儲(chǔ)PLC 指令。每條指令對(duì)應(yīng)一個(gè)C++函數(shù),函數(shù)中封裝了對(duì)數(shù)據(jù)的操作。例如:邏輯與指令對(duì)應(yīng)函數(shù)ReadInputAndBit(),具體實(shí)現(xiàn)如下:

程序執(zhí)行模塊用于解釋和執(zhí)行目標(biāo)代碼,通過調(diào)用相應(yīng)的C++函數(shù)對(duì)堆棧進(jìn)行操作,獲取控制信息。下面以五軸數(shù)控銑床主軸正轉(zhuǎn)梯形圖程序(圖4)說明軟PLC 指令的執(zhí)行過程。

圖4 五軸數(shù)控銑床主軸正轉(zhuǎn)梯形圖程序
圖3 所示梯形圖程序執(zhí)行過程如下:
第一步:清除堆棧stack,遇到X0 串聯(lián),將X0 壓入棧頂;第二步:遇到X1 串聯(lián),彈出棧頂元素,將X1 和X0 邏輯或運(yùn)算的結(jié)果壓入棧頂;第三步:遇到并聯(lián)分支點(diǎn)A;創(chuàng)建臨時(shí)變量temp =0,將棧頂元素的值賦給temp,并彈出棧頂元素;第四步:遇到X3 串聯(lián),將X3壓入棧頂;第五步:遇到X4 串聯(lián),彈出棧頂元素X3,將X4 與X3 進(jìn)行邏輯或運(yùn)算,結(jié)果壓入棧頂;第六步:遇到并聯(lián)分支點(diǎn)B,彈出棧頂元素,將棧頂元素與temp進(jìn)行邏輯或運(yùn)算,結(jié)果賦給temp;第七步:遇到Y(jié)0 串聯(lián),將Y0 壓入棧頂;第八步:遇到Y(jié)1 串聯(lián),彈出棧頂元素Y0,將Y1 和Y0 邏輯與運(yùn)算的結(jié)果壓入棧頂;第九步:遇到并聯(lián)分支點(diǎn)C;彈出棧頂元素,將棧頂元素與temp 進(jìn)行邏輯或運(yùn)算,結(jié)果賦給temp;第十步:遇到X2 串聯(lián),將temp 與X2 邏輯與運(yùn)算的結(jié)果壓入棧頂;第十一步:遇到Y(jié)0 線圈,將棧頂元素的值賦給Y0 并彈出堆棧;第十二步:將Y0值輸出,清除堆棧stack。
程序執(zhí)行模塊不斷循環(huán)解釋執(zhí)行軟PLC 指令,直到執(zhí)行END 指令。軟PLC 程序執(zhí)行模塊工作過程如圖5 所示。注意:這里的跳轉(zhuǎn)指令不是指PLC 系統(tǒng)中的跳轉(zhuǎn)指令,而是指梯形圖程序中復(fù)雜的并聯(lián)分支塊引起的跳轉(zhuǎn)。

圖5 軟PLC 解釋和執(zhí)行指令流程圖
I/O 接口模塊是軟PLC 與輸入輸出設(shè)備進(jìn)行數(shù)據(jù)交換的通道,用于將I/O 板卡采集到的機(jī)床信號(hào)寫進(jìn)輸入映像寄存器,同時(shí)將輸出映像寄存器中軟元件的狀態(tài)輸出給端子。I/O 讀寫過程分為兩步:第一,根據(jù)五軸數(shù)控銑床電氣I/O 端口分配表在軟PLC 系統(tǒng)內(nèi)存中建立對(duì)應(yīng)物理I/O 節(jié)點(diǎn)變量,完成端口配置;第二,調(diào)用I/O 接口模塊內(nèi)部的讀寫函數(shù),在下一個(gè)掃描周期開始將軟元件狀態(tài)輸出,完成數(shù)據(jù)交換。
為智能讀取數(shù)據(jù)和進(jìn)一步提高I/O 接口物理層的開放性,軟PLC 采用圖6 所示結(jié)構(gòu)對(duì)I/O 數(shù)據(jù)存儲(chǔ)區(qū)的變量統(tǒng)一編址。
I/O 接口模塊采用按位、字節(jié)、字和雙字的尋址方式向讀寫函數(shù)提供操作數(shù)地址,并把I/O 數(shù)據(jù)存儲(chǔ)器變量區(qū)劃分為6 個(gè)區(qū)域,每個(gè)區(qū)域存儲(chǔ)相應(yīng)變量數(shù)據(jù)。其中,按位尋址的尾部編址采用了字節(jié)號(hào)加分隔符加位號(hào)的形式。

圖6 按字節(jié)、字和雙字方式編址
SERCOS(Serial Real-time Communication System)
是一種用于CNC 和數(shù)字伺服傳動(dòng)系統(tǒng)之間通信的數(shù)字接口和數(shù)據(jù)交換協(xié)議,能夠?qū)崿F(xiàn)工業(yè)控制計(jì)算機(jī)與數(shù)字伺服系統(tǒng)、傳感器和可編程控制器I/O 口之間的實(shí)時(shí)數(shù)據(jù)通信[12]。SERCOS-III 是SERCOS 發(fā)展的最新階段,采用光纖傳輸,速率高達(dá)100Mbit/s;可利用軟件SoftSERCANS 對(duì)主站進(jìn)行控制,縮減了數(shù)控系統(tǒng)的硬件;此外還具有雙環(huán)型拓?fù)浣Y(jié)構(gòu)[13],增強(qiáng)了系統(tǒng)的安全性。
軟PLC 控制系統(tǒng)采用SERCOS-III 接口可縮減數(shù)據(jù)采集的時(shí)間,進(jìn)一步提升系統(tǒng)的響應(yīng)能力、開放性和可靠性。基于SERCOS-III 接口的開放式數(shù)控系統(tǒng)結(jié)構(gòu)如圖7 所示。

圖7 基于SERCOS-III 接口的開放式數(shù)控系統(tǒng)結(jié)構(gòu)
SERCOS-III 采用報(bào)文形式實(shí)現(xiàn)主從站的通訊,報(bào)文有三種類型:主站數(shù)據(jù)報(bào)文MDT、應(yīng)答報(bào)文AT 和以太網(wǎng)報(bào)文。其工作時(shí)序如圖8 所示[14]。
SERCOS-III 主站在接收到AT 后將所有報(bào)文信息存儲(chǔ)到SoftSERCANS 創(chuàng)建的共享緩存區(qū)。軟PLC 和軟CNC 通過指針訪問該存儲(chǔ)單元獲取所需數(shù)據(jù)。類CPLCIOControl 提供了訪問該共享區(qū)域的接口。

圖8 SERCOS-III 工作時(shí)序

軟件平臺(tái)為WindowsXP +RTX5.0,硬件平臺(tái)為PC。
利用VC++6.0 編輯開發(fā)的軟PLC 運(yùn)行系統(tǒng)仿真界面如圖9 所示。運(yùn)行軟PLC 運(yùn)行系統(tǒng),當(dāng)點(diǎn)擊主軸正轉(zhuǎn)按鈕時(shí),所對(duì)應(yīng)的軟邏輯在輸入映像區(qū)的狀態(tài)發(fā)生改變,通過調(diào)用程序中的指令,將主軸正轉(zhuǎn)控制信號(hào)輸出,主軸正轉(zhuǎn)指示燈亮。
經(jīng)圖10 所示五軸數(shù)控銑床測(cè)試,軟PLC 控制系統(tǒng)實(shí)現(xiàn)了對(duì)五軸數(shù)控銑床開關(guān)量的控制。

圖9 五軸數(shù)控銑床軟PLC 運(yùn)行系統(tǒng)仿真界面

圖10 XKV715 五軸數(shù)控銑床
通過研究傳統(tǒng)PLC 對(duì)五軸數(shù)控銑床開關(guān)量信號(hào)的控制,利用C++面向?qū)ο蠹夹g(shù)和模塊化的思想編輯開發(fā)了軟PLC 控制系統(tǒng),實(shí)現(xiàn)了對(duì)五軸數(shù)控銑床開關(guān)量的控制,進(jìn)一步增強(qiáng)了數(shù)控系統(tǒng)的開放性,促進(jìn)了全軟件開放式數(shù)控系統(tǒng)和軟PLC 技術(shù)的進(jìn)一步發(fā)展。
[1]羅燕華,何嶺松,張登攀.一種軟PLC 技術(shù)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)與數(shù)字工程,2007(35):168 -171.
[2]畢 輝,程良鴻. 關(guān)于軟PLC 技術(shù)的研究及發(fā)展[J]. 機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2006,19(2):118 -119.
[3]張 磊,師 衛(wèi). 軟PLC 運(yùn)行系統(tǒng)的研究與實(shí)現(xiàn)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2008,18(11):164 -165.
[4]李建偉,賴乙宗,李 松等. 基于DSP/BIOS 的PLC 執(zhí)行系統(tǒng)開發(fā)[J]. 電子設(shè)計(jì)工程.2013,21(5):163 -165.
[5]張小亮,成友東等. 基于μC/OS-II 的軟PLC 的實(shí)現(xiàn)方法[J].機(jī)床與液壓.2008(3):470 -473.
[6]任寶剛,劉杰,宋楠. 基于PMACII 開放式五軸數(shù)控機(jī)床的研究[J]. 機(jī)電工程技術(shù),2007,36 (1):22 -24.
[7]白艷艷. 基于SERCOS 接口的開放式數(shù)控體系中的軟PLC 系統(tǒng)[J]. 機(jī)械管理開發(fā). 2005(8):78 -79.
[8]馬雄波,韓振宇,王永章. 基于RTX 的軟PLC 多任務(wù)系統(tǒng)研究[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2007(1):35-40.
[9]白江,王宇晗,金永喬. 數(shù)控系統(tǒng)軟PLC 模塊的研究與開發(fā)[J]. 機(jī)床設(shè)計(jì)與制造,2011(2):138 -140.
[10]黃延延,林躍,于海斌.軟PLC 技術(shù)研究及實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2004,30(1):165 -167.
[11]李爽. 基于開放式數(shù)控系統(tǒng)的軟PLC 開發(fā)系統(tǒng)的研究及實(shí)現(xiàn)[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2006.
[12]梁宏斌,王永章. SoftSERCANS 技術(shù)及其在數(shù)控系統(tǒng)中的應(yīng)用[J]. 計(jì)算機(jī)制造集成系,2004(11):1433 -1436.
[13]楊土權(quán),鄧則名. SERCOS III 在數(shù)控系統(tǒng)中應(yīng)用的初步探討[J]. 制造技術(shù)與機(jī)床,2009(2):172 -174.
[14]http://www.sercos.de/sites/default/files/sercos_iii_2012_en_web_0.pdf. 2012.12.