电冰箱项目执行端和电冰箱项目执行端和 PCPCPCPC 软件通信协议软件通信协议版本:1.1 作者:刘保健 时间:2009 年 9 月 16 日关于文档关于文档9.16增加测试结束/读数完毕指令. 9.18常规修正 9.28新增加开始测试指令,将指令长度改为 8bit 9.29少量修改. 10.12少量修改,新增串口测试指令 10.14新增温度计算公式,增加串口通信实例 10.15新增温度计算方法 10.20新增查询指令、错误号返回指令码>0x0f概述概述本协议适用于广东省检验检疫局电气实验室电冰箱测温项目中接收端和 PC 软件本文 档中出现的内存长度单位规定如下: 代码实际单位位数 BBYTE8 WWORD16 BITBIT1 在叙述通信时,以 PC 为第一对象,PC 发出称为发送,则记为 T;接收端发送,PC 收 数称为接收,记为 R PC 机串口设置:57600-n-8-1 通信机制:无论是 PC 或接收端向外发送包,接收方在收到以后给出一个响应,响应时 发出的数据包称为响应包如果接收到的包的次高位为 1,接收方执行完指令后,将指令的 执行结果告知对方,这类数据包称为应答包,应答包不可以再要求有应答。
包格式包格式表一数据包格式 说明:所有的数据包的 HEAD,LEN,INS,CRC 均有效如果数据包跟 UNIT 无关,则将这一 字节填充为 0x00字段 (简称)侦头 (HEAD)长度 (LEN)包序号 (SN)指令 (INS)组 (GROUP)单元 (UNIT)参数 (PARA)CRC校验 (CRC)字节数(B)112111(实际 中不予传 输)n2侦头:每一个数据包的起始字节0X5A包序号:长于 100B 数据包,会被分成每多块分次发送,发送的第一个包 SN 写1,长度 小于 100B 的数据,分次发送的包每发送一次,包序号加1;单次完成发送,SN 写0 长度:自侦头开始计算,到 CRC 校验结束一个数据包的最小长度为 10B(参数长度为 0 时)一个数据包的最大长度为 100B(参数长度为 90) 10 ~ 100指令:数据的功能字,最高(D7)位为1表示指令带参复,次高(D6)位为1表示指令数需 要回D5 位为1则表示数据包为应答包其余 5bit 构成指令(最多可以定义 32 个指令)表二指令码位含义 P=1指令带参数 A=1指令需要应答 AN=1应答数据包D7D6D5D4D3D2D1D0AANP指令码功能参数应答GROUP/ UNIT 有效0x01PC 修正执行端的时间,不需要返 回, 参数为时间, 时间格式 hh-mm, 8421BCD 码,如 11:32 分记为 0x1132。
UNIT 无效TT0x02 注①检测各个采集端的电压,需要返 回返回时数据包带有参数,参数 长度1B,高5位为电压值的整数, 低3位为电压值的小数, 1LSB 代 表 0.125VRTR0x03从接收端里将本轮测量数据全部 读出注②RT0x04擦除接收端的 FLASHT0x05接收端将最新接收到的数据传给 PC 实例:5A 12 00 00 05 01 00 50 01 4D 01 53 01 51 01 50xx xx 数据:5A 12 00 00 05 01 含义:侦头,长度,包号,指令,组号 数据:00 50 01 4D 01 53 01 51 01 50 含义:上报的值 数据:xx xx 含义:CRC 检验码RR0x06接收端发现采集端电压过低,向 PRC 报告0x07设定采集端电压低电压警告值, 如 低于此电压, 接收端会将出现低电 压告警向 PC 报告TT0x08温湿度上传 温度:参数中前面2B 为温度,最 高位为符号位, 最高位为1代表温 度为负, 最低三位是温度值的小数 部分LSB 代表温度 0.125℃其 他位为温度值的整数 湿度:参数中第一 B 为湿度值,范 围从 0x00~0x64(0~100)。
RR0x09结束本轮测量T0x0A设置测量周期TT0x0B检测信号强度RTT/R0x0C指定一个点并检测误码率RTT/R0x0D测试结束或读数据完毕0x0E开始一轮的测试0x0F串口测试指令,接收端或 PC 都可 以使用这条指令来检查串口是否 正常工作此指令必须应答T/R0x10查询状态,软件串口设置之后, 首先 就要发送这一指令去查询接收端 的状态查询结果反映 WORD1,FLASH 状态,0x0000 代表 FLASH 空,其他代码满 WORD2,采集状态,0x0000 代表 停止,0x0001 代表采集中T0x11PC 向接收端的操作发生错误 错误码: 0x0001,当前正在采集中, 不可以导入 (5A 0A 00 00 11 00 01 00 43 4B ) 0x0002,接收端没有历史数据, 不可以导入 (5A 0A 00 00 11 00 02 00 2B 61 ) 0x0003,测量已经开始 不需要再次开始 (5A 0A 00 00 11 00 03 00 F3 78 ) 0x0004,测量已经停止 不可以再次停 止 (5A 0A 00 00 11 00 04 00 FB 35 ) 0x0005,FLASH 满,不可以开始。
R表三指令码功能对照表注①:这些灰包字所描述的功能可以不做注②:导出数据的过程是由 PC 发导出指令触发开始,接收端将数据从串口送出,数据全部送出以后,再发送一个结束侦通报 PC 导出数据过程已经结束PC 发给执行端导出数据的指令为:5a08000003+CRC接收端发向 PC 的数据包格式为:5a 08 nnnn 03 00 + xxxx(84byte) + CRC,其中 nnnn 为导出数据里的包号,它指明当前上传数据是总体数据的分包后的序号,接收到以后可以按照这个序号将所有数据再次拼接起来xxxx 是上传的数据,共 84byte,1-10byte 是 group1 的数据(注意这里的 byte 数从 1开始计算) ,11-20byte 是 group2的数据,...41-42byte 是 group5的数据,43-52 又是 group1的数据, 依此类推,83-84byte又是 group5 的数据这里需要注意对于一个字来说,低 8 位在前,高 8 位在后接收端发向 PC 通报导出结束的指令:5a0800000d+CRC组:与单元配合来区分数据来源连接到同一个采集端的传感器编为一组。
如果通信中 不使用,则将它写为 0x00 0x00~0x05单元:与组配合来区分数据来源连接到同一个采集端的传感器进一步编号,如果接收 上报第一个温度传感器上采集到的数据,则 UNIT=1,如果有通信中不使用它,则将它写为 0x00 0x00 ~ 0x05(0~20)参数:它是数据中唯一不定长度的内容,在接收到数据包时根据 INS 的 P(D5 位)判断 PARA 是否有效若有效,则进一步通过 LEN 来确定 PARA 的长度PARA 长度=LEN- 8CRC 校验: 从 HEAD 开始计算计算, 直到 PARA 结束, 如果 PARA 有效, 则包含PARA, CRC 多项式 0X8408低位在前,高位在后温度计算温度计算在上传的数据中温度占一个字(2BYTE)表四温度值(dat)在内存中的表示 说明:S 代表符号位,温度为补码表示,D11 到 D0 为数据位,D15...D13 无效 假定内存的数据为 dat, 转换用的临时变量 mid(unsigned int 型),计算公式: if( dat //同时标符号为“-“ else mid = dat ; result = mid/16;湿度计算湿度计算D15D12D11D0SLSB在上传数据中湿度占一个字(2BYTE)。
由 D7...D0 是湿度值,值域 0~100直接进行显示即可,不需要再作处理系统介绍系统介绍整个人系统分为3部分,温度采集端4个,湿度采集端1个,接收端1个,PC1台 将连接到同一个温度采集端的传感器编为一组,同时再对它们进入单元编号,组号有效值 0x01~0x04,单元号有效值为 0x01~0x05湿度采集端组号为 0x05,上面所接的唯一的传感器 单元号为 0x01图一 系统组成 系统主要用对电冰箱内部连续3天测量温度, 即每3天完成一轮测量 采集端定时采集 连接到自身的温湿度传感器,并且数据发送给接收端,接收端在接收到后这个信号后,将温度 温度保存,同时也这刚接收到的数据上传给 PC,用户可以在 PC 界面上得到温温度曲线 用户也可以在 PC 上对系统进行检测和一些设置后面章节主要叙述各个功能的详细实现方 法系统功能描述系统功能描述1.测量预备功能,在正式进入测量之前,PC 接收到的数据不需要保存,而且此时可以D15D8D7D0MSBLSB进行误码率测试,测量周期设置等操作 2.选择采集端功能,如果用户不需要将5个采集端全用于测量的话,可以选择使用哪 几个采集端进行测量 3.设备检测功能, 用户选择了采集端后, 可以使用此功能查看各采集端能否正常工作。
4.测试误码率功能,在正式测量开始之前,可以使用些功能来测试一个采集端和接收 端之前的信号误码率作为用户摆放接收端的参数 5.设置测量周期,在正式进入测量之前,设置采集端上报数据的周期周期可以设置 为 30 秒,1 分钟,2分钟 6.开始测量功能,用户使用该功能来开始一轮测量 7.收集数据功能,接收端每分钟一次将(21 个)传感器的数据上传给 PC,PC 需要将 数据保存 8.测量中曲线描绘功能,PC 在接收到数据后,根据用户的选择来显示相应的曲线如 用记选择 11,24,32,51 显示,则将第一组第1个、第二组第4个、第三组第2个温度传感器 上采集到的温度值以曲线的方式描绘出来, 将湿度传感器采集到的湿度值曲线描绘出来 如 果在程序运行中用户重新选择要显示的曲线, 新曲线也要将本轮测量开始后的所产生的记录 都显示出来,然后不断地添加接收端上传的数据到曲线中为方便用户查看,可以在同一画 布里不同颜色区分,也可以使用多块画布 每轮测量前新建文件或数据库表来保存本轮测量的结果, 每一轮测量的结果都必须完整 保留,并且不和其他轮的测量混淆 9.历史数据曲线描绘功能,用户可以将选择将以往测量的结果再现为曲线。
在此功能 下用户也能够自行选择曲线的显隐在测量过程中,用户也可以使用这一功能,使用这一功 能,不能影响测量的正常进行 10.测量中数据显示功能, 测量过程中 单独使用一个窗口来显示来自某一个传感器的 数据,显示格式为±nn.nn℃或 n%RH,用户可以从5组里随意选择一个传感器 11.勘错功能,测量中 PC 超过2个周期没有收到接收端发来的信号,则提示用户进行 连接检查 测量中2个周期内没有收到某个采集端的数据, 提示用户检查此采集端的电源是 否正常重新接收到信号后,自动去掉相应提示在出现这两种错误时,测量正常进行 12.读一轮测量数据功能, 每一轮测量后, 可以使用此功能将接收端上存放的全部数据 读出如果在测量过程中不方便将 PC 接入接收端,可以测量完成后再使用该功能读出测量 数据 13.擦除 FLASH 功能,每一轮测量开始之前,使用这一命令来擦掉接收端的记录,释 放存储空间,以备保存本轮测量数据擦除时间或大于2秒,提示用户需要等待完成擦除 后提示完成 14.终止测量功能当测量过程中,用户可以随时使用这一功能来终止测量终止测量 时接收端会通知采集端采集端接收到终止信号后,进入 PM3 下,不再醒来,直到用户手 工复位。