📄 关于485通信数据传输协议规定.txt
字号:
串行通信模块说明->
系统与外界通信接口为串口;
采用基于RS-485的电流环方式传输数据;
上层传输控制协议自定义为HouseTran 1.0;
HouseTran 1.0协议规定:
协议内容:(信道是逻辑上的概念实际上都复用同一物理信道)
/*------------------------------------------------------*/
a.所有传输操作都通过信道进行;
/*------------------------------------------------------*/
b.信道分成命令、数据、应答三种信道;
1.命令信道无需建立自物理链路建立而自动有效;
2.数据信道需要通过命令信道来建立,
当数据信道建立成功时设立数据信道允许标志DataChannel;
3.应答信道无须建立自动随物理链路产生,可以将其一并归为命令信道;
/*------------------------------------------------------*/
c.采用CRC和累加和校验方式,可以任意选择使用;
/*------------------------------------------------------*/
d.数据有:
测量数据: 温度 湿度
时钟数据: 日期 时间
系统数据: 启动参数
/*------------------------------------------------------*/
e.数据的传输以数据帧的格式传输
规定:
数据帧=接收对象ID(1B) +
数据帧类型(1B) +
采样记录数据内容(<=10B) +
数据校验(1B) +
发送对象来源ID(1B)
/*------------------------------------------------------*/
f.数据帧类型规定: //帧数据大小(B) 帧描述
TRecord= 1 // 10 完整的采样记录类型
TTemperature= 2 // 2 采样温度帧
THumidity= 3 // 2 采样湿度帧
TDate= 4 // 3 采样日期帧
TTime= 5 // 3 采样时钟帧
TSystemParameter=6 // 2 参数传递帧
具体结构:
(符号+整数)(1bit+7bits)+小数(1B)
年+月+日 (3B)
时+分+秒 (3B)
存储地址+参数值(2B)
/*------------------------------------------------------*/
g.命令帧的传递
规定:
数据帧=接收对象ID(1B) +
命令帧类型(1B) +
命令数据内容(<=10B) +
数据校验(1B) +
发送对象来源ID(1B)
具体结构:
TCommand=0 // 1B 实现一个特定的操作
命令字(1B)
/*------------------------------------------------------*/
h.具体的传输方式:
站点A(主) 站点B(从)
SiteA SiteB
Cmd_REQUST To A -> //A向B请求建立连接
B处理请求回应连接 <- Cmd_ACK From B
DataFrame(xB) -> TimeOut ? Counter==5
//B收到合法的一个帧回应正常确认ACK_Cmd 否则回应Error_Cmd
... <- Cmd_ACK Yes
Get ACK?
No
Resend DataFrame(xB) -> No
//A若收到确认信号则完成一次传输 若收到出错则重发
//若没有任何信息反馈,则以超时为由重发一次退出
Yes To end
/*------------------------------------------------------*/
i.协议常数规定:
标志 具体数值 描述
TCommand=0 // 1B 实现一个特定的操作
TRecord= 1 // 10 完整的采样记录类型
TTemperature= 2 // 2 采样温度帧
THumidity= 3 // 2 采样湿度帧
TDate= 4 // 3 采样日期帧
TTime= 5 // 3 采样时钟帧
TSystemParameter=6 // 2 参数传递帧
ON_LINE= 1 // 上线
OFF_LINE= 0 // 下线
PC_ADMINI= 1 // 系统管理员
PC_USER= 2 // 系统操作员
MCU_USER= 3 // 站点采集员
CMD_CHANNEL 1 // 命令信道值
DATA_CHANNEL 2 // 数据信道值
DEFAULT_USER 0 // 最高级别的默认管理员
ACk_CMD 255 // 正常确认信号
ERROR_CMD 254 // 出错信号
...
操作命令字规定:
命令字符 命令字 命令描述
SampleRecord 250 // 采样所有的数据记录
SampleTemperature 249 // 采样温度值
SampleHumidity 248 // 采样湿度值
SampleDate 247 // 采样日期值
SampleTime 246 // 采样时钟值
SampleParameter 245 // 采样系统参数
ModifyDate 244 // 修改日期值
ModifyTime 243 // 修改时钟值
ModifyParameter 242 // 修改系统参数
/*------------------------------------------------------*/
推荐:
波特率:19200;若要修改波特率请修改Constants.h的配置
CRC循环冗余校验;
建立信道切换进程;
注意:
不论是上位机还是下位机在建立链路逻辑信道前必须得到
对方握手确认信号ACK;并且要切换任务到该模式或设定对应的模式;
/*------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -