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

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

3天内不再提示

睿远研究院丨IO-Link规范解读(九): PD与OD处理模块详解

传感器专家网 来源:睿远研究院 作者:睿远研究院 2025-11-17 18:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

书接上文,这周我们就开始深入解读下PD与OD模块。PD即周期性数据,每次主从站间通信都会交互的数据类型,它分为PDin与PDout。OD的全称是On-Request Data,即在请求时才会应的报文。OD模块通常分为三个部分,ISDU、Command和Event。

01

主站消息状态机回顾

上回我们讲到消息处理模块最重要的M-Sequence Type以及主从站的消息状态机,主站的消息状态机会稍微复杂一点,我们在开发主站协议栈的时候,也碰到一些无法理解的规则。

在规范中DL_WRITE和DL_READ都是通过Page通道读写通信参数的,应该都是在Startup阶段才能进行,是不允许在PREOP和OP阶段进行的。但是小编在1.1.3版本时就发现一个问题,从PREOP切换到OP时,需要DL_WRITE发送切换模式的命令,同时发送一个masterCycletime的写入指令,这个指令也是DL_Write的命令。

这就造成了一个困惑,虽然在状态机中DL_Write_DeviceMode这个命令属于单独的命令,在PREOP阶段也适用,但是DL_Write(0x01, "MasterCycleTime")可是确确实实的DL_Write,理论上不应该出现在PREOP阶段的它,却出现了,直到目前最新的1.1.4版本尚未给任何说明。

具体如下图,DL_Write(0x01, "MasterCycleTime")这条命令是在从PREOP切换到OP前发出的,也就是其还在PREOP阶段。

wKgZO2kVuQ2ATbZaAAQx4wSm5Ew031.png

好了,我们希望下个版本能够解决这个问题,同时各位小伙伴也可以测试一下自家的主站是否会发出DL_Write(0x01, "MasterCycleTime")这个命令。

这条命令仅仅在这个图中出现了一次,在其他地方再无提及,猜测这个命令未必是必须的,因为主站通知从站我的mastercycletime也没有多大作用,毕竟从站都是被动式应答,只有主站询问了,从站才会回答。

02

关于ProcessData

下面来讲讲PD处理模块,在1.0时代,IO-Link规范规定了PD交互的多种方式,要求每次交互就2字节,PD和OD交错运行,PD多余2个字节,就得拆包,多次发送,这个效率可想而知,非常低下,因此1.1版本做了重大改革,废除了这种低下的方式。

wKgZO2kVuQ2AZscRAAMreT1t16o999.png

1.1版本后,每次最大32字节PD数据,中间还可以夹带OD数据,大大提升发送效率;当然对于像RFID这种上百个字节的,还是需要拆分字节,多次发送,再组包。

wKgZO2kVuQ2ALJg1AACkBpdDKnQ130.png

03

主从站的PD状态机

3.1 主站PD状态机

wKgZO2kVuQ2AHek2AAIUPQ0O860036.png

为了兼容1.0版本,状态机里还把遗留的PDInInterleave放到了里面,从1.1版本来看,PD就两个状态,Inactive状态(即Startup和PREOP所处的装状态)和PDSingle状态(即OP所处的状态)。

3.2从站PD状态机

wKgZO2kVuQ2AfAroAAGC7FXqAzo081.png

从站的PD状态机也比较简单,从inactive状态被激活后,进入active状态,Handle PD主要是1.0版本的遗留,在多个字节数据挨个处理的时候来回在PD ActiveHandle PD之间交互,而1.1版本,直接进行DL_PDInputUpdate就行了。

3.3总结

综上所述,PD就是简单的收发数据,没有太多的处理,应该算IO-Link协议栈内部最简单的模块了。

那么拿到睿远的IO-Link协议栈怎么处理PD数据呢,虽然简单,但PD也是IO- Link最重要的数据,对于老版本的睿远协议栈,可以直接操作PDE_PDInPDE_PDOut这个指针就行了。

按照大端排序的原则,PDE_PDIn[0]就是上传主站PD数据的最左边的那个字节,因为PDE_PDIn的内存是动态创建的,故要避免指针越界的问题。

在新版本中我们封装了一个函数:

UIntegerT8 CeresStackSetPDInData(UIntegerT8 *pdin_data, UIntegerT8 pdin_len)

通过该函数,可以尽量避免指针越界的问题。

对于SSP的版本,进一步封装了直接给测量值赋值的函数,这个就后续在SmartSensorProfile这个章节再讲了。

04

主站的OD数据处理

wKgZO2kVuQ6AZnb4AAGj89rzBf4825.png

上图是主站的状态机,主站的On-request处理程序是DL-Mode处理模块中“Startup_2”“PreOperate_3”和“Operate_4”状态下的一个从属状态机。它控制其他三个状态机,即ISDU处理模块、command处理模块和Event处理模块的状态机,默认情况下,它始终在ISDU状态。

1

当收到EventFlag时,状态机将切换到Event处理模块,在完整读取Event信息后,它将返回到ISDU处理状态;

2

当收到DL_Control,则状态机将切换到Command处理模块;完成相关命令后,状态机将返回到之前的状态(ISDU或Event状态)

3

当收到DL_Write_DeviceMode命令,也会切换到Command模块,用于处理DL Mode的状态切换,这是1.1.4版本增加的内容

05

从站的OD数据处理

wKgZO2kVuQ6AVugrAAE6tBmzwXE490.png

从站对OD的请求重定向4个独立的小模块:

Param读写模块

该模块主要读写DPP部分的数据,专门走了Page通道

Command模块

用于切换从站的状态,保持和主站的同步

ISDU模块

读写ISDU

Event模块

读写Event

06

DPP&ISDU的处理

DPP即Direct Parameter Page,其实属于ISDU部分,DPP1对应ISDU的Index 0x00,DPP2对应ISDU Index 0x01。

规范中明确如果不支持ISDU,就直接采用DPP1和DPP2进行参数的读写,这是为了方便一些简化版本的协议栈进行简单的IO-Link控制。

那么我们看DPP和ISDU在规范中的定义:

wKgZO2kVuQ6Af-3qAAEBVQcOa8A311.png

DPP1和DPP2就是从属于ISDU的,只是协议栈规定了DPP走的PAGE通道,其余ISDU走ISDU通道,个人认为,其把简单的东西复杂化了,如果合二为一岂不是更好。

wKgZO2kVuQ6AB8S2AAEUqVqIisk906.png

其中0x00:MasterCommand主要用于接收主站的各类命令,进入Command模块进行处理:

wKgZO2kVuQ6Ac5-AAAFZ3x6BU0o268.png

07

MasterCycleTime&MinCycleTime

MinCycleTime是从站主动上传汇报给主站的循环时间,而MasterCycleTime则是主站最终根据字节大小,从站汇报的循环时间决策出的实际时间,都是采用Timebase|Multiplier的方式,具体如下:

wKgZO2kVuQ6AZZKnAABWElGcwqo592.png

wKgZO2kVuQ6ABV5qAABExT1vLeQ232.png

wKgZO2kVuQ6AIGv5AACCSDF9Nro103.png

08

M-sequence Capability编码格式

这个编码在前面的章节中已经详细介绍,这里就不多说了,直接看一个例子:

wKgZO2kVuQ6AVgqDAAG4HJEAA8U544.png

这是从站回复的一个示例,这回复的0x21这个数据中,表明了自己分别在Preop和OP模式下的OD字节大小

09

ProcessDataIn& ProcessDataOut

PDIn和PDOut的字段,都是采用是否Byte位和Length来组成,把一个字节的作用抠到了极致。

wKgZO2kVuQ-ALvxrAAA-9djEa10125.png

wKgZO2kVuRSAILINAAFPZ-BOMNs016.png

结语

本期的内容就先到这里,以上就是本期PD处理模块、OD处理模块与DPP主要字节的解析,DPP作为IO-Link的关键参数,包含了IO-Link设备的关键信息。下一期,我们就开始介绍与参数配置相关的ISDU部分,这也是IO-Link技术的核心价值体现。

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

    关注

    2

    文章

    194

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    我们本期来好好聊聊SM模块与CM模块,SM模块的全称是System Manager,是IO-Link最核心的模块,负责承上启下的管理各个
    的头像 发表于 12-04 18:27 3662次阅读
    <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<b class='flag-5'>模块</b>与CM<b class='flag-5'>模块</b>解析

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

    上篇我们介绍了ISDU的典型编码格式和应用案例,本篇我们就来详细介绍下,ISDU的状态机,并把EVENT事件的逻辑,给大家好好解析下。 1主站ISDU状态机 如上图所示,ISDU的状态机的核心是 请求,等待和响应 。   如果主站请求的是DPP参数,即ISDU 0x00,0x01的参数,从AL层还是走的ISDU逻辑,但底层走了DL_Read/WriteParam的逻辑,即走的是Page通道。也就是好端端的ISDU愣是被它拆分了两个通道, 增加了复杂性。   因为通常读写ISDU的命令都很长,一个循环放不下,都
    的头像 发表于 11-29 18:28 2785次阅读
    <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>(十一):ISDU状态机与EVENT事件

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

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

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

    上回咱们分解到IO-Link的消息处理模块,消息处理模块就是对每个字节进行初步分析,按照不同的通道交给不同的
    的头像 发表于 11-07 16:18 5654次阅读
    <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规范解读(七):消息处理模块

    前言 本周来到消息处理模块,通信世界的精髓就是消息的处理,如何把0,1,0,1解析成有意义的数据,就是消息模块需要打下的基础。 消息处理
    的头像 发表于 11-01 17:43 8750次阅读
    <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><b class='flag-5'>模块</b>

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

    EstablishComm_1到Startup_2。依次以COM3~COM1来传出,一旦传输成功,则激活消息处理程序并配置为COMx 3 T5 从EstablishComm_1到Idle_0。三个速
    的头像 发表于 10-28 17:34 5819次阅读
    <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 通信的 “硬件底座”,它直接决定了系统的可靠性、抗干扰能力和部署灵活性。打个比方,就像盖房子,物理层就是地基和骨架,地基不稳、骨架不牢,房子肯定住着不踏实。本期我们
    的头像 发表于 10-21 17:26 2757次阅读
    <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规范解读(五):数据链路层解析

    包含消息处理模块、模式转换模块PD处理OD处理
    的头像 发表于 10-20 18:08 3897次阅读
    <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 398次阅读
    <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 622次阅读
    <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 544次阅读
    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特性/框图

    IO-Link收发器。该器件旨在演示软件可完全配置的模拟IO模块的性能,该模块采用了MAX22000工业可配置模拟IO器件。MAX1448
    的头像 发表于 06-30 09:30 557次阅读
    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 1145次阅读
    虹科直播回放 | <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 1194次阅读

    IO-Link接口的功能和特点

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