车载系统的电源状态及迁移
在车载系统开发过程中,无论是软件开发还是硬件开发,都会涉及到“电源状态迁移”,这个是一个最基础的知识,但是往往在实际工作中,即使有过几年车载开发经验的人,也不能够很透彻地说清楚“电源状态迁移”,的确很尴尬,这里详细讲解一下。
目前我们的汽车中有各种各样的用电设备,如下图:车载系统电源布局图,这里只标注了部分用电设备,实际上汽车中的用电设备要远远超过这些,各种用电器由蓄电池供电,而每个用电设备都由专用的车载ECU控制,从而形成一个复杂的车载控制系统。
下面介绍一下状态迁移的基础知识,让大家了解什么是状态及状态迁移。
状态机
状态机4个要素:现态、条件、动作、次态。主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。
①现态:是指当前所处的状态。
②条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
把“现态”和“次态”统一起来,而把“动作”忽略(降格处理),则只剩下两个最关键的要素,即:状态、迁移条件。
状态迁移
状态迁移图(STD)或状态迁移表被用来描述系统或对象的状态,以及导致系统或对象的状态改变的事件,从而描述系统的行为。属于结构化分析方法使用工具。
状态迁移图
状态迁移图(STD),是一种描述系统的状态、以及相互转化关系的图形方式,如下图(a)。
状态迁移表
用表格的形式来表示状态之间的关系。这种表一般称为状态迁移表,如下图(b)。
状态迁移工具
车载的状态迁移可以通过C编写代码,建立状态迁移表来实现,也可以通过专用的工具来建立状态迁移,自动生成状态迁移的代码,如:ZIPC。
汽车的钥匙孔与电源状态对应关系
不同的车这4个档位会有微小的差异,基本差不多,请参考“汽车电源状态”图。
LOCK档:锁止档,此位置是钥匙插入和拔出的位置,此时车辆除了防盗系统和车内小灯以外,电路完全关闭。
ACC档:附件通电档,将钥匙拧到此位置时,部分车载附属设备供电,如视听系统,仪表灯,灯光等。也就是说,车停在哪里,发动机不转,除了空调不能用外,车内的设备基本都可以用。
ON档:接通档,将钥匙拧到此位置时,全车电路接通,系统会为启动发动机做必要的准备工作和自检工作,车辆正常行驶时钥匙会保持在这个位置。这时全车所有电路都处于工作状态。ON是汽车点火档,在保证ACC供电的基础上,增加了发动机的点火功能。
START档:启动档,将钥匙拧到此位置时,启动机电路接通,会带动发动机运转并启动。松开后钥匙会自动回到ON档。而START档是发动机启动档位,启动后会自动恢复正常状态也就是ON档,在汽车打火的一瞬间会进入“START”挡。主要给发动机启动系统供电,这时一般会切断ACC档的电路,已保证发动机顺利启动。
车载电源状态及迁移关系
车载电源有三种基本状态:battery状态、ACC状态和IG状态,每种状态有分为“off”和“on”状态,各种状态之间可以相互迁移,参考“车载电源状态迁移图”。
1、battery on,简称+B on,指车辆的蓄电池接通。
2、battery off,简称+B off,指车辆的蓄电池断开。
3、ACC on:蓄电池接通并且有点的情况下,将车钥匙拧到ACC的位置,进入ACC on状态。
4、ACC off:车钥匙没有进入ACC档之前的状态。
5、IG on:汽车打火完成后,就进入IG on状态,对应实车中的ON档。
6、IG off:汽车熄火后,进入该状态。
sleep和weakup状态
sleep:在系统满足一定条件的情况下(例如:电压、电流过低,长期间没有信号输入,长期间没有用户操作等),系统进入休眠状态,以节省电力,避免蓄电池亏点。
weakup:就是系统正常运行时的状态,在系统满足一定条件的情况下,从sleep迁移到weakup。