LDF文件步骤及内容详解

article/2025/9/25 14:15:42

LDF文件第一部分——ldf文件配置

LIN_description_file;  //LIN描述文件 
LIN_protocol_version = 2.1;//LIN协议版本 
LIN_language_version = 2.1; //LIN语言版本 
LIN_speed = 19.2 kbps;   //LIN的通信速度

第一部分是必不可少的,属于全局定义。我们可以把等号左边的看作固定值,右边的看作变量或者参数进行理解,比如version可以为2.0、2.1、2.2,版本要一致,不然版本不兼容,生成的ldf文件就报错

LIN的通信速度是以kbps(每秒千比特率)为单位的,范围是1.0-20.0ksps,一般由19.2和9.6这两个参数

LDF文件第二部分——节点定义

Nodes
{Master: BCM,,5 ms, 0.1 ms;  //主机节点,名称:ECC,时基:5ms,抖动:0.1msSlaves: RLS, IP;  // 从机节点名称:RLS,IP
}

抖动(Jitter)为帧的同步间隔段的下降沿与帧时隙起始时刻相差的时间。时基(Time Base)为LIN子网的最小计时单位,通常设定为5ms或10ms。

帧时隙必须为时基的整倍数,并且起始于时基的开始时刻(称为时基的节拍(Tick)),切换到另一个进度表时一定要等到当前帧时隙的结束

从机节点注意不要主机节点设置进去,如果自己写脚本或者程序,注意判断从机节点这一列是否打了X或者被调用,如果没有被调用就不要加。加了应该也没事(狗头)

LDF文件第三部分——信号定义

Signals 
{KeyInSts:               1, 0, BCM, IP;  //信号名称:KeyInSts,size_bit=1,初始默认值=0 ,发送节点=BCM,接收节点IPAmbientTemperature:    	8, 100, BCM, RLS,IP;  //信号名称:AmbientTemperature,size_bit=8,初始值=100,发送节点=BCM,接收节点=RLS,IPLowBeamReq:               24, {0,0,0}, RLS, BCM;//信号名称:LowBeamReq,size_bit=24,初始值={0,0,0},以数组形式呈现,发送节点=RLS,接收节点=BCM
} 

size_bit小于等于16时,信号的类型是Scalar,初始默认值为16进制,需要进行转换,如果为空默认为0,大于16时就是Byte Array(字节数组)

size_bit后的第一个值为发送节点,发送节点只能有一个

发送节点之后的全部都是接收节点,接收节点可以有多个

LDF文件第四部分——设置默认的诊断数据

Diagnostic_signals {MasterReqB0: 8, 0 ;   主节点名称:8bit ,默认为0MasterReqB1: 8, 0 ;MasterReqB2: 8, 0 ;MasterReqB3: 8, 0 ;MasterReqB4: 8, 0 ;MasterReqB5: 8, 0 ;MasterReqB6: 8, 0 ;MasterReqB7: 8, 0 ;SlaveRespB0: 8, 0 ;   从节点名称:8bit ,默认为0SlaveRespB1: 8, 0 ;SlaveRespB2: 8, 0 ;SlaveRespB3: 8, 0 ;SlaveRespB4: 8, 0 ;SlaveRespB5: 8, 0 ;SlaveRespB6: 8, 0 ;SlaveRespB7: 8, 0 ;
}                           

默认设置无需更改

LDF文件第五部分——数据帧定义

Frames { //帧定义BCMSts1: 	0x2,   BCM,  3 {   //帧名称:BCMSts1,帧ID:0x2,帧的发布节点:BCM,帧数据段字节KeyInSts,                     0;  
//帧的信号名称:KeyInSts,对应列Messagename  帧中的偏移量:0,对应列LSBHighBeamCmdSts,               1;LeftTurnLampSts,              2;RightTurnLampSts,             3;    LeftPositionlLampSts,         4;    RightPositionlLampSts,        5; LeftPosLampFailSts,           6;RightPosLampFailSts,          7; LHFDoorSts,                     8;LHRDoorSts,                     9;RHFDoorSts,                     10;RHRDoorSts,                     11;RearLidSts,                     12;DashboardBrightness,            13;KeySts,                         16;        }BCMSts2: 3, BCM, 3 {  //十进制帧IDWiperSwitchSts,                  0; //帧的信号名称,帧中的偏移量RLSSensitivityReq,               3;VehicleSpeed,                    8; RearLidSts,                     12;DashboardBrightness,            13;AmbientTemperature,              16; RearLis,                        12;DashboardBrig,                   13;}
}

一个帧的帧ID可以是十六进制的也可以是十进制的

帧中信号的偏移量只能越来越高,从底到高顺序,最小值0,最大值为63,如果有其他帧信号,可以继续添加

LDF文件第六部分——诊断帧

Diagnostic_frames { //诊断帧MasterReq: 0x3c {  // 主节点诊断发送帧:MasterReq,帧ID:0x3c或者十进值60MasterReqB0, 0 ;MasterReqB1, 8 ;MasterReqB2, 16 ;MasterReqB3, 24 ;MasterReqB4, 32 ;MasterReqB5, 40 ;MasterReqB6, 48 ;MasterReqB7, 56 ;}SlaveResp: 0x3d {  // 从节点诊断接收帧:SlaveResp,帧ID:0x3D或者十进值61SlaveRespB0, 0 ;SlaveRespB1, 8 ;SlaveRespB2, 16 ;SlaveRespB3, 24 ;SlaveRespB4, 32 ;SlaveRespB5, 40 ;SlaveRespB6, 48 ;SlaveRespB7, 56 ;}
}
诊断帧的值和数据为固定的,不需要更改

LDF文件第七部分——从节点属性定义

Node_attributes  { //从节点属性定义,与第二部分节点定义映射IP {// 从节点名称LIN_protocol = "2.1"; //与第一部分ldf文件配置映射configured_NAD = 0x68;  // NAD值范围为1-255,可以使用十六进制值,也可使用十进制product_id = 0x2,               // supplier_id (0-0x7FFE)  供应商id0x1,               // function_id (0-0xFFFE)  功能id0x1;                   // variant (0-0xFF)   可变idresponse_error = IPErrorSts;  // 1比特错误信号 可不加P2_min = 50 ms;       //  最小间隔ST_min = 0 ms;       //  最小准本时间N_As_timeout = 500 ms;  // 非必要 诊断帧传输时间N_Cr_timeout = 1000 ms; // 非必要 上一帧到下一个连续帧的发完的时间configurable_frames{BCMSts1 ;  //message name 或 message id 消息名称或消息id,与上文第五部分数据帧定义映射IPSts;}} 
} 

P2_min: 从 LIN 子网接收到主机请求帧到 LIN 的从机节点准备好数据发送应答之间的最小时间间隔。

ST_min: 从机节点准备接收下一个帧(主机请求帧)或准备发送下一个帧(从机应答帧)的应答部分所需要的最小准备时间。

LDF第八部分——调度表信息

Schedule_tables {LIN2NormalTable_IGNON { // 调度表BCMSts2 delay 30 ms ; // 帧的延时RLSSts delay 30 ms ;}LIN2NormalTable_IGNOFF {BCMSts1 delay 15 ms ;BCMSts2 delay 15 ms ;IPSts delay 15 ms ;RLSSts delay 15 ms ;}
}

除了帧延时lin2.1版本默认Max.Frame Time[ms]为9.05,Min.Frame Time[6.46]

一个调度表会将所有帧延时加起来

调度表可以有多个,比如进度表、诊断发送表、诊断应答表等。

一般信号周期就是单纯的NORMAL(进度表)。然后将进度表的延时时间相加就是信号的周期时间。

LDF第九部分——信号编码定义

Signal_encoding_types{KeyInSts_Encoding{//信号名称加上_Encodingphysical_value, 0, 254, 1.417, 	0, "VehicleSpeed";
//类型,计算机最小值,计算机最大值,精度(factor),偏差(offset),单位(Unit),没有可以不加logical_value, 0, "Close";  //表示类型是coding:logical_value,序号0,对应的是矩阵十六进制数字,coding值=Closelogical_value, 1, "Open";  //表示类型是coding:logical_value,序号1,对应的是矩阵十六进制数字,coding值=Open} HighBeamCmdSts_Encoding{physical_value, 0, 254, 0.5, -40,"AmbientTemperature";
//类型,计算机最小值,计算机最大值,精度(factor),偏差(offset),单位(Unit):AmbientTemperature,没有可以不加logical_value, 0, "No"; logical_value, 1, "Yes"; }LeftTurnLampSts_Encoding{physical_value, 0, 4, 1, 0, "DashboardBrightness";logical_value, 0, "Sensitivity 1"; logical_value, 1, "Sensitivity 2";logical_value, 2, "Sensitivity 3"; logical_value, 3, "Sensitivity 4";logical_value, 4, "Sensitivity 5"; logical_value, 5, "Not Used";  logical_value, 6, "Not Used"; logical_value, 7, "Not Used"; 如果数值太多,可以这样写logical_value, 5, "0x5~0x7,Not Used";  } }

获取计算机最大值最小值,需要进行计算,步骤如下:

如果偏移量大于等于0

计算机最大值(计算机最小值) = (物理最大值(物理最小值) - 偏移量)/ 精度(factor)

如果偏移量大于0

计算机最大值(计算机最小值) = (物理最大值(物理最小值) + 偏移量)/ 精度(factor)

LDF第十部分——信号coding和信号名称映射

Signal_representation {KeyInSts_Encoding: KeyInSts  // 信号coding和信号名称映射HighBeamCmdSts_Encoding: HighBeamCmdStsLeftTurnLampSts_Encoding:  LeftTurnLampSts}本质上就是将物理值(physical_value)和coding值添加到对应的信号中去

如果写的脚本仅供自己使用的话,能读取Excel数据的语言都可以,优先选择有LDF API的语言。但是如果想做成工具、python使用qt,不要使用gui技术,因为有很多功能无法实现,java使用javafx技术。

生成dbc文件的话,推荐使用python,因为python内置的有dbc核心API,可以调用dbc核心api进行转换非常方便

原文:(10条消息) LIN ldf文件配置_allen_nmk的博客-CSDN博客_ldf中的jitter如何设置对其补充说明


http://chatgpt.dhexx.cn/article/BLG0Y7Kl.shtml

相关文章

LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(二)之LDF文件创建

LDF文件创建 一、摘要1.描述2.关键字 二、什么是LDF文件三、LDF创建环境四、LDF创建过程1.软件运行2.新建LDF文件3.修改主节点信息4.修改从节点信息5.新建描述信号6.新建信号消息7.新建报文信息8.新建调度表9.新建其他信息 五、MatrixCreat工具六、其他七、参考 一、摘要 1.描…

LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(三)之LDF文件详解

LDF文件详解 一、摘要1.描述2.关键字 二、为什么要了解LDF文件三、LDF文件构成1.版本2.波特率3.节点信息4.信号信息5.诊断信号信息6.报文消息7.诊断报文消息8.从节点信息9.调度表10.描述信息11.信号描述关联 四、LDF文件解析1.解析版本2.解析节点信息3.解析调度表4.解析报文消息…

LIN数据库文件LDF介绍及使用

LIN总线的项目接触的很少,今天结合CANoe官方文档和自己的理解,浅谈下LIN总线的数据库文件LDF LDF文件 LDF,LIN description file,LIN总线描述性文件,使用LIN 规范中定义的LIN配置语言 创建或编辑LDF文件,需要打开Vector LDF Explorer工具,有三种方式: 通过电脑系统找到…

系统级性能分析工具 — Perf详解讲解

从2.6.31内核开始,Linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread)&…

Perfetto工具集之traced_perf

1.Perf工具概览 linux中包含了众多性能分析工具,perf(特指linux-tools perf)工具是2009年在linux内核2.6.31中引入的一个工具。它的主要功能是可以跟踪hardware performance counter(PMU)、tracepoints、software performance counter(hrtime…

perf工具使用

perf研究总结 最近在天数搞一个性能的工具,需要抓callstack 包括用户态和内核的太调用栈,那么就顺便研究了一下perf工具。做了一个简单的总结。 perf --help 显示具体的命令,每个命令如何使用,再perf cmd --help会显示 参考链…

Linux系统性能监控分析工具perf

文章目录 一、perf 工具下载1.在centos7下离线安装2.安装flex3.安装bison 二、设置环境变量三、用MobaXterm 在linux和windows之间上传/下载文件1.连接服务器2.上传文件3.下载 四、perf原理1.perf的使用2.perf简单介绍3.常用命令格式1.perf list2.perf top3.perf stat4.perf pr…

perf工具简介+火焰图制作与解读

perf工具简介火焰图制作与解读 1、perf工具简单原理 perf是一款Linux性能分析工具。Linux性能计数器是一个新的基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器…

perf record/report

性能优化 性能优化通常分为两个阶段:性能分析、性能优化 性能分析:查找性能瓶颈、热点代码,分析引发性能问题的原因。性能优化:基于性能分析,进行性能优化。包括:算法优化(空间复杂度和时间复…

perf命令使用

转载申明:本文转载自http://www.brendangregg.com/perf.html 请大家看了之后如果要转载一定要注上这个地址!!! perf Examples The Linux perf_events T-shirt These are some examples of using the perf Linux profiler, which …

Linux perf probe 的使用(三)

文章目录 前言一、Dynamic Tracing二、kprobes2.1 perf kprobe 的使用2.2 kprobe Arguments3.3 tcp_sendmsg()3.3.1 Kernel: tcp_sendmsg()3.3.2 Kernel: tcp_sendmsg() with size3.3.2 Kernel: tcp_sendmsg() line number and local variable 三、uprobes的使用3.1 perf uprob…

linux 性能分析工具perf

perf 性能监控分析工具 perf 工具下载 https://cdn.kernel.org/pub/linux/kernel/tools/perf/v5.9.0/perf-5.9.0.tar.gz 离线安装 tar -xvf perf-5.9.0.tar.gz cd perf-5.9.0 cd tools/perf/ make sudo cp perf /usr/local/bin检查 $ /usr/local/bin/perf --version perf…

linux 性能分析工具——perf

Perf 简介 Perf 是用来进行软件性能分析的工具。 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以…

专题:性能调优之工具---perf

1. Linux Perf简介 1.1 Perf是什么 Perf 是内置于Linux 内核源码树中的性能剖析(profiling)工具。它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热…

perf基本使用与简单介绍

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言perf简单介绍常用命令格式perf listperf record/reportperf topperf statperf pr…

Linux perf 命令的使用(一)

文章目录 前言一、perf简介二、perf子命令简介三、perf工作模式3.1 计数3.2 采样 参考资料 前言 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。 (1)性能剖析的目标是寻找性能瓶颈&…

手把手教你系统级性能分析工具perf的介绍与使用(超详细)

测试环境:Ubuntu16.04 Kernel:4.4.0-31 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。 性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。 代码优化的目…

perf介绍

perf学习 什么是perf? linux性能调优工具,32内核以上自带的工具,软件性能分析。在2.6.31及后续版本的Linux内核里,安装perf非常的容易。 几乎能够处理所有与性能相关的事件。perf可以用于查看热点函数,查看cashe miss的比率&am…

perf简介和使用

perf 简介 Performance analysis tools for Linux. Performance counters for Linux are a new kernel-based subsystem that provide a framework for all things performance analysis. It covers hardware level (CPU/PMU, Performance Monitoring Unit) features and sof…

perf学习总结

本文梳理一下工作中对perf工具的使用,文章开始部分的概念和原理借用了网络上很多不错的文章(如有侵权欢迎联系),后面笔者争取展示一下在工作中使用perf来解决性能问题的实例。 perf概述 perf是Linux下的一款性能分析工具&#xf…