(57)【要約】【課題】制御プログラムのバージョンを管理することが可能な開発環境を提供可能なサポート装置、制御システム、および開発支援プログラムを提供することを目的とする。【解決手段】制御システムは制御プログラムをバージョンごとに管理する管理サーバを備える。作成または編集された制御プログラムは、ＰＬＣが実行可能な形式のプログラムに変換できることを条件に管理サーバに出力される。【選択図】図１
2019207534.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置であって、
制御プログラムを作成または編集するための作成部と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、
制御プログラムをバージョンごとに管理する管理サーバに、前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、サポート装置。
【請求項２】
前記出力条件が成立しなかったことを通知する通知部をさらに備える、請求項１に記載のサポート装置。
【請求項３】
前記出力条件は、前記制御装置に前記実行形式プログラムを転送できたことを含む、請求項１または請求項２に記載のサポート装置。
【請求項４】
前記制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、前記制御装置において実行されている制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに備える、請求項１〜請求項３のうちいずれかに記載のサポート装置。
【請求項５】
前記管理サーバは、前記サポート装置とは別に設けられている、請求項１〜請求項４のうちいずれかに記載のサポート装置。
【請求項６】
前記作成部は、前記管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集し、
前記出力部は、前記管理サーバとの接続を開始したことに応じて、前記管理サーバと接続されていないときに作成または編集された制御プログラムを、前記出力条件が成立していることを条件に前記管理サーバに出力する、請求項５に記載のサポート装置。
【請求項７】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援するための制御システムであって、
制御プログラムを作成または編集するための作成部と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、
制御プログラムをバージョンごとに管理する管理サーバと、
前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、制御システム。
【請求項８】
制御プログラムをバージョンごとに管理する管理部を有する制御装置と、
前記管理部が管理している各バージョンの制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに備える、請求項７に記載の制御システム。
【請求項９】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援する開発支援プログラムであって、
前記開発支援プログラムはコンピュータに、
作成または編集によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成するステップと、
制御プログラムをバージョンごとに管理する管理サーバに、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップとを実行させる、開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置、サポート装置を含む開発支援システムおよび、開発支援プログラムに関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムが実行される。このような制御プログラムは、制御装置とは別に用意されたサポート装置を用いて作成される。
【０００３】
たとえば、特開２０１６−２２４５５７号公報（特許文献１）は、グラフィカルプログラミング言語により記述されるプログラムと高級プログラミング言語により記述されるプログラムを作成するユーザの負担を軽減するための技術を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−２２４５５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、制御プログラムの高度化により、複数人または複数のグループで協同して制御プログラムを作成する機会が増えている。そのため、制御プログラムのバージョンを管理することが可能な開発環境が求められている。
【０００６】
本発明は、制御プログラムのバージョンを管理することが可能な開発環境を提供可能なサポート装置、制御システム、および開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置が提供される。サポート装置は、制御プログラムを作成または編集するための作成部と、作成部によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、制御プログラムをバージョンごとに管理する管理サーバに、作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、作成部が作成または編集した制御プログラムを管理サーバに出力する出力部とを含む。出力部は、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に作成部が作成または編集した制御プログラムを管理サーバに出力する。
【０００８】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【０００９】
上述の開示において、サポート装置は、出力条件が成立しなかったことを通知する通知部をさらに含む。
【００１０】
この開示によれば、ユーザに作成または編集した作成プログラムに欠陥があることを認識させることができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【００１１】
上述の開示において、出力条件は、制御装置に実行形式プログラムを転送できたことを含む。
【００１２】
この開示によれば、制御装置に転送することができないような不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【００１３】
上述の開示において、サポート装置は、制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、制御装置において実行されている制御プログラムと、管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに含む。
【００１４】
この開示によれば、管理サーバが管理し得ない状況下で作成された制御プログラムについても、管理することができる。その結果、管理サーバが管理することのできる範囲が広がる。
【００１５】
上述の開示において、管理サーバは、サポート装置とは別に設けられている。
この開示によれば、サポート装置の処理負担を軽減することができる。
【００１６】
上述の開示において、作成部は、管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集してもよい。出力部は、管理サーバとの接続を開始したことに応じて、管理サーバと接続されていないときに作成または編集された制御プログラムを、出力条件が成立していることを条件に管理サーバに出力する。
【００１７】
この開示によれば、管理サーバと接続されていない期間に作成または編集された制御プログラムに対する管理を強化することができる。
【００１８】
本開示の別の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するための制御システムが提供される。制御システムは、制御プログラムを作成または編集するための作成部と、作成部によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、制御プログラムをバージョンごとに管理する管理サーバと、作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、作成部が作成または編集した制御プログラムを管理サーバに出力する出力部とを含む。出力部は、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に作成部が作成または編集した制御プログラムを管理サーバに出力する。
【００１９】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【００２０】
上述の開示において、制御システムは、制御プログラムをバージョンごとに管理する管理部を有する制御装置と、管理部が管理している各バージョンの制御プログラムと、管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに含む。
【００２１】
この開示によれば、制御装置と、管理サーバとの両方で制御プログラムのバージョンを管理するため、管理範囲の広い制御システムを提供できる。
【００２２】
本開示の別の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援する開発支援プログラムが提供される。開発支援プログラムはコンピュータに、作成または編集によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成するステップと、制御プログラムをバージョンごとに管理する管理サーバに、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップとを実行させる。
【００２３】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【発明の効果】
【００２４】
制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムに変換することのできないような不具合のあるプログラムを除いて管理することができる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態に係る制御システムの適用場面を模式的に示す図である。
【図２】本実施の形態に係る制御システムの概略構成を示す模式図である。
【図３】本発明の実施の形態に係るＰＬＣのハードウェア構成を示す模式図である。
【図４】本発明の実施の形態に係るサポート装置のハードウェア構成を示す模式図である。
【図５】本発明の実施の形態に係るＰＬＣで実行されるソフトウェア構成を示す模式図である。
【図６】本発明の実施の形態に係るサポート装置で実行されるソフトウェア構成を示す模式図である。
【図７】本発明の実施の形態に係るサポート装置が実行する出力処理のフローチャートである。
【図８】出力処理の実行において機能する、本発明の実施の形態に係るサポート装置の機能構成の一例を示す図である。
【図９】本発明の実施の形態に係るサポート装置が実行する導入処理のフローチャートである。
【図１０】導入処理の実行において機能する、本発明の実施の形態に係るサポート装置の機能構成の一例を示す図である。
【図１１】変形例２における制御システムの概略構成を示す模式図である。
【図１２】変形例３における制御システムの概略構成を示す模式図である。
【図１３】変形例５における制御システムの概略構成を示す模式図である。
【発明を実施するための形態】
【００２６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２７】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御システム１ａの適用場面を模式的に示す図である。制御システム１ａは、たとえば、制御対象を制御するＰＬＣ（プログラマブルコントローラ）などの制御装置で実行される制御プログラムを開発する環境を提供する。
【００２８】
本明細書において、「制御プログラム」は、ＰＬＣの基本的な機能を提供するためのプログラムと、制御対象に応じて任意に設計されるプログラム（「ユーザプログラム」ともいう）とを包含する概念である。但し、制御プログラムは、制御対象に応じて任意に設計されるプログラムのみを含む場合もある。また、「制御プログラム」は、ソースコードまたは中間コードといった高水準言語のプログラム（「作成プログラム」ともいう）と、オブジェクト形式のＰＬＣが実行可能な低水準言語のプログラム（「実行形式プログラム」ともいう）とを包含する概念である。
【００２９】
制御システム１ａは、制御プログラムを作成または編集するための作成部２１０ａと、作成部２１０ａによって作成または編集された作成プログラムから実行形式プログラムを生成する生成部２２０ａと、制御プログラムをバージョンごとに管理する管理サーバ３００ａと、作成部２１０ａによって作成または編集された制御プログラムを管理サーバ３００ａに出力する出力部２３０ａとを含む。
【００３０】
作成部２１０ａは、ソースコードまたは中間コードといった高水準言語のプログラムを作成する機能を提供するためのソフトフェアと、ソースコードを作成するためにユーザが操作するキーボードおよびマウスといったハードウェアを含む概念である。
【００３１】
管理サーバ３００ａは、一の制御プログラムが編集されたときの変更履歴を管理する機能を提供するコンピュータ、プログラム、システムを包含する概念であって、管理サーバ３００ａならびに、作成部２１０ａ、生成部２２０ａおよび出力部２３０ａが一体のコンピュータで提供されてもよく、各々の機能を別の装置に設けてもよい。
【００３２】
「バージョン」は、一の制御プログラムが作成され、その制御プログラムに対して変更が加えられたことを示す表記である。「制御プログラムをバージョンごとに管理する」とは、たとえば、一の制御プログラムの変更履歴３１０を保存することである。なお、変更履歴３１０を保存するための記憶部は、管理サーバ３００ａが備える必要はなく、管理サーバ３００ａが適宜接続できる装置が備えていてもよい。
【００３３】
変更履歴３１０は、変更されたプログラムに関するプログラム情報３１２と、変更された日時および変更したユーザを含む履歴情報３１４とを含む。
【００３４】
プログラム情報３１２は、プログラム情報３１２に基づいて各バージョンのプログラムにそれぞれ展開することができる情報であればよく、たとえば、変更前のプログラムと変更後のプログラムとの差分情報であってもよい。図１に示す例では、管理サーバ３００ａは、プログラム情報３１２として差分情報（図中の「１．０→１．１」など）を記憶している。なお、プログラム情報３１２は、差分情報ではなく、バージョンごとのプログラムそのものであってもよい。
【００３５】
履歴情報３１４は、変更された日時および変更したユーザなど、制御プログラムが作成または編集されたときの状況を示す情報を含む概念である。また、履歴情報３１４は、コメントやプログラムなどのユーザが直接生成する情報と、変更日時や変更したユーザなどユーザが直接生成した情報に付随して生成される情報とを含む。
【００３６】
管理サーバ３００ａは、プログラム情報３１２および履歴情報３１４を含む変更履歴３１０を制御プログラムの種類ごとに管理する。
【００３７】
出力部２３０ａは、実行形式プログラムの生成が成功したことを条件に制御プログラムを管理サーバ３００ａに出力する。なお、出力部２３０ａは、作成プログラムおよび実行形式プログラムのうちの少なくともいずれか一方のプログラムを出力すればよい。出力部２３０ａは、生成部２２０ａが実行形式プログラムを生成することができなかった場合、すなわち、実行形式プログラムの生成に失敗した場合には、制御プログラムを管理サーバ３００ａに出力しない。
【００３８】
たとえば、図１に示す例においては、バージョン１．ｎの制御プログラムＡ（図中の「制御プログラムＡ（１．ｎ）」）を作成部２１０ａが編集して作成プログラムＡ（１．ｎ＋１）が得られたものとする。
【００３９】
成功時が示す例では、生成部２２０ａが作成プログラムＡ（１．ｎ＋１）から実行形式プログラムＡ（１．ｎ＋１）を生成することができた結果、出力部２３０ａは作成プログラムＡ（１．ｎ＋１）に係る制御プログラムＡ（１．ｎ＋１）を管理サーバ３００ａに出力する。管理サーバ３００ａは、送られた制御プログラムＡ（１．ｎ＋１）に基づいて、変更履歴３１０を更新する。
【００４０】
一方、失敗時が示す例では、生成部２２０ａが作成プログラムＡ（１．ｎ＋１）から実行形式プログラムＡ（１．ｎ＋１）を生成することができなかった結果、出力部２３０ａは作成プログラムＡ（１．ｎ＋１）に係る制御プログラムＡ（１．ｎ＋１）を管理サーバ３００ａに出力しない。
【００４１】
このように、図１に示す制御システム１ａにおいては、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。これにより、複数人による制御プログラムの開発が容易になる。さらに、制御システム１ａにおいては、少なくとも実行形式プログラムに変換することができた作成プログラムに係る制御プログラムだけが管理される。そのため、実行形式プログラムに変換することのできないような不具合のあるプログラムを除いて管理することができる。その結果、管理精度の高い制御システム１ａを提供することができる。
【００４２】
§２  具体例
以下、本発明の具体例として、本実施の形態に係る制御システム１のより詳細な構成および処理について説明する。
【００４３】
＜Ａ．制御システム１の全体構成例＞
図２は、本実施の形態に係る制御システム１の概略構成を示す模式図である。制御システム１は、ＰＬＣ１００で実行される制御プログラムを開発するためのサポート装置２００と、サポート装置２００を用いて開発された制御プログラムのバージョンを管理するための管理サーバ３００とを含む。
【００４４】
本実施の形態においては、管理サーバ３００はローカルネットワーク１０を介してサポート装置２００と通信可能に接続されており、サポート装置２００と別体に形成されているものとして説明する。なお、管理サーバ３００の機能を一のサポート装置２００が備えていてもよい。また、管理サーバ３００は、インターネットなどの外部ネットワークを介してサポート装置２００と通信可能に接続されてもよい。
【００４５】
管理サーバ３００は、制御プログラムの変更履歴３１０を記憶する。変更履歴３１０は、プログラム情報３１２および履歴情報３１４を含む。プログラム情報３１２は、プログラム情報３１２に基づいて各バージョンのプログラムに展開することができる情報である。履歴情報３１４は、変更された日時および変更したユーザを含む情報である。
【００４６】
制御システム１は、ＰＬＣ１００を含んでいてもよい。本実施の形態においては、制御システム１はＰＬＣ１００を含むものとして説明する。サポート装置２００は、接続ケーブル２０などを介してＰＬＣ１００と接続することができる。
【００４７】
管理サーバ３００は、サポート装置２００を用いて作成および編集された制御プログラムの変更履歴を管理する管理環境を提供する。サポート装置２００は、制御プログラムを開発する開発環境を提供する。ＰＬＣ１００は、制御プログラムを実行する実行環境を提供する。
【００４８】
また、制御システム１は、管理サーバ３００と接続可能なサポート装置２００を複数備えてもよい。図２に示す制御システム１を例に、プログラムの開発の流れの一例について説明する。
【００４９】
（１）  たとえば、１または複数のユーザによって、１の制御プログラム（プログラムＡ）が作成され、そのプログラムＡが１または複数回、編集される。
【００５０】
（２）  編集されて得られたプログラム（図２においてはプログラムＡ（Ｖｅｒ．１．１））に対してデバック作業が行われる。デバック作業中は、たとえば、サポート装置２００とＰＬＣ１００とが接続ケーブル２０で接続されており、ＰＬＣ１００を用いてデバック作業が行われる。
【００５１】
管理サーバ３００によって管理された制御プログラムは、サポート装置２００を介してＰＬＣ１００にインストール（導入）されてもよく、また、サポート装置２００からメモリカードに保存し、メモリカードをＰＬＣ１００に挿入することで導入されてもよい。
【００５２】
（１）および（２）に示した制御プログラムの編集作業およびデバック作業は、複数人の開発者によって行なわれてもよい。管理サーバ３００を利用して制御プログラムのバージョンを管理できるようにすることで、複数人の開発者によるプログラム開発が容易になり、その結果、制御プログラムを開発する時間を短縮できるという利点がある。しかし、各開発者が自由に管理サーバ３００上のプログラムを更新することができてしまうと、不具合のあるプログラムに更新されてしまう虞がある。このような場合に、不具合のあるプログラムを用いてプログラム開発が進められてしまう虞や、不具合のあるプログラムを過ってＰＬＣ１００に導入してしまう虞がある。
【００５３】
本実施の形態においては、管理サーバ３００に制御プログラムを出力するときに一定の制限を設けることで、不具合のあるプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるプログラムを過ってＰＬＣ１００に導入してしまうことを予め防止する。
【００５４】
＜Ｂ．ＰＬＣのハードウェア構成＞
図３は、本発明の実施の形態に係るＰＬＣ１００のハードウェア構成を示す模式図である。ＰＬ１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主メモリ１０６と、フラッシュメモリ１０８と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４と、ＵＳＢ（Universal Serial Bus）コネクタ１２６と、メモリカードインターフェイス１２８とを含む。
【００５５】
プロセッサ１０２およびチップセット１０４は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１０２は、チップセット１０４から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０４は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１０２に必要な命令コードを生成する。さらに、チップセット１０４は、プロセッサ１０２での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００５６】
主メモリ１０６は、揮発性の記憶領域であり、ＰＬＣ１００への電源投入後にプロセッサ１０２で実行されるべき各種プログラムを格納する。主メモリ１０６は、プロセッサ１０２による各種プログラムの実行時の作業用メモリとしても使用される。このような主メモリ１０６としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００５７】
フラッシュメモリ１０８は、不揮発性メモリであって、リアルタイムＯＳ（Operating System）、システムプログラム、実行可能プログラムといった各種プログラム（モジュール）、および各種パラメータといったデータを不揮発的に格納する。これらのプログラムやデータは、必要に応じて、プロセッサ１０２がアクセスできるように主メモリ１０６にコピーされる。なお、ＰＬＣ１００は、不揮発性メモリとして、半導体メモリであるフラッシュメモリ１０８を備えるとしたが、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などをプログラムやデータを格納するための記憶装置として備えてもよい。
【００５８】
内部バスコントローラ１２２は、ＰＬＣ１００と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、Ｉ／Ｏユニットなどが挙げられる。
【００５９】
フィールドバスコントローラ１２４は、ＰＬＣ１００とフィールドバスを通じて連結される各種の駆動機器とデータを遣り取りするインターフェイスである。このような駆動機器の一例として、たとえば、サーボドライバや、ロボットコントローラ、視覚センサなどが挙げられる。
【００６０】
内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータ（測定値を含む）を取得することができる。また、内部バスコントローラ１２２および／またはフィールドバスコントローラ１２４は、駆動機器との間でデータを遣り取りするためのインターフェイスとしても機能する。
【００６１】
ＵＳＢコネクタ１２６は、サポート装置２００とＰＬＣ１００とを接続するための通信インターフェイスである。典型的には、サポート装置２００から転送されるＰＬＣ１００のプロセッサ１０２で実行可能なプログラム（実行形式プログラム）などは、ＵＳＢコネクタ１２６を介してＰＬＣ１００に取込まれる。
【００６２】
メモリカードインターフェイス１２８は、外部記憶媒体の一例であるメモリカード１３０（たとえば、ＳＤカード）を着脱可能に構成されており、メモリカード１３０に対してデータを書き込み、メモリカード１３０からデータを読出すことが可能になっている。
【００６３】
＜Ｃ．サポート装置のハードウェア構成＞
図４は本発明の実施の形態に係るサポート装置２００のハードウェア構成を示す模式図である。サポート装置２００は、典型的には、汎用のコンピュータで構成される。なお、サポート装置２００は、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【００６４】
サポート装置２００は、ＯＳを含む各種プログラムを実行するＣＰＵ２０１と、ＢＩＯＳ（Basic Input Output System）や各種データを格納するＲＯＭ（Read Only Memory）２０２と、ＣＰＵ２０１でのプログラムの実行に必要なデータを格納するための作業領域を提供するＲＡＭ２０３と、ＣＰＵ２０１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）２０４とを含む。
【００６５】
サポート装置２００は、さらに、ユーザからの操作を受け付けるキーボード２０５およびマウス２０６と、情報をユーザに提示するためのモニタ２０７とを含む。サポート装置２００は、ＰＬＣ１００および管理サーバ３００などと通信するための通信インターフェイス（ＩＦ）２０９を含む。通信ＩＦ２０９は、たとえば、ＵＳＢコネクタなどを含む。
【００６６】
サポート装置２００で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤＲＯＭ（Compact Disk-Read Only Memory）ドライブ２０８によって読取られ、ＨＤＤ２０４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００６７】
＜Ｄ．ＰＬＣのソフトウェア構成＞
次に、図５を参照して、本実施の形態に係るＰＬＣ１００の各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＰＬＣ１００のプロセッサ１０２によって実行される。
【００６８】
図５は、本発明の実施の形態に係るＰＬＣ１００で実行されるソフトウェア構成を示す模式図である。ＰＬＣ１００で実行されるソフトウェアとしては、リアルタイムＯＳ４００と、システムプログラム４１０と、ユーザプログラムである実行形式プログラム４３６との３階層になっている。
【００６９】
リアルタイムＯＳ４００は、ＰＬＣ１００のコンピュータアーキテクチャに応じて設計されており、プロセッサ１０２がシステムプログラム４１０および実行形式プログラム４３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳ４００は、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００７０】
システムプログラム４１０は、ＰＬＣ１００としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム４１０は、スケジューラプログラム４１２と、出力処理プログラム４１４と、入力処理プログラム４１６と、シーケンス命令演算プログラム４３２と、モーション演算プログラム４３４と、その他のシステムプログラム４２０とを含む。なお、一般には出力処理プログラム４１４および入力処理プログラム４１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム４１８と総称する場合もある。
【００７１】
実行形式プログラム４３６は、ユーザにおける制御目的に応じて作成されるユーザプログラムのうち、ＰＬＣ１００のプロセッサ１０２で実行可能なオブジェクトプログラム形式になっているプルグラムである。ユーザプログラムは、制御システム１を用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。実行形式プログラム４３６は、シーケンス命令演算プログラム４３２およびモーション演算プログラム４３４と協働して、ユーザにおける制御目的を実現する。すなわち、実行形式プログラム４３６は、シーケンス命令演算プログラム４３２およびモーション演算プログラム４３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、実行形式プログラム４３６、シーケンス命令演算プログラム４３２、およびモーション演算プログラム４３４を、制御プログラム４３０と総称する場合もある。
【００７２】
このように、ＰＬＣ１００のプロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム４１０および実行形式プログラム４３６を実行する。
【００７３】
実行形式プログラム４３６は、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。実行形式プログラム４３６は、サポート装置２００などにおいて、ラダー言語などによって記述されたソースプログラム５３０がコンパイルされることで生成される。そして、生成された実行形式プログラム４３６は、サポート装置２００から接続ケーブル２０を介してＰＬＣ１００へ転送され、フラッシュメモリ１０８などに格納される。実行形式プログラム４３６はプログラムＩＤ５３２を含む。
【００７４】
プログラムＩＤ５３２は、実行形式プログラム４３６に変換される前のソースプログラム５３０が生成または編集される度に生成される識別子であって、ソースプログラム５３０に含まれる。プログラムＩＤ５３２は、ソースプログラム５３０がコンパイルされて実行形式プログラム４３６が生成された場合も引き継がれる。すなわち、ソースプログラム５３０に含まれるプログラムＩＤ５３２と、このソースプログラム５３０をコンパイルすることで得られる実行形式プログラム４３６に含まれるプログラムＩＤ５３２とは等しい。
【００７５】
スケジューラプログラム４１２は、出力処理プログラム４１４、入力処理プログラム４１６、および制御プログラム４３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム４１２は、実行形式プログラム４３６およびモーション演算プログラム４３４の実行を制御する。
【００７６】
出力処理プログラム４１４は、実行形式プログラム４３６（制御プログラム４３０）の実行によって生成された出力データを、内部バスコントローラ１２２および／またはフィールドバスコントローラ１２４へ転送するのに適した形式に再配置する。内部バスコントローラ１２２またはフィールドバスコントローラ１２４が、プロセッサ１０２からの、送信を実行するための指示を必要とする場合は、出力処理プログラム４１４がそのような指示を発行する。
【００７７】
入力処理プログラム４１６は、内部バスコントローラ１２２および／またはフィールドバスコントローラ１２４によって受信された入力データを、制御プログラム４３０が使用するのに適した形式に再配置する。
【００７８】
シーケンス命令演算プログラム４３２は、実行形式プログラム４３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００７９】
モーション演算プログラム４３４は、実行形式プログラム４３６による指示に従って実行され、サーボモータドライバやパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
【００８０】
リアルタイムＯＳ４００は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。
【００８１】
＜Ｅ．サポート装置のソフトウェア構成＞
図６は、本発明の実施の形態に係るサポート装置２００で実行されるソフトウェア構成を示す模式図である。サポート装置２００ではＯＳ５１０が実行され、ＰＬＣサポートプログラム５２０に含まれる各種のプログラムを実行可能な環境が提供される。
【００８２】
ＰＬＣサポートプログラム５２０は、エディタプログラム５２１と、コンパイラプログラム５２２と、デバッガプログラム５２３と、通信プログラム５２６と、管理プログラム５２４とを含む。各プログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、サポート装置２００にインストールされる。なお、ＰＬＣサポートプログラム５２０に含まれる各プログラムを上位のホストコンピュータなどからネットワークを通じてダウンロードするように構成してもよい。
【００８３】
エディタプログラム５２１は、ユーザプログラムであるソースプログラム５３０を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム５２１は、ユーザがキーボード２０５やマウス２０６を操作してソースプログラム５３０を作成する機能に加えて、作成したソースプログラム５３０の保存機能および編集機能を提供する。また、エディタプログラム５２１は、管理サーバ３００に保存されたソースプログラム５３０の入力を受付ける。
【００８４】
コンパイラプログラム５２２は、ソースプログラム５３０をコンパイルして、ＰＬＣ１００のプロセッサ１０２で実行可能なオブジェクトプログラム形式の実行形式プログラム４３６を生成する機能を提供する。
【００８５】
デバッガプログラム５２３は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【００８６】
通信プログラム５２６は、ＰＬＣ１００へ実行形式プログラム４３６を転送する機能、および、管理サーバ３００にソースプログラム５３０を出力する機能を提供する。
【００８７】
管理プログラム５２４は、ソースプログラム５３０を管理サーバ３００に出力するか否かを判断する機能を提供する。具体的には、ソースプログラム５３０のうち、コンパイルが成功して実行形式プログラム４３６が生成されたか否かを判定し、実行形式プログラム４３６の生成がされたソースプログラム５３０のみを管理サーバ３００に出力する機能を提供する。
【００８８】
＜Ｆ．保存の流れ＞
サポート装置２００が作成または編集したユーザプログラムを管理サーバ３００に保存する際に、サポート装置２００は管理サーバ３００にユーザプログラムを出力する。以下、サポート装置２００が実行する、ユーザプログラムを管理サーバ３００に出力する処理について説明する。
【００８９】
［ｆ１．フローチャート］
図７は、本発明の実施の形態に係るサポート装置２００が実行する出力処理のフローチャートである。出力処理は、サポート装置２００のＣＰＵ２０１がＰＬＣサポートプログラム５２０を実行することで行われる処理である。なお、サポート装置２００に出力するユーザプログラムは、コンパイルがされる前のソースプログラム５３０であっても、コンパイルがされた後の実行形式プログラム４３６であってもよく、また、ソースプログラム５３０および実行形式プログラム４３６の双方であってもよい。本実施の形態においては、サポート装置２００はソースプログラム５３０を出力する。
【００９０】
ステップＳ１０１において、ＣＰＵ２０１は、保存の指示を受け付けたか否かを判断する。保存の指示は、マウス２０６またはキーボード２０５を介して入力される。保存の指示を受け付けていないと判断した場合（ステップＳ１０１においてＮＯ）、ＣＰＵ２０１は、処理を終了する。
【００９１】
保存の指示を受け付けたと判断した場合（ステップＳ１０１においてＹＥＳ）、ＣＰＵ２０１は、処理をステップＳ１０２に切り替える。
【００９２】
ステップＳ１０２において、ＣＰＵ２０１は、保存対象のソースプログラム５３０をコンパイルする。
【００９３】
ステップＳ１０３において、ＣＰＵ２０１は、コンパイルに成功したか否かを判断する。コンパイルに成功したか否かは、実行形式プログラム４３６が生成されたか否かに基づいて判定される。実行形式プログラム４３６が生成された場合、ＣＰＵ２０１は、コンパイルに成功したと判断する。実行形式プログラムが生成されなかった場合、ＣＰＵ２０１は、コンパイルに失敗したと判断する。
【００９４】
コンパイルに成功したと判断した場合（ステップＳ１０３においてＹＥＳ）、ＣＰＵ２０１は、処理をステップＳ１０４に切り替える。
【００９５】
ステップＳ１０４において、ＣＰＵ２０１は、ＰＬＣ１００に接続されているか否かを判断する。ＰＬＣ１００に接続されている場合（ステップＳ１０４においてＹＥＳ）、処理をステップＳ１０５に切り替える。
【００９６】
ステップＳ１０５において、ＣＰＵ２０１は、実行形式プログラム４３６をＰＬＣ１００に送信する。送信する実行形式プログラムは、ステップＳ１０２において、保存対象のソースプログラム５３０をコンパイルしたことで得られる。
【００９７】
ステップＳ１０６において、ＣＰＵ２０１は、転送に成功したか否かを判断する。ＣＰＵ２０１は、ＰＬＣ１００の動作モードがプログラムモードから運転モードに正常に切り替わったか否かに応じて、転送に成功したか否かを判断する。ＰＬＣ１００は、送られた実行形式プログラム４３６をインストールする場合に、動作モードをプログラムモードに切替え、正常に転送された場合に運転モードに切替える一方、エラーが生じた場合は継続して動作モードをプログラムモードのままとする。ＣＰＵ２０１は、ＰＬＣ１００の動作モードが運転モードであるときに転送に成功したと判断する。一方、ＣＰＵ２０１は、所定期間経過した後もＰＬＣ１００の動作モードがプログラムモードであるときに転送に失敗したと判断する。
【００９８】
転送に成功したと判断した場合（ステップＳ１０６においてＹＥＳ）、ＣＰＵ２０１は、処理をステップＳ１０７に切り替える。
【００９９】
ＰＬＣ１００と接続されていないと判断した場合（ステップＳ１０４においてＮＯ）、ＣＰＵ２０１は、処理をステップＳ１０７に切り替える。
【０１００】
ステップＳ１０７において、ＣＰＵ２０１は、管理サーバ３００に保存対象のソースプログラム５３０を送信して処理を終了する。
【０１０１】
また、コンパイルに失敗したと判断した場合（ステップＳ１０３においてＮＯ）、ＣＰＵ２０１は、処理をステップＳ１１１に切り替える。
【０１０２】
ステップＳ１１１において、ＣＰＵ２０１は、コンパイルに失敗した旨を通知することを決定する。
【０１０３】
また、ＰＬＣ１００への転送に失敗したと判断した場合（ステップＳ１０６においてＮＯ）、ＣＰＵ２０１は、処理をステップＳ１１２に切り替える。
【０１０４】
ステップＳ１１２において、ＣＰＵ２０１は、ＰＬＣ１００への転送に失敗した旨を通知することを決定する。
【０１０５】
ステップＳ１１１またはステップＳ１１２の処理を実行した後、ＣＰＵ２０１は、処理をステップＳ１１３に切り替える。
【０１０６】
ステップＳ１１３において、ＣＰＵ２０１は、ソースプログラム５３０を管理サーバ３００に出力することができない旨を通知することを決定する。
【０１０７】
ステップＳ１１４において、ＣＰＵ２０１は、決定した通知を行う。具体的には、ステップＳ１１１〜ステップＳ１１３において決定した内容をモニタ２０７に表示する。すなわち、ＣＰＵ２０１は、プログラムを管理サーバ３００に出力することができないことと、なぜ出力することができないかの原因とをモニタ２０７に表示する。
【０１０８】
ステップＳ１１５において、ＣＰＵ２０１は、保存の指示を破棄して処理を終了する。
なお、本発明の実施の形態において、出力することができない原因の通知を行なうものとしたが、出力することができないことのみを通知する構成であってもよい。
【０１０９】
［ｆ２．機能構成］
図８は、出力処理の実行において機能する、本発明の実施の形態に係るサポート装置２００の機能構成の一例を示す図である。
【０１１０】
サポート装置２００は、ユーザプログラムを作成または編集するための作成部２１０と、作成部２１０によって作成または編集されたソースプログラム５３０から実行形式プログラム４３６を生成する生成部２２０と、作成部２１０によって作成または編集されたユーザプログラムを管理サーバ３００に出力する出力部２３０とを備える。また、サポート装置２００は、ＰＬＣ１００に実行形式プログラム４３６を転送する通信部２４０を備える。
【０１１１】
作成部２１０は、ユーザの操作に従ってソースプログラム５３０を作成または編集する。作成部２１０が作成または編集したソースプログラム５３０は、たとえば、ＲＡＭ２０３に一時的に保存される。
【０１１２】
出力部２３０は、キーボード２０５およびマウス２０６などの入力部から入力された保存指示を受け付けると、生成部２２０に実行形式プログラム４３６を生成させ、生成が成功したか否か、すなわちコンパイルが成功したか否かを判断する。
【０１１３】
出力部２３０は、コンパイルが成功したと判断した場合に、通信部２４０に実行形式プログラム４３６をＰＬＣ１００に転送させる。通信部２４０は、実行形式プログラム４３６をＰＬＣ１００に転送し、転送に成功したか否かを出力部２３０に通知する。
【０１１４】
出力部２３０は、実行形式プログラム４３６の転送に成功した場合、管理サーバ３００にソースプログラム５３０を出力する。また、出力部２３０は、処理結果をモニタ２０７に表示する。処理結果は、コンパイルの成功または失敗、実行形式プログラム４３６の転送の成功または失敗、およびソースプログラム５３０の出力結果を含む。
【０１１５】
＜Ｇ．制御プログラムのインストール＞
生産現場に設置されたＰＬＣ１００にインストールされたユーザプログラムは、管理サーバ３００と接続されていないサポート装置を介して書き換えられることがある。また、管理サーバ３００と接続されていない開発環境で作成されたユーザプログラムがＰＬＣ１００にインストールされることがある。すなわち、生産現場においては、管理サーバ３００が管理し得ない状況下で作成されたユーザプログラムがＰＬＣ１００にインストールされていることがある。
【０１１６】
たとえば、ＰＬＣ１００に既にインストールされているユーザプログラム（Ｖｅｒ．１．０とする）に新たな機能を追加するために、管理サーバ３００が管理し得ない状況下でＶｅｒ．１．０のユーザプログラムが書き換えられて、Ｖｅｒ．１．１のユーザプログラムとなった状況を考える。このような場合に、Ｖｅｒ１．０のユーザプログラムに他の機能が追加され、新たにＶｅｒ．２．０のユーザプログラムをＰＬＣ１００に再インストールしようとした場合、Ｖｅｒ１．１に書き換えられたときに追加された新たな機能が削除されてしまう虞がある。
【０１１７】
新たな機能が削除されてしまうことを防止するため、本実施の形態においては、サポート装置２００は、ＰＬＣ１００にインストールされたユーザプログラムに変更を加える際に、ＰＬＣ１００にインストールされているユーザプログラムと、管理サーバ３００によって管理されているユーザプログラムとを比較し、比較結果を通知する。たとえば、サポート装置２００は、管理サーバ３００によって管理されているユーザプログラムに含まれるプログラムＩＤ５３２の中に、ＰＬＣ１００にインストールされているユーザプログラムに含まれるプログラムＩＤ５３２と一致するものが無い場合に、ＰＬＣ１００にインストールされているユーザプログラムが管理サーバ３００上に保存されていない虞がある旨を通知する。
【０１１８】
本発明の実施の形態に係るサポート装置２００は、ＰＬＣ１００が実行中のユーザプログラムを変更するために新たなユーザプログラムをインストールする際の導入処理について以下説明する。
【０１１９】
［ｇ１．フローチャート］
図９は、本発明の実施の形態に係るサポート装置２００が実行する導入処理のフローチャートである。より具体的には、変更処理は、サポート装置２００のＣＰＵ２０１がＰＬＣサポートプログラム５２０を実行することで行われる処理である。
【０１２０】
ステップＳ２０１において、ＣＰＵ２０１は、導入の指示を受け付けたか否かを判断する。導入の指示を受け付けていないと判断した場合（ステップＳ２０１においてＮＯ）、ＣＰＵ２０１は、処理を終了する。導入の指示は、マウス２０６またはキーボード２０５を介して入力される。
【０１２１】
導入の指示を受け付けたと判断した場合（ステップＳ２０１においてＹＥＳ）、ＣＰＵ２０１は、処理をステップＳ２０２に切り替える。
【０１２２】
ステップＳ２０２において、ＣＰＵ２０１は、ＰＬＣ１００にインストールされている実行形式プログラム４３６に含まれるプログラムＩＤ５３２を抽出し、管理サーバ３００によって管理されているソースプログラム５３０の履歴情報と比較する。
【０１２３】
ステップＳ２０３において、ＣＰＵ２０１は、管理サーバ３００によって管理されているソースプログラム５３０に含まれるプログラムＩＤ５３２の中に、ＰＬＣ１００にインストールされている実行形式プログラム４３６のプログラムＩＤ５３２と一致するプログラムＩＤ５３２があるか否かを判断する。一致するプログラムＩＤ５３２がない場合（ステップＳ２０３においてＮＯ）、ＣＰＵ２０１は、処理をステップＳ２０４に切り替える。
【０１２４】
ステップＳ２０４において、ＣＰＵ２０１は、一致する履歴情報がない旨の通知を行う。たとえば、モニタ２０７に、一致する履歴情報がない旨を表示する。
【０１２５】
ステップＳ２０５において、ＣＰＵ２０１は、ＰＬＣ１００にインストールされている実行形式プログラム４３６を管理サーバ３００に出力する。なお、ＰＬＣ１００にインストールされている実行形式プログラム４３６をサポート装置２００のＲＡＭ２０３に一時的に保存し、ユーザの指示に基づいて、管理サーバ３００に出力するか否かを決定するようにしてもよい。また、実行形式プログラム４３６を管理サーバ３００に出力するとしたが、ＣＰＵ２０１は、逆コンパイルして、ソースプログラム５３０を生成して管理サーバ３００に出力してもよい。ＣＰＵ２０１は、ＰＬＣ１００にインストールされている実行形式プログラム４３６を管理サーバ３００に出力して、処理をステップＳ２０６に切り替える。
【０１２６】
一致するプログラムＩＤ５３２がある場合（ステップＳ２０３においてＹＥＳ）、ＣＰＵ２０１は、処理をステップＳ２０６に切り替える。
【０１２７】
ステップＳ２０６において、ＣＰＵ２０１は、導入対象の実行形式プログラム４３６をＰＬＣ１００に転送して処理を終了する。なお、導入対象の実行形式プログラム４３６が管理サーバに保存されていない場合は、導入対象の実行形式プログラム４３６およびソースプログラム５３０のうちの少なくとも一方を、管理サーバ３００にも出力するようにしてもよい。
【０１２８】
［ｇ２．機能構成］
図１０は、導入処理の実行において機能する、本発明の実施の形態に係るサポート装置２００の機能構成の一例を示す図である。
【０１２９】
サポート装置２００は、比較部２５０を備えてもよい。比較部２５０は、導入の指示を受け付けたことに基づいて、ＰＬＣ１００において実行されている実行形式プログラム４３６と、管理サーバ３００が管理している各バージョンのユーザプログラムとを比較し、比較結果をモニタ２０７に出力する。
【０１３０】
具体的には、比較部２５０は、管理サーバ３００が記憶しているプログラム情報３１２に含まれるバージョンごとのプログラムＩＤ５３２と、ＰＬＣ１００において実行されている実行形式プログラム４３６に含まれるプログラムＩＤ５３２とを比較する。
【０１３１】
＜Ｈ．作用・効果＞
以上のように、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。そのため、一の制御プログラムに対して加えた変更の変遷を管理することができ、複数人でのプログラム開発を行なうことが容易になる。さらに、サポート装置２００は、少なくとも、実行形式プログラム４３６を生成することができたことを条件にユーザプログラムを管理サーバ３００に出力する。そのため、実行形式プログラム４３６を生成することができない不具合のあるユーザプログラムが管理サーバ３００に保存されてしまうことを防止することができる。その結果、不具合のあるユーザプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるユーザプログラムを過ってＰＬＣ１００に導入してしまうことを予め防止することができる。
【０１３２】
サポート装置２００はモニタ２０７を備え、管理サーバ３００にユーザプログラムを出力することができない場合に、その旨をモニタ２０７に表示することで通知する。これにより、ユーザは、作成または編集したユーザプログラムに欠陥があることを認識することができる。その結果、不具合のあるプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるプログラムを過ってＰＬＣ１００に導入してしまうことを予め防止することができる。
【０１３３】
サポート装置２００は、実行形式プログラム４３６を生成できたことに加えて、ＰＬＣ１００に実行形式プログラム４３６を転送できたことを条件にユーザプログラムを管理サーバ３００に出力する。そのため、ＰＬＣ１００に転送することができないような不具合のあるユーザプログラムが管理サーバ３００に保存されてしまうことを防止することができる。その結果、不具合のあるユーザプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるユーザプログラムを過ってＰＬＣ１００に導入してしまうことを予め防止することができる。
【０１３４】
サポート装置２００は、ＰＬＣ１００にインストールされたユーザプログラムに変更を加える際に、ＰＬＣ１００にインストールされているユーザプログラムと、管理サーバ３００によって管理されているユーザプログラムとを比較し、比較結果を通知する。そのため、管理サーバ３００が管理し得ない状況下で作成されたユーザプログラムについても、管理することができる。その結果、管理サーバ３００が管理することのできる範囲が広がる。これにより、作成された機能を過って削除してしまうことを防止することができる。
【０１３５】
サポート装置２００と、管理サーバ３００とは別体である。そのため、サポート装置２００の処理負担を軽減することができる。
【０１３６】
§３  変形例
＜変形例１＞
上記の実施の形態において、サポート装置２００のＣＰＵ２０１は、保存の指示を受け付けたことに基づいてステップＳ１０２以降の処理を実行するとした。すなわち、上記の実施の形態において、サポート装置２００と管理サーバ３００とは常時通信可能に接続されていることを前提とした上で、出力処理を実行する例を示した。なお、サポート装置２００と管理サーバ３００とは、常時、通信可能に接続されている必要はない。たとえば、サポート装置２００のＣＰＵ２０１は、保存の指示を受け付けたか否かではなく、管理サーバ３００との接続が開始されたことに応じて、ステップＳ１０２以降の処理を実行するようにしてもよい。これにより、管理サーバ３００と接続されていない期間に作成または編集されたユーザプログラムに対する保存の指示を改めて行わなくとも、このユーザプログラムを管理することができる。すなわち、管理サーバ３００と接続されていない期間に作成または編集されたユーザプログラムに対する管理を強化することができる。
【０１３７】
＜変形例２＞
図１１は、変形例２における制御システム１ｂの概略構成を示す模式図である。制御システム１ｂは、図２に示す制御システム１と比較して、ＰＬＣ１００の代わりにＰＬＣ１００ｂを備え、サポート装置２００の代わりにサポート装置２００ｂを備える点で異なる。
【０１３８】
ＰＬＣ１００ｂは、ＰＬＣ１００と比較して、管理サーバ３００と通信するためのアクセス部１４２を備える点で異なる。アクセス部１４２を備えるＰＬＣ１００ｂは、サポート装置２００が備える生成部２２０、出力部２３０、比較部２５０に係る機能を備えていてもよい（図１１中の生成部１４４、出力部１４６、比較部１４８）。また、サポート装置２００ｂは、サポート装置２００と比較して、生成部２２０および出力部２３０を備えていない点で異なる。すなわち、変形例２における制御システム１ｂにおいて、ＰＬＣ１００ｂが管理サーバ３００と通信可能であり、コンパイル機能をＰＬＣ１００ｂが備える。
【０１３９】
サポート装置２００ｂは、ソースプログラム５３０をＰＬＣ１００ｂに転送する。ＰＬＣ１００ｂの生成部１４４は、ソースプログラム５３０を受信すると、受信したソースプログラム５３０に基づいて実行形式プログラム４３６を生成する。出力部１４６は、実行形式プログラム４３６が生成されたことに基づいて、ユーザプログラムを管理サーバ３００に出力する。
【０１４０】
このように、ＰＬＣ１００ｂが出力部１４６を備えることにより、管理サーバ３００が管理することのできない開発環境下で開発されたユーザプログラムのうち、ＰＬＣ１００ｂにインストールされたユーザプログラムについては管理することができる。なお、出力部１４６は、実行形式プログラム４３６を受信したことに基づいて、管理サーバ３００にユーザプログラムを出力するようにしてもよい。
【０１４１】
比較部１４８は、管理サーバ３００と通信するためのネットワークに接続されたことに基づいて、インストールされている実行形式プログラム４３６と、管理サーバ３００が管理している各バージョンのユーザプログラムとを比較し、比較結果を出力する。出力先は、たとえば、ＰＬＣ１００ｂに設けられたＬＥＤなどであってもよく、また、ＰＬＣ１００ｂがサポート装置２００や携帯端末やプリンターなどの機器と通信可能に接続されている場合には、これらの機器であってもよい。比較部１４８は、管理サーバ３００が管理している各バージョンのユーザプログラムの中に、インストールされている実行形式プログラム４３６と一致するプログラムがない場合にのみ比較結果を出力するようにしてもよい。
【０１４２】
ＰＬＣ１００ｂが比較機能を備えることにより、管理サーバ３００との通信手段を有していないサポート装置やメモリカード１３０からＰＬＣ１００ｂに実行形式プログラム４３６をインストールした場合であっても、ＰＬＣ１００ｂにインストールされた全てのユーザプログラムについて管理することができる。
【０１４３】
＜変形例３＞
図１２は、変形例３における制御システム１ｃの概略構成を示す模式図である。制御システム１ｃは、図２に示す制御システム１と比較して、ＰＬＣ１００の代わりにＰＬＣ１００ｃを備え、ＰＬＣ１００ｃが管理サーバ３００に係る機能として管理部３００ｃを備える点で異なる。
【０１４４】
ＰＬＣ１００ｃは、制御プログラムの変更履歴３１０を保存するための記憶部を有していてもよく、また、ＰＬＣ１００ｃと通信可能なサーバに変更履歴３１０を保存するようにしてもよい。ＰＬＣ１００ｃが、管理部３００ｃを備えることで、管理サーバ３００との通信手段を有していないサポート装置やメモリカード１３０からＰＬＣ１００ｃに実行形式プログラム４３６をインストールした場合であっても、ＰＬＣ１００ｃにインストールされた全てのユーザプログラムについて管理することができる。
【０１４５】
なお、ＰＬＣ１００ｃが制御プログラムの変更履歴３１０を保存するための記憶部を有している場合、外部のサーバに変更履歴３１０を保存している場合に比べて、変更履歴３１０を早く取得することができる。一方、外部のサーバに変更履歴３１０を保存する場合、ＰＬＣ１００ｃの記憶領域を省力化することができる。
【０１４６】
＜変形例４＞
上記の実施の形態においては、サポート装置２００がユーザプログラムを出力するか否かを判断するものとした。たとえば、サポート装置２００は保存の指示を受け付けたことに基づいてユーザプログラムを管理サーバ３００に出力するようにしてもよい。この場合、管理サーバ３００は、実行形式プログラムを生成する機能と、出力されたユーザプログラムを管理対象とするか否か（保存するか否か）を決定する機能とを備えてもよい。
【０１４７】
また、管理サーバ３００は、ユーザプログラムを保存しないと決定した場合に、保存しない旨をサポート装置２００に通知する機能を備えてもよい。サポート装置２００は、ユーザプログラムが保存されなかった旨の通知を受けて、ユーザにその通知を行ってもよい。
【０１４８】
＜変形例５＞
図１３は、変形例５における制御システム１ｅの概略構成を示す模式図である。制御システム１ｅは、図２に示す制御システム１と比較して、ＰＬＣ１００の代わりにＰＬＣ１００ｅを備え、サポート装置２００の代わりにサポート装置２００ｅを備える点で異なる。
【０１４９】
ＰＬＣ１００ｅは、ＰＬＣ１００と比較して、制御プログラムのバージョンを管理するための管理部１５４をさらに備える点で異なる。すなわち、制御システム１ｅは、ＰＬＣ１００ｅと、管理サーバ３００との両方で制御プログラムのバージョンを管理する点で、制御システム１と異なる。なお、管理部１５４の機能は、管理サーバ３００と共通するため、説明を省略する。ここで、変形例５にかかる管理部１５４は、ＰＬＣ１００ｅで実行される制御プログラムについて管理し、他のＰＬＣで実行される制御プログラムについては管理しない。一方、管理サーバ３００は、複数の制御プログラムについて管理することができる。
【０１５０】
たとえば、ユーザは、サポート装置２００ｅを管理サーバ３００と接続させない状態（オフライン）で、ＰＬＣ１００ｅを利用して制御プログラムを作成することもある。このような場合に、管理サーバ３００のみで制御プログラムのバージョンを管理している場合に、オフラインで作成された制御プログラムについては管理対象から外れてしまう虞がある。
【０１５１】
変形例５に係る制御システム１ｅにおいては、ＰＬＣ１００ｅと、管理サーバ３００との両方で制御プログラムのバージョンを管理することで、オフラインで作成された制御プログラムについても管理対象に含めることができ、管理範囲が広いバージョン管理システムを提供できる。
【０１５２】
ＰＬＣ１００ｅと、管理サーバ３００との両方で制御プログラムのバージョンを管理することで、管理範囲が広いバージョン管理システムを提供できる一方、ＰＬＣ１００ｅと、管理サーバ３００とで、変更履歴を同期させる必要がある。変更履歴３１０をＰＬＣ１００ｅと、管理サーバ３００とで同期させるため、サポート装置２００ｅは、比較部２５０ｅを備える。比較部２５０ｅは、サポート装置２００ｅがＰＬＣ１００ｅおよび管理サーバ３００のいずれとも通信可能に接続されているときに、管理部１５４が記憶する変更履歴１５４ａと、管理サーバ３００が記憶する変更履歴３１０とを比較し、比較結果を出力する。たとえば、比較結果はモニタ２０７に出力する。ユーザは、モニタ２０７に出力された比較結果に基づいて、変更履歴３１０と変更履歴１５４ａとを同期させることができる。
【０１５３】
なお、ユーザ操作に応じて変更履歴３１０と変更履歴１５４ａとを同期させる例を示したが、ユーザ操作に関わらず、変更履歴３１０と変更履歴１５４ａとが一致していない場合に同期させるようにしてもよい。
【０１５４】
なお、ＰＬＣ１００ｅは、管理サーバ３００と通信するためのアクセス部１４２ｅを備えてもよい。たとえば、ＰＬＣ１００ｅは、サポート装置２００ｅから制御プログラムが送られる度に、管理部１５４は、アクセス部１４２ｅを介して接続されている管理サーバ３００によって管理されている制御プログラムと送られた制御プログラムとを比較して変更履歴３１０と変更履歴１５４ａとを同期させるようにしてもよい。
【０１５５】
また、変更履歴３１０と変更履歴１５４ａとの比較について、比較部２５０ｅは、プログラムＩＤ５３２のみを比較するようにしてもよく、また、履歴情報３１４を含む情報を比較してもよい。たとえば、履歴情報３１４を含む情報を比較することで、プログラムＩＤは変更履歴３１０と変更履歴１５４ａとで一致しているにも関わらず、履歴情報３１４が一致しないようなことも検出することができる。
【０１５６】
§４  付記
以上のように、上記の実施の形態および変形例は以下のような開示を含む。
【０１５７】
＜構成１＞
制御対象を制御する制御装置（１００，１００ｅ）で実行される制御プログラムの開発を支援するサポート装置（２００，２００ｅ）であって、
制御プログラムを作成または編集するための作成部（２１０，２１０ａ）と、
前記作成部によって得られた作成プログラム（５３０）から前記制御装置が実行可能な形式の実行形式プログラム（４３６）を生成する生成部（２２０，２２０ａ）と、
制御プログラムをバージョンごとに管理する管理サーバ（３００，３００ｃ）に、前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部（２３０，２３０ａ）とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、サポート装置。
【０１５８】
＜構成２＞
前記出力条件が成立しなかったことを通知する通知部（２０７）をさらに備える、構成１に記載のサポート装置。
【０１５９】
＜構成３＞
前記出力条件は、前記制御装置に前記実行形式プログラムを転送できたことを含む、構成１または構成２に記載のサポート装置。
【０１６０】
＜構成４＞
前記制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、前記制御装置において実行されている制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部（２５０）をさらに備える、構成１〜構成３のうちいずれかに記載のサポート装置。
【０１６１】
＜構成５＞
前記管理サーバは、前記サポート装置とは別に設けられている、構成１〜構成４のうちいずれかに記載のサポート装置。
【０１６２】
＜構成６＞
前記作成部は、前記管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集し、
前記出力部は、前記管理サーバとの接続を開始したことに応じて、前記管理サーバと接続されていないときに作成または編集された制御プログラムを、前記出力条件が成立していることを条件に前記管理サーバに出力する、構成５に記載のサポート装置。
【０１６３】
＜構成７＞
制御対象を制御する制御装置（１００，１００ｂ，１００ｃ，１００ｅ）で実行される制御プログラムの開発を支援するための制御システム（１，１ａ，１ｂ，１ｃ，１ｅ）であって、
制御プログラムを作成または編集するための作成部（２１０，２１０ａ）と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部（２２０，２２０ａ，１４４）と、
制御プログラムをバージョンごとに管理する管理サーバ（３００，３００ａ,３００ｃ）と、
前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部（２３０，２３０ａ，１４６）とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、制御システム。
【０１６４】
＜構成８＞
制御プログラムをバージョンごとに管理する管理部（１５４）を有する制御装置（１００ｅ）と、
前記管理部が管理している各バージョンの制御プログラム（１５４ａ）と、前記管理サーバが管理している各バージョンの制御プログラム（３１０）とを比較し、比較結果を出力する比較部（２５０ｅ）をさらに備える、構成７に記載の制御システム。
【０１６５】
＜構成９＞
制御対象を制御する制御装置（１００，１００ｅ）で実行される制御プログラムの開発を支援する開発支援プログラム（５２０）であって、
前記開発支援プログラムはコンピュータに、
作成または編集によって得られた作成プログラム（５３０）から前記制御装置が実行可能な形式の実行形式プログラム（４３６）を生成するステップ（Ｓ１０２）と、
制御プログラムをバージョンごとに管理する管理サーバ（３００）に、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップ（Ｓ１０３，Ｓ１０７）とを実行させる、開発支援プログラム。
【０１６６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合せても、実施することが意図される。
【符号の説明】
【０１６７】
１，１ａ，１ｂ，１ｃ，１ｅ  制御システム、９  ＣＤ−ＲＯＭ、１０  ローカルネットワーク、２０  接続ケーブル、１００，１００ｂ，１００ｃ，１００ｅ  ＰＬＣ、１０２  プロセッサ、１０４  チップセット、１０６  主メモリ、１０８  フラッシュメモリ、１２２  内部バスコントローラ、１２４  フィールドバスコントローラ、１２６  ＵＳＢコネクタ、１２８  メモリカードインターフェイス、１３０  メモリカード、１４２，１４２ｅ  アクセス部、１４４，２２０，２２０ａ  生成部、１４６，２３０，２３０ａ  出力部、１４８，２５０，２５０ｅ  比較部、１５４，３００ｃ  管理部、１５４ａ，３１０  変更履歴、２００，２００ｂ，２００ｅ  サポート装置、２０１  ＣＰＵ、２０２  ＲＯＭ、２０３  ＲＡＭ、２０４  ＨＤＤ、２０５  キーボード、２０６  マウス、２０７  モニタ、２０８  ＣＤＲＯＭドライブ、２０９  通信ＩＦ、２１０，２１０ａ  作成部、３００，３００ａ  管理サーバ、３１２  プログラム情報、３１４  履歴情報、４００  リアルタイムＯＳ、４１０  システムプログラム、４１２  スケジューラプログラム、４１４  出力処理プログラム、４１６  入力処理プログラム、４１８  ＩＯ処理プログラム、４２０  その他のシステムプログラム、４３０  制御プログラム、４３２  シーケンス命令演算プログラム、４３４  モーション演算プログラム、４３６  実行形式プログラム、５１０  ＯＳ、５２０  ＰＬＣサポートプログラム、５２１  エディタプログラム、５２２  コンパイラプログラム、５２３  デバッガプログラム、５２４  管理プログラム、５２６  通信プログラム、５３０  ソースプログラム、５３２  プログラムＩＤ。
【図１】
2019207534.tif 000003
【図２】
2019207534.tif 000004
【図３】
2019207534.tif 000005
【図４】
2019207534.tif 000006
【図５】
2019207534.tif 000007
【図６】
2019207534.tif 000008
【図７】
2019207534.tif 000009
【図８】
2019207534.tif 000010
【図９】
2019207534.tif 000011
【図１０】
2019207534.tif 000012
【図１１】
2019207534.tif 000013
【図１２】
2019207534.tif 000014
【図１３】
2019207534.tif 000015