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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將格雷碼轉換為二進制編碼器的方法

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

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

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

二進制如何導致編碼器出現(xiàn)問題

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

另一種編碼器是絕對型編碼器,這種編碼器經(jīng)常使用,因為它可以測量與增量型相同的量,但它是由圓盤構成的,圓盤具有從中心輻射的復雜標記圖案。根據(jù)位置的不同,圖案是完全獨特的。它們通常有 256 到 1024 個不同的獨特圖案,均勻分布在圓圈周圍,分別表示 8 位或 10 位輸出。

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

由于圖案只有暗色或亮色,這為每個傳感器提供了開/關或“二進制”輸出。在典型的二進制模式中,位序列直接對應于一個等效的十進制數(shù),該十進制數(shù)會在磁盤周圍增加,從 0 到 256(或最多 1024)。標準二進制序列的唯一問題是多個位同時改變許多計數(shù)。每次發(fā)生這種情況時,都可能會遇到讀取錯誤。

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

poYBAGJzf36AUjR2AABGkNpJmEU144.png

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

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

作為這個錯誤嚴重性的一個例子,想象一下從第九種模式到第十種模式的轉變。四個傳感器最初會讀取 1001,然后在電機旋轉時變?yōu)?1010。

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

控制器會將整個序列串在一起為 1000。但看起來它只是倒退了,回到了 8!實際情況并非如此。

另一方面,如果只有一個位從一個計數(shù)轉換到下一個計數(shù),控制器將看到變化并識別運動,或者它不會看到變化并識別出還沒有發(fā)生運動。格雷碼是這種一次只更改一次的系統(tǒng)序列,但對于熟悉標準二進制的專業(yè)人士來說,這種模式似乎很陌生。

pYYBAGJzf4SAAtCiAABDOK1b9no020.png

雖然它與標準二進制不匹配,但格雷碼到二進制的計算可以非常簡單地完成,這里有一些標準梯形邏輯和使用 C++ 的結構化文本中的示例。

梯形邏輯轉換

要將格雷碼位轉換為正確的二進制位,每個格雷碼傳感器必須對應一個布爾值,或者直接來自傳感器,或者作為整數(shù)的一部分。

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

‘Binary_Number:1’ 是用于存儲標準二進制等效值的整數(shù)的對應位。對于其他軟件,例如 Rockwell 的 RSLogix,這個整數(shù)位可能看起來像 Binary_Number.0,其中 Binary_Number 是一個 INT 類型標記,從位 0 開始。

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

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

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

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

poYBAGJzf7-AAK2rAAD1ezf8uek466.jpg

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

所有前面的邏輯線都可以包裝到單個自定義指令塊或子程序中以簡化過程。

結構化文本轉換

這個例子只是部分的,因為有各種各樣的語言、語法和應用程序。核心目標仍然是將來自八個傳感器的傳感器讀數(shù)轉換為等效的二進制數(shù)。

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

無效轉換(){

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 位轉換為適合應用程序的整數(shù)。請注意,不同的語言可能遵循不同的程序。此示例僅用于概述該過程的外觀。

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

    關注

    2541

    文章

    49945

    瀏覽量

    747448
  • 編碼器
    +關注

    關注

    44

    文章

    3529

    瀏覽量

    133272
  • 絕對編碼器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    6928
收藏 人收藏

    評論

    相關推薦

    什么是

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

    二進制與自然二進制碼的互換分析

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

    二進制與自然二進制碼的互換

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

    簡介及格二進制轉換程序

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

    PLC中將轉換二進制碼一種運算方法

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

    簡介及格二進制轉換程序

    簡介及格二進制轉換程序
    發(fā)表于 01-16 11:52 ?4939次閱讀

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

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

    二進制方法

    二進位碼第n位 = 二進位碼第(n+1)位+第n位。因為二進位碼和
    發(fā)表于 11-11 09:38 ?7586次閱讀
    <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>

    二進制公式

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

    二進制轉換

    ,又叫循環(huá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'>二進制</b>的<b class='flag-5'>轉換</b>

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

    編碼器信號或數(shù)據(jù)進行編制、轉換為可用以通訊、傳輸和存儲的信號形式的設備。屬于可靠性
    的頭像 發(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>功能實現(xiàn)

    FPGA學習系列:33. 二進制二進制的設計

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

    如何把二進制轉換為?是如何判斷讀空寫滿呢?

    在傳遞讀寫時鐘域的指針使用來傳遞,如何把二進制轉換為
    的頭像 發(fā)表于 09-15 09:38 ?8134次閱讀
    如何把<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><b class='flag-5'>雷</b><b class='flag-5'>碼</b>是如何判斷讀空寫滿呢?

    一文詳解編碼器

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

    二進制轉換

    是一種循環(huán)二進制編碼,特點是相鄰數(shù)變化時只有一位數(shù)據(jù)跳變。
    的頭像 發(fā)表于 01-17 11:15 ?4585次閱讀
    <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>