(57)【特許請求の範囲】
【請求項１】
制御対象機器を制御するユーザプログラムを含むタスクを所定の周期にて繰り返し実行するタスク実行部と、
前記ユーザプログラムを生成するために用いられたユーザプログラム生成用資源を含むデータコンテナである第１データコンテナが保存される第１保存部と、
前記第１データコンテナの内容を変更した第２データコンテナが生成されるか、又は、前記第１データコンテナに含まれるユーザプログラム生成用資源を編集することにより編集後のユーザプログラム生成用資源が生成された場合、前記第２データコンテナ、又は、前記編集後のユーザプログラム生成用資源を、変更履歴として第１更新履歴に記憶するとともに、新たな前記ユーザプログラムを生成すると判断した所定のタイミングにおいて、前記変更履歴に示された内容の変更を前記第１更新履歴に保存されたデータコンテナである第３データコンテナに対して反映させることで生成された新たなデータコンテナを前記第１保存部に保存する第１変更管理部と、
前記新たなデータコンテナを前記第１保存部に保存後、前記第１保存部に保存される前記新たなデータコンテナに含まれる新たなユーザプログラム生成用資源を用いて前記ユーザプログラムを生成する第１ユーザプログラム生成部と、
を備える制御装置。
【請求項２】
前記所定のタイミングは、前記第１変更管理部が前記第１データコンテナの内容の変更を検出するタイミングである、請求項１に記載の制御装置。
【請求項３】
前記所定のタイミングは、前記第１更新履歴に記憶されたどの変更履歴を用いて前記新たなデータコンテナを生成するかを指定する変更履歴指定情報を含むユーザプログラム生成指示を外部から受信したタイミングであり、
前記第１ユーザプログラム生成部は、前記変更履歴指定情報に指定された前記変更履歴までの前記変更履歴に示された内容の変更を前記第１更新履歴に保存された前記第３データコンテナに対して反映させることで生成された新たなデータコンテナを用いて前記ユーザプログラムを生成する、請求項１に記載の制御装置。
【請求項４】
内容を変更したユーザプログラム及び前記内容を変更したユーザプログラムが生成された際に用いられた内容変更ユーザプログラム生成用資源を含む内容変更データコンテナを外部から受信した場合、
前記内容変更データコンテナは前記第１保存部に保存され、
前記第１変更管理部は、前記内容変更データコンテナ、又は、前記内容変更データコンテナ中の内容を変更したユーザプログラム生成用資源を変更履歴として前記第１更新履歴に記憶し、
前記内容を変更したプログラムを以後前記タスク実行部において実行される新たなユーザプログラムとする、請求項１〜３のいずれかに記載の制御装置。
【請求項５】
請求項１〜４のいずれかに記載の制御装置と、
前記制御装置と通信可能に接続され、データコンテナの変更履歴を記憶する第２更新履歴を記憶する第２変更管理部を有するサーバと、
を備える制御システム。
【請求項６】
前記第２変更管理部は、前記第１変更管理部に記憶された前記第１更新履歴を複製した複製更新履歴を前記第２更新履歴として保存する、請求項５に記載の制御システム。
【請求項７】
前記第１変更管理部は、前記第１更新履歴を第２変更管理部にバックアップして前記第２更新履歴として保存する、請求項５又は６に記載の制御システム。
【請求項８】
前記第２変更管理部は、外部から前記第１データコンテナの内容の変更を受信後、外部から受信したデータコンテナの変更履歴である外部変更履歴を前記第２更新履歴に記憶するとともに、前記外部変更履歴を前記第１変更管理部に送信し、
第１変更管理部は、前記外部変更履歴を第１更新履歴に記憶するとともに、前記所定のタイミングにおいて前記外部変更履歴に基づいて生成したデータコンテナを前記第１保存部に保存する、請求項５〜７のいずれかに記載の制御システム。
【請求項９】
内容を変更したユーザプログラム及び前記内容を変更したユーザプログラムが生成された際に用いられた内容変更ユーザプログラム生成用資源を含む内容変更データコンテナを外部から前記制御装置において受信した場合、
前記内容変更データコンテナが前記第１保存部に保存されるとともに、前記内容変更データコンテナ、又は、前記内容変更データコンテナ中の内容を変更したユーザプログラム生成用資源が変更履歴として前記第２変更管理部の前記第２更新履歴に記憶され、
前記内容を変更したプログラムを以後前記タスク実行部において実行される新たなユーザプログラムとする、請求項５〜８のいずれかに記載の制御システム。
【請求項１０】
制御対象機器を制御するユーザプログラムを含むタスクを所定の周期にて繰り返し実行するタスク実行部と、
前記ユーザプログラムを生成するために用いられたユーザプログラム生成用資源を含むデータコンテナである第１データコンテナが保存される第１保存部と、
前記第１データコンテナの内容を変更した第２データコンテナが生成されるか、又は、前記第１データコンテナに含まれるユーザプログラム生成用資源を編集することにより編集後のユーザプログラム生成用資源が生成された場合、前記第２データコンテナ、又は、前記編集後のユーザプログラム生成用資源を、変更履歴として第１更新履歴に記憶するとともに、新たな前記ユーザプログラムを生成すると判断した所定のタイミングにおいて、前記変更履歴に示された内容の変更を前記第１更新履歴に保存されたデータコンテナである第３データコンテナに対して反映させることで生成された新たなデータコンテナを前記第１保存部に保存する第１変更管理部と、
を有する制御装置と、
前記第１変更管理部において生成された前記新たなデータコンテナを受信し保存する第３保存部と、
前記第３保存部に保存された前記新たなデータコンテナに含まれるユーザプログラム生成用資源を用いて前記ユーザプログラムを生成し前記制御装置に送信する第２ユーザプログラム生成部と、を有するユーザプログラム生成サーバと、
を備える制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラムを所定の周期にて繰り返し実行することにより制御対象機器を制御する制御装置、及び、当該制御装置を用いた制御システムに関する。
【背景技術】
【０００２】
従来、ユーザにより作成されたユーザプログラムを所定の周期にて繰り返し実行することにより制御対象機器を制御する制御装置において、現在実行されているユーザプログラムの一部に対して内容の変更を行うユーザプログラムの編集方法（オンラインエディット）が知られている。
例えば、特許文献１には、ソースプログラムの一部分をコンパイラにかけて変換することにより得られるオブジェクトコード部分によりＰＬＣに記憶されているオブジェクトコードを書き換えるオンラインエディット機能を備えたＰＬＣが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２２３５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されたＰＬＣなどに備わっている従来のオンラインエディット機能においては、オンラインエディット機能を行ってソースプログラムの内容を変更したプログラム開発支援装置にのみ内容が変更されたソースプログラムが保存されていた。
特に複数のユーザ（複数台のプログラム開発支援装置）によりユーザプログラムの開発を行っている際に、上記のようにオンラインエディット機能を実行したプログラム開発支援装置にのみ内容が変更されたソースプログラムが保存されると、現在ＰＬＣにおいて実行されているユーザプログラムが、どの内容の変更がなされた段階（変更段階）のユーザプログラムであるかを全てのユーザに共有されない。その結果、複数のユーザによるユーザプログラムの開発効率が低下する。【０００５】
また、オンラインエディット機能を用いてユーザプログラムの内容を変更する際、制御装置により制御される制御対象機器（特に、ロボットアームなど、動作をしていると危険を伴う制御対象機器）の動作を、ユーザプログラムの内容の変更を終了するまで常時停止させておく必要があった。このような場合、長時間にわたり制御対象機器を停止させなければならなかった。【０００６】
本発明の課題は、制御装置及び制御システムにおいて、現在実行されているユーザプログラムがどの変更段階のユーザプログラムであるかを共有可能とすることと、ユーザプログラムの内容の変更に伴う制御対象機器の停止時間を短縮することにある。
【課題を解決するための手段】
【０００７】
以下に、課題を解決するための手段として複数の態様を説明する。これら態様は、必要に応じて任意に組み合せることができる。
本発明の一見地に係る制御装置は、タスク実行部と、第１保存部と、第１変更管理部と、第１ユーザプログラム生成部と、を備える。
タスク実行部は、制御対象機器を制御するユーザプログラムを含むタスクを所定の周期にて繰り返し実行する。第１保存部にはデータコンテナが保存される。データコンテナは、ユーザプログラム生成用資源を含む。ユーザプログラム生成用資源は、ユーザプログラムを生成するために用いられる資源のことである。【０００８】
第１変更管理部は、第１保存部に保存されたデータコンテナの内容が変更された場合、データコンテナの変更履歴を第１更新履歴に記憶する。また、それとともに、第１変更管理部は、所定のタイミングにおいて変更履歴を用いて生成された新たなデータコンテナを第１保存部に保存する。
第１ユーザプログラム生成部は、所定のタイミングにおいて、第１保存部に保存される新たなデータコンテナに含まれる新たなユーザプログラム生成用資源を用いてユーザプログラムを生成する。【０００９】
上記の制御装置においては、第１保存部に保存されたデータコンテナの内容が変更されると、第１変更管理部がデータコンテナの変更履歴を第１更新履歴に記憶する。また、第１変更管理部は、所定のタイミングにおいて、上記の変更履歴を用いて新たなデータコンテナを生成し、生成した新たなデータコンテナを第１保存部に保存する。
その後、第１ユーザプログラム生成部が、上記の所定のタイミングにおいて、第１保存部に保存されている上記の新たなデータコンテナに含まれる新たなユーザプログラム生成用資源を用いて新たなユーザプログラムを生成する。【００１０】
従って、上記の制御装置においては、新たなユーザプログラムを生成する際に用いられた新たなユーザプログラム生成用資源を含む新たなデータコンテナが、第１保存部に保存されている。また、データコンテナへの変更履歴が第１更新履歴に記憶されている。【００１１】
これにより、上記の制御装置において、現在実行されているユーザプログラムが、どの変更段階（変更履歴）において生成されたデータコンテナに含まれるユーザプログラム生成用資源により生成されたかについての情報を共有できる。すなわち、現在実行されているユーザプログラムが、どの変更段階におけるユーザプログラムであるかについての情報を共有できる。【００１２】
また、ユーザプログラム生成部が、所定のタイミングにおいてユーザプログラムを生成している。これにより、オンラインエディット機能においてユーザプログラムの内容の変更をする際に、ユーザプログラムの更新のための制御対象機器の停止時間を短縮できる。なぜなら、ユーザプログラムの更新のための制御対象機器の停止時間を、ユーザプログラムを生成したときだけ（すなわち、所定のタイミングだけ）にできるからである。【００１３】
上記の制御装置において、所定のタイミングは、第１変更管理部がデータコンテナの内容の変更を検出するタイミングであってもよい。これにより、上記の制御装置においては、各段階のデータコンテナの内容の変更を変更履歴に残しつつ、直近の内容の変更がなされたデータコンテナを用いて最新の更新状態のユーザプログラムを生成できる。【００１４】
上記の制御装置において、所定のタイミングは、ユーザプログラム生成指示を外部から受信したタイミングであってよい。この場合、ユーザプログラム生成指示には、第１更新履歴に記憶されたどの変更履歴を用いて新たなデータコンテナを生成するかを指定する変更履歴指定情報が含まれている。
また、第１ユーザプログラム生成部は、変更履歴指定情報に指定された変更履歴を用いて生成された新たなデータコンテナを用いてユーザプログラムを生成してもよい。【００１５】
これにより、予め決定したタイミングにおいて新たなユーザプログラムを生成できる。また、第１更新履歴に記憶されているどの変更履歴を用いて新たなデータコンテナを生成するかを指定可能とすることにより、任意の変更段階（変更履歴）におけるデータコンテナを用いてユーザプログラムを生成できる。【００１６】
上記の制御装置において、内容を変更したユーザプログラム及び内容変更データコンテナを外部から受信した場合、内容変更データコンテナは第１保存部に保存されてもよい。ここで、内容変更データコンテナは、上記の内容を変更したユーザプログラムが生成された際に用いられた内容変更ユーザプログラム生成用資源を含むデータコンテナである。
また、第１変更管理部は、内容変更データコンテナの変更履歴を第１更新履歴に記憶してもよい。さらに、内容を変更したユーザプログラムを以後タスク実行部において実行される新たなユーザプログラムとしてもよい。【００１７】
これにより、外部においてユーザプログラムの内容の変更がなされた場合でも、ユーザプログラムに対してどのような内容の変更がなされたかについての情報を共有できる。【００１８】
本発明の他の見地に係る制御システムは、上記の制御装置とサーバとを備える。サーバは、上記の制御装置と通信可能に接続されている。また、サーバは、第２変更管理部を有する。第２変更管理部は、データコンテナの変更履歴を記憶する。【００１９】
これにより、制御装置の第１変更管理部以外の第２変更管理部にも、データコンテナの変更履歴を記憶できる。【００２０】
第２変更管理部は、複製更新履歴を第２更新履歴として保存してもよい。複製更新履歴は、第１変更管理部に記憶された第１更新履歴を複製した更新履歴である。これにより、第２変更管理部において、第１更新履歴と一致する第２更新履歴を保存できる。すなわち、第１更新履歴を予備的に第２変更管理部に保存できる。【００２１】
第１変更管理部は、第１更新履歴を第２変更管理部にバックアップして第２更新履歴として保存してもよい。これにより、第１更新履歴を予備的に第２変更管理部に保存できる。【００２２】
第２変更管理部は、外部からデータコンテナの内容の変更を受信後、外部変更履歴を第２更新履歴に記憶してもよい。外部変更履歴は、外部から受信したデータコンテナの変更履歴である。また、それとともに、第２変更管理部は、外部変更履歴を第１変更管理部に送信してもよい。
このとき、第１変更管理部は、外部変更履歴を第１更新履歴に記憶するとともに、所定のタイミングにおいて外部変更履歴に基づいて生成したデータコンテナを第１保存部に保存してもよい。【００２３】
これにより、外部からデータコンテナの内容の変更の要求があった場合でも、外部から受信したデータコンテナの変更履歴を、第１変更管理部の第１更新履歴、及び、第２変更管理部の第２更新履歴の両方に保存できる。【００２４】
内容を変更したユーザプログラム及び内容変更データコンテナを外部から制御装置において受信した場合、内容変更データコンテナは、第１保存部に保存されるとともに、変更履歴が第２変更管理部の第２更新履歴に記憶されてもよい。また、内容を変更したユーザプログラムを以後タスク実行部において実行される新たなユーザプログラムとしてもよい。【００２５】
これにより、外部においてユーザプログラムの内容の変更がなされた場合でも、外部においてユーザプログラムを生成した際に用いられたデータコンテナを、第１保存部と第２更新履歴とに保存できる。すなわち、上記のデータコンテナを予備的に保存できる。【００２６】
本発明のさらに他の見地に係る制御システムは、制御装置とユーザプログラム生成サーバとを備える。
上記の制御システムにおいて、制御装置は、タスク実行部と、第１保存部と、第１変更管理部と、を有する。タスク実行部は、制御対象機器を制御するユーザプログラムを含むタスクを所定の周期にて繰り返し実行する。第１保存部には、ユーザプログラムを生成するために用いられるユーザプログラム生成用資源を含むデータコンテナが保存される。第１変更管理部は、第１保存部に保存されたデータコンテナの内容が変更された場合、データコンテナの変更履歴を第１更新履歴に記憶する。また、第１変更管理部は、それとともに、所定のタイミングにおいて変更履歴を用いて生成された新たなデータコンテナを第１保存部に保存する。【００２７】
ユーザプログラム生成サーバは、第３保存部と第２ユーザプログラム生成部とを有する。
第３保存部は、第１変更管理部において生成されたデータコンテナを受信し保存する。第２ユーザプログラム生成部は、第３保存部に保存されたデータコンテナに含まれるユーザプログラム生成用資源を用いてユーザプログラムを生成する。また、第２ユーザプログラム生成部は、生成したユーザプログラムを制御装置に送信する。【００２８】
上記の制御システムにおいては、第１変更管理部において所定のタイミングにおいて変更履歴を用いて新たなデータコンテナを生成した際に、新たなデータコンテナを、第１保存部だけでなく、ユーザプログラム生成サーバの第３保存部にも保存する。その後、第３保存部に保存された新たなデータコンテナを用いてユーザプログラムが生成される。【００２９】
これにより、ユーザプログラムの生成を外部のサーバ（ユーザプログラム生成サーバ）により生成できる。その結果、制御装置における計算負荷を低減できる。
【発明の効果】
【００３０】
制御装置及び制御システムにおいて、現在実行されているユーザプログラムがどの変更段階のユーザプログラムであるかを共有でき、ユーザプログラムの内容の変更に伴う制御対象機器の停止時間を短縮できる。
【図面の簡単な説明】
【００３１】
【図１】第１実施形態に係る制御システムの全体構成を示す図。
【図２】制御装置及び開発支援装置の構成を示す図。
【図３Ａ】制御装置の詳細構成を示す図。
【図３Ｂ】制御装置の変形例を示す図。
【図４】第１更新履歴の構成の一例を示す図。
【図５】制御システムにおけるユーザプログラムの更新動作を示すフローチャート。
【図６】第２実施形態に係る制御システムの構成を示す図。
【図７】サーバの詳細構成を示す図。
【図８Ａ】第３実施形態に係る制御システムの構成を示す図。
【図８Ｂ】第３実施形態に係る制御システムの詳細構成を示す図。
【発明を実施するための形態】
【００３２】
１．第１実施形態
（１）制御システムの全体構成
まず、第１実施形態に係る制御システム１００の全体構成について、図１を用いて説明する。図１は、第１実施形態に係る制御システムの全体構成を示す図である。制御システム１００は、ＰＬＣシステム１とプログラム開発支援装置３とを備える。
ＰＬＣシステム１は、例えば、センサやスイッチなどにより構成される信号入力部５から信号を入力する。また、ＰＬＣシステム１は、信号入力部５（後述）からの入力信号を必要の応じて用いプログラムを実行して、制御対象機器７を制御する出力信号を算出する。
【００３３】
プログラム開発支援装置３は、ＰＬＣシステム１の制御装置１１において実行されるユーザプログラム１１３１（図３）を作成又は変更するための編集機能を含む各種機能を実現する。また、ＰＬＣシステム１に接続可能なプログラム開発支援装置３の数は１に限られず、例えば、プログラム開発支援装置３に割当可能なアドレス数などが許す限り、任意の数のプログラム開発支援装置３を接続できる。
以下に、ＰＬＣシステム１、制御装置１１、及びプログラム開発支援装置３の詳細な構成についてそれぞれ説明する。
【００３４】
（２）ＰＬＣシステムの構成
次に、ＰＬＣシステム１の詳細な構成について図１を用いて説明する。本実施形態に係るＰＬＣシステム１は、制御装置１１と、入力ユニット１３と、出力ユニット１５と、電源ユニット１７と、を有する。
【００３５】
本実施形態に係る制御装置１１は、プログラマブル・ロジック・コントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、ＰＬＣ）のＣＰＵユニットである。制御装置１１においては、入力ユニット１３（後述）に入力される入力信号が制御装置１１内部において用いられる入力変数に関連づけられている。また、出力ユニット１５（後述）への出力信号が制御装置１１内部において用いられる出力変数に関連づけられている。
【００３６】
また、制御装置１１においては、所定のタスクが所定の周期にて繰り返し実行されている。ここで、タスクとは、入力ユニット１３からの入力信号に基づいて入力変数を更新し、出力変数に基づいて出力ユニット１５へ出力する出力信号を更新するＩ／Ｏリフレッシュ処理と、ユーザプログラム１１３１及び／又はシステムプログラム１１５ａ（後述）を実行する処理とを含む処理単位のことである。なお、タスクには、モーションコントロール処理などの他の処理がさらに含まれていてもよく、また、プログラムの実行処理のみが含まれていてもよい。
【００３７】
入力ユニット１３は、センサやスイッチなどの信号入力部５から入力信号を入力し、制御装置１１に当該入力信号を出力する。入力ユニット１３としては、信号入力部５から入力される信号種類に応じた入力ユニットを使用できる。具体的には、例えば、信号入力部５が温度を測定する熱電対により構成されている場合には、熱電対において発生する電圧を入力信号とする入力ユニットを入力ユニット１３として用いることができる。また、例えば、信号入力部５が電気スイッチにより構成されている場合には、当該スイッチのＯＮ／ＯＦＦ状態を入力信号とする入力ユニットを入力ユニット１３として用いることができる。
【００３８】
出力ユニット１５は、制御装置１１の出力変数に関連づけられた出力信号を、対応する制御対象機器７に出力する。これにより、制御装置１１は、プログラムを実行することにより算出された出力変数に基づいて、制御対象機器７を制御できる。
【００３９】
出力ユニット１５は、出力信号の種類に応じた出力ユニットとして構成できる。例えば、制御対象機器７がモータであり、モータの位置制御などを行う場合には、モーションコントローラ機能を有した出力ユニットを用いることができる。また、例えば、制御対象機器７が電気炉である場合には、電気炉を制御するリレーを制御する信号（例えば、ＯＮ／ＯＦＦデューティ比を制御する信号）を出力する出力ユニットを用いることができる。
【００４０】
電源ユニット１７は、制御装置１１、入力ユニット１３、及び出力ユニット１５に電力を供給する。
なお、ＰＬＣシステム１は、上記の構成要素の全てを１の筐体内に組み込んだシステムであってもよいし、各構成要素を個別の筐体に組み込んで当該構成要素を接続してＰＬＣシステムとしてもよい。特に、入力ユニット１３及び出力ユニット１５を個別の構成要素とすることにより、ＰＬＣシステム１は、所望する制御対象機器及び信号入力部を所望の数接続できる。
【００４１】
（３）制御装置の構成
Ｉ．全体構成
次に、制御装置１１の構成の詳細について、図２及び図３Ａを用いて説明する。図２は、制御装置及び開発支援装置の構成を示す図である。図３Ａは、制御装置の詳細構成を示す図である。
上記のように、制御装置１１はＰＬＣシステムにおけるＣＰＵユニットである。図２に示すように、制御装置１１は、プログラムの実行などの演算処理を行うＣＰＵ１１１と、書き込みと読み出しとが可能な記憶領域を提供するＲＡＭ１１３と、読み出しのみを主目的としている記憶領域を提供するＲＯＭ１１５と、プログラム開発支援装置３との通信を行う通信インターフェース１１７と、記憶部１１９と、を有する。
【００４２】
通信インターフェース１１７は、例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などのデータ通信プロトコルを用いてデータ送受信を実行する。これにより、制御装置１１と、プログラム開発支援装置３に割当可能なアドレス数分のプログラム開発支援装置３との間にてデータ送受信できる。
【００４３】
記憶部１１９は、各種データを記憶領域である。本実施形態において、記憶部１１９に記憶されるデータとしては、新たなデータコンテナ１１９ａ（後述）及び第１更新履歴１１９ｂ（後述）がある。記憶部１１９は、例えば、ＳＤメモリカードなどのコンパクト記憶媒体と、当該記憶媒体のデータの書き込み及び読み出しを行う装置（図示せず）などとにより構成できる。
【００４４】
次に、制御装置１１の各種機能を実現する各部について、図３Ａを用いてさらに詳しく説明する。本実施形態において、以下に説明する制御装置１１の各部の機能は、図２に示す制御装置１１のＣＰＵ１１１において、ＲＯＭ１１５に記憶されたシステムプログラム１１５ａを実行することにより実現されている。
【００４５】
図３Ａに示すように、制御装置１１は、タスク実行部１１１１と、データコンテナ生成部１１１３と、第１ユーザプログラム生成部１１１５と、生成指示部１１１７と、送受信部１１７１と、を有する。
タスク実行部１１１１は、ＲＡＭ１１３に記憶された制御対象機器７を制御するユーザプログラム１１３１を参照し、ユーザプログラム１１３１を含むタスクを所定の周期にて繰り返し実行する。なお、タスク実行部１１１１において実行されるタスクの数は複数であってもよい。
【００４６】
タスク実行部１１１１は、ユーザプログラム１１３１を実行することにより、制御装置１１の内部において用いられ、制御システム１００における出力信号に関連付けられた出力変数を算出できる。
【００４７】
また、タスク実行部１１１１が、上記のＩ／Ｏリフレッシュ処理により、出力ユニット１５に対して、ユーザプログラムにより算出された出力変数に基づいた出力信号を出力するよう指令することにより、出力ユニットに接続された制御対象機器７が制御される。すなわち、ユーザプログラム１１３１の実行により、制御対象機器７が制御される。
【００４８】
データコンテナ生成部１１１３は、第１ユーザプログラム生成部１１１５（後述）において更新後の新たなユーザプログラム１１３１を生成するために用いられる新たなデータコンテナ１１９ａを生成し記憶する。新たなデータコンテナ１１９ａには、新たなユーザプログラム１１３１を生成するために用いられるユーザプログラム生成用資源１１９ａ−１が含まれている。
データコンテナ１１９ａは、ユーザプログラム１１３１を生成するために用いられるユーザプログラム生成用資源１１９ａ−１（普通は複数）をまとめて保存しているデータフォルダの一種である。このデータコンテナ１１９ａを用いてユーザプログラム１１３１が生成される際、データコンテナ１１９ａに保存されているユーザプログラム生成用資源１１９ａ−１が、第１ユーザプログラム生成部１１１５（後述）及びプログラム開発支援装置３において実行されるユーザプログラム生成処理プログラムにより参照されて、ユーザプログラムが生成される。
また、ユーザプログラム生成用資源１１９ａ−１は、ユーザプログラム１１３１を生成する際に用いられるソースプログラム（ユーザが認識可能な形式のプログラム）又は種々の設定情報を記載した設定ファイルのことである。設定情報には、制御システム１００におけるハードウェア構成及びハードウェア同士の接続関係を示す物理的情報と、上記のハードウェアの設定、変数のマッピング設定、タスク設定などの論理的情報とがある。
【００４９】
また、データコンテナ生成部１１１３は、新たなデータコンテナ１１９ａを生成する際に、第１更新履歴１１９ｂ（後述）に保存されている変更履歴１１９ｂ−１を用いる。従って、データコンテナ生成部１１１３は、第１更新履歴１１９ｂを保存している。変更履歴１１９ｂ−１は、後述するように、ユーザプログラム１１３１（データコンテナ１１９ａ）に対してどのような変更が行われたか（変更が加えられたユーザプログラム生成用資源１１９ａ−１、その具体的な変更内容（差分）など）が記録されている。
データコンテナ生成部１１１３の構成については、後ほど詳しく説明する。
【００５０】
第１ユーザプログラム生成部１１１５は、データコンテナ生成部１１１３（の第１保存部１１１３−３（後述））に保存される新たなデータコンテナ１１９ａに含まれるユーザプログラム生成用資源１１９ａ−１を用いてユーザプログラム１１３１を生成する。第１ユーザプログラム生成部１１１５は、生成指示部１１１７（後述）からの指示があった場合に、ユーザプログラム１１３１を生成する。
【００５１】
従って、第１ユーザプログラム生成部１１１５は、例えば、データコンテナ１１９ａ中のユーザプログラム生成用資源１１９ａ−１を用いて制御装置１１において実行可能な形式のプログラムを生成するコンパイラである。
【００５２】
生成指示部１１１７は、第１ユーザプログラム生成部１１１５に対して、ユーザプログラムを生成するように指示する。図３Ａに示すように、生成指示部１１１７は、外部（例えば、プログラム開発支援装置３）から、ユーザプログラム生成指示を受信すれば、第１ユーザプログラム生成部１１１５に対してユーザプログラムの生成を指示する。
【００５３】
これにより、第１ユーザプログラム生成部１１１５は、外部（プログラム開発支援装置３）からユーザプログラム生成指示を受信すれば、ユーザプログラム１１３１を生成できる。すなわち、任意のタイミングにおいてユーザプログラム１１３１を生成できる。
【００５４】
また、上記のユーザプログラム生成指示には、第１更新履歴１１９ｂに記憶されたどの変更履歴１１９ｂ−１を用いて新たなデータコンテナを生成するかを指定する変更履歴指定情報が含まれている。これにより、第１ユーザプログラム生成部１１１５は、任意の変更段階（変更履歴）において生成されるデータコンテナを用いてユーザプログラム１１３１を生成できる。
例えば、図４に示す第１更新履歴１１９ｂにおける更新番号１１の更新の実行時にユーザプログラム生成指示を受信し、変更履歴指定情報に「更新番号９」と記録されている場合、第１ユーザプログラム生成部１１１５は、更新番号９までの変更履歴１１９ｂ−１を適用（図４に示す例では、更新番号６から９までを適用）したデータコンテナ１１９ａを用いて、新たなユーザプログラム１１３１を生成する。
【００５５】
送受信部１１７１は、制御装置１１と外部（本実施形態においては、プログラム開発支援装置３）とのデータ通信を行う。従って、送受信部１１７１は、上記の通信インターフェース１１７である。
【００５６】
また、送受信部１１７１が外部（プログラム開発支援装置３）から内容を変更したユーザプログラム及び内容変更データコンテナを受信した場合、次の処理を行う。ここで、内容を変更したユーザプログラム１１３１は、プログラム開発支援装置３などにおいて作成された実行形式のユーザプログラム１１３１のことである。また、内容変更データコンテナ１１９ａは、上記の内容を変更したユーザプログラム１１３１を生成した際に用いられた内容変更ユーザプログラム生成用資源１１９ａ−１を含むデータコンテナ１１９ａである。
【００５７】
内容を変更したユーザプログラム１１３１と内容を変更したユーザプログラム１１３１を受信後、データコンテナ生成部１１１３は第１保存部１１１３−３（後述）に保存される。また、それとともに、第１変更管理部１１１３−１（後述）が、受信した内容変更データコンテナ１１９ａを第１更新履歴に記憶する。さらに、ＲＡＭ１１３に記憶されている（現在実行されている）ユーザプログラム１１３１が、受信した内容を変更したユーザプログラムに置き換えられる。すなわち、受信した内容を変更したユーザプログラム１１３１が、以後のタスク実行時にタスク実行部１１１１において実行される新たなユーザプログラム１１３１となる。
【００５８】
これにより、プログラム開発支援装置３などの外部においてユーザプログラム１１３１の内容の変更がなされた場合でも、現在実行されているユーザプログラム１１３１を内容を変更したユーザプログラム１１３１に置き換えることができる。
また、上記の内容を変更したユーザプログラム１１３１を生成する際に用いられた内容変更データコンテナ１１９ａが第１更新履歴１１９ｂに記憶されることにより、外部においてユーザプログラム１１３１の内容の変更がなされた場合でも、ユーザプログラム１１３１に対してどのような内容の変更がなされたかについての情報を共有できる。
【００５９】
ＩＩ．データコンテナ生成部の構成
次に、データコンテナ生成部１１１３の構成について、図３Ａを用いて説明する。図３Ａに示すように、データコンテナ生成部１１１３は、第１変更管理部１１１３−１と、第１保存部１１１３−３と、を有する。第１変更管理部１１１３−１は、第１保存部１１１３−３に保存されたデータコンテナ（すなわち、現在実行されているユーザプログラム１１３１を生成する際に用いられたデータコンテナ１１９ａ）の内容が変更された場合、データコンテナの変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶する。
【００６０】
変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶する際、第１変更管理部１１１３−１は、第１保存部１１１３−３（後述）に保存されているデータコンテナ１１９ａに含まれるユーザプログラム生成用資源１１９ａ−１への変更の差分を変更履歴１１９ｂ−１に記憶する。
【００６１】
第１ユーザプログラム生成部１１１５又はプログラム開発支援装置３などにおいてユーザプログラム１１３１が生成される際には、ソースファイルがコンパイルされると共に、設定ファイルにおける設定がソースファイルのコンパイル中に反映されて、実行可能な形式のユーザプログラム１１３１が生成される。
【００６２】
また、変更履歴１１９ｂ−１を記憶するとともに、第１変更管理部１１１３−１は、所定のタイミングにおいて、変更履歴１１９ｂ−１を用いて生成された新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
第１変更管理部１１１３−１は、第１更新履歴１１９ｂに記憶されているデータコンテナ１１９ａに対して、上記の変更履歴１１９ｂ−１を反映させることにより新たなデータコンテナ１１９ａを生成する。
【００６３】
例えば、第１更新履歴１１９ｂに記憶されるデータコンテナ１１９ａが新規のデータコンテナ１１９ａである場合には、新規のデータコンテナ１１９ａが生成されてから今回の変更履歴１１９ｂ−１に至るまでの全ての変更履歴１１９ｂ−１が、第１更新履歴１１９ｂに記憶されているデータコンテナ１１９ａに適用される。上記の「新規のデータコンテナ１１９ａ」は、ユーザプログラム１１３１が何もない状態から新規に生成されたときに用いられたデータコンテナ１１９ａである。
【００６４】
なお、第１更新履歴１１９ｂに記憶されるデータコンテナ１１９ａは新規にユーザプログラム１１３１を生成したときに用いられたデータコンテナ１１９ａに限られない。第１更新履歴１１９ｂに記憶されるデータコンテナ１１９ａは、所定の更新段階（変更履歴）において生成されたデータコンテナ１１９ａであってもよい。この場合、新たなデータコンテナ１１９ａは、第１更新履歴１１９ｂに記憶されたデータコンテナ１１９ａが生成されたときの変更履歴１１９ｂ−１から現在の変更履歴１１９ｂ−１までの変更履歴を当該データコンテナ１１９ａに反映することにより、生成される。なお、上記の変更履歴１１９ｂ−１の詳細については後述する。
【００６５】
第１保存部１１１３−３には、データコンテナ１１９ａが保存される。第１保存部１１１３−３に保存されるデータコンテナ１１９ａは、現在実行されているユーザプログラム１１３１を生成した際に用いられたデータコンテナ１１９ａが保存されている。これにより、第１保存部１１１３−３に保存されたデータコンテナ１１９ａを参照することにより、現在実行されているユーザプログラム１１３１を生成したデータコンテナ１１９ａの内容を知ることができる。
【００６６】
つまり、第１保存部１１１３−３に、現在実行されているユーザプログラム１１３１を生成したデータコンテナ１１９ａが保存されていることにより、現在実行されているユーザプログラム１１３１が、どの変更段階（変更履歴）において生成されたデータコンテナに含まれるユーザプログラム生成用資源１１９ａ−１により生成されたかについての情報を共有できる。
【００６７】
なお、第１変更管理部１１１３−１は、第１保存部１１１３−３に保存されているデータコンテナ１１９ａに対して第１更新履歴１１９ｂに記憶された変更履歴１１９ｂ−１の内容を適用して、新たなデータコンテナ１１９ａとしてもよい。この場合、第１変更管理部１１１３−１は、第１保存部１１１３−３に保存されたデータコンテナ１１９ａに、第１保存部１１１３−３に保存されたデータコンテナ１１９ａが生成された変更履歴１１９ｂ−１から現在の変更履歴１１９ｂ−１までを反映させることにより、新たなデータコンテナ１１９ａを生成できる。
【００６８】
ＩＩＩ．更新履歴の構成
次に、第１更新履歴１１９ｂの構成について、図４を用いて説明する。図４は、第１更新履歴の構成の一例を示す図である。
図４に示すように、第１更新履歴１１９ｂは、更新番号記録領域１１９ｂ−１１と、更新対象記録領域１１９ｂ−１２と、更新内容記録領域１１９ｂ−１３と、更新ユーザ記録領域１１９ｂ−１４と、更新日時記録領域１１９ｂ−１５と、ユーザプログラム生成実行記録領域１１９ｂ−１６と、備考記録領域１１９ｂ−１７と、を有する。また、第１更新履歴１１９ｂに記録されたデータ１行分が、変更履歴１１９ｂ−１に対応する。
【００６９】
更新番号記録領域１１９ｂ−１１は、変更履歴１１９ｂ−１を識別する更新番号を記録する。更新対象記録領域１１９ｂ−１２は、どのユーザプログラム生成用資源１１９ａ−１に対して変更がなされたかを記録する。なお、更新番号１の更新対象記録領域１１９ｂ−１２に記載の「新規」は、ユーザプログラム１１３１のためのデータコンテナ１１９ａが新規作成されてことを意味している。
【００７０】
更新内容記録領域１１９ｂ−１３は、更新対象記録領域１１９ｂ−１２に記録されたユーザプログラム生成用資源１１９ａ−１に対する具体的な更新内容を記録する。新たなユーザプログラム１１３１を生成するために用いる新たなデータコンテナ１１９ａは、第１更新履歴１１９ｂ又は第１保存部に保存されたデータコンテナ１１９ａにおいて、上記の更新対象記録領域１１９ｂ−１２に記録されたユーザプログラム生成用資源１１９ａ−１に対して、更新内容記録領域１１９ｂ−１３に記録された更新内容を適用することにより、生成できる。
【００７１】
更新ユーザ記録領域１１９ｂ−１４は、内容の変更を実行したユーザ名を記録する。更新日時記録領域１１９ｂ−１５は、内容の変更が実行された日時（更新日時）を記録する。ユーザプログラム生成実行記録領域１１９ｂ−１６は、どの変更履歴１１９ｂ−１においてユーザプログラム１１３１が生成されたかを記録する。図４に示す例においては、更新番号１の更新の実行時（新規作成）と更新番号６の更新の実行時とにおいて、ユーザプログラム１１３１が生成又は外部から受信されている。すなわち、図４に示す例においては、現在、更新番号６の更新時のデータコンテナ１１９ａが第１保存部１１１３−３に保存されている。従って、現在（例えば、更新番号１２の更新時）は、更新番号６の更新時のデータコンテナ１１９ａの内容までさかのぼって、データコンテナ１１９ａを生成できる（現在生成可能なデータコンテナ１１９ａであって最も古い更新内容のデータコンテナは、更新番号６の更新時のデータコンテナ１１９ａ）。
【００７２】
図４に示す更新履歴の場合、第１保存部１１１３−３には、更新番号６の更新の実行時において生成されたデータコンテナ１１９ａが保存されている。なぜなら、更新番号６の更新の実行が、ユーザプログラム１１３１を生成した最も直近の更新の実行であるからである。
【００７３】
備考記録領域１１９ｂ−１７は、各更新に対する備考を記録する。当該更新に対する備考は、各データコンテナ１１９ａの更新がなされたときに、ユーザにより記録されてもよいし、制御装置１１が自律的に更新した場合は、第１変更管理部１１１３−１が記録してもよい。
図４に示す例では、更新番号６の備考記録領域１１９ｂ−１７に「資源Ａ追加」と記載されている。この場合、更新対象記録領域１１９ｂ−１２には、「資源Ａ」と記録されており、更新内容記録領域１１９ｂ−１２には、「追加」と記録されている。このように、備考記録領域１１９ｂ−１７には、ユーザプログラム生成用資源１１９ａ−１（データコンテナ１１９ａ）に対する変更内容の概略を記録できる。
【００７４】
図４に示すような第１更新履歴１１９ｂにより、制御システム１００においては、ユーザプログラム１１３１に対してどのような内容の変更が加えられてきたかを内容の更新毎に記憶できる。また、図４に示す第１更新履歴１１９ｂが、プログラム開発支援装置３などにより閲覧可能となっていれば、ユーザプログラム１１３１の開発を行うユーザは、プログラム開発支援装置３を用いて、ユーザプログラムに対して行われた変更の具体的内容を視覚的に確認できる。
【００７５】
本実施形態の制御装置１１が上記の構成要素を有することにより、現在実行されているユーザプログラム１１３１が、どの変更段階（変更履歴１１９ｂ−１）において生成されたデータコンテナ１１９ａに含まれるユーザプログラム生成用資源１１９ａ−１により生成されたかについての情報を共有できる。すなわち、現在実行されているユーザプログラムが、どの変更段階におけるユーザプログラム１１３１であるかについての情報を共有できる。
【００７６】
なお、上記の図３Ａを用いて説明した制御装置１１においては、プログラム開発支援装置３からのユーザプログラム生成指示を受信した場合に、第１ユーザプログラム生成部１１１５はユーザプログラム１１３１を生成していた。しかし、ユーザプログラム１１３１を生成するタイミングはユーザプログラム生成指示を受信したときに限られない。
【００７７】
変形例として、図３Ｂに示すように、第１変更管理部１１１３−１からの指示を受信し、当該指示の受信時に、生成指示部１１１７が第１ユーザプログラム生成部１１１５に対してユーザプログラム１１３１の生成を指示してもよい。すなわち、第１変更管理部１１１３−１からの指示により、ユーザプログラム１１３１を生成してもよい。図３Ｂは、制御装置の変形例を示す図である。
【００７８】
この場合、第１変更管理部１１１３−１がデータコンテナ１１９ａの内容の変更を検出するたびに、第１ユーザプログラム生成部１１１５に対して、ユーザプログラム１１３１を生成するよう指示してもよい。これにより、各段階のデータコンテナ１１９ａの内容の変更を変更履歴１１９ｂ−１に残しつつ、直近の内容の変更がなされたデータコンテナ１１９ａを用いて最新の更新状態のユーザプログラム１１３１を生成できる。
【００７９】
（４）プログラム開発支援装置の構成
次に、プログラム開発支援装置３の構成の詳細について、図２を用いて説明する。
プログラム開発支援装置３は、例えば、パーソナルコンピュータなどのコンピュータである。よって、図２に示すように、プログラム開発支援装置３は、プログラムの実行などの演算処理を行うＣＰＵ３１と、記憶領域を提供する記憶部３３と、キーボードやマウスなどの入力手段により構成されている操作部３５と、制御装置１１との通信を行う通信インターフェース３７と、画面表示を行う表示部３９と、を有する。
【００８０】
なお、通信インターフェース３７は、制御装置１１におけるデータ通信プロトコルと同一のプロトコルを用いて、制御装置１１とデータ送受信を行う。従って、本実施形態において、通信インターフェース３７は、例えば、ＴＣＰ／ＩＰプロトコルにて通信可能なインターフェースである。
【００８１】
上記のプログラム開発支援装置３においては、記憶部３３に記憶されている開発支援プログラム３３ａをプログラム開発支援装置３上にて実行することにより、ユーザプログラム１１３１に対する編集、又は、ユーザプログラム１１３１の生成ができる。
本実施形態においては、プログラム開発支援装置３は、ユーザプログラム１１３１（データコンテナ１１９ａ）を編集するとき、第１保存部１１１３−３（データコンテナ生成部１１１３）に保存されているデータコンテナ１１９ａ、又は、データコンテナ１１９ａに含まれているユーザプログラム生成用資源１１９ａ−１をダウンロードして、データコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を編集する。
【００８２】
上記のように、第１保存部１１１３−３に保存されているデータコンテナ１１９ａは、制御装置１１において現在実行されているユーザプログラム１１３１を生成する際に用いられたデータコンテナである。そのため、第１保存部１１１３−３に保存されているデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１をダウンロードして編集することは、現在実行されているユーザプログラム１１３１の内容を変更することになる。すなわち、上記の方法によりプログラム開発支援装置３上にてデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を生成することにより、オンラインエディット機能が実現されている。
【００８３】
データコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を編集後、プログラム開発支援装置３は、ユーザの指示により、編集後のデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を用いて内容を変更したユーザプログラム１１３１を生成して、データコンテナ１１９ａとともに制御装置１１に送信するか、又は、編集したデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１のみを制御装置１１に送信するかを選択可能となっている。
【００８４】
これにより、プログラム開発支援装置３は、編集したデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１の内容をユーザプログラム１１３１に対してすぐに適用するか、すぐには適用せずに制御装置１１において内容の変更を変更履歴１１９ｂ−１として記憶しておくかを選択できる。
【００８５】
（５）制御システムにおけるユーザプログラムの更新動作
次に、制御システム１００（制御装置１１）におけるユーザプログラム１１３１の更新動作について、図５を用いて説明する。図５は、制御システムにおけるユーザプログラムの更新動作を示すフローチャートである。以下に説明するユーザプログラム１１３１の更新動作は、制御システム１００の制御装置１１において、ユーザプログラム１１３１の実行中に行われるユーザプログラム１１３１の更新動作（オンラインエディット）である。
【００８６】
まず、プログラム開発支援装置３において、開発支援プログラム３３ａが実行されることにより、データコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１の編集が可能となる。その後、プログラム開発支援装置３を用いるユーザは、データコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を編集する（ステップＳ１）。
具体的には、まず、プログラム開発支援装置３が制御装置１１の第１保存部１１１３−３に保存されているデータコンテナ１１９ａ又は当該データコンテナ１１９ａ中の編集したいユーザプログラム生成用資源１１９ａ−１を、制御装置１１から受信する。その後、ユーザは、受信したデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を編集する。これにより、第１保存部１１１３−３に保存されたデータコンテナ１１９ａの内容が変更される。
【００８７】
データコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１の編集後、プログラム開発支援装置３は、編集後のデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を制御装置１１に送信する（ステップＳ２）。このとき、上記のステップＳ１の段階において、編集後のデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を用いてユーザプログラム１１３１を生成してもよい。そして、編集後のデータコンテナ１１９ａと共に生成したユーザプログラム１１３１を制御装置１１に送信してもよい。
【００８８】
プログラム開発支援装置３などにおいてデータコンテナ１１９ａ又はユーザプログラム生成用資源１１９ａ−１を編集中、制御装置１１においては、編集後の内容を変更したデータコンテナ１１９ａ、ユーザプログラム生成用資源１１９ａ−１、及び／又は内容を変更したユーザプログラム１１３１が受信されたかどうか確認する（ステップＳ３）。
【００８９】
制御装置１１において、データコンテナ１１９ａ、ユーザプログラム生成用資源１１９ａ−１、及び／又は内容を変更したユーザプログラム１１３１が受信されていない場合（ステップＳ３において「Ｎｏ」の場合）、ステップＳ１に戻り、制御装置１１は、編集後のデータコンテナ１１９ａ、ユーザプログラム生成用資源１１９ａ−１、及び／又は内容が変更されたユーザプログラム１１３１の受信のため待機する。
【００９０】
一方、制御装置１１において、データコンテナ１１９ａ、ユーザプログラム生成用資源１１９ａ−１、及び／又は内容を変更したユーザプログラム１１３１を受信した場合（ステップＳ３において「Ｙｅｓ」の場合）、制御装置１１は、内容を変更したユーザプログラム１１３１を受信したかどうかを確認する（ステップＳ４）。
【００９１】
制御装置１１が内容を変更したユーザプログラム１１３１を受信している場合（ステップＳ４において「Ｙｅｓ」の場合）、第１変更管理部１１１３−１は、当該内容を変更したユーザプログラム１１３１とともに受信したデータコンテナ１１９ａの変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶する（ステップＳ５）。
【００９２】
このとき、受信したデータコンテナ１１９ａそのもの（ユーザプログラム生成用資源１１９ａ−１の全部）を変更履歴１１９ｂ−１として記憶してもよいし、受信したデータコンテナ１１９ａ中の内容を変更したユーザプログラム生成用資源１１９ａ−１（内容変更ユーザプログラム生成用資源１１９ａ−１）を変更履歴として記録してもよい。
このように、プログラム開発支援装置３によりユーザプログラム１１３１の内容が変更されてユーザプログラム１１３１が実行形式に変換されて送信されてきても、制御装置１１において、ユーザプログラム１１３１に対してどのような内容の変更がなされたかについての情報を共有できる。
【００９３】
また、第１変更管理部１１１３−１は、受信したデータコンテナ１１９ａ（内容変更データコンテナ１１９ａ）を第１保存部１１１３−３に保存する。その後、第１変更管理部１１１３−１は、送受信部１１７１に対して、受信した内容を変更したユーザプログラム１１３１を、現在実行されているユーザプログラム１１３１が記憶されている領域に記憶するよう指令する（ステップＳ６）。これにより、受信した内容を変更したユーザプログラム１１３１を、以後タスク実行部１１１１において実行される新たなユーザプログラム１１３１とできる。これにより、今後実行されるユーザプログラム１１３１を生成するときに用いたデータコンテナ１１９ａを、第１保存部１１１３−３に保存できる。
その後、制御システム１００におけるユーザプログラム１１３１の更新を終了する。
【００９４】
なお、上記のステップＳ１〜Ｓ６の方法にてユーザプログラムの内容を更新する場合、制御対象機器７を停止させる必要があるのは、ステップＳ６の実行時において、ユーザプログラム１１３１を新たなユーザプログラム１１３１とする場合のみである。これにより、ユーザプログラム１１３１の内容の変更をする場合の制御対象機器７の停止時間を短縮できる。
【００９５】
一方、制御装置１１において、内容を変更したユーザプログラム１１３１が受信されていない場合（ステップＳ４において「Ｎｏ」の場合）、第１変更管理部１１１３−１は、第１更新履歴１１９ｂに変更履歴１１９ｂ−１を記憶する（ステップＳ７）。このとき、変更履歴１１９ｂ−１としては、第１保存部１１１３−３に保存されているデータコンテナ１１９ａからの差分が記憶される。
例えば、ユーザプログラム生成用資源１１９ａ−１の内容が変更されている場合には、受信したユーザプログラム生成用資源１１９ａ−１、又は、データコンテナ１１９ａ中の内容が変更されたユーザプログラム生成用資源１１９ａ−１（差分）が変更履歴１１９ｂ−１として記憶される。
【００９６】
また、データコンテナ１１９ａに含まれていたユーザプログラム生成用資源１１９ａ−１が削除または新たに追加されることにより、データコンテナ１１９ａの内容が変更された場合には、内容が変更された（ユーザプログラム生成用資源１１９ａ−１が削除又は追加された）データコンテナ１１９ａを変更履歴１１９ｂ−１として記憶する。
【００９７】
変更履歴１１９ｂ−１を記憶後、第１ユーザプログラム生成部１１１５が、ユーザプログラム１１３１を生成するかどうかを判断する（ステップＳ８）。本実施形態においては、第１ユーザプログラム生成部１１１５が、生成指示部１１１７から指示を受信したかどうかにより判断する。本実施形態においては、プログラム開発支援装置３などから生成指示部１１１７に対してユーザプログラム生成指示が送信されたときに、ユーザプログラム１１３１を生成すると判断する。
また、図３Ｂに示す制御装置１１の変形例においては、第１変更管理部１１１３−１において、データコンテナ１１９ａの内容の変更を検出する毎（すなわち、内容の変更毎）に、ユーザプログラム１１３１を生成すると判断する。
【００９８】
第１ユーザプログラム生成部１１１５において、ユーザプログラム１１３１を生成しないと判断された場合（ステップＳ８において「Ｎｏ」の場合）、ユーザプログラム１１３１の更新を終了する。これにより、データコンテナ１１９ａの内容が変更されたがユーザプログラム１１３１が生成されなかった場合でも、データコンテナ１１９ａに対する内容の変更に関する情報（変更履歴１１９ｂ−１）は記憶できる。
【００９９】
一方、第１ユーザプログラム生成部１１１５において、ユーザプログラム１１３１を生成すると判断された場合（ステップＳ８において「Ｙｅｓ」の場合）、新たなデータコンテナ１１９ａの生成と保存が実行される（ステップＳ９）。
具体的には、第１変更管理部１１１３−１が、第１更新履歴１１９ｂに保存されているデータコンテナ１１９ａと、ユーザプログラム生成指示に含まれる変更履歴指定情報に示されている変更履歴１１９ｂ−１とに基づいて、上記にて説明した方法にて新たなデータコンテナ１１９ａが生成される。
【０１００】
新たなデータコンテナ１１９ａを生成後、第１変更管理部１１１３−１は、生成した新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
【０１０１】
新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存後、第１ユーザプログラム生成部１１１５は、第１保存部１１１３−３に保存されている新たなデータコンテナ１１９ａに含まれている新たなユーザプログラム生成用資源１１９ａ−１を用いて、新たなユーザプログラム１１３１を生成する（ステップＳ１０）。
【０１０２】
第１ユーザプログラム生成部１１１５が新たなユーザプログラム１１３１を生成後、第１ユーザプログラム生成部１１１５は、例えば、生成した新たなユーザプログラム１１３１をＲＡＭ１１３の現在実行されているユーザプログラム１１３１の記憶領域に書き込むことにより、新たなユーザプログラム１１３１を以後タスクの実行時に実行されるユーザプログラム１１３１とできる（ステップＳ１１）。
【０１０３】
上記において説明したステップを実行することにより、制御システム１００（制御装置１１）においては、現在実行されているユーザプログラムが、どの変更段階（変更履歴１１９ｂ−１）において生成されたデータコンテナに含まれるユーザプログラム生成用資源により生成されたかについての情報を共有できる。
また、データコンテナ１１９ａの内容の変更を行ったときにユーザプログラム１１３１の生成がなされていない場合でも、当該内容の変更の具体的内容が、変更履歴１１９ｂ−１として記憶できる。その結果、ユーザプログラム１１３１に対してなされた全ての内容の変更を第１更新履歴１１９ｂから参照できる。
【０１０４】
なお、上記のステップＳ１〜Ｓ１１の方法にてユーザプログラムの内容を更新する場合、制御対象機器７を停止させる必要があるのは、ステップＳ８において、ユーザプログラム生成指示を受信し（所定のタイミングにて）、ステップＳ１１の実行時において、ユーザプログラム１１３１を新たなユーザプログラム１１３１とする場合のみである。これにより、ユーザプログラム１１３１の内容の変更をする場合の制御対象機器７の停止時間を短縮できる。
【０１０５】
２．第２実施形態
上記において説明した第１実施形態に係る制御システム１００においては、プログラム開発支援装置３以外のコンピュータは存在していなかった。しかし、これに限られない。図６に示すように、以下に説明する第２実施形態に係る制御システム２００には、サーバ２がさらに接続されていてもよい。図６は、第２実施形態に係る制御システムの構成を示す図である。
【０１０６】
第２実施形態に係る制御システム２００は、ＰＬＣシステム１と、プログラム開発支援装置３と、サーバ２と、を備える。第２実施形態に係る制御システム２００は、ＰＬＣシステム１の制御装置１１と、プログラム開発支援装置３と、サーバ２と、が通信ネットワークＮＷを介して、互いに通信可能に接続されている。
【０１０７】
第２実施形態に係る制御システム２００におけるＰＬＣシステム１（制御装置１１）と、プログラム開発支援装置３とは、第１実施形態において説明したＰＬＣシステム１とプログラム開発支援装置３と同じであるため、説明を省略する。
【０１０８】
サーバ２は、例えば、サーバとして動作するコンピュータである。よって、図６に示すように、サーバ２は、プログラムの実行などの演算処理を行うＣＰＵ２１と、サーバ機能を提供するサーバプログラム２３ａが記憶されたＲＡＭ２３と、第２更新履歴２１３ａ（後述）を記憶する記憶領域を提供する記憶部２５と、通信インターフェース２７とを有する。
【０１０９】
通信インターフェース２７は、制御システム２００におけるデータ通信プロトコルと同一のプロトコルを用いて、制御装置１１及びプログラム開発支援装置３とデータ送受信を行う。従って、本実施形態において、通信インターフェース２７は、例えば、ＴＣＰ／ＩＰプロトコルにて通信可能なインターフェースである。
【０１１０】
次に、サーバ２の詳細構成について、図７を用いて説明する。図７は、サーバの詳細構成を示す図である。図７に示すサーバ２の各構成の機能は、上記のサーバプログラム２３ａにより実現されている。
図７に示すように、サーバ２は、送受信部２１１と第２変更管理部２１３とを有する。送受信部２１１は、上記の通信インターフェース２７を用いて、制御装置１１及びプログラム開発支援装置３とデータの送受信を行う。
【０１１１】
第２変更管理部２１３は、第２更新履歴２１３ａを記憶する。第２更新履歴２１３ａは、データコンテナ１１９ａの変更履歴１１９ｂ−１を記憶している。第２変更管理部２１３は、以下の３つの方法により、第２更新履歴２１３ａに変更履歴１１９ｂ−１を記憶する。
【０１１２】
１つめは、制御装置１１の第１変更管理部１１１３−１に記憶された第１更新履歴１１９ｂを複製した複製更新履歴を第２更新履歴２１３ａとして保存する（ミラーリング）。これにより、第２変更管理部２１３において、第１更新履歴１１９ｂと常時一致する第２更新履歴２１３ａを保存できる。すなわち、第１更新履歴１１９ｂを予備的に第２変更管理部２１３に保存できる。
【０１１３】
２つめは、制御装置１１（第１変更管理部１１１３−１）が第１更新履歴１１９ｂを第２変更管理部２１３にバックアップして第２更新履歴２１３ａとして保存する（バックアップ）。これによっても、第１更新履歴１１９ｂを予備的に第２変更管理部２１３に保存できる。
【０１１４】
外部（プログラム開発支援装置３）からデータコンテナ１１９ａの内容の変更を受信後、プログラム開発支援装置３から受信したデータコンテナ１１９ａの変更履歴である外部変更履歴を第２更新履歴２１３ａに記憶する。そして、第２変更管理部２１３は、第２更新履歴２１３ａに記憶した外部変更履歴を、第１変更管理部１１１３−１に送信する（リストア）。
【０１１５】
このとき、第１変更管理部１１１３−１は、受信した外部変更履歴を第１更新履歴１１９ｂに記憶する。また、第１変更管理部１１１３−１は、それとともに、所定のタイミングにおいて外部変更履歴に基づいて生成したデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
【０１１６】
これにより、プログラム開発支援装置３などの外部からデータコンテナ１１９ａの内容の変更の要求があった場合でも、外部から受信したデータコンテナ１１９ａの変更履歴１１９ｂ−１を、第１変更管理部１１１３−１の第１更新履歴１１９ｂ、及び、第２変更管理部２１３の第２更新履歴２１３ａの両方に保存できる。
【０１１７】
上記のように、制御システム２００にサーバ２を備えることにより、制御装置１１に記憶されている第１更新履歴１１９ｂをサーバ２に予備的に保存できる。その結果、制御装置１１の不調などにより、制御装置１１に記憶されている第１更新履歴１１９ｂにアクセスできない場合、又は、第１更新履歴１１９ｂが制御装置１１から失われた場合に、第１更新履歴１１９ｂをサーバ２から制御装置１１へと戻すことができる。
【０１１８】
３．第３実施形態
上記において説明した第１実施形態に係る制御システム１００及び第２実施形態に係る制御システム２００においては、制御装置１１が、実行形式のユーザプログラム１１３１を生成する機能（第１ユーザプログラム生成部１１１５）を有していた。しかし、これに限られない。図８Ａ及び図８Ｂに示すように、第３実施形態に係る制御システム３００においては、実行形式のユーザプログラム１１３１を生成する機能を、ユーザプログラム生成サーバ４が有していてもよい。図８Ａは、第３実施形態に係る制御システム３００の構成を示す図である。図８Ｂは、第３実施形態に係る制御システム３００の詳細構成を示す図である。
【０１１９】
第３実施形態に係る制御システム３００は、ＰＬＣシステム１と、プログラム開発支援装置３と、ユーザプログラム生成サーバ４と、を備える。図８Ａに示すように、第３実施形態に係る制御システム３００は、ＰＬＣシステム１の制御装置１１と、プログラム開発支援装置３と、ユーザプログラム生成サーバ４と、が通信ネットワークＮＷを介して、互いに通信可能に接続されている。
【０１２０】
第３実施形態に係る制御システム３００におけるプログラム開発支援装置３は、第１実施形態において説明したプログラム開発支援装置３と同じであるため、説明を省略する。
また、図８Ｂに示すように、ＰＬＣシステム１の制御装置１１は、第１ユーザプログラム生成部１１１５と生成指示部１１１７とを備えていないこと以外は、第１実施形態及び第２実施形態における制御装置１１と同じ構成を有する。従って、制御装置１１の説明も省略する。
【０１２１】
ユーザプログラム生成サーバ４は、例えば、サーバとして動作するコンピュータである。よって、図８Ａに示すように、ユーザプログラム生成サーバ４は、プログラムの実行などの演算処理を行うＣＰＵ４１と、ユーザプログラム１１３１を生成する機能を有する生成プログラム４３ａが記憶されたＲＡＭ４３と、データコンテナ１１９ａを保存する記憶領域を提供する記憶部４５と、制御装置１１及び、必要に応じて、プログラム開発支援装置３とデータの送受信を行う通信インターフェース４７とを有する。
【０１２２】
次に、ユーザプログラム生成サーバ４の詳細構成について、図８Ｂを用いて説明する。図８Ｂに示すユーザプログラム生成サーバ４の各構成の機能は、上記の生成プログラム４３ａにより実現されている。
図８Ｂに示すように、ユーザプログラム生成サーバ４は、第３保存部４１１と、第２ユーザプログラム生成部４１３と、送受信部４１５と、を有する。
【０１２３】
第３保存部４１１は、第１変更管理部１１１３−１において生成されたデータコンテナ１１９ａを受信し保存する。第２ユーザプログラム生成部４１３は、第３保存部４１１に保存されたデータコンテナ１１９ａの含まれるユーザプログラム生成用資源１１９ａ−１を用いてユーザプログラム１１３１を生成する。また、第２ユーザプログラム生成部４１３は、生成したユーザプログラム１１３１を制御装置１１に送信する。
送受信部４１５は、上記の通信インターフェース４７を用いて、制御装置１１及び、必要に応じてプログラム開発支援装置３とデータの送受信を行う。
【０１２４】
第３実施形態に係る制御システム３００においては、所定のタイミング（例えば、プログラム開発支援装置３からのユーザプログラム生成指示の受信タイミング）において、第１変更管理部１１１３−１が変更履歴１１９ｂ−１を用いて新たなデータコンテナ１１９ａを生成した際に、新たなデータコンテナ１１９ａを、第１保存部１１１３−３だけでなく、ユーザプログラム生成サーバ４の第３保存部４１１にも保存する。
【０１２５】
第３保存部４１１に新たなデータコンテナ１１９ａが保存された際に、第２ユーザプログラム生成部４１３が、第３保存部に保存された新たなデータコンテナ１１９ａを用いてユーザプログラム１１３１を生成する。その後、第２ユーザプログラム生成部４１３は、生成したユーザプログラム１１３１を制御装置１１に送信する。
上記の生成したユーザプログラム１１３１を受信した制御装置１１は、受信したユーザプログラム１１３１を、ＲＡＭ１１３のユーザプログラム１１３１が記憶されている領域に書き込む。これにより、ユーザプログラム生成サーバ４において生成したユーザプログラム１１３１を、制御装置１１におけるユーザプログラム１１３１として記憶できる。
【０１２６】
上記のようにユーザプログラム生成サーバ４においてユーザプログラム１１３１の生成がなされることにより、制御装置１１における計算負荷を低減できる。
【０１２７】
４．実施形態の共通事項
上記第１〜第３実施形態は、下記の構成及び機能を有している。
第１実施形態及び第２実施形態に係る制御装置１１（制御装置の一例）は、タスク実行部１１１１（タスク実行部の一例）と、第１保存部１１１３−３（第１保存部の一例）と、第１変更管理部１１１３−１（第１変更管理部の一例）と、第１ユーザプログラム生成部１１１５（第１ユーザプログラム生成部の一例）と、を備える。
タスク実行部１１１１は、制御対象機器７（制御対象機器の一例）を制御するユーザプログラム１１３１（ユーザプログラムの一例）を含むタスクを所定の周期にて繰り返し実行する。第１保存部１１１３−３には、データコンテナ１１９ａ（データコンテナの一例）が保存される。データコンテナ１１９ａは、ユーザプログラム生成用資源１１９ａ−１（ユーザプログラム生成用資源の一例）を含む。ユーザプログラム生成用資源１１９ａ−１は、ユーザプログラム１１３１を生成するために用いられる資源のことである。
【０１２８】
第１変更管理部１１１３−１は、第１保存部１１１３−３に保存されたデータコンテナ１１９ａの内容が変更された場合、データコンテナ１１９ａの変更履歴１１９ｂ−１（変更履歴の一例）を第１更新履歴１１９ｂ（第１更新履歴の一例）に記憶する。また、それとともに、第１変更管理部１１１３−１は、所定のタイミングにおいて変更履歴１１９ｂ−１を用いて生成された新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
第１ユーザプログラム生成部１１１５は、所定のタイミングにおいて、第１保存部１１１３−３に保存される新たなデータコンテナ１１９ａに含まれる新たなユーザプログラム生成用資源１１９ａ−１を用いてユーザプログラム１１３１を生成する。
【０１２９】
第１実施形態及び第２実施形態に係る制御装置１１においては、第１保存部１１１３−３に保存されたデータコンテナ１１９ａの内容が変更されると、第１変更管理部１１１３−１がデータコンテナの変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶する。また、第１変更管理部１１１３−１は、所定のタイミングにおいて、変更履歴１１９ｂ−１を用いて新たなデータコンテナ１１９ａを生成し、生成した新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
その後、第１ユーザプログラム生成部１１１５が、所定のタイミングにおいて、第１保存部１１１３−３に保存されている上記の新たなデータコンテナ１１９ａに含まれる新たなユーザプログラム生成用資源１１９ａ−１を用いて新たなユーザプログラム１１３１を生成する。
【０１３０】
従って、第１実施形態及び第２実施形態に係る制御装置１１においては、新たなユーザプログラム１１３１を生成する際に用いられた新たなユーザプログラム生成用資源１１９ａ−１を含む新たなデータコンテナ１１９ａが、第１保存部１１１３−３に保存されている。また、データコンテナ１１９ａへの変更履歴１１９ｂ−１が第１更新履歴１１９ｂに記憶されている。
【０１３１】
これにより、第１実施形態及び第２実施形態に係る制御装置１１において、現在実行されているユーザプログラム１１３１が、どの変更段階（変更履歴１１９ｂ−１）において生成されたデータコンテナ１１９ａに含まれるユーザプログラム生成用資源１１９ａ−１により生成されたかについての情報を共有できる。すなわち、現在実行されているユーザプログラム１１３１が、どの変更段階におけるユーザプログラム１１３１であるかについての情報を共有できる。
【０１３２】
また、第１ユーザプログラム生成部１１１５が、所定のタイミングにおいてユーザプログラム１１３１を生成している。これにより、オンラインエディット機能においてユーザプログラム１１３１の内容の変更をする際に、ユーザプログラムの更新のための制御対象機器の停止時間を短縮できる。なぜなら、ユーザプログラム１１３１の更新のための制御対象機器７の停止時間を、ユーザプログラム１１３１を生成したときだけ（すなわち、所定のタイミングだけ）にできるからである。
【０１３３】
第１実施形態及び第２実施形態に係る制御装置１１において、所定のタイミングは、第１変更管理部１１１３−１がデータコンテナ１１９ａの内容の変更を検出するタイミングとしている。これにより、制御装置１１においては、各段階のデータコンテナ１１９ａの内容の変更を変更履歴１１９ｂ−１に残しつつ、直近の内容の変更がなされたデータコンテナ１１９ａを用いて最新の更新状態のユーザプログラム１１３１を生成できる。
【０１３４】
第１実施形態及び第２実施形態に係る制御装置１１において、所定のタイミングは、ユーザプログラム生成指示（ユーザプログラム生成指示）を外部から受信したタイミングとしている。この場合、ユーザプログラム生成指示には、第１更新履歴１１９ｂに記憶されたどの変更履歴１１９ｂ−１を用いて新たなデータコンテナ１１９ａを生成するかを指定する変更履歴指定情報（変更履歴指定情報の一例）が含まれている。
また、第１ユーザプログラム生成部１１１５は、変更履歴指定情報に指定された変更履歴１１９ｂ−１を用いて生成された新たなデータコンテナ１１９ａを用いてユーザプログラム１１３１を生成している。
【０１３５】
これにより、予め決定したタイミングにおいて新たなユーザプログラム１１３１を生成できる。また、第１更新履歴１１９ｂに記憶されているどの変更履歴１１９ｂ−１を用いて新たなデータコンテナ１１９ａを生成するかを指定可能とすることにより、任意の変更段階（変更履歴１１９ｂ−１）におけるデータコンテナ１１９ａを用いてユーザプログラム１１３１を生成できる。
【０１３６】
第１実施形態及び第２実施形態に係る制御装置１１において、内容を変更したユーザプログラム１１３１及び内容変更データコンテナ１１９ａ（内容変更データコンテナの一例）を外部から受信した場合、内容変更データコンテナ１１９ａは第１保存部１１１３−３に保存される。内容変更データコンテナ１１９ａは、内容を変更したユーザプログラム１１３１が生成された際に用いられた内容変更ユーザプログラム生成用資源１１９ａ−１（内容変更ユーザプログラム生成用資源の一例）を含むデータコンテナである。
また、第１変更管理部１１１３−１は、内容変更データコンテナ１１９ａの変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶している。さらに、内容を変更したユーザプログラム１１３１を以後タスク実行部において実行される新たなユーザプログラム１１３１としている。
【０１３７】
これにより、外部においてユーザプログラム１１３１の内容の変更がなされた場合でも、ユーザプログラム１１３１に対してどのような内容の変更がなされたかについての情報を共有できる。
【０１３８】
第２実施形態に係る制御システム２００は、上記の制御装置１１とサーバ２（サーバの一例）とを備える。サーバ２は、制御装置１１と通信可能に接続されている。また、サーバ２は、第２変更管理部２１３（第２変更管理部の一例）を有する。第２変更管理部は、データコンテナ１１９ａの変更履歴１１９ｂ−１を記憶する。
【０１３９】
これにより、制御装置１１の第１変更管理部１１１３−１以外の第２変更管理部２１３にも、データコンテナ１１９ａの変更履歴１１９ｂ−１を記憶できる。
【０１４０】
第２変更管理部２１３は、複製更新履歴（複製更新履歴の一例）を第２更新履歴２１３ａ（第２更新履歴の一例）として保存している。複製更新履歴は、第１変更管理部１１１３−１に記憶された第１更新履歴１１９ｂを複製した更新履歴である。これにより、第２変更管理部２１３において、第１更新履歴１１９ｂと一致する第２更新履歴２１３ａを保存できる。すなわち、第１更新履歴１１９ｂを予備的に第２変更管理部２１３に保存できる。
【０１４１】
第１変更管理部１１１３−１は、第１更新履歴１１９ｂを第２変更管理部２１３にバックアップして第２更新履歴２１３ａとして保存している。これにより、第１更新履歴１１９ｂを予備的に第２変更管理部２１３に保存できる。
【０１４２】
第２変更管理部２１３は、外部からデータコンテナ１１９ａの内容の変更を受信後、外部変更履歴（外部変更履歴の一例）を第２更新履歴２１３ａに記憶している。外部変更履歴は、外部から受信したデータコンテナ１１９ａの変更履歴１１９ｂ−１である。また、それとともに、第２変更管理部２１３は、外部変更履歴を第１変更管理部１１１３−１に送信している。
このとき、第１変更管理部１１１３−１は、外部変更履歴を第１更新履歴に記憶するとともに、所定のタイミングにおいて外部変更履歴に基づいて生成したデータコンテナ１１９ａを第１保存部１１１３−３に保存している。
【０１４３】
これにより、外部からデータコンテナ１１９ａの内容の変更の要求があった場合でも、外部から受信したデータコンテナ１１９ａの変更履歴１１９ｂ−１を、第１変更管理部１１１３−１の第１更新履歴１１９ｂ、及び、第２変更管理部２１３の第２更新履歴２１３ａの両方に保存できる。
【０１４４】
内容を変更したユーザプログラム１１３１及び内容変更データコンテナ１１９ａを外部から制御装置１１において受信した場合、内容変更データコンテナ１１９ａは、第１保存部１１１３−３に保存されるとともに、変更履歴１１９ｂ−１が第２変更管理部２１３の第２更新履歴２１３ａに記憶されている。また、内容を変更したユーザプログラム１１３１を以後タスク実行部１１１１において実行される新たなユーザプログラム１１３１としている。
【０１４５】
これにより、外部においてユーザプログラム１１３１の内容の変更がなされた場合でも、外部においてユーザプログラム１１３１を生成した際に用いられたデータコンテナ１１９ａを、第１保存部１１１３−３と第２更新履歴２１３ａとに保存できる。すなわち、上記のデータコンテナ１１９ａを予備的に保存できる。
【０１４６】
第３実施形態に係る制御システム３００は、制御装置１１とユーザプログラム生成サーバ４（ユーザプログラム生成サーバの一例）とを備える。
第３実施形態に係る制御システム３００において、制御装置１１は、タスク実行部１１１１と、第１保存部１１１３−３と、第１変更管理部１１１３−１と、を有する。タスク実行部１１１１は、制御対象機器７を制御するユーザプログラム１１３１を含むタスクを所定の周期にて繰り返し実行する。第１保存部１１１３−３には、ユーザプログラム１１３１を生成するために用いられるユーザプログラム生成用資源１１９ａ−１を含むデータコンテナ１１９ａが保存される。第１変更管理部１１１３−１は、第１保存部１１１３−３に保存されたデータコンテナ１１９ａの内容が変更された場合、データコンテナ１１９ａの変更履歴１１９ｂ−１を第１更新履歴１１９ｂに記憶する。また、第１変更管理部１１１３−１は、それとともに、所定のタイミングにおいて変更履歴１１９ｂ−１を用いて生成された新たなデータコンテナ１１９ａを第１保存部１１１３−３に保存する。
【０１４７】
ユーザプログラム生成サーバ４は、第３保存部４１１（第３保存部の一例）と第２ユーザプログラム生成部４１３（第２ユーザプログラム生成部の一例）とを有する。
第３保存部４１１は、第１変更管理部１１１３−１において生成されたデータコンテナ１１９ａを受信し保存する。第２ユーザプログラム生成部４１３は、第３保存部４１１に保存されたデータコンテナ１１９ａに含まれるユーザプログラム生成用資源１１９ａ−１を用いてユーザプログラム１１３１を生成する。また、第２ユーザプログラム生成部４１３は、生成したユーザプログラム１１３１を制御装置１１に送信する。
【０１４８】
制御システム３００においては、第１変更管理部１１１３−１において所定のタイミングにおいて変更履歴１１９ｂ−１を用いて新たなデータコンテナ１１９ａを生成した際に、新たなデータコンテナ１１９ａを、第１保存部１１１３−３だけでなく、ユーザプログラム生成サーバ４の第３保存部４１１にも保存する。その後、第３保存部４１１に保存された新たなデータコンテナ１１９ａを用いてユーザプログラム１１３１が生成される。
【０１４９】
これにより、ユーザプログラム１１３１の生成を外部のサーバ（ユーザプログラム生成サーバ４）により生成できる。その結果、制御装置１１における計算負荷を低減できる。
【０１５０】
５．他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
【産業上の利用可能性】
【０１５１】
ユーザプログラムを所定の周期にて繰り返し実行することにより制御対象機器を制御する制御装置、及び、当該制御装置を用いた制御システムに広く適用できる。
【符号の説明】
【０１５２】
１００、２００、３００             制御システム
１     ＰＬＣシステム
１１   制御装置
１１１ ＣＰＵ
１１１１      タスク実行部
１１１３      データコンテナ生成部
１１１３−１  第１変更管理部
１１１３−３  第１保存部
１１１５      第１ユーザプログラム生成部
１１１７      生成指示部
１１３ ＲＡＭ
１１３１      ユーザプログラム
１１５ ＲＯＭ
１１５ａ      システムプログラム
１１７ 通信インターフェース
１１７１      送受信部
１１９ 記憶部
１１９ａ      データコンテナ
１１９ａ−１  ユーザプログラム生成用資源
１１９ｂ      第１更新履歴
１１９ｂ−１  変更履歴
１１９ｂ−１１       更新番号記録領域
１１９ｂ−１２       更新対象記録領域
１１９ｂ−１３       更新内容記録領域
１１９ｂ−１４       更新ユーザ記録領域
１１９ｂ−１５       更新日時記録領域
１１９ｂ−１６       ユーザプログラム生成実行記録領域
１１９ｂ−１７       備考記録領域
１３   入力ユニット
１５   出力ユニット
１７   電源ユニット
２     サーバ
２１   ＣＰＵ
２１１ 送受信部
２１３ 第２変更管理部
２１３ａ      第２更新履歴
２３   ＲＡＭ
２３ａ        サーバプログラム
２５   記憶部
２７   通信インターフェース
３     プログラム開発支援装置
３１   ＣＰＵ
３３   記憶部
３３ａ 開発支援プログラム
３５   操作部
３７   通信インターフェース
３９   表示部
４     ユーザプログラム生成サーバ
４１   ＣＰＵ
４１１ 第３保存部
４１３ 第２ユーザプログラム生成部
４１５ 送受信部
４３   ＲＡＭ
４３ａ 生成プログラム
４５   記憶部
４７   通信インターフェース
５     信号入力部
７     制御対象機器
ＮＷ   通信ネットワーク
【図１】
0006508192.tif 000002
【図２】
0006508192.tif 000003
【図３Ａ】
0006508192.tif 000004
【図３Ｂ】
0006508192.tif 000005
【図４】
0006508192.tif 000006
【図５】
0006508192.tif 000007
【図６】
0006508192.tif 000008
【図７】
0006508192.tif 000009
【図８Ａ】
0006508192.tif 000010
【図８Ｂ】
0006508192.tif 000011