
资讯
加速工程及科技创新,让智能装备的设计研发更简单高效
遇到像写诗一样的码神,“自动代码生成技术”还得甘拜下风
我是码神
“在我心中,曾经有一个梦,要用代码让你忘了所有的痛”,这便是神一般的代码工程师,他们在写代码时,跟写诗一样享受。
自动代码生成技术
----我没有码神写诗一般的“情怀”,甘拜下风
1.自动代码生成技术简介
自动代码生成技术,即基于模型的设计。是一种基于模型的工具,这种工具要求先根据需求设计控制算法(模型),然后按照工具和ECU的要求设置各种输入输出变量和中间量的属性,比如数据类型是标定量还是变量、全局变量还是模块内变量、物理值和ECU二进制值的转化公式等,然后利用工具自动生成代码进行后期的集成和测试等工作。
在汽车行业,2010年之前,大多数控制软件,比如发动机控制软件,自动变速箱控制软件,车身控制软件等等,都是手写C代码的。欧洲汽车行业使用很多外包公司来进行这项重复性的脑力活动,甚至把很多写代码的活儿外包到印度降低成本。一个大型软件比如发动机控制软件,甚至需要超过上百个代码工程师在像网吧一样的大办公室里手动撰写不同模块的代码,之后再进行拼装。
2010年之后到现在,在汽车行业手写C代码的情况已经非常少了,如下表所示来自Infineon的预测,到2020年手动C代码在整个汽车行业所占的比例会只剩下10%左右,其实现在除了少数一些发展中的车企和微型公司,汽车行业C代码已经较少见了。
那么如果不用手写C代码,汽车控制软件编译前的代码怎么得到呢?就是通过自动代码生成技术,或者说基于模型的设计。用过类似Matlab中的Simulink或者其他图形化的语言就会知道,在建模和仿真的过程中很少直接使用C代码。Simulink对比C代码,就好像Windows操作系统对比DOS操作系统一样,一个是图形化的控制,一个是基于命令行。
因此,软件设计者只需要编写图形化的Simulink模型,通过工具自动生成对应的C代码,最后可以直接编译再刷写到具体的电子控制器上使用。
2.自动代码生成技术优点
在使用自动代码生成技术前,汽车控制软件的主要一部分开发流程如下图:
1)首先系统和功能设计工程师需要制定软件的功能和需求,并设计控制模型,系统和功能设计工程师可能完全不懂C代码。
2)之后功能设计工程师提供具体的需求和设计说明书给软件工程师或者外包公司的代码工程师。
3)代码工程师将系统工程师的设计理念从模型转化为C代码,编译后刷写到电子控制器。
4)最后系统工程师或者测试工程师再拿到刷写好的软件去测试自己设计的功能。
而使用了自动代码生成技术之后,软件开发流程就成了下面这样:
软件开发中,系统和功能设计工程师不再需要浪费时间给代码工程师解释自己的设计理念,也不需要等待代码工程师输出C代码,只需要使用软件工具来自动生成和编译图形化的代码。
因此,相对于上面的手动C代码,基于模型的设计有显而易见的巨大进步:
1)节约了闭环设计中无数的时间和人力成本,那一房间上百个代码工程师都可以节约下来了。
2)系统和功能设计工程师可以独立完成软件的输出,可以很容易避免因为技术文档描述不准确或者歧义而导致的从功能到代码的错误设计。
3)软件功能修改后可以快速自动生成代码而不需要经过复杂的流程由代码工程师来做修改。
4)软件一致性不会像以前一样因为使用不同的代码工程师而不同,代码也会由自动工具统一优化。
5)图形化的软件设计和Windows一样更易懂,类似Simulink中完整的诊断和查询显示功能也可以更容易对软件进行纠错,找到bugs。
3. 自动代码生成技术趋势
自动代码生成技术对于汽车行业如此,其他机电系统行业也会如此。软件规模的快速膨胀,给验证和实现都带来了很大困难,原有的开发模式难以应对,新的开发模式必然会出现。即便是没有MathWorks、没有Simulink,也会有其他产品去实现基于模型的设计,这不是单单某个公司能够推动的,而是技术发展到这一阶段的必然。
尽管如此,遇到像写诗一样的“码神”,“自动代码生成技术”还是得甘拜下风,因为自动代码生成工具本身就是心中的“码神”写出来的。
1、数字仿真
首先,在Simulink环境下建立数学模型,通过在Simulink下的数学仿真,初步验证模型及算法。
2、半实物模型准备
对数字仿真模型进行修改,加入硬件I/O模块,建立半实物仿真(HIL)模型。
3、目标代码自动生成
在完成HIL模型的参数设置后,即可调用自动代码生成工具,将Simulink模型转换为C代码,并最终编译为VxWorks系统下的可执行程序。
4、仿真配置管理
在RT-Sim主控软件中,根据软件向导,建立仿真工程,设置仿真目标机属性,配置监视及保存变量,准备实时仿真。
5、实时仿真
在RT-Sim软件中,点击【启动】按钮,仿真开始;半实物模型编译生成的可执行程序将自动下载到目标机,并启动实时运行,与实物设备通过IO硬件进行交互;上位机的RT-Sim软件通过以太网监视目标机状态,并支持在线修改参数、启停控制、实时数据存储等功能。
6、仿真数据后处理
仿真结束后,RT-Sim进行实时存储数据上传、格式转换(支持txt、xls、mat等格式)、数据回放等,能够与Matlab、Excel等工具无缝集成,并能够进行简单的数据处理。