從增量值編碼器到絕對值編碼器
旋轉(zhuǎn)增量值編碼器以轉(zhuǎn)動時輸出脈沖,通過計數(shù)設(shè)備來計算其位置,當(dāng)編碼器不動或停電時,依靠計數(shù)設(shè)備的內(nèi)部記憶來記住位置。這樣,當(dāng)停電后,編碼器不能有任何的移動,當(dāng)來電工作時,編碼器輸出脈沖過程中,也不能有干擾而丟失脈沖,不然,計數(shù)設(shè)備計算并記憶的零點就會偏移,而且這種偏移的量是無從知道的,只有錯誤的生產(chǎn)結(jié)果出現(xiàn)后才能知道。
解決的方法是增加參考點,編碼器每經(jīng)過參考點,將參考位置修正進計數(shù)設(shè)備的記憶位置。在參考點以前,是不能保證位置的準(zhǔn)確性的。為此,在工控中就有每次操作先找參考點,開機找零等方法。
這樣的方法對有些工控項目比較麻煩,甚至不允許開機找零(開機后就要知道準(zhǔn)確位置),于是就有了絕對編碼器的出現(xiàn)。
絕對編碼器光碼盤上有許多道光通道刻線,每道刻線依次以2線、4線、8線、16線。。。。。。編排,這樣,在編碼器的每一個位置,通過讀取每道刻線的通、暗,獲得一組從2的零次方到2的n-1次方的唯一的2進制編碼(格雷碼),這就稱為n位絕對編碼器。這樣的編碼器是由光電碼盤的機械位置決定的,它不受停電、干擾的影響。
絕對編碼器由機械位置決定的每個位置是唯一的,它無需記憶,無需找參考點,而且不用一直計數(shù),什么時候需要知道位置,什么時候就去讀取它的位置。這樣,編碼器的抗干擾特性、數(shù)據(jù)的可靠性大大提高了。
從單圈絕對值編碼器到多圈絕對值編碼器
旋轉(zhuǎn)單圈絕對值編碼器,以轉(zhuǎn)動中測量光電碼盤各道刻線,以獲取唯一的編碼,當(dāng)轉(zhuǎn)動超過360度時,編碼又回到原點,這樣就不符合絕對編碼唯一的原則,這樣的編碼
只能用于旋轉(zhuǎn)范圍360度以內(nèi)的測量,稱為單圈絕對值編碼器。
如果要測量旋轉(zhuǎn)超過360度范圍,就要用到多圈絕對值編碼器。
編碼器生產(chǎn)廠家運用鐘表齒輪機械的原理,當(dāng)中心碼盤旋轉(zhuǎn)時,通過齒輪傳動另一組碼盤(或多組齒輪,多組碼盤),在單圈編碼的基礎(chǔ)上再增加圈數(shù)的編碼,以擴大編碼器的測量范圍,這樣的絕對編碼器就稱為多圈式絕對編碼器,它同樣是由機械位置確定編碼,每個位置編碼唯一不重復(fù),而無需記憶。
多圈編碼器另一個優(yōu)點是由于測量范圍大,實際使用往往富裕較多,這樣在安裝時不必要費勁找零點,將某一中間位置作為起始點就可以了,而大大簡化了安裝調(diào)試難度。
絕對值編碼器長度測量的應(yīng)用
一.絕對值旋轉(zhuǎn)編碼器的機械安裝:
絕對值旋轉(zhuǎn)編碼器的機械安裝有高速端安裝、低速端安裝、輔助機械裝置安裝等多種形式。
1. 高速端安裝:安裝于動力馬達轉(zhuǎn)軸端(或齒輪連接),此方法優(yōu)點是分辨率高,由于多圈編碼器有4096圈,馬達轉(zhuǎn)動圈數(shù)在此量程范圍內(nèi),可充分用足量程而提高分辨率,缺點是運動物體通過減速齒輪后,來回程有齒輪間隙誤差,一般用于單向控制定位。另外編碼器直接安裝于高速端,馬達抖動須較小,不然易損壞編碼器。
2. 低速端安裝:
安裝于減速齒輪后,如卷揚鋼絲繩卷筒的軸端或最后一節(jié)減速齒輪軸端,此方法已無齒輪來回程間隙,測量較直接,精度較高。
另外,GPMV0814機械轉(zhuǎn)數(shù)為90圈,用此方法較合理,如果卷筒轉(zhuǎn)數(shù)超過90圈,可用1:3或1:4齒輪組調(diào)整至轉(zhuǎn)數(shù)測量范圍內(nèi)。
3. 輔助機械安裝,收繩機械安裝:
鋼絲繩彈簧收緊器原理圖
|
1. 收拉鋼絲繩
2. 測量盤
3. 收緊彈簧輪1
4. 收緊彈簧輪2
5. 專用彈簧
6. 彈性聯(lián)軸器
7. 編碼器
|
用鋼絲繩收繩器測量
油缸行程示意圖
|
收繩機械有彈簧自收繩位移傳感器――柔性鋼絲繩連接運動物體,鋼絲繩盤緊在一個測量輪上,依靠恒力彈簧回收鋼絲繩。編碼器連接于盤緊測量輪軸端,測量鋼絲繩來回運動的旋轉(zhuǎn)角度。
重錘重力收繩:
重錘浮子水位測量示意圖
|
1編碼器
2聯(lián)軸器
3測量輪
4重錘收緊輪
5鋼絲繩
6浮子
|
測量輪與恒力彈簧彈簧型相似,只是鋼絲繩的回收力是依靠另一個同軸的盤緊輪掛重錘來回收。
用收繩位移測量的優(yōu)點是柔性連接,測量直接而精度高,對運動物體的環(huán)境如震動、粉塵、高溫水氣的場合都能適用。
|
機械絲杠、摩擦輪、小車輪軸中心、齒輪齒條連接
在機械絲杠轉(zhuǎn)軸中心安裝編碼器,絲杠前進1個螺距,編碼器旋轉(zhuǎn)一周。
|
通過帶摩擦阻力的摩擦轉(zhuǎn)輪,與相對運動物體摩擦轉(zhuǎn)動,測量運動距離。
注意:摩擦輪需始終緊靠測量物,且無跳動、打滑。(實際使用中,某些場合有難度)
|
通過軌道小車的轉(zhuǎn)輪中心,安裝旋轉(zhuǎn)編碼器,測量小車行進。
小車與軌道之間不可有打滑
|
運動物連接齒條,帶動裝有齒輪的編碼器,測量運動物體移動距離
為保證連緊密抗震,經(jīng)常有彈簧基座。
|
二.絕對值編碼器的信號輸出
絕對值編碼器信號輸出有并行輸出、串行輸出、總線型輸出、變送一體型輸出
1.并行輸出:
絕對值編碼器輸出的是多位數(shù)碼(格雷碼或純二進制碼),并行輸出就是在接口上有多點高低電平輸出,以代表數(shù)碼的1或0,對于位數(shù)不高的絕對編碼器,一般就直接以此形式輸出數(shù)碼,可直接進入PLC或上位機的I/O接口,輸出即時,連接簡單。但是并行輸出有如下問題:
1。必須是格雷碼,因為如是純二進制碼,在數(shù)據(jù)刷新時可能有多位變化,讀數(shù)會在短時間里造成錯碼。
2。所有接口必須確保連接好,因為如有個別連接不良點,該點電位始終是0,造成錯碼而無法判斷。
3。傳輸距離不能遠,一般在一兩米,對于復(fù)雜環(huán)境,最好有隔離。
4。對于位數(shù)較多,要許多芯電纜,并要確保連接優(yōu)良,由此帶來工程難度,同樣,對于編碼器,要同時有許多節(jié)點輸出,增加編碼器的故障損壞率。
2.串行SSI輸出:
串行輸出就是通過約定,在時間上有先后的數(shù)據(jù)輸出,這種約定稱為通訊規(guī)約,其連接的物理形式有RS232、RS422(TTL)、RS485等。
由于絕對值編碼器好的廠家都是在德國,所以串行輸出大部分是與德國的西門子
配套的,如SSI同步串行輸出。
SSI接口(RS422模式),以兩根數(shù)據(jù)線、兩根時鐘線連接,由接收設(shè)備向編碼器發(fā)出中斷的時鐘脈沖,絕對的位置值由編碼器與時鐘脈沖同步輸出至接收設(shè)備。
由接收設(shè)備發(fā)出時鐘信號觸發(fā),編碼器從高位(MSB)開始輸出與時鐘信號同步的串行信號,SSI標(biāo)準(zhǔn)的信號當(dāng)不傳送信號時,時鐘和數(shù)據(jù)位均是高位,在時鐘信號的第一個下降沿,編碼器的當(dāng)前值開始貯存,從時鐘信號上升沿開始,經(jīng)T2延遲時間后,編碼器數(shù)據(jù)信號開始傳送.t3為恢復(fù)信號,等待下次傳送。
|
T=0.9—11us 每個脈沖周期 n為編碼器總位數(shù)
t1>0.45us 每個脈沖半周期
t2≤0.4us 數(shù)據(jù)輸出延遲時間
t3=12—35us 數(shù)據(jù)恢復(fù)(熄滅)時間
|
串行輸出連接線少,傳輸距離遠,對于編碼器的保護和可靠性就大大提高了。
一般高位數(shù)的絕對編碼器都是用串行輸出的。
3.現(xiàn)場總線型輸出
現(xiàn)場總線型編碼器是多個編碼器各以一對信號線連接在一起,通過設(shè)定地址,用通訊方式傳輸信號,信號的接收設(shè)備只需一個接口,就可以讀多個編碼器信號。總線型編碼器信號遵循RS485的物理格式,其信號的編排方式稱為通訊規(guī)約,目前全世界有多個通訊規(guī)約,各有優(yōu)點,還未統(tǒng)一,編碼器常用的通訊規(guī)約有如下幾種:
PROFIBUS-DP; CAN; DeviceNet; Interbus等
總線型編碼器可以節(jié)省連接線纜、接收設(shè)備接口,傳輸距離遠,在多個編碼器集中控制的情況下還可以大大節(jié)省成本。
4.變送一體型輸出
我公司提供的GPMV0814、GPMV1016絕對編碼器,其信號已經(jīng)在編碼器內(nèi)換算后直接變送輸出,其有模擬量4—20mA輸出、RS485數(shù)字輸出、14位并行輸出。
三.連接絕對編碼器的電氣二次設(shè)備:
連接絕對值編碼器的設(shè)備可以是可編程控制器PLC、上位機,也可以是專用顯示信號轉(zhuǎn)換儀表,由儀表再輸出信號給PLC或上位機。
1.直接進入PLC或上位機:
編碼器如果是并行輸出的,可以直接連接PLC或上位機的輸入輸出接點I/O,其信號數(shù)學(xué)格式應(yīng)該是格雷碼。編碼器有多少位就要占用PLC的多少位接點,如果是24伏推挽式輸出,高電平有效為1,低電平為0;如果是集電極開路NPN輸出,則連接的接點也必須是NPN型的,其低電平有效,低電平為1。
2.編碼器如果是串行輸出的,由于通訊協(xié)議的限制,后接電氣設(shè)備必須有對應(yīng)的接口。
例如SSI串行,可連接西門子的S7-300系列的PLC,有SM338等專用模塊,或S7-400的FM451等模塊,對于其他品牌的PLC,往往沒有專用模塊或有模塊也很貴。
3.編碼器如是總線型輸出,接受設(shè)備需配專用的總線模塊,例如PROFIBUS-DP。
但是,如選擇總線型輸出編碼器,在編碼器與接收設(shè)備PLC中間,就無法加入其他顯示儀表,如需現(xiàn)場顯示,就要從PLC 再轉(zhuǎn)出信號給與信號匹配的顯示儀表。
有些協(xié)議自定義的RS485輸出信號進PLC的RS485接口,需PLC具有智能編程功能。
4.連接專用顯示轉(zhuǎn)換儀表:
針對較多使用的SSI串行輸出編碼器,我公司提供專用的顯示、信號轉(zhuǎn)換儀表,由儀表進行內(nèi)部解碼、計算、顯示、信號轉(zhuǎn)換輸出,再連接PLC或上位機。其優(yōu)點如下:
a.現(xiàn)場可以有直觀的顯示,直接在儀表上設(shè)置參數(shù)。
b.專用程序讀碼解碼、容錯、內(nèi)部計算,可以大大減少各個項目的編程工作量,提高穩(wěn)定和可靠性。信號輸出是由內(nèi)部數(shù)字量直接計算,快速、準(zhǔn)確。
c.信號輸出有多種形式,靈活方便,后面可連接各種PLC或上位機,通用性強。
我公司各類連接SSI編碼器的儀表一覽表:
GP1312
(C表、標(biāo)準(zhǔn)表)
|
16位并行碼推挽式輸出、4—20mA兩路模擬量、8個預(yù)置位置開關(guān)、
4位顯示、非線性換算、面板置位等通用功能
|
GP1312/C2
(C2表,
雙路糾偏表)
|
雙吊點同步糾偏型 ,16位并行碼推挽式選通輸出,9個預(yù)置開關(guān)輸出,含雙路超偏糾偏信號, 兩路4—20mA模擬量輸出,其中一路為差值量輸出。
雙4位顯示、非線性換算、面板置位等通用功能
|
GP1312RL
(RL表、
現(xiàn)場變送表)
|
一路4—20mA模擬量輸出;一路RS485輸出。非線性換算,外部置位等
|
GP1312BS
(BS表、電子凸輪開關(guān)組)
|
八個電子凸輪位置開關(guān),每個開關(guān)具有開到位和恢復(fù)位,
一路4—20mA模擬量輸出;一路RS485輸出。
4位顯示,非線性換算,外部置位等
|
GPMV0814、GPMV1016 三位一體型
GPMV0814絕對多圈編碼器,其光電碼盤讀碼解碼、顯示設(shè)定、信號轉(zhuǎn)換三位一體,輸出4—20mA 模擬量、并行數(shù)字量RS485通訊可同時輸出,連接各類PLC和上位機。
一般的應(yīng)用,可選同時兩組輸出型,一組信號連接PLC,另一組連接顯示儀表,如需要增加開關(guān)輸出,可從顯示儀表設(shè)定輸出。
S7-300沒有現(xiàn)成的轉(zhuǎn)換功能塊,我使用了富士的SPH編寫了一個功能塊,由于富士的和西門子都支持IEC61131-3編程規(guī)范,那么應(yīng)該很簡單的轉(zhuǎn)換為西門子的功能塊。
在精確定位控制系統(tǒng)中,為了提高控制精度,準(zhǔn)確測量控制對象的位置是十分重要的。目前,測量位置的方法主要有2種,其一是使用位置傳感器,此方法精度高,但是在多路,長距離位置監(jiān)控系統(tǒng)中,由于成本昂貴且安裝困難,因此并不實用。其二是采用光電軸角編碼器進行精確位置控制,光電軸角編碼器根據(jù)其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。而絕對式編碼器是直接輸出數(shù)字量的傳感器,它是利用自然二進制或循環(huán)二進制(格雷碼)方式進行光電轉(zhuǎn)換的,編碼的設(shè)計一般是采用自然二進制碼、循環(huán)二進制碼、二
進制補碼等。特點是不要計數(shù)器,在轉(zhuǎn)軸的任意位置都可讀出一個固定的與位置相對應(yīng)的數(shù)字碼;抗干擾能力強,沒用累積誤差;電源切斷后位置信息不會丟失,但分辨率是由二進制的位數(shù)決定的,根據(jù)不同的精度要求,可以選擇不同的分辨率即位數(shù)。目前有10 位、11 位、12 位、13 位、14 位或更高位等多種。其中采用循環(huán)二進制編碼(即格雷碼)的絕對式編碼器,其輸出信號是一種數(shù)字排序,不是權(quán)重碼,每一位沒有確定的大小,不能直接進行比較大小和算術(shù)運算,也不能直接轉(zhuǎn)換成其他信號,要經(jīng)過一次碼變換,變成自然二進制碼,在由上位機讀取以實現(xiàn)相應(yīng)的控制。而在碼制變換中有不同的處理方式,本文著重介紹富士SX系列中使用編程的方法對二進制格雷碼與自然二進制碼的互換。
一、格雷碼(又叫循環(huán)二進制碼或反射二進制碼)介紹
在數(shù)字系統(tǒng)中只能識別0 和1,各種數(shù)據(jù)要轉(zhuǎn)換為二進制代碼才能進行處理,格雷碼是一種無權(quán)碼,采用絕對編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,它的循環(huán)、單步特性消除了隨機取數(shù)時出現(xiàn)重大誤差的可能,它的反射、自補特性使得求反非常方便。格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式,因為,自然二進制碼可以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,但某些情況,例如從十進制的3 轉(zhuǎn)換成4 時二進制碼的每一位都要變,使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點,它是一種數(shù)字排序系統(tǒng),其中的所有相鄰整數(shù)在它們的數(shù)字表示中只有一個數(shù)字不同。它在任意兩個相鄰的數(shù)之間轉(zhuǎn)換時,只有一個數(shù)位發(fā)生變化。它大大地減少了由一個狀態(tài)到下一個狀態(tài)時邏輯的混淆。另外由于最大數(shù)與最小數(shù)之間也僅一個數(shù)不同,故通常又叫格雷反射碼或循環(huán)碼。下表為幾種自然二進制碼與格雷碼的對照表:
十進制數(shù)
自然二進制
格雷碼
十進制
自然二進制
格雷碼
0
0000
0000
8
1000
1100
1
0001
0001
9
1001
1101
2
0010
0011
10
1010
1111
3
0011
0010
11
1011
1110
4
0100
0110
12
1100
1010
5
0101
0111
13
1101
1011
6
0110
0101
14
1110
1001
7
0111
0100
15
1111
1000
二、二進制格雷碼與自然二進制碼的互換
1、自然二進制碼轉(zhuǎn)換成二進制格雷碼
自然二進制碼轉(zhuǎn)換成二進制格雷碼,其法則是保留自然二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。
例如:
自然二進制編碼如下:
1
0
0
1
那么轉(zhuǎn)換為格雷碼的方法是:保留最高位1,然后將第二位0與第一位1做異或操作,第三位的0與第二位的0做異或操作,第四位的1與第三位的0做異或操作,得到結(jié)果如下:
1 1 0 1 Gray
2、二進制格雷碼轉(zhuǎn)換成自然二進制碼
二進制格雷碼轉(zhuǎn)換成自然二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。
例如將格雷碼1000轉(zhuǎn)換為自然二進制碼:
1
0
0
0
1
1
1
1
上排為格雷碼,下排為自然二進制,從左到右分別為1~4位
將上排的第一位高位作為自然二進制的最高位,因此在下排的第一位填入1,然后以上排第二位與下排第一位做異或操作,得到下排第二位結(jié)果為1,將上排第三位與下排第二位做異或操作,得到下排第三位的結(jié)果為1,同理,下排第四位的結(jié)果為1,因此,我們得到了轉(zhuǎn)換結(jié)果 如下:
1 1 1 1 Bin
三、自然二進制碼與格雷碼互換在富士SX系列PLC中的實現(xiàn)方法:
1. 自然二進制碼轉(zhuǎn)換為格雷碼:
根據(jù)自然二進制碼轉(zhuǎn)換為格雷碼的轉(zhuǎn)換規(guī)則,實際上就是將轉(zhuǎn)換數(shù)右移一位后與轉(zhuǎn)換數(shù)做異或操作。程序流程圖如下:
保存輸入數(shù) TEMP
將TEMP右移一位,保存SHILETEMP
將移位后的數(shù)據(jù)與原數(shù)據(jù)作異或
返回異或后的數(shù)據(jù)
功能塊中的程序如下:
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. 格雷碼轉(zhuǎn)換為自然二進制碼
根據(jù)格雷碼轉(zhuǎn)換為自然二進制碼的轉(zhuǎn)換規(guī)則,實際上就是不斷的將格雷碼與二進制數(shù)做異或操作,也就是說,不斷的和本身的不同位數(shù)做異或操作,如原數(shù)據(jù)為32位的A,那么先將A向右移動一位,與本身進行異或,然后保留值為B,那么繼續(xù)將A向右移動一位,與B進行異或,保留為C,依次類推,直到A=1為止。程序流程圖如下:
保存輸入數(shù) TEMP,INPUT1
如果輸入數(shù)為0,那么直接返回數(shù)據(jù)0后退出
如果TEMP不等于1,那么循環(huán),否則返回數(shù)據(jù)
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代碼方式的編程,因此基本上可以不做修改的應(yīng)用在西門子的S7系列的PLC中。
由于三菱的PLC中已經(jīng)包含了自然二進制碼轉(zhuǎn)換為格雷碼指令GRY以及格雷碼轉(zhuǎn)換為自然二進制碼指令GBIN,因此上述代碼應(yīng)用于三菱系列的PLC已經(jīng)沒有意義,請使用三菱PLC本身附帶的指令,因為西門子以及富士的SX系列PLC并沒有附帶轉(zhuǎn)換指令,因此本人書寫了上述代碼用于補充SX系列的指令不足。