DOCA0131ZH-03

PKW:DP V0 中的封装非循环访问

概述

一些 PROFIBUS DP 主设备(主站)不提供 DP V1 服务。实现了 PKW 功能,以允许在 DP V0 中进行非循环读写访问。

通过选择相应的模块可在 PROFIBUS DP 配置工具中启用此功能。对于每个模块,存在另外一个带 PKW 的条目。

PKW 数据已添加到循环数据。

读取/写入寄存器

借助 PKW 数据,您可以对任何寄存器执行读取或写入操作。8 字节将被解释为被封装在 IN 数据和 OUT 数据中的请求电报或响应电报。

PKW OUT 数据

PKW OUT 数据请求(PROFIBUS DP 主站 → LTMR)在支持 PKW 的模块中进行映射。

要访问寄存器,您必须选择下面的其中一个功能代码:

  • R_REG_16 = 0x25,用于读取 1 个寄存器

  • R_REG_32 = 0x26,用于读取 2 个寄存器

  • W_REG_16 = 0x2A,用于写入 1 个寄存器

  • W_REG_32 = 0x2B,用于写入 2 个寄存器

寄存器编号如Register Map (Organization of Communication Variables)所示。

字 1

字 2

字 3

字 4

寄存器地址

切换位

(15 位)

功能位

(位 8 到 14)

未使用

(位 0 到 7)

要写入的数据

寄存器编号

0/1

R_REG_16

代码 0x25

0x00

_

_

R_REG_32

代码 0x26

_

_

W_REG_16

代码 0x2A

要在寄存器中写入的数据

_

W_REG_32

代码 0x2B

要在寄存器 1 中写入的数据

要在寄存器 2 中写入的数据

根据所使用的 PLC 平台,请参阅循环数据说明章节中描述采用小端和大端格式 PKW OUT 的表格,以了解每个字中各个字段的位置。

功能字段中的任何更改都将触发请求处理(除非功能代码 = 0x00)。

切换位必须在进行每个连续请求时进行更改。此机制通过轮询响应中的切换位可使请求启动器检测响应是否就绪。当 OUT 数据中的此位等于 IN 数据中发出响应的切换位时,响应就绪。

PKW IN 数据

PKW IN 数据响应(LTMR → PROFIBUS DP 主站)在支持 PKW 的模块中进行映射。LTMR 回应同一个寄存器地址和功能代码或最终检测到的错误代码:

字 1

字 2

字 3

字 4

寄存器地址

切换位

(15 位)

功能位

(位 8 到 14)

未使用

(位 0 到 7)

要写入的数据

与请求中相同的寄存器编号

与请求相同

检测到错误

代码 0x4E

0x00

检测到的错误代码

R_REG_16

代码 0x25

寄存器中读取的数据

_

R_REG_32

代码 0x26

寄存器 1 中读取的数据

寄存器 2 中读取的数据

W_REG_16

代码 0x2A

_

_

W_REG_32

代码 0x2B

_

_

根据所使用的 PLC 平台,请参阅循环数据说明章节中描述采用小端和大端格式 PKW IN 的表格,以了解每个字中各个字段的位置。

如果启动器尝试将 TeSys T 对象或寄存器写入到未授权值,或尝试访问不可访问的寄存器,则回应一个检测到的错误代码(功能代码 = 切换位 + 0x4E)。同样的检测到的错误代码可在字 3 和 4 中找到。请求未被接受,并且对象或寄存器仍保留原来的值。

如果您要重新触发完全相同的命令,您必须:

  • 将功能代码重置为 0x00,

  • 等待响应帧,其中功能代码等于 0x00,然后

  • 再次将其设置为其先前的值。

这对于受限的主设备(主站)比较有用,例如 HMI。

重新触发完全相同命令的另一种方法是:

  • 反转功能代码字节中的切换位。

当响应的切换位等于应答中写入的切换位时,响应有效(这是更有效的方法,但需要更高的编程功能)。

PKW 检测到的错误代码

检测到写入错误

检出错误代码

检测到的错误名称

说明

1

FGP_ERR_REQ_STACK_FULL

外部请求:回送检测到的错误帧

3

FGP_ERR_REGISTER_NOT_FOUND

寄存器不受管理(或请求需要超级用户访问权限)

4

FGP_ERR_ANSWER_DELAYED

外部请求:答复延迟

7

FGP_ERR_NOT_ALL_REGISTER_FOUND

无法找到一个或两个寄存器

8

FGP_ERR_READ_ONLY

要写入的未授权的寄存器

10

FGP_ERR_VAL_1WORD_TOOHIGH

写入的值不在寄存器范围内(字值太高)

11

FGP_ERR_VAL_1WORD_TOOLOW

写入的值不在寄存器范围内(字值太低)

12

FGP_ERR_VAL_2BYTES_INF_TOOHIGH

写入的值不在寄存器范围内(MSB 值太高)

13

FGP_ERR_VAL_2BYTES_INF_TOOLOW

写入的值不在寄存器范围内(MSB 值太低)

16

FGP_ERR_VAL_INVALID

写入的值不是有效值

20

FGP_ERR_BAD_ANSWER

外部请求:回送检测到的错误帧

检测到读取错误

检出错误代码

检测到的错误名称

说明

1

FGP_ERR_REQ_STACK_FULL

外部请求:回送检测到的错误帧

3

FGP_ERR_REGISTER_NOT_FOUND

寄存器不受管理(或请求需要超级用户访问权限)

4

FGP_ERR_ANSWER_DELAYED

外部请求:答复延迟

7

FGP_ERR_NOT_ALL_REGISTER_FOUND

无法找到一个或两个寄存器

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

这有帮助吗?