ModBusRTU通讯协议与ModBus通讯协议有什么区别.docx
- 文档编号:2049069
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:10
- 大小:57.29KB
ModBusRTU通讯协议与ModBus通讯协议有什么区别.docx
《ModBusRTU通讯协议与ModBus通讯协议有什么区别.docx》由会员分享,可在线阅读,更多相关《ModBusRTU通讯协议与ModBus通讯协议有什么区别.docx(10页珍藏版)》请在冰豆网上搜索。
ModBusRTU通讯协议与ModBus通讯协议有什么区别
ModBus-RTU通讯协议与ModBus通讯协议有什么区别
modbusRTU常见问题汇总
2013年04月22日10:
57
注:
本资料由网络搜索,答案仅供参考(持续更新中)
点击查看MODBUSRTU产品详情
1、ModBusRTU通讯协议与ModBus通讯协议有什么区别?
ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
ModBus协议能够应用在不同类型的总线或网络。
对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。
目前,Modbus有下列三种通信方式:
1.以太网,对应的通信模式是MODBUSTCP。
2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUSRTU或MODBUSASCII。
3.高速令牌传递网络,对应的通信模式是ModbusPLUS。
2、关于MODBUSRTU通讯协议的提问?
modbus主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。
其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,
3、modbus、rtu、modbusrtu分别是什么?
modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购
而modbus分为两种协议:
即串口协议(modbusrtu)和网口协议(modbustcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbusRTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbusTCP协议进行传输,则需要使用带有网口的PLC
具体的帧格式如下
modbusRTU 地址域功能码数据差错校验
modbusTCP 目的地址协议id长度单元号功能码数据
简单的说tcp是由RTU加工而来的
而RTU则是另外一种概念,不包含在modbus协议内
是工控行业对监控设备的简称。
4、关于modbus_RTU协议主机发送的命令的一些问题
•01读保持线圈状态(Readcoilstatus)
•02读输入线圈状态(Readinputstatus)
•03读保持寄存器(Readholdingregister)
•04读输入寄存器(Readinputregister)
•05写单个线圈(Forcesinglecoil)
•06写单个寄存器(Presetsingleregister)
•15写多个线圈(Forcemultiplecoils)
11、MODBUSRTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数?
浮点数保存的字节格式如下:
地址 +0 +1 +2 +3
内容 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
这里
S代表符号位,1是负,0是正
E偏移127的幂,二进制阶码=(EEEEEEEE)-127。
M24位的尾数保存在23位中,只存储23位,最高位固定为1。
此方法用最较少的位数实现了较高的有效位数,提高了精度。
零是一个特定值,幂是0尾数也是0。
浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下:
地址+0 +1 +2 +3
内容0xC1 0x48 0x00 0x00
浮点数和十六进制等效保存值之间的转换相当简单。
下面的例子说明上面的值-12.5如何转换。
浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表
所列的那样分开,例如:
地址 +0 +1 +2 +3
格式 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
二进制 11000001 01001000 00000000 00000000
十六进制 C1 48 00 00
从这个例子可以得到下面的信息:
符号位是1表示一个负数 幂是二进制10000010或十进制130,130减去127是3,就是实际的幂。
尾数是后面的二进制数10010000000000000000000
在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数点到尾数的开头,得到尾数值如下:
1.10010000000000000000000
接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为指数是3,尾数调整如下:
1100.10000000000000000000
结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的幂,例如:
1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=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报文通过串口软件发送啊,报文格式:
010300000001840A读寄存器命令。
13、vbmodbus给modScan32rtu发送数据应该怎么写?
确定两个软件哪个是主,哪个是从。
然后再确定通讯协议是RTU、ASCII还是TCP。
如果是TCP,就用socket控件。
RTU\ASCII就用COM控件。
然后给对应的口按照协议收发数并解析就可以了。
14、ModBusRTU通讯协议与ModBus通讯协议有什么区别?
modbus协议包括了MODBUSRTU
15、modbusrtu通讯协议如何判断超时?
设置一个标志量用来表示是否超时;再用一个定时器,定时时长为发送3.5个字符的时间(当然为了保险时间可以长一些);在定时器中置超时标志;在串口中断中每收到一个字节时定时器清零;主程序中根据超时标志做相应处理。
16、如何理解MODBUS协议RTU模式中的1.5和3.5字符间隔?
发送两帧数据之间要有一定的时间间隔,以保证接收方UART能够区分。
这个时间间隔在MODBUSRTU模式中要求是1.5和3.5字符间隔,也即是传输1.5和3.5个字符的时间,它与设置的通信参数有关,计算为:
若串口通信参数设置为(注:
开始位固定为1):
数据位8,奇偶校验位1,停止位1,波特率9600bps,
则传输一个字符(即1个字节)的时间为:
(1+8+1+1)/9600=0.00114583s=1.1454583ms
1.5字符间隔=1.5x1.1454583ms=1.71818745ms
3.5字符间隔=3.5x1.1454583ms=4.00910405ms
17、MODBUSRTU测试软件?
推荐:
modscan32
18、MODBUS RTU协议,上位机与仪表通信,读写数据都正确,为什么仪表掉电,写入的参数又丢失了?
怎么保存?
两种可能:
如果在仪表上设置参数掉电后都保存不了的话,基本可以确定是仪表问题;
有些仪表写入参数后还需要向固定的寄存器写入确认参数,为了保证写入参数真确,需要检查仪表通信部分说明书。
MODBUS结论总结
2012年04月20日10:
22
Modbus协议最初由Modicon公司开发出来,现在Modbus已经是工业领域全球最流行的协议。
支持传统的RS-232、RS-422、RS-485和以太网设备。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。
协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
标准的Modicon控制器使用RS232C实现串行的Modbus。
Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以 发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。
因此,Modbus协议的可靠性较好。
ASCII协议和RTU协议进行的比较:
协议
开始标记
结束标记
校验
传输效率
程序处理
ASCII
:
(冒号)
CR,LF
LRC
低
直观,简单,易调试
RTU
无
无
CRC
高
不直观,稍复杂
LRC校验:
LRC域是一个包含一个8位二进制值的字节。
LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。
它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。
CRC校验:
CRC域是两个字节,包含一16位的二进制值。
它由传输设备计算后加入到消息中。
接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
1、读可读写数字量寄存器(线圈状态):
计算机发送命令:
[设备地址][命令号01][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验的低8位][CRC校验的高8位]
例:
[10][01][00][13][00][25][CRC低][CRC高]
意义如下:
<1>设备地址:
在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。
例子中为想和16号(十进制的16是十六进制的10)通讯。
<2>命令号01:
读取数字量的命令号固定为01。
<3>起始地址高8位、低8位:
表示想读取的开关量的起始地址(起始地址为0)。
比如例子中的起始地址为19。
<4>寄存器数高8位、低8位:
表示从起始地址开始读多少个开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ModBusRTU 通讯 协议 ModBus 什么 区别
![提示](https://static.bdocx.com/images/bang_tan.gif)