ADAM I/O模块在电推进试验系统中的应用
2016-01-27邢敬宏龚成莹
何 辉,邢敬宏,龚成莹
(兰州工业学院 信息中心,甘肃 兰州 730050)
ADAMI/O模块在电推进试验系统中的应用
何辉,邢敬宏,龚成莹
(兰州工业学院 信息中心,甘肃 兰州 730050)
摘要针对电推进地面试验对供气系统的要求,利用研华以太网I/O模块对压缩气体进行有效测控。基于.NET框架,用后台异步任务BackgroundWorker对象实现对多工位I/O的多线程测控,采用一种时间片轮转的方法提高对I/O模块的控制效率和软件的操控友好性。给出了设计思路和实现方法。测试结果表明,系统能够对供气系统进行准确控制,提高了试验数据的可靠性。
关键词ADAM;异步任务;多线程;供气系统
ApplicationofADAMI/OModuleinElectric
PropulsionTestSystem
HEHui,XINGJing-hong,GONGCheng-ying
(Information Center,Lanzhou Institute of Technology,Lanzhou Gansu 730050,China)
AbstractInviewoftherequirementsofelectricpropulsiontestsystemforgassupplysystem,aneffectivemeasurementandcontrolisperformedforcompressedgasbyusingAdvantechEthernetI/Omodules.Basedon.NETframework,themulti-threadmeasurementforthemulti-stationADAMI/OisimplementedbyBackgroundWorkerobject,atimecyclemethodisusedtoimprovethecontrolefficiencyanduser-friendlyinterfacesofsoftware.Thedesignideaandimplementationmethodaregiven.Thepracticalapplicationshowsthatthissystemcancarryontheaccuratecontrolforgassupplysystem,improvethereliabilityoftestdata.
KeywordsADAM;asynchronoustask;multi-thread;gassupplysystem
0引言
在电推进设备的地面试验系统中,利用直流放电产生电子轰击工质,使工质受到电离生成离子,离子在静电场作用下加速喷出,进而产生反作用推力。试验环境下,推力器使用易电离的物质作为工质,由于惰性气体氙具有化学性质稳定、原子量较大、电离电压低和便于压缩贮存的特点,因此多采用氙气作为推力器的工质[1-3],但是,氙属于稀有气体,资源较少,在试验系统中就需要精确控制使用量。根据试验需求,采用研华ADAM以太网I/O模块对气路状态进行采集和控制,基于TCP/IP通讯方式,在.NET平台下,利用多线程机制对气路进行准确测控。使用计算机控制后的试验系统,对传统的手工试验控制和实验数据记录方式进行改进,气路测控数据准确,降低了试验人员的工作强度。
1系统设计
系统框图如图1所示,由气瓶引出2路氙气供给放电室,要求对气瓶的各种压力参数进行采集,对2路气体的流率值进行测量和设定,利用电磁阀控制2路气体输出的通断。图1中的气瓶压力信号只需采集不用控制,2路气体需要进行实时采集和控制,电磁阀用来控制气路的通断,要使用开关量控制,所有指令都由运行在工控机上的测控软件控制执行[4]。
图1 系统框图
利用研华ADAM-6000系列以太网I/O模块进行信号的采集与控制,如图1所示,ADAM模块都通过RJ45网口连接到交换机上接受控制系统的管理。
1.1ADAM-6000以太网I/O模块
ADAM-6000以太网I/O模块是基于以太网的远程数据采集模块[5],提供模拟量输入及输出、数字量输入及输出、继电器输出及计数器接口,其特点如下:
① 具有工业以太网通讯基准,ADAM-6000模块支持TCP/IP及UDP协议,支持Modbus协议;
② 具备智能型逻辑运算功能,提供内建的控制运算逻辑与数学程序,以便立即执行线程控制策略,简化了中央监控主机的运算负荷;
③ 采用最佳化I/O群组设计,根据应用向导的概念设计I/O群组,I/O模块与监控设备一对一搭配使用,使I/O系统的应用达到最佳化,同时减少工程和维护成本;
④ 提供HMI浏览器接口,不仅提供标准网页监控HMI接口,也具备可订制的网页编辑接口,便于用户通过浏览器远程测控。
1.2I/O模块选型
根据系统设计,图1中的气瓶压力信号是线性模拟量,由专门的气体压力测量装置进行信号采集,其输出结果是4~20mA的电流信号;通往放电室的2路气体的流率也由专用测控装置控制,其输出亦是4~20mA的电流信号;电磁阀使用开关量控制[6]。
1.2.1气瓶压力采集
共有5个压力信号,分别是气瓶压力、一级压力、二级压力、入口压力和出口压力,均为模拟量信号。因此,选择16位A/D、具有8通道模拟量输入的ADAM-6017以太网I/O模块进行信号采集。
1.2.2放电室气路测控
要求对2路气体的流率进行采集和控制,因此选择具有6通道模拟量输入和2通道模拟量输出的ADAM-6024以太网I/O模块,其输入通道的分辨率能够达到16位,支持+/-10V电压、0~20mA电流、4~40mA电流输入输出。
1.2.3气瓶压力采集
使用继电器对电磁阀进行通断控制,因此选择带6通道数字量输出与6路继电器ADAM-6066以太网I/O模块。
1.3ADAM模块程序控制
借助于工具AdvantechAdam/Apax.NETUtility,可以对ADAM模块进行初始化配置和常规的I/O控制,同时,ADAM模块提供了丰富的程序设计接口,.NET环境下,调用Advantech.Adam类库对模块进行控制,便于开发人员灵活使用。ADAM的程序控制基本流程如图2所示[7,8]。
图2 ADAM模块基本控制流程
2模块应用
在微软.NET平台下应用ADAM以太网I/O模块到电推进系统的气路控制中,利用多线程机制,对气瓶和气体流量进行精确测控。
2.1基础数据结构
根据试验系统对气路控制的要求,为ADAM模块的I/O参数定义公共类型的数据结构,作为测控数据的收发缓冲区。
′Adam缓冲区结构体
PublicStructureadamValue
′模拟量输入寄存器
PublicAi(,)AsSingle
PublicAiValue()AsSingle′滤波后值
PublicAiFilterCNT()AsInteger′滤波数组
′模拟量输出寄存器
PublicAo()AsSingle
′数字量输入寄存器
PublicDi()AsBoolean
′数字量(继电器)输出寄存器
PublicDoo()AsBoolean
′模拟量输出值AO
PublicAoOutput()AsValueEnable
′数字量输出值DO
PublicDoOutput()AsValueEnable
EndStructure
其中ValueEnable为结构体类型,其成员如表1所示,程序控制时,可由enable成员决定是否输出成员value。
表1 结构体成员
2.2基于后台任务的测控
ADAM-6000系列使用以太网方式进行I/O控制,因此对其进行TCP/IP操作时需要一定的响应时间,另一方面ADAM模块在进行I/O处理时也需要一定的时间,这样就增加了整个系统的处理延迟;同时,系统在同一时间要处理对多个ADAM的操作,所有延时累加在一起就是一笔不小的时间花销,若使用传统的单线程方式进行程控,就会带来用户操作界面停滞,程序出现“假死”的现象[9]。
为解决上述问题,采用多线程方式在系统后台对ADAM模块进行操作。在.NET平台下可以使用Thread类实现多线程,多个ADAM控制线程可以放在线程池中完成,但是这种方式控制起来较为麻烦,需要程序更多地考虑线程锁定、线程同步、多线程管理以及死锁等问题,并且只能使用委托方式与用户界面进行交互,这就给开发人员带来一定的困惑,从而不能将主要精力放在控制系统的实现上。.NET还提供一种基于后台线程的BackgroundWorker类(以后简称为后台任务)来实现多线程[10]。
后台任务用来执行诸如I/O访问、数据库事务和文件下载等耗时的异步操作,作为Visual Studio的标准控件,使用十分方便,如图3所示。
图3 后台任务执行流程
使用后台任务时,首先调用BackgroundWorker的RunWorkerAsync方法,通过触发DoWork事件,开始执行后台操作,DoWork事件将在另一个线程中执行的;为了显示后台任务的执行进度,可以调用BackgroundWorker的ReportProgress方法,通过它传递后台任务的进度值,此外,该方法会触发ProgressChanged事件,在此事件中,通过ProgressChanged-EventArgs的实例,接收主线程传递来的参数;BackgroundWorker也可以取消正在执行的后台任务,将属性WorkerSupportsCancellation 设置为 true,调用CancelAsync()方法,利用CancellationPending属性来判断后台任务是否被取消;当后台任务完成以后, RunWorkerCompleted 事件被触发,通过此方法可以将后台任务的执行结果反馈给前台进程[11]。
系统为每个ADAM模块的访问操作建立一个BackgroundWorker对象,再通过后台任务不断对I/O进行采集和控制,定时判断BackgroundWorker的IsBusy属性,以确保后台线程的运行。为了避免ADAM在同一时刻的读写冲突,增加系统的稳定性,采用一种基于标志量的时间片轮转的方式在后台任务(DoWork事件)中执行读写操作,执行过程如图4所示,线程在运行时,根据读写操作的标志量确定是否执行该操作。
图4 数据采集与控制流程
3测试结果分析
系统运行界面如图5所示,将ADAM模块应用到电推进试验系统的供气单元中,通过以太网TCP/IP方式对ADAM模块进行I/O操作,使用BackgroundWorker后台任务后,同时对多个试验工位进行操作,软件操控流畅。
图5 运行界面
经测试,发现通过ADAM采集的压力与气体流量值与实际流量计显示略有出入,因此为数据增加软件滤波功能[12],当前采集值与前9个采集值相加后再平均,最终数值与流量计在精度范围内相吻合,符合试验要求。
4结束语
通过对电推进试验供气系统的研究,选择研华ADAM-6000系列以太网I/O模块进行系统控制,利用后台异步任务实现对ADAM以太网I/O模块的多线程测控,针对被测设备多工位并行运行的工况,在测控过程中,摸索出一种基于时间片轮转的分时控制方法。应用该方案到电推进地面试验的供气系统运行过程中,实现对压缩气体储气罐压力信号和放电室供气管道气体流率的准确控制,确保放电室中放电气体满足试验要求。系统测试结果表明,本文提出的方案稳定可靠,试验记录准确,并对相关测控系统的开发有一定的参考价值。
参考文献
[1]薛伟华.电推力器地面试验系统测试技术研究[D].大连:大连理工大学,2013.
[2]张天平,袁子,田华兵.电推进系统空心阴极研制试验技术[J].真空电子技术,2007(2):9-14.
[3]杭观荣,康小录.电推进在深空探测主推进中的应用及发展趋势[J].火箭推进,2012,38(4):1-8.
[4]李鹏,戴亚文,李小强.升降机试验台无线测控系统的实现[J].无线电工程,2011,41(5):11-13.
[5]郭福田,刘心红,曾丽丽,等.自主仪器中ADAM ASCⅡ协议通信接口的设计与实现[J].大庆师范学院学报,2013,33(6):31-34.
[6]张天平,刘乐柱,贾艳辉.电推进系统空心阴极产品试验技术[J].火箭推进,2010,36(1):58-62.
[7]祝宁,于海生,吴贺荣.基于组态王和研华ADAM模块的小功率加热体温度控制系统设计[J].工业控制计算机,2013,26(2):15-17.
[8]熊磊.基于ADAM5510E的液位控制系统的设计[J].工业控制计算机,2011,24(4):3-4.
[9]郑宇生.C#多线程编程技术在数控测井软件中的应用[J].石油仪器,2012,26(4):79-81.
[10]刘学辉,王国良.软件进程监控系统及其实现[J].无线电工程,2011,41(9):62-64.
[11]李明明.VS.net中用后台线程向Excel中导入数据的研究[J].测控技术,2011,30(8):83-86.
[12]孙旭清.机舱监视报警系统中的软件滤波方法研究[J].船海工程,2009,38(2):113-115.
何辉男,(1978—),硕士,副教授。主要研究方向:计算机测控。
邢敬宏男,(1971—),硕士,副教授。主要研究方向:计算机应用。
作者简介
基金项目:甘肃省科技支撑计划资助项目(1204GKCA043);甘肃省高等学校科研基金资助项目(2014A-124)。
收稿日期:2015-09-02
中图分类号TP277
文献标识码A
文章编号1003-3106(2015)12-0010-03
doi:10.3969/j.issn.1003-3106.2015.12.03
引用格式:何辉,邢敬宏,龚成莹.ADAMI/O模块在电推进试验系统中的应用[J].无线电工程,2015,45(12):10-12,20.