马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Vector CANoe 做总线仿真时,DBC 文件是报文与信号定义的唯一来源。本文以 CANoe 搭配 CANdb++ Editor 为例,从新建 DBC、添加网络节点、定义报文与信号、关联信号,到收发方向设置,最后回到 CANoe 用交互层做周期发送,完整走一遍 DBC 的诞生过程。
新建 DBC 文件
打开 CANdb++ Editor,新建文件时选择 CANotemplate(经典 CAN 模板)或 CANTemplate,视工程使用的总线类型而定。模板会预置网络节点、报文、信号的基本结构,省去手工配置帧格式的时间。
添加网络节点
在 Network nodes 上新建两个节点:ECU01 与 ECU02。节点在 DBC 里代表总线上的每个控制器,后续报文的收发关系就是靠节点之间建立关联来描述的。
定义报文
在 message 中新建两条报文:
- 0x123:由 ECU01 发出。
- 0x321:由 ECU02 发出。
命名时不要用中文,也不要以数字开头,这是 DBC 名称规则的硬约束,很多新手在这里直接保存失败。Type 选择 CANStandard,然后填入对应的 ID 与 DLC(数据长度)。
定义信号
在 Signals 中新建若干信号,逐条确认三项参数:
- Length:信号的位宽。
- ByteOrder:字节序。Intel 表示小端,Motorola 表示大端,同一条总线上不同厂商的信号习惯不同,需要按实际协议文档填写。
- ValueType:值的类型,例如无符号整数或有符号整数。
关联信号到报文
打开刚才建的报文,在信号列表中执行添加操作,把相关信号挂进去。一个报文可以承载多个信号,挂完后报文的 DLC 会按信号占用的位数重新计算,这里不用手动改。
设置发送与接收方向
分别切到两个节点的视图,给 ECU01 设一条报文为 TX、另一条为 RX:
- ECU01:0x123 为 TX,0x321 为 RX。
- ECU02:0x321 为 TX,0x123 为 RX。
这一步决定了总线上的收发拓扑,写反了在 CANoe 里就收不到对方数据,排查时先核对这个表。
在 CANoe 中导入并周期发送
把生成好的 DBC 导入 CANoe 工程,在交互层(Interaction Layer)的 Configuration 里找到对应报文的 SendType,设置为 Cyclic 即可让它按固定周期自动发送,不需要额外写 CAPL 脚本。这样 ECU01 与 ECU02 就能按 DBC 定义互相收发数据,在 trace 窗口里可以直接观察帧与信号的解析结果。
qidao123.com企服评测-应用市场 编辑提示 |