文章編號:1003-6199(2011)04-0126-04
摘 要:介紹MATLAB/Simulink與CCU(中央控制單元)之間通過TCP/IP協(xié)議進行通信的程序開發(fā)及此通訊技術(shù)在電動機轉(zhuǎn)速控制系統(tǒng)仿真中的應(yīng)用。當(dāng)TCP/IP通信時,采用MATLAB作為服務(wù)器及CCU作為客戶端的serve/client模式。在MATLAB中,用M語言開發(fā)服務(wù)器程序,并將其封裝到Simulink中的MATLAB Fcn模塊中,在CCU編程軟件multiprog上開發(fā)客戶端程序,然后實現(xiàn)硬件在環(huán)的半實物控制系統(tǒng)仿真。
關(guān)鍵詞:MATLAB;Simulink;CCU;TCP/IP通信;系統(tǒng)仿真
中圖分類號: TN919.3 文獻(xiàn)標(biāo)識碼:A
The Development and Application of TCP/IP Communication Technology Between Simulink and CCU
LI Yingjie
(School of Electronics and Information Engineering, Dalian Jiaotong University, Dalian 116028,China)
Abstract:This paper describes a program development of theTCP / IP communication between MATLAB / Simulinkand CCU. The application of this communication technology inthemotorspeed controlsystem simulation is also described here. It uses serve/client mode when carrying out TCP / IP communication, MATLAB as a server and CCU as a client. In MATLAB environment, it develops server program in M language and package the program into the MATLAB Fcn block of Simulink, and develops client program on multiprog software platform of CCU, then achieves hardwarein the loop’s semi-physical control system simulation.
Key words:MATLAB; Simulink; CCU; TCP/IP communication; system simulation
1 引 言
在工業(yè)控制領(lǐng)域,如何有效的實現(xiàn)控制算法一直是人們普遍關(guān)心的問題[1]。MATLAB/Simulink軟件是由美國mathworks公司開發(fā)的,主要完成數(shù)值分析、矩陣運算及非線性動態(tài)系統(tǒng)建模和仿真等功能強大的軟件,同時它還提供了一系列工具箱用于解決許多特定的系統(tǒng)仿真問題。CCU具有用戶使用方便、可靠性高、邏輯運算能力強、抗干擾性強等優(yōu)點廣泛應(yīng)用于網(wǎng)絡(luò)控制領(lǐng)域,但其實現(xiàn)復(fù)雜的算法比較困難,因此,通過開發(fā)兩者的通信接口軟件的方法,將MATLAB/Simulink進行復(fù)雜控制算法運算與CCU進行實時數(shù)據(jù)采樣、邏輯分析和輸出控制結(jié)合起來,發(fā)揮各自的優(yōu)點,用以實現(xiàn)高效的硬件在環(huán)控制系統(tǒng)仿真。雖然MATLAB/Simulink提供了儀器控制工具箱,可以實現(xiàn)TCP/IP的通信,但它只支持MATLAB/Simulink作為客戶端的模式進行通信。鑒于模塊配置的局限性,因此開發(fā)一個以MATLAB/Simulink作為服務(wù)器的通訊程序是必要的,最后將此程序應(yīng)用于電動機轉(zhuǎn)速控制系統(tǒng)仿真實驗中。
2 MATLAB/Simulink簡介及服務(wù)端通訊
程序的開發(fā)
2.1 MATLAB/Simulink簡介
Simulink是一種針對動態(tài)系統(tǒng)進行建模、仿真和分析的工具,它被廣泛應(yīng)用于線性系統(tǒng)、非線性系統(tǒng)的建模和仿真,支持連續(xù)系統(tǒng)、離散系統(tǒng)或者兩者混合的系統(tǒng)和多速率系統(tǒng)。 [2]它也是MATLAB最重要的組件之一,是一種基于MATLAB的框圖設(shè)計環(huán)境,為用戶提供了友好的界面環(huán)境。Simulink為用戶提供了一些基本模塊,用戶只需從庫瀏覽器中選擇所需要的功能模塊,并對模塊參數(shù)進行配置后將其各模塊連接起來,就可得到用戶所需要的動態(tài)系統(tǒng)的模型。另外,對于一些基本模塊很難實現(xiàn)或不能實現(xiàn)的功能時,它還提供了用戶自定義模塊,如MATLAB Fcn模塊、SFunction模塊等,用戶可以借助這些自定義模塊,根據(jù)自己的功能需求,利用MATLAB語言、C、C++、FORTRAN、Ada等語言進行程序編寫,然后將程序封裝入這些自定義模塊中,就能得到用戶所需的新功能模塊。
2.2 MATLAB上TCP/IP通信程序的開發(fā)流程及部分程序
MATLAB中TCP/IP通信程序主要完成Simulink中動態(tài)系統(tǒng)模型數(shù)據(jù)收發(fā)與CCU中邏輯控制輸入輸出操作。其開發(fā)流程圖如圖1所示:
根據(jù)上述流程圖,編寫的主體通訊程序如下,注:message是MATLAB發(fā)給CCU的數(shù)據(jù),msg是CCU返回給MATLAB的數(shù)據(jù)。
while true
server_socket = ServerSocket(output_port);
server_socket.setSoTimeout(100);
output_socket = server_socket.accept();
output_stream = output_socket.getOutputStream;
d_output_stream = DataOutputStream(output_stream);
d_output_stream.writeBytes(char(message));
d_output_stream.flush;
input_stream = output_socket.getInputStream;
d_input_stream = DataInputStream(input_stream);
end
3 CCU邏輯控制系統(tǒng)上TCP/IP客戶端
通信模塊配置
CCU[3]是中央控制單元的縮寫,是軟邏輯控制系統(tǒng)的核心。CCU邏輯控制系統(tǒng)是基于嵌入式計算機的硬件和軟件資源,利用軟件技術(shù)來實現(xiàn)傳統(tǒng)PLC功能的控制系統(tǒng)。其系統(tǒng)綜合了數(shù)值運算及處理、邏輯運算、模擬量及開關(guān)量控制、網(wǎng)絡(luò)通信和PID調(diào)節(jié)等功能,具有強大的邏輯分析、數(shù)據(jù)處理和網(wǎng)絡(luò)通信的功能。CCU邏輯控制系統(tǒng)平臺的軟件結(jié)構(gòu)由編程系統(tǒng)和目標(biāo)運行系統(tǒng)組成:編程系統(tǒng)的主要任務(wù)是應(yīng)用編程語言進行應(yīng)用編程,程序編譯與調(diào)試,資源配置和與目標(biāo)系統(tǒng)聯(lián)機通信等,這部分由開發(fā)軟件multiprog完成;目標(biāo)運行系統(tǒng)的主要任務(wù)是完成系統(tǒng)配置,輸入信號處理,程序執(zhí)行和控制信號輸出等功能。
CCU系統(tǒng)有TCP/IP服務(wù)端程序和客戶端程序。當(dāng)CCU作為客戶端時,TCP/IP客戶端程序發(fā)送數(shù)據(jù)到PC機的以太網(wǎng)指定的端口,其訪問的PC機的IP地址來自系統(tǒng)啟動參數(shù)的主機IP地址。Multiprog開發(fā)環(huán)境中提供的固件庫中有TCP/IP/通信功能塊,設(shè)置TCP/IP通信程序步驟如下:
1)定義TCP/IP通信程序的數(shù)組為:
1TYPE
2 TCPIP_DATA : ARRAY [0..99] OF BYTE;
3END_TYPE
2)定義TCP/IP發(fā)送變量TCPIP_SendData和接收變量TCPIP_ReceiveData,選擇數(shù)據(jù)類型為“TCPIP_DATA”。
3)從編輯向?qū)У墓碳熘校x擇發(fā)送和接收TCP/IP數(shù)據(jù)的功能塊“TCP_Receive_1”和“TCP_Send_1”,將步驟2)定義的變量與這兩個功能塊連接,如圖2所示:
4 利用通訊程序?qū)崿F(xiàn)MATLAB/Simulink
與CCU的TCP/IP通信
根據(jù)以上開發(fā)的通信程序,完成MATLAB Fcn模塊的封裝后,和CCU就可以進行TCP/IP通信了。MATLAB/Simulink動態(tài)模型系統(tǒng)中包含有Sine Wave模塊、MATLAB Fcn模塊和Scope模塊,CCU系統(tǒng)中使用了TCP_Receive模塊和TCP_Send模塊等,通信過程如圖3所示:
在上圖所示的通信過程中,Sine Wave作為MATLAB/Simulink系統(tǒng)的輸入向MATLAB Fcn模塊中的發(fā)送數(shù)組發(fā)送數(shù)據(jù),然后通過以太網(wǎng)傳送給CCU,CCU再將數(shù)據(jù)通過以太網(wǎng)原樣返回到MATLAB Fcn模塊中的接收數(shù)組中,最后再通過顯示器模塊顯示出輸出波形,波形如圖4所示,從顯示器輸出的波形可直觀的看出其波形與輸入端的波形基本一致,進而驗證了通訊程序的正確性。
5 TCP/IP通訊技術(shù)在硬件在環(huán)半實物仿真中的應(yīng)用
硬件在環(huán)仿真(Hardwareintheloop Simulation,HILS)是指將部分實際被控對象或系統(tǒng)部件用高速運行的實時仿真模型來代替,而控制系統(tǒng)則用實物(即硬件)與系統(tǒng)實時仿真模型連接成為一個硬件在環(huán)仿真系統(tǒng)(HILSS),通過仿真試驗對控制系統(tǒng)的控制策略、控制功能及系統(tǒng)可靠性等進行測試和評估。[4]下面構(gòu)造一個電動機轉(zhuǎn)速控制硬件在環(huán)仿真系統(tǒng),系統(tǒng)如圖5所示,階躍信號為轉(zhuǎn)速給定值,該值與電動機的實際轉(zhuǎn)速反饋值作差,得到速度偏差,然后通過MATLAB自定義模塊傳送到CCU中進行PI調(diào)節(jié)運算,得出控制量,再經(jīng)過MATLAB自定義模塊將控制量傳送給電動機,控制電動機轉(zhuǎn)速向著給定值靠近。其中電動機模型可以看成是典型的一階系統(tǒng),傳遞函數(shù)為典型的慣性環(huán)節(jié),PI調(diào)節(jié)器的調(diào)節(jié)參數(shù)Kp = 0.6,Ki = 0.2。
通過動態(tài)系統(tǒng)的運行,顯示器中輸出的電動機轉(zhuǎn)速調(diào)節(jié)仿真波形如圖6所示,系統(tǒng)在3s內(nèi)進入穩(wěn)態(tài),此輸出結(jié)果基本達(dá)到了預(yù)期的效果。
6 結(jié)束語
本文主要完成了MATLAB/Simulink與CCU之間通過TCP/IP協(xié)議進行通信的程序開發(fā)及此通訊技術(shù)在電動機轉(zhuǎn)速控制系統(tǒng)仿真中的應(yīng)用。其中通過正弦波的例子驗證了通訊程序的正確性,并在電動機轉(zhuǎn)速控制系統(tǒng)仿真中得到了預(yù)期的轉(zhuǎn)速調(diào)節(jié)效果。該通訊程序具有通用性,只要將此程序封裝到其它系統(tǒng)的自定義模塊中,也可以完成其它系統(tǒng)的仿真實驗。另外,該仿真系統(tǒng)中CCU的控制算法可以靈活編程,對硬件在環(huán)仿真實驗具有廣泛的意義。
參考文獻(xiàn)
[1] 張昆,段其昌,張從力. MATLAB與PLC之間的通訊技術(shù)[J]. 自動化技術(shù)與應(yīng)用,2005,24(12):54-58.
[2] 趙晶,張偉. 基于MATLAB/Simulink的GPS衛(wèi)星導(dǎo)航仿真設(shè)計[J]. 科技資訊,2011,20:11-12.
[3] 李常賢,鄒積巖,趙明花,等. 一種基于MVB網(wǎng)絡(luò)通信的中央控制設(shè)備設(shè)計方案及其實現(xiàn)[J]. 鐵道學(xué)報,2010,32(2):125-130.
[4] 齊鯤鵬,隆武強,陳雷. 硬件在環(huán)仿真在汽車控制系統(tǒng)開發(fā)中的應(yīng)用及關(guān)鍵技術(shù)[J]. 內(nèi)燃機,2006,10:7-9.
收稿日期:2011-10-10
作者簡介:李英杰(1985—),男,河北唐山人,碩士研究生,研究方向:網(wǎng)絡(luò)控制設(shè)計(E-mail:Andre.Leey@gmail.com)。