作者:楊占錄;王宗亮;劉海光
引言
上世紀九十年代以來,由于計算機技術(shù)、自動控制技術(shù)和仿真技術(shù)的飛速發(fā)展,訓練模擬器在各個領(lǐng)域特別是航海、航天、軍事領(lǐng)域得到了廣泛的應用并取得了很好的應用成果。動力系統(tǒng)是艦艇的重要系統(tǒng)之一,其操作人員的操作水平對艦艇能否遂行各項戰(zhàn)斗任務(wù)影響重大。因此,動力系統(tǒng)訓練模擬器在我國海軍已得到較廣泛應用。這些訓練模擬器大都采用半實物仿真的模式,模擬器在設(shè)備外觀上與被仿真設(shè)備完全一致,但其內(nèi)部為計算機控制,并沒有真實設(shè)備。這種訓練模式的優(yōu)點是學員的操作手感與被仿真設(shè)備完全一致,學員完成訓練后完全可以達到操作實際裝備所需的操作技能,能顯著提高軍事訓練的質(zhì)量與速度。
半實物仿真設(shè)備面板上有各類操作與顯示部件,必須用數(shù)據(jù)采集設(shè)備采集操作人員操作開關(guān)等部件產(chǎn)生的數(shù)據(jù),同時還要驅(qū)動指示燈、儀表等顯示部件將計算結(jié)果進行輸出。因此,設(shè)計一套可靠工作的數(shù)據(jù)采集與控制系統(tǒng)是研制半實物訓練模擬器的關(guān)鍵技術(shù)之一。
1 系統(tǒng)概述
動力系統(tǒng)設(shè)備多而且關(guān)系復雜,開發(fā)的模擬器包括37 臺模擬設(shè)備,合計開關(guān)量輸入點733 個,開關(guān)量輸出點1115 個,模擬量輸入點19 個,模擬量輸出點149 個。系統(tǒng)的核心是仿真服務(wù)器(該服務(wù)器同時作為模擬器的教練員臺)。服務(wù)器上運行SimuEngine 仿真引擎,系統(tǒng)中所有的數(shù)學模型都由仿真引擎調(diào)度。I/O 設(shè)備采集半實物設(shè)備上的操作,由通信程序?qū)⒉僮鲾?shù)據(jù)通過以太網(wǎng)上傳至服務(wù)器上的實時數(shù)據(jù)庫,服務(wù)器根據(jù)實時數(shù)據(jù)庫對數(shù)學模型進行計算,計算結(jié)果也寫入實時數(shù)據(jù)庫。通信程序?qū)?a href="http://wenjunhu.com/article/zt/" target="_blank">最新計算結(jié)果發(fā)送給I/O 設(shè)備,I/O 設(shè)備驅(qū)動相應的指示燈或儀表進行顯示。系統(tǒng)總體結(jié)構(gòu)如圖1 所示。
2 設(shè)備選型
接口系統(tǒng)的設(shè)計有四種方案可供選擇:
(1)基于某種型號的微處理器或單片機設(shè)計專用的接口硬件。該方案的優(yōu)點是成本低,但設(shè)計周期長,可靠性難以保證,且開發(fā)調(diào)試困難。
(2) 采用工業(yè)控制計算機以及配套的硬件接口。該方案的優(yōu)點是成本較低,選型方便快捷、開發(fā)調(diào)試方便。但由于這種接口系統(tǒng)依賴于WINDOWS 操作系統(tǒng)運行,可靠性不高。
圖 1 系統(tǒng)總體結(jié)構(gòu)
(3)采用可編程序控制器PLC 作為接口。該方案的優(yōu)點是可靠性高、開發(fā)調(diào)試方便、模塊化結(jié)構(gòu)、易于維護;缺點是成本高,而且傳統(tǒng)的中低端PLC 沒有以太網(wǎng)接口,不易構(gòu)成較為復雜的網(wǎng)絡(luò)系統(tǒng),最新推出的帶以太網(wǎng)接口的PLC 價格昂貴。
(4)采用可編程自動化控制器PAC(Programmable Automation Controller)。PAC 結(jié)合了PC 的處理器、RAM 和軟件的優(yōu)勢,以及PLC 固有的可靠性和分布特性,是近年來在工控領(lǐng)域出現(xiàn)的新型控制器。 PAC 與傳統(tǒng)PLC 的性能比較見表1。
表 1 PAC 與傳統(tǒng)PLC 的性能比較
PAC 產(chǎn)品型號眾多,經(jīng)過多方比較,選擇了ADAM5510-E/TCP。它采用模塊化結(jié)構(gòu),其CPU 模塊包括80188CPU、256KB FLASH ROM、256KB SRAM 和三個串行通訊口與一個10/100M 以太網(wǎng)接口。其底板有8 個擴展槽,可以安裝不同類型的I/O 模塊。系統(tǒng)內(nèi)置ROM-DOS,與MS-DOS 操作系統(tǒng)兼容,提供了除BIOS 之外的基本MS-DOS 功能調(diào)用,允許運行用C 或C++等高級語言編譯的應用程序。與PLC 相比,5510 運算能力和通訊能力更強,模擬量點價位低。與工控機相比,5510 系統(tǒng)更加緊湊,抗干擾能力更強,因此適合做模擬器的I/O 設(shè)備。
本系統(tǒng)*選擇了四種 I/O 模塊:16 通道隔離數(shù)字量輸出模塊ADAM5056S、16 通道隔離數(shù)字量輸入模塊ADAM5051S、4 通道模擬量輸出模塊ADAM5024、8 通道高速模擬量輸入模塊ADAM5017H 等。另外,在某些操作臺上有數(shù)碼管顯示器件。由于數(shù)碼管的位數(shù)較多,為了節(jié)約輸出模塊,不宜用5056 的輸出口直接驅(qū)動數(shù)碼管的各段,因此選用了MAX7219 作為數(shù)碼管的驅(qū)動芯片。通常,使用單片機等微控制器通過7219 的DIN、CS 和CLK 三根信號線控制它進行數(shù)碼管的顯示。該項目中由5056 的三個輸出口模擬微控制器的三個口線對7219 進行控制。
3 程序設(shè)計
5510 沒有顯示界面,首先在PC 機上編寫應用程序,編譯好之后再下載到5510 內(nèi)。5510采用了DOS 類操作系統(tǒng),不支持多線程編程,每臺5510 的程序隨I/O 模塊配置不同略有不同,但程序的總體流程均如圖2 所示。
圖2 程序總體流程
3.1 初始化子程序
(1)啟動看門狗。系統(tǒng)由于某種原因陷入死循環(huán)后能自動退出,使系統(tǒng)恢復正常。
(2)初始化5024、5017。該兩種模擬量模塊在使用之前需要通過軟件進行設(shè)置。其中5024 設(shè)置為4“20mA 電流輸出,5017 設(shè)置為0”10V 輸入。
(3)啟動網(wǎng)絡(luò)心跳包檢測定時器。網(wǎng)絡(luò)心跳包用于確認網(wǎng)絡(luò)連接是否正常。
3.2 網(wǎng)絡(luò)連接子程序
控制器首先建立 socket,然后與服務(wù)器連接。網(wǎng)絡(luò)連接子程序的主要部分為:
void ConnectServer()
{ //首先進行相關(guān)變量定義
if((SO_5510=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==
INVALID_SOCKET) //建立socket 并設(shè)置為TCP 方式
{//未能建立socket 的處理}
pulArgp = 1;
if(ioctlsocket(SO_5510, FIONBIO, &pulArgp)) //將socket 設(shè)置為非阻塞模式
{//未能設(shè)置socket 的處理}
he=gethostbyname(“172.18.55.1”); //server address
Server_addr.sin_family = AF_INET; //TCP/IP
Server_addr.sin_port = htons(Server_Port);
Server_addr.sin_addr =*((struct in_addr *)he-》h_addr);
memset(&(Server_addr.sin_zero), 0, 8);
ConnectReturnFlag = connect(SO_5510, (struct sockaddr *)&Server_addr,sizeof(struct
sockaddr));//建立連接
if( ConnectReturnFlag == 0)
{//建立連接成功的相應處理}
else
{//建立連接失敗的相應處理}
}
3.3 接收數(shù)并處理子程序
5510 接收到數(shù)據(jù)包后首先分析數(shù)據(jù)包內(nèi)的命令字。本系統(tǒng)中設(shè)計的命令字有開始采集、停止采集、檢查連接、有效數(shù)據(jù)等。如果是前三種命令則立即執(zhí)行,如果是“有效數(shù)據(jù)”命令則打開數(shù)據(jù)包后面的內(nèi)容(可能包含多個子包),子包內(nèi)包含開關(guān)量、模擬量等若干子命令,程序根據(jù)不同子命令執(zhí)行相應子程序。程序主體示意如下。
void ReceiveAndProcess()
{ if ((numbytes = recv(SO_5510, (char *)&RECVITEMS, sizeof(RECVITEMS), 0))==
SOCKET_ERROR)
{//沒有接收到數(shù)據(jù)的處理}
if(numbytes》0)//收到數(shù)據(jù)后的處理
{ switch(RECVITEMS.Command) //判斷命令字
{ case Scollectstart: //開始采集命令
SendCommand(CReplyCollectStart);//表示收到開始采集命令
break;
case Ssendgroupdata: //有效數(shù)據(jù)指令
{ for(CircleNum=0;CircleNum
{ switch (RECVITEMS.Items[CircleNum].Command) //判斷子命令
{ case SsendoneDOdata: //server 發(fā)送的開關(guān)量單字節(jié)指令
WriteOneDOChannel(RECVITEMS.Items[CircleNum]);
break;
case SsendoneAOdata: //server 發(fā)送的模擬量單字節(jié)指令
WriteOneAOChannel(RECVITEMS.Items[CircleNum]);
break;
default: break;
} } }
default: break;
} } }
3.3 數(shù)據(jù)采集發(fā)送子程序
為了降低網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,PAC 控制器只向服務(wù)器發(fā)送狀態(tài)發(fā)生變化的數(shù)據(jù),而狀態(tài)沒有發(fā)生變化的數(shù)據(jù)則不發(fā)送。同樣,服務(wù)器通信程序SimuTrans 只向PAC 控制器發(fā)送模型計算后發(fā)生變化的數(shù)據(jù)。
為了保證數(shù)據(jù)不會丟失,針對不同種類的數(shù)據(jù)采用了不同的發(fā)送、回送方式。在該模擬器中,輸入的模擬量為艇員操作面板上的旋鈕時帶動內(nèi)部的電位器產(chǎn)生0“10V 的模擬電壓信號,由于其操作是連續(xù)過程,操作過程會產(chǎn)生一系列變化數(shù)據(jù),因此5017H 采集到的變化數(shù)據(jù)直接發(fā)送到服務(wù)器即可。對于操作按鈕、多位開關(guān)等部件產(chǎn)生的開關(guān)量數(shù)據(jù),為了避免數(shù)據(jù)丟失采用了重復發(fā)送,并且服務(wù)器收到數(shù)據(jù)后要做應答,確保了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
4 結(jié)論
該模擬器2007 年9 月通過了驗收、鑒定。在動力系統(tǒng)管理人員及在校學員的學習與訓練過程中發(fā)揮了重要作用,獲得了良好的軍事和經(jīng)濟效益。該半實物仿真訓練模擬器的成功研制實踐說明,將新型PAC 控制器應用于模擬器代替?zhèn)鹘y(tǒng)的工控機或PLC 不僅能縮短開發(fā)周期、使系統(tǒng)運行穩(wěn)定可靠,而且系統(tǒng)開放性好,可以方便地與其他系統(tǒng)的模擬器連接組成更大規(guī)模的模擬器進行訓練,是模擬器研制的一種新思路。
責任編輯:gt
-
plc
+關(guān)注
關(guān)注
5011文章
13299瀏覽量
463434 -
仿真
+關(guān)注
關(guān)注
50文章
4083瀏覽量
133613 -
模擬器
+關(guān)注
關(guān)注
2文章
875瀏覽量
43224
發(fā)布評論請先 登錄
相關(guān)推薦
評論