基于USB移动存储的钢丝绳探伤报警系统设计
时间:08-06
来源:21IC
点击:
4 软件设计
为了使各部分硬件电路按一定顺序进行工作,在单片机的程序存储器中固化了用C51编写的应用程序,包括系统初始化程序、时间参数获取程序、文件创建程序、A/D转换程序、报警分析程序、数据写入程序。软件采用模块化设计方式,将各个功能分成独立的模块。其中,A/D转换程序放在中断程序中。程序流程图如图2所示。
4.1 报警算法分析
钢丝绳断丝检测信号为叠加于噪声背景上的局部区域的异常信号。为了能够对断丝进行报警,首先应从检测信号中将它分离出来。根据报警的实时处理要求,提取断丝检测信号的方法应简洁,花费的运算时间短,占据的内存空间小。下面给出一种峰峰值超限法。
峰峰值超限法利用局部异常信号波形的峰谷差值特征进行断丝检测信号的提取。从信号波形来看,检测信号是由大量的局部波峰和波谷构成的,在检测信号的每一微小的局部均将存在着一个完整的峰谷波形信号。峰峰值定义为某一局部峰谷波形信号的峰值与谷值之差的绝对值,当某一局部峰谷波形信号的峰峰值超过门限时,则认为是局部异常波形信号。在基于聚磁的钢丝绳断丝检测中,检测信号波形是一个完整的局部峰谷波形,这是由断丝断口漏磁场的分布决定的,且当选择好聚磁器的结构和检测元件的布置位置时,断丝检测信号将是单一的正峰信号,且信号的峰峰值比邻近的信号波形大得多,因此很容易用峰峰值超限法提取。
设vn,n=0,1,2,3,4,为5个连续的局部极值点,在程序中我们判断:当( (v[1]-v[2])>3*(v[1]-v[0]))&&((v[3]-v[2])>3*(v[3]-v[4]) )&&(v[0]-v[2]>26)&&(v[4]-v[2]>26)时,报警。
4.2 USB数据存储程序设计
在接口使用中已经介绍了用户系统与MemMaster系统的协议交互命令包括2种类型:Command和Response,下面就来具体说明一下Command/Response消息。
Command/Response消息用于在用户系统或MemMaster系统将要发出的Command或Response及相应数据准备好后,通过对方(MemMaster或用户系统)Command或Response已经准备完毕,可以开始执行的消息。该消息通过向双口RAM的0xFFFE或0xFFFF地址写/读数据来完成。该消息通过中断方式来实现,即:对用户系统而言,当向0xFFFE写入数据时,即为通知MemMaster有命令待执行。当系统进入中断程序确定时,说明MemMaster端已经完成了命令,并将响应准备好,可以进入下一步操作。这时,从0xFFFF即清除了该中断。目前系统定义,向0xFFFE写入和从0xFFFF读出的值都是0x01。参考代码如下[6]:
#define DPRAMRInt ((char*)0xFFFF)
#define DPRAMLInt ((char*)0xFFFE)
#define SEND_SYSCMD *DPRAMLInt = 0x01
void service_int1() interrupt 0 /*外部中断0*/
{
bRecvResp = *DPRAMRInt;
}
下面给出文件创建函数来说明用户系统与MemMaster系统是如何实现Command消息传送的(Response消息类似)。
void CreateFile(unsigned char nm) /*nm用于判断文件是否存在*/
{
CreateFileCmdPkg* crCmdPkg;
/* CreateFileCmdPkg为创建命令包,包括创建命令的各个属性*/
crCmdPkg=(CreateFileCmdPkg*)Command;
MemSet((char*)crCmdPkg,0,64);
MemSet(crCmdPkg->FileName,0x20,8);
crCmdPkg->CommandCode=SYS_CREATE_FILE;
/* SYS_CREATE_FILE为创建命令码*/
crCmdPkg->FileName[0]=’T’;
crCmdPkg->FileName[1]='A'+nm;
/* FileName为文件名*/
crCmdPkg->ExtensionName[0]='S';
crCmdPkg->ExtensionName[1]='H';
crCmdPkg->ExtensionName[2]='J';
/* ExtensionName为后缀名*/
crCmdPkg->FileAttr=0x20;
crCmdPkg->CreateTime[0]=min;
crCmdPkg->CreateTime[1]=hour;
/* CreateTime为创建时间*/
crCmdPkg->CreateDate[0]=date;
crCmdPkg->CreateDate[1]=year;
/* CreateDate为创建日期*/
/* min、hour、date、year是由DS1302提供的数据计算而得*/
crCmdPkg->Option=0x00;
bRecvResp = 0;
SEND_SYSCMD; /*发送Command消息*/
cs_ram=1; /*取消双口RAM片选*/
Delayms(10);
while(!bRecvResp); /*判断双口RAM是否收到消息*/
cs_ram=0; /*片选*/
}
5 实验结果分析
钢丝绳检测系统是通过对被测钢丝绳进行磁化,用敏感元件检测钢丝绳断丝处的泄漏磁场,以此判断有无断丝,再通过计算机以及相应的软件,对此漏磁场的波形进行分析,进一步判断断丝的数量,并通过光电编码器确定相应断丝的位置。在实验中选取一根 24(6 7)结构的钢丝绳样绳,并在指定位置做出断丝,实验分两组,每组50次,用该套系统进行测定,实验分析结果如表1所示。
通过表1(负号表示漏判,正号表示错判)的分析计算表明:当要求无错判时(错检断丝根数为0),断丝定量准判率为95%;当允许错判1根时(错检断丝根数为-1,0,1),断丝定量准判率为100%,因此,符合工况要求。同时,报警系统也对断丝进行了实时报警。
为了使各部分硬件电路按一定顺序进行工作,在单片机的程序存储器中固化了用C51编写的应用程序,包括系统初始化程序、时间参数获取程序、文件创建程序、A/D转换程序、报警分析程序、数据写入程序。软件采用模块化设计方式,将各个功能分成独立的模块。其中,A/D转换程序放在中断程序中。程序流程图如图2所示。
4.1 报警算法分析
钢丝绳断丝检测信号为叠加于噪声背景上的局部区域的异常信号。为了能够对断丝进行报警,首先应从检测信号中将它分离出来。根据报警的实时处理要求,提取断丝检测信号的方法应简洁,花费的运算时间短,占据的内存空间小。下面给出一种峰峰值超限法。
峰峰值超限法利用局部异常信号波形的峰谷差值特征进行断丝检测信号的提取。从信号波形来看,检测信号是由大量的局部波峰和波谷构成的,在检测信号的每一微小的局部均将存在着一个完整的峰谷波形信号。峰峰值定义为某一局部峰谷波形信号的峰值与谷值之差的绝对值,当某一局部峰谷波形信号的峰峰值超过门限时,则认为是局部异常波形信号。在基于聚磁的钢丝绳断丝检测中,检测信号波形是一个完整的局部峰谷波形,这是由断丝断口漏磁场的分布决定的,且当选择好聚磁器的结构和检测元件的布置位置时,断丝检测信号将是单一的正峰信号,且信号的峰峰值比邻近的信号波形大得多,因此很容易用峰峰值超限法提取。
设vn,n=0,1,2,3,4,为5个连续的局部极值点,在程序中我们判断:当( (v[1]-v[2])>3*(v[1]-v[0]))&&((v[3]-v[2])>3*(v[3]-v[4]) )&&(v[0]-v[2]>26)&&(v[4]-v[2]>26)时,报警。
4.2 USB数据存储程序设计
在接口使用中已经介绍了用户系统与MemMaster系统的协议交互命令包括2种类型:Command和Response,下面就来具体说明一下Command/Response消息。
Command/Response消息用于在用户系统或MemMaster系统将要发出的Command或Response及相应数据准备好后,通过对方(MemMaster或用户系统)Command或Response已经准备完毕,可以开始执行的消息。该消息通过向双口RAM的0xFFFE或0xFFFF地址写/读数据来完成。该消息通过中断方式来实现,即:对用户系统而言,当向0xFFFE写入数据时,即为通知MemMaster有命令待执行。当系统进入中断程序确定时,说明MemMaster端已经完成了命令,并将响应准备好,可以进入下一步操作。这时,从0xFFFF即清除了该中断。目前系统定义,向0xFFFE写入和从0xFFFF读出的值都是0x01。参考代码如下[6]:
#define DPRAMRInt ((char*)0xFFFF)
#define DPRAMLInt ((char*)0xFFFE)
#define SEND_SYSCMD *DPRAMLInt = 0x01
void service_int1() interrupt 0 /*外部中断0*/
{
bRecvResp = *DPRAMRInt;
}
下面给出文件创建函数来说明用户系统与MemMaster系统是如何实现Command消息传送的(Response消息类似)。
void CreateFile(unsigned char nm) /*nm用于判断文件是否存在*/
{
CreateFileCmdPkg* crCmdPkg;
/* CreateFileCmdPkg为创建命令包,包括创建命令的各个属性*/
crCmdPkg=(CreateFileCmdPkg*)Command;
MemSet((char*)crCmdPkg,0,64);
MemSet(crCmdPkg->FileName,0x20,8);
crCmdPkg->CommandCode=SYS_CREATE_FILE;
/* SYS_CREATE_FILE为创建命令码*/
crCmdPkg->FileName[0]=’T’;
crCmdPkg->FileName[1]='A'+nm;
/* FileName为文件名*/
crCmdPkg->ExtensionName[0]='S';
crCmdPkg->ExtensionName[1]='H';
crCmdPkg->ExtensionName[2]='J';
/* ExtensionName为后缀名*/
crCmdPkg->FileAttr=0x20;
crCmdPkg->CreateTime[0]=min;
crCmdPkg->CreateTime[1]=hour;
/* CreateTime为创建时间*/
crCmdPkg->CreateDate[0]=date;
crCmdPkg->CreateDate[1]=year;
/* CreateDate为创建日期*/
/* min、hour、date、year是由DS1302提供的数据计算而得*/
crCmdPkg->Option=0x00;
bRecvResp = 0;
SEND_SYSCMD; /*发送Command消息*/
cs_ram=1; /*取消双口RAM片选*/
Delayms(10);
while(!bRecvResp); /*判断双口RAM是否收到消息*/
cs_ram=0; /*片选*/
}
5 实验结果分析
钢丝绳检测系统是通过对被测钢丝绳进行磁化,用敏感元件检测钢丝绳断丝处的泄漏磁场,以此判断有无断丝,再通过计算机以及相应的软件,对此漏磁场的波形进行分析,进一步判断断丝的数量,并通过光电编码器确定相应断丝的位置。在实验中选取一根 24(6 7)结构的钢丝绳样绳,并在指定位置做出断丝,实验分两组,每组50次,用该套系统进行测定,实验分析结果如表1所示。
通过表1(负号表示漏判,正号表示错判)的分析计算表明:当要求无错判时(错检断丝根数为0),断丝定量准判率为95%;当允许错判1根时(错检断丝根数为-1,0,1),断丝定量准判率为100%,因此,符合工况要求。同时,报警系统也对断丝进行了实时报警。
- 实现WUSB设备控制器的设计考虑因素(09-12)
- 基于USB2.0的高速无线数传接收设备的数据接收存储方法(09-09)
- 四种短距离无线监控解决方案的性能对比(09-16)
- Wibree:一个可供选择的新无线联网技术(11-07)
- TI 单芯片手机多媒体电话解决方案(12-01)
- 蓝牙技术硬件实现模式分析(01-11)