郭龍+陳鴻+李進杰+谷鯤鵬
摘 要: 針對半實物仿真航空訓練模擬器設計實現(xiàn)中操作控制單元多、采集信號類型多、交互實時性高等要求,基于ADAM模塊實現(xiàn)了航空訓練模擬器的數(shù)據(jù)采集與控制。采用RS 485串口總線,以ADAM4000系列為分布式I/O模塊,構(gòu)建了主從式測控體系;依據(jù)Advantech ADAM4K協(xié)議,采用C#模塊化設計,建立了點對多半雙工通信機制。該采集與控制結(jié)構(gòu)能夠?qū)崿F(xiàn)仿真實裝狀態(tài)的實時采集,滿足仿真座艙內(nèi)各交互設備的可靠控制要求。該軟硬件結(jié)構(gòu)在某型航空訓練模擬器應用后,取得了較為滿意的效果。
關(guān)鍵詞: 數(shù)據(jù)采集; ADAM模塊; 航空訓練模擬器; RS 485總線
中圖分類號: TN911?34; V267.3 文獻標識碼: A 文章編號: 1004?373X(2014)18?0098?03
Data acquisition and control of aviation training simulator based on ADAM module
GUO Long1, CHEN Hong1, LI Jin?jie1, GU Kun?peng2
(1. Qingdao Branch, Naval Aeronautical Engineering Academy, Qingdao 266071, China; 2. Naval Unit 91467 of PLA, Jiaozhou 266311, China)
Abstract: To meet the high requirements of the aviation training simulator for operation control, signal acquisition and real?time interaction, a data acquisition and control of the aviation training simulator based on ADAM module is presented. RS?485 bus and was used in the design of the master?slave control system with ADAM4000 series as distributed I/O module. According to the Advantech ADAM4K protocol, the C# modularized structure was used in the design of semiduplex communication mechanism. The data acquisition and control structure can implement real?time acquisition in simulation real equipment state, and meet the reliable control requirements of each interaction device in simulation cabin. The framework has been put into application successfully, and satisfied effects were obtained.
Keywords: data acquisition; ADAM module; aviation training simulator; RS 485 bus
0 引 言
當前部隊航空裝備快速更新?lián)Q代,各培訓院校出現(xiàn)實裝短缺、訓練手段受限的問題。以計算機系統(tǒng)為核心,綜合應用仿真技術(shù)、測控技術(shù),構(gòu)建功能強大的訓練模擬器有望成為有效的解決方案。這類訓練模擬器不是完全虛擬的訓練系統(tǒng),而是半實物的仿真訓練模擬器[1?4],其具備與實裝一致的操作和顯示功能,并擴展實裝不具備的特情設置、故障設置、訓練評估等功能,從而既能做常規(guī)維護操作訓練,又能進行各種突發(fā)情況訓練,能夠大大增強目前航空裝備教學訓練手段。
半實物訓練模擬器實現(xiàn)的一個難點是仿真實裝的信息采集與控制,即感知受訓人員的操作,控制訓練模擬器做出相應的響應;同時實時采集訓練模擬器的狀態(tài)變化,改變訓練模擬器的顯示輸出。本文以研華公司的ADAM4000系列[5?7]分布式I/O模塊為基本單元,構(gòu)建航空訓練模擬器的數(shù)據(jù)采集與控制網(wǎng)絡,較好地解決了上述難題,并具有可靠性高,實時性好,抗干擾能力強等優(yōu)點。
1 硬件構(gòu)成
該航空訓練模擬器的數(shù)據(jù)采集與控制采用RS 485串行異步半雙工通信協(xié)議,將多個遠程I/O模塊并聯(lián)在一個總線下,以工業(yè)控制計算機作為主機實現(xiàn)主從式的遠程數(shù)據(jù)采集控制,其硬件組成包括:1臺工業(yè)控制計算機、1塊ADAM4520模塊(RS 232?RS 485有源轉(zhuǎn)換模塊)、1塊ADAM4012模塊(模擬量輸入模塊)、1塊ADAM4021模塊(模擬量輸出模塊)、3塊ADAM4050模塊(數(shù)字量輸入)、1塊ADAM4060模塊(數(shù)字量輸出)以及RS 232和RS 485通信電纜各1條,如圖1所示。
工業(yè)控制計算機:作為訓練模擬器的控制主機,通過COM1(RS 232)口與ADAM4051連接,完成對各數(shù)據(jù)采集模塊的實時通信,能實時監(jiān)聽訓練模擬器各人機交互設備狀態(tài)變化,從而及時響應訓練人員的操作,同時改變訓練模擬器座艙面板指示和顯示器畫面。
圖1 數(shù)據(jù)采集與控制硬件構(gòu)成
ADAM4051:RS 232轉(zhuǎn)RS 422/485轉(zhuǎn)換器,與工控機的串口COM1連接,將計算機串口的標準RS 232總線信號轉(zhuǎn)換為完全隔離的RS 485通信總線。ADAM4051可自動控制RS 485總線的方向,而不需要主機發(fā)出握手信號,從而使得主機上可以通用RS 232接口編寫通信代碼,大大提高編程效率。
ADAM4050:7路的數(shù)字量輸入和8路數(shù)字量輸出模塊,輸入既可以是干接點信號,也可以是濕接點信號。ADAM4050不僅可以通過輸入接點采集訓練模擬器座艙內(nèi)的各個開關(guān)按鍵的信號,如武器控制板、多功能顯示器按鍵、線路通斷故障狀態(tài)信號等;還可以通過輸出接點控制訓練模擬器的狀態(tài),如指示燈的亮滅等。
ADAM4060:4路繼電器輸出模塊,專門用于控制訓練模擬器內(nèi)大功率電流的配送,如航空配電板、航空電子啟動板等。
ADAM4017:8通道模擬量輸入模塊,使用微處理器控制的高精度16位A/D轉(zhuǎn)換器,通過它可以實時采集駕駛桿和油門桿電位器的連續(xù)變化。
ADAM4024:4通道模擬量輸出模塊,用在實時改變訓練模擬器內(nèi)各種模擬指示表的指示值。
其中,各ADAM4000系列模塊分別連接航空訓練模擬器相應的人機交互設備如開關(guān)按鍵、指示燈、駕駛桿等,用于控制相關(guān)設備;同時各ADAM4000系列模塊的DATA+,DATA-均分別與ADAM4520的DATA+,DATA-連接,通過ADAM4520轉(zhuǎn)換后與工控機的COM1口連接,從而構(gòu)建了以RS 485為總線,以工控機為主機,各ADAM300系列模塊為從機的主從式數(shù)據(jù)采集與控制硬件結(jié)構(gòu)。
2 軟件實現(xiàn)
訓練模擬器的數(shù)據(jù)采集與控制軟件采用功能強大的C#來編程實現(xiàn),軟件采用模塊化設計,包括:輸入采集模塊、輸出控制模塊、操作響應模塊與底層的通信串口和顯示接口。軟件模塊組成如圖2所示。
圖2 軟件模塊組成圖
2.1 數(shù)據(jù)采集與控制實現(xiàn)
所有ADAM4000系列模塊控制命令均由上位機以ASCII碼字符串的形式傳送,遵循Advantech ADAM4K協(xié)議,在串口通信時上位機需遵照此協(xié)議向ADAM4000系列模塊發(fā)送命令并采集數(shù)據(jù)。同時為保證通信暢通,上位機與ADAM4000模塊應設置相同的通信參數(shù)(波特率、數(shù)據(jù)位、停止位、校驗方式等)。在訓練模擬器中將COM1口參數(shù)設為:9 600波特率,1停止位,8數(shù)據(jù)位,0校驗。
2.1.1 輸入采集編程實現(xiàn)
ADAM4000系列模塊與上位機(訓練模擬器工控機)通過RS 485構(gòu)成主從式半雙工通信網(wǎng)絡,要實現(xiàn)通信,首先必須配置各模塊,使各模塊擁有惟一地址,只有模塊自身的地址與上位機訪問一致時,該模塊才能與上位機通信。因此某一時刻上位機只能與一個ADAM模塊通信,如果需要實時采集所有ADAM輸入模塊的數(shù)據(jù),需要上位機循環(huán)訪問所有地址。輸入采集模塊編程實現(xiàn)的核心代碼如下:
private bool ADAM_Start() //通信串口初始化函數(shù)
{
adamCom = new AdamCom(1); //使用COM1為通信串口
adamCom.OpenComPort() //打開串口
//設置COM口參數(shù)為9 600波特率,無校驗,8數(shù)據(jù)位,
1停止位
adamCom.SetComPortState(Baudrate.Baud_9600, Databits.
Eight, Parity.None, Stopbits.One);
//設置各ADAM模塊的地址
m_iAddr4017 = 1;m_iAddr4024 = 2;m_iAddr4050_1 = 3;
m_iAddr4050_2 = 4;m_iAddr4050_3=5;m_iAddr4060 = 6;
}
private void RefreshInput() //輸入采集函數(shù)
{
bool[] bDI_4050_1 bDI_4050_2, bDI_4050_3,bDO;
float[] fAI_4017; Adam4000_ChannelStatus[] status_4017;
//依次從各ADAM模塊采集數(shù)據(jù),放入對應的數(shù)組中
adamCom.DigitalInput(m_iAddr4050_1).GetValues(7, 8, out bDI_4051_1, out bDO);
adamCom.DigitalInput(m_iAddr4050_2).GetValues(7, 8, out bDI_4051_2, out bDO);
adamCom.DigitalInput(m_iAddr4050_3).GetValues(7, 8, out bDI_4051_3, out bDO);
adamCom.AnalogInput(m_iAddr4017).GetValues(8, out fAI_4017, out status_4017);
}
private void timer1_Tick(object sender, System.EventArgs e) //定時函數(shù)
{
RefreshInput(); //不斷循環(huán)采集各ADAM模塊的輸入數(shù)據(jù)
… …
}
2.1.2 輸出控制編程實現(xiàn)
若需要控制訓練模擬器某一設備的狀態(tài),只需將控制數(shù)據(jù)寫入對應地址ADAM模塊的對應控制端口。同樣主從式半雙工通信無法同一時刻與多個地址通信,因此需要建立定時發(fā)送隊列,上位機依次取出隊列中的控制指令,發(fā)往對應地址ADAM模塊,輸出控制模塊編程實現(xiàn)的核心代碼如下:
private void RefreshOutput() //輸出控制函數(shù)
{
While(SendBuf.length != 0) //若發(fā)送隊列不為空
{
if(SendBuf [0].Type == ‘D) //數(shù)字量輸出
adamCom.DigitalOutput(SendBuf[0].Addr).SetValue(SendBuf[0].iCh, SendBuf[0].Value);
else //模擬量輸出
adamCom.AnalogOutput(SendBuf[0].Addr).SetValue(Send
Buf[0].iCh, SendBuf[0].Value));
SendBuf.RemoveAt(0); //清除發(fā)送隊列中第一條數(shù)據(jù)
}
}
private void timer1_Tick(object sender, System.EventArgs e) //定時函數(shù)
{
… …
RefreshOutput (); //不斷循環(huán)將發(fā)送隊列中的數(shù)據(jù)發(fā)出
}
2.2 軟件運行流程
軟件的運行流程如圖3所示。程序開始后,進入循環(huán)監(jiān)聽狀態(tài),通過COM1串口與各ADAM4000系統(tǒng)模塊實時通信;若檢測到某一采集點輸入發(fā)生變化(受訓人員進行了相關(guān)操作,如加電、發(fā)射等),則調(diào)用對應的操作響應函數(shù)改變訓練模擬器的運行狀態(tài),同時通過輸出控制模塊和顯示模塊將響應結(jié)果反饋給受訓人員。
圖3 軟件運行流程圖
3 結(jié) 語
該數(shù)據(jù)采集與控制軟硬件結(jié)構(gòu)已應用于某型機載電子設備訓練模擬器的設計開發(fā)中,并取得了良好的效果?;贏DAM模塊的航空訓練模擬器數(shù)據(jù)采集與控制設計,在簡化硬件電路的同時,提高了系統(tǒng)的穩(wěn)定性和通用性。基于C#開發(fā)的模塊化軟件結(jié)構(gòu)設計簡單、結(jié)構(gòu)合理,可以滿足其他各型航空訓練模擬器的應用需求,具有一定的推廣應用價值。
參考文獻
[1] 高偉,陳鴻,劉雅娟.基于半實物仿真的某型機載電子設備訓練模擬器設計[J].現(xiàn)代計算機,2013(6):74?76.
[2] 查國云,劉鵬飛,陳秋鳳,等.某型飛機航空軍械仿真訓練系統(tǒng)設計[J].計算機測量與控制,2011,19(10):2455?2458.
[3] 鐘春華,許炎義,劉峰.基于半實物仿真的艦員級雷達維修訓練系統(tǒng)設計[J].艦船電子工程,2011,31(11):125?129.
[4] 李柯,魏保華,鄭思龍,等.某型防空導彈半實物仿真訓練模擬系統(tǒng)設計[J].計算機仿真,2008,25(1):297?301.
[5] 鄒益民,徐赤.借助Simulink 及ADAM 模塊構(gòu)建半實物仿真系統(tǒng)[J].自動化儀表,2013,33(10):9?12.
[6] 彭文輝,聶永芳,唐震.基于ADAM的某型導彈模擬訓練系統(tǒng)設計[J].工業(yè)控制計算機,2009,22(2):1?3.
[7] 楊永剛,張建新,常衛(wèi),等.基于VC的ADAM數(shù)據(jù)采集管理系統(tǒng)[J].機電工程,2010,27(10):71?74.
[8] 龍勇,黃先祥,張志利,等.基于視景仿真的某型武器分布式模擬系統(tǒng)設計[J].系統(tǒng)仿真學報,2006,18(7):1820?1823.
[9] 唐震,王希全,包小林.潛射戰(zhàn)術(shù)導彈模擬訓練系統(tǒng)的設計[J].四川兵工學報,2009,30(4):30?32.
[10] 李江全.Visual C#.NET串口通信及測控應用典型實例[M].北京:電子工業(yè)出版社,2012.
{
While(SendBuf.length != 0) //若發(fā)送隊列不為空
{
if(SendBuf [0].Type == ‘D) //數(shù)字量輸出
adamCom.DigitalOutput(SendBuf[0].Addr).SetValue(SendBuf[0].iCh, SendBuf[0].Value);
else //模擬量輸出
adamCom.AnalogOutput(SendBuf[0].Addr).SetValue(Send
Buf[0].iCh, SendBuf[0].Value));
SendBuf.RemoveAt(0); //清除發(fā)送隊列中第一條數(shù)據(jù)
}
}
private void timer1_Tick(object sender, System.EventArgs e) //定時函數(shù)
{
… …
RefreshOutput (); //不斷循環(huán)將發(fā)送隊列中的數(shù)據(jù)發(fā)出
}
2.2 軟件運行流程
軟件的運行流程如圖3所示。程序開始后,進入循環(huán)監(jiān)聽狀態(tài),通過COM1串口與各ADAM4000系統(tǒng)模塊實時通信;若檢測到某一采集點輸入發(fā)生變化(受訓人員進行了相關(guān)操作,如加電、發(fā)射等),則調(diào)用對應的操作響應函數(shù)改變訓練模擬器的運行狀態(tài),同時通過輸出控制模塊和顯示模塊將響應結(jié)果反饋給受訓人員。
圖3 軟件運行流程圖
3 結(jié) 語
該數(shù)據(jù)采集與控制軟硬件結(jié)構(gòu)已應用于某型機載電子設備訓練模擬器的設計開發(fā)中,并取得了良好的效果。基于ADAM模塊的航空訓練模擬器數(shù)據(jù)采集與控制設計,在簡化硬件電路的同時,提高了系統(tǒng)的穩(wěn)定性和通用性。基于C#開發(fā)的模塊化軟件結(jié)構(gòu)設計簡單、結(jié)構(gòu)合理,可以滿足其他各型航空訓練模擬器的應用需求,具有一定的推廣應用價值。
參考文獻
[1] 高偉,陳鴻,劉雅娟.基于半實物仿真的某型機載電子設備訓練模擬器設計[J].現(xiàn)代計算機,2013(6):74?76.
[2] 查國云,劉鵬飛,陳秋鳳,等.某型飛機航空軍械仿真訓練系統(tǒng)設計[J].計算機測量與控制,2011,19(10):2455?2458.
[3] 鐘春華,許炎義,劉峰.基于半實物仿真的艦員級雷達維修訓練系統(tǒng)設計[J].艦船電子工程,2011,31(11):125?129.
[4] 李柯,魏保華,鄭思龍,等.某型防空導彈半實物仿真訓練模擬系統(tǒng)設計[J].計算機仿真,2008,25(1):297?301.
[5] 鄒益民,徐赤.借助Simulink 及ADAM 模塊構(gòu)建半實物仿真系統(tǒng)[J].自動化儀表,2013,33(10):9?12.
[6] 彭文輝,聶永芳,唐震.基于ADAM的某型導彈模擬訓練系統(tǒng)設計[J].工業(yè)控制計算機,2009,22(2):1?3.
[7] 楊永剛,張建新,常衛(wèi),等.基于VC的ADAM數(shù)據(jù)采集管理系統(tǒng)[J].機電工程,2010,27(10):71?74.
[8] 龍勇,黃先祥,張志利,等.基于視景仿真的某型武器分布式模擬系統(tǒng)設計[J].系統(tǒng)仿真學報,2006,18(7):1820?1823.
[9] 唐震,王希全,包小林.潛射戰(zhàn)術(shù)導彈模擬訓練系統(tǒng)的設計[J].四川兵工學報,2009,30(4):30?32.
[10] 李江全.Visual C#.NET串口通信及測控應用典型實例[M].北京:電子工業(yè)出版社,2012.
{
While(SendBuf.length != 0) //若發(fā)送隊列不為空
{
if(SendBuf [0].Type == ‘D) //數(shù)字量輸出
adamCom.DigitalOutput(SendBuf[0].Addr).SetValue(SendBuf[0].iCh, SendBuf[0].Value);
else //模擬量輸出
adamCom.AnalogOutput(SendBuf[0].Addr).SetValue(Send
Buf[0].iCh, SendBuf[0].Value));
SendBuf.RemoveAt(0); //清除發(fā)送隊列中第一條數(shù)據(jù)
}
}
private void timer1_Tick(object sender, System.EventArgs e) //定時函數(shù)
{
… …
RefreshOutput (); //不斷循環(huán)將發(fā)送隊列中的數(shù)據(jù)發(fā)出
}
2.2 軟件運行流程
軟件的運行流程如圖3所示。程序開始后,進入循環(huán)監(jiān)聽狀態(tài),通過COM1串口與各ADAM4000系統(tǒng)模塊實時通信;若檢測到某一采集點輸入發(fā)生變化(受訓人員進行了相關(guān)操作,如加電、發(fā)射等),則調(diào)用對應的操作響應函數(shù)改變訓練模擬器的運行狀態(tài),同時通過輸出控制模塊和顯示模塊將響應結(jié)果反饋給受訓人員。
圖3 軟件運行流程圖
3 結(jié) 語
該數(shù)據(jù)采集與控制軟硬件結(jié)構(gòu)已應用于某型機載電子設備訓練模擬器的設計開發(fā)中,并取得了良好的效果?;贏DAM模塊的航空訓練模擬器數(shù)據(jù)采集與控制設計,在簡化硬件電路的同時,提高了系統(tǒng)的穩(wěn)定性和通用性?;贑#開發(fā)的模塊化軟件結(jié)構(gòu)設計簡單、結(jié)構(gòu)合理,可以滿足其他各型航空訓練模擬器的應用需求,具有一定的推廣應用價值。
參考文獻
[1] 高偉,陳鴻,劉雅娟.基于半實物仿真的某型機載電子設備訓練模擬器設計[J].現(xiàn)代計算機,2013(6):74?76.
[2] 查國云,劉鵬飛,陳秋鳳,等.某型飛機航空軍械仿真訓練系統(tǒng)設計[J].計算機測量與控制,2011,19(10):2455?2458.
[3] 鐘春華,許炎義,劉峰.基于半實物仿真的艦員級雷達維修訓練系統(tǒng)設計[J].艦船電子工程,2011,31(11):125?129.
[4] 李柯,魏保華,鄭思龍,等.某型防空導彈半實物仿真訓練模擬系統(tǒng)設計[J].計算機仿真,2008,25(1):297?301.
[5] 鄒益民,徐赤.借助Simulink 及ADAM 模塊構(gòu)建半實物仿真系統(tǒng)[J].自動化儀表,2013,33(10):9?12.
[6] 彭文輝,聶永芳,唐震.基于ADAM的某型導彈模擬訓練系統(tǒng)設計[J].工業(yè)控制計算機,2009,22(2):1?3.
[7] 楊永剛,張建新,常衛(wèi),等.基于VC的ADAM數(shù)據(jù)采集管理系統(tǒng)[J].機電工程,2010,27(10):71?74.
[8] 龍勇,黃先祥,張志利,等.基于視景仿真的某型武器分布式模擬系統(tǒng)設計[J].系統(tǒng)仿真學報,2006,18(7):1820?1823.
[9] 唐震,王希全,包小林.潛射戰(zhàn)術(shù)導彈模擬訓練系統(tǒng)的設計[J].四川兵工學報,2009,30(4):30?32.
[10] 李江全.Visual C#.NET串口通信及測控應用典型實例[M].北京:電子工業(yè)出版社,2012.