实例讲解电动汽车VIN写入规则及Simulink建模方法(一)——VIN校验方法及Simulink建模

目录

一、车辆VIN简介

二、电动汽车VIN写入规则及校验和规则

1、写入规则

2、校验和规则

三、VIN校验方法及Simulink建模

1、VIN校验方法

2、上位机发送VIN写入报文解包Simulink建模

3、校验和对比验证Simulink建模

4、VIN校验方法Simulink建模整体模型

四、总结


一、车辆VIN简介

VIN是英文Vehicle Identification Number(车辆识别代号)的缩写。VIN是为了识别某一辆车,由车辆制造厂为该车辆制定的一组字码。VIN由世界制造厂识别代号(WHI)、车辆说明部分(VDS)、车辆指示部分(VIS)三部分组成,共17位字码。

VIN的第一部分WHI,用以标识车辆的制造厂。当此代号被指定给某个车辆制造厂时,就能作为该厂的识别标志。VIN的第二部分VDS,用以说明车辆的一般特征信息。VIN的最后部分VIS,是车辆制造厂为区别不同车辆而指定的一组代码。这组代码连同VDS部分一起,足以保证每个车辆制造厂在30年之内生产的每个车辆的VIN具有唯一性。更详细的信息可参考GB 16735-2019 道路车辆 车辆识别代号(VIN)

GB7258-2017《机动车运行安全技术条件》4.1.5要求,对具有电子控制单元(ECU)的汽车,其至少有一个 ECU 应记载有车辆识别代号等特征信息,且记载的特征信息不应被篡改并能被市场上可获取的工具读取。电动汽车VIN一般存储在VCU中,VIN的写入根据制定的写入规则,通过上位机写入VCU中。本文介绍一种电动汽车VIN写入规则及Simulink建模方法。

二、电动汽车VIN写入规则及校验和规则

本文介绍一种电动汽车的VIN写入规则。

1、写入规则

由VIN上位机写入:

1)上位机通过0x561写入VCU车辆VIN码;

2)VCU通过0x573回复写入反馈;

3)写入成功后 VCU通过0x566(驱动CAN+整车CAN) 发送VIN报文。上位机也可以通过0x566读取。

2、校验和规则

1)CheckSum=id_high+id_high_mid+id_low_mid+id_low+byte0+byte1+byte2+byte3+byte4+byte5+byte6;

2)while(CheckSum>0xFF){CheckSum=((CheckSum&0xFF00)>>8)+(CheckSum&0xFF);}

3)CheckSum=~CheckSum;

三、VIN校验方法及Simulink建模

1、VIN校验方法

1)上位机发送VIN写入报文解包

VCU需设置无论哪一路CAN接收到0X561VIN写入报文后,根据接收报文解包后,得到VIN校验和、帧号、VIN号,并将报文ID发送出来供校验和计算使用,同时,发送CAN激活状态,供VCU反馈设置状态使用。其中上位机通过0X561发出的校验和是按照校验和的公式计算出的。

2)校验和对比验证

VCU接收到上位机发送的要刷写的VIN信息后,也需要按照校验和的公式计算出一个校验和的值,然后同VIN刷写上位机发出的校验和对比,如果一致,则校验通过,可以进行下一步的VIN写入流程,如果不一致则报错误,反馈设置失败。

2、上位机发送VIN写入报文解包Simulink建模

1)输入信号

CAN_Pcan_CanMessage_0x561:Pcan接收的0X561 CAN报文信息

CAN_Ecan_CanMessage_0x561:Ecan接收的0X561 CAN报文信息

2)输出信号

VINChkSum:VIN校验和

VINFrm_Nmb:VIN帧号

VIN_1:该帧发送的VIN第1位

VIN_2:该帧发送的VIN第2位

VIN_3:该帧发送的VIN第3位

VIN_4:该帧发送的VIN第4位

VIN_5:该帧发送的VIN第5位

VIN_6:该帧发送的VIN第6位

CAN0x561_ID:报文0x561的ID

CAN0x561_Active:报文0x561的激活状态,当接收到报文且无错误时为激活状态

3)控制逻辑

a、分别建立Pcan和Ecan的0x561报文解包模块

b、解包模块中勾选输出报文错误状态

c、根据接收到的报文错误状态,判断哪路CAN正常接收到VIN写入报文,选择使用那一路报文作为VIN写入报文信息

d、新建CAN解包模块,以上一步骤输出的有效的0x561报文信息作为输出量,进行报文解包

e、勾选输出报文ID选项及报文错误状态选项,供后续校验和计算和设置状态判断

4)Simulink模型

a、上位机发送VIN写入报文解包模块架构

b、Pcan和Ecan 0x561报文解包及有效性判断

c、解包模块中勾选Output error

d、根据接收到的解包信息,判断哪一路CAN上的0x561报文有效。当Pcan报文为有效状态时,则输出Y=1,此时,选择Pcan的0x561报文作为VIN写入报文输入值;当Ecan报文为有效状态时,则输出Y=0,此时,选择Ecan的0x561报文作为VIN写入报文输入值。

e、根据选择的有效0x561报文,进行报文解包,并输出该报文定义的数据,包括VIN校验和、VIN帧号、VIN每一位的数值、报文ID及报文激活状态。

f、解包模块中勾选Output identifier和Output error

3、校验和对比验证Simulink建模

1)输入信号

VINChkSum:VIN校验和

VINFrm_Nmb:VIN帧号

VIN_1:该帧发送的VIN第1位

VIN_2:该帧发送的VIN第2位

VIN_3:该帧发送的VIN第3位

VIN_4:该帧发送的VIN第4位

VIN_5:该帧发送的VIN第5位

VIN_6:该帧发送的VIN第6位

CAN0x561_ID:报文0x561的ID

2)输出信号

ChkRlt:校验结果,当0x561发送的校验和与VCU根据接收到的报文计算得到的校验和一致,输出1,否则输出0

3)控制逻辑

a、根据接收到的有效0x561报文解析出的报文信息计算校验和

step1 计算校验和数值1:CheckSum=id_high+id_high_mid+id_low_mid+id_low+byte0+byte1+byte2+byte3+byte4+byte5+byte6;将报文ID的高位,次高位,次低位,低位以及byte0-byte6(即VIN帧号及VIN1-VIN6的数值)进行位相加

step2 判断计算校验和数值2:while(CheckSum>0xFF) {CheckSum=((CheckSum&0xFF00)>>8)+(CheckSum&0xFF);}

step3 校验和数值2位取反得到校验和数值3:CheckSum=~CheckSum;

b、将计算结果与接收报文解析出的校验和做比较是否一致,如果一致则输出校验结果为1,如果不一致则输出校验结果为0

4)Simulink建模

a、根据控制逻辑搭建step1 计算校验和数值1 Simulink模型

b、其中Bitwise Operator模块为对输入执行指定的按位运算模块,通过与FF000000位取“与”,得到报文ID高位值,此处报文ID为0x00000561,因此高位为00,取“与”后为0x00000000

c、将位取“与”后的值,通过Shift Arithmetic模块进行移位运算,移动信号的位或二进制小数点,对报文ID的高位进行右移24位,得到高位的值00

d、以同样的方法对报文ID的次高位00、次低位05、低位61进行按位取与运算,并进行移位运算,得到次高位、次低位、低位的值00、05、61

e、以上计算的数值相加得到检验和1

f、上一步求和得到的数值最大为16位的二进制数,根据step2 判断计算校验和数值2判断条件及计算公式,当校验和1的数值大于0xFF即二进制11111111时,则取高8位与低8位求和得到校验和2

g、使用Extract Bits模块,输出从输入信号选择的连续位,分别选高8位与低8位输出并求和得到校验和2

h、求和后仍然存在满足校验和值大于0xFF的情况,再次进行选择高8位与低8位输出并求和得到校验和2运算,两次计算后可保证输出的校验和2的值不大于0xFF,输出该校验和2的值

i、上一步计算得到校验和2,根据step3 CheckSum=~CheckSum;将得到的校验和2值按位取"反",得到校验和3

j、上一步计算得到的校验和3的值与接收到的0x561报文中的校验和值进行对比,如果两者相等,则校验通过,输出校验结果1,如果不相等,则校验失败,输出校验结果0

4、VIN校验方法Simulink建模整体模型

四、总结

本文介绍了一种电动汽车VIN写入规则、校验和规则,并介绍了如何通过接收上位机发送的VIN写入报文得到校验和信息及要写入的VIN帧号、报文ID及VIN数值,如何通过接收到的VIN帧号、报文ID及VIN数值根据校验和公式计算得到VCU计算的校验和数值,最终进行对比得到校验和结果。然后,介绍了以上VIN校验方法的Simulink建模方法。后续会介绍VIN的写入方法及VIN设置参数状态反馈模块。希望能给相关技术人员带来一定参考和帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1558118.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

10.8 springBoot学习

学习内容的来源途径:spring Boot 1.不同的架构 之前写的qq是C/S,百度贴吧,淘宝之类的网站项目则为B/S架构. 2.两种架构对比

0基础跟德姆(dom)一起学AI 机器学习04-逻辑回归

逻辑回归简介 应用场景 逻辑回归是解决二分类问题的利器 数学知识 sigmoid函数 概率 极大似然估计 核心思想: 设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为…

No.13 笔记 | 网络安全防护指南:从法律法规到技术防御

一、法律法规 《中华人民共和国网络安全法》要点 遵守法律:所有个人和组织在使用网络时,必须遵守宪法和法律,不得利用网络从事危害国家安全等活动。 个人信息保护:禁止非法获取、出售或提供个人信息。若违反但未构成犯罪&#x…

Rust编程的匹配控制语句match

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 学过C语言的同学或许在等switch,明确告诉你们,Rust没有switc…

【微服务】—SpringBoot入门

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记仓库👉https://github.com/A-BigTree/tree-learning-notes 个人主页👉https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 文章目录 1 SpringBoot快速入门1.1 SpringBoot简介1.1.1 简介1.1.2…

Python | Leetcode Python题解之第464题我能赢吗

题目: 题解: class Solution:def canIWin(self, maxChoosableInteger: int, desiredTotal: int) -> bool:cachedef dfs(usedNumbers: int, currentTotal: int) -> bool:for i in range(maxChoosableInteger):if (usedNumbers >> i) & 1…

音频剪辑在线工具 —— 让声音更精彩

你是否曾梦想过拥有自己的声音创作空间,却苦于复杂的音频编辑软件?接下来,让我们一同揭开这些音频剪辑在线工具的神秘面纱,看看它们如何帮助你实现从录音到发布的无缝衔接。 1.福昕音频剪辑 链接直达>>https://www.foxits…

55页可编辑PPT | 制造企业数字化转型顶层规划案例

基于集团的战略和运营特点,数字化转型应如何考虑? 在集团的战略和运营特点基础上进行数字化转型,需要实现业务多元化,整合资源和流程,推动国际化拓展,实施差异化战略,并通过数据驱动决策&#…

基于SpringBoot在线拍卖系统【附源码】

基于SpringBoot在线拍卖系统 效果如下: 网站首页界面 用户登录界面 竞拍商品界面 管理员登录界面 管理员功能界图 竞拍商品界面 系统界面 订单界面 研究背景 随着社会的发展,信息化时代带来了各行各业的变革。电子商务已成为人们日常生活不可或缺的一…

单片机教案 2.1 ATmega2560单片机最小应用系统

第二章 ATmega2560单片机I/O输入输出口简单应用 ATmega2560是一款基于AVR微控制器的高性能、低功耗的8位微处理器,广泛应用于嵌入式系统设计,尤其是Arduino Mega 2560开发板中。其拥有丰富的I/O资源和强大的处理能力,适用于各种电子项目&…

深入理解Transformer的笔记记录(非小白贴)NNLM → Word2Vec

文章的整体介绍顺序为: NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理,通常需要将语言数学化,因为计算机机器只认数学符号…

知识改变命运 数据结构【java对象的比较】

0:前言 在基本数据类型中,我们可以直接使用号比较是否相等,还记的学堆哪里时候,插入一个数据,就会与其他数据进行比较,当时我们传入的是Integer类型,在Integer类里面已经实现了compare。 如果…

Java | Leetcode Java题解之第464题我能赢吗

题目&#xff1a; 题解&#xff1a; class Solution {Map<Integer, Boolean> memo new HashMap<Integer, Boolean>();public boolean canIWin(int maxChoosableInteger, int desiredTotal) {if ((1 maxChoosableInteger) * (maxChoosableInteger) / 2 < desi…

【万字长文】Word2Vec计算详解(一)

【万字长文】Word2Vec计算详解&#xff08;一&#xff09; 写在前面 本文用于记录本人学习NLP过程中&#xff0c;学习Word2Vec部分时的详细过程&#xff0c;本文与本人写的其他文章一样&#xff0c;旨在给出Word2Vec模型中的详细计算过程&#xff0c;包括每个模块的计算过程&a…

宠物咖啡馆平台:SpringBoot框架的设计与实现

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

【Vue3 + TS + Vite】从0到1搭建后台管理系统

前言 没搭建过Vue3的项目&#xff0c;从0开始搭建一下&#xff0c;记录一下自己的步骤。 技术栈&#xff1a; vue3 ts scss pinia vite 我尽量写的详细一些&#xff0c;后续也会记录我在项目过程中&#xff0c;遇到的一些问题。 文章目录 前言环境搭建一、创建项目1. 使用…

车载超声波雷达

车载超声波雷达 法雷奥同致电子BOSCH豪恩汽电辉创海康威视珠海上富晟泰克 法雷奥 法雷奥集团&#xff08;Valeo&#xff09;是一家总部位于法国的专业致力于汽车零部件、系统、模块的设计、开发、生产及销售的工业集团。公司业务涉及原配套业务及售后业务&#xff0c;是世界领…

有点晕,inline, crossinline,noinline小计

inline 主要用于展开铺平函数&#xff0c;用于高频访问但是代码不是很多的方法&#xff0c;减少函数对象的定义 fun <T> List<T>.normalForeach(action:(T)->Unit){for(item in this){action(item)} }inline fun <T> List<T>.inlinedForeach(action…

wildcard使用教程,解决绝大多数普通人的海外支付难题

许多人可能已经注意到,国外的一些先进AI工具对国内用户并不开放。而想要使用这些工具,我们通常会面临两个主要障碍:一是网络访问的限制,二是支付问题。网络问题很容易解决&#xff0c;难的是如何解决在国内充值海外软件。 今天给大家推荐一个工具——wildcard&#xff0c;用它…

MISC - 第13天(python脚本 重命名文件,拼接二维码,cloacked-pixel工具,中文电码,五笔编码)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天继续讲解MISC的相关知识 [安洵杯 2019]吹着贝斯扫二维码 附件信息: 使用APCHPR暴力破解工具&#xff0c;flag.zip 破解失败可能线索在其他文件&#xff0c;放到hxd查看 在hxd中&#xff0c;发现该文件头JFIF 是j…