旋轉增量值編碼器
旋轉增量值編碼器以轉動時輸出脈沖, 通過計數設備來計算其位置, 當編碼器不動或停電時, 依靠計數設備的內部記憶來記住位置。這樣,當停電后,編碼器不能有任何的移動,當來電工作時,編碼器輸出脈沖過程中,也不能有干擾而丟失脈沖,不然,計數設備計算並記憶的零點就會偏移, 而且這種偏移的量是無從知道的, 只有錯誤的生產結果出現后才能知道。
解決的方法是增加參考點, 編碼器每經過參考點, 將參考位置修正進計數設備的記憶位置。在參考點以前, 是不能保證位置的准確性的。為此,在工控中就有每次操作先找參考點,開機找零等方法。
這樣的方法對有些工控項目比較麻煩, 甚至不允許開機找零(開機后就要知道准確位置),於是就有了絕對編碼器的出現。絕對編碼器光碼盤上有許多道光通道刻線,每道刻線依次以2 線、4 線、8 線、16線。。。。。。編排,這樣,在編碼器的每一個位置,通過讀取每道刻線的通、暗,獲得一組從2 的零次方到2 的n-1 次方的唯一的2 進制編碼(格雷碼),這就稱為n 位絕對編碼器。這樣的編碼器是由光電碼盤的機械位置決定的,它不受停電、干擾的影響。絕對編碼器由機械位置決定的每個位置是唯一的, 它無需記憶, 無需找參考點, 而且不用一直計數, 什么時候需要知道位置, 什么時候就去讀取它的位置。這樣,編碼器的抗干擾特性、數據的可靠性大大提高了。

旋轉單圈絕對值編碼器, 以轉動中測量光電碼盤各道刻線, 以獲取唯一的編碼, 當轉動超過360 度時,編碼又回到原點, 這樣就不符合絕對編碼唯一的原則, 這樣的編碼只能用於旋轉范圍360 度以內的測量,稱為單圈絕對值編碼器。如果要測量旋轉超過360 度范圍,就要用到多圈絕對值編碼器。編碼器生產廠家運用鍾表齒輪機械的原理, 當中心碼盤旋轉時, 通過齒輪傳動另一組碼盤(或多組齒輪,多組碼盤) ,在單圈編碼的基礎上再增加圈數的編碼,以擴大編碼器的測量范圍, 這樣的絕對編碼器就稱為多圈式絕對編碼器, 它同樣是由機械位置確定編碼,每個位置編碼唯一不重復,而無需記憶。多圈編碼器另一個優點是由於測量范圍大,實際使用往往富裕較多, 這樣在安裝時不必要費勁找零點, 將某一中間位置作為起始點就可以了,而大大簡化了安裝調試難度。
絕對值編碼器長度測量的應用
一.絕對值旋轉編碼器的機械安裝:
絕對值旋轉編碼器的機械安裝有高速端安裝、低速端安裝、輔助機械裝置安裝等多種形式。

1.高速端安裝:
安裝於動力馬達轉軸端(或齒輪連接) ,此方法優點是分辨率高,由於多圈編碼器有4096圈, 馬達轉動圈數在此量程范圍內, 可充分用足量程而提高分辨率, 缺點是運動物體通過減速齒輪后, 來回程有齒輪間隙誤差, 一般用於單向控制定位。另外編碼器直接安裝於高速端, 馬達抖動須較小, 不然易損壞編碼器。
2.低速端安裝:

安裝於減速齒輪后, 如卷揚鋼絲繩卷筒的軸端或最后一節減速齒輪軸端, 此方法已無齒輪來回程間隙,測量較直接,精度較高。另外, GPMV0814 機械轉數為90 圈,用此方法較合理,如果卷筒轉數超過90 圈,可用1:3 或1:4 齒輪組調整至轉數測量范圍內。
3.輔助機械安裝,收繩機械安裝:

收繩機械有彈簧自收繩位移傳感器――柔性鋼絲繩連接運動物體, 鋼絲繩盤緊在一個測量輪上,依靠恆力彈簧回收鋼絲繩。編碼器連接於盤緊測量輪軸端, 測量鋼絲繩來回運動的旋轉角度。
重錘重力收繩:
重錘浮子水位測量示意圖



二.絕對值編碼器的信號輸出
絕對值編碼器信號輸出有並行輸出、串行輸出、總線型輸出、變送一體型輸出
1.並行輸出:
絕對值編碼器輸出的是多位數碼(格雷碼或純二進制碼) ,並行輸出就是在接口上有多點高低電平輸出,以代表數碼的1 或0,對於位數不高的絕對編碼器,一般就直接以此形式輸出數碼,可直接進入PLC 或上位機的I/O 接口,輸出即時,連接簡單。但是並行輸出有如下問題:
a.必須是格雷碼, 因為如是純二進制碼, 在數據刷新時可能有多位變化, 讀數會在短時間里造成錯碼。
b.所有接口必須確保連接好,因為如有個別連接不良點,該點電位始終是0,造成錯碼而無法判斷。
c.傳輸距離不能遠,一般在一兩米,對於復雜環境,最好有隔離。
d.對於位數較多,要許多芯電纜,並要確保連接優良,由此帶來工程難度,同樣,對於編碼器,要同時有許多節點輸出,增加編碼器的故障損壞率。
2.串行SSI 輸出:
串行輸出就是通過約定, 在時間上有先后的數據輸出, 這種約定稱為通訊規約,其連接的物理形式有RS232、RS422(TTL)、RS485 等。由於絕對值編碼器好的廠家都是在德國, 所以串行輸出大部分是與德國的西門子配套的,如SSI 同步串行輸出。

3.現場總線型輸出
現場總線型編碼器是多個編碼器各以一對信號線連接在一起,通過設定地址,用通訊方式傳輸信號,信號的接收設備只需一個接口,就可以讀多個編碼器信號。總線型編碼器信號遵循RS485 的物理格式, 其信號的編排方式稱為通訊規約,目前全世界有多個通訊規約, 各有優點, 還未統一, 編碼器常用的通訊規約有如下幾種:PROFIBUS-DP; CAN; DeviceNet; Interbus 等總線型編碼器可以節省連接線纜、接收設備接口,傳輸距離遠,在多個編碼器集中控制的情況下還可以大大節省成本。
4.變送一體型輸出
我公司提供的GPMV0814、GPMV1016 絕對編碼器, 其信號已經在編碼器內換算后直接變送輸出,其有模擬量4—20mA 輸出、RS485數字輸出、14 位並行輸出。
三.連接絕對編碼器的電氣二次設備:
連接絕對值編碼器的設備可以是可編程控制器PLC、上位機,也可以是專用顯示信號轉換儀表,由儀表再輸出信號給PLC 或上位機。
1.直接進入PLC 或上位機:
編碼器如果是並行輸出的, 可以直接連接PLC 或上位機的輸入輸出接點I/O,其信號數學格式應該是格雷碼。編碼器有多少位就要占用PLC 的多少位接點, 如果是24 伏推挽式輸出,高電平有效為1,低電平為0;如果是集電極開路NPN 輸出,則連接的接點也必須是NPN 型的,其低電平有效,低電平為1。
2.編碼器如果是串行輸出的, 由於通訊協議的限制, 后接電氣設備必須有對應的接口。例如SSI 串行,可連接西門子的S7-300 系列的PLC,有SM338 等專用模塊, 或S7-400的FM451 等模塊,對於其他品牌的PLC,往往沒有專用模塊或有模塊也很貴。
3.編碼器如是總線型輸出,接受設備需配專用的總線模塊,例如PROFIBUS-DP。但是,如選擇總線型輸出編碼器,在編碼器與接收設備PLC 中間,就無法加入其他顯示儀表,如需現場顯示,就要從PLC 再轉出信號給與信號匹配的顯示儀表。有些協議自定義的RS485 輸出信號進PLC 的RS485 接口,需PLC 具有智能編程功能。
4.連接專用顯示轉換儀表:針對較多使用的SSI 串行輸出編碼器, 我公司提供專用的顯示、信號轉換儀表, 由儀表進行內部解碼、計算、顯示、信號轉換輸出,再連接PLC 或上位機。其優點如下:
a.現場可以有直觀的顯示,直接在儀表上設置參數。
b.專用程序讀碼解碼、容錯、內部計算,可以大大減少各個項目的編程工作量,提高穩定和可靠性。信號輸出是由內部數字量直接計算,快速、准確。
c.信號輸出有多種形式,靈活方便,后面可連接各種PLC 或上位機,通用性強。

GPMV0814、GPMV1016 三位一體型GPMV0814 絕對多圈編碼器,其光電碼盤讀碼解碼、顯示設定、信號轉換三位一體,輸出4—20mA 模擬量、並行數字量RS485 通訊可同時輸出, 連接各類PLC 和上位機。一般的應用,可選同時兩組輸出型,一組信號連接PLC,另一組連接顯示儀表,如需要增加開關輸出,可從顯示儀表設定輸出。
S7-300沒有現成的轉換功能塊, 我使用了富士的SPH 編寫了一個功能塊,由於富士的和西門子都支持IEC61131-3 編程規范,那么應該很簡單的轉換為西門子的功能塊。在精確定位控制系統中,為了提高控制精度,准確測量控制對象的位置是十分重要的。目前, 測量位置的方法主要有2 種,其一是使用位置傳感器,此方法精度高,但是在多路,長距離位置監控系統中,由於成本昂貴且安裝困難,因此並不實用。其二是采用光電軸角編碼器進行精確位置控制,光電軸角編碼器根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。而絕對式編碼器是直接輸出數字量的傳感器,它是利用自然二進制或循環二進制(格雷碼)方式進行光電轉換的,編碼的設計一般是采用自然二進制碼、循環二進制碼、二進制補碼等。特點是不要計數器,在轉軸的任意位置都可讀出一個固定的與位置相對應的數字碼;抗干擾能力強,沒用累積誤差;電源切斷后位置信息不會丟失, 但分辨率是由二進制的位數決定的, 根據不同的精度要求,可以選擇不同的分辨率即位數。目前有10 位、11 位、12 位、13 位、14 位或更高位等多種。其中采用循環二進制編碼(即格雷碼) 的絕對式編碼器,其輸出信號是一種數字排序,不是權重碼,每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他信號,要經過一次碼變換,變成自然二進制碼,在由上位機讀取以實現相應的控制。而在碼制變換中有不同的處理方式,本文着重介紹富士SX 系列中使用編程的方法對二進制格雷碼與自然二進制碼的互換。
A、格雷碼(又叫循環二進制碼或反射二進制碼)
介紹在數字系統中只能識別0 和1,各種數據要轉換為二進制代碼才能進行處理,格雷碼是一種無權碼,采用絕對編碼方式,典型格雷碼是一種具有反射特性和循環特性的單步自補碼,它的循環、單步特性消除了隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反非常方便。格雷碼屬於可靠性編碼,是一種錯誤最小化的編碼方式,因為,自然二進制碼可以直接由數/模轉換器轉換成模擬信號,但某些情況,例如從十進制的3 轉換成4 時二進制碼的每一位都要變,使數字電路產生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點,它是一種數字排序系統,其中的所有相鄰整數在它們的數字表示中只有一個數字不同。它在任意兩個相鄰的數之間轉換時,只有一個數位發生變化。它大大地減少了由一個狀態到下一個狀態時邏輯的混淆。另外由於最大數與最小數之間也僅一個數不同,故通常又叫格雷反射碼或循環碼。下表為幾種自然二進制碼與格雷碼的對照表:

B、二進制格雷碼與自然二進制碼的互換
1、自然二進制碼轉換成二進制格雷碼
自然二進制碼轉換成二進制格雷碼,其法則是保留自然二進制碼的最高位作為格雷碼的最高位, 而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。
例如:
自然二進制編碼如下:
1
0
0
1
那么轉換為格雷碼的方法是:保留最高位1,然后將第二位0 與第一位1做異或操作,第三位的0 與第二位的0 做異或操作,第四位的1 與第三位的0 做異或操作,得到結果如下:
1 1 0 1 Gray
2、二進制格雷碼轉換成自然二進制碼
二進制格雷碼轉換成自然二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。
例如將格雷碼1000 轉換為自然二進制碼:
1
0
0
0
1
1
1
1
上排為格雷碼,下排為自然二進制,從左到右分別為1~4 位將上排的第一位高位作為自然二進制的最高位,因此在下排的第一位填入1,然后以上排第二位與下排第一位做異或操作, 得到下排第二位結果為1,將上排第三位與下排第二位做異或操作,得到下排第三位的結果為1,同理,下排第四位的結果為1,因此,我們得到了轉換結果如下:1 1 1 1 Bin
C、自然二進制碼與格雷碼互換在富士SX 系列PLC 中的實現方法:
1. 自然二進制碼轉換為格雷碼:
根據自然二進制碼轉換為格雷碼的轉換規則,實際上就是將轉換數右移一位后與轉換數做異或操作。程序流程圖如下:
保存輸入數 TEMP;將TEMP 右移一位,保存SHILETEMP;將移位后的數據與原數據作異或;返回異或后的數據
功能塊中的程序如下:
INPUT 輸入變量類型為DWORD
TEMP 局部變量類型為DWORD
SHILETEMP 局部變量類型為DWORD
BIN_TO_GRAY 功能塊返回變量返回類型為DWORD
BIN_TO_GRAY:
TEMP:=INPUT;
SHILETEMP:=SHR_DWORD(TEMP,UNIT#1);
BIN_TO_GRAY:=SHILETEMP XOR INPUT;
2. 格雷碼轉換為自然二進制碼
根據格雷碼轉換為自然二進制碼的轉換規則,實際上就是不斷的將格雷碼與二進制數做異或操作, 也就是說, 不斷的和本身的不同位數做異或操作,如原數據為32 位的A,那么先將A 向右移動一位,與本身進行異或,然后保留值為B,那么繼續將A 向右移動一位,與B 進行異或,保留為C,依次類推,直到A=1 為止。程序流程圖如下:
保存輸入數 TEMP,INPUT1;如果輸入數為0,那么直接返回數據0 后退出;如果TEMP 不等於1,那么循環,否則返回數據;TEMP 右移1 位,與輸入值作不斷異或
功能塊中的程序如下:
INPUT 輸入變量類型為DWORD
TEMP 局部變量類型為DWORD
INPUT1 局部變量類型為DWORD
GRAY_TO_BIN 功能塊返回變量返回類型為DWORD
GRAY_TO_BIN:
TEMP:=INPUT;
INPUT1:=INPUT;
IF TEMP=DWORD#0 THEN
INPUT1:=DWORD#0;
GRAY_TO_BIN:=INPUT1;
RETURN;
END_IF;
WHILE TEMP<>DWORD#1 DO
TEMP:=SHR_DWORD(TEMP,UINT#1);
INPUT1:=TEMP XOR INPUT1;
END_WHILE;
GRAY_TO_BIN:=INPUT1;
上述代碼在富士的SX 系列PLC 中試驗沒有問題,由於富士的SX 系列PLC
完全支持ST 代碼方式的編程,因此基本上可以不做修改的應用在西門子
的S7 系列的PLC 中。
由於三菱的PLC 中已經包含了自然二進制碼轉換為格雷碼指令GRY 以及
格雷碼轉換為自然二進制碼指令GBIN ,因此上述代碼應用於三菱系列的
PLC 已經沒有意義, 請使用三菱PLC 本身附帶的指令, 因為西門子以及富
士的SX 系列PLC 並沒有附帶轉換指令,因此本人書寫了上述代碼用於補
充SX 系列的指令不足。
摘自百度文庫:https://wenku.baidu.com/view/80f5b701b52acfc789ebc936.html?sxts=1589357025172
