cyh1986
級別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 370 個
工控威望: 744 點(diǎn)
下載積分: 737 分
在線時間: 302(小時)
注冊時間: 2009-04-28
最后登錄: 2024-12-17
查看cyh1986的 主題 / 回貼
樓主  發(fā)表于: 2017-12-21 18:32
以前使用三菱的時候,直接讀取C251的數(shù)值,然后換成成距離。C251過零之后應(yīng)該是繼續(xù)減計(jì)數(shù)變成負(fù)值,F(xiàn)在手頭有個工控板,防三菱的那種。他的C251是循環(huán)計(jì)數(shù)的,當(dāng)C251超過65535的時,又繼續(xù)從0開始計(jì)數(shù)。當(dāng)減計(jì)數(shù)超過0的時候,在繼續(xù)從65535開始減計(jì)數(shù)。編碼器是增量編碼器
請問大家這個在編程時怎么處理呢?
以前用過絕對值編碼,感覺意思上差不多。之前用的是單圈的絕對值編碼器,在做多圈用的時候,比較麻煩,后來是找的某一個點(diǎn),判斷是正過圈還是反過圈,然后設(shè)置一個圈數(shù),最后來計(jì)算距離的。感覺好麻煩,不知道大家只怎么處理這種的。
1421448580
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 229 個
工控威望: 333 點(diǎn)
下載積分: 13350 分
在線時間: 877(小時)
注冊時間: 2015-10-10
最后登錄: 2025-01-01
查看1421448580的 主題 / 回貼
1樓  發(fā)表于: 2017-12-22 19:41
說一個思路:
高速記數(shù)轉(zhuǎn)移到一個寄存器,然后除以一個數(shù)字(或者直接用原始數(shù)據(jù)),確保這個商值在PLC的每個運(yùn)行周期間的變化不會太大,然后取相鄰周期商值
變化 類似求導(dǎo) 如果結(jié)果是負(fù)值,位置直接減這個負(fù)值表示的距離 得到當(dāng)前位置,如果結(jié)果是相當(dāng)大的一個正數(shù) 那么 也是反轉(zhuǎn)
直接把這個正數(shù)減一個寄存器里可能的最大值 得到一個負(fù)數(shù),當(dāng)前位置減這個負(fù)數(shù)表示的距離為當(dāng)前位置。
類似有正轉(zhuǎn)的的判斷和處理