中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

西门子SIEMENS

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 西门子SIEMENS → 浏览主题: 【话题】马乐:玩转485通讯系列【连载】(20140918)
发表新帖 回复该主题
回帖:277个,阅读:55524 [上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] ... [28] [下一页]
* 帖子主题:

【话题】马乐:玩转485通讯系列【连载】(20140918)

分享到
6544
eyujiedianqi
文章数:2622
年度积分:50
历史总积分:6544
注册时间:2009/6/5
发站内信
发表于:2014/9/30 13:03:06
#60楼
马乐,你好,能把您讲的485通信中用到的串口调试软件发给我吗?先谢谢,我的邮箱:eyj1218@sina.cn
2102
yueyukui
文章数:118
年度积分:59
历史总积分:2102
注册时间:2014/6/17
发站内信
发表于:2014/10/2 11:40:02
#61楼
讲的真是太好了,非常详细,通俗易懂,有这样无私分享的大师,绝对是初学者的福音!
563
rongchang
文章数:1
年度积分:50
历史总积分:563
注册时间:2014/10/5
发站内信
发表于:2014/10/7 11:18:11
#62楼
非常感谢楼主
992
马乐
文章数:17
年度积分:50
历史总积分:992
注册时间:2014/9/17
发站内信
发表于:2014/10/8 11:28:10
#63楼
【玩转485】10.如何判断站地址【连载10】

个人微信号:mayue_66

1.站地址概念

RS485通讯网络是一个总线形式的网络,那么网络中的主站是如何区别各个站点的呢?要知道在这个网络中,主站发出的数据网络中的每个从站都是可以接收到的(因为主站发出的高低电平是施加在整个网络上的),就像班主任讲话全班同学都可以听到一样,那么班里的同学是怎么知道班主任是叫自己呢?很明显每个人都有名字,班主任只要在发出的指令里加上他想指挥的同学的名字就可以了。同理RS485网络里每个从站也有自己的名字,那就是站地址,主站只要在发出的报文里加上站地址信息,那么对应的从站就会执行这条报文。下面我们一起看看如何在程序中完成这个过程。
附件 01.jpg
图 1-1

这里我们还是用PLC做从站电脑做主站,我们定义报文的第一个字符作为站地址,如果我们的从站的站地址是02,那么主站发出的报文如果第一个字符是02那么就认为这条报文是发给该从站的,从站给主站返回数据,如果主站发出的报文第一个字符不是02那么就认为该条报文是发给别的站点的,从站继续进入接收等待状态,等待下一条报文。

2.程序的编写
附件 02.jpg
图 2-1
图 2-1所示是主程序内容,看过上一篇文章的朋友肯定会发现这和数据收发那一节程序的内容是一模一样的,我们这个程序大家主要是要看接收完成中断的程序我是怎么写的。

附件 03.jpg
图 2-2
图 2-2是接收完成中断,这里我们使用字节判断指令判断接收到的报文是否是发给本站点的,2表示本站点站地址是2如果写3的话表示本站点站地址是3。如果没有接收到站地址则继续等待接收。
附件 04.jpg

图 2-3
图 2-3所示为发送完成中断,发送完成后进入等待接收报文状态。
我们可以先在发送缓冲区将数据准备好,当主站发出的报文中的站地址和本站吻合,我们将发送缓冲区的数据返回给主站,如图 2-4所示。
附件 05.jpg
图 2-4

附件:程序.rar
[本地下载]
附件 微信二维码.jpg
[此贴子已经被作者于2014/10/8 11:44:15编辑过]
16090
wml0060
文章数:4907
年度积分:83
历史总积分:16090
注册时间:2007/6/8
发站内信
发表于:2014/10/8 16:46:46
#64楼
非常详细的资料,确实对我来说是解除了好多的对于485的疑问。非常感谢楼主的无私奉献。
713
大大苏
文章数:6
年度积分:50
历史总积分:713
注册时间:2013/8/23
发站内信
发表于:2014/10/8 21:14:42
#65楼
我想问下数据转移指令MOV的IN输入端是默认几进制数?为什么楼主有的地方加了16#有的地方又不加呢
6841
op310
文章数:1515
年度积分:50
历史总积分:6841
注册时间:2009/12/7
发站内信
发表于:2014/10/8 22:23:42
#66楼
玩转485】4.数据的接收2【连载4】
此帖程序出现非致命错误9,,,请问是什么原因??
992
马乐
文章数:17
年度积分:50
历史总积分:992
注册时间:2014/9/17
发站内信
发表于:2014/10/9 9:44:18
#67楼
【玩转485】11.读取从站数据1【连载11】

个人微信号:mayue_66

1.主站发送报文结构

大家可以看到我之前写的文章中的程序都是没有什么具体功能的,都是两个站点之间互相传递数据,这些数据我们只是看看是否可以正常接收发送,数据本身是没有任何含义的。很明显在实际使用过程中我们是不会这样去用的,对于通讯来说主站发送的数据通常只有两个功能,一是读取从站寄存器中地址的状态也就是从从站读取数据,二是向从站写入数据。那么主站要怎么发送数据从站才能知道,主站是要读数据还是写数据呢?这个就要靠功能码来区分了,
附件 01.jpg
图 1-1

图 1-1所示就是我自己定义的主站向从站发送读取从站数据请求的报文结构,说白了就是我自己定义的一个协议,大家可以叫它马乐协议(^_^)。下面我们一起来看看此报文中四段内容的具体含义。

地址:指的是要读取哪个从站的数据。
功能码:指的是主站要对从站做什么操作,我们这条报文格式是我自定义的读取从站数据的报文(向从站写入数据报文格式后续文章讨论)此处我把读取从站V区数据的功能码自定义为02,那么从站只要接收到报文的第二个字符是02从站就知道主站要读取自己的V区,其他区域大家可以自己定义。
起始地址:读取数据区域的起始地址。
读取数量:读取多少数据。

2.从站返回报文结构

既然是主站向从站读取数据,那么从站接收到指令后肯定要把主站所需要的信息返回给主站,因此从站向主站返回数据也必然有一个报文格式,下面我们一起来看看,我自定义的马乐协议的从站返回给主站数据的报文结构。
附件 02.jpg
图 2-1

地址:返回数据的从站的地址,让主站知道这是哪个从站返回来的数据。
功能码:就是主站发送给从站的那个功能码,从站再返回给主站。
返回字节数量:一共给主站返回多少个字节的数据,如果此处为6那么此字节后面是6个字节的数据。
返回数据1~n:从站返回给主站的数据,返回数据数量n是由主站读取数量所决定的。

以上我通过一个我自己定义的协议,向大家介绍了RS485通讯中主站是如何读取从站数据的过程,当然大家如果有兴趣自己也可以定义个张三协议、李四协议自己玩玩,下篇文章我就教大家如何将我上面的自定义协议,变成PLC的程序。

附件:【玩转485】11.读取从站数据1.pdf
[本地下载]

附件 微信二维码.jpg
[此贴子已经被作者于2014/10/9 9:48:06编辑过]
992
马乐
文章数:17
年度积分:50
历史总积分:992
注册时间:2014/9/17
发站内信
发表于:2014/10/9 17:25:26
#68楼
【玩转485】12.读取从站数据2【连载12】

个人微信号:mayue_66

1.报文格式回顾

上一篇文章我向大家介绍了读取从站设备数据的方式,并且自定义了通讯格式(报文格式),用来完成读取从站数据的工作,当然大家看上一篇文章中的报文结构一定会觉得十分简单,图 1 1 为主站向从站发送数据的请求报文结构,图 1-2是从站接收到主站信息后返回给主站的信息报文结构。报文具体含义已经在上一篇文章中给大家解释过了,下面我就给大家把从站的程序写出来然后进行演示。
附件 01.jpg
图 1-1
附件 02.jpg

图 1-2

2.程序编写

本程序比之前的程序都复杂一些,因此我先向大家说明程序的结构,本程序结构是主程序调用接收完成中断,和发送完成中断,同时接收完成中断中调用一个专门处理如何应答主程序请求的子程序。

图 2-1是主程序
附件 03.jpg
图 2-1
图 2-2所示为接收完成中断
附件 04.jpg
图 2-2
图 2-3到图 2-6是子程序read
附件 05.jpg

图 2-3
附件 06.jpg
图 2-4
附件 07.jpg

图 2-5
附件 08.jpg
图 2-6
图 2-7是发送完成中断
附件 09.jpg
图 2-7

3.程序演示

现在我们用电脑向S7-200PLC发送一组报文查询S-200PLC中VB300、VB301、VB302、VB303、VB304、VB305、VB306共7个字节数据发送报文内容。
第一步:我们先给以上7个字节设定如下数据内容。VB300 = 16#17、VB301 = 16#22、VB302 = 16#FF、VB303 = 16#F5、VB304 = 16#ED、VB305 = 16#86、VB306 = 16#0F。如图 3 1所示

附件 10.jpg
图 3-1
第二步:设定要发送的报文如图 3-2所示
附件 11.jpg
图 3-2
第三步:主站发送查询请求并接收到从站返回的数据如图 3 3所示。
附件 12.jpg
图 3-3

附件:【玩转485】12.读取从站数据2.pdf
[本地下载]
附件:程序.rar
[本地下载]
附件 微信二维码.jpg
[此贴子已经被作者于2014/10/9 17:34:58编辑过]
1211
yha_4611
文章数:22
年度积分:50
历史总积分:1211
注册时间:2004/3/24
发站内信
发表于:2014/10/10 2:55:31
#69楼
回复 #68楼 马乐
辛苦
工控学堂推荐视频:

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

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

140.4009