4寸线控器项目
目录
1.云端接入指令说明
1.1 运行状态上报
线控器向云端上报的自己的运行状态
{
"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 故障上报
{
"action": "devSend",
"msgId": 0,
"deviceCode": "M1",
"subDeviceId": "",
"timestamp": 1231242345,
"data":{
"cmd": "fault",
"params": [
{
"code": "故障码1",
"desc": "故障描述1"
},
{
"code": "故障码2",
"desc": "故障描述2"
}
]
}
}
1.3 最大湿度设定
字段 |
类型 |
说明 |
value |
int |
预设最大湿度值 |
{
"cmd":"setMaxTemp",
"params": {
"value": 24
}
}
1.4 模式设定
字段 |
类型 |
说明 |
value |
int |
预设模式,工作模式(1:内循环,2:新风 3:加湿4:自动) |
{
"cmd":"setMode",
"params": {
"value": 1
}
}
1.5 风速设定
字段 |
类型 |
说明 |
value |
int |
预设风速( 1:1档; 2:2 档; 3: 3 档; 4:4 档; 5: 5 档) |
{
"cmd":"setFanLevel",
"params": {
"value": 1
}
}
1.6 定时设定
字段 |
类型 |
说明 |
value |
float |
定时时间(小时 |
status |
int |
1:开启0:关闭 |
{
"cmd":"setTimer",
"params": {
"value": 0.5,
"status": 1
}
}
1.8 设置滤芯寿命(主控)
- 标识符:
setFilterLifeTime
- 参数:
字段 |
类型 |
说明 |
value |
int |
滤芯寿命(分钟 ) |
{
"cmd":"setPower",
"params": {
"value": 360000
}
}
1.9 运行参数设定
字段 |
类型 |
说明 |
report_duration |
int |
数据上报频率(单位:秒) |
{
"cmd":"setParam",
"params": {
"report_duration": 10
}
}
1.10 排风风机电压设定
- 标识符:
setsupplyFanVoltage
- 参数:
字段 |
类型 |
说明 |
gear |
int |
档位 (1:一档 2:二挡 3:三档 4:四档 5:五档) |
value |
int |
风机电压 (0-100,1代表0.1V) |
{
"cmd":"setexhaustFanVoltage",
"params": {
"gear": 1,
"value": 40
}
}
1.11 送风风机电压设定
- 标识符:
setsupplyFanVoltage
- 参数:
字段 |
类型 |
说明 |
gear |
int |
档位 (1:一档 2:二挡 3:三档 4:四档 5:五档) |
value |
int |
风机电压 (0-100,1代表0.1V) |
{
"cmd":"setsupplyFanVoltage",
"params": {
"gear": 1,
"value": 40
}
}
2.设计说明
2.1 风阀配置设计思路
高级配置界面提供风阀与控制器对应关系设置功能,配置后保存到 NVS 中,NVS存储结构为
key-value 形式,
#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 得实际温度值 |
|