MEMOBUS通讯协议(485通讯)
- 格式:pdf
- 大小:126.42 KB
- 文档页数:4
在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。
最初采用的方式是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的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。
尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。
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通讯协议与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协议作为传输层协议,因此具有较高的灵活性和互操作性。
它可以与现有的以太网基础设施无缝集成,并且支持在局域网或广域网上进行远程数据传输。
使用说明书 - 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通讯协议详解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)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通讯协议是一种简单且可靠的串行通讯协议,最初由莫德康(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水表通讯协议(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。
课程名称:嵌入式软件技术开课机房:11号机房2012年4月24日星期二8:10~11:35一、实验任务与实验目的二、报告内容Freemodbus是modbus协议在嵌入式处理器上的实现。
包括AVR,PIC,WIN32等等平台。
它是开放性源代码,可用于商业目的。
它实现了Modbus RTU/ASCII、TCP三种传输方式,当前版本是1.5,支持以下功能:∙读输入寄存器(0x04)∙读保持寄存器(0x03)∙写单个寄存器(0x06)∙写多个寄存器(0x10)∙读/写多个寄存器(0x17)∙读取线圈状态(0x01)∙写单个线圈(0x05)∙写多个线圈(0x0F)∙读输入状态(0x02)∙报告从机标识(0x11)本实现基于最新的标准并且与标准完全兼容。
接收和传输Modbus RTU/ASCII数据帧是通过一个由硬件提取层的调用来驱动状态机实现的。
这就使得协议非常容易移植到其他的平台之上。
当接收一个完整的数据帧后,该数据帧被传入Modbus应用层,数据帧的内容在该层内得到解析。
为方便地增加新的Modbus功能,Freemodbus在应用层提供了钩子函数Hooks。
如果用到了Modbus TCP协议,那么当准备处理一个新数据帧的时候,移植层就必须首先向协议层发送一个事件标志。
然后,协议栈调用一个返回值为接收到的Modbus TCP数据帧的函数,并且开始处理这个数据帧。
如果数据有效,则响应的Modbus反馈帧将提供给移植层生成反馈帧。
最后,该反馈帧被发送到客户端。
二、实现FreeModbus协议所需要的软/硬件需求Modbus协议对硬件的需求非常少——基本上任何具有串行接口,并且有一些能够容纳modbus 数据帧的RAM的微控制器都足够了。
∙一个异步串行接口,能够支持接收缓冲区满和发送缓存区空中断。
∙一个能够产生RTU传输所需要的t3.5 字符超时定时器的时钟。
对于软件部分,仅仅需要一个简单的事件队列。
The STR71X/FreeRTOS 移植使用FreeRTOS 队列作为事件队列来减少Modbus 任务所需要的时间。
MODBUS实例485通讯用RS485端口控制TVF2000使用说明:一、硬件连接:1.RS485/RS485:(1)终端设备:将J2用终端方式短接;(2)非终端设备:将J2用非终端方式短接;(3)A、B、AGND对接;(4)如果使用屏蔽线,SCR对接。
2.RS485/RS232(PC机):(1)用RS485/RS232转换器;(2)PC机串口与转换器RS232口连接;(3)TVF2000的CN1与转换器的RS485口的A、B、AGND连接。
二、用MODBUS与TVF2000通讯(RTU方式):1.TVF2000键盘设置:a)键盘菜单设置说明:i.1001=10:外端子1用通讯控制;ii.5005=2:标准MODBUS通讯方式;iii.5201=1-247:从机号(缺省=1);iv.5202=5:通讯速度为9600bps(缺省=5);v.5203=0:无效验(缺省=0);vi.其它=缺省值;b)键盘具体操作:i.9952 = 1:参数初始化;ii.1001 = 10;iii.5005 = 2;这样设置后,就可以与TVF2000通讯了。
2.TVF2000使用的MODBUS命令:a)读存储寄存器:03命令;b)写单个寄存器:06命令;c)写多个寄存器:16命令;3.MODBUS单寄存器写入命令说明(其它说明见附录):a)主机发送:i.[地址]:从机地址1-247;ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址_H]:寄存器地址高8位;iv.[寄存器地址_L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;b)从机返回(正常):i.[地址]:从机地址1-247(相同地址);ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址H]:寄存器地址高8位;iv.[寄存器地址L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;c)通讯具体操作(菜单1102=7为例):i.主机发送:[01][06][04][4E][00][07][CRC_H][CRC_L];ii.从机返回(正常):[01][06][04][4E][00][07][CRC_H][CRC_L];4.用通讯命令设置菜单值(调速前必须设置):i.1102=7;外部1有效;ii.1103=8;由串行通讯给定;iii.0002=初始频率;如果不设置,为菜单1104的值;iv.0001=0x06;命令寄存器:0001;v.0001=0x0f;vi.0001=0x2f;启动;vii.0001=0x6f;到达设定频率;5.用通讯命令调速(给定寄存器1:0002):i.0002=0-20000;调速:0对应1104的值,20000对应1105的值;ii.通过03命令读取状态寄存器(0004)的值;iii.通过03命令读取保持寄存器(0005、0006)的值;iv.用通讯命令停车:0001 = 0x06;6.命令寄存器:0001(MODEBUS为40001)说明如下:7.给定寄存器1:0002(MODBUS为40002)说明如下:i. 输出频率与给定值成正比例;ii. 输出频率=(0002的值)*(1105的值)/20000;8.状态寄存器:0004(MODBUS为40004)说明如下:9.保持寄存器:0005(MODBUS为40005):实际输出频率(单位:Hz);10.保持寄存器:0006(MODBUS为40006):实际输出电流(单位:0.1A);11.状态寄存器、保持寄存器均为只读;12.如果想保存通讯设置,必须用键盘设置菜单1607=1。
RS485与Modbus通信协议教程1979年施耐德电气订立了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采纳Modbus协议,所以今日我们来了解下RS485通信和Modbus通信协议。
【一】/前言在工业掌控、电力通讯、智能仪表等领域,通常情况下是采纳串口通信的方式进行数据交换。
最初采纳的方式是RS232接口,由于工业现场比较多而杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。
1979年施耐德电气订立了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采纳Modbus协议,所以今日我们来了解下RS485通信和Modbus通信协议。
【二】/RS485通信1、实际上在RS485之前RS232就已经诞生,但是RS232也有不足:1)接口的信号电平值较高,达到十几V,简单损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必需加转换电路。
2)接口使用的信号线与其他设备形成共地模式的通信,这种共地模式传输简单产生干扰,并且抗干扰性能也比较弱。
3)传输距离、速率都有限,最多只能通信几十米;只能两点之间进行通信,不能够实现多机联网通信。
2、针对RS232接口以上不足,显现了RS485等新的接口标准,RS485具备以下的特点:1)逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为(2—6)V表示。
接口信号电平比RS232降低了,不易损坏电路的芯片,且该电平与TTL电平兼容,可便利与TTL电路连接。
2)RS485通信速度快,数据最高传输速率为10Mbps以上;其内部的物理结构,采纳的是平衡驱动器和查分接收器的组合,抗干扰本领大大加添。
3)传输距离最远可达到1200米左右,但传输速率和传输距离是成反比的,只有在100KB/s以下的传输速率,才能达到最大的通信距离,假如需要传输更远距离可以使用中继。
一、介绍Modbus-RTU通讯规约Modbus-RTU通讯协议是一种用于串行通信的通用协议,它是Modicon公司于1979年为了连接可编程逻辑控制器(PLC)而开发的。
今天,Modbus已经成为工业自动化领域中最为流行的通讯协议之一,被广泛应用于控制系统的数据传输和设备之间的通信。
二、Modbus-RTU通讯规约的特点1. 简单易懂:Modbus-RTU通讯规约采用了简单的数据结构和通信方式,使得各种设备能够轻松实现数据的传输和交换。
2. 高效可靠:Modbus-RTU通讯规约采用串行通信方式,数据传输速度快,且具有较高的稳定性和可靠性。
3. 易于扩展:Modbus-RTU通讯规约具有较好的可扩展性,能够满足不同应用场景下的需求。
三、Modbus-RTU通讯规约与485指令1. Modbus-RTU通讯规约的物理层采用RS-485总线通讯技术,通过串行通讯实现设备之间的通信。
485指令则是Modbus-RTU通讯规约的一部分,用于定义数据的传输格式和通讯方式。
2. 485指令具有严格的数据格式要求,包括起始位、停止位、校验位等,以确保数据的传输准确性和完整性。
3. 485指令定义了主从设备之间的通讯方式和数据交换流程,使得不同厂家生产的设备能够在通讯协议方面实现兼容和互操作。
四、Modbus-RTU通讯规约转485指令的应用1. 在工业自动化领域中,Modbus-RTU通讯规约转485指令广泛应用于PLC、传感器、执行器等设备之间的通讯和数据交换。
2. 485指令的应用使得工业设备能够实现远程监控、数据采集、远程控制等功能,提升了设备的智能化和自动化水平。
3. Modbus-RTU通讯规约转485指令还可用于智能家居、建筑自动化、能源管理等领域,实现设备之间的互联互通,提升系统整体的效率和性能。
五、Modbus-RTU通讯规约转485指令的优势1. 兼容性强:Modbus-RTU通讯规约转485指令具有较好的兼容性,能够与不同厂家生产的设备实现通讯和数据交换。
485 Modbus RTU通讯协议(本协议采用主从问答方式)济源市华宇矿业电器有限责任公司通讯数据的类型及格式:数据长度:8,停止位:1,传输速率:9600,校验:偶★注:1、1个字节由8位二进制数组成(既8 bit)。
2、ModBus是Modicon公司的注册商标。
3、“从机”在本文件中既为GZB-H8高压配电保护器。
4、“N”为偶数。
通讯信息传输过程:当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令,并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
地址码:地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。
每个从机都必须有唯一的地址码。
所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。
当从机回送信息时,回送数据均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。
功能码:是每次通讯信息帧传送的第二个字节。
ModBus通讯规约可定义的功能码为0到127。
PLC仅用到其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机应执行什么动作。
作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
数据区:数据区包括需要由主机发送、从机回送何种信息或执行什么动作。
这些信息可以是数据(如:开关量、模拟量、地址等等)等。
传输时采用先传送高字节,再传送低字节。
例如:2345H,就先传送23H,然后传送45H。
PLC响应的命令格式是从机地址、功能码、数据区及CRC码。
数据区的数据为多字节开关量数据或模拟量数据。
一、遥信命令请求消息帧:注1:遥信数据按位传输,每一位表示一路开关量状态或者一个故障信息,遥信数据传输的位数为两个字节、16位,每个字节中的位含义定义如表1。
MODBUS 485通讯手册一、485通讯端子是变送器后的5和6端子二、变送器通讯协议设置1.仪表面板按键概述仪表面板有两个光敏按键,SCROLL(左)键---滚动键,SELECT(右)键---选择键,操作方式是在玻璃罩子外面用拇指挡住一下,就是按了一次,按成功时,中间的小红灯会闪一下。
需要按第二下时,应把拇指拿开,再挡住。
(注意,不要像操作手机一样的连续在屏幕上点击,这是没有效果的。
)2.组态操作1)同时按SCROLL(左)键和SELECT(右)键5秒以上(指示灯闪烁)。
直到看见菜单“SEE ALARM”2)按左键翻到OFF-LINE MAINT 菜单,按右键进入。
这时候屏幕会提示”SCrOLL”,就是让你按左键;然后提示”SELEC”,让你按右键;最后再提示” SCrOLL”,再按左键进入菜单。
(如果出现CODE?则输入密码,一般出厂设为1234。
按左键增加数字,按右键移位)。
进入后的画面3)进入菜单后,按左键翻到OFF-LINE CONFIG,再按右键进入。
4)按左键到CONFIG -COMM,按右键进入,再按左键滚动到要修改的通讯方式,按右键进入.PROTOCOL---选择通讯协议为M RTU(Modbus RTU)BAUD---设置波特率PARITY---奇偶校验STOP BITS---停止位ADDRESS MBUS---设备地址(注意修改设备地址后要退出,需要两个键同时按,出现YES命令后,按右键保存)5)左键翻滚找到当前菜单的EXIT就可以退出,重复操作就可以退回主画面(或者不操作三分钟后也会自动退回初始画面。
)三、质量流量计测量值的modbus地址点位表数据类型--32位浮点数;保持寄存器,功能码03;默认字节序3-4 1-2(可以选择1-2 3-4或4-3 2-1)注意:上位机读取地址位可能要减一位,也就是从40246开始。
使用MODSCAN读取的浮点数流量数据如下PROLINK软件截图数据数据请求测试案例默认协议:波特率9600;NONE;8;1。
Modbus协议一、Modbus 通讯协议简介:Modbus协议是基于RS485硬件接口的通讯协议,它可以实现点对多点的网络化控制。
具体的协议内容可参考GB/Z 19582,协议分为RTU协议和ASCII协议。
本公司所提供之基于Modbus的产品皆遵循RTU协议,允许一台主机(Master)和多台从机(Slave)之间进行数据交换。
通讯方式采用问答式(即主机提出请求命令,从机接收后分析是否符合通讯规约,若是则做应答)。
二、主从机之间的通讯规约:主机发送的每一帧数据应包含如下信息(16 进制)从机地址 命令字 信息字 校验码从机地址(1 个字节):从机设备号,主机利用从机地址来识别进行通讯的从机设备。
表明由用户设置地址的从机将接收由主机发送来的信息。
在一个Modbus网络中每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应。
命令字(1 个字节): 主机发送的功能码,通知从机执行什么任务。
信息字(N 个字节): 包括进行两机通讯中的各种数据地址、数据长度、数据信息。
校验码(2 个字节): 用于检测数据通讯错误,采用循环冗余CRC16校验。
三、通讯参数的设置:通讯地址:设置通讯网络中从机地址号,可以设置为1~247。
(默认值为1)通讯速度:设置通讯网络中通讯速度,可选择通讯波特率为9600、19200、38400、57600、115200。
(默认值为19200)数据格式:设置通讯网络中数据格式:1个起始位,8个数据位,1个停止位,1个偶校验位。
通讯协议:ModBus RTU通讯协议。
四、报文格式说明命令字03H:读取参数值主机请求:地址 命令字 参数地址 数据长度 校验码从机响应:地址 命令字 字节长度 参数值 校验码命令字04H:读取测量值主机请求:地址 命令字 数据地址 数据长度 校验码从机响应:地址 命令字 字节长度 数据信息 校验码命令字08H:诊断主机请求:地址 命令字 子功能 数据 校验码从机回送:地址 命令字 子功能 数据 校验码命令字10H:修改参数值主机请求:地址 命令字 参数地址 数据长度 字节长度 参数值 校验码从机响应:地址 命令字 参数地址 数据长度 校验码五、例程读取主测量值指令主机发送 01H 04H 00H 01H 00H 02H 20H 0BH 读取测量值注:01H为编码器通讯地址,04H为命令字,00 01H为数据地址,00 02H为数据长度,20 0BH为校验码.从机响应 01H 04H 04H 00H 00H 01H 00H FAH 14H注:01H为编码器通讯地址,04H为命令字,04H为数据字节长度,00 00 01 00H为数据,FA 14H为校验码.附:只有在标定模式下时,读取测量值会发送读取圈数的指令,数据地址为00 03H.读取参数指令主机发送 01H 03H 00H 44H 00H 02H 84H 1EH 读取工作模式参数值 注:01H为编码器通讯地址,03H为命令字,00 44H为数据地址,00 02H为数据长度,84 1EH为校验码.从机响应 01H 04H 04H 00H 00H 00H 00H FBH 84H注:01H为编码器通讯地址,04H为命令字,04H为数据字节长度,00 00 00 00H为参数值,FB 84H为校验码.修改参数指令主机发送 01H 10H 00H 44H 00H 02H 04H 00H 00H 00H 00H F6H 6CH 修改工作模式参数值 注:01H为编码器通讯地址,10H为命令字,00 44H为参数地址,00 02H为数据长度,04H为数据字节长度,00 00 00 00H为参数值,F6 6CH为校验码.从机响应 01H 10H 00H 44H 00H 02H 01H DDH注:01H为编码器通讯地址,10H为命令字,00 44H为参数地址,00 02H为数据长度,01 DDH为校验码.※ 正常工作状态时,使用Modbus RTU协议,只能发送读取主测量值指令。
用RS485端口控制TVF2000使用说明:一、硬件连接:1.RS485/RS485:(1)终端设备:将J2用终端方式短接;(2)非终端设备:将J2用非终端方式短接;(3)A、B、AGND对接;(4)如果使用屏蔽线,SCR对接。
2.RS485/RS232(PC机):(1)用RS485/RS232转换器;(2)PC机串口与转换器RS232口连接;(3)TVF2000的CN1与转换器的RS485口的A、B、AGND连接。
二、用MODBUS与TVF2000通讯(RTU方式):1.TVF2000键盘设置:a)键盘菜单设置说明:i.1001=10:外端子1用通讯控制;ii.5005=2:标准MODBUS通讯方式;iii.5201=1-247:从机号(缺省=1);iv.5202=5:通讯速度为9600bps(缺省=5);v.5203=0:无效验(缺省=0);vi.其它=缺省值;b)键盘具体操作:i.9952 = 1:参数初始化;ii.1001 = 10;iii.5005 = 2;这样设置后,就可以与TVF2000通讯了。
2.TVF2000使用的MODBUS命令:a)读存储寄存器:03命令;b)写单个寄存器:06命令;c)写多个寄存器:16命令;3.MODBUS单寄存器写入命令说明(其它说明见附录):a)主机发送:i.[地址]:从机地址1-247;ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址_H]:寄存器地址高8位;iv.[寄存器地址_L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;b)从机返回(正常):i.[地址]:从机地址1-247(相同地址);ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址H]:寄存器地址高8位;iv.[寄存器地址L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;c)通讯具体操作(菜单1102=7为例):i.主机发送:[01][06][04][4E][00][07][CRC_H][CRC_L];ii.从机返回(正常):[01][06][04][4E][00][07][CRC_H][CRC_L];4.用通讯命令设置菜单值(调速前必须设置):i.1102=7;外部1有效;ii.1103=8;由串行通讯给定;iii.0002=初始频率;如果不设置,为菜单1104的值;iv.0001=0x06;命令寄存器:0001;v.0001=0x0f;vi.0001=0x2f;启动;vii.0001=0x6f;到达设定频率;5.用通讯命令调速(给定寄存器1:0002):i.0002=0-20000;调速:0对应1104的值,20000对应1105的值;ii.通过03命令读取状态寄存器(0004)的值;iii.通过03命令读取保持寄存器(0005、0006)的值;iv.用通讯命令停车:0001 = 0x06;6.7.给定寄存器1:0002(MODBUS为40002)说明如下:i. 输出频率与给定值成正比例;ii. 输出频率=(0002的值)*(1105的值)/20000;8.状态寄存器:0004(MODBUS为40004)说明如下:9.保持寄存器:0005(MODBUS为40005):实际输出频率(单位:Hz);10.保持寄存器:0006(MODBUS为40006):实际输出电流(单位:0.1A);11.状态寄存器、保持寄存器均为只读;12.如果想保存通讯设置,必须用键盘设置菜单1607=1。
电磁流量计Modbus协议的RS485通讯传输
ModBus协议是应用层报文传输协议(OSI模型第7层),它能够应用在不同类型的总线或网络。
目前,Modbus有下列三种通信方式:
1. 以太网,对应的通信模式是MODBUS TCP。
2. 异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU 或MODBUS ASCII。
3. 高速令牌传递网络,对应的通信模式是Modbus PLUS。
国际标准RS-485通讯接口部件或国际标准RS-232通讯接口部件,不小于11Bytes的通信缓冲区(FIFO),支持1200、2400、4800、9600通讯波特率,支持半双工通讯模式。
通讯程序应允许FIFO,从机要求主机FIFO不小于11Bytes。
电磁流量计RS485通讯数据传输接口为半双工方式,标准速率大于250kHz,通讯方向转换时间为3.5us,通常可接16路负载,也可扩展到32路,标准屏蔽双绞线1000m。
采用主从式多机通讯。
当多台电磁流量计互连时,可以节省信号线,便于高速传送。
RS-485通讯具有良好的抗噪声干扰性,长的传输距离和多站能力,不会因PLC故障而影响现场和远程数据同步一致。
但电磁流量计必须有485接口,支持MODBUS RTU协议。
而且为保持稳定,多个流量计通讯时,最好使用同一厂家同一个品牌的电磁流量计。
RS485
是工业数据总线的一种,电磁流量计具有RS485串口通讯使得数字通信替代了PLC的模拟信号及普通开关量信号的传输,减少了PLC 的模拟计算,实现了数据的精准采集传输。