定时器初始化包括设置定时器时钟,配置模式寄存器,设置定时器中断等。
定时器中断25 ms进行一次A/D转换,控制采集A11、A12模拟信号输入,以及键盘信号的扫描。由于AI模拟信号每250 ms采集一组,所以每进入10次中断将最近5次采集到的AI信号进行去极值求平均数操作,并装入发送数组通过串口发往无线数传模块;而键盘按键信号由于要求较高的实时性,所以每25ms判断一次。之所以把AI数据采集和键盘扫描放在同一个定时器中,是因为这两个功能模块均用到了ADC控制器;若放在两个定时器中断中分别对ADC控制器进行操作,则会造成资源访问冲突,导致程序跑飞和系统瘫痪。当判断按键输入部分结束,对按键将作出实时响应,主要体现在LCD的显示内容上。每250 ms采集一组AI信号时,同样也会将采集到的数据转换为工程量通过LCD显示出来,实现数据的本地实时显示。
3.4 系统中A/D的使用 A/D是一个数据采集系统的基础,其信号采集精度和采集周期直接决定了系统的准确性和实时性。在
AT91SAM7S64芯片内,8路模拟量通过1个八选一复用开关后进行A/D转换,相应的转换结果送入一个所有通道可用的通用寄存器,即通道专用寄存器中,可配置为软件触发、外部触发ADTRG引脚上升沿或内部触发定时器/计数器输出。ADC支持8位或10位的分辨率,默认情况为10位分辨率;对于所有通道只需要一个启动命令来初始化转换序列。ADC硬件逻辑对工作通道自动执行转换,然后等待新请求;当转换完成后,10位数字结果存于当前通道的通道数据寄存器(ADC_CDR)及ADC最后转换数据寄存器(ADC_LCDR)中。
本系统中,用
AT91SAM7S64芯片的ADC控制器定时对相应通道的模拟量进行采集。另外,系统还通过A/D读取键盘数据,根据ADC转换值的不同判断按键。ADC的初始化包括初始化时钟、复位ADC、配置模式寄存器、设置A/D通道等。在本系统中,程序使能4路A/D通道,2路用于对反映推焦参数的模拟信号进行数据采集,另外两路用于对键盘按键信号进行判断控制。相关程序如下:
对于所采集的数据,需要进行数字滤波以减少外界干扰的影响。综合考虑电磁环境以及算法复杂度等因素,采用去极值的平均滤波算法,即对短时间内采集到的数据,去除最大值和最小值,把其余值的平均数作为一次数据采集的信号量。
对于键盘按键信号,每个按键按下产生的模拟量值都在一个特定的区间范围内。从软件上看,只需要判断采集按键信号的2路A/D转换值处在哪个区间内,即可判断出哪个键被按下,并且增加相关保护程序,使按键长时间按下不会重复响应,以防止误操作。
结 语
与现有的推焦数据采集系统相比,本系统有以下几个特点:将通过A/D采集到的模拟量经过工程量转换后,在LCD显示屏上实时显示,便于推焦车操作及维护人员直观监测数据的变化情况并作相应调整;上位机发送过来的炉号信息和时间信息也在LCD显示屏显示,增强了控制命令的可视性,降低了误操作的可能;采用无线数传模块实现上位机与下位机之间的数据通信,并通过软件校验的方式使传输的误码率降低到系统允许的范围。
此推焦数据监控系统已经交付贵州、山西和山东等地的一些焦化厂使用,达到了预期的运行效果。