此示例演示如何使用CAN FD通道发送和接收CAN FD消息。它使用以环回配置连接的MathWorks虚拟CAN FD通道。
使用canFDChannelList
查看所有支持CAN FD的可用设备通道。金宝app
canFDChannelList
ans =2×6表供应商设备信道设备模型协议模式序列号uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
使用canFDChannel
使用指定的设备详细信息来创建用于发送和接收消息的CAN FD通道。
txCh = canFDChannel (“MathWorks”,“虚拟1”, 1)
txCh=具有属性的通道:设备信息设备供应商:“MathWorks”设备:“虚拟1”设备通道索引:1设备序列号:0协议模式:“CAN FD”状态信息运行:0消息可用:0消息接收:0消息发送:0初始化访问:1初始化时间戳:[0x0日期时间]FilterHistory:'标准ID筛选器:允许全部|扩展ID筛选器:允许全部'位定时信息总线状态:'N/A'SilentMode:0收发器名称:'N/A'收发器状态:'N/A'ReceiveErrorCount:0 TransmitterRoCount:0仲裁总线速度:[]数据总线速度:[]其他信息数据库:[]用户数据:[]
rxCh = canFDChannel (“MathWorks”,“虚拟1”, 2);
CAN FD通道上线前需要设置总线速度。仲裁和数据阶段速度都是使用configBusSpeed
.
configBusSpeed(txCh,500000,1000000);configBusSpeed(rxCh,500000,1000000);
使用canDatabase
打开包含CAN FD消息和信号定义的数据库文件。
db=canDatabase(“CANFDExample.dbc”)
/tmp/Bdoc21b_1757077_201157/tpc1faaadf/vnt-ex36915890/CANFDExample. db = Database with properties: Name: 'CANFDExample' Path: '/tmp/Bdoc21b_1757077_201157/tpc1faaadf/vnt-ex36915890/CANFDExample. db = Database with properties: Name: 'CANFDExample' Path: '分贝c' Nodes: {} NodeInfo: [0x0 struct] Messages: {'CANFDMessage'} MessageInfo: [1x1 struct] Attributes: {2x1 cell} AttributeInfo: [2x1 struct] UserData: []
将数据库直接连接到接收通道。来自dbc文件的定义被自动应用于解码传入的消息和信号。
rxCh。数据库=数据库;
使用开始
命令将频道设置为联机。
开始(txCh);开始(rxCh);
属性创建CAN FD消息canFDMessage
函数。
msg1 = canFDMessage(500, false, 12)
msg1=具有属性的消息:消息标识协议模式:“CAN FD”ID:500扩展名:0名称:“”数据详细信息时间戳:0数据:[0 0 0 0]信号:[]长度:12 DLC:9协议标志BRS:0 ESI:0错误:0其他信息数据库:[]用户数据:[]
msg2 = canFDMessage(1000, false, 24);msg3 = canFDMessage(1500, false, 64);
要启用CAN FD的比特率开关功能,请设置BRS
属性。
msg1.BRS=true;msg2.BRS=true;msg3.BRS=true;
CAN FD消息也可以使用数据库创建。数据库定义消息是CAN还是CAN FD以及BRS状态。
msg4 = canFDMessage (db,“CANFDMessage”)
msg4=具有属性的消息:消息标识协议模式:“CAN FD”ID:1扩展:0名称:“CAN FDMessage”数据详细信息时间戳:0数据:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…]信号:[]长度:48 DLC:14协议标志BRS:1 ESI:0错误:0其他信息数据库:[1x1 CAN.数据库]用户数据:[]
使用传输
从传输通道发送创建的消息。
传输(txCh、[msg1 msg2 msg3 msg4])
属性从接收通道接收消息接收
函数。CAN FD通道的默认返回类型是一个时间表,其中包含特定于接收到的CAN FD消息的信息。
rxMsg = receive(rxCh, Inf)
rxMsg=4×12时间表研究时间,扩展名称,扩展名称,扩展名称,扩展名称,扩展名称,扩展名称,扩展名称,时间,扩展名称,扩展名称,名称,词汇词汇词汇,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,名称,名称,名称,名称,名称,名称,名称,名称,名称,名称,名称,名称,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,名称,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,时间,名称,时间,时间,时间UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU}{'CAN FD'}{[0 0 0 0 0]}12 9{0x0结构}假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假false false true false 0.10718秒1 false{'CANFDMessage'}{'CAN FD'}{[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…]48 14{1x1结构}false false true false
使用停止
命令,使通道离线。
停止(txCh);停止(rxCh);
通过从工作区中清除DBC文件的变量来关闭对DBC文件的访问。
清晰的分贝