蔡一天,奚學(xué)程,趙萬(wàn)生(上海交通大學(xué)機(jī)械與動(dòng)力工程學(xué)院,上海200240)
基于simulink-realtime的數(shù)控系統(tǒng)仿真與實(shí)驗(yàn)平臺(tái)研究
蔡一天,奚學(xué)程,趙萬(wàn)生
(上海交通大學(xué)機(jī)械與動(dòng)力工程學(xué)院,上海200240)
提出一種采用simulink-realtime構(gòu)建數(shù)控系統(tǒng)仿真實(shí)驗(yàn)平臺(tái)的方法。首先,介紹了simulink-realtime的硬件部分結(jié)構(gòu)及其軟件部分原理與設(shè)置。然后,詳述了基于simulink-realtime應(yīng)用程序的開(kāi)發(fā)流程,并以一個(gè)單軸PID控制器的程序開(kāi)發(fā)為例。最后,以對(duì)輪廓誤差控制中典型的交叉耦合控制器研究證明了所搭建的仿真實(shí)驗(yàn)平臺(tái)對(duì)于研究數(shù)控技術(shù)的實(shí)用性。
simulink-realtime;數(shù)控系統(tǒng);實(shí)驗(yàn)平臺(tái)
數(shù)控系統(tǒng)作為數(shù)控機(jī)床的核心部分,其性能對(duì)于機(jī)床的加工精度和效率有著至關(guān)重要的影響。因此,研究先進(jìn)的數(shù)控技術(shù)對(duì)于打破國(guó)外壟斷、提高裝備制造業(yè)水平有著重要意義。
但是,一般的商用數(shù)控系統(tǒng)往往是封閉的,這也意味著用戶無(wú)法知道其具體原理,也不能對(duì)其進(jìn)行修改。因此,部分學(xué)者采用由PMAC運(yùn)動(dòng)控制卡來(lái)實(shí)現(xiàn)底層運(yùn)動(dòng)控制、而自己開(kāi)發(fā)上層軟件的方法,這雖然部分地解決了數(shù)控系統(tǒng)開(kāi)放性不足的問(wèn)題,但當(dāng)需要研究底層運(yùn)動(dòng)控制功能時(shí),采用運(yùn)動(dòng)控制卡的方法仍使研究受到局限[1]。此外,部分研究人員采用自己開(kāi)發(fā)數(shù)控系統(tǒng)的方法,但耗時(shí)較長(zhǎng),且需把過(guò)多精力投入到非核心技術(shù)的開(kāi)發(fā)上[2-3]。也有其他學(xué)者采用開(kāi)源數(shù)控系統(tǒng)(如LinuxCNC),在此基礎(chǔ)上進(jìn)行修改以符合自身要求[4]。但這種方法需先對(duì)開(kāi)源數(shù)控系統(tǒng)有一個(gè)較好的了解,前期耗費(fèi)時(shí)間長(zhǎng),且所有算法功能都用C++語(yǔ)言實(shí)現(xiàn),在算法實(shí)現(xiàn)上也需花費(fèi)很多精力。
本文利用Matlab軟件中的simulink-realtime實(shí)現(xiàn)從模型設(shè)計(jì)仿真到算法實(shí)現(xiàn)的無(wú)縫對(duì)接。利用simulink-realtime由仿真模型自動(dòng)生成C語(yǔ)言代碼的功能,使原來(lái)最費(fèi)時(shí)的算法實(shí)現(xiàn)階段時(shí)間幾乎縮短為0。并以此為基礎(chǔ),集成數(shù)控系統(tǒng)中常用的功能模塊,搭建一個(gè)開(kāi)放的數(shù)控技術(shù)仿真實(shí)驗(yàn)平臺(tái)。
從核心功能上講,simulink-realtime是一組Matlab提供的幫助用戶從simulink模型快速創(chuàng)建實(shí)時(shí)程序,并自動(dòng)下載到目標(biāo)控制機(jī)的工具集。同時(shí),它也包括了眾多的I/O硬件驅(qū)動(dòng),比如:模擬信號(hào)I/ O、數(shù)字信號(hào)I/O、脈沖產(chǎn)生與接收、CAN總線、網(wǎng)絡(luò)通信等。
1.1 硬件系統(tǒng)結(jié)構(gòu)
Simulink-realtime具體實(shí)現(xiàn)時(shí)的硬件體系結(jié)構(gòu)見(jiàn)圖1。開(kāi)發(fā)機(jī)(development computer)負(fù)責(zé)Matlab程序、simulink仿真模型的搭建,通過(guò)simulink-realtime提供的編譯器編譯后下載到目標(biāo)機(jī)中運(yùn)行,之后開(kāi)發(fā)機(jī)可實(shí)時(shí)調(diào)整程序中的參數(shù),并監(jiān)測(cè)和記錄程序運(yùn)行的信號(hào)。開(kāi)發(fā)機(jī)一般為裝有Windows系統(tǒng)并有Matlab程序的PC機(jī)。目標(biāo)機(jī)往往也是PC機(jī),當(dāng)然也可以是如PC/104、CompactPCI形式的工控機(jī)。而I/O硬件通常指通過(guò)PCI擴(kuò)展槽連接到目標(biāo)機(jī)上的各種I/O板卡,最后通過(guò)這些I/O板卡控制真實(shí)的物理部件。
圖1 simulink-realtime系統(tǒng)架構(gòu)圖
在開(kāi)發(fā)機(jī)和目標(biāo)機(jī)之間可采用2種通信方式:RS-232和ethernet。RS-232方式只能以一臺(tái)開(kāi)發(fā)機(jī)對(duì)應(yīng)一臺(tái)目標(biāo)機(jī),但Ethernet方式可支持一臺(tái)開(kāi)發(fā)機(jī)對(duì)應(yīng)多臺(tái)目標(biāo)機(jī),這是因?yàn)榇藭r(shí)目標(biāo)機(jī)和開(kāi)發(fā)機(jī)之間是通過(guò)TCP/IP協(xié)議通信,兩者之間不是必須通過(guò)網(wǎng)線直接連接,完全可通過(guò)路由器接通。因此,ethernet的連接方式提供了更好的擴(kuò)展性,且ethernet相對(duì)于RS-232通信更加不易受干擾,可支持長(zhǎng)距離傳輸,數(shù)據(jù)傳輸速率快。因此,本文選用ethernet連接方式。
此處的硬件I/O板卡需為Matlab公司支持的型號(hào),因?yàn)橹挥羞@部分板卡Matlab里的I/O驅(qū)動(dòng)庫(kù)才提供simulink block形式的驅(qū)動(dòng)。否則,需要用戶自己編寫(xiě)硬件驅(qū)動(dòng),這會(huì)相當(dāng)繁瑣。
1.2 軟件設(shè)置
從圖1可看出,如果要在目標(biāo)機(jī)運(yùn)行實(shí)時(shí)程序,需在目標(biāo)機(jī)有一個(gè)實(shí)時(shí)操作系統(tǒng)。但這個(gè)實(shí)時(shí)操作系統(tǒng)并不是平時(shí)常見(jiàn)的如VxWorks、uc-os等,它是一個(gè)Matlab公司提供的名為 “simulink realtime kernel”的微型實(shí)時(shí)內(nèi)核。因此,在目標(biāo)機(jī)中不需由用戶預(yù)裝Windows或Linux等任何其他系統(tǒng)。
要在目標(biāo)機(jī)啟動(dòng)simulink real-time kernel,有以下4種方法:
(1)從光盤(pán)設(shè)備啟動(dòng)。從CD/DVD啟動(dòng),需用戶自己刻錄光盤(pán),成本較高且不方便。
(2)從移動(dòng)盤(pán)啟動(dòng)。從移動(dòng)U盤(pán)或移動(dòng)硬盤(pán)啟動(dòng),這時(shí)只需通過(guò)Matlab提供的工具制作啟動(dòng)盤(pán),然后通過(guò)USB接入目標(biāo)機(jī)即可。
(3)DOS loader啟動(dòng)。這要求目標(biāo)機(jī)有DOS啟動(dòng)系統(tǒng),且有其他諸多限制。
(4)網(wǎng)絡(luò)啟動(dòng)。把實(shí)時(shí)操作系統(tǒng)放在一個(gè)開(kāi)發(fā)機(jī)上,當(dāng)開(kāi)發(fā)機(jī)檢測(cè)到目標(biāo)機(jī)啟動(dòng)時(shí),通過(guò)網(wǎng)絡(luò)把操作系統(tǒng)相關(guān)數(shù)據(jù)傳輸?shù)侥繕?biāo)機(jī),然后啟動(dòng)系統(tǒng)。該方法要求目標(biāo)機(jī)的BIOS支持從網(wǎng)絡(luò)啟動(dòng)。
上述方法中,從移動(dòng)盤(pán)啟動(dòng)系統(tǒng)最為方便快捷且限制較小。因此,本文選取這種方法。
制作裝有simulink real-time kernel微型實(shí)時(shí)內(nèi)核的U盤(pán)可通過(guò)Matlab提供的 “simulink real-time explorer”工具實(shí)現(xiàn)。只需在Matlab命令行中輸入“slrtexplr”;在Target面板中設(shè)置如下3個(gè)方面的屬性:
(1)開(kāi)發(fā)機(jī)到目標(biāo)機(jī)的連接屬性(Host-to-Target communication)。本文采用開(kāi)發(fā)機(jī)和目標(biāo)機(jī)用網(wǎng)線直接相連的方式,故連接方式選擇“TCP/IP”。目標(biāo)機(jī)的相關(guān)網(wǎng)絡(luò)設(shè)置必須保證和開(kāi)發(fā)機(jī)在同一個(gè)局域網(wǎng)中,即目標(biāo)機(jī)的IP地址和開(kāi)發(fā)機(jī)前3段必須相同,僅最后一段不同。且需注意開(kāi)發(fā)機(jī)設(shè)為固定IP。
(2)目標(biāo)機(jī)屬性(Target settings)。主要是設(shè)置目標(biāo)機(jī)相關(guān)的屬性,如目標(biāo)機(jī)是否為多核、是否為386/486體系架構(gòu)等。
(3)啟動(dòng)配置(Boot configuration)。由于本文選用從U盤(pán)啟動(dòng)系統(tǒng),所以boot mode可選擇Removable Disk,然后就能創(chuàng)建啟動(dòng)盤(pán)。同時(shí)需特別注意設(shè)置目標(biāo)機(jī)的BIOS為優(yōu)先從U盤(pán)啟動(dòng)系統(tǒng),否則一般都默認(rèn)從硬盤(pán)啟動(dòng)系統(tǒng)。
1.3 應(yīng)用程序開(kāi)發(fā)
基于simulink-realtime開(kāi)發(fā)實(shí)時(shí)應(yīng)用程序都是采用“基于模型的設(shè)計(jì)”思想,即一切以系統(tǒng)模型為基礎(chǔ),用戶只需建立相應(yīng)的算法模型,而不需關(guān)心具體的算法轉(zhuǎn)化為實(shí)時(shí)程序的細(xì)節(jié)。其開(kāi)發(fā)過(guò)程見(jiàn)圖2。如本文的運(yùn)動(dòng)控制系統(tǒng),需對(duì)這個(gè)軸設(shè)計(jì)PID控制器以改善各軸的跟蹤性能。若交流伺服電機(jī)簡(jiǎn)化為二階模型,則帶PID控制器的系統(tǒng)模型見(jiàn)圖3。
現(xiàn)在要設(shè)計(jì)PID控制器,并在目標(biāo)機(jī)中實(shí)現(xiàn),因此需對(duì)上述模型進(jìn)行實(shí)時(shí)化。首先,實(shí)時(shí)程序并不支持一般的Scope模塊,必須用simulink-realtime庫(kù)中專用的Scope。它支持實(shí)時(shí)數(shù)據(jù)顯示,或記錄數(shù)據(jù)到文件;另一方面,此時(shí)的傳遞函數(shù)1/(s2+3s+2)已用真實(shí)的物理系統(tǒng)代替,即交流伺服電機(jī),所以傳遞函數(shù)模塊可刪去。控制系統(tǒng)信號(hào)和反饋信號(hào)需通過(guò)I/O板卡采集,因此還需添加相應(yīng)的硬件驅(qū)動(dòng)模塊。同時(shí),由于采集到的反饋信號(hào)為脈沖信號(hào),需經(jīng)過(guò)單位轉(zhuǎn)換才能接入閉環(huán),故在反饋處還需加入一個(gè)增益環(huán)節(jié)。假設(shè)此處采用的I/O板卡為NI公司的PCI-6221,則系統(tǒng)模型經(jīng)實(shí)時(shí)化改造后變?yōu)槿鐖D4所示。
圖2 simulink-realtime應(yīng)用程序開(kāi)發(fā)流程
圖3 單軸PID控制器模型
圖4 實(shí)時(shí)化改造后的單軸PID控制器模型
接下來(lái),只要接通開(kāi)發(fā)機(jī)和目標(biāo)機(jī),編譯經(jīng)過(guò)實(shí)時(shí)化改造的模型,下載到目標(biāo)機(jī)就能在目標(biāo)機(jī)運(yùn)行這個(gè)PID控制器。這個(gè)編譯、下載、運(yùn)行的過(guò)程只需簡(jiǎn)單調(diào)用Matlab提供的命令或直接在GUI中操作即可。
最后,如需讀取記錄的數(shù)據(jù),可調(diào)用相應(yīng)命令把記錄的數(shù)據(jù)文件從目標(biāo)機(jī)復(fù)制到開(kāi)發(fā)機(jī),然后讀取到相應(yīng)變量中。比如下列函數(shù)就可完成這個(gè)任務(wù),其中tg為包含目標(biāo)機(jī)的對(duì)象,filename為需要復(fù)制到開(kāi)發(fā)機(jī)的數(shù)據(jù)記錄文件:
function scope_core_data=get_target_scope_data (tg,filename)
SimulinkRealTime,copyFileToHost(tg,filename);
scope_data=SimulinkRealTime.utils.get-FileScopeData(filename);
scope_core_data=scope_data.data(:,1);
end
由此可看出,所有工作都是圍繞系統(tǒng)模型展開(kāi),且用戶只需集中精力于算法開(kāi)發(fā)就好。
本文基于simulink-realtime搭建的數(shù)控系統(tǒng)實(shí)驗(yàn)平臺(tái)的硬件系統(tǒng)見(jiàn)圖5。其電控部分就是基于圖1所述的結(jié)構(gòu),I/O板卡選用NI公司的PCI6221,它包含兩路模擬輸出可控制電機(jī),還自帶32位計(jì)數(shù)器可作為電機(jī)編碼器的反饋。機(jī)械部分為一個(gè)由滾珠絲杠傳動(dòng)的兩軸X-Y交流伺服平臺(tái)。由于該平臺(tái)把一個(gè)軸置于另一個(gè)軸之上,這樣兩軸驅(qū)動(dòng)的質(zhì)量不同,從而保證兩軸的動(dòng)態(tài)特性不匹配較明顯,更好地模擬了真實(shí)機(jī)床的情況。
圖5 實(shí)驗(yàn)平臺(tái)硬件系統(tǒng)示意圖
在軟件方面,可劃分為如圖6所示的幾個(gè)模塊,各部分的功能如下:
(1)參數(shù)曲線生成模塊。目前高級(jí)的數(shù)控系統(tǒng)多用NURBS曲線來(lái)表示參數(shù)曲線,此模塊完成NURBS曲線相關(guān)的操作。
(2)插補(bǔ)算法模塊。從參數(shù)曲線生成一系列的插補(bǔ)點(diǎn),可根據(jù)需要采用不同的插補(bǔ)算法。
(3)速度規(guī)劃模塊。合理規(guī)劃運(yùn)動(dòng)速度,可采用S型加減速等方法。
(4)模型辨識(shí)模塊。這主要是為了仿真方便,如上所述,simulink-realtime是以模型為核心的。若能辨識(shí)出系統(tǒng)模型,就能很方便地仿真相應(yīng)的算法。
(5)基于繼電反饋的PID自整定模塊。單軸的PID控制器是最基本的控制器,而繼電反饋法又是整定PID參數(shù)的優(yōu)秀方法。
(6)輪廓誤差離線精確計(jì)算腳本。這主要是為了研究輪廓誤差控制等時(shí)驗(yàn)證算法的效果。
(7)數(shù)據(jù)提取與存儲(chǔ)模塊。存儲(chǔ)數(shù)據(jù),方便以后進(jìn)一步處理。
圖6 實(shí)驗(yàn)平臺(tái)軟件部分模塊劃分
至此,數(shù)控系統(tǒng)實(shí)驗(yàn)平臺(tái)完成,可用該平臺(tái)方便地進(jìn)行數(shù)控技術(shù)各方面的研究。
本文以研究數(shù)控技術(shù)中的輪廓誤差控制技術(shù)為例,選用其中最經(jīng)典的交叉耦合控制器來(lái)證明所搭建實(shí)驗(yàn)平臺(tái)的實(shí)用性。交叉耦合控制的思想是把輪廓誤差看作一個(gè)整體來(lái)控制,即意味著每個(gè)軸不但受本軸的影響,也接收其他軸的誤差信息。這樣,多軸之間能更好地協(xié)同,共同達(dá)到減小輪廓誤差的目的。
根據(jù)算法思想建立對(duì)于一個(gè)圓形軌跡的控制器模型(圖7)。其中,curve_data是用參數(shù)曲線生成、插補(bǔ)、速度規(guī)劃模塊一步步生成的參考指令點(diǎn),兩個(gè)軸的系統(tǒng)模型可用系統(tǒng)辨識(shí)模塊獲得,單軸PID參數(shù)可通過(guò)繼電反饋法整定,而中間的PID控制器參數(shù)可通過(guò)建立如圖7所示模型后,用Matlab提供的PID參數(shù)整定工具自動(dòng)整定,最后可用輪廓誤差離線精確計(jì)算腳本來(lái)估計(jì)控制器的效果。在確定算法后,將上述模型進(jìn)行實(shí)時(shí)化改造(圖8),再調(diào)用系統(tǒng)相關(guān)工具編譯下載到目標(biāo)機(jī)即可運(yùn)行。
圖7 一個(gè)圓形輪廓的交叉耦合控制器模型
圖8 實(shí)時(shí)化后的交叉耦合控制器模型
在本實(shí)驗(yàn)中,圓的半徑為40 mm,線速度為20 mm/s,有和沒(méi)有交叉耦合控制器時(shí)的輪廓誤差見(jiàn)圖9??梢?jiàn),交叉耦合控制器顯著減小了輪廓誤差,同時(shí)也證明本文搭建的實(shí)驗(yàn)平臺(tái)能很好地滿足數(shù)控技術(shù)中的輪廓誤差控制技術(shù)研究的需要。
圖9 是否加入交叉耦合控制器的輪廓誤差對(duì)比
本文設(shè)計(jì)了基于simulink-realtime的數(shù)控系統(tǒng)仿真與實(shí)驗(yàn)系統(tǒng)。相對(duì)于傳統(tǒng)的實(shí)驗(yàn)平臺(tái),它提供了極大的便利性,可大大減少通常算法實(shí)現(xiàn)時(shí)花費(fèi)的大量時(shí)間。同時(shí),該平臺(tái)以模型為核心的特點(diǎn),很好地整合了從算法仿真到實(shí)現(xiàn)的過(guò)程。本文搭建的實(shí)驗(yàn)平臺(tái)集成了數(shù)控技術(shù)中常用的各種模塊,具有很好的開(kāi)放性,適于研究數(shù)控技術(shù)的各個(gè)方面。
[1] 陳昊,陳默,奚學(xué)程,等.六軸聯(lián)動(dòng)電火花加工數(shù)控系統(tǒng)及機(jī)床[J].電加工與模具,2013(6):70-73.
[2] 邵昌旭,陳默,趙萬(wàn)生.嵌入式電火花線切割加工數(shù)控系統(tǒng)原型[J].電加工與模具,2012(2):17-20.
[3] 吳文君,顧琳,徐笠云,等.基于ARM及嵌入式Linux的線切割數(shù)控系統(tǒng)開(kāi)發(fā) [J].制造業(yè)自動(dòng)化,2009,31(2):75-78.
[4] 豆尚成,陳成細(xì),奚學(xué)程,等.基于Linux的線切割加工全軟數(shù)控系統(tǒng)[C]//第14屆全國(guó)特種加工學(xué)術(shù)會(huì)議論文集.蘇州,2011:199-205.
Study on a Simulation and Experiment Platform for CNC System Based on Simulink-realtime
Cai Yitian,Xi Xuecheng,Zhao Wanshen
(School of Mechanical Engineering,Shanghai Jiao Tong University,Shanghai 200240,China)
A simulation and experiment platform for CNC system is designed,in which simulinkrealtime is adopted as basic technology.First,the hardware requirement is introduced and the software specification is described in detail.Then the process of designing application program is presented and an example of designing PID controller for a single axis is given.Finally,the typical algorithm named‘cross couple controller’applied in contour control is selected to be realized in the proposed platform,which prove the platform′s practicability in researching CNC technology.
simulink-realtime;CNC system;experiment platform
TG659
A
1009-279X(2016)05-0024-04
2016-05-09
蔡一天,男,1989年生,碩士研究生。