目录
问题背景
Why:文件有什么用(.vmodule:模块描述文件) (Help文档)
模块类型1:CAPL-DLL
模块类型2:NodeLayer-DLL
模块类型3:C Library
What:简而言之
有什么:文件内容
HOW-操作:如何为节点添加DLL/vmodule文件
方式1:为单个Node添加
方式2:按通道添加
方式3: 通过DBC定义添加
When: 何时需要添加这个配置文件
今天新建一个CANoe简易工程的时候,没有直接在DBC里面添加Network Node,中间遗漏了添加Node的IL配置文件,导致报文未按照DBC中的定义正常发出。
后来,添加Node的IL配置文件时,发现能找的文件不是dll格式的(以前操作的时候,都是dll文件),而是.vmodule的后缀。搜了下各网站,发现对.vmodule文件的介绍都很少。
图1 节点添加DLL文件
但Help文档的介绍还比较清晰。因此在这里记录下,help文档中对.vmodule文件的介绍。
先放结论:主要是为了解耦CANoe工程运行的平台与工程的配置,使得可以在不同平台都能共用同一个工程配置。
下面是help文档中的详细描述。
中文翻译:
模块描述文件(*.vmodule)包含模块的文件路径和元数据。
支持以下模块类型:
· CAPL DLL :CAPL动态链接库
· Moduling Library: 建模库(节点层DLL)
· C Library: C库
在CANoe的旧版本中,模块的实现(例如CAPL DLL的路径)被直接输入到CANoe的配置文件。
又因为工程实现通常特定于一个平台,这使得在不同平台间交换配置非常困难
(例如:Windows 32位和 64位或Linux 64位)。
因此,从CANoe版本12.0 SP3开始,可以在配置中输入模块描述文件,而不是具体的实施。
这个模块描述文件可以包含不同平台的实现的文件路径。
从CANoe版本13.0开始,还可以指定与应用程序(CANoe)相关的版本。
这使得它可以在不同的版本中使用不同版本的DLL或者定义应用程序的最小版本。
也就是说,vmodule文件就是原本的dll文件,而且不止包含dll文件。
vmodule和dll都使用xml文件格式编写内容。
下图是CANoe Sample中附带的vmodule文件,也是简易工程中常用的IL文件:CANoeILNLVetctor.vmodule(C:\ProgramData\Vector\AddOn Packages\Vector AddOn\vModules)
可以发现文件中,除了路径、版本等的说明之外,主要功能是对IL层的相关函数做出说明。
有3种方法,可以分别通过Simulation和DBC文件添加。
前两种是通过Simulation Setup添加,其中
1.Simulation Setup中对相应节点点击右键,选中Configuration
2. 在第2个标签页Components中,点击ADD,添加所需要的文件
添加完成后,节点的配置显示如下(网络显示为当前网络名,且不可remove?):
如果同一通道中的所有节点,使用相同的vmodule文件,那么可以使用此方法统一添加。
如图,在通道节点上右键选择Assign Module to all Network Nodes,选择所需文件即可。
使用此方法添加完成后,点击单个节点configuration如下:
如果DBC文件:
图2 基于IL新建DBC
图3 DBC中定义完善Network Node与Message Signal的收发关系
图4 Node Synchronization
那么node节点不需要再通过上述两种方式添加IL配置,查看配置,可以发现已经具备了IL配置。
这里所使用的配置文件是IL文件,IL文件是用于定义message、signal的发送方式的。
也就是说,如果需要使用DBC中所定义的信号发送方式来进行仿真或测试,那么就需要添加这个配置文件,
而如果不需要使用DBC中的定义,只是依靠手动发送,比如
则不添加这个配置,也不会影响报文的收发。
END