3分钟get同星LIN功能操作流程(推荐收藏)

本文提供了一篇详细的同星LIN主、从节点仿真操作教程,包括硬件连接、TSMaster软件使用、LIN诊断功能及插入报文帧功能的示例。介绍了如何进行LIN主节点的报文发送、从节点响应报文的仿真,以及自动地址分配和C脚本插入报文的实践。
摘要由CSDN通过智能技术生成

本文导读

LIN 是 Local Interconnect Network 的缩写,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface,通用异步收发器/串行通信接口)的低成本串行通信协议。可用于汽车、家电、办公设备等多种领域。

本文主要针对同星LIN主、从节点仿真功能以及其他功能的操作流程出一个详细教程。

本文目录:

一、同星LIN主节点仿真功能操作

1. 硬件连接准备

2. TSMaster软件操作流程

3. 【示例一】LIN诊断功能

4. 【示例二】插入报文帧inject_lin_message函数的使用

二、同星LIN从节点/监听节点功能操作

1. 硬件连接准备

2. 仿真从节点发送响应报文

一、同星LIN主节点仿真功能操作

1. 硬件连接准备

使用同星LIN硬件仿真主节点模式下,需要外部电源供电,为了保持LIN总线电平信号跟被测件一致,连接示意图如下:

2.TSMaster软件操作流程

以下操作流程以TSMaster仿真LIN主节点,被测件从节点为LED灯为示例。

2.1 导入LDF文件数据库

通过数据库添加LED灯的LDF文件后,可以查看到LDF文件里的【节点】分别有【master】和【RGB_Slave】, 并包含了主节点调度表信息,报文和信号定义:

2.2 创建LIN发送窗口,进行LIN主节点配置

勾选【主节点模式】,然后选择运行调度表Run_normal,并选择仿真【master主节点】,可以看到调度表的两条报文已勾选。此时可以【部署】运行调度表。

▲【注意】:需要注意调度表中主从节点报文的发送方向。

仿真master主节点的报文方向:【发】

从节点响应的报文方向为:【收】

即:报文0x02为主节点发送给RGB从节点的控制报文,所以方向为发送,而报文0x10为从节点RGB给主节点反馈信息用,所以方向为接收。

2.3 LIN报文信息监测

正常情况下,调度表运行后,可以在LIN报文信息窗口查看到两条报文的数据内容,表明从节点与主节点正常通信并反馈数据。

▲非正常情况:如果出现从节点的报文响应数据为空,可以判断为从节点无响应,此时可以检测LIN总线连接是否正确或者LIN从节点供电是否正常等,下图所示:

2.4  修改LIN主节点控制报文内容

在【LIN发送窗口】选择主节点报文如0x02,可以直接修改LIN信号的原始值或者物理值,进行报文信号赋值。

通过修改RGB三种不同颜色的信号数值,可以组合出来同的灯光色彩,如下图为RGB灯的点亮情况,供参考:

3. 【示例一】LIN诊断功能-自动分配地址

通常RGB点亮功能测试前,需要先对RGB灯进行自动分配地址,然后才能进行灯光颜色,亮度测试,版本号读取等等。

【背景】:根据LIN自动分配地址的协议,需要单次发送多条3C诊断报文进行地址分配,而TSMaster是可以通过【Single Frame】模式来完成。

RGB灯的自动分配地址的报文如下:

1.单次发送:7F 06 B5 FF 7F 01 02 FF

2.单次发送:7F 06 B5 FF 7F 02 02 01

3.单次发送:7F 06 B5 FF 7F 03 02 FF

4.单次发送:7F 06 B5 FF 7F 04 02 FF

【实操】:在TSMaster软件的【Single Frame】运行诊断指令,创建好相应报文后分别从上往下,单次发送报文行1、2、3、4,完成RGB的自动分配地址:

4. 【示例二】插入报文帧inject_lin_message函数的使用

有一个常见的使用场景,当仿真主节点正在运行调度表时,在不停止运行调度表的情况下,插入一帧其他的LIN报文帧,比如0x3C 报文,这个功能可以通过inject_lin_message函数来实现。

创建一个新的C脚本编辑器,选择【按键事件】,比如创建按键”A”执行插入报文。

示例代码如下:

TLIN f0 = {0,0x0,0x1,8,0x3C,0x0,0,0,{0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};

com.inject_lin_message(&f0);

app.wait(10, "");

然后编译运行C脚本,在已运行部署调度表的情况下,按下“A”键,在LIN报文消息可以观察到3C报文发送。

【TSMaster软件小技巧-快速生成LIN报文的C代码】:可以在调度表里新创建一条LIN报文,右键复制为C脚本,就可以把报文的C代码快速复制到脚本中。

二、同星LIN从节点/监听节点功能操作

1. 硬件连接准备

仿真从节点,可以不需要给同星LIN卡供电。

2. 仿真从节点发送响应报文

当同星LIN卡仿真为从节点时,ECU主节点需要发送调度表的报头Header,从节点响应报文才会正常发出。

本文以TSMaster 的LIN通道1仿真主节点运行调度表,LIN通道2仿真从节点响应报文0x10(Tech_Info_RGB_Slave) 。

首先,LIN通道1仿真主节点运行调度表,其中从节点响应报文的header方向为【收】:

部署运行之后,可以看到LIN从节点报文报头已发出,数据为空:

然后, LIN通道2仿真从节点发送响应报文0x10(Tech_Info_RGB_Slave),方向为【发】,修改数据内容:

点击【部署】,可以从LIN报文信息里观察到从节点报文0x10成功发出响应报文,主节点同样接收成功。

A:sqlite3_get_table是SQLite库中的一个C函数,用于执行指定的SQL查询,并将结果存储在指向指针的2D字符数组中,以便进行进一步处理。 具体来说,sqlite3_get_table函数的功能如下: 1. 执行SQL查询语句(可以是SELECT语句、INSERT、UPDATE、DELETE等); 2. 将结果集的表头(列名称)和数据行存储在2D字符数组中,数组的每一行表示一行结果集的数据,第一行是列名称; 3. 返回一个整数值,表示结果集中包含的数据行数(不包括表头)。 sqlite3_get_table函数的函数原型如下: ``` int sqlite3_get_table( sqlite3 *db, /* Database handle */ const char *zSql, /* SQL statement to execute */ char ***pazResult, /* OUT: 2D array of result strings */ int *pnRow, /* OUT: Number of rows in the result */ int *pnColumn, /* OUT: Number of columns in the result */ char **pzErrmsg /* OUT: Error message string, if an error occurs */ ); ``` 其中,参数说明如下: - **db:**表示已打开SQLite数据库的指针; - **zSql:**表示要执行的SQL查询语句的字符串; - **pazResult:**表示一个指向字符指针(字符数组)的指针,用于存储结果集; - **pnRow:**表示一个整数指针(输出参数),用于存储结果集中的数据行数; - **pnColumn:**表示一个整数指针(输出参数),用于存储结果集中的列数; - **pzErrmsg:**表示一个指向字符指针(字符数组)的指针,用于存储发生错误时的错误消息(如果有)。 需要注意的是,sqlite3_get_table函数会为结果集中的每个字符串和表头列名动态分配内存,因此在使用完毕后应该调用sqlite3_free_table函数释放内存。同时,由于sqlite3_get_table函数调用了sqlite3_exec函数,因此可以通过sqlite3_exec函数中的Callback回调函数来实现对查询结果的处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TOSUN同星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值