我想要推導出一種算法,該算法將允許我計算圓周運動中的角位移。這是一個我正在編程的物理設備,所以我確實有0到2pi的當前角度位置的反饋。我附上了一張照片,可以幫助您瞭解我正在嘗試實現的內容(請參見下文)。每次處理器掃描程序時都會更新標籤,然後通過取得Theta2-Theta1來計算delta delta值,然後將其存儲到DeltaTheta標籤中。問題是,當我完成革命時,Theta 2變成了0,Theta 1仍然是3pi/2左右,因此我得到了比我應該更大的Delta Theta。每次角度達到2 pi標記時,它將重置爲零。我正在使用該程序在Rockwell CompactLogix PLC上實現傅立葉分析算法。對於您所關心的那些人,我使用「結構化文本」語言在RSLogix5000中進行編程。如果需要,請參閱本網站獲取有關該語言的手冊。 Structured Text 請參閱下面的示例代碼。計算圓周運動中的角度變化
ThetaOld = Theta;
Theta = SpindleActPosition; //This is feedback from the motor 0-2*pi
DeltaTheta = Theta2 - Theta1; //This is the "algorithm" I need help with
我也試過這個算法,但發現它不允許它工作的循環孔。
DeltaTheta = [(Theta2 - Theta1) + 2*pi] MOD(2*pi)
我相信MOD運營商將成爲我們的朋友,但我無法找到解決問題的辦法。
其餘的代碼真的無關緊要解決這個問題。不幸的是,這臺機器的性質,角度從12點鐘位置開始,然後順時針旋轉。我無法改變這一點。
保持DeltaTheta = Theta2-Theta1,然後實現這個條件? – Dustin11h3 2015-04-03 17:20:03
是的。只需將此添加到您的原始3行。 – stark 2015-04-03 17:21:03
謝謝@stark – Dustin11h3 2015-04-06 13:29:01