编码器原理及工业数据采集中的应用

article/2025/6/15 15:33:04

一、编码器原理

编码器属于传感器一类,常用于速度、距离、角度、位置等的测量。例如电机的转速,就可以使用编码器进行实时测量。

接下来我们来了解一下编码器的工作原理。首选,编码器主要分为线性编码器和旋转编码器两大类。如图1和图2所示:

图1.线性编码器

图2.旋转编码器

今天我们主要来聊图2这种旋转编码器。在一般情况下,旋转编码器主要可以分为绝对式以及增量式。

绝对式旋转编码器,顾名思义,就是编码器中每一个角度和位置输出的编码值都是固定的。在这种编码器内部有许多通道孔洞的排列组合,每一种组合代表一个编码值。如图3。

图3.绝对式编码器码盘

正因每一个编码值都是有固定对应的组合,所以就算编码器突然断电也能记住当前编码值。但当编码器旋转超过360度,编码值就会回到原点,所以绝对式编码器的旋转角度只能在360度以内,要进行超过360度时的旋转计数的话则需要用到多圈绝对值编码器。

聊完绝对值编码器,接下来说说今天的重头戏,也就是我们经常用到的增量式旋转编码器。首选我们来看一下工作原理图4。

图4.增量式编码器原理图

由图4可以看到,增量式编码器与绝对式编码器相同,也是有一个码盘,编码器内部的光源会不断照射码盘上的孔洞,每照射过一个孔洞就会产生一次脉冲输出进行计数。与绝对式编码器不同的是,增量式编码器码盘上的孔洞大小都是相同的,并且在编码器输出上会有A、B两路信号,这两路信号可以用于判断编码器的正反转。当A端相位超前B端90度时,编码器正转,否则B端超前A端90度,编码器反转。

二、编码器与运动控制卡实际接线方法

了解完编码器的原理,我们现在来了解一下编码器如何使用。首先要面临的肯定是接线问题。编码器的接线大致可以分为四种,分别是: NPN输出接法、PNP输出接法、电压输出接法、差分输出接法。接下来我们结合实际操作来讲解一下编码器的接线方法。本次我们所用到的实验器材,是恒凯NET_AMC4XER V1.0这款4轴运动控制卡。板卡外观可参考图5:

图5.四轴运动控制卡

NPN输出和PNP输出接法:

首先我们来说说NPN输出型编码器的接线方法,此处以编码器A相端口为例进行说明。首先来看一下模拟电路接线,如图6:

图6.NPN输出型编码器接线图

由图可知,对于NPN型集电极开路输出编码器,我们需要将编码器的A端与板卡的EA-端口相连,COM端与电源负极相连,VDC端与电源正极相连的同时也要和板卡的EA+端口相连。

当我们接通电源时,电流就会从电源正极出发,从板卡EA+端口进入板卡经过内部光耦,然后从EA-端口流出经过编码器A相端,再经过编码器内部的NPN型三极管后回到电源负极,以此完成一个回路进行工作。

关于PNP输出型编码器接线方法,和NPN型的类似,如图7:

图7.PNP输出型编码器接线图

只需要将编码器的A端和板卡的EA+端口相连,然后com端与板卡EA-端口相连并接至电源负极即可。同时编码器VDC端接电源正极。

电压输出接法:

电压输出接法是在NPN输出接法的基础上进行了改造,也可以归类为NPN型输出,它在电源和集电极之间接了一个上拉电阻,使得集电极和电源之间有一个稳定的电压。如图8:

图8.电压输出型编码器接线图

关于这种编码器和板卡的接线方法,参考NPN输出型编码器接线法即可。

差分输出接法:

差分模式接线相对比较简单,我们还是用编码器的A端口作为接线演示说明。只要将编码器上的A+和A-端口分别与板卡的EA+和EA-两个端口对应接好即可,如图9:

图9.差分输出型编码器接线图

以上便是四种常见编码器的模拟电路接线。

接线完成后,我们来使用计算机对运动控制卡进行操控,该板卡是利用网络来进行通信的,所以可以用网线将计算机与板卡连接并驱动板卡,进而达到控制编码器工作的目的。下面来详细介绍计算机与板卡的连接方法以及几种常用编程方式配置板卡动态链接库的方法。

三、板卡与计算机连接

在使用运动控制卡之前,需要先设置计算机的IP地址,以此来保证和板卡IP地址网段一致才可以保证两者通信成功,此处以windows7操作系统的计算机为例进行说明。我们首先点击右下角的网络连接图标,选择“打开网络和共享中心”,如图:

在弹出的控制面板页面中,找到我们计算机的本地连接并选择,如图:

在弹出的本地连接状态内,选择属性,如图:

在本地连接属性中双击Internet 协议版本 4 (TVP/IPv4),如图:

在IPv4属性框中,勾选使用下面的IP地址,并将IP地址改为和板卡同一网段的不同地址,如:192.168.1.31(只要不和板卡默认IP地址192.168.1.30冲突即可)如图:

最后点击确定即可,接下来只要用网线将板卡与计算机连接即可。

连接之后,我们可以WIN+R,输入cmd,运行一下,输入ping 192.168.0.30,来查看板卡的连接状态。

如果连接成功,可以看到如下图:,这样板卡就实现与计算机的通讯了。

四、各平台调用板卡动态链接库方法详解

板卡和计算机完成连接后,接下来就可以进行程序编写了,想要使用板卡内的编码器相关函数,就要调用相关的动态链接库,也就是Dll文件,进行编程读取。下面,就分别在C语言、LabVIEW、LabwindowsCVI、C#、VB等常用的这几个编程语言界面给大家讲解一下具体调用库的方法。

C语言:

首先是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);

该函数可用于设定编码器工作模式,让我们来了解一下该函数的各项参数:

1. destIP:板卡IP地址,默认设定为“192.168.1.30”,后续可以通过函数自行更改。

2. Axs:板卡和编码器绑定的运动轴号。本次使用的是四轴运动控制卡,有X、Y、Z、U四个运动轴,对应值分别为0、1、2、3。

3. Mod:编码器工作模式,一共有四种,对应值分别为0、1、2、3。

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:

首先我们打开Labview,点击创建项目,如图:

图.

然后选择新建一个空白VI,如图:

图.

新建后,我们可以看到生成了一个前面板,如图:

图.

接下来,我们点击上方窗口→显示程序框图,如图:

图.

点击后可以进入到Labview图形编程界面,如图:

图.

进入程序框图后,我们就可以在这里调用板卡的DLL文件了,我们点击鼠标右键→互连接口→库与可执行程序→调用库函数,如图:

图.

选择后可以直接放置在程序框图内,如图:

图.

放置好函数节点后,我们双击节点,进入节点的函数设置,如图:

图.

进入节点设置后,我们点击“库名/路径”旁边的文件夹图标,选择要调用的DLL文件,然后在函数名一栏选择要调用的函数,并把调用规范改为stdcall(WINAPI),如图:

图.

接着点击上方的函数设置,将函数的返回类型和数据类型设定为对应的值,如果函数包含输入参数,那还可以在这里增加参数输入口,点击+号即可。如图:

图.

点击确定后完成函数节点的配置。如果觉得节点太小不方便确认是调用了哪个函数可以右键→名称格式→名称,便可以显示当前节点调用的函数名,如图:

图.

接下来,只要运行Labview,就可以启动板卡了,以上便是Labview的动态链接库使用方法。

LabWindows/CVI:

我们打开CVI,选择新建一个项目,如图:

图.

选择新建后,即可进入CVI项目界面,如图:

图.

选择左上角File→New→User Interface,即可打开用户界面设计,如图:

图.

图.

我们可以在设计界面上放上一个按钮,调整为自认为合适的大小和造型,用于后面调用板卡DLL内的函数。如图:

图.

双击该按钮可以进入按钮的详细属性设置,可以在此处设置按钮上显示的文本以及回调函数名称,如图:

图.

完成后我们点击上方Code→Generate→All Code,如图:

图.

在弹出的选择框内勾选Create Project in Current Workspace,如图:

图.

完成后即可进入编程界面,如图:

图.

接下来我们将板卡二次开发库中的全部文件复制到项目文件夹内,如图:

图.

然后右键点击项目名称,选择Add Existing File添加现有文件,并选择刚才复制的二次开发库文件进行添加。如图:

图.

接下来,就可以在编程界面使用板卡DLL库中的函数了。使用方法和C语言部分类似。如图:

图.

接下来运行程序并点击网络初始化按钮即可进行网络初始化。

以上便是CVI的DLL库调用方法。

C#:

我们打开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(Visual Basic):

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文件的方法。


http://www.hkcw.cn/article/DQAkiqfAUb.shtml

相关文章

10种早餐饼的做法,不用揉面,简单几步就能烙好!

以下是10道不用揉面、不弄脏手就可以烙好的饼的做法,简单实用,做早餐非常合适,喜欢的亲们不妨收藏慢慢做~ 第一种:萝卜丝煎饼 煎一两张饼,再搭配上一碗小米粥,一碟酱菜,绝对是早晨完美的一餐。白萝卜含芥子油、淀粉酶和粗纤维,具有促进消化,增强食欲,加快胃肠蠕动和止…

湖南韶山一日游景点超详细攻略,三条精选路线推荐,看完这篇不迷路

湖南韶山一日游超详细攻略及三条精选路线推荐 一、一日游超详细攻略 准备事项:提前一天在线预订门票,避免现场排队等待。携带身份证、学生证(如有)等证件,部分景点可享受优惠。穿着舒适、便于行走的鞋子和衣物,韶山景区地形复杂,需要步行。 行程安排: 上午:毛泽东故居…

为何全网都在磕军烨CP,聊一聊刘烨与胡军的“蓝色”往事就明白了

这两天似乎娱乐圈影视没什么水花,于是大家不仅考古了0713快男再就业男团,现在更是考古起《爸爸去哪儿》了,其中刘烨和胡军有一场尬聊名场面被大家找了出来节目中物里就剩胡军和刘烨两人的时候,仿佛两人都不认识,除了聊各自孩子的事情,两人都不敢看对方,场面一度十分尴尬…

生物学科技信息|法老蚁·猫薄荷·光免疫·膳食补充剂·昆虫婚飞·1厘米细菌·两爬衰老·螨虫·南极蠓

点击蓝字 关注我们 1 蚂蚁为啥能分工明确? 原来是“脑回路”不同 摘自6月17日《科普时报》报道,在动物的演化历程中,一个重大转折事件就是社会组织的出现,让动物的适应性大为加强。今天,我们仍能在不同的物种中找到社会组织从简单到复杂的一系列连续变化形式。通过解析蚂蚁…

28岁教授,35岁杰青,博士期间连发3篇Science,今年再次取得突破

导读 85后正教授---邓鹤翔,相信很多人并不陌生。特别是做MOFs多孔材料的同学,对邓老师的研究成果想必更是如数家珍。然而,有谁知道,邓教授能取得今天的成就并非一帆风顺,期间也经历了不少波折。 跳转阅读→手机上如何查询化合物分子式、结构式、合成路线、供应商? Part …

专业解读 | 工学门类(十四)地质类

如何合理、科学地填报志愿,帮助孩子圆梦大学,长按扫码加入 工学门类是十二大学科门类之中包含专业最多的门类,工学门类下共有以下三十一个专业类。 今天聊聊工学三十一门类之十四——地质类。 地质类专业包含地质工程、勘查技术与工程、资源勘查工程、地下水科学与工程、旅游…

如厕训练最好的季节来了,你准备好了吗?双语启蒙课程第6期—小便(peepee)

Hello,大家好,这是咱们双语启蒙课程的第6期——小便。 妈耶,终于到了屎尿屁奶的话题,做成课程还是有那么一丝尴尬的。 之前老师跟漫画一听这期的主题都默契而尴尬的笑了,哎,到底都是未婚的姑娘啊。 对于老妈子们来讲,公开场合谈论屎尿屁太正常了有木有,当了妈之后奏是变…

揭秘!那些年我们追过的羞羞漫画

"揭开神秘面纱:那些令人难以忘怀的日本羞羞漫画" 在日本江户时代的文化瑰宝中,有一类作品以其独特的魅力和深度吸引了无数观众。这类作品便是著名的羞羞漫画。尽管这个名字可能让人联想到一些低俗的内容,但实际上,它们是日本文化艺术史上不可或缺的一部分。本文将…

北京7.89万名考生走进114个考点 诚信应考须知

2025年北京高考将于6月7日至10日举行,全市共有7.89万名考生报名参加考试,共设18个考区、114个考点。考试前,考生需认真查看考场规则,诚信应考,避免无意违规。考生应自觉服从监考员等考试工作人员管理,不得妨碍监考员履行职责,不得扰乱考点考场秩序,不得危害他人身体健康…

假警察视频操控女孩代付骗走2.8万元 代付骗局暴露风险漏洞

6月5日晚,成都12岁女孩李悦收到一条自称是警察的私信,对方以“违法罚款”为由,通过一小时视频通话,操控她操作母亲的手机,最终转走了28649元。由于代付机制限制,家长梁女士发现后虽紧急冻结账户并报警,但因无法取消订单而陷入追款困境。该案暴露出代付模式的风险漏洞以及…

北周的5个皇帝有3个傀儡1个昏君,只有1个明君,却差点统一全国!

公元557年,北周正式建立。作为南北朝时期北方最为重要的政权之一,北周与北齐,以及南方的南梁(南陈)共同主宰着天下。然而,最后的胜利者却是北周,它成功击败北齐,收复整片北方领土。遗憾的是,尖锐的北周即将大一统之时,却被杨坚篡权,建立了隋朝。五位北周君主,其中三…

墙裂推荐这10个英语听力网站,用好你听力就无敌了!

听力的提升是很多托福备考党以及英语学习者非常关注的一个问题,除了备考时用到的官方资料外,日常提升英语口语能力还有哪些资料/渠道呢?下面推荐一些用于日常提升英语听力的网站,不管是泛听还是精听,都是不错的选择哦! 60-Second Science 60-Second Science 是科学美国人…

27种常见全责交通事故动态图演示!老司机也得看

开车久了难免出点小事故 刮刮蹭蹭或者碰到213司机今天整理了27种常见全责交通事故 的动态图演示 生动形象 责任归属 一目了然 再遇到事儿不担心被人忽悠了展开全文

喜讯!热烈祝贺广东顺之旅获评2023年度“广东省4A级旅行社”!

点击标题下「广东顺之旅」可快速关注热烈祝贺 广东顺之旅国际旅行社有限公司 在严苛的审核和层层筛选下,脱颖而出 获评2023年度广东省4A级旅行社 此次评定,全省仅13家旅行社获评 成为广东省2023年度5A和4A级旅行社 其中佛山仅两家!均来自顺德区!展开全文顺之旅的发展离不开…

电波回荡不息,北京人民广播电台成立75周年

1949年2月2日(农历1949年1月2日),北平新华广播电台开始播音。1949年2月2日11点45分,播音员齐越在《大路歌》的旋律中用“北平新华广播电台”(原北京人民广播电台的前身)的呼号开始播音,从此人民广播的声音响彻古城北平上空。 据《北京人民广播电台志1949-1993》,1949 年…

原创长相磕碜别硬吹男神,这8位“中国式”美男,打了多少小鲜肉的脸

随着内娱审美风向的改变,“小鲜肉”在演艺圈吃香了起来。 一个个妆容精致,五官平淡的男孩子登上舞台,被冠以了“美男”、“男神”之名。许多网友却在欣赏过他们的姿态之后,感到有些失望,并且发问: “难道我们中国式的美男子应该是这么一副浓妆艳抹的做作样子吗?”中国传…

大六壬神课金口诀(十二神将寓意)详解

亥:登明 01 概念: 害怕、胆怯、疑惑、惊讶、危险、恐惧、炫丽、炫耀、眩晕、醉、色情、性崇拜、淫秽、隐私、偷情、偷盗、偷看、肮脏、沉溺、流动、湿、洗澡、光明、黑暗中的光、漂亮、祈祷、祈索、召见、欺诈、争斗、圆形的、 02 地理: 有水的地方、河流、湖、瀑布、水井、…

全国各地市车牌字母、电话区号、行政代码汇总就喜欢看外卖差评,笑死人了

(一)华北地区 我国华北地区包括北京市、天津市、河北省、山西省、内蒙古自治区5个省级行政单位。 北京市:区号010,行政区划代码110000 天津市:区号022,行政区划代码120000华北地区北京市天津市河北省山西省内蒙古自治区车牌省份简称京津冀晋蒙A京A市区津A公交车、公安车冀…

小时候的你是被”老巴子“吓大的吗?

动动大拇指!快快关注哟! “老巴子”,是土家人在孩子调皮和不听话时,用来呼哄吓诈的一个标签性名词。老巴子其实就是老虎。为什么要将老虎称为“老巴子”呢? 这与土家人的民族源流有关。土家族源于古代巴人。“巴”字的起源,为蛇昂首猎食的古象形字。 巴人应该就是蛇人,是…

2024年中国消费者报告—走向多元化-英敏特

随着中国经济发展的重心由速度向质量转变,人口结构经历长期调整,以及宏观环境更加复杂多变,消费者在追求品质生活的过程中将会从多维度衡量品牌和产品所带来的价值。多元化消费将成为未来中国市场的一个重要趋势。 报告部分内容如下:展开全文公众号:《BR行研社》