用C#做的上位機軟體,通過PCI的采集卡采集位移信號,然后通過計算單位時間的前一次和當前次位移的差計算速度
現在計算的速度總是不穩定,上下波動非常大
我的位移是油缸的位移,行程0-150mm,最大速度也就是1.5mm/(用秒表估算的),但是給定伺服閥固定的開度,計算出來的速度隨機的波動 比如開度10%的時候,計算的速度在5-35mm/min之間波動,因為是拋物線型伺服閥,所以速度和開度不是線性比例關系。
后來我直接用采集卡的DataReady觸發事件,我設定200K的采樣頻率,資料長度只要1000個,每1000個觸發一下采集的事件,按道理這個采樣時間能固定的,而且我采樣一般都是20ms就完成了,我計算速度1S取一次值也是波動大
uj5u.com熱心網友回復:
很正常我們稍微模擬一下你就明白了
0,0,0,0,1,1,1,1
我們假設你所謂的定時器正好采樣4個,那么2次采集,正好一個0,一個1,倆個極端
如果說我們采用移動視窗處理
那么
他是 0,0,0
0,0,1
0,1,1
1,1,1
這樣你才能看到他是連續
我只是簡單說一下,其實這個是專門的章節“數字信號處理 窗函式”
uj5u.com熱心網友回復:
沒看懂啊,我先看看資料uj5u.com熱心網友回復:
你不會用了上位機的時鐘吧?哪怕讓你的采集卡系統自身有個無符號整數表示時間點間隔也行啊。uj5u.com熱心網友回復:
說實話我個人認為,應該直接計算加速度。分段積分求總行程,平均速度貌似并不符合描述我其實對你的問題有疑問,所以先得確定,你到底要瞬時速度還是要平均速度?
uj5u.com熱心網友回復:
如果采集資料本身沒有錯誤(誤碼、丟包等),那么很可能是你的演算法有問題。采樣頻率 200K,每秒會生成 20 萬個資料,你取了多少個資料進行計算?1000個資料是否有代表性?
uj5u.com熱心網友回復:
瞬時速度啊,采集的瞬時速度,但是我要控制這個速度uj5u.com熱心網友回復:
每秒20W個,但是我不可能1S鐘取一次資料,時間太慢,所以我設定2000個,讓采集卡每2000個資料觸發一下DateReady事件,我就在這個事件里把資料取回,一般是十幾ms時間,然后我再用單獨的執行緒每500ms取一個當前位置來計算速度,因為執行緒的不定時性,所以我用系統時間的時間差來做時基uj5u.com熱心網友回復:
資料采集、處理有專門的理論來描述。你描述的處理方法不甚詳細(可能處理機制不完善),另外 Windows 實時性較差,在 ms 級別上誤差比較大。可考慮使用 Stopwatch 來替換系統時間的計算差,這個精度高一些。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/21150.html
標籤:C#
