特開2019-207534(P2019-207534A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧
特開2019-207534サポート装置、制御システム、および開発支援プログラム
<>
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000003
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000004
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000005
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000006
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000007
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000008
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000009
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000010
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000011
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000012
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000013
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000014
  • 特開2019207534-サポート装置、制御システム、および開発支援プログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-207534(P2019-207534A)
(43)【公開日】2019年12月5日
(54)【発明の名称】サポート装置、制御システム、および開発支援プログラム
(51)【国際特許分類】
   G06F 8/20 20180101AFI20191108BHJP
   G06F 8/71 20180101ALI20191108BHJP
【FI】
   G06F8/20
   G06F8/71
【審査請求】未請求
【請求項の数】9
【出願形態】OL
【全頁数】25
(21)【出願番号】特願2018-102261(P2018-102261)
(22)【出願日】2018年5月29日
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】三浦 悟
(72)【発明者】
【氏名】重森 弓束
(72)【発明者】
【氏名】岩村 慎太郎
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC08
5B376DA05
5B376DA21
5B376GA13
(57)【要約】
【課題】制御プログラムのバージョンを管理することが可能な開発環境を提供可能なサポート装置、制御システム、および開発支援プログラムを提供することを目的とする。
【解決手段】制御システムは制御プログラムをバージョンごとに管理する管理サーバを備える。作成または編集された制御プログラムは、PLCが実行可能な形式のプログラムに変換できることを条件に管理サーバに出力される。
【選択図】図1
【特許請求の範囲】
【請求項1】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置であって、
制御プログラムを作成または編集するための作成部と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、
制御プログラムをバージョンごとに管理する管理サーバに、前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、サポート装置。
【請求項2】
前記出力条件が成立しなかったことを通知する通知部をさらに備える、請求項1に記載のサポート装置。
【請求項3】
前記出力条件は、前記制御装置に前記実行形式プログラムを転送できたことを含む、請求項1または請求項2に記載のサポート装置。
【請求項4】
前記制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、前記制御装置において実行されている制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに備える、請求項1〜請求項3のうちいずれかに記載のサポート装置。
【請求項5】
前記管理サーバは、前記サポート装置とは別に設けられている、請求項1〜請求項4のうちいずれかに記載のサポート装置。
【請求項6】
前記作成部は、前記管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集し、
前記出力部は、前記管理サーバとの接続を開始したことに応じて、前記管理サーバと接続されていないときに作成または編集された制御プログラムを、前記出力条件が成立していることを条件に前記管理サーバに出力する、請求項5に記載のサポート装置。
【請求項7】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援するための制御システムであって、
制御プログラムを作成または編集するための作成部と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、
制御プログラムをバージョンごとに管理する管理サーバと、
前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、制御システム。
【請求項8】
制御プログラムをバージョンごとに管理する管理部を有する制御装置と、
前記管理部が管理している各バージョンの制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに備える、請求項7に記載の制御システム。
【請求項9】
制御対象を制御する制御装置で実行される制御プログラムの開発を支援する開発支援プログラムであって、
前記開発支援プログラムはコンピュータに、
作成または編集によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成するステップと、
制御プログラムをバージョンごとに管理する管理サーバに、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップとを実行させる、開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置、サポート装置を含む開発支援システムおよび、開発支援プログラムに関する。
【背景技術】
【0002】
様々な製造現場において、PLC(Programmable Logic Controller)などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムが実行される。このような制御プログラムは、制御装置とは別に用意されたサポート装置を用いて作成される。
【0003】
たとえば、特開2016−224557号公報(特許文献1)は、グラフィカルプログラミング言語により記述されるプログラムと高級プログラミング言語により記述されるプログラムを作成するユーザの負担を軽減するための技術を開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2016−224557号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、制御プログラムの高度化により、複数人または複数のグループで協同して制御プログラムを作成する機会が増えている。そのため、制御プログラムのバージョンを管理することが可能な開発環境が求められている。
【0006】
本発明は、制御プログラムのバージョンを管理することが可能な開発環境を提供可能なサポート装置、制御システム、および開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するサポート装置が提供される。サポート装置は、制御プログラムを作成または編集するための作成部と、作成部によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、制御プログラムをバージョンごとに管理する管理サーバに、作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、作成部が作成または編集した制御プログラムを管理サーバに出力する出力部とを含む。出力部は、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に作成部が作成または編集した制御プログラムを管理サーバに出力する。
【0008】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【0009】
上述の開示において、サポート装置は、出力条件が成立しなかったことを通知する通知部をさらに含む。
【0010】
この開示によれば、ユーザに作成または編集した作成プログラムに欠陥があることを認識させることができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【0011】
上述の開示において、出力条件は、制御装置に実行形式プログラムを転送できたことを含む。
【0012】
この開示によれば、制御装置に転送することができないような不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【0013】
上述の開示において、サポート装置は、制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、制御装置において実行されている制御プログラムと、管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに含む。
【0014】
この開示によれば、管理サーバが管理し得ない状況下で作成された制御プログラムについても、管理することができる。その結果、管理サーバが管理することのできる範囲が広がる。
【0015】
上述の開示において、管理サーバは、サポート装置とは別に設けられている。
この開示によれば、サポート装置の処理負担を軽減することができる。
【0016】
上述の開示において、作成部は、管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集してもよい。出力部は、管理サーバとの接続を開始したことに応じて、管理サーバと接続されていないときに作成または編集された制御プログラムを、出力条件が成立していることを条件に管理サーバに出力する。
【0017】
この開示によれば、管理サーバと接続されていない期間に作成または編集された制御プログラムに対する管理を強化することができる。
【0018】
本開示の別の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援するための制御システムが提供される。制御システムは、制御プログラムを作成または編集するための作成部と、作成部によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成する生成部と、制御プログラムをバージョンごとに管理する管理サーバと、作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、作成部が作成または編集した制御プログラムを管理サーバに出力する出力部とを含む。出力部は、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に作成部が作成または編集した制御プログラムを管理サーバに出力する。
【0019】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【0020】
上述の開示において、制御システムは、制御プログラムをバージョンごとに管理する管理部を有する制御装置と、管理部が管理している各バージョンの制御プログラムと、管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部をさらに含む。
【0021】
この開示によれば、制御装置と、管理サーバとの両方で制御プログラムのバージョンを管理するため、管理範囲の広い制御システムを提供できる。
【0022】
本開示の別の一例によれば、制御対象を制御する制御装置で実行される制御プログラムの開発を支援する開発支援プログラムが提供される。開発支援プログラムはコンピュータに、作成または編集によって得られた作成プログラムから制御装置が実行可能な形式の実行形式プログラムを生成するステップと、制御プログラムをバージョンごとに管理する管理サーバに、実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップとを実行させる。
【0023】
この開示によれば、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムを生成することができない不具合のある制御プログラムが管理サーバに保存されてしまうことを防止することができる。その結果、不具合のある制御プログラムを用いてプログラム開発が進められてしまうことや、不具合のある制御プログラムを過って制御装置に導入してしまうことを予め防止することができる。
【発明の効果】
【0024】
制御プログラムをバージョンごとに管理可能な開発環境を提供できる。さらに、実行形式プログラムに変換することのできないような不具合のあるプログラムを除いて管理することができる。
【図面の簡単な説明】
【0025】
図1】本実施の形態に係る制御システムの適用場面を模式的に示す図である。
図2】本実施の形態に係る制御システムの概略構成を示す模式図である。
図3】本発明の実施の形態に係るPLCのハードウェア構成を示す模式図である。
図4】本発明の実施の形態に係るサポート装置のハードウェア構成を示す模式図である。
図5】本発明の実施の形態に係るPLCで実行されるソフトウェア構成を示す模式図である。
図6】本発明の実施の形態に係るサポート装置で実行されるソフトウェア構成を示す模式図である。
図7】本発明の実施の形態に係るサポート装置が実行する出力処理のフローチャートである。
図8】出力処理の実行において機能する、本発明の実施の形態に係るサポート装置の機能構成の一例を示す図である。
図9】本発明の実施の形態に係るサポート装置が実行する導入処理のフローチャートである。
図10】導入処理の実行において機能する、本発明の実施の形態に係るサポート装置の機能構成の一例を示す図である。
図11】変形例2における制御システムの概略構成を示す模式図である。
図12】変形例3における制御システムの概略構成を示す模式図である。
図13】変形例5における制御システムの概略構成を示す模式図である。
【発明を実施するための形態】
【0026】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0027】
§1 適用例
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御システム1aの適用場面を模式的に示す図である。制御システム1aは、たとえば、制御対象を制御するPLC(プログラマブルコントローラ)などの制御装置で実行される制御プログラムを開発する環境を提供する。
【0028】
本明細書において、「制御プログラム」は、PLCの基本的な機能を提供するためのプログラムと、制御対象に応じて任意に設計されるプログラム(「ユーザプログラム」ともいう)とを包含する概念である。但し、制御プログラムは、制御対象に応じて任意に設計されるプログラムのみを含む場合もある。また、「制御プログラム」は、ソースコードまたは中間コードといった高水準言語のプログラム(「作成プログラム」ともいう)と、オブジェクト形式のPLCが実行可能な低水準言語のプログラム(「実行形式プログラム」ともいう)とを包含する概念である。
【0029】
制御システム1aは、制御プログラムを作成または編集するための作成部210aと、作成部210aによって作成または編集された作成プログラムから実行形式プログラムを生成する生成部220aと、制御プログラムをバージョンごとに管理する管理サーバ300aと、作成部210aによって作成または編集された制御プログラムを管理サーバ300aに出力する出力部230aとを含む。
【0030】
作成部210aは、ソースコードまたは中間コードといった高水準言語のプログラムを作成する機能を提供するためのソフトフェアと、ソースコードを作成するためにユーザが操作するキーボードおよびマウスといったハードウェアを含む概念である。
【0031】
管理サーバ300aは、一の制御プログラムが編集されたときの変更履歴を管理する機能を提供するコンピュータ、プログラム、システムを包含する概念であって、管理サーバ300aならびに、作成部210a、生成部220aおよび出力部230aが一体のコンピュータで提供されてもよく、各々の機能を別の装置に設けてもよい。
【0032】
「バージョン」は、一の制御プログラムが作成され、その制御プログラムに対して変更が加えられたことを示す表記である。「制御プログラムをバージョンごとに管理する」とは、たとえば、一の制御プログラムの変更履歴310を保存することである。なお、変更履歴310を保存するための記憶部は、管理サーバ300aが備える必要はなく、管理サーバ300aが適宜接続できる装置が備えていてもよい。
【0033】
変更履歴310は、変更されたプログラムに関するプログラム情報312と、変更された日時および変更したユーザを含む履歴情報314とを含む。
【0034】
プログラム情報312は、プログラム情報312に基づいて各バージョンのプログラムにそれぞれ展開することができる情報であればよく、たとえば、変更前のプログラムと変更後のプログラムとの差分情報であってもよい。図1に示す例では、管理サーバ300aは、プログラム情報312として差分情報(図中の「1.0→1.1」など)を記憶している。なお、プログラム情報312は、差分情報ではなく、バージョンごとのプログラムそのものであってもよい。
【0035】
履歴情報314は、変更された日時および変更したユーザなど、制御プログラムが作成または編集されたときの状況を示す情報を含む概念である。また、履歴情報314は、コメントやプログラムなどのユーザが直接生成する情報と、変更日時や変更したユーザなどユーザが直接生成した情報に付随して生成される情報とを含む。
【0036】
管理サーバ300aは、プログラム情報312および履歴情報314を含む変更履歴310を制御プログラムの種類ごとに管理する。
【0037】
出力部230aは、実行形式プログラムの生成が成功したことを条件に制御プログラムを管理サーバ300aに出力する。なお、出力部230aは、作成プログラムおよび実行形式プログラムのうちの少なくともいずれか一方のプログラムを出力すればよい。出力部230aは、生成部220aが実行形式プログラムを生成することができなかった場合、すなわち、実行形式プログラムの生成に失敗した場合には、制御プログラムを管理サーバ300aに出力しない。
【0038】
たとえば、図1に示す例においては、バージョン1.nの制御プログラムA(図中の「制御プログラムA(1.n)」)を作成部210aが編集して作成プログラムA(1.n+1)が得られたものとする。
【0039】
成功時が示す例では、生成部220aが作成プログラムA(1.n+1)から実行形式プログラムA(1.n+1)を生成することができた結果、出力部230aは作成プログラムA(1.n+1)に係る制御プログラムA(1.n+1)を管理サーバ300aに出力する。管理サーバ300aは、送られた制御プログラムA(1.n+1)に基づいて、変更履歴310を更新する。
【0040】
一方、失敗時が示す例では、生成部220aが作成プログラムA(1.n+1)から実行形式プログラムA(1.n+1)を生成することができなかった結果、出力部230aは作成プログラムA(1.n+1)に係る制御プログラムA(1.n+1)を管理サーバ300aに出力しない。
【0041】
このように、図1に示す制御システム1aにおいては、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。これにより、複数人による制御プログラムの開発が容易になる。さらに、制御システム1aにおいては、少なくとも実行形式プログラムに変換することができた作成プログラムに係る制御プログラムだけが管理される。そのため、実行形式プログラムに変換することのできないような不具合のあるプログラムを除いて管理することができる。その結果、管理精度の高い制御システム1aを提供することができる。
【0042】
§2 具体例
以下、本発明の具体例として、本実施の形態に係る制御システム1のより詳細な構成および処理について説明する。
【0043】
<A.制御システム1の全体構成例>
図2は、本実施の形態に係る制御システム1の概略構成を示す模式図である。制御システム1は、PLC100で実行される制御プログラムを開発するためのサポート装置200と、サポート装置200を用いて開発された制御プログラムのバージョンを管理するための管理サーバ300とを含む。
【0044】
本実施の形態においては、管理サーバ300はローカルネットワーク10を介してサポート装置200と通信可能に接続されており、サポート装置200と別体に形成されているものとして説明する。なお、管理サーバ300の機能を一のサポート装置200が備えていてもよい。また、管理サーバ300は、インターネットなどの外部ネットワークを介してサポート装置200と通信可能に接続されてもよい。
【0045】
管理サーバ300は、制御プログラムの変更履歴310を記憶する。変更履歴310は、プログラム情報312および履歴情報314を含む。プログラム情報312は、プログラム情報312に基づいて各バージョンのプログラムに展開することができる情報である。履歴情報314は、変更された日時および変更したユーザを含む情報である。
【0046】
制御システム1は、PLC100を含んでいてもよい。本実施の形態においては、制御システム1はPLC100を含むものとして説明する。サポート装置200は、接続ケーブル20などを介してPLC100と接続することができる。
【0047】
管理サーバ300は、サポート装置200を用いて作成および編集された制御プログラムの変更履歴を管理する管理環境を提供する。サポート装置200は、制御プログラムを開発する開発環境を提供する。PLC100は、制御プログラムを実行する実行環境を提供する。
【0048】
また、制御システム1は、管理サーバ300と接続可能なサポート装置200を複数備えてもよい。図2に示す制御システム1を例に、プログラムの開発の流れの一例について説明する。
【0049】
(1) たとえば、1または複数のユーザによって、1の制御プログラム(プログラムA)が作成され、そのプログラムAが1または複数回、編集される。
【0050】
(2) 編集されて得られたプログラム(図2においてはプログラムA(Ver.1.1))に対してデバック作業が行われる。デバック作業中は、たとえば、サポート装置200とPLC100とが接続ケーブル20で接続されており、PLC100を用いてデバック作業が行われる。
【0051】
管理サーバ300によって管理された制御プログラムは、サポート装置200を介してPLC100にインストール(導入)されてもよく、また、サポート装置200からメモリカードに保存し、メモリカードをPLC100に挿入することで導入されてもよい。
【0052】
(1)および(2)に示した制御プログラムの編集作業およびデバック作業は、複数人の開発者によって行なわれてもよい。管理サーバ300を利用して制御プログラムのバージョンを管理できるようにすることで、複数人の開発者によるプログラム開発が容易になり、その結果、制御プログラムを開発する時間を短縮できるという利点がある。しかし、各開発者が自由に管理サーバ300上のプログラムを更新することができてしまうと、不具合のあるプログラムに更新されてしまう虞がある。このような場合に、不具合のあるプログラムを用いてプログラム開発が進められてしまう虞や、不具合のあるプログラムを過ってPLC100に導入してしまう虞がある。
【0053】
本実施の形態においては、管理サーバ300に制御プログラムを出力するときに一定の制限を設けることで、不具合のあるプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるプログラムを過ってPLC100に導入してしまうことを予め防止する。
【0054】
<B.PLCのハードウェア構成>
図3は、本発明の実施の形態に係るPLC100のハードウェア構成を示す模式図である。PL100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、フラッシュメモリ108と、内部バスコントローラ122と、フィールドバスコントローラ124と、USB(Universal Serial Bus)コネクタ126と、メモリカードインターフェイス128とを含む。
【0055】
プロセッサ102およびチップセット104は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ102は、チップセット104から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット104は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ102に必要な命令コードを生成する。さらに、チップセット104は、プロセッサ102での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0056】
主メモリ106は、揮発性の記憶領域であり、PLC100への電源投入後にプロセッサ102で実行されるべき各種プログラムを格納する。主メモリ106は、プロセッサ102による各種プログラムの実行時の作業用メモリとしても使用される。このような主メモリ106としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
【0057】
フラッシュメモリ108は、不揮発性メモリであって、リアルタイムOS(Operating System)、システムプログラム、実行可能プログラムといった各種プログラム(モジュール)、および各種パラメータといったデータを不揮発的に格納する。これらのプログラムやデータは、必要に応じて、プロセッサ102がアクセスできるように主メモリ106にコピーされる。なお、PLC100は、不揮発性メモリとして、半導体メモリであるフラッシュメモリ108を備えるとしたが、ハードディスクドライブのような磁気記録媒体や、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などをプログラムやデータを格納するための記憶装置として備えてもよい。
【0058】
内部バスコントローラ122は、PLC100と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、I/Oユニットなどが挙げられる。
【0059】
フィールドバスコントローラ124は、PLC100とフィールドバスを通じて連結される各種の駆動機器とデータを遣り取りするインターフェイスである。このような駆動機器の一例として、たとえば、サーボドライバや、ロボットコントローラ、視覚センサなどが挙げられる。
【0060】
内部バスコントローラ122およびフィールドバスコントローラ124は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータ(測定値を含む)を取得することができる。また、内部バスコントローラ122および/またはフィールドバスコントローラ124は、駆動機器との間でデータを遣り取りするためのインターフェイスとしても機能する。
【0061】
USBコネクタ126は、サポート装置200とPLC100とを接続するための通信インターフェイスである。典型的には、サポート装置200から転送されるPLC100のプロセッサ102で実行可能なプログラム(実行形式プログラム)などは、USBコネクタ126を介してPLC100に取込まれる。
【0062】
メモリカードインターフェイス128は、外部記憶媒体の一例であるメモリカード130(たとえば、SDカード)を着脱可能に構成されており、メモリカード130に対してデータを書き込み、メモリカード130からデータを読出すことが可能になっている。
【0063】
<C.サポート装置のハードウェア構成>
図4は本発明の実施の形態に係るサポート装置200のハードウェア構成を示す模式図である。サポート装置200は、典型的には、汎用のコンピュータで構成される。なお、サポート装置200は、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【0064】
サポート装置200は、OSを含む各種プログラムを実行するCPU201と、BIOS(Basic Input Output System)や各種データを格納するROM(Read Only Memory)202と、CPU201でのプログラムの実行に必要なデータを格納するための作業領域を提供するRAM203と、CPU201で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)204とを含む。
【0065】
サポート装置200は、さらに、ユーザからの操作を受け付けるキーボード205およびマウス206と、情報をユーザに提示するためのモニタ207とを含む。サポート装置200は、PLC100および管理サーバ300などと通信するための通信インターフェイス(IF)209を含む。通信IF209は、たとえば、USBコネクタなどを含む。
【0066】
サポート装置200で実行される各種プログラムは、CD−ROM9に格納されて流通する。このCD−ROM9に格納されたプログラムは、CDROM(Compact Disk-Read Only Memory)ドライブ208によって読取られ、HDD204などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【0067】
<D.PLCのソフトウェア構成>
次に、図5を参照して、本実施の形態に係るPLC100の各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、PLC100のプロセッサ102によって実行される。
【0068】
図5は、本発明の実施の形態に係るPLC100で実行されるソフトウェア構成を示す模式図である。PLC100で実行されるソフトウェアとしては、リアルタイムOS400と、システムプログラム410と、ユーザプログラムである実行形式プログラム436との3階層になっている。
【0069】
リアルタイムOS400は、PLC100のコンピュータアーキテクチャに応じて設計されており、プロセッサ102がシステムプログラム410および実行形式プログラム436を実行するための基本的な実行環境を提供する。このリアルタイムOS400は、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。
【0070】
システムプログラム410は、PLC100としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム410は、スケジューラプログラム412と、出力処理プログラム414と、入力処理プログラム416と、シーケンス命令演算プログラム432と、モーション演算プログラム434と、その他のシステムプログラム420とを含む。なお、一般には出力処理プログラム414および入力処理プログラム416は、連続的(一体として)に実行されるので、これらのプログラムを、IO処理プログラム418と総称する場合もある。
【0071】
実行形式プログラム436は、ユーザにおける制御目的に応じて作成されるユーザプログラムのうち、PLC100のプロセッサ102で実行可能なオブジェクトプログラム形式になっているプルグラムである。ユーザプログラムは、制御システム1を用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。実行形式プログラム436は、シーケンス命令演算プログラム432およびモーション演算プログラム434と協働して、ユーザにおける制御目的を実現する。すなわち、実行形式プログラム436は、シーケンス命令演算プログラム432およびモーション演算プログラム434によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、実行形式プログラム436、シーケンス命令演算プログラム432、およびモーション演算プログラム434を、制御プログラム430と総称する場合もある。
【0072】
このように、PLC100のプロセッサ102は、フラッシュメモリ108に格納されたシステムプログラム410および実行形式プログラム436を実行する。
【0073】
実行形式プログラム436は、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。実行形式プログラム436は、サポート装置200などにおいて、ラダー言語などによって記述されたソースプログラム530がコンパイルされることで生成される。そして、生成された実行形式プログラム436は、サポート装置200から接続ケーブル20を介してPLC100へ転送され、フラッシュメモリ108などに格納される。実行形式プログラム436はプログラムID532を含む。
【0074】
プログラムID532は、実行形式プログラム436に変換される前のソースプログラム530が生成または編集される度に生成される識別子であって、ソースプログラム530に含まれる。プログラムID532は、ソースプログラム530がコンパイルされて実行形式プログラム436が生成された場合も引き継がれる。すなわち、ソースプログラム530に含まれるプログラムID532と、このソースプログラム530をコンパイルすることで得られる実行形式プログラム436に含まれるプログラムID532とは等しい。
【0075】
スケジューラプログラム412は、出力処理プログラム414、入力処理プログラム416、および制御プログラム430について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム412は、実行形式プログラム436およびモーション演算プログラム434の実行を制御する。
【0076】
出力処理プログラム414は、実行形式プログラム436(制御プログラム430)の実行によって生成された出力データを、内部バスコントローラ122および/またはフィールドバスコントローラ124へ転送するのに適した形式に再配置する。内部バスコントローラ122またはフィールドバスコントローラ124が、プロセッサ102からの、送信を実行するための指示を必要とする場合は、出力処理プログラム414がそのような指示を発行する。
【0077】
入力処理プログラム416は、内部バスコントローラ122および/またはフィールドバスコントローラ124によって受信された入力データを、制御プログラム430が使用するのに適した形式に再配置する。
【0078】
シーケンス命令演算プログラム432は、実行形式プログラム436で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【0079】
モーション演算プログラム434は、実行形式プログラム436による指示に従って実行され、サーボモータドライバやパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
【0080】
リアルタイムOS400は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。
【0081】
<E.サポート装置のソフトウェア構成>
図6は、本発明の実施の形態に係るサポート装置200で実行されるソフトウェア構成を示す模式図である。サポート装置200ではOS510が実行され、PLCサポートプログラム520に含まれる各種のプログラムを実行可能な環境が提供される。
【0082】
PLCサポートプログラム520は、エディタプログラム521と、コンパイラプログラム522と、デバッガプログラム523と、通信プログラム526と、管理プログラム524とを含む。各プログラムは、典型的には、CD−ROM9に格納された状態で流通して、サポート装置200にインストールされる。なお、PLCサポートプログラム520に含まれる各プログラムを上位のホストコンピュータなどからネットワークを通じてダウンロードするように構成してもよい。
【0083】
エディタプログラム521は、ユーザプログラムであるソースプログラム530を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム521は、ユーザがキーボード205やマウス206を操作してソースプログラム530を作成する機能に加えて、作成したソースプログラム530の保存機能および編集機能を提供する。また、エディタプログラム521は、管理サーバ300に保存されたソースプログラム530の入力を受付ける。
【0084】
コンパイラプログラム522は、ソースプログラム530をコンパイルして、PLC100のプロセッサ102で実行可能なオブジェクトプログラム形式の実行形式プログラム436を生成する機能を提供する。
【0085】
デバッガプログラム523は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【0086】
通信プログラム526は、PLC100へ実行形式プログラム436を転送する機能、および、管理サーバ300にソースプログラム530を出力する機能を提供する。
【0087】
管理プログラム524は、ソースプログラム530を管理サーバ300に出力するか否かを判断する機能を提供する。具体的には、ソースプログラム530のうち、コンパイルが成功して実行形式プログラム436が生成されたか否かを判定し、実行形式プログラム436の生成がされたソースプログラム530のみを管理サーバ300に出力する機能を提供する。
【0088】
<F.保存の流れ>
サポート装置200が作成または編集したユーザプログラムを管理サーバ300に保存する際に、サポート装置200は管理サーバ300にユーザプログラムを出力する。以下、サポート装置200が実行する、ユーザプログラムを管理サーバ300に出力する処理について説明する。
【0089】
[f1.フローチャート]
図7は、本発明の実施の形態に係るサポート装置200が実行する出力処理のフローチャートである。出力処理は、サポート装置200のCPU201がPLCサポートプログラム520を実行することで行われる処理である。なお、サポート装置200に出力するユーザプログラムは、コンパイルがされる前のソースプログラム530であっても、コンパイルがされた後の実行形式プログラム436であってもよく、また、ソースプログラム530および実行形式プログラム436の双方であってもよい。本実施の形態においては、サポート装置200はソースプログラム530を出力する。
【0090】
ステップS101において、CPU201は、保存の指示を受け付けたか否かを判断する。保存の指示は、マウス206またはキーボード205を介して入力される。保存の指示を受け付けていないと判断した場合(ステップS101においてNO)、CPU201は、処理を終了する。
【0091】
保存の指示を受け付けたと判断した場合(ステップS101においてYES)、CPU201は、処理をステップS102に切り替える。
【0092】
ステップS102において、CPU201は、保存対象のソースプログラム530をコンパイルする。
【0093】
ステップS103において、CPU201は、コンパイルに成功したか否かを判断する。コンパイルに成功したか否かは、実行形式プログラム436が生成されたか否かに基づいて判定される。実行形式プログラム436が生成された場合、CPU201は、コンパイルに成功したと判断する。実行形式プログラムが生成されなかった場合、CPU201は、コンパイルに失敗したと判断する。
【0094】
コンパイルに成功したと判断した場合(ステップS103においてYES)、CPU201は、処理をステップS104に切り替える。
【0095】
ステップS104において、CPU201は、PLC100に接続されているか否かを判断する。PLC100に接続されている場合(ステップS104においてYES)、処理をステップS105に切り替える。
【0096】
ステップS105において、CPU201は、実行形式プログラム436をPLC100に送信する。送信する実行形式プログラムは、ステップS102において、保存対象のソースプログラム530をコンパイルしたことで得られる。
【0097】
ステップS106において、CPU201は、転送に成功したか否かを判断する。CPU201は、PLC100の動作モードがプログラムモードから運転モードに正常に切り替わったか否かに応じて、転送に成功したか否かを判断する。PLC100は、送られた実行形式プログラム436をインストールする場合に、動作モードをプログラムモードに切替え、正常に転送された場合に運転モードに切替える一方、エラーが生じた場合は継続して動作モードをプログラムモードのままとする。CPU201は、PLC100の動作モードが運転モードであるときに転送に成功したと判断する。一方、CPU201は、所定期間経過した後もPLC100の動作モードがプログラムモードであるときに転送に失敗したと判断する。
【0098】
転送に成功したと判断した場合(ステップS106においてYES)、CPU201は、処理をステップS107に切り替える。
【0099】
PLC100と接続されていないと判断した場合(ステップS104においてNO)、CPU201は、処理をステップS107に切り替える。
【0100】
ステップS107において、CPU201は、管理サーバ300に保存対象のソースプログラム530を送信して処理を終了する。
【0101】
また、コンパイルに失敗したと判断した場合(ステップS103においてNO)、CPU201は、処理をステップS111に切り替える。
【0102】
ステップS111において、CPU201は、コンパイルに失敗した旨を通知することを決定する。
【0103】
また、PLC100への転送に失敗したと判断した場合(ステップS106においてNO)、CPU201は、処理をステップS112に切り替える。
【0104】
ステップS112において、CPU201は、PLC100への転送に失敗した旨を通知することを決定する。
【0105】
ステップS111またはステップS112の処理を実行した後、CPU201は、処理をステップS113に切り替える。
【0106】
ステップS113において、CPU201は、ソースプログラム530を管理サーバ300に出力することができない旨を通知することを決定する。
【0107】
ステップS114において、CPU201は、決定した通知を行う。具体的には、ステップS111〜ステップS113において決定した内容をモニタ207に表示する。すなわち、CPU201は、プログラムを管理サーバ300に出力することができないことと、なぜ出力することができないかの原因とをモニタ207に表示する。
【0108】
ステップS115において、CPU201は、保存の指示を破棄して処理を終了する。
なお、本発明の実施の形態において、出力することができない原因の通知を行なうものとしたが、出力することができないことのみを通知する構成であってもよい。
【0109】
[f2.機能構成]
図8は、出力処理の実行において機能する、本発明の実施の形態に係るサポート装置200の機能構成の一例を示す図である。
【0110】
サポート装置200は、ユーザプログラムを作成または編集するための作成部210と、作成部210によって作成または編集されたソースプログラム530から実行形式プログラム436を生成する生成部220と、作成部210によって作成または編集されたユーザプログラムを管理サーバ300に出力する出力部230とを備える。また、サポート装置200は、PLC100に実行形式プログラム436を転送する通信部240を備える。
【0111】
作成部210は、ユーザの操作に従ってソースプログラム530を作成または編集する。作成部210が作成または編集したソースプログラム530は、たとえば、RAM203に一時的に保存される。
【0112】
出力部230は、キーボード205およびマウス206などの入力部から入力された保存指示を受け付けると、生成部220に実行形式プログラム436を生成させ、生成が成功したか否か、すなわちコンパイルが成功したか否かを判断する。
【0113】
出力部230は、コンパイルが成功したと判断した場合に、通信部240に実行形式プログラム436をPLC100に転送させる。通信部240は、実行形式プログラム436をPLC100に転送し、転送に成功したか否かを出力部230に通知する。
【0114】
出力部230は、実行形式プログラム436の転送に成功した場合、管理サーバ300にソースプログラム530を出力する。また、出力部230は、処理結果をモニタ207に表示する。処理結果は、コンパイルの成功または失敗、実行形式プログラム436の転送の成功または失敗、およびソースプログラム530の出力結果を含む。
【0115】
<G.制御プログラムのインストール>
生産現場に設置されたPLC100にインストールされたユーザプログラムは、管理サーバ300と接続されていないサポート装置を介して書き換えられることがある。また、管理サーバ300と接続されていない開発環境で作成されたユーザプログラムがPLC100にインストールされることがある。すなわち、生産現場においては、管理サーバ300が管理し得ない状況下で作成されたユーザプログラムがPLC100にインストールされていることがある。
【0116】
たとえば、PLC100に既にインストールされているユーザプログラム(Ver.1.0とする)に新たな機能を追加するために、管理サーバ300が管理し得ない状況下でVer.1.0のユーザプログラムが書き換えられて、Ver.1.1のユーザプログラムとなった状況を考える。このような場合に、Ver1.0のユーザプログラムに他の機能が追加され、新たにVer.2.0のユーザプログラムをPLC100に再インストールしようとした場合、Ver1.1に書き換えられたときに追加された新たな機能が削除されてしまう虞がある。
【0117】
新たな機能が削除されてしまうことを防止するため、本実施の形態においては、サポート装置200は、PLC100にインストールされたユーザプログラムに変更を加える際に、PLC100にインストールされているユーザプログラムと、管理サーバ300によって管理されているユーザプログラムとを比較し、比較結果を通知する。たとえば、サポート装置200は、管理サーバ300によって管理されているユーザプログラムに含まれるプログラムID532の中に、PLC100にインストールされているユーザプログラムに含まれるプログラムID532と一致するものが無い場合に、PLC100にインストールされているユーザプログラムが管理サーバ300上に保存されていない虞がある旨を通知する。
【0118】
本発明の実施の形態に係るサポート装置200は、PLC100が実行中のユーザプログラムを変更するために新たなユーザプログラムをインストールする際の導入処理について以下説明する。
【0119】
[g1.フローチャート]
図9は、本発明の実施の形態に係るサポート装置200が実行する導入処理のフローチャートである。より具体的には、変更処理は、サポート装置200のCPU201がPLCサポートプログラム520を実行することで行われる処理である。
【0120】
ステップS201において、CPU201は、導入の指示を受け付けたか否かを判断する。導入の指示を受け付けていないと判断した場合(ステップS201においてNO)、CPU201は、処理を終了する。導入の指示は、マウス206またはキーボード205を介して入力される。
【0121】
導入の指示を受け付けたと判断した場合(ステップS201においてYES)、CPU201は、処理をステップS202に切り替える。
【0122】
ステップS202において、CPU201は、PLC100にインストールされている実行形式プログラム436に含まれるプログラムID532を抽出し、管理サーバ300によって管理されているソースプログラム530の履歴情報と比較する。
【0123】
ステップS203において、CPU201は、管理サーバ300によって管理されているソースプログラム530に含まれるプログラムID532の中に、PLC100にインストールされている実行形式プログラム436のプログラムID532と一致するプログラムID532があるか否かを判断する。一致するプログラムID532がない場合(ステップS203においてNO)、CPU201は、処理をステップS204に切り替える。
【0124】
ステップS204において、CPU201は、一致する履歴情報がない旨の通知を行う。たとえば、モニタ207に、一致する履歴情報がない旨を表示する。
【0125】
ステップS205において、CPU201は、PLC100にインストールされている実行形式プログラム436を管理サーバ300に出力する。なお、PLC100にインストールされている実行形式プログラム436をサポート装置200のRAM203に一時的に保存し、ユーザの指示に基づいて、管理サーバ300に出力するか否かを決定するようにしてもよい。また、実行形式プログラム436を管理サーバ300に出力するとしたが、CPU201は、逆コンパイルして、ソースプログラム530を生成して管理サーバ300に出力してもよい。CPU201は、PLC100にインストールされている実行形式プログラム436を管理サーバ300に出力して、処理をステップS206に切り替える。
【0126】
一致するプログラムID532がある場合(ステップS203においてYES)、CPU201は、処理をステップS206に切り替える。
【0127】
ステップS206において、CPU201は、導入対象の実行形式プログラム436をPLC100に転送して処理を終了する。なお、導入対象の実行形式プログラム436が管理サーバに保存されていない場合は、導入対象の実行形式プログラム436およびソースプログラム530のうちの少なくとも一方を、管理サーバ300にも出力するようにしてもよい。
【0128】
[g2.機能構成]
図10は、導入処理の実行において機能する、本発明の実施の形態に係るサポート装置200の機能構成の一例を示す図である。
【0129】
サポート装置200は、比較部250を備えてもよい。比較部250は、導入の指示を受け付けたことに基づいて、PLC100において実行されている実行形式プログラム436と、管理サーバ300が管理している各バージョンのユーザプログラムとを比較し、比較結果をモニタ207に出力する。
【0130】
具体的には、比較部250は、管理サーバ300が記憶しているプログラム情報312に含まれるバージョンごとのプログラムID532と、PLC100において実行されている実行形式プログラム436に含まれるプログラムID532とを比較する。
【0131】
<H.作用・効果>
以上のように、制御プログラムをバージョンごとに管理可能な開発環境を提供できる。そのため、一の制御プログラムに対して加えた変更の変遷を管理することができ、複数人でのプログラム開発を行なうことが容易になる。さらに、サポート装置200は、少なくとも、実行形式プログラム436を生成することができたことを条件にユーザプログラムを管理サーバ300に出力する。そのため、実行形式プログラム436を生成することができない不具合のあるユーザプログラムが管理サーバ300に保存されてしまうことを防止することができる。その結果、不具合のあるユーザプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるユーザプログラムを過ってPLC100に導入してしまうことを予め防止することができる。
【0132】
サポート装置200はモニタ207を備え、管理サーバ300にユーザプログラムを出力することができない場合に、その旨をモニタ207に表示することで通知する。これにより、ユーザは、作成または編集したユーザプログラムに欠陥があることを認識することができる。その結果、不具合のあるプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるプログラムを過ってPLC100に導入してしまうことを予め防止することができる。
【0133】
サポート装置200は、実行形式プログラム436を生成できたことに加えて、PLC100に実行形式プログラム436を転送できたことを条件にユーザプログラムを管理サーバ300に出力する。そのため、PLC100に転送することができないような不具合のあるユーザプログラムが管理サーバ300に保存されてしまうことを防止することができる。その結果、不具合のあるユーザプログラムを用いてプログラム開発が進められてしまうことや、不具合のあるユーザプログラムを過ってPLC100に導入してしまうことを予め防止することができる。
【0134】
サポート装置200は、PLC100にインストールされたユーザプログラムに変更を加える際に、PLC100にインストールされているユーザプログラムと、管理サーバ300によって管理されているユーザプログラムとを比較し、比較結果を通知する。そのため、管理サーバ300が管理し得ない状況下で作成されたユーザプログラムについても、管理することができる。その結果、管理サーバ300が管理することのできる範囲が広がる。これにより、作成された機能を過って削除してしまうことを防止することができる。
【0135】
サポート装置200と、管理サーバ300とは別体である。そのため、サポート装置200の処理負担を軽減することができる。
【0136】
§3 変形例
<変形例1>
上記の実施の形態において、サポート装置200のCPU201は、保存の指示を受け付けたことに基づいてステップS102以降の処理を実行するとした。すなわち、上記の実施の形態において、サポート装置200と管理サーバ300とは常時通信可能に接続されていることを前提とした上で、出力処理を実行する例を示した。なお、サポート装置200と管理サーバ300とは、常時、通信可能に接続されている必要はない。たとえば、サポート装置200のCPU201は、保存の指示を受け付けたか否かではなく、管理サーバ300との接続が開始されたことに応じて、ステップS102以降の処理を実行するようにしてもよい。これにより、管理サーバ300と接続されていない期間に作成または編集されたユーザプログラムに対する保存の指示を改めて行わなくとも、このユーザプログラムを管理することができる。すなわち、管理サーバ300と接続されていない期間に作成または編集されたユーザプログラムに対する管理を強化することができる。
【0137】
<変形例2>
図11は、変形例2における制御システム1bの概略構成を示す模式図である。制御システム1bは、図2に示す制御システム1と比較して、PLC100の代わりにPLC100bを備え、サポート装置200の代わりにサポート装置200bを備える点で異なる。
【0138】
PLC100bは、PLC100と比較して、管理サーバ300と通信するためのアクセス部142を備える点で異なる。アクセス部142を備えるPLC100bは、サポート装置200が備える生成部220、出力部230、比較部250に係る機能を備えていてもよい(図11中の生成部144、出力部146、比較部148)。また、サポート装置200bは、サポート装置200と比較して、生成部220および出力部230を備えていない点で異なる。すなわち、変形例2における制御システム1bにおいて、PLC100bが管理サーバ300と通信可能であり、コンパイル機能をPLC100bが備える。
【0139】
サポート装置200bは、ソースプログラム530をPLC100bに転送する。PLC100bの生成部144は、ソースプログラム530を受信すると、受信したソースプログラム530に基づいて実行形式プログラム436を生成する。出力部146は、実行形式プログラム436が生成されたことに基づいて、ユーザプログラムを管理サーバ300に出力する。
【0140】
このように、PLC100bが出力部146を備えることにより、管理サーバ300が管理することのできない開発環境下で開発されたユーザプログラムのうち、PLC100bにインストールされたユーザプログラムについては管理することができる。なお、出力部146は、実行形式プログラム436を受信したことに基づいて、管理サーバ300にユーザプログラムを出力するようにしてもよい。
【0141】
比較部148は、管理サーバ300と通信するためのネットワークに接続されたことに基づいて、インストールされている実行形式プログラム436と、管理サーバ300が管理している各バージョンのユーザプログラムとを比較し、比較結果を出力する。出力先は、たとえば、PLC100bに設けられたLEDなどであってもよく、また、PLC100bがサポート装置200や携帯端末やプリンターなどの機器と通信可能に接続されている場合には、これらの機器であってもよい。比較部148は、管理サーバ300が管理している各バージョンのユーザプログラムの中に、インストールされている実行形式プログラム436と一致するプログラムがない場合にのみ比較結果を出力するようにしてもよい。
【0142】
PLC100bが比較機能を備えることにより、管理サーバ300との通信手段を有していないサポート装置やメモリカード130からPLC100bに実行形式プログラム436をインストールした場合であっても、PLC100bにインストールされた全てのユーザプログラムについて管理することができる。
【0143】
<変形例3>
図12は、変形例3における制御システム1cの概略構成を示す模式図である。制御システム1cは、図2に示す制御システム1と比較して、PLC100の代わりにPLC100cを備え、PLC100cが管理サーバ300に係る機能として管理部300cを備える点で異なる。
【0144】
PLC100cは、制御プログラムの変更履歴310を保存するための記憶部を有していてもよく、また、PLC100cと通信可能なサーバに変更履歴310を保存するようにしてもよい。PLC100cが、管理部300cを備えることで、管理サーバ300との通信手段を有していないサポート装置やメモリカード130からPLC100cに実行形式プログラム436をインストールした場合であっても、PLC100cにインストールされた全てのユーザプログラムについて管理することができる。
【0145】
なお、PLC100cが制御プログラムの変更履歴310を保存するための記憶部を有している場合、外部のサーバに変更履歴310を保存している場合に比べて、変更履歴310を早く取得することができる。一方、外部のサーバに変更履歴310を保存する場合、PLC100cの記憶領域を省力化することができる。
【0146】
<変形例4>
上記の実施の形態においては、サポート装置200がユーザプログラムを出力するか否かを判断するものとした。たとえば、サポート装置200は保存の指示を受け付けたことに基づいてユーザプログラムを管理サーバ300に出力するようにしてもよい。この場合、管理サーバ300は、実行形式プログラムを生成する機能と、出力されたユーザプログラムを管理対象とするか否か(保存するか否か)を決定する機能とを備えてもよい。
【0147】
また、管理サーバ300は、ユーザプログラムを保存しないと決定した場合に、保存しない旨をサポート装置200に通知する機能を備えてもよい。サポート装置200は、ユーザプログラムが保存されなかった旨の通知を受けて、ユーザにその通知を行ってもよい。
【0148】
<変形例5>
図13は、変形例5における制御システム1eの概略構成を示す模式図である。制御システム1eは、図2に示す制御システム1と比較して、PLC100の代わりにPLC100eを備え、サポート装置200の代わりにサポート装置200eを備える点で異なる。
【0149】
PLC100eは、PLC100と比較して、制御プログラムのバージョンを管理するための管理部154をさらに備える点で異なる。すなわち、制御システム1eは、PLC100eと、管理サーバ300との両方で制御プログラムのバージョンを管理する点で、制御システム1と異なる。なお、管理部154の機能は、管理サーバ300と共通するため、説明を省略する。ここで、変形例5にかかる管理部154は、PLC100eで実行される制御プログラムについて管理し、他のPLCで実行される制御プログラムについては管理しない。一方、管理サーバ300は、複数の制御プログラムについて管理することができる。
【0150】
たとえば、ユーザは、サポート装置200eを管理サーバ300と接続させない状態(オフライン)で、PLC100eを利用して制御プログラムを作成することもある。このような場合に、管理サーバ300のみで制御プログラムのバージョンを管理している場合に、オフラインで作成された制御プログラムについては管理対象から外れてしまう虞がある。
【0151】
変形例5に係る制御システム1eにおいては、PLC100eと、管理サーバ300との両方で制御プログラムのバージョンを管理することで、オフラインで作成された制御プログラムについても管理対象に含めることができ、管理範囲が広いバージョン管理システムを提供できる。
【0152】
PLC100eと、管理サーバ300との両方で制御プログラムのバージョンを管理することで、管理範囲が広いバージョン管理システムを提供できる一方、PLC100eと、管理サーバ300とで、変更履歴を同期させる必要がある。変更履歴310をPLC100eと、管理サーバ300とで同期させるため、サポート装置200eは、比較部250eを備える。比較部250eは、サポート装置200eがPLC100eおよび管理サーバ300のいずれとも通信可能に接続されているときに、管理部154が記憶する変更履歴154aと、管理サーバ300が記憶する変更履歴310とを比較し、比較結果を出力する。たとえば、比較結果はモニタ207に出力する。ユーザは、モニタ207に出力された比較結果に基づいて、変更履歴310と変更履歴154aとを同期させることができる。
【0153】
なお、ユーザ操作に応じて変更履歴310と変更履歴154aとを同期させる例を示したが、ユーザ操作に関わらず、変更履歴310と変更履歴154aとが一致していない場合に同期させるようにしてもよい。
【0154】
なお、PLC100eは、管理サーバ300と通信するためのアクセス部142eを備えてもよい。たとえば、PLC100eは、サポート装置200eから制御プログラムが送られる度に、管理部154は、アクセス部142eを介して接続されている管理サーバ300によって管理されている制御プログラムと送られた制御プログラムとを比較して変更履歴310と変更履歴154aとを同期させるようにしてもよい。
【0155】
また、変更履歴310と変更履歴154aとの比較について、比較部250eは、プログラムID532のみを比較するようにしてもよく、また、履歴情報314を含む情報を比較してもよい。たとえば、履歴情報314を含む情報を比較することで、プログラムIDは変更履歴310と変更履歴154aとで一致しているにも関わらず、履歴情報314が一致しないようなことも検出することができる。
【0156】
§4 付記
以上のように、上記の実施の形態および変形例は以下のような開示を含む。
【0157】
<構成1>
制御対象を制御する制御装置(100,100e)で実行される制御プログラムの開発を支援するサポート装置(200,200e)であって、
制御プログラムを作成または編集するための作成部(210,210a)と、
前記作成部によって得られた作成プログラム(530)から前記制御装置が実行可能な形式の実行形式プログラム(436)を生成する生成部(220,220a)と、
制御プログラムをバージョンごとに管理する管理サーバ(300,300c)に、前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部(230,230a)とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、サポート装置。
【0158】
<構成2>
前記出力条件が成立しなかったことを通知する通知部(207)をさらに備える、構成1に記載のサポート装置。
【0159】
<構成3>
前記出力条件は、前記制御装置に前記実行形式プログラムを転送できたことを含む、構成1または構成2に記載のサポート装置。
【0160】
<構成4>
前記制御装置において実行されている制御プログラムを変更する操作を受け付けたときに、前記制御装置において実行されている制御プログラムと、前記管理サーバが管理している各バージョンの制御プログラムとを比較し、比較結果を出力する比較部(250)をさらに備える、構成1〜構成3のうちいずれかに記載のサポート装置。
【0161】
<構成5>
前記管理サーバは、前記サポート装置とは別に設けられている、構成1〜構成4のうちいずれかに記載のサポート装置。
【0162】
<構成6>
前記作成部は、前記管理サーバと接続されているか否かに関わらず制御プログラムを作成または編集し、
前記出力部は、前記管理サーバとの接続を開始したことに応じて、前記管理サーバと接続されていないときに作成または編集された制御プログラムを、前記出力条件が成立していることを条件に前記管理サーバに出力する、構成5に記載のサポート装置。
【0163】
<構成7>
制御対象を制御する制御装置(100,100b,100c,100e)で実行される制御プログラムの開発を支援するための制御システム(1,1a,1b,1c,1e)であって、
制御プログラムを作成または編集するための作成部(210,210a)と、
前記作成部によって得られた作成プログラムから前記制御装置が実行可能な形式の実行形式プログラムを生成する生成部(220,220a,144)と、
制御プログラムをバージョンごとに管理する管理サーバ(300,300a,300c)と、
前記作成部が作成または編集した制御プログラムを一のバージョンの制御プログラムとして保存するために、前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する出力部(230,230a,146)とを備え、
前記出力部は、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に前記作成部が作成または編集した制御プログラムを前記管理サーバに出力する、制御システム。
【0164】
<構成8>
制御プログラムをバージョンごとに管理する管理部(154)を有する制御装置(100e)と、
前記管理部が管理している各バージョンの制御プログラム(154a)と、前記管理サーバが管理している各バージョンの制御プログラム(310)とを比較し、比較結果を出力する比較部(250e)をさらに備える、構成7に記載の制御システム。
【0165】
<構成9>
制御対象を制御する制御装置(100,100e)で実行される制御プログラムの開発を支援する開発支援プログラム(520)であって、
前記開発支援プログラムはコンピュータに、
作成または編集によって得られた作成プログラム(530)から前記制御装置が実行可能な形式の実行形式プログラム(436)を生成するステップ(S102)と、
制御プログラムをバージョンごとに管理する管理サーバ(300)に、前記実行形式プログラムの生成が成功したことを少なくとも含む出力条件が成立していることを条件に、作成または編集によって得られた制御プログラムを一のバージョンの制御プログラムとして保存するために、作成または編集によって得られた制御プログラムを前記管理サーバに出力するステップ(S103,S107)とを実行させる、開発支援プログラム。
【0166】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合せても、実施することが意図される。
【符号の説明】
【0167】
1,1a,1b,1c,1e 制御システム、9 CD−ROM、10 ローカルネットワーク、20 接続ケーブル、100,100b,100c,100e PLC、102 プロセッサ、104 チップセット、106 主メモリ、108 フラッシュメモリ、122 内部バスコントローラ、124 フィールドバスコントローラ、126 USBコネクタ、128 メモリカードインターフェイス、130 メモリカード、142,142e アクセス部、144,220,220a 生成部、146,230,230a 出力部、148,250,250e 比較部、154,300c 管理部、154a,310 変更履歴、200,200b,200e サポート装置、201 CPU、202 ROM、203 RAM、204 HDD、205 キーボード、206 マウス、207 モニタ、208 CDROMドライブ、209 通信IF、210,210a 作成部、300,300a 管理サーバ、312 プログラム情報、314 履歴情報、400 リアルタイムOS、410 システムプログラム、412 スケジューラプログラム、414 出力処理プログラム、416 入力処理プログラム、418 IO処理プログラム、420 その他のシステムプログラム、430 制御プログラム、432 シーケンス命令演算プログラム、434 モーション演算プログラム、436 実行形式プログラム、510 OS、520 PLCサポートプログラム、521 エディタプログラム、522 コンパイラプログラム、523 デバッガプログラム、524 管理プログラム、526 通信プログラム、530 ソースプログラム、532 プログラムID。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13