欢迎来到纳米网!
首页 > 公众号文章>正文

IO-Link ISDU状态机与EVENT事件详解

上篇我们介绍了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做了介绍,内容有点多,希望大家慢慢消化。


猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^