基于高速数据采集卡的继电器各项参数检测系统
摘 要 本文利用研华PCI1742U多功能数据采集卡结合Windows多线程技术,实现了高速采样继电器动作时各触点电压,实时分析数据,并显示、存储测试结果。
【关键词】高速数据采集 多线程 中断传输 继电器检测
继电器等控制器件在工业控制中应用十分广泛,其各项参数随使用时间会产生变化,一些参数超出正常值时会使整个电路不再可靠,因此需要在检修中对其各项参数进行详细的测量分析,排除隐患。
继电器动作时间多为几十毫秒甚至更短暂,触点的回跳时间更短暂。MIL-R-39016D和GJB 65A-91对触点回跳做了定义:"等于或大于开路电压的 90%,且脉冲宽度等于或大于 10 uS 的现象则认为是回跳"。同时明确规定触点回跳时间不得超过 1.5 mS。若要采集到持续时间如此短暂的信号必须使用高速数据采集卡。
1 测试系统的实现
研华PCI1742U多功能数据采集卡采样速率高达1MHz,具有16位的A/D转换精度,满足采集触点回跳波形的要求。在高速数据采集时,大量的数据通过中断或DMA方式传输到计算机进行分析。
本检测系统在测试时连续不断的采集数据,通过多功能卡的数字量输出端调整测试电源。在整个测试过程中,对得到的数据进行实时分析,计算得出继电器各项参数并存档。同时在测试过程中绘制触点电压曲线,直观展现触点动作形态。
为了协调数据采集卡高速工作时产生的大量数据与存储速度慢、采用常规方式绘图更新占用时间较多的问题,引入Windows的多线程技术设计软件。新增加的线程有:测试参数调整线程,独立的控制测试电源的变化,测试电路的改变等;数据采集线程,在高速数据采集时,将采集到的数据以最快的速度传输到内存中;数据处理、分析线程,主要完成缓冲区数据的分类,计算等。
2 数据采集
本系统中使用数据采集卡的中断传输方式。创建一个单独的线程循环查询驱动程序发送预定的事件。当得到事件通知后,调用采集卡库函数DRV_FAICheck查询数据采集状态。该线程只有一项工作:查询采集卡采集状态→转移数据到缓冲区,杜绝了采集到的数据因未能及时处理而被覆盖,从而实现连续高速数据的采集。
//数据采集线程部分代码实现
UINT EventThread( LPVOID pParam )
{
USHORT usEventType;
LONG ErrCde;
Cxx* pView = (Cxx*)pParam;
while(pView->EventThreadFlag)//进入事件检查循环,实现连续采集
{
m_ptCheckEvent.EventType = &usEventType;
m_ptCheckEvent.Milliseconds = INFINITE;
//检查事件
ErrCde = DRV_CheckEvent(m_DriverHandle,(LPT_CheckEvent)&m_ptCheckEvent);
//开始处理事件
//中断事件
if (usEventType & ADS_EVT_INTERRUPT)
adInterruptEvent();
//半满事件
if (usEventType & ADS_EVT_BUFCHANGE)
{ pView->Transfer.lock();数据同步
adBufChangeEvent();
//在此函数中从缓冲区取走数据,交由数据处理线程进行数据的处理
pView->Transfer.unlock();
pView->TransferFn = true;//传输完成标志,可以对数据进行处理,存储
}
//溢出事件
if (usEventType & ADS_EVT_OVERRUN)
adOverrunEvent();
//停止采集事件
if (usEventType & ADS_EVT_TERMINATED)
{
adTerminateEvent();
//停止采集后还有一部分数据存储于缓冲区中,应取出
return 0;
}
}
AfxEndThread(0,true);
return 0;
}
3 数据处理
多通道连续采集到的数据在缓冲区中按如图所示规律排列。在整个程序中,同一组数据要多处同时使用,以实现及时的显示更新、存储,因此需要将采集到的数据交由专用的线程处理、并协调各线程对同一数据区域的访问。
测试电源的输出调整需要一个上升或下降时间才能达到设定值,因此不能将电源的设置输出时间作为测试开始基准时间。Windows系统提供的常用时间单位为毫秒级且误差较大(微妙级定时不易实现,且无法与采集卡、电源时间同步),若使用Windows中时间记录触点回跳会产生极大的误差。本系统使用相对时间——即采集卡每个数据的间隔时间都是固定的且为微秒级的(该时间间隔由数据采集卡定时器82C54提供,为数据采集卡固定参数)。依据数据列中电流传感器(响应时间≤1uS)输出值来判断测试是否开始,并依此为计时0点。
未测试时采集到的电流传感器只有微弱可忽略不计的信号,当测试开始通电的瞬间,电流传感器信号迅速变化,开始对数据个数进行计数,同时计算触点信号的变化,若T2≤触点回跳阈值,即可认为触点达到完全吸合,T1既是所要的触点动作时间。继电器触点其他参数的计算与此类似,完全可由采集到的数据分析得到。因此该种测试方法不依赖于软件定时,测试结果可靠。
4 结论
利用windows的多线程技术,设计的软件界面响应速度快,对高速、大量数据的处理实时性较高,并能够保证数据不丢失的情况下准确的采集到触点接触瞬间电压的变,提高了测试速度。不依赖软件定时的方式计算尽可能的提高了测试的准确度,增加测试结果的可靠性。
作者简介
曹闯(1984-),男,江苏省南京市人。硕士研究生学历。现为南京南车浦镇城轨车辆有限责任公司工程师。研究方向为智能控制与工程。
蓝信章(1962-),男,山东省青岛市人。大学本科学历。现为青岛海能电气有限公司高级工程师。研究方向为测控技术。
冯新颖(1980-),女,江苏省南京市人。硕士研究生学历。现为南京南车浦镇城轨车辆有限责任公司工程师。研究方向为智能控制与工程。
作者单位
1.南京南车浦镇城轨车辆有限责任公司 江苏省南京市 210000
2.青岛海能电气有限公司 山东省青岛市 266000