碼器(encoder)是將信號(如比特流)或數據進行編制、轉換為可用以通訊、傳輸和存儲的信號形式的設備。編碼器把角位移或直線位移轉換成電信號,前者稱為碼盤,后者稱為碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種;按照工作原理編碼器可分為增量式和絕對式兩類。增量式編碼器是將位移轉換成周期性的電信號,再把這個電信號轉變成計數脈沖,用脈沖的個數表示位移的大小。絕對式編碼器的每一個位置對應一個確定的數字碼,因此它的示值只與測量的起始和終止位置有關,而與測量的中間過程無關。
一、編碼器的分類
根據檢測原理,編碼器可分為光學式、磁式、感應式和電容式,根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。
1.1 增量式編碼器 增量式編碼器是直接利用光電轉換原理輸出三組方波脈沖A、B和Z相;A、B兩組脈沖相位差90度,從而可方便的判斷出旋轉方向,而Z相為每轉一個脈沖,用于基準點定位。它的優點是原理構造簡單,機械平均壽命可在幾萬小時以上,抗干擾能力強,可靠性高,適合于長距離傳輸。其缺點是無法輸出軸轉動的絕對位置信息。
1.2 絕對式編碼器 絕對式編碼器是直接輸出數字的傳感器,在它的圓形碼盤上沿徑向有若干同心碼盤,每條道上有透光和不透光的扇形區相間組成,相鄰碼道的扇區樹木是雙倍關系,碼盤上的碼道數是它的二進制數碼的位數,在嗎盤的一側是光源,另一側對應每一碼道有一光敏元件,當嗎盤處于不同位置時,各光敏元件根據受光照與否轉換出相應的電平信號,形成二進制數。這種編碼器的特點是不要計數器,在轉軸的任意位置都可讀書一個固定的與位置相對應的數字碼。顯然,嗎道必須N條嗎道。目前國內已有16位的絕對編碼器產品。
1.3 混合式絕對編碼器 混合式絕對編碼器,它輸出兩組信息,一組信息用于檢測磁極位置,帶有絕對信息功能;另一組則完全同增量式編碼器的輸出信息。
二、光電編碼器的應用
增量型編碼器與絕對型編碼器區別
1、角度測量
汽車駕駛模擬器,對方向盤旋轉角度的測量選用光電編碼器作為傳感器。重力測量儀,采用光電編碼器,把他的轉軸與重力測量儀中補償旋鈕軸相連,扭轉角度儀,利用編碼器測量扭轉角度變化,如扭轉實驗機、漁竿扭轉釣性測試等。擺錘沖擊實驗機,利用編碼器計算沖擊是擺角變化。
2、長度測量
計米器,利用滾輪周長來測量物體的長度和距離。
拉線位移傳感器,利用收卷輪周長計量物體長度距離。
聯軸直測,與驅動直線位移的動力裝置的主軸聯軸,通過輸出脈沖數計量。
介質檢測,在直齒條、轉動鏈條的鏈輪、同步帶輪等來傳遞直線位移信息。
3、速度測量
線速度,通過跟儀表連接,測量生產線的線速度
角速度,通過編碼器測量電機、轉軸等的速度測量
4、位置測量
機床方面,記憶機床各個坐標點的坐標位置,如鉆床等
自動化控制方面,控制在牧歌位置進行指定動作。如電梯、提升機等
5、同步控制
通過角速度或線速度,對傳動環節進行同步控制,以達到張力控制
三、增量型編碼器(旋轉型)
1、工作原理:
由一個中心有軸的光電碼盤,其上有環形通、暗的刻線,有光電發射和接收器件讀取,獲得四組正弦波信號組合成A、B、C、D,每個正弦波相差90度相位差(相對于一個周波為360度),將C、D信號反向,疊加在A、B兩相上,可增強穩定信號;另每轉輸出一個Z相脈沖以代表零位參考位。
由于A、B兩相相差90度,可通過比較A相在前還是B相在前,以判別編碼器的正轉與反轉,通過零位脈沖,可獲得編碼器的零位參考位。
編碼器碼盤的材料有玻璃、金屬、塑料,玻璃碼盤是在玻璃上沉積很薄的刻線,其熱穩定性好,精度高,金屬碼盤直接以通和不通刻線,不易碎,但由于金屬有一定的厚度,精度就有限制,其熱穩定性就要比玻璃的差一個數量級,塑料碼盤是經濟型的,其成本低,但精度、熱穩定性、壽命均要差一些。
分辨率—編碼器以每旋轉360度提供多少的通或暗刻線稱為分辨率,也稱解析分度、或直接稱多少線,一般在每轉分度5~10000線。
2、信號輸出:
信號輸出有正弦波(電流或電壓),方波(TTL、HTL),集電極開路(PNP、NPN),推拉式多種形式,其中TTL為長線差分驅動(對稱A,A-;B,B-;Z,Z-),HTL也稱推拉式、推挽式輸出,編碼器的信號接收設備接口應與編碼器對應。
信號連接—編碼器的脈沖信號一般連接計數器、PLC、計算機,PLC和計算機連接的模塊有低速模塊與高速模塊之分,開關頻率有低有高。
如單相聯接,用于單方向計數,單方向測速。
A.B兩相聯接,用于正反向計數、判斷正反向和測速。
A、B、Z三相聯接,用于帶參考位修正的位置測量。
A、A-,B、B-,Z、Z-連接,由于帶有對稱負信號的連接,電流對于電纜貢獻的電磁場為0,衰減最小,抗干擾最佳,可傳輸較遠的距離。
對于TTL的帶有對稱負信號輸出的編碼器,信號傳輸距離可達150米。
對于HTL的帶有對稱負信號輸出的編碼器,信號傳輸距離可達300米。
3、增量式編碼器的問題:
增量型編碼器存在零點累計誤差,抗干擾較差,接收設備的停機需斷電記憶,開機應找零或參考位等問題,這些問題如選用絕對型編碼器可以解決。
增量型編碼器的一般應用:
測速,測轉動方向,測移動角度、距離(相對)。
四、絕對型編碼器(旋轉型)
絕對編碼器光碼盤上有許多道光通道刻線,每道刻線依次以2線、4線、8線、16 線……編排,這樣,在編碼器的每一個位置,通過讀取每道刻線的通、暗,獲得一組從2的零次方到2的n-1次方的唯一的2進制編碼(格雷碼),這就稱為n位絕對編碼器。這樣的編碼器是由光電碼盤的機械位置決定的,它不受停電、干擾的影響。
絕對編碼器由機械位置決定的每個位置是唯一的,它無需記憶,無需找參考點,而且不用一直計數,什么時候需要知道位置,什么時候就去讀取它的位置。這樣,編碼器的抗干擾特性、數據的可靠性大大提高了。
從單圈絕對值編碼器到多圈絕對值編碼器
旋轉單圈絕對值編碼器,以轉動中測量光電碼盤各道刻線,以獲取唯一的編碼,當轉動超過360度時,編碼又回到原點,這樣就不符合絕對編碼唯一的原則,這樣的編碼只能用于旋轉范圍360度以內的測量,稱為單圈絕對值編碼器。
如果要測量旋轉超過360度范圍,就要用到多圈絕對值編碼器。
編碼器生產廠家運用鐘表齒輪機械的原理,當中心碼盤旋轉時,通過齒輪傳動另一組碼盤(或多組齒輪,多組碼盤),在單圈編碼的基礎上再增加圈數的編碼,以擴大編碼器的測量范圍,這樣的絕對編碼器就稱為多圈式絕對編碼器,它同樣是由機械位置確定編碼,每個位置編碼唯一不重復,而無需記憶。
多圈編碼器另一個優點是由于測量范圍大,實際使用往往富裕較多, 這樣在安裝時不必要費勁找零點, 將某一中間位置作為起始點就可以了,而大大簡化了安裝調試難度。
編程語言平臺調用板卡動態鏈接庫,讀取編碼器值方法詳解。
板卡和計算機完成連接后,接下來就可以進行程序編寫了,想要使用板卡內的編碼器相關函數,就要調用相關的動態鏈接庫,也就是Dll文件,進行編程讀取。下面,就分別在C語言、LabVIEW、LabwindowsCVI、C#、VB等常用的這幾個編程語言界面給大家講解一下具體調用庫的方法。
首先是C語言的調用方法。本次 我們使用Visual C++ 6.0(以下簡稱VC6.0)來進行演示說明,首先打開VC6.0。點擊左上方文件→新建,如圖:
圖.
在彈出的頁面選擇工程→Win32 Console Application,記得設置工程名稱以及選擇保存位置。如圖:
圖.
彈出的選擇框中,我們可以選擇一個“Hello World”程序。如圖:
圖.
新建完成后,我們點擊側邊欄FileView,依次展開text files→Source Files→test.cpp,即可看到新建好的“Hello World”程序,如圖:
圖.
我們打開板卡的二次開發庫文件夾和該項目的文件夾,將二次開發庫的文件復制到項目文件夾內,如圖:
圖.
接下來,我們右鍵點擊側邊欄的工程名稱,選擇“添加文件到工程”,如圖:
圖.
選擇板卡二次開發庫的全部文件進行添加,如圖:
圖.
文件添加完成后,便會顯示在左側邊欄內。如圖:
圖.
我們在程序編輯框上方用#include寫入頭文件“NET_AMC4XER.h”,然后就可以使用DLL庫中的函數了,例如初始化網絡連接函數:SOCKET_init(void)。如圖:
圖.
接下來只要運行程序,就可以對網絡進行初始化了,接下來我們來看到動態鏈接庫內和編碼器相關的函數,我們打開板卡說明書,找到編碼器設定函數和編碼器值讀取函數。
首先是編碼器設定函數Set_Encorder:
Set_Encorder(char* destIP,int Axs,int mod,int z_reset_en, int z_dir,int set8000,int enable);
該函數可用于設定編碼器工作模式,讓我們來了解一下該函數的各項參數:
0——不計數
1——1x計數模式:只在A相的上升沿或下降沿進行一次計數
2——2x計數模式:在A、B相的上升沿或下降沿各進行一次計數
3——4x計數模式:在A、B相的上升和下降沿各進行一次計數,增量型編碼器一般使用4x的計數模式進行工作。
4.z_reset_en:編碼器z信號復位使能。設定為0時,Z信號出現高電平不復位;設定為1時,復位為0x000000或者0x800000。
5.z_dir:設置Z信號復位電平。0為高電平復位,1為低電平復位。
6.set8000:設定z信號復位時的計數值。設定為0,復位為0x000000;設定為1,復位為0x800000。
7.enable:計數器使能工作,設為0計數器不工作且復位為0x000000;設為1計數器正常工作。
然后是編碼器計數值讀取函數Read_Encorder:
Read_Encorder(char* destIP,int Axs , unsigned int* Value)
1.destIP:同編碼器設定函數,板卡IP地址。
2.Axs:同編碼器設定函數,要設置編碼器的運動軸。
3.Value:一個指針參數,用于返回讀取到的編碼器計數值。
以上便是板卡內編碼器相關的兩個函數介紹,下面我們來實際運用一下這兩個函數,我這里已經寫好了一份簡單的例程供大家參考,如圖:
我們現在來運行一下這個例程試試。啟動程序后,用手稍稍轉動編碼器,觀察打印值是否變化。如圖:
圖
由上圖可知,程序可正常顯示編碼器當前計數值,程序運行成功。以上便是C語言中板卡動態鏈接庫及其函數的使用方法。
首先我們打開Labview,點擊創建項目,如圖:
圖.
然后選擇新建一個空白VI,如圖:
圖.
新建后,我們可以看到生成了一個前面板,如圖:
圖.
接下來,我們點擊上方窗口→顯示程序框圖,如圖:
圖.
點擊后可以進入到Labview圖形編程界面,如圖:
圖.
進入程序框圖后,我們就可以在這里調用板卡的DLL文件了,我們點擊鼠標右鍵→互連接口→庫與可執行程序→調用庫函數,如圖:
圖.
選擇后可以直接放置在程序框圖內,如圖:
圖.
放置好函數節點后,我們雙擊節點,進入節點的函數設置,如圖:
圖.
進入節點設置后,我們點擊“庫名/路徑”旁邊的文件夾圖標,選擇要調用的DLL文件,然后在函數名一欄選擇要調用的函數,并把調用規范改為stdcall(WINAPI),如圖:
圖.
接著點擊上方的函數設置,將函數的返回類型和數據類型設定為對應的值,如果函數包含輸入參數,那還可以在這里增加參數輸入口,點擊+號即可。如圖:
圖.
點擊確定后完成函數節點的配置。如果覺得節點太小不方便確認是調用了哪個函數可以右鍵→名稱格式→名稱,便可以顯示當前節點調用的函數名,如圖:
圖.
接下來,只要運行Labview,就可以啟動板卡了,以上便是Labview的動態鏈接庫使用方法。
我們打開CVI,選擇新建一個項目,如圖:
圖.
選擇新建后,即可進入CVI項目界面,如圖:
圖.
選擇左上角File→New→User Interface,即可打開用戶界面設計,如圖:
圖.
圖.
我們可以在設計界面上放上一個按鈕,調整為自認為合適的大小和造型,用于后面調用板卡DLL內的函數。如圖:
圖.
雙擊該按鈕可以進入按鈕的詳細屬性設置,可以在此處設置按鈕上顯示的文本以及回調函數名稱,如圖:
圖.
完成后我們點擊上方Code→Generate→All Code,如圖:
圖.
在彈出的選擇框內勾選Create Project in Current Workspace,如圖:
圖.
完成后即可進入編程界面,如圖:
圖.
接下來我們將板卡二次開發庫中的全部文件復制到項目文件夾內,如圖:
圖.
然后右鍵點擊項目名稱,選擇Add Existing File添加現有文件,并選擇剛才復制的二次開發庫文件進行添加。如圖:
圖.
接下來,就可以在編程界面使用板卡DLL庫中的函數了。使用方法和C語言部分類似。如圖:
圖.
接下來運行程序并點擊網絡初始化按鈕即可進行網絡初始化。
以上便是CVI的DLL庫調用方法。
我們打開Visual Studio 2013,點擊新建項目,如圖:
圖.
本次我們以C#的WinForm窗體應用程序來作為說明,選擇Visual C#→WinForm窗體應用程序→設定好項目名稱和存放位置→確定。如圖:
圖.
項目創建好后,即可進入WinForm的窗體布局界面。如圖:
圖.
我們點擊上方視圖→解決方案資源管理器,如圖:
圖.
打開解決方案資源管理器,使用右鍵點擊解決方案,選擇在文件資源管理器中打開文件夾。如圖:
圖.
找到:項目名稱文件夾→bin→Debug并打開。進入到如圖所示的文件位置內:
圖.
我們將板卡的DLL文件粘貼到這個文件夾內,如圖:
圖.
回到Visual Stdio,點擊左側工具箱,選擇Button控件。如圖:
圖.
將選擇的Button控件放入窗體中任意喜歡的位置并調整成自認為合適的大小。如圖:
圖.
我們雙擊窗體,即可進入程序后臺界面,如圖:
圖.
我們在編程區域的上方寫入命名空間:
using System.Runtime.InteropServices;
這樣一來,我們這個項目就允許使用剛剛粘貼進來的dll文件了,然后在public partial class Form1 : Form內寫入語句DllImport,指定命令中的DLL文件名稱為板卡DLL文件名稱“NET_AMC4XER.dll”,并在后面寫入想要調用的函數名,注意,一個DllImport語句只對應一個函數。如果要調用多個函數,就要重復使用DllImport語句。
最后,我們在Button控件的事件內寫入函數即可。這樣一來,當我們點擊Button時,便可以使用對應的函數。如圖:
圖.
接下來只要啟動C# Winform程序即可。
以上便是在C#使用板卡DLL文件的方法。
VB方面,首先,和C#一樣我們打開Visual Studio,模板選擇Visual Basic,同樣還是選擇窗體應用程序作為說明。如圖:
圖.
進入設計面板后,點擊右側解決方案資源管理器,右鍵解決方案,選擇在文件資源管理器中打開文件夾。
圖.
在彈出的文件中,選擇項目文件夾→bin→Debug,如圖:
圖
將我們板卡所要用到的DLL文件復制到這個文件夾內。如圖:
圖.
回到Visual Studio,打開左側工具欄,選擇并向窗體放入一個Button控件且調整成自認為合適的大小。如圖:
圖
完成后,我們雙擊Button控件即可進入后臺編程界面。如圖:
圖.
接著,我們要用一個語句進行DLL文件的聲明:
Declare Function 函數名 Lib "DLL文件名" (ByVal 參數名 As 數據類型) As 返回值類型
然后就可以直接在Button控件的事件里面使用聲明過的函數了,如圖:
圖.
以上,便是在Visual Basic內使用板卡DLL文件的方法。
碼器(encoder)是將信號(如比特流)或數據進行編制、轉換為可用以通訊、傳輸和存儲的信號形式的設備。編碼器把角位移或直線位移轉換成電信號,前者稱為碼盤,后者稱為碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種;按照工作原理編碼器可分為增量式和絕對式兩類。增量式編碼器是將位移轉換成周期性的電信號,再把這個電信號轉變成計數脈沖,用脈沖的個數表示位移的大小。絕對式編碼器的每一個位置對應一個確定的數字碼,因此它的示值只與測量的起始和終止位置有關,而與測量的中間過程無關。
一、編碼器的分類
根據檢測原理,編碼器可分為光學式、磁式、感應式和電容式,根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。
1.1 增量式編碼器 增量式編碼器是直接利用光電轉換原理輸出三組方波脈沖A、B和Z相;A、B兩組脈沖相位差90度,從而可方便的判斷出旋轉方向,而Z相為每轉一個脈沖,用于基準點定位。它的優點是原理構造簡單,機械平均壽命可在幾萬小時以上,抗干擾能力強,可靠性高,適合于長距離傳輸。其缺點是無法輸出軸轉動的絕對位置信息。
1.2 絕對式編碼器 絕對式編碼器是直接輸出數字的傳感器,在它的圓形碼盤上沿徑向有若干同心碼盤,每條道上有透光和不透光的扇形區相間組成,相鄰碼道的扇區樹木是雙倍關系,碼盤上的碼道數是它的二進制數碼的位數,在嗎盤的一側是光源,另一側對應每一碼道有一光敏元件,當嗎盤處于不同位置時,各光敏元件根據受光照與否轉換出相應的電平信號,形成二進制數。這種編碼器的特點是不要計數器,在轉軸的任意位置都可讀書一個固定的與位置相對應的數字碼。顯然,嗎道必須N條嗎道。目前國內已有16位的絕對編碼器產品。
1.3 混合式絕對編碼器 混合式絕對編碼器,它輸出兩組信息,一組信息用于檢測磁極位置,帶有絕對信息功能;另一組則完全同增量式編碼器的輸出信息。
二、光電編碼器的應用
增量型編碼器與絕對型編碼器區別
1、角度測量
汽車駕駛模擬器,對方向盤旋轉角度的測量選用光電編碼器作為傳感器。重力測量儀,采用光電編碼器,把他的轉軸與重力測量儀中補償旋鈕軸相連,扭轉角度儀,利用編碼器測量扭轉角度變化,如扭轉實驗機、漁竿扭轉釣性測試等。擺錘沖擊實驗機,利用編碼器計算沖擊是擺角變化。
2、長度測量
計米器,利用滾輪周長來測量物體的長度和距離。
拉線位移傳感器,利用收卷輪周長計量物體長度距離。
聯軸直測,與驅動直線位移的動力裝置的主軸聯軸,通過輸出脈沖數計量。
介質檢測,在直齒條、轉動鏈條的鏈輪、同步帶輪等來傳遞直線位移信息。
3、速度測量
線速度,通過跟儀表連接,測量生產線的線速度
角速度,通過編碼器測量電機、轉軸等的速度測量
4、位置測量
機床方面,記憶機床各個坐標點的坐標位置,如鉆床等
自動化控制方面,控制在牧歌位置進行指定動作。如電梯、提升機等
5、同步控制
通過角速度或線速度,對傳動環節進行同步控制,以達到張力控制
三、增量型編碼器(旋轉型)
1、工作原理:
由一個中心有軸的光電碼盤,其上有環形通、暗的刻線,有光電發射和接收器件讀取,獲得四組正弦波信號組合成A、B、C、D,每個正弦波相差90度相位差(相對于一個周波為360度),將C、D信號反向,疊加在A、B兩相上,可增強穩定信號;另每轉輸出一個Z相脈沖以代表零位參考位。
由于A、B兩相相差90度,可通過比較A相在前還是B相在前,以判別編碼器的正轉與反轉,通過零位脈沖,可獲得編碼器的零位參考位。
編碼器碼盤的材料有玻璃、金屬、塑料,玻璃碼盤是在玻璃上沉積很薄的刻線,其熱穩定性好,精度高,金屬碼盤直接以通和不通刻線,不易碎,但由于金屬有一定的厚度,精度就有限制,其熱穩定性就要比玻璃的差一個數量級,塑料碼盤是經濟型的,其成本低,但精度、熱穩定性、壽命均要差一些。
分辨率—編碼器以每旋轉360度提供多少的通或暗刻線稱為分辨率,也稱解析分度、或直接稱多少線,一般在每轉分度5~10000線。
2、信號輸出:
信號輸出有正弦波(電流或電壓),方波(TTL、HTL),集電極開路(PNP、NPN),推拉式多種形式,其中TTL為長線差分驅動(對稱A,A-;B,B-;Z,Z-),HTL也稱推拉式、推挽式輸出,編碼器的信號接收設備接口應與編碼器對應。
信號連接—編碼器的脈沖信號一般連接計數器、PLC、計算機,PLC和計算機連接的模塊有低速模塊與高速模塊之分,開關頻率有低有高。
如單相聯接,用于單方向計數,單方向測速。
A.B兩相聯接,用于正反向計數、判斷正反向和測速。
A、B、Z三相聯接,用于帶參考位修正的位置測量。
A、A-,B、B-,Z、Z-連接,由于帶有對稱負信號的連接,電流對于電纜貢獻的電磁場為0,衰減最小,抗干擾最佳,可傳輸較遠的距離。
對于TTL的帶有對稱負信號輸出的編碼器,信號傳輸距離可達150米。
對于HTL的帶有對稱負信號輸出的編碼器,信號傳輸距離可達300米。
3、增量式編碼器的問題:
增量型編碼器存在零點累計誤差,抗干擾較差,接收設備的停機需斷電記憶,開機應找零或參考位等問題,這些問題如選用絕對型編碼器可以解決。
增量型編碼器的一般應用:
測速,測轉動方向,測移動角度、距離(相對)。
四、絕對型編碼器(旋轉型)
絕對編碼器光碼盤上有許多道光通道刻線,每道刻線依次以2線、4線、8線、16 線……編排,這樣,在編碼器的每一個位置,通過讀取每道刻線的通、暗,獲得一組從2的零次方到2的n-1次方的唯一的2進制編碼(格雷碼),這就稱為n位絕對編碼器。這樣的編碼器是由光電碼盤的機械位置決定的,它不受停電、干擾的影響。
絕對編碼器由機械位置決定的每個位置是唯一的,它無需記憶,無需找參考點,而且不用一直計數,什么時候需要知道位置,什么時候就去讀取它的位置。這樣,編碼器的抗干擾特性、數據的可靠性大大提高了。
從單圈絕對值編碼器到多圈絕對值編碼器
旋轉單圈絕對值編碼器,以轉動中測量光電碼盤各道刻線,以獲取唯一的編碼,當轉動超過360度時,編碼又回到原點,這樣就不符合絕對編碼唯一的原則,這樣的編碼只能用于旋轉范圍360度以內的測量,稱為單圈絕對值編碼器。
如果要測量旋轉超過360度范圍,就要用到多圈絕對值編碼器。
編碼器生產廠家運用鐘表齒輪機械的原理,當中心碼盤旋轉時,通過齒輪傳動另一組碼盤(或多組齒輪,多組碼盤),在單圈編碼的基礎上再增加圈數的編碼,以擴大編碼器的測量范圍,這樣的絕對編碼器就稱為多圈式絕對編碼器,它同樣是由機械位置確定編碼,每個位置編碼唯一不重復,而無需記憶。
多圈編碼器另一個優點是由于測量范圍大,實際使用往往富裕較多, 這樣在安裝時不必要費勁找零點, 將某一中間位置作為起始點就可以了,而大大簡化了安裝調試難度。
來源:網絡整理,如涉及版權問題,請及時聯系刪除