指令表(IL)的操作指令
指令表编程语言共有9大类,其指令说明分别如下。
1.数据存取类指令
数据存取类指令是读取数据存储单元内的操作。标准指令采用LD和LDN指令表示存储和存储取反指令。编程语言的格式如下:
LD操作数//将操作数规定的数据存储单元中的内容作为当前结果存储。
LDN操作数//将操作数规定的数据存储单元中的内容取反后作为当前结果存储。
LD是Load的缩写,LDN是LoadNot的缩写。
数据存取类指令的操作对象,即LD或LDN的操作对象,是操作数。它是对操作数对应的数据存储单元内容进行的读取操作。读取的数据被存放在运算结果累加器,该数据也被称为当前值。
对常开触点的数据读取用LD指令,对常闭触点的数据读取用LDN指令。与继电器逻辑电路相似,对常开触点,即动点接点,采用存储LD指令,例如,LD%IX0.0指令执行存取操作数地址为%IX0.0接点状态的操作。从寄存器看,该操作过程是把地址为%IX0.0的输入状态传送到了运算结果累加器。图4.3的(a)和(b)为继电器逻辑电路和语句表编程语言指令的示例。
图4.4为数据存取的执行过程。对常闭接点,即动端接点,采用逻辑取反LDN指令,例如LDN%IX0.1指令执行存取操作数地址为%IX0.1接点状态的操作。从寄存器看,该操作过程是把地址为%IX0.1的输入状态寄存器状态取反,并把取反结果传送到运算结果累加器中。表4-3是LD和LDN指令的示例。
2.输出类指令
输出类指令用于将运算结果累加器中的内容传送到输出状态寄存器。标准指令采用ST和STN指令表示存取和存取取反指令,编程语言的格式如下:
ST操作数//将当前结果存储到操作数规定的数据存储单元。
STN操作数//将当前结果取反后,存储到操作数规定的数据存储单元。
须指出,在执行ST或STN指令后,当前运算结果仍被保留在运算结果累加器的存储单元,ST是Store的意思,STN是StoreNot的缩写。
与继电器逻辑电路相似,对线圈用ST指令,例如ST%QX0.0指令执行输出到%QX0.0的线圈的操作:从寄存器看,该操作过程是把运算结果累加器的状态传送到地址为%QX0.0的输出地址中。图4.5的(a)和(b)为继电器逻辑电路和语句表编程语言指令的示例。
图4.6为数据存取的执行过程。使用STN%QX0.1指令执行输出到%QX0.1失励线圈的操作;该操作过程是把运算结果累加器的状态取反,并把取反的结果传送至输出为%QX0.1的地址。
3.置位复位类指令
标准指令集采用S和R指令表示置位和复位类指令,其编程语言的格式如下:
S操作数//当前结果为False时,将操作数对应的数据存储单元内容设置为True,并保持。
R操作数//当前结果为True时,将操作数对应的数据存储单元内容设置为False,并保持。
这类指令具有记忆属性。执行S操作数后,操作数对应的数据存储单元内容被设置为True,并且该数据存储单元内容被记忆和保持到执行R操作数指令,执行R操作数指令使操作数对应的数据存储单元内容被设置为False。同样,该存储单元的内容要保持到执行S操作数的指令,并使其内容设置到True为止。
S和R指令可以用SR和RS功能块的调用实现。与功能块比较其不同点是:S指令和R指令的执行时根据程序中的先后位置确定执行先后次序,因此,优先级的确定和RS和SR有所不同。此外,功能块要先设置S和R端,才能执行调用指令。
S是Set的缩写,R是Reset的缩写。表4-4是S和R指令的示例。
S指令有条件的输出STC指令,R表是有条件的输出STCN指令。因此,当前结果存储器为TRUE时,S操作数指令执行设置输出操作数为置位操作,同样,R操作数指令执行设置输出操作数为复位的操作,即置位取反的操作。
4.逻辑运算类指令
标准的逻辑运算有:AND(N)、OR(N)、XOR(N)和NOT等。编程语言的格式如下:
逻辑运算操作符操作数或逻辑运算操作符N操作数
— 逻辑运算操作符:操作数用于将当前结果存储器内容与操作数对应的数据存储单元内容进行规定的逻辑运算,运算结果作为新的当前结果,存放在当前结果存储器内。
— 逻辑运算操作符N:操作数用于将当前结果存储器内容与操作数对应的数据存储单元内容的取反结果进行规定的逻辑运算,运算结果作为当前结果,存放在当前结果存储器内。
电动机控制程序示例。
此例为典型的电机控制程序,输入变量A,B和输出变量C都是符号变量,须在声明部分对其实际地址的赋值。
以上干货均出自《开放式控制系统编程技术——基于IEC-3国际标准》
如果您感兴趣可以登录CODESYS