鄭楚悅 趙琛
(國核電站運行服務技術有限公司,上海 200233)
近年來,在工業控制系統中,編碼器作為一種將運動信號轉換為可以用來通訊、傳輸和儲存數字信號的設備,在許多需要測量角度位置、旋轉速度等場合得以廣泛應用,諸如電機的轉速測量、機床位置與起重機位移距離的測量等,這類非高速運動的設備都可用編碼器進行速度、轉角和位移測量[1-2]。
編碼器以工作性質可分為增量型編碼器和絕對值編碼器。其中增量型編碼器是由一個圓盤、電極組成,圓盤邊緣有一圈明暗相間的刻度,將轉角變化量以周期性電信號轉換成計數脈沖的多少來測量,精度低,主要用于要求精度不高的儀器上[3-4]。而針對那些精度要求較高的行業,比如工業控制、精密儀器制造等,通常會選用絕對值編碼器,因其啟動速度快、位置絕對唯一、抗干擾、無需掉電記憶,在各工業系統領域得以廣泛應用[5]。隨著自動化控制系統越來越智能化,編碼器也趨于小體積、低功耗、高品質方向發展[6]。絕對值編碼器選用基于AM3358處理器的Beaglebone Black作為Linux嵌入式開發平臺,將系統控制統一在Python語言的開源框架中,把需要測量的位置信息傳輸給主控制系統,然后通過主控制系統以SSI協議的輸出方式發出控制信號。
考慮到過程中增量編碼器不能記錄斷電前的位置信息,且部分增量編碼器不能判斷旋轉方向,所以根據實際情況,選擇光洋集團koyo trd-na1024nw-2302絕對型編碼器,其分辨率為1024,價格比較便宜,該旋轉編碼器適用于檢測角度和位置的場所,如機械、傳送設備、電梯和伺服馬達等,滿足課題要求。絕對值編碼器與增量編碼器工作原理非常相似,它是一個帶有若干個透明和不透明窗口的轉動圓盤,用光接收器來收集間斷的光束,光脈沖轉換成電脈沖后,由電子輸出電路進行處理[7],并將電脈沖發送出去,其結構如圖1所示。圖1表明4個同心圓的絕對型編碼器的圓盤結構,可顯示16個位置,從里層同心圓至外層同心圓依次對應二進制碼高位至低位。圖2所示為按格雷碼排列,從圖中可看出按自然二進制碼排列的編碼器讀出的二進制碼信號高低電平跳變次數多,信號間干擾大;按格雷碼排列的編碼器讀出的二進制碼信號高低電平跳變次數少,信號間干擾小。碼盤輸出采用NPN型集電極開路輸出,可吸收1 6m A 以上電流,方便通過光耦隔離輸出編碼信號。絕對編碼器碼盤輸出為格雷碼,轉換成二進制后供后續處理,其技術參數中給出的二進制位數就是同心圓的個數n,對應的測角分辨率為[8-9]。
絕對編碼器主要是把需要測量的位置信息傳輸給主控制系統,然后通過主控制系統來發出控制信號[10]。以前的絕對值編碼器大多采用反應速度較快并行輸出,在位數不多的情況下可以適用,一旦位數越來越多,則并行輸出就不適用了,因為總是出現數據不準確、錯誤等問題。比如在傳輸過程中,只要有一根數據線出現問題,就會影響最終傳輸的數據,從而影響到絕對值編碼器的正常工作[11-12]。光洋koyo trd-na1024nw-2302編碼器輸出為同步串行信號,其絕對值位置由時鐘信號觸發,位置從最高位(MSB)開始輸出與時鐘信號同步的串行信號(RS422模式),如圖3所示。當不發送數據時,時鐘信號和數據位均保持高電平,在時鐘信號的第一個下降沿,數據之間傳輸間隔Tp進行數據保存,從時鐘信號上升沿開始,數據信號開始傳送。單穩觸發時間T m 把數據輸出端拉至高電平,當檢測到下一個時鐘信號將繼續發送數據。該編碼器時鐘和數據采用的是RS422標準,故時鐘信號線分CLOCK與/CLOCK兩部分,數據線也分DATA和/DATA 兩部分。

圖1 絕對編碼器(自然二進制碼)Fig.1 Absolute encoder(natural binary code)

圖2 絕對編碼器(格雷碼)Fig.2 Absolute encoder(gray code)

圖3 SSI 通信協議Fig.3 SSI communication protocol
本設計搭載了AM3358處理器的Beaglebone Black開發板來采集絕對值編碼器數據, 開發板集成了A R M Cortex-A8內核。Beaglebone Black開發板對伺服電機的轉速調節通過向電機電子調速器發出P W M 信號來實現,而PWM信號是通過Beaglebone Black開發板的帶寬脈沖調制功能的定時器產生的,在BeagleBone Black開發板的內核中,已包含P W M 驅動程序的源程序,通過人工編譯內核即可生成相應的驅動程序文件[13]。系統供電電源集成了L M 2 5 9 6 S 和L M 7 8 M 0 5 兩個穩壓芯片,可分別為Beaglebone Black開發板、電機提供3.3V電源和12V電源,本文選用的電機為370型直流減速電機,額定電壓12V。Beaglebone Black開發板GPIO引腳提供的電流和電壓有限并不足以驅動電機轉速調節,需通過TB6612驅動模塊來驅動控制。koyo trd-na1024nw-2302絕對式編碼器與電機共軸等速,當電機旋轉時,光柵盤跟著旋轉,并輸出兩路相位相差90°的脈沖信號,Beaglebone Black開發板采集脈沖數除以光柵盤光柵數得到當前伺服電機的轉速,接口控制模塊工作原理如圖4所示。

圖4 接口控制模塊工作原理框圖Fig.4 Working principle block diagram of interface control module

圖5 絕對式編碼器的解碼電路硬件結構框架Fig.5 Hardware architecture of absolute encoder decoding circuit

圖6 編碼器信號數據采集系統組成框圖Fig.6 Block diagram of encoder signal data acquisition system

圖7 MAX3160 芯片電路原理圖Fig.7 Schematic diagram of MAX3160 chip circuit
由于光洋koyo trd-na1024nw-2302編碼器以SSI協議進行數據信號的傳輸,其同步時鐘信號與串行數據信號均為可遠傳的差分信號,需要在編碼器與Be ag le bo ne Black開發板接口電路間加入信號處理電路。絕對式編碼器的解碼電路硬件結構框架如圖5 所示,包括四個部分:(1)絕對式編碼器接口;(2)用于減少信號傳輸通道,增強數據可靠性,進行數據差分轉單端處理的絕對式編碼器信號調理電路;(3)對編碼器輸出數據進行分離,轉換成位置值和狀態信息的編碼器解碼電路;(4)Beaglebone Black開發板編碼器信號輸入接口。其中,光電隔離電路能有效解決串入編碼器側的高電壓造成的損害。
編碼器數據信號采集的硬件電路主要包括光洋koyo trd-na1024nw-2302編碼器、基準編碼器與Beaglebone Black開發板等,Beaglebone Black開發板與上位機之間的通信采用USB轉TTL的串口模塊進行串口信號查看。硬件系統的組成如圖6所示。
絕對式編碼器有串行和并行兩種數據輸出方式,Beaglebone Black開發板可以直接采集其輸出數據,RS232串口標準作為數據終端設備與數據通信設備進行二進制數據交換接口的技術標準,但與Beaglebone Black開發板的T T L 電平不兼容,需要一個電平轉換模塊,將標準RS232電平信號轉為TTL電平信號,為了降低電路設計和測試的復雜度,選擇了高性能多協議的可編程控制芯片MAX3160E,其電路原理圖如圖7所示。
2.3.1 編碼器數據采集軟件
光洋koyo trd-na1024nw-2302絕對式編碼器與Beaglebone Black開發板直接采用串口通信,采用一個完整的UAR T傳輸的數據幀格式,包括起始位、8 個數據位、校驗位和停止位,如圖8所示。Beaglebone Black開發板在采集編碼器數據時,首先檢測起始位,再按設定的波特率9600來逐位接收數據位,直到校驗位和停止位接收完畢,一幀數據即傳輸完成串行至并行的轉換。
2.3.2 接口信號軟件
接口信號軟件設計由兩部分組成:一部分是一定周期脈沖型號的產生與絕對型編碼器串行輸出數據的讀取;另一部分為格雷碼向二進制的轉換。
編碼器時鐘周期要求在1us~10us之間,本設計選取脈沖周期為8us。Beaglebone Black開發板的晶振頻率為6M,脈沖產生和格雷碼讀取程序如下:
import Adafruit_BBIO.GPIO as GPIO
inputPin=['P8_3','P8_4','P8_5','P8_6','P8_11','P8_12','P8_13','P8_14','P8_15','P8_16']
dec_position=0
pin_state=[1]*10
a=5
from time import sleep
for i in range(0,len(inputPin)):
GPIO.setup(inputPin[i],GPIO.IN)
def read_input():
for j in range(0,len(inputPin)):
pin_state[j]=int(not(bool(inputPin[j])))
print "inputPin[%d] = %s"%(j,inputPin[j])
print "pin_state[%d]= %d"%(j,pin_state[j])
dec_position=pin_state[9]
for k in range(0,8):
dec_position=(dec_position<<1) | ((pin_state[k]) ^(dec_position & 1))
print dec_position
return
while(a):
read_input()
a=a-1
sleep(0.2)

圖8 UART 接收器的數據幀格式Fig.8 Data frame format of UART receiver
sleep(0.05)
GPIO.cleanup
格雷碼是一種無權碼,因而很難用單個代碼識別其所代表的數值。其中格雷碼至二進制碼的程序解碼公式為,其中,G為格雷碼,B為二進制碼,n為編碼器碼盤同心圈數量,初始最高B n 用0 代替。格雷碼可以減少代碼在形成和傳輸過程發生的錯誤,編碼器輸出格雷碼,然后經過硬件轉換成譯碼顯示和二進制碼,組成反饋系統。圖9為編程讀取10 位串行格雷碼角度量流程圖在啟動信號有效期間每個時鐘信號的下降沿,順序讀出光洋koyo trdna1024nw-2302編碼器10位格雷碼角度值,進而再轉換成自然二進制碼則完成獲取軸向轉角的過程。

圖9 編程讀取10 位串行格雷碼流程圖Fig.9 Flow chart of reading 10 bit serial gray code by programming

表1 編碼器同軸誤差Tab.1 Encoder coaxial error

圖10 串口通信波形顯示Fig.10 Serial communication waveform display
實驗裝置主要由370型直流減速電機、電機驅動控制模塊、koyo trd-na1024nw-2302絕對式編碼器、基準編碼器、Beaglebone Black開發板、計算機等組成。根據精密測量儀器設計中的阿貝原則,koyo trd-na1024nw-2302絕對式編碼器與基準編碼器的保持同一軸線,并與電機共軸等速。為驗證編碼器信號同軸誤差數據,將主軸旋轉一周等分為15份,再利用千分尺來測量每個位置的同軸誤差,結果如表1所示。
絕對式編碼器與基準編碼器的誤差值以m m 為單位,上表中15組同軸誤差值的方差值σ=0.0046mm,誤差信號極小,滿足絕對式編碼器接口電路設計要求。圖10為采用Beaglebone Black開發板采集到的編碼器信號,通過串口模塊接入上位機的通信波形顯示,從位置信號也可以看出輸出的P W M 波形穩定,該編碼器接口電路工作正常。
絕對式編碼器作為位移傳感器在自動化控制領域中廣泛應用,發展趨勢呈現出高精度、高可靠性特點。本文基于Beaglebone Black開發板的絕對式編碼器接口電路設計占用較少的資源,簡單實用,功能電路實現良好,有效實現對編碼器數據的采集、傳輸和處理,通過同軸誤差和串口波形顯示可以判斷該設計性能良好,滿足各項工作指標要求,對進一步開發自動化設備的精確穩定控制有較高的借鑒價值。