首页 RS-485总线多机通信的软件实现

RS-485总线多机通信的软件实现

举报
开通vip

RS-485总线多机通信的软件实现 曩里 堡垒 塑 Software ImD1emention of RS-485 Bus Multi-computer Communication 查洪球 Zha Hongqiu (江西联创通信有限公司,江西 南昌 330096) (Jiamgxi Lian Chuang Communication Corporation,Jiangxi Nanchang 330096) 摘 要:RS-485总线在工业控制及通信领域受到广泛的应用,本文提出一个具体的RS一485总线多机通信的软件实现 方法,供大...

RS-485总线多机通信的软件实现
曩里 堡垒 塑 Software ImD1emention of RS-485 Bus Multi-computer Communication 查洪球 Zha Hongqiu (江西联创通信有限公司,江西 南昌 330096) (Jiamgxi Lian Chuang Communication Corporation,Jiangxi Nanchang 330096) 摘 要:RS-485总线在工业控制及通信领域受到广泛的应用,本文提出一个具体的RS一485总线多机通信的软件实现 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,供大家参考使用。 关键词:地址字节:数据字节:时间片:中断 中图分类号: TP336 文献标识码:B 文献编号:1671—4792一(2008)7-Ol03一O3 Abstract:RS-485 Bus is widely applied in industrial control and communication areas.A detailed implement ionmethod adopted software is proposed in order to offer a reference. Kevwords:Address Byte;Data Byte;Time S1 ice; Interrupt 0 RS-485工作原理简介 所谓多机通信主要是指两台以上计算机之间的数据传 输。在单片机多机应用系统中,单片机之间的通信方式为主 从式。主从式多机通信要求主机发送的信息可以传送到各个 从机,而从机发送的信息只能为主机接收,各个从机之间不 能直接通信,须通过主机实现。系统工作时,主机与被选中 从机之间的数据交换一一对应,被选中的从机接收数据,其 它从机将数据丢失。RS-485总线工作原理框图如图一所示。 图一 RS-485总线控制原理框图 在上述原理框图中,SN75176为~总线收、发驱动芯片, 由CPU的P1.7引脚完成对其进行收发控制,当P1.7为。时, 该芯片处于发送状态;当P1.7为1时,该芯片处于接收状态, 并由该芯片来控制总线的收、发方向。 在上述原理中,主机与从机的CPU可采用MCS-51系列的 单片机,也可采用其他支持多机通信的ARM CPU等。 在RS一485总线工作过程中,必须要始终保持主、从机 收、发状态的一致性,这也是多机通信的主要与核心内容。 即当主机处于发送状态时,各从机必须处于接收状态,而当 从机处于发送状态时,主机必须处于接收状态。否则会引起 总线冲突,甚至造成通信瘫痪。这个主、从双方的协调工作 应当由主机与从机的通信协议来完成,并最好由主机来控制 主、从机的收、发转换。为此,我们应当在通信协议上下工夫。 1 通信协议内容 我们知道,当MCS-51串口工作在方式2和3时,具有如 下的特点:若位SM2=I且接收到的第9位数据为0时,则不能 激活接收中断标志RI,接收数据无效;若SM2=I且接收到的第 9位数据为1时,则RI不仅被激活而且还可以向CPU请求中 断;若SM2=O则无论接收到的第9位数据为0还是 1,TI、RI 都以正常方式激活并可向CPU请求中断。 当MC$--S1串口工作在方式2和3时,TB8中保存的就是 串口即将要发送的第9位数据,而RB8中保存的就是串口接 收到的第 9位数据。 因此,我们可充分利用MCS-51的这种特点来实现Rs一 485位总线多机通信,为实现此目的,我们先做如下设定: (1)在每个从机上,都提供一个软件设置,用于设置本 从机的地址( 7最大8个从机),每个从机的地址不能设置 成相同,否则会造成地址冲突。 (2)将主、从机的串口设置为工作方式2或方式3,并 使用相同的波特率。 (3)将主机发送的第9位TB8设为地址帧和数据帧的标 志位。TB8=O, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示数据帧;TB8=I,表示地址帧。 (4)将主、从机的REN位设置为1(主、从机都可接收 及发送数据),所有从机的SM2设置为1(表示从机首先只接 收地址帧),主机的SM2设置为0(表示主机可接收任何数据)。 维普资讯 http://www.cqvip.com 至此,我们就完成了对主、从机工作方式的设置及初始 方应提供一个20MS的定时器,由该定时器来完成对从机的定 化操作,接下来便可进行具体的软件通信过程实现 (制定通 时扫描与处理,在从机方须提供一个硬件接口,通过该接口 信协议)。 来获取从机的地址。在收发数据流量控制上,我们采用主机 卫 由于在多机通信过程中,一般都只有一台主机,多台从 方进行发送字节总数控制,而在从机方不进行发送字节总数 C,) I 机。而各从机又都处于平等状态,并由主机去完成对各从机 的控制 (默认从机方发送数据量比较少)。当然,如果有兴趣 厶 ∞ 的收发控制,故采用分时法来实现该过程比较合适。 的话也可对该协议进行修改,对从机方也实行收、发流量控 cn 总 为此,我们制定了如下通信协议,其具体思想及实现步骤 制。 线 如下 : 2 软件实现流程 多 机 ( 1)将160MS的时间平均分成8个时间片,每个时间片 以主机串口中断收发流程为例,从机串口中断收发流程 通 占用20MS,用于主机与对应从机的通信,主机与对应从机的 与主机相似。主机的数据收、发主要在串口中断中完成与实 信 当前数据必须在该20MS时问片内交互完成。在这20MS的时 现,当产生串口接收中断时,则串口接收缓冲区的数据为从机 的 软 问片内,首先由主机发送数据,从机接收数据,主机发送完 发送过来的数据,可直接进行接收与处理,主机串口中断收 件 数据后再由从机发送数据,主机接收数据。 发流程如图二所示。 实 (2)主机与对应从机通信时,由主机方协凋主、从双方 { ⋯ ⋯ 现 的通信,从机方处于被动接收状态,受主机方的控制。20MS 主 . 时问片开始时,首先由主机发送地址字节(该地址字节的低 /— 强& \ 1壹 楚孥 } 送数据(从机此时必须处于接收状态)。最高位为 表示主机 、r 辛 享整据垄 . 此日寸 ),该地址字节 羔、二 ,口、 -b ’ : 11 素n:甬 莹碍斗-, #7 — ,十士n士、古*轩 / 岩嚣 嚣嚣十 士、古黼 / 躐豫凌盘瞎 蟹缳d静知 繇 箍 篓 璇 跨赣譬蹿鞲黼能嚣 臻拳蕊 据发往相应的从机方,则先将从机方的编号写入地址字节变 \ / l 鲰箍避龋瓣 量的低4位,再将地址字节变量的最高位置0(表示主机方 有数据发送到相应的从机方),并将TB8置I(表示这是地址 主 字节),然后将该地址字节发送出去。若本方 (主机方)无 / \ 数据发律相廊的从机方.则同样 将从机方的编号写入七fh±I / 饕妻 \ , , 船馥{ 萍碡姥瓣 凳穗蒜神鞋黯瞧I 主机方无数据发送到相应的从机方,此时从机可发送数据), 、 , 并将TB8置 1(表示这是地址字节 ),同时将该地址字节发送 l 出去o , 、 ⋯ ⋯ 。。 ⋯ ⋯ ⋯ ⋯ ⋯ 、 . i鼗 蠢 (4)在20MS时间片内,若主机有数据要发送,且主机 . 1 方数据已发送完成,则主机方需再将从机方的编号写入地址 厂■ 子 重 1 4位,开秆地址_子 币,殳量 明鼓 向位置 1【表不 —— — 主机方数据已发送完,此时从机可发送数据),并将TB8置I 图二 主机串口中断收发程序流程图 (表示这是地址字节),然后将该地址字节发送出去。从机收 3 程序代码实现 到该地址字节后,便可由收状态转换为发状态,并发送相应的 本人将使用808I作为CPU的通信主机板与8个使用 数据,从而实现在20MS时间内的主、从收发转换。 ATMEL 89C52作为CPU的从机板,采用485总线相连,利用 (5)由于初始化时,所有从机的SM2=1,故它们都只接 PLM51单片机高级程序设计语言作为编程语言,实现了上述 收地址字节。当它们接收到该地址字节后 (RB8=I),与自己 主、从多机通信过程(其中主、从机采用相同的晶振及时钟)。 的地址进行比较,若相等,则置SM2=0,表示可继续接收其 因主、从机采用相同的晶振及时钟,故将它们都设置在串口 它后续数据;若不相等,则保持SM2=1不变,不能接收后续的 工作方式2,使得它们具有相同的串口通信波特率fosc/64。 数据字节。这样就保证了主机只与自己选中的从机进行通 以下以主机串口收发为例介绍程序代码的实现。 信。 DECLARE bSlaverecHead(MAX _ SLAVE) BYTE PUBLIC (6)为保证在20MS时间片内,主、从机双方都有数据 AUXILIARY; 发送的机会,须对主从双方在20MS时间片内发送的数据字 DECLARE bS1aveRecTail(MAX SLAVE) BYTE PUBLIC 节总数进行数量控制(总数的多少可跟据通信速率及单位时 AUXILIARY: 间内产生数据量的多少来确定)。一般来说,若根据具体情 //分别定义主机当前数据接收区的头、尾指针 , 当头指针不 况可判断出主从双方收发的数据量都比较少,且收发数据的 等于尾指针时表示主机可接收相应从机的数据 产生也比较均匀,数据收发时双方通信的速率也比较高,这 DECLARE MAX BYTE LITERALLY ‘64’: 时候也可不进行收发数据的数量控制,使用时应尽量做到具 //定义主机20MS允许发送的最大字节数 体情况具体分析,根据不同的情况灵活处理。 DECLARE MAX BUF LEN LITERALLY c 128, 为实现上述软件通信协议,我们在软件设计时,在主机 //定义主机收、发缓冲区大小 1 R7 维普资讯 http://www.cqvip.com ~ 】88 D0; TB8=I;//表示要发送的是地址字节 bTempAddr=bs1aveInde)( I 80H; //置地址字节最高位为1,表示从机现在可发送数据, SBUF=bTempAddr;//发送地址字节 CAI TIME(50);//延时,让地址字节发送出去 P1 — 7=1;//置主机为接收状态,准备接收从机数据 END; END; ELSE//主机数据已发送完,从机现在可以发送 DO; TB8:I;//表示要发送的是地址字节 bTempAddr=bs1aveIndex 1 80H; //置地址字节最高位为1,表示从机现在可发送数据, SBUF=bTempAddr;//发送地址字节 CAI L TIME(so);延时,让地址字节发送出去 P1 — 7=1;//置主机为接收状态,准备接收从机数据 END; END; END ; 4 结束语 以上程序代码在 MCS-51单片机上成功地实现了多台设 备的互连互通,因此RS-485总线为各个设备的连接及组网提 供了可能。但RS-485总线也有其自身固有的缺点,例如:数 据传输速率低、传输距离有限、软件设计复杂、容易造成通 信瘫痪等。但目前由于其价格成本低,使用简单方便,使得 其在数据通信量要求不是很大的情况下,仍有很大的_i『场, 这就要求我们在其硬件及软件设计上 F功夫,使该RS-485总 线始终保持一种 良好、稳定的工作状态。 参考文献 [1 J李晓荃,魏立东.陈立芳单片机原理与应用[M].北 京:电子工业 版社,2000. [2]2陈力钧,刘英.单片机高级程序设计语言 PL/M-51 与PI /M.g6[M_I.西安:两安电子科技大学冉版社,1994. [3]邹继军,饶运涛.基于SJA1000的CAN总线系统智 能接点设计【J].单片机与嵌人式系统应用,2001,(12). [4J刘和平.PIC18Fxxx单片机原理与接口程序设计[MJ. 北京:北京航空航天出版社,2004. [5]周立功等.ARM微控制器基础与实战M .北京:北京航 空航天出版社,2003. [6]nRF24Z1 Headphone Reference Design 1,nRF24Z1一 HPR1[EB/OI J.http://www.nvlsi.no,2006-11—20. 作者简介 查洪球,南昌大学本科毕业,南昌大学硕士研究生,目 前从事嵌人式产品研发工作。 维普资讯 http://www.cqvip.com
本文档为【RS-485总线多机通信的软件实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_060236
暂无简介~
格式:pdf
大小:188KB
软件:PDF阅读器
页数:3
分类:互联网
上传时间:2010-02-03
浏览量:34