CASL编程?——CANape的自动化“利器”

前言

得益于计算机的发明及高速发展,21世纪是充满智能、科技、便捷的世纪。无人驾驶、人工智能、物联网,这些概念已耳熟能详,而它们背后则是利用编程实现的复杂逻辑。作为新时代的我们,生活已经和“编程“密不可分了,例如常见的C、C++、Python、Java等编程语言。

Vector公司与时俱进,在CANape这款强大的测量和标定工具里,采用专门的编程语言——CASL(Calculation and Scripting Language),方便汽车工程师进行数据分析和开发。今天我们就来聊聊这位强大又低调的选手,并和它做个朋友!

CASL的语法与C编程语言非常相似(但也有不同处:CANape不使用指针),允许开发人员集成自己的C代码或Simulink模型。所以说,大家在使用之前基础的C语言编程知识还是要掌握的~为了方便使用,CANape提供了智能感知输入、代码块和各种内置函数组。

图1 智能感知输入

在CASL中,主要运用函数和脚本,来解决各种不同的任务。从简单的计算,例如,添加信号,直至CANape的自动化。

基本概念

1)What Are Functions

在测量过程中,函数被同步处理,主要用于实时测量或者对于加载测量文件的各种计算和应用。例如,函数可以是数学公式或程序代码,其中变量代表信号或参数。

通常有在线和离线两种使用场景:

  • Online applications(在实时测量过程中):

>测量虚拟信号计算

>允许对外接设备读写

  • Offline applications(访问现有的测量文件)

>测量文件虚拟信号计算

>执行数据挖掘

图2 虚拟函数使用场景

下面我们来看看函数的语法结构:

图3 函数语法结构

当一个函数被调用时,参数可以被传递给函数。参数通常作为引用传递给函数,因此既可用于输入,也可用于输出。

除了通过参数传递从函数发出结果外,还可以使用返回控制结构(return也是关键字)的路径。默认情况下,返回double类型的值,字段或向量(数组)不允许作为返回值。

CANape对自身预定义和用户定义函数进行了区分,称为库函数和工程函数。

图4 函数分类

2)What Are Scripts

脚本是程序代码的一部分,可在编辑器窗口中编写,并在调用时顺序处理。脚本用于自动化或控制CANape中的联合活动,例如测量和其他系统相关序列的开始和停止,它独立于测量运行。它们也可以用来调用在Microsoft Visual Studio或MATLAB/Simulink中生成的外部模型。

图5 脚本示例

此外,可以在CANape运行时,使用命令行选项控制脚本行为。

两者区别

说了这么多,我们如何编辑呢?

全局变量、函数、脚本均可在CANape的函数编辑器中创建、编辑和编译。函数编辑器主要分为树视图、列表视图、编辑器窗口、消息窗口,可以在CANape中直接打开。

图6 函数编辑器

变量类型:变量是特定类型值的占位符。变量可以在脚本和函数中声明和定义,主要分为全局变量和局部变量。

全局变量是CANape配置中的所有函数和脚本都可以使用的特殊数据对象,局部变量仅在各自的函数或脚本中有效。

参数总是作为通过引用传递给函数,可以使用具有相同作用var和double前缀来修饰。

图7 相同作用前缀

关于数据类型就不做赘述了,大家自行百度啦。

一些实用小技巧

  • 使用频率较多的简单语句:

>测量过程开始/停止:Start(); Stop();

>测量文件信号导入:FILE1.CCPsim.ampl;

>测量和标定:x = CCPsim.ampl;

CCPsim.ampl = x;

>发送报文:CAN1.SendMessage(0x1a1,0xff,0x7f);

>延时(等待)3秒:Sleep(3000);

>测量缓存区或文件中对象信号值的数量:sizeof();

图8 数量获取

>所选对象特定的测量值进行读写访问:mbuffer[ ];(常与sizeof结合使用)

图9 读写特定值

>输出:print(); write();

图10 常见输出格式

  • 可以从一个函数中调用另一个函数:

图11 函数调用函数

  • 从一个脚本中调用另一个函数:

图11 函数调用函数

  • 从一个脚本中调用另一个脚本:

图13 脚本调用脚本

  • 正确终止函数和脚本:

如果参数达到了某个值,则可以使用控制结构cancel来终止函数或脚本。如果在函数中使用了cancel命令,该函数将在没有返回值的情况下终止。如果在子函数或脚本中使用了cancel命令,则脚本将立即终止。

例如下图,如果在调用的对话框中选择[Yes](返回值为0),脚本将终止。

图14 终止脚本

  • 全局变量初始化:

可以在脚本运行时调用,以每次自动初始化全局变量的值。

图15 初始化脚本

以上可能是一些常见的例子,由于编程语句体量庞大,工程师们需要根据功能需求来选择语句。在CANape中右键可以导入自动的库函数,根据功能分类,对于不熟悉语句,鼠标悬停后按F1,可以弹出help文档,其中会显示使用例子。

图16 库函数图17 万能help文档

在我们编写程序前,我们需要考虑以下5个步骤:

总结

编程世界很大,谨此抛砖引玉。小编领进门,修行还是看个人。

古人云,工欲善其事,必先利其器;北汇信息作为Vector中国的合作伙伴,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案,为工程师在汽车领域提供“趁手装备“!

心动不如行动,北汇诚意满满~

注:文中部分图片来自于Vector。


文章直通车:CANape更多内容点这里!

模型调参?拿来吧你!——CANape与Simulink的强强联手 – 知乎 (zhihu.com)

CANape |Option Driver Assistance功能详解 – 知乎 (zhihu.com)

CANape 20拍了拍你,更新速递请查收! – 知乎 (zhihu.com)

【应用案例】CANape支持基于模型的ECU开发 – 知乎 (zhihu.com)

焕新!CANape 19真香! – 知乎 (zhihu.com)


作者:北汇信息——起风了

喜欢此篇文章欢迎赞同、评论、收藏、分享支持小编~

更多相关资讯及业务介绍,欢迎访问上海北汇信息官方网站:上海北汇信息科技有限公司

商务合作资讯联系方式: 电话:021-34716271 邮箱:info@polelink.com

其它平台官方账号:

CSDN: 北汇信息的博客_上海北汇信息科技有限公司_CSDN博客

Bilibili: 哔哩哔哩 ( ゜- ゜)つロ 干杯~ Bilibili——各种演示教学视频任你学习!

更多技术干货,行业前沿动态,请关注上海北汇信息官方公众号:Polelink_Info

北汇信息成立于2010年,是一家技术驱动的创新型服务企业。北汇信息始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案。从测试工具、专用测试设备、完整测试方案到实车测试服务,我们与我们的客户一起努力,让中国的汽车变得越来越安全、越来越舒适、越来越智能。

发表回复

相关推荐

全自動麻將機是否有裝程序教你如何分辨

分辨麻將機是否安裝瞭程序,方法如下:一、從骰子上鑒定。正常的骰子對位點數是:bai6點對面為1點,5點對面為2點,4點對面為3...

· 1秒前

北京市集體戶口轉公共戶辦理過程記錄分享

最新更新20220912 大傢最關心的公共戶續期換卡問題,到期拿舊卡去換新卡就行瞭,不會被刁難,辦事大概十分鐘左右,全程主要就...

· 18秒前

【腦洞火影】斬首大刀的用法

這個文章隻是一個腦洞,沒什麼亮點。我在前幾天的一個回答裡寫道:斬首大刀與其他六把忍刀格格不入。公式書裡說瞭忍刀七人眾...

· 23秒前

5個“互”字頭的成語

互切互磋:比喻互相商量研究,取長補短,共同進步。互通有無:互相調劑充足或短缺的物品。互為因果:因甲事而影響乙事,又因...

· 32秒前

从51单片机到Linux 进击的脚本(教程9)

大家好,我是兔子。 是一个嵌入式软硬件工程师。 正在从单片机开发转岗Linux开发。 这次,我们来聊聊脚本。 Linux的脚本,和 ...

· 1分钟前