460 likes | 695 Views
项目 6 功能指令的应用. 引言. PLC 的基本指令是基于继电器、定时器、计数器类等软元件,主要用于逻辑处理的指令。作为工业控制计算机, PLC 仅有基本指令是远远不够的。现代工业控制在许多场合需要数据处理,因而 PLC 制造商在 PLC 中引入应用指令,也称功能指令。 FX 系列 PLC 除了基本指令、步进指令外,还有 200 多条功能指令。可分为程序流向控制、数据传送与比较、算术与逻辑运算、数据移位与循环、数据处理、高速处理、方便指令、外部设备通信( I/O 模块、功能模块)、浮点运算、定位运算、时钟运算、触点比较等几大类。功能指令实际上就是许多功能不同的子程序。.
E N D
引言 PLC的基本指令是基于继电器、定时器、计数器类等软元件,主要用于逻辑处理的指令。作为工业控制计算机,PLC仅有基本指令是远远不够的。现代工业控制在许多场合需要数据处理,因而PLC制造商在PLC中引入应用指令,也称功能指令。 FX系列PLC除了基本指令、步进指令外,还有200多条功能指令。可分为程序流向控制、数据传送与比较、算术与逻辑运算、数据移位与循环、数据处理、高速处理、方便指令、外部设备通信(I/O模块、功能模块)、浮点运算、定位运算、时钟运算、触点比较等几大类。功能指令实际上就是许多功能不同的子程序。
6.1 工作模块12八盏流水灯控制程序 一、任务导入 控制要求: 8盏流水灯每隔1s顺序点亮,并不断循环 采用功能指令编程更简单 经验设计法还是顺序功能图设计法?
[S] [D] [n] X0 D0 D10 K3 MEAN 二、相关知识 1.功能指令的基本格式 • 梯形图格式 • 指令表格式 步序 操作码 操作数 0 LD X0 1 MEAN D0 D10 K3 8 。。。。
操作码与操作数 • 操作码(指令助记符):表示指令的功能 • 操作数:指明参与操作的对象 • 源操作数S:执行指令后数据不变的操作数,两个或两个以上时 为S1、S2 • 目标操作数D:执行指令后数据被刷新的操作数,两个或两个以上时为D1、D2。如果可使用变址功能,用[S·]和[D·]表示。 • 其它操作数m、n:补充注释的常数,用K(十进制)和H(十六进制)表示,作为源和目标操作数的补充说明,两个或以上时为m1、m2、n1、n2。
X0 MOV D0 D1 X1 D2 D4 DMOV 2.数据长度及执行方式 • 数据长度 • 16位:参与运算的数据默认为16位二进制数据 • 32位:32位数据时在操作码前面加D(Double) (D0)→(D1) (D3D2)→(D5D4) 对于32位功能指令,其助记符在16位指令助记符上添加符号D。
X0 MOV D0 D1 X1 D2 D4 MOVP • 执行方式 • 连续执行方式:每个扫描周期都重复执行一次, 操作数的内容每个扫描周期都变化。 • 脉冲执行方式:只在信号OFF→ON时执行一次, 在指令后加P(Pulse)。
数据格式 • 在FX系列PLC内部,数据是以二进制(BIN)补码的形式存储,所有的四则运算都使用二进制数。 • 二进制补码的最高位为符号位,正数符号位为0,负数符号位为1。 • 为更精确地进行运算,可采用浮点数运算。在FX系列PLC中提供了二进制浮点运算和十进制浮点运算 。
数据寄存器(D) • 通用数据寄存器D0~D199共200点。 只要不写入其它数据,已写入的数据不会变化。但是PLC状态由运行→停止时,全部数据均清零。 • 断电保持数据寄存器D200 ~ D511共312点,只要不改写,原有数据不会丢失。 • 特殊数据寄存器D8000 ~ D8255共256点 这些数据寄存器供监视PLC中各种元件的运行方式用。 • 文件寄存器D1000 ~ D2999共2000点。
3.传送指令 FNC12 MOV 传送指令FNC12 MOV (D)MOV(P) 该指令的功能是将源数据传送到指定的目标。 操作数 [S1]: 所有数据类型 [D]:KnY、KnM、KnS、T、C、D、V、Z。 梯形图 K100→D10
三、任务实施 (一)I/O资源分配: 输入信号: 起动按钮X20 停止按钮X21; 输出信号: 8盏灯Y0~Y7。
6.2 工作模块13 抢答器控制程序设计 一、任务导入
X000 [CALL P10] X002 (Y000) 主程序 … [FEND] X001 P10 … (T196 K10) T196 子程序 (Y003) [SRET] 二、相关知识 1.子程序调用指令CALL和子程序返回指令SRET
2.子程序指令 • 子程序调用指令 FNC01CALL • 操作数:指针P0~P127 • 子程序返回指令FNC02SRET无操作数 • 说明 • 子程序应该在主程序结束之后编程。 • CJ指令的指针与CALL的指针不能重复。 • 子程序允许嵌套,嵌套级别最多为5级。 • 子程序只能用T192~T199和T246~T249作定时器。
3.主程序结束指令FEND • 主程序结束指令FEND无操作数。 • FEND表示主程序结束,当执行到FEND时,PLC进行输入/输出处理,监视定时器刷新,完成后返回起始步。 • END是指整个程序(包括主程序和子程序)结束。 • 一个完整的程序可以没有子程序,但一定要有主程序。 使用FEND指令时应注意: (1)子程序和中断服务程序应放在FEND之后。 (2)子程序和中断服务程序必须写在FEND和END之间,否则出错。
三、任务实施 (一)I/O资源分配
6.3 工作模块14 自动售货机的PLC控制 一、任务导入 控制要求: ① 此自动售货机可投入1元、5元或10元硬币,投完币后,确认,投币显示灯灭。 ② 当投入的硬币总值等于或超过12元时,食品指示灯亮;当投入的硬币总值超过15元时,食品、饮料指示灯都亮。 ③ 当食品指示灯亮时,按食品按钮选择要购买的食品,按购买键确认后,食品指示灯灭,出货口指示灯亮,显示正出物品,一会熄灭。 ④ 当饮料指示灯亮时,按饮料按钮选择要购买的饮料,按购买键确认后,饮料指示灯灭,出货口指示灯亮,显示正出物品,一会熄灭。 ⑤ 若投入硬币总值超过购物所需钱数时,则退币处的指示灯亮,显示正在进行退币工作,退完币后,退币指示灯熄灭,等待下一次售货。
X0 [S1] [S2] [D] (D0)+(D2) (D4) ADD D0 D2 D4 X1 [S1] [S2] [D] (D11D10)–(D13D12) (1D5D14) DSUB D10 D12 D14 二、相关知识 1.算术运算指令 • 二进制加减运算指令 • 加法 FNC20 ADD (Addition) • 减法 FNC21 SUB (Subtraction) • 操作数 • [S1]、[S2]:K、H、KnX、KnY、KnM、KnS、T、C、D、V,Z • [D]:KnY、KnM、KnS、T、C、D、V,Z • 梯形图
说明 • 指令是代数加减运算,数据的最高位为符号位。 • 进行16位加减运算时,数据范围为-32768~+32767;32位运算时,数据范围为-2147483648~+2147483647。 • 运算结果为0时,零标志置位(M8020=1);运算结果大于+32767(或+2147483647)时,进位标志置位(M8022=1);运算结果小于-32768(或-2147483648)时,借位标志置位(M8021=1)。 • 该指令可以进行连续/脉冲执行方式。
被乘数 乘数 积 (D0)×(D2) (D5D4) X0 [S1] [S2] [D] 被除数 除数 商 余数 MUL D0 D2 D4 (D11D10)÷(D13D12) (1D5D14)···(D17D16) X1 [S1] [S2] [D] DDIV D10 D12 D14 2.二进制乘除运算指令 乘法 FNC22 MUL (Multiplication) 除法 FNC23 DIV (Division) • 操作数 [S1]、[S2]:K、H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z • 梯形图
说明 • 指令进行二进制运算,数据最高位为符号位。 • 可以进行16/32位乘除运算,16位运算时,积为32位数据,商和余数为16位数据;32位运算时,积为64位数据,商和余数为32位数据。 • 0作除数时程序出错。被除数和除数中有一个为负数时,商为负数;被除数为负数时,余数也为负数。 • 位元件作为32位乘法运算的目标元件时,只能得到积的低32位数据。 • 可以进行连续/脉冲执行方式。
CMP K100 C10 M0 X0 [S1] [S2] [D] M0 K100<C10的当前值时,M0 = ON M1 K100=C10的当前值时,M1 = ON M2 K100>C10的当前值时,M2 = ON 3.比较指令 FNC10 CMP (Compare) • 操作数 [S1]、[S1] : K,H、KnX、KnY、KnM、KnS、T、C、D、V、Z [D]:Y、M、S • 梯形图
说明 • 该指令是将源操作数[S1]和[S2]的中数据进行比较,结果送目标操作数[D]中去。 • [D]由3个元件组成,指令中[D]给出首地址,其它两个为后面的相邻元件。 • 当X0由ON→OFF时,不执行CMP指令,M0~M2保持断开前的状态,用复位指令RST才能清除比较结果。 • CMP是进行二进制代数比较。 • 可以32位二进制数比较和脉冲执行方式。 • 如果指令中指定的操作数不全、元件超出范围、软元件地址不对时,程序出错。
I/O资源分配 三、任务实施
6.4 工作模块15 五台电机的启停 控制要求: 用按钮实现5台电机的启停控制。按钮按数次,最后一次保持1s以上后,则号码与次数相同的电机运行,再按按钮,该电机停止。 一、任务导入
二、相关知识 解码与编码指令 • 解码(译码)指令FNC40DECO (Decode) • 编码指令FNC41ENCO(Encode) DECO操作数 [S]:K、H、X、Y、M、S、T、C、D、V、Z [D]:Y、M、S、T、C、D ENCO操作数 [S]:X、Y、M、S、T、C、D、V、 [D]:T、C、D、V、Z
编码与解码指令使用说明 • 图a中:X002~X000组成的3位(n=3)二进制数为011, • 相当于十进制数3,由目标操作数M7~M0组成的8位二进制 • 数的第3位(M0为第0位)M3被置1,其余各位为0。如源数 • 据全零,则M0置1。 • 图b中:n=3,编码指令将源元件M7~M0中为“1”的M3的位 • 数3编码为二进制数011,并送到目标元件D10的低3位。
三、任务实施 解:根据控制要求,梯形图如图6-54所示。输入电机编号的按钮接于X0,电机号数使用加1指令记录在K1M10中。DECO指令则将K1M10中的数据解读并令M0右侧和K1M10中数据相同的位元件置1。M9及T0用于输入数字确认和停车复位控制。Y0-Y4接五台电机。
SQ4 SQ3 右行YV3 左行YV4 SQ2 下降YV1 上升YV2 夹紧 SQ1 YV5 松开 工件 A B 图23-7 机械手动作示意图 6.5 工作模块16 机械手的PLC控制 一、任务导入 图 机械手动作示意图
控制要求: 如上图所示是一气动机械手,其功能是将工件从A处送到B处。气动机械手的升降和左右移行分别使用了双线圈的电磁阀,在某方向的驱动线圈失电时能保持在原位,必须驱动反方向的线圈才能反向运动。上升、下降对应的电磁阀线圈分别是YV2、YVl,右行、左行对应的电磁阀线圈分别是YV3、YV4。机械手的夹钳使用单线圈电磁阀YV5,线圈通电时夹紧工件,断电时松开工件。通过设置限位开关SQl、SQ2、SQ3、SQ4分别对机械手的下降、上升、右行、左行进行限位,而夹钳不带限位开关,它是通过延时1.7s来表示夹紧和松开动作的完成。
状态初始化及数据搜索指令使用说明 二、相关知识 状态初始化指令 • 状态初始化指令FNC60IST(Initial State)与步进梯形STL指令一起使用, • 用于自动 设置多种工作方式的控制系统的初始状态,以及设置有关的特殊辅助 • 继电器的状态。指令中S指定运行模式的初始输入。 操作数 [S]: X、Y、M [D1] [D2]:S20~S899 D1<D2
IST指令的源操作数可取X、Y和M,用来指定与工作方式有关的首地址,它实际指定了从首址开始的8个连续号的同类元件具有以下意义:IST指令的源操作数可取X、Y和M,用来指定与工作方式有关的首地址,它实际指定了从首址开始的8个连续号的同类元件具有以下意义: X20:手动 X24:连续运行(全自动) X21:回原点 X25:回原点启动 X22:单步运行 X26:自动运行启动 X23:单周运行(半自动) X27:停止 • IST指令的目标操作数[D1·]和[D2·]用来指定在自动 • 操作中用到的状态元件的最低和最高元件号,可取S20~S899。 • IST指令执行条件满足时,S0、S1、S2和下列特殊辅助继电器 被自动设定为以下功能;若以后执行条件变为OFF,这些元件 的功能仍然保持不变
单步 回原位 回原位 单周期 SB9 连续 手动 启动 夹紧 右行 下降 SB5 SB3 SB1 SB7 上升 放松 左行 停止 SB4 SB8 SB6 SB2 图23-8机械手操作面板示意图 三、任务实施 如上图所示为机械手的操作面板,机械手能实现手动、回原位、单步、单周期和 连续等五种工作方式。手动工作方式时,用各按钮的点动实现相应的动作;回原 位工作方式时,按下“回原位”按钮,则机械手自动返回原位;单步工作方式时, 每按一次启动按钮,机械手向前执行一步;选择单周期工作方式时,每按一次启 动按钮,机械手只运行一个周期就停下;连续工作方式时,机械手在原位,只要 按下启动按钮,机械手就会连续循环动作,直到按下停止按钮,机械手才会最后 运行到原位并停下;而在传送工件的过程中,机械手必须升到最高位置才能左右 移动,以防止机械手在较低位置运行时碰到其他工件。
X0 夹紧 FU L 回原位 X1 SA 单步 X2 ~220V N X3 单周期 连续 X4 SB9 回原位 X5 SB1 启动 X6 ~220V COM SB2 停止 X7 SB3 FU 下降 X10 PLC SB4 YV1 上升 X11 Y0 下降 SB5 右行 X12 YV2 SB6 Y1 上升 左行 X13 SB7 YV3 夹紧 X14 Y2 右行 SB8 松开 X15 YV4 Y3 左行 SQ1 下限位 X16 YV5 夹紧 Y4 SQ2 上限位 X17 SQ3 右限位 X20 SQ4 左限位 X21 COM 机械手控制系统PLC的I/O接线图 (2)PLC接线图
X21 X17 Y4 左限 右限 松开 S0 手动方式初始状态 M8044 M8000 X15 S20 IST S27 X0 RST Y4 松开 X14 (a)初始化程序 SET 夹紧 Y4 X11 X17 Y0 自动方式初始状态 S2 上升 Y1 X10 X16 Y1 M8041 状态转移开始 Y0 下降 M8044 原位位置条件 X13 X17 Y2 X21 S20 Y0 下降 Y3 左行 X12 X17 X20 Y3 X16 下限位 Y2 右行 S21 夹紧 SET Y4 K17 T0 T0 (b) 手动方式程序 上升 Y1 S22 上限位 X17 回原位初始状态 S1 S23 右行 Y2 X5 X18 右限位 S10 松开 RST S24 Y0 Y4 下降 X16 下限位 RST Y0 S25 松开 RST Y4 上升 Y1 X17 T1 K17 T1 S11 RST Y1 上升 Y1 S26 Y3 左行 X21 上限位 X17 S12 回原位结束 S27 Y3 SET 左行 M8043 X21 RST Y4 (d)自动方式顺序功能图 (c)回原位方式程序 机械手的控制程序
n [S] [D] D5 X000 D10 [ BMOV D5 D10 K3 ] D6 D11 D7 D12 6.6 其他一些功能指令 (一)块传送指令 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
块传送指令 FNC15 BMOV • 说明 • [S]为存放被传送的数据块的首地址;[D]为存放传送来的数据块的首地址;n为数据块的长度。 • 位元件进行传送时,源和目标操作数要有相同的位数。 • 当传送地址号重叠时,为防止在传送过程中数据丢失(被覆盖),要先把重叠地址号中的内容送出,然后再送入数据。如图所示,采用①~③的顺序自动传送。 • 该指令可以连续/脉冲执行方式。
M0 Y0 M1 Y1 M2 Y2 M3 Y3 D10 D10 X000 X001 X002 D11 D9 n = K2 [ BMOV K1M0 K1Y0 K2 ] [ BMOV D10 D9 K3 ] [ BMOV D10 D11 K3 ] D11 D11 D12 D10 M4 Y4 D12 D12 D11 D13 M5 Y5 M6 Y6 M7 Y7 块传送指令 FNC15 BMOV
(D0) (K1Y0) [S] [D] D0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 取反传送 X000 符号位 0 1 0 1 [ CML D0 K1Y0 ] Y3 Y0 保持不变 (二)取反传送指令 FNC14 CML 若源操作数中的数为十进制常数时,将自动转换成二进制
取反传送指令 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位数据处理和连续/脉冲执行方式
n [S] [D] X000 [ FMOV K10 D0 K10 ] 多点传送指令 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传送到D9~D0中去