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

📄 scom说明.txt

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

HouseTran 1.0协议规定:
test frame:		    9已经包括了crc字节在内
EB 90 EB 90 EB 90 ff 01 25 08 01 02 03 04 05 01 8F B7
EB 90 EB 90 EB 90 ff 01 26 0d 01 02 03 04 05 01 02 03 04 05 02 FA F9
EB 90 EB 90 EB 90 ff 01 27 0f 01 02 03 04 05 01 02 03 04 05 06 07 03 AF 36
EB 90 EB 90 EB 90 ff 01 28 08 01 02 03 04 05 01 D9 D3
//##########################智能数据采集系统串行通讯协议简要:############################//
//#数据帧帧头:0xEB 0x90 0xEB 0x90 0xEB 0x90 
//#有效数据块:源主机地址 目标地址  命令 数据长度 Datas(数据) FrameNumHigh FrameNumLow CRCHigh CRCLow#
//#数据帧帧尾:0x7F /*SCOM空闲时保持Mark状态即逻辑'1'*/
//#######################################################################################//
协议内容:
/*------------------------------------------------------*/
        a.所有传输操作都以帧的形式进行;
/*------------------------------------------------------*/
	b.帧结构:头(6B) + 主机地址(1B)+本机地址(1B) +命令(1B) + 参数数据长度 + 命令带的参数
	+ 帧序号(2B) + 校验常数(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 + -