説明

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

【課題】マルチタスクで処理が行われている際にユーザプログラムの更新を行うことが可能な制御装置を提供する。
【解決手段】CPUユニット1は、POUを含むユーザプログラムを記憶するROM12と、ユーザプログラムを含むタスクを実行するとともに、ROM12に記憶されたPOUを更新するCPU11とを備える。CPU11は、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。また、CPU11は、実行される複数のタスクが完了してから複数のタスクが再び実行されるまでの間に、ROM12に記憶されたPOUを更新するように構成されている。

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

【特許請求の範囲】
【請求項1】
制御対象機器を制御する制御装置であって、
プログラム構成単位を含むユーザプログラムを記憶する第1記憶手段と、
前記ユーザプログラムを含むタスクを実行するタスク実行手段と、
前記第1記憶手段に記憶されたプログラム構成単位を更新する更新手段とを備え、
前記タスク実行手段は、複数のタスクを並行に実行するとともに、各タスクを各タスクに応じた周期で実行するように構成され、
前記更新手段は、前記タスク実行手段による複数のタスクの実行が完了してから、前記タスク実行手段により前記複数のタスクが再び実行されるまでの間に、前記第1記憶手段に記憶されたプログラム構成単位を更新するように構成されていること
を特徴とする制御装置。
【請求項2】
請求項1に記載の制御装置であって、
前記更新手段は、前記タスク実行手段により実行される全てのタスクが完了してから、前記タスク実行手段により前記全てのタスクが再び実行されるまでの間に、前記第1記憶手段に記憶されたプログラム構成単位を更新するように構成されていること
を特徴とする制御装置。
【請求項3】
請求項1に記載の制御装置であって、
前記更新手段によるプログラム構成単位の更新を受け付ける受付手段を備え、
前記更新手段は、前記タスク実行手段により実行される複数のタスクのうち、前記受付手段により更新を受け付けたプログラム構成単位を含むタスクの実行が完了してから、前記受付手段により更新を受け付けたプログラム構成単位を含むタスクが再び実行されるまでの間に、前記第1記憶手段に記憶されたプログラム構成単位を更新するように構成されていること
を特徴とする制御装置。
【請求項4】
請求項3に記載の制御装置であって、
前記タスク実行手段により実行されるタスクに関する情報を記憶する第2記憶手段と、
前記第2記憶手段に記憶されたタスクに関する情報に基づいて、前記受付手段により更新を受け付けたプログラム構成単位が前記タスク実行手段により実行されるタスクに含まれているか否かを判断する判断手段とを備えること
を特徴とする制御装置。
【請求項5】
請求項1から請求項4までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、複数のタスクを同時に並行して実行するように構成されていること
を特徴とする制御装置。
【請求項6】
請求項1から請求項4までのいずれか一つに記載の制御装置であって、
前記タスク実行手段は、時分割により複数のタスクを並行して実行するように構成されていること
を特徴とする制御装置。
【請求項7】
請求項1から請求項6までのいずれか一つに記載の制御装置であって、
複数のタスクは、基準のタスクと、基準のタスク以外のタスクとを含み、
前記基準のタスク以外のタスクの周期は、前記基準のタスクの周期の整数倍に設定されていること
を特徴とする制御装置。
【請求項8】
制御対象機器を制御する制御装置で実行されるシステムプログラムであって、
プログラム構成単位を含むユーザプログラムを記憶する第1記憶手段を備える制御装置に、
前記ユーザプログラムを含む複数のタスクを並行に各タスクに応じた周期で実行させる手順と、
実行される複数のタスクが完了してから前記複数のタスクが再び実行されるまでの間に、前記第1記憶手段に記憶されたプログラム構成単位を更新させる手順と、
を実行させるためのシステムプログラム。

【図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


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