基 础 篇
第1章 车载网络概述 3
1.1 车载网络起源 3
1.2 CAN总线概述 4
1.2.1 CAN总线简史 4
1.2.2 CAN总线特点 4
1.2.3 CAN总线主要应用 5
1.2.4 CAN-FD协议简介 6
1.3 LIN总线概述 6
1.3.1 LIN总线简史 6
1.3.2 LIN总线特点 7
1.3.3 LIN总线主要应用 7
1.4 目前典型车载网络架构 7
1.4.1 紧凑型 8
1.4.2 豪华型 8
1.5 主要的车载网络 9
1.6 车载网络发展趋势 11
第2章 CANoe概述 12
2.1 关于Vector公司 12
2.2 CANoe简介 13
2.3 CANoe在ECU项目开发中的作用 13
2.3.1 阶段:全仿真网络系统 13
2.3.2 第二阶段:真实节点和部分仿真节点共存 14
2.3.3 第三阶段:全真实节点的网络系统 14
2.4 CANoe不同版本的区别 15
2.4.1 CANoe pex版本 15
2.4.2 CANoe run版本 15
2.4.3 CANoe full版本 16
2.4.4 关于Demo版本CANoe 16
2.4.5 关于64bit版本CANoe 17
2.5 CANoe安装 17
2.5.1 系统配置要求 17
2.5.2 常见硬件接口卡 18
2.5.3 安装过程 18
2.6 CANoe常见的总线授权选项 23
2.7 CANoe的授权管理 24
2.8 CANoe的硬件配置 25
2.8.1 硬件信息查看 25
2.8.2 硬件配置 27
2.8.3 通道数量设置 28
第3章 CANoe开发环境 29
3.1 CANoe主界面 29
3.2 CANoe选项卡和功能区 30
3.2.1 File菜单 30
3.2.2 Home功能区 31
3.2.3 Analysis功能区 32
3.2.4 Simulation功能区 33
3.2.5 Test功能区 34
3.2.6 Diagnostics功能区 35
3.2.7 Environment功能区 36
3.2.8 Hardware功能区 37
3.2.9 Tools功能区 38
3.2.10 Layout功能区 39
3.3 常用仿真窗口 40
3.3.1 Simulation Setup窗口 40
3.3.2 Start Values窗口 40
3.4 常见诊断窗口 41
3.4.1 Diagnostic Console窗口 41
3.4.2 Diagnostic Session Control窗口 42
3.4.3 Fault Memory窗口 42
3.5 常见测试窗口 43
3.5.1 Test Unit窗口 43
3.5.2 Test Module窗口 45
第4章 CANoe总线测量和分析 46
4.1 CANoe总线测量和分析概述 46
4.2 Measurement Setup窗口 47
4.2.1 主要功能 48
4.2.2 插入分析窗口或数据记录模块 48
4.2.3 插入功能模块 49
4.3 常见分析窗口 49
4.3.1 Write窗口 49
4.3.2 Trace窗口 51
4.3.3 Graphic窗口 52
4.3.4 State Tracker窗口 52
4.3.5 Data窗口 53
4.3.6 Statistics窗口 53
4.3.7 Scope窗口 54
4.3.8 Video窗口 55
4.3.9 GPS窗口 55
4.4 测量数据记录设置及处理 56
4.4.1 Logging文件设置 56
4.4.2 Logging文件格式 57
4.4.3 Filter设置 57
4.4.4 Trigger设置 58
4.4.5 Trace导入和导出 60
4.4.6 Trace查看和编辑 63
4.4.7 Trace回放 64
4.5 离线分析 67
4.6 发生器模块 68
4.6.1 CAN IG模块 68
4.6.2 IG模块 69
第5章 CANoe仿真工程配置及运行 71
5.1 配置仿真工程 71
5.1.1 物理通道分配问题 71
5.1.2 波特率设置问题 71
5.1.3 授权或相关选项缺失问题 74
5.1.4 虚拟通道设置问题 75
5.1.5 硬件连接问题 76
5.2 不同版本工程文件之间的兼容性处理 76
5.3 仿真工程个性化设置 78
5.3.1 添加/修改的Desktop设置 78
5.3.2 保存不同的工程配置文件 78
5.4 仿真工程文件夹的命名习惯 79
入 门 篇
第6章 车载总线仿真基础 83
6.1 ECU硬件/软件架构介绍 83
6.1.1 硬件架构 83
6.1.2 软件架构 84
6.2 开发仿真工程的必要性 85
6.2.1 软件开发的V模型 86
6.2.2 仿真工程的必要性 86
6.3 CANoe仿真工程架构 87
第7章 开发个CANoe仿真工程 88
7.1 创建个仿真工程 88
7.2 添加CAN数据库 89
7.2.1 新建CAN数据库 89
7.2.2 添加报文和信号 89
7.2.3 添加数据库到工程中 91
7.3 定义系统变量 91
7.4 创建仿真面板 92
7.4.1 创建开关面板 92
7.4.2 创建指示灯面板 93
7.5 创建网络节点 93
7.5.1 添加网络节点 93
7.5.2 添加Hello World代码 95
7.5.3 添加Switch代码 95
7.5.4 添加Light代码 96
7.6 工程运行测试 96
7.7 查看Trace信息 97
第8章 总线数据库设计 98
8.1 总线数据库概述 98
8.2 CANdb Editor 98
8.2.1 File菜单 99
8.2.2 工具栏 100
8.3 在X-Vehicle项目中创建CAN总线数据库 100
8.3.1 基于模板新建总线数据库 100
8.3.2 Networks 101
8.3.3 ECUs 102
8.3.4 Network Nodes 102
8.3.5 Messages 103
8.3.6 Signals 105
8.3.7 Environment Variable 109
8.3.8 Attribute 110
8.3.9 Value Table 113
8.3.10 Byte Order 114
8.4 导入数据库文件 116
8.5 LIN总线数据库编辑器LDF Explorer 117
第9章 Panel设计 118
9.1 Panel概述 118
9.2 Panel设计环境介绍 119
9.2.1 File菜单 119
9.2.2 Home功能区 120
9.2.3 Panel功能区 121
9.2.4 Properties功能区 122
9.2.5 Toolbox窗口 122
9.2.6 Symbol Explorer窗口 122
9.2.7 Working Area窗口 123
9.2.8 Properties窗口 124
9.2.9 Output Window 124
9.3 控件介绍 125
9.3.1 Switch/Indicator控件 126
9.3.2 LED Control控件 127
9.3.3 Input/Output Box控件 128
9.3.4 Hex/Text Editor控件 130
9.3.5 Analog Gauge控件 131
9.3.6 Meter控件 132
9.4 多帧图片简介 133
9.5 系统变量简介 134
9.6 在X-Vehicle项目中创建仿真Panel 136
9.6.1 添加Control面板 136
9.6.2 添加Display面板 140
9.6.3 创建一个Desktop 143
第10章 CAPL语言设计 145
10.1 CAPL概述 145
10.1.1 CAPL主要用途 145
10.1.2 CAPL的特点 146
10.2 CAPL开发环境—— CAPL浏览器简介 146
10.2.1 File菜单 147
10.2.2 功能区 147
10.2.3 导航区和编辑区 150
10.2.4 函数浏览区 150
10.2.5 对象浏览区 150
10.2.6 输出窗口 151
10.3 CAPL基础——数据类型 151
10.3.1 变量的声明与定义 152
10.3.2 简单变量 153
10.3.3 复合类型 154
10.3.4 特殊类型 155
10.4 CAPL基础——常见运算 157
10.5 CAPL基础——流程控制 158
10.5.1 if条件语句 158
10.5.2 switch语句 158
10.5.3 while循环语句 159
10.5.4 for循环语句 160
10.5.5 break语句 160
10.5.6 return语句 161
10.6 CAPL基础——程序结构 161
10.6.1 头文件 161
10.6.2 全局变量声明 162
10.6.3 事件处理 162
10.6.4 自定义函数 169
10.7 CAPL基础——常用函数库简介 170
10.7.1 通用函数 170
10.7.2 计算函数 172
10.7.3 字符串函数 172
10.7.4 CAN总线函数 173
10.7.5 LIN总线函数 174
10.7.6 诊断函数 174
10.8 CAPL基础——总线数据库的使用 175
10.9 CAPL基础——变量和信号的访问 175
10.9.1 CAPL中访问信号 175
10.9.2 CAPL中访问系统变量 176
10.9.3 CAPL中访问环境变量 176
10.10 在X-Vehicle项目中添加CAPL程序 177
10.10.1 创建节点Engine的CAPL程序 178
10.10.2 创建节点Door的CAPL程序 178
10.10.3 创建节点Display的CAPL程序 180
10.11 工程运行测试 181
第11章 仿真工程编译和调试 182
11.1 CAPL程序编译 182
11.1.1 条件编译 182
11.1.2 编译CAPL程序 183
11.2 CAPL程序的Debug功能调试 184
11.2.1 设置Debug Mode 184
11.2.2 Debugger工具栏 185
11.2.3 设置调试断点 185
11.2.4 变量查看 186
11.2.5 断点查看 187
11.3 使用Write窗口调试CAPL程序 187
第12章 仿真工程开发入门—— CAN仿真 190
12.1 总线仿真工程概述 190
12.2 总线仿真工程开发流程及策略 190
12.2.1 开发流程 190
12.2.2 仿真工程开发策略 191
12.3 工程实例简介 192
12.3.1 网络拓扑图 192
12.3.2 实现功能 193
12.4 工程实现 193
12.4.1 创建仿真工程 194
12.4.2 DBC文件设计与导入 194
12.4.3 系统变量 197
12.4.4 面板设计 198
12.4.5 CAPL代码实现 207
12.4.6 Automation Sequences 217
12.4.7 分析窗口设置 218
12.4.8 Trace窗口与Logging 220
12.4.9 Desktop布局 221
12.5 工程运行测试 223
进 阶 篇
第13章 仿真工程开发进阶I —— CAN LIN仿真 227
13.1 工程实例简介 227
13.1.1 网络拓扑图 227
13.1.2 实现功能 228
13.2 工程实现 229
13.2.1 添加LIN总线支持 229
13.2.2 数据库LDF文件设计与导入 230
13.2.3 添加环境变量 236
13.2.4 面板设计 237
13.2.5 CAPL实现 248
13.2.6 Trace窗口与Logging 256
13.2.7 设置Desktop布局 257
13.3 工程运行测试 257
13.4 扩展话题——关于网络管理 258
第14章 仿真工程开发进阶II——仿真 测试 260
14.1 基于CANoe的自动化测试系统简介 260
14.2 Test Feature Set功能简介 261
14.2.1 约束和条件设置函数 261
14.2.2 信号测试函数 261
14.2.3 等待指示函数 262
14.2.4 测试控制函数 263
14.2.5 故障注入函数 263
14.2.6 测试判别函数 264
14.2.7 测试架构函数 264
14.2.8 测试报告函数 265
14.3 Test Service Library功能简介 265
14.3.1 检测函数 266
14.3.2 状态报告函数 268
14.3.3 激励函数 269
14.3.4 检测控制函数 270
14.4 测试单元与测试模块简介 270
14.4.1 测试单元与测试模块的区别 271
14.4.2 测试模块架构 271
14.5 工程实例简介 272
14.6 工程实现 272
14.6.1 添加CAPL测试模块 272
14.6.2 测试方法分析 274
14.6.3 CAPL测试用例 276
14.6.4 CAPL测试模块 282
14.7 工程运行测试 283
14.7.1 测试执行 283
14.7.2 测试报告 285
14.8 扩展话题——关于vTESTstudio 286
第15章 仿真工程开发进阶III —— 仿真 诊断 288
15.1 汽车诊断技术概述 288
15.1.1 诊断术语 289
15.1.2 OBD诊断与增强型诊断 289
15.1.3 诊断协议 289
15.1.4 诊断接口 290
15.1.5 诊断周期 291
15.1.6 UDS诊断服务 291
15.1.7 Vector诊断工具简介 292
15.2 CANoe诊断功能简介 293
15.2.1 诊断描述文件 294
15.2.2 安全访问服务 294
15.2.3 诊断测试窗口 295
15.3 CANoe常见诊断函数 295
15.3.1 通信/设定功能函数 295
15.3.2 安全访问函数 296
15.3.3 对象访问函数 296
15.3.4 参数访问函数 297
15.3.5 诊断测试函数 298
15.4 工程实例简介 299
15.5 工程实现 299
15.5.1 CDD文件导入 299
15.5.2 Security DLL文件配置 301
15.5.3 诊断控制台 301
15.5.4 诊断测试面板 302
15.5.5 添加Tester节点 314
15.5.6 虚拟诊断响应 317
15.5.7 自动化诊断测试方法分析 318
15.5.8 CAPL诊断测试模块实现 319
15.5.9 制作GenerateKey.dll 332
15.6 工程运行测试 332
15.6.1 手动诊断测试面板 332
15.6.2 自动化诊断测试模块 333
15.7 扩展话题——VT System在测试中的应用 335
第16章 CANoe高级编程 —— COM Server技术 336
16.1 COM接口技术简介 336
16.2 CANoe COM Server简介及设置 336
16.3 工程实例简介 337
16.4 开发实现 —— CANoe工程 338
16.4.1 CANoe工程中供调用的系统变量 338
16.4.2 CANoe工程中供调用的总线信号 339
16.4.3 新建CANoe CAPL函数 340
16.5 开发实现——VB.NET工程 342
16.5.1 新建VB.NET工程 342
16.5.2 添加CANoe相关引用 342
16.5.3 界面设计 344
16.5.4 全局变量定义 348
16.5.5 CANoe应用和Measurement对象控制 348
16.5.6 CANoe事件处理 349
16.5.7 系统变量操作 349
16.5.8 总线信号操作 350
16.5.9 CAPL函数调用 350
16.5.10 完整代码 351
16.6 工程运行测试 362
16.7 扩展话题 —— Python脚本调用COM Server 362
第17章 CANoe高级编程 —— CAPL DLL技术 363
17.1 CAPL DLL技术概述 363
17.1.1 CAPL DLL函数列表 364
17.1.2 CAPL回调函数 365
17.2 工程实例简介 366
17.3 工程实现 —— VC.NET开发CAPL DLL 366
17.3.1 创建用户自定义函数 —— CRC算法函数 366
17.3.2 创建用户自定义函数 —— 读取MAC地址函数 369
17.4 工程实现 —— CANoe调用CAPL DLL 371
17.4.1 如何添加CAPL DLL 371
17.4.2 DLL路径搜索顺序 372
17.4.3 添加系统变量 372
17.4.4 添加一个测试面板 372
17.4.5 添加CAPL代码 375
17.5 工程运行测试 378
17.6 扩展话题 —— CANoe仿真工程代码保护 379
17.6.1 编译后删除源代码 379
17.6.2 加密后删除源代码 380
17.6.3 加密保护与硬件绑定 380
第18章 CANoe高级编程 —— C Library API技术 381
18.1 CCL库文件概述 381
18.2 常用CCL接口函数介绍 381
18.3 工程实例简介 383
18.4 工程实现 —— VC.NET开发CCL 384
18.4.1 如何创建一个CCL库文件 384
18.4.2 CCL代码实现 386
18.5 工程实现 —— CANoe调用CCL 389
18.5.1 如何调用CCL API 389
18.5.2 添加系统变量 390
18.5.3 添加测试面板 390
18.5.4 添加IG模块 392
18.6 工程运行测试 392
第19章 CANoe高级编程 —— 自定义菜单插件 394
19.1 自定义菜单插件概述 394
19.2 工程实例简介 394
19.3 开发自定义菜单插件 394
19.3.1 创建和配置工程 395
19.3.2 代码实现 396
19.4 在CANoe中配置自定义菜单插件 401
19.5 工程运行测试 401
19.6 扩展话题 —— 关于C#语言 402
第20章 CANoe高级编程 —— .NET测试模块开发 403
20.1 .NET测试模块开发概述 403
20.2 .NET测试环境设定 404
20.2.1 配置CANoe的.NET文件编辑器 404
20.2.2 配置Visual C#项目开发模板 405
20.3 工程实例简介 406
20.4 工程实现 —— .NET测试模块 406
20.4.1 添加.NET测试模块 406
20.4.2 调用CAPL测试库中的测试用例 407
20.4.3 新建C#测试模块工程 409
20.4.4 数据库和系统变量的访问方法 409
20.4.5 .NET测试模块开发 410
20.4.6 .NET测试模块配置和编译 414
20.5 工程运行测试 415
20.6 扩展话题 —— XML测试模块 416
第21章 CANoe高级编程 —— TCP/IP通信编程 419
21.1 网络传输协议简介 419
21.1.1 网际层 420
21.1.2 传输层 420
21.1.3 Socket编程简介 421
21.2 .NET编程中TCP/IP相关类的简介 421
21.3 CAPL中TCP/IP相关函数的简介 424
21.4 工程实例简介 426
21.5 工程实现 —— C# TCP/IP服务器端开发 427
21.5.1 新建一个工程 427
21.5.2 界面设计 427
21.5.3 C#代码实现 429
21.6 工程实现 —— CANoe TCP/IP客户端开发 434
21.6.1 创建仿真工程 434
21.6.2 新建系统变量 434
21.6.3 Panel设计 435
21.6.4 CAPL实现 438
21.7 工程运行测试 446
21.8 扩展话题 —— UDP Socket通信 447
第22章 CANoe高级编程 —— FDX协议与HIL系统通信 449
22.1 FDX协议 449
22.1.1 Datagram 450
22.1.2 创建Data Groups和Items 454
22.1.3 FreeRunning模式 455
22.2 工程实例简介 455
22.3 工程实现 —— CANoe项目 456
22.3.1 创建FDX Description文件 456
22.3.2 配置FDX 457
22.4 工程实现 —— VC.NET项目 458
22.4.1 VC.NET中FDX相关类简介 458
22.4.2 Datagram结构体定义 459
22.4.3 界面设计 461
22.4.4 代码实现 463
22.5 工程运行测试 480
22.6 扩展话题 —— 硬件在环 481
第23章 CANoe高级编程 —— 调用LabVIEW 482
23.1 LabVIEW Integration系统设置要求 482
23.2 工程实例简介 482
23.3 工程实现 —— LabVIEW 483
23.3.1 创建共享变量 483
23.3.2 创建DemoVI 484
23.4 工程实现 —— CANoe 485
23.4.1 启用LabVIEW Integration设置 485
23.4.2 设置Signal Generators 486
23.4.3 CAPL调用LabVIEW共享变量 487
23.4.4 添加一个Desktop布局 488
23.5 工程运行测试 488
23.6 扩展话题 —— LabVIEW调用CANoe 490
附录A 英文缩写对照表 491
参考文献 494