IO 您所在的位置:网站首页 iolink通讯协议哪一年出来的 IO

IO

2024-07-14 08:22| 来源: 网络整理| 查看: 265

本期介绍一下索引和子索引的概念,为后面介绍ISDU交互做准备。结合安排在后面的内容中讲解的直接参数页的内容和用法,以及每个索引对应什么功能,在所有这些内容都讲解到后,才是为讲解ISDU交互做好铺垫。 在这里插入图片描述

index-索引

IOL的“索引”是一个16bit数据,最大支持到65535,即表示有65535的参数或者参数组。虽然定义了这么多参数组,但是并非每一个参数组都是通过ISDU交互的。索引0与索引1强制分配给了直接参数页1和直接参数页2,即上图中最下方黄色区域,这两个参数组通过主站MC字节中“通信通道”的“直接参数页”通道进行交互。所以,实际上ISDU的“索引”范围,是从2开始,到65535结束。

索引可以理解为数据存放的地址,也是每一个参数的位置号。例如一个设备有10个参数,数值编号为0-9,index = 1就表示数据存储区域中第二个参数。那么IOL的ISDU交互,就可以按照索引来对2-65535这些位置上的参数组进行读取或者写入的操作。此后IOL主从之间的交互,便都是依靠ISDU里面的部分参数组了。

Suindex-子索引

注意,上面我一直在说参数组,何为参数组?一组参数的集合叫参数组,内里包含了若干字节的参数,那么这里面每一个字节,也都对应了一个索引,这个索引就是子索引。

子索引数据长度只有8bit,所以子索引所能指代的最大位置号就是255。看到这里,很多人会下意识的认为,子索引号能到达255,是不是就有255个字节的参数可供使用呢?其实并不是,参数空间只有232个字节。翻看官方的说明文档,并没有明确说明这是为什么,当然也有可能是我翻手册的时候有所遗漏,因为本人的一个习惯就是,如果这东西我暂时弄不懂,好好好,你说啥是啥,我就完全按你的规定来。无所谓,主打一个尊重,respect。所以笔者认为,子索引的数据是可以使用所有简单数据类型的,可能会包含了许多bool类型的参数,这就使得参数空间没有使用满,而子索引号早早的就到了255,为了避免出现不对应的情况,少操作几个字节的参数空间​,让子索引号能有更多的预留。当然这是笔者的猜测,有弄懂的读者可以发评论​说一说。​

在这里插入图片描述 若想要对子索引进行操作,子索引必须从1开始!如果每一个子索引只对应一个字节的数据,那么最大会有232个子索引号;如果大量使用32bit类型的数据,那么子索引号就会少于232;如果较多使用bool类型的数据。那么子索引号就会大于232,但是不允许超过255。

至于,子索引0,IOL规定,只要主站启用了子索引0,那么会将该索引对应的一整个参数组,按照顺序上报给主站,有一个字节就上报一个字节,有十个字节就上报十个字节,有232个字节就上报232个字节。这是一个总指令。 举个例子,假设开发者在0x50这个索引上存放了一个4字节的参数组,定义子索引数量为5,即:

subindex = 1–>1bit

subindex = 2–>1bit

subindex = 3–>6bit

subindex = 4–>8bit

subindex = 5–>16bit

那么在主站进行ISDU索引交互的时候,如果要对子索引进行精确操作,比如只是对里面某一个参数的数值进行修改,那么指令的发送就是Index = 0x50,subindex = 1或Index = 0x50,subindex = 2…或…Index = 0x50,subindex = 5​,按照这种方法读取全部参数就要发送读取指令5次。如果主站想要节省时间一次就将一整个参数组读取进来,那么就可以一条指令Index = 0x50,subindex = 0​。​

以上是本节的全部内容,如果各位读者仍然存在疑惑可以私信发送问题,笔者会一一解答并积累一期文章的内容更新出来。 笔者内容也许会存在错误,欢迎志同道合的开发者一起讨论。我们共同进步! 喜欢我的文章请关注我的微信公众号,我会不定期更新更多干货知识!

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有