ModBusRTU通讯协议合约与ModBus通讯协议合约有什么区别.doc

上传人:一*** 文档编号:809329 上传时间:2019-07-16 格式:DOC 页数:9 大小:75.50KB
返回 下载 相关 举报
ModBusRTU通讯协议合约与ModBus通讯协议合约有什么区别.doc_第1页
第1页 / 共9页
ModBusRTU通讯协议合约与ModBus通讯协议合约有什么区别.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《ModBusRTU通讯协议合约与ModBus通讯协议合约有什么区别.doc》由会员分享,可在线阅读,更多相关《ModBusRTU通讯协议合约与ModBus通讯协议合约有什么区别.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、modbus RTU 常见问题汇总常见问题汇总2013 年 04 月 22 日 10:57注:本资料由网络搜索,答案仅供参考(持续更新中)点击查看 MODBUS RTU 产品详情1、ModBus RTU 通讯协议与通讯协议与 ModBus 通讯协议有什么区别?通讯协议有什么区别?ModBus 协议是应用层报文传输协议(OSI 模型第 7 层) ,它定义了一个与通信层无关的协议数据单元(PDU) ,即 PDU=功能码+数据域。ModBus 协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus 协议引入一些附加域映射成应用数据单元(ADU) ,即 ADU=附加域+PDU。目前,M

2、odbus 有下列三种通信方式:1.以太网,对应的通信模式是 MODBUS TCP。2.异步串行传输(各种介质如有线 RS-232-/422/485/;光纤、无线等) ,对应的通信模式是 MODBUS RTU 或 MODBUS ASCII。3.高速令牌传递网络,对应的通信模式是 Modbus PLUS。2、关于、关于 MODBUS RTU 通讯协议的提问?通讯协议的提问?modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16 或 LRC 两个字节)总共 8 个字节组成。其实 VB 中编程很简单从组建添加 MSComm 组建就行了

3、,难的是校验,3、modbus、rtu、modbus rtu 分别是什么?分别是什么?modbus 协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购而 modbus 分为两种协议:即串口协议(modbus rtu)和网口协议(modbus tcp)协议,一般的工控机只支持rs232 或者 RS485 的串口模式,这个时候工控机的协议栈里就只有 modbusRTU 协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用 modbusTCP 协议进行传输,则需要使用带有网口的 PLC具体的帧格式如下modbus RTU 地址域 功能码 数据 差错校验modbus TC

4、P 目的地址 协议 id 长度 单元号 功能码 数据简单的说 tcp 是由 RTU 加工而来的而 RTU 则是另外一种概念,不包含在 modbus 协议内是工控行业对监控设备的简称。4、关于、关于 modbus_RTU 协议主机发送的命令的一些问题协议主机发送的命令的一些问题 01 读保持线圈状态(Read coil status) 02 读输入线圈状态(Read input status) 03 读保持寄存器(Read holding register) 04 读输入寄存器(Read input register) 05 写单个线圈(Force single coil) 06 写单个寄存器(

5、Preset single register) 15 写多个线圈(Force multiple coils) 16 写多个寄存器(Preset multiple registers)这些都是什么意思答:01 读取逻辑线圈组状态02 读取离散量线圈组状态03 读取一个或多个保持寄存器的二进制值04 读取一个或多个输入寄存器的二进制值05 改变逻辑线圈状态06 改变单个寄存器的二进制值15 改变多个寄存器的二进制值16 指定多个操持寄存器的二进制值5、OPC 转转 modbus RTU 方式方式 我现在有一个我现在有一个 OPC 服务器,里面很多服务器,里面很多 tag,tag 是是 AB 里出来

6、的,怎么将里出来的,怎么将tag 连到连到 modbus?Profibus、Fielbus、Modbus、CC-link 等等是各中 PLC 硬件支持的通讯协议,这个是各厂商的硬件属性一样只是现在计算机组态软件都支持很多种协议的 PLC你理解反了Profibus、Fielbus、Modbus、CC-link 这些协议,是一种通讯协议,一般不需要你去编程,就好象你使用计算机,你不需要编写 IP 协议一样,只是要遵循它 遵循的意思就是,你必须按照该厂家所支持的协议在 PLC 或者 DCS 硬件组态的时候按照该通讯协议设置硬件其实这个很简单 这里简单指的是,你学编程,重点是编写执行控制的动作的程序,

7、硬件通讯协议不需要你自己动手写。6、什么是、什么是 modbus rtu master?就是选 RTU 模式,因为 MODBUS 分为 ASCII 模式和 RTU 模式,MASER 就是设置为主站,一般为 PLC端,变频器设为从站,还要注意主站和从站地址的设置。7、Modbus rtu 为什么没有开始和结束标记?为什么没有开始和结束标记?由于 Modbus rtu 帧的每个字节是 16 进制数,数值范围在 00FF,若像 Modbus ASCII 那样用 02、03 表示开始和结束标记,则与数值 2、3 发生冲突,无法判断其是标记还是数值,无法数据解包。8、modbus tcp 到到 rtu

8、的转换?的转换?请仔细查看帧格式,modbus RTU 地址域 功能码 数据 差错校验modbus TCP 目的地址 协议 id 长度 单元号 功能码 数据写一个 TCP 转 RTU 的程序放到设备里做 modbus 网桥即可9、MODBUS RTU 通讯线被烧?通讯线被烧?用万用表量一下出来的通讯线,电压不超过 5V 应该没问题,一般不会烧东西,接的时候区分正和负。很多产品 B 是正,量一下看看。10、触摸屏、触摸屏 modbus rtu 怎么设置?怎么设置?一般是通过宏指令自己编程实现,当然也有支持 RTU 的,在通讯类型菜单11、MODBUS RTU 协议中浮点数是如何存储协议中浮点数是

9、如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数?读到浮点数寄存器的数值如何转换成所需的浮点数?浮点数保存的字节格式如下:地址 +0 +1 +2 +3内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM这里S 代表符号位,1 是负,0 是正E 偏移 127 的幂,二进制阶码=(EEEEEEEE)-127。M 24 位的尾数保存在 23 位中,只存储 23 位,最高位固定为 1。此方法用最较少的位数实现了较高的有效位数,提高了精度。零是一个特定值,幂是 0 尾数也是 0。浮点数-12.5 作为一个十六进制数 0xC1480000 保存在存储区中,这个值如下:

10、地址 +0 +1 +2 +3内容 0xC1 0x48 0x00 0x00浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5 如何转换。浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表所列的那样分开,例如:地址 +0 +1 +2 +3格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM二进制 11000001 01001000 00000000 00000000十六进制 C1 48 00 00从这个例子可以得到下面的信息:符号位是 1 表示一个负数 幂是二进制 10000010 或十进制 130,130

11、减去 127 是 3,就是实际的幂。 尾数是后面的二进制数 10010000000000000000000在尾数的左边有一个省略的小数点和 1,这个 1 在浮点数的保存中经常省略,加上一个 1 和小数点到尾数的开头,得到尾数值如下:1.10010000000000000000000接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为指数是 3,尾数调整如下:1100.10000000000000000000结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的 2 的幂,例如:1100 表示(1*23)+(1*22)+(0*21)+(0*20)=12。小数点

12、的右边也代表所处位置的 2 的幂,只是幂是负的。例如:.100.表示(1*2(-1)+(0*2(-2)+(0*2(-2).=0.5。这些值的和是 12.5。因为设置的符号位表示这数是负的,因此十六进制值 0xC1480000 表示-12.5。12、RS-485 的设备,遵守的设备,遵守 MODBUS-RTU 协议。怎样用的电脑读取信息?协议。怎样用的电脑读取信息?用电脑的串口,接个 485 转换器,接到设备的 485 接口,再找个串口软件,根据设备资料上的寄存器地址发送 modbus 报文,modbus 报文通过串口软件发送啊,报文格式:01 03 00 00 00 01 84 0A 读寄存器

13、命令。13、vb modbus 给给 modScan32 rtu 发送数据应该怎么写?发送数据应该怎么写?确定两个软件哪个是主,哪个是从。然后再确定通讯协议是 RTU、ASCII 还是 TCP。如果是 TCP,就用socket 控件。RTUASCII 就用 COM 控件。然后给对应的口按照协议收发数并解析就可以了。14、ModBus RTU 通讯协议与通讯协议与 ModBus 通讯协议有什么区别?通讯协议有什么区别?modbus 协议包括了 MODBUS RTU15、modbus rtu 通讯协议通讯协议 如何判断超时?如何判断超时?设置一个标志量用来表示是否超时;再用一个定时器,定时时长为发

14、送 3.5 个字符的时间(当然为了保险时间可以长一些);在定时器中置超时标志;在串口中断中每收到一个字节时定时器清零;主程序中根据超时标志做相应处理。16、如何理解、如何理解 MODBUS 协议协议 RTU 模式中的模式中的 1.5 和和 3.5 字符间隔?字符间隔?发送两帧数据之间要有一定的时间间隔,以保证接收方 UART 能够区分。这个时间间隔在 MODBUS RTU 模式中要求是 1.5 和 3.5 字符间隔,也即是传输 1.5 和 3.5 个字符的时间,它与设置的通信参数有关,计算为:若串口通信参数设置为(注:开始位固定为 1):数据位 8,奇偶校验位 1,停止位 1,波特率 9600

15、bps,则传输一个字符(即 1 个字节)的时间为:(1+8+1+1)/9600=0.00114583s=1.1454583ms1.5 字符间隔=1.5x1.1454583ms=1.71818745ms3.5 字符间隔=3.5x1.1454583ms=4.00910405ms17、MODBUS RTU 测试软件?测试软件?推荐:modscan32 18、MODBUS RTU 协议,上位机与仪表通信,读写数据都正确,为什么仪表掉电,写入的参数又丢失协议,上位机与仪表通信,读写数据都正确,为什么仪表掉电,写入的参数又丢失了?怎么保存?了?怎么保存?两种可能:如果在仪表上设置参数掉电后都保存不了的话,

16、基本可以确定是仪表问题;有些仪表写入参数后还需要向固定的寄存器写入确认参数,为了保证写入参数真确,需要检查仪表通信部分说明书。MODBUS 结论总结结论总结2012 年 04 月 20 日 10:22Modbus 协议最初由 Modicon 公司开发出来,现在 Modbus 已经是工业领域全球最流行的协议。支持传统的 RS-232、RS-422、RS-485 和以太网设备。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。当在网络上通信时,Modbus 协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用 Mod

17、bus 协议发送给询问方。Modbus 协议包括 ASCII、RTU、TCP 等,并没有规定物理层。协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的 Modicon 控制器使用 RS232C 实现串行的 Modbus。Modbus 的 ASCII、RTU 协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用 Maser/Slave 方式,Master 端发出数据请求消息,Slave端接收到正确消息后就可以 发送数据到 Master 端以响应请求;Master 端也可以直接发消息修改 Slave 端的数据,实现双向读写。Modbus 协议需要对数据进行校

18、验,另外,Modbus 采用主从方式定时收发数据,在实际使用中如果某 Slave 站点断开后(如故障或关机) ,Master 端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus 协议的可靠性较好。ASCII 协议和 RTU 协议进行的比较: 协议开始标记结束标记校验传输效率程序处理 ASCII:(冒号)CR,LFLRC低直观,简单,易调试 RTU无无CRC高不直观,稍复杂LRC 校验:LRC 域是一个包含一个 8 位二进制值的字节。LRC 值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算 LRC,并将它和接收到消息中 LRC 域中的值比较,如果两值不等,说明有

19、错误。LRC 校验比较简单,它在 ASCII 协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加 1 即可。CRC 校验:CRC 域是两个字节,包含一 16 位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同,则有误。1、读可读写数字量寄存器(线圈状态):计算机发送命令:设备地址 命令号 01 起始寄存器地址高 8 位 低 8 位 读取的寄存器数高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位 例:100100130025CR

20、C 低CRC 高 意义如下:设备地址:在一个 485 总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和 16 号(十进制的 16 是十六进制的 10)通讯。 命令号 01:读取数字量的命令号固定为 01。起始地址高 8 位、低 8 位:表示想读取的开关量的起始地址(起始地址为 0)。比如例子中的起始地址为 19。寄存器数高 8 位、低 8 位:表示从起始地址开始读多少个开关量。例子中为 37 个开关量。CRC 校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC 校验在命令中的高低字节的顺序和其他的相反。 设备响应:设备地址 命令号 01 返回

21、的字节个数数据 1数据 2.数据 nCRC 校验的低 8 位 CRC 校验的高 8 位例:100105CD6BB20E1BCRC 低CRC 高意义如下:设备地址和命令号和上面的相同。返回的字节个数:表示数据的字节个数,也就是数据 1,2.n 中的 n 的值。数据 1.n:由于每一个数据是一个 8 位的数,所以每一个数据表示 8 个开关量的值,每一位为 0 表示对应的开关断开,为 1 表示闭合。比如例子中,表示 20 号(索引号为 19)开关闭合,21 号断开,22 闭合,23 闭合,24 断开,25 断开,26 闭合,27 闭合.如果询问的开关量不是 8 的整倍数,那么最后一个字节的高位部分无

22、意义,置为 0。CRC 校验同上。2、读只可读数字量寄存器(输入状态): 和读取线圈状态类似,只是第二个字节的命令号不再是 1 而是 2。 3、写数字量(线圈状态):计算机发送命令:设备地址 命令号 05 需下置的寄存器地址高 8 位 低 8 位 下置的数据高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位 例:100500ACFF00CRC 低CRC 高 意义如下:设备地址和上面的相同。命令号:写数字量的命令号固定为 05。需下置的寄存器地址高 8 位,低 8 位:表明了需要下置的开关的地址。下置的数据高 8 位,低 8 位:表明需要下置的开关量的状态。例子中为把该开

23、关闭合。注意,此处只可以是FF00表示闭合0000表示断开,其他数值非法。注意此命令一条只能下置一个开关量的状态。设备响应:如果成功把计算机发送的命令原样返回,否则不响应。4、读可读写模拟量寄存器(保持寄存器):计算机发送命令:设备地址 命令号 03 起始寄存器地址高 8 位 低 8 位 读取的寄存器数高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位 例:1003006B0003CRC 低CRC 高 意义如下:设备地址和上面的相同。命令号:读模拟量的命令号固定为 03。起始地址高 8 位、低 8 位:表示想读取的模拟量的起始地址(起始地址为 0)。比如例子中的起始地址

24、为 107。寄存器数高 8 位、低 8 位:表示从起始地址开始读多少个模拟量。例子中为 3 个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。设备响应:设备地址 命令号 03 返回的字节个数数据 1数据 2.数据 nCRC 校验的低 8 位 CRC 校验的高 8 位 例:100306022B00000064CRC 低CRC 高 意义如下:设备地址和命令号和上面的相同。返回的字节个数:表示数据的字节个数,也就是数据 1,2.n 中的 n 的值。例子中返回了 3 个模拟量的数据,因为一个模拟量需要 2 个字节所以共 6 个字节。数据 1.n:其中数据 1数据 2分别是第 1 个模拟量的高

25、8 位和低 8 位,数据 3数据4是第 2 个模拟量的高 8 位和低 8 位,以此类推。例子中返回的值分别是 555,0,100。CRC 校验同上。5、读只可读模拟量寄存器(输入寄存器): 和读取保存寄存器类似,只是第二个字节的命令号不再是 2 而是 4。6、写单个模拟量寄存器(保持寄存器): 计算机发送命令:设备地址 命令号 06 需下置的寄存器地址高 8 位 低 8 位 下置的数据高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位 例:100600010003CRC 低CRC 高 意义如下:设备地址和上面的相同。命令号:写模拟量的命令号固定为 06。需下置的寄存器地

26、址高 8 位,低 8 位:表明了需要下置的模拟量寄存器的地址。下置的数据高 8 位,低 8 位:表明需要下置的模拟量数据。比如例子中就把 1 号寄存器的值设为 3。注意此命令一条只能下置一个模拟量的状态。 设备响应:如果成功把计算机发送的命令原样返回,否则不响应。 modbusmodbus 通讯协议与通讯协议与 R485R485 通讯协议的区别?可以通用吗?通讯协议的区别?可以通用吗? strura 3 级 被浏览 269 次 2013.07.12 检举LongTech采纳率:54% 4 级 2013.07.13RS485 是接线口 modbus 是协议。他是建立在 RS485 是接线口的基础

27、上进行通讯的。所以 modbus 离不开 485,485 也离不开 MODBUS 前半部分说的基本正确,(RS485 是接线口)与(485 也离不开 MODBUS) 回答错误 RS485 不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点; 485 也离不开 MODBUS,理解也狭隘了,用 485 通信的规约很多,modbus 只是其中比较常用的有一种规约,如 IEC103,CDT 等全是 RS485 通信方式,还有一点 modbus不完全在 RS485 通信方式,还有 TCP 方式,modbus plus 有详细介绍,很简单Modbus

28、通讯协议通讯协议 通讯格式及模式区别的疑问通讯格式及模式区别的疑问lnn0032 3 级 被浏览 20 次 2013.11.21检举资料上都是说 :“ASCII 模式:一个信息中的每 8 位字节作为 2 个 ASCII 字符传输的,这种模式的主要优点是允许字符之间的时间间隔长达 IS,也不会出现错误。 RTU 模式:,信息中的每 8 位字节分成 2 个 4 位 16 进制的字符,该模式的主要优点是在相同波特率下其传输的字符的密度高于 ASCII 模式,每个信息必须连续传输。“ 能否各据一个实例。 另外,两种模式传输的一个字节的格式:“1 起始位 ,7 位数据,奇/偶校验时 1 位;无奇偶校验时

29、 0 位,(LRC)1 位 ,带校验 1 停止位;无校验 2 止位” 总长度超过了一个字节 8 位的长度,是不是数据位是软件给定,其他是在传输中由硬件根据设定自动产生。QQ124914603采纳率:51% 4 级 2013.11.21回答第一个问题: ASCII 协议的起始和结束有固定字符表示,比如收到“:“就认为报文开始,收到回车就认为报文结束。其报文均为 ASCII 码可见字符,因此较 16 进制字节使用效率较低。 RTU 协议使用数据传输的间隔表示数据的起始和结束,报文前有大于 3.5 个字节的空闲那么认为报文开始,报文后有 3.5 以上个字节的间隔就认为报文结束。 第二个问题: 一个字

30、节 8 位的长度指的是数据存储占用的寄存器空间,而问题中提到的传输格式中单个字节加起始位、校验位、停止位后长度大于 8,这个和一个字节 8 个位没有冲突。串行通信为了确保数据传输的准确性、完整性,在每发送一个字节有效数据的时候前后加上了起始位、校验位、停止位。也就是说为了有效准确的传输一个 8 位数据,在通信链路中实际传输了 11 个位关于关于 MODBUS RTU 通讯协议的提问通讯协议的提问5 我想用 VB 编写一个关于具有 MODBUS RTU 通讯协议的温控表的软件,但是我对 MODBU S RTU 通讯协议从未涉及,希望能够提供关于 MODBUS RTU 通讯协议的一些具体的内容 ,

31、以及结合相应的 VB 程序给与具体的讲解。我在网上也能搜到一些关于 MODBUS RTU 的 介绍和 VB 程序代码,但是依照我现在的能力无法正确解读其内容的实质,希望各位能给与帮助,我需要的是详尽和细致的内容。满意答案满意答案傅晓华 3 级 2009-02-21modbus 桢结构 : 地址 功能码 开始地址 数据长度 CRC 检验码像你这种应该是使用功能 3 例如 要问 RTU(地址是 0x01,要问得数据在0x02 上,长度是一个字)就准备一个数组 MESSAGE255,从 MESSAGE0开始赋值 &H01,&H03,&H00,&H02,&H00,&H01,&Hxx,&Hxx,(最后两个是 CRC 校验码,我没算)这样得一串数据叫一帧(MODBUS 就是主问一帧从回一帧来运行的),接着就是打开 MSCOMM,用个循环把数组按顺序放到输出缓冲发送就好了,接着就是读接受缓冲,分析数据了,回来的应该是 &H01,&H03,&H01,&Hxx,&Hxx,&Hxx,&Hxx,(地址,功能码,长度,数据,CRC 校验)CRC 校验完成后 你就可以提取中间得数据部分了,大概过程就是这样,最近一直在自己搞 PIC 单片机,通讯就是用得 MODBUS。要学 MODBUS 最好就是下个 MOSBUS 得测试软件,有好多的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com