CANoe:环境变量vs系统变量的区别

问题描述:CANoe仿真中环境变量和系统变量如何区别。

问题背景:实现XVehicle仿真和CAN总线仿真的两个工程,分别使用了环境变量和系统变量,进行面板控制以及CAPL编程。用法上及其相似,都可绑定在panel控件中执行控制功能,也都可用在CAPL编程中监听、执行对应功能。那么两者的区别之处是什么呢?仅从仿真例子值看不出来,在书中的解释也非常模糊。因此有了这个疑问。

先上结论:功能上两者没有区别,都相当于全局变量,方便软件数据交互;优先使用系统变量

下面是原因:

1. 在V6.0之前的老版本CANoe中,采用环境变量传输软件仿真过程中的数据。

2. 从CANoe V6.0开始,采用系统变量作为独立于特定总线的用于仿真环境传输数据的方式。解耦总线类型与变量配置之间的关系。

在CANoe V6.0之后,不仅仿真CAN网络,还支持LIN、FlexRay等其他类型总线的仿真。

而环境变量一般通过DBC定义,但DBC一般仅用于CAN网络。

在非CAN网络的配置工程中,也需要因此添加额外的DBC专门用于存储环境变量。

为了变量的统一管理,引入系统变量,系统变量存储于CANoe配置工程(cfg文件)中,这意味着系统变量独立于任何一种总线及其数据库。

3. 从CANoe V12.0之后,不再支持环境变量。(自用的CAN12.0Demo版,环境变量还是支持的)

区别

在两者皆可使用的阶段,可以通过下面几点进行区分:

sysvar(优先使用)

envvar

支持总线类型

任意总线类型

仅CAN总线

仿真含义

节点内部参数(CAPL程序)

节点的I/O信号(面板或真实I/O)

定义位置

Environment窗口-SysVar

DBC

保存位置

CANoe配置工程(cfg文件)、独立的外部XML

dbc文件

数据类型

有数组,有32位无/有符号整型

没有数组,无32位无符号整型

读写函数

SysGetVariableInt/SysGetVariableFloat/

SysSetVariableInt/SysSetVariableFloat

putValue/getValue

关于更详细的说明,可以参考下面两篇文章,写的非常清晰:

1.来源,原因区别:Vector工具CANoe/CANalyzer中环境变量与系统变量的基本区别 - 知乎

2.使用上的区别:CANoe操作介绍系列 ———— 系统变量与环境变量_永远的菜鸡小詹的博客-CSDN博客_canoe系统变量和环境变量3. 深入理解CANoe中系统变量(System Variables)_汽车网络那些事儿-CSDN博客_canoe系统变量 

END

你可能感兴趣的:(CANoe,CANoe,系统变量,环境变量)