在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?

下面例程示范如何将数据从源数据存储区复制到目标存储区。也可以使用”MOVE”指令复制结构数据,相关信息参考条目ID 78678760.

描述

例1:从一个数据块复制数组变量到另外一个数据块

如果需要从一个数据块复制数据区到另外一个数据块,可以在数据块中创建数组变量。使用数组变量和 “MOVE_BLK”指令,可以实现从一个数据块到另一个数据块的部分移动或者整体移动。 “COUNT”参数定义从源区域移动到目标区域的数据元素数量。

在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?
图. 1

图.1显示了用2个DB变量对 “MOVE_BLK”指令的调用和参数化。

形参 “IN”以DB块数组元素变量”Block.Send[5]”进行参数化。

形参”OUT”以DB块数组元素变量 “Data.Receive[10]”进行参数化。

实参”Control.Count” 中的数值5指明了要拷贝的数据数量

这样就将数据从源数据区 “Block.Send[5]…Block.Send[9]” 复制到目标区域”Data.Receive[10]…Data.Receive[14]”

在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?

图. 2

例2:从一个数据块复制结构体数据到另外一个数据块,源数据区和目标数据区存在不同 PLC 数据类型

“Copy”功能将结构体数据从DB块 “Source”,变量名为”Variable” (PLC数据类型: “Speed”)的区域,复制到 DB块”Target”,变量名为”Value” (PLC数据类型”Drive”)的数据区域。两个存储区存在不同的数据类型。

在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?

图. 3

图.4显示了 “Copy”功能的内部程序对”Serialize”和”Deserialize”两个指令的调用及参数化。”Serialize”指令可以将PLC数据类型转化成序列表示的数据并且存放到缓冲区”tempStore”。在网络2,”Deserialize“指令用来将缓冲区”tempStore”中存放的序列表示的数据转换成 PLC 数据类型。

在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?图. 4注意
要满足下列2个要求之一才能使用”Serialize”和 “Deserialize” 功能。

要求1:禁用优化的块访问

  1. 在项目树中右键点击功能 “Copy”

  2. 点击”Properties”

  3. 在右边的列中选择 “Attributes”

  4. 移除“优化块访问”的复选标记

要求2: 在“Retain”一栏选择“Set in IDB”

  1. 选择一个FB代替FC

  2. 保存数组(“tempstore”)为一个静态变量

  3. 对于数组(“tempStore”) 在 “Retain”列中选择 “Set in IDB”

例3: 从输入模块复制结构数据到DB块
在下面的例子中(图. 5),输入区域 (IB0, IB1) 和输出区域 (数据块 “DBrange”) 定义了PLC数据类型”DataRange”。 输入输出地址有一个更高级的PLC变量,这种将输入输出地址进行结构化编组到更高一级的PLC变量的方式可以使编程更加方便。

在 STEP 7 (TIA Portal) 中如何复制存储区和结构体数据?
图. 5

使用此方法,您也可以将大于64字节的输入区域复制到数据块中。 对于S7-1200 CPU 需要固件版本V4.1或更高。

注意
上述指令可以在 “Basic Instructions” 任务卡中找到:

  • 在 “Move” 文件夹中或者
  • 用鼠标将 “General” 文件夹中的”Empty box”拖放到程序段中。然后将光标移动到空框中的黄色三角形上,打开下拉列表,在下拉列表中选择所需指令。

更多信息
更多信息参考STEP 7 (TIA 博图) 在线帮助。
关于“指针寻址”的主题的信息可参考条目号 42603286.

创建环境
FAQ 中的截图是在 STEP 7 (TIA Portal) V13 SP1中创建。

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

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

相关推荐

发表回复

登录后才能评论