説明

制御装置およびシステムプログラム

【課題】マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことが可能な制御装置を提供する。
【解決手段】CPUユニット1は、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するタスク実行部21と、動作モードを切り替えるモード切替部22とを備える。タスク実行部21は、運転モード時に各タスクにおいてユーザプログラムを実行し、プログラムモード時に各タスクにおいてユーザプログラムを実行しないように構成されている。モード切替部22は、タスク実行部21により実行される複数のタスクが同期する際に、動作モードを切り替えるように構成されている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御対象機器を制御する制御装置およびその制御装置で実行されるシステムプログラムに関する。
【背景技術】
【0002】
従来、工場の生産ラインに設置される産業用機械などを制御するPLC(Programmable
Logic Controller:プログラマブルロジックコントローラ)が知られている。
【0003】
PLCは、PLCを制御するCPUユニットと、センサからの信号が入力される入力ユニットと、産業用機械などに制御信号を出力する出力ユニットとを備えている。CPUユニットは、産業用機械などを制御するためのユーザプログラムを記憶するメモリを有する。このユーザプログラムは、CPUユニットに接続されるツール装置により編集可能に構成されている。
【0004】
そして、PLCでは、入力ユニットに入力された信号をCPUユニットのメモリに取り込む処理と、ユーザプログラムを実行する処理と、ユーザプログラムの実行結果(演算結果)をメモリに書き込んで出力ユニットに送り出す処理と、ツール装置との間でデータの送受信を行うなどの周辺処理とが繰り返し行われる。これにより、PLCは、センサからの入力に基づいて産業用機械などを制御する。
【0005】
また、従来では、パーソナルコンピュータの高度なソフトウェア機能と、PLCの信頼性とを備えるPAC(Programmable Automation Controller:プログラマブルオートメーションコントローラ)も知られている(たとえば、特許文献1参照)。
【0006】
上記特許文献1のPACは、時分割により複数のタスクを並行して実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。すなわち、このPACでは、マルチタスクで処理が行われる。
【0007】
このようなPACでは、各タスクにおいてユーザプログラムを実行する運転モードと、各タスクにおいてユーザプログラムを実行しないプログラムモードとを切り替え可能に構成することが考えられる。
【0008】
なお、運転モードとは、ユーザプログラムを実行することにより、産業用機械などを実際に制御するためのモードであり、プログラムモードとは、ユーザプログラムを実行することなく、利用者がツール装置を用いてユーザプログラムを編集するためのモードである。このため、運転モードからプログラムモードに切り替えられることにより、ユーザプログラムの実行が停止され、プログラムモードから運転モードに切り替えられることにより、ユーザプログラムの実行が開始される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2009−181443号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上記のようなPACでは、マルチタスクで処理が行われている際に、各タスクの周期が異なることにより、モードの切り替えを適切に行うことが困難であるとい
う問題点がある。具体的には、運転モードからプログラムモードに切り替える場合において、周期の短いタスクのユーザプログラムの実行が完了していたとしても、周期の長いタスクのユーザプログラムの実行中にモードの切り替えが行われた場合には、周期の長いタスクのユーザプログラムにおいて正常な演算結果が得られないので、PACが産業用機械などを正常に制御することができないという問題点がある。
【0011】
本発明は、上記の課題を解決するためになされたものであり、本発明の目的は、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することである。
【課題を解決するための手段】
【0012】
本発明による制御装置は、制御対象機器を制御する制御装置であって、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するタスク実行手段と、前記タスク実行手段の動作モードを切り替えるモード切替手段とを備え、前記タスク実行手段は、第1のモード時に各タスクにおいてユーザプログラムを実行し、第2のモード時に各タスクにおいてユーザプログラムを実行しないように構成され、前記モード切替手段は、前記タスク実行手段により実行される前記複数のタスクが同期する際に、前記タスク実行手段の動作モードを切り替えるように構成されていることを特徴とする。
【0013】
なお、複数のタスクを並行に実行するとは、複数のタスクを同時に並行して実行する場合と、時分割により複数のタスクを並行して実行する場合とを含む。また、タスクが同期する際とは、各タスクに応じた周期で実行される複数のタスクの実行が完了した後であって、その複数のタスクの実行サイクルが同時に開始される前である。また、ユーザプログラムは、制御対象機器を制御するためのプログラムであって、第1のモードは、制御対象機器に対して制御を行う動作モードであり、第2のモードは、制御対象機器に対して制御を行わない動作モードである。
【0014】
このように構成することによって、実行される複数のタスクが同期する際に、タスク実行手段の動作モードを切り替えることにより、各タスクの周期が異なっている場合にも、各タスクのユーザプログラムの実行が中断されることがない。したがって、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことができる。その結果、各タスクのユーザプログラムにおいて正常な演算結果を得ることができるので、制御装置が制御対象機器を正常に制御することができる。
【0015】
上記制御装置において、前記タスク実行手段による複数のタスクの実行を管理するとともに、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるタイミングを管理する管理手段を備えていてもよい。
【0016】
このように構成すれば、管理手段により、容易に、実行される複数のタスクが同期する際に、タスク実行手段の動作モードを切り替えることができる。
【0017】
上記管理手段を備える制御装置において、前記タスク実行手段の動作モードの切替指令を受け付ける受付手段を備え、前記管理手段は、前記受付手段が前記切替指令を受け付けた後、前記タスク実行手段により実行される前記複数のタスクが同期する際に、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるように構成されていてもよい。
【0018】
このように構成すれば、切替指令を受け付けた後、実行される複数のタスクが同期する際に、タスク実行手段の動作モードを切り替えることができる。
【0019】
この場合において、ユーザプログラムを記憶する記憶部と、前記記憶部に記憶されたユーザプログラムを編集するためのツール装置と通信する通信部とを備え、前記受付手段は、前記ツール装置から送信される前記切替指令を、前記通信部を介して受け付けるように構成されていてもよい。
【0020】
このように構成すれば、利用者がツール装置を用いてタスク実行手段の動作モードを切り替えることができる。
【0021】
上記制御装置において、前記タスク実行手段は、複数のタスクを同時に並行して実行するように構成されていてもよい。
【0022】
このように構成すれば、タスクの処理能力の向上を図ることができる。
【0023】
上記制御装置において、前記タスク実行手段は、時分割により複数のタスクを並行して実行するように構成されていてもよい。
【0024】
このように構成すれば、タスクの処理を効率的に行うことができる。
【0025】
上記制御装置において、複数のタスクは、基準のタスクと、基準のタスク以外のタスクとを含み、前記基準のタスク以外のタスクの周期は、前記基準のタスクの周期の整数倍に設定されていてもよい。
【0026】
このように構成すれば、複数のタスクを同期させやすくすることができる。
【0027】
本発明によるシステムプログラムは、各タスクにおいてユーザプログラムを実行することにより、制御対象機器を制御する第1のモードと、各タスクにおいてユーザプログラムを実行しない第2のモードとを備える制御装置で実行されるシステムプログラムであって、複数のタスクを並行に各タスクに応じた周期で実行させる手順と、実行される複数のタスクが同期する際に、前記第1のモードと前記第2のモードとの間で切り替えさせる手順と、を前記制御装置に実行させるためのシステムプログラムであることを特徴とする。
【0028】
このように構成することによって、制御装置にマルチタスクで処理を行わせながら動作モードを適切に切り替えさせることができる。
【発明の効果】
【0029】
本発明によれば、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することができる。
【図面の簡単な説明】
【0030】
【図1】本発明の第1実施形態によるCPUユニットを備えるPACの構成を示したハードウェアブロック図である。
【図2】図1に示したPACのCPUユニットの構成を示したハードウェアブロック図である。
【図3】図2に示したCPUユニットの機能ブロック図である。
【図4】図2に示したCPUユニットのROMに記憶されるタスクに関する情報を説明するための図である。
【図5】本発明の第1実施形態によるCPUユニットの運転モード時の動作を説明するためのタイムチャートである。
【図6】本発明の第1実施形態によるCPUユニットのプログラムモード時の動作を説明するためのタイムチャートである。
【図7】本発明の第1実施形態によるCPUユニットの運転モードからプログラムモードへの切り替え時の動作を説明するためのタイムチャートである。
【図8】本発明の第1実施形態によるCPUユニットのプログラムモードから運転モードへの切り替え時の動作を説明するためのタイムチャートである。
【図9】本発明の第2実施形態によるCPUユニットの構成を示したハードウェアブロック図である。
【図10】図9に示したCPUユニットのROMに記憶されるタスクに関する情報を説明するための図である。
【図11】本発明の第2実施形態によるCPUユニットの運転モード時の動作を説明するためのタイムチャートである。
【発明を実施するための形態】
【0031】
以下、本発明の実施形態について図面を参照して説明する。
【0032】
<第1実施形態>
まず、図1〜図4を参照して、第1実施形態によるCPUユニット1を備えるPAC100の構成について説明する。
【0033】
PAC100は、図1に示すように、PAC100を制御するCPUユニット1と、センサ50からの信号が入力される入力ユニット2と、産業用機械などの制御対象機器60に制御信号を出力する出力ユニット3と、他のPAC70と通信するための通信ユニット4と、各ユニットに電力を供給する電源ユニット5と、各ユニットを接続する内部バス6とを備えている。なお、CPUユニット1は、本発明の「制御装置」の一例である。
【0034】
PAC100は、タスクを実行することにより、センサ50からの入力に基づいて制御対象機器60を制御するように構成されている。ここで、タスクには、制御対象機器60を制御するためのユーザプログラムの実行が含まれている。
【0035】
CPUユニット1では、システムプログラム121(図2参照)がインストールされており、そのシステムプログラム121が実行されることによりCPUユニット1の動作が制御されるように構成されている。なお、システムプログラム121には、入力ユニット2に入力された信号をCPUユニット1に取り込む処理を実行するためのプログラムや、CPUユニット1による演算結果を出力ユニット3に送り出す処理を実行するためのプログラムなどが含まれている。
【0036】
CPUユニット1は、図2に示すように、CPU11と、ROM12と、RAM13と、通信インターフェース(以下、「通信IF」という)14および15とを含んでいる。なお、ROM12は、本発明の「記憶部」の一例であり、通信IF15は、本発明の「通信部」の一例である。
【0037】
CPU11は、システムプログラム121を実行する機能を有する。CPU11は、シングルコアであり、時分割により複数のタスクを並行して実行するように構成されている。すなわち、CPU11では、マルチタスクで処理が実行される。
【0038】
ROM12は、不揮発性のメモリであり、たとえば、フラッシュメモリである。ROM12には、システムプログラム121が記憶されるとともに、CPUユニット1において実行されるタスクに関する情報L1(図4参照)が記憶されている。タスクに関する情報L1には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるユーザプログラムの構成と、各タスクのユーザプログラムを構成するプ
ログラム構成単位(Program Organization Unit:POU)とが含まれている。また、CPUユニット1では、予め設定された時間間隔(たとえば、1ms)の制御サイクルを処理全体の共通サイクルとして採用している。なお、タスクは、優先度の値が小さいタスクが優先的に実行される。また、ユーザプログラムは、たとえば、ラダー言語で記述されている。
【0039】
ここで、プログラム構成単位は、プログラム管理上の最小単位であり、プログラムと、ファンクションと、ファンクションブロックとを含んでいる。そして、プログラム構成単位のファンクションおよびファンクションブロックは、再利用することが可能である。すなわち、プログラム構成単位のファンクションおよびファンクションブロックは、複数のユーザプログラムで共用することが可能である。なお、ファンクションは、所定の入力値が入力された場合に、所定の入力値に対応する一定の出力値を出力する関数であり、ファンクションブロックは、内部状態を持てることにより、入力値に対する出力値が一定ではない関数である。
【0040】
図4の例では、タスクAは、タスクBおよびCよりも優先的に実行されるとともに、1msの周期で実行される。すなわち、タスクAは、1回分の制御サイクル(1msの時間間隔)を実行サイクルとしている。また、タスクAは、プログラムPa1およびPa2により構成されるユーザプログラムUPaを含んでいる。また、タスクAには、プログラムPa1で利用されるファンクションブロックFB1が含まれている。なお、タスクAは、本発明の「基準のタスク」の一例である。
【0041】
また、タスクBは、タスクCよりも優先的に実行されるとともに、2msの周期で実行される。すなわち、タスクBは、2回分の制御サイクル(2msの時間間隔)を実行サイクルとしている。また、タスクBの周期は、タスクAの周期の整数倍(2倍)に設定されている。また、タスクBは、プログラムPb1およびPb2により構成されるユーザプログラムUPbを含んでいる。また、タスクBには、プログラムPb2で利用されるファンクションブロックFB1が含まれている。なお、タスクBは、本発明の「基準のタスク以外のタスク」の一例である。
【0042】
また、タスクCは、タスクAおよびBよりも劣後して実行されるとともに、4msの周期で実行される。すなわち、タスクCは、4回分の制御サイクル(4msの時間間隔)を実行サイクルとしている。また、タスクCの周期は、タスクAの周期の整数倍(4倍)に設定されている。また、タスクCは、プログラムPc1により構成されるユーザプログラムUPcを含んでいる。また、タスクCには、プログラムPc1で利用されるファンクションブロックFB2およびFB3が含まれている。なお、タスクCは、本発明の「基準のタスク以外のタスク」の一例である。
【0043】
また、ROM12には、ユーザプログラムUPa〜UPcが記憶されている。このため、ROM12には、プログラム構成単位のプログラムPa1、Pa2、Pb1、Pb2およびPc1と、プログラム構成単位のファンクションブロックFB1〜FB3とが記憶されている。
【0044】
RAM13は、揮発性のメモリであり、たとえば、DRAMである。RAM13は、CPU11により実行されるシステムプログラム121などを一時的に記憶する機能を有する。通信IF14は、内部バス6に接続されており、CPUユニット1が内部バス6を介して各ユニットと通信するために設けられている。通信IF15は、ツール装置80に接続されており、CPUユニット1がツール装置80と通信するために設けられている。
【0045】
ツール装置80は、たとえば、パーソナルコンピュータであり、PAC100において
実行されるユーザプログラムの作成・編集機能を有する。また、ツール装置80は、ユーザプログラムをPAC100からダウンロードする機能を有するとともに、ユーザプログラムをPAC100にアップロードする機能を有する。また、ツール装置80は、CPUユニット1の動作モードの切替指令を送信する機能を有する。
【0046】
また、CPUユニット1は、図3に示すように、タスク実行部21と、モード切替部22と、受付部23と、管理部24とを含んでいる。なお、タスク実行部21、モード切替部22、受付部23および管理部24は、CPU11(図2参照)がシステムプログラム121を実行することにより実現される。また、タスク実行部21は、本発明の「タスク実行手段」の一例であり、モード切替部22は、本発明の「モード切替手段」の一例である。また、受付部23は、本発明の「受付手段」の一例であり、管理部24は、本発明の「管理手段」の一例である。
【0047】
タスク実行部21は、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。具体的には、タスク実行部21は、時分割によりタスクA、BおよびCを並行に実行する。また、タスク実行部21は、タスクAを1msの周期で実行し、タスクBを2msの周期で実行し、タスクCを4msの周期で実行する。
【0048】
また、タスク実行部21は、運転モード時に各タスクにおいてユーザプログラムを実行し、プログラムモード時に各タスクにおいてユーザプログラムを実行しないように構成されている。具体的には、タスク実行部21は、運転モード時には、タスクAにおいてユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaを実行し、タスクBにおいてユーザプログラムUPbおよびユーザプログラム以外のプログラムSPbを実行し、タスクCにおいてユーザプログラムUPcおよびユーザプログラム以外のプログラムSPcを実行する。また、タスク実行部21は、プログラムモード時には、タスクAにおいてユーザプログラム以外のプログラムSPaのみを実行し、タスクBにおいてユーザプログラム以外のプログラムSPbのみを実行し、タスクCにおいてユーザプログラム以外のプログラムSPcのみを実行する。なお、ユーザプログラム以外のプログラムSPa、SPbおよびSPcは、システムプログラム121の一部を構成するプログラムである。
【0049】
なお、運転モードとは、ユーザプログラムを実行することにより、産業用機械などの制御対象機器60(図1参照)を実際に制御するためのモードであり、プログラムモードとは、ユーザプログラムを実行することなく、利用者がツール装置80(図2参照)を用いてユーザプログラムを編集するためのモードである。すなわち、運転モードは、制御対象機器60に対して制御を行うモードであり、プログラムモードは、制御対象機器60に対して制御を行わないモードである。このため、運転モードからプログラムモードに切り替えられることにより、ユーザプログラムの実行が停止され、プログラムモードから運転モードに切り替えられることにより、ユーザプログラムの実行が開始される。なお、運転モードは、本発明の「第1のモード」の一例であり、プログラムモードは、本発明の「第2のモード」の一例である。
【0050】
モード切替部22は、タスク実行部21により実行される複数のタスクが同期する際(複数のタスクの実行サイクルが揃う際)に、動作モードを切り替えるように構成されている。なお、動作モードは、運転モードとプログラムモードとを含む。具体的には、モード切替部22は、1msの周期で実行されるタスクAと、2msの周期で実行されるタスクBと、4msの周期で実行されるタスクCとが同期する際に、動作モードを切り替える。なお、タスクが同期する際とは、各タスクに応じた周期で実行される複数のタスクの実行が完了した後であって、その複数のタスクの実行サイクルが同時に開始される前である。
【0051】
受付部23は、動作モードの切替指令を受け付ける機能を有する。具体的には、受付部23は、ツール装置80から送信される切替指令を通信IF15(図2参照)を介して受け付ける。ここで、ツール装置80から送信される切替指令には、運転モードからプログラムモードへの切替指令(ユーザプログラムの停止指令)と、プログラムモードから運転モードへの切替指令(ユーザプログラムの開始指令)とが含まれる。
【0052】
管理部24は、スケジューラであり、タスク実行部21による複数のタスクの実行を管理するとともに、モード切替部22により動作モードを切り替えるタイミングを管理する機能を有する。具体的には、管理部24は、受付部23が切替指令を受け付けた後、タスク実行部21により実行される複数のタスクが同期する際に、モード切替部22により動作モードを切り替えるように構成されている。
【0053】
なお、CPUユニット1は、運転モード時において、マルチタスクで処理が行われている際にも、ユーザプログラムの編集を行うことが可能なように構成されている。すなわち、CPUユニット1は、オンラインエディットを行うことが可能なように構成されている。
【0054】
次に、図5を参照して、第1実施形態によるCPUユニット1の運転モード時の動作について説明する。なお、運転モードでは、各タスクのユーザプログラムが実行される。また、以下の動作は、CPUユニット1(図2参照)のCPU11によりシステムプログラム121が実行されることにより行われる。すなわち、システムプログラム121は、CPUユニット1に以下の動作を実行させるためのシステムプログラムである。
【0055】
運転モード時では、制御サイクルが開始される際に、管理部24(図3参照)により、タスクA、BおよびCの実行サイクルが同時に開始される。なお、タスクAは1msの周期で実行され、タスクBは2msの周期で実行され、タスクCは4msの周期で実行される。
【0056】
具体的には、まず、タスク実行部21(図3参照)により、最も優先度の高いタスクAの処理が開始される。このとき、タスクBおよびCは、タスクAよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【0057】
そして、タスクAのユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、タスクCよりも優先度が高いタスクBの処理が開始される。このとき、タスクCは待機状態のままである。そして、タスクBのユーザプログラムUPbが実行される。
【0058】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから1ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスクBのユーザプログラムUPbが中断され、タスクAの実行が開始される。このとき、タスクBおよびCは待機状態である。
【0059】
そして、タスクAのユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、中断されたタスクBの処理が再開される。これにより、タスクBのユーザプログラムUPbの残りとユーザプログラム以外のプログラムSPbとが実行される。そして、タスクBの処理が完了すると、タスクCの処理が開始され、タスクCのユーザプログラムUPcが実行される。
【0060】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから2ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスクCのユーザプ
ログラムUPcが中断され、タスクAの実行が開始される。このとき、タスクBの実行サイクルも経過することから、タスクBおよびCは待機状態である。すなわち、タスクA、BおよびCの実行サイクルが同時に開始されてから2ms経過すると、タスクAおよびBの実行サイクルが再び同時に開始される。
【0061】
そして、タスクAのユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、タスクBの処理が開始される。このとき、タスクCは待機状態である。そして、タスクBのユーザプログラムUPbが実行される。
【0062】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから3ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスクBのユーザプログラムUPbが中断され、タスクAの実行が開始される。このとき、タスクBおよびCは待機状態である。
【0063】
そして、タスクAのユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、中断されたタスクBの処理が再開される。これにより、タスクBのユーザプログラムUPbの残りとユーザプログラム以外のプログラムSPbとが実行される。そして、タスクBの処理が完了すると、中断されたタスクCの処理が再開される。これにより、タスクCのユーザプログラムUPcの残りとユーザプログラム以外のプログラムSPcとが実行される。そして、タスクCの処理が完了した後、タスクA、BおよびCの実行サイクルが同時に開始されてから4ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクAの実行が行われる。このとき、タスクBおよびCの実行サイクルも経過することから、タスクBおよびCは待機状態である。すなわち、タスクA、BおよびCの実行サイクルが同時に開始されてから4ms経過すると、タスクA、BおよびCの実行サイクルが再び同時に開始される。その後、上記した動作が繰り返し行われる。
【0064】
このように、運転モードでは、タスクAのユーザプログラムUPaと、タスクBのユーザプログラムUPbと、タスクCのユーザプログラムUPcとが実行されることにより、制御対象機器60(図1参照)がPAC100(図1参照)により制御される。
【0065】
次に、図6を参照して、第1実施形態によるCPUユニット1のプログラムモード時の動作について説明する。なお、プログラムモードでは、各タスクのユーザプログラムが実行されることなく、ユーザプログラム以外のプログラムのみが実行される。また、以下の動作は、CPUユニット1(図2参照)のCPU11によりシステムプログラム121が実行されることにより行われる。すなわち、システムプログラム121は、CPUユニット1に以下の動作を実行させるためのシステムプログラムである。
【0066】
プログラムモード時では、制御サイクルが開始される際に、管理部24(図3参照)により、タスクA、BおよびCの実行サイクルが同時に開始される。なお、タスクAは1msの周期で実行され、タスクBは2msの周期で実行され、タスクCは4msの周期で実行される。
【0067】
具体的には、まず、タスク実行部21(図3参照)により、最も優先度の高いタスクAの処理が開始される。このとき、タスクBおよびCは、タスクAよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【0068】
そして、タスクAのユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、タスクCよりも優先度が高いタスクBの処理が開始される。このとき
、タスクCは待機状態のままである。
【0069】
そして、タスクBのユーザプログラム以外のプログラムSPbが実行され、タスクBの処理が完了すると、タスクCの処理が開始される。その後、タスクCのユーザプログラム以外のプログラムSPcが実行され、タスクCの処理が完了する。
【0070】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから1ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクAの実行が行われる。これにより、タスクAのユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了する。
【0071】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから2ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクAの実行が行われる。これにより、タスクAの処理が開始される。このとき、タスクBの実行サイクルも経過することから、タスクBは待機状態である。すなわち、タスクA、BおよびCの実行サイクルが同時に開始されてから2ms経過すると、タスクAおよびBの実行サイクルが再び同時に開始される。
【0072】
そして、タスクAのユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了すると、タスクBの処理が開始される。そして、タスクBのユーザプログラム以外のプログラムSPbが実行され、タスクBの処理が完了する。
【0073】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから3ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクAの実行が行われる。これにより、タスクAのユーザプログラム以外のプログラムSPaが実行され、タスクAの処理が完了する。
【0074】
次に、タスクA、BおよびCの実行サイクルが同時に開始されてから4ms経過すると、タスクAの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクAの実行が行われる。このとき、タスクBおよびCの実行サイクルも経過することから、タスクBおよびCは待機状態である。すなわち、タスクA、BおよびCの実行サイクルが同時に開始されてから4ms経過すると、タスクA、BおよびCの実行サイクルが再び同時に開始される。その後、上記した動作が繰り返し行われる。
【0075】
このように、プログラムモードでは、タスクAのユーザプログラムUPaと、タスクBのユーザプログラムUPbと、タスクCのユーザプログラムUPcとが実行されることなく、利用者がツール装置80(図2参照)を用いてユーザプログラムUPa、UPbおよびUPcを編集することが可能である。なお、プログラムモードでは、各タスクにおいてユーザプログラムの実行が省略されているが、各タスクは運転モードと同じ実行サイクルで実行されている。
【0076】
次に、図7を参照して、第1実施形態によるCPUユニット1の運転モードからプログラムモードへの切り替え時の動作について説明する。なお、運転モードからプログラムモードへの切り替えとは、ユーザプログラムの実行を停止することにより、PAC100(図1参照)による制御対象機器60(図1参照)の制御を停止することを意味する。また、以下では、上記した運転モード中に、ツール装置80(図2参照)から切替指令(停止指令)が送信され、通信IF15(図2参照)が切替指令を受信することにより、受付部23(図3参照)が切替指令を地点P1で受け付けた場合の動作について説明する。
【0077】
また、以下の動作は、CPUユニット1(図2参照)のCPU11によりシステムプロ
グラム121が実行されることにより行われる。すなわち、システムプログラム121は、CPUユニット1に以下の動作を実行させるためのシステムプログラムである。
【0078】
運転モードでは、制御サイクルが開始される際に、管理部24(図3参照)により、タスクA、BおよびCの実行サイクルが同時に開始される。なお、このときのタスクA、BおよびCの処理については上記した通りである。そして、受付部23により、地点P1において切替指令が受け付けられる。
【0079】
このため、管理部24により、次にタスクA、BおよびCが同期する際(タスクA、BおよびCの実行サイクルが同時に開始される際)に、モード切替部22(図3参照)が運転モードからプログラムモードに切り替える。すなわち、地点P2においてタスクA、BおよびCの実行サイクルが揃う際に、運転モードからプログラムモードに切り替えられる。
【0080】
これにより、受付部23が切替指令を受け付けた後であっても、地点P2においてタスクA、BおよびCの実行サイクルが同時に開始されるまでは、タスクAのユーザプログラムUPa、タスクBのユーザプログラムUPb、および、タスクCのユーザプログラムUPcが実行される。したがって、タスクAのユーザプログラムUPa、タスクBのユーザプログラムUPb、および、タスクCのユーザプログラムUPcの実行が途中で中断されない。
【0081】
そして、地点P2においてタスクA、BおよびCの実行サイクルが同時に開始される際には、プログラムモードでタスクA、BおよびCが実行される。これにより、タスクAにおいてはユーザプログラム以外のプログラムSPaのみが実行され、タスクBにおいてはユーザプログラム以外のプログラムSPbのみが実行され、タスクCにおいてはユーザプログラム以外のプログラムSPcのみが実行される。
【0082】
次に、図8を参照して、第1実施形態によるCPUユニット1のプログラムモードから運転モードへの切り替え時の動作について説明する。なお、プログラムモードから運転モードへの切り替えとは、ユーザプログラムの実行を開始することにより、PAC100(図1参照)による制御対象機器60(図1参照)の制御を開始することを意味する。また、以下では、上記したプログラムモード中に、ツール装置80(図2参照)から切替指令(開始指令)が送信され、通信IF15(図2参照)が切替指令を受信することにより、受付部23(図3参照)が切替指令を地点P3で受け付けた場合の動作について説明する。
【0083】
また、以下の動作は、CPUユニット1(図2参照)のCPU11によりシステムプログラム121が実行されることにより行われる。すなわち、システムプログラム121は、CPUユニット1に以下の動作を実行させるためのシステムプログラムである。
【0084】
プログラムモードでは、制御サイクルが開始される際に、管理部24(図3参照)により、タスクA、BおよびCの実行サイクルが同時に開始される。なお、このときのタスクA、BおよびCの処理については上記した通りである。そして、受付部23により、地点P3において切替指令が受け付けられる。
【0085】
このため、管理部24により、次にタスクA、BおよびCが同期する際(タスクA、BおよびCの実行サイクルが同時に開始される際)に、モード切替部22(図3参照)がプログラムモードから運転モードに切り替える。すなわち、地点P4においてタスクA、BおよびCの実行サイクルが揃う際に、プログラムモードから運転モードに切り替えられる。
【0086】
これにより、受付部23が切替指令を受け付けた後であっても、地点P4においてタスクA、BおよびCの実行サイクルが同時に開始されるまでは、タスクAのユーザプログラムUPa、タスクBのユーザプログラムUPb、および、タスクCのユーザプログラムUPcが実行されない。したがって、たとえば、タスクAのユーザプログラムUPaと、タスクBのユーザプログラムUPbとが実行され、タスクCのユーザプログラムUPcが実行されない状態が発生しない。
【0087】
そして、地点P4においてタスクA、BおよびCの実行サイクルが同時に開始される際には、運転モードでタスクA、BおよびCが実行される。これにより、タスクAにおいてはユーザプログラムUPaおよびユーザプログラム以外のプログラムSPaが実行され、タスクBにおいてはユーザプログラムUPbおよびユーザプログラム以外のプログラムSPbが実行され、タスクCにおいてはユーザプログラムUPcおよびユーザプログラム以外のプログラムSPcが実行される。
【0088】
第1実施形態では、上記のように、受付部23が切替指令を受け付けた後、実行される複数のタスク(タスクA、BおよびC)が同期した場合に動作モードを切り替えることによって、各タスクのユーザプログラムの実行が途中で中断されたり、一部のタスクのユーザプログラムのみが実行されたりすることがない。したがって、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことができる。その結果、各タスクのユーザプログラムにおいて正常な演算結果を得ることができるので、PAC100が制御対象機器60を正常に制御することができる。
【0089】
また、第1実施形態では、CPU11が、シングルコアであり、時分割により複数のタスクを並行して実行することによって、CPU11の処理能力を効率的に利用することができる。
【0090】
また、第1実施形態では、タスクBおよびCの周期がタスクAの周期の整数倍であることによって、タスクA、BおよびCを同期させやすくすることができる。
【0091】
<第2実施形態>
まず、図9および図10を参照して、第2実施形態によるCPUユニット1aの構成について説明する。なお、第1実施形態によるCPUユニット1と同一部分には同一符号を付して重複する説明を省略する。
【0092】
CPUユニット1aでは、図9に示すように、システムプログラム121aがインストールされており、そのシステムプログラム121aが実行されることによりCPUユニット1aの動作が制御されるように構成されている。なお、CPUユニット1aは、本発明の「制御装置」の一例である。
【0093】
CPUユニット1aは、CPU11aと、ROM12aと、RAM13と、通信IF14および15とを含んでいる。なお、ROM12aは、本発明の「記憶部」の一例である。
【0094】
CPU11aは、システムプログラム121aを実行する機能を有する。CPU11aは、デュアルコアであり、複数のタスクを同時に並行して実行するように構成されている。すなわち、CPU11aでは、マルチタスクで処理が実行される。なお、CPU11aのその他の構成は、上記したCPU11と同様である。
【0095】
ROM12aには、システムプログラム121aが記憶されるとともに、CPUユニッ
ト1aにおいて実行されるタスクに関する情報L2(図10参照)が記憶されている。タスクに関する情報L2には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるユーザプログラムの構成と、各タスクのユーザプログラムを構成するプログラム構成単位とが含まれている。なお、ROM12aのその他の構成は、上記したROM12と同様である。
【0096】
図10の例では、タスクDは、タスクEよりも優先的に実行されるとともに、1msの周期で実行される。すなわち、タスクDは、1回分の制御サイクル(1msの時間間隔)を実行サイクルとしている。また、タスクDは、プログラムPd1およびPd2により構成されるユーザプログラムUPdを含んでいる。また、タスクDには、プログラムPd1で利用されるファンクションブロックFB4が含まれている。なお、タスクDは、本発明の「基準のタスク」の一例である。
【0097】
また、タスクEは、タスクDよりも劣後して実行されるとともに、2msの周期で実行される。すなわち、タスクEは、2回分の制御サイクル(2msの時間間隔)を実行サイクルとしている。また、タスクEの周期は、タスクDの周期の整数倍(2倍)に設定されている。また、タスクEは、プログラムPe1およびPe2により構成されるユーザプログラムUPeを含んでいる。また、タスクEには、プログラムPe2で利用されるファンクションブロックFB4が含まれている。なお、タスクEは、本発明の「基準のタスク以外のタスク」の一例である。
【0098】
次に、図11を参照して、第2実施形態によるCPUユニット1aの運転モード時の動作について説明する。なお、運転モードでは、各タスクのユーザプログラムおよびユーザプログラム以外のプログラムが実行される。また、以下の動作は、CPUユニット1a(図9参照)のCPU11aによりシステムプログラム121aが実行されることにより行われる。すなわち、システムプログラム121aは、CPUユニット1aに以下の動作を実行させるためのシステムプログラムである。
【0099】
運転モード時では、制御サイクルが開始される際に、管理部24(図3参照)により、タスクDおよびEの実行サイクルが同時に開始される。なお、タスクDは1msの周期で実行され、タスクEは2msの周期で実行される。
【0100】
第2実施形態によるCPUユニット1aでは、タスクDおよびEが並行して処理される。そして、タスクDの処理が完了した後、タスクDおよびEの実行サイクルが同時に開始されてから1ms経過すると、タスクDの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクDの実行が行われる。その後、タスクDの処理が完了され、タスクEの処理が完了された後、タスクDおよびEの実行サイクルが同時に開始されてから2ms経過すると、タスクDおよびEの実行サイクルが経過することから、管理部24により、タスク実行部21によるタスクDおよびEの実行が再び行われる。その後、上記した動作が繰り返し行われる。
【0101】
なお、第2実施形態によるCPUユニット1aのプログラムモード時の動作、運転モードからプログラムモードへの切り替え時の動作、および、プログラムモードから運転モードへの切り替え時の動作は、タスクDおよびEが同時に並行して処理される点以外は、第1実施形態によるCPUユニット1と同様である。
【0102】
第2実施形態では、上記のように、CPU11aがデュアルコアであり、複数のタスクを同時に並行して実行することによって、タスクの処理能力の向上を図ることができる。
【0103】
なお、第2実施形態のその他の効果は、上記第1実施形態と同様である。
【0104】
なお、今回開示した実施形態は、すべての点で例示であって、限定的な解釈の根拠となるものではない。したがって、本発明の技術的範囲は、上記した実施形態のみによって解釈されるものではなく、特許請求の範囲の記載に基づいて画定される。また、本発明の技術的範囲には、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれる。
【0105】
たとえば、第1実施形態では、PAC100がCPUユニット1と、入力ユニット2と、出力ユニット3と、通信ユニット4と、電源ユニット5とを備える例を示したが、これに限らず、PACがその他のユニットを備えていてもよいし、PACに入力ユニットや通信ユニットが設けられていなくてもよい。
【0106】
また、第1実施形態では、PAC100が複数のユニットにより構成される例を示したが、これに限らず、PACが1つの筐体により構成され、その筐体に各ユニットの機能が組み込まれていてもよい。
【0107】
また、第1実施形態では、ツール装置80から送信される切替指令を受付部23が受け付ける例を示したが、これに限らず、通信ユニット4を介してその他のPAC70から送信される切替指令を受付部23が受け付けるようにしてもよい。また、CPUユニット1において実行されるユーザプログラムにより発生する切替指令を受付部23が受け付けるようにしてもよい。
【0108】
また、第1実施形態では、CPU11がシステムプログラム121を実行することにより、タスク実行部21、モード切替部22、受付部23および管理部24が実現される例を示したが、これに限らず、タスク実行部21、モード切替部22、受付部23および管理部24がそれぞれハードウェアで構成されていてもよい。
【0109】
また、第1および第2実施形態において、タスクには、定期的に実行されるタスク(定周期タスク)に加えて、予め設定された実行条件が成立した場合に実行されるタスク(イベントタスク)が含まれていてもよい。
【0110】
また、第2実施形態では、CPU11aがデュアルコアである例を示したが、これに限らず、たとえば、CPUがクアッドコアであってもよい。すなわち、CPUのコアの数はいくつであってもよい。
【符号の説明】
【0111】
1、1a CPUユニット(制御装置)
12、12a ROM(記憶部)
15 通信IF(通信部)
21 タスク実行部(タスク実行手段)
22 モード切替部(モード切替手段)
23 受付部(受付手段)
24 管理部(管理手段)
60 制御対象機器
80 ツール装置
121、121a システムプログラム

【特許請求の範囲】
【請求項1】
制御対象機器を制御する制御装置であって、
複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するタスク実行手段と、
前記タスク実行手段の動作モードを切り替えるモード切替手段とを備え、
前記タスク実行手段は、第1のモード時に各タスクにおいてユーザプログラムを実行し、第2のモード時に各タスクにおいてユーザプログラムを実行しないように構成され、
前記モード切替手段は、前記タスク実行手段により実行される前記複数のタスクが同期する際に、前記タスク実行手段の動作モードを切り替えるように構成されていること
を特徴とする制御装置。
【請求項2】
請求項1に記載の制御装置であって、
前記タスク実行手段による複数のタスクの実行を管理するとともに、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるタイミングを管理する管理手段を備えること
を特徴とする制御装置。
【請求項3】
請求項2に記載の制御装置であって、
前記タスク実行手段の動作モードの切替指令を受け付ける受付手段を備え、
前記管理手段は、前記受付手段が前記切替指令を受け付けた後、前記タスク実行手段により実行される前記複数のタスクが同期する際に、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるように構成されていること
を特徴とする制御装置。
【請求項4】
請求項3に記載の制御装置であって、
ユーザプログラムを記憶する記憶部と、
前記記憶部に記憶されたユーザプログラムを編集するためのツール装置と通信する通信部とを備え、
前記受付手段は、前記ツール装置から送信される前記切替指令を、前記通信部を介して受け付けるように構成されていること
を特徴とする制御装置。
【請求項5】
請求項1から請求項4までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、複数のタスクを同時に並行して実行するように構成されていること
を特徴とする制御装置。
【請求項6】
請求項1から請求項4までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、時分割により複数のタスクを並行して実行するように構成されていること
を特徴とする制御装置。
【請求項7】
請求項1から請求項6までのいずれか一つに記載の制御装置であって、
複数のタスクは、基準のタスクと、基準のタスク以外のタスクとを含み、
前記基準のタスク以外のタスクの周期は、前記基準のタスクの周期の整数倍に設定されていること
を特徴とする制御装置。
【請求項8】
各タスクにおいてユーザプログラムを実行することにより、制御対象機器を制御する第
1のモードと、各タスクにおいてユーザプログラムを実行しない第2のモードとを備える制御装置で実行されるシステムプログラムであって、
複数のタスクを並行に各タスクに応じた周期で実行させる手順と、
実行される複数のタスクが同期する際に、前記第1のモードと前記第2のモードとの間で切り替えさせる手順と、
を前記制御装置に実行させるためのシステムプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−194682(P2012−194682A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−56871(P2011−56871)
【出願日】平成23年3月15日(2011.3.15)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】