工控网首页
>

应用设计

>

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

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

2025/6/13 10:01:15

前言

上回咱们分解到IO-Link的消息处理模块,消息处理模块就是对每个字节进行初步分析,按照不同的通道交给不同的处理模块来处理,可以认为他是初步的消息分拣机制,合格的消息交给后续处理,不合格的消息直接丢弃,减少后端工作量。

那么今天我们就来深入研究下,消息处理模块中提到的各类M-Sequence,以及主从站的消息处理状态机

01 M-Sequence Type

上回讲到主站发出来的MCCKT两个报文,其中CKT 前的2bit是指M-Sequence Type,那么这个M-Sequence type到底有啥用,我们看规范里M-Sequence有好多种,到底怎么区分,今天就来好好讲讲。

在规范的A.2.6部分,就详细介绍了关于STARTUP、PREOPERATE、OPERATE三种模式下的M-Sequence Type。

01 / STARTUP下的M-Sequence Type图片

上图就是STARTUP模式下的M-Sequence Type,规范就定了一种即TYPE_0,1字节,同时规定了其最小recovery time是100TBit

这个最小的recovery time简单理解为循环时间就行,也就是主站每隔100TBit主动发起数据,这个时间和通讯速率有关系,如果是COM3,则是400多us的时间;如果低于这个时间在规范看来是不合理的。

02 / PREOPERATE下的M-Sequence Type

图片

PREOPERATE模式下,M-Sequence Type 可以有TYPE_0和TYPE_1,TYPE_1又分解为TYPE_1_2和TYPE_1_V,也就是OD字节长度不一样而已;

一般市面上的从站,都是TYPE_1_V类型,字节长度在8字节左右,也有部分是2字节,比如巴鲁夫的某些产品就是2字节。

M-Sequence code就是对他的编码,用于在IO-Link报文中进行传输,可以看到PREOPERATE模式下有4个code可以用。

03 / OPERATE下的M-Sequence Type

图片

再来看看OPERATE下的M-Sequence Type,其一下子增加了好多code,有21个之多,但大部分都是重复的0,而且没有2和3这两个code,很是奇怪。

那么这么多code怎么来区分呢,它是根据OD的字节和PD字节来区分的。

⭐️1~4行:

这里很好辨认,就是OD字节不同,其code也不同,OD的字节只有1,2,8,32四种,没有其他字节选项;

⭐️5~13行:

OD都是1个字节(除了兼容1.0版本OD是2个字节外),然后根据PD的字节数,拆分为多个类型,覆盖TYPE_2_1~TYPE_2_V;

⭐️14~21行

根据不同的OD字节,确定不同的code,但都是TYPE_2_V类型。

02 主站消息处理状态机

图片

图片

03 从站消息处理状态机

图片

图片

T1

Inactive_0Idle_1,通过消息模块的初始化实现。

T2

Idle_1GetMessage_2,当物理层有中断,接收到一个报文后,触发PL_Transfer事件,在OPERATE状态下动"MaxUARTframeTime""MaxCycleTime"定时器。

T3

持续接收报文,每次接到报文需要重新启动"MaxUARTframeTime"计时器,用于判断下一个消息是否会超时。

T4

判断报文接收完毕后,触发”Completed”事件,进入CheckMessage_3状态,重置"MaxUARTframeTime"定时器,直到下次收报文的循环再开启。

T5

检查接收的报文是否有错误,如果没有错误则开始发送相关回应的报文,需要调用OD.indPD.ind服务。

T6

编译并调用PL_Transfer.rsp服务回应报文,此时设备发送响应消息。

T7

检查主站发送的报文,如果是Checksum Error,则直接回到Idel状态。

T8

检查主站发送的报文,如果不是checksun error ,而是M-Sequence的Type错误,则通过MHInfo(ILLEGAL_MESSAGETYPE将错误指示给DL-mode处理程序。

T9

GetMessage_2状态下,如果超过了最大MaxUARTframeTime,则返回Idle状态,并重置"MaxUARTframeTime"和"MaxCycleTime"两个计时器。

T10

超过MaxCycleTime时间,则通知传感器或者执行器采取相关措施。

T11

从站收到MH_Conf_INACTIVE事件,将状态更改为Inactive_0

结语

本篇内容就先介绍到这里,下期我们开始分解PD和OD处理模块,还请各位关注微信公众号:Rasight,第一时间获取内容更新!

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

提交

查看更多评论
其他资讯

查看更多

睿远研究院丨IO-Link消息处理模块

睿远研究院丨IO-Link主从状态机解析

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

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

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