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)
版权声明:本文标题:在S7-SCL 中如何访问 BYTE WORD 和 DWORD 变量的各个位 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1711792341a327704.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论