原创 新功能发布——TSMaster自动化模块的复用方法

2022-9-26 13:53 165 0 分类: 汽车电子
前言
今天继续给大家介绍TSMaster的新功能—自动化模块。通常在开发过程中,如果某个逻辑会在不同场景下反复用到,我们首先想到的就是把它封装成一个函数来进行复用。
一、控制挡位信号产生脉冲
> 首先进入工程文件夹,找到Demo文件夹的database文件夹,将示例的数据库文件拖入,然后打开总线仿真,勾选自动启动并勾选所有节点,使它能够自动运行起来。随后我们打开trace和图形窗口,把我们所关心的挡位信号拖入图形,随后我们来到自动化模块,按回车,增加动作。


> 第一个动作设定为等待1秒,这里改写为1,000毫秒,消息不填,这样就不会自动的弹出READ窗口;第2个动作设定为将挡位改到二,这时候只要选择信号读写属性,点击右键选择我们的can信号,为刚才的挡位信号点击确定,并将这个值改为2;第3个动作等待三秒,此时我们只要复制第一个动作,按下键,粘贴就可以把wait的动作粘贴过来,然后我们将1,000改为3,000,也就是等待3秒;第四个动作将挡位改为0,这时候只要将gear=2复制到wait下面粘贴,并且把2改为0;最后一个动作再等待一秒,我们只需要将wait第一个wait复制到最后的动作粘贴。这样就实现了一个从挡位0到2等待3秒钟到0的过程。随后我们按F9来运行程序,从图形中我们就可以清晰地看到挡位的变化过程,这个过程持续了3秒钟时间。



二、修改脉冲的宽度和高度

作为一个函数,不仅仅只是调用这么简单,还需要对运行的内容进行参数化。例如修改脉冲的宽度和高度。

 

> 这就需要回到我们这个模块里面增加高度和宽度这两个变量。选择变量的type,然后在变量列表中添加两个double类型的变量,分别命名为time和value,我们就简写为t和v,并把time默认值改为3,000,以及刚才的3秒value为2,随后我们点击属性页,再点击流程图的空白的地方,这样就选择了模块的属性。



> 下方有一个叫模块级参数一栏,在上面点击右键,添加参数组。我们首先将第一个参数组改名为short,并且在这个参数组上点右键,选择添加参数,会打开一个对话框,里面默认帮我们选择了刚才我们加的两个变量,我们直接点击确定,这样就增加了两个子参数,这两个参数值就可以作为模块级的参数任意的改写。



> 例如我们可以将short的时间改为1,000毫秒,并且将 v值改为3,随后我们可以添加第2个参数组,只需要在第一个参数组上点右键,复制所选,在空白处点击粘贴,我们就得到了粘贴后的参数组。我们将其改名为long,然后t改成5000,等待的时间就会长一点,并且把v改成5,至此我们创建了两组参数,分别为短延时和长延时。



> 随后我们切换到模块画面,可以看到模块的下方出现了两个参数化的入口,分别是短延时和长延时,随后我们就需要将我们的代码和参数进行关联,我们回到这个gear=2的这个动作,双击之后可以看到判断值是写死了2,我们点击选择本地变量,选择我们的value,这样就使得这个gear,成为了一个动态的值,那么这个名称我们可以随意的改写,比如说set gear,然后等待的时间,我们也可以将它关联到我们的本地变量,也就是这个t,那么这样就实现了刚才设定的两个变量和我们程序的绑定。



> 那么我们接下来选择我们的短延时,按下F9,程序就会以短延时的方式来运行,可以看一下他的延时时间就只有一秒,他的峰值是3,那么回到我们的模块列表选择长延时,按F9就可以看到我们的程序就是以长延时来跑,它的延时长度是5秒,并且最高值是5。那么这就是将一个模块参数化的方法。那么我们这里的参数也可以任意的列举,并且参数的数量是不限制的,这样就可以很好的实现在测试里面针对同样一份逻辑对不同的输入进行各种控制。



三、自动化模块的复用方法


> 首先将这个模块做成一个库,将模块改名为set gear,这样名称就变成了设置挡位,然后我们在模块列表里面点右键,新建一个子模块将其命名为caller,就是调用者,来调用我们当前的挡位设定模块。这个时候转到模块页面,我们可以在set gear上面点击右键,将其移动到代码库里面,选择之后我们到下方有一个静态代码库,把它展开就可以看到我们的set gear已经在静态代码库里面。静态代码库的好处就是它不会被任意的修改,也就是说我们所添加的代码库都可以在这里永久的保存,并且在上方的模块里可以任意的调用。


那么回到我们的caller这个函数的入口点,按下CTRL加回车,新建一个动作组,选择这个动作组,然后点击属性,到右侧找到这个链接子模块的功能,然后我们就可以链接我们刚才的set gear这个代码库,这样就实现了我们的动作组和库文件之间的关联。


> 作为一个库来讲,它本身的模块内部的两个变量,是不会自动被创建的,这就需要在caller的模块里面同样添加相同名称的变量,我们在此添加两个double类型的变量,把它改名为t和v,那么这两个值就可以任意修改,这样就同样可以实现库的参数化,比如说我们可以把它改短一点,改成500 然后v又是改成1,然后我们就运行当前的caller,那么可以看到这个gear跑完之后,它的值就变成了1,并且延时长度变成了500毫秒。



如果希望多次调用,我们只要简单的copy这个动作组ctrl c、ctrl v 然后再次按F9就可以了,

这样我们可以看到重复多次的调用,甚至可以在每一次再修改这个变量,让它的每一次的运行结果都不一样。

 

那么我们可以试着改一下,比如说我们就改选取的,把它改成3,000,然后值改成5,然后我们再F9,启动,这个时候就可以看到我们的新的程序以不同参数在运行。那么这样就实现了一个模块和一个完整的参数化。


作者: 我是同小星, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4003892.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 0
赞赏0

文章评论0条评论)

登录后参与讨论
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条