浅谈OTA技术在家用变频空调中的应用

2024-01-11 08:31李超王波
制冷 2023年4期
关键词:室外机固件运转

李超,王波

(小米科技(武汉)有限公司,武汉,430073)

近几年物联网发展迅速,它赋予空调很多新颖的功能,如远程操控、智能联动、智能诊断、OTA升级等[1-2]。其中OTA升级是非常重要的功能,它解决了空调安装后的软件bug修复、功能迭代、用户定制等传统空调的痛点问题[7-8]。目前空调行业内,受到室内外机通信速率低导致升级时间长、芯片空间小导致OTA成本高等因素的影响,一般都只是对空调室内机的程序进行了OTA升级,未升级室外机的程序。

空调室外机的程序主要包含压缩机、外风机、PFC的驱动算法,以及一些空调制冷、制热的系统控制算法,这一部分程序影响空调运行的可靠性、舒适性等,其OTA需求也是十分强烈。

本文就空调室外机的程序OTA进行论述,主要对提高室外机程序OTA的速度、降低OTA成本等瓶颈问题进行讨论。

1 空调OTA功能框架及控制流程

空调控制系统一般由Wi-Fi模块、室内机主板和室外机主板组成,其中室内机主板和Wi-Fi模块之间通过串口TTL通信,室内机主板和室外机主板之间通过强电电流环通信,如图1。

图1 空调控制系统通信框图

在室外机也具备OTA能力的控制系统中,为了使每次升级的室内机固件和室外机固件都一一对应,不出现交叉配套的现象,需要将室内机固件和室外机固件合并到同一固件包内上传到云端。

OTA过程一般为Wi-Fi模组从云端获取最新的固件包,存储到模组的Code flash中,然后再传输给室内机,室内机收到固件包之后,按照既定的流程对室外机固件和室内机固件进行拆包传输升级。常规流程如图2。

图2 空调控制器程序OTA流程图

上述OTA流程中,有以下几点可以提高整个OTA过程的稳定性及可靠性:

(1)在室内机固件包和室外机固件包的开始部分,增加固件码头信息,明确当前固件包的合法性校验数据以及固件版本,如图3。OTA时,空调先收到固件码头信息,对固件的合法性进行检查,如果不适配本机型或者错误的固件,不允许进行OTA升级;另外模组中的固件版本比当前室内机或者室外机的固件版本还低,也不允许进行OTA升级。只有合法且需要升级的固件,才会进行OTA。

图3 程序固件包组成示意图

(2)上传云端的固件包,包含室外机固件包和室内机固件包,且将室外机固件包置于室内机固件包前面,如图3。此方法可以在升级时,室内机在正常运行区对室外机固件进行传输,保证室内机bootloader区域的空间最小化和功能最简化,提高bootloader区的运行可靠性。

(3)室内机在上电时,从内外机MCU中获取当前室内外机的固件版本,并从模组获取需要升级的室内外机目标版本,通过对版本对比,确定OTA的执行流程,如室外机无需进行OTA,则会直接跳过室外机的OTA,减少OTA时长。

(4)室内外机的数据传输,采用Xmodem协议。众所周知,Xmodem协议是高可靠性的文件传输通信方式。室内外机在正常运转时,采用常规的串口通信;在需要更新室外机固件时,内外机切换到Xmodem通信模式进行文件传输,提高室外机OTA的效率以及稳定性。

2 双模式通讯波特率

因弱电通信受传输距离不够长、受强电干扰严重、成本高等原因,家用变频空调内外机通信电路普遍采用强电电流环通信[3]。但强电通信在变频压缩机运行期间,容易受到PFC驱动和压缩机驱动的IGBT开关信号干扰,所以为了通信的稳定性和可靠性,一般室内外机通信的波特率都在1,200 bps以下,导致OTA室外机固件时,耗时非常长。

为避免空调运行的干扰导致OTA数据异常,在OTA期间,空调室内外机一般会先执行关机动作。基于此原因,在OTA室外机固件时,将室内外机通信的波特率提高,由原来的1,200 bps提高至4,800 bps,可以将OTA时长大幅缩短。

3 程序参数分区OTA

在空调产品上市销售后,如果不是软件bug和新增控制功能,一般升级都是根据售后反馈的问题进行参数的优化,使空调运行更稳定,效果更好。所以对于相对稳定的空调产品来说,升级参数的概率远大于升级程序的概率。然而参数所占空间一般只有1~2Kbytes,而程序升级则高达数百Kbytes,所以在只需要升级参数的时候,只对参数进行OTA,可以极大程度的缩短OTA时间[6]。其具体做法是:

(1)将固件包分为室内机程序、室内机参数、室外机程序、室外机参数4个部分,在合并这4部分到同一个固件包的同时,给每一个部分增加一条固件包信息,包括版本号、校验码等信息,如图4(a)。

图4 程序参数分区OTA示意图

(2)在室内机收到Wi-Fi模组传输的固件包信息后,先与空调器室内外机当前的室内外机程序版本号、参数版本号进行对比,判断出哪一部分需要进行升级。如果是需要升级的部分,则进行OTA升级,如果不需要升级的部分,则跳过该部分的升级,流程如图4(b)。

4 部分程序OTA

一般情况下,程序编写完成,在编译的时候,编译地址、内存占用等都会根据编译的规则进行调整,所以程序中任何小的改动,都有可能影响整个编译结果[4]。这种情况下,只要程序升级,那么一定是对整个芯片的flash进行刷写,是否能有方法做到只升级程序变动的地方呢?这里提出一种方案,如下:

在上一节所述基础上,我们在编写空调控制程序的时候,将程序中各个功能按照模块来划分,如将室内机程序划分为:通信控制模块、传感器采样模块、摆叶控制模块、内风机控制模块等;将室外机程序划分为:压缩机驱动模块、室外风机驱动模块、PFC模块、频率控制模块、膨胀阀控制模块等。

各个模块之间,通过变量映射、参数传递函数等方式进行消息互通,并解掉所有的耦合关系,这样一来每个模块都被独立封装了起来。最后在编译程序的时候,指定每个功能模块的编译地址和占用空间,这样各个功能就成了独立的模块。编译后,由于各模块之间完全解耦,程序没有变化的模块,其占用的MCU存储区间的内容也不会产生变化,如图5。

图5 程序模块解耦编译示意图

在生成OTA固件包时,我们也是先给每个功能模块打上码头信息标签,按照类似图3的方式进行升级控制。

这种部分程序OTA的方法,可以有效减短程序功能迭代时候的OTA时长。但此方法也有明显的缺点:程序模块解耦,工作量非常大;每个模块占用的空间都需要为升级程序提前做好预留,对MCU存储空间要求较高。

5 不对等分区的OTA

上述第3、4节描述了缩短OTA耗时的方法,本节则描述一种如何减小OTA所需芯片容量空间的方法,以降低OTA成本。

具备OTA功能的空调器,一般会将芯片的Flash空间划分为3部分:Bootloader区、App区、备份区。其中Bootloader区为启动引导区,用作校验分区固件、切换启动分区等;App区和备份区一般是相同大小的两个空间,用作互相备份程序,避免在OTA期间,因掉电、通信故障等情况导致空调无程序,无法运行[5]。

众所周知,芯片的价格与其Flash空间息息相关,空间越大,芯片价格越高。传统的芯片分区方案,使得备份区的利用率低,方案成本高。

这里提出一种方法,将芯片的Flash空间也划分为3部分:Bootloader区、App区、应急运转区。其中App区与传统的分区功能一致,但应急运转区将空调的控制功能简化,仅做空调运转必需的最小控制系统,舍去复杂的控制功能。

在OTA期间,如果App区因各种原因升级失败,无法在App区运转,此时程序将跳转到应急运转区运行,为用户继续提供制冷、制热等服务,并持续的获取新的App区的固件,在App区固件升级成功后,再跳转到App区,运行功能齐全的控制。

因应急运转区的功能最小系统,其代码量远小于App区,所以此时可按照App区空间大,应急运转区空间小的方案来划分芯片Flash空间。

如图6所示,程序包大小同为80 Kbytes,传统分区方式的App区和备份区会各占124 Kbytes,芯片总容量需选型为256 Kbytes;而以不对等分区方式的App区满足大于80 Kbytes,并将应急运转区简化到30 Kbytes以内,这样芯片容量仅需128 Kbytes即可满足需求。

图6 不对等分区OTA方案示意图

以上,可以得出,使用不对等的分区方案,将备份区缩小,并用作为应急运转区,可以在满足设备不“变砖”的情况下,还能大幅缩小芯片容量需求,降低了芯片的成本。

6 总结

空调器在售出安装后,出现软件bug、功能迭代、用户定制等需求时,如果没有OTA功能,就需要售后工程师上门服务,对空调企业来说,这是一笔非常大的支出。而OTA功能完美的解决了这个问题,既节省了空调企业的开支,也以最快的速度响应了用户的需求。

灵活的改良空调器的OTA方案,在安全可靠的前提下使得OTA耗时长、OTA成本高等痛点问题得到良好的解决,本文论述的4种方法可广泛用于空调器及其他电器的OTA场景,具有一定的实用价值。

猜你喜欢
室外机固件运转
某超高层公寓变制冷剂流量空调室外机周围热环境数值模拟研究
基于CFD模拟分析的深圳某超高层公寓多联机室外机布置研究
复旧运转
《狮来运转》萌翻石狮
横百叶不同开度对室外机周围热环境的影响模拟
时来运转
基于固件的远程身份认证
空调室外机用环保遮阳挡
提取ROM固件中的APP
一种通过USB接口的可靠固件升级技术