IO-Link通信笔记(十三)——ISDU指令构成

ISDU:indexed service data unit。即索引服务数据单元,是IOL通信中最为重要的交互手段,ISDU的支持,使得设备可以通过众多参数实现智能型传感器的使用。通过ISDU,使用者可以与设备进行参数的读写交互,控制设备的运行状态,也可以通过ISDU参数的变更来完成设备的版本规划。即使是一个功能简单的光电开关传感器,设备供应商一样可以设置一些参数,改变传感器的触发距离、触发方式、信号传输方式,实现同一套软件代码适配不同的硬件并满足不同的工况。

·ISDU指令的构成

ISDU的指令构成比较复杂,一条指令包含了:服务控制字(I-service服务控制代码+length字节数量信息)、extlength额外数量信息字、index索引高八位、index索引低八位、subindex子索引、data_n携带n字节数据、CHKPDU校验字这些数据。

受制于选取的M序列类型内定义的OD字节数量,主站想要传递一个完整的ISDU指令,就需要传递若干条M序列,在接收到M序列的OD数据后,组装成ISDU指令,然后再去完成指令指代的动作。例如,有一条ISDU指令:一字节服务控制字、一字节index_H、一字节index_L、一字节data、一字节CHKPDU,共计五个字节,想要向设备写入一个字节的参数(data),我选取的M序列类型支持一个字节的OD,那么就需要花费5个M序列,分别将上述五个字节发送给从站,从站组装ISDU指令完成相应动作并做出响应回复。

注意:一条ISDU指令至多携带232个字节的data,不得超过该数量

·M序列的变化与操作

因为IOL所有的数据交互最小的交互单元就是一帧M序列,ISDU也是在M序列交互基础之上组合成的二次指令。那么在传输ISDU指令的过程中,M序列必然要发生数据上的变化,指代期间所有M序列携带的内容都是ISDU的内容。

在之前的内容中我们已经知道了M序列的结构。首先是读写方向,对于主站,无论想要通过ISDU执行的是读参数操作还是写参数操作,其根源都是要向从站告知内容,所以,在向从站发送ISDU指令期间,M序列读写方向均为写,在发送完毕接收从站数据时切换为读。

第二是通信通道。在执行ISDU交互期间,通信通道恒常保持为ISDU通信通道,以此指示从站。

第三是address地址,这里比较复杂,需要在下文中详细说明。

·FlowCTRL数据流控制字

在ISDU交互期间,M序列的address区域共5bit,其名称发生转变,新名称为:FlowCTRL,即数据流控制。这几位既起到控制ISDU数据流收发开始结束的作用,也起到计数的作用。

计数功能很简单,如果FlowCTRL的最高位即bit4为0,那么就表示当前的数值为计数,会从0向上计数到F,然后再次回到0继续计数,只要ISDU没有结束或者中止,就不断循环。需要注意的是,ISDU开始时,count值为1,只在此后的循环中count会循环到0向上计数。

如果FlowCTRL最高位即bit4为1,那么整个FlowCTRL起到控制ISDU的作用。按照功能划分一共有三种指令

指令代码名称指令功能
0x10START

为ISDU指令交互的第一个M序列,表示从此帧M序列开始,以下M序列均为主站此次发出的ISDU指令。

同时,也作为激活从站回传ISDU的开始命令,从站只有在收到主站的START控制字之后才会回传从站ISDU,否则将中止此次回传。

如果从站未完成此次ISDU指令动作,会返回忙碌响应,主站要保持START不变。

0x11or

0x12

IDLE_1or

IDLE_2

表示ISDU交互处于空闲状态,主从之间无任何ISDU指令交互。此时从站根据idle控制将状态机切换到待命,等待新的ISDU指令发送。因此,主站在完成以此ISDU交互后,需要在下一次ISDU交互之间插入若干次IDLE指令,让从站重置系统状态机到IDLE,并确保从站也是做出IDLE响应后再开始下一次ISDU交互
0x1FABORT主站指示从站,本次ISDU指令传输中止,接收到的ISDU指令数据请全部清空,接收新的ISDU指令或根据主站通信通道控制切换到其他动作。

通过指令代码我们也能理解,正因为设定START代码为0x10,而紧接着START就是其后的第一帧M序列,所以count在ISDU计数的第一次为1,用以区分。所以,FlowCTRL字的变化过程是:IDLE-START-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-0......-IDLE。 


以上是本节的全部内容,如果各位读者仍然存在疑惑可以私信发送问题,笔者会一一解答并积累一期文章的内容更新出来。

笔者内容也许会存在错误,欢迎志同道合的开发者一起讨论。我们共同进步!喜欢我的文章请关注我的微信公众号,我会不定期更新更多干货知识!

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值