您现在所在的是:

串口通信

回帖:19个,阅读:1972 [上一页] [1] [2] [下一页]
* 帖子主题:

层剥modbus RTU常用的

19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2016/7/4 11:43:09
#0楼
工作中碰到还是论坛问题,关于通讯是难点,其中modbus因为应用广泛,出现的频率很高.
试试能不能解释清楚.有没有帮助.
范围:这里只说常用部分.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2016/7/4 11:43:49
#1楼
先分层看看,Modbus都干了些什么.
*1 从通讯的两个modbus末端(人/机),看到4种数据,分别是0xxxxx,1xxxxx,3xxxxx,4xxxxx,可以叫四种寄存器(register).
代号      名称            类型      操作
0xxxx1     线圈状态        位        可读/可改
1xxxx1     数位/离散输入   位        只读
3xxxx1     输入寄存器      字        只读
4xxxx1     保持寄存器      字        读/写
不管什么设备,只要它说采用modbus通讯,不管数据在它自己里面是什么名字,都要落到这个范围.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2016/7/4 11:45:14
#2楼
*2那么modbus怎么做到两个设备交换上面4种数据的呢?
发生了两句对话,一个设备(地位:主/master)说,我需要(读)/改变(写)一些数据,另一个设备(从/slave)就回答,这些数据是这样的或者好我修改.
主向从设备读取数据操作对话的格式是这样的(RTU):

主:  SA FC SRHI SRLO NRHI NRLO CRCHI CRCLO
各个数据都是一个字节.
SA      从设备标识号(地址)            我要找谁(土豆,土豆)
FC      功能号                       我要什么数据(上述4种里的一种)
SRHI    数据寄存器开始地方高字节     数据很多,我从哪开始拿
SRLO    低字节
NRHI    寄存器数量高字节             数据很多,我要几个
NRLO
CRC     校验(两个字节共16位)         通讯常有的检查纠正错误数据,暂不管

从:SA FC BC D1HI D1LO D2HI D2LO … DnHI DnLO CRC
SA      从设备标识号(地址)            我是谁(土豆)
FC      功能号                       我知道你要什么数据
BC      字节数                       我给你发下面这么多字节n*2
D1HI    数据寄存器开始地方高字节     数据很多,我一个一个给你发
D1LO    低字节
DnHI    寄存器数量高字节             我发的第n个数据
DnLO
CRC     校验(两个字节共16位)         通讯常有的检查纠正错误数据,暂不管

之所以有Hi和Lo,是因为*1里的数据,都要按字(16位)表达,而通讯要按字节(8位)交流.

*1和*2之间发生了什么?*2负责对话,并把数据从DnHI/LO里分离出来,给了*1.
*2下层数据表达格式层省略,这里只说RTU.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2016/7/4 11:45:54
#3楼
*3 modbus的时序
在这层里,MODBUS规定了,怎么按顺序说话.这个分两方面.
大方面:Modbus规定两个通讯设备,分主和从设备.只有主有权开始一个会话,从设备(从站)在听到是喊自己,才会回答.一般来说,这就决定,Modbus通讯只有一个主,可以有多个从.
小的方面:上面*2所说的对话,每说一句叫作一个帧或段(Frame).MODBUS规定了帧的开始,数据顺序,结束和衔接.
然并,这些细节,平常不怎么关注.

*3对*2的交待是, 让*2层能顺利得到对话数据, 以及不顺利会怎么把握时间的利用.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2016/7/4 11:47:02
#4楼
*4 其实到上面,Modbus就完成了它的协议范围. 接下来,是串行通讯的范围,包括RS232,RS485等.
到这里,应该把modbus和串行通讯厘清了.
Modbus就是: 串行通讯接口?*3的时序?*2的报文?*1的数据.
在串行通讯接口上,你可以规定任何可用的时序和对话方式,那就是自由通讯和自定协议.
串行通讯接口,是用一个接一个按顺序出现的电信号表达数据的一种信息传递方式,有时也叫协议,因为它也规定了一系列的规则.这里也简单分层(我自己命名的,要对应国际各位有心)表示一下:
数位层   就是经常看到要定义波特率,数据位,停止位,校验位.其实通讯还隐含有起始位,暂时把起始也包括在这里.记住一下,Modbus RTU数据位定为8位,不能更改.
        这一层主要负责数据传输的快慢,位数.
电平层   就是多少电高低电表示数位0,1.RS232是3~15V表示0,-15~-3V表示1,电平对公共端;RS485接收是200mV表示0,-200mV表示1,发送电平在1.5~5V范围,电平是两线相对(差分)电平.
        这一层告诉,上面那层的数位在电信号能测出什么来.
线路层   RS232通常3线,RS485通常2绞线(RS422就看成两个RS485好了).RS232可以有其它信号线进行握手交流.
        这一层告诉上面的电是怎么传导的.
接口     RS232有DE9,DB25等,RS485没有规定.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
22925
gk_0 版主
文章数:7735
年度积分:706
历史总积分:22925
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2016/7/4 13:31:56
#5楼
仔细的看完了,了解的很透彻
不被人嘲笑的梦想,就不值得去追求!
4809
528工控科技
文章数:1574
年度积分:20
历史总积分:4809
注册时间:2014/1/3
发站内信
工控人谈电商
发表于:2016/7/4 13:42:47
#6楼
解释的很通俗,是这样
gk528.com
2215
liangmaoxian
文章数:572
年度积分:50
历史总积分:2215
注册时间:2014/10/26
发站内信
发表于:2016/7/4 23:08:00
#7楼
大师你这头像很亲切啊!哈哈
20905
bnnyygy
文章数:5989
年度积分:1571
历史总积分:20905
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2016/7/4 23:17:43
#8楼
大师。。。有时间学习下。。

不知道需要啥硬件比较简单点?

有PLC 触摸屏这些
2215
liangmaoxian
文章数:572
年度积分:50
历史总积分:2215
注册时间:2014/10/26
发站内信
发表于:2016/7/4 23:27:12
#9楼
回复 #4楼 pqsh
大师讲的都看得懂,但是自己没有实践过,大师有没有rtu相关的完整的发送和接收列程借鉴一下(最好是三菱的)。不胜感激。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004