欧姆龙plc比较指令中difu和▏↑ ▏指令的区别

欧姆龙PLC教程
PLC的产生与发展 PLC的主要特点PLC的基本组成PLC的编程语言PLC的工作方式PLC的性能指标1 2 PLC是一种数字运算操作 的电子系统,专为工业环境下 应用而设计的工业控制装Z。3 PLC 的 产生与发展第一代:从第一台PLC诞生到上个世纪70年代初。● ● ● ● CPU使用中小规模集成电路,采用磁芯存储器。 功能简单(只有计数/定时功能)。 可靠性较差,略强于继电器控制。 机种单一,没形成系列。第二代: 70年代初至70年代末。● CPU使用微处理器,采用半导体存储器EPROM。 ● 功能增强(增加逻辑/数据运算、数据处理、自诊断等功能)。 ● 有了计算机接口和模拟量控制功能。 ● 可靠性提高。● 整机功能向系列化、标准化发展,并由专用向通用方向过渡。4 第三代:70年代末到80年代中期。 ● CPU使用8或16位微处理器甚至多微处理器,采用 半导体存储器EPROM、CMOSRAM等。● 增加浮点数运算,平方、三角函数等运算。● 增加查表、列表功能。● 自诊断及容错技术提高。● 梯形图语言及语句表成熟。● 小型PLC体积减小、可靠性提高、成本下降。● 大型PLC向模块化、多功能方向发展。5 第四代:80年代中期到90年代中期。● 增加高速计数、中断、A/D、D/A、PID等功能。 ● 处理速度进一步提高(1?s/步)。 ● 连网功能增强。 ● 编程语言进一步完善,开发了编程软件。第五代: 90年代中期之后。● CPU使用16位或32位微处理器。 ● PLC的I/O点增加,最多可达32K个I/O点。 ● 处理速度进一步提高(1ns/步)。 ● PLC都可以与计算机通信。 ● 具有强大的数值运算、函数运算、大批量数据处理的功能。 ● 开发了大量的特殊功能模块。 ● 编程软件功能更强大。 ● 不断开发出功能强大可编程终端。6 PLC及其控制系统的发展趋势PLC的性能对小型PLC向着体积更小、速度更高、功能增强、价格低廉的方 向发展。使之更利于取代继电器控制。 对大中型PLC向着更大容量、更高速度、更多的功能、更高的可靠 性、易于连络通信的方向发展。使之更利于对大规模、 复杂系统的控制。7 PLC控制系统的性能★ I/O模块将直接安装在现场,CPU与现场I/O通过数 据通信实现控制,使系统控制更有效、可靠性更高; ★ 随着硬件冗余技术的应用,各种单元、甚至整个系 统都可应用冗余技术,使系统具有更高的可靠性; ★ 进一步应用计算机的信息处理技术、网络通信技术 和图形显示技术,使系统的产生控制功能与信息管理 功能一体化。8 9 1. 通用性和灵活性强;2. 抗干扰能力强,可靠性高;3. 编程语言简单易学;4. 与外部设备的连线简单、使用方便; 5. 功能强、功能的扩展能力强; 6. 控制系统设计、调试周期短; 7. 体积小、重量轻、易于机电一体化; 8. PLC控制系统的故障少、维修方便。10 11 PLC的基本分类整体式 组合式小型机常采用整体式 中、大型机常采用组合式12 OMRON 公司的整体式 PLCC28P13 CPM2A14 CPM1A15 CQM1OMRON 公司的组合式 PLC16 C200HEOMRON 公司的组合式 PLC17 底版CVM1OMRON 公司的组合式 PLC18 整体式 PLC的基本组成框图主机输 入 设 备 输 入 单 元电 源输 出 单 元 输 出 设 备CPU编程器 盒式磁带机 打印机 EPROM写入器 上位计算机 PLC 可编程终端PT …外 设 接 口存 储 器系统程序 用户程序 存储器 存储器I/O 扩 展 口I/O扩展 单元特殊功 能单元19 组合式 PLC的基本组成框图系统总线通信单元智能I/O单元输出单元 …输入单元 …CPU 单元编程器PLC或 上位计算机控制系统现场过程20 1. CPU单元CPU指挥PLC完成各种预定的功能★ 输入并存储用户程序、显示输入内容和地址; ★ 检查、校验用户程序,发现错误即报警; ★ 执行用户程序、驱动外部输出设备动作;★ 诊断故障、记忆故障信息并报警。21 2. 存储器系统程序存储器―― 存储系统系统程序 用户程序存储器―― 存储系统用户程序工作数据存储器―― 存储工作数据22 3. 输入/输出单元PLC与外部设备联系的桥梁 开关量输入单元直流输入单元 交流输入单元 晶体管输出单元开关量输出单元晶闸管输出单元继电器输出单元23 直流输入电路外部开关S R1 T C COM R2 → → A R3输入点+5V滤波内 部 电 路公共端 输入点的 状态显示LED光电耦合24 交流输入电路输入点外部开关S R1 T → → LED +5V~C COMR2A R3滤波内 部 电 路输入点的 状态显示光电耦合25 晶体管输出电路输出点的 状态显示 内 部 电 路T1 → → LED +5V光电耦合输出点负载R2 T2 DR1R3FU COM公共端26 晶闸管输出电路输出点的 状态显示T → →光电耦合输出点 负载内 部 电 路R2 C~ COMR1LED FU公共端27 继电器输出电路输出点的 状态显示继电器 机械 触点 输出点 内 部 电 路J R COMLED负载~公共端28 4. 电源单元PLC由开关式稳压电源为内部电路供电 开关电源 输入电压范围宽 体积小 重量轻 抗干扰性能好 有的PLC能向外部提供24V的直流电源 可作为输入单元连接的外部设备的电源29效率高 5. I/O扩展端口C28PI/O扩展端口30 I/O扩展端口CPM1A的外设端口和I/O扩展端口31 I/O扩展端口可以连接的设备举例I/O扩展单元A/D转换单元32 连接电缆I/O扩展器 主机CPM1A主机与I/O扩展器的连接33 I/O扩展端口连接扩展器的示意图34 6. 外设端口外设端口编程器 盒式磁带机 打印机 EPROM写入器 上位计算机 PLC 可编程终端PT …35 7. 编程工具 编程器是对PLC进行操作的工具专用编程器简易编程器 图形编程器 计算机辅助编程 在装有专用编程软件的计算机上编程 直插式、便携式36 显示屏编程器 主机运行位工作方式 选择开关 监控位 编程位37 指令键编辑键数字键清除键38 工作方式 选择开关显示屏39 CPM1A主机与编程器的连接40 CPM1A主机与编程器的连接41 专用电缆 PLC计算机编程 软件PLC计算机编程 软件通 信 RS-232电缆 适配器42 8. 智能单元 智能单元本身是一个独立的系统它们有自己的: CPU、系统程序、存储器、与外界相连的接口 对组合式PLC: 智能单元是PLC系统的一个模块 与CPU单元通过系统总线相连接在CPU单元的协调管理下独立地进行工作对整体式PLC: 主机通过I/O扩展接口与智能单元连接43 44 PLC的编程语言梯形图 逻辑功能图语句表 逻辑方程式45 1. 梯形图编程语言梯形图编程语言是一种图形语言两种梯形图的继电器符号图对照物理继电器 线 圈 触 常开 点 常闭46PLC继电器 2. 两种控制的梯形图比较SB1继电器 控 制 SB2 KM 线圈KM常开触点常闭触点 0100000000PLC控制 0100000001线圈47 3. 两种控制中继电器的区别物理继电器继电器需硬接线连接触点个数有限继电器的接线改变――控制功能改变PLC继电器继电器用程序软连接 触点个数无限PLC的用户程序改变―― 控制功能改变48 Q FU KM KHM3~例 如继电器控制接线SB1 SB2 KM KH主电路 相同KMPLC控制外部接线SB2KM输入 设备SB1 KHPLC输出 设备欲改变控制功能:~用继电器控制――要改变控制电路的实际接线。用PLC控制――外部接线不变,改变用户程序。 49 二、 语句表编程语言用助记符表示指令的功能指令语句是PLC用户程序的基础元素多条指令语句的组合构成了语句表 程序 01000 LD OR AND NOT OUT
01000梯形图程序语句表程序50 51 一、 PLC 采用循环扫描工作方式扫描工作分为 5 个阶段公 共 处 理 阶 段程序执行阶段扫描周期计算阶段 I/O 刷 新 阶 段 外设端口处理 阶段52 I/O、内部辅助、特殊辅助、 辅助记忆继电器区域清零 定时器预置 识别扩展单元接通电源 接通电源初始化 初始化 硬件、用户程序内存 检 查 检查结果正常? 初始化硬件检查 正常?异常异常异常报警异常或警告? 异常处理设置各异常继电器 异常: (ERR/ALM)LED 灯亮 警告: (ERR/ALM)LED 闪烁扫描周期监视执行用户程序 执行用户程序 程序结束?(END命令?) No Yes 扫描周期固定值 设定检查 无正常 扫描周期监视 时间预置公 公 共 共 处 处 理 理 户 程执 执 序 程行 行 序用 用户警告异常程序结束?扫描周期检查有固定值设置? 有固定设Z? 有 等待设定扫描周期到 计算扫描周期 扫描周期计算等待扫 扫 描 描 周 周 期 期 计 计 算 处 算理 新刷 新 刷 外设端口 务服 口 端 服务 53I/O刷新 外设端口服务外设端口服务I/O 刷 新I/O 1. PLC扫描工作各环节的功能① PLC上电后,首先检查硬件是否正常。若正常,则进行下一步;若不正常,则报警并作处理。② 按自上而下的顺序,逐条读用户程序并执行。对输入的数据进行处理, 将结果存入元件映象寄存器。③ 计算扫描周期。④ I/O刷新阶段。
01000读输入点的状态并写入输入映像寄存器。母线将元件映像寄存器的状态经输出锁存器、输出电路送到输出点。⑤ 外设端口服务。访问外设端口连接的外部设备。54 2. PLC执行用户程序的过程 01000用 户 输 入 设 备输 入 端 子输 入 电 路输读 入读 映 像 01000 寄 存 器写元 件 读映 像 01001 寄 存 写器输 出 锁 存 器输 出 电 路输 出 端 子用 户 输 出 设 备I/O刷新执行用户程序I/O刷新55 3. PLC控制的原理QSB1 SB2 STKMFU KM KH COMPLCCOM~输出端子等效电路图输入端子 SB1M 3~主电路 000020000000001 0000201000KMSB2 ST00002公共端≈COMCOM~公共端PLC用户程序输入部分输出部分56 触点闭合QSB1 SB2 STKM COMFU电动机转M 3~KM KHPLCCOM~ KM通电SB1闭合00000 闭合 线圈通电接点闭合KM SB2 ST触点闭合 ≈COM~COMPLC57 触点断开QSB1 SB2 STKM COMFU电动停转M 3~KM KHPLCCOM~ KM断电 通电SB2闭合00001 断开 线圈断电接点断开KM SB2 ST触点断开 ≈COM~COMPLC58 4. PLC执行用户程序的特点① 按梯形图自左向右、自上而下逐次执行程序 ② 执行程序时所需数据取自于: 输入映像寄存器 元件映像寄存器③ 输入映像寄存器和元件映像寄存器中的数据输入映像寄存器:在一个扫描周期中保持不变元件映像寄存器:在一个扫描周期中可读可写④ 每个扫描周期I/O刷新阶段集中读入/读出数据59 二、 PLC的I/O滞后现象1. 产生I/O滞后现象的原因(1) 由于PLC采用循环扫描的工作方式。 PLC只在每个扫描周期的I/O刷新阶段集中输入/输 出,导致输出信号相对输入信号滞后。 (2) 输入滤波器对信号的延迟作用。 滤波器时间常数越大,对输入信号的延迟作用越强。 有的PLC其输入电路滤波器的时间常数可以调整。60 (3) 输出继电器的动作延迟(继电器输出型PLC)。从输出锁存器ON、到输出触点ON经历一定时间 ――输出ON延时。 要求有较快响应的场合 最好不要使用继电器输出型PLC。 (4) 用户程序的长短及语句编排。 I/O滞后现象,对慢速控制系统影响不大。 要求快速响应的场合,需要解决I/O速度问题。61 2. I/O响应时间的估算以20点的继电器输出型CPM1A为例。设输入ON延时为8毫秒 公共处理和I/O刷新时间为2毫秒 执行用户程序时间为14毫秒 输出ON延时为15毫秒输入状态经过一个扫描周期后在输出得到响应 ――最小I/O响应时间 输入状态经过两个扫描周期后在输出得到响应 ――最大I/O响应时间62 最小I/O响应时间的计算输入ON延时 输入 触点 输入 滤波 输出 锁存 输出 触点 输出ON延时 扫描周期(Ts) 扫描周期(Ts) 刷新执行程序 其他 刷新 执行程序 其他I/O响应时间最小I/O响应时间 = 输入ON延时 + (公共处理 + I/O刷新时间) + 执行程序时间 + 输出ON延时 = 8 + 2 + 14 + 15 = 39 ms63 最大I/O响应时间的计算输入ON延时 输入 触点 输入 滤波 输出 锁存 输出 触点 输出ON延时 扫描周期(Ts) 扫描周期(Ts) 扫描周期(Ts) 刷新执行程序 其他 刷新执行程序 其他 刷新执行程序 其他I/O响应时间最大I/O响应时间 = 输入ON延时+ (公共处理+ I/O刷新+执行程序)×2 + 输出ON延时 = 8 +(2 +14)× 2 + 15 = 55 ms。64 程序语句安排对I/O响应时间的影响举例2000001000SBKM1 KM20000020000PLCCOM01001COM~当SB闭合,经过输入滤波,设第一个扫描周期I/O刷 新时 00000的映像寄存器 ON。 第一个扫描周期 结束时,01000为OFF。 01000只能在第二个扫描周期结束后才能ON。65 续如果将梯形图的第一与第二梯级交换,如下图:
KM1 KM2PLCCOM01001 COM01001~当SB闭合,经过输入滤波,设第一个扫描周期 00000 的映像寄存器 ON。 01000 在第一个扫描周期结束后就能ON 。 显然,程序语句的安排对I/O响应的影响很大 。66 67 1. 用户程序存储的容量大小; 2. 输入/输出点数的多少; 3. 循环扫描速度的快慢; 4. 编程指令的种类和条数的多少; 5. 内部器件的种类和数量的多少; 6. 功能及功能扩展的能力; 7. 智能单元数量的多少; 8. 连网通信能力等。68 69 CPM1A系列PLC的基本组成 CPM1A系列的继电器及数据区CPM1A系列PLC的功能简介 CPM1A系列PLC通信功能简介70 71 CPM1A系列PLC的主机 CPM1A系列I/O扩展单元 CPM1A系列编程工具CPM1A系列特殊功能单元72 一、 CPM1A系列PLC的主机1.主机的规格 按I/O点数分 按电源类型分 按输出方式分 10、20、30、40点 分直流和交流型 继电器输出型 晶体管输出型73 CPM1A 40点的主机的外观74 输入点LEDI/O扩展器 运行状态LED外设端口输出点LED2. CPM1A 40点的主机的面板结构75 输入端子输出 端子CPM1A 主机的输入/输出接线端子76 二、 CPM1A系列PLC的I/O扩展单元1. I/O扩展单元的规格和类型类 型8点型(输入8点) 8点型(输出8点) 20点型 (输入12点) (输出8 点)型 号 CPM1A-8ED CPM1A-8ER CPM1A-8ET CPM1A-8ET1 CPM1A-20EDRCPM1A-20EDT CPM1A-20EDT1输出形式-继电器 晶体管(NPN) 晶体管(PNP) 继电器 晶体管(NPN) 晶体管(PNP)77 输入点LEDI/O扩展器输出点LED连接电缆CPM1A-20EDR I/O扩展单元的外观78 连接电缆I/O扩展器CPM1A-20EDR I/O扩展单元的面板79 输出端子输入端子CPM1A-20EDR I/O扩展单元输入/输出接线端子 80 2. PLC的I/O扩展方法输入18点 30点主机 输出12点输入12点输入12点 扩展器 输出8点输入12点 扩展器 输出8点扩展器 输出8点30点的主机 连接三个20点的扩展器 扩展到90个I/O点81 三、 CPM1A系列PLC的编程工具CPM1A 编程软件适配器专用编 程器82 四、 CPM1A系列的特殊功能单元I/O 单元 通信 单元 模 拟 量 I/O 单 元 温度传感器单元 RS232C通信适配器 模拟量输出单元 温度传感器单元CompoBus/S I/ORS422 通信适配器链接单元与主机连接的特殊功能单元――总数不能超过3台 温度传感器单元TS002和TS102只能连接其中的一个, 而且同时使用的扩展单元总数不能超过2台83 84 内部继电器区(IR) 特殊辅助继电器区(SR) 暂存继电器区(TR) 保持继电器区(HR) 辅助记忆继电器区(AR) 链接继电器区(LR) 定时器/计数器区(TC) 数据存储区(DM)85 ★ CPM1A内部器件的编号内部器件以通道形式的编号通道编号为2、3、4位数不等每个通道内有16个继电器(00~15) 例:某继电器的编号为01006。 则:该继电器的通道编号为010、 位编号为06。86 1. 内部继电器区(IR)IR 区 (000~231)分为 两 部 分输入/输出继电器区:000~019 (可以直接对外输出)000、001 :用于主机的输入通道的编号002~009 :I/O 扩展单元的输入通道编号010~011 :用于主机的输出通道的编号012~019 : I/O 扩展单元的输出通道编号内部辅助继电器区: 200~231(不能直接对外输出)没被使用的IR通道,可作为内部辅助继电器使用。87 例:30点的主机,连接三个20点的扩展器。 其I/O点编号分配:
输入18点30点主机 输出12点 输入12点 扩展器 输出8点输入12点 扩展器 输出8点输入12点 扩展器 输出8点88 2. 特殊辅助继电器区(SR)SR区(231~255)分为前、后两部分 前232~251 :常以通道为单位使用 232~249 没作表中指定功能时,可作内辅助继电器用 250、251 只能按表中的功能使用,不能另作他用。后252~255 用于存储工作状态、产生脉冲信号等。除25200外,252~255 的状态只可利用、不可改变。89 3. 暂存继电器区(TR)该区继电器(TR0~TR7)编号要冠以TR。用于存储梯形图中分之点之前的 ON/OFF 状态。 同一程序中,某一编号的TR继电器不可重复使用。4. 保持继电器区(HR) 该区继电器(HR00~HR19)编号要冠以HR。 保持继电器具有掉电保持功能。该区继电器可以通道或位为单位使用。90 5. 辅助记忆继电器区(AR)该区继电器(AR00~AR15)编号要冠以AR。AR区继电器具有掉电保持功能 AR区继电器用于保存PLC的各种工作状态。根据该区某些继电器的状态,可了解PLC的工 作状况。91 6. 链接继电器区(LR)该区通道(LR00~LR15)编号要冠以LRCPM1A与本系列或本公司其他PLC进行1:1 链接通信时,要用使用LR区进行数据链接。不作1:1链接通信时,LR区可作内部辅助继 电器用。92 7. 定时器/计数器区(TR)定时器分类 普通定时器 高速定时器 普通计数器 可逆计数器000~127计数器分类★计数器有掉电保持功能,定时器没有此功能。★同一程序中,计数器和定时器不能使用同一编号。93 8. 数据存储区(DM)DM0000~DM1023 DM6144~DM6655 ★ 该区继电器只能以通道为单位使用! ★ 该区继电器具有掉电保持功能。该区继电器分为三部分① 可读写区: DM0000~DM0999、 DM1022~DM1023故障履历存储区: DM1000~DM1021不作该用途时,可作普通数据存储器用。 ② 只读存储区: DM6144~DM659994 ③ 系统设定区:DM6600~DM6655系统设定区的设定内容可用编程工具写入。 系统设定区的设定内容见表2.5。 若系统设定区的设定出错,则辅助记忆继电器的 对应位为ON。 系统设定区的设定内容,可在指定时间读取。 系统设定区的设定错误,只能用初始化来处理。95 96 1. 丰富的指令系统逻辑控制指令、定时器/计数器、移位寄存器指令; 算术运算指令、逻辑运算指令; 数据传送指令、数据比较指令、数据转换指令; 高速计数器控制指令、脉冲输出控制指令; 子程序控制指令、中断控制指令; 步进控制指令、特殊功能指令、故障诊断指令等。97 2. 模拟设定电位器功能CPM1A主机面板上有2个模拟设定电位器。用模拟设定电位器可将BCD数0~200自动送到特殊辅 助继电器区域。● 模拟设定电位器0的数值送入250通道● 模拟设定电位器1的数值送入251通道定时器/计数器的设定值若采用250或251通道设Z时, 通过模拟设定电位器,其设定值可以随时进行修改。98 3. 输入时间常数设定CPM1A输入电路设Z了一个滤波器。滤波时间常数的大小可根据需要设Z。 滤波时间常数可在系统设Z区中设Z。干扰脉冲 输入时 间常数 输入信号 滤波后的信号 τ τ经过输入滤波后干扰脉冲将被滤掉99 4. 高数计数器功能CPM1A设Z了一个高速计数器。高速计数器可以对外部输入的高速脉冲进行计数。使用高速计数器时,必须在系统设Z区中进行设定。高速计数器具有中断功能。PLC利用高速计数器,可以实现中断控制。100 5. 外部输入中断功能外部输入中断功能是解决快速响应问题的措施之一。 不同的型号,外部输入中断的输入点是不同的。 响应中断时,停止执行主程序而转到中断处理子程序。 执行完中断处理子程序,再返回断点继续执行主程序。 使用输入中断功能时,必须在系统设定区中进行设定。101 6. 间隔定时器中断功能CPM1A设Z了一个间隔定时器。 间隔定时器具有高精度的定时功能和中断功能。7. 快速响应输入功能该功能可使输入/输出响应不受扫描周期的影响。 能随时接收脉冲宽度小于0.2ms 的瞬间脉冲信号。 使用快速响应功能时,要在系统设定区中设定。 快速响应输入点与外部输入中断点相同。102 8. 脉冲输出功能CPM1A晶体管输出型PLC有脉冲输出功能。能输出频率为20Hz~2kHz、占空比为1:1的单相脉冲 输出点为0 (两个点不能同时输出)输出脉冲的数目和频率可由指令控制。103 9. 通信功能 可与计算机进行上位链接通信; 与本公司的可编程终端链接通信; 与本系列的PLC之间进行通信; 通过I/O链接单元可加入CompoBus/S网等。 10. 具有快闪内存储器使用快闪内存储器,可以免去更换锂 电池的麻烦。104 105 1.HOST Link 通信 (1)1:1 HOST LinkCPM1A没有RS-232C口计算机CPM1A 主机可通过外设端口,用 适配器与上位机连接 实现通信。RS-232C 适配器106 (2) 1:N HOST Link上位机的功能: 工作状态跟踪监测、故障报警、 采集系统中的某些数据等。 上位计算机B500-AL004 LINK适配器上位机可以在线修改PLC的某些 设定值和当前值、改写PLC的用 户程序等。RS-422 适配器CPM1A 主 机RS-422 适配器CPM1A 主 机RS-422 适配器CPM1A 主机107 2.NT Link通信在装有软件的计算机上完成做画面、参数设定等操作.专用 软件 计算机 下载到PT中 PT PLC与PT通信 PLCPT PT 可 以 实 时 显 示 PLC 的各种数据及 工作状态信息,可 对 PLC 控制系统进 行监控。RS-232C 电 缆RS-232C 适配器 CPM1A 主 机用PT的触摸按键,可改变PLC某些设定值、当前值等。108 3. 1:1 PLC Link通信2台PLC 1:1 链接通信时的连接RS-232C 适配器 CPM1A 主 机 RS-232C 适配器RS232C电缆CPM1A 主 机 从动 单元主 动 单 元109 ★ PLC 1:1 链接通信时的数据交换PLC Link 在LR区建立数据链接,实现信息共享 。LR区自动分配给每个PLC一个 ‘写入区’,每个 PLC 把数据写入自己的‘写入区’。每个PLC 的‘写入区’是其他PLC的‘读出区’,每个PLC 利用共同的LR区实现数据交换。LR00链接区写入区读出区 写入区链接区 LR00LR07 LR08 LR15110LR07 LR08 读出区 LR15 4.CompoBus/S I/O 链接通信在连接Compo Bus/S I/O 链接单元后,CPM1A 可作为一 个从单元接入CompoBus/S 网。 CPM1A最多能连接 3个扩展单元,但其中只能有一个是 CompoBus/S 的I/O链接单元CompoBus/S 主单元 CPM1A主机OMRON SYSMAC CPM1ACompoBus/S I/O 链接单元当主单元是CQM1-SRM21时,最多可连8个从单元。111 112 第 六 章 内 容概 述 子程序控制指令基 本 指 令常用的应用指令高速计数器控制指令脉冲输出指令数据传送和数据比较数据移位和数据转换中断控制指令步进控制指令数 据 运 算特 殊 指 令113 指令的分类指令的格式执行指令对标志位的影响 指令的微分、非微分形式114 1. 指令的分类基本指令 应用指令2. 指令的格式助记符(指令码) 操作数1 操作数2助记符:表示指令的功能指令码:是指令的代码操作数3操作数:提供指令执行的对象或数据115 ★ 关于操作数的讨论操作数可以是通道号、继电器号或常数。操作数的个数,取决于各种指令的需要。操作数设为常数时,在数据前面要加#号。 操作数采用哪种进制,取决于指令的需要。 间接寻址的操作数用*DM××××来表示。 间接寻址的操作数,是以DM××××中的数 据为地址的另一个DM通道中的数据。DM××××中 的 内容 必须是BCD码,且不 得超出DM区的范围。116 例如,计数器指令的格式为 CNT000 SV000是计数器的编号 若 SV = 200 表明000号计数器的设定值是200通道中的内容。 若SV= # 0200 表明000号计数器的设定值是常数200。117SV是操作数 例如,计数器的指令格式为 CNT000*DM1000 设DM1000的内容为0010 设DM0010的内容为2500 则 000号计数器的设定值是2500 如果设DM1000的内容为9990如果设DM1000的内容08FA118 3. 执行指令对标志位的影响SR区的2是指令执行结果的标志位。某些指令的执行结果影响标志位2的状态。标志位25503 ~25507的状态表示的意义要牢记。 25503是出错标志位 25503 ON时,表示当前执行的程序出错且停止执行。119 4. 指令的微分、非微分形式微分型:要在指令的助记符前加标记@。两种指令的区别 非微分型指令:只要其执行条件为ON,每个扫描周期都执行该指令。微分型指令: 仅在指令的执行条件由OFF变为ON时才执行一次。120 基本指令是最常用的指令 要牢记: 指令的功能、格式、符号和代码; 指令操作数的范围; 执行各指令对标志位的影响。121 常用的基本指令 块与指令AND LD 和块或指令OR LD Z位、复位指令SET和RESET 锁存继电器指令KEEP 前/后沿微分指令DIFU 和DIFD 基本编程规则和编程方法122 一、常用的基本指令1.LD OR LD NOT OR NOT AND OUT AND NOT OUT NOT这是些基本逻辑操作指令,必须牢记其用法。LD ―― 常开触点与母线相连的指令AND ―― 常开触点相与(串联)的指令 OR ―― 常开触点相或(并联)的指令 OUT ―― 将执行结果输出到某位的指令123 使用指令举例梯形图程序或 与 语句表程序LD OR AND NOT OUT LD NOT OR NOT AND OUT NOT
或 与0100001001输出 与124 使用指令举例指出图示程序对KM1和KM2的控制作用01000 断电SB1 KM1断电断开 01001SB2PLCKOMKM2~闭合没按下按钮SB1 → 线圈00000断电→ 触点00000断开→触点00001闭合→ 线圈01000断电→ KM1断电触点01000闭合→ 线圈01001断电→ KM2断电125
01001闭合 01000 SB1 闭合 SB2 KM1通电PLCKOMKM2~断开通电按一下SB1 → 线圈00000通电→ 触点00000闭合→ 触点00001闭合→ 线圈01000通电→ KM1 通电 触点01000断开→ 线圈01001通电→ KM2通电126 01000SB1KM1断电01000断开 SB2PLCKOMKM2~断电闭合按一下SB2 →线圈00001通电→触点00001断开→线圈01000断电→ KM1 断电 触点01000闭合→ 线圈01001断电→ KM2断电127 2. END指令程序的结尾一定要安排END指令,否则程序不执行。使用指令举例 0000201002或 与 END(01)或 与LD AND NOT OR NOT AND OR OUT END (01)
128 3.NOP指令NOP是空操作指令用NOP代替AND N,可把AND语句中的触点N短接用NOP代替OR N,可把OR 语句中的触点N断掉 使用指令举例
LD AND AND NOT OUT
将梯形图中的触点00001删掉。20000 LD 00000 NOP(00) AND NOT 00002 OUT 20000129 使用指令举例将梯形图中的触点00000删掉。
20000NOP(00) LD 00001 AND NOT 00002 OUT 20000使用指令举例将梯形图中的触点00001删掉。
20000130LD 00000 NOP(00) AND NOT 00002 OUT 20000 二、块与指令AND LD 和块或指令OR LD1. AND LD 是将并联触点组相串联的指令使用指令举例LD AND OR NOT LD OR AND LD LD OR NOT AND LD OUT 方法1
00004 方法2 LD AND OR NOT LD OR LD OR NOT AND LD AND LD OUT
0000620000 20000在方法2中,AND LD之前的触点组个数应小于等于8131 2. OR LD是串联触点组相并联连接的指令使用指令举例LD AND NOT LD NOT AND OR LD LD AND OR LD OUT方法1
01100LD AND NOT LD NOT AND LD AND OR LD OR LD OUT方法2
01100在方法2中,OR LD之前的触点组个数应小于等于8132 三、 Z位指令 SET和复位指令RESETSET ―― 将某继电器Z为ON RESET――将某继电器Z为OFF SET 20000 RESET
LD SET LD RESET
0000320000SET、RESET指令的执行条件常为短信号(脉冲信号)SET和RESET指令可以单独使用(不一定成对使用)133 四、 锁存继电器KEEP指令符号S KEEP N R继电 器位格式:KEEP(11)N当S端ON时,N为ON且保持。 当R端ON时, N复位。当S与R端同时为ON时, N复位优先。★ 当 N为保持继电器HR时,有保持功能。134 KEEP 指令的工作时序Z位条件 KEEP
00003注意! LD 00002 LD 00003 KEEP (11) 2000020000复位条件 Z位条件Z位和复位条件都可以是短信号(脉冲信号)135 使用KEEP指令举例画出图示程序的工作时序,写出语句表。
HR LD 00002 LD 01000 KEEP(11)HR0000136KEEP 0100000002KEEP HR0000语 句 表LD 00000 LD 00001 KEEP(11) 01000 ★ 比较几个相同具有功能程序之区别 (a) KEEP
0000301000SET 0100001000 (b)RESET 01000( c)00002相同 都可以实现启、保、停的控制 KEEP编程需3条语句(最少) 不同0000301000KEEP编程用HR作输出时,具有保持功能。 SET和RESET编程HR作输出时,有保持功能。 SET和RESET编程时,指令间可插别的指令。137 五、微分指令DIFU 和DIFDDIFU和DIFD――上升沿微分和下降沿微分指令00005DIFU(13) 20000 DIFD(14) HR00000000520000 HR0000TSTSLD DIFU(13) DIFD(14) HR0000执行条件扫描周期DIFU和DIFD指令的操作位只ON一个扫描周期。 开机时就ON的执行条件,DIFU指令不执行。 开机时就OFF的执行条件,DIFD指令不执行。138 使用DIFU指令举例 画出图示程序的工作时序,写出语句表。00000DIFU(13) 20000Ts 20000 KEEP 01000000010100000001 LD DIFU(13) LD LD KEEP (11)
01000扫描周期139 六、基本编程规则和基本编程方法1.基本编程规则25313 指令(1)每梯级都起始于左母线,线圈或指令应画在最右边 (2)必须与左母线相连的线圈或指令,可通过25313连接 (3)用OUT指令输出时,要避免双线圈输出的现象。当00000 ON 00005 OFF 输出无效(a) 0100000000010000100001000当00000 ON 00001 OFF ON OFF00001(b)双线圈输出引起逻辑混乱140 (4) 梯形图必须遵循从左到右、从上到下的顺序,不允 许两行之间垂直连接触点。152N343 1 1 35524 ( b)N( a)(5) 程序结束一定要安排END指令,否则程序不被执行没END指令的程序,检查时显示信息?NO END INST”141 2.基本编程方法(1) 两个或两个以上的线圈或指令可以并联输出。00000SET 01002LD OUT OUT SET (2) 触点组与单个触点并联,单个触点应放在下面。
LD LD AND NOT OR LD OUT LD AND NOT OR OUT 不必用 OR LD142 (2) 触点组与单个触点并联,单个触点应放在下面。00000 20000 LD LD AND NOT OR LD OUT
LD AND NOT OR OUT 不必用 OR LD143 (3)并联触点组与几个触点串联时,并联触点组应放 在最左边。 01001
200000100120000LD 00002 AND 00000 LD 00006 AND 00001 OR 20000 AND LD OUT 01001LD AND OR AND AND OUT
不必用 AND LD144 (4)如果一条指令只需在PLC上电之初执行一次,可以 用25315作为其执行条件。 KEEP 01000PLC上电后的第一个扫描周期,01000被Z为ON。 此后,如果00001 ON使01000复位,则在PLC本次上电 期间,01000不会再被Z位(即KEEP不再执行)。145 (5) 结构复杂的梯形图程序,重新安排顺序后,可方 便编写语句表。1 2 4 3 5 6 7 8 N 1 1 1 2 4 4 3 N 5 5 7 6 8(6)当某梯级有两个分支时,若其中一条分支从分支 点到输出线圈之间无触点,该分支应放在上方。1 2 N1 N2 1N1 2N2(7)尽量使用那些操作数少、执行时间短的指令编程。146 基本指令小结1. 本节介绍的全部指令都要牢记其格式、梯形 图、操作数范围及功能。 2. 学会将梯形图程序转换为语句表的方法。 3. 学会用工作时序图描述程序执行过程的方法。4. 牢记基本编程规则和基本编程方法。147 148 分支和分支结束指令 暂存继电器跳转和跳转结束指令定时器/计数器指令149 一、 分支和分支结束指令IL/ILCIL (02) /ILC (03) ―― 用于控制程序流向的指令IL/ILC的用法1. 不论IL的输入条件是ON还是OFF, CPU都要对 IL/ILC之间的程序段进行扫描。 2. 只有当IL的执行条件为ON时,IL和ILC之间的程序 执行(否则不执行)。此时IL和ILC间各器件的状态为: 所有OUT指令的输出位为OFF;所有定时器都复位;KEEP指令的操作位、计数器、移位寄存器以及SET和 RESET指令的操作位保持执行条件为OFF以前的状态。150 3. IL和ILC指令可以成对使用,也可以多个IL指令 配一个ILC指令,但不准嵌套使用。 嵌套使用:IL-IL-ILC-ILC00000 IL(02)
A 01001IL(02)ILC(03) 00004 ILC(03)010020000401002LD IL (02) LD OUT LD AND NOT OUT ILC (03) LD OUT00000
01002当00000为ON时,IL(02)与ILC之(03)间的程序执行: 0 的状态,取决于A右侧各触点的状态。151 连续分支的例子 IL(02)
IL(02) 00003IL(02)01000IL(02)010010100200004 ILC(03) 0000501002ILC(03)010030000501003功能相同LD 00000 IL (02) LD 00001 OUT 01000 LD 00002 IL (02) LD 00003 OUT 01001 LD 00004 OUT 01002 ILC (03) LD 00005 OUT 01003152 二、 暂存继电器TR暂存继电器编号TR0~TR7暂存继电器用于暂时存储指令执行的结果。对暂存继电器作如下说明: 1. 在同一分支程序段中,TR号不能重复使用。 2. TR不是编程指令,要与其他指令配合使用。 用暂存继电器也可以处理梯形图的分支。153 使用暂存继电器举例00000 TR0 0100001001LD OUT AND OUT LD AND OUT00000 TR0
TR0 LD IL(02) LD OUT LD OUT ILC(03)00000 用TR处理分支用IL/ILC处理分支两种处理分支方法的区别用 TR 时:用AND指令连接下一个分支的触点 用IL/ILC时:用LD指令连接下一个分支的触点在分支多时,用TR处理分支程序要烦琐一些。154 三、 跳转和跳转结束指令JMP/JMEJMP (04) /JME (05) ――控制程序执行流向 JMP /JME的用法(1) 发生跳转时,JMP N和JME N之间的程序不执行, 且不占用扫描时间。 (2) 发生跳转时所有继电器、定时器、计数器均保持跳 转前的状态不变。(3) 同一个跳转号N只能在程序中使用一次。但当N取 00时,JMP 00/JME 00可以在程序中多次使用。155 4. 以00作为跳转号时,比其他跳转号的执行时间长。 5. 不同跳转号时可以嵌套使用。 例如: JMP 00-JMP 01-JME 01-JME 00使用跳转指令举例00000当00000为 ON时,IL 与ILC之 间的程序 执行。JMP(04) 000000101100JME (05) 00 0000301004LD 00000 JMP (04) 00 LD 00001 OUT 01000 AND 00002 OUT 01100 JME (05) 00 LD 00003 OUT 010040 的状态,取决于其输入条件的状态。156 6. 多个JMP 可以共用一个JME00000 OFF、00001 OFF时: 只执行程序C JMP(04) 00 程序 A JMP(04) 00 程序 B JME(05) 00 程序 C00000 ON、00001 OFF时:执行程序A→程序C 00000 ON、00001 ON时: 执行程序A→程序B →程序C157 JMP /JME 指令的用途举例00000 对应一操作开关00000 JMP(04) 00 手动程序 JME(05) 00当00000 为ON时执行手动操作程序 当00000 为OFF时 执行自动操作程序00000JMP(04) 01自动程序 JME(05) 01用一个开关,实现对系统自动和手动操作的控制。158 IL/ILC与JMP /JME 指令的共性它们都具有控制程序执行流向的作用。IL/ILC与JMP /JME 指令的区别1. 对IL/ILC与JMP /JME 指令之间的程序段: 不论IL的执行条件OFF还是ON, CPU都对IL 和ILC之间的程序段扫描。当发生跳转时,JMP N和JME N之间的程序不 执行,且CPU不对其扫描。159 2. 当IL和JMP 的执行条件不满足时:对IL/ILC之间的程序段: 所有OUT指令的输出位为OFF;所有定时器 都复位; KEEP指令的操作位、计数器、移位寄存器以 及SET和RESET指令的操作位,都保持IL为 OFF以前的状态。 对JMP/JME之间的程序段: 发生跳转时所有继电器、定时器、计数器 均保持跳转前的状态不变。160 四 、定时器/计数器指令TIM/CNT使用TIM/CNT注意事项① TIM/CNT 共同使用编号 000 ~ 127 ,在程序中 TIM 和CNT的编号不能重复。 ② TIM/CNT的操作数可以是常数,也可以是通道, 但常数或通道内容必须是BCD数。 ③ TIM/CNT的设定值是通道时,通道内容改变、设 定值即改变。但必须在TIM的输入条件断开、 CNT 复位后,下一次定时/计数才执行新设定值。 ④ 计数器有保持功能,而定时器没有此功能。161 1. 定时器TIM/ TIMHTIM――普通定时器TIMH ――高速定时器定时时间为0~999.9 s定时时间 为0~99. 99 s格式: TIMNSV符号TIM N SVN:000~127( TIM与TIMH共用这些编号 )SV :0~9999 单位:TIM 为0.1 s;TIMH 为0.01 s162 ★ 定时器的功能① 当执行条件ON时开始定时,定时过程中执行条件 要保持ON。 ② 定时时间到,定时器ON、其所属触点动作。此后 只 要执行条件保持ON , 其ON状态保持。③ 当扫描时间Ts &0.1秒时,TIM会不准确; 当Ts & 0.01秒时,TIMH会不准确。④ 定时器ON后,若执行条件OFF,定时器复位。 ⑤ 定时器ON后,若PLC断电,定时器复位。 当定时器复位时,其当前值为设定值。163 ★定时器TIM 、TIMH的用法开始 定时00000 TIM 000 # 00000 TIM 000 01000 5S定时 到定时器 复位LD TIM
# 0050 LD TIM 000 OUT 01000TIM 000TIM定时时间:50×0.1 = 5s对TIMH计算: 50×0.01 = 0.5s164 定时器定时功能例(1)分析程序对线圈01000的控制闭合 2000000000对应启动按钮、00001对应停车按钮 。 按下启动按钮 → 线圈00000ON→触点00000闭合→触点20000闭合→线圈20000ON→闭合 TIM001 #005001000TIM001开始定时→ 经过 5s→TIM001 ON → 触点TIM001闭合→ 线圈01000 ONTIM001闭合165自按下启动按钮5s后线圈01000 ON 只要TIM001 ON线圈01000 一直ON断开 20000线圈01000 ON期间按下停车按钮 → 线圈00001通电→ 触点00001断开→ 线圈20000断电→ 触点20000断开→ TIM001 复位 → 触点TIM001断开→ 线圈01000 OFF 自按下启动按钮 5s后线圈01000 ON 按下停车按钮,线圈01000 OFF20000断开 TIM001 #00500100020000TIM001断开166 定时器定时功能例(2)分析程序对01000的控制作用。设HR00中数据为0100,TIM001的定时值为10 秒。 00000闭合→20000接通→ TIM001开始定时→ 10秒到→TIM001 ON→ 常开触点TIM001 ON→ 线圈01000 ON 常闭触点TIM001 OFF 0000120000闭合断开TIM 00120000 TIM001TIM00101000HR00TIM001 自复位 !01000 自锁闭合 断开欲保持01000 ON――需加自锁167 TIM001自复位后,即开始下一轮定时。 在01000 ON期间, 若线圈00001 ON→ 触点00001断开→ 线圈20000断电→断开
20000断开 TIM001TIM 001 HR00 01000TIM001 复位→线圈01000 OFFTIM00101000当改变通道HR00中的内容时, TIM的设定值即改变!断开但需TIM复位后、下一次定时才执行新设定值168 ★ 定时器定时时间的扩展分析程序对01000的控制作用。 自00000 ON→线圈20000 ON→ TIM01开始定时→ 900秒到→ TIM001 ON → TIM02开始定时→ 900秒到→ TIM002 ON →TIM001 闭合
闭合 20000 闭合TIM 0010000120000#9000TIM 002 #线圈01000 ONTIM002定时器级联使用――SV= SV1+SV2169 练习:写出梯形图的语句表。LD 00000 OR 20000 AND NOT 00001 OUT LD
20000TIM 0010000120000TIMLD001#9000 TIM001TIM001 TIM002#9000 TIM 002 #TIMLD002# 9000 TIM002OUT01000170 ★ 关于接通延时ON和接通延时OFF的控制00000 IL(02) TIM 000 #0600 TIM 000 01000 TIM 000 01001LD IL(02) TIM00000ILC (03)000 #0600 LD TIM000 OUT 01000 LD NOT TIM000 OUT 01001 ILC(03)自00000 为ON开始→ 01000经过60秒接通 接通延时ON 自00000 为ON开始→ 01001经过60秒断开 接通延时OFF171 使用KEEP、TIM指令举例 根据0的波形,画出程序的工作时序。0000000001 HR0000 TIM000 01000 KEEP HR000 00001TIM000 #0050HR 5S 5S172 2. 计数器指令CNT格式: CNT N SV符号 CP CNT NR SVN:000~127SV :BCD 0 ~ 9999CP:计数输入端(每输入一个脉冲,CNT计一个数)R:复位端 ( R端ON 时计数器复位,即CNT清零)173 ★ 计数器的用法① 计数器的SV值可以是常数,也可以是通道号。 ② 计数达到设定值时CNT ON、其所属接点动作。 ③ CNT ON 后,此后输入的计数脉冲无效。 ④ 计数器ON后,只要不清零 ,CNT将保持ON。⑤ CNT ON后,若输入条件OFF,或PLC断电, 计数器当前值能保持。当计数器复位时,其当前值为设定值。174 ★ 计数器的工作时序CNT是减计数器,每输入一个计数脉冲,由SV值减1。SV=10 时 CNT的工作波形清零CP R脉冲无效9 8 2 1 0清零脉冲无效9 8 2 1 0CNTPV=10计数ON保持 PV=10 (停止计数)计数ON保持 (停止计数)175 ★ CNT的计数功能举例分析程序对01000的控制作用。 00000每通断一次,向CNT000输入一个计数脉冲。 00000通断3次→ CNT000 ON→ CNT000 复位→ 线圈01000 OFF 线圈01000 ON闭合 CP此后若触点00001 ON→RCNT 000 #0003闭合断开 CNT000 01000若将#0003换成200,则计数值是通道200中的数据。 CNT000 断电再复电时, 能保持断电前的当前值。176 写出梯形图程序的语句表00000 LD LD CNT
000 #0003 LD CNT000 OUT 01000CPSV为 常数00001 CNT000RCNT000 #000301000CNT000计数器的工作时序00000 2 1 0 ON保持177 ★ 计数器容量的扩展分析程序对01000的控制作用自清零 00000 CNT000 #0100CNT000采用自清零。 上电之初25315为两个计数器清零。 CNT000 每当 CNT000计数设定值到: a. 向CNT001输入一个计数脉冲。 b. 自清零、并开始下一轮计数。 当 CNT001计数到,01000 ON。 00000 通断了10000 次时01000 ONCNT000 25315初始清零25315CNT001CNT001 #178★计数器级联SV= SV1×SV2 ★计数器的定时器功能分析程序对01000的控制作用。25502能产生周期为1秒的脉冲 CNT000完成计数100所经历的 时间是100秒。 CNT001完成计数100所经历的 时间是10000秒。25502 CNT00025315 CNT000 25315 CNT001 01000 CNT001 #0100CNT000 #0100经历10000秒后 01000 ON计数器作为定时器使用用计数器作定时器时,该定时器具有保持功能。179 3. 可逆计数器指令CNTR加计数输入ACP 减计数输入 复位端格式:CNTR(12) N SVCNTR(12) SCP NRSVN:编号(与CNT共用000~127) SV:设定值(BCD 0 ~9999)180 ★ 可逆计数器的功能① 从ACP或SCP输入计数脉冲,可组成加或减计数器。 ② 从ACP和SCP端同时输入计数脉冲,计数器不计数。③ 计数器复位时,不论是加还是减计数,其PV均为0。④ 加/减计数有进/借位时,输出ON一个计数脉冲周期。⑤ 可逆计数器可作为循环计数器。 计数器达到设定值ON时,若再来 一个计数脉冲,CNTR OFF、且开 始下一个循环的计数。ACPCNTR(12) SCP NRSV181 ★ 可逆计数器的工作时序ACP 1 2 R CNTR PV=0 不计数 计数 ON 计数 ON 计数 PV=0 不计数 9 10 0 1 2 9 10 0 1 2 9SCP=0 SV=10 加法计数时序SCP9 8R CNTR PV=0 不计数1 0 10 9 81 0 10 9 81PV=0 不计数计数ON计数ON计数ACP=0 SV=10 减法计数时序182 ★ 可逆计数器的计数功能举例设00003 OFF 、00002 OFF ,00001输入计数脉冲。 00001每输入一个计数脉冲,CNTR 046的当前值加1。 当PV=0200时,再输入一个计数脉冲,PV值变为0000 (进位),同时CNTR 046变为ON。此后再来一个计数脉冲时, PV值变为0001, CNTR 046为OFF,且开始下一个循环的计数。加 计 数 器00001 ACP CNTR(12) SCP 046 #0200 R0000200003LD LD LD CNTR(12)
#0200183 设00003 OFF 、00001 OFF ,00002输入计数脉冲。 00002每输入一个计数脉冲,CNTR 046的当前值减1。 当PV=0000时,再输入一个计数脉冲,PV值变为0200 (借位),同时CNTR 046变为ON。 此后再来一个计数脉冲时, PV=0199, CNTR 046为 OFF,且开始下一个循环的计数。减 计 数 器 00003ACPCNTR(12) SCP 046 #0200 RLD LD LD CNTR(12)
#0200184 ★ 可逆计数器的定时器功能举例00000秒脉冲 常OFF 上电复位
20000控制位CNTR(12) 000 HR00CNTR000 的触点CNT00001000LD 00000 OR 20000 OUT 20000 LD 25502 AND 20000 LD 25314 LD 00001 OR 25315 CNTR(12) 000 HR00 LD CNT000 OUT 01000CNTR000 是加计数器 由于计数脉冲是秒脉冲,所以可作定时器。185 设00001为OFF ,HR00中数据是0500,分析功能。PLC上电,计数器即复位。 自00000 ON 开始,CNTR000 开始计数→ 计数达500 CNTR000 ON →
25315 CNT000 CNTR(12) 000 HR0020000CNTR000 的触点ON →线圈01000 ON 即经过500秒线圈01000 ON闭合01000再过1秒,线圈01000 又OFF CNTR000开始下一循环计数线圈01000每过 500 秒 ON 1秒186 常用的应用指令小结1. 本节介绍的应用指令都经常使用,要牢记其 格式、梯形图、操作数范围及功能。 2. IL/ILC和JMP/JME是控制程序执行流向的指 令,要注意区别两种指令的用法。3. 注意指令TIM/CNT/CNTR的编号方法。4. 学会用时序图描述定时器、计数器工作状态 的方法。 5. 学会定时器和计数器容量扩展的编程方法。187 188 数据传送指令数据比较指令数据传送和数据比较指令有两个以上操作数要注意指令微分和非微分形式时用法的区别 要注意这些指令的操作数的含义及其范围 这些指令多数都有微分和非微分两种形式189 一、 数据传送指令单字传送指令MOV 数字传送指令MOVD块传送指令XFER块设Z指令BSET单字分配指令DIST数据调用指令COLL位传送指令MOVB数据交换指令XCHG190 1. 单字传送指令MOV(21)/ @MOV (21)MOV (21) S D @ MOV (21) S DMOV(21)@MOV(21)S DS DS:源数据(通道或十六进制数 ) D:目的通道号非微分:在执行条件为ON时,将S传送到D中 功 (每个扫描周期都执行)。能微 分:在执行条件OFF→ON时,将S传送到D中 (只在条件满足时刻执行一次)。191 使用MOV指令举例(1)分析程序的功能,并写出语句表.25315MOV(21)LD25315# 0198 HR00MOV (21) #0198HR00在PLC上电的第一个扫描周期,把0198传送到HR00中在此后的各扫描周期,不再执行MOV指令。192 使用MOV指令举例(2)分析程序的功能: 只要0000 OFF→ON, 就执行一次MOV 指令。00000 DIFU(13) 20000把LR00中的内容传送到 HR00中。 LR00中的内容在变 化,必要时将其传 使用DIFU指 送到HR00中。令有何作用?19320000 MOV(21) LR00 HR00 使用MOV指令举例(3) 只要00000 OFF→ON, 就执行一次MOV 指令。 把LR00中的内容传送到 HR00中。 与举例(2 )功能相同。分析程序的功能00000 @MOV(21) LR00 HR00 00000 DIFU(13) 2000020000 MOV(21) LR00 HR00194 指令MOV几种使用方法的区别00000@MOV(21)2531500000MOV(21)DIFU(13) 20000LR00 HR00LR00 HR00( a)( b)20000 MOV(21) LR00 (c) HR00(a)与(c)相同,指令MOV都只在00000 OFF→ON时执 行一次。 (b ) 指令MOV只在PLC上电后的第一个扫描周期执 行一次。195 使用MOV指令举例(4) 分析程序的功能从PLC上电开始,每个扫描 周期里,都将HR00中的内 容传送到LR00中。25313MOV(21)HR00 LR00与上述几种MOV指令使用方法的区别是:本程序中,每个扫描周期指令MOV都执行!请注意MOV指令各种用法的区别196 使用MOV指令举例(5)PLC上电时,将0100传送到200 通道中,作为CNT000的设定值 自00000 ON开始, CNT000按设 定值100开始计数(或定时)。 ★ 改变计数器设定值的操作: ●断开00000,闭合一次触点 00002, 使CNT000复位; ●使00001OFF→ON,将0200 传送到200通道中;分析程序的功能25315MOV(21)#01@MOV(21)#00
197CNT000 200●此后计数器按设定值200计数 2. 块传送指令XFER (70 )/ @ XFER(70 )XFER(70 ) @ XFER(70 ) N N S S D DXFER(70) @XFER(70)N S DN S DN :通道数(BCD数 )S :源数据块首通道 功能 D:目的通道首通道在执行条件为ON时,将几个连续通道中的数据传 送到另外几个连续通道中。198 执行块传送指令时数据传送如下所示:S D1 8923 41 8 9234S+1 2 A C S+2 0 B 6D+1 2 A C D+2 0 B 60S+N-1 D F E……0D+N-1 D F E…199 3. 块设Z指令BEST(71)/ @ BEST(71)BEST(71 ) @ BEST(71) S S St St E EBSET(71) @BSET(71)S St ES St ES :源数据(通道或十六进制数 )St :开始通道 功能 E:结束通道号在执行条件为ON时,将S传送到从St到E的各通道中。200 使用BEST指令举例00000@MOV(21)分析程序的功能,写语句表LD @MOV(21) TIM AND OUT LD @BSET(71) 0 HR00 000 HR00 TIM000
#0050 TIM 000 TIM 000201# 0100 HR00TIM000 HR00TIM000 @BSET(71)# 0050 TIM000 TIM000 功能① @BSET指令的第二、第三操作 数都是TIM000,即执行@BSET指 令,只把数据传送到TIM000中。00000@MOV(21)# 0100HR00 TIM000 HR00 TIM000 @BSET(71)②在00001OFF、00000 OFF→ON 时,执行一次MOV指令,将 #0100传送到通道HR00中。③自此TIM 000以设定值10秒定时。④ 经过10秒,定时器TIM000 ON, 线圈01000 ON 。# 0050 TIM000 TIM000202 ⑤当需要改变定时器TIM000 的当前值时,可通过执行 @BSET指令来实现。例如,在TIM000的当前值为 0089时,令00001 ON一次:00000@MOV(21)# 0100HR00TIM000 HR00执行@BSET指令将0050传送 到TIM000中,TIM000的当 前值立即变为0050。自此,TIM000的当前值从 0050开始,每隔0.1秒减1, 一直减到为0000为止。TIM0000100000001@BSET(71)# 0050 TIM000TIM000203 ⑥由于HR00中的数据没有改变, 在下一次定时器TIM000工作时, 其定时值仍然是0100。★ 以上是用BSET指令改变定时 器的当前值。 ★ 用BSET指令也可以改变定时 器的设定值。方法为:00000@MOV(21)# 0100HR00 TIM000 HR00 TIM000 @BSET(71)本例中,令BSET指令的第2、3操 作数为HR00,执行BSET指令后 ,TIM000的设定值就为0050了。# 0050 TIM000 TIM000204 MOV与BSET指令的异同① 执行一次MOV指令,只能向一个通道传送一 个字;而执行一次BSET指令,可以向多个通道传 送同一个字。 ② TIM / CNT的操作数是通道时,用MOV 和 BSET指令都可以改变TIM / CNT的设定值。 ③ 用 BSET 指令既可改变 TIM/CNT 的设定值、 也可以改变TIM/CNT的当前值 。 因为MOV指令不能向TC区传送数据, 所以不能 用MOV指令改变 TIM/CNT的当前值 !205 4. 位传送指令MOVB (82)/ @ MOVB (82)MOVB (82) @ MOVB (82) S S C C D D S:源数据 C内容的含义 指令的功能 在执行条件为ON时,根据C的内容,将S传送到D中。206MOVB (82)@ MOVB(82)S C DS C DD:目的通道C (BCD) :控制数据bit00~bit07指定S中的位号 bit08~bit15指定D中的位号 使用MOVB指令举例 分析程序的功能,写语句表25315@MOVB (82)HR00 # LD 00005 @MOV B (82) HR00 #C的含义bit00~bit07:S中的位 bit08~bit15:D中的位程序功能在PLC上电之初,将HR0000的内容传送到 20015中 。 例:设 HR00 的内容为 00 0101执行指令之后――20015为ON( 1 )207 5. 数字传送指令MOVD (83)/ @ MOVD (83)MOVD (83) @ MOVD (83) S S C C D DMOVD (83) @ MOVD(83)S C DS C D指令的功能 在执行条件为ON时,根据C的内容,将S中指 定的数字传送到D中指定的数字位中。208 指令各操作数的含义S:源数据 D:目的通道 C:控制数据 C (BCD数)的含义MOVD (83)S C DC 数字3 数字2 数字1 数字0S中第一个要传送的数字位位号 0→ 1位 1→2位 S中要传送的数字位数 2→ 3位 3→4位 指定D中接收第一个数字的位号不用209 使用MOVD指令举例(1)C=#0030根据C、确定指令执行结果MOVD (83)S中第0位数字开始传送 传 送 4 位 数 字S #0030 DD中从第0位开始接收第一个数字S 0 1 2 3 D 0 1被传送的数字位要连续 例如:1 → 2 →3 →0 例如:3 →0 →1 →223例如:2 →3 →0 →1等210 使用MOVD指令举例(2)C=#0023根据C、确定指令执行结果MOVD (83)S中第3位数字开始传送 传 送 3 位 数 字S #0023 DD中从第0位开始接收第一个数字第二个被传 送的数字 第三个被传 送的数字 第一个被传 送的数字S 0 1 2 3 D 0 1第一个接收 数字的位23211 使用MOVD指令举例(3)C=#0123根据C、确定指令执行结果MOVD (83)S中第3位数字开始传送 传 送 3 位 数 字S #0123 DD中从第1位开始接收第一个数字第二个被传 送的数字 第三个被传 送的数字S 0 1 2D 0 12 3第一个接收 数字的位3第一个被传 送的数字212 6. 单字分配指令DIST(80)/ @ DIST (80)DIST(80) S DBS C @ COLL (81) S DBS CDIST(80) @ DIST(80)S DBSS DBSCCS:源数据 DBS:目标基准通道 C:控制数据(BCD)指令的功能在执行条件为ON时,根据C的内容,进行单字数据分配 或堆栈的进栈操作(栈区由C的低3位确定)。213 控制数据C (BCD) 的含义1. C的bit12~ bit15的内容≤8时,执行单字数据 分配 操作。 指令功能DIST(80)当执行条件为ON时,将S的内容传 送到(DBS + C )中,如下图。S9 0 B 6S DBSCDBS+C 9 0 B 6214 2. C的bit12~ bit15的内容= 9时,执行指令生 成一个堆栈,执行进栈操作。指令功能: 当执行条件为ON时,执行指令生成一个堆栈(以C的 低3位确定栈区通道数),以DBS为堆栈指针进行进栈 操作。进栈方法:每执行一次指令,将S的内容复制到(DBS + 堆栈指针 +1 )的栈区通道中,然后指针加1。215 进栈过程举例。堆栈指针 DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 栈区源数据第一次执行00000 ! !0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0DM0000 DM0001 DM0002 DM0003 DM0004 DM00050 F 0 0 0 00 0 1 F F F 0 0 0 0 0 0 0 0 0 0 0 0@DIST(80)200DM200:FFFF第二次执行216:9005! !216DM0000 DM0001 DM0002 DM0003 DM0004 DM00050 F F 0 0 00 0 2 F F F F F F 0 0 0 0 0 0 0 0 0控制数据 7. 数据调用指令COLL (81)/ @ COLL (81)COLL (81) SBS C D @ COLL (81) SBS C DCOLL (81) @ COLL(81)SBSSBSC DC DSBs是基准通道 D是目的通道 C是控制数据(BCD)指令的功能在执行条件为ON时,根据C的内容,进行调用数据或 堆栈的出栈操作(栈区由C的低3位确定)。217 控制数据C (BCD) 的含义@ COLL(81)1. C=―― 数据调用指令功能 当执行条件为ON时,将(SBS + C ) 传送到D中。SBSC D218 2. 出栈操作 (包括两种情况)① C= ――先入先出的出栈操作 以SBS为堆栈指针,按先入先 出的原则,将堆栈中的数据传 送到D中,堆栈指针减1。@ COLL(81)SBS C D② C= ―― 后入先出的出栈操作 以SBS为堆栈指针,按后入先出的原则,将堆 栈中的数据复制到D中(堆栈中的内容不变), 堆栈指针减1。219 分析:当SBs=DM0000、 C=#9007 、D=200时,指令 COLL执行的结果。先入先出C=#9007栈区 DM0001~DM0007 指针减1DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 DM0006 DM0007 IR200 56 568C F EEEE EEEE 执行一次 0001先入先出的出栈过程DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 DM0006 DM01 8C F EEEE 执行前堆栈指针@ COOL(81)DM0000栈 区#执行二次 IR200 1101220 分析:当SBs=DM0000、 C=#8007 、D=200时,指令 COLL执行的结果。后入先出C=#8007栈区为 DM0001~DM0007 指针减101 00 9D6F 1234执行一次后入先出的出栈过程DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 DM0006 DM01 8C F 1234 执行前堆栈指针栈 区DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 DM0006 DM0007 IR200@ COOL(81)DM0000不 变#执行二次12349D6F221 二、 数据比较指令单字比较指令CMP 双字比较指令CMPL 块比较指令BCMP 表比较指令TCMP222 1. 单字比较指令CMPCMP(20) C1 C2 CMP(20) C1 C2C1 :比较数1C2 : 比较数2功能 在执行条件为ON时,将C1 和C2进行比较。 当 C1 & C2时,标志位25505 ON 当 C1 = C2时,标志位25506 ON 当 C1 & C2时,标志位25507 ON223 使用CMP指令举例(1) 写语句表、分析程序功能LD TIM CMP(20)
#0030 TIM000 #
20002 TIM000 2000300000 TIM000 #0030 CMP(20)TIM 000# 0200AND OUT AND OUT AND OUT LD OUT255052550625507 TIM000 2000320002224 分析程序功能执行指令CMP时,将TIM000的 当前值与 #0200进行比较。 当00000为ON时,TIM000开始 定时、且开始执行CMP指令。TIM000的当前值由0300每隔0.1 秒减1。00000TIM000 #0300 CMP(20) TIM 000#
2000125507 TIM0002000220003225 续若TIM000当前值大于#0200时, 25505 ON →20000 ON。若TIM000的当前值等于# 0200 时,25506 ON → 20001 ON。00000TIM000 #0030CMP(20) TIM 000若TIM000的当前值小于# 0200 时,25507 ON → 20002 ON。当TIM000 定时到 时,20002和 20003 ON。#
20002TIM000 20003可见:配合指令CMP,用一个定时器可以控制 226 多个输出位。 使用CMP指令举例 (2) 分析本例使用微分指令的原因由于CMP指令没有微分形式 若欲使指令CMP只在00000 OFF→ON时执行一次 则必须使用指令DIFU(13)00000 DIFU(13) 20000 CMP(20)TIM 000#
01000227 2. 块比较指令BCMPBCMP (68) @ BM P(68) CD CD CB CB R RBCMP (68) @ BCMP(68)CD CB RCD CB RCD:比较数据 CB:数据块的起始通道 R:存结果通道 功能 当执行条件为ON时,将CD与每个数据区域比较。 当CD处于某个区域时,与该区域对应的R的位ON。228 使用块比较指令BCMP举例00000@MOV(21)数据块上限00 00 00 00 00 1600存结果HR 05HR 0500 HR 0501 HR 0502 HR 0503 HR 0504 HR 0505 HR 0506 HR 0507 HR 0508 HR 0509 HR 0510 HR 0510 HR 0512 HR 0513 HR 0514 HR 0515下限# @BCMP比较数据 块首通道 结果通道200DM0000HR 05数据块内容可 预先写入DM 0000 DM 0002 DM 0004 DM 0006 DM 0008 DM 0010 DM 0012 DM 0014 DM 0016 DM 0018 DM 0020 DM 0022 DM 0024 DM 0026 DM 0028 DM 003001 01 01 01 01 1501DM 0001 DM 0003 DM 0005 DM 0007 DM 0009 DM 0011 DM 0013 DM 0015 DM 0017 DM 0019 DM 0021 DM 0023 DM 0025 DM 0027 DM 0029 DM 0031比较指令执行结果:HR 0514为 ON229 3. 表比较指令TCMPTCMP (85) @ TCMP(68) CD CD TB TB R RTCMP (85) @ TCMP(85)CD TB RCD TB RCD:比较数据 TB:数据表的起始通道 R: 结果通道功能 当执行条件为ON时,将CD与数据表中的数据比较。当CD与表中某个通道的数据相同时,与该通道对应的 R的位为ON。230 使用表比较指令TCMP举例00000 @MOV(21) #
@TCMP 200存结果 数据表 HR00 0101 HR01 0151 HR02 0005…比较数据 表首通道 结果通道结果通道 HR1900 HR1901 HR1902…对应位状态 0 0 1…HR00HR19HR15 0605HR19150数据表内容 可预先写入该程序执行结果:HR 1902为 ON。231 数据传送和数据比较指令小结1. 数据传送指令(1) 注意各种传送指令的区别。 单字传送MOV是常用的指令,要牢记其使用方法。区别位传送和数字传送指令目的通道内容存放的方法块设Z指令BSET可以向TC区传送数据,用该指令可 以改变定时器的当前值。(2) 注意块传送和块设Z指令功能的区别。(3)注意单字分配、数据调用和数据交换指令的区别。232 2. 数据比较指令(1) 单字/双字比较指令是常用的指令,要牢记其格式、 梯形图、操作数范围和使用方法。 使用单字/双字比较指令要影响标志位: ① 在需要保存标志位状态时,要编写相应程序。 ②注意触点的使用方法。 (2) 注意块比较和表比较指令执行结果的表示方法。233 数据移位和数据转换指令数据运算指令 子程序控制 指 令高速计数器控制 指 令234 235 数据移位与数据转换指令指令 数据移位指令数据转换指令236 移位寄存器指令 可逆移位寄存器指令 数字左、右移指令数据移位指令算术左、右移指令循环左、右移指令字移位指令异步移位寄存器指令237 1. 移位寄存器指令SFT (10)SFT(10) St EIN SFT(10) SP St R ESt :移位开始通道 E:移位结束通道 SP:移位脉冲输入端IN:数据输入端R:复位端功 能当复位端R为OFF时, 在SP端移位脉冲的 作用下,IN端的数据被移入移位寄存器。 在移位脉冲的作用下,移位寄存器中的数 据以位为单位依次向左移一位。238 移位寄存器指令SFT 的用法●在移位脉冲作用下,St到E中的数据左移过程。丢失E…StIN端 数据IN SP R●复位端R为ON时,St到E所有通道 均复位为零,且移位指令不执行。★ 没有移位脉冲时不执行移位。 ★ 移位寄存器具有保持功能。SFT(10) St E239 移位寄存器指令SFT 的语句表图示梯形图的语句表如下LD LD LD OR SFT(10) LD OUT
200 200 00000 01000 INSPSFT(10)200200RSFT 的两个操作数都是200,表示只由200通道组 成移位寄存器。240 移位接触器 的工作时序 1 2 3 4 5 6 7
00001IN SP SFT(10) 200 200R25315200030100020000的ON状态,在200通道内依次向左移动。200 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0241 分析程序的功能25315使移位寄存器上电复位 00000 的状态作为输入数据 00001 ON 可使寄存器200复位00000 IN SPSFT(10)200 200R0100025502的秒脉冲作为移位脉冲第一个移位脉冲输入后,00000的ON状态移入20000。经过4个移位脉冲20003 ON,于是01000 ON。第五个移位脉冲时20003 OFF,于是01000 也OFF。 移位过程中,只要00001为ON,移位寄存器即复位。242 2. 可逆移位寄存器指令SFTR(84)SFTR (84) C St E C:控制通道 @ SFTR (84) C St E St :移位开始通道SFTR (84) @SFTR(84)C St EC St EE :结束通道功能当执行条件为ON时, 根据控制通道C的内容,在St ~E通道内,执行左移或右移位操作。243 可逆移位寄存器的用法① 控制通道C的含义15 14 13 12不使用 移位方向 1:左移(低→高) 0:右移(高→低) 数据输入 移位脉冲输入SFTR (84)C St E复位1: St~E及CY清零 0:根据C的状态移位244 ② 左、右移位的控制●通道C之bit 15为0时,在移位脉冲的作用下, 根据C之bit 12的状态进行左移或右移。 ○ C之bit 12为1 左移:每个扫描周期,从St到 E按位依次左移一位,C之bit13的数据移入St 之bit 0中,E之bit15的数据 移入CY中。 ○ C之bit 12为0右移:每个扫描周期,从E到 St按位依次右移一位,C之bit13的数据移入E 之bit15中,St之bit0的数据移入CY中。SFTR (84)C St ESt 开始通道E 结束通道●在执行条件为 OFF时停止工作。此时若 C之 bit15为1,St到E及CY仍保持原状态不变。245 使用可逆移位寄存器举例LD OUT LD OUT LD DIFU (13) LD OUT LD OUT LD SFTR (84)
LR10 LR11 20013 数据输入
DIFU(13) 移位方向20014 移位脉冲000032001500004复位SFTR(84) 200 LR10 LR11246 程序功能分析当00004为ON时,开始执 行移位操作。 200的bit12~bit15的状态是 由0控制的。 若00001ON,则20013为1, 即输入数据为1; 若00001OFF,则20013为0, 即输入数据为0。 每当00002 OFF→ON时, 20014都会ON一个扫描周 期,形成移位脉冲。0000020012移位方向0000120013 数据输入0000220100DIFU(13) 2010020014 移位脉冲 00004 SFTR(84) 200 LR10 LR11复位控制 通道开始 通道执行条件 结束通道247 (续)若直接以00002作为移位脉冲。 因为当00002为ON时,每个 扫描周期都要执行一次移位, 这将造成移位失控。 若00003ON,则20015ON, LR10~LR11及CY位清0 若00003OFF →20015 OFF, 此时根据20012的状态执行移 位操作。000000000120012移位方向20013 数据输入0000220100DIFU(13) 2010020014 移位脉冲 00004 SFTR(84) 200 LR10 LR11复位248 00000(续) 若20012 ON执行左移位: 每当00002OFF→ON时, LR10~LR11中的数据按位 依次左移一位。20013的状 态进入LR1000, LR1115 的数据进入CY。20012移位方向0000120013 数据输入 20014 移位脉冲
DIFU(13) 20100复位00004SFTR(84) 200 LR10 LR11CY ← HR1115~HR1100 ← HR1015~HR1000 ← 20013249 00000(续)0000120012移位方向若20012 OFF执行右移位: 每当00002OFF →ON时, LR10~LR11中的数据按位 依次右移一位。20013的状 态进入LR1115, LR1000 的数据进入CY。20013 数据输入 20014 移位脉冲
DIFU(13) 20100复位00004SFTR(84) 200 LR10 LR1120013 → HR1115~HR1100→ HR1015~HR1000 → CY250 3. 数字左/右移指令SLD (25)/ ASR(26)算术左/右移位指令的功能和使用方法相似以算术左移指令为例,介绍它们的功能和使用方法SLD(74) St E SLD(74) St ESt:移位首通道E:移位结束通道功能:当执行条件为ON时,执行指令将St~E中的数 据以数字为单位依次左移位1位。如下图:溢出 ←E St…←0251 4. 算术左/右移位指令ASL (25)/ ASR(26)算术左/右移位指令的功能和使用方法相似以算术左移指令为例,介绍它们的功能和使用方法 ASL(25)ASL(25) ChCh功能Ch是移位通道号当执行条件为ON时,执行指令将Ch中的数据以位为 单依次左移1位。最高位移入CY。如下图:CYCh252 5. 循环左/右移位指令ROL(27)/ROR(28)循环左/右移位指令的功能和使用方法相似以循环左移指令为例,介绍它们的功能和使用方法 ROL(27)ROL(27) ChCh功能Ch是移位通道号当执行条件为ON时,将Ch及CY中的数据以位为单 依次循环左移位1位。如下图:ChCY253 使用指令ROL举例当00000 OFF→ON时 ① 执行一次指令ROL 使HR00循环左移一次写语句表、分析程序功能00000 @ROL(27)HR00@MOV(21) HR00…010END(01)② 执行一次指令MOV将HR00的数据传送到010 通道中去。LD 00000 @ROL(27) HR00 @MOV(21) HR00 010 END(01)…254 (续)设HR00中的数据如下(设CY= 0 )←01 0101← CY ←00000@ROL(27) HR00执行一次指令ROL后,CY和 HR00中的数据如下:@MOV(21)HR00 010 END(01)←10 1010←1←…010通道中的数据为:10 1010255 ★ 执行ROL/ROR指令时应注意的问题由于程序扫描到END时,CY等标志位将被清零。 在下个扫描周期执行ROL时,仍需要 CY位参 与移位或运算,这时会出现错误。为了解决该问题,需设Z保存 CY状态的程序256 保存 CY状态的程序 原程序00000 @ROL(27) HR00 @MOV(21)修改后的程序HR0100 STC(40) 00000@ROL(27)HR00…HR00 010 END(01) 25504…HR 0100 END(01)…257 (续)具有保存 CY状态的程序的分析若某扫描周期使CY=1,则 25504 ON→HR0100 ON 下个扫描周期执行程序时, 由于HR0100 ON ,则执行 指令STC → CY位Z1。 这样,在本扫描周期执行 ROL指令时,CY的状态就 是正确的了。HR0100 STC(40) 00000 @ROL(27) HR00…25504HR 0100END(01)类似这样的问题,编程时务必引起注意。258… 6. 字移位指令WSFT(16)/ @WSFT(16)WSFT(16) St E @WSFT(16) St EWSFT(16)@WSFT(16)St ESt ESt:移位开始通道号E:结束通道功能:当执行条件为ON时,将St~E中的内容以字为 单位依次左移1位。如下图:丢失 ← E … ← St+1 ← St← 0000259 7. 异步移位寄存器指令ASFT /@ASFTASFT (17) C St E @ ASFT (17) C St EASFT (17) C St E@ASFT(17)C St EC:控制数据 C的含义St :移位开始通道E :结果通道C 15 14 13 12 为指令功能0 移位方向:0→上移 1→下移 是否允许移位:0→ 不允许 1→允许 是否复位:0→ 正常操作 1→复位当执行条件为ON时,将数据为0000的通道与相邻通道 进行数据交换。260 执行指令ASFT时数据交换的规则① 相邻两通道数据都为0000,不交换。 ②上移:数据为0000的通道与相邻高地址通道交换。③下移:数据为0000的通道与相邻低地址通道交换。执行指令ASFT,可以把数据为0000的通道集中 到数据区的上半部分或下半部分。261 使用指令ASFT举例00000@ASFT(71)执行前执行后 00 2B68 47#6000DM0000 DM0007控制字 C=#60006→0 1 1 0下移 允许移 正常工作DM0000 DM0001 DM0002 DM0003 DM0004 DM0005 DM0006DM00077A 2B68 4700000000第一次移位262 数据移位指令小结1. 要根据需要,选择合适的数据移位指令。 ① 是需要建立移位寄存器、还是要按位移位、按数 字移位或按字移位。② 是需要作单向移位、循环移位、还是异步移位。③ 是需要作左移位还是右移位。 2. 当需要标志位CY参与移位时,有时需要编程保存 CY的状态。 3. 注意执行各种指令后对标志位的影响。263 数据转换指令BCD→二进制转换 二进制→ BCD转换 16→4编码指令 七段译码指令4→16 译码指令ASCII码转换指令264 1. BCD码→二进制数转换指令BIN/@BIN BCD /@BCD与 BIN/@BIN指令类似,下面以 BIN/@BIN为例说明其使用方法。BIN(23) S RBIN(23) SS: 源通道 R: 结果通道R功能:当执行条件为ON时,将S中的BCD码转 换成二进制数,并将结果存入R中。265 写出图示语程序的句表、并分析功能。源通道IR200中为BCD数 4321。 4321转换为二进制数是00000 @ MOV #
@BIN 200 DM0000 LD 00000 @ MOV (21) #
@ BIN (23) 200 DM00000001转换后结果通道内容 第 3位 第2位 215 214 213 212 211 210 29 28 0 1 0 0 0 0 1 1 第3位 第2位 215 214 213 212 211 210 29 28 0 1 0 0 0 0 0 0第1位 27 26 25 24 0 0 1 0 第1位 27 26 25 24 1 1 1 0第 0位 23 22 21 20 0 0 0 1 第0位 23 22 21 20 0 0 0 1源通道 IR200 结果通道 DM0000266本例只在00000 OFF→ON时转换一次。 2. 4→16 译码指令MLPX/@ MLPXMLPX (76) @ MLPX(76) S S C C R R S:源首通道 C:控制数据 C的含义C 数字3 数字2 数字1 数字0MLPX (76) @MLPX(76)S C RSC RR :结果首通道S中第一个要译码的数字位位号 0→ 1位 1→2位 S中要译码的数字位数 2→ 3位 3→4位 固定为0267 指令功能当执行条件为ON时,根据C的内容对S进行译码,并 将结果存放中R中。译码方法① 由C确定被译码的起始数字位及译码的位数; ② 将该位数字(十六进制)转换为0~15的十进制数; ③ 再将结果通道中与该十进制数对应的位Z为ON, 其余位为OFF。 ④被译码的数字位不能大于4。268 被译码的数 字位要连续如:1 → 2 →3 →03 →0 →1 →2 2 →3 →0 →1 等结果通道的存放顺序对4位数 字译码 从0位开 始译码 对3位数 字译码 从3位开 始译码R R+1 R+2 R+3269C= # 0030第1个0 1 2SR R+1R+2RC= # 0023第2个 第3个 第1个0 12SR第4个3R+33 使用译码指令MLPX举例00000 @MOV # 78F5 200 @MLPX 200 # 0013 HR00写语句表、分析程序功能 源 通 道 IR200 结果首通道HR00 控制字C=#0013 IR200:78F5LD 00000 @ MOV (21) # 78F5 200 @ MLPX (76) 200 # 0013 HR 00C=#0013从第三位数字开始译码对2个数字译码 (第3位→第0位)译2个数字,存放结果需要2个通道 HR00和HR01270 (续)译码的原理源通道(78F5)第3位数字是0111――十进制数7 则以7为位号,将结果首通道HR00中的bit07Z为1源通道第0位数字是0101――十进制数5则以5为位号,将结果末通道HR01的bit 05Z为1第 3位 0 1 1 1 第 2位 1 0 0 0215 214 213 212 211 210 29 281 1 1 127 26 2 5 24第 1位第0位23 22 21 200 1 0 1源通道 IR200结果通道 HR00 结果通道 HR01271215 214 213 212 211 210 29 282 7 26 25 240 0 0 00 0 0 01 0 0 02 7 26 25 2423 22 21 200 0 0 0215 214 213 212 211 210 29 280 0 0 00 0 0 00 0 1 023 22 21 200 0 0 0 对本例,如果C=#0023,即对3个数字译码,第3个被 译码的是源通道的第1位数字。第3个译码结果存放在 结果通道HR02中。第 3位0 1 1 1第2位1 0 0 1215 214 213 212 211 210 29 28127 26 25 24第1位第0位23 22 21 201 1 10 1 0 123 22 21 20源通道 IR200215 214 213 212 211 210 29 2827 26 25 240 0 0 00 0 0 00 0 0 00 0 01 0 0 00 0 0 0结果通道 HR00结果通道 HR01 结果通道 HR02272215 214 213 212 211 210 29 2827 26 25 2400 0 1 023 22 21 200 0 0 023 22 21 20215 214 213 2121 0 0 0211 210 29 282 7 26 25 240 0 0 00 0 1 00 0 0 0 使用译码指令MLPX 时需注意① 执行一次指令,最多只能对4个数字译码。 ② 结果通道不能超过其所在区域。例如设C=#0023时,结果首通道设为HR18; 设C=#0042 等,都是错误的。273 3. 16 → 4 编码指令DMPX/@ DMPXDMPX (77) @ DMPX(77) S S R R C C S:源首通道 C:控制数据 C的含义C 数字3 数字2 数字1 数字0DMPX (77) @DMPX(77)S R CS R CR :结果通道R中接收编码的第一个数字位 被编码的源通道数 0→ 1个 1→2个 2→ 3个 3→4个 固定为0274 指令功能当执行条件为ON时,根据C的内容,对以S为首通道的 几个通道进行编码,并将结果存放在R中。编码方法① 由C确定被编码的通道数; ② 将被编码通道中为ON的最高位的位号编为一个十六 进制数;③ 将该十六进制数送到R指定(由C指定)的数字位。275 使用编码指令DMPX举例 写语句表、分析程序功能00000@MOV # @DMPX HR00 DMLD 00000 @ MOV (21) #
@ DMPX (77) HR 00 DM源首通道 IR00 结果通道DM0000 控制字 C=#0013C=#0013从R的数字位3 开始存放结果 对2个通道进行编码对两个通道编码,源通道 应为HR00和HR01276 (续)编码的原理设源通道HR00中内容为A8E7 (10 0111)HR00中为1的最高位的位号 是15――十六进制编码F 源首通道 IR00 结果通道DM0000控制字 C=#0013将编码F放在结果通道DM0000的第3位数字位上。设源通道HR01中内容为01BF(11 1111) HR01中为1的最高位的位号是8――十六进制编码8 将编码8 放在结果通道DM0000的第0 位数字位上。277 存放编码结果 的位号要连续如:1 → 2 →3 →0 3 →0 →1 →22 →3 →0 →1 等结果的存放顺序C= # 0030S S S+1 S+2 S+30 1 2 3C= # 0031第1个 S S S+1 S+2 S+30 1 2 3RR第4个 第1个 第2个 第3个278第4个 原通道与编码结果的对应关系第 3位 第 2位215 214 213 212 211 210 29 281 0 1 01 0 0 01 1 1 027 26 2 5 24第 1位第0位23 22 21 200 1 1 123 22 21 20源通道 HR00 源通道 HR01 结果通道 DM0000215 214 213 212 211 210 29 282 7 26 25 240 0 0 0 1 1 1 10 0 0 11 0 1 11 1 1 1 1 0 0215 214 213 212 211 210 29 282 7 26 25 2423 22 21 200若C=#0023(对3个源通道编码),第3个被编码的源通道应 是HR02,第3个编码结果应放在DM0000的数字位1上。279 使用编码指令DMPX时需注意① 源通道不能超过其所在区域。② 源通道不能超过4个。例如设C=#0023时,源首通道设为HR18; 设C=#0042 等,都是错误的。280 4. 七段译码指令SDEC/@ SDECSDEC (78) S C R @ SDEC(78) S C RSDEC (78) @SDEC(78)S C RS C RS:源通道(BCD) C:控制数据R :结果首通道C的含义C 数字3 数字2 数字1 数字0S中第一个要译码的数字位0→ 1位 1→2位 被译码的数字位的位数 2→ 3位 3→4位固定 为0 从R的高8位还是低8位开始存放第一个结果 0:低8位 1;高8位281 转换后结果存放顺序固定 为0 从R低8位 开始存放 译码4位 从数字位0 数字 开始译码C= # 0 0 3 00 1 2 3S低8位 高8位 低8位 高8位RR+1282 固定 为0从R高8位 开始存放译码4 位数字从数字位3 开始译码C= # 0 1 3 30 1 2 3S低8位 高8位 低8位 高8位 低8位 高8位R R+1 R+2注意: 对4个数字译码占用了三个通道!283 指令SDEC的功能当执行条件为ON时,根据C的内容,对S进行译码, 并将结果存放中R中。译码方法① R中的bit00~06及bit08~14分别对应数码管的a、b、 c、d、e、f、g段。 bit07和bit15不用。② bit00~06及bit08~14若为1,对应数码管的段发光。③ 根据被译码数字位的数值,确定 bit00~06及 bit08~14哪个位为1。 ④译码结果存放在以R为首的几个连续通道中(由C确 定是从R的低8位还是高8位开始存放)。284 使用译码指令SDEC举例00000写语句表、分析程序功能 源 通 道 IR00@MOV # 1673 HR00@SDEC HR00 #0013 HR01LD 00000 @ MOV (21) # 1673 HR00 @ SDEC(78) HR00 # 0013 HR01结果首通道 HR01 控制字 C=#0013 HR00:1673C=#0013R中第一个要译码的数字位对2个数字位进行译码从R的低8位开始存放结果 译码数字位3→0 需占用一个结果通道285 (续)译码的原理设源通道HR00中内容为1673(BCD)a f g b c e dbca gb cd源通道中第3位数字是1→对应 b、c 段应该是1; 第一个译码结果要存放在结果通道的低8位,所以HR01 的低8位是(bit7固定为0); 源通道中第0位数字是3→对应 a、 b、 c、d、g段是1; 第二个译码结果要存放在结果通道的高8位,所以HR01 的高8位是(bit15固定为0)。 源通道数字与译码结果通道的对应关系如下页图。286 (续)源通道数字与译码结果通道的对应关系1215 214 213 21261211728323 22 21 200 0 00 1 1 0210290 1 1 127 26 25 240 0 1 1源通道 HR00215 214 213 212 ×0 1 0gf0e211 210 29 28d1 1 1 1c b a× g0 0 0 0f27 26 25 24 e23 22 2 1 20 d0 1 1 0c ba f e结果通道 HR01a g dba g dbcb cc287 本例中,若 C=#0113 时,也是对 2个数字译码,若第一 个结果从高8位开始存放,则需要两个结果通道。 第一个译码结果存在 HR01 的高 8 位,第二个译码结果 存在HR02的低8位。注意① 执行一次指令,最多只能对4个数字译码; ② 结果通道不能超过其所在区域。 例如:设 C=#0023时,结果首通道设为HR18; 设 C=#0042 等,都是错误的。288 5. ASCII码转换指令ASC/@ ASCASII (86) S C R @ ASC (86) S C RASC (86) @ASC(86)S C RS C RS:源通道C:控制数据数字0R :结果首通道C的含义C 数字3 数字2 数字1S中第一个被转换的数字位 校验0:无校验 1:偶校验 2:奇校验被转换的数字位的位数0→ 1位 1→2位 2→ 3位 3→4位从R的高8位还是低8位开始存放第一个结果 0:低8位 1;高8位289 指令功能当执行条件为ON时,根据C的内容,将S中指定的数 字转换成ASCII码,并将结果存放在R中。 关于校验位 ① 结果通道的bit00~06及bit08~14存放结果。bit07 和bit15是校验位。 ② 若设Z不校验,则bit07和bit15为0。 ③ 若设Z奇校验,则校验位与ASCII码中的1的总数应 为奇数,否则bit07和bit15为1; ④ 若设Z偶校验,则校验位与ASCII码中的1的总数应 为偶数,否则bit07和bit15为1。290 转换方法① 确定源通道中欲转换的第一个数字及数字个数 。 ②查ASCII码表,对源通道中欲转换的数字进行转换 。 ③ 根据C中bit08~11的规定,按顺序存放结果。 由C来确定,是从R的低8位、还是高8位开始存放。 ④ 根据C中校验的规定,确定 bit07和bit15的状态。291 执行ASC指令的几种情况无校验 从R低8位 开始存放 转换2 位数字 从数字位1 开始转换C= # 0 0 1 1215 214 213 212 211 210 29 28 27 26 25 240 1 0 1310 0 0 1211 210 29 280 0 1 123 22 21 20331 1 0 1源通道 S 结果通道 R215 214 213 21227 26 25 240 0 1 10 0 0 10 0 1 123 22 21 200 0 1 1292 偶校验从R低8位 开始存放转换2 位数字从数字位0 开始转换C= # 1 0 1 0215 214 213 212 211 210 29 28 27 26 25 240 1 1 131 215 214 213 2120 1 0 10 0 0 123 22 21 200 0 1 133源通道 S211 210 29 2827 26 25 241 0 1 10 0 0 10 0 1 123 22 21 200 0 1 1结果通道 R293 奇校验从R低8位 开始存放转换2 位数字从数字位0 开始转换C= # 2 0 1 0215 214 213 212 211 210 29 28 27 26 25 240 1 1 131 215 214 213 2120 1 0 1211 210 29 280 0 0 123 22 21 200 0 1 133源通道 S 结果通道 R27 26 25 240 0 1 10 0 0 11 0 1 123 22 21 200 0 1 1294 奇校验从R高8位 开始存放转换2 位数字从数字位0 开始转换C= # 2 1 1 0215 214 213 212 211 210 29 280 1 1 1215 214 213 2120 1 0 133 211 210 29 280 0 0 127 26 25 2423 22 21 200 0 1 123 22 21 20源通道 S 结果通道 R27 26 25 241 0 1 10 0 1 131215 214 213 212211 210 29 280 0 1 127 26 25 2423 22 21 200 0 0 1结果通道 R+1295 数据转换指令小结1. 根据所作的操作(数制转换、编/译码),正确选 择指令。 2. 编码(DMPX)与译码(MLPX)是互为逆操作的指令。 其操作数较烦琐,要抓住它们的对偶关系来记忆指 令的操作数。要确保操作数设Z正确。 3. 七段译码指令(ASC)的执行结果对应数码管的a~g 段。注意其结果的存放方法。 4. 注意ASCII码转换指令(ASC)执行结果的存放方法 及不同校验方式时bit07和bit15的状态。 5. 注意执行各种指令对标志位的影响。296 297 数据运算指令十进制运算指令 二进制运算指令逻辑运算指令298 十进制运算指令十进制加法运算指令十进制减法运算指令 十进制乘法运算指令十进制除法运算指令299 几种单字十进制运算指令ADD (30) Au Ad R SUB (31) Mi Su R MUL(32) Md Mr R DIV (33) Dd Dr R @ ADD(30) Au Ad R @ SUB(31) Mi Su R @ MUL(32) Md Mr R @ DIV(33) Dd Dr R 当执行条件ON时,将Au、 Ad及 CY相加,结果存入R。若结果大于 9999,则将CYZ1。 当执行条件ON时,将Mi减去Su、 再减CY,结果存入R。若有借位,将 CYZ1,且用0-R-CY,结果存入R 当执行条件ON时,将Md与 Mr相乘, 结果存入从R(低4位)开始的结果 通道中。 当执行条件ON时, 用Dd除以Dr 、 结果存入R(商)和R+1 (余数)中。300 使用运算指令时涉及CY,关于CY的指令:STC(40) 当执行条件 ON 时,将 25504(CY) Z 1 。 @ STC(40) CLC(41) 当执行条件 ON 时,将 25504(CY) Z 0 。 @CLC(41)通道BCD 数据 递增/递减指令:INC(38) @ INC(38) 执行一次指令,将通道数据递增1。 DEC(39) @ DEC(39) 执行一次指令,将通道数据递减1。301 1. 十进制加法运算指令举例 分析程序功能00000 TIM001CLC (41)ADD(30)当00000及TIM001 ON(一个扫 描周期)时:① 执行指令CLC将CY清零; ② 执行指令ADD将DM0010 (已预先写入0300)加上#0300; DM0010中的数据每加#0300, TIM000的设定值增加30秒。25507DM0010 # 0300 DM0010CMP(20)# 0900 DM0010MOV(21)00000 TIM001 TIM000# 0300 DM0010 TIM000 DM0010 TIM001 # 0600③ 执行指令CMP将#0900与 DM0010比较 ;01000302 ④若DM0010 大于#0900,执行 指令MOV ,再将#0300传送到 DM0010中。00000 TIM001CLC (41)ADD(30)再次将#0300传送到DM0010, TIM000的设定值恢复为30秒。⑤TIM000的设定值是变化的, TIM001的设定值是固定的。 TIM001控制01000ON的时间、 TIM000控制01000 OFF时间 。 01000 ON的时间总是60秒; 01000 OFF的时间从 30秒起依 次增加30秒(不超过90秒)。25507DM0010 # 0300 DM0010CMP(20)# 0900 DM0010MOV(21)00000 TIM001 TIM000# 0300 DM0010 TIM000 DM0010 TIM001 # 303 该段程序对 01000 实现了循环间歇 OFF 、 ON 的 控制。程序实现的控制如下:TIM000 定时30s TIM001 定时60s TIM000 定时60s00000 ON→01000 OFF 30秒→01000 ON 60秒→01000 OFF 60秒01000 ON 60秒← 01000 OFF 90秒←01000 ON 60秒 TIM001 定时60s TIM000 定时90s TIM001 定时60s↑↓304 2. 十进制减法运算指令举例00000 IL(02)分析程序功能当00000ON时: ① 执行指令CLC将CY清零;CLC (41)② 执行指令SUB,用HR00的 内容减去DM0000的内容,再减 去CY,将差存放在HR01;若运算无借位,CY=0,触点 25504 OFF,执行指令MOVZ HR02为0(记忆CY状态); 若运算有借位,CY=1,触点 25504 ON,执行CLC清CY。SUB (31) HR00 DM0000 HR01 25504 MOV(21) # 0000 HR02 25504 CLC (41)ILC (03)SUB (31) # 0000 HR01 HR01 MOV(21) # 0001 HR02305 ③若运算有借位,因为HR01的 内容是差的十进制补码,故应 再作一次减法运算。00000 IL(02)CLC (41)所以运算有借位时,要清CY, 再执行一次指令SUB,用# 0 减 去HR01的 内容,再将差存放 在HR01。④将HR02Z1 (记忆CY状态) 该程序段使用了分支指令,只有 当00000 ON时,程序才执行。SUB (31) HR00 DM0000 HR01 25504 MOV(21) # 0000 HR02 25504 CLC (41)ILC (03)SUB (31) # 0000 HR01 HR01 MOV(21) # 0001 HR02306 有借位的减法运算的过程如下设HR00的内容为1000,DM0000的内容为2000。HR00 DM000 CY HR01 CY第一次减:1000 C 2000 C 0→1000 + (10000 C 2000) = 9000 1HR01 CY HR01 CY 1第二次减:0000 C 9000 C 0→ 0000 + (10000 C 9000) = 1000307 3. 十进制乘/除运算指令举例 乘法运算与CY位无关。 分析程序功能 @BSET # 0000 DM0000 DM0004 @INC DM0000 @CMP # 0004 DM0000 @MUL DM0000 # 0004 DM0001 @DIV DM0001 # 0002 DM0003①运行程序前先令00000ON一次执行指令BSET,将DM0000~ DM0004清零,以准备运算。 ②令00001ON一次,执行一次指 令INC,使DM0000内容加1;③执行一次指令CMP将DM0000 与#0004比较;2550721000308 00000若DM0000的内容大于# 0004, 则将21000Z为ON,执行一次指 令BSET,将DM0000~ DM0004 清零;④ 执行一次指令MUL,将 DM0000的内容与#0004相乘, 结果存入DM0001~DM0002中; ⑤执行一次指令DIV,将 DM0001~DM0002的内容与 #0002相除,将商存入DM0003、 将余数存入DM0004中; 21000@BSET # 0000 DM0000 DM0004 @INC DM0000 @CMP # 0004 DM0000 @MUL DM0000 # 0004 DM0001 @DIV DM0001 # 0002 DM00032550721000309 00001 ON4次,DM0000~DM0004的内容如下00001ON DM0000 DM0001 第1次
第4次 DM0000加1 DM0000乘4DM00 DM04
余数DM0001~ DM0002除2从00001第5次ON开始,再重复上面的过程。310 二进制运算指令二进制加法运算指令二进制减法运算指令 二进制乘法运算指令二进制除法运算指令311 二进制运算指令的功能ADB (50) Au Ad R SBB (51) Mi Su R MLB(52) Md Mr R DVB (53) Dd Dr R @ ADB (50) Au Ad R @ SBB (51) Mi Su R @ MLB(52) Md Mr R @ DVB(53) Dd Dr R 当执行条件ON时,将Au、 Ad及 CY相加,结果存入R。结果大于 FFFF时,将CYZ1。 当执行条件ON时,将Mi减去Su、 再减CY,结果存}

我要回帖

更多关于 欧姆龙plc编程指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信