0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

將格雷碼轉(zhuǎn)換為二進(jìn)制編碼器的方法

科技觀察員 ? 來(lái)源:control ? 作者:大衛(wèi) ·彼得森 ? 2022-05-05 15:41 ? 次閱讀

絕對(duì)編碼器中的傳感器輸出格雷碼序列,需要一些復(fù)雜的轉(zhuǎn)換方法才能正確使用。本文展示了如何獲取絕對(duì)編碼器使用的格雷碼并將其轉(zhuǎn)換為二進(jìn)制。

對(duì)于大多數(shù)使用電機(jī)和伺服機(jī)構(gòu)的旋轉(zhuǎn)運(yùn)動(dòng),反饋至關(guān)重要。這種反饋通常采用編碼器的形式。對(duì)于許多編碼器,輸出是“絕對(duì)的”,這意味著可以隨時(shí)測(cè)量位置的精確度數(shù),但它有一個(gè)缺點(diǎn):它需要大量傳感器。這些傳感器經(jīng)常輸出格雷碼序列,需要一些復(fù)雜的轉(zhuǎn)換方法才能正確使用。

二進(jìn)制如何導(dǎo)致編碼器出現(xiàn)問(wèn)題

電機(jī)和其他旋轉(zhuǎn)運(yùn)動(dòng)設(shè)備最常見(jiàn)的反饋形式是編碼器,它使用光(光學(xué))傳感器對(duì)著具有特定黑白圖案的旋轉(zhuǎn)盤(pán)來(lái)提供角位置數(shù)據(jù)。存在兩種主要類型的編碼器:增量式和絕對(duì)式。增量編碼器對(duì)亮/暗標(biāo)記轉(zhuǎn)換進(jìn)行計(jì)數(shù),以跟蹤在給定時(shí)間內(nèi)經(jīng)過(guò)了多少度的旋轉(zhuǎn)。

另一種編碼器是絕對(duì)型編碼器,這種編碼器經(jīng)常使用,因?yàn)樗梢詼y(cè)量與增量型相同的量,但它是由圓盤(pán)構(gòu)成的,圓盤(pán)具有從中心輻射的復(fù)雜標(biāo)記圖案。根據(jù)位置的不同,圖案是完全獨(dú)特的。它們通常有 256 到 1024 個(gè)不同的獨(dú)特圖案,均勻分布在圓圈周圍,分別表示 8 位或 10 位輸出。

位數(shù)等于跟蹤模式的傳感器數(shù)量,而這個(gè)數(shù)量的傳感器可能會(huì)為單個(gè)處理器創(chuàng)建一個(gè)耗時(shí)的讀取任務(wù)。為了最大程度地減少讀取錯(cuò)誤,磁盤(pán)通常具有一種模式,該模式僅允許一個(gè)傳感器讀數(shù)在磁盤(pán)旋轉(zhuǎn)時(shí)隨時(shí)更改。

由于圖案只有暗色或亮色,這為每個(gè)傳感器提供了開(kāi)/關(guān)或“二進(jìn)制”輸出。在典型的二進(jìn)制模式中,位序列直接對(duì)應(yīng)于一個(gè)等效的十進(jìn)制數(shù),該十進(jìn)制數(shù)會(huì)在磁盤(pán)周圍增加,從 0 到 256(或最多 1024)。標(biāo)準(zhǔn)二進(jìn)制序列的唯一問(wèn)題是多個(gè)位同時(shí)改變?cè)S多計(jì)數(shù)。每次發(fā)生這種情況時(shí),都可能會(huì)遇到讀取錯(cuò)誤。

下表顯示了這種情況發(fā)生的頻率。

poYBAGJzf36AUjR2AABGkNpJmEU144.png

如圖所示,這種可能的錯(cuò)誤每隔一個(gè)計(jì)數(shù)就會(huì)發(fā)生一次,這是完全不可接受的。

為什么會(huì)出現(xiàn)這樣的問(wèn)題?

作為這個(gè)錯(cuò)誤嚴(yán)重性的一個(gè)例子,想象一下從第九種模式到第十種模式的轉(zhuǎn)變。四個(gè)傳感器最初會(huì)讀取 1001,然后在電機(jī)旋轉(zhuǎn)時(shí)變?yōu)?1010。

控制器會(huì)以固定的快速間隔讀取傳感器,因此它可能會(huì)在模式仍為 9 時(shí)開(kāi)始讀取,因此前三個(gè)傳感器可能會(huì)讀取 1 0 和 0。然后,就在它讀取最后一個(gè)傳感器之前,模式步驟最多 10 并且最終傳感器變?yōu)?0。

控制器會(huì)將整個(gè)序列串在一起為 1000。但看起來(lái)它只是倒退了,回到了 8!實(shí)際情況并非如此。

另一方面,如果只有一個(gè)位從一個(gè)計(jì)數(shù)轉(zhuǎn)換到下一個(gè)計(jì)數(shù),控制器將看到變化并識(shí)別運(yùn)動(dòng),或者它不會(huì)看到變化并識(shí)別出還沒(méi)有發(fā)生運(yùn)動(dòng)。格雷碼是這種一次只更改一次的系統(tǒng)序列,但對(duì)于熟悉標(biāo)準(zhǔn)二進(jìn)制的專業(yè)人士來(lái)說(shuō),這種模式似乎很陌生。

pYYBAGJzf4SAAtCiAABDOK1b9no020.png

雖然它與標(biāo)準(zhǔn)二進(jìn)制不匹配,但格雷碼到二進(jìn)制的計(jì)算可以非常簡(jiǎn)單地完成,這里有一些標(biāo)準(zhǔn)梯形邏輯和使用 C++ 的結(jié)構(gòu)化文本中的示例。

梯形邏輯轉(zhuǎn)換

要將格雷碼位轉(zhuǎn)換為正確的二進(jìn)制位,每個(gè)格雷碼傳感器必須對(duì)應(yīng)一個(gè)布爾值,或者直接來(lái)自傳感器,或者作為整數(shù)的一部分。

此示例是用 Automation Direct 的梯形圖編程軟件編寫(xiě)的,并假設(shè)“Sensor_1”是最低有效位 (LSB),傳感器沿著編碼器磁盤(pán)的外邊緣。共有八個(gè)傳感器(8 位)增加到編碼器的中心。

‘Binary_Number:1’ 是用于存儲(chǔ)標(biāo)準(zhǔn)二進(jìn)制等效值的整數(shù)的對(duì)應(yīng)位。對(duì)于其他軟件,例如 Rockwell 的 RSLogix,這個(gè)整數(shù)位可能看起來(lái)像 Binary_Number.0,其中 Binary_Number 是一個(gè) INT 類型標(biāo)記,從位 0 開(kāi)始。

第 1 行 - 為了正確轉(zhuǎn)換,最高有效位 (MSB) 即 Sensor_8 保持不變。

第 2 行 - 對(duì)于下一個(gè)有效位,在 Sensor_8 和 Sensor_7 之間使用“異或”的邏輯比較。如果 Sensor_7 和 _8 相同,則返回 0,如果 Sensor_7 和 _8 不同,則返回 1。

第 3 到 8 行 - 對(duì)于每個(gè)剩余位,我們繼續(xù)在前一個(gè)位和下一個(gè) Sensor 值之間使用“異或”。

如果編碼器是 10 位的,則有 10 行,前兩行將使用 Sensor_10 和 _9 并下降,直到最后使用最后一個(gè)傳感器。

poYBAGJzf7-AAK2rAAD1ezf8uek466.jpg

圖 1. Automation Direct 梯形圖編程軟件中使用的梯形邏輯示例。

所有前面的邏輯線都可以包裝到單個(gè)自定義指令塊或子程序中以簡(jiǎn)化過(guò)程。

結(jié)構(gòu)化文本轉(zhuǎn)換

這個(gè)例子只是部分的,因?yàn)橛懈鞣N各樣的語(yǔ)言、語(yǔ)法和應(yīng)用程序。核心目標(biāo)仍然是將來(lái)自八個(gè)傳感器的傳感器讀數(shù)轉(zhuǎn)換為等效的二進(jìn)制數(shù)。

對(duì)于基于 C 的語(yǔ)言,產(chǎn)生單個(gè)位的異或 (XOR) 是 !=。MSB 與傳感器值相同,第二位是兩個(gè)傳感器的 XOR,其余每個(gè)位是前一位和下一個(gè)傳感器的 XOR。

無(wú)效轉(zhuǎn)換(){

Binary_Number_8 = Sensor_8;

Binary_Number_7 = Sensor_8 != Sensor_7;

Binary_Number_6 = Binary_Number_7 != Sensor_6;

Binary_Number_5 = Binary_Number_6 != Sensor_5;

Binary_Number_4 = Binary_Number_5 != Sensor_4;

Binary_Number_3 = Binary_Number_4 != Sensor_3;

Binary_Number_2 = Binary_Number_3 != Sensor_2;

Binary_Number_1 = Binary_Number_2 != Sensor_1;

}

剩下的步驟是將 Binary_Number 位轉(zhuǎn)換為適合應(yīng)用程序的整數(shù)。請(qǐng)注意,不同的語(yǔ)言可能遵循不同的程序。此示例僅用于概述該過(guò)程的外觀。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50241

    瀏覽量

    750042
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3552

    瀏覽量

    133780
  • 絕對(duì)編碼器
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    6943
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是

    (Gray code),又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼 在數(shù)字系統(tǒng)中只能識(shí)別0和1,各種數(shù)據(jù)要轉(zhuǎn)換
    發(fā)表于 11-11 09:34 ?7245次閱讀
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    二進(jìn)制與自然二進(jìn)制碼的互換分析

    其中采用循環(huán)二進(jìn)制編碼的絕對(duì)式編碼器,其輸出信號(hào)是一種數(shù)字排序,不是權(quán)重碼,每一位沒(méi)有確定的大小,不能直接進(jìn)行比較大小和算術(shù)運(yùn)算,也不能直接轉(zhuǎn)換成其他信號(hào),要經(jīng)過(guò)一次
    的頭像 發(fā)表于 09-23 16:23 ?6728次閱讀

    二進(jìn)制與自然二進(jìn)制碼的互換

    。而絕對(duì)式編碼器是直接輸出數(shù)字量的傳感,它是利用自然二進(jìn)制或循環(huán)二進(jìn)制
    發(fā)表于 03-08 14:16

    簡(jiǎn)介及格二進(jìn)制轉(zhuǎn)換程序

    * 方便地用遞歸實(shí)現(xiàn).這樣就實(shí)現(xiàn)了二進(jìn)制轉(zhuǎn)換.同樣,
    發(fā)表于 04-22 09:00

    PLC中將轉(zhuǎn)換二進(jìn)制碼一種運(yùn)算方法

    介紹了位置檢測(cè)傳感---絕對(duì)值編碼器的原理及特點(diǎn),并介紹了一種在PLC 控制系統(tǒng)中,編碼器
    發(fā)表于 08-13 09:28 ?173次下載

    簡(jiǎn)介及格二進(jìn)制轉(zhuǎn)換程序

    簡(jiǎn)介及格二進(jìn)制轉(zhuǎn)換程序
    發(fā)表于 01-16 11:52 ?4965次閱讀

    二進(jìn)制編碼二進(jìn)制數(shù)據(jù)

    二進(jìn)制編碼二進(jìn)制數(shù)據(jù)   二進(jìn)制編碼是計(jì)算機(jī)內(nèi)使用最多的制,它只使用兩個(gè)基本符號(hào)"0"和"
    發(fā)表于 10-13 16:22 ?4732次閱讀

    轉(zhuǎn)二進(jìn)制方法

    二進(jìn)位碼第n位 = 二進(jìn)位碼第(n+1)位+第n位。因?yàn)?b class='flag-5'>二進(jìn)位碼和
    發(fā)表于 11-11 09:38 ?7648次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>轉(zhuǎn)<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>方法</b>

    二進(jìn)制轉(zhuǎn)公式

    在一組數(shù)的編碼中,若任意兩個(gè)相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼(Gray Co
    的頭像 發(fā)表于 03-02 14:47 ?3.9w次閱讀
    <b class='flag-5'>二進(jìn)制</b>轉(zhuǎn)<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>公式

    二進(jìn)制轉(zhuǎn)換

    ,又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼
    的頭像 發(fā)表于 03-02 15:48 ?1.8w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>與<b class='flag-5'>二進(jìn)制</b>的<b class='flag-5'>轉(zhuǎn)換</b>

    編碼器功能實(shí)現(xiàn)

    編碼器信號(hào)或數(shù)據(jù)進(jìn)行編制、轉(zhuǎn)換為可用以通訊、傳輸和存儲(chǔ)的信號(hào)形式的設(shè)備。屬于可靠性
    的頭像 發(fā)表于 03-02 16:13 ?1.2w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b><b class='flag-5'>編碼器</b>功能實(shí)現(xiàn)

    FPGA學(xué)習(xí)系列:33. 二進(jìn)制轉(zhuǎn)轉(zhuǎn)二進(jìn)制的設(shè)計(jì)

    Stibitz設(shè)計(jì)的一種8元二進(jìn)制機(jī)械計(jì)數(shù)正好符合格計(jì)數(shù)的計(jì)數(shù)規(guī)律。?設(shè)計(jì)原理:?在一組數(shù)的
    的頭像 發(fā)表于 08-28 16:16 ?3220次閱讀

    如何把二進(jìn)制轉(zhuǎn)換為?是如何判斷讀空寫(xiě)滿呢?

    在傳遞讀寫(xiě)時(shí)鐘域的指針使用來(lái)傳遞,如何把二進(jìn)制轉(zhuǎn)換為
    的頭像 發(fā)表于 09-15 09:38 ?8211次閱讀
    如何把<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>轉(zhuǎn)換為</b><b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>是如何判斷讀空寫(xiě)滿呢?

    一文詳解編碼器

    本文介紹,這是絕對(duì)編碼器與控制通信所必需的一種特殊二進(jìn)制排列。
    的頭像 發(fā)表于 05-05 15:47 ?1w次閱讀

    二進(jìn)制轉(zhuǎn)換

    是一種循環(huán)二進(jìn)制編碼,特點(diǎn)是相鄰數(shù)變化時(shí)只有一位數(shù)據(jù)跳變。
    的頭像 發(fā)表于 01-17 11:15 ?4820次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>與<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>轉(zhuǎn)換</b>