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