第5章任务编程
- 格式:doc
- 大小:361.00 KB
- 文档页数:17
第5章 任务编程以前的PLC 程序是一条一条地进行扫描执行的,在每一个循环扫描周期里,系统都要进行I/O 刷新。
因此,PLC 占用的扫描时间比较长。
目前OMRON 公司生产的CJ1系列和CS1系列的PLC ,在程序上采用模块化结构,即用标准组件创建程序,这些标准组件创建的模块程序,就是我们要说到的任务。
创建模块程序时,可用符号指定地址,以便于标准化。
PLC 的程序可由多个任务组成,其中一个为控制任务。
它可以使用TASK ON(即TKON(820))指令设置为“就绪”状态,也可以使用TASK OFF(即TKOF(821))指令设置为“等待”状态。
当一个控制任务处于“等待”状态时,该任务中的程序不执行,因此,它们的等待时间不计算到循环时间中去。
由于不执行任务中的程序不会增加循环扫描时间,可提高PLC 的总体执行性能。
本章主要介绍任务编程的特点和类型、循环任务和中断任务的一般编程方法。
5.1 任务编程概述5.1.1任务编程的特点和类型1.任务编程的结构按控制功能、操作设备类型、控制过程、程序开发或其他标准把程序进行划分,每个操作可在一个被称为“任务”的独立单元内编程,称为任务编程。
在多个任务中,控制任务用于控制其他任务的执行。
由多个任务构成的任务编程,它的一般结构框图如图5-1所示。
(a )任务的组成框图 (b )多个任务的编程框图图5-1 任务编程的结构框图在图(b )中,进入起动时任务0处于“就绪”状态,程序从任务0开始执行操作,其他任务仍然处于“等待”状态;当a 条件为O N 时,任务1进入“就绪”状态,任务2和任务3仍然处于“等待”状态。
依此类推,当d 为O N 时,任务0将进入“等待”状态,其他任务将保持现有状态。
2.任务编程的特点(1)PLC 的程序可由几个人同时编制,每个人单独设计的程序部分可以容易地组合成一个用户程序。
(2)任何一种程序可设计成一个标准化模块。
也就是说可使用标识符编程,采用总体和局部标识符进行设计,而且对局部标识符可以自动分配地址,从而提高编程效果。
(3)提高总体响应。
因为系统被分成了一个总体控制程序以及一些单独的控制程序,所以整体响应得到改进,并可按照需要执行一些特殊的程序。
(4)易于修改和调试。
因为总体任务可由几个人独立编制,并且每个独立任务都可分开修d任务0 程序改和调试;由于符号被设定成局部符号或全局符号,而且局部符号可自动分配地址,这就很容易判定一个地址是局部的还是全局的,从而便于修改和调试程序。
(5)易于切换程序。
如果有必要改变操作时,可以使用程序中的一个任务控制指令使特定的任务(程序)有效运行。
(6)易于理解用户程序。
程序以模块化为结构使得程序简单易懂,程序段的处理就像用传统的跳转指令一样,很容易理解。
3.任务的类型任务通常划分为循环任务和中断任务两大类。
中断任务可进一步划分为断电中断、定时中断、I/O中断和外部中断任务,最后两种中断仅限于CS1系列的CPU单元使用。
在使用CS1-H、CJ1-H、CJ1M 或CS1D的CPU 单元时,中断任务可在循环任务中通过TK O N指令的启动去执行,这种任务被称为“附加循环任务”。
此时,中断任务亦可作为循环任务来执行。
(1)循环任务顺序执行的任务称作周期任务,也叫做循环任务。
一个处于就绪状态的循环任务都是从最低编号开始,按顺序在每个周期循环执行一次(即都从程序的顶端开始直到END(001)指令结束)。
循环任务的最大数量为32个,故循环任务号的编号为00~31。
在使用CS1-H、CJ1-H、CJ1M 或CS1D 的CPU单元时,中断任务(即总量为256个)能像常规的循环任务一样被执行。
如果使用附加循环任务,那么循环任务的数量可达到288个。
(2)中断任务依靠中断条件执行的任务称为中断任务。
中断任务的数量有256个,则中断任务号的编号为00~255。
如果中断发生,即使当前循环任务(包括附加循环任务)正在执行,也将转去执行中断任务。
在循环周期中,只要中断条件成立,中断任务可在任何时候执行,包括在用户程序执行阶段、I/O口刷新或外设处理时,中断任务都具有高的优先处理级别。
在使用CS1-H、CJ1-H、CJ1M 或CS1D CPU单元时,中断任务能被当作循环任务执行。
CS1D 的CPU不支持中断,使用CS1D的CPU时,中断任务仅能作为附加循环任务执行。
在CJ1M的CPU单元中,是通过内置的中断输入和高速计数器输入来运行中断任务的,详情见有关CJ1系列PLC的操作手册。
5.1.2 CPU单元的基本操作图5-2所示为一个具有n个编号的任务程序段,CPU 单元将从最低号的任务(即任务0)开始依次执行循环任务。
如果中断发生,它将终止执行循环任务而去执行中断任务(如中断任务5)。
图5-2(a)的中断是作为一般中断任务使用的, 只有在中断允许时才执行中断任务;而图5-2 (b)的中断是作为附加循环任务使用的,附加循环任务号也从0递增,且顺序执行。
在图5-2中,每一个任务都有一个结束指令END。
END*1指令表示为任务1的任务结束指令;它将清除该任务的ER(错误)、EQ(等于)以及N(负)标志。
END*2是最后任务的结束指令,它将清除最后一个任务的ER、EQ和N标志,并刷新I/O。
*1,*2在这里只是标示符,仅为了区别对应于不同任务来加注的,在程序中都是用END指令。
注意:所有条件标志(ER、CY、EQ、AER(指访问错误标志CF011)等)和指令条件(内部锁存为O N等)在任务开始时都被复位,故这些条件标志不可读;而联锁/联锁解除指令(IL/ILC)指令、跳转/跳转结束(JMP/JME)指令和子程序调用/子程序进入(SBS/SBN)指令,不能分开在两个任务间使用;在小型机(如CPM2*)的PLC程序中只能有一个结束指令END,而在中型机(如CS1系列)的PLC,每一个任务都必须有一个END指令,每一个END指令作为该任务的结束标志。
可见,任务号和END个数应当匹配。
(a )图5-2 任务编程的基本操作5.1.3 循环任务的状态与转换1.循环任务的状态循环任务具有下列四种状态:禁止,就绪,运行和等待状态。
(1)“禁止”状态(INI)处于“禁止”状态下的任务不能执行,在编程(PROGRAM )模式下,所有循环任务都为“禁止”状态。
但任何循环任务一旦从“禁止”状态转换到其他状态时,如果不返回到编程(PROGRAM )模式下,都不能重新返回为“禁止”状态。
(2)“就绪”状态当任务处于“就绪”状态时,任务属性可控。
任务属性可由TASK O N 指令运行任务或在运行操作启动时运行任务。
使用TASK O N (TK O N(820))指令来运行任务时,循环任务将从“禁止”或“等待”状态切换为“就绪”状态;使用操作启动来运行任务,即在操作模式从编程(PR O GRAM)模式变为运行(RUN)模式或监控(M O NIT O R)模式时,一个操作运行循环任务可从“禁止”或“等待”状态切换为“就绪”状态。
后一种运行任务的方法仅对常规的循环任务有效。
在任务0到任务31开始操作时,可用编程工具设定一个或多个任务为" 就绪" 状态,但对附加循环任务无效。
(3)“运行”状态当处于“就绪”状态的循环任务获取执行权时(例如初始任务执行标志变为O N 时),该任务将从“就绪”状态切换为“运行”状态并开始执行任务。
循环任务0 循环任务1 循环任务n 中断 发生I/O 刷新 外围处理 中断任务5 从 最 低 的任 务 号 开 始按 序 执 行(b )(4)“等待”状态一条TASK O FF(TKOF(821))指令能把循环任务从“就绪”状态变为“等待”状态。
“等待”状态的效果相当于一个跳转(JMP/JME)指令,处于“等待”状态的任务的输出将保持不变。
在“等待”状态下不执行指令,因此PLC 系统的执行时间不增加。
不需要执行的程序在任何时候都可以被生成为任务并设为“等待”状态,以缩短PLC 的循环扫描周期。
简而言之,就是处于“等待”状态的任务在执行时将被跳过,而且在改变任务为“等待”状态时,不需要终止程序。
2.任务状态的转换综上所述,任务状态的转换可以用如图5-3表示。
图5-3 任务状态的转换5.2 使用任务5.2.1 开关任务与任务限制1.任务的开启与关闭对于循环任务来说,任务控制指令是指TASK O N 和TASK O FF 指令。
在程序中,TASK O N(TK O N(820))和TASK O FF(TK O F(821))指令是用来在“就绪”状态与“等待”状态间切换循环任务的(包括附加循环任务),其命令的梯形图如图5-4所示。
图5-4 任务控制指令的梯形图在任何时候,都可使用开启任务TASK O N(即TK O N(820))指令和任务关闭TASK O FF (即TK O F(821))指令,来改变任何循环任务的读“READY ”或写“WAIT ”状态。
一个处于READY 状态的循环任务,将在随后的周期中将保持它的状态;同样,一个处于WAIT 状态的循环任务,也将在随后的周期中保持那个状态不变。
在每个周期内至少要有一个循环任务处于“就绪”状态,否则,任务出错标志位(A29512)将变为O N ,使CPU 将停止运行。
TASK O N 和TASK O FF 指令仅适用于循环任务,不可用于中断任务。
N :任务号 N :任务号当执行条件为ON ,一个任务将进入就绪状态,并且相应的任务标志位会变为O N 。
当执行条件为ON ,一个任务将进入等待状态,并且相应的任务标志位会变为O FF 。
(a )开启任务 (b )关闭任务2. 任务的限制指令(1)必须放在同一个任务中的指令在跳转/跳转结束(JMP/JME)、条件跳转/跳转结束(CJP/JM)E、条件不满足跳转/条件跳转结束(CJPN/JME)、多重跳转/跳转结束(JMP0/JME0)、循环(FOR/NEXT)、联锁/联锁解除(IL/ILC)、子程序调用/子程序进入/子程序返回(BS/SBN/RET)、宏指令/子程序进入/返回(MCRO/SBN/RET)、程序块开始/程序块结束(BPRG/BEND)、定义步进程序(STEP S/STEP)等指令,必须放在同一任务中,任何企图在两个任务间分割这些指令,都将导致ER标志位为O N, 且指令停止执行。
(2)不允许在中断任务出现的指令任务开启(TK O N(820))、任务关闭(TK O F(821))、定义步进(STEP)、定义下一步(SNXT)、更改串口设置(STUP)、使中断禁止(DI)、使中断有效(EI)等指令,不允许在中断任务中出现。
任何企图在中断任务中使用这些指令,都将导致ER标志位变为O N,且指令停止执行。