基于扭矩信息的運動系統(tǒng)故障檢測裝置
本文引用地址:http://m.ptau.cn/article/195227.htm
其中 #8855為卷積運算符,ω為時間窗口(time window)。式中的ω(k)可以按照下式選?。?/p>
為了達到理想的檢測效果,也可以采用多步SNEO:
其中:
通過選擇適當的時間延遲m,可以有效減少采樣噪聲的影響。
4 信號采集和分析
為了快速準確的檢測出系統(tǒng)發(fā)生的故障,需要設置適當的濾波器參數(比如多步SNEO算法中的b和m),這就要首先對被檢測信號進行分析處理。ARM芯片雖然能夠實時處理大量的數據,但是缺乏上位機(如工控機)專用軟件具有的強大數據分析處理功能。這里選用科學研究中經常用到的MATLAB軟件對ARM系統(tǒng)采集到的數據進行離線分析處理,得到所需的濾波器參數。
為了方便將ARM采集到的數據導入到MATLAB中,首先編寫了MATLAB和ARM系統(tǒng)的串行通信程序。要確定MATLAB環(huán)境已安裝了儀器控制工具箱(Instrument Control Toolbox)。在MATLAB中,可以通過創(chuàng)建串口對象,來實現MATLAB與串口設備的通信。
創(chuàng)建串口對象可使用如下的語句:
bj = serial('port', 'PropertyName', Property Value ,...)
其中obj為創(chuàng)建的串口對象;port為串口對象所對應的串行口,如COM1;PropertyName和PropertyValue分別為串口屬性名稱和相應的取值,兩者需成對出現。創(chuàng)建串口對象之后,在進行串口的讀寫操作之前,還需調fopen函數來建立串口對象同串口設備的實際連接。
可以使用fprintf和fwrite函數向串口設備發(fā)送數據,其中fprintf用于向串口設備發(fā)送文本信息,fwrite用于向設備發(fā)送二進制數據。MATLAB提供了很多函數,利用這些函數可以方便靈活的讀取串口設備發(fā)送的信息;其中最常用的兩個讀串口函數為fread和fscanf,fread用于從串口設備讀取二進制信息,fscanf用于讀取設備發(fā)送的文本信息。
如果不再使用串口,應將串口對象同設備斷開,然后將其從內存和MATLAB工作空間中刪除??梢允褂胒close,delete,chear來完成這一系列操作。
下面給出的MATLAB腳本文件用于接收ARM系統(tǒng)采集到的5000個雙字節(jié)數據,并將這些數據存儲到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系統(tǒng)的串口發(fā)送程序如下。在ARM的串口接收中斷服務程序中將URXD0Flag賦值為1,這樣每當ARM接受到MATLAB發(fā)送過來的SOH (Start of Header)字符,即0x1,便會向MATLAB發(fā)送100個雙字節(jié)數據。sl和sh分別存放數據的底八位和高八位。
評論