謝勁松,梁宏斌
(遼寧科技大學 機械工程與自動化學院,遼寧 鞍山 114051)
隨著開放式數控系統(tǒng)的發(fā)展,采用軟件控制縮小硬件規(guī)模、降低成本是目前高端數控機床的發(fā)展趨勢。軟PLC 以軟件形式實現了傳統(tǒng)PLC 的控制功能,具有開放的體系結構、強大的網絡通訊功能和更強的數據處理能力等特點[1]。目前,國外已有成熟的軟PLC 產品,如:Servo Works 軟件中的PLC 引擎模塊、SOFTPLC公司的SoftPLC、西門子的SIMATIC WinAC 等等。國內對軟PLC 也進行了研究,取得了一些進展[2-3]。文獻[4]給出了一種基于DSP/BIOS 嵌入式的軟PLC 執(zhí)行系統(tǒng)構架,文獻[5]提出了一種基于μC/OS-II 的軟PLC 的實現方法,從一定程度上提升了軟PLC 的穩(wěn)定性,但他們采用的是專用操作系統(tǒng),不符合開放的要求和趨勢,且軟PLC 控制系統(tǒng)的功能和穩(wěn)定性與國外相比有很大差距。
五軸數控銑床具有很高的加工精度和效率,能夠一次性完成三軸銑床很難加工的大型、復雜的自由曲面[6],但需要其軟PLC 控制系統(tǒng)更快地做出響應。因此,性能穩(wěn)定的軟PLC 和更快的數據傳輸速率非常重要。文獻[7]提出了一種基于SERCOS 接口的軟PLC 系統(tǒng),但未對軟PLC 運行系統(tǒng)深入 分析,文獻[8]則詳細描述了軟PLC 多任務的實現方法,但未給出實現函數等細節(jié)。因此,本文針對上述問題對五軸數控銑床的軟PLC 控制系統(tǒng)進行了研究。
與其它開放的操作系統(tǒng)相比,Windows 具有豐富的軟件資源和極高的市場占有率,有利于多任務軟件的開發(fā)。但它不是實時操作系統(tǒng),無法滿足軟PLC 實時性的要求[9]。可向WindowsXP 系統(tǒng)內核嵌入實時擴展子系統(tǒng)RTX (Real-Time Extension)解決實這一問題。所以本文選用WindowsXP +RTX5.0 作為軟PLC的開發(fā)和運行的軟件平臺,既符合開放的要求,又能滿足數控系統(tǒng)和軟PLC 的實時性。
五軸數控銑床軟PLC 的控制流程如圖1 所示。當有加工信息輸入時,首先軟CNC 進行分析、譯碼,然后將M、S、T 等開關量信息交由軟PLC 進行處理,最后將CPU 處理完的開關量信息通過I/O 接口輸出,通過控制主電路電器元件通斷來驅動銑床部件動作。
圖1 五軸數控銑床軟PLC 的控制流程
軟PLC 控制系統(tǒng)由開發(fā)系統(tǒng)和運行系統(tǒng)兩部分組成。開發(fā)系統(tǒng)是一個標準通用的開發(fā)環(huán)境,采用國際標準IEC61131-3 中的五種開發(fā)語言編寫用戶程序,利用通信接口模塊將可執(zhí)行的目標代碼傳送給運行系統(tǒng)。運行系統(tǒng)是整個軟PLC 控制的核心,負責解釋和執(zhí)行用戶程序,將開關量控制信息輸出給電氣部分,以驅動設備動作。
合理的設計軟PLC 的結構有利于提升控制系統(tǒng)的穩(wěn)定性。根據軟件組件的思想,可將軟PLC 控制系統(tǒng)分為幾個具有獨立功能的模塊,模塊間定義規(guī)范的接口[10]。五軸數控銑床軟PLC 控制系統(tǒng)總體結構如圖2 所示。
由于軟PLC 開發(fā)系統(tǒng)只是提供一個開發(fā)環(huán)境和控制方案,而目標代碼的執(zhí)行是由運行系統(tǒng)完成,因此下面重點對軟PLC 運行系統(tǒng)各模塊進行分析。
圖2 軟PLC 控制系統(tǒng)結構框圖
系統(tǒng)管理模塊是軟PLC 運行系統(tǒng)的“大腦”,用于運行時分配系統(tǒng)資源,調度任務線程并監(jiān)控系統(tǒng)的運行狀態(tài)。在一個掃描周期內,如何調度各任務線程是保證軟PLC 穩(wěn)定運行的關鍵。本文利用RTXAPI 函數庫中提供的RtSetThreadPriority()函數根據執(zhí)行的先后順序設定各任務線程優(yōu)先級,當某一任務事件觸發(fā)后,線程隊列中等級最高的線程優(yōu)先獲得CPU 時間片被執(zhí)行,從而實現任務線程的合理調度。任務線程執(zhí)行過程如圖3 圖示。
圖3 軟PLC 任務線程執(zhí)行過程
通訊接口模塊用于建立軟PLC 運行系統(tǒng)與開發(fā)系統(tǒng)、軟CNC、人機操作面板以及其它應用程序進行數據通訊任務。其中,軟PLC 開發(fā)系統(tǒng)與運行系統(tǒng)采用COM 組件方式進行通訊,即開發(fā)系統(tǒng)作為客戶端向運行系統(tǒng)傳送目標代碼,運行系統(tǒng)作為服務器端接收目標代碼并反饋軟PLC 的運行狀態(tài)。
軟PLC 運行系統(tǒng)與軟CNC、人機操作面板通過訪問自創(chuàng)建的共享內存區(qū)單元PLC_CNCbuffer、PLC_Platebuffer 進行數據交換。由Communication 類來實現上述通信任務。
存儲模塊用來保存軟PLC 運行過程中所需的數據、操作指令和數據地址,可表示為:存儲模塊= 數據地址 + 數據 + 操作指令,因此將其分為三個子模塊:用戶程序存儲模塊、數據存儲模塊和指令存儲模塊。
用戶程序存儲模塊用于保存開發(fā)系統(tǒng)編譯完成的目標代碼。這些目標代碼是C/C++ 語句;例如AND X0 操作對應如下C++代碼[11]:
{strcpy(m_statement. m_basicorder. address[0],"X0"); //提取軟元件X0 中保存的數據m_statement.m_basicorder.funcname =INSTRUCTION_AndBit;
//提供對數據X0 的操作p_execute - >pstru_funclist- >insertAtBack(m_statement); //更新鏈表數據域中的數據}
數據存儲模塊用于存儲輸入/輸出端子的狀態(tài)、內部繼電器、定時器的狀態(tài)和功能塊邏輯運算的中間結果等數據。這些數據作為全局變量供軟PLC 控制系統(tǒng)各模塊進行訪問和修改。在執(zhí)行用戶程序過程中,CPU 根據指令存儲模塊中指令參數的地址來訪問數據存儲模塊區(qū),獲取數據進行邏輯運算。
指令存儲模塊用于存儲PLC 指令。每條指令對應一個C++函數,函數中封裝了對數據的操作。例如:邏輯與指令對應函數ReadInputAndBit(),具體實現如下:
程序執(zhí)行模塊用于解釋和執(zhí)行目標代碼,通過調用相應的C++函數對堆棧進行操作,獲取控制信息。下面以五軸數控銑床主軸正轉梯形圖程序(圖4)說明軟PLC 指令的執(zhí)行過程。
圖4 五軸數控銑床主軸正轉梯形圖程序
圖3 所示梯形圖程序執(zhí)行過程如下:
第一步:清除堆棧stack,遇到X0 串聯,將X0 壓入棧頂;第二步:遇到X1 串聯,彈出棧頂元素,將X1 和X0 邏輯或運算的結果壓入棧頂;第三步:遇到并聯分支點A;創(chuàng)建臨時變量temp =0,將棧頂元素的值賦給temp,并彈出棧頂元素;第四步:遇到X3 串聯,將X3壓入棧頂;第五步:遇到X4 串聯,彈出棧頂元素X3,將X4 與X3 進行邏輯或運算,結果壓入棧頂;第六步:遇到并聯分支點B,彈出棧頂元素,將棧頂元素與temp進行邏輯或運算,結果賦給temp;第七步:遇到Y0 串聯,將Y0 壓入棧頂;第八步:遇到Y1 串聯,彈出棧頂元素Y0,將Y1 和Y0 邏輯與運算的結果壓入棧頂;第九步:遇到并聯分支點C;彈出棧頂元素,將棧頂元素與temp 進行邏輯或運算,結果賦給temp;第十步:遇到X2 串聯,將temp 與X2 邏輯與運算的結果壓入棧頂;第十一步:遇到Y0 線圈,將棧頂元素的值賦給Y0 并彈出堆棧;第十二步:將Y0值輸出,清除堆棧stack。
程序執(zhí)行模塊不斷循環(huán)解釋執(zhí)行軟PLC 指令,直到執(zhí)行END 指令。軟PLC 程序執(zhí)行模塊工作過程如圖5 所示。注意:這里的跳轉指令不是指PLC 系統(tǒng)中的跳轉指令,而是指梯形圖程序中復雜的并聯分支塊引起的跳轉。
圖5 軟PLC 解釋和執(zhí)行指令流程圖
I/O 接口模塊是軟PLC 與輸入輸出設備進行數據交換的通道,用于將I/O 板卡采集到的機床信號寫進輸入映像寄存器,同時將輸出映像寄存器中軟元件的狀態(tài)輸出給端子。I/O 讀寫過程分為兩步:第一,根據五軸數控銑床電氣I/O 端口分配表在軟PLC 系統(tǒng)內存中建立對應物理I/O 節(jié)點變量,完成端口配置;第二,調用I/O 接口模塊內部的讀寫函數,在下一個掃描周期開始將軟元件狀態(tài)輸出,完成數據交換。
為智能讀取數據和進一步提高I/O 接口物理層的開放性,軟PLC 采用圖6 所示結構對I/O 數據存儲區(qū)的變量統(tǒng)一編址。
I/O 接口模塊采用按位、字節(jié)、字和雙字的尋址方式向讀寫函數提供操作數地址,并把I/O 數據存儲器變量區(qū)劃分為6 個區(qū)域,每個區(qū)域存儲相應變量數據。其中,按位尋址的尾部編址采用了字節(jié)號加分隔符加位號的形式。
圖6 按字節(jié)、字和雙字方式編址
SERCOS(Serial Real-time Communication System)
是一種用于CNC 和數字伺服傳動系統(tǒng)之間通信的數字接口和數據交換協議,能夠實現工業(yè)控制計算機與數字伺服系統(tǒng)、傳感器和可編程控制器I/O 口之間的實時數據通信[12]。SERCOS-III 是SERCOS 發(fā)展的最新階段,采用光纖傳輸,速率高達100Mbit/s;可利用軟件SoftSERCANS 對主站進行控制,縮減了數控系統(tǒng)的硬件;此外還具有雙環(huán)型拓撲結構[13],增強了系統(tǒng)的安全性。
軟PLC 控制系統(tǒng)采用SERCOS-III 接口可縮減數據采集的時間,進一步提升系統(tǒng)的響應能力、開放性和可靠性?;赟ERCOS-III 接口的開放式數控系統(tǒng)結構如圖7 所示。
圖7 基于SERCOS-III 接口的開放式數控系統(tǒng)結構
SERCOS-III 采用報文形式實現主從站的通訊,報文有三種類型:主站數據報文MDT、應答報文AT 和以太網報文。其工作時序如圖8 所示[14]。
SERCOS-III 主站在接收到AT 后將所有報文信息存儲到SoftSERCANS 創(chuàng)建的共享緩存區(qū)。軟PLC 和軟CNC 通過指針訪問該存儲單元獲取所需數據。類CPLCIOControl 提供了訪問該共享區(qū)域的接口。
圖8 SERCOS-III 工作時序
軟件平臺為WindowsXP +RTX5.0,硬件平臺為PC。
利用VC++6.0 編輯開發(fā)的軟PLC 運行系統(tǒng)仿真界面如圖9 所示。運行軟PLC 運行系統(tǒng),當點擊主軸正轉按鈕時,所對應的軟邏輯在輸入映像區(qū)的狀態(tài)發(fā)生改變,通過調用程序中的指令,將主軸正轉控制信號輸出,主軸正轉指示燈亮。
經圖10 所示五軸數控銑床測試,軟PLC 控制系統(tǒng)實現了對五軸數控銑床開關量的控制。
圖9 五軸數控銑床軟PLC 運行系統(tǒng)仿真界面
圖10 XKV715 五軸數控銑床
通過研究傳統(tǒng)PLC 對五軸數控銑床開關量信號的控制,利用C++面向對象技術和模塊化的思想編輯開發(fā)了軟PLC 控制系統(tǒng),實現了對五軸數控銑床開關量的控制,進一步增強了數控系統(tǒng)的開放性,促進了全軟件開放式數控系統(tǒng)和軟PLC 技術的進一步發(fā)展。
[1]羅燕華,何嶺松,張登攀.一種軟PLC 技術的研究與實現[J]. 計算機與數字工程,2007(35):168 -171.
[2]畢 輝,程良鴻. 關于軟PLC 技術的研究及發(fā)展[J]. 機電產品開發(fā)與創(chuàng)新,2006,19(2):118 -119.
[3]張 磊,師 衛(wèi). 軟PLC 運行系統(tǒng)的研究與實現[J].科技情報開發(fā)與經濟,2008,18(11):164 -165.
[4]李建偉,賴乙宗,李 松等. 基于DSP/BIOS 的PLC 執(zhí)行系統(tǒng)開發(fā)[J]. 電子設計工程.2013,21(5):163 -165.
[5]張小亮,成友東等. 基于μC/OS-II 的軟PLC 的實現方法[J].機床與液壓.2008(3):470 -473.
[6]任寶剛,劉杰,宋楠. 基于PMACII 開放式五軸數控機床的研究[J]. 機電工程技術,2007,36 (1):22 -24.
[7]白艷艷. 基于SERCOS 接口的開放式數控體系中的軟PLC 系統(tǒng)[J]. 機械管理開發(fā). 2005(8):78 -79.
[8]馬雄波,韓振宇,王永章. 基于RTX 的軟PLC 多任務系統(tǒng)研究[J]. 組合機床與自動化加工技術,2007(1):35-40.
[9]白江,王宇晗,金永喬. 數控系統(tǒng)軟PLC 模塊的研究與開發(fā)[J]. 機床設計與制造,2011(2):138 -140.
[10]黃延延,林躍,于海斌.軟PLC 技術研究及實現[J]. 計算機工程,2004,30(1):165 -167.
[11]李爽. 基于開放式數控系統(tǒng)的軟PLC 開發(fā)系統(tǒng)的研究及實現[D]. 哈爾濱:哈爾濱工業(yè)大學,2006.
[12]梁宏斌,王永章. SoftSERCANS 技術及其在數控系統(tǒng)中的應用[J]. 計算機制造集成系,2004(11):1433 -1436.
[13]楊土權,鄧則名. SERCOS III 在數控系統(tǒng)中應用的初步探討[J]. 制造技術與機床,2009(2):172 -174.
[14]http://www.sercos.de/sites/default/files/sercos_iii_2012_en_web_0.pdf. 2012.12.