0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编码器脉冲计数采集模块的详细介绍

聂先生 来源:聂先生 作者:聂先生 2022-07-13 13:47 次阅读

pYYBAGLOW8-AHq7gAALgpujXYOY224.png

poYBAGLOW9iAQCGpAAGEvdJlFDw877.png

poYBAGLOW-GAN6PQAADnw_HOkz0554.png

poYBAGLOW-mAE54jAAC0_c7meUw641.png

pYYBAGLOW_iAd4vxAAP1zpCI4og533.png

poYBAGLOW_iAduuLAADjmcZ1aEo851.png

poYBAGLOXAKAABKtAAKF1HdSOQw915.png

Modbus TCP协议

(1)、Modbus TCP数据帧:

在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式。图3所示,Modbus TCP数据帧包含报文头、功能代码和数据3部分。

poYBAGLOXBqAJOJgAAA7R9PLfHQ147.png

图6:TCP/IP上的MODBUS的请求/响应

(2)、MBAP报文头描述:

MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如表1所示。

表1:MBAP报文头

长度(B) 描述
传输标识 2个字节 标志某个MODBUS询问/应答的传输
协议标志 2个字节 0=MODBUS协议
长度 2个字节 后续字节计数
单元标识符 1个字节 串行链路或其它总线上连接的远程从站的识别码

(3)、Modbus功能代码:

Modbus功能码分为3种类型,分别是:

(1)公共功能代码:已定义好的功能码,保证其唯一性,由Modbus.org认可;

(2)用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用的唯一性。如变为公共代码,需交RFC认可;

(3)保留的功能代码,由某些公司使用在某些传统设备的代码,不可作为公共用途。

在常用的公共功能代码中,IBF96支持部分的功能码,详见如下:

功能码 名称 说明
01 Read Coil Status 读取线圈状态 1表示高电平, 0表示低电平。
03 Read Holding Register 读保持寄存器 1表示高电平, 0表示低电平。
05 Write Single Coil 写单个线圈 1表示三极管导通, 0表示三极管断开。
06 Write Single Register 写单个寄存器 1表示三极管导通, 0表示三极管断开。
15 Write Multiple Coils 写多个线圈
16 Write Multiple Registers 写多个寄存器

(4)、支持的功能码描述

01(0x01)读线圈

在一个远程设备中,使用该功能码读取线圈的1 至2000 连续状态。请求PDU详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈1-16 为0-15。

根据数据域的每个位(bit)将响应报文中的线圈分成为一个线圈。指示状态为1= ON和0= OFF。第一个数据作为字节的LSB(最低有效位),后面的线圈数据依次向高位排列,来组成8位一个的字节。如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余位(bit)(一直到字节的高位端)。字节数量域说明了数据的完整字节数

功能码01举例,读8通道DI数据,寄存器地址00033~00040:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 04
单元标识符 01 单元标识符 01
功能码 01 功能码 01
起始地址Hi 00 字节数 01
起始地址Lo 20 输出状态DI7-DI0 00
输出数量Hi 00
输出数量Lo 08

03(0x03)读保持寄存器

在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄存器1-16 为0-15。在响应报文中,每个寄存器有两字节,第一个字节为数据高位,第二个字节为数据低位。

功能码03举例,读8通道DI数据,寄存器地址40033:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 05
单元标识符 01 单元标识符 01
功能码 03 功能码 03
起始地址Hi 00 字节数 02
起始地址Lo 20 寄存器值Hi(0x00) 00
寄存器编号Hi 00 寄存器值Lo(DI7-DI0) 00
寄存器编号Lo 01

05(0x05)写单个线圈

在一个远程设备上,使用该功能码写单个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF状态。十六进制值0xFF00请求线圈为ON。十六进制值0x0000请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。

正确的响应应答是和请求一样的。

功能码05举例,设置通道DO0为ON,也就是为1,寄存器地址00001:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 06
单元标识符 01 单元标识符 01
功能码 05 功能码 05
输出地址Hi 00 输出地址Hi 00
输出地址Lo 00 输出地址Lo 00
输出值Hi FF 输出值Hi FF
输出值Lo 00 输出值Lo 00

06(0x06)写单个寄存器

在一个远程设备中,使用该功能码写单个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。

正确的响应应答是和请求一样的。

功能码06举例,设置通道DO0~DO7全部为1,16进制为0xFF,寄存器地址40001:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 06
单元标识符 01 单元标识符 01
功能码 06 功能码 06
寄存器地址Hi 00 寄存器地址Hi 00
寄存器地址Lo 00 寄存器地址Lo 00
寄存器值Hi 00 寄存器值Hi 00
寄存器值Lo FF 寄存器值Lo FF

15(0x0F)写多个线圈

在一个远程设备上,使用该功能码写多个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF状态。数据由16进制换算成二进制按位排列,位值为1请求线圈为ON,位值为0请求线圈为OFF。

功能码15举例,设置通道DO0,DO1为ON,也就是为00000011,寄存器地址00001:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 06
单元标识符 01 单元标识符 01
功能码 0F 功能码 0F
开始地址Hi 00 开始地址Hi 00
开始地址Lo 00 开始地址Lo 00
线圈数量Hi 00 线圈数量Hi 00
线圈数量Lo 02 线圈数量Lo 02
字节数 01
输出值 02

16(0x10)写多个寄存器

在一个远程设备中,使用该功能码写多个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。功能码16举例,设置通道DO0和DO1的PWM值为5和6,寄存器地址40001:

请求 响应
字段名称 十六进制 字段名称 十六进制
MBAP报文头 传输标识 01 MBAP报文头 传输标识 01
00 00
协议标志 00 协议标志 00
00 00
长度 00 长度 00
06 06
单元标识符 01 单元标识符 01
功能码 10 功能码 10
开始寄存器地址Hi 00 开始寄存器地址Hi 00
开始寄存器地址Lo 00 开始寄存器地址Lo 00
寄存器数量Hi 00 寄存器数量Hi 00
寄存器数量Lo 02 寄存器数量Lo 02
字节数 04
寄存器值Hi 00
寄存器值Lo 05
寄存器值Hi 00
寄存器值Lo 06
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    3578

    浏览量

    134036
  • 寄存器
    +关注

    关注

    31

    文章

    5304

    浏览量

    119889
  • MODBUS
    +关注

    关注

    28

    文章

    1759

    浏览量

    76779
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1348

    浏览量

    78949
  • 采集模块
    +关注

    关注

    0

    文章

    135

    浏览量

    9537
收藏 人收藏

    评论

    相关推荐

    二进制编码器与绝对编码器的区别

    称为增量编码器,是一种相对编码器。它通过检测轴的旋转方向和步数来提供位置信息。 工作原理 二进制编码器的工作原理基于脉冲计数。当轴旋转时,编码器
    的头像 发表于 11-06 09:54 257次阅读

    模块编码器原理 精度与分辨率

    模块编码器原理 精度与分辨率:编码器是一种将旋转位移或直线位移转换成电信号的装置。它通过测量机械部件的运动,并将其转化为数字脉冲或模拟信号输出,从而实现对位置、速度和方向等参数的精确
    的头像 发表于 08-12 11:13 259次阅读
    <b class='flag-5'>模块</b>式<b class='flag-5'>编码器</b>原理 精度与分辨率

    怎么看编码器上的参数?

    )编码器参数的含义 在使用编码器时,需要设置一些参数以调整编码器的性能,这些参数包括: 1. 分辨率:表示编码器输出的脉冲数,通常是每转的
    的头像 发表于 06-23 16:16 1350次阅读
    怎么看<b class='flag-5'>编码器</b>上的参数?

    伺服电机编码器的分辨率是多少

    伺服电机编码器的分辨率是衡量编码器性能的重要指标之一,它直接影响到伺服系统的精度和稳定性。本文将详细介绍伺服电机编码器的分辨率,包括其定义、
    的头像 发表于 06-17 11:13 1327次阅读

    脉冲计数器的工作原理和基本结构

    于通信、雷达、测控、电力等领域。本文将详细阐述脉冲计数器的工作原理和基本结构,并探讨其在实际应用中的重要性。
    的头像 发表于 05-15 17:14 2015次阅读

    脉冲计数器的分类和作用

    在电子技术和数字系统中,脉冲计数器作为一种基本而重要的逻辑器件,其应用广泛且功能多样。脉冲计数器不仅能够实现基本的计数操作,还具备多种输出功能和控制功能,满足了电力、石化、冶金、轻工、制药、航空等诸多领域的需求。本文将深入探讨
    的头像 发表于 05-15 17:11 931次阅读

    简单认识脉冲计数器

    在数字电路和电子测量领域中,脉冲计数器作为一种基本而重要的工具,其应用十分广泛。脉冲计数器,也被称为脉冲频率计或脉冲数计,主要用于统计和测量输入脉冲
    的头像 发表于 05-15 17:08 1588次阅读

    编码器脉冲信号(怎么测量 | 丢失怎么处理 | 丢失的原因)

    的功能。 2. 使用计数器或微控制:通常使用计数器或微控制来计量编码器脉冲信号。可以通过将
    的头像 发表于 04-17 15:24 2413次阅读

    foc sdk5.0如何使用库中AB编码器脉冲计数

    在使用foc sdk5.0过程中,我配置了光编码器来检测马达速度,但在使用过程中,发现控制不是很好,我想使用库中AB编码器脉冲计数,请告知应该用哪个函数? 谢谢!
    发表于 04-03 08:26

    编码器工作原理图

    按照工作原理编码器可分为增量式和绝对式两类 增量式编码器 1、增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用
    发表于 03-19 11:25 1136次阅读
    <b class='flag-5'>编码器</b>工作原理图

    编码器如何选择合适的脉冲

    编码器脉冲数的选择原则 1. 分辨率需求:编码器的分辨率决定了脉冲数的选择。在符合应用需求的前提下,应选择尽可能高的分辨率,以提高测量精度。 2、依据转速要求选取:依据设备的工作速度要
    的头像 发表于 03-01 13:36 2210次阅读
    <b class='flag-5'>编码器</b>如何选择合适的<b class='flag-5'>脉冲</b>数

    脉冲编码器输入信号有哪几种 | 编码器输出的脉冲信号有电压吗 | 脉冲编码器输入信号怎么调

    脉冲编码器输入信号有哪几种 脉冲编码器是一种用于测量运动、位置和速度的设备。它通过输出脉冲信号来表示运动的数量和方向。
    的头像 发表于 02-18 18:25 2381次阅读
    <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>输入信号怎么调

    编码器脉冲信号丢失怎么处理

    通常使用计数器或微控制来计量编码器脉冲信号。可以通过将编码器的输出信号接收到计数器或微控制
    的头像 发表于 01-18 14:44 2297次阅读

    详细介绍磁性编码器的工作原理

    磁性编码器是一种常见的测量装置,用于测量物体的位置和运动。它可以通过检测磁性材料的变化来进行精确的测量。本文将详细介绍磁性编码器的工作原理。
    的头像 发表于 01-15 09:53 3034次阅读
    <b class='flag-5'>详细</b><b class='flag-5'>介绍</b>磁性<b class='flag-5'>编码器</b>的工作原理

    如何获取编码器脉冲信号? | 编码器互补输出和推挽式输出的区别?

    介绍如何获取编码器脉冲信号。        一、使用示波器获取脉冲信号        1、将示波器连接到编码器输出端口,并选择合适的触发
    的头像 发表于 12-19 08:36 1593次阅读
    如何获取<b class='flag-5'>编码器</b>的<b class='flag-5'>脉冲</b>信号? | <b class='flag-5'>编码器</b>互补输出和推挽式输出的区别?