第 15 讲 传送和比较指令
290 likes | 636 Views
第 15 讲 传送和比较指令. 一、比较指令 FNC10 CMP 二、区间比较指令 FNC 11 ZCP 三、传送指令 FNC 12 MOV 四、移位传送指令 FNC 13 SMOV 五、取反传送指令 FNC 14 CML 六、块传送指令 FNC 15 BMOV 七、多点传送指令 FNC 16 FMOV 八、数据交换指令 FNC 17 XCH 九、变换指令 FNC 18 BCD FNC 19 BIN. 4.3.1 单值比较指令和区间比较指令.
第 15 讲 传送和比较指令
E N D
Presentation Transcript
第15讲 传送和比较指令 一、比较指令 FNC10 CMP 二、区间比较指令 FNC 11 ZCP 三、传送指令 FNC 12 MOV 四、移位传送指令 FNC 13 SMOV 五、取反传送指令 FNC 14 CML 六、块传送指令 FNC 15 BMOV 七、多点传送指令 FNC 16 FMOV 八、数据交换指令 FNC 17 XCH 九、变换指令 FNC 18 BCD FNC 19 BIN
4.3.1 单值比较指令和区间比较指令 1. 单值比较指令FNC10 CMP(DCMP、CMPP) • 操作数 [S1]、[S2] : K,H、KnX、KnY、KnM、KnS、T、C、D、 V,Z [D]:Y、M、S • 梯形图
X000 [S1] [S2] [D] M100 K200>(D0)的当前值时,M100 = ON M101 K200= (D0)的当前值时,M101 = ON M102 CMP K200 D0 M100 K200<(D0)的当前值时,M102 = ON X001 RST M100 RST M101 RST M102 Y000 Y001 Y002 X000断开后,M100、M101、M102保持X000断开前的状态,M100、M101和M102的状态只能用RST指令或ZRST指令清除 图4.13 单值比较指令
2、区间比较指令 FNC11 ZCP (DZCP、ZCPP) • 操作数 [S1]、[S1] : K,H、KnX、KnY、KnM、KnS、T、C、D、 V,Z [D]:Y、M、S • 梯形图
X000 ZCP K200 D1 D0 M100 M100 (D0) < K200的当前值时,M100 = ON M101 K200≤(D0)≤(D1)的当前值时,M101 = ON M102 (D1)<(D0)的当前值时,M102 = ON X001 RST M100 RST M101 RST M102 Y002 Y001 Y000 X000接通时进行比较,X000断开后比较结果仍保留,只有用RST指令或ZRST才能清除比较结果。 图4.14 区间比较指令
说 明 • ZCP指令是将源操作数[S]的数据和两个源操作数[S1]和[S2]的数据进行比较,结果送到[D]中,[D]为三个相邻元件的首地址。 • ZCP指令为二进制代数比较,并且[S1]<[S2],如果[S1]>[S2],则把[S1]视为[S2]处理。 • X0由ON→OFF时,不执行ZCP指令,比较结果保持不变,需要用复位指令才能清除。 • 该指令可以进行16/32位数据处理和连续/脉冲执行方式。
X0 MOV D10 K100 4.3.2 传送指令 1、传送指令 FNC12 MOV • 操作数 [S1]、[S1] : K,H、KnX、KnY、KnM、KnS、T、C、D、 V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z • 梯形图 K100→(D10)
说 明 • 该指令将源操作数[S]中的数据传送到目标操作数[D]中去。 • MOV指令可以进行(D)和(P)操作。 • 如果[S]为十进制常数,执行该指令时自动转换成二进制数后进行数据传送。 • 当X0断开时,不执行MOV指令,数据保持不变。
高位 低位 1 D20 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 K2M0 1 0 D21 0 0 0 0 0 0 0 1 0 1 1 0 1 1 长数据送到短单元 保持原位 全为0 短数据送到长单元 长度不同的数据之间的传送
X000 K2X000 FNC 12 MOV T60 D10 K100 K2Y000 FNC 12 DMOV D20 D22 FNC 12 MOV FNC 12 MOV D11 X000 T50 D11 MOV指令的应用
2、移位传送指令 FNC13 SMOV • 操作数 [S1]、[S1] :K,H、KnX、KnY、KnM、KnS、T、C、D、 V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z m1、m2、n:K、H • 说 明 • 该指令将源操作数[S]的16位二进制数自动转换成4位BCD码,然后从右向左第m1位开始向右数m2位,传送到目标操作数(4位BCD码)的从右向左第n位开始向右数m2位的位置上,最后这4位BCD码自动转换成二进制数后送入目标操作数[D]中去。 • 传送中BCD码数值超过9999时程序出错。
2、移位传送指令 FNC13 SMOV 3 0 1 1 3 0 2 2 X0 [S] m1 m2 [D] n 10 10 10 10 10 10 10 10 SMOV D1 K4 K2 D2 K3 b15 b0 D1 二进制 自动转换 D1 4位BCD码 保持 保持 D2 4位BCD码 b15 b0 自动转换 D2 二进制 从D1右起第四位(m1 = K4)开始的2位 (m2 = K2) 数,移到D2 的右起第 3位 (n = K3) 和第 2位, D2中的第 1 位和第 4位保持不变 ,最后 D2 中的数自动变成二进制数。 • 梯形图
X17 M8000 K2X010 D20 K1X000 D10 X16 FNC 19 BIN FNC 19 BIN X15 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 X14 2 X13 X12 X11 D20 X10 D10 K2 K2 K3 FNC 13 SMOV 5 X7 X6 (b)梯形图 X5 X4 X3 X2 BIN X1 X0 D10 5 0V BCD 0 0 D20 0 0 0 0 0 0 1 1 1 1 1 1 1 1 (a)I/O连接图 1 1 0 0 1 0 0 0 0 0 1 0 D10 D20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 BCD 原值 原值 (c) SMOV指令的执行 BIN SMOV指令的应用
X010 M8168 D20 D10 K2 K2 K3 FNC 13 SMOV X010 M8168 SMOV指令直接传送数
3、取反传送指令 FNC14 CML • 操作数 [S]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z 说 明 • 该指令把源操作数[S]中的数据各位取反(1→0,0→1)后传送到目标操作数[D]中去。 • 该指令可以16/32位数据处理和连续/脉冲执行方式
(D0) (K1Y0) X0 [S] [D] CML D0 K1Y0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 符号位 取反传送 1 0 1 0 保持不变 Y3 Y0 • 梯形图 若源操作数中的数为十进制常数时,将自动转换成二进制 .
D5 D10 X0 [S] D n D6 D11 BMOV D5 D10 K3 D7 D12 4、块传送指令 FNC15 BMOV • 操作数 [S]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z n:K、H • 梯形图
说 明 • [S]为存放被传送的数据块的首地址;[D]为存放传送来的数据块的首地址;n为数据块的长度。 • 位元件进行传送时,源和目标操作数要有相同的位数。 • 当传送地址号重叠时,为防止在传送过程中数据丢失(被覆盖),要先把重叠地址号中的内容送出,然后再送入数据。如图所示,采用①~③的顺序自动传送。 • 该指令可以连续/脉冲执行方式。
X0 X1 BMOV K1M0 K1Y0 K2 BMOV D10 D9 K3 X2 M0 Y0 BMOV D10 D11 K3 M1 Y1 M2 Y2 M3 Y3 D10 D10 D11 D9 n = K2 D11 D11 D10 D12 M4 Y4 D12 D12 D11 D13 M5 Y5 M6 Y6 M7 Y7 块传送指令的应用 ① ② ③ ③ ② ①
X0 [S] D n BMOV K10 D0 K10 5、多点传送指令 FNC16 FMOV • 操作数 [S]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D n:K、H • 梯形图 把K10传送到D0~D9中去
(D0) (D1) X0 [D1] [D2] XCH(P) D0 D1 6、数据交换指令 FNC17 XCH • 操作数 [D1]、[D2]:KnY、KnM、KnS、T、C、D、V,Z • 梯形图 • 注意 交换指令一般要在脉冲方式执行,否则不能正常工作。
X0 [S] [D] BCD D10 K2Y0 X1 [S] [D] BIN K2Y0 D14 4.3.3 变换指令 FNC18 BCD和 FNC19 BIN • 操作数 [S]:KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z • 梯形图
案例:货料小车控制 • 一、控制要求某车间有 6 个工作台,送料车往返于工作台之间送料,每个工作台设有一个到位开关( SQ )和一个呼吸按扭( SB )。具体控制要求如下: ( 1 )送料车开始应能停留在 6 个工作台中任意一个到位开关的位置上。 ( 2 )设送料车现暂停于 m 号工作台( SQ m 为 ON )处,这时 n 号工作台呼叫( SQ n 为 ON ),若:
(a) m>n ,送料车左行,直至 SQ n 动作,到位停车。即送料车所停位置 SQ 的编号大于呼叫按扭 SB 的编号时,送料车往左行运行至呼叫位置后停止。 (b) m<n ,送料车右行,直至 SQ n 动作,到位停车。即送料车所停位置 SQ 的编号小于呼叫按扭 SB 的编号时,送料车往右运行至呼叫位置后停止。 (c) m=n ,送料车原位不动。即送料车所停位置 SQ 的编号与呼叫按扭 SB 的编号相同时,送料车不动。
图中将送料车当前位置送到数据寄存器 D0 中,将呼叫工作台号送到数据寄存器 D1 中,然后通过 D0 与 D1 中数据的比较,决定送料车的运行方向和到达的目标位置。 作业:1、利用计数与比较指令,设计24h可设定定时时间的住宅控制器的控制程序(每15min为一个设定单位,即24h共有96个时间单位),要求实现如下控制:①早上6:30,闹钟每秒响一次,10秒后自动停止。 ②9:00~17:00,启动住宅报警系统。 ③晚上6点打开住宅照明。 ④晚上10:00关闭住宅照明。 (提示:可以设X0为启停开关;X1为15min快速调整与试验开关;X2为格数设定的快速调整与试验开关。使用时,早0:00时启动定时器。C0为15min计数器,当按下X0时,C0当前值每过1S加1,当C0当前值等于设定值K900时,即为15min。C1为96格计数器,它的当前值每15min加1,当C1当前值等于设定值K96时,即为24h。另外,K26、K36、K68、K72、K88分别为6:30、9:00、17:00、18:00和22:00的时间点。) 2、P238 第3题