主要内容

先进的可以使用车辆网络工具箱与Arduino的沟通

这个例子展示了如何使用MATLAB支持包Arduino硬件以及车辆网络工具箱™读写数据库可以使用消息和信号。

所需的硬件

要运行这个示例,您将需要以下硬件:

  • VN1610向量可以接口装置

  • Arduino Mega2560董事会

  • se工作室can总线盾V2

硬件设置

山se工作室can总线盾V2 Arduino Mega2560板上。正确使用一个自定义有线连接终止CANH CANL别针的矢量设备Arduino可以盾牌。

这个例子演示了之间的双向通信Arduino Mega2560董事会和向量VN1610设备。

创建可以通道

创建一个可以使用的通道连接到VN1610设备canChannel从车辆网络工具箱函数。

ch1 = canChannel (“向量”,“VN1610 1”1);

可以创建一个连接通道与Arduino Mega2560板使用canChannelArduino MATLAB支持包的硬件。

arduinoObj = arduino (“COM4为”,“Mega2560”,“库”,“可以”,“F”,“真正的”);ch2 = canChannel (arduinoObj,“MCP2515”,“D9”,“D3”);

的数据库文件,demoVNT_CANdbFiles.dbc,将被用来定义和解码消息使用canDatabase从车辆网络工具箱函数。创建句柄可以数据库文件并将其附加到通道。

db = canDatabase (“demoVNT_CANdbFiles.dbc”);ch1。数据库=数据库;ch2。数据库=数据库;

创建可以消息

创建消息,可以定义的数据库文件,使用canMessage从车辆网络工具箱函数。

味精= canMessage (db,“EngineMsg”);

传输可以消息从向量从Arduino硬件设备和阅读

传输可以从向量VN1610信息设备使用传输从车辆网络工具箱函数。你必须启动通道使用开始函数从车辆网络工具箱之前发送的消息。

开始(ch1);msg.Signals。EngineRPM = 2000;传输(ch1、味精);

读的时间表包含所有可以从通道帧与Arduino兆2560板使用函数。

arduinoRx =阅读(ch2)
arduinoRx =1×8的时间表时间ID扩展名称数据长度误差信号远程________________________ ___ ________ _________________ ___________ ______ _______专攻14 - 100年7月- 2020年17:07:15.403假{‘EngineMsg} {1×8 uint8} 8 {1×1 struct}假假
arduinoRx.Signals {1} .EngineRPM
ans = 2000

现在,您已经成功建立节点之间的通信。

写可以消息从Arduino硬件设备和接收从矢量

现在新值写入可以通过Arduino消息对象并传递它的硬件。写可以从Arduino大型消息2560板使用函数。

msg.Signals。EngineRPM = 500;写(ch2,味精)

收到可以从VN1610帧矢量硬件使用收到从车辆网络工具箱函数。您必须指定的值“OutputFormat”时间表的当使用收到函数最优性能和代表性可以在MATLAB的消息。

vectorRx =接收(ch1 2“OutputFormat”,“时间表”)
vectorRx =2×8的时间表时间ID扩展名称数据长度误差信号远程_______ ___ ________ _________________ ___________ ______ _______专攻0.073982秒100假{‘EngineMsg} {1×8 uint8} 8 {1×1 struct}假假0.29798秒100假{‘EngineMsg} {1×8 uint8} 8 {1×1 struct}假假
vectorRx.Signals {1} .EngineRPM
ans = 2000
vectorRx.Signals {2} .EngineRPM
ans = 500

消息传播的车辆网络工具箱,可在接收缓冲区,直到收到为止。因此你看到第一个传播价值信号{1}。你已经收到了消息传播由Arduino硬件信号{2}

使用车辆网络工具箱可以提取信号从接收到的时间表。

canSignalTimetable (vectorRx)
ans =2×2的时间表0.073982秒时间VehicleSpeed EngineRPM _______ _______ ____ 0 2000 0.29798秒0 500

有一个区别时间输出的时间表从车辆为Arduino硬件网络工具箱和MATLAB支持包。的时间输出从MATLAB支持包Arduino硬件datetime而绝对时间时间车辆网络工具箱的输出的相对时间大多数VNT硬件驱动程序是建立在相对时间。要获取绝对时间,使用InitialTimestamp的属性ch1

ch1.InitialTimestamp
ans =datetime14 - 7 - 2020 17:07:15

看表的绝对时间,添加InitialTimestamp时间列的vectorRx时间表。

vectorRx。时间= vectorRx.Time + ch1.InitialTimestamp
vectorRx =2×8的时间表时间ID扩展名称数据长度误差信号远程____________________ ___ ________ _________________ ___________ ______ _______专攻14 - 100年7月- 2020年17:07:15假{‘EngineMsg} {1×8 uint8} 8 {1×1 struct}假假14 - 100年7月- 2020年17:07:15假{‘EngineMsg} {1×8 uint8} 8 {1×1 struct}假假

清理

当完成时,清晰的连接硬件。

清晰的db;清晰的味精;清晰的arduinoRx;清晰的vectorRx;清晰的ch1;清晰的ch2;清晰的arduinoObj;
Baidu
map