dbc文件编写及在simulink中CAN pack、CAN unPack 模块的运用 |
您所在的位置:网站首页 › simulink打开没有菜单栏 › dbc文件编写及在simulink中CAN pack、CAN unPack 模块的运用 |
一、DBC文件
1. 1 DBC文件描述
DBC文件是一种用于描述CAN总线上的信号和消息的格式。它被广泛应用于汽车、航空航天、工业自动化等领域。DBC文件定义了总线上的数据如何传输、信号如何解析以及信号的结构和内容。 DBC文件描述了在CAN网络上有哪些报文信息,这些报文又携带了哪些信号信息,报文从哪个网络节点发出的,又是哪个节点接收的。在下面讲到的CANdb++ DBC文件编写中,我们可以清晰的对这些信息进行编辑。这些信息通常由开发所需的技术文档或协议规定,对于复杂CAN网络数据通信,DBC文件一般根据CAN通信矩阵来进行定义。 1.2 CAN通信矩阵我们知道,CAN总线(ISO11898)标准只规定了物理层和数据链路层,至于应用层需要用户自定义。 CAN通信物理层的形式主要分为开环总线和闭环总线。其中开环总线用在低速通信上,适用于远距离通讯。闭环总线用在高速通信上,适用于近距离通信。物理层通讯网络由硬件接受设备和传输介质组成,主要包括Host、CAN控制器和CAN收发器以及传输电平信号的双绞线。 数据链路层规定了CAN通信机制以及CAN通信帧的种类和结构。包括CAN协议所规定的多主机通信、报文优先级判定的仲裁机制、寻址机制。通信帧则分为5种。数据帧、远程帧、错误帧、过载帧、帧间隔。CAN通信矩阵便是通过这些通信帧中预留的空白段,定义想要传输信息的ID、数据。 不同的应用领域使用不同的应用层标准,这通常是根据所设计的零部件功能决定的。 CAN通信矩阵文档定义的字段包括但不限于以下内容: 信号名称:一般是以发送节点的名字开头,“_”后面是具体指代的内容。如BMS_GeneralStatus。 信号长度:该信号的长度,单位是bit,位。 精度/偏移量:描述信号值如何转变成信号物理值。比如精度是2,偏移量是5,那么信号的真实物理值 = 信号值 * 2 + 5。 物理值范围:经过物理值转换后的最大最小值。 一般主机厂会给零部件供应商提供完整的CAN通讯矩阵,在做CAN通信相关控制软件开发时,则依据CAN通信矩阵编写DBC文件。 在DBC文件中,我们常需要定义这些字段信息: 信号名称(Signal Name):一般是以发送节点的名字开头,“_”后面是具体指代的内容。 信号长度(Bit Length):该信号的长度,单位是bit。 字节顺序(Byte Order):有Intel和Motorola两种格式。 起始位:(start_bit):这个范围一般是0-64,表示siganl在64bit里面最低有效位,有时候的起始位也表示在起始字节里面的最低有效位。 起始字节(start_byte):signal的最低有效位所在的字节。 数据类型(value Type):可选Signed、Unsigned、Float、Double类型。 二、 DBC文件编写我们使用 CANdb++工具来创建DBC文件。 2.1 CANdb++下载安装1. 首先打开vector的官方网站 ,版本CANdb++ Admin.J1939 3.0 SP27下载链接: https://www.vector.com/cn/zh/download/?tx_vectorproducts_productdownloaddetail[download]=18883&tx_vectorproducts_productdownloaddetail[action]=show&tx_vectorproducts_productdownloaddetail[controller]=Productdownload&cHash=e255ee95d4bd75774f940696f31a4d89 2. 安装后打开时提示缺少文件Cdbstat.dll https://download.csdn.net/download/weixin_40531919/88642337 进行下载,下载后放在C:\Windows\SysWOW64文件夹下即可正常使用。 2.2 创建DBC文件1. 打开CANdb++,在菜单栏File - Create Database新建一个DBC文件。 2. 选择CAN模板并保存文件。 3. 新建一个名为test的dbc文件,界面如下所示,接下来定义CAN报文及信号。 图中 Networks代表当前的CAN网络结构,由ECUs、Environment variables、Network nodes、Messages和Signals组成; 电子控制单元(ECU)可由多个构成,每个网络节点都有一个相应的控制单元,信息通过网络节点与其他控制单元交换; 环境变量(Environment variables)定义为网络节点的输入输出变量,在cand++数据模型中,环境变量被分配给控制单元; 网络节点(Network nodes)代表控制单元与CAN总线的接口。报文收发的起始与目的地。 消息(Messages)即报文,由不同的信号构成; 信号(Signals),根据CAN数据矩阵所定义的各种数据; 通常只需要定义Messages和Signals便可以进行报文的接收与发送。 4. 创建Signals,创建方法: 右键 --> New 5. 根据CAN数据矩阵定义创建Signals,更改信号名称,长度,字节顺序,数据类型。 6. 创建Messages,创建方法: 右键 --> New Messages依然来自于CAN数据矩阵,定义好名称,ID,DLC后,将该报文包含的信号添加进来。 7. 添加Signals到Messages,选中创建的Messages,依次点击new-Signals-Add,在弹出的选项框中选择要添加的信号,点击ok,添加完毕点击确定。 DBC文件建立好之后,我们可以在simulink中使用CANPack模块和CAN unPack模块加载dbc文件完成CAN报文信息的收发。 3.1 CANPack模块配置在simulink中键入CAN Pack,选择CAN Pack模块,进行模块配置。 数据输入方式(Data is input as)选择CANdb specified signals; CANdb file选择加载建好的.dbc文件,选中相应的Message list,然后对应Signal就会自动出现的下方列表中,同时在模块的外边也会出现这些Signal的In端口,在这些端口上直接插入要赋给Signal的值,如图所示。 使用CAN Unpack模块,可以把接收到的Message解析成具体的Signal,模块配置方式与上述CAN Pack模块相同,具体操作方法和配置成功后的效果如下: 添加几个常数作为信号输入,在解包模块显示结果如下: 1. CAN通信矩阵理解点击 https://blog.csdn.net/qq_39593577/article/details/123813598 2. Cdbstat.dll文件下载点击 https://download.csdn.net/download/weixin_40531919/88642337 3. 本文DBC示例文件下载点击 https://download.csdn.net/download/weixin_40531919/88640558 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |