新功能发布 | TSMaster重大更新,一文了解信号映射操作流程

本文主要是介绍新功能发布 | TSMaster重大更新,一文了解信号映射操作流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

今天介绍TSMaster新功能—信号映射。这个功能在旧版本里,只能实现从CAN信号到系统变量的映射,软件更新以后可以支持系统变量反向映射到信号,甚至可以实现通过表达方式进行复杂的映射。

下面一起来看看信号映射功能具体的操作流程吧~

一、信号映射简介

Introduction to Signal Mapping /

映射就是CAN信号和系统变量的相互映射。

首先拖入一个dbc,这个dbc来自示例工程的数据库文件夹的第一个文件,随后用rbs引擎仿真一下engine节点,然后我们启动仿真,随即在trace窗口就可以看到仿真报文。

1、建立系统变量

> 如果希望建立一个系统变量来跟踪发动机转速信号,可以打开信号映射管理器。首先需要激活信号映射引擎,点击左上角,在数据库列表中输入engspeed,过滤出这个信号。

> 点击右键,自动创建信号的映射,这样系统首先就会创建一个同名的系统变量。

2、与CAN信号关联

> 打开图形窗口,将这个CAN信号和我们创建的系统变量同时拖入,就得到了两根曲线,设置一下Y轴的显示模式,然后再集体设置他们的显示范围,当前的映射类型是CAN信号到系统变量。

3、修改CAN信号

> 我们尝试修改发送的CAN信号,来观察系统变量的值会不会进行跟踪。打开总线仿真界面,首先找到发动机的转速,将其修改为1,000,那么系统变量也跟随到1,000;再修改为2,000,最后是3,000,可以看到图形窗口中的系统变量实时跟踪了CAN信号。

4、修改系统变量

> 接下来我们试一试反向映射,也就是修改系统变量,使发出的CAN信号来跟随。

> 打开信号映射管理器,选中刚才的映射条目,点击映射方向按钮,然后选择最后一个,也就是系统变量映射到CAN信号,点击确定。

> 为了验证这个功能,我们增加一个信号激励窗口,以对同名的系统变量产生激励。首先,添加这个发动机转速的系统变量到这个列表中,然后我们将其设置为正弦波激励,点击配置,将其幅值改为1,000,然后启动激励,随即我们可以看到发出的CAN信号,同样自动跟随了系统变量的变化。

二、正确使用表达式

Using Expressions Correctly/

我们如何使用表达式来映射具有数学关系的信号,甚至是带逻辑的信号呢?

例如我们可以构造一个信号:它等于发动机转速与发动机温度的乘积加123。

首先打开映射管理器,在空白处点击右键,添加系统变量,然后在选择变量的界面中再点击添加变量,将这个新变量设置为new,它的类型可以设置为double,然后我们选中这个新添的变量,点击确定。然后再在我们的列表中选中刚添加进来的这个信号,由于没有设置他的属性,因此这个信号暂时是无效的。

1、设置表达式映射

> 点击上方工具栏的按钮,会看到左侧的源信号变成了一个表格,可以在表格里编辑表格式,同时,表格中针对表达式的每一个自变量,分别关联其他的变量,那么自变量是以x来开头,后面跟数字来表示。例如我们可以设定x1表示发动机转速,x2表示发动机温度,那么发动机转速和温度的乘积加上123,表达式就可以写成x1*x2+123。

> 写好之后按回车,以确认表达式,随后需要点击表达式右侧的加减号来构造相同的自变量。在这里有x1和x2与表达式中的自变量进行对应。

> 接着,将x1与发动机转速的系统变量关联,点击右侧的箭头,选择系统变量,接着选中发动机转速的变量,点击确定。然后将x2与发动机温度的CAN信号关联,也是一样点击右侧的箭头,选择CAN信号。

> 接着选中发动机的温度,点击确定之后,我们就实现了表达式的设计,点击右上角的检查映射,就会提示映射合法。

2、实时信号曲线

> 接下来将这个变量添加到图形窗口一探究竟,可以看到,这个值固定是123,因为当前的发动机的温度是0,我们试着来到rbs窗口中,将温度改为5度、10度,以及20度,就可以看到经过表达式实时计算的信号曲线。

3、表达式映射的目标变量

> 回到rbs窗口,假设我们需要手动发送abs data这帧报文,并且让acceleration force 的值等于之前表达式的new这个变量的结果。那么首先可以取消这个报文的勾选,将其脱离rbs的引擎的掌控。

> 随后,我们打开一个报文发送窗口,添加abs data这帧报文,展开这帧报文,将 acceleration force的信号生成器设置为系统变量,点击配置,并将系统变量名称设置为new,点击应用。

> 随后我们启动信号生成器,然后再在图形窗口中添加这个CAN信号,然后我们要启动报文的发送,那么所发出的CAN信号的acceleration force的值就会等于我们的系统变量的值了。只不过这个值的范围的下限被-10000给限制,所以这个信号有了一些变形。

以上就是我们本章节为大家介绍的TSMaster的信号映射功能,让我么一起期待TSMaster更多的新功能。

这篇关于新功能发布 | TSMaster重大更新,一文了解信号映射操作流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409561

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :