(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、添付の図面を用いて、本実施形態にかかるコントローラについて説明する。
【0010】
(第1の実施形態)
図1は、第1の実施形態にかかるソフトPLCを実行するPLCの構成の一例を示す図である。本実施形態にかかるソフトPLC(Programmable Logic Controller)は、バルブやセンサ等の外部の制御対象機器3を制御するソフトウェアである。
図1に示すように、PLCは、複数のコアを有するCPU(Central Processing Unit)等のプロセッサ1と、メインメモリ2と、制御対象機器3との通信を可能とするネットワークカード等の通信I/F7と、を有する。
【0011】
メインメモリ2(メモリの一例)は、I/Oメモリ201(第1記憶領域の一例)と、I/Oメモリ201とは異なる共有メモリ202(第2記憶領域の一例)と、を有する。プロセッサ1は、複数のCPU(Central Processing Unit)コアを有し、当該CPUコア上でソフトウェアを実行することによって、制御対象機器3を制御するマルチコアプロセッサである。具体的には、プロセッサ1は、複数のCPUコアのうちいずれかにより実行される1つのOS(Operating System)によって、互いに隔離された複数のコンテナを動作させる。その際、プロセッサ1は、各コンテナを異なるCPUコアにおいて実行する。本実施形態では、プロセッサ1は、コンテナを実行するCPUコアとして、コントローラ機能CPUコア101、コンピュータ機能CPUコア102、およびI/O管理用CPUコア103を有する。
【0012】
I/O管理用CPUコア103(第1コアの一例)は、通信アプリケーションを含むコンテナを実行する。通信アプリケーションは、I/Oバス4を介して、制御対象機器3(第1制御対象機器の一例)とI/Oメモリ201との間で、制御対象機器3に対して送信する制御用データおよび制御対象機器3から受信するI/Oデータ(第1データの一例)を転送する。言い換えると、通信アプリケーションは、I/OデータをI/Oメモリ201へ保存し、かつI/Oメモリ201に記憶される制御用データを制御対象機器3に送信する。本実施形態では、制御用データは、制御対象機器3に対する制御指示やI/Oデータに異常が検出されたことを示すアラームデータを含む。I/Oデータは、制御対象機器3の制御結果を含む、所謂、生データである。また、I/O管理用CPUコア103は、制御対象機器3とI/Oメモリ201との間で転送する制御用データおよびI/Oデータを一時的に記憶するI/Oバッファ103aを有する。本実施形態では、通信アプリケーションは、メインメモリ2に記憶されるI/Oメモリマップを用いて、I/Oメモリ201に対する制御用データおよびI/Oデータ等の保存および読み出しを行う。ここで、I/Oメモリマップは、I/Oメモリ201の記憶領域のうち、制御用データおよびI/Oデータ等を記憶する領域のアドレスを示す。
【0013】
コントローラ機能CPUコア101(第2コアの一例)は、ラダーアプリケーションを含むコンテナを実行する。ラダーアプリケーションは、例えば、記述された論理回路に従って処理を行うためのプログラムであって、I/Oメモリ201と共有メモリ202との間でI/Oデータを転送する。言い換えると、ラダーアプリケーションは、I/Oメモリ201から、I/Oデータを読み出し、当該読み出したI/Oデータのうち一部のI/Oデータ(以下、I/O部分データと言う)を共有メモリ202に保存し、さらに、制御用データをI/Oメモリ201に保存する。本実施形態では、ラダーアプリケーションは、I/Oメモリ201から読み出したI/Oデータから、後述するコンピュータアプリケーションの実行に要するI/O部分データを抽出する。I/Oデータのうち一部のI/O部分データを抽出する手法は、周知の手法を問わず、どのような手法を用いても良い。そして、ラダーアプリケーションは、少なくとも、抽出したI/O部分データを、共有メモリ202に保存する。例えば、ラダーアプリケーションは、I/Oメモリ201から読み出したI/Oデータが含むビットのうち、コンピュータアプリケーションの実行に要する一部のビットをI/O部分データとして抽出して、共有メモリ202に保存する。また、本実施形態では、ラダーアプリケーションは、共有メモリ202に保存するI/O部分データに対して、統計処理やA/D変換を実行した上で、共有メモリ202に保存しても良い。また、本実施形態では、ラダーアプリケーションは、共有メモリ202に保存するI/O部分データ毎に、当該I/O部分データが示す値と、予め設定された閾値とを比較して、I/O部分データの異常を検出する。そして、ラダーアプリケーションは、I/O部分データの異常を検出した場合、I/O部分データに対して、アラームデータを付加して、共有メモリ202に保存することも可能である。また、本実施形態では、ラダーアプリケーションは、メインメモリ2に記憶されるI/Oメモリマップを用いて、I/Oメモリ201からのI/Oデータの読み出し、およびI/Oメモリ201に対する制御用データの保存を行う。また、ラダーアプリケーションは、メインメモリ2に記憶される共有メモリマップを用いて、共有メモリ202に対するI/O部分データの保存を行う。共有メモリマップは、共有メモリ202の記憶領域のうち、I/O部分データ等を記憶する領域のアドレスを示す。また、コントローラ機能CPUコア101が実行するラダーアプリケーションは、I/Oメモリ201と共有メモリ202との間で転送するI/Oデータ、すなわち、共有メモリ202に記憶されるI/O部分データに対して、データチェック等の処理(第1処理の一例)を実行する。これにより、共有メモリ202に記憶されるI/O部分データを、正常なデータとして処理することができ、後述するコンピュータ機能CPUコア102において、再度、データチェックを行う必要を無くすることができる。
【0014】
コンピュータ機能CPUコア102(第3コアの一例)は、コンピュータアプリケーションを含むコンテナを実行する。例えば、コンピュータ機能CPUコア102は、プロセッサ1において実行されるOS上に仮想マシンを実現し、当該仮想マシン上で汎用のOSを実行し、その汎用のOSによってコンピュータアプリケーションを動作させる。コンピュータアプリケーションは、共有メモリ202からI/O部分データを読み出す。すなわち、コンピュータアプリケーションは、I/Oメモリ201に記憶されるI/Oデータに対してアクセスしない。また、コンピュータアプリケーションは、共有メモリ202に対して制御用データを保存することも可能である。その場合、上述のラダーアプリケーションは、共有メモリ202から制御用データを読み出し、当該読み出した制御用データのI/Oメモリ201に保存する。本実施形態では、コンピュータアプリケーションは、メインメモリ2に記憶される共有メモリマップを用いて、共有メモリ202からのI/O部分データの読み出し、および共有メモリ202に対する制御用データの保存を行う。また、コンピュータ機能CPUコア102において実行されるコンピュータアプリケーションは、共有メモリ202に対して制御用データを保存する制御処理や、共有メモリ202に記憶されるI/O部分データを、コントローラが有する表示部に表示する表示処理等の処理(第2処理の一例)を実行する。
【0015】
以上の処理によれば、1つのOSにより動作する複数のアプリケーションによって、共有メモリ202に記憶されるI/O部分データに対するアクセスが行われるので、当該複数のアプリケーションによる、共有メモリ202に記憶されるI/O部分データに対するアクセスのタイミングが制御可能となり、共有メモリ202に記憶されるI/O部分データに対するアクセスの衝突を防止できる。
【0016】
また、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102が互いに同一のI/O部分データにアクセスすることが可能となるので、当該I/O部分データに対して、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102によって同一の処理を行った場合、その結果の整合性を確保できる。また、従来の制御システムでは、複数の制御装置それぞれが制御対象機器3からI/Oデータを取得する必要があり、制御装置の台数分のI/Oデータの受信が必要となっているが、制御対象機器3とPLCとの間で1つのデータを転送すれば済むので、制御対象機器3とPLCとの間でのI/Oデータの転送の回数を減らすことができる。さらに、PLCの内部では、I/O管理用CPUコア103のみが制御対象機器3へアクセスし、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102はメインメモリ2に記憶されるデータに対してのみアクセスするため、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102が、制御対象機器3にアクセスする場合と比較して、I/Oデータに対するアクセスに要する時間を短縮できる。また、ラダーアプリケーションを含むコンテナおよびコンピュータアプリケーションを含むコンテナがそれぞれ異なるCPUコアにおいて実行されるので、コンピュータ機能CPUコア102にかかる処理負荷が変動して、コンピュータアプリケーションを含むコンテナの実行に遅延が生じたとしても、コントローラ機能CPU102は負荷変動の影響を受けることなく、ラダーアプリケーションを実行できる。
【0017】
次に、
図2を用いて、本実施形態にかかるPLC内における制御用データおよびI/Oデータの転送処理の一例について説明する。
図2は、第1の実施形態にかかるPLC内における制御用データおよびI/Oデータの転送処理の一例を説明するための図である。
【0018】
図2に示すように、I/O管理用CPUコア103は、I/Oバス4を介して、制御対象機器3から、I/OデータA、I/OデータB、およびI/OデータCを受信する。そして、I/O管理用CPUコア103は、通信アプリケーションを実行して、制御対象機器3から受信したI/OデータA、I/OデータB、およびI/OデータCを、I/Oバッファ103aに書き込む。次いで、I/O管理用CPUコア103は、通信アプリケーションを実行して、I/Oバッファ103aに書き込んだI/OデータA、I/OデータB、およびI/OデータCを、I/Oメモリ201に転送(保存)する。
【0019】
図2に示すように、コントローラ機能CPUコア101は、I/Oメモリ201に対して、I/OデータA、I/OデータB、およびI/OデータCが書き込まれると(保存されると)、ラダーアプリケーションを実行して、I/Oメモリ201から、当該I/OデータA、I/OデータB、およびI/OデータCを読み出す。さらに、コントローラ機能CPUコア101は、ラダーアプリケーションを実行して、I/OデータAの一部のデータ(以下、I/O部分データA´と言う)、I/OデータBの一部のデータ(以下、I/O部分データB´と言う)、およびI/OデータCの一部のデータ(以下、I/O部分データC´と言う)を、共有メモリ202に保存する。その際、コントローラ機能CPUコア101は、ラダーアプリケーションを実行して、データチェックを実行したI/O部分データA´、I/O部分データB´、およびI/O部分データC´を、共有メモリ202に転送(保存)する。
【0020】
図2に示すように、コンピュータ機能CPUコア102は、コンピュータアプリケーションを実行して、共有メモリ202から、I/O部分データA´、I/O部分データB´、およびI/O部分データC´を読み出し、当該読み出したI/O部分データA´、I/O部分データB´、およびI/O部分データC´を用いて、I/O部分データA´,B´,C´の表示処理を実行する。また、コンピュータ機能CPUコア102は、コンピュータアプリケーションを実行して、制御用データDを、共有メモリ202に書き込む(保存する)。例えば、コンピュータ機能CPUコア102は、操作部を介してユーザにより入力される制御指示を含むデータを制御用データDとして共有メモリ202に保存する。
【0021】
このように、コンピュータ機能CPUコア102は、I/Oメモリ201に記憶されるI/OデータA、I/OデータB、およびI/OデータCに対してアクセスしない。これにより、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102が互いに同一のI/O部分データA´,B´,C´に処理を実行することが可能となるので、当該I/O部分データA´,B´,C´に対して、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102によって同一の処理を行った場合、その結果の整合性を確保できる。
【0022】
また、本実施形態では、コントローラ機能CPUコア101によってデータチェックが行われたI/O部分データA´,B´,C´が共有メモリ202に書き込まれるので、コンピュータ機能CPUコア102において、制御処理や表示処理に先立って、I/O部分データA´,B´,C´に対してデータチェックを行う必要が無くなる。さらに、従来のシステムにおいては、複数のコントローラが、入出力装置を介して、制御対象機器3とI/Oデータをやりとりするため、コントローラの数の分のI/Oデータのやりとりが必要とあり、制御対象機器3に対するアクセスが多くなる。これに対して、本実施形態では、I/O管理用CPUコア103のみが制御対象機器3とI/OデータA,B,Cをやりとりするので、制御対象機器3とPLCとの間でのI/OデータA,B,Cの転送の回数を減らすことができる。さらに、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102はメインメモリ2に記憶されるデータに対してのみアクセスするため、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102が、制御対象機器3にアクセスする場合と比較して、I/OデータA,B,Cに対するアクセスに要する時間を短縮できる。
【0023】
また、
図2に示すように、コントローラ機能CPUコア101は、コンピュータ機能CPUコア102における制御処理によって制御用データDが共有メモリ202に書き込まれると、ラダーアプリケーションを実行して、当該制御用データDを読み出し、データチェックを実行する。そして、コントローラ機能CPUコア101は、ラダーアプリケーションを実行して、データチェックを実行した制御用データDを、I/Oメモリ201に書き込む(保存する)。
【0024】
また、
図2に示すように、I/O管理用CPUコア103は、データチェックを実行した制御用データDがI/Oメモリ201に書き込まれると、通信アプリケーションを実行して、当該制御用データDを読み出し、I/Oバッファ103aに書き込む。そして、I/O管理用CPUコア103は、通信アプリケーションを実行して、I/Oバッファ103aに書き込まれた制御用データDを、I/Oバス4を介して、制御対象機器3に送信する。
【0025】
このように、第1の実施形態にかかるPLCによれば、1つのOSにより動作する複数のアプリケーションによって、共有メモリ202に記憶されるI/O部分データに対するアクセスが行われるので、当該複数のアプリケーションによる、共有メモリ202に記憶されるI/O部分データに対するアクセスのタイミングを制御可能となり、共有メモリ202に記憶されるI/O部分データに対するアクセスの衝突を防止できる。また、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102が互いに同一のI/O部分データにアクセスするので、当該I/O部分データに対して、コントローラ機能CPUコア101およびコンピュータ機能CPUコア102によって同一の処理を行った場合、その結果の整合性を確保できる。
【0026】
(第2の実施形態)
本実施形態は、コントローラ機能コアが、I/Oメモリに制御用データを保存する代わりに、共有メモリに対して制御用データを保存し、コンピュータ機能CPUコアが、共有メモリに記憶される制御用データに従って、制御対象機器のシミュレータとして動作するプログラムを実行する例である。
【0027】
図3は、第2の実施形態にかかるPLC内における制御用データの転送処理の一例について説明するための図である。本実施形態のPLCの構成は、第1の実施形態にかかるPLCの構成と同様である。本実施形態では、PLCは、制御対象機器3と接続されていない場合または制御対象機器3の制御を実行する前、ラダーアプリケーションを検証するために、コンピュータ機能CPUコア302を制御対象機器3のシミュレータとして利用する。
【0028】
具体的には、コントローラ機能CPUコア301は、PLCが制御対象機器3と接続されていない場合、若しくは制御対象機器3の制御を実行する前に、シミュレーションモードに遷移する。そして、コントローラ機能CPUコア301は、制御対象機器3に転送する制御用データDを、I/Oメモリ201の代わりに、共有メモリ202に書き込む。
【0029】
コンピュータ機能CPUコア302は、共有メモリ202に記憶される制御用データD(所定のデータの一例)に従って、制御対象機器3のシミュレータとして動作するプログラム(以下、シミュレーションプログラムと言う)を実行する。そして、コンピュータ機能CPUコア302は、シミュレーションプログラムの実行結果であるシミュレーションデータSDを、共有メモリ202に書き込む。
【0030】
次いで、コントローラ機能CPUコア301は、共有メモリ202に書き込まれたシミュレーションデータSDを読み出し、当該シミュレーションデータSDが示すシミュレーションプログラムの実行結果に基づいて、ラダーアプリケーションが正常に実行されているか否かを判断する。これにより、制御対象機器3の制御を実行する前に、ラダーアプリケーションが正常に実行されているか否かを判断できるので、制御対象機器3が誤って制御されることを防止できる。
【0031】
(第3の実施形態)
本実施形態は、PLCのプロセッサが、制御対象機器毎に、I/Oメモリ、コントローラ機能CPUコア、およびコンピュータ機能CPUコアを有する例である。以下の説明では、上述の実施形態と同様の箇所については説明を省略する。
【0032】
図4は、第3の実施形態にかかるPLCの構成の一例を示す図である。本実施形態にかかるPLCのプロセッサ400は、コントローラ機能CPUコア101、コンピュータ機能CPUコア102、I/O管理用CPUコア103、および通信I/F7に加えて、コントローラ機能CPUコア401(第5コアの一例)、コンピュータ機能CPUコア402(第6コアの一例)、I/O管理用CPUコア403(第4コアの一例)、および制御対象機器5との通信を可能とするネットワークカード等の通信I/F406を有する。また、メインメモリ7は、I/Oメモリ201および共有メモリ405に加えて、当該I/Oメモリ201および共有メモリ405とは異なるI/Oメモリ404(第3記憶領域の一例)を有する。
【0033】
I/O管理用CPUコア403は、通信アプリケーションを含むコンテナを実行する。通信アプリケーションは、I/Oバス6を介して、制御対象機器3とは異なる制御対象機器5(第2制御対象機器の一例)とI/Oメモリ404との間で、制御用データおよびI/Oデータ(第2データの一例)を転送する。言い換えると、通信アプリケーションは、制御対象機器5から受信するI/OデータをI/Oメモリ404へ保存し、かつI/Oメモリ404に記憶される制御用データを制御対象機器5へ送信する。また、I/O管理用CPUコア403は、制御対象機器5とI/Oメモリ404との間で転送する制御用データおよびI/Oデータを一時的に記憶するI/Oバッファ403aを有する。
【0034】
コントローラ機能CPUコア401は、ラダーアプリケーションを含むコンテナを実行する。ラダーアプリケーションは、I/Oメモリ404と共有メモリ405との間でI/Oデータを転送する。具体的には、ラダーアプリケーションは、I/Oメモリ404から、I/Oデータを読み出し、当該読み出したI/Oデータのうち一部のI/O部分データを共有メモリ202に保存し、さらに、制御用データをI/Oメモリ404に保存する。また、コントローラ機能CPUコア401が実行するラダーアプリケーションは、I/Oメモリ404と共有メモリ405との間で転送するI/O部分データ、すなわち、共有メモリ405に記憶されるI/O部分データに対して、データチェック等の処理を実行する。
【0035】
コンピュータ機能CPUコア402は、コンピュータアプリケーションを含むコンテナを実行する。例えば、コンピュータ機能CPUコア402は、コンピュータ機能CPUコア102と同様に、プロセッサ1において実行されるOS上に仮想マシンを実現し、当該仮想マシン上で汎用のOSを実行し、その汎用のOSによってコンピュータアプリケーションを動作させる。コンピュータアプリケーションは、共有メモリ405からI/O部分データを読み出す。すなわち、コンピュータ機能CPUコア102,402が実行するコンピュータアプリケーションは、I/Oメモリ201,404に記憶されるI/Oデータに対してアクセスしない。また、コンピュータ機能CPUコア402において実行されるコンピュータアプリケーションは、共有メモリ405に対して制御用データを保存する制御処理や共有メモリ405に記憶されるI/O部分データをコントローラが有する表示部に表示する処理等の処理を実行する。これにより、制御対象機器3,5毎に、I/Oメモリ404、コントローラ機能CPUコア101,401、コンピュータ機能CPUコア102,402、およびI/O管理用CPUコア103,403を有する場合も、1つのOSにより動作する複数のアプリケーションによって、共有メモリ405に記憶されるI/O部分データに対するアクセスが行われるので、当該複数のアプリケーションによる、共有メモリ405に記憶されるI/O部分データに対するアクセスのタイミングを制御可能となり、共有メモリ405に記憶されるI/O部分データに対するアクセスの衝突を防止できる。
【0036】
また、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402が互いに同一のI/O部分データにアクセスすることが可能となるので、当該I/O部分データに対して、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402によって同一の処理を行った場合、その結果の整合性を確保できる。また、制御対象機器3,5とPLCとの間で1つのデータを転送すれば済むので、制御対象機器3,5とPLCとの間でのI/Oデータの転送の回数を減らすことができる。
【0037】
次に、
図5を用いて、本実施形態にかかるPLC内における制御用データおよびI/Oデータの転送処理の一例について説明する。
図5は、第3の実施形態にかかるPLC内における制御用データおよびI/Oデータの転送処理の一例を説明するための図である。
【0038】
図5に示すように、I/O管理用CPUコア103は、I/Oバス4を介して、制御対象機器3から、I/OデータAを受信する。そして、I/O管理用CPUコア103は、通信アプリケーションを実行して、制御対象機器3から受信したI/OデータAをI/Oバッファ103aに書き込む。次いで、I/O管理用CPUコア103は、通信アプリケーションを実行して、I/Oバッファ103aに書き込んだI/OデータAを、I/Oメモリ201に転送(保存)する。
【0039】
図5に示すように、コントローラ機能CPUコア101は、I/Oメモリ201に対して、I/OデータAが書き込まれると(保存されると)、ラダーアプリケーションを実行して、I/Oメモリ201から、当該I/OデータAを読み出す。さらに、コントローラ機能CPU101は、ラダーアプリケーションを実行して、I/OデータAの一部のI/O部分データA´を、共有メモリ405に保存する。その際、コントローラ機能CPUコア101は、ラダーアプリケーションを実行して、データチェックを実行したI/O部分データA´を、共有メモリ405に転送(保存)する。
【0040】
一方、
図5に示すように、I/O管理用CPUコア403は、I/Oバス6を介して、制御対象機器5から、I/OデータBを受信する。そして、I/O管理用CPUコア403は、通信アプリケーションを実行して、制御対象機器5から受信したI/OデータBをI/Oバッファ403aに書き込む。次いで、I/O管理用CPUコア403は、通信アプリケーションを実行して、I/Oバッファ403aに書き込んだI/OデータBを、I/Oメモリ404に転送(保存)する。
【0041】
図5に示すように、コントローラ機能CPUコア401は、I/Oメモリ404に対して、I/OデータBが書き込まれると(保存されると)、ラダーアプリケーションを実行して、I/Oメモリ404から、当該I/OデータBを読み出す。さらに、コントローラ機能CPUコア401は、ラダーアプリケーションを実行して、I/OデータBの一部のI/O部分データB´を共有メモリ405に保存する。そして、コントローラ機能CPUコア401は、ラダーアプリケーションを実行して、データチェックを実行したI/O部分データB´を、共有メモリ405に転送(保存)する。
【0042】
また、
図5に示すように、コンピュータ機能CPUコア102,402は、共有メモリ405から、コンピュータアプリケーションを実行して、I/O部分データA´およびI/O部分データB´を読み出し、当該読み出したI/O部分データA´およびI/O部分データB´を用いて、I/O部分データA´,B´の表示処理を実行する。また、コンピュータ機能CPUコア102,402は、コンピュータアプリケーションを実行して、制御用データDを、共有メモリ405に書き込む(保存する)。
【0043】
このように、コンピュータ機能CPUコア102,402は、I/Oメモリ201,404に記憶されるI/OデータAおよびI/OデータBに対してアクセスしない。これにより、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402が互いに同一のI/O部分データA´,B´に処理を実行することが可能となるので、当該I/O部分データA´,B´に対して、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402によって同一の処理を行った場合、その結果の整合性を確保できる。
【0044】
また、本実施形態では、コントローラ機能CPUコア101,401によってデータチェックが行われたI/O部分データA´,B´が共有メモリ405に書き込まれるので、コンピュータ機能CPUコア102,402において、制御処理や表示処理に先立って、I/O部分データA´,B´に対してデータチェックを行う必要が無くなる。さらに、従来のシステムにおいては、複数のコントローラが、入出力装置を介して、制御対象機器3,5とI/Oデータをやりとりするため、コントローラの数の分のI/Oデータのやりとりが必要となり、制御対象機器3,5に対するアクセスが多くなる。これに対して、本実施形態では、I/O管理用CPUコア103,403のみが制御対象機器3,5とI/OデータA,Bをやりとりするので、制御対象機器3,5とPLCとの間でのI/OデータA,Bの転送の回数を減らすことができる。さらに、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402はメインメモリ2に記憶されるデータに対してのみアクセスするため、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402が、制御対象機器3,5にアクセスする場合と比較して、I/OデータA,Bに対するアクセスに要する時間を短縮できる。
【0045】
また、
図5に示すように、コントローラ機能CPUコア101は、コンピュータ機能CPUコア102,402における制御処理によって制御用データDが共有メモリ405に書き込まれると、ラダーアプリケーションを実行して、当該制御用データDを読み出し、データチェックを実行する。そして、コントローラ機能CPUコア101は、ラダーアプリケーションを実行して、データチェックを実行した制御用データDを、I/Oメモリ201に書き込む(保存する)。
【0046】
また、
図5に示すように、I/O管理用CPUコア103は、データチェックを実行した制御用データDがI/Oメモリ201に書き込まれると、通信アプリケーションを実行して、当該制御用データDを読み出し、I/Oバッファ103aに書き込む。そして、I/O管理用CPUコア103は、通信アプリケーションを実行して、I/Oバッファ103aに書き込まれた制御用データDを、I/Oバス4を介して、制御対象機器3に送信する。
【0047】
また、
図5に示すように、コントローラ機能CPUコア401は、コンピュータ機能CPU102,402における制御処理によって制御用データDが共有メモリ405に書き込まれると、ラダーアプリケーションを実行して、当該制御用データDを読み出し、データチェックを実行する。そして、コントローラ機能CPUコア401は、ラダーアプリケーションを実行して、データチェックを実行した制御用データDを、I/Oメモリ404に書き込む(保存する)。
【0048】
また、
図5に示すように、I/O管理用CPUコア403は、データチェックを実行した制御用データDがI/Oメモリ404に書き込まれると、通信アプリケーションを実行して、当該制御用データDを読み出し、I/Oバッファ403aに書き込む。そして、I/O管理用CPUコア403は、通信アプリケーションを実行して、I/Oバッファ403aに書き込まれた制御用データDを、I/Oバス6を介して、制御対象機器5に送信する。
【0049】
このように、第3の実施形態にかかるPLCによれば、制御対象機器3,5毎に、I/Oメモリ201,404、コントローラ機能CPUコア101,401、コンピュータ機能CPUコア102,402、およびI/O管理用CPUコア103,403を有する場合も、1つのOSにより動作する複数のアプリケーションによって、共有メモリ405に記憶されるI/O部分データに対するアクセスが行われるので、当該複数のアプリケーションによる、共有メモリ405に記憶されるI/O部分データに対するアクセスのタイミングを制御可能となり、共有メモリ405に記憶されるI/O部分データに対するアクセスの衝突を防止できる。また、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402が互いに同一のI/O部分データにアクセスするので、当該I/O部分データに対して、コントローラ機能CPUコア101,401およびコンピュータ機能CPUコア102,402によって同一の処理を行った場合、その結果の整合性を確保できる。
【0050】
本実施形態では、ソフトPLCは、2台の制御対象機器3,5毎に、I/Oメモリ201,404、コントローラ機能CPUコア101,401、コンピュータ機能CPUコア102,402、およびI/O管理用CPUコア103,403を有しているが、3台以上の制御対象機器が存在する場合も、同様に、制御対象機器毎に、I/Oメモリ、コントローラ機能CPUコア、コンピュータ機能CPUコア、およびI/O管理用CPUコアが設けられるものとする。
【0051】
(第4の実施形態)
本実施形態は、コントローラ機能CPUコアが、通信アプリケーションを実行する例である。以下の説明では、第1の実施形態と同様の構成については説明を省略する。
【0052】
図6は、第4の実施形態にかかるPLCの構成の一例を示す図である。本実施形態にかかるPLCは、
図6に示すように、プロセッサ600と、メインメモリ2と、通信I/F7と、を有する。プロセッサ600は、複数のコンテナを実行するCPUコアとして、コントローラ機能CPUコア601、およびコンピュータ機能CPUコア102を有する。
【0053】
コントローラ機能CPUコア601は、第1の実施形態におけるI/O管理用CPU103に代わって、通信アプリケーションを含むコンテナを実行する。これにより、少なくとも2つのCPUコアを有するマルチコアプロセッサをプロセッサ600として用いれば、制御対象機器3を制御することができる。
【0054】
このように、第4の実施形態にかかるPLCによれば、通信アプリケーションを実行する専用のCPUコアを有していない場合であっても、上述の実施形態と同様の作用効果を得ることができる。
【0055】
以上説明したとおり、第1から第4の実施形態によれば、1つのOSにより動作する複数のアプリケーションによって、共有メモリ202,405に記憶されるI/O部分データに対するアクセスが行われるので、当該複数のアプリケーションによる、共有メモリ202,405に記憶されるI/O部分データに対するアクセスのタイミングを制御可能となり、共有メモリ202に記憶されるI/O部分データに対するアクセスの衝突を防止できる。
【0056】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。