色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CANoe使用常見問題匯總

汽車ECU開發 ? 來源:汽車ECU開發 ? 2024-04-22 12:28 ? 次閱讀

CANoe使用問題匯總。

1.如何將CAPL文件加密

使用CAPL Browser打開需要加密的CAPL文件*.can進行編譯,編譯通過后,點擊菜單欄File -> Save as Encrypted,將*.canencr文件保存到*.can文件相同的路徑中(*.canencr文件就是*.can文件的加密文件),將*.can文件從當前路徑移除,CANoe也可以正常運行。

d7cba8fa-004f-11ef-a297-92fbcf53809c.png

對*.cin文件進行加密與上述類似,用CAPL Browser打開*.cin文件進行編譯,編譯通過后,在相同路徑下另存為*.cinencr文件,移除*.cin文件即可。

2.CAN報文中未使用位的檢測

若想要檢查某個報文未使用位的值是否滿足要求,可用ChkStart_PayloadGapsObservation函數。若想要檢查某個節點中所有TX報文或者RX報文未使用位的值是否滿足要求,可使用ChkStart_PayloadGapsObservationTx/ChkStart_PayloadGapsObservationRx函數。關于函數的具體介紹請參考CANoe Help文檔。文檔以示例工程Demo_Check_Unused_Bit為例,通過調用函數ChkStart_PayloadGapsObservation來檢測CAN報文未使用位的值是否為0,若為0則測試通過,否則測試失敗。測試代碼(CAPL_Tester節點)示例如圖二所示:

includes
{
}
variables
{
  dword checkId;
}
void MainTest ()
{
  BGCheck_UnusedBits();
}


testcase BGCheck_UnusedBits()   // 報文的未使用位檢測
{
  checkId = ChkStart_PayloadGapsObservation(message_1,0); // 檢查報文的未使用位值是否為0,函數的第一個參數為需檢查報文的名稱,第二個參數為未使用位期望的數值
  TestAddCondition(checkId); // 添加檢測條件,若報文未使用位的數值不滿足要求,則會在報告中記錄下來
  TestWaitForTimeout(10000);  // 持續檢測10s
  TestRemoveCondition(checkId);// 移除檢測條件
}

運行CAPL_Tester測試模塊,在測試時間內通過按鍵‘a’發送一幀名為message_1(ID為0x123)的報文,該報文中未使用位bit15的值為0,未使用位值滿足要求,測試通過(報告如圖二所示)。

d7e4af6c-004f-11ef-a297-92fbcf53809c.png

3.如何安裝和使用CANoe MATLAB插件

首先需要檢查CANoe、插件MATLAB的版本兼容性,以及MATLAB與編譯器的版本兼容性,檢查方法可在CANoe的User Assistance找到:

搜索打開MATLAB Integration Package,之后點擊MATLAB Integration Package Version History查看。

同樣在MATLAB Integration Package頁面,點擊打開Compiler Configuration查看。

檢查完兼容性后,就是插件安裝了,在CANoe的安裝目錄下,Vector CANoe 17Installer Additional ComponentsMatlab,右擊使用管理員權限安裝。當在Simulink Library Browser看到Vector CANoe分類時,安裝已成功。

d7febcf4-004f-11ef-a297-92fbcf53809c.png

d81ced8c-004f-11ef-a297-92fbcf53809c.png

插件的使用可以查詢CANoe自帶的使用說明文檔,Using_MATLAB_with_CANoe.pdf。

4.使用CANoe比較兩個記錄文件的信號

關于如何使用Graphics窗口直觀地比較兩個不同的CAN記錄文件中的相同信號。可以按照下面提到的四個步驟進行:

1.打開CANoe:使用兩個CAN通道的模板來創建一個新的CANoe工程(CAN 500 kBaud 2ch)。

2.配置為Offline模式:在Measurement Setup窗口中右鍵單擊離線文件列表,打開Offline Mode Configuration對話框。跳轉到Channel mapping 并添加一個新的設置。配置Bus Type為CAN,Source Channel設置為1(或任何一個有所需信號的通道)以及Destination Channel設置為2(或其他除Source Channel以外的數字),然后點擊OK。

3.添加所需文件:在兩個通道上添加相同的DBC文件。在Measurement Setup窗口的離線文件列表中添加兩個記錄文件。對于其中一個記錄文件,選擇步驟2中創建的通道匹配設置。

3.查看圖形:在Measurement Setup窗口中打開Graphics窗口。添加兩個通道中的同一個信號,添加時請確保分別選擇了對應的通道。運行工程,觀察從兩個記錄文件中得出的兩個信號圖形。

d834e856-004f-11ef-a297-92fbcf53809c.png

5.如何為DoIP Tester定義特定TCP源端口

要為DoIP Tester發送的數據包定義特定的TCP源端口,請按照以下步驟操作:

進入CANoe Options并打開應用程序數據位置:

d846dd40-004f-11ef-a297-92fbcf53809c.png

然后關閉CANoe。應用程序數據文件夾包含一個名為DoIP.ini的文件。用文本編輯器打開該文件。在文件末尾添加以下部分,以設置特定的TCP端口:[Connection] ForceTesterTCPSendPort=[Port],然后保存。

d85f0ea6-004f-11ef-a297-92fbcf53809c.png

6.CAN TP 如何接收超過4095字節的數據?

CAN TP中默認的接收緩存是4095字節,可以使用CAPL 函數CanTpSetMaximumReceiveLength 來增加TP層接收緩存區的大小,如下,目前CANoe 支持最大16MB的數據傳輸。

on start
{
  dword maxLength =8000;
  CanTpSetMaximumReceiveLength(gRxHandle,maxLength); // gRxHandle: 用于建立CAN TP層連接的句柄
}
7.如何在CAPL中訪問信號和系統變量的Value Table條目

信號和系統變量可以具有描述特定值的Value Table。這些Value Description也可以在CAPL中訪問,以獲得更好的可讀性/對實際CAPL代碼的解釋。引用Value Description(而不是實際值)和查找特定值的Value Description都是可行的。

在Switch/Case中引用Value Description(而不是實際值)的示例:

Switch(@SystemVariable)
{
case (sysvar:
// do whatever you want to do"
}

8.關于CANoe測試報告問題

1>.如何設置測試報告格式

在CANoe Options | General | Test Feature Set | Reporting File Format處選擇測試報告格式。

2>測試報告格式轉換

Test Report Viewer format轉換為PDF格式使用工具Vector CANoe Test Report Viewer打開*.vtestreport文件,點擊File | Export | Export PDF,可以將測試報告轉為PDF格式

3>Test Report Viewer format轉換為XML格式

使用工具Vector CANoe Test Report Viewer打開*.vtestreport文件,點擊File | Export | Export XML,可以將測試報告轉為XML格式。

9.Ethernet/CAN 網關

CAPL實現ETH轉CAN,網關先收到一幀UDP報文,以表示啟動。這幀報文可以由Ethernet IG 來進行仿真。這幀報文以兩個CAN報文的組成形式,從網關轉發出去。每幀CAN報文至少包含14個字節,內容包括CAN-Id, -dlc, -rtr 以及data bytes。

variables
{
  //
  // Constants
  //


  const WORD kPort         = 23; // UDP port number for instance
  const WORD kRxBufferSize = 1500;
  const WORD kTxBufferSize = 1500;


  //
  // Structure of UDP payload
  //


  _align(1) struct CANData
  {
    BYTE  dlc;
    BYTE  flags; // Bit 7 - Frame type (0 = standard, 1 = extended)
                 // Bit 6 - RTR bit ('1' = RTR bit is set)
    DWORD canId;
    BYTE  canData[8];
  };


  //
  // Global variables
  //


  UdpSocket gSocket;
  CHAR      gRxBuffer[kRxBufferSize];
  CHAR      gTxBuffer[kTxBufferSize];
  DWORD     gOwnAddress;
  DWORD     gModuleAddress= 0xFFFFFFFF; // default is the broadcast address 255.255.255.255  and the TCP/IP stack will build the Network broadcast address
}


//
// Measurement start handler
//


on start
{
  DWORD addresses[1];


  // get own IP address of the Windows TCP/IP stack
  IpGetAdapterAddress( 1, addresses, elcount(addresses) );
  gOwnAddress = addresses[0];


  // open UDP socket
  gSocket = UdpSocket::Open( 0, kPort ); 


  if (gSocket.GetLastSocketError() != 0)
  {
    write( "<%BASE_FILE_NAME%> Open UDP socket failed, result %d. Measurement stopped!", gSocket.GetLastSocketError() );
    stop();
    return;
  }


  if (gSocket.ReceiveFrom( gRxBuffer, elcount(gRxBuffer) ) != 0)
  {
    if (gSocket.GetLastSocketError() != 997) // ignore pending IO operation
    {
      write( "<%BASE_FILE_NAME%> UDPReceive failed, result %d. Measurement stopped!", gSocket.GetLastSocketError() );
      stop();
      return;
    }
  }


}


//
// On receive UDP data handler using CAPL Callback 
//


void OnUdpReceiveFrom( dword socket, long result, dword address, dword port, char buffer[], dword size)
{
  DWORD          dataOffset;
  struct CANData canData;
  message *      canMsg;


  if (address == gOwnAddress) return; // ignore own broadcasts


  //
  // Store IP address of module to reach
  //


  if (gModuleAddress == 0)
  {
    gModuleAddress = address;
  }


  //
  // Handle received data
  //


  dataOffset = 0;
  while (dataOffset + __size_of(struct CANData) <= size)
  {
    memcpy( canData, buffer, dataOffset );


    canMsg.id      = (canData.canId & 0x1FFFFFFF) | ((canData.flags & 0x80) ? 0x80000000 : 0);
    canMsg.dlc     = canData.dlc & 0x0f;
    canMsg.rtr     = ((canData.flags & 0x40) ? 1 : 0);
    canMsg.byte(0) = canData.canData[0];
    canMsg.byte(1) = canData.canData[1];
    canMsg.byte(2) = canData.canData[2];
    canMsg.byte(3) = canData.canData[3];
    canMsg.byte(4) = canData.canData[4];
    canMsg.byte(5) = canData.canData[5];
    canMsg.byte(6) = canData.canData[6];
    canMsg.byte(7) = canData.canData[7];


    output( canMsg );


    dataOffset += __size_of(struct CANData);
  }




  //
  // Receive more data
  //
  if (gSocket.ReceiveFrom( gRxBuffer, elcount(gRxBuffer) ) != 0)
  {
    if (gSocket.GetLastSocketError() != 997) // ignore pending IO operation
    {
      write( "<%BASE_FILE_NAME%> UDPReceive failed, result %d. Measurement stopped!", gSocket.GetLastSocketError() );
      stop();
      return;
    }
  }
}


//
// Handler for CAN messages
//


on message *
{
  int i;
  struct CANData canData;


  if ((this.dir == RX) && (gModuleAddress != 0))
  {
    canData.canId = this.id & 0x1FFFFFFF;
    canData.flags = ((this.id & 0x80000000) ? 0x80 : 0x00) | ((this.rtr == 1) ? 0x40 : 0x00);
    canData.dlc   = this.dlc;


    for( i = 0; i < 8; i++ )
    {
      canData.canData[i] = (i < this.dlc) ? this.byte(i) : 0;
    }


    memcpy( gTxBuffer, canData );


    gSocket.SendTo( gModuleAddress, kPort, gTxBuffer, __size_of(struct CANData) );
  }
  else if (gModuleAddress == 0)
  {
    write( "<%BASE_FILE_NAME%> Tx not possible. Module to reach must send packets first." ); //Server simulation
  }
}
審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2977

    瀏覽量

    230567
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49150
  • CANoe
    +關注

    關注

    4

    文章

    66

    瀏覽量

    8665

原文標題:CANoe使用問題匯總

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PC電源常見問題匯總

    PC電源常見問題匯總,分享!
    發表于 04-29 16:03

    飛思卡爾 KL 系列常見問題和解答匯總

    KL 系列常見問題和解答匯總篇KL 系列 FAQ (十)KL 系列 FAQ (九)KL 系列 FAQ (八)KL 系列 FAQ (七)KL 系列 FAQ (六)KL 系列 FAQ (五)KL 系列 FAQ (四)KL 系列 FAQ (三)KL 系列 FAQ (二)KL 系
    發表于 01-22 15:42

    C語言常見問題

    C語言常見問題匯總大集合
    發表于 05-10 21:37

    Window7遠程桌面連接Ubuntu14.04常見問題

    Window7遠程桌面連接Ubuntu14.04常見問題匯總
    發表于 11-09 08:01

    三菱PLC之間的N:N無線通訊的常見問題匯總

    三菱PLC之間的N:N無線通訊的常見問題匯總如下:【需求描述①:佛山陳工】 我有三個FX3U,一個主站,兩個從站。要實現無線N:N通訊,應該怎么下單,也就是說要買幾個發射器,幾個接受器,可以告訴我型號嗎? 【達泰技術:無線PLC】 選擇三菱PLC專用無線數據終端DTD43
    發表于 07-02 07:08

    C語言常見問題合集匯總

    C語言常見問題集,學習C語言的同學可以下載。
    發表于 03-29 10:07

    Keil編譯常見問題

    吳鑒鷹總結的Keil 編譯常見問題,吳鑒鷹總結的Keil 編譯常見問題
    發表于 07-22 15:31 ?10次下載

    SIM900A常見問題匯總,奉上解決方案

    SIM900A常見問題匯總,奉上SIM900A問題的解決辦法。
    發表于 11-06 10:46 ?1.1w次閱讀

    固德威逆變器wifi設置_方法步驟教程_常見問題匯總

    本文主要介紹的是固德威逆變器wifi設置的步驟教程以及常見問題問題匯總,具體的跟隨小編一起來了解下。
    的頭像 發表于 05-15 16:03 ?5.7w次閱讀
    固德威逆變器wifi設置_方法步驟教程_<b class='flag-5'>常見問題</b><b class='flag-5'>匯總</b>

    智慧視頻監控常見問題及解決方法匯總

    智慧視頻監控常見問題及解決方法匯總 1、錄像機連接攝像機經常掉線 可能有三個原因:1.攝像機供電不穩定,比如常在夜間掉線 2.網絡線路問題,交換機交換性能不足 3.攝像機故障
    的頭像 發表于 05-27 11:30 ?1.5w次閱讀

    MES軟件的作用及常見問題匯總

    本文主要介紹了MES軟件的作用及常見問題匯總
    發表于 06-04 08:00 ?4次下載

    灰塵網絡常見問題

    灰塵網絡常見問題
    發表于 04-28 15:08 ?8次下載
    灰塵網絡<b class='flag-5'>常見問題</b>

    2.4G頻段的SI24R2E無線單發芯片技術問答,常見問題進行匯總解答

    針對2.4G頻段的無線單發芯片——SI24R2E,在開發過程中會遇到的常見問題進行匯總解答。
    的頭像 發表于 10-27 14:06 ?928次閱讀

    TSMaster診斷功能之常見問題匯總

    常見問題匯總以上幾個章節給小伙伴們介紹了TSMaster診斷功能的一些基礎配置問題以及操作步驟詳解,那我相信大家在使用TSMaster軟件的過程中還會遇到許許多多的問題,下面我就挑幾個熱度比較
    的頭像 發表于 07-22 14:48 ?1921次閱讀
    TSMaster診斷功能之<b class='flag-5'>常見問題</b><b class='flag-5'>匯總</b>

    OpenSSL安裝常見問題

    OpenSSL安裝常見問題
    的頭像 發表于 07-07 11:17 ?910次閱讀
    OpenSSL安裝<b class='flag-5'>常見問題</b>
    主站蜘蛛池模板: 久久国产精品自线拍免费| 国产精品涩涩涩视频网站| 国产成人精品免费视频下载| 欧美尤物射精集锦| a级男女性高爱潮高清试看| 久久精品免费电影| 2017日日干| 日本久久精品免视看国产成人 | 国产在线观看免费观看| 亚洲精品视频区| 啦啦啦影院视频在线看高清...| avove主播| 亚洲一区自拍高清亚洲精品| 免费韩国伦理2017最新| 国产福利一区二区精品| 亚洲最大成人| 人妖和美女玩| 精品国产露脸久久AV麻豆| 97免费视频在线观看| 日本一卡二卡三卡四卡无卡免费播放| 久久大综合| 国产一区二区高清| 国产产乱码一二三区别免费| 99久久久免费精品国产| 午夜亚洲WWW湿好大| 老师系列高H文| 国产成人刺激视频在线观看| CHESENGAY痞帅警察GV| 亚洲九九精品| 午夜AV内射一区二区三区红桃视| 人人模人人干| 欧美午夜精品一区区电影| 免费国产久久啪在线| 国产一区二区三区在线看片| 国产成人精品免费视频下载| 成人网络电视破解版| 中文文字幕文字幕亚洲色| 天天狠狠色噜噜| 久久视频精品38线视频在线观看| 成人国产精品免费网站| a视频免费在线观看|