MEMOBUS通讯协议(485通讯)
RS485通信和Modbus协议

在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。
最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。
除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。
而RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且允许多个收发设备接到同一条总线上。
随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,本节课我们要讲解一下RS485通信和Modbus协议。
单单使用一块KST-51开发板是不能够进行RS485实验的,应很多同学的要求,把这节课作为扩展课程讲一下,如果要做本课相关实验,需要自行购买USB转485通信模块。
RS485通信实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方:1、接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。
2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。
3、接口使用信号线和GND与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。
4、传输距离有限,最多只能通信几十米。
5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。
针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点:1、我们在讲A/D的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。
尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。
单独传感器标准MODBUS485通讯协议

A、读取数据(标准modbus协议)地址默认为0x01,可以更改1、读取数据主机呼:0103 00 0000 01 840A从机答:0103 02 XX XX XX XX上面02,XX等均为一个字节。
数据为两个字节,高位字节在前。
每帧的开头和结尾至少有3。
5个字节时间的间隔.2。
读设备地址0020 CRC (4个字节)(读取:00 20 0068)00 20 Adress CRC (5个字节)3.写设备地址00 10 Adress CRC (5个字节)(地址设为01:00 10 01 BD C0)00 10CRCﻩ(4个字节)(返回:00 1000 7C)说明: 1.读写地址命令的地址位必须是00。
2。
Adress为1个字节,范围为0-255。
用户在为主机编程时,除了站号(地址)和CRC校验码之外,其它字节的字符均采用上面的内容不变。
主机格式中的读取点数为01。
从机回答帧中的功能码(03)和读单元字节数(01)不变。
计算CRC码的步骤:1、预置16位寄存器为十六进制FFFF(即全为1)。
称此寄存器为CRC寄存器;2、把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;3、把寄存器的内容右移一位(朝低位),用0填补最高位,并检查右移后的移出位;4、如果最低位为0:重复第3步(再次移位)如果最低位为1:CRC寄存器与多项式A001(10100000 0000 0001)进行异或;5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;6、重复步骤2到步骤5,进行下一步8位数据的处理;7、最后得到的CRC寄存器即为CRC码;8、将CRC结果放入信息帧时,将高低位交换,低位在前。
//************************************************************************************************//**名称:CRC16//**说明:CRC效验函数//**形参:*p效验帧的指针帧长 datalen//**返回值:效验字//************************************************************************************************unsignedint CRC16(unsigned char * p, uint16 datalen ){unsigned char CRC16Lo,CRC16Hi,CL,CH,SaveHi,SaveLo;int i,Flag;CRC16Lo =0xFF; CRC16Hi= 0xFF;CL = 0x01; CH= 0xA0;for(i=0;i<datalen;i++){CRC16Lo ^=*(p+i);//每一个数据与CRC寄存器进行异或for(Flag=0;Flag<8;Flag++){SaveHi = CRC16Hi; SaveLo=CRC16Lo;CRC16Hi〉〉= 1;CRC16Lo >>= 1 ; //高位右移一位,低位右移一位if ((SaveHi &0x01) ==0x01) //如果高位字节最后一位为1 CRC16Lo|=0x80 ; //则低位字节右移后前面补1否则自动补0if ((SaveLo&0x01) ==0x01) //如果LSB为1,则与多项式码进行异或{ CRC16Hi^= CH;CRC16Lo ^= CL;}}}return (CRC16Hi<〈8)|CRC16Lo;(返回后再进行高低位转换) }。
modbus通讯协议与485

Modbus通讯协议与4851. 什么是Modbus通讯协议?Modbus通讯协议是一种用于串行通信的协议,常用于工业自动化领域中的设备间通讯。
该协议设计简单、易于实现,因此被广泛应用于工业现场中。
Modbus协议支持多种物理介质,包括串口(如RS-232、RS-485)和以太网(如TCP/IP),其中,Modbus-RTU和Modbus-TCP是较为常见的两种实现方式。
2. 485总线介绍485总线是一种串行通信标准,广泛用于远距离数据传输。
它能实现多个设备通过同一条总线进行通信,且可实现传输距离高达1200米,通信速率可达到10 Mb/s。
相较于RS-232,RS-485是一个全双工的通信接口,并且支持多主设备,能够同时连接多个设备,使多个设备能够实现互相通信。
3. Modbus-RTU协议Modbus-RTU是一种基于二进制的Modbus协议实现方式,主要用于串口通信。
以下是Modbus-RTU常用的帧格式:起始符地址功能码数据区 CRC校验其中,起始符为11位的低电平信号,用于起始帧的标识,地址为设备的唯一标识符,功能码表示操作的具体功能,数据区包含要发送或接收的数据,CRC校验用于验证数据的完整性。
Modbus-RTU支持多种功能码,包括读取单个寄存器、读取多个寄存器、写单个寄存器等。
其通信速率可根据设备需要进行设置。
4. Modbus-TCP协议Modbus-TCP是Modbus协议的一种基于以太网的实现方式。
它使用常用的TCP/IP网络进行通信,能够实现高速、可靠的数据传输。
Modbus-TCP与Modbus-RTU相比,最明显的区别是使用了不同的物理介质和通信协议。
Modbus-TCP通过以太网进行数据传输,其帧格式与Modbus-RTU有所不同。
Modbus-TCP协议使用了标准的TCP/IP协议作为传输层协议,因此具有较高的灵活性和互操作性。
它可以与现有的以太网基础设施无缝集成,并且支持在局域网或广域网上进行远程数据传输。
RS485通讯 modbus 协议

使用说明书 - 1 -_MODBUS 通讯协议说明一.通讯说明控制器采用RS-485总线,协议符合ModBus RTU 规约。
数据传输均采用8位数据位、1位停止位、无奇偶校验位。
波特率可设为1200-9600 bit/s 。
通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义与RTU 通讯规约相初始结构 = >=4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC 码结束结构 = >=4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus 通讯规约定义功能号为1到127。
本控制器利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位(比如功能码大于127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
CRC 码:二字节的错误检测码。
当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1 2.信息帧格式:(1) 地址码: 地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。
当从机回送信息时,相当的地址码表明该信息来自于何处。
modbus通讯协议详解

modbus通讯协议详解1、Modbus 协议简介 Modbus协议是⼀种已⼴泛应⽤于当今⼯业控制领域的通⽤通讯协议。
通过此协议,控制器相互之间、或控制器经由⽹络(如以太⽹)可以和其它设备之间进⾏通信。
Modbus协议使⽤的是主从通讯技术,即由主设备主动查询和操作从设备。
⼀般将主控设备⽅所使⽤的协议称为Modbus Master,从设备⽅使⽤的协议称为Modbus Slave。
典型的主设备包括⼯控机和⼯业控制器等;典型的从设备如PLC可编程控制器等。
Modbus通讯物理接⼝可以选⽤串⼝(包括RS232、RS485和RS422),也可以选择以太⽹⼝。
其通信遵循以下的过程:主设备向从设备发送请求从设备分析并处理主设备的请求,然后向主设备发送结果如果出现任何差错,从设备将返回⼀个异常功能码 此协议定义了⼀个控制器能认识使⽤的消息结构,⽽不管它们是经过何种⽹络进⾏通信的。
它描述了⼀控制器请求访问其它设备的过程,如何回应来⾃其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在Modbus⽹络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产⽣何种⾏动。
如果需要回应,控制器将⽣成反馈信息并⽤Modbus协议发出。
在其它⽹络上,包含了Modbus协议的消息转换为在此⽹络上使⽤的帧或包结构。
这种转换也扩展了根据具体的⽹络解决节地址、路由路径及错误检测的⽅法。
Modbus的⼯作⽅式是请求/应答,每次通讯都是主站先发送指令,可以是⼴播,或是向特定从站的单播;从站响应指令,并按要求应答,或者报告异常。
当主站不发送请求时,从站不会⾃⼰发出数据,从站和从站之间不能直接通讯。
Modbus协议是应⽤层(协议层)报⽂传输协议,它定义了⼀个与物理层⽆关的协议数据单元(PDU),即PDU=功能码+数据域,功能码1byte,数据域不确定。
Modbus协议能够应⽤在不同类型的总线或⽹络。
RS-485和Modbus通信协议及工作原理

RS-485和Modbus通信协议及工作原理在(工业控制)、电力通讯、(智能)仪表等领域,通常情况下是采用串口(通信)的方式进行数据交换。
最初采用的方式是(RS)232接口,由于(工业)现场比较复杂,各种(电气)设备会在环境中产生比较多的电磁千扰,会导致(信号)传输错误。
1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus 协议,所以今天我们来了解下RS485通信和Modbus通信协议。
什么是串口通信串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。
这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并目可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。
(RS-485)协议概述RS-485和RS-232一样,都是审行通信标准,现在的标准名称是(TI)A485/EIA-485-A,但是人们会习惯称为RS485标准,RS-485常用在工业、自动化、汽车和建筑物管理等领域。
RS-485总线弥补了RS-232通信距离短,速率低的缺点,RS-485的速率可高达10Mbit/s,理论通讯距离可达1200米;RS-485和RS-232的单端传输不一样是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B。
通常情况下,RS485的信号在传送出去之前会先分解成正负对称的两条线路(即我们常说的A、B信号线),当到达接收端后,再将信号相减还原成原来的信号。
拓扑结构RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线拓扑结构,在同一总线上最多可以挂接32个节点RS-485总线同12C总线一样支持主从模式,支持点对点单从机模式,也支持多从机模式,不支持多主机模式。
Modbus通讯协议

Modbus通讯协议Modbus通讯协议是一种简单且可靠的串行通讯协议,最初由莫德康(Modicon)公司开发,用于将PLC(可编程逻辑控制器)和外部设备连接起来。
目前Modbus已成为工业控制领域中最广泛使用的通讯协议之一。
Modbus协议基于客户端/服务器模型,采用请求/响应方式进行通讯。
客户端发送请求报文,服务器响应应答报文。
请求报文包含功能码、数据地址和数据长度等信息,应答报文则包含功能码、响应数据和错误码等信息。
Modbus协议通常使用RS-232、RS-485、以太网等通讯介质,支持点对点、点对多点、多点对多点的通讯方式。
在实际应用中,Modbus主要用于控制设备之间的通讯,例如传感器、执行器、连续控制器等。
Modbus协议中定义了多种功能码,包括读/写单个寄存器、读/写多个寄存器、读/写单个线圈等。
这些功能码支持多种数据类型的读写操作,例如16位整数、32位整数、浮点数、ASCII字符等。
在Modbus协议中,数据都是被组织成寄存器的形式进行传输的。
寄存器是一种特定的存储单元,在PLC等控制设备中常常使用。
Modbus协议中常用的寄存器类型包括线圈(coil)、离散输入(discrete input)、输入寄存器(input register)和保持寄存器(holding register)等。
总的来说,Modbus协议具有以下几个优点:1. 简单易用:Modbus协议的报文格式简单易懂,易于开发人员理解和实现。
2. 通用性强:Modbus协议不依赖于具体的硬件平台和操作系统,具有很强的通用性和跨平台性。
3. 可靠性高:Modbus通讯协议采用了校验和和自动重发机制等多种技术手段,提高了通讯的可靠性和稳定性。
总的来说,Modbus协议作为一种开放的通讯标准,已经成为工业控制领域中最流行和实用的通讯协议之一,其广泛应用于工业自动化、建筑自动化、能源管理等领域。
MODBUS协议485水表通讯协议

MODBUS水表通讯协议(RTU模式)一、通讯设置1.波特率:9600/4800/1200(缺省9600不可以更改)2.校验:偶校验/无校验(缺省无校验)3.数据位:84.停止位:1二、modbus协议1、读操作(03H)地址功能码第一个寄存器高位地址第一个寄存器低位地址寄存器的数量的高位寄存器的数量的低位CRC校验低位CRC校验高位XX03XX XX XX XX XX XX 2、读操作回复(03H)地址功能码字节数数据高字节……数据低字节CRC校验低位CRC校验高位XX03XX XX……XX XX XX 3、写操作(06H)地址功能码第一个寄存器高位地址第一个寄存器低位地址数据高字节数据低字节CRC校验低位CRC校验高位XX06XX XX XX XX XX XX4、写操作回复(06H)地址功能码第一个寄存器高位地址第一个寄存器低位地址数据高字节数据低字节CRC校验低位CRC校验高位XX06XX XX XX XX XX XX 5、写操作(10H)地址功能码第一个寄存器高位地址第一个寄存器低位地址寄存器的数量的高位寄存器的数量的低位字节数数据高字节…数据低字节CRC校验低位CRC校验高位XX10XX XX XX XX XX XX…XX XX XX 6、写操作回复(10H)地址功能码第一个寄存器高位地址第一个寄存器低位地址寄存器的数量的高位寄存器的数量的低位CRC校验低位CRC校验高位XX10XX XX XX XX XX XX 7、异常码地址功能码异常码CRC校验低位CRC校验高位XX XX(注3)01H非法功能02H非法数据地址03H非法数据值XX XX注3异常码是正常功能码的最高位加1,如读操作03H的异常功能码为83H,写单个字06H的异常功能码为86H,写多个字的10H的异常功能码为90H。
8、寄存器地址名称寄存器地址字节数操作备注设备地址0200H2读/写(不建议使用)累计流量0202H4读/写注1倍率值0208H2读/写见注1中的解释注1:寄存器地址为16进制地址,如果是用ModScan等软件测试,请转换为10进制地址累计流量为4个字节的十六进制数,高位在前,低位在后,累计流量采用无符号的32位数据(2个字)如:实际数据为123456,则高位字保存0x0001,低位字保存0xE240。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
差动输入 PHC 绝缘 差动输出 PHC 绝缘
图 1 端子布局
相关参数
图 2 RS-485 通讯接线
参数 NO.
名称
内容
设定范围 出厂设定
H7.01. H7.02. H7.03. H7.04.
H7.05.
H7.06. H7.07 H7.08
H7.09
串行口通讯协议 串行口通道号 串行口设置 RTS 选择
指令信号
驱动器地址
02H
功能码
03H
开始
上位 00H
地址
下位 58H
个数
上位 00H 下位 02H
上位 45H CRC-16
下位 EBH
响应信号(正常时)
驱动器地址
02H
功能码
03H
开始 地址
上位 00H 下位 58H
个数
上位 00H 下位 02H
最初的存储寄 上位 00H
存器
下位 65H
接下来的存储 上位 00H
0,1
1
1~31
1
00~FF
80
0,1
1
0~4
0
0.1~25.0s
1.0s
2~65ms
5ms
0,1
0
0,1
0
注 1:串口设置字的定义:
位
定义
BIT7 BIT6 BI位:0:失效 1:生效 数据长度:0:8 位长度 1:7 位长度 效验使能:0:无效验 1:有效验 效验选择:0:偶效验 1:奇效验 停止位选择:0:1 位 1:2 位 通讯方式:0:异步通讯 1:同步通讯 通讯波特率:0:9600 1:19200 2:31250 3:38400
驱动器地址
01H
功能码
89H
出错编码
01H
上位 89H CRC-16
下位 50H
写入存储寄存器
以被指定的地址里,读出连续的所指定几个地址的存储寄存器内容。寄存器的内容被分为上位 8 位和下位 8 位,按地址顺序成为响应信号的数据。 以下所示是从驱动装置 2 的变频器写入状态信号,故障内容,数据连接状态,频率指令时的信 号举例。
出错检查
检出传送时的出错。使用 CRCX 效验,方式为 CCITT 16/N G(x)=1A001H。
MEMOBUS 信号举例
以下所示指令/响应时 MEMOBUS 信号的举例。
读出存储寄存器内容
以被指定的地址里,读出连续的所指定几个地址的存储寄存器内容。寄存器的内容被分为上位 8 位和下位 8 位,按地址顺序成为响应信号的数据。 以下所示是从驱动装置 2 的变频器读出状态信号,故障内容,数据连接状态,频率指令时的信 号举例。
例如:H7.03=80,即设置串行口为 9600,N,8,1
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
1
0
0
0
0
0
BIT1
0
BIT0
0
通信规格
以下表示 MEMOBUS 通信规格。
项目
规格
接口 同步方式
RS-422,RS-485 异步(起止同步)
通信参数 通信协议
速率:可从 9600/19200/31250/38400bps 中选择 数据长:8 位固定 检验:从偶/奇/无中选择 停止位:1 位固定 MEMOBUS(只有 RTU 模式)
通讯中断保护动作
通讯中断保护时间 发送等待时间 自动写入 EEPROM 使能
数据方向
0:MITSUBISHI FX2 协议 1:MEMOBUS 协议 本机的通讯地址
0:422 通讯 1:485 通讯 设定通讯中断的保护方式: 0:不保护 1:自由滑行停止 2:减速停止 3:非常减速停止 4.仅警告 通讯中断的检测时间 接收命令后到发送响应之间的延时时间 写数据到参数区时是否写入 EEPROM 的选择 0:不写入 1:自动写入 发送数据和地址的方向 0:高位字节在前,1:低位字节在前
功能码错误 01H
PLC 的指令设定在 03H,08H,10H 以外的编号。
地址错误 02H
读写非法地址
个数错误
03H
·读出或写入的数据个数不在 1~16 范围。
·写入方式中,指令数据不是位数×2。
功能码
是为指定指令的编码。功能码有以下三种。
功能码 (16 进制)
功能
指令信号
响应信号
最小(字节) 最大(字节) 最小(字节) 最大(字节)
03H
读出存储寄存器的内容
08H
回路测试
8
8
7
37
8
8
8
8
10H
写入多个存储寄器
11
41
8
8
数据
存储寄存器地址(回路地址是测试编码)和数据组合构成一组数据。因指令的内容不同数据长度有 变化。
指令信号
驱动器地址
01H
功能码
08H
测试 上位 00H
编号 下位 00H
数据
上位 A5H 下位 37H
上位 DAH CRC-16
下位 8DH
响应信号(正常时)
驱动器地址
01H
功能码
08H
测试
上位 00H
编号
下位 00H
数据
上位 A5H 下位 37H
上位 DAH CRC-16
下位 8DH
响应信号(故障时)
寄存器
下位 00H
CRC-16
上位 75H 下位 27H
响应信号(故障时)
驱动器地址
02H
功能码
83H
出错编号
03H
CRC-16
上位 F1H 下位 31H
测试回路
把指令信号照原样作为响应信号反馈。使用于主控制器和驱动装置间的通信检查。测试编号, 数据可使用任意值。 以下所示与驱动装置 1 的变频器进行测试回路时的信号举例。
指令信号
驱动器地址
02H
功能码 开始 地址
个数
字节数 最初的存储
寄存器
CRC-16
10H 上位 00H 下位 D2H 上位 00H 下位 01H
02H 上位 00H 下位 65H 上位 60H 下位 F9H
响应信号(正常时)
驱动器地址
02H
功能码
10H
开始
上位 00H
地址
下位 D2H
个数
上位 00H 下位 01H
可连接台数
最多 31 台(使用 RS-485 时)
信号格式化
MEMOBUS 通信是主控制器对驱动装置传送指令,驱动装置采取接收指令响应形式,下表为信 号格式。以下所示为传接信号的构成,因指令内容的不同,数据长度有变化。
驱动器地址
功能码
数据
故障检查
驱动器地址
是变频器的地址(0~31)。若设定为 0,则为广播模式,主控制器向所有变频器传送指令信号(变 频器不反馈响应信号)。
CRC-16
上位 A1H 下位 C3H
响应信号(故障时)
驱动器地址
02H
功能码
83H
出错编号
03H
CRC-16
上位 F1H 下位 31H
指令信号内指定的数据数,设定为指令信号中的个数×2。当单字节时个数为 0。响应信号也同样设定。
故障代码
下表所示 MEMOBUS 通信故障代码一览表。
故障代码
内容
使用 MEMOBUS 通讯功能
使用 MEMOBUS 通讯协议,能够与 MEMOCON 系列等可编程控制器进行串行通信。
接线说明
R+
通讯口
R-
RS-485
S+
/422
S-
G
MEMOBUS 通信输入 MEMOBUS 通信输出 通信屏蔽线
RS-485 通讯为 2 线制, 请短接 R+和 S+,R-和 S-