AT声明
什么是AT声明
AT声明是IEC 61131-3标准中用于将变量直接映射到PLC特定内存地址的声明方式。通过AT声明,可以将程序变量或全局变量与控制器的输入(I)、输出(Q)或内存(M)地址关联起来。
AT声明的用途
- 直接访问硬件IO:将变量映射到物理输入/输出端子
- 内存地址映射:访问特定的内存区域
- 高效数据访问:绕过中间层直接读写硬件地址
- 兼容性:与传统PLC编程方式兼容
地址格式说明
基本格式
变量名 AT %区域类型地址: 数据类型;
区域类型
| 区域类型 | 说明 | 示例 |
|---|---|---|
I | 输入区域(Input) | %IW0, %IX0.0 |
Q | 输出区域(Output) | %QW10, %QX100.1 |
M | 内存区域(Memory) | %MW20, %MX100.5 |
数据大小标识
| 标识 | 说明 | 字节数 |
|---|---|---|
X | 位(Bit) | 1位 |
B | 字节(Byte) | 1字节 |
W | 字(Word) | 2字节 |
D | 双字(DWord) | 4字节 |
L | 长字(LWord) | 8字节 |
地址示例
| 地址 | 说明 |
|---|---|
%IX0.0 | 输入位0.0 |
%IW10 | 输入字,起始地址10 |
%QX100.3 | 输出位100.3 |
%QW20 | 输出字,起始地址20 |
%MX50.2 | 内存位50.2 |
%MD100 | 内存双字,起始地址100 |
在程序变量中使用AT声明
在ST程序文件中声明带有地址映射的变量。
基本示例
PROGRAM DEMO_PLC_PRG1
VAR
(* 数组变量映射到输出字地址 *)
items AT %QW10: ARRAY[1..9] OF INT; (* 输出字地址QW10开始,9个INT *)
itemsIn AT %IW10: ARRAY[1..9] OF INT; (* 输入字地址IW10开始,9个INT *)
(* 不同数据类型的数组 *)
itemsSINT AT %QW40: ARRAY[1..3] OF SINT; (* 输出字节地址QB40开始 *)
itemsREAL AT %QW50: ARRAY[1..3] OF REAL; (* 输出字地址QW50开始 *)
itemsDINT AT %QW60: ARRAY[1..3] OF DINT; (* 输出双字地址QD60开始 *)
(* 布尔变量映射到位地址 *)
bOut AT %QX100.1: BOOL; (* 输出位100.1 *)
bOut3 AT %QX100.3: BOOL; (* 输出位100.3 *)
bOut2 AT %MX100.1: BOOL; (* 内存位100.1 *)
bIn3 AT %IX100.3: BOOL; (* 输入位100.3 *)
END_VAR
(* 使用映射变量 *)
bOut := TRUE; (* 设置输出位QX100.1为TRUE *)
items[1] := 123; (* 写入输出字地址QW10 *)
END_PROGRAM