资讯
HOME
资讯
正文内容
vwii dump nand 时间 IPFS数据之旅
发布时间 : 2024-10-30
作者 : 小编
访问数量 : 23
扫码分享至微信

IPFS数据之旅

摘要: 我们自己的数据在互联网中到处都是,但是我们却没办法很好的管理这些数据,在中心化网络和大数据面前,我们可以做些什么呢?

被称为下一代HTTP协议的IPFS,热度仅次于EOS。但很多人对IPFS只有一些很抽象的概念。在此为大家简单解释一下IPFS网络:“可以把IPFS网络想象成一个大硬盘,全世界就这一个硬盘,这个硬盘背后是无数个对等的点组成,我们存的文件会被冗余并且分片的存到某些点上。”

IPFS是一个内容寻址,有版本管理的,点对点文件系统。本系列说的IPFS包括协议实验室在github.com上ipfs和libp2p两个组织的各种项目,不包括Filecoin。工作关系一直追踪分布式存储IPFS的各种动态,分享下自己对IPFS技术的理解,会涉及到IPFS各种工具和相关代码。

设想下面几个情景:

(可以发现我们自己的数据其实在互联网中到处都是,但是我们却没办法很好的管理这些数据。)

情景1

小A同学给小B同学传一个照片,直接能想到的都是需要通过中心化的服务,比如微信,网盘等等方式,我们给不同人分享,意味着我们会在不同app/服务商中保存同一份数据,时间长了,搞不清哪里有想找的照片。

这里面就可以用到ipfs的内容寻址(content addressing),同一份内容永远只有一个地址。对于ipfs这样的一个点对点的网络,其实没有传统的上传和下载的概念。每个人都可以把文件保存在自己的ipfs节点中,然后把文件的地址(哈希值)广播出去,如果别人需要,会根据这个哈希值在他自己的节点保存。

情景2

如果小B对照片做了修改,比如去除红眼后,分享给小C。现在问题来了,小A怎么知道有最新的修改呢?小A“沟通基本靠吼”,直接问下小B或小C。如果是更多人协作呢?

ipfs有ipns(InterPlanetary Naming System)和pubsub(订阅,发布)可以帮忙做这个事情。

情景3

如果小A希望网络中有三个备份,要怎么做呢?已有方法是放到不同服务提供商,某度网盘存一份,微信收藏一份,telegram存一份……如果要存10份呢?

ipfs的ipfs-cluster可以帮忙做指定副本数量的存储。

以上情景都可以通过IPFS解决,从设计上看,IPFS包括用DHT存储metadata,使用类似的BT的数据交换方式,使用类似git的object管理和SFS(Self-Certified Filesystems)。

上述情景都可以通过IPFS解决,那技术上到底是如何解决的呢,请关注下期的IPFS数据之旅(二)

IPFS-companion

顾名思义,IPFS companion(IPFS伴侣)就是方便大家在浏览器中使用IPFS的各种功能。 它使用Javascript语言,支持本地的IPFS daemon或浏览器内置的基于JS的IPFS daemon(如下图)。

它使用mozilla的WebExtensions API开发,后者是一个跨浏览器的浏览器扩展/插件开发API。

IPFS companion功能包括:

对地址的转换,举个栗子。

对于http的地址

(https://ipfs.io/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk),

可以生成IPFS地址:

/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk,(这个命令可以通过ipfs get下载。笔者后续会详细介绍ipfs的数据流,敬请期待。)和普通浏览器可以访问的带ipfs 网关的地址:https://ipfs.io/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk。

笔者最喜欢的功能其实是直接在浏览器使用如下四种格式IPFS链接举例:

例如下面图片

可以用

ipfs://QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk访问。

使用浏览器内置的js daemon时,浏览器地址栏会显示:

使用本地的ipfs daemon时,浏览器地址栏会显示:

二者的含义都是把内容

/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk

请求通过http api转发给ipfs.io或本地的127.0.0.1:8080 ipfs网关。ipfs网关把http请求转为ipfs的点对点协议。从上述ipfs网关开始,后面就是ipfs协议,而不是传统http协议了。

明正才能传顺

情景一中,小A想给小B传一个文件,大致过程如下:

本地添加文件;把文件的hash给小B;小B根据文件hash在IPFS网络中得到这个文件。

这里有意不提上传和下载,点对点的系统并不是上传文件到服务器,再由别人下载。在IPFS中我们只能把文件上传到自己的IPFS节点或public gateway(公共网关),别人通过哈希值从IPFS网络中下载。

回忆一下前面提到的IPFS Stack,这次主要涉及到IPLD对象是如何管理,在每个节点是如何存储的。

添加文件

我们向自己的IPFS添加文件的过程如下:

1. 文件拆分并写入IPFS基础数据结构dag(有向无环图),dag不仅用在IPFS中也用在Filecoin中,参考下文:深度解读IPFS/Filecoin 2018 update

2. 把dag数据根据系统配置写入IPFS底层blocks存储;

3. Flush mfs(Mutable Filesystem)的root目录,MFS是一个建立在IPFS上面的虚拟文件系统,提供类似unix文件系统的API;

4. 递归Pin上面flush过的root目录及其所有文件,并把状态写入底层blockstore存储。

flush 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush 方法。

做存储的小伙伴肯定这里会问了,我存1M的数据,肯定要比1M多啊,浪费的空间怎么办?IPFS社区有实验特性Filestore,可以避免浪费多余的硬盘空间。

文件拆分并生成dag

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ export IPFS_PATH=~/.ipfs-private

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ export LIBP2P_FORCE_PNET=1

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ ipfs add --cid-version 1 --wrap-with-directory test_data

added zdj7WkayJ4Y7QmFsHg6pQQ528J7bqSZpGfUk8WfivrNFJyUr6 test_data

added zdj7WXi97o1NcWTq9bVw9BhJLMxEVKjUVbXP1U3V2TBHswPvr

512.00 KiB / 512.00 KiB [======================================================================================================================] 100.00%

graphmd可以把dag用图形化方式显示,例如

https://ipfs.io/docs/examples/example-viewer/example#../graphmd/README.md的

文件拆分策略

文件拆分方式可以通过--chunker指定。有固定大小和rabin两种方式。如果不指定,默认是256k一个chunk。

dag (有向无环图)的类型

ipfs的object来自git。ipfs支持两种dag,一种是balanced dag,适合随机访问;另一个种是trickledag,适合顺序访问。默认情况下ipfs使用balanced dag。ipfs添加文件时可以用--trickle或-t表示生成trickledag。下面是balanced dag插入数据的过程。

trickledag是这样的:

添加新的子树:

需要注意的是使用不同dag或不同的拆分方式都会生成不同的哈希值,也就是对ipfs来说,是不同的文件。

CID版本

CID包括multibase,multicodec和multihash。

默认是cidv0,社区正在做cidv1的工作。有个小工具可以将cid解析成人类可读的数据。

dag写入底层存储:

ipfs默认使用两种存储,在~/.ipfs/blocks使用flat fs,在~/.ipfs/datastore使用leveldb。后者在后面提到pin的时候仍然会提到,这里先跳过。在上面的默认配置中,ipfs会使用base32哈希值的倒数第二和倒数第三位索引。

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ hexdump ~/.ipfs-private/blocks/RX/AFKREIHCUSVW2OVNVS7VX35P33XIYNO6AF4TXB7R7CNAF5YZSGULUB3RXQ.data | head

0000000 38b9 a7c4 061f b138 6dca b81a 5aeb a304

0000010 99e6 2ce7 600b d190 f5da 0695 7436 efd3

0000020 97bd 357a 9fa6 e8ab 422d a7d6 051c 4ba1

0000030 6be3 ad89 f3d4 f6d4 72a4 0b94 5a1e 8f61

0000040 2953 1ad3 a5f4 3f30 477a a907 bd65 b6fa

0000050 9658 4883 54fd 318b 6e51 85c3 1772 65d5

0000060 7c6a 3202 2e4b bc48 54b6 1aca 927e 6d7c

0000070 c34d 522e faa1 3883 9bda f5bf d6e7 e1d1

0000080 5d90 4548 7cf2 5c4d e501 9a8e a747 0bdd

0000090 fa7d a186 1565 5839 93b7 0ad3 2c18 bd48

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ hexdump test_data | head

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ cat ~/.ipfs-private/blocks/KE/AFKREIBOBL5SRHO6FXSR2KPV7TCNEQFPIL2CHLI7226YE2446Q5A7KEKEY.data

welcom to ipfsbit.com

前面我们通过IPFS add添加了”test_data“文件

上文是拿“welcom to ipfsbit.com“这一句话举个栗子,通过flat fs方式存储这句话返回的哈希值是”bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ cat ~/.ipfs-private/blocks/KE/AFKREIBOBL5SRHO6FXSR2KPV7TCNEQFPIL2CHLI7226YE2446Q5A7KEKEY.data“而图中的KE就是倒数第二和倒数第三位的索引。

Append(追加数据)

IPFS做为内容寻址的文件系统。Append数据之后,只有被修改的chunk会被生成新的hash,原有chunk仍然可以用原有hash访问。例如我们在上面的测试数据test_data后面追加"welcom to ipfsbit.com"字符串。由于原本的test_data是512k,ipfs默认是256k一个chunk,正好是两个chunk。新增的数据会在一个新建的chunk里面。我们可以用ipfs object get看到前面两个chunk数据没有变化。只是最后一个chunk包含我们新增的字符串。

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ echo "welcom to ipfsbit.com" >> test_data

added zdj7We9xdpUKDjQxCXYJ2DMg2YJD87NmuybjoTDxptbitB2cd test_data

added zdj7WfuHAfPSdyS2XL7avfzYudTaYT83ckG1ku1gdv8H96sg7

512.02 KiB / 512.02 KiB [======================================================================================================================] 100.00%

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ ipfs object get zdj7WkayJ4Y7QmFsHg6pQQ528J7bqSZpGfUk8WfivrNFJyUr6

{"Links":[{"Name":"","Hash":"zb2rhmtzy5H4y7UQxZ3pzf3FE6BAE5PAeLT3yjTrKX5RCcBvj","Size":262144},{"Name":"","Hash":"zb2rhaMcpAWL6rvYay5HX7wsuj6gKnZTPk2ToF5xnf7vtnf6G","Size":262144}],"Data":"\u0008\u0002\u0018\ufffd\ufffd \ufffd\ufffd\u0010 \ufffd\ufffd\u0010"}

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ ipfs object get zdj7We9xdpUKDjQxCXYJ2DMg2YJD87NmuybjoTDxptbitB2cd

{"Links":[{"Name":"","Hash":"zb2rhmtzy5H4y7UQxZ3pzf3FE6BAE5PAeLT3yjTrKX5RCcBvj","Size":262144},{"Name":"","Hash":"zb2rhaMcpAWL6rvYay5HX7wsuj6gKnZTPk2ToF5xnf7vtnf6G","Size":262144},{"Name":"","Hash":"zb2rhZk1fBPjs9ho7beGQ2itVcETXJ7RYkJmsWpeyXGhvLu8y","Size":22}],"Data":"\u0008\u0002\u0018\ufffd\ufffd \ufffd\ufffd\u0010 \ufffd\ufffd\u0010 \u0016"}

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ ipfs get zb2rhZk1fBPjs9ho7beGQ2itVcETXJ7RYkJmsWpeyXGhvLu8y

Saving file(s) to zb2rhZk1fBPjs9ho7beGQ2itVcETXJ7RYkJmsWpeyXGhvLu8y

22 B / 22 B [===============================================================================================================================] 100.00% 0s

bamvor@ipfs-ci-and-test:~/works/ipfs_demo$ cat zb2rhZk1fBPjs9ho7beGQ2itVcETXJ7RYkJmsWpeyXGhvLu8y

welcom to ipfsbit.com

备注

这里面没有提到cache,默认是ARCCache。如果配置了BloomFilter,也会开启BloomFilter。

上面流程只考虑了单独添加一个文件的情况,没有考虑符号链接,目录的情况。

(作者:IPFS星际比特,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

搞懂汽车电子电气性能测试-ISO_16750解析

ISO_16750解析

DV测试标准解析连载

原创:Chris

ISO_16750-1最新版本是2018版,但作者没有找到对应的文档,因此本文以次新版本ISO_16750-1_2006-08进行解析。

ISO_16750-1是ISO16750标准的第一部分,它主要介绍了标准的适用范围,术语解释,安装位置定义,工作模式,功能等级,测试基本需求以及CODE的定义。这部分是ISO16750标准后面四部分的基础。下面分别进行介绍,并加入一些个人的观点。

Scope(试用范围)

针对车用电子和电气系统或部件。

根据在车上的不同安装位置,描述了可能存在的不同的环境压力及测试需求

明确电磁兼容(EMC)的定义不包含在此标准中

从定义来看,车上只要用电的系统,都适用与此标准。

Terms and definitions(术语及定义)

这部分定义很好理解,不再赘述。

Classification by mounting location(安装位置分级)

这部分定义了DUT(Device under test)几种不同的安装位置,目的是根据不同的安装位置定义测试工况和测试需求,包括Operation temperature range(工作温度范围),climatic requirements(气候工况),protection against dust and water(防尘防水)。

在ISO16750-4中的Annex A中,给出了推荐表。

TableA.1中Operation temperature range的代码在ISO16750-4中有定义,见下表:

下表中的Tmin和Tmax参数实际上在ISO16750-2中也有用到,但Code定义却是在ISO16750-4中给出的,而且也没有给出说明,个人认为不是特别合理,让刚上手的工程师理清这个关系,找到对应的定义还是需要花些时间的,尤其是在某些公司,负责电气性能测试和负责环境测试的可能还不是一个部门。

TableA.1中climatic requirements的代码在ISO16750-4中有定义,见下表:

TableA.1中protection against dust and water的代码在ISO 20653中有定义,见下表:

针对Operation temperature range(工作温度范围),climatic requirements(气候工况),protection against dust and water(防尘防水)这三个参数,一般大的整车厂都会在需求规范中明确给出需求,而这个需求一般都是等于或者高于国标里面的推荐值的。

下面就作者接触过的几种控制器,列举一下这三个参数:

Operating modes(工作模式)

定义了DUT(Device under test)的在所有测试工况中可能的工作模式,说明见下表:

DV测试中分为带电测试和不带电测试,1.1和1.2都是不带电测试,测试工况很简单。其他工作模式都是带电测试,其中2.2和3.1工况基本没有使用,2.1工况一般用于休眠工况的测试,3.2工况使用的是最多的工况。对于带电的测试工况,由于不同DUT功能不同,因此测试工况各不一样,需要根据每种DUT的实际工作状态定义每一个输入输出针脚的状态,一般称作测试工况的定义,测试工况的定义原则是符合实际工况且覆盖最恶劣情况。

测试工况定义好了,就需要测试软件去实现。这里需要强调一点,由于VW柴油门造假事件后,汽车行业对合规性检查越来越重视。原则上来说,DV测试使用正常的批产软件是最符合合规性的,但由于DV测试并不是在实车上进行,一般都是模拟输入和输出负载,因此很难仿真出实车上一样的环境让批产软件跑在我们设置的工况上。这时,就只能用测试软件来实现设定的测试工况。当然我们测试软件开发的原则还是不作假,不降低要求,一定做到合规性。

这里还要提一下,,针对不同的测试项,即使同一个DUT,对于同一个工作模式3.2,其测试工况也可能定义是不一样的,这个在后面测试项解析时会再提到。

Functional status classification(功能等级)

功能等级的定义见下表:

这一部分是DV测试的一个重点和难点,对于一些简单的系统,还比较好定义和判断,但对于复杂的系统,例如发动机控制器,变速箱控制器等,如何全面并正确的定义功能等级,如何实时并准确的监测和判断测试前、中、后系统功能是否符合等级定义,这是一项综合性的工作,也是考验一个公司DV测试能力的关键点。

作者结合本人的经验,建议分如下几步进行功能等级的判断:

针对不同的测试项,设计测试工况,包括但不限于输入和输出的状态

根据测试工况,确定各功能对应的Class A 和Class B的监测参数及误差

针对测试工况,开发监测工具,包括监测软件;对于监测工具的精度及监测软件的采样频率参数设计需要根据测试工况和功能等级的要求合理设计

按照测试项规范要求正确的搭建测试台架

执行测试,监测并记录所有测试数据,根据测试数据分析符合的功能等级;建议在监测软件中开发自动分析功能,自动判断功能等级。

当然说起来容易,但要想完成上述工作,需要设计人员,工具开发人员,测试人员的协同配合,同时也需要工程师有较深的专业知识积累。

当测试发生失效时,一般先排查测试台架搭建、工况设定、测试设备、测试软件、监控数据等是否正确,只有确保外部环境都正确的情况下,才能定位到是DUT的失效,再进行DUT失效分析,其中一环出现错误,都会对测试结果造成误判。

下面表格模板可以做为工况及功能等级定义的参考。

Tests and requirements(测试及需求)

大原则:采用最严格的要求做为测试需求,因此在工况定义的时候,需要考虑符合实际的最恶劣工作工况。

测试序列定义:测试前要定义好测试序列,测试样品数量等信息,如果客户有规定,按照客户规定执行,如果没有,内部需讨论确定。

Designation(名称定义)

这部分主要是说明性的内容,比较好理解,不再赘述。

ISO 16750-1标准的内容分析就算告一段落,如果大家有什么问题需要探讨,可以在回复中进行交流。

ISO16750-2的解析

ISO_16750-2是电子负载部分,目前最新版本是2012版,本文就以此版本进行解析。此标准适用于12V和24V系统,本文以12V为例进行解析。

前面的1-3节比较容易理解,在此略过,我们直奔第四节测试正文。

General(通用)

定义了时间/频率,电压及电阻值默认的误差;但下面两句话需要好好的理解:

所有电压曲线是在无负载情况下的表现:检测模拟测试需求中的电压曲线是否正确时,必须是在空载下进行测量;如果带上负载,实际的电压曲线和模拟的电压曲线肯定是有出入的。

电压测量点应该是在DUT的终端(PIN脚):实际上我们测量电压肯定会有线束的连接,不会直接在pin脚上测量,这就需要在测量结果中考虑线束的压降影响。

Direct current supply voltage(直流供电电压)

目的

验证最大最小电压下全功能是否符合设计。

测试方法

供电电压Code需要从客户需求中进行分解,并与客户达成一致。

标准中提到要在全温度下验证,并且没有时间限制。但实际操作时肯定无法所有温度验证,更没有办法无限时间验证。大部分情况下会采取如下测试方法:

Tmax和Tmin:在连载(1)中已经介绍,不再赘述。

t:需要和客户沟通确认,若客户无要求,默认1hour(大部分工况下,1hour都能达到热平衡状态)。

标准并没有对Operation Mode(工作模式)明确定义,根据经验,全功能电压范围内当DUT运行在最恶劣工况下时,容易产生过压,过流,过热等失效,因此一般定义Operation Mode(工作模式)为3.2,工况按照全功能最恶劣工况定义。例如:对于燃油汽车发动起控制器来说,可以定义发动机转速6000r/min的工况为最恶劣工况。

测试接受标准

Class A。

Overvoltage(过电压)

目的

模拟汽车发电机调节器损坏,导致供电电压上升情况下功能是否符合设计。

测试方法

为什么温度采用Tmax-20℃,这个我查了很多资料,跟整车厂也有一些沟通,但一直没有找到合理的解释,如果哪位大拿了解背景,还请给予指教。

汽车发电器调节器损坏,发电器电压最高会升高到18V

不同控制器对于18V电压下的功能定义是不同的,所以需要根据不同控制器定义的最恶劣工况去定义此项测试的工况。例如某变速箱控制器要求过压情况下满足全功能设计。

测试接受标准

至少Class C,要求严格的需要Class A(如客户有特殊需求)。

Overvoltage(过电压)

此项测试分两个子项,上一篇介绍过了一个子项,下面介绍下一个子项

Jump Start(跨接启动)

目的

模拟汽车跨接启动情况下功能是否符合设计。

跨接启动是在汽车的蓄电池电量耗光情况下用另一辆车和跨接电缆启动车辆。

测试方法

考虑到跨接的车辆可能是24V供电的系统,例如大巴,卡车等,因此跨接电压为24V。

一般跨接启动时车辆需运行在怠速工况下,因此跨接启动的工况设置为怠速工况下的最恶劣工况即可。

测试接受标准

至少Class D,要求严格的需要Class B(如客户有特殊需求)。

Superimposed alternating voltage(叠加交流电压)

目的

模拟汽车供电电压中残留交流电压时的情况下功能是否符合设计。

测试方法

标准中此项测试没有提到测试温度,按照默认的室温进行测试。

测试电压曲线及参数标准中定义的很清楚,不再赘述。

关键是如何仿真测试电压曲线。对于一些有预算的公司,可以采用成熟的专用测试设备,设备不仅可以满足测试曲线的参数要求,而且还直接在应用软件中集成了包括国标及各大整车厂标很多标准的测试曲线,是一个很好的选择,但采购价格也比较贵。

对于一些预算有限的公司,可以采用自制设备的方法,我在网上见到一篇专利文章,就是介绍满足此测试电压曲线的设备设计原理,有需要的可以参考一下。

测试接受标准

Class A.

Discontinuities in supply voltage(间断供电电压)

项测试分四个子项:

Momentary drop in supply voltage(瞬态跌落电压)

Reset behaviour at voltage drop(电压跌落时的复位行为)

Starting Profile(启动测试)

Load Dump(抛负载)

下面逐项介绍:

Momentary drop in supply voltage(瞬态跌落电压)

目的

模拟其他电路中的保险丝熔断时产生的影响情况下功能是否符合设计。

解读:

为了防止短路造成的电源系统故障,熔断保险丝和断路器被应用于每条供电线路上,以防止过大电流的出现。短路现象发生时,瞬态电流增大,造成电压的快速跌落,当保险丝因电流增大而熔断时,电压恢复正常,一般电压跌落的速度很快,持续时间少于100ms。而此瞬态跌落电压会对周围的其他用电设备产生供电中断影响。

测试方法

考虑到保险丝熔断情况是可能发生在任何时刻的,因此工况还是需要定义在全工况下的最恶劣工况,此时消耗的电流也是最大的,对电路的要求也是最高的。

测试接受标准

至少Class B,要求严格的需要Class A(如客户有特殊需求)。

在客户允许的条件下,reset行为是允许的,否则不允许发生reset

由于12V车载控制器的reset电压一般都会高于6V,即当电压跌落到4.5V时,控制器如果不对输入电压进行一些处理,都会发生reset行为的。

结合测试接受标准的不同,进行一些分析:

如果客户允许reset行为:

一般控制器对电压输入不需要进行额外的处理都可以满足测试要求。

如果客户不允许发生reset行为,一般可以采取两种处理方法来满足需求:

增大输入电压端的电容,用于储存能量,满足在跌落期间控制器的用电需求。

这种情况一般用在消耗电流比较小的控制器上。

增加辅助的boost电路,在电压跌落到某一电压时,启动boost电路,使电压维持在保证不reset的某一电压值。

当然增加boost电路会带来额外的成本投入。因此,还是需要根据产品定位及客户需求来确定任何进行电路设计。

Reset behaviour at voltage drop(电压跌落时的复位行为)

目的

模拟电压跌落情况下复位功能是否符合设计。适用于有复位功能的设备,例如包含微控制器的设备。

测试方法

测试接受标准

Class C

Starting Profile(启动测试)

目的

模拟DUT在启动阶段功能是否符合设计。

测试方法

启动工况受外界环境影响很大,例如冷启动、热启动,启动时蓄电池的电能情况不同,启动时的电压波形也不同,因此标准分为了4档。

I档和IV档主要是针对热启动工况,根据蓄电池的情况,分为了两档。

II档和III档主要针对冷启动工况,根据蓄电池的情况,也分为了两档。

可能大家会困惑,上面一条明明说有冷启动和热启动工况,为什么测试温度是室温呢?其实说透了很好理解,因为此测试就是模拟的各种启动工况下的启动电压波形,此电压波形已经考虑了温度的影响,因此测试温度就在室温下就可以了。

启动时,车辆运行在怠速工况,因此此项测试可以选用怠速工况下的最恶劣工况。

测试接受标准

见下图,测试接受标准根据Level和供电电压的Code不同也不同。

如果需要满足Class A和B,则DUT不能有reset行为,这对于DUT的供电电压需要特殊的设计保证,建议采用的方法如Momentary drop in supply voltage(瞬态跌落电压)测试防止reset的方法一样,但具体的设计参数肯定是不一样的:

增大输入电压端的电容,用于储存能量,满足在跌落期间控制器的用电需求。

这种情况一般用在消耗电流比较小的控制器上。

增加辅助的boost电路,在电压跌落到某一电压时,启动boost电路,使电压维持在保证不reset的某一电压值。

Load Dump(抛负载)

目的

模拟Load Dump工况下功能是否符合设计。

为何汽车电子系统要做Load Dump保护设计?Load Dump是指电压在短时间内突然发生不正常陡升或陡降之现象,在复杂的车上环境中经常发生。当消耗较大电力的电器,如电动窗、启动马达开启或关闭电源,或是车内开关切换、线路故障时,都会产生电压陡升陡降现象。车用电子产品相当害怕电压陡升陡降,这些产品内部使用大量微电子组件,而微电子组件极容易被电压陡升陡降破坏。因此汽车电子系统要做Load Dump保护设计,同时也需要做Load Dump测试。

测试方法

这个测试有两种工况,如上面两个测试波形:

Figure 8是指发电机不带Load Dump抑制功能。当发生Load Dump时,由于感性器件的电流无法突变,将引起交流发电机输出电压急剧上升,此电压尖峰可能高达 100V,并需要持续 400ms 后消退。

Figure 9是指发电机具有Load Dump 抑制功能,能将电压抑制在一个相对低的电压范围内。在 12V 电源系统中,Load dump一般被钳位在 35V;而在 24V 电源系统中,Load dump一般被钳位在 60V。

目前汽车发电机基本都有Load Dump抑制功能,因此一般选用Figure 9做为测试波形。

启动时,车辆运行在怠速工况,因此此项测试可以选用怠速工况下的最恶劣工况。

测试接受标准

Class C

Reversed voltage(反向电压)

目的

模拟在使用辅助启动设备时,电极极性反接的情况下功能是否符合设计。

测试方法

Case1:发电机回路未接熔断器,测试电压采用-4V(不适用24V系统)

这个测试case的背景本人不是太了解,采用4V测试电压的原因也不是很清楚,本人接触的DUT测试都是采用的case2。如果有相关专家,可以留言中给大家普及一下这个知识。

Case2:其他情况,测试电压-14V(12V系统)

从设计的角度来看,最简单的防反设计就是在供电电路上增加防反二极管。

但要满足此测试项的防反要求,只是一个供电电路防反二极管还不一定能解决问题,必须针对实际电路进行分析,杜绝任何一个反向电压可能导致器件失效的设计。例如MOSFET是车载电路上常用的一个器件,由于生产工艺的原因,它本身都是有一个反向导通的体二极管存在的。如果反接电压,这就有了一条通路,如果设计不好,可能会导致其他的器件烧毁。这里细节设计就不展开进行介绍了。

测试接受标准

更换烧毁的保险丝后,功能等级符合Class A。

此项测试多个版本变更,对测试接受标准的描述都是更换保险丝后,满足Class C 或A,但本人理解,这其实就是Class E,只不过允许烧毁的只能是保险丝,而其他器件必须保证未被损害,重新上电后功能正常。

Slow decrease and increase of supply voltage (电压缓降缓升)

前面连载中漏掉了此项测试,在这一期补上。

目的

模拟蓄电池在慢速放电和充电的情况下功能是否符合设计。

测试方法

测试接受标准

在电压Code规定的电压范围内,符合Class A。其他的至少符合Class D,严格要求的需要符合Class C。

对于符合Class C要求的,需要满足电压缓慢上升的过程中,当达到Code规定的最小电压前,DUT恢复正常工作。

Ground reference and supply offset(地偏移及电源偏移)

目的

对存在多路供电通路的被测件,模拟多路供电的地或电源发生偏移的情况下功能是否符合设计。

测试方法

测试时间在标准中说进行一次功能测试,具体时间未给出,因此本测试项的测试时间本作者建议可以根据被测件达到稳定状态的时间来决定,一般5-10min即可。

测试台架的搭建:

对于多路供电通路的理解是本测试项的关键点,也是如何搭建测试台架的基础。

一般对多路供电通道的理解是控制器有多个电源或地供电线,且这几路供电或地是独立的。但作者本人接触的大部分被测件(控制器),供电虽然有多个pin脚供电,但在控制器内部是短接到一起的,地虽然分为功率地,模拟地以及其他各种地,但在控制器内部也是短接在一起的。从作者本人理解来看,这不属于多路供电通路,而且也在这种情况下,在不同输入pin脚施加偏移,也没有任何意义。

那是不是这个测试项就不适用呢?我们可以参考GM的相关标准GMW3172-2015中的9.2.11和9.2.12测试项的setup图,如下图,从中得到一些启发。

可以看到,GM的标准对地偏和电源偏移的对象是针对所有IO口中跟供电相关的IO,而非只针对供电IO,按照这个思路,我们就很好理解并搭建测试台架了。但是按照GM的标准,是需要每一个IO口逐个测试,对于复杂的控制器动辄几十个甚至上百个IO口,还是需要很长的测试时间的。根据作者本人的经验和理解,这些IO口的测试可以同时进行,这样可以节省很多测试时间。

有一点需要注意:对于模拟量信号的地,一般车载控制器都是使用的控制器内部的地,即模拟量信号的与控制器内部地共地,因此对于这样的模拟量信号就没有必要进行地偏移测试了。

下面是一个地偏移的测试台架框图,可以供参考:

测试接受标准

符合Class A。

Open circuit tests (开路测试)

单线中断

目的

模拟PIN脚开路情况下功能是否符合设计。

测试方法

测试接受标准

Class C。

要所有PIN脚断开10s再恢复连接,满足Class C,就需要各PIN脚不仅要有开路故障诊断功能,还需要有恢复功能,在监测到开路恢复后,需要恢复该PIN脚的功能。例如对于某一输出级PIN脚,诊断到开路故障后可能采取关闭输出级驱动的措施;如果要满足Class C,后续还需要持续诊断,一旦诊断到故障解除,需要恢复输出级的驱动。

多线中断

目的

模拟连接器断开情况下功能是否符合设计。

测试方法

测试接受标准

Class C。

同单线中断。。

Short circuit protection( 短路保护)

信号电路

目的

模拟输入输出PIN脚短路情况下功能是否符合设计。。

测试方法

所有测试PIN脚都要短路到电源和短路到地测试

标准中提到该测试项需要一个PIN脚一个PIN脚挨个测试,非测试PIN脚保持开路状态或者与客户达成一致。

对于"非测试PIN脚保开路状态"的要求,本人不是太理解,在实际的工况中,不可能发生短路时,其他PIN脚都出于开路状态。如果有对此项要求的背景了解的,还请告知。

在实际的项目测试中,一般会根据真实工况去设置非测试PIN脚的状态,并与客户达成一致。

此项测试针对测试PIN脚需要如下几种工况:

正常连接供电电压和地:

输出级打开

输出级关闭

断开供电电压连接,供电地正常连接

测试接受标准

符合Class C。

一般设计时,都会考虑正常连接供电电压和地的工况,保证有诊断功能,关闭功能以及恢复功能,从而满足Class C的要求。

对于断开供电电压连接工况,一般情况下可能没什么问题,但对于一些特殊电路,此工况下,可能会导致短路到电源时,产生电源通路导致DUT正常上电,从而导致特殊电路的某些器件烧毁,例如低边驱动级通道上拉续流二极管的电路。这个涉及到具体的电路设计,不再展开讲解。

负载电路

只应用在含有负载电路的系统中。作者接触的产品都不适用此项测试,因此也不太熟悉,欢迎了解的专业人士补充。

Withstand voltage(耐电压)

目的

确保电介质的绝缘耐压能力。本试验仅对含有电感元件(例如,继电器,电机,线圈)或连接到电感负载电路的系统/组件有要求。过电压通过电场引起DUT部件间的漏电流,可能对绝缘性能带来负面影响。本试验着重于绝缘系统并检验绝缘材料承受因断开感性负载产生高电压的能力。

测试方法

本测试对样品的要求是完成湿热循环实验,并在室温中放置 0.5h

测试适用如下情况:

在带有电绝缘的端子间;

对于有高低压隔离的端子间,可以适用,测试方法是所有高压PIN短接,所有低压PIN短接,然后高低压PIN之间施加正弦电压。

对于不带隔离的端子间,千万不能施加耐电压,否则会损坏DUT电路,这种情况就不适用了。

在带有电绝缘的端子和电传导的壳体间;

对于导电的金属外壳如果和端子之间是绝缘的(金属外壳完全不接地),可以在端子每个PIN脚和外壳之间施加正弦电压。

如金属外壳是接地的或者通过接地网络接地,则不适用于此测试项

如果是塑料外壳,则不适用于测试项

(在塑料外壳情况下)在端子和裹有外壳(例如金属箔)的电极间

作者还未接触过DUT产品有这种情况,有了解的专家可以补充一下。

测试可以采用通用的绝缘测试仪,一般都可以满足测试要求。

测试接受标准

Class C 级,试验时不得出现击穿和电弧。连接线束上电后功能一切正常。

Insulation resistance(绝缘电阻)

目的

确保避免 DUT 的绝缘电路和传导部件间的电流所必须的最小阻抗,用于检验系统和材料的绝缘特性。

测试方法

本测试对样品的要求是完成湿热循环实验,并在室温中放置 0.5h

测试适用如下情况,:

在带有电绝缘的端子间;

对于有高低压隔离的端子间,可以适用,测试方法是所有高压PIN短接,所有低压PIN短接,然后高低压PIN之间施加正弦电压。

对于不带隔离的端子间,千万不能施加耐电压,否则会损坏DUT电路,这种情况就不适用了。

在带有电绝缘的端子和电传导的壳体间;

对于导电的金属外壳如果和端子之间是绝缘的(金属外壳完全不接地),可以在端子每个PIN脚和外壳之间施加正弦电压。

如金属外壳是接地的或者通过接地网络接地,则不适用于此测试项

如果是塑料外壳,则不适用于测试项

(在塑料外壳情况下)在端子和裹有外壳(例如金属箔)的电极间

作者还未接触过DUT产品有这种情况,有了解的专家可以补充一下。

测试可以采用通用的绝缘测试仪,一般都可以满足测试要求。

测试接受标准

绝缘电阻应大于 10 MΩ。

相关问答

围棋围棋(中国)IOS/手机APP官网下载V2.48.65;

时间2010-05-21概览软件简介开源中国社区团队直播首秀,以分享为名讲述开源中国社区背后的故事”推荐大家使用/shangluo/kpdtoykcsi216531Everyoneisafra...

 windows7主题  血虚生风 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部