EZFLAME火检放大器软件设计说明书.docx_第1页
EZFLAME火检放大器软件设计说明书.docx_第2页
EZFLAME火检放大器软件设计说明书.docx_第3页
EZFLAME火检放大器软件设计说明书.docx_第4页
EZFLAME火检放大器软件设计说明书.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目编号:DN131(B57) EZ-FLAME火检放大器软件设计说明书编 制:沈 明 英审 核:会 签:批 准:Safe-Fire Inc2013年6月27日版 本生效日期签 名注 记目 录目 录31概述41.1软件开发平台说明41.2软件主要功能概述42软件描述52.1程序框图52.2主程序51 概述1.1 软件开发平台说明EZ-FLAME的硬件系统是以基于ARM Cotex-M3内核的STM32F103ZET6为核心,基于此CPU进行下位机软件设计。软件设计以Keil uVision4为开发平台,采用C语言进行代码编写,提高软件的研发效率,增加软件的可读性和易维护性。1.2 软件主要功能概述1) 能同时处理两个通道的火焰信号,并且每个通道有两套独立的参数;2) 每个通道配有独立的开关通道,当某通道关闭时,该通道对应的模拟量、开光量及指示灯都无输出,通道开关可由上位机软件设置;3) 火焰信号采用交流、直流、频率三种算法,每种算法有独立判火门槛;4) 开关量结果对三种算法取“与”,当且仅当三种算法全部有火时,才会最终判有火,模拟量结果取决于交流值强度;5) 具备智能调节硬件增益功能,当输入信号过小或趋于饱和时,通过软件控制数字电位器自动调节硬件放大倍数;6) 具备通讯功能,可通过上位机软件对下位机软件进行参数设置、并实时监控下位机运行状态;具备傻瓜式参数切换功能,可通过下位机面板上的按键切换当前运行的参数,且两个通道独立操作互不影响;7) 具备探头温度测量功能,可以检测的温度范围达到-40到120;8) 具备自检功能,开机时及运行中每隔2分钟对系统硬件(包括探头)进行自我检测,如发现故障,输出报警开关量同时报警指示灯亮起,报警时开关量输出无火;9) 具备可选报警输出功能,对无需开关量输出的报警项可以从上位机软件上选择取消该项的操作;10) 具备看门狗功能,当软件运行出错或进入死循环时,可以自动实现RESET以防止死机。2 软件描述2.1 程序框图 图1 EZ-FLAME 火检系统程序框图2.2 主程序2.2.1 主函数完成功能简介2.2.1.1 完成CPU的初始化、片内外设及系统的初始化1) 时钟、中断向量、GPIO、USART、定时器、SPI、RTC、FRAM、AD、DA、数字电位器初始化;2) 面板上全部LED闪烁一次;3) 从FRAM中读取两个通道的公共信息和4个文件的参数;4) 每个通道对应文件灯亮起;5) 初始化采样数组;6) 开机自检操作。2.2.1.2 按键处理根据按键值进行相应的文件切换操作。2.2.1.2 自动增益调整根据一段时间内的采样值和火焰状态,对饱和的信号或过小的信号进行增益调整。2.2.1.3 RS-485通讯处理根据接收到的上位机命令,进行相应的参数上传、参数修改、当前运行状态上传等操作。2.2.1.4 实时数据处理对实时采样数据采用直流、交流、频率三种处理方式,从三个维度计算火焰信号的不同分量,并根据处理结果及3个门槛,判断当前火焰瞬时状态并且输出模拟量;同时计算探头工作温度,若超出安全温度范围则作出超温报警。2.2.1.5 自检操作每隔2分钟对探头、FRAM、DA芯片进行自我检测,诊断故障则输出报警开关量且点亮对应通道ALARM指示灯,通道共用的FRAM故障时两个ALARM指示灯同时点亮。2.2.1.6 软件看门狗每隔一定时间产生喂狗信号清除看门狗计数器,如软件运行中出现故障不能及时喂狗,就会造成看门狗中断引起系统复位,以防止死机。2.2.2 主函数流程图2 EZ-FLAME 火检系统主流程图2.2.3 中断处理程序2.2.3.1 Timer1定时中断Timer1定时中断时间1.302ms,中断处理程序主要实现的功能有:AD采样、4阶IIR滤波、饱和(过小)数据统计、待处理实时数据保护、按键滤波、LED和继电器状态刷新、有/无火判定、其他模块所需定时。Timer1定时中断流程如图(3)所示。2.2.3.2 串口中断程序串口中断程序实现串口数据的接收和发送功能,接收数据的同时完成命令的校验的工作。2.2.3.3 RTC中断RTC中断用以计时,每1秒触发一次,在当前时间(年月日时分秒)上加1秒。2.2.4 各功能模块详细说明2.2.4.1 按键处理模块按键在进入处理程序前,需经过软件滤波去抖动,当前键值(一个按键、多个按键或无按键)保持不变达到19.53ms以上(15次Timer1中断),即判定当前键值有效。按键滤波去抖动流程如图(4)。在main函数的while循环中,将首先进行按键操作的处理,按键的作用是切换相应通道当前运行的参数文件,如通道1当前运行文件1A(代表通道1的文件A,下同),通道2当前运行文件2B,则可通过按键操作将通道1的运行文件切换到1B,将通道2的运行文件切换到2A。程序将两个通道的按键独立进行处理,因此两个通道的操作各自独立互不影响。通道1的流程如图(5)所示,通道2的处理方式与通道1相同。以1A切换到1B为例,正确的操作步骤如下:按下1B键(1A灯熄灭,1B灯慢速闪烁)1B键抬起按住1B键(1B灯快速闪烁)1B键按住达3秒(1B灯长亮)文件切换至1B。其中LED灯慢速闪烁频率1.92Hz,快速闪烁频率9.6Hz。若操作未按上述流程操作,则会在按键全部抬起后恢复到初始状态,若第一次按键后长时间(5秒)无操作,也会自动恢复到初始状态。2.2.4.2 自动增益调整模块自动增益调整模块用于在火焰信号饱和或过小时通过改变数字电位器的阻值实现自动将硬件增益减小或增大的功能,流程如图(6)所示。自动增益调整的是两个通道的交流和直流信号,硬件增益设4档,分别是1.5、2、3、4。在连续的10秒内,判断AD转换器采集到的电压信号,若有80%以上信号低于2V时,自动将增益调整到4(无论当前增益是第几档),若有80%以上信号高于9V,自动将增益往下调一档,即增益4调到增益3,增益3调到增益2增益1.5则不调节。自动增益操作实施的前提条件是在统计数据的10秒是无自检的FLAME ON状态,即以下两种情况不进行调节:a10秒内存在自检操作;b10秒内出现过FLAME OFF状态。2.2.4.3 自检操作模块自检是程序自动检测硬件故障,向DCS输出报警开关量的功能模块。自检分开机自检和定时自检(间隔2分钟,定时器每隔2分钟设置自检标志位),检测的硬件有:探头、FRAM、DA,其流程如图6。探头自检时先将对应的CHECK信号置为有效,等待电容充放电时间60ms,采集一个周期等于16Hz(硬件带通滤波器截止频率)正弦波的信号用于判断,如信号有80%以上落在300mV内(根据产品规格书),则判定探头无故障,否则置探头故障位。判断结束后,将对应CHECK信号置为无效,等待电容充放电时间60ms后,探头自检结束。FRAM自检时在其地址范围0x000000xFFFFF内取一个随机数作为检测地址,先保存待检地址内数据,再往该地址内写入固定常数0x55,从该地址内读取数据,若为0x55则无故障。每次取5个随机地址进行检测,检测到故障时置FRAM故障位。DA自检时读取芯片FAULT位,若FAULT引脚为低电平,再次读取FAULT位,仍为低电平则置DA故障位,否则DA无故障。两次读取FAULT之间设置延迟,时间1ms。硬件检测结束后,根据硬件故障码,刷新报警继电器和LED状态标志位,并清除自检标志位。2.2.4.4 实时信号处理1AC信号处理模块AC信号的主要处理方法是FFT。FFT算法的基本原理是把长序列的DFT逐次分解为较短序列的DFT。按照抽取方式的不同可分为DIT-FFT(按时间抽取)和DIF-FFT(按频率抽取)算法。按照蝶形运算的构成不同可分为基2、基4、基8以及任意因子(2n,n为大于1的整数),基2、基4算法较为常用。我们采用的是基2的DIT-FFT算法。设序列点数 N = 2L,L 为整数。若不满足,则补零。N为2的整数幂的FFT算法称基2-FFT算法。将序列x(n)按n的奇偶分成两组:设序列x(n)的长度为N,且满足,M为自然数。按n的奇偶把x(n)分解为两个N/2点的子序列: 则x(n)的DFT为: 由于所以 其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT,即 :由于X1(k) 和X2(k)均以N/2为周期,且 ,所以X(k)又可表示为: 与第一次分解相同,将x1(r)按奇偶分解成两个N/4长的子序列x3(l)和x4(l),即 那么,X1(k)又可表示为 :式中:同理,由X3(k)和X4(k)的周期性和Wm N/2的对称性 Wk+N/4 N/2=-Wk N/2 最后得到: 用同样的方法可计算出:其中:蝶形运算规律:设序列x(n)经时域抽选(倒序)后,存入数组X中。如果蝶形运算的两个输入数据相距B个点,应用原位计算,则蝶形运算可表示成如下形式: X (J) XL-1(J)+X L-1(J+B)WpN XL(J+B) XL-1(J)-X L-1(J+B)WpN式中 p=J2 M-L;J=0,1,,2 L-1-1;L=1,2,,M下标L表示第L级运算,XL(J)则表示第L级运算后数组元素X(J)的值。如果要用实数运算完成上述蝶形运算,可按下面的算法进行。设T=X L-1(J+B)WpN=TR+jTIX L-1(J)=XR(J)+jXI(J) 式中下标R表示取实部,I表示取虚部,则根据系统需求我们对实时的AC信号每隔1.302ms(768Hz)采样一次。为保证数据的连续性,采用先进先出的原则对采样数据进行更新,先通过IIR数字滤波器(截止频率15Hz和150Hz的4阶IIR数字滤波器)滤除没用的干扰信号,分析处理模块对经过滤波后的频率信号进行频谱分析,并采用FFT计算出对应频率下的功率谱值,以获得AC信号对应频率的强度值。单次FFT使用256个采样点(时长1/3秒),两次FFT间隔300ms。得到信号的频谱后,为避免信号短时波动,对最近5次功率谱值取平均,作为本次FFT的功率谱值。最近5次功率谱值采用先进先出压堆栈的方式存储。为防止设备原因造成火焰信号值的大小不一,在程序中设置了软件增益。根据用户设定的软件增益,在上步计算得到的功率谱值上乘软件增益,用户可设定的增益范围150,梯度为1,增益比例1:1.3,增益表如下:设定值实际值150.0030.0040.0050.0060.0076100.0080.0090.010.020.0311150.040.050.060.070.0816200.090.120.160.200.2721250.350.460.60.771.026301.31.72.22.93.731354.86.38.510.613.8364015171921234145252729313346503537394143程序中设置了火焰中心频率fo,用户可根据当前检测的信号特征进行设置,取值从3Hz到126Hz,梯度3Hz,推荐值为最大频谱值对应的频率。另外用户需要设置中心频率左侧频带宽度left_band和右侧频带宽度right_band及各自的权重left_weight,rght_weght,用以计算中心频率(对应middle_weight)及左右两侧频带的权重和。左右两侧的频带的权重以等差数列从中心往两侧一次降低,公差d由用户设置。其中:left_weight + middle_weight + right_weight = 1 a1 + (a1 d1) + (a1 2 * d1) + . = left_weight a2 + (a2 d2) + (a2 2 * d2) + = right_weight根据用户设定值得到a1和a2的值,将每个频率上的频谱值取其对应的权重再求和,即得到中品频率及左右带宽上的权重和。Power = power(fo) * middle_weight + a1 * power(left1) + (a1 d1) * power(left2) + + a2 * power(right1) + (a2 d2) * power(rght2) + 在信号值较大的工况下,由上述算法计算得到的权重和可能会出现较大的数值(远远超过1999),为保证输出值在火焰各个状态下线性地表现其强度,减少饱和值,在此增加线性拟合算法。将信号以转折点line_turn分段,line_turn以下不做处理,line_turn以上信号乘以浮点数line_parameter,用以将较大的信号拟合到1999的强度内。为避免信号在火焰波动时出现过大的跳变,之后将对信号进行平滑滤波。滤波系数的大小根据信号波动的快慢而异。在点火阶段,信号快速上升,为使输出很快从无火达到有火,将滤波系数设置得较陡峭;在燃烧稳定阶段,为使输出平滑稳定,即使出现偶然波动也能反映稳定的工况,将滤波系数设置得较平滑;在稍有波动的阶段,为使输出不出现太大波动但又不维持输出不变,将滤波系数设置到上述两者之间。上述三种阶段的判定,由上步计算得到的数值与前次相减,差值大于设定值weight_H则判定为快速上升阶段,小于weght_L则判定为稳定阶段,处于两者之间则判定为小幅波动阶段。平滑滤波以后的数值将作为本次AC计算的结果AC_value。AC_value表征交流信号的波动大小,根据用户设置的Max和Min参数,计算输出的模拟量(420mA),并根据用户设置的看火门槛ont_H和ont_L判定当前AC值的瞬时状态,若落在范围ont_H,ont_L中,判定AC瞬时值有火,ac_status=AC_FLAME_ON,若在范围外,判定AC瞬时值无火,ac_status=AC_FLAME_OFF。2.2.4.5 实时信号处理1DC信号处理模块火焰信号中的DC分量表征信号中稳定不波动的成分大小,如背景火焰中含有大量DC分量。在工况稳定的情况下,AD转换器采样得到的DC值应该是相当稳定的直流信号,因此对DC信号采用一定时间段上取平均的处理方法。同步于FFT计算,对DC信号也采用每隔300ms处理256点的方式。对256个信号进行平均后,为避免波动再对最近5次计算结果取平均。DC信号也设置软件增益,增益为浮点数,由用户设置。为避免信号在火焰波动时出现过大的跳变,之后将对信号进行平滑滤波,这部分算法同上述AC部分。滤波以后的数值作为本次DC计算的结果DC_value。根据用户设置的看火门槛ont_H和ont_L判定当前DC值的瞬时状态,若落在范围ont_H,ont_L中,判定DC瞬时值有火,dc_status=DC_FLAME_ON,若在范围外,判定DC瞬时值无火,dc_status=DC_FLAME_OFF。2.2.4.6 实时信号处理1数频算法模块数频是计算单位时间内交流型号中包含符合条件(如幅度、时长)的波形个数的算法。数频算法的源数据来自AD转换器的AC通道,每次计算使用256个数据,时长1/3秒,单次计算结果乘3即为当前信号的频率值。当前采样值data1,当前采样值和前一次采样值的差data2,根据data2的正负来判断波形上升和下降,data20,上升;data2 =raise_voltage_th1:l 如果N2=fall_number_th 满足条件,wave_number+1,下个波形参数初始化l 如果N2= fall_voltage_th1 满足条件,wave_number+1,下个波形参数初始化n A2 fall_voltage_th1 继续上升阶段,参数V1不变,调整N1和Vt,N2清02. A1 raise_voltage_th1:l 如果N1= fall_number_th 不满足条件,下个波形参数初始化n N2 fall_number_th:u V1V2 继续下降阶段,调整N2和Vtl 如果N1=raise_number_th:n A1 raise_voltage_th2:u 如果N2=fall_number_th 满足条件,wave_number+1,下个波形参数初始化u 如果N2= fall_voltage_th2 满足条件,wave_number+1,下个波形参数初始化 A2 fall_voltage_th2 继续上升阶段,参数V1不变,调整N1和Vt,N2清0n A1 raise_voltage_th2 不满足条件,下个波形参数初始化单个波形判断结束,开始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论