工控网首页
>

应用设计

>

睿远研究院丨IO-Link数据链路层解析

睿远研究院丨IO-Link数据链路层解析

2025/5/15 15:17:13

PART 01 链路层总览

数据链路层(Data Link Layers)在整个IO-Link协议栈起到承上启下的作用,通过物理链路在主从站之间传递消息,其包含消息处理模块、模式转换模块、PD处理及OD处理模块。

——DL层的主要功能和职责——

DL层定义了一组可供应用层(AL)使用的DL-services,用于交换过程数据(PD)和按需数据(OD)。

DL层定义了另一组DL-services供系统管理(SM)使用,用于检索设备识别参数和设置数据链路内的状态机。

DL层使用物理层服务(PL-Services)来控制物理层(PL)并交换UART帧。

DL层负责消息的错误检测(无论是内部协议上的错误还是从物理层报告的错误)以及适当的纠正措施(例如重试)。

图片

整体协议栈的开发90%的代码基本集中在数据链路层。数据链路层包含四大模块,On-RequestData、ProcessData、DL-Mode、Message。而OD又由三个小模块组成,分别为ISDU、CMD和Event。

图片

Message:和物理层打交道,处理物理层传递的消息,对消息进行解码,分析,缓存,交由其他模块(PD和OD)处理,并接受其他模块的数据,并打包校验传递给物理层发送;

On-request:根据Message模块传递过来的数据进行分类,分别给ISDU、CMD、Event三个不同的模块处理;

DL-mode:与SystemManagement模块保持联系,确定当前从站或者主站所处的状态,比如是Pre Operate还是Operate状态等。

Process Data:处理过程数据Input和Output。

PART 02 DL-Mode

图片

DL-Mode的首要任务就是检测唤醒信号,并分别按照规定的速率进行探测从站的实际速率。

当主站准备试图与从站建立IO-Link通信时,会先发一个唤醒信号,并紧接着发送第一个消息( 0xA20 x00 ),该消息是读取从站的CycleTime;

主站在唤醒请求(WURQ)之后,DL模块在TREN时间和TDMT时间后,按照COM3、COM2和COM1的指定传输速率,顺序发送测试消息,直到收到从站的报文响应。

步骤1:主消息以COM3(230400bit/s)的传输速率发送;

步骤2:主消息以COM2(38400bit/s)的传输速率发送;

步骤3:主消息以COM1(4800bit/s)的传输速率发送;

步骤4:设备响应消息以COM1的传输速率发送。

图片

从上图看,每隔500ms会重复相关的探测,直到从站回复为止。那么每隔500ms发送的数据又是什么呢?请看下图:

图片

在一个发送周期内,其实还有三个小周期,规范里称之为3次重试,即三次重试不成功后,会重新进入SIO状态并再次唤醒和检测。

我们再放大这个图,看到如下每个重试小周期的具体序列,先唤醒,再三次不同速率的探测。

从这个理论可以得知,我们可以任意修改探测报文的速率,即如果可以同时修改主从站的速率,可以实现自定义的IO-Link速率,我们目前在400K的速率上成功实现IO-Link通信。

图片

在数据链路层的时间检测上,要遵循如下规则:

图片

图片

PART 03 关于Fallback

图片

看过规范的小伙伴,应该注意到IO-Link主站有发送fallback的能力,这个fallback命令可以是让设备强制切换到SIO模式,这种命令在实际中可能用的比较少。

小编觉得这个命令对主站有实际效果,就是发送命令后,主站不再进行IO-Link通信,转而进入DI/DO模式,当然从站也要进入DI/DO模式,即需要把Pin4的串口模式要转变为DI/DO模式。

规范要求在接受到Fallback指令后,最大500ms,就要切换到SIO模式。

OK,本篇就先介绍这里,下篇小编将针对主从站DL-Mode模块的状态机,进行一下详细介绍,期待各位看官持续关注!

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

睿远研究院丨IO-Link物理层编码解析

【睿远研究院】IO-Link物理层概览

IO-Link通信技术概述

睿远研究院丨IO-Link规范解读