您可使用指令列表中的以下修饰符。
|
C |
使用 JMP, CAL, RET: |
仅当前面的表达式的结果为 TRUE 时才会执行指令。 |
|
N |
使用 JMPC, CALC, RETC: |
仅当前面的表达式的结果为 FALSE 时才会执行指令。 |
|
N |
使用根据下面操作符表格(修饰符列中的 N)的操作符 |
将对操作数(并非累加器的操作数)取反。 |
|
( |
使用根据下面操作符表格(修饰符列中的 ((左括号))的操作符 |
用于复杂操作数。有关详细信息,请参阅复杂操作数用例列表。 |
注意: 一般来讲,不建议在 STN、S 或 R 操作符之后直接使用语句 CALC (/RETC/JMPC),因为这些指令可任意修改累加器的值,从而可能导致难以发现的编程错误。
表格显示哪些操作符可结合指定的修饰符使用。
累加器存储得自前面的操作的当前值。
|
操作符 |
修饰符 |
含义 |
示例 |
|---|---|---|---|
|
LD |
N |
将操作数的(取反)值载入累加器。 |
LD iVar |
|
ST |
N |
将累加器的(取反)内容存储到操作数变量中。 |
ST iErg |
|
S |
– |
当累加器的内容为 TRUE 时,将操作数(BOOL 类型)设置为 TRUE。 |
S bVar1 |
|
R |
– |
当累加器的内容为 TRUE 时,将操作数(BOOL 类型)设置为 FALSE。 |
R bVar1 |
|
AND |
N,( |
累加器和(取反)操作数的按位 AND。 |
AND bVar2 |
|
OR |
N,( |
累加器和(取反)操作数的按位 OR。 |
OR xVar |
|
XOR |
N,( |
累加器和(取反)操作数的按位互斥 OR。 |
XOR N, (bVar1,bVar2) |
|
NOT |
– |
累加器内容的按位取反。 |
– |
|
ADD |
( |
添加累加器和操作数,将结果复制到累加器。 |
ADD iVar1 |
|
SUB |
( |
减去累加器和操作数,将结果复制到累加器。 |
SUB iVar2 |
|
MUL |
( |
倍增累加器和操作数,将结果复制到累加器。 |
MUL iVar2 |
|
DIV |
( |
等分累加器和操作数,将结果复制到累加器。 |
DIV 44 |
|
GT |
( |
检查累加器是否大于操作数,将结果 (BOOL) 复制到累加器;> |
GT 23 |
|
GE |
( |
检查累加器是否大于或等于操作数,将结果 (BOOL) 复制到累加器;>= |
GE iVar2 |
|
EQ |
( |
检查累加器是否等于操作数,将结果 (BOOL) 复制到累加器;= |
EQ iVar2 |
|
NE |
( |
检查累加器是否不等于操作数,将结果 (BOOL) 复制到累加器;<> |
NE iVar1 |
|
LE |
( |
检查累加器是否小于或等于操作数,将结果 (BOOL) 复制到累加器;<= |
LE 5 |
|
LT |
( |
检查累加器是否小于操作数,将结果 (BOOL) 复制到累加器;< |
LT cVar1 |
|
JMP |
C, CN |
无条件(有条件)跳转至标签 oJMP = 无条件跳转 oJMPC = 有条件跳转(如果累加器为 TRUE) oJMPCN = 有条件跳转(如果累加器为 FALSE) |
JMP next |
|
CAL |
C, CN |
无条件(有条件)调用 PROGRAM 或 FUNCTION_BLOCK oCAL = 无条件调用 oCALC = 有条件调用(如果累加器为 TRUE) oCALCN = 有条件调用(如果累加器为 FALSE) |
CAL prog1 |
|
RET |
C, CN |
无条件(有条件)返回 POU 并跳转回调用 POU oRET = 无条件返回 oRETC = 有条件返回(如果累加器为 TRUE) oRETCN = 有条件返回(如果累加器为 FALSE) |
RET |
|
) |
– |
计算延迟操作 |
– |
另请参阅 IEC 操作符和在 IL 编辑器中操作,了解如何使用和处理多个操作数、复杂操作数、功能/方法/功能块/程序/操作调用和跳转。
使用某些修饰符的示例 IL 程序:
LD TRUE load TRUE to accumulator
ANDN bVar1 execute AND with negative value of bVar1
JMPC m1 if accum. is TRUE, jump to label "m1"
LDN bVar2 store negated value of bVar2...
ST bRes ... in bRes
___________________________________________________________
m1:
LD bVar2 store value of bVar2...
ST bRes ... in bRes
表中列出了操作数的用例:
|
用例 |
描述 |
示例 |
|---|---|---|
|
为一个操作符使用多个操作数 |
选项 o在第二列中以连续的行输入操作数,并用逗号分隔。 o在连续的行中重复操作符。 |
o选项 1: LD 2 o选项 2: LD 2 |
|
复杂操作数 |
对于复杂操作数,在第一列中输入左括号 (。 在第一列中另起一行输入右括号,然后在后面的行中输入操作数条目。 |
每次循环将字符串旋转一个字符: LD stRotate |
|
功能块调用、程序调用 |
第 1 行: o第 1 列: 操作符 CAL 或 CALC o第 2 列: 功能块实例或程序的名称以及左括号 (如果后面没有参数,则在此输入右括号 )。 后面的行: o第 1 列: 参数名称,后接: o:=,用于输入参数 o=>,用于输出参数 o第 2 列: 参数值,后接逗号 ,(如果要后接其他参数)。 在最后一个参数后面输入右括号 )。 根据 IEC 标准,这里不允许使用复杂表达式。将此类构造分配给功能块或程序,然后再调用此功能块或程序。 |
CAL POUToCall( |
|
功能调用 |
第 1 行: o第 1 列: LD o第 2 列: 输入变量 第 2 行: o第 1 列: 功能名称 o第 2 列: 另外的输入参数,用逗号分隔 返回值写入到累加器中。 第 3 行: o第 1 列: ST o第 2 列: 写入返回值的变量 |
LD X7 |
|
操作调用 |
类似于功能块调用或程序调用。 操作的名称附加到功能块实例或程序的名称中。 |
CAL POU1.ResetAction |
|
跳转 |
o第 1 列: 操作符 JMP 或 JMPC o第 2 列: 目标网络跳转标签的名称。 o无条件跳转: 前面的指令序列必须以下列命令之一结尾: oST oSTN oS oR oCAL oRET oJMP o有条件跳转: 跳转的执行取决于加载的值。 |
LD BVar1 |