Modbus:v1.1b 功能介绍
2019-04-19 16:02:00 0 举报
AI智能生成
Modbus笔记
作者其他创作
大纲/内容
通用描述
协议描述
主从通信模式(即Master/Slave通信模式)
数据Encoding
数据模型
地址模型
事务
通讯方式和通讯模式
以太网
Modbus TCP
允许使用更多的地址
仅受限于网络物理层的能力
通常从站的数量一般在1024个左右
可以采用多主站架构
传送速率可以达到GB/s
异步串行传输
Modbus RTU
支持RS-232/422/485
采用二进制表现形式以及紧凑数据结构
最多传送255个字节的数据
CRC校验码
Modbus ASCII
支持RS-232/422/485
采用ASCII码传输,并且利用特殊字符作为其字节的开始与结束标识
高速令牌传递网络
Modbus PLUS
寄存器种类
1:线圈状态
输出端口,可设定端口的输出状态,也可以读取该位的输出状态;
2:离散输入状态
输入端口,通过外部设定改变输入状态,可读但不可写;
3:保持寄存器
控制器运行时被设定的某些参数,可读可写;
4:输入寄存器
控制器运行时从外部设备获得的某些参数,可读不可写;
功能码目录
公共功能码定义
1~64
73~100
110~127
用户定义功能码
65~72
100~110
保留功能码
数据访问功能码
Bit access
Physical Discrete Inputs
Read Discrete Inputs
Internal Bits Or Physical coils
16 bit access
File record access
Diagnostics
Other
功能码描述
01 (0x01)
Read Coils
读线圈状态
02 (0x02)
Read Discrete Inputs
读离散输入状态
03 (0x03)
Read Holding Register
读保持寄存器
04 (0x04)
Read Input Register
读输入寄存器
05 (0x05)
Write Single Colis
写单个线圈寄存器
06 (0x06)
Write Single Register
写单个保持寄存器
07 (0x07)
Read Exception Status
(Serial Line Only)
读异常状态
08 (0x08)
Diagnostics
(Serial Line Only)
回送诊断校验
11 (0x0B)
Get Comm Event Counter
(Serial Line only)
读取事件计数
12 (0x0C)
Get Comm Event Log
(Serial Line only)
读取通信事件记录
15 (0x0F)
Write Multiple Coils
写多个线圈状态
16 (0x10)
Write Multiple registers
写多个保持寄存器
17 (0x11)
Report Slave ID
(Serial Line only)
报告从机标识
20 (0x14)
Read File Record
读取通用参数(584L)
21 (0x15)
Write File Record
写入通用参数(584L)
22 (0x16)
Mask Write Register
读取开关量输入寄存器
23 (0x17)
Read/Write Multiple registers
读/写多个保持寄存器
24 (0x18)
Read FIFO Queue
读先进先出队列
43 ( 0x2B)
Encapsulated Interface Transport
43 / 13 (0x2B / 0x0D)
CANopen General Reference Request and Response PDU
43 / 14 (0x2B / 0x0E)
Read Device Identification
22~64
保留作扩展功能备用
65~72
保留以备用户功能所用
73~119
非法功能
120~127
保留 留作内部作用
128~255
保留 用于异常应答
异常响应
常见问题
主站/Master/Client/上位机
从站/ Slave /Server/下位机
从站/ Slave /Server/下位机
发出数据请求的一方为客户端(Client)
做出数据应答的一方为服务器(Server)
做出数据应答的一方为服务器(Server)
主站发出命令,从站响应主站的命令并应答回传数据给主站;
从站在未接收到任何请求,则什么都不做;
主站不接收任何请求,1个网络一般是1主多从。
从站在未接收到任何请求,则什么都不做;
主站不接收任何请求,1个网络一般是1主多从。
RTU协议是采用3.5个字节的空闲时间作为指令的起始和结束
报文前有大于 3.5 个字节 的空闲那么认为报文开始
报文后有 3.5 以上个字节的间隔就认为报文结束
串口发送一帧数据时,两个字节的间隔时间是多少?
如果波特率为9600,发送一个位需要的时间为1/9600s=0.0001042s=0.1042ms
那发送这10个字节数据给接收方需要的时间为:10*1.042ms = 10.42ms
不同波特率传输时间计算
串口发送一帧数据共10bits
包括:1个起始位 + 8个数据位 + 1个停止位 = 10bits
高延迟、时序问题
最多传送255个字节的数据
0 条评论
下一页