## 4寸线控器项目 ### 目录 * [4寸线控器项目](#4寸线控器项目) * [目录](#目录) * [1.云端接入指令说明](#1云端接入指令说明) * [1.1 运行状态上报](#11-运行状态上报) * [1.2 故障上报](#12-故障上报) * [1.3 温度设定](#13-温度设定) * [1.4 模式设定](#14-模式设定) * [1.5 风速设定](#15-风速设定) * [1.6 定时设定](#16-定时设定) * [1.7 风阀档位控制(分控)](#17-风阀档位控制分控) * [1.8 总开关控制(主控)](#18-总开关控制主控) * [1.9 运行参数设定](#19-运行参数设定) * [1.10 通知显示功能](#110-通知显示功能) * [1.11 新风开关控制](#111-新风开关控制) * [1.12 风阀开关控制(分控)](#112-风阀开关控制分控) * [1.13 风机电压设定](#113-风机电压设定) * [1.14 设置指定风阀的角度](#114-设置指定风阀的角度) * [2.设计说明](#2设计说明) * [2.1 风阀配置设计思路](#21-风阀配置设计思路) * [2.2 分控说明](#22-分控说明) * [2.2.1 分控从站号](#221-分控从站号) * [2.2.2 设计思路](#222-设计思路) * [2.2.3 优先级问题](#223-优先级问题) * [2.2.4 主控与分控485通讯协议](#224-主控与分控485通讯协议) ### 1.云端接入指令说明 #### 1.1 运行状态上报 _线控器向云端上报的自己的运行状态_ * 标识符: `status` * 参数: ```json { "action": "devSend", "msgId": 0, "deviceCode": "84FCE66AA534", "subDeviceId": "", "data": { "cmd": "status", "params": { "power": 1, "set_max_hum": 25, "filter_life_remaining": 80, "set_filter_life_time" : 3600000, "mode": 1, "temperature": 25, "humidity": 52, "air_quality": 0, "co2": 0, "fan_speed": 5, "timer_status": 1, "duration": 0.5 } } } ``` * 参数说明: | 字段 | 读写类型 | 类型 | 说明 | |-----------------------|------|--------------|-----------------------------------------| | power | W/R | int | 电源状态(0:关,1:开) | | set_max_hum | W/R | int | 设定最大湿度 | | filter_life_remaining | R | int | 滤芯剩余% | | set_filter_life_time | R | int | 设置滤芯寿命(分钟) | | temperature | W/R | int | 室内温度 | | humidity | R | int | 室内湿度 | | air_quality | R | int | 空气质量PM2.5 | | co2 | R | int | 二氧化碳浓度 | | mode | W/R | int | 工作模式(1:内循环,2:新风,3:加湿4:自动) | | fan_speed | W/R | int | 风速(1:1档; 2:2 档; 3: 3 档; 4:4 档; 5: 5 档;) | | timer_status | W/R | int | 定时状态(1:有定时;0:无定时) | | duration | W/R | float | 定时时间 | #### 1.2 故障上报 * 标识符: `fault` * 参数: ```json { "action": "devSend", "msgId": 0, "deviceCode": "M1", "subDeviceId": "", "timestamp": 1231242345, "data":{ "cmd": "fault", "params": [ { "code": "故障码1", "desc": "故障描述1" }, { "code": "故障码2", "desc": "故障描述2" } ] } } ``` #### 1.3 最大湿度设定 * 标识符:`setMaxTemp` * 参数: | 字段 | 类型 | 说明 | |-------|-----|---------| | value | int | 预设最大湿度值 | * 示例: ```json { "cmd":"setMaxTemp", "params": { "value": 24 } } ``` #### 1.4 模式设定 * 标识符:`setMode` * 参数: | 字段 | 类型 | 说明 | |-------|-----|--------------------------------| | value | int | 预设模式,工作模式(1:内循环,2:新风 3:加湿4:自动) | * 示例: ```json { "cmd":"setMode", "params": { "value": 1 } } ``` #### 1.5 风速设定 * 标识符:`setFanLevel` * 参数: | 字段 | 类型 | 说明 | |-------|-----|---------------------------------------------| | value | int | 预设风速( 1:1档; 2:2 档; 3: 3 档; 4:4 档; 5: 5 档) | * 示例: ```json { "cmd":"setFanLevel", "params": { "value": 1 } } ``` #### 1.6 定时设定 * 标识符:`setTimer` * 参数: | 字段 | 类型 | 说明 | |-------|-----|---------| | value |float| 定时时间(小时 | | status | int | 1:开启0:关闭 | * 示例: ```json { "cmd":"setTimer", "params": { "value": 0.5, "status": 1 } } ``` #### 1.8 设置滤芯寿命(主控) * 标识符:`setFilterLifeTime` * 参数: | 字段 | 类型 | 说明 | |-------|-----|-----------| | value | int | 滤芯寿命(分钟 ) | * 示例: ```json { "cmd":"setPower", "params": { "value": 360000 } } ``` #### 1.9 运行参数设定 * 标识符:`setParam` * 参数: | 字段 | 类型 | 说明 | |-------|-----|------------| | report_duration | int | 数据上报频率(单位:秒) | * 示例: ```json { "cmd":"setParam", "params": { "report_duration": 10 } } ``` #### 1.10 排风风机电压设定 * 标识符:`setsupplyFanVoltage` * 参数: | 字段 | 类型 | 说明 | |-------|-----|---------------------------------| | gear | int | 档位 (1:一档 2:二挡 3:三档 4:四档 5:五档) | | value | int | 风机电压 (0-100,1代表0.1V) | * 示例: ```json { "cmd":"setexhaustFanVoltage", "params": { "gear": 1, "value": 40 } } ``` #### 1.11 送风风机电压设定 * 标识符:`setsupplyFanVoltage` * 参数: | 字段 | 类型 | 说明 | |-------|-----|---------------------------------| | gear | int | 档位 (1:一档 2:二挡 3:三档 4:四档 5:五档) | | value | int | 风机电压 (0-100,1代表0.1V) | * 示例: ```json { "cmd":"setsupplyFanVoltage", "params": { "gear": 1, "value": 40 } } ``` ### 2.设计说明 #### 2.1 风阀配置设计思路 高级配置界面提供风阀与控制器对应关系设置功能,配置后保存到 NVS 中,NVS存储结构为 key-value 形式, * key 对应控制器的编号 ,定义如下: ```c #define NVS_FAN_VALVE_MAIN_CONTROLLER "main_controller" // 主控风阀设置 #define NVS_FAN_VALVE_SUB_CONTROLLER_1 "sub_controller_1" // 分控风阀设计 #define NVS_FAN_VALVE_SUB_CONTROLLER_2 "sub_controller_2" // 分控二风阀设置 #define NVS_FAN_VALVE_SUB_CONTROLLER_3 "sub_controller_3" // 分控三风阀设置 #define NVS_FAN_VALVE_SUB_CONTROLLER_4 "sub_controller_4" // 分控四风阀设置 ``` * value 保存为风阀的配置值,类型为`uint8_t`,5个风阀的设置分别对应其实5个BIT, 如配置了1号风阀和2号风阀则,二进制为`0000 0011`, 实际保存值是`3` 系统上电加载时,先从 nvs 中读取本地保存的风阀配置,如果没有配置过,则默认为主控控制1-5个风阀,并写入到配置中。 读取到配置后将`setting_t`数据结构转化为 `ac_controller`中的结构,并可以同步到主逻辑中. #### 2.2 分控说明 ##### 2.2.1 分控从站号 分控的从站号为02-05,一条总线最多支持4个,主控可以设置分控与风阀的对应关系。 ##### 2.2.2 设计思路 主控的【高级设置】界面中可以配置主控及4个分控与风阀的对应关系,主控的逻辑中维护配置信息。当主控开机时,会根据风阀配置信息,来识别当前设备接了哪几个分控,同步开启一个任务,轮询每个分控的状态 包含(开关机,风档(1-3-5,三个档位),环境温湿度,设置温度),**当任意一个分控开机时,主控会开机**,主控根据分控的风档,设置相应风阀的角度,1-3-5档分别对应角度为;30-60-90,**当前分控关机时,风阀角度为0** 主控根据分控的设置温度与环境温度的差值设置风阀角度。 * 制冷模式:当环境温度低于设置温度1度切持续10分钟时,当前分控对应的风阀角度为60,2度时的角度为30度,3度时的角度为0度 ,即风阀关闭。 * 制热模式:当环境温度高于设置温度1度切持续10分钟时,对应的风阀角度为60,2度时为30度,3度则关闭。 * 其他模式:以分控的设置角度为准。 ##### 2.2.3 优先级问题 主控读取分风箱主板5个风阀的寄存器,当前5个风阀角度全部为0时,要关机,但此时一任意一个分控开着又会开机,所以产生了逻辑冲突。 此时,主控以5个风阀角度都为0的情况为最优级,以确保机组的安全运行,此时如果分控都开机,会不以分控的状态为准,但如果任一个分控的风阀没有关闭,则开机。 ##### 2.2.4 主控与分控485通讯协议 * 1.采用RS485接口。 * 2.采用MODBUS-RTU通讯模式。 * 3.遵循主-从通讯方式,线控器为从机。 * 4.通讯波特率:9600bps。 * 5.数据采用1个起始位,8个数据位,0个无校验位,一个停止位格式。 * 6.通讯帧之间间隔须大于500ms。 > 采用标准modbus-rtu数据格式,数据帧中包含地址信息,功能码,信息域及CRC检验码。 | 地址 | 数据含义 | 访问类型 | 范围值 | 备注 | |--------|----------|-------|----------------------------------------------------|------------------------------------------------------| | 40001 | 工作模式 | RW | 0-5:0x00 制冷模式0x01 制热模式0x02 除湿模式0x03 送风模式0x04 加湿模式 | 从机显示相应模式的图标 | | 40002 | PM2.5 | RW | 0-999 | 主机写入,预留 | | 40003 | 主机设置温度 | RW | 16-30 | | | 40004 | CO2 | RW | 400-9999 | 由主机写入,目前预留 | | 40005 | 电源状态 | R | 0:关机,1:开机 | | | 40006 | 风速档位 | R | 1-5:代表风速1-5档 | | | 40007 | 当前环境温度 | R | 以16 位有符号整型存储,将其除以10 得实际温度值 | | | 40008 | 当前环境湿度 | R | 以16 位有符号整型存储,将其除以10 得实际温度值 | | | 40009 | 通讯状态 | R | 0: 通讯失败,1:通讯正常 | 可用来标识分控与主控的通讯状态。当接收不到主控的指令超过一定时间,则认为通讯失败。从机需要显示相应图标 | | 40010 | 设定温度 | R | 以16 位有符号整型存储,将其除以10 得实际温度值 | |