分类

简称

起始地址

结束地址

能够使用的功能码

输出逻辑线圈/(可读写位)/(DI/O)(如继电器开关控制)

0x

00000

09999

0x01读一组逻辑线圈

0x05写单个线圈

0x0f写多个线圈

触点/开关量输入/只读位(DI)如按键是否按下

1x

10000

19999

0x02读一组开关输入

输入寄存器(AI)实时数据如AD采集数据。

3x

30000

39999

0x04读一个或多个输入寄存器

保持寄存器(AI/O)

如设置的各种参数

4x

40000

49999

0x03读一个或多个保持寄存器的值

0X06写单个保持寄存器

0X10写多个保持寄存器

0x01:   读一组逻辑线圈,如读8个继电器输出状态。

0x0F:  写一组逻辑线圈。如同时控制8个继电器

0x05:  写单个逻辑线圈,如设定单个继电器

0x02:  读一组开关量的输入,如读显示板是否有按键按下、水流开关的状态。

0x03:  读一个或多个保持寄存器,如读一个或多个设置参数

0x010: 写一个或多个保持寄存器,如写设置参数

0x06:  写单个保持寄存器,如写单个设置参数

0x04:   读一个或多个输入寄存器,如读具体的按键值,AD采集的信息等

modbus协议功能码和常见问题

Pasted from <http://blog.csdn.net/educast/article/details/8159510

1单片机开发与PLC开发的异同:

MODBUS协议是专门针对485总线设备(例PLC)开发,寄存器的定义要严格按照其地址范围;功能码的功能定义及定义的寄存器地址与功能码的使用要要严格符合。如上图。

而当单片机开发用串口点对点,可能不会完全遵守MODBUS协议具体体现在2方面:

  首先是定义的寄存器地址范围,应结合不同单片机RAM的大小和项目得实际需求定义起始范围和大小。方法如在RAM区的不同区域定义不同功能的数组:

IOX[N]:输出线圈,用来进行继电器的操作

IX[M]:开关输入  ,用于识别按键是否按下的查询。

其它:功能码的使用也不会严格限定在指定的PLC地址范围。

2modbus寄存器的地址说明:

有两套规则,一套称为PLC地址,为5位十进制数,例如40001,PLC地址40001意味着该参数类型为保持寄存器。另一套是协议地址,协议地址为0x0000,这里面有对应关系,去掉PLC地址的最高位,然后剩下的减1即可。这会存在一个问题,PLC地址30002和PLC地址40002的协议地址同为0x0001,此时访问时是不是会冲突呢。亲们,当然不会了,30001为输入寄存器,需要使用04指令访问,而40001为保持寄存器,可以使用03、06和16指令访问。注意定义的寄存器地址像数组一样都是从0开始的,即通讯中的地址比实际地址小“1”

http://blog.sina.com.cn/s/blog_6ab9638f0100vqol.html

3线圈寄存器:就是可以单独进行位控制的BITS寄存器,类似C51的位带结构体

Typedef struct

{

Bit:0

Bit:1

..

Bit:14

Bit:15

}COIL_REG

http://blog.sina.com.cn/s/blog_598b27cd0101rphm.html

4modbus帧结构:

ADU:应用数据单元

PUD:协议数据单元

freemodbus中如何判断帧结束

modbus协议中没有明显的开始符和结束符,而是通过帧与帧之间的间隔时间T3.5来判断的。超过T3.5就认为收到了新的帧。接下来就可

以处理数据了,首当其冲的就是判断帧的合法性。Modbus通过时间来判断帧是否接受完成,自然需要单片机中的定时器配合。

使用串口发送完成中断:避免丢失最后一个字节内容

Pasted from <http://www.360doc.com/content/14/0313/22/7991404_360395398.shtml>

MODBUS-寄存器与功能码学习的更多相关文章

  1. MODBUS协议整理——功能码简述

    1.Modbus简介——来自维基百科 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的.Modbus是工业领域通信协议的业界标准,并且现在是工业电 ...

  2. ModbusTCP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码

    现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Modbus这个协议并不会做很多介绍. 好了,我们开始吧. 常用的功能码其实也没多少.我也就按 ...

  3. modbus 寄存器介绍

    modbus 的查询命令 命令 地址开始(两个地址)     地址长度(两个地址)          检验 01  xx     xx xx                              ...

  4. DNP3协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码

    现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Dnp3这个协议并不会做很多介绍. 那我们就开始吧 上图则为dnp3协议整体的报文模型(点击红 ...

  5. C#ModBus Tcp的学习及Master的实现

    Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式. 所以这也是我们工控领域软件开发的所必懂的通讯协议,我也是初次学习,先贴上我的学习笔记 一 ...

  6. 20170222==(MODBUS读取多个寄存器)

    MODBUS读取多个寄存器(功能码04) 为了简单我这里只用4个寄存器,当让你也可以用125个寄存器,但是最多也只能用125个寄存器的.每个寄存器有上面的表知道为一个字的大小即2个字节或者叫16比特位 ...

  7. RS485通信和Modbus协议(转)

    转自:http://www.51hei.com/bbs/dpj-23230-1.html 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换.最初采用的方式是RS232接 ...

  8. Modbus协议和应用开发介绍

    因业务需要了解Modbus协议的使用,因此对Modbus的协议,以及相应的C#处理应用进行了解,针对协议的几种方式(RTU.ASCII.TCPIP)进行了封装,以及对Modbus的各种功能码的特点进行 ...

  9. C# MODBUS协议 上位机(转)

    源:C# MODBUS协议 上位机 C#写了一款上位机监控软件,基于MODBUS_RTU协议. 软件的基本结构: 采用定时器(Timer控件)为时间片. 串口采用serialPort1_DataRec ...

随机推荐

  1. kuangbin_ShortPath L (POJ 2502)

    dij部分还是跟模板差不多的 但是这题的难点是处理输入 或者说理解题意 事实上每个点之间都是可以走的......WA了好几发就因为没意识到同一条路线上的各个站点之间居然也可以走得比车子快.... PS ...

  2. 黑马程序员——JAVA基础之异常处理机制

    ------- android培训.java培训.期待与您交流! ---------- 异常:就是程序在运行时出现不正常情况. 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式 ...

  3. CentOS 6 下RPM方式安装MySQL5.6

    CentOS 6 下RPM方式安装MySQL5.6 1. 下载Linux对应的RPM包,如:CentOS6.7_64对应的RPM包,如下:[root@mysql ~]# ll总用量 113808-rw ...

  4. 简单实用的Android ORM框架TigerDB

    TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...

  5. linux free命令中buffer与cache的区别

    linux free命令中buffer与cache的区别 2012-05-15      个评论       收藏    我要投稿 linux free命令中buffer与cache的区别   ~$ ...

  6. Response.Redirect在新窗口打开网页

    来自:http://www.woosky.net/show.asp?id=761 Respose.Write("<script language='javascript'>win ...

  7. excel 组及分级显示制作教程

    1.思路:利用“组及分级显示”功能,将每一个项目作为“摘要行”,将需要被“收起”或“展开”的内容,也就是项目所包含的内容作为“明细数据行.2.制作方法: 方法1:使用手工“组合”例如下图中,A2代表的 ...

  8. 控制台程序实现利用CRM组织服务和SqlConnection对数据库中数据的增删改查操作

    一.首先新建一个控制台程序.命名为TestCol. 二.打开App.config在里面加入,数据库和CRM连接字符串 <connectionStrings> <add name=&q ...

  9. MySQL 体系结构以及各种文件类型学习汇总 (转)

    1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...

  10. Redis 实现高效不遗漏的事件封装

    虽然Redis有订阅功能,但是订阅功能是实时的,过了这个点,就接收不到消息了. 同时,如果订阅的客户端因为某些特殊原因shutdown了,那也就找不回未处理完整的订阅事件了. 但好在,Redis还有一 ...