基于RS485主从通信协议的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于RS 485主从通信协议的实现

王 苒,汤冬谊

(大连电子学校教务中心 辽宁大连 116000)

摘 要:介绍基于R S 485的主从总线进行通信的分层体系结构设计,及其在8051单片机上的具体实现,程序使用

Keil C 51编写。

关键词:主从协议;C S 通信;帧;协议数据单元;封装

中图分类号:T P 336 文献标识码:B 文章编号:1004373X (2003)2406702

Ach ievem en t of M a ster slave Comm un ica tion Arch itecture Ba sed on RS 485

W AN G R an ,TAN G Dongyi

(Teach server Centre ,D alian E leetrical Schoo l ,D alian ,116000,Ch ina )

Abstract :T h is article in troduceM aster slave comm un icati on arch itectu re design based on R S 485,and app licati on in the 8051

Single ch i p system ,comp iled by the Keil C 511

Keywords :m ater slave p ro toco l ;C S arch itectu re ;fram e ;p ro toco l data un it ;encap su lati on

收稿日期:20030720

在工业控制领域,随着技术水平的不断提高,各种现场总线技术被开发出来,如PRO F I BU S ,CAN 等,但基于R S 485的主从总线因其简单成熟而仍然被广泛采用。主从协议与ISO O S I 七层协议的对应关系如图1所示。

图1 主从协议与ISO O S I 七层协议的关系图

在物理层,使用E I A T I A 485协议。

数据链路层由串行数据链路协议定义。串行数据链路协议为主从协议。

自定义应用层协议位于ISO O S I 的第7层,提供连接在总线上的各个设备之间的C S 通信。客户对应主节点,服务器对应从节点。1 数据链路层111 主从协议

串行数据链路协议为主从协议。只有一个主节点与一个或多个从节点同时连接在一条总线上。主节点

负责命令的发起,从节点接收命令并响应。从节点只有收到主节点命令时才会做出响应,从节点之间不能相互通信。

主节点向从节点发送2种类型的请求:

单址模式 主节点寻址一个单独的从节点。从节点收到并处理请求之后,向主节点返回一个消息(应答)。在该模式中,一个会话包含2个消息:主节点的请求、从节点的应答。每个从节点必须有一个独一无二的地址,从而可以被主节点寻址到。

广播模式 主节点向所有从节点发送请求。主节点发送的广播请求无需从节点响应。广播请求通常为写命

令,所有从节点必须接受。地址0为广播请求保留。112 帧描述

自定义应用层协议定义独立于底层的协议数据单元(PDU )。该协议建立在串行数据链路协议之上,发送请求的客户端将该PDU 封装在串行数据链路协议的数据单元中进行发送。如图2所示。

图2 自定义应用层的协议数据单元

113 传输模式11311 R TU 传输模式

采用R TU (远程终端单元)传输模式。该模式同A SC II 码模式相比,优点是在相同的波特率下能够传

7

6《现代电子技术》2003年第24期总第167期网络与通信

送更高的字符密度,数据的传输率较高。传送每个消息的字符流必须是连续的。

R TU模式下每个字节(11b)按以下顺序(自左向右)传输:

起始位12345678校验位停止位

11312 信息帧

信息帧格式如下:

从节点地址功能码数据CRC

1B1B0~252B2B,低位在先

一个完整的信息帧由连续的字节序列组成,必须有明确的开始和结束标志,以使接收方能够识别出完整一帧。协议规定,在2个独立帧之间的空闲时间至少为315个字符发送时间。如图3所示。

图3 帧间时间示意图

对于38400b s以上的波特率,帧间时隙建议不小于1175m s。

11313 CRC校验

循环冗余校验(CRC)字段包括2B,即16位二进制比特。CRC由发送方生成,添加在帧尾,随信息帧一同发送,接收方按相同算法校验,如果不同,则视为出错。

11314 协议软件实现

协议软件必须准确识别出一个完整帧并进行处理,如果有响应数据,则发送。软件实现表示如图4所示(其中t315表示315个字符发送时间)。

图4 软件实现示意图

软件实现时,可使用一个定时器监视t315的产生并在各个状态之间切换。接收和发送在串行中断中实现。本例采用8031系列Keil C51编写。

vo id T i m er1(vo id)in terrup t3

{

 s w itch(GetComm State())

 {

 case COMM_S_I N IT:切换初始化状态至空闲状态 SetComm State(COMM_S_I DL E);

b reak;

 case COMM_S_I DL E:空闲状态有数据发送则切换至发送状态,否则保持空闲状态 b reak;

 case COMM_S_R ECV:

接收完毕,切换接收状态至处理状态 SetComm State(COMM_S_CTRL);

b reak;

 case COMM_S_CTRL:等待处理 b reak;

 case COMM_S_E M IT:

发送完毕,切换发送状态至空闲状态 SetComm State(COMM_S_I DL E);

b reak;

 }

重装该定时器}

vo id Serial_In terrup t(vo id)in terrup t4

{

 TR1=0;禁止定时器 s w itch(GetComm State())

 {

 case COMM_S_I DL E:

SetComm State(COMM_S_R ECV);

接收首位字符 b reak;

 case COMM_S_R ECV:

接收其他字符 b reak;

 case COMM_S_E M IT:

发送字符 b reak;

 defau lt:

b reak;

 }

重装该定时器并启动}

2 应用层

封装在串行数据链路协议中应用层协议如图5所示。

图5 自定义应用层的协议数据单元

功能码为1B,范围是1~255,其中128~255为异常响应保留使用。功能码的作用是标识客户向服务器发送的不同服务请求。如果服务器返回客户发送的功能码,说明这是一个普通的响应;否则服务器向客户返回异常响应功能码。如图6所示。

(下转第71页) 

86

王 苒等:基于R S485主从通信协议的实现

相关文档
最新文档