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
}