新闻中心

EEPW首页>测试测量>设计应用> 基于扭矩信息的运动系统故障检测装置

基于扭矩信息的运动系统故障检测装置

作者: 时间:2010-11-15 来源:网络 收藏

本文引用地址://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分别存放数据的底八位和高八位。



评论


相关推荐

技术专区

关闭