18931180976
探伤

设备 超声波探伤设备型号
探伤设备生产厂家
探伤设备案例
综合实力
合作单位
探伤知识
招聘信息
联系方式
当前位置:首页 >> 探伤知识

八通道探伤设备实时报警设计

发布时间:2024/1/4 9:26:31

八通道超声波探伤设备都具备实时报警功能,超声波探伤波形的实时报警有进波报警和失波报警两种方式。报警闸门分为进波闸门(A 门)和失波闸门(B 门)两种。当探伤波形高于进波闸门,系统进行进波报警。当波形低于失波闸门时,系统进行失波报警。


为了提高系统的性能,八通道实时报警功能的算法模块由 FPGA 实现,控制功能在应用软件中实现。FPGA 中,一共使用了使用了 16 个 FIFO。其中八个 gate_fifo 存放闸门数据用于进行实时比较,八个 alarm_fifo 用于存储报警后的最大波形数据帧。FPGA 中还使用了一个八位状态寄存器 reg_state 用于指示八个通道的报警状态,一个十六位寄存器 alarm_sel 用于存放八通道的报警方式。当开启闸门报警功能时,FPGA 对采样数据进行非均匀压缩,生成一帧实时波形显示数据。然后将波形显示数据与 gate_fifo 中的闸门数据进行逐点比较,当出现连续若干帧数据超过报警闸门数据时,FPGA 则驱动 LED 显示灯和蜂鸣器进行实时声光报警,并对状态寄存器 reg_state 的相关位进行设置。当波形数据正常后,FPGA 将记录到的报警包络数据存储到alarm_fifo 中,并向 ARM 子系统发送报警中断,请求读取存储的报警数据。


八通道实时报警模块驱动程序在应用程序的系统调用下,需要完成以下功能:1.软件同步读取硬件实时报警的状态并进行显示处理。2.FPGA 发送报警中断后,应用程序通过驱动程序从 alarm_fifo 中读取报警通道的存储数据并进行处理。


应用程序通过轮询的方式,调用本驱动程序的 ioctl()方法读取实时报警状态。以重复频率50Hz 为例,应用程序每隔 20ms 调用一次本驱动程序的 ioctl()方法,将 reg_state 状态寄存器中的数据读取到内核空间,再复制到相应的用户空间的变量中。通过判断 reg_state 相应的位是否置位来确定各通道的报警情况。


驱动程序中对 FPGA 的报警中断进行注册,并且实现了中断服务子程序。当操作系统接收到中断后,将调用该中断服务子程序进行中断处理。在中断处理程序中,首先读取 reg_state 确定哪几个通道有报警数据,然后通过 insw()内核调用,将 alarm_fifo 中的已报警通道的数据读取到内核空间。接着采用与探伤数据实时传输驱动程序相同的异步通信机制,向应用程序进程发送 SIGIO 信号,通知上层应用程序报警已结束,报警数据已经准备好。由于两个驱动中都发送了相同的 SIGIO 信号,需要通过一个内核静态变量 flag_fpga 进行区分。应用程序接收到报警中断后,通过调用 read() 方法将各通道的报警数据从内核空间复制到用户空间进行处理和存储。


经过实机测试,八通道超声波探伤仪在同时使用八个通道进行探伤时,当其中任意通道出现缺陷数据时,系统都能够进行实时的蜂鸣器报警,并且反馈到显示屏上,成功实现了报警功能。