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