本节将举例说明软件模块化如何促进软件组件的重复使用。将通过功能外部灯来说明建立功能性架构和把该架构在硬件上实施的一些重点。选择这个功能是因为它不改变界面且能在不同车辆模型上重复使用。
这种功能的需求源自于已存在的规范。很显然,汽车尾灯的划分存在差异。这点对于一个汽车生产商制造的不同汽车车型尤其明显。图8.8展示了所预期的把接通/断开状态和制动灯开/关状态组合后汽车尾灯的表现。我们进一步假设其中一辆车一侧只有一个灯泡,而另一辆车每边各有两个灯泡。于是,当行驶灯亮起及制动灯亮起时,存在一个不同的亮度等级。
图8.8 汽车尾部信号灯的不同布置
外部灯光应用软件通过SSC的界面控制灯泡。对于每边各有两个灯泡的车,界面是“左边外侧尾灯”“左边内侧尾灯”“右边内侧尾灯”和“右边外侧尾灯”。对于每边只有一个灯泡的汽车来说,界面是“左边尾灯”和“右边尾灯”。另外,第三个灯——制动灯也必须能操控。基础层也支持输入界面。其中一些是连接其他ECU的网络界面,另一些是ECU中的内部界面——外部灯光功能就位于此处。在图8.9中,可以看见两种不能重复使用的软件组件。这两个软件组件都按照整体模块来使用,因此无法重复使用。其中的硬件在由控制尾灯的模块的输出信号中直接反映出来,因此当对其他尾灯组合使用同一输入源时,这个模块不能复用。
图8.9 不可重用的软件组件
在图8.10中,用于实现灯光控制逻辑的软件组件被抽取(外部灯光常用)。每一辆汽车模型不同的改编软件组件被当做界面使用。引入两个独立的信号——制动灯和行驶灯。这些信号是新产生模块“外部灯光常用”的输出信号以及每一种外部灯光组合需要的改编模块的输入信号。
图8.10 可重用的应用软件组件(www.daowen.com)
基础硬件也必须考虑。图8.11显示了在不同方案中硬件可能有很大变化。在左边的方案1中,灯泡由数字输入和输出端口直接控制。在图右侧的方案2中,第三个灯——制动灯依然由一根独立的数据线操控。因此尾灯被称作智能执行器。为了减少线束,主要装置通过LIN总线来控制这个智能执行器。
图8.11 不同的硬件方案
虽然,这是一个十分简单的例子。但是我们相信这个案例至少表明了原理,且这个方法一定可以应用于更复杂的场合中。
为了解汽车工业中处理的系统真正的复杂性,将简要介绍另一个真实案例,也就是控制倒车灯。在图8.12中,可以看见涉及9个ECU用于确定倒车灯是否应该打开,以及当驾驶人选择挂倒档时什么动作应该被执行。
首先,变速器传递了驾驶人选择挂倒档的信息。在所有奥迪车上,这个信息必须通过中央网关。车身控制模块之一(车身控制前ECU)负责外部信号灯控制。它决定尾灯必须打开,且传递这个信息到另一个车身控制ECU(后面)中,该ECU实际上接通了尾灯。同样的信息也使用于车门控制模块上,它使乘客那边的后视镜略微下倾,前提是如果驾驶人通过他那侧车门控制面板启动了这个功能。与此同时,车顶模块不必微降自动外后视镜。最终,如果这个车有挂车,那么必须通过挂车ECU接通挂车尾灯,且奥迪驻车系统必须关掉尾部传感器,以免一直有一个警告声音干扰驾驶人。
图8.12 汽车倒档案例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。