zhangjialin6
看你的下面
級別: 探索解密
|
上電,讀取編碼器當前位置,寫到PLC脈沖軸的當前位置特殊寄存器,如三菱FX3U的d8340 |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網絡英雄
|
有的伺服可以直接讀取位置,計算成脈沖就行,有的需要計算多圈值和單圈值,然后再換算到脈沖 |
|
---|---|---|
|
金蛇郎君czz
車到山前必有路 czz674613079@163.com
級別: 網絡英雄
|
學習學習 |
|
---|---|---|
|
lijinniu
級別: 工控俠客
|
寫了一個絕對控制的程序,實測過。用的是絕對脈沖控制的伺服電機 |
---|---|
本帖最近評分記錄: |
不知道叫啥啊
不恥下問
級別: 略有小成
|
感謝分享 |
---|---|
|
皮五
級別: 工控俠客
|
plc發送1脈沖=0.01mm, 計算并設置好驅動器的分子分母, 讀取驅動器的編碼器應該=plc已發送脈沖 |
---|---|
|
菜鳥學工控_1
級別: 工控俠客
|
復議2樓,絕對值伺服就選用總線伺服,發脈沖的PLC,還搞個絕對值的伺服,我覺得是給自己找不自在 |
---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
這個要看看驅動器的寄存器是哪一種,有的是直接給出脈沖總數,有的是分多圈和單圈;樓上的說了脈沖總數的,下面是另一種:485實時讀多圈和單圈寄存器數據;多圈寄存器是電機轉一圈 +1;單圈寄存器就是編碼器硬件精度,比如23位編碼器就是8388608個脈沖;實際位置就是 = 多圈寄存器*電機轉一圈的位移距離 + { (當前單圈寄存器 - 設定原點時的單圈寄存器) / 8388608 }*電機轉一圈的位移距離 程序上注意點一個是要有個設原點的按鈕,就是獲取當前單圈寄存器當做原點單圈寄存器數;另一個就是通訊延時的問題,電機速度為0后的100ms以上數據再保存,位置會比較準 |
|
---|---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
當然了,也可以直接把總數設置為原點位置,以下供參考: PROGRAM Main VAR MultiTurnValue : INT; // 多圈寄存器的值 SingleTurnValue : INT; // 單圈寄存器的值 AbsolutePosition : INT; // 絕對位置值 MaxSingleTurnValue : INT := 8388608; // 23位編碼器單圈最大值為8388608 END_VAR // 計算絕對位置 // 絕對位置是多圈值乘以單圈的最大值加上單圈值 AbsolutePosition := (MultiTurnValue * MaxSingleTurnValue) + SingleTurnValue; END_PROGRAM |
|
---|---|---|
|