“保姆级”车载LIN总线教程(二)-堪称全网“最细”系列

目录

1.帧头结构

同步间隔场和同步场(Sync Break Field and Sync Field)

ID场(Identifier Field)

2.帧响应

3.总结


今天是中秋假期的最后一天,U1S1这三天假期也太快了,远比上三天班的时间快多了,这不M哥也是提前开始了工作,正式进入打工模式(废话就此打住)。上节内容主要对LIN总线的网络结构及其通信原理进行了简单介绍,本节将对LIN总线的报文帧结构进行介绍。

LIN总线中主节点发送帧头(Header),然后各个从节点根据帧头给出响应(Response),请求加响应组成一个完整的帧。

1.帧头结构

主节点发送相关报文的帧头到总线上。帧头由同步间隔场(Sync Break Field)、同步场(Sync Field)和PID(Protected Identifier,受保护ID)场构成,其结构如下图所示。

同步间隔场和同步场(Sync Break Field and Sync Field)

同步间隔场是一个特殊的位序列,是唯一一个不符合字节场格式的场,从节点需要检测到至少连续13个显性位才认为是间隔信号。从节点根据同步间隔场识别帧头的开头,然后,为确保所有从节点使用相同的时钟发送和接收,主节点发送同步间隔场界定符,再发送同步场,同步场为一个字节,即0x55。时钟的计算方式为:从节点测量同步场的第一个下降沿与最后一个下降沿之间的时间差,然后除以八,结果等于一个位时间,即可以得到主机节点实际传输 1 位所用的时间,即位速率。

从节点必须通过同步场与主节点达成同步,因此,这两个场主要用于作为数据传输的开始以及主从节点的时间同步,以保证数据传输的准确。

ID场(Identifier Field)

受保护的ID由帧ID和两个奇偶效验位组成。在上述同步完成后,主节点根据LDF文件中定义的各从节点关系传输报文的ID,从节点根据帧头ID可以不作出回应,也可以发送或接收响应。由于ID具有重要意义,因此使用奇偶校验位P0和P1对其进行保护,奇偶校验位P0和P1的计算基于异或逻辑,其中P0表示偶校验,P1表示奇校验,ID和奇偶校验位的组合就是PID。

2.帧响应

从节点使用帧响应来响应主节点的请求。各从节点根据帧头中的ID来确定是否需要生成响应。帧响应即为数据场,最多可以传输八个字节的数据,且从最低有效字节到最高有效字节以升序进行传输。同时,字节通常是从最低有效位到最高有效位进行传输的。这意味着从响应的开头到结尾,位和字节的有效性单调递增

校验和场是为了对帧传输内容进行校验。校验和分为标准型校验与增强型校验。采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种校验和。若使用经典校验和,则仅保护有用数据。若使用增强型校验和,则保护有用数据和PID。

3.总结

本节对帧结构的内容进行分享,可以为后续分析报文的结构提供基础。

欢迎各位读者一起学习,如有错误之处,烦请评论区留言讨论,以共同进步!

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
本资料面向 LIN 总线初学者,对什么是 LINLIN 的特征,物理层、协议层及应用层相关规定进行说明。 本资料主要是针对 LIN2.1 讲解。 使用注意事项............................................................................................................................................. 1 1. LIN是什么? ......................................................................................................................................... 4 1.1 LIN子网(Cluster)与节点(Node) ............................................................................................................ 5 1.2 主/从机节点与主/从机任务.................................................................................................................. 7 2. LIN的特点 ............................................................................................................................................. 8 3. LIN协议层 ............................................................................................................................................. 9 3.1 的结构............................................................................................................................................. 9 3.1.1 同步间隔段(Break Field) ................................................................................................................... 9 3.1.2 同步段(Sync Byte Field) .................................................................................................................. 10 3.1.3 受保护ID段(Protected Identifier Field).............................................................................................. 11 3.1.4 数据段(Data Field)........................................................................................................................... 12 3.1.5 校验和段(Checksum Field) .............................................................................................................. 13
当涉及到 Vue DHTMLX-Gantt 导出 Excel 的保姆完整教程时,以下是一步一步的指南: 1. 确保您的项目中已经安装了 Vue 和 DHTMLX-Gantt。如果尚未安装,请使用以下命令进行安装: ```bash npm install vue dhtmlx-gantt ``` 2. 在您的 Vue 组件中引入所需的库和样式: ```javascript import 'dhtmlx-gantt'; import 'dhtmlx-gantt/codebase/dhtmlxgantt.css'; ``` 3. 创建一个 Vue 组件,并在模板中添加一个 Gantt 图表和一个按钮: ```html <template> <div ref="ganttContainer" style="width: 100%; height: 600px;"></div> <button @click="exportData">导出 Excel</button> </template> <script> import * as XLSX from 'xlsx'; import FileSaver from 'file-saver'; export default { mounted() { const ganttContainer = this.$refs.ganttContainer; gantt.init(ganttContainer); // 设置 Gantt 图表的配置和数据 // 示例数据 const tasks = [ { id: 1, text: '任务1', start_date: '2022-01-01', duration: 5, progress: 0.5 }, { id: 2, text: '任务2', start_date: '2022-01-06', duration: 4, progress: 0.2 }, // 其他任务... ]; gantt.parse({ data: tasks }); }, methods: { exportData() { const gantt = this.$refs.ganttContainer.$gantt; const tasks = gantt.getDatastore('task').getItems(); // 将任务数据转换为 Excel 数据格式 const data = tasks.map((task) => { return { id: task.id, text: task.text, start_date: task.start_date, duration: task.duration, progress: task.progress, }; }); // 创建 Excel 文件 const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, 'Gantt Data'); const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); const excelData = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 下载 Excel 文件 FileSaver.saveAs(excelData, 'gantt_data.xlsx'); }, }, }; </script> <style> /* 可选的样式 */ </style> ``` 4. 在上述示例代码中,需要注意以下部分: - 在 `mounted` 钩子中,使用 `gantt.init(ganttContainer)` 初始化 Gantt 图表,并根据您的需求设置其配置和数据。 - `exportData` 方法用于将 Gantt 图表数据导出到 Excel。确保在 `exportData` 方法中的 `this.$refs.ganttContainer.$gantt` 是对 Gantt 图表组件的正确引用。 - 点击 "导出 Excel" 按钮时,将会生成一个名为 `gantt_data.xlsx` 的 Excel 文件,其中包含了 Gantt 图表的数据。 这就是使用 Vue DHTMLX-Gantt 导出 Excel 的保姆完整教程。希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车测试M哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值