第2章 任务的动作 2-1 程序和任务的概要 2-1-1 概要 2-2 2 任务的动作 2-1 程序和任务的概要 2-1-1 概要 在 CP1 中,可以将程序按功能、控制对象、工序、开发者等进行划分,分割为称为「任务」的执行单位,可将用户程序结构化。因此具有以下优点。 1.可将程序分割由多人共同开发。 可以很容易地将分割设计的各个程序归并在一个用户程序中。 2.可将程序作为模块实现标准化。 特别是通过与外围工具的如下功能组合,程序可以不依赖于特定的系统(机械・ 装置), 作为标准程序(模块)具有很高的独立性。其结果能很容易地挪用于其他系统。此外由 多人开发的程序能很容易地进行结合。 ・根据名称的编程 ・名称的全局(程序共同)/局部(程序固有)的指定 ・对「局部变量」地址的自动分配 3.提高总体的响应性能。 将系统分为总体管理程序和个别控制程序,根据需要可以仅使某个控制程序进行动作, 因此就提高了总体的响应性能。 4.修正·调试更加简便。 ・由于可以由多人分工按任务(程序)进行修正调试,因此提高了调试效率。 ・即使在规格变更等时,只需对变更部分的任务(程序)进行修正,因此维护变得简便。 ・根据 CX-Programmer,通过名称的全局/局部指定以及「局部变量」的地址自动分配功能,在调试时能够很容易地识别某个地址是程序固有的还是与其它程序共用的,另 外由于不需要进行程序间地址的重复检验,提高了调试效率。 5.程序的内务处理变得容易。 在按用户机种对程序进行变更等时,根据程序上的任务控制指令,能够按用户机种切换 需要执行的任务(程序)。 6.用户程序的理解变得容易。 通过对用户程序进行结构化编制,对传统的用转移指令的程序进行模块化,使用户程序 变得容易理解。 2-1 程序和任务的概要 2-1-1 概要 2-3 任务的动作 2 一个连续的用户程序 分割 任务 1 任务 2 任务 3 I/O 刷新 I/O 刷新 原来 CP1H 可由多人分 担 进 行 设 计、修正、 调试 能够使其为 非执行(待 机) 参 考 换言之,与传统的从程序头起对整个程序进行读取的方式相比较,任务是采用分别对各 插卡进行读取的方式。 但是 ・ 各卡读的顺序是有规定的,按由低到高的顺序进行读取。 ・ 各卡片相互之间能够指示活性/非活性。对于指定为非活性的部分,在读取时被跳过。 (活性/非活性的指示由任务控制指令来执行)。 指定活性的卡,在下个读顺序时也保持活性被读取。一旦指定为非活性的卡,只要没 有由其它卡复活(活性化),则仍然为非活性,在读时被跳过。 2-1 程序和任务的概要 2-1-2 任务和程序 2-4 2 任务的动作 2-1-2 任务和程序 最大能管理 288 个程序。各个程序按 1﹕1 分配到执行单位的任务中。任务大致可以分成以下 2 种。 1.周期执行任务 2.中断任务 在任务中所分配的各程序是分别独立的,程序前后需要各自的 END 指令。I/O 刷新在执行周期内的所有任务的程序之后执行。 程序 A 周期 执行 任务 0 周期 执行 任务 1 分配 程序 C 程序 B 分配 中断 任务 100 中断条件成立 分配 程序 D 分配 周期 执行 任务 n I/O 刷新 END END END END I/O 刷新 2-1 程序和任务的概要 2-1-3 CPU 单元的基本动作 2-5 任务的动作 2 2-1-3 CPU 单元的基本动作 CPU 单元对周期执行任务或追加任务按其编号由小到大的顺序执行。当发生中断原因时,中止该任务的执行改而执行中断任务。之后再执行被中止的任务。 END 周期执行任务 0 周期执行任务 1 I/O 刷新 外围处理 编号由低到高 的顺序进行 END 发生中断原因 中断任务 5 周期执行任务 n END 注:在任务执行的开头所有的状态标志(ER 标志、CY 标志、=标志、AER 标志等)和状态(IL中等)都被清空。因此不能跨任务读取状态标志,配置互锁/互锁清除(IL/ILC)指令、转移/转移结束(JMP/JME)指令、子程序调用/子程序输入(SBS/SBN)指令。 和周期执行任务相同,中断任务可以周期进行(被称之为「追加任务」)。 「追加任务」在执行周期执行任务(周期执行任务 No.0~31)后,按中断任务 No.(中断任务 No.0~255)由小到大的来执行。 I/O 刷新 2-1 程序和任务的概要 2-1-3 CPU 单元的基本动作 2-6 2 任务的动作 END 周期执行任务 0 I/O 刷新 外围处理 周期执行任务 按中断执行任务 No由小到大的顺序执行 按周期执行任务 No由小到大的顺序执行 追加任务 追加任务(中断任务) 周期执行任务 n END 追加任务(中断任务)No.0 END END 2-1 程序和任务的概要 2-1-4 任务的种类 2-7 任务的动作 2 2-1-4 任务的种类 在任务中有周期执行任务和中断任务 2 种。在中断任务中有定时中断、输入中断、高速计数中断、以及外部中断的 4 种。中断任务可以作为追加任务来使用。 1.周期执行任务 1 周期内 1 次(从开始到 END 指令),当任务的状态被称之为可执行状态时按任务 No.由小到大的顺序来执行。最多能使用 32 个任务(周期执行任务 No.:0~31)。在CX-Programmer 中可把程序的属性设定为「循环任务」或根据 TKON 指令来调用。 2.中断任务 发生中断原因时,即使在上述的周期执行任务/追加任务执行时,也能进行强制性中断。 在执行指令中、I/O 刷新、外围服务周期内的任意时间里,当条件成立时执行。 有以下的 4 种。 另外,中断任务也可以作为追加任务使用。 (1)输入中断(直接模式、计数模式) 在 CP1H 内置的输入接点的上升沿/下降沿(直接模式)或指定次数计数(计数模式)时,执行中断任务。 在 CP1H X/XA 型中最多为 8 个任务(中断任务 No.:140~147 固定) 在 CP1H Y 型中最多为 6 个任务(中断任务 No.:140、141、144~147 固定) (2)定时中断 通过 CP1H 的内部定时器按一定时间间隔来执行。最多为 1 个任务(中断任务 No.:2 固定) (3)高速计数中断 通过 CPU 单元的内置高速计数器来对脉冲输入进行计数,通过当前值与目标值一致或进行区域比较来执行中断任务。 用指令语言来分配中断任务 No.0~255。 (4)外部中断 在发生中断原因时,可以由用户程序来自由指定中断任务 No.(0~255)并执行。 使用 CJ 系列单元扩展时,在有来自高功能 I/O 单元、CPU 高功能单元的用户程序的要求时执行。 最多 256 个任务(中断任务 No.:0~255)。 外部中断任务的 No.和断电中断、定时中断、输入中断、高速计数器中断 No. 相同时,不管是什么条件都动作(由 OR 条件进行动作)。因此基本上请勿使 No.重复。 注:(1)~(4)的中断中断原因发生在其它的中断任务正在执行时,需等到该中断任务的执行结束之后开始执行。这时在多个的中断原因同时发生时,按中断任务 No.由小到大的顺序执行。 2-1 程序和任务的概要 2-1-4 任务的种类 2-8 2 任务的动作 3. 追加任务 能够和周期执行任务一样处理中断任务。 1 周期 1 次(从开头到 END 指令),在执行周期执行任务(周期执行任务 No.0~31)后,任务的状态为可执行状态时,按中断任务 No.(中断任务 No.0~255)由小到大的顺序执行。 最多 256 个任务(中断任务 No.:0~255)。 和周期执行任务不同,不具有「循环任务」属性。只能由 TKON 指令启动该任务。 追加任务的中断任务 No.和断电中断、定时中断、输入中断、高速计数器中断相同时,不管什么情况都动作(由 OR 条件进行动作)。因此不要把作为中断任务使用的任务 No.作为追加任务来使用。 注 1:在追加任务内,也能够使用 TKON 指令/TKOF 指令并执行。 但是这个任务在作为中断任务进行动作时,不能执行 TKON 指令/TKOF 指令 注 2:追加任务和周期执行任务有以下的不同。 项目 追加任务 周期执行任务 程序的属性「循环任务」 无 能由 CX-Programmer 来设定 任务标志 无 有(TK00~TK31 对应于周期执行 任务的任务 No.0~31) 任务初次启动标志 (A200.15)、任务启动上升沿标志(A200.14) 无 有 IR(变址寄存器)/DR(数据寄存器)的值 和中断任务一样任务启动 时值为不定。 各周期开始时的值为不 定。请务必在设置值之后 再使用。在下个周期中不 能读出在上个周期中设置 的值。 运行开始时值不定。在下个周期中 能读出在上个周期中设置的值。 2-1 程序和任务的概要 2-1-5 任务的执行条件和相关设定 2-9 任务的动作 2 2-1-5 任务的执行条件和相关设定 在这里就任务的执行条件和相关设定以及任务的状态进行说明。 ■ 任务的执行条件和相关设定 任务种类 任务 No. 执行条件 相关设定 周期执行任务 0~31 在可执行状态(程序的属性「循环任务勾选」 或根据 TKON 指令)下,取得执行权时,每 个周期 无(总是有效) 中断任务 定时中断 0 中断 2 根据 CPU 单元的内部定时器,每经过一定时 间时 ·由中断掩码设置指令(一 MSKS指令)的定时中断时间的设定(0~9999) ·PLC 系统设定的「定时中断时间单位设定」(10ms/1.0ms/0.1ms) 输入中断 0~7 中断 140~147 CPU 单元内置的输入接点上升沿时 ·由中断掩码设置指令(MSKS 指令)进行指定接点的中断掩码解 除 高速计数器 中断 中断 0~255 在 CPU 单元内置高速 计数器的目标值一致 或区域比较的条件一 致时 ·由比较表登录指令(CTBL)进行比较条件设定和分配中断任 务 No. 外部中断 中断 0~255 在根据 CJ 单元扩展使用时的高功能 I/O 单元/CPU 高功能单元的用户程序要求时 无(总是有效) 追加任务 0~255 中断 0~255 在可执行状态(只根据TKON 指令)下,取得执行权时,每个周期 无(总是有效) 2-1 程序和任务的概要 2-1-6 周期执行任务/追加任务的状态 2-10 2 任务的动作 2-1-6 周期执行任务/追加任务的状态 周期执行任务/追加任务具有以下的 4 个状态,根据条件对这 4 个状态进行转换。 1.未执行状态(INI) 一次也没有被执行的状态。在编程模式时所有的周期执行任务都为该状态。曾经转换为 其它状态的周期执行任务只要没有转为编程模式时就不能返回到该状态。 2.可被执行状态(READY) 1)按照指令执行启动的任务: 通过任务启动(TKON)指令的执行,从未执行状态或待机状态转换为该状态。 2)在运行开始时启动的任务(仅限周期执行任务): 从「程序」模式转化为「运行」或「监视」模式时,由未执行状态(INI)转换为此状态。 注:在运行开始时,可通过属性启动的任务只可能是周期执行任务。在追加任务中不可能。 根据 CX-Programmer 的「程序属性」功能,在周期执行任务 No.0~31 中能够使多个任务在运行开始时进入 Ready 状态。 3.执行状态(RUN) 在可执行状态的周期执行任务已得到执行权,处于实际执行的状态(指传统的程序执行 状态)。执行权按在该周期内可执行状态的任务 No.由小到大的顺序得到。 4.待机状态(WAIT) 根据任务执行待机(TKOF)指令,从可执行状态(RUN)转换为此状态。 参 考 使用 CX-Programmer 时,通过联机可以显示 CP 系列的各任务(程序)的 「执行中」/「停止中」的状态。 ・「执行中」(在 CX-Programmer 中的表示):是指「可执行状态(READY)」或「执行状态(RUN)」(不能识别是那种状态)。 ・ 「停止中」(在 CX-Programmer 中的表示):是指「未执行状态(INI)」或「待机状态(WAIT)」(不能识别是那种状态)。 2-1 程序和任务的概要 2-1-7 状态的转换 2-11 任务的动作 2 2-1-7 状态的转换 INI 未执行状态 READY 可执行状态 WAIT 待机状态 运行开始时 起动或 TKON 指令 TKON 指令 TKOF 指令 RUN 执行状态 得到执行权 执行结束 *1:程序的属性「运行开始时启动」只能在周期执行任务中设定(追加任务中不可)。 注:在执行状态的任务中,执行 TKOF 指令时(即使由 TKOF 指令把自身任务作为待机状态时)转换为待机状态。 参 考 待机状态与转移(JMP-JME)指令有相同的功能。待机状态的任务输出状态 被保持。 任务 A B C :待机状态 = A JMP B JMEC 转移 在待机状态中,指令不执行,因此不会增加指令的执行时间。因此可以通过对不执行的 程序区域进行任务分割,使之处于适当的待机状态,来缩短周期时间。 缩短周期时间 原来的程序 A B C D 按某个条件执行 按某个条件执行 不使用转移等指 令时,在内部执行 所有指令 A B C D 任务 注:待机状态仅仅是程序的执行被跳过,不能通过转换到这个状态使程序内部所使用的输出 OFF。 2-2 任务的使用方法 2-2-1 任务启动(TKON)/待机(TKOF)指令 2-12 2 任务的动作 2-2 任务的使用方法 2-2-1 任务启动(TKON)/待机(TKOF)指令 从程序上启动/待机周期执行任务/追加任务时,使用任务启动(TKON)/待机(TKOF)指令。 TKON N N:任务 No 输入条件为 ON 时,任务为可执行状态 在周期实行任务时,对应的任务标志同时为 ON。 TKOF N N:任务 No 输入条件为 ON 时,任务为待机状态 在周期实行任务时,对应的任务标志同时为 OFF。 根据上述指令,对是哪个任务哪个周期执行任务/追加任务,在何时发出执行可能/待 机指示方面,没有关系。 对于曾经成为可执行状态的周期执行任务/追加任务,在下个周期也为可执行状态。对 于曾经成为待机状态的周期执行任务/追加任务,在下个周期也为待机状态。 但是上述指令只在周期执行任务内可以使用。在中断任务中不能使用。 注:在各周期中必须具有一个以上的可执行状态的周期执行任务/追加任务。如果可执行状态的周 期执行任务/追加任务一个也不存在的话,任务出错标志(A295.12)就为 ON,停止 CPU 单元的运行。 例: 周期执行任务 No.0 (运行开始时起 动) 周期执行任务 No.1 周期执行任务 No.2 A TKON 1 TKON 3 TKON 2 B C 周期执行任务 No. 周期执行任务 No.3 TKOF 0 D 1)运行开始时 运行开始时,任务 No.0开始起动(可执行状态) 其它的任务为未执行状 态 周 期 执 行 任务 No.0 周期执行任 务 No.1 周期执行任 务 No.2 周期执行任 务 No.3 2)A 为 ON 时,任务No.1 开始起动(可执行状态) 其它的任务 2、3 为未执行状态 周 期 执 行 任务 No.0 周 期 执 行 任务 No.1 周期执行任 务 No.2 周期执行任 务 No.3 3)D 为 ON 时,任务No.0 自身为待机(待机状态) 其它的任务原样 周期执行任 务 No.0 周 期 执 行 任务 No.1 周期执行任 务 No.2 周期执行任 务 No.3 可执行状态 待机状态/未执行状态 2-2 任务的使用方法 2-2-1 任务启动(TKON)/待机(TKOF)指令 2-13 任务的动作 2 ■ 和循环时间的关联 曾经成为可执行(RUN)状态的周期执行任务/追加任务在下一个周期中也为可执行状态。 周期执行任务 周期执行任务 周期执行任务运 行 开 始 时超动 可 执 行 状 态 周期执行任务 可执行状 态 可 执 行 状 态 TKON 曾经成为待机状态(WAIT)的周期执行任务/追加任务在下一个周期中也为待机状态。为了从待机状态变成执行可能(RUN)状态,必须要通过 TKON 指令执行启动任务。 TKON 周期执行任务 1 周期执行任务 周期执行任务 待机 TKOF 待机 执行状态 周期执行任务 执行状态 对于自身任务,执行 TKOF 指令时,在该时点停止执行,把自身任务转换为待机状态(WAIT)。 TKOF 2 以下自身任务内的程序不被执行,变为待机 任务 2 ■ 周期执行任务/追加任务的任务 No.和周期时间的关系 ・任务 m 启动任务 n(m>n)时,在下一个周期监视任务n起动。 例:任务 No.5 启动任务 No.2 时,任务 No.2 在下一个周期起动。 ・任务 m 启动任务 n(m<n)时,在该周期内任务n被起动。 例:任务 No.2 启动任务 No.5 时,任务 No.5 在该周期内被启动。 2-2 任务的使用方法 2-2-1 任务启动(TKON)/待机(TKOF)指令 2-14 2 任务的动作 ・任务 m 使任务 n(m>n)为待机时,在下一周期任务n为待机(任务 n 在该周期内已经执行完)。 例:任务 No.5 使任务 No.2 为待机时,任务 No.2 下一个周期为待机。 ・任务 m 使任务 n(m<n)为待机时,在该周期内任务n为待机。 例:任务 No.2 要使任务 No.5 为待机时,任务 No.5 在该周期为待机。 ■ 任务和 I/O 内存的关系 ・在变址寄存器(IR)以及数据寄存器(DR)中有 2 种使用方法。 ①按各个任务分别(单独)使用的方法 ②各任务共同使用的方法 在①的方法中,在周期执行任务 1 中使用的 IR0 和在周期执行任务 2 中使用的 IR0 不相同。 在②的方法中,在周期执行任务 1 中使用的 IR0 和周期执行任务 2 中使用的 IR0 为相同。 对于变址寄存器(IR)以及数据寄存器(DR)采用①的方法还是采用②的方法由CX-Programmer 进行设定。 ・其它区域各任务共同使用。比如对于在周期执行任务 1 中使用的接点 10.00 和周期执行任务 2 中使用的接点 10.00 是指同一个接点。因此对于 IR、DR 以外的 I/O 内存区域,在任务间共同使用时,把某个任务中变更的值使用到其它任务中时,在程序上一定要 充分加以注意。 I/O 内存 和任务的关系 CIO、内部辅助继电器、数据内存等变址寄存器(IR)、 数据寄存器(DR)之外的所有部分 各任务共同使用 仅变址寄存器(IR)、 数据寄存器(DR)(注 1) 根据设定 注 1: 中断任务/追加任务启动时、IR、DR 的值为不定。因此在中断任务/追加任务内使用 IR、DR 时,必须通过 MOVR/MOVRW(变址寄存器设定)指令,在设定值之后再使用。在中断任务结束后,自动地返回到中断发生前的 IR、DR 值。 2-2 任务的使用方法 2-2-1 任务启动(TKON)/待机(TKOF)指令 2-15 任务的动作 2 ・ 任务和定时器动作的关系 TIM/TIMX 、 TIMH/TIMHX 、 TMHH/TMHHX 、 TIMW/TIMWX 、TMHW/TMHWX 的定时器编号为 T0000~T2047 时,在任务切换时也继续进行当前值的更新。另外启动定时器的任务即使为待机状态后再 启动,更新也继续进行。 因此比如启动 TIM 的任务一旦为待机状态,过一会儿再启动任务时,如果当前值为 0,在执行 TIM 指令时,到时标志为 ON(定时器到时标志的更新仅在所有指令执行时)。当前值在刷新中的话就这样继续 进行更新。 参 考 ・ 定时器编号为 T2048~T4095 时,任务保持待机状态时的当前值。 请注意 ・ 任务和状态标志的关系 在执行各任务之前状态标志全部被清空。 因此比如不能由任务 No.2 来读取任务 No.1 的最后的状态标志的状态。要读取时请使用 CCS/CCL 指令。 2-2 任务的使用方法 2-2-2 不同任务的指令的使用限制 2-16 2 任务的动作 2-2-2 不同任务的指令的使用限制 ■ 不能跨任务使用的指令 以下配对使用的指令必须配置在同一任务之内。不配置在同一任务内时 ER 标志为 ON,不能执行指令。 助记符 指令语名 JMP/JME 转移/转移结束 CJP/JME 条件转移/转移结束 CJPN/JME 条件非转移/转移结束 JMP0/JME0 多重转移/多重转移结束 FOR/NEXT 重复开始/结束 IL/ILC 互锁/互锁清除 SBS/SBN/RET 子程序调用/子程序输入/子程序返回 MCRO/SBN/RET 宏/子程序输入/子程序返回 BPRG/BEND 块程序/块程序结束 STEP S/STEP 步梯形图区域指令 ■ 在中断任务内不能使用的指令 以下的指令在中断任务内不能执行。在中断任务内执行时 ER 标志为 ON 不能执行指令。 但是把中断任务作为追加任务来使用时,能够使用以下的指令。 助记符 指令语言 TKON 任务启动 TKOF 任务执行待机 STEP 步梯形图区域 SNXT 步梯形图步进 STUP 串行端口通信设定变更 DI 中断任务执行禁止 EI 中断任务执行禁止解除 在中断任务内不能保证以下指令的动作。 定时器(TIM/TIMX) 高速定时器(TIMH/TIMHX) 超高速定时器(TMHH/TMHHX) 累计定时器(TTIM/TTIMX) 多输出定时器(MTIM/MTIMX) 长时间定时器(TIML/TIMLX) 块程序的定时器等待(TIMW/TIMWX、 高速定时器等待(TMHW/TMHWX)、 PID 控制(PID)指令 故障点检测(FPD)指令 串行通信(STUP)指令 2-2 任务的使用方法 2-2-3 任务的相关标志 2-17 任务的动作 2 2-2-3 任务的相关标志 ■ 周期执行任务相关的标志 以下的标志是周期执行任务相关标志。和追加任务无关。 ● 任务标志(TK00~TK31) 这个标志是在确认当前任务是否被执行时使用。周期执行任务为可执行状态(READY)时为 1(ON),在未执行状态(INI)或待机状态(WAIT)时为 0(OFF)。任务 No.00~31 和 TK00~TK31 项对应。 任务 No.3 未执行状态 可执行状态 周期 任务 NO.3的任务标志 TK03 周期 周期待机状态 可执行状态 ~ ~ 注:本标志对应于周期执行任务。与中断任务中不对应。为中断任务时,在运行开始后初次执行中 断任务时 A441.15 为 1(ON)。之后需要最大处理时间的中断任务 No.以 16 进制 2 位的形式保存到 A441.00~A441.07。 ● 任务初次启动标志(A200.15) 在运行中进行一次初始处理时使用。 周期执行任务从未执行状态(INI)转换为可执行状态(READY)并得到执行权,处于执行(RUN)时为 N。实际结束时为 FF。 未执行状态 可执行状态 任务初次起 动标志 任务 n 可执行状态 未执行状态 根据这个标志,周期执行任务判断自身的执行是否为初次。为初次时进行初始等处理。 初始处理 任务初次起动标志 A200.15 注:・ 即使通过 TKON 指令再一次把曾经为待机状态的周期执行任务变为可执行状态,这时由于不能识别为初次启动,因此任务初次启动标志(A200.15)不能为 ON。 ・从未执行状态变为执行状态,实际上在得到执行权之前,根据来自其它任务的 TKOF 指令使之为待机状态时,任务初次启动标志(A200.15)也不为 ON。 2-2 任务的使用方法 2-2-3 任务的相关标志 2-18 2 任务的动作 ● 任务上升沿标志(A200.14) 每次任务启动进行初始处理时使用。 在周期执行任务从待机状态(WAIT)或未执行状态(INI)变成执行状态(RUN)时为ON。 任务初次启动标志(A200.15)在从未执行状态(INI) 变成执行状态(RUN)时为 ON,对此,从待机状态(WAIT)变成执行状态(RUN)时该标志也为 ON。 未执行状态 可执行状态 任务上升沿标 志 任务 n 可执行状态 未执行状态 通过把该标志作为输入条件,能够进行任务启动时(用 TKON 指令把曾经为待机状态的周期执行任务变成可执行状态时)的初始处理。 初始处理 任务上升沿标志 A200.14 ■ 任务相关的共通标志 ● 任务出错标志(A295.12) 任务出错发生时为 1(ON)。在以下的情况下发生任务出错。 ・可执行状态(READY)的周期执行任务/追加任务在该周期内一个也不存在。 ・不存在分配给周期执行任务的程序。 (在使用外围工具 CX-Programmer 时不发生这个状态) ・不存在分配给启动的中断任务(包括追加任务)的程序。 ● 程序停止时任务 No.(A294 CH) 由于程序出错而执行停止时,用以下的值对停止位置的任务种类/任务 No.进行保存。 任务种类 A294 CH 周期执行任务 0000~001F Hex(对应任务 No.0~31) 中断任务(包括追加任务) 8000~80FF Hex(对应中断任务 No.0~255) 由此可以确认运行停止异常发生在哪个任务中。运行停止异常解除时被清除。 还有把该任务程序停止在哪个程序地址的信息保存到 A298 CH(程序地址下位)、A299 CH(程序地址上位)中。 2-2 任务的使用方法 2-2-4 任务例 2-19 任务的动作 2 2-2-4 任务例 基本上如下所示通过管理任务(运行开始时启动的周期执行任务)控制各周期执行任务 /追加任务的执行/待机。 当然各周期执行任务/追加任务可以任意把各周期执行任务/追加任务控制为执行/待 机。 A 从程序模式到运行或监视模式 运行开始时启动 周期执行任务 No.0 (全体管理任务) 周期执行任务No.1 周 期 执 行 任 务No.2 TKON 1 TKON 3 TKON 2 A B C B C TKOF 1 TKOF 2 E D 模拟处理系统任务 全体管理任务 搬运系统控制任务 异常系统监视任务 MMI 系统任务 通信系统任务 按功能分割任务示例 全体管理任务 品种 A 任务 品种 B 任务 品种 C 任务 按品种分割任务示例(内务处理) 全体管理任务 加工工序任务 组装工序任务 搬出工序任务 按工序分割任务 A 部控制任务 B 部控制任务 C 部控制任务 全体管理任务 按控制对象分割任务 开发者 A 的任务 开发者 B 的任务 开发者 C 的任务 全体管理任务 按开发者分割任务 周 期 执 行 任 务 No.3 当然也能进行上述分类的组合。(例如:按功能和工序的分类) 2-2 任务的使用方法 2-2-5 任务设计的方针 2-20 2 任务的动作 2-2-5 任务设计的方针 推荐以下述方针为基础的任务设计。 1. 对于任务分割请按以下的基准进行探讨。 1) 明确执行/非执行条件进行汇总。 2) 按外部输入输出有无进行汇总。 3) 按功能进行汇总 对于时序控制、模拟控制、人-机处理、异常处理等要尽可能地减少任务间的数据交換(提高独立性)。 4) 按执行优先级进行汇总 分通常任务/中断任务 中断 输入处理 全体管理(根据 情况包括异常处 理) 时序控制 模拟处理 人-机处理 输出处理 外部输入 外部输出 异常处理 按功能分割 优 先 级 按执行/非执行条件分割 2. 基本上要提高任务的独立性,尽可能地按减少任务任务(程序)间的数据交换那样对程序进行分割设计。 减少 3. 基本上请用全体管理(任务控制)用任务来控制各任务的执行/待机。 4. 把在周期执行任务/追加任务中优先级高的任务分配成小的任务 No.。 例如:把管理用的任务分成比各个处理用的任务小的任务 No。 5. 把优先级高的中断任务分配小的中断任务 No.。 6. 任务一旦被启动,只要没有被自身或其它的任务所指定为待机,在下一个周期之后成为可执行状态。执行按条件的任务分支处理时,请不要忘记插入对于其它任务的TKOF(任务待机)指令。 7. 在进行任务执行时的初始处理时,请使用以下标志。 ・在运行中只进行一次初始处理时:任务初次启动标志(A200.15) ・在只要任务启动就要进行初始处理时:任务上升沿标志(A200.14) 2-2 任务的使用方法 2-2-5 任务设计的方针 2-21 任务的动作 2 8. 划分任务(程序)共通时所使用的 I/O 内存和只在各任务(程序)内所使用的 I/O 内存,把只在各任务(程序)内使用的 I/O 内存的范围按各任务(程序)进行汇总并确保。 参 考 任务和块程序的关系 在 CP 系列中由用户程序全体(所有任务共通)最多可以作成 128 个被称之为「块程序」的領域。把全体作为一个块用梯形图来进行启动。其中的指令用助记符来使用。因此块 程序是梯形图和助记符型组合形式的程序领域。 在梯形图中很难写出的程序比较容易地作成条件分支和工序步进等逻辑流程。 块程序处在任务的下位层次上。通过任务把分割得到的大的单位程序进一步分割成以相 同的输入条件(ON 条件)来进行动作的小的单位模块块程序,在控制执行时使用。 任务 0 任务 1 任务 n 程序 块程序 000 块程序 n BPRG 000 BPRG 001 0.00 0.01 块程序区域 No.000 块程序区域 No.001 块程序 001 2-2 任务的使用方法 2-2-6 全局子程序(能够从多个任务中调用) 2-22 2 任务的动作 2-2-6 全局子程序(能够从多个任务中调用) 能够从某个或多个任务(周期执行任务或追加任务)中调用在特定任务(仅中断任务 No.0)中的子程序(「全局子程序」)。 根据 GSBS 指令调用全局子程序。 可指定的子程序编号为 0~1023。 全局子程序在中断任务 No.0 的程序最后(在 END 指令之前),由 GSBN 指令~GRET指令来定义。 据此可以把共通调用的子程序作为标准回路实现程序库化。 多个任务 n=0~1023 调出 调出 返回 标准电路 = 执行 全局子程序区域(共通子 程序区域) GSBN n GSBS n GSBS n 返回 中断任务 No.0 任务(周期执行任务或追加任务) GRET END 任务(周期执行任务或追加任务) 2-3 中断任务详细内容 2-3-1 中断任务种类 2-23 任务的动作 2 2-3 中断任务详细内容 2-3-1 中断任务种类 ■ 中断任务一览 中断原因 中断任务No. 中断条件 设定方法 最大点数 用途例 输入中断 0~7 140~147 计数 CPU 单元内置的中断输入接点的上升 沿/下降沿(直接模 式)或指定次数的上升 沿/下降沿(计数模 式)时 用 MSKS(中断掩码设置)指令来指定哪个输入 编号为中断有效。 8 点 想使对特定的输入接点的响 应高速化等时 高速计数 器中断 0~255 对于高速计数器的计 数当前值在目标一致 比较或区域比较的条 件成立时 用 CTBL(比较表登录)指令指定和比较条件一 起执行的中断任务 No.。 256 点 在由编码器脉冲的计数值来 定位等时 定时中断 0 2 定时(一定时间间隔) 用 MSKS(中断掩码设 置)指令来指定定时中断 时间。 PLC 系统设定的「定时中断时间单位设定」 1 点 在按一定的间隔显示运行状 况等时 外部中断 0~255 有来自 CJ 单元扩展时的高功能 I/O 单元、 CPU 高功能单元的中断要求时 无(总是有效) 256 点 使用 CJ 系列高功能单元的 功能的各种条 件中断 2-3 中断任务详细内容 2-3-1 中断任务种类 2-24 2 任务的动作 ■ 输入中断任务(中断任务 No.140~147) 在开始 CPU 单元运行,执行周期执行任务时,作为缺省,值输入中断任务为「接受禁止」。 为了使输入中断任务为接受可能在周期执行任务的程序中执行 MSKS(中断掩码设置)指令,把来自指定中断输入接点的中断设定为「接受可能」。 在输入接点时作为中断输入使用,必须事先在 PLC 系统设定中进行设定。 要求 请不要使不需要的输入中断任务变成接受可能。由于干扰等因素而使中断输 入时,由于相应的程序不存在,有可能引起程序停止异常(任务出错)。 例如:在输入接点 0.03(输入中断编号 3)上升沿时执行输入中断任务 No.143。 MSKS 113 #0000 END 周期执行任务 输入中断任务 No.143 中断 通过执行 MSKS 指令,使指定输入中断为可能(上升沿,直接模式) 输入中断编号 3 (上升沿/下降沿指定) 上升沿指定 END 周期执行任务 END MSKS 103 #0000 输入中断编号 3(中断设定) 允许中断 (直接模式) COM 01 03 05 00 02 04 06 输入接点 0.03 中断输入接点编号 输入中断编号 中断任务 No. 0.00 0 140 0.01 1 141 0.02 2 142 0.03 3 143 1.00 4 144 1.01 5 145 1.02 6 146 1.03 7 147 2-3 中断任务详细内容 2-3-1 中断任务种类 2-25 任务的动作 2 ■ 高速计数器中断任务(中断任务 No.0~255) 高速计数器中断任务依据执行在内置高速计数器比较表中所登录的(CTBL)指令,通过在指定目标值一致或区域比较条件成立时所执行的中断任务 No.,使执行变得可能。 例如. 高速计数器 0 的当前值在加法方向上与目标值一致时执行高速计数器中断任务 No.10。 END 周期执行任务 中断任务 No.10 在 CTBL指令执行中开始目标值一致比较 高速计数器编号 0 登录目标值一致比较表 开始比较动作 END 周期执行任务 END 比较表 D0 0001 ←比较个数 1 D1 2710 D2 0000 目标值 00002710 Hex(10,000) D3 000A ←比较加法方向(位 15:OFF) 中断任务 No.10(OAHex) CTBL #0000 #0000 D0 高速计数器 0 目标值 0 0 0 0 2 7 1 0 高速计数器 0当前值 比较 一致 COM 01 03 05 07 09 00 02 04 06 08 高速计数器 0 当前值 (复位输入) 高速计数器 0当前值 (减法输入) 高速计数器 0 当前值(加法输入) 2-3 中断任务详细内容 2-3-1 中断任务种类 2-26 2 任务的动作 ■ 定时中断任务(中断任务 No.2) 在开始 CPU 单元运行,执行周期执行任务时,作为缺省值,定时中断任务为「接受禁止」。 为了使定时中断任务为接受可能 1)在周期执行任务/追加任务的程序中上执行 MSKS(中断掩码设置)指令,设定指定 的定时中断的定时中断时间(周期)。 2)在 PLC 系统设定中,设定定时中断的单位时间。 请注意 当中断时间的设定过短,定时中断任务的执行频度高时,会造成周期时间变 长,给周期执行任务/追加任务带来影响。请务必注意。 例如:每秒执行定时中断任务 MSKS 14 &100 END 周期执行任务 END 周期执行任务 END 定时中断任务(中断任务 NO.2) 中断 每隔 1 秒 PLC 系统设定定时中断 单 位 时 间 =10ms(0.01 秒) 定时中断 0 由中断周期(100×10ms)起动(中断编号 14:复位开始指定) ・ 定时中断编号和中断任务 No.的对应 定时中断编号 中断任务 No. 0 2 ● PLC 系统设定 用「定时器/中断」标签的「定时中断单位时间设定」从 10/1.0/0.1ms 中选择单位时间。 名称 设定 10ms(初始值) 1.0ms 定时中断单位时间设定 0.1ms 2-3 中断任务详细内容 2-3-2 中断任务相关标志 2-27 任务的动作 2 ■ 外部中断任务(中断任务 No.0~255) 外部中断任务总是为可接受。 通过 CJ 系列高功能 I/O 单元、CJ 系列 CPU 高功能单元所具有的对于 CPU 单元的中断功能来执行中断处理。 这时在 CPU 单元侧没有特别为外部中断任务设定的项目。但是必须把指定的 No.的外部中断任务写到用户程序中。 请注意 在外部中断任务 No.0~255、定时中断任务 No.2、输入中断任务 No.140~ 147、高速计数器中断任务 No.0~255 重复时,无论是外部中断的条件还是 其它的中断条件都可以动作。因此原则上不要使 No.重复。 ● 中断任务的优先级和执行顺序 中断任务的优先级全部为同级。 为此在执行某个中断任务 A(例如:输入中断)时,即使发生其他的中断原因 B(例如:定时中断),A 的处理也不被中断。在执行终了后开始 B 的处理。 在同时发生多种类的中断原因时,按下述顺序执行中断任务。相同种类的多个原因发生 时按任务 No.由小到大的顺序执行。 输入中断(直接模式・ 计数模式)→ 高速计数器中断 → 外部中断 → 定时中断 在有可能同时发生多个中断原因的用户程序中,由于按照上述的执行顺序来执行中断任 务,因此从原因发生后到执行实际的程序为止需要时间。特别在定时中断中有可能按所 设定的时间间隔不能执行程序,因此在用户程序的设计中需要加以充分的考虑。 2-3-2 中断任务相关标志 ■ 中断任务最大值处理时间(A440 CH) 中断任务最大处理时间由 0.1ms 单位的 BIN 数据进行保存。运行开始时被清空。 ■ 最大处理时间中断任务 No.(A441 CH) 最大处理时间中断任务 No.由 BIN 数据进行保存。与任务 No.00~FF Hex 相对应为 8000 Hex~80FF Hex。 在开始运行后初次发生中断时,A441 CH 的位 15 为 1(ON)。之后在发生的中断任务内最大处理时间由 16 进制低位 2 位进行保存。运行开始时被清空。 2-3 中断任务详细内容 2-3-3 中断任务使用的注意事项 2-28 2 任务的动作 ■ 中断任务异常标志(运行继续异常)(A402.13) 在 PLC 系统设定的「中断任务异常检测的有无设定」中,已设定「检测」时,当中断任务发生异常时为 1(ON)。 ■ 中断任务异常原因标志(A426.15)/中断任务异常发生号机 No.(A426.00~A426.11) 当 A402.13 为 1(ON)时,在 A426.15 及 A426.00~A426.11 中保存以下的信息。 A402.13 中断任务异常内容 A426.15 A426.00~426.11 中断任务异常发生 (在 PLC 系统设定的「中断任务异常检测 的有无無设定」中设 定「检测」时) 在通过周期 I/O 刷新处理对 CJ系列高功能 I/O 单元进行更新时,在中断任务内对于相同单元 由 IORF 指令执行 I/O 刷新(多重刷新)时 1(ON) 多重刷新对象的 CJ 系列高功能 I/O 单元的号机 No.被保存在 BIN12 位中(号机 No.0~95:000~05F Hex) ■ 程序停止时任务 No.(A294 CH) 由于程序出错而使执行停止时,停止位置的任务种类及任务 No.由以下的值保存。 任务种类 A294 CH 中断任务 8000~80FF Hex(对应中断任务 No.0~255) 周期招待任务 0000~001F Hex(对应任务 No.0~31) 2-3-3 中断任务使用的注意事项 ■ 对 CJ 系列高功能 I/O 单元执行 IORF 指令时 在使用 CJ 系列高功能 I/O 单元的过程中由中断任务执行 IORF 指令时,请用 PLC 系统设定的高功能 I/O 单元周期刷新有无的指定,把和指定号机 No.的周期刷新设定为「无」。 在由 I/O 相关指令对 CJ 系列高功能 I/O 单元进行刷新和周期刷新中,在中断任务内由IORF 指令要对同一单元执行 I/O 刷新的话就会出现「中断任务异常」。这时不执行对于该单元的 IORF 指令(ER 标志不为 ON)。但是周期 I/O 刷新照常进行。 在把 PLC 系统设定的「中断任务异常检测的有无设定」设定成「检测」的情况下,当中断任务发生异常时,特殊辅助继电器的 A402.13(中断任务异常标志)就为 ON,同时多重刷新对象的高功能 I/O 单元的号机 No.被保存到 A426 CH(中断任务异常发生任务编号)中。 2-3 中断任务详细内容 2-3-3 中断任务使用的注意事项 2-29 任务的动作 2 在 PLC 系统设定的高功能 I/O 单元周期刷新有无的指定中设定为周期刷新无之后再执行 IORF 指令。 在 PLC 系统设定的高功能 I/O 周期刷新有无的指定中设定为周期刷新有(缺省值)之后再执行 IORF 指令。 CJ 系列高功能 I/O单元 I/O 刷新 IORF END 中断任务 D1 D2 CP1H ● PLC 系统设定 在「CPU 单元设定」标签的「CPU 执行处理」菜单内的「检测中断任务异常」复选框中进行设定。 名称 设定 设定内容 不复选 不检测中断任务的异常。 检测中断任务异 常 复选 检测到中断任务异常动作时「中断任务异常标志」(A402.13)为 ON。 ● 相关特殊辅助继电器 名称 地址 内容 中断任务异常标 志 A402.13 用周期 I/O刷新处理在对CJ系列高功能 I/O单元进行刷新过程 中,在中断任务内对于同一单元由 IORF 指令执行 I/O 刷新(多重刷新)时为 1(ON)。 中断任务异常发 生号机 No. 位 00~11 A402.13 为 ON 时,输出发生多重刷新的 CJ 系列高功能 I/O 单元的号机 No.。 中断任务异常原 因标志 A426CH 位 15 A402.13 为 ON 时,输出异常原因。 1:多重刷新 ■ 想要在由周期执行任务/追加任务进行的特定处理中禁止中断时 在 CP1 中即使在以下情况时处理也被强行中断,执行中断任务。 ・在 1 指令执行中 ・在 CPU 单元内置输入输出以及 CPM1A 扩展单元、CJ 系列高功能 I/O 单元的刷新中 ・在外围服务中 ● 在周期执行任务/追加任务和中断任务之间需要确保数据的同时性时 周期执行任务/追加任务和中断任务对同一个 I/O 内存地址进行访问过程中,在由周期执行任务/追加任务内的指令进行读出或写入时,当执行由中断任务内的指令写入或读 出处理时,相互之间的数据同时性就不能保证。 为此,请采用以下的方法使在由周期执行任务/追加任务指令的存取过程中不让中断进 入。 2-3 中断任务详细内容 2-3-3 中断任务使用的注意事项 2-30 2 任务的动作 ・在由周期执行任务/追加任务内的指令进行读出或写入处理之前,用 DI(中断任务执行禁止)指令禁止中断任务的执行。 ・在进行上述的处理之后,用 EI(中断任务执行禁止解除)指令解除中断任务执行禁止。 DI 对中断任务共用的 I/O 内存进行读写处理 EI 周期执行任务 中断任务 接受禁止 中断任务可接受 可接受中断任务的处理 但是,在执行周期执行任务/追加任务内的特定指令(网络通信指令、串行通信指令等 响应接收处理所必需的指令)的过程中如果不希望被中断时,即使采取与上述相同措施 也不能保证数据的同时性,请注意。 2-4 有关任务的外围工具操作 2-31 任务的动作 2 2-4 有关任务的外围工具操作 请注意 在新建多个周期执行任务/追加任务时请使用 CX-Programmer。 在使用CX-Programmer编制的程序的属性中,必须分配任务种类和任务No.。 ■ 在 CX-Programmer 中的操作 作为各程序的「属性」指定任务种类以及任务 No.。 程序任务的分配方法如下所示。 1 在选中任务程序的状态下选择[视图]-[属性],或通过右击从弹出菜单中选择[属性]。 2 [选择标签[一般],然后选择[任务类别](任务种类和任务 No.)。在周期执行任务时根据需要将「运行时启动任务」的复选框设为勾选。 2-4 有关任务的外围工具操作 2-32 2 |
|