Modbus协议备忘

介绍

简介

Modbus 是一种应用层报文传输协议,由 Modicon 公司在 1979 年发布,是为了解决 PLC 通信而研发的协议。

因为 Modbus 是开源的且无著作权要求、易于部署维护、可靠性强的特性,所以 Modbus 已经成为工业领域通信协议事实上的业界标准,并且现在是工业电子设备之间常用的连接方式。

MODBUS 是一个请求/应答协议,包括ASCII、RTU、TCP等,是1979年开发出的一种工业通信协议,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是通过何种硬件方式进行通信的

硬件接口

  • RS-232
  • RS-422
  • RS-485
  • 以太网

传输模式

  • RTU
  • ASII
  • TCP

TCP和RTU比ASCII常见,其中TCP的使用频率更高一些

主站与从站

通讯只能由主站发起,从站回应

一个主站可以连接多个从站,且主站有且只能有一个,从站至少一个

tcp模式下:一般分为服务器与客户端,可认为客户端为主站,服务器为从站

协议及相关术语

存储区数据模型

在modbus中定义了4种不同的数据模型,具体如下

名称 数据类型 访问类型 操作码(功能码)
线圈 位(bit) 读写 01H 05H 0FH
离散量输入 位(bit) 只读 02H
保持寄存器 字(word,ushort) 读写 03H 06H 10H
输入寄存器 字(word,ushort) 只读 04H

对应英文(一个表有些拥挤)

中文 英文
线圈 Coils
离散量输入 Discrete Inputs
保持寄存器 Holding Registers
输入寄存器 Input Registers

同许多规范一样,不同行业可能会有不同的称呼。如保持寄存器可以被称为输出寄存器,而线圈可以被称为数字离散输出

功能码

一般常用到的有以下几种:

功能码 描述 PLC地址 寄存器地址 位/字操作 操作数量
01H 读线圈 00001-09999 0000H-FFFFH 单个或多个
02H 读离散量输入 10001-19999 0000H-FFFFH 单个或多个
03H 读保持寄存器 40001-49999 0000H-FFFFH 单个或多个
04H 读输入寄存器 30001-39999 0000H-FFFFH 单个或多个
05H 写线圈 00001-09999 0000H-FFFFH 单个
06H 写保持寄存器 40001-49999 0000H-FFFFH 单个
0FH 写线圈 00001-09999 0000H-FFFFH 多个
10H 写保持寄存器 40001-49999 0000H-FFFFH 多个

数据帧

RTU

从站地址 功能码 数据 CRC
1byte(1字节)(8bit) 1byte 0-252byte 2字节(CRC低|CRC高)

数据位

一般请求为 2字节 表示要读取的 线圈(或寄存器)的起始地址 + 2字节数据表示要读取的线圈(或寄存器)的个数

应答数据位为 1字节表示数据的字节数 + N字节表示读取的线圈状态(或寄存器)数据

在读线圈时,如果读取到的线圈状态数据不是8的整数,则会在后面填充0使其满足 8 位的倍数

用表格展示(这里使用线圈演示)

请求PDU

功能码 1个字节 0x01
起始地址 2个字节 0x0000-0xFFFF
线圈数量 2个字节 1-2000(0x7D0)

响应PDU

功能码 1个字节 0x01
字节数 1个字节 *N(输入数量/8,余数不等于0,那么N = N+1)
线圈状态 n n=N 或N+1

样例

线圈读取(0x01)样例

发送:

假设从站地址为01H,读取线圈寄存器的起始地址为0017H,读取38(十进制)个寄存器,指令结构如下表:

从站地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位
01 01 00 17 00 26 0D D4

响应

各线圈的状态与数据内容的每个bit对应,1代表ON,0代表OFF.若查询线圈的数量不是8的倍数,则在最后一个字节的高位补0.

从站地址 功能码 返回字节数 数据1 数据2 数据3 数据4 数据5 CRC高位 CRC低位
01 01 05 CD 6B B2 0E 1B 44 EA

第一个字节CDH(0xCD)对应线圈0017H到001E的状态,转为二进制是11001101,其中bit0对应0017H,bit7对应001E,如下表:

001EH 001DH 001CH 001BH 001AH 0019H 0018H 0017H
1 1 0 0 1 1 0 1
ON ON OFF OFF ON ON OFF ON

保持寄存器读取(0x03)样例

发送

有一个从站是温湿度传感器,从站地址为 1,它会将采集到的湿度写入保持寄存器的 40001 区块中;温度写入保持寄存器的 40002 区块中。此时我们发送读取保持寄存器请求去获取它的温湿度信息。

从站地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位
01 03 00 00 00 02 C4 0B

响应

从站地址 功能码 返回字节数 数据1 数据2 数据3 数据4 CRC高位 CRC低位
01 03 04 01 46 01 3B 5A 59

前两个字节为湿度(换算成十进制为 326 ,即 32.6% ),后两个字节为温度(十进制为 315,即 31.5 摄氏度)

注:以上部分样例来源于网上公开数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容

  • 概述 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化部门的一部分,现在Mo...
    得奕阅读 1,932评论 1 0
  • 电力系统是一个综合化的系统,作为一个熟练的电工,对于通信有着一定的认识。否则很多问题,我们将无从下手。首先我们从广...
    洪城小电工阅读 117,362评论 8 33
  • MODBUS TCP协议实例数据帧详细分析[https://blog.csdn.net/weixin_415425...
    andycheng阅读 1,254评论 0 0
  • 1 简述 Modbus寄存器分为四种,如表1.1所示: 表1.1 寄存器分类 2 常用功能码 Modbus中常用的...
    lakerszhy阅读 45,281评论 0 16
  • 一、Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制...
    lx_jian阅读 46,079评论 2 14