⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串行通信说明.txt

📁 带时钟功能温度和湿度测量的仪器
💻 TXT
字号:
串行通信模块说明->
        系统与外界通信接口为串口;
        采用基于RS-485的电流环方式传输数据;
        上层传输控制协议自定义为HouseTran 1.0;

HouseTran 1.0协议规定:
//##########################智能数据采集系统串行通讯协议简要:############################//
//#数据帧帧头:0xEB 0x90 0xEB 0x90 0xEB 0x90 
//#有效数据块:远程主机地址 本地主机地址 命令 参数和校验数据总长度 命令参数
//#帧序号(FrameNum) 校验码(CRCHigh CRCLow)
//#数据帧帧尾:0x7E /*SCOM空闲时保持Mark状态即逻辑'1'*/
//#######################################################################################//
协议内容:
/*------------------------------------------------------*/
        a.所有传输操作都以帧的形式进行;
/*------------------------------------------------------*/
	b.帧结构:头(6B) + 主机地址(1B)+本机地址(1B) +命令(1B) + 参数数据长度 + 命令带的参数
	+ 帧序号(1B) + 校验常数(2B) + 尾(0x7E)
/*------------------------------------------------------*/
	c.采用CRC和累加和校验方式,可以任意选择使用;
	校验数据从本机地址开始到帧序号结束;
/*------------------------------------------------------*/
        d.数据有:
          测量数据:  温度   湿度  
          时钟数据:  日期   时间  
          系统数据:  启动参数(主机地址 本机地址)
/*------------------------------------------------------*/
        e.命令帧的传递:
		任何命令都蕴藏在帧中,可以带参数数据也可不带;
		地址分配原则:PC:0x80-0xff; MCU:0x00-0x7f
/*------------------------------------------------------*/
        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.具体的传输方式:
        站点A(主)                       站点B(从)
        SiteA                            SiteB
	发送一帧到 B
	B的响应过程为:
	○接收头
	○接收地址
	○接收有效命令和数据
	○进行出错校验
	○进行地址核对
	○进行帧处理
	○恢复端口初始化状态
/*------------------------------------------------------*/
       h.协议常数规定:
           标志          具体数值              描述
          TCommand=0            //   1B        实现一个特定的操作
          TRecord=         1    //   10        完整的采样记录类型 
          TTemperature=    2    //    2        采样温度帧
          THumidity=       3    //    2        采样湿度帧
          TDate=           4    //    3        采样日期帧
          TTime=           5    //    3        采样时钟帧  
          TSystemParameter=6    //    2        参数传递帧
//系统用户         
#define		_ADMINI		0xff	//系统管理员
#define		_PC_T_ID	0xfe	//系统测试默认操作员刚出产的MCU都是这个ID
#define		_MCU_T_ID	0x00	//下位机测试初始化用地址刚出产的MCU都是这个ID
//定义通讯相关命令字常数0x00-0x7f
#define		_CMD_END	0x7f	//帧尾常数

#define		_CMD_LOG_IN 	0x7e	//上线
#define		_CMD_LOG_OUT	0x7d 	//下线         
#define		_CMD_ACK	0x7c	//确认信号命令
#define		_CMD_ERROR	0x7b	//数据出错信号命令
#define		_CMD_SITE_INIT	0x7a	//站点初始化
#define		_CMD_REAL_GET	0x79	//定时采样
//定义读数据采样相关命令字常数0x80-0xaf
#define		_CMD_RD_TEMP	0x80	//采样温度不带参数
#define		_CMD_RD_HUMI	0x81	//采样湿度不带参数
#define		_CMD_RD_TIME	0x82	//采样时钟不带参数
#define		_CMD_RD_ALARM	0x83	//采样闹钟不带参数
#define		_CMD_RD_DATE	0x84	//采样日期不带参数
#define		_CMD_RD_WEEK	0x85	//采样周几不带参数
#define		_CMD_RD_RECORD	0x86	//采样历史记录不带参数
#define		_CMD_RD_RECNUM	0x87	//采样历史记录数量

#define		_CMD_RD_MCUID	0xaf	//采样MCU认证号不带参数
#define		_CMD_RD_PCID	0xae	//采样MCU上存储的当前PC地址
#define		_CMD_RD_PCUSER	0xad	//采样MCU上存储的当前PC用户
//所有_CMD_RD_XX命令都以_CMD_WR_XX带参数响应返回0Xb0-0Xff
#define		_CMD_WR_TEMP	0xB0	//写入或送出温度带参数
#define		_CMD_WR_HUMI	0xB1	//写入或送出湿度带参数
#define		_CMD_WR_TIME	0xB2	//写入或送出时钟带参数
#define		_CMD_WR_ALARM	0xB3	//写入或送出闹钟带参数
#define		_CMD_WR_DATE	0xB4	//写入或送出日期带参数
#define		_CMD_WR_WEEK	0xB5	//写入或送出周几带参数
#define		_CMD_WR_RECORD	0xB6	//写入或送出历史记录带参数
#define		_CMD_RD_RECNUM	0xB7	//写入或送出历史记录数量

#define		_CMD_WR_ID	0xff	//写入或送出MCU认证号带参数
#define		_CMD_WR_PCID	0xfe	//写入或送出MCU上存储的当前PC地址
#define		_CMD_WR_PCUSER	0xfd	//写入或送出MCU上存储的当前PC用户
/*------------------------------------------------------*/
全局变量:
uchar CurrentMaster;	//当前PC用户ID
uchar SelfAddr;		//当前采集站的ID
uchar code CmdsBuf[];	//命令字存放空间
uchar data UartRecBuf[_MAX_LENG];	//通讯用缓冲
推荐:
          波特率:19200;
          CRC循环冗余校验CRCVerify(*Ptr,Len);
注意:  
     下位机在开机时对发送登陆帧到上位机,上位机检测其地址如果为测试地址则对其进行初始化;
上位机每次切换用户时必须及时通知所有采集站修改其CurrentMaster单元内容;
/*------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -