菜鳥0001
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 24 個(gè)
工控威望: 102 點(diǎn)
下載積分: 340 分
在線時(shí)間: 55(小時(shí))
注冊時(shí)間: 2023-09-05
最后登錄: 2025-02-20
查看菜鳥0001的 主題 / 回貼
樓主  發(fā)表于: 2024-03-17 13:50
絕對(duì)值伺服脈沖控制,大家是怎么用的,485讀出編碼器值換算成距離嗎
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊時(shí)間: 2020-09-05
最后登錄: 2025-01-27
查看沖出槍林彈雨的 主題 / 回貼
1樓  發(fā)表于: 2024-03-18 22:46
引用
引用樓主菜鳥0001于2024-03-17 13:50發(fā)表的 絕對(duì)值伺服用法 :
絕對(duì)值伺服脈沖控制,大家是怎么用的,485讀出編碼器值換算成距離嗎


這個(gè)要看看驅(qū)動(dòng)器的寄存器是哪一種,有的是直接給出脈沖總數(shù),有的是分多圈和單圈;樓上的說了脈沖總數(shù)的,下面是另一種:485實(shí)時(shí)讀多圈和單圈寄存器數(shù)據(jù);多圈寄存器是電機(jī)轉(zhuǎn)一圈 +1;單圈寄存器就是編碼器硬件精度,比如23位編碼器就是8388608個(gè)脈沖;實(shí)際位置就是 = 多圈寄存器*電機(jī)轉(zhuǎn)一圈的位移距離 + { (當(dāng)前單圈寄存器 - 設(shè)定原點(diǎn)時(shí)的單圈寄存器)  / 8388608 }*電機(jī)轉(zhuǎn)一圈的位移距離
程序上注意點(diǎn)一個(gè)是要有個(gè)設(shè)原點(diǎn)的按鈕,就是獲取當(dāng)前單圈寄存器當(dāng)做原點(diǎn)單圈寄存器數(shù);另一個(gè)就是通訊延時(shí)的問題,電機(jī)速度為0后的100ms以上數(shù)據(jù)再保存,位置會(huì)比較準(zhǔn)
技術(shù)交流vx: Electric973
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊時(shí)間: 2020-09-05
最后登錄: 2025-01-27
查看沖出槍林彈雨的 主題 / 回貼
2樓  發(fā)表于: 2024-03-18 22:51
引用
引用第9樓沖出槍林彈雨于2024-03-18 22:46發(fā)表的  :


這個(gè)要看看驅(qū)動(dòng)器的寄存器是哪一種,有的是直接給出脈沖總數(shù),有的是分多圈和單圈;樓上的說了脈沖總數(shù)的,下面是另一種:485實(shí)時(shí)讀多圈和單圈寄存器數(shù)據(jù);多圈寄存器是電機(jī)轉(zhuǎn)一圈 +1;單圈寄存器就是編碼器硬件精度,比如23位編碼器就是8388608個(gè)脈沖;實(shí)際位置就是 = 多圈寄存器*電機(jī)轉(zhuǎn)一圈的位移距離 + { (當(dāng)前單圈寄存器 - 設(shè)定原點(diǎn)時(shí)的單圈寄存器)  / 8388608 }*電機(jī)轉(zhuǎn)一圈的位移距離
程序上注意點(diǎn)一個(gè)是要有個(gè)設(shè)原點(diǎn)的按鈕,就是獲取當(dāng)前單圈寄存器當(dāng)做原點(diǎn)單圈寄存器數(shù);另一個(gè)就是通訊延時(shí)的問題,電機(jī)速度為0后的100ms以上數(shù)據(jù)再保存,位置會(huì)比較準(zhǔn)


當(dāng)然了,也可以直接把總數(shù)設(shè)置為原點(diǎn)位置,以下供參考:
PROGRAM Main  VAR      MultiTurnValue : INT;    // 多圈寄存器的值      SingleTurnValue : INT;    // 單圈寄存器的值      AbsolutePosition : INT;   // 絕對(duì)位置值      MaxSingleTurnValue : INT := 8388608; // 23位編碼器單圈最大值為8388608   END_VAR   // 計(jì)算絕對(duì)位置  // 絕對(duì)位置是多圈值乘以單圈的最大值加上單圈值  AbsolutePosition := (MultiTurnValue * MaxSingleTurnValue) + SingleTurnValue;   END_PROGRAM
技術(shù)交流vx: Electric973