cyh1986
級別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 367 個(gè)
工控威望: 738 點(diǎn)
下載積分: 722 分
在線時(shí)間: 298(小時(shí))
注冊時(shí)間: 2009-04-28
最后登錄: 2024-11-10
查看cyh1986的 主題 / 回貼
樓主  發(fā)表于: 2017-12-21 18:32
以前使用三菱的時(shí)候,直接讀取C251的數(shù)值,然后換成成距離。C251過零之后應(yīng)該是繼續(xù)減計(jì)數(shù)變成負(fù)值。現(xiàn)在手頭有個(gè)工控板,防三菱的那種。他的C251是循環(huán)計(jì)數(shù)的,當(dāng)C251超過65535的時(shí),又繼續(xù)從0開始計(jì)數(shù)。當(dāng)減計(jì)數(shù)超過0的時(shí)候,在繼續(xù)從65535開始減計(jì)數(shù)。編碼器是增量編碼器
請問大家這個(gè)在編程時(shí)怎么處理呢?
以前用過絕對值編碼,感覺意思上差不多。之前用的是單圈的絕對值編碼器,在做多圈用的時(shí)候,比較麻煩,后來是找的某一個(gè)點(diǎn),判斷是正過圈還是反過圈,然后設(shè)置一個(gè)圈數(shù),最后來計(jì)算距離的。感覺好麻煩,不知道大家只怎么處理這種的。
jum1982
級別: 家園常客
精華主題: 1 篇
發(fā)帖數(shù)量: 197 個(gè)
工控威望: 753 點(diǎn)
下載積分: 695 分
在線時(shí)間: 111(小時(shí))
注冊時(shí)間: 2014-02-12
最后登錄: 2024-11-12
查看jum1982的 主題 / 回貼
1樓  發(fā)表于: 2017-12-22 08:56





1421448580
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 227 個(gè)
工控威望: 331 點(diǎn)
下載積分: 13346 分
在線時(shí)間: 857(小時(shí))
注冊時(shí)間: 2015-10-10
最后登錄: 2024-11-13
查看1421448580的 主題 / 回貼
2樓  發(fā)表于: 2017-12-22 19:41
說一個(gè)思路:
高速記數(shù)轉(zhuǎn)移到一個(gè)寄存器,然后除以一個(gè)數(shù)字(或者直接用原始數(shù)據(jù)),確保這個(gè)商值在PLC的每個(gè)運(yùn)行周期間的變化不會太大,然后取相鄰周期商值
變化 類似求導(dǎo) 如果結(jié)果是負(fù)值,位置直接減這個(gè)負(fù)值表示的距離 得到當(dāng)前位置,如果結(jié)果是相當(dāng)大的一個(gè)正數(shù) 那么 也是反轉(zhuǎn)
直接把這個(gè)正數(shù)減一個(gè)寄存器里可能的最大值 得到一個(gè)負(fù)數(shù),當(dāng)前位置減這個(gè)負(fù)數(shù)表示的距離為當(dāng)前位置。
類似有正轉(zhuǎn)的的判斷和處理
旋轉(zhuǎn)編碼器
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 177 個(gè)
工控威望: 300 點(diǎn)
下載積分: 1286 分
在線時(shí)間: 31(小時(shí))
注冊時(shí)間: 2016-12-22
最后登錄: 2024-11-13
查看旋轉(zhuǎn)編碼器的 主題 / 回貼
3樓  發(fā)表于: 2017-12-25 09:31
直接用多圈絕對值編碼器測距離
旋轉(zhuǎn)編碼器