本节了解汇川PLC的地址空间与结构化文本语言相关内容。
以下为学习笔记。
01 PLC的地址空间
汇川PLC不同型号的PLC提供的直接存储空间是不同的,
在PLC数据中,%I、%Q区地址不能掉电保存,%M区可以掉电保存。
汇川PLC存储区域定义及使用的地址范围表:
编程系统
|
区域
|
用途
|
大小
|
地址范围
|
AM600、AM610、AM401、AM402、AC800系列
|
输入区I区(%I)
128KB
|
用户使用区域
|
64KWords
|
%IW0-%IW65535
|
输出区域Q区(%Q)
128KB
|
用户使用区域
|
64KWords
|
%QW0-%QW65535
|
AM600、AM610、AM401、AM402
|
存储区域M区(%M)512KB
|
用户使用区域
|
240KWords
|
%MW0-%MW245759
|
SD元件
|
10000Words
|
%MW245760-%MW255759
|
SM元件
|
10000Bytes
|
%MW511520-%MW521519
|
保留
|
2768Bytes
|
%MW521520-%MW524287
|
AC800系列
|
存储区域M区(%M)5MB
|
用户使用区域
|
2.5MWords
|
%MW0-%MW2321439
|
注意事项:
①:其中用作软元件(SD元件、SM元件)的区域用户不要直接使用。
②:用途为用户使用区域的地址区,用户可以直接访问地址,也可以定义变量后把变量映射到地址间接访问。
③:AC800系列不支持SD和SM软元件,存储区域的地址可以随意使用。
02 结构化文本语言
概述:结构化文本是一种文本化的高级语言,跟PASCAL或C语言差不多,程序代码由指令组成,指令由关键字和表达式构成。
与IL语言不同的是,ST语言在语句循环中可以包含众多的语句,因此允许开发复杂的程序结构。
ST语言常见操作符见下表:
序号
|
操作
|
符号
|
1
|
括号
|
(表达式)
|
2
|
函数调用
|
函数名(参数列表,由逗号分割)
|
3
|
求幂
|
EXPT
|
4
|
求负值
求补
|
-
NOT
|
5
|
乘
除
取余
|
*
/
MOD
|
6
|
加
减
|
+
-
|
7
|
比较
|
<,>,<=,>=
|
8
|
等于
不等于
|
=
<>
|
9
|
逻辑与
|
AND
|
10
|
逻辑异或
|
XOR
|
11
|
逻辑或
|
OR
|
注意:操作符具有优先级,按表格从上向下依次降低。
整个ST文本程序由指令构成,指令由分号“;”分割(这点和C#挺像,末尾加“;”)。
指令由关键字和表达式组成。
序号
|
关键字
|
说明
|
示例
|
1
|
:=,S=,R=
|
赋值,置位,复位
|
A:=B; C:=SIN(X); b1 R=cond1;
|
2
|
|
功能块调用和输出
|
CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q
|
3
|
RETURN
|
返回(退出当前POU)
|
RETURN;
|
4
|
IF
|
选择
|
D:=B*B;
IF D<0.0 THEN
C:=A;
ELSIF D=0.0 THEN
C:=B;
ELSE
C:=D;
END_IF;
|
5
|
CASE
|
多重选择
|
CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2 := FALSE;
END_CASE;
|
6
|
FOR
|
FOR循环
|
J:=101;
FOR I:=1 TO 100 BY 2 DO
IF ARR[I] = 70 THEN
J:=I;
EXIT;
END_IF;
END_FOR;
|
7
|
WHILE
|
WHILE循环
|
J:=1;
WHILE J<= 100 AND ARR[J] <> 70 DO
J:=J+2;
END_WHILE;
|
8
|
REPEAT
|
REPEAT循环
|
J:=-1;
REPEAT
J:=J+2;
UNTIL J= 101 OR ARR[J] = 70
END_REPEAT;
|
9
|
EXIT
|
退出循环
|
EXIT;
|
10
|
CONTINUE
|
继续循环下次执行
|
CONTINUE;
|
11
|
JMP
|
跳转
|
label: i:=i+1;
JMP label;
|
12
|
;
|
空语句
|
;
|
|