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

时间:2016-05-27 10:24:42  来源:  作者:

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

8-1.jpg

接下来介绍如何工作:
OPC客户端通过远程控制服务器发送写命令到CP卡。
CP卡将数据写入它的过程映像并且标记改变的字节为FF。
CPU通过TC_RECV接收数据。
CPU通过RDREC读出变化。
新数据可以通过TC_RECV接收。
注意
重要的是,TC_RECV处于完成状态时,RDREC才能读出变化。
要求
CP 1242-7的固件版本1.3.3或以上。
指令
按照以下步骤使用该功能:

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

8-2.jpg

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

8-3.jpg

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 。

8-4.jpg

在本例中字节100到字节103被写入FF,从而表明偏移量100到103有新数据。

粤ICP备17024453号