(57)【特許請求の範囲】
【請求項１】
制御対象機器を制御する制御装置であって、
複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するタスク実行手段と、
前記タスク実行手段の動作モードを切り替えるモード切替手段とを備え、
前記タスク実行手段は、第１のモード時に各タスクにおいてユーザプログラムを実行し、第２のモード時に各タスクにおいてユーザプログラムを実行しないように構成され、
前記モード切替手段は、前記タスク実行手段により実行される前記複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記タスク実行手段の動作モードを切り替えるように構成されていること
を特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記タスク実行手段による複数のタスクの実行を管理するとともに、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるタイミングを管理する管理手段を備えること
を特徴とする制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記タスク実行手段の動作モードの切替指令を受け付ける受付手段を備え、
前記管理手段は、前記受付手段が前記切替指令を受け付けた後、前記タスク実行手段により実行される前記複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるように構成されていること
を特徴とする制御装置。
【請求項４】
請求項３に記載の制御装置であって、
ユーザプログラムを記憶する記憶部と、
前記記憶部に記憶されたユーザプログラムを編集するためのツール装置と通信する通信部とを備え、
前記受付手段は、前記ツール装置から送信される前記切替指令を、前記通信部を介して受け付けるように構成されていること
を特徴とする制御装置。
【請求項５】
請求項１から請求項４までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、複数のタスクを同時に並行して実行するように構成されていること
を特徴とする制御装置。
【請求項６】
請求項１から請求項４までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、時分割により複数のタスクを並行して実行するように構成されていること
を特徴とする制御装置。
【請求項７】
請求項１から請求項６までのいずれか一つに記載の制御装置であって、
複数のタスクは、基準のタスクと、基準のタスク以外のタスクとを含み、
前記基準のタスク以外のタスクの周期は、前記基準のタスクの周期の整数倍に設定されていること
を特徴とする制御装置。
【請求項８】
各タスクにおいてユーザプログラムを実行することにより、制御対象機器を制御する第
１のモードと、各タスクにおいてユーザプログラムを実行しない第２のモードとを備える制御装置で実行されるシステムプログラムであって、
複数のタスクを並行に各タスクに応じた周期で実行させる手順と、
実行される複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記第１のモードと前記第２のモードとの間で切り替えさせる手順と、
を前記制御装置に実行させるためのシステムプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象機器を制御する制御装置およびその制御装置で実行されるシステムプログラムに関する。
【背景技術】
【０００２】
従来、工場の生産ラインに設置される産業用機械などを制御するＰＬＣ（Programmable
Logic Controller：プログラマブルロジックコントローラ）が知られている。
【０００３】
ＰＬＣは、ＰＬＣを制御するＣＰＵユニットと、センサからの信号が入力される入力ユニットと、産業用機械などに制御信号を出力する出力ユニットとを備えている。ＣＰＵユニットは、産業用機械などを制御するためのユーザプログラムを記憶するメモリを有する。このユーザプログラムは、ＣＰＵユニットに接続されるツール装置により編集可能に構成されている。
【０００４】
そして、ＰＬＣでは、入力ユニットに入力された信号をＣＰＵユニットのメモリに取り込む処理と、ユーザプログラムを実行する処理と、ユーザプログラムの実行結果（演算結果）をメモリに書き込んで出力ユニットに送り出す処理と、ツール装置との間でデータの送受信を行うなどの周辺処理とが繰り返し行われる。これにより、ＰＬＣは、センサからの入力に基づいて産業用機械などを制御する。
【０００５】
また、従来では、パーソナルコンピュータの高度なソフトウェア機能と、ＰＬＣの信頼性とを備えるＰＡＣ（Programmable Automation Controller：プログラマブルオートメーションコントローラ）も知られている（たとえば、特許文献１参照）。
【０００６】
上記特許文献１のＰＡＣは、時分割により複数のタスクを並行して実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。すなわち、このＰＡＣでは、マルチタスクで処理が行われる。
【０００７】
このようなＰＡＣでは、各タスクにおいてユーザプログラムを実行する運転モードと、各タスクにおいてユーザプログラムを実行しないプログラムモードとを切り替え可能に構成することが考えられる。
【０００８】
なお、運転モードとは、ユーザプログラムを実行することにより、産業用機械などを実際に制御するためのモードであり、プログラムモードとは、ユーザプログラムを実行することなく、利用者がツール装置を用いてユーザプログラムを編集するためのモードである。このため、運転モードからプログラムモードに切り替えられることにより、ユーザプログラムの実行が停止され、プログラムモードから運転モードに切り替えられることにより、ユーザプログラムの実行が開始される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−１８１４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記のようなＰＡＣでは、マルチタスクで処理が行われている際に、各タスクの周期が異なることにより、モードの切り替えを適切に行うことが困難であるとい
う問題点がある。具体的には、運転モードからプログラムモードに切り替える場合において、周期の短いタスクのユーザプログラムの実行が完了していたとしても、周期の長いタスクのユーザプログラムの実行中にモードの切り替えが行われた場合には、周期の長いタスクのユーザプログラムにおいて正常な演算結果が得られないので、ＰＡＣが産業用機械などを正常に制御することができないという問題点がある。
【００１１】
本発明は、上記の課題を解決するためになされたものであり、本発明の目的は、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明による制御装置は、制御対象機器を制御する制御装置であって、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するタスク実行手段と、前記タスク実行手段の動作モードを切り替えるモード切替手段とを備え、前記タスク実行手段は、第１のモード時に各タスクにおいてユーザプログラムを実行し、第２のモード時に各タスクにおいてユーザプログラムを実行しないように構成され、前記モード切替手段は、前記タスク実行手段により実行される前記複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記タスク実行手段の動作モードを切り替えるように構成されていることを特徴とする。
【００１３】
なお、複数のタスクを並行に実行するとは、複数のタスクを同時に並行して実行する場合と、時分割により複数のタスクを並行して実行する場合とを含む。また、ユーザプログラムは、制御対象機器を制御するためのプログラムであって、第１のモードは、制御対象機器に対して制御を行う動作モードであり、第２のモードは、制御対象機器に対して制御を行わない動作モードである。
【００１４】
このように構成することによって、各タスクに応じた周期で実行される複数のタスクの実行が完了した後であって、その複数のタスクの実行サイクルが同時に開始される前（実行される複数のタスクが同期する際）に、タスク実行手段の動作モードを切り替えることにより、各タスクの周期が異なっている場合にも、各タスクのユーザプログラムの実行が中断されることがない。したがって、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことができる。その結果、各タスクのユーザプログラムにおいて正常な演算結果を得ることができるので、制御装置が制御対象機器を正常に制御することができる。
【００１５】
上記制御装置において、前記タスク実行手段による複数のタスクの実行を管理するとともに、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるタイミングを管理する管理手段を備えていてもよい。
【００１６】
このように構成すれば、管理手段により、容易に、実行される複数のタスクが同期する際に、タスク実行手段の動作モードを切り替えることができる。
【００１７】
上記管理手段を備える制御装置において、前記タスク実行手段の動作モードの切替指令を受け付ける受付手段を備え、前記管理手段は、前記受付手段が前記切替指令を受け付けた後、前記タスク実行手段により実行される前記複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記モード切替手段により前記タスク実行手段の動作モードを切り替えるように構成されていてもよい。
【００１８】
このように構成すれば、切替指令を受け付けた後において、実行される複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、タスク実行手段の動作モードを切り替えることができる。
【００１９】
この場合において、ユーザプログラムを記憶する記憶部と、前記記憶部に記憶されたユーザプログラムを編集するためのツール装置と通信する通信部とを備え、前記受付手段は、前記ツール装置から送信される前記切替指令を、前記通信部を介して受け付けるように構成されていてもよい。
【００２０】
このように構成すれば、利用者がツール装置を用いてタスク実行手段の動作モードを切り替えることができる。
【００２１】
上記制御装置において、前記タスク実行手段は、複数のタスクを同時に並行して実行するように構成されていてもよい。
【００２２】
このように構成すれば、タスクの処理能力の向上を図ることができる。
【００２３】
上記制御装置において、前記タスク実行手段は、時分割により複数のタスクを並行して実行するように構成されていてもよい。
【００２４】
このように構成すれば、タスクの処理を効率的に行うことができる。
【００２５】
上記制御装置において、複数のタスクは、基準のタスクと、基準のタスク以外のタスクとを含み、前記基準のタスク以外のタスクの周期は、前記基準のタスクの周期の整数倍に設定されていてもよい。
【００２６】
このように構成すれば、複数のタスクを同期させやすくすることができる。
【００２７】
本発明によるシステムプログラムは、各タスクにおいてユーザプログラムを実行することにより、制御対象機器を制御する第１のモードと、各タスクにおいてユーザプログラムを実行しない第２のモードとを備える制御装置で実行されるシステムプログラムであって、複数のタスクを並行に各タスクに応じた周期で実行させる手順と、実行される複数のタスクが全て完了した後であって、その複数のタスクが再び実行される前に、前記第１のモードと前記第２のモードとの間で切り替えさせる手順と、を前記制御装置に実行させるためのシステムプログラムであることを特徴とする。                                                                                
【００２８】
このように構成することによって、制御装置にマルチタスクで処理を行わせながら動作モードを適切に切り替えさせることができる。
【発明の効果】
【００２９】
本発明によれば、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１実施形態によるＣＰＵユニットを備えるＰＡＣの構成を示したハードウェアブロック図である。
【図２】図１に示したＰＡＣのＣＰＵユニットの構成を示したハードウェアブロック図である。
【図３】図２に示したＣＰＵユニットの機能ブロック図である。
【図４】図２に示したＣＰＵユニットのＲＯＭに記憶されるタスクに関する情報を説明するための図である。
【図５】本発明の第１実施形態によるＣＰＵユニットの運転モード時の動作を説明するためのタイムチャートである。
【図６】本発明の第１実施形態によるＣＰＵユニットのプログラムモード時の動作を説明するためのタイムチャートである。
【図７】本発明の第１実施形態によるＣＰＵユニットの運転モードからプログラムモードへの切り替え時の動作を説明するためのタイムチャートである。
【図８】本発明の第１実施形態によるＣＰＵユニットのプログラムモードから運転モードへの切り替え時の動作を説明するためのタイムチャートである。
【図９】本発明の第２実施形態によるＣＰＵユニットの構成を示したハードウェアブロック図である。
【図１０】図９に示したＣＰＵユニットのＲＯＭに記憶されるタスクに関する情報を説明するための図である。
【図１１】本発明の第２実施形態によるＣＰＵユニットの運転モード時の動作を説明するためのタイムチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態について図面を参照して説明する。
【００３２】
＜第１実施形態＞
まず、図１〜図４を参照して、第１実施形態によるＣＰＵユニット１を備えるＰＡＣ１００の構成について説明する。
【００３３】
ＰＡＣ１００は、図１に示すように、ＰＡＣ１００を制御するＣＰＵユニット１と、センサ５０からの信号が入力される入力ユニット２と、産業用機械などの制御対象機器６０に制御信号を出力する出力ユニット３と、他のＰＡＣ７０と通信するための通信ユニット４と、各ユニットに電力を供給する電源ユニット５と、各ユニットを接続する内部バス６とを備えている。なお、ＣＰＵユニット１は、本発明の「制御装置」の一例である。
【００３４】
ＰＡＣ１００は、タスクを実行することにより、センサ５０からの入力に基づいて制御対象機器６０を制御するように構成されている。ここで、タスクには、制御対象機器６０を制御するためのユーザプログラムの実行が含まれている。
【００３５】
ＣＰＵユニット１では、システムプログラム１２１（図２参照）がインストールされており、そのシステムプログラム１２１が実行されることによりＣＰＵユニット１の動作が制御されるように構成されている。なお、システムプログラム１２１には、入力ユニット２に入力された信号をＣＰＵユニット１に取り込む処理を実行するためのプログラムや、ＣＰＵユニット１による演算結果を出力ユニット３に送り出す処理を実行するためのプログラムなどが含まれている。
【００３６】
ＣＰＵユニット１は、図２に示すように、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、通信インターフェース（以下、「通信ＩＦ」という）１４および１５とを含んでいる。なお、ＲＯＭ１２は、本発明の「記憶部」の一例であり、通信ＩＦ１５は、本発明の「通信部」の一例である。
【００３７】
ＣＰＵ１１は、システムプログラム１２１を実行する機能を有する。ＣＰＵ１１は、シングルコアであり、時分割により複数のタスクを並行して実行するように構成されている。すなわち、ＣＰＵ１１では、マルチタスクで処理が実行される。
【００３８】
ＲＯＭ１２は、不揮発性のメモリであり、たとえば、フラッシュメモリである。ＲＯＭ１２には、システムプログラム１２１が記憶されるとともに、ＣＰＵユニット１において実行されるタスクに関する情報Ｌ１（図４参照）が記憶されている。タスクに関する情報Ｌ１には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるユーザプログラムの構成と、各タスクのユーザプログラムを構成するプ
ログラム構成単位（Program Organization Unit：ＰＯＵ）とが含まれている。また、ＣＰＵユニット１では、予め設定された時間間隔（たとえば、１ｍｓ）の制御サイクルを処理全体の共通サイクルとして採用している。なお、タスクは、優先度の値が小さいタスクが優先的に実行される。また、ユーザプログラムは、たとえば、ラダー言語で記述されている。
【００３９】
ここで、プログラム構成単位は、プログラム管理上の最小単位であり、プログラムと、ファンクションと、ファンクションブロックとを含んでいる。そして、プログラム構成単位のファンクションおよびファンクションブロックは、再利用することが可能である。すなわち、プログラム構成単位のファンクションおよびファンクションブロックは、複数のユーザプログラムで共用することが可能である。なお、ファンクションは、所定の入力値が入力された場合に、所定の入力値に対応する一定の出力値を出力する関数であり、ファンクションブロックは、内部状態を持てることにより、入力値に対する出力値が一定ではない関数である。
【００４０】
図４の例では、タスクＡは、タスクＢおよびＣよりも優先的に実行されるとともに、１ｍｓの周期で実行される。すなわち、タスクＡは、１回分の制御サイクル（１ｍｓの時間間隔）を実行サイクルとしている。また、タスクＡは、プログラムＰａ１およびＰａ２により構成されるユーザプログラムＵＰａを含んでいる。また、タスクＡには、プログラムＰａ１で利用されるファンクションブロックＦＢ１が含まれている。なお、タスクＡは、本発明の「基準のタスク」の一例である。
【００４１】
また、タスクＢは、タスクＣよりも優先的に実行されるとともに、２ｍｓの周期で実行される。すなわち、タスクＢは、２回分の制御サイクル（２ｍｓの時間間隔）を実行サイクルとしている。また、タスクＢの周期は、タスクＡの周期の整数倍（２倍）に設定されている。また、タスクＢは、プログラムＰｂ１およびＰｂ２により構成されるユーザプログラムＵＰｂを含んでいる。また、タスクＢには、プログラムＰｂ２で利用されるファンクションブロックＦＢ１が含まれている。なお、タスクＢは、本発明の「基準のタスク以外のタスク」の一例である。
【００４２】
また、タスクＣは、タスクＡおよびＢよりも劣後して実行されるとともに、４ｍｓの周期で実行される。すなわち、タスクＣは、４回分の制御サイクル（４ｍｓの時間間隔）を実行サイクルとしている。また、タスクＣの周期は、タスクＡの周期の整数倍（４倍）に設定されている。また、タスクＣは、プログラムＰｃ１により構成されるユーザプログラムＵＰｃを含んでいる。また、タスクＣには、プログラムＰｃ１で利用されるファンクションブロックＦＢ２およびＦＢ３が含まれている。なお、タスクＣは、本発明の「基準のタスク以外のタスク」の一例である。
【００４３】
また、ＲＯＭ１２には、ユーザプログラムＵＰａ〜ＵＰｃが記憶されている。このため、ＲＯＭ１２には、プログラム構成単位のプログラムＰａ１、Ｐａ２、Ｐｂ１、Ｐｂ２およびＰｃ１と、プログラム構成単位のファンクションブロックＦＢ１〜ＦＢ３とが記憶されている。
【００４４】
ＲＡＭ１３は、揮発性のメモリであり、たとえば、ＤＲＡＭである。ＲＡＭ１３は、ＣＰＵ１１により実行されるシステムプログラム１２１などを一時的に記憶する機能を有する。通信ＩＦ１４は、内部バス６に接続されており、ＣＰＵユニット１が内部バス６を介して各ユニットと通信するために設けられている。通信ＩＦ１５は、ツール装置８０に接続されており、ＣＰＵユニット１がツール装置８０と通信するために設けられている。
【００４５】
ツール装置８０は、たとえば、パーソナルコンピュータであり、ＰＡＣ１００において
実行されるユーザプログラムの作成・編集機能を有する。また、ツール装置８０は、ユーザプログラムをＰＡＣ１００からダウンロードする機能を有するとともに、ユーザプログラムをＰＡＣ１００にアップロードする機能を有する。また、ツール装置８０は、ＣＰＵユニット１の動作モードの切替指令を送信する機能を有する。
【００４６】
また、ＣＰＵユニット１は、図３に示すように、タスク実行部２１と、モード切替部２２と、受付部２３と、管理部２４とを含んでいる。なお、タスク実行部２１、モード切替部２２、受付部２３および管理部２４は、ＣＰＵ１１（図２参照）がシステムプログラム１２１を実行することにより実現される。また、タスク実行部２１は、本発明の「タスク実行手段」の一例であり、モード切替部２２は、本発明の「モード切替手段」の一例である。また、受付部２３は、本発明の「受付手段」の一例であり、管理部２４は、本発明の「管理手段」の一例である。
【００４７】
タスク実行部２１は、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。具体的には、タスク実行部２１は、時分割によりタスクＡ、ＢおよびＣを並行に実行する。また、タスク実行部２１は、タスクＡを１ｍｓの周期で実行し、タスクＢを２ｍｓの周期で実行し、タスクＣを４ｍｓの周期で実行する。
【００４８】
また、タスク実行部２１は、運転モード時に各タスクにおいてユーザプログラムを実行し、プログラムモード時に各タスクにおいてユーザプログラムを実行しないように構成されている。具体的には、タスク実行部２１は、運転モード時には、タスクＡにおいてユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａを実行し、タスクＢにおいてユーザプログラムＵＰｂおよびユーザプログラム以外のプログラムＳＰｂを実行し、タスクＣにおいてユーザプログラムＵＰｃおよびユーザプログラム以外のプログラムＳＰｃを実行する。また、タスク実行部２１は、プログラムモード時には、タスクＡにおいてユーザプログラム以外のプログラムＳＰａのみを実行し、タスクＢにおいてユーザプログラム以外のプログラムＳＰｂのみを実行し、タスクＣにおいてユーザプログラム以外のプログラムＳＰｃのみを実行する。なお、ユーザプログラム以外のプログラムＳＰａ、ＳＰｂおよびＳＰｃは、システムプログラム１２１の一部を構成するプログラムである。
【００４９】
なお、運転モードとは、ユーザプログラムを実行することにより、産業用機械などの制御対象機器６０（図１参照）を実際に制御するためのモードであり、プログラムモードとは、ユーザプログラムを実行することなく、利用者がツール装置８０（図２参照）を用いてユーザプログラムを編集するためのモードである。すなわち、運転モードは、制御対象機器６０に対して制御を行うモードであり、プログラムモードは、制御対象機器６０に対して制御を行わないモードである。このため、運転モードからプログラムモードに切り替えられることにより、ユーザプログラムの実行が停止され、プログラムモードから運転モードに切り替えられることにより、ユーザプログラムの実行が開始される。なお、運転モードは、本発明の「第１のモード」の一例であり、プログラムモードは、本発明の「第２のモード」の一例である。
【００５０】
モード切替部２２は、タスク実行部２１により実行される複数のタスクが同期する際（複数のタスクの実行サイクルが揃う際）に、動作モードを切り替えるように構成されている。なお、動作モードは、運転モードとプログラムモードとを含む。具体的には、モード切替部２２は、１ｍｓの周期で実行されるタスクＡと、２ｍｓの周期で実行されるタスクＢと、４ｍｓの周期で実行されるタスクＣとが同期する際に、動作モードを切り替える。なお、タスクが同期する際とは、各タスクに応じた周期で実行される複数のタスクの実行が完了した後であって、その複数のタスクの実行サイクルが同時に開始される前である。
【００５１】
受付部２３は、動作モードの切替指令を受け付ける機能を有する。具体的には、受付部２３は、ツール装置８０から送信される切替指令を通信ＩＦ１５（図２参照）を介して受け付ける。ここで、ツール装置８０から送信される切替指令には、運転モードからプログラムモードへの切替指令（ユーザプログラムの停止指令）と、プログラムモードから運転モードへの切替指令（ユーザプログラムの開始指令）とが含まれる。
【００５２】
管理部２４は、スケジューラであり、タスク実行部２１による複数のタスクの実行を管理するとともに、モード切替部２２により動作モードを切り替えるタイミングを管理する機能を有する。具体的には、管理部２４は、受付部２３が切替指令を受け付けた後、タスク実行部２１により実行される複数のタスクが同期する際に、モード切替部２２により動作モードを切り替えるように構成されている。
【００５３】
なお、ＣＰＵユニット１は、運転モード時において、マルチタスクで処理が行われている際にも、ユーザプログラムの編集を行うことが可能なように構成されている。すなわち、ＣＰＵユニット１は、オンラインエディットを行うことが可能なように構成されている。
【００５４】
次に、図５を参照して、第１実施形態によるＣＰＵユニット１の運転モード時の動作について説明する。なお、運転モードでは、各タスクのユーザプログラムが実行される。また、以下の動作は、ＣＰＵユニット１（図２参照）のＣＰＵ１１によりシステムプログラム１２１が実行されることにより行われる。すなわち、システムプログラム１２１は、ＣＰＵユニット１に以下の動作を実行させるためのシステムプログラムである。
【００５５】
運転モード時では、制御サイクルが開始される際に、管理部２４（図３参照）により、タスクＡ、ＢおよびＣの実行サイクルが同時に開始される。なお、タスクＡは１ｍｓの周期で実行され、タスクＢは２ｍｓの周期で実行され、タスクＣは４ｍｓの周期で実行される。
【００５６】
具体的には、まず、タスク実行部２１（図３参照）により、最も優先度の高いタスクＡの処理が開始される。このとき、タスクＢおよびＣは、タスクＡよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【００５７】
そして、タスクＡのユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が開始される。このとき、タスクＣは待機状態のままである。そして、タスクＢのユーザプログラムＵＰｂが実行される。
【００５８】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから１ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスクＢのユーザプログラムＵＰｂが中断され、タスクＡの実行が開始される。このとき、タスクＢおよびＣは待機状態である。
【００５９】
そして、タスクＡのユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、中断されたタスクＢの処理が再開される。これにより、タスクＢのユーザプログラムＵＰｂの残りとユーザプログラム以外のプログラムＳＰｂとが実行される。そして、タスクＢの処理が完了すると、タスクＣの処理が開始され、タスクＣのユーザプログラムＵＰｃが実行される。
【００６０】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスクＣのユーザプ
ログラムＵＰｃが中断され、タスクＡの実行が開始される。このとき、タスクＢの実行サイクルも経過することから、タスクＢおよびＣは待機状態である。すなわち、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡおよびＢの実行サイクルが再び同時に開始される。
【００６１】
そして、タスクＡのユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、タスクＢの処理が開始される。このとき、タスクＣは待機状態である。そして、タスクＢのユーザプログラムＵＰｂが実行される。
【００６２】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから３ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスクＢのユーザプログラムＵＰｂが中断され、タスクＡの実行が開始される。このとき、タスクＢおよびＣは待機状態である。
【００６３】
そして、タスクＡのユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、中断されたタスクＢの処理が再開される。これにより、タスクＢのユーザプログラムＵＰｂの残りとユーザプログラム以外のプログラムＳＰｂとが実行される。そして、タスクＢの処理が完了すると、中断されたタスクＣの処理が再開される。これにより、タスクＣのユーザプログラムＵＰｃの残りとユーザプログラム以外のプログラムＳＰｃとが実行される。そして、タスクＣの処理が完了した後、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから４ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＡの実行が行われる。このとき、タスクＢおよびＣの実行サイクルも経過することから、タスクＢおよびＣは待機状態である。すなわち、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから４ｍｓ経過すると、タスクＡ、ＢおよびＣの実行サイクルが再び同時に開始される。その後、上記した動作が繰り返し行われる。
【００６４】
このように、運転モードでは、タスクＡのユーザプログラムＵＰａと、タスクＢのユーザプログラムＵＰｂと、タスクＣのユーザプログラムＵＰｃとが実行されることにより、制御対象機器６０（図１参照）がＰＡＣ１００（図１参照）により制御される。
【００６５】
次に、図６を参照して、第１実施形態によるＣＰＵユニット１のプログラムモード時の動作について説明する。なお、プログラムモードでは、各タスクのユーザプログラムが実行されることなく、ユーザプログラム以外のプログラムのみが実行される。また、以下の動作は、ＣＰＵユニット１（図２参照）のＣＰＵ１１によりシステムプログラム１２１が実行されることにより行われる。すなわち、システムプログラム１２１は、ＣＰＵユニット１に以下の動作を実行させるためのシステムプログラムである。
【００６６】
プログラムモード時では、制御サイクルが開始される際に、管理部２４（図３参照）により、タスクＡ、ＢおよびＣの実行サイクルが同時に開始される。なお、タスクＡは１ｍｓの周期で実行され、タスクＢは２ｍｓの周期で実行され、タスクＣは４ｍｓの周期で実行される。
【００６７】
具体的には、まず、タスク実行部２１（図３参照）により、最も優先度の高いタスクＡの処理が開始される。このとき、タスクＢおよびＣは、タスクＡよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【００６８】
そして、タスクＡのユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が開始される。このとき
、タスクＣは待機状態のままである。
【００６９】
そして、タスクＢのユーザプログラム以外のプログラムＳＰｂが実行され、タスクＢの処理が完了すると、タスクＣの処理が開始される。その後、タスクＣのユーザプログラム以外のプログラムＳＰｃが実行され、タスクＣの処理が完了する。
【００７０】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから１ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＡの実行が行われる。これにより、タスクＡのユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了する。
【００７１】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＡの実行が行われる。これにより、タスクＡの処理が開始される。このとき、タスクＢの実行サイクルも経過することから、タスクＢは待機状態である。すなわち、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡおよびＢの実行サイクルが再び同時に開始される。
【００７２】
そして、タスクＡのユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了すると、タスクＢの処理が開始される。そして、タスクＢのユーザプログラム以外のプログラムＳＰｂが実行され、タスクＢの処理が完了する。
【００７３】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから３ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＡの実行が行われる。これにより、タスクＡのユーザプログラム以外のプログラムＳＰａが実行され、タスクＡの処理が完了する。
【００７４】
次に、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから４ｍｓ経過すると、タスクＡの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＡの実行が行われる。このとき、タスクＢおよびＣの実行サイクルも経過することから、タスクＢおよびＣは待機状態である。すなわち、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから４ｍｓ経過すると、タスクＡ、ＢおよびＣの実行サイクルが再び同時に開始される。その後、上記した動作が繰り返し行われる。
【００７５】
このように、プログラムモードでは、タスクＡのユーザプログラムＵＰａと、タスクＢのユーザプログラムＵＰｂと、タスクＣのユーザプログラムＵＰｃとが実行されることなく、利用者がツール装置８０（図２参照）を用いてユーザプログラムＵＰａ、ＵＰｂおよびＵＰｃを編集することが可能である。なお、プログラムモードでは、各タスクにおいてユーザプログラムの実行が省略されているが、各タスクは運転モードと同じ実行サイクルで実行されている。
【００７６】
次に、図７を参照して、第１実施形態によるＣＰＵユニット１の運転モードからプログラムモードへの切り替え時の動作について説明する。なお、運転モードからプログラムモードへの切り替えとは、ユーザプログラムの実行を停止することにより、ＰＡＣ１００（図１参照）による制御対象機器６０（図１参照）の制御を停止することを意味する。また、以下では、上記した運転モード中に、ツール装置８０（図２参照）から切替指令（停止指令）が送信され、通信ＩＦ１５（図２参照）が切替指令を受信することにより、受付部２３（図３参照）が切替指令を地点Ｐ１で受け付けた場合の動作について説明する。
【００７７】
また、以下の動作は、ＣＰＵユニット１（図２参照）のＣＰＵ１１によりシステムプロ
グラム１２１が実行されることにより行われる。すなわち、システムプログラム１２１は、ＣＰＵユニット１に以下の動作を実行させるためのシステムプログラムである。
【００７８】
運転モードでは、制御サイクルが開始される際に、管理部２４（図３参照）により、タスクＡ、ＢおよびＣの実行サイクルが同時に開始される。なお、このときのタスクＡ、ＢおよびＣの処理については上記した通りである。そして、受付部２３により、地点Ｐ１において切替指令が受け付けられる。
【００７９】
このため、管理部２４により、次にタスクＡ、ＢおよびＣが同期する際（タスクＡ、ＢおよびＣの実行サイクルが同時に開始される際）に、モード切替部２２（図３参照）が運転モードからプログラムモードに切り替える。すなわち、地点Ｐ２においてタスクＡ、ＢおよびＣの実行サイクルが揃う際に、運転モードからプログラムモードに切り替えられる。
【００８０】
これにより、受付部２３が切替指令を受け付けた後であっても、地点Ｐ２においてタスクＡ、ＢおよびＣの実行サイクルが同時に開始されるまでは、タスクＡのユーザプログラムＵＰａ、タスクＢのユーザプログラムＵＰｂ、および、タスクＣのユーザプログラムＵＰｃが実行される。したがって、タスクＡのユーザプログラムＵＰａ、タスクＢのユーザプログラムＵＰｂ、および、タスクＣのユーザプログラムＵＰｃの実行が途中で中断されない。
【００８１】
そして、地点Ｐ２においてタスクＡ、ＢおよびＣの実行サイクルが同時に開始される際には、プログラムモードでタスクＡ、ＢおよびＣが実行される。これにより、タスクＡにおいてはユーザプログラム以外のプログラムＳＰａのみが実行され、タスクＢにおいてはユーザプログラム以外のプログラムＳＰｂのみが実行され、タスクＣにおいてはユーザプログラム以外のプログラムＳＰｃのみが実行される。
【００８２】
次に、図８を参照して、第１実施形態によるＣＰＵユニット１のプログラムモードから運転モードへの切り替え時の動作について説明する。なお、プログラムモードから運転モードへの切り替えとは、ユーザプログラムの実行を開始することにより、ＰＡＣ１００（図１参照）による制御対象機器６０（図１参照）の制御を開始することを意味する。また、以下では、上記したプログラムモード中に、ツール装置８０（図２参照）から切替指令（開始指令）が送信され、通信ＩＦ１５（図２参照）が切替指令を受信することにより、受付部２３（図３参照）が切替指令を地点Ｐ３で受け付けた場合の動作について説明する。
【００８３】
また、以下の動作は、ＣＰＵユニット１（図２参照）のＣＰＵ１１によりシステムプログラム１２１が実行されることにより行われる。すなわち、システムプログラム１２１は、ＣＰＵユニット１に以下の動作を実行させるためのシステムプログラムである。
【００８４】
プログラムモードでは、制御サイクルが開始される際に、管理部２４（図３参照）により、タスクＡ、ＢおよびＣの実行サイクルが同時に開始される。なお、このときのタスクＡ、ＢおよびＣの処理については上記した通りである。そして、受付部２３により、地点Ｐ３において切替指令が受け付けられる。
【００８５】
このため、管理部２４により、次にタスクＡ、ＢおよびＣが同期する際（タスクＡ、ＢおよびＣの実行サイクルが同時に開始される際）に、モード切替部２２（図３参照）がプログラムモードから運転モードに切り替える。すなわち、地点Ｐ４においてタスクＡ、ＢおよびＣの実行サイクルが揃う際に、プログラムモードから運転モードに切り替えられる。
【００８６】
これにより、受付部２３が切替指令を受け付けた後であっても、地点Ｐ４においてタスクＡ、ＢおよびＣの実行サイクルが同時に開始されるまでは、タスクＡのユーザプログラムＵＰａ、タスクＢのユーザプログラムＵＰｂ、および、タスクＣのユーザプログラムＵＰｃが実行されない。したがって、たとえば、タスクＡのユーザプログラムＵＰａと、タスクＢのユーザプログラムＵＰｂとが実行され、タスクＣのユーザプログラムＵＰｃが実行されない状態が発生しない。
【００８７】
そして、地点Ｐ４においてタスクＡ、ＢおよびＣの実行サイクルが同時に開始される際には、運転モードでタスクＡ、ＢおよびＣが実行される。これにより、タスクＡにおいてはユーザプログラムＵＰａおよびユーザプログラム以外のプログラムＳＰａが実行され、タスクＢにおいてはユーザプログラムＵＰｂおよびユーザプログラム以外のプログラムＳＰｂが実行され、タスクＣにおいてはユーザプログラムＵＰｃおよびユーザプログラム以外のプログラムＳＰｃが実行される。
【００８８】
第１実施形態では、上記のように、受付部２３が切替指令を受け付けた後、実行される複数のタスク（タスクＡ、ＢおよびＣ）が同期した場合に動作モードを切り替えることによって、各タスクのユーザプログラムの実行が途中で中断されたり、一部のタスクのユーザプログラムのみが実行されたりすることがない。したがって、マルチタスクで処理が行われている際に動作モードの切り替えを適切に行うことができる。その結果、各タスクのユーザプログラムにおいて正常な演算結果を得ることができるので、ＰＡＣ１００が制御対象機器６０を正常に制御することができる。
【００８９】
また、第１実施形態では、ＣＰＵ１１が、シングルコアであり、時分割により複数のタスクを並行して実行することによって、ＣＰＵ１１の処理能力を効率的に利用することができる。
【００９０】
また、第１実施形態では、タスクＢおよびＣの周期がタスクＡの周期の整数倍であることによって、タスクＡ、ＢおよびＣを同期させやすくすることができる。
【００９１】
＜第２実施形態＞
まず、図９および図１０を参照して、第２実施形態によるＣＰＵユニット１ａの構成について説明する。なお、第１実施形態によるＣＰＵユニット１と同一部分には同一符号を付して重複する説明を省略する。
【００９２】
ＣＰＵユニット１ａでは、図９に示すように、システムプログラム１２１ａがインストールされており、そのシステムプログラム１２１ａが実行されることによりＣＰＵユニット１ａの動作が制御されるように構成されている。なお、ＣＰＵユニット１ａは、本発明の「制御装置」の一例である。
【００９３】
ＣＰＵユニット１ａは、ＣＰＵ１１ａと、ＲＯＭ１２ａと、ＲＡＭ１３と、通信ＩＦ１４および１５とを含んでいる。なお、ＲＯＭ１２ａは、本発明の「記憶部」の一例である。
【００９４】
ＣＰＵ１１ａは、システムプログラム１２１ａを実行する機能を有する。ＣＰＵ１１ａは、デュアルコアであり、複数のタスクを同時に並行して実行するように構成されている。すなわち、ＣＰＵ１１ａでは、マルチタスクで処理が実行される。なお、ＣＰＵ１１ａのその他の構成は、上記したＣＰＵ１１と同様である。
【００９５】
ＲＯＭ１２ａには、システムプログラム１２１ａが記憶されるとともに、ＣＰＵユニッ
ト１ａにおいて実行されるタスクに関する情報Ｌ２（図１０参照）が記憶されている。タスクに関する情報Ｌ２には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるユーザプログラムの構成と、各タスクのユーザプログラムを構成するプログラム構成単位とが含まれている。なお、ＲＯＭ１２ａのその他の構成は、上記したＲＯＭ１２と同様である。
【００９６】
図１０の例では、タスクＤは、タスクＥよりも優先的に実行されるとともに、１ｍｓの周期で実行される。すなわち、タスクＤは、１回分の制御サイクル（１ｍｓの時間間隔）を実行サイクルとしている。また、タスクＤは、プログラムＰｄ１およびＰｄ２により構成されるユーザプログラムＵＰｄを含んでいる。また、タスクＤには、プログラムＰｄ１で利用されるファンクションブロックＦＢ４が含まれている。なお、タスクＤは、本発明の「基準のタスク」の一例である。
【００９７】
また、タスクＥは、タスクＤよりも劣後して実行されるとともに、２ｍｓの周期で実行される。すなわち、タスクＥは、２回分の制御サイクル（２ｍｓの時間間隔）を実行サイクルとしている。また、タスクＥの周期は、タスクＤの周期の整数倍（２倍）に設定されている。また、タスクＥは、プログラムＰｅ１およびＰｅ２により構成されるユーザプログラムＵＰｅを含んでいる。また、タスクＥには、プログラムＰｅ２で利用されるファンクションブロックＦＢ４が含まれている。なお、タスクＥは、本発明の「基準のタスク以外のタスク」の一例である。
【００９８】
次に、図１１を参照して、第２実施形態によるＣＰＵユニット１ａの運転モード時の動作について説明する。なお、運転モードでは、各タスクのユーザプログラムおよびユーザプログラム以外のプログラムが実行される。また、以下の動作は、ＣＰＵユニット１ａ（図９参照）のＣＰＵ１１ａによりシステムプログラム１２１ａが実行されることにより行われる。すなわち、システムプログラム１２１ａは、ＣＰＵユニット１ａに以下の動作を実行させるためのシステムプログラムである。
【００９９】
運転モード時では、制御サイクルが開始される際に、管理部２４（図３参照）により、タスクＤおよびＥの実行サイクルが同時に開始される。なお、タスクＤは１ｍｓの周期で実行され、タスクＥは２ｍｓの周期で実行される。
【０１００】
第２実施形態によるＣＰＵユニット１ａでは、タスクＤおよびＥが並行して処理される。そして、タスクＤの処理が完了した後、タスクＤおよびＥの実行サイクルが同時に開始されてから１ｍｓ経過すると、タスクＤの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＤの実行が行われる。その後、タスクＤの処理が完了され、タスクＥの処理が完了された後、タスクＤおよびＥの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＤおよびＥの実行サイクルが経過することから、管理部２４により、タスク実行部２１によるタスクＤおよびＥの実行が再び行われる。その後、上記した動作が繰り返し行われる。
【０１０１】
なお、第２実施形態によるＣＰＵユニット１ａのプログラムモード時の動作、運転モードからプログラムモードへの切り替え時の動作、および、プログラムモードから運転モードへの切り替え時の動作は、タスクＤおよびＥが同時に並行して処理される点以外は、第１実施形態によるＣＰＵユニット１と同様である。
【０１０２】
第２実施形態では、上記のように、ＣＰＵ１１ａがデュアルコアであり、複数のタスクを同時に並行して実行することによって、タスクの処理能力の向上を図ることができる。
【０１０３】
なお、第２実施形態のその他の効果は、上記第１実施形態と同様である。
【０１０４】
なお、今回開示した実施形態は、すべての点で例示であって、限定的な解釈の根拠となるものではない。したがって、本発明の技術的範囲は、上記した実施形態のみによって解釈されるものではなく、特許請求の範囲の記載に基づいて画定される。また、本発明の技術的範囲には、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれる。
【０１０５】
たとえば、第１実施形態では、ＰＡＣ１００がＣＰＵユニット１と、入力ユニット２と、出力ユニット３と、通信ユニット４と、電源ユニット５とを備える例を示したが、これに限らず、ＰＡＣがその他のユニットを備えていてもよいし、ＰＡＣに入力ユニットや通信ユニットが設けられていなくてもよい。
【０１０６】
また、第１実施形態では、ＰＡＣ１００が複数のユニットにより構成される例を示したが、これに限らず、ＰＡＣが１つの筐体により構成され、その筐体に各ユニットの機能が組み込まれていてもよい。
【０１０７】
また、第１実施形態では、ツール装置８０から送信される切替指令を受付部２３が受け付ける例を示したが、これに限らず、通信ユニット４を介してその他のＰＡＣ７０から送信される切替指令を受付部２３が受け付けるようにしてもよい。また、ＣＰＵユニット１において実行されるユーザプログラムにより発生する切替指令を受付部２３が受け付けるようにしてもよい。
【０１０８】
また、第１実施形態では、ＣＰＵ１１がシステムプログラム１２１を実行することにより、タスク実行部２１、モード切替部２２、受付部２３および管理部２４が実現される例を示したが、これに限らず、タスク実行部２１、モード切替部２２、受付部２３および管理部２４がそれぞれハードウェアで構成されていてもよい。
【０１０９】
また、第１および第２実施形態において、タスクには、定期的に実行されるタスク（定周期タスク）に加えて、予め設定された実行条件が成立した場合に実行されるタスク（イベントタスク）が含まれていてもよい。
【０１１０】
また、第２実施形態では、ＣＰＵ１１ａがデュアルコアである例を示したが、これに限らず、たとえば、ＣＰＵがクアッドコアであってもよい。すなわち、ＣＰＵのコアの数はいくつであってもよい。
【符号の説明】
【０１１１】
１、１ａ          ＣＰＵユニット（制御装置）
１２、１２ａ      ＲＯＭ（記憶部）
１５              通信ＩＦ（通信部）
２１              タスク実行部（タスク実行手段）
２２              モード切替部（モード切替手段）
２３              受付部（受付手段）
２４              管理部（管理手段）
６０              制御対象機器
８０              ツール装置
１２１、１２１ａ  システムプログラム
【図１】
0005796311.tif 000002
【図２】
0005796311.tif 000003
【図３】
0005796311.tif 000004
【図４】
0005796311.tif 000005
【図５】
0005796311.tif 000006
【図６】
0005796311.tif 000007
【図７】
0005796311.tif 000008
【図８】
0005796311.tif 000009
【図９】
0005796311.tif 000010
【図１０】
0005796311.tif 000011
【図１１】
0005796311.tif 000012