金曉帆
(杭州應(yīng)用聲學研究所 浙江 杭州 310023)
海洋具有非常豐富的資源和廣闊的面積,在國家經(jīng)濟、國防等領(lǐng)域具有非常重要的價值[1]。液壓絞車由于可靠性高、承載能力強、控制方便,所以在海洋工程裝備中具有非常廣泛的應(yīng)用[2],經(jīng)常被應(yīng)用于海洋科學研究、海洋打撈救助、海底資源開發(fā)、水下目標探測等方面。液壓絞車的典型作用是拖曳海洋科學儀器和設(shè)備、維持設(shè)備在水中的深度或姿態(tài)。根據(jù)用途不同,液壓絞車系統(tǒng)的控制目標也有一定差異[3-5],主要包括以控制拖纜張力穩(wěn)定為目標的力控制系統(tǒng),以維持拖體入水深度為目標的深沉補償系統(tǒng),以維持拖體收放速度為目標的速度控制系統(tǒng)。液壓絞車控制策略的設(shè)計、調(diào)試和整定一般需要有較豐富的經(jīng)驗,并需要結(jié)合實際的機械液壓物理系統(tǒng)在實際作業(yè)環(huán)境下開展較長時間的試驗工作,系統(tǒng)調(diào)試、測試所需要的時間長、經(jīng)費投入大。
半實物仿真技術(shù)是在20世紀90年代起逐步興起,并在實際工業(yè)、科研過程中得到較為廣泛應(yīng)用的一種現(xiàn)代仿真調(diào)試技術(shù)[6-7]。系統(tǒng)以被控對象、控制器、驅(qū)動器等所有各組成部分的精確數(shù)學模型、高性能的實時仿真計算平臺為基礎(chǔ),采用一部分虛擬仿真系統(tǒng)和一部分實際物理設(shè)備一起構(gòu)成一個完整的實時交互系統(tǒng)[8-9],可以被用于以下場合:(1)借助于實際的物理設(shè)備和虛擬的控制裝備,用于測試物理設(shè)備的基本技術(shù)性能,輔助設(shè)備的研究、開發(fā)和測試;(2)借助于被控設(shè)備的虛擬模型和實際的控制器軟件和硬件系統(tǒng),用于測試控制流程、控制策略、控制器軟件、硬件、信號采集和分析處理算法的性能,研究、開發(fā)和改進控制算法。
鑒于液壓絞車調(diào)試時間長,實物驗證測試所涉及的配試設(shè)備多,調(diào)試測試費用高、風險大的特點,研制專用于液壓絞車的半實物仿真系統(tǒng),研制支持半實物仿真的通用控制單元,具有非常重要的意義。
絞車液壓系統(tǒng)從形式上主要分為開式系統(tǒng)和閉式系統(tǒng)兩種[10]。開式系統(tǒng)以定量泵、溢流閥、比例閥、平衡閥、液壓馬達等組成,見圖1;由電機驅(qū)動定量泵提供壓力油源,通過溢流閥調(diào)節(jié)油源壓力,然后通過比例閥調(diào)節(jié)壓力油源進入液壓馬達兩腔的方向和流量。系統(tǒng)一般配置有平衡閥,用于調(diào)節(jié)在負載工況下平穩(wěn)收放和安全制動的問題。
典型的閉式液壓系統(tǒng)見圖2,系統(tǒng)主要由變量泵、液壓馬達、補油泵、溢流閥和沖洗閥等部分組成。系統(tǒng)動力通過電機驅(qū)動變量馬達實現(xiàn),驅(qū)動絞車旋轉(zhuǎn)的液壓馬達與液壓泵兩腔直接連接,當液壓泵旋轉(zhuǎn)時,液壓馬達也同步旋轉(zhuǎn)。在液壓馬達兩腔回路之間并聯(lián)溢流閥,控制液壓馬達的驅(qū)動力。閉式液壓系統(tǒng)不存在顯著的節(jié)流損失,效率高于開式系統(tǒng)。
盡管絞車液壓系統(tǒng)的應(yīng)用目標、控制策略等方面存在較大差異,從控制接口方面分析,一般包括調(diào)節(jié)比例泵/閥的模擬控制信號、控制開關(guān)閥、電機的啟動/停止信號,檢測液壓系統(tǒng)壓力、液壓馬達位置和速度的模擬量/開關(guān)量反饋信號。
在綜合分析不同型式和作用的絞車液壓系統(tǒng)參數(shù)基礎(chǔ)上,結(jié)合半實物仿真控制的需要,設(shè)計了一種通用性較強、成本較低、可以靈活設(shè)計和配置控制策略的控制器單元。液壓絞車半實物仿真控制器采用STM32系列的STM32F103RC芯片作為主控制器,并擴展必要的外圍接口電路,配置專用的電源系統(tǒng)。STM32系列單片機系統(tǒng)是意法半導(dǎo)體(ST)集團專為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的支持ARM Cortex?-M0~M7內(nèi)核的芯片。STM32芯片具有極高的性能,支持主流的Cortex內(nèi)核,集成了豐富的外設(shè),功耗較低,而且提供非常豐富的軟件開發(fā)支持,在工業(yè)控制系統(tǒng)中具有非常廣泛的應(yīng)用。
控制器的硬件系統(tǒng)基本結(jié)構(gòu)見圖3??刂破髦饕呻娫聪到y(tǒng)、CPU系統(tǒng)、網(wǎng)絡(luò)接口電路、模擬量輸出電路、模擬量輸入電路、開關(guān)量輸入電路、開關(guān)量輸出電路、人機接口電路等部分組成。CPU系統(tǒng)電路見圖4,由于STM32芯片集成度較高,外圍設(shè)備較為豐富,所以擴展設(shè)計較為簡單,CPU系統(tǒng)使用內(nèi)部的看門狗電路監(jiān)視系統(tǒng)運行,采用3.3 V單一電壓供電,需要配置一個8.0 MHz的晶振電路即可工作,系統(tǒng)主頻可達72 MHz。
在半實物控制系統(tǒng)中,控制器與模擬仿真設(shè)備快速交換數(shù)據(jù)是系統(tǒng)能夠正常工作的基礎(chǔ)。一般的專用仿真單元都支持串行和網(wǎng)絡(luò)通信方式與外部系統(tǒng)交換數(shù)據(jù)。串行接口傳輸?shù)臄?shù)據(jù)速率較低,一般用于交換數(shù)據(jù)量小、實時性要求不高的系統(tǒng)中。網(wǎng)絡(luò)通信方式數(shù)據(jù)傳輸速度高、實時性好,編程實現(xiàn)較為方便,所以在控制器仿真通信系統(tǒng)中應(yīng)用較為普遍。
為了擴展網(wǎng)絡(luò)通信接口,控制器擴展了以W5500為核心的以太網(wǎng)通信單元(圖5)。W5500是WIZnet推出的一款高性能標準以太網(wǎng)接口芯片,在芯片內(nèi)部集成了完全的硬件TCP/IP協(xié)議棧,MAC單元和PHY設(shè)備。W5500的全硬件協(xié)議棧技術(shù)采用了專用復(fù)雜的硬件邏輯門電路實現(xiàn)了完整的TCP/IP協(xié)議簇,在實際使用過程中簡單易用、可靠性高、安全性好。尤其是其內(nèi)部集成的MAC和PHY單元非常適合于為中高檔單片機設(shè)備擴展網(wǎng)絡(luò)通信接口。
半實物仿真系統(tǒng)的基本原理見圖6。在實物控制模式下(圖6-a),控制器通過實際的模擬量、開關(guān)量輸入和輸出通道連接到液壓驅(qū)動系統(tǒng),接收人機接口裝置傳入的控制指令并根據(jù)指令信號,結(jié)合被控液壓系統(tǒng)反饋的狀態(tài)信息(壓力、位置和轉(zhuǎn)速)調(diào)節(jié)輸出到液壓系統(tǒng)的控制信號。在半實物控制模式下(圖6-b),控制器與實際機械液壓物理系統(tǒng)的信號斷開,通過網(wǎng)絡(luò)連接外部的機械液壓模擬系統(tǒng),機械液壓模擬系統(tǒng)獲取控制器通過網(wǎng)絡(luò)傳輸?shù)目刂菩盘?,并根?jù)控制信號實時計算狀態(tài)參數(shù)、傳感器參數(shù),并通過網(wǎng)絡(luò)將傳感器參數(shù)反饋到控制器,形成閉環(huán)控制系統(tǒng)。圖6所示的半實物控制方案可以用于控制器通信接口測試、控制策略測試、人機接口測試、設(shè)備操作訓(xùn)練。
為了支持半實物仿真控制和對實際機械液壓系統(tǒng)的控制,設(shè)計的控制器軟件結(jié)構(gòu)見圖7。軟件系統(tǒng)包括模擬量輸入單元、模擬量輸出單元、數(shù)字量輸入單元、數(shù)字量輸出單元、人機接口單元、網(wǎng)絡(luò)通信單元、仿真切換控制單元、I/O緩沖單元、控制策略單元等部分。
控制器軟件的核心是控制策略單元,實現(xiàn)了根據(jù)被控對象的狀態(tài)和控制目標計算輸出控制量的基本功能。在液壓絞車控制系統(tǒng)中控制策略可以根據(jù)實際控制需求進行設(shè)計,常規(guī)的控制策略包括PID、模糊PID、自適應(yīng)控制、預(yù)測控制、魯棒控制等均可應(yīng)用在絞車液壓系統(tǒng)的張力、速度、姿態(tài)控制環(huán)節(jié)中。
控制策略單元計算所需的輸入數(shù)據(jù)和輸出數(shù)據(jù)均保存在統(tǒng)一的I/O緩沖單元中,I/O緩沖單元保存了控制的輸出信號,存于D/A和DO緩沖區(qū);I/O緩沖單元同時保存了實際或模擬的機械液壓系統(tǒng)反饋的傳感器信號,存于A/D和DI緩沖區(qū)。
圖7中的模擬量輸出單元、數(shù)字量輸出單元實現(xiàn)將控制計算得到的控制量轉(zhuǎn)換為電壓、電流模擬信號,驅(qū)動被控設(shè)備動作;模擬量輸入單元、數(shù)字量輸入單元實現(xiàn)將機械液壓系統(tǒng)反饋的傳感器信號讀入。在實物控制模式下,上述單元實現(xiàn)了與實際物理系統(tǒng)的雙向信息交換。
圖7中的網(wǎng)絡(luò)通信單元連接到外部的機械液壓模擬系統(tǒng),實現(xiàn)網(wǎng)絡(luò)傳輸?shù)幕竟δ埽梢愿鶕?jù)控制信息構(gòu)造網(wǎng)絡(luò)報文并將其傳輸?shù)酵獠康臋C械液壓模擬系統(tǒng),并可接收機械液壓模擬系統(tǒng)傳輸?shù)木W(wǎng)絡(luò)報文,進行處理后提取模擬機械液壓系統(tǒng)反饋的壓力、速度和位置等傳感器信號。
仿真切換控制單元實現(xiàn)根據(jù)控制指令調(diào)節(jié)控制器運行模式的基本功能,根據(jù)人機接口設(shè)備傳輸?shù)目刂浦噶钚盘柺箍刂破鞴ぷ髟趯嵨锟刂颇J交虬雽嵨锓抡婺J较隆?/p>
I/O緩沖單元和仿真切換控制單元是控制器軟件系統(tǒng)的核心模塊。I/O緩沖單元實現(xiàn)所有控制輸入和輸出數(shù)據(jù)的存儲,通過一個結(jié)構(gòu)體實現(xiàn)。具體實現(xiàn)代碼如下:
#define WINCH_AI_CNT 10
#define WINCH_DA_CNT 6
#define WINCH_DO_CNT 12
#define WINCH_DI_CNT 8
typedef struct
{
unsigned short DataAD[WINCH_AI_CNT];//模擬量輸入數(shù)據(jù)緩沖
unsigned short DataDI[WINCH_DI_CNT];//開關(guān)量輸入數(shù)據(jù)緩沖
unsigned short DataDA[WINCH_DA_CNT];//模擬量輸出數(shù)據(jù)緩沖
unsigned short DataDO[WINCH_DO_CNT]; //開關(guān)量輸出數(shù)據(jù)緩沖
}IO_Buf,*pIO_Buf;
IO_Buf CtrlBuffer; //I/O緩沖單元定義
unsigned char NetSendBuf[1024];//網(wǎng)絡(luò)報文緩存
unsigned char NetRecvBuf[1024]; //網(wǎng)絡(luò)報文緩存
unsigned short RecvLen=0;//報文長度標志
仿真切換控制單元實現(xiàn)仿真模式和實物控制模式下數(shù)據(jù)流的切換,在仿真模式下通過網(wǎng)絡(luò)發(fā)送和接收控制接口數(shù)據(jù),在實物控制模式下通過硬件輸入和輸出通道發(fā)送和接收數(shù)據(jù)。具體實現(xiàn)包括SimuCtrlModule和NetService兩個函數(shù),兩個函數(shù)均根據(jù)全局變量SimMode(仿真狀態(tài),當系統(tǒng)被設(shè)置為半實物仿真模式時為true)確定工作方式。SimuCtrlModule在非仿真模式下調(diào)用UpdateDA、UpdateDO通過硬件輸出控制信號,通過UpdateDI、UpdateAI從實際物理系統(tǒng)獲取反饋參數(shù);在半實物仿真模式下通過SetZeroDA、SetZeroDO屏蔽實際硬件輸出信號,并通過GeneratePacket函數(shù)以待發(fā)送控制輸出信號為基礎(chǔ)構(gòu)造報文,并調(diào)用send_data_processing函數(shù)通過W5500發(fā)送數(shù)據(jù)到仿真系統(tǒng)。NetService函數(shù)為一個獨立的網(wǎng)絡(luò)線程,在仿真模式下工作,實現(xiàn)從W5500所連接的硬件網(wǎng)絡(luò)數(shù)據(jù)流中提取數(shù)據(jù)并輸入到I/O緩沖單元的功能。
具體實現(xiàn)如下:
void SimuCtrlModule()
{
if(!SimMode)
{
//輸出控制信號
UpdateDA(CtrlBuffer.DataDA,WINCH_DA_CNT);
UpdateDO(CtrlBuffer.DataDO,WINCH_DO_CNT);
//讀入傳感器信號
UpdateDI(CtrlBuffer.DataDA,WINCH_DI_CNT);
UpdateAI(CtrlBuffer.DataDO,WINCH_AI_CNT);
}
else
{
//屏蔽控制輸出
SetZeroDA(CtrlBuffer.DataDA,WINCH_DA_CNT);
SetZeroDO(CtrlBuffer.DataDO,WINCH_DO_CNT);
//構(gòu)造報文
GeneratePacket(NetSendBuf,&CtrlBuffer,&L en);
//發(fā)送數(shù)據(jù)
send_data_processing(Tcpsock,NetSendBuf,Len);
}
}
void NetService()
{
int i,Len;
unsigned char TmpBuf[1024];
if(!SimMode) return;//非仿真模式,不工作
recv_data_processing(Tcpsock,TmpBuf,&Len);//接收數(shù)據(jù)
if(Len==0) return;
for(i=0;i { if(RecvLen { if(HeadBuf[RecvLen]==TmpBuf[i]) NetRecvBuf[RecvLen++]=TmpBuf[i];//判斷報文頭 else RecvLen=0; } else NetRecvBuf[RecvLen++]=TmpBuf[i]; if(RecvLen==TOTAL_LEN) { UpdateSensor(CtrlBuffer,NetRecvBuf);//處理提取的報文,將數(shù)據(jù)轉(zhuǎn)入到I/O緩沖單元 RecvLen=0; } } } 根據(jù)本文設(shè)計的半實物控制器方案,設(shè)計了用于某型系列海洋絞車的專用控制器。首先根據(jù)圖8所示的方案,建立了由MATLAB Simulink模型、dSPACE控制器[11]、PROFACE 觸摸屏和半實物控制器構(gòu)成的半實物虛擬仿真測試系統(tǒng)。在機械液壓系統(tǒng)設(shè)計方案初步確定后,建立了機械液壓系統(tǒng)仿真模型,利用虛擬仿真測試系統(tǒng)對液壓絞車的控制策略和人機接口功能進行了全面測試。 所建立的液壓絞車實時仿真模型以機械液壓系統(tǒng)的數(shù)學模型為基礎(chǔ),經(jīng)過實時化、分段線性化處理,然后下載到dSPACE中,控制周期設(shè)置為10 ms,求解策略采用四階龍格庫塔法?;谒⒌南到y(tǒng)進行了虛擬仿真測試,并將控制器應(yīng)用到實際的液壓絞車系統(tǒng)控制中,對虛擬環(huán)境和實物控制模式下的控制性能進行了反復(fù)測試和對比分析,測試結(jié)果表明虛擬仿真環(huán)境下開發(fā)和測試的控制策略、軟件算法,可以直接應(yīng)用于實物控制。支持半實物控制功能的控制器的研制和使用極大地加快了絞車系統(tǒng)的整體研制進程,并為系統(tǒng)控制策略的深入分析、算法研究、控制性能的提升提供了一個重要的技術(shù)平臺,技術(shù)經(jīng)濟效果非常顯著。4 系統(tǒng)實現(xiàn)和驗證