西门子博途:通过向导简化发送/接收通信的处理GET-从远程 CPU 读取数据

科技   2024-10-18 21:36   吉林  


说明

使用指令“GET”,可以从远程 CPU 读取数据。

在控制输入 REQ 的上升沿启动指令:

  • 要读出的区域的相关指针 (ADDR_i) 随后会发送给伙伴 CPU。伙伴 CPU 则可以处于 RUN 模式或 STOP 模式。

  • 伙伴 CPU 返回数据:

    • 如果回复超出最大用户数据长度,那么将在 STATUS 参数处显示错误代码“2”。

    • 下次调用时,会将所接收到的数据复制到已组态的接收区 (RD_i) 中。

  • 如果状态参数 NDR 的值变为“1”,则表示该动作已经完成。

只有在前一读取过程已经结束之后,才可以再次激活读取功能。如果读取数据时访问出错,或如果未通过数据类型检查, 则会通过 ERROR 和 STATUS 输出错误和警告。

“GET”指令不会记录伙伴 CPU 上所寻址到的数据区域中的变化。

使用指令的要求

  • 已在伙伴 CPU 属性的“保护”(Protection) 保护中激活“允许借助 PUT/GET 通信从远程伙伴访问”(Permit access with PUT/GET communication from remote partner) 函数。

  • 使用“GET”指令访问的块是通过访问类型“标准”创建的。

  • 请确保由参数 ADDR_i 和 SD_i 定义的区域在数量、长度和数据类型等方面都匹配。

  • 待读取的区域(ADDR_i 参数)不能大于存储数据的区域(RD_i 参数)。

参数

下表列出了“GET”指令的参数:

参数

声明

数据类型

存储区

说明

REQ

Input

BOOL

I、Q、M、D、L 或常量

控制参数 request,在上升沿时激活数据交换功能。

ID

Input

WORD

I、Q、M、D、L 或常量

用于指定与伙伴 CPU 连接的寻址参数。

NDR

Output

BOOL

I、Q、M、D、L

状态参数 NDR:

  • 0:作业尚未开始或仍在运行。

  • 1:作业已成功完成。

ERROR


Output

BOOL

I、Q、M、D、L

状态参数 ERROR 和 STATUS,错误代码:

  • ERROR=0

    STATUS 的值为:

    • 0000H:既无警告也无错误

    • <> 0000H:警告,详细信息请参见 STATUS 。

  • ERROR=1

    出错。STATUS 提供了有关错误类型的详细信息。

STATUS

Output

WORD

I、Q、M、D、L

ADDR_1

InOut

REMOTE

I、Q、M、D


指向伙伴 CPU 上待读取区域的指针。

指针 REMOTE 访问某个数据块时,必须始终指定该数据块。

示例:P#DB10.DBX5.0 字节 10。

ADDR_2

InOut

REMOTE

ADDR_3

InOut

REMOTE

ADDR_4

InOut

REMOTE

RD_1

InOut

VARIANT

I、Q、M、D、L

指向本地 CPU 上用于输入已读数据的区域的指针。

RD_2

InOut

VARIANT

RD_3

InOut

VARIANT

RD_4

InOut

VARIANT


有关有效数据类型的更多信息,请参见“有效数据类型概述”。

参数 ERROR 和 STATUS

下表列出了关于由指令“GET”通过参数 ERROR 和 STATUS 输出的所有特定错误信息。

ERROR

STATUS(十进制)

说明

0

11

警告:由于前一作业仍处于忙碌状态,因此未激活新作业。

0

25

已开始通信。作业正在处理。

1

1

通信故障,例如

  • 连接描述信息未加载(本地或远程)

  • 连接中断(例如:电缆故障、CPU 关闭或者 CP 处于 STOP 模式)

  • 尚未与伙伴建立连接

1

2

  • 接收到伙伴设备的否定应答。该功能无法执行。

  • 远程站的响应超出了用户数据的最大长度(参见“有关 S7 通信指令的有用信息”)。

  • 伙伴 CPU 上的访问保护已激活。在 CPU 设置中禁用访问保护。

1

4

指向数据存储 RD_i 的指针出错:

  • 参数 RD_i 和 ADDR_i 的数据类型彼此不兼容。

  • RD_i 区域的长度小于待读取的 ADDR_i 参数的数据长度。

1

8

访问伙伴 CPU 时出错。

1

10

无法访问本地用户存储器(例如,访问某个已经删除的数据块)。

1

20

  • 已超出并行作业的最大数量。

  • 该作业当前正在执行,但优先级较低(首次调用)。

1

W#16#80C3

(仅 S7-1500)

  • 已超出并行作业的最大数量。

  • 该作业当前正在执行,但优先级较低(首次调用)。


说明

数据一致性

在初始化另一个作业之前,如果完整读取当前正使用的接收区域 RD_i 部分内容,将一致性地接收数据。

示例

在以下示例中,通过 S7 连接在 CPU 1 中读取 CPU2 的数据记录。待发送数据记录的数据类型为 INT。

要求

  • 两个 S7-1500 系列的 CPU 通过 PROFINET 进行互连,但连接尚未组态。

  • 通过“<CPU> > 属性 > 保护”(<CPU> > Properties > Protection) 下的低保护级别,确保可以对 CPU 进行读写访问。


  • 可通过指令 PUT/GET 进行访问。


CPU 1 中的程序

在全局数据块中,创建 6 个变量存储“GET”数据。

在全局数据块中,创建 1 个变量存储待接收的数据记录。

程序段 1:互连“GET”指令的参数,如下所示:

程序段 2:保存 GET 的错误状态,如下所示。

程序段 3:保存 GET 的成功状态,如下所示。

GET 的组态

要互连输入参数 ID,可通过“属性 > 组态”(Properties > Configuration) 打开指令“GET”的向导。

执行以下连接设置:

区域

设置

端点

选择通信伙伴。

系统将自动输入剩余的连接数据。将自动创建一个 S7 连接,并在输入参数 ID 处输入该标识符。

激活

确保与 CPU 1间的连接激活。


CPU 2 中的程序

在全局数据块中,创建 1 个变量存储待发送的数据记录。

在数据块的“属性 > 特性”(Properties > Attributes) 中,禁用优化块访问。

GET 的操作特性

输入参数 REQ(“start”)的信号状态为“TRUE”时,启动指令“GET”。该指令将调用连接数据,并与 S7 连接的通信伙伴进行数据通信。为此,S7 连接的标识符将存储在输入参数 ID 中。

通过参数 ADDR_1,识别待发送 CPU 2 数据记录的存储位置(“myValue”)。系统将读取输出数据记录(“myValue”),并在参数 RD_1 处输入识别的存储位置(“readValue”)。

执行成功时,输出参数 NDR(“done”)处的信号状态为“TRUE”,且输出参数 STATUS(“status”)的值为“16#0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“memDoneStat”中。输出参数 ERROR(“error”)或变量“memErrStatus”用于指示处理无错误。


机器人及PLC自动化应用
机器人技术讲解,PLC程序分析讲解,PLC机器人自动化培训. 以工业自动化培训为主.也会有些个人喜爱的军事和休闲.
 最新文章