第六章5循环移位指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)在指令的连续执行方式中,每一个扫描周期都会移位一次。 在实际控制中,常采用脉冲执行方式。
位左移指令SFTL的应用示例梯形图如下所示。
位左移指令SFTL示例梯形图
来自百度文库
位左移指令SFTL示例过程
位右移指令SFTR的应用示例梯形图如下所示。
位右移指令SFTR示例梯形图
位右移指令SFTR示例过程
SFTRP SFTLP
位移位指令使用说明
说明
(1) SFTR命令有4个操作数,当X10接通,以源(S.)X0开始的n2 (K2)位,向右移入以目标(D.)M0开始的n1(K8)位元件中去。 每当X10从OFF → ON,移位一次。移位后,如果源为1,则目标 置位,而源复位。
(2) SFTL命令也有4个操作数,其动作原理与(1)相同。
• 循环左移(D) ROL(P) (Rotation Left)(16/32)
操作数 [D]:KnY、KnM、KnS、T、C、D、V、Z 说明
执行这两条指令时,各位的数据向右(或向左)循环移动 n位(n为常数),16位指令和32位指令中n应分别小于16 和32。
每次移出来的那一位同时存入进位标志M8022中。
【解】 控制线路需要2个输入端口,8个输出端口。输入、输出端口的分配 如表5.39所示。
输入/输出端口分配表 输 输入继电器 X0 X1 入 作 用 启动按钮 停止按钮 Y7~Y0 输 输出继电器 出 控制对象 8个接触器
输入元件 SB1 SB2
字右移和字左移指令 字右移WSFR(P)(Word Shift Right)、 字左移 WSFL(P)(Word Shift Left) 操作数 [S]: KnX、KnY、KnM、KnS、T、C、D [D]: KnY、KnM、KnS、T、C、D
实现位元件中的状态成 组地向右或向左移动
说明: 位元件组的长度由n1指定,n2指定移 动的位数。
梯形图
图中X010由OFF变为ON时,位右移指令(3位1组)按以下顺序移位:M2~M0中 的数溢出,M5~M3→M2~M0,M8~M6→M5~M3,X002~X0000→M8~M6。 图b中的X010由OFF变为ON时,位左移指令按图中所示的顺序移位。
(1)位右移说明: 当操作条件满足时,位右移指令在n1个指定目标位元件中,右移n2个指 定的源元件位元件状态。即n2位[S.] 状态右移到n1位[D.],从n1位目标元件 的高位进去,而其低位溢出。 上述的示例程序操作。位右移的目标元件为:M10~M25,源元件为: X0~X1,当X1由“0”变“1”时,X1、X0的状态传到M25、M24,原来的 M25、M24移到M23、M22…以此类推,M11、M10丢失。由图示的方法说 明状态的变化。 由于连续型操作,每个扫描周期都进行操作,合上一瞬间,就把原操作数状 态都移位了。建议使用SFTRP,SFTLP,便于控制。
n1、n2:K,H,n2 ≤ n1 ≤ 512。
梯形图
图a中的X000由OFF变为ON时,字右移指令按图中所示的顺序移位。 图b中的X010由OFF变为ON时,字左移指令按图中所示的顺序移位。
字移位指令使用说明
字右移指令的使用注意事项: 1)一般情况下n2≤n1≤512。 2)WSFR指令源操作数可取KnX、KnY、KnM、KnS、T、C 和D,目标操作数可取KnY、KnM、KnS、T、C和D。 3)WSFR(P)只有16位操作数,占9个程序步。
图 b中
• X000由OFF变为ON时,D2中的数据送到D20,同时指针D1的值减1,D3
到D9的数据向右移一个字。 • 数据总是从D2读出,指针D1为0时,FIFO堆栈被读空,不再执行上述处
理,零标志M8020为ON。
• 执行本指令的过程中,D9的数据保持不变。
移位写入指令的使用注意事项: 1)一般情况下2≤n≤512。 2)源操作数可取所有数据类型,目标操作数可取KnY、 KnM、KnS、T、C和D。 3)SFWR(P)只有16位操作数,占7个程序步。 移位寄存器又称为FIFO(First In First Out,先入先出) 堆栈,堆栈的长度范围为2~512字。移位寄存器写入指令 SFWR和移位寄存器读出指令SFRD用于FIFO堆栈的读写,先写 入的数据先读出。 移位读出指令的使用注意事项: 1)一般情况下2≤n≤512。 2)源操作数可取所有数据类型,目标操作数可取KnY、 KnM、KnS、T、C和D。 3)SFRD(P)只有16位操作数,占7个程序步。
【解】 Y17~Y0各位状态的变化如表所示。在未执行位右移指令SFTR 前,(K4Y0)= 0,第一次执行左移指令SFTR后,(K4Y0)= H0B000, 第二次执行左移指令SFTL后,(K4Y0)= H0BB00,依次类推。
例题 各位状态的变化
【例题】 某台设备有8台电动机,为了减小电动机同时启动对电源的影 响,利用位移指令实现间隔10s的顺序通电控制。按下停止按钮时,同时 停止工作。
循环移位与移位指令
教学目标 1、了解循环指令的使用 2、掌握移位寄存器的指令使用 3、掌握利用可编程序控制器来实现数码管 显示控制的程序设计
项目:彩灯的循环控制
现有16个彩灯,摆放成圆形,按下启动按钮,彩灯以顺时针方
向间隔1秒轮流点亮,循环三次后彩灯转换成逆时针方向间隔2
秒轮流点亮,循环三次后自动停止工作。按下停止按钮,立即 停止工作。 如何完成控制要求?
循环右移说明
循 环 位 移 指 令 使 用 说 明
【例题】 循环左移指令ROL的应用举例如图所示。求输出位组件K4Y0在 一个循环周期中各位状态的变化。
各位状态的变化
【例题】 利用PLC实现流水灯控制。某灯光招牌有24个灯, 要求按下启动按钮X0时,灯以正、反序每0.1s间隔轮流点亮; 按下停止按钮X1时,停止工作。 【解】 由于输出动作频繁,应选择晶体管或晶闸管输出类型 的PLC。流水灯控制需要2个输入端口,24个输出端口。输入、 输出端口的分配如表5.34所示。 输入/输出端口分配表
Y2
KM3→(M3)
X1
Y1
KM2→(M2)
X0
Y0
KM1→(M1)
COM
COM1
(a) 四台水泵运行时序图 Y1 M0 X0 SFTLP C0 RST X0 M8014 C0 X1 ZRST Y0 Y3 K480 C0 M0 Y0 K4 K1
(b) 电动机PLC接线图
Y3 0 0 0 0 1 1 0
【例】入库物品FIFO。写入99个物品的产品编号(4位十 进制数),依次存放在D2~D100中,按照先入库的物品 先出库的原则,读取出库物品的产品编号,并用4位数码 管显示产品编号。则其程序如图所示。
X0 入库 BIN K4X0 D0 4位十进制编号0~9999→D0 存放99个产品编号D0→D2~D100
SFWRP X1 出库 M8000 BCD SFRDP
D0 D2
D1
K100
D101 K100
把产品编号读到D101中
D101 K4Y0
用4位BCD数码管显示产品编号
图
移位写入和读出物品编号实例
图 FIFO指令
(5)执行图5-59,当X0闭合,D0为100。执行SFWR指令,
当X1第1次闭合,D2为100,D1为1; 当X1第2次闭合,D3为100,D1为2,…, 当X1第9次闭合,D10为100,D1为9。 执行SFRD指令,当X2第1次闭合,D10数据100送D20,D1为8; 当X2第2次,D9数据送D20,D1数值减小到7…,一直到D1为0。 在写出过程中,D2~D10数据保持不变。
【解】 Y17~Y0各位状态的变化如表所示。第一次执行左移指令 SFTL后,(K4Y0)= H0B,第二次执行左移指令SFTL后,(K4Y0)= H0BB,依次类推。
例题 各位状态的变化
2.位右移指令SFTR举例 【例题】 位右移指令SFTR的程序梯形图如图所示。设Y17~Y0的初始 状态为0,X3~X0的位状态为1011。求数次执行位右移指令SFTR后, Y17~Y0各位状态的变化。
输 输入继电 器 X0 入 作 用 输出继电器 Y7~Y0 输 出 控制对象 HL8~HL1 输入元件 SB1
启动按钮
X1
SB2
停止按钮
Y17~Y10
Y27~Y20
HL16~HL9
H24~HL17
PLC应用指令的应用 霓虹灯控制 控制要求:
现有L1~L8共8盏霓虹灯管接于K2Y000,要求当X000为ON时,霓虹灯 L1~L8以正序每隔1秒轮流点亮,当Y007亮后,停2秒;然后,反向逆 序隔1秒轮流点亮,当Y000再亮后,停5秒,重复上述过程。当X001为 ON时,霓虹灯停止工作。
移位寄存器写入与读出指令
移位寄存器又称为先入先出FIFO(First in First out)堆栈,堆栈的长
度范围为2~512个字。 • 写入指令 SFWR(Shift Register Write)
• 移位寄存器读出指令 SFRD(Shift Register Read)
用于FIFO堆栈的读写,先写入的数据先读出。 SFWR操作数 [S]: K、H、KnX、KnY、KnM、KnS、T、C、D、V、Z [D]: KnY、KnM、KnS、T、C、D SFRD操作数 [S]: KnX、KnY、KnM、KnS、T、C、D [D]: KnY、KnM、KnS、T、C、D
PLC应用指令的应用 霓虹灯控制 I/O分配表
输入 输入继电器 X000 X001 作用 起动按钮 停止按钮 输出继电器 Y000~Y007 输出 作用 驱动L1~L8
PLC应用指令的应用 霓虹灯控制 梯形图设计(1/2)
PLC应用指令的应用 霓虹灯控制
梯形图设计(2/2)
二、带进位左、右循环移位指令
• 带进位循环右移RCR(Rotation Right with Carry) • 带进位循环左移RCL(Rotation Left with Carry)
执行这两条指令时,各位的数据与进位位M8022一起(16位指令时一共17
位)向右(或向左)循环移动n位(见图)。
三、位右移和位左移指令 • 位右移SFTR(Shift Right) • 位左移 SFTL(Shift Left) 操作数 [S]: X、Y、M、S [D]:Y、M、S
Y2 0 0 0 1 1 0 0
Y1 0 0 1 1 0 0 1
Y0 0 1 1 0 0 1 1
M0 1 1 0 0 1 1 0 循 环
(c)四台水泵运行梯形图
图
四台水泵轮流工作实例
2.位左移指令SFTL举例
【例题】 位左移指令SFTL的程序梯形图如图所示。设Y17~Y0的初 始状态为0,X3~X0的位状态为1011。求数次执行位左移指令SFTL后, Y17~Y0各位状态的变化。
【例】四台水泵轮流运行,由四台三相异步电动机M1~M4 驱动。正常要求是两台运行两台备用。为了防止备用水泵 长时间不用造成锈蚀等问题,要求四台水泵中两台运行, 并每隔8h切换一台,使四台水泵轮流运行。
X0 C0 Y0 Y1 Y2 Y3 SA 运行 8h 8h 8h 8h 8h 8h 停止
Y3
KM4→(M4)
利用FIFO
案例五 生产线质量控制
•现代工业生产广泛采用流水作业,对成品或半成品进行分 检,排除残次品是必须的工序。在流水线上,成品或半成 品往往要经过若干项检验,符合要求者得以通过,随着流
(1)利用基本指令完成编程。
(2)利用步进指令完成编程。 (3)利用移位指令完成编程。
• 利用基本指令完成编程,程序如下:
• 利用步进指令完成编程任务,参考程序如下:
• 利用移位指令完成编程任务,参考程序如下:
一、循环移位指令
左、右循环移位指令 • 循环右移(D)ROR(P)(Rotation Right)(16/32)
图a中: • 目标元件D1是FIFO堆栈的首地址,也是堆栈的指针,移位寄存器未装入 数据时应将D1清0。 • 在X000由OFF变为ON时,指针的值加1后写入数据。第一次写入时,源操 作数D0中的数据写入D2。
FIFO指令使用说明
• 如果X000再次由OFF变为ON,D1中的数变为2,D0中的数据写入D3。依 此类推,源操作数D0中的数据依次写入堆栈。 • 当D1中的数据等于n-1(n为堆栈的长度)时,不再执行上述处理,进位标 志M8022置1。
位左移指令SFTL的应用示例梯形图如下所示。
位左移指令SFTL示例梯形图
来自百度文库
位左移指令SFTL示例过程
位右移指令SFTR的应用示例梯形图如下所示。
位右移指令SFTR示例梯形图
位右移指令SFTR示例过程
SFTRP SFTLP
位移位指令使用说明
说明
(1) SFTR命令有4个操作数,当X10接通,以源(S.)X0开始的n2 (K2)位,向右移入以目标(D.)M0开始的n1(K8)位元件中去。 每当X10从OFF → ON,移位一次。移位后,如果源为1,则目标 置位,而源复位。
(2) SFTL命令也有4个操作数,其动作原理与(1)相同。
• 循环左移(D) ROL(P) (Rotation Left)(16/32)
操作数 [D]:KnY、KnM、KnS、T、C、D、V、Z 说明
执行这两条指令时,各位的数据向右(或向左)循环移动 n位(n为常数),16位指令和32位指令中n应分别小于16 和32。
每次移出来的那一位同时存入进位标志M8022中。
【解】 控制线路需要2个输入端口,8个输出端口。输入、输出端口的分配 如表5.39所示。
输入/输出端口分配表 输 输入继电器 X0 X1 入 作 用 启动按钮 停止按钮 Y7~Y0 输 输出继电器 出 控制对象 8个接触器
输入元件 SB1 SB2
字右移和字左移指令 字右移WSFR(P)(Word Shift Right)、 字左移 WSFL(P)(Word Shift Left) 操作数 [S]: KnX、KnY、KnM、KnS、T、C、D [D]: KnY、KnM、KnS、T、C、D
实现位元件中的状态成 组地向右或向左移动
说明: 位元件组的长度由n1指定,n2指定移 动的位数。
梯形图
图中X010由OFF变为ON时,位右移指令(3位1组)按以下顺序移位:M2~M0中 的数溢出,M5~M3→M2~M0,M8~M6→M5~M3,X002~X0000→M8~M6。 图b中的X010由OFF变为ON时,位左移指令按图中所示的顺序移位。
(1)位右移说明: 当操作条件满足时,位右移指令在n1个指定目标位元件中,右移n2个指 定的源元件位元件状态。即n2位[S.] 状态右移到n1位[D.],从n1位目标元件 的高位进去,而其低位溢出。 上述的示例程序操作。位右移的目标元件为:M10~M25,源元件为: X0~X1,当X1由“0”变“1”时,X1、X0的状态传到M25、M24,原来的 M25、M24移到M23、M22…以此类推,M11、M10丢失。由图示的方法说 明状态的变化。 由于连续型操作,每个扫描周期都进行操作,合上一瞬间,就把原操作数状 态都移位了。建议使用SFTRP,SFTLP,便于控制。
n1、n2:K,H,n2 ≤ n1 ≤ 512。
梯形图
图a中的X000由OFF变为ON时,字右移指令按图中所示的顺序移位。 图b中的X010由OFF变为ON时,字左移指令按图中所示的顺序移位。
字移位指令使用说明
字右移指令的使用注意事项: 1)一般情况下n2≤n1≤512。 2)WSFR指令源操作数可取KnX、KnY、KnM、KnS、T、C 和D,目标操作数可取KnY、KnM、KnS、T、C和D。 3)WSFR(P)只有16位操作数,占9个程序步。
图 b中
• X000由OFF变为ON时,D2中的数据送到D20,同时指针D1的值减1,D3
到D9的数据向右移一个字。 • 数据总是从D2读出,指针D1为0时,FIFO堆栈被读空,不再执行上述处
理,零标志M8020为ON。
• 执行本指令的过程中,D9的数据保持不变。
移位写入指令的使用注意事项: 1)一般情况下2≤n≤512。 2)源操作数可取所有数据类型,目标操作数可取KnY、 KnM、KnS、T、C和D。 3)SFWR(P)只有16位操作数,占7个程序步。 移位寄存器又称为FIFO(First In First Out,先入先出) 堆栈,堆栈的长度范围为2~512字。移位寄存器写入指令 SFWR和移位寄存器读出指令SFRD用于FIFO堆栈的读写,先写 入的数据先读出。 移位读出指令的使用注意事项: 1)一般情况下2≤n≤512。 2)源操作数可取所有数据类型,目标操作数可取KnY、 KnM、KnS、T、C和D。 3)SFRD(P)只有16位操作数,占7个程序步。
【解】 Y17~Y0各位状态的变化如表所示。在未执行位右移指令SFTR 前,(K4Y0)= 0,第一次执行左移指令SFTR后,(K4Y0)= H0B000, 第二次执行左移指令SFTL后,(K4Y0)= H0BB00,依次类推。
例题 各位状态的变化
【例题】 某台设备有8台电动机,为了减小电动机同时启动对电源的影 响,利用位移指令实现间隔10s的顺序通电控制。按下停止按钮时,同时 停止工作。
循环移位与移位指令
教学目标 1、了解循环指令的使用 2、掌握移位寄存器的指令使用 3、掌握利用可编程序控制器来实现数码管 显示控制的程序设计
项目:彩灯的循环控制
现有16个彩灯,摆放成圆形,按下启动按钮,彩灯以顺时针方
向间隔1秒轮流点亮,循环三次后彩灯转换成逆时针方向间隔2
秒轮流点亮,循环三次后自动停止工作。按下停止按钮,立即 停止工作。 如何完成控制要求?
循环右移说明
循 环 位 移 指 令 使 用 说 明
【例题】 循环左移指令ROL的应用举例如图所示。求输出位组件K4Y0在 一个循环周期中各位状态的变化。
各位状态的变化
【例题】 利用PLC实现流水灯控制。某灯光招牌有24个灯, 要求按下启动按钮X0时,灯以正、反序每0.1s间隔轮流点亮; 按下停止按钮X1时,停止工作。 【解】 由于输出动作频繁,应选择晶体管或晶闸管输出类型 的PLC。流水灯控制需要2个输入端口,24个输出端口。输入、 输出端口的分配如表5.34所示。 输入/输出端口分配表
Y2
KM3→(M3)
X1
Y1
KM2→(M2)
X0
Y0
KM1→(M1)
COM
COM1
(a) 四台水泵运行时序图 Y1 M0 X0 SFTLP C0 RST X0 M8014 C0 X1 ZRST Y0 Y3 K480 C0 M0 Y0 K4 K1
(b) 电动机PLC接线图
Y3 0 0 0 0 1 1 0
【例】入库物品FIFO。写入99个物品的产品编号(4位十 进制数),依次存放在D2~D100中,按照先入库的物品 先出库的原则,读取出库物品的产品编号,并用4位数码 管显示产品编号。则其程序如图所示。
X0 入库 BIN K4X0 D0 4位十进制编号0~9999→D0 存放99个产品编号D0→D2~D100
SFWRP X1 出库 M8000 BCD SFRDP
D0 D2
D1
K100
D101 K100
把产品编号读到D101中
D101 K4Y0
用4位BCD数码管显示产品编号
图
移位写入和读出物品编号实例
图 FIFO指令
(5)执行图5-59,当X0闭合,D0为100。执行SFWR指令,
当X1第1次闭合,D2为100,D1为1; 当X1第2次闭合,D3为100,D1为2,…, 当X1第9次闭合,D10为100,D1为9。 执行SFRD指令,当X2第1次闭合,D10数据100送D20,D1为8; 当X2第2次,D9数据送D20,D1数值减小到7…,一直到D1为0。 在写出过程中,D2~D10数据保持不变。
【解】 Y17~Y0各位状态的变化如表所示。第一次执行左移指令 SFTL后,(K4Y0)= H0B,第二次执行左移指令SFTL后,(K4Y0)= H0BB,依次类推。
例题 各位状态的变化
2.位右移指令SFTR举例 【例题】 位右移指令SFTR的程序梯形图如图所示。设Y17~Y0的初始 状态为0,X3~X0的位状态为1011。求数次执行位右移指令SFTR后, Y17~Y0各位状态的变化。
输 输入继电 器 X0 入 作 用 输出继电器 Y7~Y0 输 出 控制对象 HL8~HL1 输入元件 SB1
启动按钮
X1
SB2
停止按钮
Y17~Y10
Y27~Y20
HL16~HL9
H24~HL17
PLC应用指令的应用 霓虹灯控制 控制要求:
现有L1~L8共8盏霓虹灯管接于K2Y000,要求当X000为ON时,霓虹灯 L1~L8以正序每隔1秒轮流点亮,当Y007亮后,停2秒;然后,反向逆 序隔1秒轮流点亮,当Y000再亮后,停5秒,重复上述过程。当X001为 ON时,霓虹灯停止工作。
移位寄存器写入与读出指令
移位寄存器又称为先入先出FIFO(First in First out)堆栈,堆栈的长
度范围为2~512个字。 • 写入指令 SFWR(Shift Register Write)
• 移位寄存器读出指令 SFRD(Shift Register Read)
用于FIFO堆栈的读写,先写入的数据先读出。 SFWR操作数 [S]: K、H、KnX、KnY、KnM、KnS、T、C、D、V、Z [D]: KnY、KnM、KnS、T、C、D SFRD操作数 [S]: KnX、KnY、KnM、KnS、T、C、D [D]: KnY、KnM、KnS、T、C、D
PLC应用指令的应用 霓虹灯控制 I/O分配表
输入 输入继电器 X000 X001 作用 起动按钮 停止按钮 输出继电器 Y000~Y007 输出 作用 驱动L1~L8
PLC应用指令的应用 霓虹灯控制 梯形图设计(1/2)
PLC应用指令的应用 霓虹灯控制
梯形图设计(2/2)
二、带进位左、右循环移位指令
• 带进位循环右移RCR(Rotation Right with Carry) • 带进位循环左移RCL(Rotation Left with Carry)
执行这两条指令时,各位的数据与进位位M8022一起(16位指令时一共17
位)向右(或向左)循环移动n位(见图)。
三、位右移和位左移指令 • 位右移SFTR(Shift Right) • 位左移 SFTL(Shift Left) 操作数 [S]: X、Y、M、S [D]:Y、M、S
Y2 0 0 0 1 1 0 0
Y1 0 0 1 1 0 0 1
Y0 0 1 1 0 0 1 1
M0 1 1 0 0 1 1 0 循 环
(c)四台水泵运行梯形图
图
四台水泵轮流工作实例
2.位左移指令SFTL举例
【例题】 位左移指令SFTL的程序梯形图如图所示。设Y17~Y0的初 始状态为0,X3~X0的位状态为1011。求数次执行位左移指令SFTL后, Y17~Y0各位状态的变化。
【例】四台水泵轮流运行,由四台三相异步电动机M1~M4 驱动。正常要求是两台运行两台备用。为了防止备用水泵 长时间不用造成锈蚀等问题,要求四台水泵中两台运行, 并每隔8h切换一台,使四台水泵轮流运行。
X0 C0 Y0 Y1 Y2 Y3 SA 运行 8h 8h 8h 8h 8h 8h 停止
Y3
KM4→(M4)
利用FIFO
案例五 生产线质量控制
•现代工业生产广泛采用流水作业,对成品或半成品进行分 检,排除残次品是必须的工序。在流水线上,成品或半成 品往往要经过若干项检验,符合要求者得以通过,随着流
(1)利用基本指令完成编程。
(2)利用步进指令完成编程。 (3)利用移位指令完成编程。
• 利用基本指令完成编程,程序如下:
• 利用步进指令完成编程任务,参考程序如下:
• 利用移位指令完成编程任务,参考程序如下:
一、循环移位指令
左、右循环移位指令 • 循环右移(D)ROR(P)(Rotation Right)(16/32)
图a中: • 目标元件D1是FIFO堆栈的首地址,也是堆栈的指针,移位寄存器未装入 数据时应将D1清0。 • 在X000由OFF变为ON时,指针的值加1后写入数据。第一次写入时,源操 作数D0中的数据写入D2。
FIFO指令使用说明
• 如果X000再次由OFF变为ON,D1中的数变为2,D0中的数据写入D3。依 此类推,源操作数D0中的数据依次写入堆栈。 • 当D1中的数据等于n-1(n为堆栈的长度)时,不再执行上述处理,进位标 志M8022置1。