IO-Link协议规范解读(五):数据链路层解析

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模块的状态机,进行一下详细介绍,期待各位看官持续关注!

欢迎关注微信公众号:Rasight,与我们交流互动!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值