在大型工业控制系统中,各级设备的启动、停止,都对整个系统的运行状况有着一定的影响,对这些装置开关量信号的采集、动作时序的记录也显得尤为重要。所以,有必要设计一种开关量信号采集卡,来对这些信号进行采集,以对设备运行状态、生产事故的检测和分析、查询提供依据。
本文介绍的16通道开关信号采集卡采用飞利浦LPC2131 ARM单片机为核心,以0.5ms的采样周期,可对16路开关量输入信号进行采集,对开关量的跳变波形及发生时间进行实时测量,并将数据上传至上位机历史数据库,其分辨率为1ms。同时,可通过与上位机软件的配合对历史数据进行全方位查询,以分析系统运行情况。
测量卡件留有UART通讯接口,与控制器联网,将采集的数据输送到控制器处理后,再发送到工作站显示状态,并同时记录事件发生的时间和状态,将记录的数据存入工作站历史数据库。
信号采集卡
采集卡在卡件主面板上以16通道LED灯指示通道信号状态,同时在通道与通道之间,通道与底板之间实现隔离,并实现了与现场的电磁屏蔽。以保证测量到的信号不受干扰。采集卡模块规格如表1所示。
同时,采集卡通过UART通讯接口,通讯物理层使用CAN的总线驱动芯片TJA1040,与控制器联网,将所采集的数据发送到控制器中。
采集卡硬件设计
16通道开关量信号采集卡硬件电路由信号采集电路、单片机系统、通讯接口电路、外接引脚、人机接口五部分组成,其硬件电路结构示意图如图1所示。
图1 开关量测量卡件硬件结构图
开关量信号采集电路
开关量信号采集电路是实现将现场的各路开关量信号采集送入处理芯片内,实际设计中采用飞利浦LPC2131 ARM单片机。
信号采集电路的测量原理为:现场16路开关量信号接入卡件测量端子,由于考虑到现场信号的波动和干扰,为了保证系统稳定、可靠地运行,防止各类现场及电源干扰对系统的影响,通道中采用了光电耦合器,将卡件内部与现场输入信号进行隔离,从而实现信号的准确测量。实际设计中,采用了PS2701光电耦合器,卡件测量通路的结构框图如图2所示。
图2 开关量信号采集电路
后来,由于考虑到信号反转的简易性,将光电耦合器改为PS2705,实现了信号反转亦可的功能,所以实际测量电路进一步简化为图3。
图3 简化开关量信号采集电路
经过光电耦合器隔离转化后的信号,通过双向总线驱动器与处理芯片的数据总线相连接,将数据送入处理芯片LPC2131中进行处理。
单片机系统处理芯片选用飞利浦LPC2131,它是基于一个支持实时仿真和嵌入式跟踪的32位ARM7TDMI-STM CPU的微控制器,并带有32kB的嵌入的高速Flash存储器。128 位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。同时,LPC2131对代码规模有严格控制,可使用16 位Thumb模式将代码规模降低超过30%,而性能的损失却很小。LPC2131的较小的封装和极低的功耗使其可理想地用于小型系统中,如访问控制和POS 机。宽范围的串行通信接口和片内8kB 的SRAM 使LPC2131非常适用于通信网关、协议转换器、软modem、声音辨别和低端成像,为它们提供巨大的缓冲区空间和强大的处理功能。多个32 位定时器、1个或2个10位8路ADC、10 位DAC、PWM 通道和47个GPIO以及多达9个边沿或电平触发的外部中断使其特别适用于工业控制系统。
单片机系统以LPC2131为核心,片内自带8K闪速存储器,因而无需扩展外部ROM;要实现对开关量有关历史数据的追忆,有关信息必须易存储且不容易丢失,在系统失电后可以有效的保存数据。其测量的数据信息包括开关量发生的年、月、日、时、分、秒、毫秒以及当时各路通道的开关量状态。
图4单片机系统电路框图
同时,由于在系统运行中各种干扰等因素的影响,往往会引起程序运行出现死循环后跑飞现象,系统中还采用了简单的硬件WATCHDOG电路。
通讯接口电路
为了使测量卡件能够有效的将采集到的数据发送给控制器,卡件设计了UART电路。通过串口,卡件可根据上位机的操作命令,完成有关的数据传送、参数调整和时钟校对等任务。
卡件采用TJA1090通讯芯片,它是专为串行通讯模式设计的,输出端还接有稳压管保护电路,接口电路如图5所示。
图5 通讯接口电路
卡件模块规格及其外接电路引脚
卡件通过专用引脚与卡件底板相连接,以传输采集到的信号。卡件外接电路引脚如图6所示。
图6外接电路引脚图
人机接口
卡件采用串口通讯与控制器通讯,再将测量的信号上传到上位机,由上位机的组态画面显示,人机界面友好,数据可用于系统组态、历史数据查询等操作,同时可以实现过程控制SOE查询,通过与其配套使用的SOE软件,可实现去除抖动、削峰、削谷等功能,实现了SOE事故追忆和查询,其精度可达到1ms级。
采集卡软件设计
卡件软件设计采用功能模块结构。全部软件包括主程序、中断服务子程序等。其中主程序用来巡回检测和执行上位机送来的命令。中断服务子程序分为溢出中断子程序和串行口中断子程序,前者用于开关量跳变信号的采集,后者用于接收上位机发来的数据。
主程序
卡件带电后,进入主程序。首先判断卡件是否为上电复位,如果不是上电复位,则通过死机恢复处理后直接进入巡回检测阶段;如果是上电复位,则先进行卡件自检及初始化,包括设置堆栈指针,清内存,设置时间常数等,然后允许中断,进入正常的巡回处理程序,可以实现参数设置,开关量跳变时间、状态采集等功能。如果在主程序中检测到程序中定义的接收数据标志位置位,表明单片机已接收到上位机发出的数据,接收数据过程由串行口中断子程序来完成。根据上位机的数据,测量卡件作出相应的响应,或回送数据,或参数设置。
中断服务子程序
信号采集服务子程序主要完成发生动作的开关量信号的采集,由溢出中断来实现,每0.5ms中断一次。
通讯服务子程序主要指的是对上位机数据的接收子程序,由串行口中断来实现。而发送回上位机的数据大多为开关量记录信息,数据量较大,主要在主程序中完成。同时,可以设置通讯时波特率的大小,此项在卡件参数设置中可实现。
结语
目前该卡件已在江苏省南通天生港电厂#10、#11机组脱硫监控系统中投入使用。各项性能指标皆达到原设计要求,运行可靠,状况良好,可广泛适用于化工、冶金、电力等行业工业过程中实现开关量的采集,事故追忆等功能。
相关文章