我打算控制一個電機的位置,但反饋補償部分我不太會,求大神指導
我的要求是:我給電機設定一個值a,但電機運行后,我用傳感器檢測為b(a不等于b),由于存在偏差,我希望通程序式就行糾正,知道電機運行的值等于設定值a
uj5u.com熱心網友回復:
ctrl<------->motora0------------>|
|<----------- b0
a1 = a0-b0---> |
|<----------- b1
a2=a1-b1-----> |
一般反饋控制,大概就是這個樣子。
多退少補而已。
uj5u.com熱心網友回復:
謝謝,whales大神,如果能用VB表現出來就更好了uj5u.com熱心網友回復:
樓主想要表達的意思是,給電機10000個脈沖,理論上電機應該運動到A點停止,但是,由于步進電機運動存在脈沖丟失的情況,所以,通常情況下,10000個脈沖,電機只能運行到B點(B點比A點距起始點近)。是否是這個意思?如果是這個意思,最好的辦法就是在電機的轉軸上加一個編碼器,用它來檢測脈沖數,也就是說,電機轉一圈如果必須1000個脈沖的話,編碼器就肯定計數為1000,但發出的控制脈沖肯定是大于等于1000的。
從設計思路上說,你的這個問題應該不是程式的問題,而是電氣設計的問題,增加一個檢測回饋裝置,問題將很容易堅決。
uj5u.com熱心網友回復:
具體的辦法就是給電機發送一個很大的驅動脈沖,使電機運動,用編碼器計數電機運動程序中實際有效的脈沖數,當脈沖數到達想要控制的脈沖數后(也就是電機運動到了要到的位置),立馬停止給電機發送的驅動脈沖。uj5u.com熱心網友回復:
@貝隆 :1、對于你說到的這個問題,電機的檢測一般是用Timer回圈掃描的,為了能實時顯示(看的清楚),一般時間比較長,如果電機轉速高的話,會超過設定值的。
2、我的其實是想做成類似于數控機床那樣的設備,電機這邊有500線的編碼器,精度可以滿足,但是那個負載由于傳動齒輪間隙什么的,不一定在電機達到位置時,能夠達到想要的位置。所以才需要進行那種反饋的
uj5u.com熱心網友回復:
這種事情通常由下位機來做的,上位機通常把任務或階段性任務傳給下位機后,就不用管控制那一塊了,最多做個狀態回顯,實時采集與精度控制該由下位機來做,這樣才能保證精度。uj5u.com熱心網友回復:
以我的經驗來看,樓主的想法是無法實作的。通常控制電機都是用脈沖輸出辦卡或這PLC模塊來控制。至于編碼器的讀數也是如此。PC想要跟上這個速度,是不現實的。uj5u.com熱心網友回復:
@貝隆電機是私服電機,有私服驅動器作為下位機,進行驅動控制。我用VB主要是檢測外部負載的位置,根據外部負載的實際位置和設定位置的差值來繼續控制電機運行。把上一步的差值加到下一次的電機運行中
uj5u.com熱心網友回復:
這都是自動化控制的設計問題. 跟VB有啥關系?關鍵是你自己得了解這個倍訓控制的邏輯流程, 至于反饋補償量, 可以慢慢調節.直到合適為止.
uj5u.com熱心網友回復:
樓主的這些問題都是伺服電機完成的,對于上位機而言,也就是發一個命令,告訴脈沖輸出單元(或者模塊,或者板卡)發脈沖和控制信號就是。說白了,上位機的作業原理是不可能實作你的要求。建議樓主可以了解以下伺服電機的作業原理,你只要明白了伺服電機的作業原理,我想你的問題就不是問題了。此外伺服電機驅動器本來就是帶有脈沖信號回饋的,我前面所說的編碼器就不需要了。現在的伺服電機做得很強大,這些功能都是很基本的功能。原理也是很簡單的。
還有一種方法,如果你的電機每次都是運動到同一個指定位置停止,那么建議你在這個位置安裝一個光電開關用于定位,每次當電機運行到這個位置就停止發脈沖即可,就不需要脈沖回饋補償什么的了。
uj5u.com熱心網友回復:
+1
uj5u.com熱心網友回復:
@妞妞他爹這個問題有見解,謝謝哈
uj5u.com熱心網友回復:
@貝隆 人類有機會給你們講講數控機床的知識。光電開關就是一個繼電器而已,它只是切斷電源,高度電機就算切斷電源,在大的轉動慣量下還是會運行一會兒的。不是立馬就停的。
感謝你們為我提供的建議,謝謝哈
uj5u.com熱心網友回復:
數控機床不單是什么軟體或電子電路的問題,還有機械問題,還有,如果要加光電開關,肯定要在機械設計上考慮過緩沖速度放在合適的位置,不是亂放的。而且,在處理電機停轉的程序中,不是停止供電就完事的,而是要進行反轉或電磁拉緊的操作。這樣才會減少緩沖造成的問題。所以,這種問題不是單純從軟體考慮的,還要沖電子、機械進行整體設計的。當然,如果你沒有條件在硬體上加剎車系統,就只有靠軟體來解決這種誤差,不過相對來說,精度總是不夠的。
uj5u.com熱心網友回復:
光電開關,不是繼電器,準確的說它是一個提供DI信號的器件。此外就你說的電機轉動慣性的問題,這其實很容易解決,而且在實際的作業中我也經常處理這樣的問題。解釋如下:
你給伺服電機驅動器一個很高頻率的脈沖,那么伺服電機就將以很高的速度運行,當你的電機以最高速度運動一定脈沖數時(這個脈沖數可以在除錯的程序中定,比如總的脈沖數的90%,或者運動到距離光電開關合適的距離是的脈沖數),你就減小脈沖的輸出頻率,降低頻率后,電機的運動速度就會減慢,慢到你認為合適的速度(這個速度你可通過除錯獲取),慢速運動到光電開關的位置,電機很容易就停止運行了,根本沒有你所說的慣性問題。
PS:無論是脈沖輸出卡還是PLC模塊,都是有加速或者減速的函式的,也就是說,電機速度增加和降低都不是臺階式的,而是有上升或下降曲線的。這個你可具體去參閱資料。
uj5u.com熱心網友回復:
多一句嘴,脈沖數的多少,決定了你的工件運行的距離遠近。uj5u.com熱心網友回復:
提醒:小心慷訓誤差。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/144963.html
標籤:VB基礎類
上一篇:程式運行出錯winocc.cpp
