知识分享 | Modbus的原理及使用
供稿:固高科技股份有限公司
- 关键词:固高科技,Modbus
- 摘要:Modbus是Modicon(施耐德)公司于1979年开发的串行通信协议。它最初设计用于公司的可编程逻辑控制器(PLC)。Modbus是一种开放式协议,支持使用RS232/RS485/RS422协议的串行设备,同时还支持调制解调器。
Modbus是Modicon(施耐德)公司于1979年开发的串行通信协议。它最初设计用于公司的可编程逻辑控制器(PLC)。Modbus是一种开放式协议,支持使用RS232/RS485/RS422协议的串行设备,同时还支持调制解调器。
Modbus通过设备之间的串行线进行数据传输。最简单的设置是使用一根串行电缆连接两个设备(主设备和从设备)上的串行端口。数据以称为比特的1和0的序列发送。每个位都作为电压发送。0被发送为正电压,1被发送为负电压。
最常用Modbus协议总共有以下四种:Modbus ASCII,Modbus RTU,Modbus Plus,Modbus TCP。
Modbus是一种串行通信协议,是应用于电子控制器上的一种通用语言,由于其协议简单易用,且没有版权要求,目前已经成为工业领域通信协议的实施标准。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信;已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
通过Modbus协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。
翻译一下:Modbus是用来通信的,是一种用于工业控制的协议,具有免费使用、上手简单、修改方便三大特点,已被广泛使用。
数据类型
Modbus以一系列具有不同特征表格上的数据模型为基础,四个基本表格如下表所示:
对于基本表格中任何一项,协议都允许单个地洗择 65536 个数据项,而目设计那些项的读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。
案例展示
数据模型这个概念有限抽象,让我们通过以下两个示例加深理解。
示例1: 有 4 个独立块的设备
示例描述:一个设备中的数据结构,含有数字量和模拟量、输入量和输出量。由于不同块中的数据不相关,每个块是相互独立。使用Modbus数据模型,按不同 Modbus功能码访问每人块,实现原理如下所示:
以下是固高伺创的485通讯功能介绍:
首先要确定驱动器的型号是否支持485 和 422 通讯。
l 只支持RTU通讯
l 支持的功能码:0x03,、0x06、0x10
确定好型号之后需要确定接线定义。
422引脚定义如下:
485引脚定义如下:
驱动器模式配置:
应当配置为轮廓位置模式
报文格式:
报文简单示例
1.报文简单示例:
驱动器拨码设置为1
功能码 0x03 示例说明
读取 0x2000 多圈编码器数值,发送的报文如下:
串口发送报文(Hex 显示):
01 03 20 00 00 02 CF CB
串口接收报文(Hex 显示):
01 03 04 00 00 00 03 BA 32 //读到数值是 0x0003
功能码 0x06 示例说明
写 0x2005 地址变量,发送的报文如下:
串口发送报文(Hex 显示):
01 06 20 05 00 14 92 04 //写的数据是 0x0014
串口接收报文(Hex 显示):
01 06 20 05 00 14 92 04
功能码 0x10 示例说明
写 0x607F 地址变量,发送报文如下:
串口发送报文(Hex 显示):
01 10 60 7F 00 02 04 00 00 C3 50 4C 05
串口接收报文(Hex 显示):
01 10 60 7F 00 02 6E 10
Modbus实用示例1
2.Modbus实用示例:
(使用modbus通讯控制,进行绝对运动)
以下为操作步骤:
a.再设模式为01
b.读取模式是否为01
先设置用户模式,必须在总线控制下,之后再上使能。
c.先设控制字06
d.再设控制字07
e.再设控制字0F
以上三步为使能步骤
f.再设目标位置,加速度,减速度,速度
(此示例没有设置速度)
g.再设置控制字1F触发运动
Modbus实用示例2
3. Modbus实用示例:
(使用modbus通讯控制,进行速度运动)
以下为操作步骤:
a.先设置模式为03
b.再读取模式是否为03
c.再设控制字06→07→0F(使能)
d.再设置速度
速度分别为1000,10000,0(比如输入分辨率设置 p=10000,那么当控制器写 60FF 是 20000 时,对于的速度 v=20000pulse/s,转换为 r/s,就是 n=v/p(2 r/s))。
如果设置的输入分辨率为10000,相当于速度分别为6rpm,60rpm,0。