编码器工作原理及在工业数据采集中的应用 您所在的位置:网站首页 数据采集赚钱吗 编码器工作原理及在工业数据采集中的应用

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

2024-07-12 10:52| 来源: 网络整理| 查看: 265

编码器工作原理及在工业数据采集中的应用 一、编码器原理二、编码器与运动控制卡实际接线方法NPN输出和PNP输出接法:电压输出接法:差分输出接法: 三、板卡与计算机连接四、各平台调用板卡动态链接库方法详解C语言:Labview:LabWindows/CVI:C#:VB(Visual Basic):

一、编码器原理

编码器属于传感器一类,常用于速度、距离、角度、位置等的测量。例如电机的转速,就可以使用编码器进行实时测量。 接下来我们来了解一下编码器的工作原理。首选,编码器主要分为线性编码器和旋转编码器两大类。如图1和图2所示:

在这里插入图片描述 在这里插入图片描述

今天我们主要来聊图2这种旋转编码器。在一般情况下,旋转编码器主要可以分为绝对式以及增量式。 绝对式旋转编码器,顾名思义,就是编码器中每一个角度和位置输出的编码值都是固定的。在这种编码器内部有许多通道孔洞的排列组合,每一种组合代表一个编码值。如图3。 在这里插入图片描述 正因每一个编码值都是有固定对应的组合,所以就算编码器突然断电也能记住当前编码值。但当编码器旋转超过360度,编码值就会回到原点,所以绝对式编码器的旋转角度只能在360度以内,要进行超过360度时的旋转计数的话则需要用到多圈绝对值编码器。 聊完绝对值编码器,接下来说说今天的重头戏,也就是我们经常用到的增量式旋转编码器。首选我们来看一下工作原理图4。 在这里插入图片描述

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

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

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

NPN输出和PNP输出接法:

首先我们来说说NPN输出型编码器的接线方法,此处以编码器A相端口为例进行说明。首先来看一下模拟电路接线,如图6: 在这里插入图片描述 由图可知,对于NPN型集电极开路输出编码器,我们需要将编码器的A端与板卡的EA-端口相连,COM端与电源负极相连,VDC端与电源正极相连的同时也要和板卡的EA+端口相连。 当我们接通电源时,电流就会从电源正极出发,从板卡EA+端口进入板卡经过内部光耦,然后从EA-端口流出经过编码器A相端,再经过编码器内部的NPN型三极管后回到电源负极,以此完成一个回路进行工作。 关于PNP输出型编码器接线方法,和NPN型的类似,如图7: 图7.PNP输出型编码器接线图 只需要将编码器的A端和板卡的EA+端口相连,然后com端与板卡EA-端口相连并接至电源负极即可。同时编码器VDC端接电源正极。

电压输出接法:

电压输出接法是在NPN输出接法的基础上进行了改造,也可以归类为NPN型输出,它在电源和集电极之间接了一个上拉电阻,使得集电极和电源之间有一个稳定的电压。如图8: 在这里插入图片描述 关于这种编码器和板卡的接线方法,参考NPN输出型编码器接线法即可。

差分输出接法:

差分模式接线相对比较简单,我们还是用编码器的A端口作为接线演示说明。只要将编码器上的A+和A-端口分别与板卡的EA+和EA-两个端口对应接好即可,如图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,记得设置工程名称以及选择保存位置。如图: 在这里插入图片描述 在这里插入图片描述 新建完成后,我们点击侧边栏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内的函数。如图: 双击该按钮可以进入按钮的详细属性设置,可以在此处设置按钮上显示的文本以及回调函数名称,如图: 在这里插入图片描述 在这里插入图片描述 在弹出的选择框内勾选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,如图: 在这里插入图片描述 在这里插入图片描述 回到Visual Studio,打开左侧工具栏,选择并向窗体放入一个Button控件且调整成自认为合适的大小。如图: 在这里插入图片描述 完成后,我们双击Button控件即可进入后台编程界面。如图: 在这里插入图片描述 接着,我们要用一个语句进行DLL文件的声明: Declare Function 函数名 Lib “DLL文件名” (ByVal 参数名 As 数据类型) As 返回值类型 然后就可以直接在Button控件的事件里面使用声明过的函数了,如图: 在这里插入图片描述 以上,便是在Visual Basic内使用板卡DLL文件的方法。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有