欢迎来到天天文库
浏览记录
ID:45569369
大小:259.55 KB
页数:6页
时间:2019-11-14
《一种RS-485总线自定义通信协议及其应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一种RS-485总线自定义通信协议及其应用摘要:RS485总线是集散控制系统常用的组网方法,但具体的通信协议并没有一个统一的标准。本文详细讨论-•种基于RS-485总线通信协议的设计,具有可靠、编程实现简单、易扩展等特点,能够很容易地移植到其它系统中;结合一个电力参数实时监测系统实例,介绍木协议的具体应用。关键词:RS-185通信协议集散控制系统1概述图1基于RS-485自疋乂协议的分层模型通常,一个集散控制系统由一个主控计算机(上位机)和一系列基于仇的前端智能仪器(下位机)构成,它们之.间再通过一定的物理媒介连接在一起,以完成必要的通信功能。对于一个特定的
2、测控系统而言,所要测控的对象和所采取的测控算法是个冇个性的东西;而上位机和下位机z间的通信可以看作是一系列命令流利数据流的流动,所采用的通信协议是用来保证传输过程的可靠和高效,是具有共性的,能够也应该有一个统一的设计标准。在集散控制系统中,普遍采用RS-485总线作为底层通信接口。它具冇稳定可靠、编程简单、纟II网快速、价格低廉的优点,但在协议设计实现方面并没有一个统一的规范,导致不同的控制系统常常采川不同的通信协议。因此,有必要结合我们的工作实践,设计一种有通用性的高效可靠的协议,从而简化基于RS-485的分布式测试系统通信部分的设计,既能够保证通信的稳定可
3、靠,又能够把精力集屮到测控系统算法的设计前端机(MCS-51)图2RS-485通信网络的拓扑结构通信协议的设计通常采用分层的机构,如ISO的0S1参考模型。这里也采用分层的结构來描述我们自定义的基于RS-485总线的通信协议,如图1所示。图1屮,物理层是利用物理媒介实现物理连接的功能描述和执行连接的规程,捉供用于建立、保持和断开物设定总的循环次数匸N(接收失败「丽)理连接的机械的、电气的、功能的和过程的条件;图3接收程序Receive流程图数据链路层用于建立、维持和拆除链路连接,实现无差错传输的功能;应用层针对不同的应用,利用链路层提供的服务,完成不同通信节点
4、之间的通信。下面结合每-层讨论这种口定义协议的貝•体设计,重点介绍如何实现可靠高效的通信,如何处理通信中错误,如何编程实现。2协议的设计2.1物理层协议设计RS-485通信网络是一种总线式的结构,如图2所示。上位机(以PC为例)和下位机(以基于MCS-51的科能仪器为例)都挂在通信总线上,物理层的通信协议山RS-485标准和MCS-51的多机通信方式共同方式。2.1.1EIARS-485标准RS-485是工业界使用最为广泛的双向、平衡传输标准接口,支持多点连接,允许创建多达32个节点的网络;具有传输距离远(最大传输距离1200m),传输速率快(1200m时为1
5、00kb/s),抗千扰能力强,布线简单等优点。2.1.2MCS-51串口的多机通信方式MCS-51具有多机通信功能。当串口以方式2(或方式3)接收时,若SM2(多机控制位)为],这时只接收第9位为1的串行数据(把笫9位为1的串行字节称为地址,把第9位为9的串行字节称为数据);当SM2=0时,不顾哀应(1B)[元荼硕良威也)恼体(1〜255B)虑皿层数据寢)[论笫9位为何值都接收。图4数据链路层帧结构这种功能使得基于MCS-51的智能仪器能够方便地通过RS-485接口芯片组成网络。2.1.3物理层的功能物理层耍完成发送及接收字节流的任务,但对传输过程的可靠性不做
6、出保证,而由高层协议來保证。物理层为链路层提供接口(以子程序的形式来描述),包WiSend子程序(功能为发送一个字节)及Receive子程序(功能为接收一个字节)。发送程序比较简单,接收程序的流程如图3所示(以MCS-51为例)。采川循环查询RI标志位的方式,可以在规定的时间内(即在规定的循环次数内)实现一个字节的接收。规定时间的长短山循环次数决定。如果在规定的时间内未收到,则视为通信失败。2.2数据链路层协议设计数据链路层的基木通信单位是帖,帧结构如图4所示。ReceiveFrameY程序图5发送7接收帧的程序流程图*帧长度域为每一帧的第一个字节,用來说明帧
7、体的长度。*兀余帧长度域是可选的,它是帧长度域的重复,可以用來检查在传输过程屮帧长度域是否存在传输错误。*帧体域用來封装來自上层(应用层)的数据报,长度是1〜255B,链路层对这一部分不做处理,由应用层处理。链路层可以采用如下方法进行差错处理。首先,帧长度域的引入可以方便程序的设计,同时也能够起到一定的检查错误的功能,可以发现传输过程中丢失字节的错误,并且丢弄缓冲区接收错误的字节。首次,可以釆用兀余字节的方法,对关键字节(帧长度)发送两次,只有接收到的两个帧长度字节一致时才认为接收到的是正确的。此外,对发送的每个字节可以采用CRC校验等方法进行校验。链路层向上
8、层(应用层)提供的接口(以子程序的形式
此文档下载收益归作者所有