1引言
在钢丝绳探伤" title="探伤">探伤检测中,要实现检测传感器到存储器的数据交换。USB移动存储" title="USB移动存储">USB移动存储器具有携带方便、操作快捷、成本低廉等优点。随着其技术的发展及广泛应用,如何实现使用单片机控制来完成移动存储这一过程成为了工控领域研究的热点。
2USB功能模块简介
2.1模块概述
USB[1]是—种查询(Polling)总线,由主控制器启动所有的数据传输。USB上所挂连的外设通过由主机调度的(Host-Scheduled)和基于令牌的(Token-Based)协议来共享USB带宽。目前,绝大多数Host功能角色被集成在各种类型的PC机(或以上层次机器)上。各种各样的基于USB的移动设备,包括USB移动存储器、带USB接口的数码相机等都集成USBSlave功能角色。这样,就导致这些作为USBSlave的USB接口的数字设备无法应用于嵌入式系统中。解决这一问题的根本办法就是在需要使用USB设备的嵌入式系统中集成USBHost功能模块,使之具有与USBSlave设备进行数据传输的能力。而MemMaster[2]模块就具有这种功能。
MemMaster作为USB系统中的Host设备,带有一个RootHUB,可供用户接入作为Slave的USB移动存储器。该MemMaster模块遵守USB1.1协议规范,支持所有基于USB的移动存储器,支持FAT12、FAT16文件系统。MemMaster模块可以模块的方式,通过总线集成到用户的数据采集等系统中,以提供用户将获得的数据通过该模块以文件的形式保存在移动存储器中,以便需要时在PC机中进行处理。
MemMaster在集成到用户系统中后,表现为用户系统的一个外部双端口RAM" title="RAM">RAM。用户系统通过向该外部RAM的指定区域写入命令和相应的数据,来控制MemMaster模块的操作,并且从指定区域读出响应和相应的数据来获得MemMaster模块提供的服务。通过这样的方式,双方实现协议交互。
2.2硬件配置
MemMaster支持USB1.1标准,最大写入速率达100KB/s(与测试环境有关),输入电压5V,工作电流100mA(不包括USB移动存储器)。INTR引脚作为从RAM到单片机的中断信号,BUSYR作为RAM的工作信号,SEMR作为同步信号,CER作为片选信号,其他引脚在此不做详述。
2.3接口使用
MemMaster通过双端口RAM,直接通过总线与用户的单片机系统相连。因此,就用户单片机系统而言,MemMaster表现为一个外置的RAM,而该RAM中的部分区域不能使用、部分区域被用作协议命令和数据的交互,剩余的部分可以由用户自行控制使用。在双端口RAM中,区域分配如下:
0x0000-0xF8F区域已经被系统占用;
0x5F80-0x5FBF共64字节用于存放系统命令;
0x5FC0-0x5FFF共64字节用于存放系统响应;
0x6000-0xDFFF共32768字节用于存放数据部分;
0xE000-0xFFFD为用户系统可使用区域;
0xFFFE-0xFFFF两个字节被用作系统协议交互指示,用户不可用于数据存放。
用户系统与MemMaster系统的协议交互命令包括2种类型:Command和Response。Command由用户系统发往MemMaster系统,而Response为相反方向,由MemMaster发往用户系统。具体的实施在第四节中有介绍。
3系统设计
3.1系统工作原理
现在,钢丝绳的应用越来越广泛,为了保护人身和财产安全,钢丝绳探伤检测仪器也随之发展起来。目前,钢丝绳探伤检测多以PC机作为检测数据的接收和存储器件,但是这样成本高、携带不方便。在此,运用MemMaster模块实现现场检测数据存储到移动存储器就克服了这些缺点,提高了系统的性价比。系统的工作原理描述如下:检测传感器开始工作时,输出脉冲信号作为控制电路的同步信号,同时检测钢丝绳的三路参数数据(模拟信号)。当控制电路获得同步信号后,启动A/D转换,取得转换结果,系统对数据进行处理后,判断是否有断丝发生,如果有则报警" title="报警">报警。同时把数据写入移动存储器中在控制电路上电时就建好的文件中,以便将来分析处理。
3.2系统配置
在此,A/D转化器件采用的是MAX186[3],MAXl86将8通道模拟开关、大带宽跟踪/保持电路、12位A/D转换器和移位寄存器集成到一片20脚双列直插芯片上,消除了传输误差,提高了采样精度和转换精度。它体积小、转换速度快、转换精度高、功耗低、用5V单电源或V双电源供电,模拟输入可由软件设置为单或双极性和单端或差分两种输入转换方式。它的SCLK引脚作为时钟信号输入,作为片选信号输入,DIN作为串行信号输入,DOUT作为串行信号输出。
在系统上电时,需要创建接收文件,文件的创建时间由DS1302[4]提供。DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,具有主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。它的I/O引脚作为数据输入输出,作为复位信号输入,SCLK作为时钟信号输入。
单片机采用的是华邦公司的W78E58B[5],它是8位单片机,内含32KBFlash/EEPROM,其引脚功能与8051系列单片机完全兼容。系统连接图如图1所示。
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.2USB数据存储程序设计
在接口使用中已经介绍了用户系统与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%,因此,符合工况要求。同时,报警系统" title="报警系统">报警系统也对断丝进行了实时报警。
6 结论
钢丝绳检测系统要求的检测速度为每秒0~2000个数据,本套装置完全可以胜任,同时保证了测量的精度。该装置可以按指定的格式存入数据,并且动态的检测移动存储器中是否有同名的文件,并自动添加文件,可以在无人工干预的情况下实现多次检测,使用起来极为方便。同时,报警系统可以对断丝进行实时报警,方便了实时处理。
该装置把USB标准应用到了钢丝绳检测体系中去,适应了计算机的发展潮流,具有携带方便、操作快捷、成本低廉、存储容量大等优点,效果良好,应用前景广阔。