工控网首页
>

应用设计

>

IO-Link 应用层OD

IO-Link 应用层OD

2025/8/7 15:21:36

前言

上回聊到的EVENT状态机和ISDU状态机,这俩都属于OD这个模块的内容,OD又分为数据链路层和应用层两块,今天我们就展开聊一下应用层的OD和EVENT部分。

01 应用层的OD模块状态机

下图先看一下主站应用层的OD模块:

图片

从这个状态机,我们看到AL应用层的OD部分,仅仅包含了ISDU和DPP两方面。

对于index 00和01的读写,划归到DL Param部分,对于其他的划归于ISDU部分,当主站发起AL Service时,协议栈开始构建DL Service,根据index来确定是走左边,还是走右边。

当进入await状态时,不允许第二个AL Service来访问,否则就会被禁止,直接告知客户主站正忙。

图片

再来看下从站AL的OD模块,如下图所示:

图片

从站和主站类似,也有await状态;对于参数的读写分别进入await_AL_Write_rsp_1和await_AL_Read_rsp_2;而对于ISDU的读写,则进入Await_AL_RW_rsp_3。

四个状态如下:

图片

02 应用层的OD传输序列

那么主站和从站的ISDU和DPP是如何交互的呢?

图片

ISDU的传输

✅ 主站APP发起读取ISDU参数(Index>1)指令; 

✅主站AL层调用DL的DL_ISDUTransport_req函数

✅ 主站DL层把命令封装到消息中发送给从站 

✅ 从站调用DL_ISDUTransport_ind函数对主站的ISDU读命令进行解析; 

✅ 解析后上送给AL层进行数据查询

✅ 上层的App进行数据读取,返回给AL层并继而由物理层发给主站 

✅ 主站接到从站的回应,解析报文,上送APP层。

DPP的传输

✅ 主站APP发起读取DPP参数(Inde≤1)指令; 

✅ 主站AL层面调用DL的DL_ReadParam函数 

✅ 主站DL层把命令封装到消息中发送给从站 

✅ 从站调用DL_ReadParam函数对主站的DPP读命令进行解析; 

✅ 解析后上送给AL层进行数据查询

✅ 上层的App进行数据读取,返回给AL并继而由物理层发给主站 

✅ 主站接到从站的回应,解析报文,上送APP层

关于AL Abort

图片

查询ISDU是有时间限制的,如果查询从站的ISDU没有在规定的时间内返回,则主站发送一个Abort命令,终止ISDU的查询。

03 应用层的EVENT模块

AL应用层也有单独的Event处理机制,我们分别看一下主站AL Event和从站的AL Event。

主站AL EVENT

图片

图片

从站AL EVENT

图片

图片

事件上报过程

图片

🌟从站的App创建一个事件,并开始发送请求信息 

🌟该请求信息从AL传递到DL层,并把事件缓存到内存中 

🌟从站的AL激活EventTrigger服务,置位EventFlag

🌟主站读取从站的EventFlag后,开始读取从站的StatusCode以及相关EventCode 

🌟主站把相关Event继续上报给网关,网关应用确认事件消息 

🌟主站把事件确认消息同步给从站,写入StatusCode信息,即清除事件标志,等待下一个事件的上报

结语

本篇主要对AL应用层的OD和Event做了介绍,从状态机看比DL层稍微简单些,主要管理应用层面的事务,对DL的数据进行管理和控制。

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

提交

查看更多评论
其他资讯

查看更多

睿远研究院丨IO-Link 事件解读

睿远研究院丨IO-Link ISDU详解

睿远研究院丨IO-Link OD模块解析

睿远研究院丨IO-LinkPD处理模块

睿远研究院丨IO-Link M序列解析