0 引言
隨著開放式數控系統的發(fā)展,采用軟件控制縮小硬件規(guī)模、降低成本是目前高端數控機床的發(fā)展趨勢。軟PLC以軟件形式實現了傳統PLC的控制功能,具有開放的體系結構、強大的網絡通訊功能和更強的數據處理能力等特點。目前,國外已有成熟的軟PLC產品,如:Servo Works軟件中的PLC引擎模塊、SOFTPLC公司的SoftPLC、西門子的SIMATIC WinAC等等。國內對軟PLC也進行了研究,取得了一些進展。文獻給出了一種基于DSP/BIOS嵌入式的軟PLC執(zhí)行系統構架,文獻提出了一種基于tLC/OS.II的軟PLC的實現方法,從一定程度上提升了軟PLC的穩(wěn)定性,但他們采用的是專用操作系統,不符合開放的要求和趨勢,且軟PLC控制系統的功能和穩(wěn)定性與國外相比有很大差距。
五軸數控銑床具有很高的加工精度和效率,能夠一次性完成三軸銑床很難加工的大型、復雜的自由曲面,但需要其軟PLC控制系統更快地做出響應。因此,性能穩(wěn)定的軟PLC和更快的數據傳輸速率非常重要。文獻提出了一種基于SERCOS接口的軟PLC系統,但未對軟PLC運行系統深人分析,文獻則詳細描述了軟PLC多任務的實現方法,但未給出實現函數等細節(jié)。因此,本文針對上述問題對五軸數控銑床的軟PLC控制系統進行了研究。
1 軟PLC控制系統的總體結構
1.1 軟件平臺的選擇
與其它開放的操作系統相比,Windows具有豐富的軟件資源和極高的市場占有率,有利于多任務軟件的開發(fā)。但它不是實時操作系統,無法滿足軟PLC實時性的要求歸j。可向WindowsXP系統內核嵌入實時擴展子系統RTX(Real—Time Extension)解決實這一問題。所以本文選用WindowsXP+RTX5.0作為軟PLC的開發(fā)和運行的軟件平臺,既符合開放的要求,又能滿足數控系統和軟PLC的實時性。
1.2 軟PLC控制系統的總體結構
五軸數控銑床軟PLC的控制流程如圖1所示。當有加工信息輸入時,首先軟CNC進行分析、譯碼,然后將M、S、T等開關量信息交由軟PLC進行處理,最后將CPU處理完的開關量信息通過I/O接口輸出,通過控制主電路電器元件通斷來驅動銑床部件動作。
圖1五軸數控銑床軟PLC的控制流程
軟PLC控制系統由開發(fā)系統和運行系統兩部分組成。開發(fā)系統是一個標準通用的開發(fā)環(huán)境,采用國際標準IEC61131.3中的五種開發(fā)語言編寫用戶程序,利用通信接口模塊將可執(zhí)行的目標代碼傳送給運行系統。運行系統是整個軟PLC控制的核心,負責解釋和執(zhí)行用戶程序,將開關量控制信息輸出給電氣部分,以驅動設備動作。
合理的設計軟PLC的結構有利于提升控制系統的穩(wěn)定性。根據軟件組件的思想,可將軟PLC控制系統分為幾個具有獨立功能的模塊,模塊間定義規(guī)范的接口。五軸數控銑床軟PLC控制系統總體結構如圖2所示。
圖2軟PLC控制系統結構框圖
由于軟PLC開發(fā)系統只是提供一個開發(fā)環(huán)境和控制方案,而目標代碼的執(zhí)行是由運行系統完成,因此下面重點對軟PLC運行系統各模塊進行分析。
2 軟PLC運行系統的設計
2.1 系統管理模塊
系統管理模塊是軟PLC運行系統的“大腦”,用于運行時分配系統資源,調度任務線程并監(jiān)控系統的運行狀態(tài)。在一個掃描周期內,如何調度各任務線程是保證軟PLC穩(wěn)定運行的關鍵。本文利用RTXAPI函數庫中提供的RtSetThreadPriority()函數根據執(zhí)行的先后順序設定各任務線程優(yōu)先級,當某一任務事件觸發(fā)后,線程隊列中等級最高的線程優(yōu)先獲得CPU時間片被執(zhí)行,從而實現任務線程的合理調度。任務線程執(zhí)行過程如圖3圖示。
圖3軟PLC任務線程執(zhí)行過程
2.2 通信接口模塊
通訊接口模塊用于建立軟PLC運行系統與開發(fā)系統、軟CNC、人機操作面板以及其它應用程序進行數據通訊任務。其中,軟PLC開發(fā)系統與運行系統采用COM組件方式進行通訊,即開發(fā)系統作為客戶端向運行系統傳送目標代碼,運行系統作為服務器端接收目標代碼并反饋軟PLC的運行狀態(tài)。
軟PLC運行系統與軟CNC、人機操作面板通過訪問自創(chuàng)建的共享內存區(qū)單元PLC—CNCbuffer、PLC—Platebuffer進行數據交換。由Communication類來實現上述通信任務。
2.3 存儲模塊
存儲模塊用來保存軟PLC運行過程中所需的數據、操作指令和數據地址,可表示為:存儲模塊=數據地址+數據+操作指令,因此將其分為三個子模塊:用戶程序存儲模塊、數據存儲模塊和指令存儲模塊。
用戶程序存儲模塊用于保存開發(fā)系統編譯完成的目標代碼。這些目標代碼是C/C++語句;例如ANDx0操作對應如下C++代碼:
{strcpy(m—statement.m—basicorder.address[O],”x0”); //提取軟元件X0中保存的數據m—statement.m—basicorder.funcname=INSTRUCTION—AndBit;//提供對數據Xo的操作p_execute一>pstru—fun·clist一>insertAtBack(m—statement); //更新鏈表數據域中的數據}
數據存儲模塊用于存儲輸入/輸出端子的狀態(tài)、內部繼電器、定時器的狀態(tài)和功能塊邏輯運算的中間結果等數據。這些數據作為全局變量供軟PLC控制系統各模塊進行訪問和修改。在執(zhí)行用戶程序過程中,CPU根據指令存儲模塊中指令參數的地址來訪問數據存儲模塊區(qū),獲取數據進行邏輯運算。
指令存儲模塊用于存儲PLC指令。每條指令對應一個C++函數,函數中封裝了對數據的操作。例如:邏輯與指令對應函數ReadInputAndBit(),具體實現如下:
2.4 程序執(zhí)行模塊
程序執(zhí)行模塊用于解釋和執(zhí)行目標代碼,通過調用相應的C++函數對堆棧進行操作,獲取控制信息。下面以五軸數控銑床主軸正轉梯形圖程序(圖4)說明軟PLC指令的執(zhí)行過程。
圖4五軸數控銑床主軸正轉梯形圖程序
圖3所示梯形圖程序執(zhí)行過程如下:
第一步:清除堆棧stack,遇到X0串聯,將X0壓人棧頂;第二步:遇到xl串聯,彈出棧頂元素,將xl和X0邏輯或運算的結果壓人棧頂;第三步:遇到并聯分支點A;創(chuàng)建臨時變量temp=0,將棧頂元素的值賦給temp,并彈出棧頂元素;第四步:遇到)(3串聯,將)(3壓人棧頂;第五步:遇到X4串聯,彈出棧頂元素)(3,將X4與X3進行邏輯或運算,結果壓人棧頂;第六步:遇到并聯分支點B,彈出棧頂元素,將棧頂元素與temp進行邏輯或運算,結果賦給temp;第七步:遇到Y0串聯,將Y0壓入棧頂;第八步:遇到Y1串聯,彈出棧頂元素Y0,將Yl和Y0邏輯與運算的結果壓入棧頂;第九步:遇到并聯分支點C;彈出棧頂元素,將棧頂元素與temp進行邏輯或運算,結果賦給temp;第十步:遇到x2串聯,將temp與X2邏輯與運算的結果壓入棧頂;第十一步:遇到Y0線圈,將棧頂元素的值賦給Y0并彈出堆棧;第十二步:將Y0值輸出,清除堆棧stack。程序執(zhí)行模塊不斷循環(huán)解釋執(zhí)行軟PLC指令,直到執(zhí)行END指令。軟PLC程序執(zhí)行模塊工作過程如圖5所示。注意:這里的跳轉指令不是指PLC系統中的跳轉指令,而是指梯形圖程序中復雜的并聯分支塊引起的跳轉。
圖5軟PLC解釋和執(zhí)行指令流程圖
2.5 I/O接口模塊
I/O接口模塊是軟PLC與輸入輸出設備進行數據交換的通道,用于將I/O板卡采集到的機床信號寫進輸人映像寄存器,同時將輸出映像寄存器中軟元件的狀態(tài)輸出給端子。I/O讀寫過程分為兩步:第一,根據五軸數控銑床電氣I/O端口分配表在軟PLC系統內存中建立對應物理I/O節(jié)點變量,完成端口配置;第二,調用I/O接口模塊內部的讀寫函數,在下一個掃描周期開始將軟元件狀態(tài)輸出,完成數據交換。
為智能讀取數據和進一步提高I/O接口物理層的開放性,軟PLC采用圖6所示結構對I/O數據存儲區(qū)的變量統一編址。
圖6按字節(jié)、字和雙字方式編址
I/O接口模塊采用按位、字節(jié)、字和雙字的尋址方式向讀寫函數提供操作數地址,并把I/O數據存儲器變量區(qū)劃分為6個區(qū)域,每個區(qū)域存儲相應變量數據。其中,按位尋址的尾部編址采用了字節(jié)號加分隔符加位號的形式。
3 軟PLC控制系統的接口設計
SERCOS(Serial Real—time Communication System)是一種用于CNC和數字伺服傳動系統之間通信的數字接口和數據交換協議,能夠實現工業(yè)控制計算機與數字伺服系統、傳感器和可編程控制器I/O口之間的實時數據通信。SERCOS—III是SERCOS發(fā)展的最新階段,采用光纖傳輸,速率高達100Mbit/s;可利用軟件SoftSERCANS對主站進行控制,縮減了數控系統的硬件;此外還具有雙環(huán)型拓撲結構¨引,增強了系統的安全性。軟PLC控制系統采用sERCOS一Ⅲ接口可縮減數據采集的時間,進一步提升系統的響應能力、開放性和可靠性。基于SERCOS.III接口的開放式數控系統結構如圖7所示。
圖7 基于SERCOS·Ⅲ接口的開放式數控系統結構
圖7 基于SERCOS·Ⅲ接口的開放式數控系統結構SERCOS.III采用報文形式實現主從站的通訊,報文有三種類型:主站數據報文MDT、應答報文AT和以太網報文。其工作時序如圖8所示。
圖8 SERCOS-Ⅲ工作時序
SERCOS-III主站在接收到AT后將所有報文信息存儲到SofiSERCANS創(chuàng)建的共享緩存區(qū)。軟PLC和軟CNC通過指針訪問該存儲單元獲取所需數據。類CPLCIOControl提供了訪問該共享區(qū)域的接口。
4 軟PLC運行系統的仿真測試
軟4牛-3己臺為WindowsXP+RTX5.0,硬件平臺為PC。利用VC++6.0編輯開發(fā)的軟PLC運行系統仿真界面如圖9所示。運行軟PLC運行系統,當點擊主軸正轉按鈕時,所對應的軟邏輯在輸入映像區(qū)的狀態(tài)發(fā)生改變,通過調用程序中的指令,將主軸正轉控制信號輸出,主軸正轉指示燈亮。
經圖10所示五軸數控銑床測試,軟PLC控制系統實現了對五軸數控銑床開關量的控制。
5 結束語
通過研究傳統PLC對五軸數控銑床開關量信號的控制,利用C++面向對象技術和模塊化的思想編輯開發(fā)了軟PLC控制系統,實現了對五軸數控銑床開關量的控制,進一步增強了數控系統的開放性,促進了全軟件開放式數控系統和軟PLC技術的進一步發(fā)展。
(審核編輯: 滄海一土)
分享