470 likes | 644 Views
第 3 章 CPM1A 系列 PLC 的指令系统. 3.1 概 述 3.2 基 本 指 令 3.3 常用的应用指令 3.4 数据传送和数据比较指令 3.5 数据移位和数据转换指令. 3.6 数据运算指令 3.7 子程序控制指令 3.8 高速计数器控制指令 3.9 脉冲输出控制指令 3.10 中断控制指令 3.11 步进控制指令 3.12 特 殊 指 令. 3.1 概 述. 1 .指令的分类
E N D
第3章 CPM1A系列PLC的指令系统 • 3.1 概 述 • 3.2 基 本 指 令 • 3.3 常用的应用指令 • 3.4 数据传送和数据比较指令 • 3.5 数据移位和数据转换指令
3.6 数据运算指令 • 3.7 子程序控制指令 • 3.8 高速计数器控制指令 • 3.9 脉冲输出控制指令 • 3.10 中断控制指令 • 3.11 步进控制指令 • 3.12 特 殊 指 令
3.1 概 述 • 1.指令的分类 • 按指令功能的不同,可分为基本指令和应用指令两类。基本指令是直接对输入和输出点进行操作的指令,如输入、输出及逻辑“与”、“或”、“非”等操作。应用指令是进行数据传送、数据处理、数据运算、程序控制等操作的指令。应用指令的多少关系到PLC功能的强弱。
2.指令的格式 • 指令的格式可以表示为: • 助记符(指令码) 操作数1 • 操作数2 • 操作数3 • 3.执行指令对标志位的影响 • 4.指令的微分、非微分形式
3.2 基 本 指 令 • 3.2.1 常用的基本指令 • 1.LD、LD NOT、AND、AND NOT、OR、OR NOT、OUT、OUT NOT指令 • 2.END指令 • 3.NOP指令
3.2.2 AND LD和OR LD指令 • 1.AND LD指令 • 2.OR LD指令
3.2.3 SET和RESET指令 • 3.2.4 KEEP指令 • 3.2.5 DIFU和DIFD指令
3.2.6 基本编程规则和编程方法 • 1.基本编程规则 • 2.基本编程方法
3.3 常用的应用指令 • 3.3.1 IL/ILC指令 • 3.3.2 暂存继电器(TR) • 3.3.3 JMP/JME指令
使用JMP N和JME N指令时应注意以下几点: • ① 发生跳转时,JMP N和JME N之间的程序不执行,且不占用扫描时间。 • ② 发生跳转时所有继电器、定时器、计数器均保持跳转前的状态不变。 • ③ 对同一个跳转号N,JMP N/JME N 只能在程序中使用一次。但当N取00时,JMP 00/JME 00可以在程序中多次使用。 • ④ 以00作为跳转号时,指令的执行时间比其他跳转号的执行时间长,因为CPU要花时间去寻找下一个JME 00。 • ⑤ 跳转指令可以嵌套使用,但必须是不同跳转号的嵌套,如JMP 00-JMP 01-JME 01-JME 00等。
3.3.4 定时器/计数器指令 • 使用定时器/计数器时应注意以下几点: • ① 定时器和计数器同在一个TC区,它们共同使用编号000~127,所以在同一程序中它们的编号不能重复使用。 • ② 当SV为通道时(通道内数据必须是BCD数),改变通道内的数据,其设定值即改变。也可以通过外部设备拨码器来改变其设定值。 • ③ 间接寻址DM通道不存在,是指以DM的内容为地址的通道不存在。 • ④ 定时器没有掉电保持功能,计数器有掉电保持功能。 • ⑤ 当扫描时间Ts﹥0.1s时,定时器TIM会不准确;当Ts﹥0.01s时,定时器TIMH会不准确。
1.定时器(TIM) • ① 定时器的使用方法。 • ② 定时器定时时间的扩展。 • ③ 定时器的定时方式。 • 2.计数器(CNT) • ① 计数器的计数功能。 • ② 计数器的定时功能。 • ③ 计数器容量的扩展。
3.可逆计数器(CNTR) • ① 可逆计数器的计数功能。 • ② 可逆计数器的循环定时功能。 • ③ 循环计数器容量的扩展。
3.4 数据传送和数据比较指令 • 3.4.1 数据传送指令 • 1.传送指令(MOV/@MOV)和求反传送指令(MVN/@MVN) • 2.块设置指令(BSET/@BSET)
3.4.2 数据比较指令 • 1.单字比较指令(CMP) • 2.块比较指令(BCMP /@BCMP)
3.5 数据移位和数据转换指令 • 3.5.1 数据移位指令 • 1. 移位寄存器指令(SFT) • 2.可逆移位寄存器指令(SFTR/@SFTR) • 3.数字左移(SLD/@SLD)和右移位(SRD/@SRD)指令 • 4.字移位指令(WSFT/@WSFT)
3.5.2 数据转换指令 • 1.BCD码→二进制数转换指令(BIN/@BIN) • 2.二进制数→BCD码转换指令(BCD/@BCD)
3.16→4编码器指令(DMPX/@DMPX) • 使用编码指令DMPX时要注意: • ① S+3不能超过其所在区域。 • ② 要牢记控制字的内容及意义,并注意控制字的内容不能写错。
4.4→16译码指令(MLPX/@MLPX) • 使用译码指令MLPX时要注意: • ① R+3不能超过其所在区域。 • ② 要牢记控制字的内容及意义,注意控制字的内容不能写错,若C设置错误,程序将无法执行。
5.七段译码指令(SDEC/@SDEC) • 使用SDEC指令要注意: • ① 结果通道不能超过其所在区域, • ② 一次最多只能对4个数字进行译码。 • 6.ASCII码转换指令(ASC/@ASC)
3.6 数据运算指令 • 3.6.1 十进制运算指令 • 1.十进制加法运算指令(ADD/@ADD、ADDL/@ADDL)
2.十进制减法运算指令(SUB/@SUB) • 3.十进制递增(INC/@INC)、递减指令(DEC/@DEC)及乘(MUL/@MUL)、除法(DIV/@DIV)运算指令
3.6.2 二进制运算指令 • 3.6.3 逻辑运算指令
3.7 子程序控制指令 • 3.7.1 子程序调用、子程序定义/子程序返回指令 • 3.7.2 宏指令
编写子程序调用程序时要注意以下几点: • ① 所有子程序都必须放在主程序之后和END指令之前。 • ② 主程序调用各子程序的次数没有限制。 • ③ 子程序可以嵌套调用,即子程序中又调用别的子程序。但是嵌套不能超过16级,且子程序不能自调用。 • ④ 要特别注意子程序执行完毕的返回地址。
A相 B相 1 2 3 4 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 0 递减计数脉冲 计数脉冲 递增计数脉冲 (a)单相脉冲 (b)两相脉冲 图3.66 旋转编码器的输出信号波形 3.8 高速计数器控制指令 • 3.8.1 旋转编码器
3.8.2 高速计数器的计数功能 • 1. 高速计数器的计数模式 • (1)递增计数模式 • (2)增减计数模式 • 2.高速计数器的复位方式 • (1)硬件复位Z信号 + 软件复位 • (2)软件复位
3.高速计数器的设定 • 4.高速计数器的溢出 • 5.高速计数器的当前值存储区
3.8.3 高速计数器的中断功能 • 1.目标值比较中断 • 2.区域比较中断
3.8.4 高速计数器的控制指令 • (1)高速计数器的目标值比较中断 • (2)高速计数器的区域比较中断
高速计数器具有高速计数和中断功能,现归纳如下:高速计数器具有高速计数和中断功能,现归纳如下: • ① 使用高速计数器前必须进行设定,设定数据存放在DM6642中,以确定高速计数器的使用/不使用、复位方式、计数模式等。 • ② 使用高速计数器时,SR248和SR249通道已经被占用,不能再作它用。 • ③ 使用高速计数时00000~00002三个输入点被占用,不能再作它用。 • ④ 高速计数器有计数功能。 • ⑤ 高速计数器具有中断功能。 • ⑥ 高速计数器的中断处理子程序与普通子程序的编写规则相同。
3.9 脉冲输出控制指令 • (1)连续模式脉冲输出 • (2)独立模式脉冲输出 • 在使用脉冲输出指令时,要注意以下几点: • ① 同一时刻只能从一个输出点输出脉冲。 • ② 正在输出脉冲时,不能用PULS指令改变输出脉冲的个数。 • ③ 独立模式时,当达到指定脉冲数时停止脉冲输出;在连续输出模式时,将SPED指令的F设为0000、或将INI指令的C设为003,都可以使脉冲输出停止。
3.10 中断控制指令 • 3.10.1 外部输入中断功能 • 1.外部输入中断的输入点 • 2.外部输入中断的优先级
3.外部输入中断的模式 • (1)输入中断模式 • (2)计数器中断模式 • 4.外部输入中断的子程序 • 5.外部输入中断的设定
03 02 01 00 DM6628 输入点00003 ( 0:普通输入点 1:中断输入点 ) 输入点00004 ( 0:普通输入点 1:中断输入点 ) 输入点00005 ( 0:普通输入点 1:中断输入点 ) 输入点00006 ( 0:普通输入点 1:中断输入点 )
3.10.2 间隔定时器的中断功能 • 1.间隔定时器 • 2.间隔定时器的中断模式 • (1)单次中断模式 • (2)重复中断模式
3.间隔定时器的中断处理子程序 • 编写中断处理子程序应注意以下几点: • ① 在中断处理子程序内部可以定义新的中断,也可以解除中断。 • ② 在中断处理子程序内部不可以调用别的中断处理子程序。 • ③ 在中断处理子程序内部不可以调用普通子程序。 • ④ 在普通子程序中不可以调用中断处理子程序。
3.10.3 中断的优先级 • 3.10.4 中断控制指令 • 1.外部输入中断模式 • 2.外部输入的计数中断模式 • 3.间隔定时器单次中断模式 • 4.间隔定时器重复中断模式
把普通子程序与中断处理子程序的问题进行归纳。 把普通子程序与中断处理子程序的问题进行归纳。 • (1)两种子程序的相同点 • ① 子程序都必须由SBN和RET指令来定义其开始和结束。 • ② 子程序都要放在主程序之后和END之前,即子程序之后不能再写主程序。 • ③ 当SBS指令的执行条件不满足时或没产生中断时,CPU都不扫描子程序。
(2)两种子程序调用的不同之处 • ① 在子程序调用的控制方式上的区别。 • ② 两种子程序执行完毕返回地址的区别。 • ③ 用SBS调用的各子程序之间没有优先级的问题,而由于各种中断存在优先级,所以与各种中断对应的中断处理子程序在执行时有优先顺序。
(3)注意的问题 • ① 在中断处理子程序内部不可使用SBS指令,即中断处理子程序不可调用普通子程序。 • ② 不可用SBS指令去调用中断处理子程序,即普通子程序不可调用中断处理子程序。 • ③ 中断处理子程序内部不可以调用别的中断处理子程序。
3.11 步进控制指令 • 3.11.1 步进程序的结构及程序的编写规则 • 1.步进程序的基本结构 • 2.步进程序结构的几种类型
3.编写步进程序时注意的问题 • ① 各步的控制位必须同在一个区,并且前后步的控制位最好连续。 • ② 步程序段内不能使用以下几个指令:END、IL/ILC、JMP/JME、SBN。 • ③ 当SNXT(09)B执行时,将结束前一步(B-1)的执行,并复位前一步使用的定时器和数据区。 • ④ 若步的控制位使用HR、AR,则具有掉电保护功能。 • ⑤ 各步必须以前一步的结束及清除为启动条件,即不能先启动中间的步。 • ⑥ 各步的执行条件是脉冲信号,所以PLC上电即ON的执行条件无效。
3.11.2 步进程序的执行过程 • 1.顺序执行类步进程序的执行过程 • 2.选择分支执行类步进程序的执行过程 • 3.并行分支执行类步进程序的执行过程
3.12 特 殊 指 令 • 3.12.1 故障诊断指令 • 1.可继续运行的故障诊断指令(FAL/@FAL) • 2.停止运行的故障诊断指令(FALS)
3.12.2 信息显示指令 • 1.存放ASCII码的顺序 • 2.显示MSG信息的顺序 • 被显示信息的优先级取决于存放该信息的存储区的优先级,其顺序为: • ① LR→I/O→IR(除I/O外)→HR→AR→TC→DM/*DM。 • ② 同一区域内地址小的优先,间接寻址时,DM地址小的优先。 • 3.清除当前显示的MSG信息
3.12.3 I/O刷新指令 • 3.12.4 位计数指令