AB PLC指令集
一、位指令
1.检查是否闭合指令(XIC)
XIC属输入指令,若相应位地址中是1(ON),则表示该指令的逻辑为真(true). 它类似于常开开关,如果位地址使用了输入映象表的位,则其状态必须与相应地址实际输入设备的状态相一致.XIC的指令形式如右图. 在该指令中,若发现数据表中Local:1:I.Date.0是ON状态(数据为1),则指令为真. Local:1:I.Date.0与本地机架1号槽的数据第0位对应,若输入电路为真,则指令为真.
2.检查是否断开指令(XIO)
XIO属输入指令,若相应位地址的数据是1(ON),则表示该指令的逻辑为假(false),否则该指令的逻辑为真(true ),它类似于一常闭开关.XIO 的形式如右图. 在该指令中,若发现数据表中Local:1:I.Date.0是OFF(数据为0)则指令为真. Local:1:I.Date.0与本地机架1号槽的数据第0位对应,若输入电路为假则指令为真.
3.输出激励指令(OTE)
OTE属输出指令,用于控制存贮器中的位.若该位对应输出模块上的一个端子,则当该指令使能时,连接到该端子上的设备被接通,反之,设备不动作.若OTE指令前面的阶梯条件为真,则处理器使能OTE指令.
一条OTE指令如同一个继电器的线圈.OTE指令由它前面的输入指令控制,而继电器的线圈由硬触点控制.OTE的形式如右图.
在该指令中,若阶梯条件为真,则该指令使处理器把输出映象表中的Local:2:O.Date.0置为ON状态(数值为1);若阶梯条件为假,则置为OFF状态(数值为0).地址Local:2:O.Date.0与本地机架2槽的数据第0位对应
4.输出锁存指令(OTL)
OTL属输出指令,并且是保持型指令,也就是说,当阶梯条件是真时,OTL指令使处理器置位某一地址位,然后该位保持置位.此后即使阶梯条件变假,该位依然保持置位;若要复位,则需要在另一阶梯中使用解锁指令OUT对同一地址的位解锁.OTL的形式如右图.
在该指令中,若阶梯条件为真,则使处理器把输出映象表中的Local:2:O.Date.0置位,直至用OUT对其解锁.
5.输出解锁存指令(OUT)
OUT常用以复位由OTL指令锁存的位.当阶梯条件为真时,对相应的位复位.以后即使阶梯条件变假,该位依然保持复位(置0),除非采用另一指令对该位重新置位.OTU的形式如右图.其含义与OTL对应.
6.一次响应指令(ONS)
ONS属输入指令,如果指令被使能时存储位清零,则ONS指令使能梯级的其余部分,如果被禁止或存储位置位,ONS指令禁止梯级的其余部分. 在扫描时,如果limit_switch_1是清零状态或storage_1是置位状态,则不影响阶梯.如果当扫描limit_switch_1是置位状态且storage_1是清零状态.则ONS指令置位storage_1 1且ADD指令的和数值就保持不变,必须在limit_switch_1再次从清零变为置位,和的值才增加.
7.上升沿触发指令(OSR)
OSR是一条输出指令,OSR指令根据存储位的状态置位或清零输出位.如果指令被使能时存储位清零,则OSR指令置位输出位.如果使能时存储位置位或禁止,则OSR指令清零输出位.
每次limit_switch_1从清零状态变为置位时,OSR指令置位output_bit_1并且ADD指令的和加5.只要limit_switch_1保持置位,和的值就不变.必须在limit_switch_1再次从清零变为置位,和的值才再增加.用户可以在多个梯级使用output_bit_1触发其他操作.
8.下降沿触发指令(OSF)
OSF指令是一条输出指令,OSF指令根据存储位的状态置位或清零输出位.当指令被禁止时存储位置位,OSF指令置位输出位.如果指令禁止或使能时存储位是清零状态,则OSF指令清零输出位.
每次limit_switch_1从置位状态变为清零时,OSF指令置位output_bit_1并且ADD指令的和加5.只要limit_switch_1保持清零,和的值就不变.必须在limit_switch_1再次从置位变为清零,和的值才再增加.用户可以在多个梯级使用output_bit_1触发其他操作.
二、计时器和计数器指令
1.延时导通计时器指令(TON)
利用TON指令在预置时间内计时完成去控制输出的接通或断开.当阶梯为真时,TON指令开始累加计时,直至下列条件之一发生为止:
● 累加值等于预置值.
●阶梯变假.
●复位计时器.
●相关的SFC步变无效.
一旦阶梯条件变假,不论计时器是否到时,处理器都复位累加值. 可见每一个TON必须使用一个计时器元素(如 ),并提供下列参数:
(1) 预置值(Present):用以设置预定时间,以一个16位的整数值放置,范围0~32767.
(2) 累加值(Accum):是一个动态值,告诉用户目前已经延时的数值,计时器复位时,其值为
1.TON的操作及其相应的状态可用下表描述.
阶梯条件 | EN(有效位) | TT(计时位) | DN(完成位) | 说明 |
假 | 0 | 0 | 0 | 不计时 |
真 | 1 | 1 | 0 | 正在计时,累积值<预置值 |
真 | 1 | 0 | 1 | 累积值>=预置值,计时完成 |
用复位指令RES | 0 | 0 | 0 | ACC=0,PRE不变,计时器复位 |
当 limit_switch_1被置位时,light_2接通180毫秒(timer_1计时).当timer_1的累加值.ACC达到180时, light_3接通.而且保持导通直到TON指令被禁止.如果在timer_1正计时时limit_switch_1断开,则关断light_2.
2.延时断开计时器指令(TOF)
TOF指令在阶梯条件变假时开始累加计时直至下列条件之一产生:
●累加值等于预置值.
●阶梯条件变为真
●相关的SFC步变无效. 一旦阶梯条件变真,不论计时器是否到时,处理器都复位累加值. 各参数的含义与TON相同.TOF的操作及其相应的状态可用下表描述.
一旦阶梯条件变真,不论计时器是否到时,处理器都复位累加值. 各参数的含义与TON相同.TOF的操作及其相应的状态可用下表描述.
阶梯条件 | EN(有效位) | TT(计时位) | DN(完成位) | 说明 |
真 | 1 | 0 | 1 | 计时器不计时,ACC=0,计时器复位 |
假 | 0 | 1 | 1 | 正在计时,累积值<预置值 |
假 | 0 | 0 | 0 | 累积值=预置值,计时完成 |
当 limit_switch_2被清零时,light_2接通180毫秒(timer_2计时).当timer_2的累加值.ACC达到180时, light_2断开同时light_3接通.而且保持导通直到TOF指令被使能.如果在timer_2 正计时时limit_switch_2被置位,则关断light_2.
3.保持型计时器RTO
RTO指令在阶梯条件为真,开始计时,直到累加值达到预置值为止。 下列条件发生时,RTO指令保持其累加值:
●阶梯变假。
●用户改变到编程方式。
●处理器出错或断电。
●相关的SFC步变无效。 当处理器重新运行或阶梯变真时,计时器从保持的值开始续计时。由于保持累加值,所以在阶梯为真的时间内保持型计时器测量了累加时间。如果RTO阶梯条件变假后,要复位其累加值和状态位,用户需在另一条阶梯中编写具有相同地址的复位指令RES。
RTO指令举例:
当 limit_switch_1被置位时,light_1接通180毫秒(timer_3计时).当timer_3的累加值.ACC达到180时, light_1断开同时light_2接通.而且light_2保持导通直到timer_3被复位。如果在timer_3正计时时limit_switch_2被清零,则light_1保持导通。当limit_switch_2被复位时,RES指令复位timer_3(清零状态位和.ACC)。
4.加计数指令(CTU)
CTU指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
计数器 | COUNTER | 标签 | 计数器结构 |
预置值 | DINT | 立即数 | 计数次数 |
累加值 | DINT | 立即数 | 计数器已经计数的次数,一般初始值为0 |
助记符 | 数据类型 | 说明 |
.CU | BOOL | 加计数使能位—标识CTU指令被使能 |
.DN | BOOL | 完成位—标识累加值(.ACC)>=(预置值.PRE) |
.OV | BOOL | 益出位—标识计数器超过上限值21474837。然后计数器返回到-21474838。并再开始加计数 |
.PRE | DINT | 预置值—指定在指令置位完成位(.DN)之前累加值所达到的值 |
.ACC | DINT | 累加值—表示指令已经计数的梯级转换的次数。 |
CTU指令举例:
limit_switch_1由禁止变为使能10次之后,完成位.DN被置位。并且接通light_1。如果limit_switch_1继续由禁止变为使能,则计数器counter_1继续增加它的计数值,且完成位.DN保持置位状态。当limit_switch_2被使能时,RES指令复位counter_1(清零状态位和.ACC值)并且关断light_1。
5.减计数指令(CTD)
CTD指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
计数器 | COUNTER | 标签 | 计数器结构 |
预置值 | DINT | 立即数 | 计数次数 |
累加值 | DINT | 立即数 | 计数器已经计数的次数,一般初始值为0 |
助记符 | 数据类型 | 说明 |
.CD | BOOL | 减计数使能位—标识CTD指令被使能 |
.DN | BOOL | 完成位—标识累加值(.ACC)(预置值.PRE) |
.UN | BOOL | 下出位—标识计数器超过下限值-21474838。然后计数器返回到21474837。在开始减计数 |
.PRE | DINT | 预置值—指定在指令置位完成位(.DN)之前累加值所达到的值 |
.ACC | DINT | 累加值—表示指令已经计数的梯级转换的次数。 |
传送装置把零件带到缓存区。每进入一个零件,limit_switch_1被使能且counter_1的累加值加1。每取出一个零件limit_switch_被使能且counter_1的累加值减1。如果有100个零件进入缓存区(置位counter_1的完成位.DN),则关断传送装置A,在缓存区有空间之前,不用传送零件进入缓存区。
6.复位指令(RES)
RES指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
结构 | TIMER CONTROL COUNTER | 标签 | 复位的结构 |
1.比较指令(CMP)
CMP是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
表达式 | SINT INT DINT REAL | 立即数 标签 | 表达式由被运算符分隔的标签与/或立即数组成 |
有效运算符
运算符 | 说明 | 最优数据类型 |
+ | 加 | DINT,REAL |
- | 减/非 | DINT,REAL |
* | 乘 | DINT,REAL |
/ | 除 | DINT,REAL |
= | 等于 | DINT,REAL |
< | 小于 | DINT,REAL |
<= | 小于或等于 | DINT,REAL |
> | 大于 | DINT,REAL |
>= | 大于或等于 | DINT,REAL |
<> | 不等于 | DINT,REAL |
** | 指数 | DINT,REAL |
ACS | 反余弦 | REAL |
AND | 按位与 | DINT |
ASN | 反正弦 | REAL |
ATN | 反正切 | REAL |
COS | 余弦 | REAL |
DEG | 弧度转换成角度 | DINT,REAL |
FRD | BCD码转换成整数 | DINT |
LN | 自然对数 | REAL |
LOG | 以10为底的对数 | REAL |
NOT | 位补码 | DINT |
OR | 按位OR | DINT |
RAD | 角度转换成弧度 | DINT,REAL |
SIN | 正弦 | REAL |
SQR | 平方根 | DINT,REAL |
TAN | 正切 | REAL |
TOD | 整数转换成BCD | DINT |
XOR | 按位异或 | DINT |
顺序 | 运算符 |
1 | ACS,ASN,ATN,COS,DEG,FRD,LN,LOG,RAD,SIN,SQR,TAN,TOD |
2 | ** |
3 | -(取反),NOT |
4 | *,/ |
5 | <,<=,>,>=,= |
6 | -(减),+ |
7 | AND |
8 | XOR |
9 | OR |
如果CMP指令判断表达式为真,则梯级输出条件被设置为真。
如果输入一个没有比较运算符
的表达时,例如,Ivalue_1+ value_2,则指令计算表达式的数值:
如果表达式的值是 | 梯级输出条件被设置为 |
非零值 | 真 |
零值 | 假 |
EQU指令是一条输入指令。
如果 value_1与value_2相等,则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
3.大于或等于指令(GEQ)
GEQ指令是一条输入指令。
如果 value_1大于或等于value_2,则梯级输出条件被设置为真。
操作数
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
4.大于指令(GRT)
GRT指令是一条输入指令。
如果 value_1大于value_2,则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
5.小于或等于指令(LEQ)
GEQ指令是一条输入指令。
如果 value_1小于或等于value_2,则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
LES指令是一条输入指令。
如果 value_小大于value_2,则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
7.极限比较指令(LIM)
LIM指令是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
下限 | SINT INT DINT REAL | 立即数 标签 | 下限值 |
源B测试 | SINT INT DINT REAL | 立即数 标签 | 测试值 |
上限 | SINT INT DINT REAL | 立即数 标签 | 上限值 |
LIM指令举例: 例1
LowLimit<=HighLimit: 当0<=value<=100时,接通light_1.
例2
LowLimit>=HighLimit: 当value>=0或value<=-100时,接通light_1.
8.屏蔽等于指令(MEQ)
MEQ指令是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT | 立即数 标签 | 与比较值比较的数值 |
屏蔽 | SINT INT DINT | 立即数 标签 | 阻止或通过的位 |
比较 | SINT INT DINT | 立即数 标签 | 与源值比较的数值 |
MEQ指令举例:
例1:
Value_1 :
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | * | * | * | * |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | * | * | * | * |
NEQ指令是一条输入指令。
如果 value_1不等于value_2,则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
四、计算/算术指令
1 计算指令(CPT)
CPT指令是一条输出指令。
操作数:
操作数: | 数据类型: | 格式: | 说明: |
目的单元 | SINT INT DINT REAL | 标签 | 存储结果的标签 |
表达式 | SINT lNT DINT REAL | 立即数 标签 | 表达式由运算符分开的标签/立即数组成。 |
有效运算符:
运算符: | 说明: | 最优数据类型: |
+ | 加 | D INT, REAL |
- | 减/非 | D INT, REAL |
* | 乘 | D INT, REAL |
/ | 除 | D INT, REAL |
** | 指数(xtoy) | D INT, REAL |
ACS | 反余弦 | REAL |
AND | 按位与 | DINT |
ASN | 反正弦 | REAL |
ATN | 反正切 | REAL |
COS | 余弦 | REAL |
DEG | 弧度转换成角度 | D INT, REAL |
FRD | BCD码转换成整数 | DINT |
LN | 自然对数 | REAL |
LOG | 以10为底的对数 | REAL |
NOT | 位补码 | DINT |
OR | 按位OR | DINT |
RAD | 角度转换成弧度 | D INT, REAL |
SIN | 正弦 | REAL |
SQR | 平方根 | D INT, REAL |
TAN | 正切 | REAL |
TOD | 整数转换成BCD | DINT |
XOR | 按位异或 | DINT |
顺序: 运算符: |
1 ACS,ASN,ATN,COS,DEG,FRD,LN,LOG,RAD,S IN, SQR, TAN TOD |
2 ** |
3 -(取反)NOT |
4 *,/ |
5 -(减)+ |
6 AND |
7 XOR |
8 OR |
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令计算表达式并存放结果于目的单元梯级输出条件被设置为真。 |
故障条件: 无
CPT指令举例:
当指令被使能时CPT指令计算value_1乘以5的结果,然后此结果被value_2除以7的结果除并把最后结果存放在result_1内.
2 加法指令(ADD)
ADD指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B操作数相加的值。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=源A+源B,梯级输出条件被设置为真。 |
故障条件: 无
ADD指令举例:
当指令使能时ADD指令使float_value_1与float_value_2相加并存放结果于add _result内。
3 减法指令(SUB)
SUB指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 减去源B操作数相加的值。 |
源B | SINT INT DINT REAL | 立即数 标签 | 从源A操作数减去的值 |
目的单元 | SINT INT DINT REAL | 标签 | 存放计算结果的标签。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=源A一源B梯级输出条件被设置为真。 |
故障条件: 无
SUB指令举例:
当指令使能时SUB指令使float _value_1减去float_ value_2并存放结果于subtract_result内。
4 乘法指令(MUL)
MUL指令是一条输出指令。 操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 被乘数 |
源B | SINT INT DINT REAL | 立即数 标签 | 乘数 |
目的单元 | SINT INT DINT REAL | 标签 | 存放计算结果的标签。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=源A*源B,梯级输出条件被设置为真。 |
故障条件: 无
MUL指令举例:
当指令使能时MUL指令使float_value_1与float_value_2相乘并存放结果于multjply_result内。
5.除法指令(DIV)
DIV指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 被除数值。 |
源B | SINT INT DINT REAL | 立即数 标签 | 除数值。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=源A/源B, 梯级输出条件被设置为真。 |
故障条件: 无
DIV指令举例:
当指令使能时DIV指令使float_value_1被float_value_2除并存放结果于divide_result内。
6 平方根指令(SQR)
SQR指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT REAL | 立即数 标签 | 计算该值的平方根。 |
目的单元 | SINT INT DINT REAL | 立即数 标签 | 存放计算结果的标签。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=梯级输出条件被设置为真。Destination=(Soure)1/2 |
故障条件: 无
SQR指令举例:
当指令被使能时SQR指令计算value_1的平方根并存放计算结果于sqr_result内。
7 取反指令(NEG)
NEG指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT REAL | 立即数 标签 | 要取反的数值。 |
目的 | SINT INT DINT REAL | 立即数 标签 | 存放计算结果的标签。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 目的单元=0一源操作数,梯级输出条件被设置为真。 |
1. 传送指令(MOV)
MOV指令是一条输出指令。
操作数: 操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT REAL | 立即数 标签 | 被传送(复制)的数值 |
目的单元 | SINT INT DINT REAL | 立即数 标签 | 存放计算结果的标签。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令复制源操作数到目的单元。梯级输出条件被设置为真。 |
故障条件: 无
MOV指令举例:
当指令被使能时,MOV指令复制在value_1内的数据到value_2.
2. 屏蔽传送指令(MVM)
MVM指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT | 立即数 标签 | 被传送的值 |
屏蔽 | SINT INT DINT | 立即数 标签 | 阻止或通过的位。 |
目的单元 | SINT INT DINT | 标签 | 存放结果的标签。 |
前缀: | 说明: |
16# | 十六进制例如:16#OFOF |
8# | 八进制,例如:8#16 |
2# | 二进制,例如:2#00110011 |
故障条件: 无
MVM指令举例:
当指令被使能时MVM指令从value_1复制数据到value_2同时允许数据被屏蔽(屏蔽操作数内各位的一个0值屏蔽在value_1内的位数据)。
阴影部分表示value_2内的数值被改变。
3. 位域分配(BTD)
BTD指令是一条输出指令。
操作数:
操作数: | 数据类型: | 格式: | 说明: |
源 | SINT INT D INT | 立即数 标签 | 包含要传送数据位的标签。 |
源位 | D INT | 立即数 (0一31 DINT) (0一15 INT) (0一7 SINT) | 开始传送位的位置号(低位号) 必须在源数据类型的有效范围内。 |
目的 | SINT INT D INT | 标签 | 传送位的目的单元标签。 |
目的位 | D INT | 立即数 | 从源操作数复制的位在目的单元的起始位号(低位号)必须在目的操作数数据类型的有效范围内。 |
长度 | D INT | 立即数 (1一32) | 被传送的位的数量。 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假 |
梯级输入条件为假 | 梯级输出条件被设置为假 |
梯级输入条件为真 | 指令复制并且传送源数据位到目的单元。 梯级输出条件被设置为真。 |
故障条件: 无
BTD指令举例:
例1
当指令被使能时指令传送在value_1内的位。
Value_1执行BTD指令之前
Value_1 执行BTD指令之后
4. 清零指令(CLR)
CLR指令是一条输出指令。
操作数:
操作数: | 数据类型: | 格式: | 说明: |
目的 | SINT INT DINT REAL | 标签 | 被清零数据的标识符 |
执行:
条件: | 动作: |
预扫描: | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令清零目的单元内的数据。 梯级输出被件被设置为真。 |
故障条件: 无
CLR指令举例:
当使能时CLR指令清零value_1内的所有位。
5. 按位与指令(AND)
AND指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT | 立即数 标签 | 与源B操作数进行与运算的 数值。 |
源B | SINT INT DINT | 立即数 标签 | 与源A操作数进行与运算的 数值。 |
目的单元 | SINT INT DINT | 标签 | 存放运算结果的标签。 |
如果源A的位: 源B的位: 目的单元的位是 |
0 0 0 |
0 1 0 |
1 0 0 |
1 1 1 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令执行按位与运算。 梯级输出条件被设置为真。 |
AND指令举例:
当指令被使能时,AND指令执行value_1与value_2的按位与运算,并存放结果于value_3内。
阴影部分表示发生变化的位
6. 按位或指令(OR)
OR指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT | 立即数 标签 | 与源B进行逻辑或运算的数 值。 |
源B | SINT INT DINT | 立即数 标签 | 与源A进行或运算的数值。 |
目的单元 | SINT INT DINT | 标签 | 存放运算结果的标签。 |
如果源A的位: 源B的位: 目的单元的位是 |
0 0 0 |
0 1 1 |
1 0 1 |
1 1 1 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令执行按位或运算。 梯级输出条件被设置为真。 |
故障条件: 无
OR指令举例:
当指令被使能时,OR指令执行value_1与value_2的按位或运算,并存放结果于value_3内。
阴影部分表示发生变化的位
7. 按位异或指令(XOR)
XOR指令是一条输出指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT | 立即数 标签 | 与源B进行异或运算的数值。 |
源B | SINT INT DINT | 立即数 标签 | 与源A进行异或运算的数值。 |
目的单元 | SINT INT DINT | 标签 | 存放运算结果的标签。 |
如果源A的位: 源B的位: 目的单元的位是 |
0 0 0 |
0 1 1 |
1 0 1 |
1 1 0 |
执行:
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令执行按位异或运算。 梯级输出条件被设置为真。 |
故障条件: 无
XOR指令举例:
当指令被使能时,XOR指令执行value_1与value_2的按位异或运算,并存放结果于value_3内。
8. 按位非指令(NOT)
NOT指令是一条输出指令。
操作数:
操作数: | 数据类型: | 格式: | 说明: |
源 | SINT INT D INT | 立即数 标签 | 执行NOT运算的值。 |
目的 | SINT INT D INT | 标签 | 存储运算结果的标签。 |
条件: | 动作: |
预扫描 | 梯级输出条件被设置为假。 |
梯级输入条件为假 | 梯级输出条件被设置为假。 |
梯级输入条件为真 | 指令执行按位非运算。 梯级输出条件被设置为真。 |
故障条件: 无
NOT指令举例:
当指令被使能时,NOT指令执行value_1的按位非运算,并存放结果于value_result_not内。