MOVE_BLK_VARIANT 指令位于任务卡的“基本指令”→“移动操作”中,梯形图或功能块图编程时,可直接拖放至函数或函数块。SCL 编程时,通过“MOVE”自动提示指令参数。指令参数包括源索引(SRC_INDEX)与目标索引(DEST_INDEX)。源索引和目标索引值从零开始,根据数组下限调整实际存储位置。例如,定义数组 ...
西门子SCL编程入门教程连载22——块移动指令
块移动指令包括 MOVE_BLK 和 MOVE_BLK_VARIANT,用于在程序中移动数据块。实际项目中,常用于存储与显示设备作业结果。通常,创建数据块并构建定长数组(如存储100条记录),每次作业后将结果数据存入数组。查阅某次作业数据时,从数组读取所需数据至临时变量或特定变量。这类存储功能多采用 MOVE_BLK_VARIANT,因其能拷贝结构体数据类型,而 MOVE_BLK 仅适用于基础数据类型。在数据处理中,正确设置指针至关重要,错误指针可能导致读写问题。本文关注 MOVE_BLK_VARIANT 使用时的注意事项。
MOVE_BLK_VARIANT 指令位于任务卡的“基本指令”→“移动操作”中,梯形图或功能块图编程时,可直接拖放至函数或函数块。SCL 编程时,通过“MOVE”自动提示指令参数。
指令参数包括源索引(SRC_INDEX)与目标索引(DEST_INDEX)。源索引和目标索引值从零开始,根据数组下限调整实际存储位置。例如,定义数组 data,存放过程结果于变量 tmpResult 中。首次存储代码需设置源索引为0,数据存储在数组的第一个元素(对于下限为1的数组,存储在 data[1])。定义数组上限,首次存储仍设源索引为0,数据实际存储在 data[10](下限为10的数组)。实际应用中,应定义写指针变量,随存储次数更新,确保数据不重复写入。
以简单示例代码展示数据写入过程,定义变量如下图。代码实现如下图所示,已经过测试,包含数据满载情况,如下图展示。
本文重点在于提醒使用者,SRC_INDEX 和 DEST_INDEX 的计算从零开始。对有兴趣的读者,鼓励完善提供的代码并实现数据读取。
讨论到此为止。
西门子SCL编程入门教程连载归档链接在此。
书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》详情请见链接。2024-11-05