admin管理员组

文章数量:1537089

2024年3月30日发(作者:)

在 S7-SCL 中如何访问 BYTE 、WORD 和 DWORD 变量的各个

位?

说明:

从 S7-SCL 版本 V5.1 起,可以使用 AT 函数去读写变量的元素。当定义变量视图后,可以读写:

变量数据类型为 BYTE 、WORD、DWORD 的位

变量数据类型为 WORD、DWORD 的字节

变量数据类型为 DWORD 的字

AT 特性主要用于 INPUT,OUTPUT 和本地变量。图. 01 显示了访问 BYTE 变量位的 AT 功能的 S7-SCL 样

例:

图 01

图. 01

在这个 S7-SCL 的样例程序中,创建了输入叁数的多视图。如果 FB40 被调用,你能 参数化作为输入和输出变

数的 " MainVarByte" 、 " X2" 和 " X5" 叁数。" FilterVar" 叁数不在调用块中出现。变量 " MainVarByte" 被分

为变量 " FilterVar" 的 8 个布尔值。请参考 S7-SCL 的在线帮助中 " 声明变量范围视图 " 部分。

FB

声明视图

VAR, VAR_TEMP,

VAR_IN,

或 VAR_OUT

声明视图

VAR_IN_OUT

FC

声明视图

VAR 或 VAR_TEMP

声明视图

VAR_IN, VAR_OUT 或

VAR_IN_OUT

表. 01

1)

数据类型的声变量的数据类型

基本类复杂类ANY/指

型 型 针

基本类型 X X

复杂类型 X X X

1)

ANY/指针 X

1)

基本类型

复杂类型

ANY/指针

基本类型

复杂类型

ANY/指针

基本类型

复杂类型

ANY/指针

X

X

X

X

X

X

X

X

X

X

这里应该注意变量域“VAR_OUT”中的 ANY 指针在功能块中是不允许的。上述样例程序也不能用于 FC 中的

VAR_IN 变量和 VAR_OUT 域。

图. 02 示例复制两个输入变量 (WORD 数据类型)到一个输出变量 (DWORD 数据类型)。 两个输入变量的存储

区 "A_word" 和 "B_word" 被复制到输出变量 "C_dword"。

图 03

图. 02

变量“A_word”中的数据被写入到输出“C_dword”的低位字中,而变量“B_word”中的数据被写入到高位字中。

C_dword

高位字节 低位字节 高位字节 低位字节

高位字(“C_dwort.B_high”)

表. 02

低位字 (“C_dwort.A_low”)

以上样例也可用于要被复制到 WORD 变量中的 BYTE 变量。

注意:

不能定义一个由 8 个布尔类型变量组成的 "BYTE" 类型的结构。因为结构变量最小是一个 WORD , 一个结构

不能由一个字节组成。

补救:

定义一个 8 个布尔的队列替代现有的 8 个布尔变量组成的结构。这样就可以访问每个位了。

变量声明

ByteVar: Byte;

BoolVar AT ByteVar: STRUCT

BoolVar_1:= BOOL;

BoolVar_2:= BOOL;

ByteVar: BYTE;

BoolVar AT ByteVar: ARRAY [0 .. 7] OF

BOOL;

表. 03

这个限制不适用于变量类型 WORD 和 DWORD 。

备注

错误

编译的错误信息: "数据类型和变量类

型不一致"

正确

(如 图. 01)

本文标签: 变量视图字节用于输入