基于扭矩信息的运动系统故障检测装置
本文引用地址://m.amcfsurvey.com/article/195227.htm
其中 #8855为卷积运算符,ω为时间窗口(time window)。式中的ω(k)可以按照下式选取:
为了达到理想的检测效果,也可以采用多步SNEO:
其中:
通过选择适当的时间延迟m,可以有效减少采样噪声的影响。
4 信号采集和分析
为了快速准确的检测出系统发生的故障,需要设置适当的滤波器参数(比如多步SNEO算法中的b和m),这就要首先对被检测信号进行分析处理。ARM芯片虽然能够实时处理大量的数据,但是缺乏上位机(如工控机)专用软件具有的强大数据分析处理功能。这里选用科学研究中经常用到的MATLAB软件对ARM系统采集到的数据进行离线分析处理,得到所需的滤波器参数。
为了方便将ARM采集到的数据导入到MATLAB中,首先编写了MATLAB和ARM系统的串行通信程序。要确定MATLAB环境已安装了仪器控制工具箱(Instrument Control Toolbox)。在MATLAB中,可以通过创建串口对象,来实现MATLAB与串口设备的通信。
创建串口对象可使用如下的语句:
bj = serial('port', 'PropertyName', Property Value ,...)
其中obj为创建的串口对象;port为串口对象所对应的串行口,如COM1;PropertyName和PropertyValue分别为串口属性名称和相应的取值,两者需成对出现。创建串口对象之后,在进行串口的读写操作之前,还需调fopen函数来建立串口对象同串口设备的实际连接。
可以使用fprintf和fwrite函数向串口设备发送数据,其中fprintf用于向串口设备发送文本信息,fwrite用于向设备发送二进制数据。MATLAB提供了很多函数,利用这些函数可以方便灵活的读取串口设备发送的信息;其中最常用的两个读串口函数为fread和fscanf,fread用于从串口设备读取二进制信息,fscanf用于读取设备发送的文本信息。
如果不再使用串口,应将串口对象同设备断开,然后将其从内存和MATLAB工作空间中删除。可以使用fclose,delete,chear来完成这一系列操作。
下面给出的MATLAB脚本文件用于接收ARM系统采集到的5000个双字节数据,并将这些数据存储到100×50的矩阵data中。这样就可以方便的利用MATLAB强大的数据分析处理功能,从得到的数据中总结出有用的信息。
s = serial('COM1','BaudRate',115200,'Terminator', {'',''});
data = zeros(100,50);
fopen(s);
for i = 1:50
fwrite(s,0x1,'char');
tmp = fread(s,100,'int16');
data(:,i) = tmp;
for j = 1:1000
j=j;
end
end
fclose(s);delete(s);clear s;
ARM系统的串口发送程序如下。在ARM的串口接收中断服务程序中将URXD0Flag赋值为1,这样每当ARM接受到MATLAB发送过来的SOH (Start of Header)字符,即0x1,便会向MATLAB发送100个双字节数据。sl和sh分别存放数据的底八位和高八位。
评论