APP下载

基于ADAM模块的航空训练模拟器数据采集与控制

2014-09-15郭龙陈鸿李进杰谷鲲鹏

现代电子技术 2014年18期
关键词:模拟器实物串口

郭龙+陈鸿+李进杰+谷鲲鹏

摘 要: 针对半实物仿真航空训练模拟器设计实现中操作控制单元多、采集信号类型多、交互实时性高等要求,基于ADAM模块实现了航空训练模拟器的数据采集与控制。采用RS 485串口总线,以ADAM4000系列为分布式I/O模块,构建了主从式测控体系;依据Advantech ADAM4K协议,采用C#模块化设计,建立了点对多半双工通信机制。该采集与控制结构能够实现仿真实装状态的实时采集,满足仿真座舱内各交互设备的可靠控制要求。该软硬件结构在某型航空训练模拟器应用后,取得了较为满意的效果。

关键词: 数据采集; 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 引 言

当前部队航空装备快速更新换代,各培训院校出现实装短缺、训练手段受限的问题。以计算机系统为核心,综合应用仿真技术、测控技术,构建功能强大的训练模拟器有望成为有效的解决方案。这类训练模拟器不是完全虚拟的训练系统,而是半实物的仿真训练模拟器[1?4],其具备与实装一致的操作和显示功能,并扩展实装不具备的特情设置、故障设置、训练评估等功能,从而既能做常规维护操作训练,又能进行各种突发情况训练,能够大大增强目前航空装备教学训练手段。

半实物训练模拟器实现的一个难点是仿真实装的信息采集与控制,即感知受训人员的操作,控制训练模拟器做出相应的响应;同时实时采集训练模拟器的状态变化,改变训练模拟器的显示输出。本文以研华公司的ADAM4000系列[5?7]分布式I/O模块为基本单元,构建航空训练模拟器的数据采集与控制网络,较好地解决了上述难题,并具有可靠性高,实时性好,抗干扰能力强等优点。

1 硬件构成

该航空训练模拟器的数据采集与控制采用RS 485串行异步半双工通信协议,将多个远程I/O模块并联在一个总线下,以工业控制计算机作为主机实现主从式的远程数据采集控制,其硬件组成包括:1台工业控制计算机、1块ADAM4520模块(RS 232?RS 485有源转换模块)、1块ADAM4012模块(模拟量输入模块)、1块ADAM4021模块(模拟量输出模块)、3块ADAM4050模块(数字量输入)、1块ADAM4060模块(数字量输出)以及RS 232和RS 485通信电缆各1条,如图1所示。

工业控制计算机:作为训练模拟器的控制主机,通过COM1(RS 232)口与ADAM4051连接,完成对各数据采集模块的实时通信,能实时监听训练模拟器各人机交互设备状态变化,从而及时响应训练人员的操作,同时改变训练模拟器座舱面板指示和显示器画面。

图1 数据采集与控制硬件构成

ADAM4051:RS 232转RS 422/485转换器,与工控机的串口COM1连接,将计算机串口的标准RS 232总线信号转换为完全隔离的RS 485通信总线。ADAM4051可自动控制RS 485总线的方向,而不需要主机发出握手信号,从而使得主机上可以通用RS 232接口编写通信代码,大大提高编程效率。

ADAM4050:7路的数字量输入和8路数字量输出模块,输入既可以是干接点信号,也可以是湿接点信号。ADAM4050不仅可以通过输入接点采集训练模拟器座舱内的各个开关按键的信号,如武器控制板、多功能显示器按键、线路通断故障状态信号等;还可以通过输出接点控制训练模拟器的状态,如指示灯的亮灭等。

ADAM4060:4路继电器输出模块,专门用于控制训练模拟器内大功率电流的配送,如航空配电板、航空电子启动板等。

ADAM4017:8通道模拟量输入模块,使用微处理器控制的高精度16位A/D转换器,通过它可以实时采集驾驶杆和油门杆电位器的连续变化。

ADAM4024:4通道模拟量输出模块,用在实时改变训练模拟器内各种模拟指示表的指示值。

其中,各ADAM4000系列模块分别连接航空训练模拟器相应的人机交互设备如开关按键、指示灯、驾驶杆等,用于控制相关设备;同时各ADAM4000系列模块的DATA+,DATA-均分别与ADAM4520的DATA+,DATA-连接,通过ADAM4520转换后与工控机的COM1口连接,从而构建了以RS 485为总线,以工控机为主机,各ADAM300系列模块为从机的主从式数据采集与控制硬件结构。

2 软件实现

训练模拟器的数据采集与控制软件采用功能强大的C#来编程实现,软件采用模块化设计,包括:输入采集模块、输出控制模块、操作响应模块与底层的通信串口和显示接口。软件模块组成如图2所示。

图2 软件模块组成图

2.1 数据采集与控制实现

所有ADAM4000系列模块控制命令均由上位机以ASCII码字符串的形式传送,遵循Advantech ADAM4K协议,在串口通信时上位机需遵照此协议向ADAM4000系列模块发送命令并采集数据。同时为保证通信畅通,上位机与ADAM4000模块应设置相同的通信参数(波特率、数据位、停止位、校验方式等)。在训练模拟器中将COM1口参数设为:9 600波特率,1停止位,8数据位,0校验。

2.1.1 输入采集编程实现

ADAM4000系列模块与上位机(训练模拟器工控机)通过RS 485构成主从式半双工通信网络,要实现通信,首先必须配置各模块,使各模块拥有惟一地址,只有模块自身的地址与上位机访问一致时,该模块才能与上位机通信。因此某一时刻上位机只能与一个ADAM模块通信,如果需要实时采集所有ADAM输入模块的数据,需要上位机循环访问所有地址。输入采集模块编程实现的核心代码如下:

private bool ADAM_Start() //通信串口初始化函数

{

adamCom = new AdamCom(1); //使用COM1为通信串口

adamCom.OpenComPort() //打开串口

//设置COM口参数为9 600波特率,无校验,8数据位,

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() //输入采集函数

{

bool[] bDI_4050_1 bDI_4050_2, bDI_4050_3,bDO;

float[] fAI_4017; Adam4000_ChannelStatus[] status_4017;

//依次从各ADAM模块采集数据,放入对应的数组中

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) //定时函数

{

RefreshInput(); //不断循环采集各ADAM模块的输入数据

… …

}

2.1.2 输出控制编程实现

若需要控制训练模拟器某一设备的状态,只需将控制数据写入对应地址ADAM模块的对应控制端口。同样主从式半双工通信无法同一时刻与多个地址通信,因此需要建立定时发送队列,上位机依次取出队列中的控制指令,发往对应地址ADAM模块,输出控制模块编程实现的核心代码如下:

private void RefreshOutput() //输出控制函数

{

While(SendBuf.length != 0) //若发送队列不为空

{

if(SendBuf [0].Type == ‘D) //数字量输出

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); //清除发送队列中第一条数据

}

}

private void timer1_Tick(object sender, System.EventArgs e) //定时函数

{

… …

RefreshOutput (); //不断循环将发送队列中的数据发出

}

2.2 软件运行流程

软件的运行流程如图3所示。程序开始后,进入循环监听状态,通过COM1串口与各ADAM4000系统模块实时通信;若检测到某一采集点输入发生变化(受训人员进行了相关操作,如加电、发射等),则调用对应的操作响应函数改变训练模拟器的运行状态,同时通过输出控制模块和显示模块将响应结果反馈给受训人员。

图3 软件运行流程图

3 结 语

该数据采集与控制软硬件结构已应用于某型机载电子设备训练模拟器的设计开发中,并取得了良好的效果。基于ADAM模块的航空训练模拟器数据采集与控制设计,在简化硬件电路的同时,提高了系统的稳定性和通用性。基于C#开发的模块化软件结构设计简单、结构合理,可以满足其他各型航空训练模拟器的应用需求,具有一定的推广应用价值。

参考文献

[1] 高伟,陈鸿,刘雅娟.基于半实物仿真的某型机载电子设备训练模拟器设计[J].现代计算机,2013(6):74?76.

[2] 查国云,刘鹏飞,陈秋凤,等.某型飞机航空军械仿真训练系统设计[J].计算机测量与控制,2011,19(10):2455?2458.

[3] 钟春华,许炎义,刘峰.基于半实物仿真的舰员级雷达维修训练系统设计[J].舰船电子工程,2011,31(11):125?129.

[4] 李柯,魏保华,郑思龙,等.某型防空导弹半实物仿真训练模拟系统设计[J].计算机仿真,2008,25(1):297?301.

[5] 邹益民,徐赤.借助Simulink 及ADAM 模块构建半实物仿真系统[J].自动化仪表,2013,33(10):9?12.

[6] 彭文辉,聂永芳,唐震.基于ADAM的某型导弹模拟训练系统设计[J].工业控制计算机,2009,22(2):1?3.

[7] 杨永刚,张建新,常卫,等.基于VC的ADAM数据采集管理系统[J].机电工程,2010,27(10):71?74.

[8] 龙勇,黄先祥,张志利,等.基于视景仿真的某型武器分布式模拟系统设计[J].系统仿真学报,2006,18(7):1820?1823.

[9] 唐震,王希全,包小林.潜射战术导弹模拟训练系统的设计[J].四川兵工学报,2009,30(4):30?32.

[10] 李江全.Visual C#.NET串口通信及测控应用典型实例[M].北京:电子工业出版社,2012.

{

While(SendBuf.length != 0) //若发送队列不为空

{

if(SendBuf [0].Type == ‘D) //数字量输出

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); //清除发送队列中第一条数据

}

}

private void timer1_Tick(object sender, System.EventArgs e) //定时函数

{

… …

RefreshOutput (); //不断循环将发送队列中的数据发出

}

2.2 软件运行流程

软件的运行流程如图3所示。程序开始后,进入循环监听状态,通过COM1串口与各ADAM4000系统模块实时通信;若检测到某一采集点输入发生变化(受训人员进行了相关操作,如加电、发射等),则调用对应的操作响应函数改变训练模拟器的运行状态,同时通过输出控制模块和显示模块将响应结果反馈给受训人员。

图3 软件运行流程图

3 结 语

该数据采集与控制软硬件结构已应用于某型机载电子设备训练模拟器的设计开发中,并取得了良好的效果。基于ADAM模块的航空训练模拟器数据采集与控制设计,在简化硬件电路的同时,提高了系统的稳定性和通用性。基于C#开发的模块化软件结构设计简单、结构合理,可以满足其他各型航空训练模拟器的应用需求,具有一定的推广应用价值。

参考文献

[1] 高伟,陈鸿,刘雅娟.基于半实物仿真的某型机载电子设备训练模拟器设计[J].现代计算机,2013(6):74?76.

[2] 查国云,刘鹏飞,陈秋凤,等.某型飞机航空军械仿真训练系统设计[J].计算机测量与控制,2011,19(10):2455?2458.

[3] 钟春华,许炎义,刘峰.基于半实物仿真的舰员级雷达维修训练系统设计[J].舰船电子工程,2011,31(11):125?129.

[4] 李柯,魏保华,郑思龙,等.某型防空导弹半实物仿真训练模拟系统设计[J].计算机仿真,2008,25(1):297?301.

[5] 邹益民,徐赤.借助Simulink 及ADAM 模块构建半实物仿真系统[J].自动化仪表,2013,33(10):9?12.

[6] 彭文辉,聂永芳,唐震.基于ADAM的某型导弹模拟训练系统设计[J].工业控制计算机,2009,22(2):1?3.

[7] 杨永刚,张建新,常卫,等.基于VC的ADAM数据采集管理系统[J].机电工程,2010,27(10):71?74.

[8] 龙勇,黄先祥,张志利,等.基于视景仿真的某型武器分布式模拟系统设计[J].系统仿真学报,2006,18(7):1820?1823.

[9] 唐震,王希全,包小林.潜射战术导弹模拟训练系统的设计[J].四川兵工学报,2009,30(4):30?32.

[10] 李江全.Visual C#.NET串口通信及测控应用典型实例[M].北京:电子工业出版社,2012.

{

While(SendBuf.length != 0) //若发送队列不为空

{

if(SendBuf [0].Type == ‘D) //数字量输出

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); //清除发送队列中第一条数据

}

}

private void timer1_Tick(object sender, System.EventArgs e) //定时函数

{

… …

RefreshOutput (); //不断循环将发送队列中的数据发出

}

2.2 软件运行流程

软件的运行流程如图3所示。程序开始后,进入循环监听状态,通过COM1串口与各ADAM4000系统模块实时通信;若检测到某一采集点输入发生变化(受训人员进行了相关操作,如加电、发射等),则调用对应的操作响应函数改变训练模拟器的运行状态,同时通过输出控制模块和显示模块将响应结果反馈给受训人员。

图3 软件运行流程图

3 结 语

该数据采集与控制软硬件结构已应用于某型机载电子设备训练模拟器的设计开发中,并取得了良好的效果。基于ADAM模块的航空训练模拟器数据采集与控制设计,在简化硬件电路的同时,提高了系统的稳定性和通用性。基于C#开发的模块化软件结构设计简单、结构合理,可以满足其他各型航空训练模拟器的应用需求,具有一定的推广应用价值。

参考文献

[1] 高伟,陈鸿,刘雅娟.基于半实物仿真的某型机载电子设备训练模拟器设计[J].现代计算机,2013(6):74?76.

[2] 查国云,刘鹏飞,陈秋凤,等.某型飞机航空军械仿真训练系统设计[J].计算机测量与控制,2011,19(10):2455?2458.

[3] 钟春华,许炎义,刘峰.基于半实物仿真的舰员级雷达维修训练系统设计[J].舰船电子工程,2011,31(11):125?129.

[4] 李柯,魏保华,郑思龙,等.某型防空导弹半实物仿真训练模拟系统设计[J].计算机仿真,2008,25(1):297?301.

[5] 邹益民,徐赤.借助Simulink 及ADAM 模块构建半实物仿真系统[J].自动化仪表,2013,33(10):9?12.

[6] 彭文辉,聂永芳,唐震.基于ADAM的某型导弹模拟训练系统设计[J].工业控制计算机,2009,22(2):1?3.

[7] 杨永刚,张建新,常卫,等.基于VC的ADAM数据采集管理系统[J].机电工程,2010,27(10):71?74.

[8] 龙勇,黄先祥,张志利,等.基于视景仿真的某型武器分布式模拟系统设计[J].系统仿真学报,2006,18(7):1820?1823.

[9] 唐震,王希全,包小林.潜射战术导弹模拟训练系统的设计[J].四川兵工学报,2009,30(4):30?32.

[10] 李江全.Visual C#.NET串口通信及测控应用典型实例[M].北京:电子工业出版社,2012.

猜你喜欢

模拟器实物串口
带你学习实物电路图的连接
了不起的安检模拟器
盲盒模拟器
划船模拟器
浅谈AB PLC串口跟RFID传感器的通讯应用
当手绘遇上实物
基于Arduino控制的半实物模拟驾驶系统
实物与宣传不符,卖方担责吗?
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信