前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IO-Link通信笔记(十四)——ISDU服务控制字与指令长度

IO-Link通信笔记(十四)——ISDU服务控制字与指令长度

原创
作者头像
京畿提督
发布2024-06-21 13:24:15
480
发布2024-06-21 13:24:15
举报
文章被收录于专栏:IO-LinkIO-Link

无论是IOL协议还是以往我们熟知的其他相类似的协议,大都在传输的指令中携带类似功能码的数据以及指令字节长度的数据,用来指示本次指令的主要功能并辅助完成帧格式的校验。ISDU的第一个字节就起到这样的作用。

上期我们知道,服务控制字按照四位划分成了两部分,高四位为服务控制代码,根据不同的代码指示本次ISDU是做出何种指令或者做出何种响应,起到功能码的作用;低四位是主要的长度数据,表示本次ISDU传输的字节数量,但是我们知道,ISDU一次最多可以传输232字节的数据,只有4bit很显然是无法满足的,因此紧跟着服务控制字的一个字节为扩展数据长度字节,配合服务控制字低四位共同用完成数据长度的说明。

·服务控制码

我们来看一下官方文档中给出的不同代码的功能定义:

0000:表示没有ISDU服务,一般为从站较多使用。若字节数量为0则表示从站未进行ISDU交互;若字节数量为1,表示从站忙碌,无法立即响应主站,请主站等待直到返回的控制码具有服务。

0001、0010、0011:这三个代码都表示主站对从站进行参数写入。但是三个代码指代的索引子索引不同。0001要执行的索引号在0-255之间,不操作子索引。0010要执行的索引号在0-255之间,操作子索引。0011要执行的索引号在0-65535之间,操作子索引。这样从站只用通过服务控制码就能快速确定自身该怎么确定ISDU指令数据流每一个字节代表的含义。如果不发送这些控制码,从站分不清楚发过来的字节是索引的低字节还是子索引还是携带数据,很有可能造成错误。0100与0101都是从站针对主站写入动作回复的控制码,表示从站已经收到主站的写入命令并且做出了动作。虽然从站都是意图执行动作,如果参数可以顺利执行写入,从站返回0101积极的正确的响应表示参数写入成功。如果开发人员定义该参数虽然存在但不应在此时进行修改,上报0100负面的响应表示此次参数写入是失败的。主站也会根据从站的响应做出人机显示,提示使用者。

1001、1010、1011:类同写入控制码,为参数读取。

1100、1101:类同写入的两个响应,前者为读取失败,后者为读取成功。

·数据长度与扩展数据长度​

这里光看文档中的表格感觉很复杂,八行说明,里面数值也乱七八糟的,第一眼看去很是不明白。

这里我做了两种记号,分别是红色序列和绿色序列,红色的序列表示不要使用,绿色表示可以使用。

先来看红色记号为什么不能用:

1:没有服务,字节数量不应该超过1,要么是空表示从站没有在进行ISDU交互,要么是1表示从站正忙需要主站等待。

2:有服务的时候字节数量不能为0。

4:ISDU最大传输232字节,加上服务控制字、索引子索引、校验码最大239,超出数值范围约束必然是错误的不能用的。

至于3,跟着绿色序列一起讲。

我们看绿色序列:

1、2:不做赘述。

4:服务控制字低四位,可以表示0-15这些数值,那么当ISDU指令数据流总字节数量在2-15字节之内,我们只使用这四位就可以表示,那么玩去哪不必要去使用扩展字节长度。

3:当ISDU数据流总字节长度已经大于15,控制字低四位的数据长度表示已经不足了,此时要启用扩展数据长度。控制字低四位数据长度变身成为是否启用扩展长度字节的标志位或者理解成十六进制F之后的进位。当ISDU有服务控制码,必然表示此次ISDU数据流会携带至少一个字节的索引、至少一字节的data和一个字节的校验码,总的字节长度肯定远大于1。若此时控制字低四位字节长度为1,就表示启用了扩展数据长度,这与无服务控制码是字节长度为1并不冲突。此时我们就明确了一个概念:总的字节数量超过15就会启用扩展数据长度字节;反过来扩展数据字节在字节数量小于等于15时不会启用或者说扩展数据长度字节内不会表示小于等于15的数值!到此时我们就明白,为什么红色序号3是不能用的。当字节总数量已经大于15,此时启用扩展数据长度字节,这个字节自然要多一个长度,那么在扩展数据长度字节内自然最小数值就是17。

自此,我们就能清楚ISDU的字节长度是如何规定的。这里放上文档中的几个例子,可以根据本文章带入理解。


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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ·服务控制码
  • ·数据长度与扩展数据长度​
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档