LDF文件之LDF Explorer工具

LDF Explorer工具

LDF文件比较像DBC文件,也是用来解析报文的,DBC文件是用在CAN通讯上的,LDF文件是用在LIN通讯上的。

我们可以用vector自带的工具LDF Explorer打开LDF文件,这个工具是最标准的,有些同学自己做了一个LDF文件,看着能导入一些其他工具,但只要用LDF Explorer打不开或者提示有错误,那就是LDF文件没做好。一般而言,只要不是很熟悉LDF文件,都不太建议直接用记事本来改,因为LDF文件不像DBC文件,DBC对字符格式没什么要求,但是LDF文件却是及其敏感,但凡有一点不一样都会报错。

界面介绍

对于整个LDF文件,有两种结构,一种是按照报文查看,另一种是按照节点查看。报文里面有四种:无条件报文、诊断报文、事件触发报文、零星报文。

新建节点

Edit ->Creat Slave Node给从节点起个名字就行

就可以按照节点查看的选项卡里面,看到新建出来个节点,里面没有关联到报文或者信号。

每个节点下面都有4种关联:公共信号,私有信号,公共报文,私有报文。

新建报文

选择发送节点,接收节点不需要选择,在信号里面会有给你选的地方,选中对应节点Edit ->Creat Fream ->选择无条件报文、事件触发报文或者零星报文,这里用无条件帧举例。

新建完报文之后,根据需要决定是否拖动到调度表里面。

新建信号

点击报文对话框里面的Creat and Map Signal

在弹出来的对话框里面起名字和初始值

Signal里面选择的是数据类型,有scalar和bytearray可以选择,scalar就是长度16位或以下的数据,bytearray长度必须是8位的倍数。

Subscribers需要选择一个接收该信号所在报文的节点

最后选择起始位和字节序

Create是高级用法,一般用不到,可以选择自己想要的编码类型,或者新增编码类型,每个编码类型都有自己关于信号的设定。

编码类型可以设定最大最小值

要注意的是:一旦决定了用编码类型,一定要把单位给设置了,哪怕打个空格都好,不然你生成NCF文件之后,别人导入会报错。NCF文件下面会有介绍。

数据物理意义

factor和offset,单位,最后的ASCII/BCD只是个检查的,不用管。

创建完成之后就可以在报文的layout界面里面看到信号所处的位置

NCF节点配置文件

Edit->Export NCF ->选择节点

就可以导出特定节点的信息,用记事本打开就可以知道,NCF文件只是LDF文件里面关于节点的部分。

node_capability_file;
LIN_language_version = "2.1";node Motor1 {general {LIN_protocol_version = "2.1" ;supplier = 0x1E ;function = 0x1 ;variant = 0 ;bitrate = 19.2 kbps;sends_wake_up_signal = "no" ;}diagnostic {NAD = 0xA ;diagnostic_class = 1 ;P2_min = 100 ms ;ST_min = 20 ms ;N_As_timeout = 1000 ms;N_Cr_timeout = 1000 ms;support_sid { 0xb2, 0xb7 } ;}frames {subscribe Motor1Control {length = 1 ;signals {Motor1Selection {init_value = 0 ;size = 2 ;offset = 0 ;}}}publish Motor1State_Cycl {length = 6 ;signals {Motor1Temp {init_value = 5 ;size = 8 ;offset = 0 ;}Motor1Position {init_value = {0, 0, 0, 0} ;size = 32 ;offset = 8 ;}Motor1LinError {init_value = 0 ;size = 1 ;offset = 40 ;}}}publish Motor1State_Event {length = 3 ;signals {Motor1ErrorCode {init_value = 5 ;size = 8 ;offset = 8 ;}Motor1ErrorValue {init_value = 1 ;size = 8 ;offset = 16 ;}}}subscribe MotorsControl {length = 8 ;signals {MotorDirection {init_value = 0 ;size = 2 ;offset = 0 ;}MotorSpeed {init_value = 0 ;size = 10 ;offset = 2 ;}}}subscribe New_Frame {length = 8 ;signals {New_Frame_NewSignal {init_value = {0, 0, 0, 0} ;size = 32 ;offset = 28 ;New_Frame_NewSignal_Encoding_1 ;}}}}encoding {New_Frame_NewSignal_Encoding_1 {logical_value, 7 , "off"  ;logical_value, 8 , "on"  ;physical_value, 6, 15, 0.01, 0 ;}}status_management {response_error = Motor1LinError ;}
}

Edit->Import NCF就能够导入特定节点,此处不再赘述。

小技巧

查看节点主从性质

有时候我们不知道自己的节点是主节点还是从节点,这个时候就可以在节点方式查看选项卡里面选中节点。

这种就是主节点

这种是从节点

验证配置正确性

工具栏里面有个LIN Consistency Checker

打开之后Run Checks就能开始检测,里面只要没有红色叉就是校验通过,不要有强迫症想把所有感叹号都消除了,它vector自己的模板都做不到。

其实LDF Explorer在打开LDF文件的时候也会运行一次LIN Consistency Checker,如果打开的文件有问题,就会显示LIN Consistency Checker,没问题就不会显示。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Labview Lite Note

目录 001十六进制字符串转浮点数002浮点数转十六进制字符串 001十六进制字符串转浮点数 002浮点数转十六进制字符串

【python程序】把小于10的数值都变成1

【python程序】把小于10的数值都变成1 import numpy as np import xarray as xra xr.DataArray(np.arange(25).reshape(5, 5)) a[np.where(a < 10)] 1 print(a)

CompletableFuture详解

目录 介绍 Future介绍 CompletableFuture介绍 CompletableFuture常用的API介绍 常用的静态方法源码解析 runAsync 源码 案例 结果 supplyAsync 源码 案例 结果 规律 CompletableFuture获取返回值方法介绍 返回值区别 代码演示 返回结果 CompletableFuture其…

ZooKeeper的分布式锁---客户端命令行测试(实操课程)

本系列是zookeeper相关的实操课程&#xff0c;课程测试环环相扣&#xff0c;请按照顺序阅读测试来学习zookeeper。阅读本文之前&#xff0c;请先阅读----​​​​​​zookeeper 单机伪集群搭建简单记录&#xff08;实操课程系列&#xff09;。 阅读本文之前&#xff0c;请先阅读…

从零开始的c语言日记day38——数组参数,指针参数

一维数组传参 要把数组或者指针传给函数&#xff0c;那函数参数如何设计&#xff1f; 上面各写法有问题嘛&#xff1f; 第一个没问题 第二个没问题 第三个没问题 第四个没问题 第五个解析&#xff1a;定义int*arr2[20]为20个int*类型的数组&#xff0c;test2之后用的是ar…

【Java学习笔记】73 - 正则表达式

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter27/src/com/yinhai/regexp 一、引入正则表达式 1.提取文章中所有的英文单词 2.提取文章中所有的数字 3.提取文章中所有的英文单词和数字 4.提取百度热榜标题 正则表达式是处理文本的利器…

Python之内置函数和模块

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

贪心算法策略实现

贪心算法 贪心算法&#xff1a;基于某种情况进行一个排序。 贪心算法得到的是优良解&#xff0c;而非全局最优解。需要证明局部最优解 全局最优解 经典贪心算法 —— 会议问题 对于这个问题 &#xff0c;我们提出贪心策略&#xff1a; 策略1&#xff1a;按照会议的持续时间长…

高效办公:如何使用视频剪辑工具批量转码,mp4视频到TS视频

在视频处理过程中&#xff0c;转码是一项常见的任务。将MP4视频转换为TS视频可以提供许多优势&#xff0c;包括更好的兼容性、更广泛的设备和平台支持以及更高的视频质量。然而&#xff0c;手动转码大量视频文件可能会非常耗时且效率低下。为了实现高效办公&#xff0c;可以使用…

RabbitMQ快速学习之WorkQueues模型、三种交换机、消息转换器(基于SpringBoot)

文章目录 前言一、WorkQueues模型消息发送消息接收能者多劳 二、交换机类型1.Fanout交换机消息发送消息接收 2.Direct交换机消息接收消息发送 3.Topic交换机消息发送消息接收 三、编程式声明队列和交换机fanout示例direct示例基于注解 四、消息转换器总结 前言 WorkQueues模型…

亚马逊云科技 re:Invent 2023:引领科技前沿,探索未来云计算之窗

文章目录 一、前言二、什么是亚马逊云科技 re:Invent&#xff1f;三、亚马逊云科技 re:Invent 2023 将于何时何地举行四、亚马逊云科技 re:Invent 2023 有什么内容&#xff1f;4.1 亚马逊云科技 re:Invent 2023 主题演讲4.2 亚马逊云科技行业专家探实战 五、更多亚马逊云科技活…

人工智能原理复习--知识表示(二)

文章目录 上一篇产生式表示法推理方式 结构化表示语义网络语义网络表示知识的方法和步骤应用题目 框架表示法下一篇 上一篇 人工智能原理复习–知识表示&#xff08;一&#xff09; 产生式表示法 把推理和行为的过程用产生式规则表示&#xff0c;所以又称基于规则的系统。 产…