【摘 要】随着车辆功能逐渐增多,用户需求不停更新,车辆软件需要快速迭代才能给用户更好的服务体验,更快的功能体验,真正满足千人千面的需求,从分布式EE架构转变为现在的中央计算加区域控制的架构,以SOA的形式实现软硬解耦,将更多的功能以原子服务的封装集中到车身控制器(BCM),根据动态配置进行不同服务的调用。本文从整车架构、BCM的功能定义、原子服务划分讲述BCM的原子服务设计。
当下汽车行业正面临转型的革命,随着新四化的提出,软件定义汽车已成为必然趋势,软硬件的解耦程度决定了企业产品的差异性,对硬件来说,需要可兼容、可扩展,对软件来说,需要升级快、可移植性好,因此从架构层面需要基于SOA来进行开发,将传统的分布式架构转为中央集中式架构,由中央计算单元与区域控制组成,将功能按颗粒度大小封装成不同的原子服务,以标准的服务接口进行调用,在功能交互过程中,交互双方无需考虑对方的协议,原子服务设计是决定软硬件耦合深度的重要因素,好的原子服务设计可以降低整车成本、屏蔽异构性且服务组合可以实现不同的功能,做到动态配置车辆功能。
1 汽车架构的设计差异
1.1 传统EE架构开发
传统EE架构的开发流程如图1所示,由市场首先对车型定位,针对定位寻找相应的或更高配置的主流车型进行对标,主要对标其外形、内饰、静态功能和动态功能并牵头全员填写竞品分析表,将分析结果整合并调研用户需求后整理输出配置表、技术梳理配置表,找到各自的相关项,转换为技术方案,将配置表分解为多个功能逻辑,再将功能逻辑分配给多系统,输出网络通信需求表,根据需求表,输出子系统的需求文档,文档中写明I/O、人机交互界面、性能要求、应用场景等,子系统根据功能分配自己的网络接口和硬件接口,最后完成系统的原理图和网络开发。
图1 传统EE架构的开发流程
图2 基于SOA的EE架构开发流程
2 功能定义
以中央计算单元加区域控制的形式BCM集成了车身功能、空调功能、路由等功能,还具有网络管理、信号检测等功能,车身功能包括后除霜、外部灯光、内部灯光、前照灯调节功能、防盗、背门控制、中控功能、雨刮洗涤、后视镜功能、喇叭、天窗功能、RKE、PKE、玻璃升降、座椅调节等;空调功能主要是对泵、空调箱等电机或电磁阀的驱动,包括空调水泵驱动、电机水泵驱动、冷凝器风扇驱动、空调板驱动、冷却泵驱动、制冷机功能、空调箱功能、鼓风机驱动等;路由功能分为信号路由和线束路由,信号路由是因为BCM还承担网关的角色,BCM与中央计算单元采用百兆或千兆以太网连接,与其他ECU采用CAN或十兆以太网连接,需要将其他ECU的信号转发至中央计算单元,实现信号路由,而线束路由则是将需要转接的硬线信号,通过BCM控制器进行转接;因为整车在下电后既要保证车辆在一定时间内蓄电池不亏电又要保证车辆功能能够唤醒,因此网络管理尤为重要,网络管理包括定义唤醒模式、睡眠模式,需要根据不同的通信方式进行睡眠管理;信号检测包括碰撞信号、门开关检测、门状态检测、温度检测、阳光检测、挡位开关检测、灯光开关检测等。
图3 BCM的系统框图
图4 服务的软件架构
原子服务设计,首先根据function list,列出BCM的所有功能,然后按照颗粒度大小,将功能转换为合适的API描述,在服务API描述中定义服务类型,可以是最小服务API,也可以是组合后的API,最小服务API如左前门开关服务,组合后API可以是左前门服务,此服务包括门锁状态、车把手状态、车门状态、车门开度、儿童锁状态等。一般BCM的原子服务定义为如下:车门服务、尾门服务、车窗服务、天窗服务、遮阳服务、车钥匙服务、车外鸣笛服务、低速报警服务、外后视镜服务、座椅服务、座椅通风加热服务、方向盘调节服务、迎宾服务、雨刮洗涤服务、制动灯服务、转向灯服务、报警灯服务、日行灯服务、雾灯服务、近光灯服务、远光灯服务、位置灯服务、倒车灯服务、激光灯服务、后牌照灯服务、logo灯服务、前照灯调节服务、空气净化服务、顶灯服务、手套箱服务、除霜除雾服务等。对于设备服务,定义如下:门开关、门锁、尾门开关、尾门锁、尾门电机、车窗开关、车窗电机等,根据输入条件和输出控制,隔离相应的设备。
以温度检测服务为例,依据SOME/IP的报文格式,需要定 义service ID/method ID、client ID、session ID、RPC type、返回值、报文周期、调用描述等,服务的调用方法有method、filed、fire and forget、event,其中method又分为RR和FF类型,filed分为setter/getter和notifier,那么该服务里的provider是BCM,consumer是中央计算单元。服务接口可以定义为几种形式,当使用RR-method时,对温度传感器状态检测,使用FF-method时,通知中央计算单元温度过高,当使用field,温度值检测,当使用event时,检测到超过某一阈值后再上报。以field温度值调用为例,服务的server为BCM,服务的client为中央计算单元,service ID为0x4003,Instance ID为0x0001,server port为30500,client ID为0X0003,client port为30500,服务描述为:该服务主要识别室外温度值,RPC type是field,field属性字段名为Snsr_TemperOut,field字段数据类型为float ntfT(),RPC Specific Type为getter,Method Name为OutSIdeTemp,以上ID和port仅作为示例,具体由车企根据实际情况确认。
添加下方信加入汽专业交流群
(仅限专业人士,添加备注单位+姓名)