之前的一篇文章中介绍了LIN通讯,对LIN通讯的通讯机理进行了说明,那么在定义LIN通讯的时候需要使用什么样的文件进行描述呢?直观的来说就是LIN的描述文件,其实翻译成英文就是LIN Description File,那么简称就是LDF,今天我们就说说LDF文件是什么样的!

首先,从意义来说,根据名字我们应该就有所理解,就是为了描述LIN通讯,那么需要描述的内容包含哪些方面呢,大体上来说,会分为以下几个方面:

  1. 节点的定义,哪个是主节点哪个是从节点;

  2. 节点所包含信号的定义,每个节点包含多少信号,每个信号是如何定义的,这里指信号测长度和信号的位置;

  3. 节点的属性,主要包含节点的地址,功能ID、供应商ID以及变种ID等信息;

  4. LIN总线调度表,因为LIN是基于调度的,没有调度是无法通讯的;

下面我们就通过新建一个LDF文件把以上涉及的信息进行说明

使用的工具:vector公司的LDF Explorer

同类型的工具也可以使用Babylin的LDFEdit

第一步:首先打开LDF Explorer编辑软件,空白界面如下

第二步:主菜单file->new file,在new file的右侧需要选择建立LDF文件使用的通讯标准,如下所示

目前LIN的协议包含1.3、2.0、2.1、2.2等等,具体的差异不在本文的讨论范围,暂时不做展开,现在使用基本都是2.0以上,而且2.0/2.1/2.2在不涉及诊断的单纯的通讯方面是完全可以兼容的。

我们这里选择基于LDF2.1,会进入如下界面;

这里我们红色圈出的部分,都是编辑软件自动生成的,把这个LDF需要的主要元素的框架显示在了左侧的列表中,后续编辑的时候只要在对应的部分添加相应的内容就可以了。

这里注意,左侧是有两个列表的,一个是“Frames/Commands”,一个是“Nodes/Frames”,这是两种不同的模式,随着我们的编辑会很容易理解它们的不同。

第三步:先把LIN总线的名称做一下修改,点击下图左侧红色圈出的选项,在右侧红色圈出的部分进行名称修改,这里我们把名称更改为“LIN_LDF_Test”

更改完成之后,我们可以看到总线的名称相比之前发生了变化

第四步:因为在一条LIN总线里面只能有一个主节点,模板中已经把主节点创建完成,所以在节点创建的时候是不能创建主节点的,只能创建从节点,但是可以对主节点的信号进行编辑的,这一步我们就来编辑主节点的信号,首先更改一下主节点的名称,把主节点名称更改为“LIN_ECU”,更改方法:切换到如下界面,按照红色圈出的部分依次选择,在最右侧的红色圈出位置进行更改

更改完成之后如下

然后,给主节点增加两个发送信号,我们可以看到每个节点有两类信号,一类是发出的,发出是给从节点,那么这个主节点发出的信号就是从节点的接收信号,一般是多个从节点的接收信号;一类是接收的,那么这个主节点的接收信号就是从节点的发送信号,也一般是多个从节点的发出的。

这里我们新建两个主节点的发送信号,分别发给两个从节点,这一步先把两个信号创建好,至于发给哪个节点,等后边创建了从节点之后再分配。因为所有的信号都是依托于信号帧的,所以创建的时候我们只能创建信号帧。

创建信号帧的时候有三种不同的类型:无条件信号帧、事件触发信号帧以及零星信号帧。一般使用的都是无条件信号帧,这里我们就以创建无条件信号帧为例,通过下面的方式创建

点击之后,会进入如下界面

这里首先需要定义帧的名称、帧的长度、帧的ID

帧的名称,可以随便定义,只要符合命名规则即可,一般是字母、数字和下划线组成;

帧的长度,LIN2.0以上的通讯协议要求,长度可以是2、4、6、8的任何一个,其它的数值不可以;

帧ID,这个的取值范围是0-63,任意一个都是可以的

这里我们配置如下:

Publisher就是指谁发出的这个帧,我们定义的是主节点的帧,当然是由主节点ECU发出

Subscriber就是指谁接收这个帧,这里我们先不设置,因为还没有定义从节点,定义了从节点之后再进行设置

接着创建这个帧的信号,点击“Create and Map Signal”,进入如下界面

在这里需要对信号的属性进行设置

信号名称,还是一样可以随便设置

初始值,根据需求设置

信号类型,类似于数据的类型选择

信号长度,根据信号的定义,长度是可以自定义的,不跨字节低于8位或者跨字节超过8位都是可以的;

编码类型,这个代表的就是信号需要如何解析,你定义的信号在总线上就是0和1的数值,组合起来代表的是物理值,物理值的意义就需要这里的定义去解析;

信号的发送和接受节点,这个是继承的帧的设置,帧的设置好之后就可以了;

信号在帧上的位置,假

设如我们定义一个帧的长度是8个字节,那么就是代表的64位,假设你定义的信号长度是10位,需要在这里确定好信号在64位的哪个位置,是第0位还是第n位;

这里我们设置如下:

点击ok,新建的信号就会显示在帧定义的界面

同样的方法,我们再建第二个信号

信号解析可以借用第一个的方式

但是信号位置一定不能重叠,所以这个最少要在第十位之后

创建完两个信号如下:

最右侧有两个红色标记是因为没有定义从节点,下一步来定义从节点。

第五步:创建两个从节点

在生成的模板中自带了一个从节点,我们直接把这个从节点的名字做一下修改,作为其中的一个节点,参数设置如下:

需要注意,从节点创建时需要设置节点地址,就是这里的NAD,这个参数是在诊断中会使用到的;

然后,在创建一个节点,通过如下方式创建

设置名称如下:

节点地址设置如下:

创建完之后,左侧界面如下

第六步:把刚才的主节点的两个信号信息完善

信号1完善信息如下:

信号2完善信息如下:

这样我们就可以通过左侧的导航栏看出信号在各个节点的关系了

Master_frame_Signal1是主节点的发送帧信号,是从节点1的接收帧信号

Master_frame_Signal2是主节点的发送帧信号,是从节点2的接收帧信号

第七步:以同样的方式,每个从节点创建一个发送信号

从节点1的发送信号设置如下

从节点2的发送信号设置如下:

最终形成的链接关系如下

第八步:创建调度表

我们前面说了,LIN的通讯时基于调度的,如果没有调度就无法通讯,所以这里要创建调度表,通过如下入口

命名如下:

然后中间的schedule tables会发生变化

然后把需要调度的信号帧拖入到这个表格就可以了,结果如下

这个调度的周期时可以更改的,在右侧有编辑的位置

根据需要设置就可以了!

到此,一个基本的LDF文件就完成了,把文件保存一下就可以了!

这里我们保存为LIN_LDF_Test.ldf,供以后使用!

  

END

Tesla自动驾驶体验

法拉利工厂探秘

为了分享资料方便小编也是拼了,强烈推荐查看本文

福耀玻璃汽车前挡玻璃“前装RFID解决方案”和“前装ETC解决方案”首发

xmldocument如何创建一个不带结尾的节点_LDF文件是个啥?如何创建一个LDF文件相关推荐

  1. Sass--传一个不带值的参数

    Sass 的混合宏有一个强大的功能,可以传参,那么在 Sass 中传参主要有以下几种情形: A) 传一个不带值的参数 在混合宏中,可以传一个不带任何值的参数,比如: @mixin border-rad ...

  2. 【Hadoop】一个例子带你了解MapReduce

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  3. lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...

    本文首发自微信公众号"汽车技术馆"! CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程 ...

  4. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程

    CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程呢? 第一步:打开软件之后,主菜单选择file->n ...

  5. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

    1. 需求 我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压 ...

  6. 螺旋图形Linux,一个实例带你熟练使用UG中的螺旋线,新手必备!

    原标题:一个实例带你熟练使用UG中的螺旋线,新手必备! 今天咱们来一个稍微难一点点的花纹缸体,要用到咱们UG中的螺旋线哦! 图形分析:该缸体主体为圆柱体,可以采用圆柱体和凸台完成,根据图形标注特点需要 ...

  7. 日程定时提醒程序C语言,DIY一个高大上带提醒的计时器,简单实用,你还在等什么...

    DIY一个高大上带提醒的计时器,简单实用,你还在等什么 发布时间:2020-07-19 15:02:29 来源:51CTO 阅读:1124 作者:实验楼 小编心语:锵锵锵!小编我又来了!昨天发了一篇比 ...

  8. DX学习笔记(创建DX自带几何体)

    可参考之前博客写的一个demo http://blog.csdn.net/zero_witty/article/details/51651162 demo的主要内容在框架函数Setup(),Displ ...

  9. 如何创建应用程序清单文件 App.Manifest,如何创建不带清单的应用程序

    如果你的程序对 Windows 运行权限有要求,那么需要设置应用程序清单.本文介绍如何添加应用程序清单,并解释其中各项权限设置的实际效果. 本文内容 嵌入带默认设置的清单 新建一个自定义的清单文件 创 ...

最新文章

  1. Pandas中DataFrame和array相互转化(DataFrame数据直接水平合并)
  2. html网页效果分析,熟手的html编写风格与原因分析_HTML/Xhtml_网页制作
  3. PostgreSQL建表动作分析
  4. vfp : 顶层表单附加菜单
  5. 10篇写给Git初学者的最佳教程
  6. Tensorflow--代码1
  7. 12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置 12.16 Nginx代理
  8. AirPlay to Mac 如何工作以及使用它需要什么
  9. win7磁盘合并步骤
  10. Pyton 中eval 函数的用法总结
  11. 腾讯 roomservice php,后台系统搭建记录 - 腾讯Web前端 IMWeb 团队社区 | blog | 团队博客...
  12. Java——反射机制
  13. Linux驱动开发之RGB565转RGB888
  14. kali 利用msf通过win7永恒之蓝漏洞获取权限
  15. 高企技术企业对企业的作用
  16. 利用MPS和MIG实现GROMACS吞吐量最大化
  17. 生产环境(基于docker)故障排除? 有感于博客园三番五次翻车
  18. Odoo 16 企业版手册 - 库存管理之重订货规则
  19. Chart.js 中文文档
  20. Excel-引用其它位置的数据和自动更新

热门文章

  1. Git 操作简单总结:廖雪峰教程
  2. 区块链BaaS云服务(28)TOP Network 之业务链和单向状态通道(Layer-2)
  3. 近世代数--唯一分解整环上的多项式环--唯一分解整环上的多项式环还是唯一分解整环
  4. 近世代数--内外直积--本质是一样的
  5. 操作系统课设--使用信号量解决生产者/消费者同步问题
  6. Kubernetes容器网络及网络模型
  7. [architecture]-Generic Timer
  8. [crypto]-51-RSA私钥pem转换成der, 在将der解析出n e d p q dp dq qp
  9. C++ const对象仅在文件内有效
  10. 2020-11-25(多级页表的补充)