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

Rasight 20250504

  • 主从站通信协议

M-Sequence Type

与消息处理状态机

IO-Link 规范篇

五一转眼将至,小编决定节前再更新一波,帮助大家巩固一下知识。

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

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

01

M-Sequence Type

上回讲到主站发出来的MC和CKT两个报文,其中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

从站消息处理状态机

1

T1

从Inactive_0到Idle_1,通过消息模块的初始化实现。

2

T2

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

3

T3

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

4

T4

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

5

T5

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

6

T6

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

7

T7

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

8

T8

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

9

T9

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

10

T10

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

11

T11

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


结语

本篇内容就先介绍到这里,祝大家过个愉快的五一,节后我们开始分解PD和OD处理模块!

·END·

微信号丨Rasight

公司网址丨www.rasight.cn



查看全文

点赞

Rasight

南京睿远工业互联专注于IO-Link研发、智能传感器方案应用

作者最近更新

  • 睿远研究院丨IO-Link规范解读(十五):CM配置管理模块详解
    Rasight
    06-10 17:30
  • 新闻中心丨睿远参加2025华南国际工业博览会
    Rasight
    06-06 17:01
  • 睿远研究院丨IO-Link规范解读(十):OD处理模块与DPP字节解析
    Rasight
    05-13 14:56

期刊订阅

相关推荐

  • 睿远研究院丨IO-Link规范解读(五):数据链路层解析

    2025-04-27

评论0条评论

×
私信给Rasight

点击打开传感搜小程序 - 速览海量产品,精准对接供需

  • 收藏

  • 评论

  • 点赞

  • 分享

收藏文章×

已选择0个收藏夹

新建收藏夹
完成
创建收藏夹 ×
取消 保存

1.点击右上角

2.分享到“朋友圈”或“发送给好友”

×

微信扫一扫,分享到朋友圈

推荐使用浏览器内置分享功能

×

关注微信订阅号

关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
      广告