与硬件通信的协议文稿模板
时间:2011-05-07 来源:跨越网络工作室
一、 通信方式
1、 采用3线简易RS-232半双工方式。
2、 通讯波特率为38400b/s
3、 通讯数据帧格式:8位数据位、无校验位、1位停止位、如“38400,N,8,1”。
二、 基本帧格式定义
1、基本帧格式为发送方和接收方双方通用的帧格式,格式为
起始字 |
帧控制字 |
帧长度 |
目的地址 |
源地址 |
有效数据 |
XOR校验 |
结束字 |
1 Byte (BB)H |
1 Byte |
1 Byte |
2 Bytes |
2 Bytes |
N Bytes |
1 Byte |
1 Byte (EE)H |
起始字
固定为0xBB,占用1字节
帧控制字
帧类型 |
包连续标记 |
应答请求标志 |
包序号 |
bit 7,6 |
bit5 |
bit4 |
bit3- 0 |
其中,
帧类型 (bit7,6) = 00 数据帧
01 命令帧
10 数据应答帧
11 命令应答帧
帧连续标记 (bit5) =1 表示此帧后面还有连续的帧,
=0 表示单独一帧或连续帧的最后一帧
应答请求标志(Bit4)=0 不需要应答
=1 需要应答
包序列号(Bit3-0) = 0~F 包序号相互独立,第一帧的序列号为0,从0~F递增,当序列号为F时,下一帧的序列号为0,以此循环。
根据帧控制字可以有以下类型的帧:
(“|”表示或,如0x30|包序列号,表示0x30和包序列号相或)
数据帧 |
连续数据帧 |
需要应答 |
00110000 (0x30) | 包序列号 |
不需要应答 |
00100000 (0x20) | 包序列号 |
||
单独数据帧或连续帧的最后一帧 |
需要应答 |
00010000 (0x10) | 包序列号 |
|
不需要应答 |
00000000 (0x00) | 包序列号 |
||
命令帧 |
连续命令帧 |
需要应答 |
01110000 (0x70) | 包序列号 |
不需要应答 |
01100000 (0x60) | 包序列号 |
||
单独命令应答帧或连续帧的最后一帧 |
需要应答 |
01010000 (0x50) | 包序列号 |
|
不需要应答 |
01000000 (0x40) | 包序列号 |
||
数据应答帧 |
连续数据应答帧 |
需要应答 |
10110000 (0xB0) | 包序列号 |
不需要应答 |
10100000 (0xA0) | 包序列号 |
||
单独数据应答帧或连续帧的最后一帧 |
需要应答 |
10010000 (0x90) | 包序列号 |
|
不需要应答 |
10000000 (0x80) | 包序列号 |
||
命令应答帧 |
连续命令应答帧 |
需要应答 |
11110000 (0xF0) | 包序列号 |
不需要应答 |
11100000 (0xE0) | 包序列号 |
||
单独数据帧或连续帧的最后一帧 |
需要应答 |
11010000 (0xD0) | 包序列号 |
|
不需要应答 |
11000000 (0xC0) | 包序列号 |
帧长度
从起始字到结束字所有有效字节数
目的地址
帧发送的目的地址,即接收方的地址,2字节
源地址
帧发送方地址,即本机地址,2字节
系统为每台设备分配一个从机地址,地址范围从0-255,其中地址0保留,地址255用于广播命令包。每台设备只处理地址和自己内部设定的地址相同的命令包,地址不等当作无效命令包。
从机接收到命令包以后,首先验证命令包的“目的地址”是否与本机地址相符,如果不相符,则当作无效命令包;如果与本机地址相符,则给主机发送“命令接收成功”应答包,将本机地址发送给主机,并开始执行命令,此时主机处于等待状态;
有效数据
主要有以下几种数据:
由主机向从机发送的命令类型,命令参数
从机给主机返回的命令应答、测点数据
各种错误处理
校验字
采用XOR校验码,从“起始字”开始,到“帧控制字”“帧长度”“目的地址”“源地址”“有效数据”,以及“结束字”进行XOR校验。校验码错误的报文作为无效报文丢弃。占用1字节。
结束字
固定为0xEE,占用一个字节
2、帧类型说明
本协议采用的帧类型由“帧控制字”的高2位(bit7、6)确定,分为三种帧类型:
u 数据帧
数据帧用于设备向XX系统返回测点数据,分为单个测点、多测点数据;以及当XX系统向设备发出查询类指令时,设备向XX系统发送的状态信息。
u 命令帧
命令帧是XX系统向设备发出指令的帧,主要有查询类命令和控制类命令。
u 应答帧
对于接收到的命令帧或者数据帧,接收方在接收后都应该给一个应答帧作为反馈,表明此帧已经成功接收。应答帧的作用是控制通信的启动、过程、结束以及出错处理等。应答帧分为命令应答帧和数据应答帧。
应答帧主要有:
ACK(Acknowledge): 接收确认,由接收方发出的作为对正确接收到报文的响应。
NAK(Negative Acknowledge): 接收否认,由接收方发出的作为对未正确接收的报文的响应,并带有错误类型信息。