• 218查看
  • 0回复

[系统功能] 如何设计时序图——以APA自动泊车系统为例(二)

[复制链接]


该用户从未签到

发表于 2-3-2024 14:16:02 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


时序图是阐明软件设计的利器,也是系统架构的必备武器。今天我们以APA自动泊车系统为例,通过实战来聊聊如何设计你需要的时序图。

在上一篇文章中讲到,个人总结了七条经验用来指导我们更好的设计时序图,那么现在我们就通过这些经验,以APA自动泊车系统为例,来完成一次时序图的设计。
1.确定目标
在明确目标时首先强调,时序图没有优劣好坏高下之分,它的作用是帮助设计者传达出作者的设计理念,以便读者更够快速、无误的理解。比如我们作为系统工程师,是对于系统整体最了解的人,是最清楚ADCU域内各模块之间数据交互的人;所以我们的设计的时序图,力图要将各模块之间的交互梳理清楚,让感知、融合、定位、规划、控制等模块的Owner能够清楚的知道,在什么时间下该模块需要与其他模块进行什么样的握手,而该模块内部的信号逻辑,则归属于该模块的负责人去设计。好的,那么对于自动泊车系统来说,APA整体功能流程错综复杂,为避免时序图臃肿与繁琐导致的可读性下降;我们将APA功能分解为若干个功能过程,分别对每个过程中的时序进行逐一描述,将各过程拼接后能够得到清晰明白的功能时序。2.选择合适的颗粒度
作为系统工程师,我们当然选择通过功能解构来分别绘制时序图。本文不对APA功能逻辑做详细介绍,那么熟悉APA的同学都知道,APA过程可以简单的分为车位搜索、选择车位、泊入泊出过程、中断恢复等,下图通过这种思路简单的做时序图分解。
如何设计时序图——以APA自动泊车系统为例(二)w1.jpg

于是我们知道了,需要分别设计“激活泊车功能”、“退出泊车功能”、“前台搜车位”、“后台搜车位”、“点击选择车位”、“自动泊车过程”、“泊车过程中断”等等时序图。3.命名规则
另外描述的颗粒度应该选择为模块间的交互信号,如在设计初期该信号未定义,可以选择用语义性的信号进行描述,通俗易懂即可,最好前缀明确标注为什么类型的信号,如以太网、CAN、FR、或域内的交互信号。
比如用户按下激活泊车按键,这是一个以太网信号,以Eth为前缀,采用大驼峰命名法(个人习惯),描述为Eth_ApaBtn(1:EnterApa),括号内为该信号此时应该发送的值。
如何设计时序图——以APA自动泊车系统为例(二)w2.jpg

4.布局合理
整体布局方面,这个主要符合美观要求就好,一般我们设计模块交互图时,左边为输入,右边为输出。我们可以遵循这个原则,进行设计。APA系统交互分为域外与域内,域外会与用户输入、DHU、底盘动力、转向等ECU进行交互,域内为各模块之间的交互。
我们将域内与域外的对象用不同颜色表示,从左边开始为原始输入,按照时间顺序排列对象和消息,并使用对齐和间距来提高可读性。
如何设计时序图——以APA自动泊车系统为例(二)w3.jpg
   
5.注释和说明
在时序图最左侧以Diagram Conventions的形式将对象进行说明。在时序图后通过文字对每一条跳转进行详细描述。
如何设计时序图——以APA自动泊车系统为例(二)w4.jpg

6.简化和抽象
避免繁杂与重复,巧用组合片段用来解决交互执行的条件和方式。比如Opt选项、Alt抉择、Loop循环等,能够帮助你节约大量时间,并且提高可读性,还显得很专业。
最喜欢这种偷懒又实用的技巧。
如何设计时序图——以APA自动泊车系统为例(二)w5.jpg

7.使用工具支持设计
由于作者是在家设计,使用的是试用版的EA,画面简洁漂亮,给EA的设计师点赞,也是花费无数心血完成的软件,无脑吹起来就好。不过个人感觉UML建模好像用的越来越少了,可能是个人局限性原因吧,画画图还是很好用的。现在铺垫都已经做好了,接下来无脑进行功能逻辑描述就好了,以最基本的,我们刚刚分解的“激活自动泊车”功能时序图为例。
1.首先进行功能描述:激活自动泊车功能:用户开启通过操作开启自动泊车功能,满足开启功能条件,状态机进行跳转并通知下游模块,进入自动泊车功能;不满足开启功能条件,APA返回DHU功能开启失败原因提示。2.然后附上时序图:
如何设计时序图——以APA自动泊车系统为例(二)w6.jpg

该时序图为简单描述,仅作说明示意
3.进行注释说明:
1.用户点击中控软开关或语音开启自动泊车功能,DHU通过Flexray发送APA功能激活信号Flexray_BtnPush == 1:EnterAPA至ADCU;

2.ADCU MCU Flexray Transceiver接收信号并通过以太网传输给SOC;

3.SOC中的HMI Arbitration模块解析该信号并分发给下游ParkingModeManager模块;

4.SOC端Signal Service接收后转发APA_ActivationReq至HMI Arbitration模块;

5.HMI Arbitration模块将请求转发给Parking Mode Manager;

6.Parking Mode Manage收到激活信号后,根据泊入泊出策略,选择当前进入的泊入泊出模式,并发送给下游模块;

7.状态机进行状态跳转判断:

a)若当前为Mag_APAModSts==2: APA_Standby,成功进入Searching状态,Parking Mode Manage将APAModSts == 3: APA_SEARCHING状态发送给下游其他节点。

b)若当前为Mag_APAModSts==1: APA_OFF,则无法开启APA功能,Parking Mode Manage将APAModSts == 1: APA_OFF状态发送给下游其他节点。

8.通过以太网返回APA状态Ethernet_apa_state以及文言提示Ethernet_AlarmInfo给DHU作为显示;

OK,如此便完成了一个简单的时序图设计。对于其余车位搜素、泊车过程等功能的时序图,照猫画虎继续完成即可,就不再一一展示了。

作者对于时序图设计也仅是初学作为个人总结,欢迎交流,如有错漏请大佬指正~

如何设计时序图——以APA自动泊车系统为例(二)w7.jpg

——————————————————

上海又入了梅雨季节,夜半时分听着雨声码字,配合着键盘敲击声像是一首莫名的歌曲,手边躺着一只慵懒的猫咪,心情莫名愉悦了起来。

随着文章渐渐完成,雨声也淅淅沥沥小了下来,内心一如窗外的平静,恰如这首诗的意境,与诸君共勉。

殷勤昨夜三更雨,又得浮生一日凉。
                                                                               ——苏轼《鹧鸪天》

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-12-2024 16:27 , Processed in 0.253543 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.