如何在 S7-1200 CPU 中读取被 OPC 客户端写入 CP 卡过程映像区中的数据?

n

描述

CP 卡的 TC_RECV 功能总是返回全部过程映像。为了了解哪些数值最近已经被 OPC 客户端修改了而引入一个标志数组“新接收的 TC 数据”,其表明过程映像区中的哪些数值被写入。标志数组“新接收的 TC 数据”可以通过 S7-1200 CPU 读取数据记录索引 8455 功能被读取并被保存在 CPU 的 DB 块中。n

对于 OPC 客户端发送不固定的数值而不是 CP 卡的全部过程映像的应用,此功能非常有用。n

如何在 S7-1200 CPU 中读取被 OPC 客户端写入 CP 卡过程映像区中的数据?
图. 01n

接下来介绍如何工作:n

  1. OPC 客户端通过远程控制服务器发送写命令到 CP 卡。n
  2. CP 卡将数据写入它的过程映像并且标记改变的字节为 FF。n
  3. CPU 通过 TC_RECV 接收数据。n
  4. CPU 通过 RDREC 读出变化。n
  5. 新数据可以通过 TC_RECV 接收。

注意
重要的是,TC_RECV 处于完成状态时,RDREC 才能读出变化。n

要求

CP 1242-7的固件版本1.3.3或以上。n

指令
按照以下步骤使用该功能:

序号. 步骤
1

在 CPU 程序中创建一个具有如下声明变量的 DB 块:n

如何在 S7-1200 CPU 中读取被 OPC 客户端写入 CP 卡过程映像区中的数据?
图. 02

2在 OB1 中使用以下参数循环调用 RDREC: n

REQ = 当 TC_RECV 的 DONE 位为 TRUE 时,将该位置为 TRUE 以传输数据记录。 (请注意 TC_RECV 块的参数状态只在一个周期有效,您可以把 DONE 参数的状态保存到其他变量,这样您就可以读出其状态了)
ID = CP 卡的硬件标识符 (硬件配置 > CP 1242-7 >属性 > 硬件标识符)
INDEX = 8455 (数据记录索引号;8455 用于“新接收的 TC 数据”功能)
MLEN = 2048 Bytes (读取数据记录的最大长度)
RECORD = 指针指向由第一步创建的 DB 块的数组(大小 2048 字节)。n

如何在 S7-1200 CPU 中读取被 OPC 客户端写入 CP 卡过程映像区中的数据?
图. 03

3为了测试该功能,在 OPC 客户端远程控制服务器设置一个数值。在这个例子中,设置变量log_tmr_preset 的偏移量为 100.0 。
4检查 TC_RECV 的 DONE 参数的状态。
5当 TC_RECV 的 DONE 参数为 TRUE 时,设置 RDREC 的 REQ 参数为 TRUE 。
6

将 DB 块在线并使用“监视所有变量”功能读取变量“ReadDataChanges”的数值。RECORD所指的区域中被改变的数据将被标识为 FF ,没有被改变的数据用 00 表示。以此可以区别如果 0 作为初始值或者被远程控制服务器写入数值 0 。

如何在 S7-1200 CPU 中读取被 OPC 客户端写入 CP 卡过程映像区中的数据?
图. 04
在本例中字节 100 到字节 103 被写入 FF ,从而表明偏移量 100 到 103 有新数据。

表 01

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论