利用 LDF tool 工具制作LDF 文件

LDF tool 工具制作LDF 

工具下载网址

LDF Tool | Intrepid Control Systems, Inc. (intrepidcs.com)

如下定义 ,以及是否包含诊断帧

LIN_protocol_version = “2.1”; //LIN 协议版本

LIN_language_version = “2.1”; //LIN 语言版本

LIN_speed = 19.2 kbps; //LIN 通信速度

Channel_name = “DB”; //通道后缀名称“DB”

Nodes { //节点定义

Master: CEM, 5 ms, 0.1 ms; //主机节点,名称:CEM,时基:5ms,抖动:0.1ms Slaves:

 Master: CEM, 5 ms, 0.1 ms; //主机节点,名称:CEM,时基:5ms,抖动:0.1ms Slaves: LSM, RSM; //从机节点,LSM,RSM

 

 定义从节点的参数

Node_attributes { //节点属性定义

LSM { //节点名称为LSM 的节点的定义

LIN_protocol = “2.1”; //该节点依据 LIN 协议 2.1 设计

configured_NAD = 0x20; //配置 NAD 为 0x20

initial_NAD = 0x01; //初始 NAD 为 0x01

product_id = 0x4A4F, 0x4841; //产品 ID:厂商 ID 为 0x4A4F,功能 ID 为 0x4841 response_error = LSMerror; //应答错误名称为:LSMerror

fault_state_signals = IntTest; //错误状态信号为 IntTest

P2_min = 150 ms; //参照节点性能文件注释

ST_min = 50 ms; //参照节点性能文件注释

configurable_frames { CEM_Frm1; LSM_Frm1; LSM_Frm2;}

//可配置的帧列表

}

添加信号

Signals { //信号定义

IntLightsReq: 2, 0, CEM, LSM, RSM; //信号名称:IntLightsReq,

//长度:2,初始值:0,

//发布节点:CEM,收听节点:LSM、RSM

RightIntLightsSwitch: 8, 0, RSM, CEM; //信号名称:RightIntLightsSwitch,

//长度:8,初始值:0,

//发布节点:RSM,收听节点:CEM

LeftIntlLightsSwitch: 8, 0, LSM, CEM; //信号名称:LeftIntlLightsSwitch,

//长度:8,初始值:0,

//发布节点:LSM,收听节点:CEM

LSMerror, 1, 0, LSM, CEM; //信号名称:LSMerror,长度:1,初始值:0,

//发布节点:LSM,收听节点:CEM

RSMerror, 1, 0, LSM, CEM; //信号名称:RSMerror,长度:1,初始值:0,

//发布节点:LSM,收听节点:CEM

IntTest, 2, 0, LSM, CEM; //信号名称:IntTest,长度:2,初始值:0,

//发布节点:LSM,收听节点:CEM

}

信号的encoding 在这里定义,包括resulution  initial value 等参数。在上图中就可以勾选具体信号encoding。 

 

 frame 定义,如下图,

Frames { //帧定义

CEM_Frm1: 0x01, CEM, 1 { //帧名称:CEM_Frm1,帧 ID:0x01,

//该帧的发布节点:CEM,数据段为 1 个字节

InternalLightsRequest, 0; //包含的信号名称

//为 InternalLightsRequest,

//在帧中的偏移量为 0

}

LSM_Frm1: 0x02, LSM, 2 { //帧名称:LSM_Frm1,帧 ID:0x02,

//该帧的发布节点:LSM,数据段为 2 个字节

LeftIntLightsSwitch, 0; //包含的信号名称为 LeftIntLightsSwitch,

//在帧中的偏移量为 0

}

LSM_Frm2: 0x03, LSM, 1 { //帧名称:LSM_Frm2,帧 ID:0x03,

//该帧的发布节点:LSM,数据段为 1 个字节

LSMerror, 0; //包含的信号名称为 LSMerror,帧中偏移量为 0

IntError, 1; //包含的信号名称为 IntError,帧中偏移量为 1

}

RSM_Frm1: 0x04, RSM, 2 { //帧名称:RSM_Frm1,帧 ID:0x04,

//该帧的发布节点:RSM,数据段为 2 个字节

RightIntLightsSwitch, 0; //包含的信号名称为 RightIntLightsSwitch,

//在帧中的偏移量为 0

}

RSM_Frm2: 0x05, RSM, 1 { //帧名称:RSM_Frm2,帧 ID:0x05,

//该帧的发布节点:RSM,数据段为 1 个字节

RSMerror, 0; //包含的信号名称为 RSMerror,帧中偏移量为 0

}

}

 

调度表生成

Schedule_tables { //进度表定义

Configuration_Schedule { //进度表名称为:Configuration_Schedule

AssignNAD {LSM} delay 15 ms; //给节点 LSM 分配NAD,帧时隙为 15ms AssignFrameIdRange {LSM, 0} delay 15 ms;

AssignFrameId {RSM, CEM_Frm1} delay 15 ms;

AssignFrameId {RSM, RSM_Frm1} delay 15 ms;

AssignFrameId {RSM, RSM_Frm2} delay 15 ms;

}

可以实时看生成的LDF文件啦

完整的LDF 文件介绍可以参照

LIN入门(2)_lin bus控制器-CSDN博客

LIN 描述文件举例说明

以下为一个 LIN 描述文件的例子和说明。

LIN_description_file; //LIN 描述文件

LIN_protocol_version = “2.1”; //LIN 协议版本

LIN_language_version = “2.1”; //LIN 语言版本

LIN_speed = 19.2 kbps; //LIN 通信速度

Channel_name = “DB”; //通道后缀名称“DB”

Nodes { //节点定义

Master: CEM, 5 ms, 0.1 ms; //主机节点,名称:CEM,时基:5ms,抖动:0.1ms Slaves: LSM, RSM; //从机节点,LSM,RSM

}

Node_attributes { //节点属性定义

LSM { //节点名称为LSM 的节点的定义

LIN_protocol = “2.1”; //该节点依据 LIN 协议 2.1 设计

configured_NAD = 0x20; //配置 NAD 为 0x20

initial_NAD = 0x01; //初始 NAD 为 0x01

product_id = 0x4A4F, 0x4841; //产品 ID:厂商 ID 为 0x4A4F,功能 ID 为 0x4841 response_error = LSMerror; //应答错误名称为:LSMerror

fault_state_signals = IntTest; //错误状态信号为 IntTest

P2_min = 150 ms; //参照节点性能文件注释

ST_min = 50 ms; //参照节点性能文件注释

configurable_frames { CEM_Frm1; LSM_Frm1; LSM_Frm2;}

//可配置的帧列表

}

RSM { //节点名称为 RSM 的节点的定义

LIN_protocol = “2.0”; //该节点依据 LIN 协议 2.0 设计

configured_NAD = 0x20; //配置 NAD 为 0x20

product_id = 0x4E4E, 0x4553, 1; //产品 ID:厂商 ID 为 0x4E4E,

//功能 ID 为 0x4553,可变 ID 为 1

response_error = RSMerror; //应答错误名称:RSMerror

P2_min = 150 ms; //参照节点性能文件注释

ST_min = 50 ms; //参照节点性能文件注释

configurable_frames {CEM_Frm1 = 0x0001; LSM_Frm1 = 0x0002; LSM_Frm2 = 0x0003;}

//可配置的帧列表

}

}

Signals { //信号定义

IntLightsReq: 2, 0, CEM, LSM, RSM; //信号名称:IntLightsReq,

//长度:2,初始值:0,

//发布节点:CEM,收听节点:LSM、RSM

RightIntLightsSwitch: 8, 0, RSM, CEM; //信号名称:RightIntLightsSwitch,

//长度:8,初始值:0,

//发布节点:RSM,收听节点:CEM

LeftIntlLightsSwitch: 8, 0, LSM, CEM; //信号名称:LeftIntlLightsSwitch,

//长度:8,初始值:0,

//发布节点:LSM,收听节点:CEM

LSMerror, 1, 0, LSM, CEM; //信号名称:LSMerror,长度:1,初始值:0,

//发布节点:LSM,收听节点:CEM

RSMerror, 1, 0, LSM, CEM; //信号名称:RSMerror,长度:1,初始值:0,

//发布节点:LSM,收听节点:CEM

IntTest, 2, 0, LSM, CEM; //信号名称:IntTest,长度:2,初始值:0,

//发布节点:LSM,收听节点:CEM

}

Frames { //帧定义

CEM_Frm1: 0x01, CEM, 1 { //帧名称:CEM_Frm1,帧 ID:0x01,

//该帧的发布节点:CEM,数据段为 1 个字节

InternalLightsRequest, 0; //包含的信号名称

//为 InternalLightsRequest,

//在帧中的偏移量为 0

}

LSM_Frm1: 0x02, LSM, 2 { //帧名称:LSM_Frm1,帧 ID:0x02,

//该帧的发布节点:LSM,数据段为 2 个字节

LeftIntLightsSwitch, 0; //包含的信号名称为 LeftIntLightsSwitch,

//在帧中的偏移量为 0

}

LSM_Frm2: 0x03, LSM, 1 { //帧名称:LSM_Frm2,帧 ID:0x03,

//该帧的发布节点:LSM,数据段为 1 个字节

LSMerror, 0; //包含的信号名称为 LSMerror,帧中偏移量为 0

IntError, 1; //包含的信号名称为 IntError,帧中偏移量为 1

}

RSM_Frm1: 0x04, RSM, 2 { //帧名称:RSM_Frm1,帧 ID:0x04,

//该帧的发布节点:RSM,数据段为 2 个字节

RightIntLightsSwitch, 0; //包含的信号名称为 RightIntLightsSwitch,

//在帧中的偏移量为 0

}

RSM_Frm2: 0x05, RSM, 1 { //帧名称:RSM_Frm2,帧 ID:0x05,

//该帧的发布节点:RSM,数据段为 1 个字节

RSMerror, 0; //包含的信号名称为 RSMerror,帧中偏移量为 0

}

}

Event_triggered_frames { //事件触发帧定义 Node_Status_Event : Collision_resolver, 0x06, RSM_Frm1, LSM_Frm1;

//事件触发帧名称:Node_Status_Event,

//冲突解决进度表:Collision_resolver,

//事件触发帧的帧 ID:0x06

//关联的无条件帧为 RSM_Frm1,LSM_Frm1

}

Schedule_tables { //进度表定义

Configuration_Schedule { //进度表名称为:Configuration_Schedule

AssignNAD {LSM} delay 15 ms; //给节点 LSM 分配NAD,帧时隙为 15ms AssignFrameIdRange {LSM, 0} delay 15 ms;

AssignFrameId {RSM, CEM_Frm1} delay 15 ms;

AssignFrameId {RSM, RSM_Frm1} delay 15 ms;

AssignFrameId {RSM, RSM_Frm2} delay 15 ms;

}

//给节点 LSM 从第 0 帧开始分配 PID,

//帧时隙为 15ms

//给节点 RSM 的帧 CEM_Frm1 分配 PID,

//帧时隙为 15ms

//给节点 RSM 的帧 RSM_Frm1 分配 PID,

//帧时隙为 15ms

//给节点 RSM 的帧 RSM_Frm2 分配 PID,

//帧时隙为 15ms

Normal_Schedule { //进度表名称为:Normal_Schedule

CEM_Frm1 delay 15 ms; //帧 CEM_Frm1,帧时隙 15ms

LSM_Frm2 delay 15 ms; //帧 LSM_Frm2,帧时隙 15ms

RSM_Frm2 delay 15 ms; //帧 RSM_Frm2,帧时隙 15ms

Node_Status_Event delay 10 ms; //事件触发帧 Node_Status_Event,

//帧时隙 10ms

}

MRF_schedule { /进度表名称为:MRF_schedule

MasterReq delay 10 ms; //主机请求帧,帧时隙 10ms

}

SRF_schedule { //进度表名称为:SRF_schedule

SlaveResp delay 10 ms; //从机应答帧,帧时隙 10ms

}

Collision_resolver { //发生冲突时需保证非事件触发帧的传输时序

//进度表名称:Collision_resolver

CEM_Frm1 delay 15 ms; //帧 CEM_Frm1,帧时隙 15ms

LSM_Frm2 delay 15 ms; //帧 LSM_Frm2,帧时隙 15ms

RSM_Frm2 delay 15 ms; //帧 RSM_Frm2,帧时隙 15ms

RSM_Frm1 delay 10 ms; //轮询 RSM 节点

//帧 RSM_Frm1,帧时隙 10ms

CEM_Frm1 delay 15 ms; //帧 CEM_Frm1,帧时隙 15ms

LSM_Frm2 delay 15 ms; //帧 LSM_Frm2,帧时隙 15ms

RSM_Frm2 delay 15 ms; //帧 RSM_Frm2,帧时隙 15ms

LSM_Frm1 delay 10 ms; //轮询 LSM 节点

//帧 LSM_Frm1,帧时隙 10ms

}

}

Signal_encoding_types { //信号编码类型:Signal_encoding_types

Dig2Bit { //信号编码类型名称:Dig2Bit

logical_value, 0, “off”; //逻辑值 0,代表“off”

logical_value, 1, “on”; //逻辑值 1,代表“on”

logical_value, 2, “error”; //逻辑值 2,代表“error”

logical_value, 3, “void”; //逻辑值 3,代表“void”

}

ErrorEncoding { //信号编码类型名称:ErrorEncoding

logical_value, 0, “OK”; //逻辑值 0,代表“OK”

logical_value, 1, “error”; //逻辑值 1,代表“error”

}

FaultStateEncoding { //信号编码类型名称:FaultStateEncoding

logical_value, 0, “No test result”; //逻辑值 0,代表“No test result”

logical_value, 1, “failed”; //逻辑值 1,代表“failed”

logical_value, 2, “passed”; //逻辑值 2,代表“passed”

logical_value, 3, “not used”; //逻辑值 3,代表“not used”

}

LightEncoding { //信号编码类型名称:LightEncoding

logical_value, 0, “Off”; //逻辑值:0,代表:“Off”

hysical_value, 1, 254, 1, 100, “lux”; //物理值:1,最小值:1,

//最大值:254,缩放倍数:1,

//偏移量:100,文字信息:“lux”

logical_value, 255, “error”; //逻辑值:255,代表:“error”

}

}

Signal_representation { //信号表示定义

Dig2Bit: InternalLightsRequest; //应用信号编码类型为 Dig2Bit 的信号

//InternalLightsRequest

ErrorEncoding: RSMerror, LSMerror; //应用信号编码类型为 ErrorEncoding 的

//信号 RSMerror,LSMerror

FaultStateEncoding: IntError; //应用信号编码类型为

//FaultStateEncoding 的信号 IntError

LightEncoding: RightIntLightsSwitch, LefttIntLightsSwitch;

//应用信号编码类型为 LightEncoding 的

//信号 RightIntLightsSwitch,

//LefttIntLightsSwitch

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值