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