2024年责任的作文600字ni(6篇)
责任ni一
大雨像倒了一盆水似的,哗哗的响着,眼前白茫茫的一片,一会儿,地上的小水坑里面出现了小泡泡,雨下在地上,演奏了一场音乐,他们像散兵,一齐落在地上,安全的落地。雨越下越大,闪电和雷不停的给雨伴曲,外面的花草树木好像都不得安宁似的,摇摇摆摆,惊慌失措。外面的夜行人都在吃力的往前走,用肉眼看不见对面,雷声震耳欲聋,人们心惊胆战,只能在家里“躲藏”。
霎时,熙熙攘攘的车便立刻堵住了整条路,排着大队长龙。就好像抢着去要明星签名一样,混乱不堪。喇叭声震耳欲聋的咆哮着。除了喇叭声,还有人们的吵架声。谁也不让谁,越来越多的车拥了上去。场面乱成了一锅粥。
这时,也有交警冒着风雨骑着摩托赶到了现场。踩在交通指挥岛上拿着被狂风撕扯着的小红旗。艰难的举起手,露出自豪的神情指挥起来。风雨中的他,就像一尊铜像,一位不会被风雨打垮的战神。他屹立在路口中央,仿佛在说:“让暴风雨来的更猛烈些吧”。
责任ni二
;摘要:
针对脉冲爆震发动机试验样机噪声测试的需求,基于ni/pxi4462板卡进行高速数据采集系统设计与实现。并开展脉冲爆震发动机噪声辐射特性测量与噪声频谱特性分析。应用结果表明,测试系统实时性强,可靠性高,满足了脉冲爆震发动机试验对高速数据采集的功能和实时性要求。并获取了脉冲爆震发动机频谱及声压级噪声辐射特性。
关键词:机械振动 噪声辐射数据采集声学测量
中图分类号:tb532文献标识码:a
引言
脉冲爆震发动机(pulse detonation engine,pde)是利用间歇式爆震燃烧形成充分发展的脉冲爆震波产生推力的一种新概念发动机。pde具有结构简单、热循环效率高、单位燃料消耗率低等特点。脉冲爆震发动机工作时,在爆震管内产生周期性爆震波,爆震波衰减形成强辐射噪声。强噪声不但会对作业环境造成不良影响,而且还会导致飞行器的声致结构疲劳破坏。同时也会对机载设备产生干扰,所以对其噪声辐射特性的研究是非常必要的。
1 脉冲爆震发动机系统组成及工作原理
1.1 脉冲爆震发动机系统组成
脉冲爆震发动机系统组成包括燃料供给装置、氧化剂供给装置、点火器及控制装置、电动阀门与远程控制装置、爆震室、尾喷管等部分,如图1所示。
图1 脉冲爆震发动机总体结构示意图
(1)燃料/氧化剂供给装置
燃料供给装置中的燃料采用液态汽油,利用高压氮气挤压方式将油桶内的燃料汽油喷射入脉冲爆震发动机喷射雾化混合模块内,燃料供给流量可通过控制氮气压力进行调整。
脉冲爆震发动机氧化剂采用瓶装高压空气。此外增加了一瓶高压氧气,用于提高氧化剂中氧气含量,以提升燃料氧化剂爆震性能,减少燃烧转爆震距离,从而可以缩短爆震发动机爆震室长度。
(2)点火器及控制装置
脉冲爆震发动机采用的点火装置为高频、高能点火装置,脉冲点火频率不低于5hz~30hz,单次点火能量不小于1j。点火装置工作频率连续可调,并可通过信号发生器进行精确控制。
(3)电动阀门与远程控制装置
燃料与氧化剂供给系统中均安装电磁阀门,采用24v直流电源供电。试验人员通过远程控制方式实现燃料与氧化剂供给系统的开启和闭合。
(4)爆震室(爆震管)
脉冲爆震发动机爆震室结构内径分别为60mm、80mm,长度为1.6m,爆震室内部结构由喷射雾化混合模块、点火器连接模块、燃烧转爆震模块以及尾喷管等组成。
1.2脉冲爆震发动机工作原理
电动阀门分别控制燃料剂与氧化剂,开启电动阀门后,燃料剂与氧化剂分别通过燃料喷射口与氧化剂进气口,进入到爆震室腔体进行均匀混合雾化,之后点火系统将燃料剂与氧化剂形成的混合雾化气体点燃爆震燃烧,混合雾化气体爆震燃烧形成爆震波与激波,经尾喷管喷出后衰减成强噪声,其中强噪声包括爆震噪声,燃烧噪声,高速气流脉冲式排出爆震管时产生的气动噪声,以及由爆震管脉冲振动产生的机械噪声等。
脉冲爆震发动机工作频率为几十赫兹,强噪声包括爆震噪声,燃烧噪声,高速气流脉冲式排出爆震管时产生的气动噪声以及爆震管脉冲振动产生的机械噪声。
2.1采集系统组成
如图2所示为脉冲爆震发动机噪声采集系统框图,其系统组成包括:声学传感器、多通道信号调理器、pxi数据采集板卡和ni工控机。
图2噪声采集系统框图
(1)声学测量系统
脉冲爆震发动机噪声测量系统由声学传感器、校准声源组成。声学传感器采用b&k4939声学传感器,其声压测量范围为40db~178db,灵敏度4mv/pa,频响范围4hz-100khz。由b&k4939声学传感器组成的信号采集装置将声音信号转换为电压信号,再经b&k2690信号调理仪进行信号放大后进入数据采集终端。
(2)数据采集系统
数据采集采用ni公司pxi总线4462四通道同步高速数据采集板卡,ni/pxi4462具有24采样精度,最高采样速率为204k/s,具有4通道的输入,动态范围为118db 。
3脉冲爆震发动机噪声测量及噪声特性分析
3.1脉冲爆震发动机噪声测量
脉冲爆震发动机辐射噪声特性测试是一项较复杂的研究内容,试验测试应以气动低频及脉冲噪声测试方法和标准作为测试依据。如图3所示为脉冲爆震发动机辐射噪声测试系统框图。
测试仪器包括:
声学传感器 b&k4939,信号调理仪b&k2690,标准声源校准器b&k4031,ni/pxi4462板卡及数据采集终端(工控机)。
图3脉冲爆震发动机噪声测试系统框图
3.2脉冲爆震发动机辐射噪声有效声压级计算
测试直接采集得到脉冲爆震发动机噪声时域峰值声压值p(pa),为了便于对比分析,报告中同时采用了声压级sl进行表述,即用峰值声压级表述,测量单位采用db,其计算结果由公式(1)-(3)得出。
(1)
(2)
(3)
其中,与分别代表在脉冲爆轰强声源轴线0°方向1m处与10m处的爆轰强声声压级;
代表脉冲爆轰强声作用时间内的声压有效值,为参考声压值,2×10-5pa;
为脉冲爆轰强声声压瞬时值。
3.3辐射噪声传播特性
如图4所示为10m、20m处实际采集到的爆震噪声时域波形,首先从爆震噪声传播速度的角度进行分析。脉冲爆震声波传播经过发动机轴线方向10m与20m处传感器时,其时间差约为0.029s,计算得到脉冲爆震噪声传播经过两个传感器之间路程的平均速度为344.8m/s,这与大气环境下声波传播速度基本一致,表明脉冲爆震噪声到达发动机轴线方向10m处传感器并向后传播时,已经不再是高速传播的爆震波,而是声波。
其次,从爆震噪声强度衰减的角度进行分析,图4给出了单一脉冲爆震噪声波经过10m与20m处传感器时的时域波形图。
图4 发动机轴线方向10m与20m处脉冲爆震噪声时域信号
脉冲爆震噪声波经过10m与20m位置时,脉冲爆震声压曲线面积积分值衰减了1.9倍,声压级衰减约5.58db,基本与球面波衰减(6db)规律相同,表明采用球面波衰减规律推算1m处脉冲爆震噪声声压级是可行的。
3.4脉冲爆震发动机辐射噪声频谱特性分析
对所测不同频率辐射噪声时域信号进行傅里叶变换得到对应频率辐射噪声信号的频谱结构图。图5所示为脉冲爆震发动机点火频率分别为5hz、10hz、20hz时的频谱结构图。
从发动机辐射噪声频谱图分析得出,脉冲爆震发动机辐射噪声能主要分布在1khz以下频段,且大部分能量集中在0hz ~600hz。
结语
(1)对脉冲爆震发动机在不同爆震频率下的噪声辐射特性进行研究。通过试验测量和数据处理,发现其噪声辐射呈现间歇性和周期性的特点,且在脉冲爆震发动机轴线方向噪声辐射具有一定指向性;
噪声辐射的频谱为宽频带谱,其能量主要集中在低频部分(0hz~600hz),点火频率对梳状频谱结构的间隔产生一定影响。
(2)10m距离之外脉冲爆震发动机辐射噪声传播特性符合大气声传播及大气声衰减特性。
(3)應用结果表明,测试系统实时性强,可靠性高,满足了pde试验对据高速数据采集的功能和实时性要求。并获取了脉冲爆震发动机频谱及声压级初步噪声辐射特性。后续工作中将进一步开展相关系统噪声辐射特性的测试工作。
参考文献:
[1] 马大猷,沈. 声学手册. 科学出版社,1993.
[2] 杜功焕等. 声学基础. 南京大学出版社,20_.
[5] 程建春. 声学原理. 科学出版社,20_.
相关热词搜索:;责任ni三
一粒种子落入泥土,便开始努力成长,因为它懂得,那是她的责任;一粒雨水从高空落下,便用生命滋润万物,因为他懂得,那是它的责任;一个花骨朵努力绽放,是为了让世界多点美丽,因为它懂得,那是它的责任。不管是阳光明媚还是炎热酷暑,是秋风飒飒还是天寒地冻。我都会在那条路上看见一个跛脚的老人那瘦弱的背影,从他的身上我懂得了责任。我懂得了我的责任是学习。
不知何时起,天渐渐热了起来。那一天,我要赶早班车去上学,所以起得格外地早。虽然还是清晨,但阳光也是那么刺眼,照在身上难过极了。光是在街上待个一会就会满头大汗。或许是因为天气原因,街上的人并不多。我看了看手表“时间还早”我心想着。抱怨着学校作业多,压力大。这时,一个瘦弱的背影进入了我的视线,他的手里拿着扫帚,走路时一瘸一拐的。每个他经过的地方都变得一尘不染。
我清闲得走在路上,突然一个趄趔滑倒在地上。“哎呦。真疼!”我喊了出来。那个老爷爷这注意到了我,他一颠一跛地向我跑了过来。我往旁边一看,呀,原来是香蕉皮在作怪。“谁那么缺德,怎么没人扫掉呢。”我咕哝着。“小朋友,你没事吧,来,我扶你起来。”老爷爷亲切的话语在我耳边响起。我在老爷爷的搀扶下站了起来,向他说了声“谢谢”。老爷爷摆了摆手说:“哎呀。小姑娘,都怪我,工作不到位,没有及时清理地面上的垃圾。”以前经常在这看见他在工作,却从未像今天这番仔细。他的面孔黄里带白,瘦的叫人担心。但他面容祥和,脸上的皱纹掩盖不了岁月的痕迹,他的头发白了好一半。
老爷爷穿着朴素,一件灰色的短袖,仔细一看早已被汗水浸湿。脚上是一双再普通不过的鞋子。即便是这样老爷爷给人的感觉依旧很精神。“老爷爷,您是这里的环卫工人啊?”我好奇地问他。“不,我只是退休在家闲着,所以出来找点事做。我清理清理路面也是让城市更干净些。这也算完成了一份责任吧。”我瞄了几眼手表,车子应该快来了。可我还是忍不住多和老爷爷聊上几句。“可是这样不是很吃亏嘛?谁也没说打扫卫生是你的责任啊况且你腿脚又不方便?”“吃亏?这算吃什么亏啊?我啊从小就没好好地去上学。
浪费了不少时间。没为社会国家做过什么事。现在可后悔了。其实不同的人有不同的责任。我现在就想啊尽自己的做能帮大家做一点小事尽一份作为公民的责任。”听完了老爷爷的话。我低头不语。他继续说着。“小姑娘,我看你应该还在上初中吧。不要向我以前一样浪费了时间。你现在的责任就是好好学习啊。以后一定要为社会做贡献。”我脸红了我为自己刚刚埋怨作业太多而后悔。我懂得了我现在的责任。
我踏着晨曦去上学。我懂得了我的责任。我懂得了我的责任是学习。
责任ni四
人世间,有许多让我们在乎的东西。令我们牵肠挂肚,令我们心神萦绕,也令我们只要想起了就会微微一笑。心中常有这样的一份在乎,是很美好的一件事情吧。
还记得过去岁月里,那个特别让我在乎的你。
十月的日子里,暖暖的风儿夹杂着草叶的清香,让小镇上的人们心醉神迷。可能是上天的安排吧,让我在这样美好的日子里遇见了这样难忘的你。那是一所幼儿园的栅栏外面,你——一条小金鱼,静静地在一只小塑料杯里游着。塑料杯旁有些许枯黄落叶,随着风慢慢地没有目的地飘着,发出窸窸窣窣的声音。还有路边的熙熙攘攘的行人,都从你身边经过。可是,你没有被惊动,没有胆怯,而是一双大眼睛圆溜溜地望着幼儿园,那个充满可爱的童话般的世界。我的心在那一刻软了下去,就这样,将你带回了家。或许,这就是在乎的开始吧。
于是我接下来的每个日子,都有了你的参与。在晨曦微照之时,我给你换上干净清凉的水,给你喂食,觉得这样的时光美妙极了;夕阳西下时,薄薄的暮霭笼罩在鱼缸里,像是给你披上了一层华衣,我看着你欢乐地游动,心里泛起了一层层的涟漪。从来没有厌烦,从来没有遗忘,只是心中常怀着一份牵挂,一份责任,就是在乎这二字的最好诠释。
是啊,我明白了。在乎不只是喜欢,不只是三分钟热度,而是付出,是责任。
我们心中有那样一份责任,就可以筑成一座用爱架出的桥梁,通往那个梦中的彼岸。
在乎,是一份责任啊。我在乎世间的一切,在乎初秋落下的雨滴,在乎雨水洗濯过后的小溪,也在乎那个,即将在路口与我擦肩而过的你。
责任ni五
;咕ɡū噜lū鱼yú和hé泡pào泡pɑo鱼yú是shì一yí對duì好hǎo朋pénɡ友you,每měi一yì年nián的de新xīn年nián,他tā们men都dōu会huì互hù赠zènɡ礼lǐ物wù。
今jīn年nián当dānɡ然rán也yě不bú例lì外wài。这zhè一yí次cì,咕ɡū噜lū鱼yú送sònɡ给ɡěi泡pào泡pɑo鱼yú一yí块kuài漂piào亮liɑnɡ的de贝bèi壳ké手shǒu表biǎo,泡pào泡pɑo鱼yú则zé送sònɡ给ɡěi咕ɡū噜lū鱼yú一yì顶dǐnɡ水shuǐ母mǔ形xínɡ状zhuànɡ的de帽mào子zi。
泡pào泡pɑo鱼yú很hěn喜xǐ欢huɑn咕ɡū噜lū鱼yú送sònɡ的de贝bèi壳ké表biǎo,她tā高ɡāo兴xìnɡ地de把bǎ它tā戴dài在zài手shǒu上shànɡ。
“别bié难nán过ɡuò,我wǒ再zài去qù买mǎi一yì顶dǐnɡ送sònɡ给ɡěi你nǐ。”泡pào泡pɑo鱼yú安ān慰wèi道dào。
咕ɡū噜lū鱼yú想xiǎnɡ要yào劝quàn泡pào泡pɑo鱼yú别bié买mǎi,但dàn泡pào泡pɑo鱼yú不bù由yóu分fēn说shuō,拉lā着zhe咕ɡū噜lū鱼yú就jiù走zǒu。
“这zhè回huí你nǐ自zì己jǐ挑tiāo,你nǐ喜xǐ欢huɑn哪nǎ一yì顶dǐnɡ,我wǒ就jiù买mǎi哪nǎ一yì顶dǐnɡ送sònɡ给ɡěi你nǐ。”泡pào泡pɑo鱼yú对duì咕ɡū噜lū鱼yú说shuō。
“可kě是shì我wǒ……我wǒ……”咕ɡū噜lū鱼yú涨zhànɡ红hónɡ了le脸liǎn不bù知zhī道dào怎zěn么me说shuō。
“哎āi呀yɑ,别bié磨mó蹭cènɡ了le,赶ɡǎn紧jǐn挑tiāo吧bɑ!”泡pào泡pɑo鱼yú催cuī促cù着zhe。咕ɡū噜lū鱼yú挺tǐnɡ喜xǐ欢huɑn那nà顶dǐnɡ海hǎi螺luó帽mào,于yú是shì泡pào泡pɑo鱼yú买mǎi下xià了le它tā。
“你nǐ怎zěn么me知zhī道dào的de?”咕ɡū噜lū鱼yú不bù禁jīn一yí愣lènɡ。
“那nà你nǐ为wèi什shén么me还hái要yào带dài我wǒ去qù买mǎi这zhè顶dǐnɡ新xīn帽mào子zi?”咕ɡū噜lū鱼yú不bù好hǎo意yì思si地de问wèn。
他tā们men来lái到dào咕ɡū噜lū鱼yú家jiā里lǐ,咕ɡū噜lū鱼yú打dǎ开kāi抽chōu屉tì一yí看kàn,却què发fā现xiàn水shuǐ母mǔ帽mào不bú见jiàn了le。咕ɡū噜lū鱼yú问wèn妈mā妈mɑ是shì怎zěn么me回huí事shì,妈mā妈mɑ告ɡào诉su他tā,刚ɡānɡ才cái邻lín居jū家jiā的de淘táo气qì鬼ɡuǐ淘táo淘tɑo鱼yú上shànɡ他tā们men家jiā来lái玩wán,他tā在zài抽chōu屉tì里lǐ发fā现xiàn了le水shuǐ母mǔ帽mào,很hěn喜xǐ欢huɑn,就jiù把bǎ它tā戴dài走zǒu了le。咕ɡū噜lū鱼yú有yǒu点diǎn生shēnɡ气qì,淘táo淘tɑo怎zěn么me能nénɡ不bú经jìnɡ别bié人rén同tónɡ意yì就jiù拿ná走zǒu别bié人rén的de东dōnɡ西xi呢ne?他tā想xiǎnɡ去qù向xiànɡ淘táo淘tɑo鱼yú要yào回huí帽mào子zi,却què被bèi泡pào泡pɑo鱼yú拦lán住zhù了le。
相关热词搜索:;责任ni六
;【摘要】随着通用自动测试系统平台的发展,开发者需要统筹管理越来越多的板卡、分立仪器和应用程序,这时多语言混合编程的问题是无法避免的。本文在研究讨论传统多语言混合编程的解决方案的基础上,介绍了ni teststand架构及工作原理,提出了使用ni teststand在解决测试领域多语言混合编程方面所具有的优势,并举实例简要说明了如何采用ni teststand重新构架已有测试系统。
1.引言
目前,通用测试技术由于快速可靠、机动灵活、高效低费,已经成为国际上航空航天及武器装备测试的主流技术途径,通用自动测试系统平台是自动测试系统发展的方向。在测试数据获取方面,通用测试系统平台前端会使用多种类型传感器,通过矩阵开关与后级数据采集系统相连;在数据采集系统中会相应使用多种类型的信号调理电路及数据采集板卡;同时,所有的测试系统都需要使用多种类型的高精度分立仪器测试产品的性能或为测试对象提供电源、激励等信号;在某些测试中,会使用各种总线与被测对象或分立仪器完成通讯功能;为完善测试功能,某些测试方法需要使用嵌入式技术等等;获得测试数据后要对数据进行存储、分析、输出等管理。
以上所叙述的诸多应用是无法只使用一种或两种开发语言就能完成的。例如最为广泛使用的开发语言是vc++,但在数据采集卡操作、分立仪器控制、界面美化、开发工作强度等方面其性能远不如基于标准c的labwindows/cvi,但是labwindows/cvi无法调用使用vc++编写的动态链接库。又如ni公司出品的、可以由上位机直接操作的fpga板卡只能使用labview开发。再如c/c++、labview等传统编写虚拟仪器所使用的语言,其数据处理能力都十分有限,这时如果调用matlab中的函数处理采集到的数据就会使得整个测试系统具有较广的适用范围。因此,在通用自动测试系统平台的开发中,多语言混合编程是无法回避的问题。
2.传统多语言混合编程解决方案
目前使用最广泛的windows操作系统为多语言混合编程提供了多种解决方案。普遍适用的有动态链接库技术,com组件技术。
动态链接库dll(dynamic link library)是一种基于windows的程序模块,它提供了一种方法,使进程可以调用不属于其可执行代码的函数。当一个函数被导出时,它被加入到动态链接库所包含的一个表中。此表包含了所有导出函数的位置,可以用来查找和调用这些函数,而调用dll的应用程序本身并不包含这些函数的执行代码[1]。
com组件技术不依赖特定的语言。com标准采用的是二进制代码级的标准,com对象把oop语言中的对象封装起来,并提供一致的接口,使得它可以被各种不同的语言所使用,com的语言无关性实际上为跨语言合作开发提供了统一标准,差不多每种语言在实现时都提供了对com的支持,如visual c/c++、visual basic、visual c++、delphi、c++ builder等都支持com组件的开发和使用。
(1)若多dll文件中函数名称相同将引起软件冲突;
(2)各编译器对c++函数的名称修饰可能不兼容;
(3)dll与可执行文件存在依赖关系。虽然dll技术的缺点就是com组件技术的优点[2],但com组件的开发要求测试系统开发人员具有较高的计算机软硬件运行原理的理论基础,同时需要再学习新的开发工具。因此,良好的通用自动测试系统平台中多语言混合编程的解决方案应兼具dll技术的易用性和com组件技术的灵活性,同时要考虑是否适用于测试领域,要做到综合而不庞杂。
teststand架构及特点
3.1 ni teststand架构
在测试领域,ni公司出品的teststand软件为自动测试系统软件的多语言混合编程提供了专用解决方案。
ni teststand是一种随时可运行的测试管理软件,用于测试序列的开发、管理和执行。模块化的teststand架构主要由以下组件组成:teststand引擎、序列编辑器、操作界面和组件适配器,如图1所示。
在teststand架构中,teststand引擎处于核心地位。teststand引擎是一组动态链接库,其出口为创建、编辑、运行、调试测试序列提供了大量的activex应用程序接口(api)。事实上,teststand的序列编辑和用户界面的控制就使用了teststand api。这就意味着任何支持activex自动化服务器的编程环境,都可以调用teststand api。teststand引擎还可以处理顺序、循环、限制校验、数据配置、用户处理等诸如此类的测试任务。引擎在执行速度上进行了优化并采用了更为灵活的设计。
teststand的序列编辑器和操作界面均为activex客户端,利用teststand api来完成诸如创建、编辑、执行和调试测试程序序列的操作。
teststand适配器模块的功能就是连接引擎和外部测试程序开发环境,当调用外部代码时,teststand使用适配器模块测定代码模块的类型、调用协议、参数列表和如何传递参数。通过模块适配器,teststand与所有主流测试编程环境兼容,如labview、labwindows/cvi、measurement studio组件和微软visual basic和visual c++等。它还能调用任何编译过的动态链接库(dlls)、activex自动化服务器和可执行文件,甚至传统开发语言如htbasic、atlas、hp_vee等[3]。
在teststand适配器模块中拥有三种权限等级的变量:局部变量(local variable,在同一序列文件中保存、传递数据)、全局变量(global variable,在同一工程下的不同序列文件间保存、传递数据)和工作站变量(station global variable,在同一工作主机下不同工程间保存、传递数据)。它们是在不同语言间传递数据的中介。以局部变量为例,teststand的工作方式如图2所示。在teststand引擎下可以挂接多个序列,每个序列由多个步骤组成,而单个序列中使用不同语言的不同步骤间数据交换的中介就是在序列编辑器中某一提前定义好的teststand局部变量。
多语言不同测试步骤间传递数据的原理
3.2 ni teststand的特点及一般开发方式
teststand继承、整合了传统解决方案的特点:(1)适应性强,teststand与各种开发平台能够实现无缝连接;(2)测试系统软件的可扩展和可维护性强,软件架构一旦建立,将各测试步骤的接口进行定义,后期维护人员可以参照标准进行扩展或维护;(3)可实现快速二次开发,测试程序的架构一旦建立,对其进行二次开发时,只需更改相关测试步骤、生成新的动态链接库、挂接到原有程序上,无需重新编译打包。
(1)teststand很好的融合了activex技术(activex技术是基于com组件技术的)和dll技术,并且它不仅入门简单、操作简易、开放性好,这使得测试人员在需要混合编程时上手更快从而更能专注于测试本身。
(2)teststand这一软件的设计思路决定了它最擅长的是测试流程管理,所以在很好解决多语言混合编程的基础上不会使得测试系统过于庞杂难以管理。
(3)继承性好,在开发大型综合测试系统时,原本不属于teststand架构的专项测试系统中的测试方法只需经过简单修改即可移植到新系统中。
(4)在生产线上,teststand的并行测试能力可运行批测试(即测量一种pcb)或异步测试(即同时对一种被测器件测量不同的功能)。线程优先功能使处理能力得到优化,并且可同时执行多种过程。
在实际应用中,一个测试项目首先被分割为若干个测试步骤。然后可以采用两种方式开发测试代码:一种方式是每个步骤都采用恰当的开发平台和语言编写,而后生成动态链接库形式的模块组件;除此之外,teststand的适配器模块可以打开指定的应用程序开发环境(ade),在其中为代码模块创建新的源代码,然后在该开发环境中指示新创建的代码,即通过teststand的模板按步骤生成测试所需的代码。前一种方法是目前普遍使用的方法,适用于多人合作开发同一测试系统软件,这样每人都可以适用自己擅长的语言编写相应步骤,然后生成各自的动态链接库挂接在主程序上编辑成一个测试序列文件,通过事先设计好的接口和全局变量完成数据交换;后一种方法适用于掌握多语言编程技术的人员实现快速开发。无论使用哪种方式编辑测试步骤,最终进行测试时,只需运行一个序列文件,teststand引擎就会按流程通过每个步骤的所涉及的接口适配器调用相应外部代码来完成测试任务。值得一提的是,teststand的代码生成模板和测试步骤模板都是可编辑的,这大大增加了测试程序编写的灵活性。
4.使用ni teststand软件解决混合编程实例
以某图像式直线运动物体运动参数测试系统为例,其系统构成如图3所示。当激光光幕投射到运动物体上时,粘贴在运动物体上的原向反射片将返回其中一部分激光,这反映在高速相机采集到的图像上是一个光斑。最后在计算机中使用matlab处理采集到的图像从而分析出运动物体的运动参数。
该测试系统软件开始运行首先执行硬件自检,读取相机和数采卡的运行状态。自检通过后对相机、数采卡、软件界面初始化并打开matlab后将其最小化。此时可以在系统校准后配置数据采集参数并采集数据,也可以导入原始图像进行数据处理。当所有操作都完成后,释放掉所用资源并退出。原软件主体采用labwindows/cvi开发,数据采集部分因接口问题需要使用vc++编写,数据处理使用matlab所提供的函数。在原有架构中,主程序通过调用vc++编译生成的可执行文件完成数据采集和即时回读数据并显示,通过activex控件技术调用matlab中函数完成数据的处理。
这样的架构虽然能够完成测试任务,却存在三个问题:(1)主程序与数据采集程序完全是两个独立的程序,这样一方面vc++编写的程序界面十分不美观,更重要的是数据的交换十分不方便——这是编写软件时比较忌讳的;(2)通过activex控件技术调用matlab函数,这种方法需要matlab运行环境,这也就是开机初始化时需要打开matlab并将其最小化的原因;(3)纵观整个程序,仅主程序就有几千行,程序结构不清晰,即程序易读性差、可扩展性差,使得该软件的修改或二次开发都十分困难。
使用ni teststand软件即可解决以上问题。基于teststand的该测试系统架构如图4所示。
主程序使用labwindows/cvi编写,数据采集程序使用vc++编写。具体步骤为:首先考察整理出整个测试系统中作为不同函数间数据交换的变量,并在teststand下创建相应的局部变量或全局变量。然后将已有的函数按功能分割成多个分立程序,确保这些程序能够独立完成某一功能,如相机配置、相机初始化等,再将能够实现功能的主要函数导出到动态链接库中。最后将各个分立的测试步骤挂接到一个序列里,并将各函数接口中的变量与之前在teststand中创建的变量对应起来。
主程序调用matlab函数的方法不再调用可执行文件,变更为labwindows/cvi通过teststand的c/c++接口适配器调用在matlab环境下生成的com组件。具体方法为:使用matlab的deployment tool构建generic com component类型的工程,然后在该工程中添加新类(class),再将含有图像处理算法的m文件加入该类中,随后在matlab命令框中输入面mbuild_–setup,根据提示选择vc编译器,注意该命令中间“_”为空格,最后在deployment tool的action中选择add mcr后生成多个文件,其中dll文件可由teststand调用,可执行文件用于在未安装matlab的环境中注册该com组件。该方法不需要matlab运行环境,降低了资源开销,增加了程序的灵活性[4]。
经过上述操作后将多个分立的程序组装成一个大系统。在用户界面和一般测试步骤的编辑方面发挥labwindows/cvi界面美观、编辑简易等优势,在数据的采集、处理方面使用vc++辅助开发,运用ni teststand来传递变量、指针使得各语言所开发的功能无缝连接起来,数据处理方面发挥matlab在计算、分析上的优势。从整体来看,各个步骤采用分部开发、统一挂接的方式,结构清晰、定位迅速。在局部修改或者二次开发时,只需要修改相应部分,重新生成动态链接库、挂接到主程序上。事实上,由于各个部分彼此独立,只需做少许修改即可移植到类似的测试系统中,避免直接复制修改代码所导致的代码风格混乱、函数或参数冲突。
5.总结
目前,测试系统无论硬件还是软件,其发展趋势都是综合化、模块化。即尽可能在一个测试系统中包含更多的测试项目,并且每个测试系统都细化为多种模块,通过模块间的组合实现不同的功能,在功能需要调整时能够快速完成配置,稳定高效的完成测试任务。ni teststand顺应了时代潮流。
本文着重讨论了在编写通用自动测试系统平台时面临的多语言混合编程问题的解决方案。提出了ni teststand在解决测试系统混合编程方面所具有的优势。并举例说明了如何采用ni teststand重新构架已有测试系统。该例虽然称不上“通用”的“平台”,却已经可以说明ni teststand架构的优越性,管中窥豹,可见一斑。因此,在通用自动测试系统平台中应用ni teststand是可行的,先进的和有意义的!
参考文献
作者简介:刘辉(1986—),河北衡水人,中北大学硕士研究生。
相关热词搜索:;