前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IO-Link通信笔记(四)——M序列校验和与交互示例

IO-Link通信笔记(四)——M序列校验和与交互示例

原创
作者头像
京畿提督
发布2024-06-21 11:47:05
680
发布2024-06-21 11:47:05
举报
文章被收录于专栏:IO-LinkIO-Link

这一期见一下M序列的校验规则与M序列的交互示例,更加直观看一看主从之间的交互,方便各位读者更好地理解M序列。

M序列校验和计算规则

M序列的校验和是一种连续字节与位异或压缩校验方式,将校验和从8bit压缩至6bit。 其规则如下图,IOL拥有一个异或种子“0x52”,首先这个种子连续与序列中的非校验和数据(CKT字节先将校验和的6位置0)进行异或,得到一个异或后的8bit数值,接着这个8bit数据内部进行位异或拼装。最后字节内部的异或拼装方式为,bit7-5-3-1异或结果放在最终6bit校验和的bit5上,bit6-4-2-0异或的结果放在最终6bit校验和的bit4上,bit7-6异或结果放在校验和bit3上,bit5-4异或结果放在校验和的bit2上,bit3-2异或结果房子啊校验和的bit1上,bit1-0异或结果放在校验和的bit0上。这样就计算得到了序列的校验和,将其写入到CKT或者CKS的对应位置上。

以一串M序列类型为Type_2_2主站序列(非准确的交互数据)举例子:0x39,0x80,0xDB。其解释是,主站通过页通信通道,向直接参数页2的0x09地址内写入数据0xDB,主站使用的M序列类型为Type2。

0x52 xor 0x39 = 0x6B

0x6B xor 0x80 = 0xEB

0xEB xor 0xDB = 0x30

0x30 = 0011 0000

b5_ck = 0 xor 1 xor 0 xor 0 = 1

b4_ck = 0 xor 1 xor 0 xor 0 = 1

b3_ck = 0 xor 0 = 0

b2_ck = 1 xor 1 = 0

b1_ck = 0 xor 0 = 0​

b0_ck = 0 xor 0 = 0

checksum = 110000 = 0x30

最后将checksum6位与M序列类型的2位组合成CKS字节:0xB0。因此,最终的M序列内容为:0x39,0xB0,0xDB。从站在验证时步骤相同,也是从异或种子执行异或开始,需要注意点是,需要将CKS字节中的checksum6位清零,得到有效的M序列类型0x80数值进行计算。

M序列交互示例

因为还没有介绍更加复杂的ISDU传输,所以这里所有示例全都是基于直接参数页2的读写交互,这样交互信息也更加简洁清晰。 指定向直接参数页2的第9个地址写入数据0xDB与获取数据。假设PD为单字节0x35或双字节0x2766。可变长度PD从0x01开始每次加0x05。从站无事件且PD有效(0x00)

只有OD的M序列交互

以Type_0类型为例:

主站写:0x39,0x18,0xDB 从站回:0x2D 主站读:0xB9,0x06 从站回:0xDB,0x1B

以Tyoe_1_2类型为例:

主站写:0x39,0x40,0xDB,0x00 从站回:0x2D 主站读:0xB9,0x6E 从站回:0xDB,0x00,0x1B

只有PD的M序列交互

以Type_1_1类型为例:

主站写:0x39,0x7F,0x27,0x66 从站回:0x2D 主站读:0xB9,0x6E 从站回:0x27,0x66,0x24

兼顾OD与PD的M序列交互

以Type_2_1类型为例:

主站写:0x39,0xB0,0xDB 从站回:0x35,0x1E 主站读:0xB9,0xAE 从站回:0xDB,0x35,0x28

以Type_2_2类型为例: 主站写:0x39,0xB0,0xDB 从站回:0x27,0x66,0x24 主站读:0xB9,0xAE 从站回:0xDB,0x27,0x66,0x22

可变长度的M序列交互

以Type_1_v类型为例,8个字节OD

主站写:0x39,0x40,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00 从站回:0x2D 主站读:0xB9,0x06 从站回:0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B 以Type_2_v类型为例,8个字节OD,8字节PD 主站写:0x39,0xB6,0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00 从站回:0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0x2B 主站读:0xB9,0xAE 从站回:0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0x1D


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • M序列校验和计算规则
  • M序列交互示例
    • 只有OD的M序列交互
      • 只有PD的M序列交互
        • 兼顾OD与PD的M序列交互
          • 可变长度的M序列交互
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档