主要内容

开始可以在MATLAB通信

这个例子展示了如何使用可以渠道发送和接收消息。它使用MathWorks®虚拟通道连接在一个回路配置。

创建一个接收通道

创建一个可以通道使用canChannel接收消息通过指定供应商名称、设备名称、设备频道索引。

rxCh = canChannel (“MathWorks”,“虚拟1”2);

检查通道

使用得到命令来获取更详细的信息在所有频道属性和当前值。

get (rxCh)
ArbitrationBusSpeed: [] DataBusSpeed: [] ReceiveErrorCount: 0 TransmitErrorCount: 0 InitializationAccess: 1 InitialTimestamp: [0×0 datetime] SilentMode: 0 TransceiverState:“N / A”BusSpeed: 500000 NumOfSamples: [] SJW: [] TSEG1: [] TSEG2: [] BusStatus:“N / A”TransceiverName:“N / A”数据库:[]MessageReceivedFcn: [] MessageReceivedFcnCount: 1用户数据:[]FilterHistory:“标准ID过滤器:允许所有|扩展ID过滤器:允许所有的MessagesReceived: 0 MessagesTransmitted: 0运行:0设备:“虚拟1”DeviceChannelIndex: 2 DeviceSerialNumber: 0 DeviceVendor:“MathWorks”ProtocolMode:“可以”MessagesAvailable: 0

启动通道

使用开始命令设置通道网络。

开始(rxCh);

传递信息

函数的例子generateMsgs创建消息可以使用canMessage和传输使用传输在不同的周期。它生成交通CAN总线用于演示目的。

类型generateMsgs
函数generateMsgs () % generateMsgs创建和传输信息可以用于演示目的。% % generateMsgs定期传送多个可以在各种信息%定期利率变化的消息数据。% % 2008 - 2016版权MathWorks, Inc . %使用canMessage创建消息发送功能。%标识符,表示的标准或扩展类型,并给出数据%长度为每个消息。msgTx100 = canMessage(100,假的,0);msgTx200 = canMessage(200年,假,2);msgTx400 = canMessage(400年,假的,4);假msgTx600 = canMessage(600年,6);假msgTx800 = canMessage(800年,8);%创建一个可以传输通道。 txCh = canChannel('MathWorks', 'Virtual 1', 1); % Register each message on the channel at a specified periodic rate. transmitPeriodic(txCh, msgTx100, 'On', 0.500); transmitPeriodic(txCh, msgTx200, 'On', 0.250); transmitPeriodic(txCh, msgTx400, 'On', 0.125); transmitPeriodic(txCh, msgTx600, 'On', 0.050); transmitPeriodic(txCh, msgTx800, 'On', 0.025); % Start the CAN channel. start(txCh); % Run for several seconds incrementing the message data regularly. for ii = 1:50 % Increment the message data bytes. msgTx200.Data = msgTx200.Data + 1; msgTx400.Data = msgTx400.Data + 1; msgTx600.Data = msgTx600.Data + 1; msgTx800.Data = msgTx800.Data + 1; % Wait for a time period. pause(0.100); end % Stop the CAN channel. stop(txCh); end

运行generateMsgs函数传递信息的例子。

generateMsgs ();

接收消息

generateMsgs完成后,接收通道使用所有可用的信息收到函数。

rxMsg =接收(rxCh,正无穷,“OutputFormat”,“时间表”);

使用提取的前几行收到消息预览。

头(rxMsg)
时间ID扩展名称数据长度误差信号远程___________ ___ ________ __________ ___________________ ______ _______专攻0.31722秒100假{0×0字符}{1×0 uint8} 0 {0×0 struct}假假0.31723秒200假{0×0字符}{[0 0]}{0×0 struct} 2假假0.31723秒400假{0×0字符}{[0 0 0 0]}4 {0×0 struct}假假0.31723秒600假{0×0字符}{[0 0 0 0 0 0]}6 {0×0 struct}假假0.31723秒800假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.34689秒800假{0×0字符}{[1 1 1 1 1 1 1 1]}8 {0×0 struct}假假0.37728秒600假{0×0字符}{[1 1 1 1 1 1]}6 {0×0 struct}假假0.37729秒800假{0×0字符}{[1 1 1 1 1 1 1 1]}8 {0×0 struct}假假

停止通道

使用停止命令设置通道离线。

停止(rxCh);

分析接收到的消息

MATLAB®提供了一个强大的环境进行分析可以消息。的情节命令可以创建一个散点图与消息的时间戳和标识符提供的概述在某些消息时发生在网络上。

情节(rxMsg。时间、rxMsg.ID“x”2047年)ylim([0])包含(“时间戳”)ylabel (“标识符”)