何亞福 許 齊 姜子鵬
1.問題的提出
絕對值型編碼器測量范圍是從零到最大脈沖數(shù),脈沖數(shù)恒為正數(shù),正轉(zhuǎn)為當(dāng)前脈沖遞加,反轉(zhuǎn)為當(dāng)前脈沖遞減,斷電后重新上電,可保持?jǐn)嚯娗暗拿}沖數(shù)。增量型編碼器斷電后重新上電,當(dāng)前脈沖數(shù)歸零,正轉(zhuǎn)為正數(shù)脈沖遞增,反轉(zhuǎn)為負(fù)數(shù)脈沖遞減。
目前壓力機(jī)裝模高度調(diào)整等部件多采用絕對值型編碼器,總線通信控制方式,根據(jù)編碼器旋轉(zhuǎn)時(shí)脈沖數(shù)的變化測量編碼器旋轉(zhuǎn)位置,通過相關(guān)傳動軸,測量滑塊等部件位置的變化。但實(shí)際生產(chǎn)特別是設(shè)備改造過程中,有些舊PLC CPU不支持通信模塊,同時(shí)考慮到生產(chǎn)成本,有時(shí)需要增量型編碼器實(shí)現(xiàn)絕對值型編碼器的功能,下面通過實(shí)例,介紹實(shí)現(xiàn)過程。
2.實(shí)現(xiàn)方法
以O(shè)MRON C200HG CPU為例(圖1),C200H-CT021具有CH1和 CH2兩個(gè)高速計(jì)數(shù)通道,將模塊的地址單元號MACHINE NO.撥碼為1,則CH1地址為112,CH2地址為114;若將模式選擇MODE撥碼為0,則C200H-CT021工作方式設(shè)置為簡單計(jì)數(shù)模式。本例將編碼器接入CH1通道,地址112。
(1)系統(tǒng)斷電后重新上電,增量型編碼器當(dāng)前脈沖數(shù)歸零,此時(shí)若編碼器正轉(zhuǎn),編碼器當(dāng)前脈沖就會從零開始正數(shù)累積增加計(jì)數(shù),反轉(zhuǎn)則出現(xiàn)負(fù)脈沖,編碼器當(dāng)前脈沖就會從零開始負(fù)數(shù)累積遞減計(jì)數(shù)。編碼器脈沖讀取地址112內(nèi)脈沖從0遞增,地址113內(nèi)數(shù)值為F000,最高位F代表負(fù)數(shù)。由于C200HG等CPU不能運(yùn)算負(fù)數(shù),因此要消除負(fù)脈沖里的負(fù)數(shù)。先將編碼器脈沖讀取地址112、113內(nèi)的數(shù)據(jù)分別傳送到中間存儲區(qū)DM102、DM103,出現(xiàn)負(fù)脈沖時(shí),如果用FFF與DM103中的F000相“邏輯與”,DM103中就變?yōu)?000,即消除了負(fù)數(shù)的負(fù)符號。程序見圖2,斷電后重新上電時(shí),這時(shí)如果編碼器反轉(zhuǎn),出現(xiàn)負(fù)脈沖,地址位113.15狀態(tài)為ON,通過ANDW字邏輯與指令,將DM103和#FFF相“邏輯與”后,去除DM103內(nèi)負(fù)值位F。
(2)再編寫程序分別運(yùn)算處理正轉(zhuǎn)時(shí)出現(xiàn)的正脈沖和反轉(zhuǎn)時(shí)出現(xiàn)的負(fù)脈沖(圖3)。系統(tǒng)重新上電時(shí),編碼器的脈沖復(fù)位為零,當(dāng)編碼器正轉(zhuǎn)出現(xiàn)正脈沖,地址位113.15狀態(tài)為OFF,用斷電前的脈沖數(shù)HR55加上編碼器正轉(zhuǎn)時(shí)出現(xiàn)的正脈沖數(shù)DM102,將結(jié)果值放進(jìn)保存寄存器HR50。當(dāng)編碼器反轉(zhuǎn)出現(xiàn)負(fù)脈沖時(shí),地址位113.15狀態(tài)為ON,用斷電前的脈沖數(shù)HR55減去編碼器反轉(zhuǎn)時(shí)出現(xiàn)的負(fù)脈沖數(shù)DM102,將結(jié)果值放進(jìn)保持寄存器HR50。HR50中的脈沖數(shù)就是用到的系統(tǒng)當(dāng)前脈沖數(shù)。
(3)編寫程序(圖4),每次系統(tǒng)重新上電時(shí),使用第一次循環(huán)標(biāo)志指令,將斷電前系統(tǒng)的脈沖數(shù)HR50傳送給HR55,實(shí)現(xiàn)編碼器的斷電保持功能。
經(jīng)過上述編程處理,該增量型編碼器可作為絕對值型編碼器使用,無論系統(tǒng)是否斷電,保持寄存器HR50中始終保持系統(tǒng)的當(dāng)前脈沖,讀取地址HR50就可進(jìn)行各種邏輯運(yùn)算。