0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

睿远研究院丨IO-Link规范解读(十一):ISDU状态机与EVENT事件

传感器专家网 2025-11-29 18:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上篇我们介绍了ISDU的典型编码格式和应用案例,本篇我们就来详细介绍下,ISDU的状态机,并把EVENT事件的逻辑,给大家好好解析下。

1主站ISDU状态机

wKgZPGkoKDGAXphRAADD_3Uz7eo273.png

如上图所示,ISDU的状态机的核心是请求,等待和响应

如果主站请求的是DPP参数,即ISDU 0x00,0x01的参数,从AL层还是走的ISDU逻辑,但底层走了DL_Read/WriteParam的逻辑,即走的是Page通道。也就是好端端的ISDU愣是被它拆分了两个通道,增加了复杂性。

因为通常读写ISDU的命令都很长,一个循环放不下,都是多个循环来拆包,组包。具体的几个状态如下:

wKgZPGkoKDGAEJv5AAFJJeDr5b8976.png

T2:触发OD.req开始请求ISDU;

T3:持续触发写请求,请求ISDU数据;

T4:开始计时器(ISDUTime),查看是否会超时;

T5:开始读请求,对之前写命令的读请求;

T6:如果从站开始回应,则停止定时器

T7:持续的读取ISDU数据;

T8:全部读取后,FlowCtrl为IDLE状态;

T11:如果ISDU错误,则触发ISDUAbort命令,并向DL层确认ISDU错误;

T13:通过OD.req来获取相关参数;

T14:在正常PD交互中,采用IDLE的FlowCtrl进行OD交互

T15:如果通信中断,消息处理通知DL_Mode处理模块,需要把ISDU模块去激活。

2 从站ISDU状态机

wKgZPGkoKDGAIU3IAAEVGM1BXTg527.png

从站ISDU的状态机和主站的状态很类似,请求、等待和响应三个状态缺一不可。

wKgZPGkoKDGAVcLcAADpAQXl4P8475.png

T1:收到激活事件,从非激活状态迁移到Idle状态,等待ISDU的命令

T2:开始接收ISDU数据,迁移状态到Request_2

T3:持续接受数据,因为OD的数据大,而每次循环一般就传递1~2个OD数据,需要几个循环才能传输完,每次接收的OD数据需要缓存,等待接收完毕

T4:所有ISDU接收完毕后,触发RecComplete事件,进入wait状态,该状态下尚未解析完成,如果主站查询数据,则回应busy

T5:从站回应busy

T6:从站做好准备,迁移状态到Response

T7:等待主站的read命令,开始读取数据,调用OD.rsp来回应主站

T8:发送完成,触发SendComplete事件,回到idle状态

T9:接收到ISDUAbort命令

T10:接收ISDUAbort命令

T11:接收ISDUAbort命令

T12:SM模块通知ISDU模块,去激活,回到非激活状态

T13:收到ISDU Error消息,回到Idle状态

T14:在Idle状态下,从站回应no service的命令

T15:如果ISDU Error触发ISDU Abort

T16:如果ISDU Error触发ISDU Abort

3 Event事件解析

介绍完ISDU之后,我们来看一下事件。

事件有时候又称为诊断,它也是通过OD字段来传输,它的发起端虽然是主站来发起请求,但是最初的发起还是从站,从站会在每次传输时,在最后字节的一个bit置位,告诉主站自己有事件。

就好像小学生要回答问题,不能自己直接回答,得先举手示意。这时候老师(主站)会问学生(从站),你有什么事情或者你想回答什么问题(事件)吗?这时候学生(从站)就会把自己的事情(事件)告诉老师(主站)。

Event在协议栈中以16 bit的EventCode存在,每个EventCode表示一个事件的定义;而所有的EventCode又可以分为三类:Error、Warning和Notification。

Error/Warning:简单归结为错误,故障类,比较严重,该类事件以出现/消失成对出现,如果出现了Error/Warning,需要维护人员去关注,直到它消失为止;

Notification:仅仅是通知,不是很严重,可能并不需要关注,它没有出现/消失这种机制,就是见到的SingleShot。

01事件上报

wKgZPGkoKDGAC5mZAAElzD11G-E720.png

如上图所示,上报事件通过查看从站的内存里的数据来上报,规范规定了一次性最大临时存6个事件,共占用18个字节,加上一个状态字节,共19字节

wKgZPGkoKDKATLThAADRBAKjpMw169.png

02事件的状态机

最后看一下事件的状态机,这个就比较简单了,主站状态机如下:

wKgZPGkoKDKAOPakAAC2SvhYifo609.png

主站的状态机基本就是Idle和读事件,读完确认就结束了。

wKgZPGkoKDKAOuMEAACQeA5slZg181.png

从站也很简单,就是触发事件,读取事件的时候,要冻结内存,不能让新事件写入内存,导致干扰。

4 应用层的OD模块状态机

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

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

wKgZPGkoKDKASLqbAAErPQ8YW28679.png

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

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

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

wKgZPGkoKDKAcoFSAAKWOa5Eqd8375.png

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

wKgZPGkoKDOAfE8VAACn7efmvJU636.png

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

四个状态如下:

wKgZPGkoKDOAefXfAAEeW70nXsg758.png

5应用层的OD传输序列

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

wKgZPGkoKDOAc7gmAAFX0hfh0DQ960.png

01 ISDU的传输

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

主站AL层调用DL的DL_ISDUTransport_req函数

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

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

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

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

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

02 DPP的传输

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

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

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

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

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

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

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

03 关于AL Abort

wKgZPGkoKDOADcIqAAFrLcvX5BQ227.png

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

6应用层的EVENT模块

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

01 主站AL EVENT

wKgZPGkoKDOAFqqLAACZTqs1rXI832.pngwKgZPGkoKDOAfUOqAAFA9JS0_3s367.png

02从站AL EVENT

wKgZPGkoKDOAVyCWAACF7qXzVH4286.pngwKgZPGkoKDSAPY-NAAFWAgaHqno342.png

03事件上报过程

wKgZPGkoKDSABbdmAAHA-zhB-Ss464.png

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

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

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

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

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

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

结语

好了,本篇总结了ISDU的状态机和EVENT事件的业务逻辑,以及对AL应用层的OD和Event做了介绍,内容有点多,希望大家慢慢消化。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IO-Link
    +关注

    关注

    2

    文章

    194

    浏览量

    20493
  • IO-Link收发器

    关注

    0

    文章

    12

    浏览量

    6273
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    研究院IO-Link规范解读(十二):SM模块与CM模块解析

    Manager,负责协调主站的各个应用程序模块,并根据端口状态启动或停止其他应用程序。 1 System Manager模块 System Manager 模块作为IO-Link最核心的模块,承上启下,把从最底层
    的头像 发表于 12-04 18:27 146次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(十二):SM模块与CM模块解析

    研究院IO-Link规范解读(十):ISDU详解

    的参数。传感器的各项参数设置都要靠它,它不仅可以设置参数,也可以作为只读参数来读取,甚至可以作为命令,基本是无所不能了。 1 ISDU总览 ISDU与PD数据不同,在请求的状态下才会发起,一般由主站发起相关请求,比如读
    的头像 发表于 11-24 10:37 3614次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(十):<b class='flag-5'>ISDU</b>详解

    研究院IO-Link规范解读(八):M-Sequence Type 与消息处理状态机

    丢弃,减少后端工作量。 那么今天我们就来深入研究下,消息处理模块中提到的各类M-Sequence,以及主从站的消息处理状态机!   1 M-Sequence Type 上回讲到主站发出来的MC和CKT
    的头像 发表于 11-07 16:18 5563次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(八):M-Sequence Type 与消息处理<b class='flag-5'>状态机</b>

    研究院IO-Link规范解读(七):消息处理模块

    ,特别是固定的协议一般都有协议的报文头和报文尾,根据简单规则过滤该报文是否为合法报文,避免进一步的深度解析,减少MCU的处理压力。 1 M-Sequence定义 11.8 主站与从站的交互,通过一系列的消息来交换数据,因此我们称之为“M-Sequence”,它也是IO-Lin
    的头像 发表于 11-01 17:43 8623次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(七):消息处理模块

    研究院IO-Link规范解读(六):主从站状态机解析

    前言 书接上文,今天我们就来好好聊聊主从站的DL-Mode状态机,还请各位童鞋前排坐好! 1主站状态机解析 主站的DL-Mode状态机有5个大状态,也是我们很熟悉的 建立通信、开始、预
    的头像 发表于 10-28 17:34 5688次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(六):主从站<b class='flag-5'>状态机</b>解析

    研究院IO-Link规范解读(三):物理层概览

    前言 物理层是 IO-Link 通信的 “硬件底座”,它直接决定了系统的可靠性、抗干扰能力和部署灵活性。打个比方,就像盖房子,物理层就是地基和骨架,地基不稳、骨架不牢,房子肯定住着不踏实。本期我们
    的头像 发表于 10-21 17:26 2740次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(三):物理层概览

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

    前言 本篇就来讲讲IO-Link的数据链路层。 01 链路层总览 数据链路层(Data Link Layers)在整个IO-Link协议栈起到承上启下的作用,通过物理链路在主从站之间传递 消息,其
    的头像 发表于 10-20 18:08 3874次阅读
    <b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(五):数据链路层解析

    研究院IO-Link规范解读(二):IO-Link通信技术概述

    前言 今天我们继续解读IO-Link 1.1.4规范,本篇文章将给大家介绍IO-Link技术的概览,包含IO-Link命名的含义、主从站交互
    的头像 发表于 09-25 19:25 377次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(二):<b class='flag-5'>IO-Link</b>通信技术概述

    研究院IO-Link规范解读(一):技术定义与组织规范

      IO-Link 技术定义与组织规范 从今日起,小将开始长篇连载IO-Link规范解读系列文
    的头像 发表于 09-18 18:17 595次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>远</b><b class='flag-5'>研究院</b><b class='flag-5'>丨</b><b class='flag-5'>IO-Link</b><b class='flag-5'>规范</b><b class='flag-5'>解读</b>(一):技术定义与组织<b class='flag-5'>规范</b>

    RASIGHT IO-Link智能传感器通信解决方案

      南京工业互联网有限公司 是一家技术驱动的工业通信及工业物联网解决方案提供商,构建了以IO-Link技术为核心的产品矩阵,提供产品的定制开发、技术服务以及相关解决方案,致力于以标准化、低成本
    的头像 发表于 08-11 17:42 532次阅读
    RASIGHT <b class='flag-5'>睿</b><b class='flag-5'>远</b> <b class='flag-5'>IO-Link</b>智能传感器通信解决方案

    Analog Devices / Maxim Integrated MAXREFDES177 IO-Link通用模拟IO特性/框图

    Analog Devices MAXREFDES177 IO-Link通用模拟IO是一款完备的IO-Link®通用模拟输入-输出 (IO) 参考设计,采用内置集成保护功能的MAX225
    的头像 发表于 06-30 09:30 539次阅读
    Analog Devices / Maxim Integrated MAXREFDES177 <b class='flag-5'>IO-Link</b>通用模拟<b class='flag-5'>IO</b>特性/框图

    虹科直播回放 | IO-Link技术概述与虹科IO-Link OEM

    虹科「一站式通讯解决方案」系列直播第1期圆满落幕!本期主题为「IO-Link技术概述与虹科IO-LinkOEM」感谢各位朋友的热情参与!本期直播中虹科专业讲师瞿工带大家走进工业4.0深度解读
    的头像 发表于 02-19 17:34 1137次阅读
    虹科直播回放 | <b class='flag-5'>IO-Link</b>技术概述与虹科<b class='flag-5'>IO-Link</b> OEM

    IO-Link收发器怎么数据读取

    IO-Link(IEC61131-9)是一个开放的标准串行通信协议,它允许从传感器和设备中双向交换数据。这些传感器和设备需要支持IO-Link并连接到主机上。IO-Link收发器在这一通信过程中
    的头像 发表于 02-02 16:34 1182次阅读

    IO-Link接口的功能和特点

    IO-Link是一种创新的工业自动化通信接口标准,旨在实现传感器、执行器等现场设备与控制系统(如PLC)之间的数字化、双向通信。IO-Link接口不仅简化了设备连接和布线,还提升了设备的灵活性
    的头像 发表于 02-02 15:50 2081次阅读

    Profinet协议IO-Link主站网关-三格电子

    , 内部集成以太网交换机,方便将设备组成菊花链。8个IO-Link端口是Class-A规范的接口形式,符合IO-Link V1.1.3版本要求,支持COM1、COM2、COM3三种通讯速率,可以连接各品牌
    的头像 发表于 01-07 16:26 1022次阅读
    Profinet协议<b class='flag-5'>IO-Link</b>主站网关-三格电子