提到capl,相信各位一定不陌生,它是由vector公司开发的类似于c语言的面向过程编程语言,是canoe和canalyzer中可用的编程语言。capl中程序块的执行由事件控制,在专用的编译器中开发和编译,这样可以访问数据库中的所有对象以及系统变量,作为汽车电子工程师,在工作中会经常用到。
capl可以在canoe界面tools>>capl browser中打开。
图1 capl打开方式
capl界面由功能区、程序框架浏览树、输出窗口、编辑区、访问区五部分组成。
图2 capl界面
顾名思义,程序编辑区就是编写capl脚本的区域;程序架构浏览树起目录的作用,可以把编辑区定位到编写的事件或函数类型的语句;输出窗口可以输出编译过程中的事件和使用搜索时定位到的结果;访问区能够访问到canoe工程加载的数据库中的信号、创建的系统变量以及capl函数库中的语句,直接从右侧访问区拖拽到中间编辑区使用(注意:工程创建路径中不能有中文,否则访问不到数据库文件)。
功能区由五部分构成,首先是file菜单栏,与大多数软件相同,它是文件创建、保存、加载、设置等功能区域。
图3 file菜单栏
home功能区提供了capl编译常用功能,包括代码编译、查找、替换、屏蔽、取消屏蔽等功能。
图4 home功能区
filter功能区的作用是管理capl的函数库,可以在函数访问区中屏蔽掉不需要的函数。
图5 filter功能区
debug功能区是调试的区域,提供了一些基本的调试操作,一般情况下不通过debug模式来调试脚本。基本上编译一次,存在错误可以通过output输出窗口获得错误类型并进行更改。如果脚本编译成功之后,仍然不能满足测试步骤的输出,一般会使用write窗口进行调试。
图6 debug功能区
layout功能区主要是针对capl用户的页面展示。例如进行水平分区、垂直分区等操作方便用户进行脚本编写。
图7 layout功能区
capl应用场景:
节点仿真关联simulation setup中的ecu节点,实现ecu节点仿真和整车网络仿真。
图8 simulation setup窗口
测试功能关联simulation setup中的test module模块或是test菜单中的test setup,结合tsl(test service library,测试服务库)进行测试功能开发。
图9 test setup窗口
分析功能关联measurement setup窗口功能模块中的program node,实现总线过滤、分析功能。
图10 measurement setup窗口
capl脚本结构:
一个完整的capl脚本由三部分组成:变量、各种事件和自定义函数。
图11 capl的三部分
capl的事件类型包含三种:总线事件、属性事件、时间事件。capl常用的事件类型如下图所示。
图12 measurement setup窗口
capl常用函数:
下面以canoe中easy工程的light.can脚本为例介绍capl中的常用函数,该脚本与panel联用实现转向灯仿真。
图13 声明全局变量
上图是capl中的全局变量声明,其中 ‘mstimer’为声明以ms为单位的计时器;‘const int’为声明int类型的常值变量,该变量的值无法改变;‘int’为声明int类型的变量,该类型变量有符号,长度为2字节。
图14 系统事件
‘on start’是系统事件,测量开始执行会触发该事件,也就是点击start按钮触发。
图15 can消息事件
‘on message’是can消息事件,接收到指定消息时执行。‘on message lightstate’是对名字为lightstate的报文反应,除直接使用字符串外,还可以使用报文id指定触发报文。‘on message 123’是对id为123(dec)的报文反应;‘on message 0x123’ 是对id为123(hex)的报文反应;‘on message *’是对所有的报文反应;‘on message 100-200’是对id为100-200间的报文反应。
图15 系统变量事件
‘on sysvar sysvar’是系统变量事件,指定的系统变量值改变时执行。与之相对应另一个系统变量事件是‘on sysvar_update sysvar’,指定的系统变量值更新时执行。
‘settimer(mstimer t,long duration)’是设置定时器函数,他有两个输入参数,第一个为声明的定时器变量,第二个是设定的时间。‘canceltimer(mstimer t)’是取消定时器函数,入参为定时器变量,该函数的作用为取消设定的定时器。
图16 时间事件
‘on timer’为时间事件,定时时间超过时执行,它与设置定时器函数联用。定时器通常应用在实现某个任务循环,在时间事件中写入一个设置定时器函数实现循环。
‘on key’为键盘事件,被指定的键按下时执行。该事件常用于脚本调试。
此外,‘write()’函数在调试脚本中也常使用,该函数基于c语言中的‘printf()’函数,可以将文本消息输出在write窗口中。
注:图片来自vector。
总结:
北汇信息作为vector中国的合作伙伴,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案,为工程师在汽车领域提供“趁手装备“!
2020年对于数字货币有什么意义
如何在Raspberry Pi 3上构建机器学习应用程序
什么时候需要使用TDR
西门子S7-200 Smart Modbus通信编程实例
安森美揭秘收入增长之道,预期达到半导体行业平均增速的3倍!
CAPL编程语言快速入门
弱电施工的光纤芯数确定
买AirPods最大的原因是什么
电力物联网利好终端商 金冠子公司南京能瑞助增长
AMD已向台积电预订明后两年5nm及3nm产能
断电报警器的重要性说明
联发科今年将迎来智能型手机和非智能型手机产品的关键交叉 毛利率将挑战40%大关
单片机如何进行故障检查及常见问题的解决办法资料概述
PWM至线性信号转换电路
无铅知识与工艺指导
给集成电路企业减负,国务院:延续集成电路和软件企业所得税优惠政策
电子爆竹电路图
京东方智能颈椎按摩仪:高效便捷,一键智能开机运行按摩程序
HP-RSCAT-T200 CAT1 DTU CAT1网络数据支持MQTT协议联网模块RS485/RS232远程数据采集
华夏航空正式引进了一架空客A320飞机目前机队规模已达到了49架