1、AB PLC 指令集目 录一、位指令 31.检查是否闭合指令(XIC) .32.检查是否断开指令(XIO) .33.输出激励指令(OTE) 34.输出锁存指令(OTL) 35.输出解锁存指令(OUT) 46.一次响应指令(ONS) 47.上升沿触发指令(OSR) 48.下降沿触发指令(OSF) .4二、计时器和计数器指令 51.延时导通计时器指令(TON) 52.延时断开计时器指令(TOF) 63.保持型计时器 RTO74.加计数指令(CTU) .75.减计数指令(CTD) .86.复位指令(RES) .9三、比较指令 101.比较指令(CMP) 102.等于指令(EQU) 113.大于或等于
2、指令(GEQ) 124.大于指令(GRT) .125.小于或等于指令(LEQ) .126.小于指令(LES) .137.极限比较指令(LIM) .138.屏蔽等于指令(MEQ) 149.不等于指令(NEQ) 15四、计算/算术指令 151 计算指令(CPT) 152 加法指令(ADD) 173 减法指令(SUB) .174 乘法指令(MUL) 185除法指令(DIV) 186 平方根指令(SQR) .197 取反指令(NEG) .20五、传送/逻辑指令 201. 传送指令(MOV) .202. 屏蔽传送指令(MVM) 213. 位域分配(BTD) 224. 清零指令(CLR) 235. 按位与
3、指令(AND) .236. 按位或指令(OR) 247. 按位异或指令(XOR) .258. 按位非指令(NOT) 26AB PLC 指令集一、位指令1.检查是否闭合指令(XIC) XIC 属输入指令,若相应位地址中是 1(ON),则表示该指令的逻辑为真(true). 它类似于常开开关,如果位地址使用了输入映象表的位,则其状态必须与相应地址实际输入设备的状态相一致.XIC 的指令形式如右图 . 在该指令中,若发现数据表中 Local:1:I.Date.0 是 ON 状态( 数据为 1),则指令为真. Local:1:I.Date.0 与本地机架 1 号槽的数据第 0 位对应,若输入电路为真,则
4、指令为真. 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 指令前面的阶梯条件为真
5、,则处理器使能 OTE 指令.一条OTE指令如同一个继电器的线圈.OTE指令由它前面的输入指令控制,而继电器的线圈由硬触点控制.OTE的形式如右图. 在该指令中,若阶梯条件为真,则该指令使处理器把输出映象表中的 Local:2:O.Date.0 置为 ON 状态( 数值为 1);若阶梯条件为假,则置为 OFF 状态(数值为 0).地址 Local:2:O.Date.0 与本地机架 2 槽的数据第 0 位对应4.输出锁存指令(OTL) OTL属输出指令,并且是保持型指令,也就是说,当阶梯条件是真时,OTL指令使处理器置位某一地址位,然后该位保持置位.此后即使阶梯条件变假,该位依然保持置位;若要复
6、位,则需要在另一阶梯中使用解锁指令OUT对同一地址的位解锁.OTL 的形式如右图. 在该指令中,若阶梯条件为真,则使处理器把输出映象表中的 Local:2:O.Date.0 置位,直至用 OUT 对其解锁 .5.输出解锁存指令(OUT) OUT 常用以复位由 OTL 指令锁存的位.当阶梯条件为真时,对相应的位复位.以后即使阶梯条件变假,该位依然保持复位( 置 0),除非采用另一指令对该位重新置位 .OTU 的形式如右图.其含义与 OTL 对应 .6.一次响应指令(ONS) ONS 属输入指令,如果指令被使能时存储位清零,则 ONS 指令使能梯级的其余部分,如果被禁止或存储位置位,ONS 指令禁
7、止梯级的其余部分. 在扫描时,如果 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_sw
8、itch_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 指令置
9、位 output_bit_1 并且 ADD 指令的和加 5.只要 limit_switch_1 保持清零,和的值就不变.必须在 limit_switch_1 再次从置位变为清零,和的值才再增加.用户可以在多个梯级使用 output_bit_1 触发其他操作.二、计时器和计数器指令1.延时导通计时器指令(TON) 利用TON 指令在预置时间内计时完成去控制输出的接通或断开.当阶梯为真时,TON 指令开始累加计时,直至下列条件之一发生为止: 累加值等于预置值. 阶梯变假. 复位计时器. 相关的SFC步变无效. 一旦阶梯条件变假,不论计时器是否到时,处理器都复位累加值. 可见每一个TON必须使用一个
10、计时器元素(如 ),并提供下列参数: (1) 预置值(Present): 用以设置预定时间,以一个16位的整数值放置,范围032767. (2) 累加值(Accum):是一个动态值,告诉用户目前已经延时的数值,计时器复位时,其值为 0. TON的操作及其相应的状态可用下表描述.阶梯条件 EN(有效位) TT(计时位 ) DN(完成位 ) 说明 假 0 0 0 不计时 真 1 1 0 正在计时,累积值=预置值,计时完成 用复位指令RES 0 0 0 ACC=0,PRE不变,计时器复位 TON指令举例当 limit_switch_1 被置位时,light_2 接通 180 毫秒(timer_1 计
11、时). 当 timer_1 的累加值.ACC 达到 180 时, light_3 接通.而且保持导通直到 TON 指令被禁止.如果在 timer_1 正计时时 limit_switch_1 断开,则关断 light_2.2.延时断开计时器指令(TOF) TOF指令在阶梯条件变假时开始累加计时直至下列条件之一产生: 累加值等于预置值. 阶梯条件变为真 相关的 SFC 步变无效. 一旦阶梯条件变真,不论计时器是否到时,处理器都复位累加值. 各参数的含义与 TON 相同.TOF 的操作及其相应的状态可用下表描述 .一旦阶梯条件变真,不论计时器是否到时,处理器都复位累加值. 各参数的含义与 TON 相
12、同.TOF 的操作及其相应的状态可用下表描述.阶梯条件 EN(有效位) TT(计时位 ) DN(完成位 ) 说明 真 1 0 1 计时器不计时,ACC=0,计时器复位 假 0 1 1 正在计时,累积值=(预置值.PRE) .OV BOOL 益出位标识计数器超过上限值2147483647。然后计数器返回到-2147483648。并再开始加计数 .PRE DINT 预置值指定在指令置位完成位(.DN)之前累加值所达到的值 .ACC DINT 累加值表示指令已经计数的梯级转换的次数。 说明:CTU 指令向上计数。 如果指令被使能时加计数使能位(.CU)是清零状态,则CTU 指令使计数器加 1。如果指
13、令被使能位(.CU)是置位状态,或指令被禁止,CTU 指令保持它的累加值(.ACC) 。 即使完成位(.DN)被置位之后,累加值也继续增加。如果要清零累加值,可以用一条引用同一计数器结构的 RES 指令,或写 0 值到计数器的累加值。CTU 指令举例:limit_switch_1 由禁止变为使能 10 次之后,完成位.DN 被置位。并且接通 light_1。如果 limit_switch_1 继续由禁止变为使能,则计数器 counter_1 继续增加它的计数值,且完成位.DN 保持置位状态。当 limit_switch_2 被使能时,RES 指令复位 counter_1(清零状态位和.ACC
14、值)并且关断 light_1。5.减计数指令(CTD)CTD 指令是一条输出指令。 操作数:操作数 数据类型 格式 说明 计数器 COUNTER 标签 计数器结构 预置值 DINT 立即数 计数次数 累加值 DINT 立即数 计数器已经计数的次数,一般初始值为0 计数器结构:助记符 数据类型 说明 .CD BOOL 减计数使能位标识CTD指令被使能 .DN BOOL 完成位标识累加值(.ACC)(预置值.PRE) .UN BOOL 下出位标识计数器超过下限值-2147483648。然后计数器返回到2147483647。在开始减计数 .PRE DINT 预置值指定在指令置位完成位(.DN)之前累
15、加值所达到的值 .ACC DINT 累加值表示指令已经计数的梯级转换的次数。 说明:CTD 指令向下计数。 如果指令被使能时减计数使能位(.CD)是清零状态,则CTD 指令使计数值减 1。如果指令被使能时减计数位(.CU)置位,或指令被禁止,则CTD 指令保持它的累加值(.ACC) 。 即使完成位(.DN)被置位之后,累加值也继续减少。如果要清零累加值,可以用一条引用同一计数器结构的 RES 指令,或写 0 值到计数器的累加值。CTD 指令举例:传送装置把零件带到缓存区。每进入一个零件,limit_switch_1 被使能且 counter_1 的累加值加 1。每取出一个零件 limit_sw
16、itch_被使能且 counter_1 的累加值减 1。如果有 100个零件进入缓存区(置位 counter_1 的完成位.DN) ,则关断传送装置 A,在缓存区有空间之前,不用传送零件进入缓存区。 6.复位指令(RES ) RES 指令是一条输出指令。操作数:操作数 数据类型 格式 说明 结构 TIMER CONTROL COUNTER 标签 复位的结构 三、比较指令 1.比较指令(CMP) CMP 是一条输入指令。操作数:操作数 数据类型 格式 说明 表达式 SINT INT DINT REAL 立即数 标签 表达式由被运算符分隔的标签与/或立即数组成 说明:CMP 指令执行表达式中指定的
17、算术运算比较。用户要执行的运算由表达式定义。用运算符,标签和立即数定义表达式。表达式中的复杂部分用圆括号()定义。 有效运算符运算符 说明 最优数据类型 + 加 DINT,REAL - 减/非 DINT,REAL * 乘 DINT,REAL / 除 DINT,REAL = 等于 DINT,REAL 大于 DINT,REAL = 大于或等于 DINT,REAL =,= 6 -(减),+ 7 AND 8 XOR 9 OR 与专用比较指令相比,执行一条 CMP 指令速度稍慢而且占用更多的内存。 CMP 指令的优点是用户可以在一条指令内写入复杂的表达式。如果 CMP 指令判断表达式为真,则梯级输出条件
18、被设置为真。如果输入一个没有比较运算符的表达时,例如,Ivalue_1+ value_2,则指令计算表达式的数值:如果表达式的值是 梯级输出条件被设置为 非零值 真 零值 假 2.等于指令(EQU) EQU指令是一条输入指令。 如果 value_1 与 value_2 相等,则梯级输出条件被设置为真。操作数:操作数 数据类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 源B SINT INT DINT REAL 立即数 标签 与源A比较的数值 说明:EQU 指令测试源 A 的值与源 B 的值是否相等。REAL 数据类型的数值很少绝对相等。如果必须确定
19、两个 REAL 值是否相等,可以使用 LIM 指令。3.大于或等于指令(GEQ ) GEQ指令是一条输入指令。 如果 value_1 大于或等于 value_2,则梯级输出条件被设置为真。操作数操作数 数据类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 源B SINT INT DINT REAL 立即数 标签 与源A比较的数值 说明:GEQ 指令测试源 A 的值是否大于或等于源 B 的值。4.大于指令(GRT ) GRT指令是一条输入指令。 如果 value_1 大于 value_2,则梯级输出条件被设置为真。操作数:操作数 数据类型 格式 说明
20、源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 源B SINT INT DINT REAL 立即数 标签 与源A比较的数值 说明:GRT 指令测试源 A 的值是否大于源 B 的值。5.小于或等于指令(LEQ) GEQ指令是一条输入指令。 如果 value_1 小于或等于 value_2,则梯级输出条件被设置为真。操作数:操作数 数据类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 源B SINT INT DINT REAL 立即数 标签 与源A比较的数值 6.小于指令(LES ) LES指令是一条输入指令。 如果 valu
21、e_小大于 value_2,则梯级输出条件被设置为真。操作数:操作数 数据类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 源B SINT INT DINT REAL 立即数 标签 与源A比较的数值 说明:LES 指令测试源 A 的值是否小于源 B 的值。7.极限比较指令(LIM) LIM 指令是一条输入指令。 操作数:操作数 数据类型 格式 说明 下限 SINT INT DINT REAL 立即数 标签 下限值 源B测试 SINT INT DINT REAL 立即数 标签 测试值 上限 SINT INT DINT REAL 立即数 标签 上限值 说
22、明:LIM 指令比较测试值是否在下限和上限范围内。LIM 指令举例: 例 1LowLimit=HighLimit: 当 value=0 或 value=-100 时,接通 light_1.8.屏蔽等于指令(MEQ)MEQ 指令是一条输入指令。操作数:操作数 数据类型 格式 说明 源 SINT INT DINT 立即数 标签 与比较值比较的数值 屏蔽 SINT INT DINT 立即数 标签 阻止或通过的位 比较 SINT INT DINT 立即数 标签 与源值比较的数值 说明:MEQ 指令比较通过屏蔽的源值和比较值的结果。MEQ 指令举例:例 1:Value_1 :0 1 0 1 0 1 0
23、1 1 1 1 1 1 1 1 1 Mask_1:1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 通过屏蔽的 value_1:0 1 0 1 0 1 0 1 1 1 1 1 * * * * Value_2 :0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 Mask_1:1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 通过屏蔽的 value_2:0 1 0 1 0 1 0 1 1 1 1 1 * * * * 9.不等于指令(NEQ) NEQ指令是一条输入指令。 如果 value_1不等于value_2,则梯级输出条件被设置为真。操作数:操作数 数据
24、类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 与源B比较的数值 说明:NEQ 指令测试源 A 的值与源 B 的值是否相等。四、计算/算术指令1 计算指令(CPT)CPT 指令是一条输出指令。操作数:操作数: 数据类型: 格式: 说明: 目的单元 SINT INT DINT REAL 标签 存储结果的标签表达式 SINT lNT DINT REAL 立即数 标签 表达式由运算符分开的标签/立即数组成。说明:CPT 指令执行表达式中定义的算术运算。当指令被使能时 CPT 指令计算表达式的数值并且存放结果于目的单元内。与其它算术指令运算相比 CPT 指令的运算速度稍慢而
25、 且占用更多的内存。CPT 指令的优点是它允许用户在一条指令内输入复杂的表达式。有效运算符:运算符: 说明: 最优数据类型: + 加 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 位补码
26、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
27、-(取反)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 D
28、INT REAL 立即数 标签 与源B操作数相加的值。 说明:ADD 指令使源 A 操作数与源 B 操作数相加并存放计算结果于目的单元内。 执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的单元=源A+源B,梯级输出条件被设置为真。 算术状态标志: 影响算术状态标志 故障条件: 无 ADD指令举例: 当指令使能时 ADD 指令使 float_value_1 与 float_value_2 相加并存放结果于 add _result 内。3 减法指令(SUB)SUB 指令是一条输出指令。 操作数:操作数 数据类型 格式 说明
29、源A SINT INT DINT REAL 立即数 标签 减去源B操作数相加的值。 源B SINT INT DINT REAL 立即数 标签 从源A操作数减去的值 目的单元 SINT INT DINT REAL 标签 存放计算结果的标签。 说明:SUB 指令使源 A 操作数减去源 B 操作数并存放结果于目的单元内。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的单元=源A 一源B 梯级输出条件被设置为真。 算术状态标志: 影响算术状态标志 故障条件: 无 SUB指令举例 : 当指令使能时 SUB 指令使 float _v
30、alue_1 减去 float_ value_2 并存放结果于 subtract_result 内。4 乘法指令(MUL) MUL 指令是一条输出指令。 操作数:操作数 数据类型 格式 说明 源A SINT INT DINT REAL 立即数 标签 被乘数 源B SINT INT DINT REAL 立即数 标签 乘数 目的单元 SINT INT DINT REAL 标签 存放计算结果的标签。 说明:MUL 指令使源 A 操作数与源 B 操作数相乘并存放计算结果于目的单元。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的
31、单元=源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 立即数 标签 除数值。 说明:DIV 指令使源 A 操作数被源 B 操作数除并存放结果于目的单元。 执行:条件: 动作: 预扫描 梯级输出条件
32、被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的单元=源A/源B, 梯级输出条件被设置为真。 算术状态标志: 影响算术状态标志 故障条件: 无 DIV指令举例 : 当指令使能时 DIV 指令使 float_value_1 被 float_value_2 除并存放结果于 divide_result 内。6 平方根指令(SQR) SQR 指令是一条输出指令。操作数:操作数 数据类型 格式 说明 源 SINT INT DINT REAL 立即数 标签 计算该值的平方根。 目的单元 SINT INT DINT REAL 立即数 标签 存放计算结果的标签。 说明: SQR
33、 指令计算源操作数的平方根并存放计算结果于目的单元内。如果源操作数是负数则指令在计算源操作数的平方根之前先计算其绝对值。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的单元=梯级输出条件被设置为真。Destination=(Soure)1/2 算术状态标志: 影响算术状态标志 故障条件: 无 SQR指令举例 : 当指令被使能时 SQR 指令计算 value_1 的平方根并存放计算结果于 sqr_result 内。7 取反指令(NEG) NEG 指令是一条输出指令。 操作数:操作数 数据类型 格式 说明 源 SINT IN
34、T DINT REAL 立即数 标签 要取反的数值。 目的 SINT INT DINT REAL 立即数 标签 存放计算结果的标签。 说明: NEG 指令改变源操作数的符号并存放结果于目的单元。如果对一个负数取反则结果是正数。如果对正数取反则结果是负数。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 目的单元=0一源操作数,梯级输出条件被设置为真。 五、传送/逻辑指令1. 传送指令(MOV) MOV 指令是一条输出指令。操作数: 操作数 数据类型 格式 说明 源 SINT INT DINT REAL 立即数 标签 被传送(复
35、制) 的数值 目的单元 SINT INT DINT REAL 立即数 标签 存放计算结果的标签。 说明: MOV 指令复制源操作数到目的单元。源操作数保持不变。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令复制源操作数到目的单元。梯级输出条件被设置为真。 算术状态标志: 不影响 故障条件: 无 MOV指令举例: 当指令被使能时,MOV 指令复制在 value_1 内的数据到 value_2.2. 屏蔽传送指令(MVM) MVM 指令是一条输出指令。 操作数:操作数 数据类型 格式 说明 源 SINT INT DINT
36、立即数 标签 被传送的值 屏蔽 SINT INT DINT 立即数 标签 阻止或通过的位。目的单元 SINT INT DINT 标签 存放结果的标签。说明: MVM 指令复制源操作数数值到目的单元并且允许部分数据被屏蔽。源操作数保持不变。当指令被使能时 MVM 指令通过屏蔽传送或阻止源数据位。屏蔽位的一个 1 值意味着位数据可以通过。屏蔽位的一个 O 值意味着位数据被阻止。如果用混合整型数据类型则指令用 O 值来填充小整数数据类型的高位以使它们与最大整型数据类型的大小相同。输入立即数作为屏蔽值当输入立即数作为屏蔽值时编程软件默认为是十进制数值。如果要输入一个其它格式的屏蔽值可以在数值之前加相应
37、的前缀如下表所示:前缀: 说明: 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 立即数 标签 包含要传送数据位的标签。 源位
38、D INT 立即数(0一31 DINT) (0一15 INT)(0一7 SINT) 开始传送位的位置号(低位号) 必须在源数据类型的有效范围内。 目的 SINT INT D INT标签 传送位的目的单元标签。 目的位 D INT 立即数 从源操作数复制的位在目的单元的起始位号(低位号) 必须在目的操作数数据类型的有效范围内。 长度 D INT 立即数(1一32) 被传送的位的数量。 说明: BTD 指令复制源操作数的指定位并传送这些位到适当的位置并把这些位写到目的元内。目的单元内的其余部分保持不变。当指令被使能时 B 丁 O 指令复制来自源操作数的位组到目的单元内。该位组由源位(位组的低位位号
39、) 和长度 (要复制的位的数量)确定。目的位确定目的单元内开始的低位号。源操作数保持不变。如果位字段扩展的长度超过目的单元的边界则指令不保存超出的位。超出的位也不与下个字重叠。如果用混合整数数据类型则指令用 O 值来填充小整数数据类型的高位以使它们与最大数据类型的大小相同。执行:条件: 动作: 预扫描 梯级输出条件被设置为假 梯级输入条件为假 梯级输出条件被设置为假 梯级输入条件为真 指令复制并且传送源数据位到目的单元。 梯级输出条件被设置为真。 算术状态标志: 影响算术状态标志 故障条件: 无 BTD 指令举例: 例 1当指令被使能时指令传送在 value_1 内的位。Value_1执行BT
40、D指令之前Value_1 执行BTD指令之后4. 清零指令(CLR) CLR指令是一条输出指令。 操作数:操作数: 数据类型: 格式: 说明: 目的 SINTINT DINT REAL 标签 被清零数据的标识符 说明:CLR 指令清零目的单元的所有位。执行:条件: 动作: 预扫描: 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令清零目的单元内的数据。 梯级输出被件被设置为真。 算术状态标志: 影响算术状态标志 故障条件: 无 CLR指令举例 : 当使能时CLR 指令清零 value_1内的所有位。5. 按位与指令(AND) AND指令是一条输出指令
41、。 操作数:操作数 数据类型 格式 说明 源A SINT INT DINT 立即数 标签 与源B操作数进行与运算的 数值。 源B SINT INT DINT 立即数 标签 与源A操作数进行与运算的 数值。 目的单元 SINT INT DINT 标签 存放运算结果的标签。 说明: AND指令执行源A与源B操作数的按位与运算并存放结果于目的单元。 当指令被使能时执行逻辑与运算:如果源A的位: 源B的位: 目的单元的位是 0 0 0 0 1 0 1 0 0 1 1 1 如果用户使用混合整型数据类型则指令用0值填充小整数数据的高位以使其与最大数据类型有相同的大小。执行:条件: 动作: 预扫描 梯级输出
42、条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令执行按位与运算。 梯级输出条件被设置为真。 算术状态位: 影响算术状态位 故障条件: 无 112 AND指令举例: 当指令被使能时,AND指令执行value_1与value_2的按位与运算,并存放结果于value_3内。阴影部分表示发生变化的位6. 按位或指令(OR) OR指令是一条输出指令。操作数:操作数 数据类型 格式 说明 源A SINT INT DINT 立即数 标签 与源B进行逻辑或运算的数 值。 源B SINT INT DINT 立即数 标签 与源A进行或运算的数值。 目的单元 SINT INT D
43、INT 标签 存放运算结果的标签。 说明: 逻辑OR指令执行源A与源B操作数的按位或运算并存放结果于目的单元。 当指令被使能时执行逻辑或运算:如果源A的位: 源B的位: 目的单元的位是 0 0 0 0 1 1 1 0 1 1 1 1 如果用户使用混合整型数据类型则指令用0值填充小整数数据的高位以使其与最大数据类型具有相同的大小。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令执行按位或运算。 梯级输出条件被设置为真。 算术状态位: 影响算术状态位故障条件: 无 OR指令举例: 当指令被使能时,OR指令执行value_1与
44、value_2 的按位或运算,并存放结果于value_3 内。阴影部分表示发生变化的位7. 按位异或指令(XOR)XOR指令是一条输出指令。 操作数:操作数 数据类型 格式 说明 源A SINT INT DINT 立即数 标签 与源B进行异或运算的数值。 源B SINT INT DINT 立即数 标签 与源A进行异或运算的数值。 目的单元 SINT INT DINT 标签 存放运算结果的标签。 说明: XOR指令执行源A与源B 操作数的按位异或运算并存放结果于目的单元。 当指令被使能时执行逻辑异或运算:如果源A的位: 源B的位: 目的单元的位是 0 0 0 0 1 1 1 0 1 1 1 0如
45、果用户使用混合整型数据类型则指令用0值填充小整数数据的高位以使其与最大数据类型有相同的大小。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令执行按位异或运算。 梯级输出条件被设置为真。 算术状态位: 影响算术状态位 故障条件: 无 XOR指令举例: 当指令被使能时,XOR指令执行value_1 与value_2 的按位异或运算,并存放结果于 value_3内。8. 按位非指令(NOT)NOT指令是一条输出指令。 操作数:操作数: 数据类型: 格式: 说明: 源 SINT INT D INT 立即数 标签 执行NOT 运算的值。 目的 SINT INT D INT 标签 存储运算结果的标签。 说明: NOT 指令执行源操作数的按位非运算并存放结果于目的单元内。如果用户使用混合整型数据类型则指令用O值填充小整数数据的高位以使其与最大数据类型具有相同的大小。执行:条件: 动作: 预扫描 梯级输出条件被设置为假。 梯级输入条件为假 梯级输出条件被设置为假。 梯级输入条件为真 指令执行按位非运算。 梯级输出条件被设置为真。 算术状态位: 影响算术状态位 故障条件: 无 NOT指令举例 : 当指令被使能时,NOT指令执行 value_1的按位非运算,并存放结果于 value_result_not内。