(57)【要約】【課題】本発明は、生産現場等において発見された制御プログラムの不具合に対して、特別なサーバを用いずに、当該不具合による影響範囲を特定することができる、プログラマブルコントローラを提供する。【解決手段】本発明に係るプログラマブルコントローラ１００では、第一の記憶部１１０および流用履歴検索部１４０を備えている。第一の記憶部１１０には、回路ブロック１０２を一意に識別するための第一の回路ブロック識別コード１２１と、当該回路ブロックが作成されるまでに流用された回路ブロック１０２を一意に識別するための第二の回路ブロック識別コード１２２とが、対応付けて設定されている。流用履歴検索部１４０は、入力される所定の回路ブロック識別コードに従い、第一の記憶部１１０内のデータを検索する。これにより、流用履歴検索部１４０は、流用先回路ブロック識別コードを取得する。【選択図】図１
2010277316.tif 000002
【特許請求の範囲】
【請求項１】
プログラムモジュールである回路ブロックの複数から構成されるプログラムを管理するプログラマブルコントローラであって、
各前記回路ブロック毎に対応して作成されたファイルを保持する第一の記憶部と、
前記第一の記憶部内のデータを検索する流用履歴検索部とを、
備えており、
前記ファイルには、
前記回路ブロックを一意に識別するための第一の回路ブロック識別コードと、
当該回路ブロックが作成されるまでに流用された回路ブロックを一意に識別するための第二の回路ブロック識別コードとが、
対応付けて設定されており、
前記流用履歴検索部は、
入力される所定の回路ブロック識別コードに従い、前記第一の記憶部内のデータを検索することにより、前記所定の回路ブロック識別コードから一意に決定される所定の回路ブロックを流用した流用先回路ブロックを、一意に決定する流用先回路ブロック識別コードを取得する、
ことを特徴とするプログラマブルコントローラ。
【請求項２】
前記所定の回路ブロック識別コードを外部から取得したとき、前記流用履歴検索部は、
（Ａ）各前記ファイル毎に、前記所定の回路ブロック識別コードと前記第二の回路ブロック識別コードとが一致するか否かを判断し、
（Ｂ）前記（Ａ）において一致すると判断したとき、当該一致する前記第二の回路ブロック識別コードと対応して前記ファイルに設定されている前記第一の回路ブロック識別コードを、前記流用先回路ブロック識別コードとして取得する、
ことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記流用履歴検索部は、
（Ｃ）各前記ファイル毎に、前記第一の回路ブロック識別コードと前記第二の回路ブロック識別コードとが一致するか否かを判断し、
（Ｄ）前記（Ｃ）において一致すると判断したとき、当該一致する前記第二の回路ブロック識別コードと対応して前記ファイルに設定されている前記第一の回路ブロック識別コードを、前記流用先回路ブロック識別コードとして取得し、
前記（Ｃ）における前記第一の回路ブロック識別コードとは、
前記（Ｂ）において取得した前記第一の回路ブロック識別コードである、
ことを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記流用履歴検索部は、
前記（Ｃ）と前記（Ｄ）との処理を、繰り返し行い、
当該繰り返しの２度目以降における前記（Ｃ）での前記第一の回路ブロック識別コードとは、
前記（Ｄ）で取得した前記第一の回路ブロック識別コードである、
ことを特徴とする請求項３に記載のプログラマブルコントローラ。
【請求項５】
前記流用履歴検索部は、
前記（Ａ）または前記（Ｃ）において、全ての前記ファイルにおいて、前記一致が認められないとき、前記流用先回路ブロック識別コードを取得する処理を終了する、
ことを特徴とする請求項２乃至請求項４のいずれかに記載のプログラマブルコントローラ。
【請求項６】
プログラムモジュールである回路ブロックの複数から構成されるプログラムを管理するプログラマブルコントローラであって、
各前記回路ブロック毎に対応して作成されたファイルを保持する第一の記憶部と、
前記第一の記憶部内のデータを検索する流用履歴検索部とを、
備えており、
前記ファイルには、
前記回路ブロックを一意に識別するための第一の回路ブロック識別コードと、
当該回路ブロックの編集の際に使用した環境を一意に識別するための第一の編集元識別コードと、
当該回路ブロックが作成されるまでに流用された回路ブロックの編集の際に使用された、環境を一意に識別するための第二の編集元識別コードとが、
対応付けて設定されており、
前記流用履歴検索部は、
入力される、所定の回路ブロックが編集された環境を一意に識別するための所定の編集元識別コードに従い、前記第一の記憶部内のデータを検索することにより、前記所定の回路ブロックが編集された環境と同一環境で作成された回路ブロックを流用した流用先回路ブロックを、一意に決定する流用先回路ブロック識別コードを取得する、
ことを特徴とするプログラマブルコントローラ。
【請求項７】
前記所定の編集元識別コードを外部から取得したとき、前記流用履歴検索部は、
（Ｋ）各前記ファイル毎に、前記所定の編集元識別コードと前記第二の編集元識別コードとが一致するか否かを判断し、
（Ｌ）前記（Ｋ）において一致すると判断したとき、当該一致する前記第二の編集元識別コードと対応して前記ファイルに設定されている前記第一の回路ブロック識別コードを、前記流用先回路ブロック識別コードとして取得する、
ことを特徴とする請求項６に記載のプログラマブルコントローラ。
【請求項８】
前記流用履歴検索部は、
（Ｍ）各前記ファイル毎に、前記第一の編集元識別コードと前記第二の編集元識別コードとが一致するか否かを判断し、
（Ｎ）前記（Ｍ）において一致すると判断したとき、当該一致する前記第二の編集元識別コードと対応して前記ファイルに設定されている前記第一の回路ブロック識別コードを、前記流用先回路ブロック識別コードとして取得し、
前記（Ｍ）における前記第一の編集元識別コードとは、
前記（Ｌ）において取得した前記第一の回路ブロック識別コードと対応して前記ファイルに設定されている前記第一の編集元識別コードである、
ことを特徴とする請求項７に記載のプログラマブルコントローラ。
【請求項９】
前記流用履歴検索部は、
前記（Ｍ）と前記（Ｎ）との処理を、繰り返し行い、
当該繰り返しの２度目以降における前記（Ｍ）での前記第一の回路ブロック識別コードとは、
前記（Ｌ）で取得した前記第一の回路ブロック識別コードである、
ことを特徴とする請求項８に記載のプログラマブルコントローラ。
【請求項１０】
前記流用履歴検索部は、
前記（Ｋ）または前記（Ｍ）において、全ての前記ファイルにおいて、前記一致が認められないとき、前記流用先回路ブロック識別コードを取得する処理を終了する、
ことを特徴とする請求項７乃至請求項９の何れかに記載のプログラマブルコントローラ。
【請求項１１】
前記流用履歴検索部が取得した前記流用先回路ブロック識別コードから一意に特定される前記流用先回路ブロックを、視認可能に表示する表示部を、さらに備える、
ことを特徴とする請求項１または請求項６に記載のプログラマブルコントローラ。
【請求項１２】
前記プログラマブルコントローラ内部のみで識別可能な独自識別コードと、汎用一意識別コードとの対応関係を示す、識別コード変換表を保持する第二の記憶部と、
前記流用履歴検索部からの識別コードと前記識別コード変換表と用いて、前記独自識別コードと前記汎用一意識別コードとの相互間における識別コード変換処理を行う識別コード変換部とを、さらに備えており、
前記第一の記憶部には、
前記独自識別コードである、前記第一の回路ブロック識別コードおよび前記第二の回路ブロック識別コード、または、前記独自識別コードである、前記第一の回路ブロック識別コードおよび前記第一の編集元識別コードおよび前記第二の編集元識別コードが、格納されている、
ことを特徴とする請求項１または請求項６に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、たとえば工場の装置や設備などの制御に用いられる機器制御システムの分野における、制御プログラムの管理を行うことができるプログラマブルコントローラに関するものである。
【背景技術】
【０００２】
装置やシステムを制御するためには、制御プログラムが用いられる。当該制御プログラムは、複数の回路ブロックから構成されている。一方、装置やシステムが改変されれば、制御プログラムもこれにあわせてバージョン変更される。当該バージョン変更において、新規のコード作成がより少なくなるように、既存の回路ブロックを用いて、新規の制御プログラムを構成する所定の回路ブロックを作成・編集する。
【０００３】
制御プログラムを管理するプログラマブルコントローラ内において、シーケンスプログラムの変更履歴を管理する方法として、例えば特許文献１が存在する。当該特許文献１に係る技術では、部品管理サーバを用いて配布先を管理し、部品（回路ブロック）のバイナリにトレースＩＤを含める配布管理システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２２６００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に係る技術では、部品管理サーバと接続できない環境において、プログラマブルコントローラ内の制御プログラムの不具合が発見されたとき、当該不具合による影響範囲を現場で検出することができなかった。
【０００６】
また、特許文献１に係る技術では、複数プログラム間での共有が事前に想定されている部品以外の、制御プログラムの一部が流用された場合には、改めて部品を定義するなどの部品管理サーバ側での対応が必要となる。このため、実際に稼動している他のプログラマブルコントローラ内の制御プログラムに不具合が混入していても、それを管理サーバが無い現場で特定して対処することが困難であった。
【０００７】
そこで、本発明は、生産現場等において発見された制御プログラムの不具合に対して、特別なサーバを用いずに、当該不具合による影響範囲を特定することができる、プログラマブルコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明に係る請求項１に記載のプログラマブルコントローラは、プログラムモジュールである回路ブロックの複数から構成されるプログラムを管理するプログラマブルコントローラであって、各前記回路ブロック毎に対応して作成されたファイルを保持する第一の記憶部と、前記第一の記憶部内のデータを検索する流用履歴検索部とを、備えており、前記ファイルには、前記回路ブロックを一意に識別するための第一の回路ブロック識別コードと、当該回路ブロックが作成されるまでに流用された回路ブロックを一意に識別するための第二の回路ブロック識別コードとが、対応付けて設定されており、前記流用履歴検索部は、入力される所定の回路ブロック識別コードに従い、前記第一の記憶部内のデータを検索することにより、前記所定の回路ブロック識別コードから一意に決定される所定の回路ブロックを流用した流用先回路ブロックを、一意に決定する流用先回路ブロック識別コードを取得する。
【０００９】
また、本発明に係る請求項６に記載のプログラマブルコントローラは、プログラムモジュールである回路ブロックの複数から構成されるプログラムを管理するプログラマブルコントローラであって、各前記回路ブロック毎に対応して作成されたファイルを保持する第一の記憶部と、前記第一の記憶部内のデータを検索する流用履歴検索部とを、備えており、前記ファイルには、前記回路ブロックを一意に識別するための第一の回路ブロック識別コードと、当該回路ブロックの編集の際に使用した環境を一意に識別するための第一の編集元識別コードと、当該回路ブロックが作成されるまでに流用された回路ブロックの編集の際に使用された、環境を一意に識別するための第二の編集元識別コードとが、対応付けて設定されており、前記流用履歴検索部は、入力される、所定の回路ブロックが編集された環境を一意に識別するための所定の編集元識別コードに従い、前記第一の記憶部内のデータを検索することにより、前記所定の回路ブロックが編集された環境と同一環境で作成された回路ブロックを流用した流用先回路ブロックを、一意に決定する流用先回路ブロック識別コードを取得する。
【発明の効果】
【００１０】
本発明の請求項１または請求項６に記載のプログラマブルコントローラは、第一の記憶部には、流用履歴が識別コードの情報として記憶されている。さらに、流用履歴検索部は、入力される所定の回路ブロック識別コードまたは所定の編集元識別コードに従い、第一の記憶部内のデータを検索することにより、流用先回路ブロック識別コードを取得している。
【００１１】
したがって、外部から入力される識別コードおよび第一の回路ブロック識別コードをキーとした、流用先回路ブロック（不具合修正が必要な回路ブロック）を検索することが可能となる。よって、特別なサーバとの接続できない現場などの環境であっても、不具合による影響範囲を特定する不具合追跡が可能となる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１および実施の形態２に係るプログラマブルコントローラの構成を示す図である。
【図２】第一の記憶部におけるデータの格納態様を説明するための図である。
【図３】第一の記憶部におけるデータの格納態様を説明するための図である。
【図４】実施の形態１に係るプログラマブルコントローラの動作を説明するためのフローチャートである。
【図５】第一の記憶部におけるデータの格納態様を説明するための図である。
【図６】実施の形態２に係るプログラマブルコントローラの動作を説明するためのフローチャートである。
【図７】第一の記憶部におけるデータの格納態様を説明するための図である。
【図８】実施の形態３に係るプログラマブルコントローラの構成を示す図である。
【発明を実施するための形態】
【００１３】
本願発明は、制御プログラムを管理するプログラマブルコントローラに関するものである。当該制御プログラムは、複数の回路ブロックから構成されている。また、新たな制御プログラムを作成する際には、既に存在する回路ブロックが流用される。
【００１４】
以下、この発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００１５】
＜実施の形態１＞
図１は、本実施の形態に係るプログラマブルコントローラ１００の構成を示すブロック図である。
【００１６】
図１に示すように、プログラマブルコントローラ１００は、複数の制御プログラム１０１を管理している。また、各制御プログラム１０１は、複数の回路ブロック１０２から構成されている。また、プログラマブルコントローラ１００は、第一の記憶部１１０、流用履歴検索部１４０およびプログラマブル表示器（表示部と把握できる）３００を備えている。
【００１７】
ここで、当該プログラマブル表示器３００は、所定の情報を外部から視認可能に表示する表示部として機能すると共に、不具合修正が必要な回路ブロックを検索する際には、不具合の回路ブロックの識別コードを外部から入力できる入力部としても機能する。なお、当該入力された情報は、流用履歴検索部１４０に送信される。
【００１８】
また、回路ブロック１０２とは、制御プログラム１０１の構成要素であり、いわゆるプログラムモジュールである。本願では、当該プログラムモジュールを、回路ブロック１０２と称する。
【００１９】
回路ブロック識別コード記憶部１１０には、複数のファイル１１１を保持する。ここで、各ファイル１１１は、プログラマブルコントローラ１０１において管理されている各回路ブロック１０２毎に対応して作成されている。たとえば、プログラマブルコントローラ１０１において回路ブロック１０２Ａ，１０２Ｂ，１０２Ｃが管理されているなら、第一の記憶部１１０に保持されるファイル１１１は、３つである。つまり、回路ブロック１０２Ａに対応するファイル１１１Ａ、回路ブロック１０２Ｂに対応するファイル１１１Ｂ、および回路ブロック１０２Ｃに対応するファイル１１１Ｃである。
【００２０】
また、各ファイル１１１には、第一の回路ブロック識別コード１２１、第一の編集元識別コード１３１、第二の回路ブロック識別コード１２２および第二の編集元識別コード１３２が対応付けて設定されている。なお、本実施の形態では、第一の回路ブロック識別コード１２１および第二の回路ブロック識別コード１２２は、汎用一意識別コードである。
【００２１】
ここで、第一の回路ブロック識別コード１２１および第一の編集元識別コード１３１は、これらの識別コード１２１，１３１が設定されているファイル１１１が管理している、回路ブロック１０２に関する識別コードである。これに対して、第二の回路ブロック識別コード１２２および第二の編集元識別コード１３２は、これらの識別コード１２２，１３２が設定されているファイル１１１が管理している回路ブロック１０２における、当該回路ブロック１０２の作成・編集の際に流用された流用元の回路ブロック１０２に関する識別コードである。
【００２２】
具体的に、第一の回路ブロック識別コード１２１とは、当該第一の回路ブロック識別コード１２１を設定しているファイル１１１に対応する回路ブロック１０２を、一意に識別する識別コードである。
【００２３】
また、第一の編集元識別コード１３１とは、当該第一の編集元識別コード１３１を設定しているファイル１１１に対応する回路ブロック１０２が編集された環境を、一意に識別する識別コードである。
【００２４】
また、第二の回路ブロック識別コード１２２とは、当該第二の回路ブロック識別コード１２２を設定しているファイル１１１に対応する回路ブロック１０２が作成されるまでに流用された回路ブロック２０２を、一意に識別する識別コードである。
【００２５】
また、第二の編集元識別コード１３２とは、当該第二の編集元識別コード１３２を設定しているファイル１１１に対応する回路ブロック１０２が作成されるまでに流用された回路ブロック２０２が編集された環境を、一意に識別する識別コードである。
【００２６】
たとえば、回路ブロック１０２Ａの識別コードが「１０２Ａ」であり、当該回路ブロック１０２Ａが編集された制御プログラム開発環境２００Ａの識別コードが「２００Ａ」であるとする。また、当該回路ブロック１０２Ａは、回路ブロック１０２Ａ’を流用して編集されたとする。流用された回路ブロック１０２Ａ’の識別コードが「１０２Ａ’」であり、当該回路ブロック１０２Ａ’が編集された制御プログラム開発環境２００Ａ’の識別コードが「２００Ａ’」であるとする。
【００２７】
当該場合には、回路ブロック１０２Ａと対応して第一の記憶部１１１に保持されているファイル１１１Ａには、次の各コード１２１，１２２，１３１，１３２が設定される。つまり、当該ファイル１１１Ａにおいて、第一の回路ブロック識別コード１２１として「１０２Ａ」が設定され、第一の編集元識別コード１３１として「２００Ａ］が設定される。さらに、当該ファイル１１１Ａにおいて、第二の回路ブロック識別コード１２２として「１０２Ａ’」が設定され、第二の編集元識別コード１３１として「２００Ａ’］が設定される。
【００２８】
ここで、回路ブロック１０２の編集および第一の記憶部１１０が保持するデータの更新処理について説明する。
【００２９】
たとえば、制御プログラム１０１が所定の回路ブロック１０２Ｘ（識別コード：１０２Ｘ）を含んでおり、当該回路ブロック１０２Ｘが、制御プログラム開発環境２００Ｘ（識別コード：２００Ｘ）で作成されたものであるとする。また、当該回路ブロック１０２Ｘは如何なる回路ブロックを流用せず、オリジナルに作成されたものとする。
【００３０】
この場合には、第一の記憶部１１０において保持される、回路ブロック１０２Ｘに対応するファイル１１１には、図２に示すように、第一の回路ブロック識別コード１２１として「１０２Ｘ」が設定され、第一の編集元識別コード１３１として「２００Ｘ」が設定され、第二の回路ブロック識別コード１２２および第二の編集元識別コード１３２は、識別コードが設定されない。
【００３１】
当該状況において、制御プログラム開発環境２００Ｙ（識別コード：２００Ｙ）において回路ブロック１０２Ｘを流用して、回路ブロック１０２Ｙを編集（作成）したとする。そして、当該編集された回路ブロック１０２Ｙをプログラマブルコントローラ１００にダウンロードし、回路ブロック１０２Ｘが回路ブロック１０２Ｙに代替えされた新たな制御プログラム１０１が、プログラマブルコントローラ１００において新たに管理されたとする。
【００３２】
当該ダウロードの前に、当該制御プログラム開発環境２００Ｙでは、回路ブロック１０２Ｙに対して、たとえばＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ：汎用一意識別コード）である識別コードを付与する。そして、当該ダウンロードと共に、制御プログラム開発環境２００Ｙは、以下の情報をプログラマブルコントローラ１００に送信する。
【００３３】
つまり、前記で付与された回路ブロック１０２Ｙの識別コード（たとえば１０２Ｙ）、当該回路ブロック１０２Ｙの開始ステップおよび当該回路ブロック１０２Ｙのステップ数、回路ブロック１０２Ｙの編集を行った制御プログラム開発環境２００Ｙを識別するための識別コード、当該編集に携わったユーザのＩＤ、および当該編集時のタイムスタンプなどである。
【００３４】
制御プログラム開発環境２００Ｙが、上記各情報をプログラマブルコントローラ１００に送信する。すると、図２のファイル１１１を用いて、第一の記憶部１１０では、図３に示すような、回路ブロック１０２Ｙに対応するファイル１１１が新たに保持されることとなる。つまり、第一の回路ブロック識別コード１２１として「１０２Ｙ」が設定され、第一の編集元識別コード１３１として「２００Ｙ」が設定され、第二の回路ブロック識別コード１２２として「１０２Ｘ」が設定され、第二の編集元識別コード１３２として「２００Ｘ」が設定された、ファイル１１１が第一の記憶部１１０に新たに保持される。
【００３５】
このように、回路ブロック１０２が編集される度に、編集された回路ブロック１０２に対応するファイル１１１が新たに作成され、第一の記憶部１１０で保持される。ここで、上記の通り、当該新たに作成されたファイル１１１は、第一の記憶部１１０で保持されていた編集の際に流用された回路ブロック１０２に対応するファイル１１１と、編集された回路ブロック１０２のプログラマブルコントローラ１００へのダウンロードの際に送信される情報を用いて、作成される。
【００３６】
さて、ある回路ブロック１０２に不具合が発見された場合には、当該回路ブロック１０２を流用した各回路ブロック１０２にも不具合が混入している可能性がある。そして、当該不具合が混入している可能性がある各回路ブロック１０２を、不具合修正が必要な回路ブロック１０２の候補として特定する必要がある。このため、本実施の形態に係るプログラマブルコントローラ１００は、流用履歴検索部１４０を備えている。
【００３７】
たとえば、回路ブロック１０２Ａを流用し、回路ブロック１０２Ｂを作成し、当該回路ブロック１０２Ｂを流用し、回路ブロック１０２Ｃを作成したとする。さらに、回路ブロック１０２Ｃを流用し、回路ブロック１０２Ｄを作成し、当該回路ブロック１０２Ｄを流用し、回路ブロック１０２Ｅを作成したとする。そして、回路ブロック１０２Ｃにおいて不具合が発見されたとする。当該場合には、不具合修正が必要な回路ブロック１０２の候補として、回路ブロック１０２Ｃを流用して編集・作成された、回路ブロック１０２Ｄおよび回路ブロック１０２Ｅを検索する必要がある。
【００３８】
不具合修正が必要な回路ブロック１０２の候補を特定（検索）するに際して、ユーザは、プログラマブル表示器３００に不具合を発見した回路ブロック１０２の所定の回路ブロック識別コードを入力する。プログラマブル表示器３００は、当該入力された所定の回路ブロック識別コードを、流用履歴検索部１４０に送信する。つまり、プログラマブル表示器３００は、流用履歴検索部１４０に対して、不具合修正が必要な回路ブロックを問い合わせる。
【００３９】
そして、流用履歴検索部１４０では、入力される所定の回路ブロック識別コードに従い、第一の記憶部１１０内のデータを検索する。これにより、流用履歴検索部１４０は、所定の回路ブロック識別コードから一意に決定される不具合が発見された回路ブロックの１０２を流用した流用先回路ブロックを、一意に決定する流用先回路ブロック識別コードを取得する。
【００４０】
その後、流用履歴検索部１４０は、当該取得結果をプログラマブル表示器３００に送信する。そして、プログラマブル表示器３００は、上記流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、外部から視認できるように表示する。ここで、受信した流用先回路ブロック識別コードから対応する流用先回路ブロックを表示するために、たとえば、プログラマブル表示器３００は、回路ブロック識別コードと回路ブロックの対応関係を示すテーブルを予め有している。また、プログラマブルコントローラ１００は、回路ブロック識別コードと回路ブロックの対応関係を管理しているので、当該プログラマブルコントローラ１００において、流用先回路ブロック識別コードから対応する流用先回路ブロックを変換しても良い。
【００４１】
なお、ここでは、プログラマブル表示器３００を例に挙げたが、シーケンスプログラムが表示可能なソフトウェアがインストールされたパソコン等でも代替可能である。
【００４２】
次に、本実施の形態に係るプログラマブルコントローラ１００の動作、特に流用履歴検索部１４０およびプログラマブル表示器３００の動作について説明する。図４は、当該流用履歴検索部１４０およびプログラマブル表示器３００の動作を示すフローチャートである。
【００４３】
所定の回路ブロック１０２において不具合が発見されたとする。このとき、当該所定の回路ブロック１０２を一意に特定する所定の回路ブロック識別コードを、プログラマブル表示器３００から、流用履歴検索部１４０が取得する（ステップＳ１）。
【００４４】
次に、流用履歴検索部１４０は、後のステップで実施される流用先回路ブロック識別コードの一覧表への記載に際して、一覧表の初期化処理を行う（ステップＳ２）。
【００４５】
次に、流用履歴検索部１４０は、ステップＳ１で取得した所定の回路ブロック識別コードをキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、上記所定の回路ブロック識別コードと当該ファイル１１１に設定されている第二の回路ブロック識別コード１２２とが、一致するか否かを判断する（ステップＳ３）。
【００４６】
全てのファイル１１１において、所定の回路ブロック識別コードと一致する第二の回路ブロック識別コード１２２が設定されていないとする（ステップＳ３で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ９に移行する。後述するように、ステップＳ９では、流用先回路ブロック識別コードの一覧（または、流用先回路ブロックの一覧）が送信され、ステップＳ１０では、流用先回路ブロックの一覧が視認可能に表示される。ステップＳ３で「Ｎ」の場合には、一覧表はステップＳ２で初期化された状態のままであるので、ステップＳ１０では、流用先回路ブロック無しの表示がなされる。
【００４７】
これに対して、所定の回路ブロック識別コードと一致する第二の回路ブロック識別コード１２２が設定されているファイル１１１が存在しているとする（ステップＳ３で「Ｙ」）。この場合には、流用履歴検索部１４０は、当該一致する第二の回路ブロック識別コード１２２と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する（ステップＳ４）。そして、流用履歴検索部１４０は、ステップＳ４で取得した流用先回路ブロック識別コードを、ステップＳ２で初期化した一覧表に記載する（ステップＳ５）。
【００４８】
ステップＳ４において、第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得した。そこで、流用履歴検索部１４０は、次に、ステップＳ４で取得した当該第一の回路ブロック識別コード１２１をキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ４で取得した第一の回路ブロック識別コード１２１と当該ファイル１１１に設定されている第二の回路ブロック識別コード１２２とが、一致するか否かを判断する（ステップＳ６）。
【００４９】
全てのファイル１１１において、ステップＳ４で取得した第一の回路ブロック識別コード１２１と一致する第二の回路ブロック識別コード１２２が設定されていないとする（ステップＳ６で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ９に移行する。
【００５０】
ステップＳ９では、流用履歴検索部１４０は、ステップＳ５で流用先回路ブロック識別コードが記載された一覧表（または、流用先回路ブロックの一覧表）を、プログラマブル表示器３００に対して送信する。そして、プログラマブル表示器３００は、流用履歴検索部１４０から受信した一覧表に従い、流用履歴検索部１４０が取得した流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、視認可能に表示する（ステップＳ１０）。
【００５１】
これに対して、ステップＳ４で取得した第一の回路ブロック識別コード１２１と一致する第二の回路ブロック識別コード１２２が設定されているファイル１１１が存在しているとする（ステップＳ６で「Ｙ」）。この場合には、流用履歴検索部１４０は、当該一致する第二の回路ブロック識別コード１２２と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する（ステップＳ７）。そして、流用履歴検索部１４０は、ステップＳ７で取得した流用先回路ブロック識別コードを、一覧表に追加記載する（ステップＳ８）。
【００５２】
ステップＳ７において、第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得した。そこで、流用履歴検索部１４０は、次に、ステップＳ７で取得した当該第一の回路ブロック識別コード１２１をキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ７で取得した第一の回路ブロック識別コード１２１と当該ファイル１１１に設定されている第二の回路ブロック識別コード１２２とが、一致するか否かを判断する（ステップＳ６）。
【００５３】
流用履歴検索部１４０は、ステップＳ６からステップＳ８の処理を、再帰的に繰り返し行う。ここで、当該再帰的な繰り返しにおける２度目以降のステップＳ６での第一の回路ブロック識別コード１２１とは、ステップＳ７で取得した第一の回路ブロック識別コード１２１である。
【００５４】
上記ステップＳ６〜Ｓ８の再帰的な繰り返し処理の結果、あるステップＳ６において、流用履歴検索部１４０が、全てのファイル１１１において、ステップＳ７で取得した第一の回路ブロック識別コード１２１と一致する第二の回路ブロック識別コード１２２が設定されていないと判断したとする（ステップＳ６で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ９に移行する。
【００５５】
ステップＳ９では、流用履歴検索部１４０は、ステップＳ５，Ｓ８で流用先回路ブロック識別コードが記載された一覧表（または、流用先回路ブロックの一覧表）を、プログラマブル表示器３００に対して送信する。そして、プログラマブル表示器３００は、流用履歴検索部１４０から受信した一覧表に従い、流用履歴検索部１４０が取得した流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、視認可能に表示する（ステップＳ１０）。換言すれば、プログラマブル表示器３００は、不具合修正が必要な回路ブロック１０２の一覧を、視認可能に表示する。
【００５６】
以上のように、本実施の形態に係るプログラマブルコントローラ１００では、第一の記憶部１１０において、データ量が少ない識別コードを用いて、プログラマブルコントローラ１００内で管理している回路ブロック１０２の流用関係を保持している。当該流用関係とは、ファイル１１１における第一の回路ブロック識別コード１２１と第二の回路ブロック識別コード１２２との関係である。そして、流用先回路ブロック（不具合修正が必要な回路ブロック）特定のために、流用履歴検索部１４０は、外部から入力される識別コードに従い、当該第一の記憶部１１０内のデータを検索している。
【００５７】
したがって、外部から入力される識別コードおよび第一の回路ブロック識別コード１２１をキーとした、流用先回路ブロック（不具合修正が必要な回路ブロック）を検索することが可能となる。よって、特別なサーバとの接続できない現場などの環境であっても、流用元回路ブロックに含まれる不具合による影響範囲を特定する不具合追跡が可能となる。
【００５８】
また、本実施の形態に係るプログラマブルコントローラ１００は、流用先回路ブロック（不具合修正が必要な回路ブロック）を視認可能に表示するプログラマブル表示器３００を、備えている。したがって、ユーザは、不具合修正が必要な回路ブロックを容易に認識することができる。
【００５９】
ステップＳ３において一度に、複数のファイル１１１に対して上記「一致」の判断がされることも想定される。その場合には、一致と判断したファイル１１１毎に、図４のステップＳ４以降のステップが並列的に実施される。同様に、ステップＳ６において一度に、複数のファイル１１１に対して上記「一致」の判断がされることも想定される。その場合には、一致と判断したファイル１１１毎に、図４のステップＳ７以降のステップを並列的に実施される。
【００６０】
なお、図１の構成例では、ファイル１１１に設定されている、第二の回路ブロック識別コード１２２は、一つであった。しかしながら、図５に示すように、ファイル１１１において、一つの第一の回路ブロック識別コード１２１と、２以上の第二の回路ブロック識別コード１２２，１２３とが、対応して設定されていても良い。ここで、図５は、第二の回路ブロック識別コード１２２，１２３が、二つの例である。また、図５では、ファイル１１１の一部分のみを図示している。一のファイル１１１に設定される第二の回路ブロック識別コードの数は、プログラマブルコントローラ１００の能力や資源に応じて適切に定めればよい。
【００６１】
所定の回路ブロック１０２に対応して所定のファイル１１１が第一の記憶部１１０に保持されており、当該所定のファイル１１１の構成が図５に例示する構成だとする。すると、当該所定のファイル１１１に設定されている第一の回路ブロック識別コード１２１は、当該所定の回路ブロック１０２の識別コードである。また、当該所定のファイル１１１に設定されている第二の回路ブロック識別コード１２２は、当該所定の回路ブロック１０２の編集の際に流用された第一の他の回路ブロック１０２の識別コードである。さらに、当該所定のファイル１１１に設定されている第二の回路ブロック識別コード１２３は、当該第一の他の回路ブロック１０２の編集の際に流用された第二の他の回路ブロック１０２の識別コードである。
【００６２】
また、当該図５の構成の場合には、図４のステップＳ３では、流用履歴検索部１４０は、次の処理を行う。つまり、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１で取得した所定の回路ブロック識別コードと当該ファイル１１１に設定されている第二の回路ブロック識別コード１２２とが、一致するか否かを判断する。これに加えて、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１で取得した所定の回路ブロック識別コードと当該ファイル１１１に設定されている第二の回路ブロック識別コード１２３とが、一致するか否かを判断する。
【００６３】
そして、図５の構成例では、図４のステップＳ４において、流用履歴検索部１４０は、当該一致する第二の回路ブロック識別コード１２２または１２３と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する。そして、流用履歴検索部１４０は、当該ステップＳ４で取得した流用先回路ブロック識別コードを、ステップＳ２で初期化した一覧表に記載する（ステップＳ５）。
【００６４】
なお、図５の構成例で全てのファイル１１１において、所定の回路ブロック識別コードと一致する第二の回路ブロック識別コード１２２も、所定の回路ブロック識別コードと一致する第二の回路ブロック識別コード１２３も無い場合（ステップＳ３で「Ｎ」）には、ステップＳ９に移行する。
【００６５】
同様に、当該図５の構成の場合には、図４のステップＳ６では、流用履歴検索部１４０は、次の処理を行う。つまり、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ４またはステップＳ７で取得した第一の回路ブロック識別コード１２１と当該ファイル１１１に設定されている第二の回路ブロック識別コード１２２とが、一致するか否かを判断する。これに加えて、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ４またはステップＳ７で取得した第一の回路ブロック識別コード１２１と当該ファイル１１１に設定されている第二の回路ブロック識別コード１２３とが、一致するか否かを判断する。
【００６６】
そして、図５の構成例では、図４のステップＳ７において、流用履歴検索部１４０は、当該一致する第二の回路ブロック識別コード１２２または１２３と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する。そして、流用履歴検索部１４０は、当該ステップＳ７で取得した流用先回路ブロック識別コードを、一覧表に追加記載する（ステップＳ８）。
【００６７】
なお、図５の構成例で全てのファイル１１１において、第一の回路ブロック識別コード１２１と一致する第二の回路ブロック識別コード１２２も、第一の回路ブロック識別コード１２１と一致する第二の回路ブロック識別コード１２３も無い場合（ステップＳ６で「Ｎ」）には、ステップＳ９に移行する。
【００６８】
なお、各ファイル１１１において、設定される第一の回路ブロック識別コード１２１は一つのみである。これは、各ファイル１１１は各回路ブロック１０２に対応して設けられており、第一の回路ブロック識別コード１２１は、第一の回路ブロック識別コード１２１が設定されているファイル１１１と対応している回路ブロック１０２の識別コードであるからである。
【００６９】
また、本実施の形態において、流用先回路ブロック識別コードを一覧表に記載する事項について説明した。ここで、図４のフローチャートを実行することにより、一覧表に同一の識別コードが列記されることも想定される。この場合には、流用履歴検索部１４０は、重複する識別コードを一覧表から削除する。
【００７０】
＜実施の形態２＞
ある制御プログラム開発環境２００での編集作業により、回路ブロック１０２への不具合混入が疑わしい場合もある。つまり、当該ある制御プログラム開発環境２００自身の不具合、あるいは、制御プログラム開発環境２００を利用する特定の編集作業者による編集作業が原因して、回路ブロック１０２に不具合が混入されることもあり得る。当該場合に鑑みて創作された発明が、本実施の形態２に係るプログラマブルコントローラ１００である。
【００７１】
本実施の形態２に係るプログラマブルコントローラ１００も図１と同じ構成を有するが、本実施の形態では、流用履歴検索部１４０は、以下の動作を行う。
【００７２】
つまり、流用履歴検索部１４０は、入力される所定の編集元識別コードに従い、第一の記憶部１１０内のデータを検索する。ここで、所定の編集元識別コードとは、不具合を有することが発見された所定の回路ブロック１０２が編集された環境を、一意に識別するための識別コードである。上記検索により、流用履歴検索部１４０は、所定の回路ブロック１０２が編集された環境と同一環境で作成された回路ブロック１０２を流用した流用先回路ブロック１０２を、一意に決定する流用先回路ブロック識別コードを取得する。
【００７３】
次に、本実施の形態に係るプログラマブルコントローラ１００の動作、特に流用履歴検索部１４０およびプログラマブル表示器３００の動作について説明する。図６は、当該流用履歴検索部１４０およびプログラマブル表示器３００の動作を示すフローチャートである。
【００７４】
所定の回路ブロック１０２において不具合が発見されたとする。そして、当該所定の回路ブロック１０２が作成された所定の制御プログラム開発環境２００とする。このとき、当該所定のプログラム開発環境２００を一意に特定する所定の編集元識別コードを、プログラマブル表示器３００から、流用履歴検索部１４０が取得する（ステップＳ１１）。
【００７５】
次に、流用履歴検索部１４０は、後のステップで実施される流用先回路ブロック識別コードの一覧表への記載に際して、一覧表の初期化処理を行う（ステップＳ１２）。
【００７６】
次に、流用履歴検索部１４０は、ステップＳ１１で取得した所定の編集元識別コードをキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、上記所定の編集元識別コードと当該ファイル１１１に設定されている第二の編集元識別コード１３２とが、一致するか否かを判断する（ステップＳ１３）。
【００７７】
全てのファイル１１１において、所定の編集元識別コードと一致する第二の編集元識別コード１２２が設定されていないとする（ステップＳ１３で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ１９に移行する。後述するように、ステップＳ１９では、流用先回路ブロック識別コードの一覧（または、流用先回路ブロックの一覧）が送信され、ステップＳ２０では、流用先回路ブロックの一覧が視認可能に表示される。ステップＳ１３で「Ｎ」の場合には、一覧表はステップＳ１２で初期化された状態のままであるので、ステップＳ２０では、流用先回路ブロック無しの表示がなされる。
【００７８】
これに対して、所定の編集元識別コードと一致する第二の編集元識別コード１３２が設定されているファイル１１１が存在しているとする（ステップＳ１３で「Ｙ」）。この場合には、流用履歴検索部１４０は、当該一致する第二の編集元識別コード１３２と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する（ステップＳ１４）。そして、流用履歴検索部１４０は、ステップＳ１４で取得した流用先回路ブロック識別コードを、ステップＳ１２で初期化した一覧表に記載する（ステップＳ１５）。
【００７９】
ステップＳ１４において、第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得した。そこで、流用履歴検索部１４０は、次に、ステップＳ１４で取得した当該第一の回路ブロック識別コード１２１の編集環境を示す第一の編集元識別コード１３１をキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。つまり、ステップＳ１４で取得した当該第一の回路ブロック識別コード１２１と対応してファイル１１１に設定されている第一の編集元識別コード１３１（以後、ステップＳ１４で取得した第一の編集元識別コード１３１と称する）をキーとして、上記検索が実施される。
【００８０】
具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１４で取得した第一の編集元識別コード１３１と当該ファイル１１１に設定されている第二の編集元識別コード１３２とが、一致するか否かを判断する（ステップＳ１６）。
【００８１】
全てのファイル１１１において、ステップＳ１４で取得した第一の編集元識別コード１３１と一致する第二の編集元識別コード１３２が設定されていないとする（ステップＳ１６で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ１９に移行する。
【００８２】
ステップＳ１９では、流用履歴検索部１４０は、ステップＳ１５で流用先回路ブロック識別コードが記載された一覧表（または、流用先回路ブロックの一覧表）を、プログラマブル表示器３００に対して送信する。そして、プログラマブル表示器３００は、流用履歴検索部１４０から受信した一覧表に従い、流用履歴検索部１４０が取得した流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、視認可能に表示する（ステップＳ２０）。
【００８３】
これに対して、ステップＳ１４で取得した第一の編集元識別コード１３１と一致する第二の編集元識別コード１３２が設定されているファイル１１１が存在しているとする（ステップＳ１６で「Ｙ」）。この場合には、流用履歴検索部１４０は、当該一致する第二の編集元識別コード１３２と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する（ステップＳ１７）。そして、流用履歴検索部１４０は、ステップＳ１７で取得した流用先回路ブロック識別コードを、一覧表に追加記載する（ステップＳ１８）。
【００８４】
ステップＳ１７において、第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得した。そこで、流用履歴検索部１４０は、次に、ステップＳ１７で取得した当該第一の回路ブロック識別コード１２１の編集環境を示す第一の編集元識別コード１３１をキーとして、第一の記憶部１１０内のデータの検索を行い、流用先回路ブロック識別コードを取得する。つまり、ステップＳ１７で取得した当該第一の回路ブロック識別コード１２１と対応してファイル１１１に設定されている第一の編集元識別コード１３１（以後、ステップＳ１７で取得した第一の編集元識別コード１３１と称する）をキーとして、上記検索が実施される。
【００８５】
具体的に、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１７で取得した第一の編集元識別コード１３１と当該ファイル１１１に設定されている第二の編集元識別コード１３２とが、一致するか否かを判断する（ステップＳ１６）。
【００８６】
流用履歴検索部１４０は、ステップＳ１６からステップＳ１８の処理を、再帰的に繰り返し行う。ここで、当該再帰的な繰り返しにおける２度目以降のステップＳ１６での第一の編集元識別コード１３１とは、ステップＳ１７で取得した第一の編集元識別コード１３１である。
【００８７】
上記ステップＳ１６〜Ｓ１８の再帰的な繰り返し処理の結果、あるステップＳ１６において、流用履歴検索部１４０が、全てのファイル１１１において、ステップＳ１７で取得した第一の編集元識別コード１３１と一致する第二の編集元識別コード１３２が設定されていないと判断したとする（ステップＳ１６で「Ｎ」）。この場合には、流用先回路ブロック識別コードの取得を終了し、ステップＳ１９に移行する。
【００８８】
ステップＳ１９では、流用履歴検索部１４０は、ステップＳ１５，Ｓ１８で流用先回路ブロック識別コードが記載された一覧表（または、流用先回路ブロックの一覧表）を、プログラマブル表示器３００に対して送信する。そして、プログラマブル表示器３００は、流用履歴検索部１４０から受信した一覧表に従い、流用履歴検索部１４０が取得した流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、視認可能に表示する（ステップＳ１０）。換言すれば、プログラマブル表示器３００は、不具合修正が必要な回路ブロック１０２の一覧を、視認可能に表示する。
【００８９】
以上のように、本実施の形態に係るプログラマブルコントローラ１００では、第一の記憶部１１０において、データ量が少ない識別コードを用いて、プログラマブルコントローラ１００内で管理している回路ブロック１０２の流用関係を保持している。当該流用関係とは、ファイル１１１における第一の回路ブロック識別コード１２１、第一の編集元識別コード１３１および第二の編集元識別コード１３２の関係である。そして、流用先回路ブロック（不具合修正が必要な回路ブロック）特定のために、流用履歴検索部１４０は、外部から入力される識別コードに従い、当該第一の記憶部１１０内のデータを検索している。
【００９０】
したがって、外部から入力される識別コードおよび第一の編集元識別コード１３１をキーとした、流用先回路ブロック（不具合修正が必要な回路ブロック）を検索することが可能となる。よって、特別なサーバとの接続できない現場などの環境であっても、流用元回路ブロックの編集作業に関連する不具合による影響範囲を特定する不具合追跡が可能となる。
【００９１】
また、本実施の形態に係るプログラマブルコントローラ１００は、流用先回路ブロック（不具合修正が必要な回路ブロック）を視認可能に表示するプログラマブル表示器３００を、備えている。したがって、ユーザは、不具合修正が必要な回路ブロックを容易に認識することができる。
【００９２】
ステップＳ１３において一度に、複数のファイル１１１に対して上記「一致」の判断がされることも想定される。その場合には、一致と判断したファイル１１１毎に、図６のステップＳ１４以降のステップが並列的に実施される。同様に、ステップＳ１６において一度に、複数のファイル１１１に対して上記「一致」の判断がされることも想定される。その場合には、一致と判断したファイル１１１毎に、図６のステップＳ２７以降のステップを並列的に実施される。
【００９３】
なお、図１の構成例では、ファイル１１１に設定されている、第二の編集元識別コード１３２は、一つであった。しかしながら、図７に示すように、ファイル１１１において、一つの第一の編集元識別コード１３１と、２以上の第二の編集元識別コード１３２，１３３とが、対応して設定されていても良い。ここで、図７は、第二の編集元識別コード１３２，１３３が、二つの例である。また、図７では、ファイル１１１の一部分のみを図示している。一のファイル１１１に設定される第二の編集元識別コードの数は、プログラマブルコントローラ１００の能力や資源に応じて適切に定めればよい。
【００９４】
所定の回路ブロック１０２に対応して所定のファイル１１１が第一の記憶部１１０に保持されており、当該所定のファイル１１１の構成が図７に例示する構成だとする。すると、当該所定のファイル１１１に設定されている第一の編集元識別コード１３１は、当該所定の回路ブロック１０２が編集された環境の識別コードである。また、当該所定のファイル１１１に設定されている第二の編集元識別コード１３２は、当該所定の回路ブロック１０２の編集の際に流用された第一の他の回路ブロック１０２が編集された環境の識別コードである。さらに、当該所定のファイル１１１に設定されている第二の編集元識別コード１３３は、当該第一の他の回路ブロック１０２の編集の際に流用された第二の他の回路ブロック１０２が編集された環境の識別コードである。
【００９５】
また、当該図７の構成の場合には、図６のステップＳ１３では、流用履歴検索部１４０は、次の処理を行う。つまり、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１１で取得した所定の編集元識別コードと当該ファイル１１１に設定されている第二の編集元識別コード１３２とが、一致するか否かを判断する。これに加えて、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１１で取得した所定の編集元識別コードと当該ファイル１１１に設定されている第二の編集元識別コード１３３とが、一致するか否かを判断する。
【００９６】
そして、図７の構成例では、図６のステップＳ１４において、流用履歴検索部１４０は、当該一致する第二の編集元識別コード１３２または１３３と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する。そして、流用履歴検索部１４０は、当該ステップＳ１４で取得した流用先回路ブロック識別コードを、ステップＳ１２で初期化した一覧表に記載する（ステップＳ１５）。
【００９７】
なお、図７の構成例で全てのファイル１１１において、所定の編集元識別コードと一致する第二の編集元識別コード１３２も、所定の編集元識別コードと一致する第二の編集元識別コード１３３も無い場合（ステップＳ１３で「Ｎ」）には、ステップＳ１９に移行する。
【００９８】
同様に、当該図７の構成の場合には、図６のステップＳ１６では、流用履歴検索部１４０は、次の処理を行う。つまり、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１４またはステップＳ１７で取得した第一の編集元識別コード１３１と当該ファイル１１１に設定されている第二の編集元識別コード１３２とが、一致するか否かを判断する。これに加えて、流用履歴検索部１４０は、第一の記憶部１１０に保持されている各ファイル１１１毎に、ステップＳ１４またはステップＳ１７で取得した第一の編集元識別コード１３１と当該ファイル１１１に設定されている第二の編集元識別コード１３３とが、一致するか否かを判断する。
【００９９】
そして、図７の構成例では、図６のステップＳ１７において、流用履歴検索部１４０は、当該一致する第二の編集元識別コード１３２または１３３と対応してファイル１１１に設定されている第一の回路ブロック識別コード１２１を、流用先回路ブロック識別コードとして取得する。そして、流用履歴検索部１４０は、当該ステップＳ１７で取得した流用先回路ブロック識別コードを、一覧表に追加記載する（ステップＳ１８）。
【０１００】
なお、図７の構成例で全てのファイル１１１において、ステップＳ１４またはＳ１７で取得した第一の編集元識別コード１３１と一致する第二の編集元識別コード１３２も、ステップＳ１４またはＳ１７で取得した第一の編集元識別コード１３１と一致する第二の編集元識別コード１３３も無い場合（ステップＳ１６で「Ｎ」）には、ステップＳ１９に移行する。
【０１０１】
なお、各ファイル１１１において、設定される第一の編集元識別コード１３１は一つのみである。これは、各ファイル１１１は各回路ブロック１０２に対応して設けられており、第一の編集元識別コード１３１は、第一の編集元識別コード１３１が設定されているファイル１１１と対応している回路ブロック１０２が編集された環境の識別コードであるからである。
【０１０２】
また、本実施の形態において、流用先回路ブロック識別コードを一覧表に記載する事項について説明した。ここで、図６のフローチャートを実行することにより、一覧表に同一の識別コードが列記されることも想定される。この場合には、流用履歴検索部１４０は、重複する識別コードを一覧表から削除する。
【０１０３】
＜実施の形態３＞
図８は、本発明の実施の形態３に係るプログラマブルコントローラ１００の構成を示すブロック図である。
【０１０４】
実施の形態１では、グローバルに一意であることを保証するため、回路ブロック１０２の識別コード１２１，１２２，１２３として、ＵＵＩＤ（汎用一意識別コード）を採用していた。ここで、当該汎用一意識別コードは、グローバルに一意で特定される識別コードであるので、当該汎用一意識別コードのデータ量は大きくなる。したがって、当該大きなデータ量の汎用一意識別コードを複数格納するためには、第一の記憶部１１０は非常に大きな記憶容量が要される。
【０１０５】
しかしながら、プログラマブルコントローラ１００では、一般に記憶容量の資源が限られている。したがって、第一の記憶部１１０に大きなデータ量の汎用一意識別コードを格納すると、プログラマブルコントローラ１００における、プログラムの記憶可能領域が圧迫される場合がある。
【０１０６】
よって、第一の記憶部１１０において格納される識別コードは、データ量の小さいものを採用することが望ましい。そこで、本実施の形態に係るプログラマブルコントローラ１００では、第一の記憶部１１０において、独自識別コードである第一、二の回路ブロック識別コード１２１，１２２が格納される。ここで、独自識別コードとは、当該プログラマブルコントローラ１００内部のみで識別可能な識別コードのことである。当該独自識別コードは、当該プログラマブルコントローラ１００内部のみで識別可能であれば足りるので、グローバルに一意（つまり、全システムにおいて一意）である汎用一意識別コードよりも、データ量は小さくなる。
【０１０７】
一方、不具合修正が必要な回路ブロック１０２の候補検索に際しては、プログラマブル表示器３００からは、不具合が発生した回路ブロック１０２の識別コードとして、汎用一意識別コードが入力される。また、流用履歴検索部１４０からプログラマブル表示器３００への検索結果出力に際して、流用履歴検索部１４０は汎用一意識別コードが必要となる。
【０１０８】
したがって、本実施の形態に係るプログラマブルコントローラ１００では、汎用一意識別コードと独自識別コードとの相互変換を実現する機能が必要となる。そこで、本実施の形態に係るプログラマブルコントローラ１００は、図１で示した構成に加えて、識別コード変換部１５０および第二の記憶部１６０を備えている。
【０１０９】
第二の記憶部１６０には、汎用一意識別コードと独自識別コードとの対応関係を示す、識別コード変換表が格納されている。具体的に、識別コード変換表は、汎用一意識別コードである回路ブロック識別コードと独自識別コードである回路ブロック識別コードとの対応関係が表す。そして、識別コード変換部１６０は、流用履歴検索部１４０から入力される汎用一意識別コード（または独自識別コード）から、上記識別コード変換表を用いて、独自識別コード（または汎用一意識別コード）へと変換する識別コード変換処理を行う。
【０１１０】
なお、本実施の形態では、第一の記憶部１１０には、独自識別コードである、第一の回路ブロック識別コード１２１および第二の回路ブロック識別コード１２２が、格納されている。
【０１１１】
次に、本実施の形態に係るプログラマブルコントローラ１００の動作について説明する。
【０１１２】
所定の回路ブロック１０２において不具合が発生しているこが分かり、ユーザは、前記所定の回路ブロック１０２の所定の回路ブロック識別コードを、プログラマブル表示器３００に入力する。ここで、当該所定の回路ブロック識別コードは、汎用一義識別コードである。すると、図８において、プログラマブル表示器３００から流用履歴検索部１４０に、当該汎用一義識別コードである所定の回路ブロック識別コードが送信される。
【０１１３】
汎用一意識別コードである所定の回路ブロック識別コードが入力されると、流用履歴検索部１４０は、入力された汎用一意識別コードである所定の回路ブロック識別コードを、識別コード変換部１５０に送信する。
【０１１４】
そして、識別コード変換部１５０では、第二の記憶部１６０が保持する識別コード変換表を用いて、汎用一意識別コードである所定の回路ブロック識別コードを、独自識別コードである所定の回路ブロック識別コードに変換する。その後、識別コード変換部１５０は、前記変換後の独自識別コードである所定の回路ブロック識別コードを、流用履歴検索部１４０に送信する。
【０１１５】
そして、流用履歴変換部１４０は、実施の形態１で説明した同様の操作を実施する。つまり、流用履歴変換部１４０は、受信した独自識別コードである所定の回路ブロック識別コードに従い、回路第一の記憶部１１０内のデータを検索する。これにより、独自識別コードである流用先回路ブロック識別コードを取得する。
【０１１６】
さて、流用履歴変換部１４０が、検索処理の結果、独自識別コードである流用先回路ブロック識別コードの一覧を取得したとする。すると、流用履歴検索部１４０は、取得した独自識別コードである流用先回路ブロック識別コードを、識別コード変換部１５０に送信する。
【０１１７】
次に、識別コード変換部１５０は、第二の記憶部１６０が保持する識別コード変換表を用いて、独自識別コードである流用先回路ブロック識別コードを、汎用一意識別コードである流用先回路ブロック識別コードに変換する。その後、識別コード変換部１５０は、変換後の汎用一意識別コードである流用先回路ブロック識別コードを、流用履歴検索部１４０に送信する。
【０１１８】
最後に、プログラマブル表示器３００は、流用履歴検索部１４０から取得した、汎用一意識別コードである流用先回路ブロック識別コードの一覧表に従い、当該流用先回路ブロック識別コードから一意に特定される流用先回路ブロックを、視認可能に表示する。
【０１１９】
以上のように、本発明の実施の形態に係るプログラマブルコントローラ１００は、識別変換表を保持する第二の記憶部１６０を、さらに備えている。さらに、当該プログラマブルコントローラ１００は、識別コード変換表を用いた、独自識別コードと汎用一意識別コードとの相互間における識別コード変換処理を行う識別コード変換部１５０も、備えている。そして、第一の記憶部１１０には、独自識別コードである、第一の回路ブロック識別コード１２１および第二の回路ブロック識別コード１２２が、格納されている。
【０１２０】
このように、識別コード変換部１５０および第二の記憶部１６０を備えることにより、第一の記憶部１１０には、データ量の少ない独自識別コードである、第一の回路ブロック識別コード１２１および第二の回路ブロック識別コード１２２の格納が可能となる。したがって、複数のファイル１１１を第一の記憶部１１０に格納したとしても、当該第一の記憶部１１０の記憶容量が大きく増大することを防止できる。
【０１２１】
なお、上記では、実施の形態１に対して本実施の形態を適用する場合に言及した。しかしながら、本実施の形態を実施の形態２に対して適用することも可能である。
【０１２２】
つまり、第一の記憶部１１０内には、第一の編集元識別コード１３１および第二の編集元識別コード１３２においても、データ量の少ない独自識別コード形式で格納される。そして、第二の記憶部１６０は、第一の識別コード変換表と第二の識別コード変換表とを格納している。ここで、第一の識別コード変換表は、汎用一意識別コードである回路ブロック識別コードと独自識別コードである回路ブロック識別コードとの対応関係が表す。これに対して、第二の識別コード変換表は、汎用一意識別コードである編集元識別コードと独自識別コードである編集元識別コードとの対応関係が表す。
【０１２３】
そして、識別コード変換部１５０は、第二の記憶部１６０内の第二の識別コード変換表を用いて、汎用一義識別コードである所定の編集元識別コードを独自識別コードである所定の編集元識別コードに変換する。その後、実施の形態２で説明した動作により独自識別コードである流用先回路ブロック識別コードを取得する。その後、識別コード変換部１５０は、第二の記憶部１６０内の第一の識別コード変換表を用いて、独自識別コードである流用先回路ブロック識別コードを汎用一義識別コードである流用先回路ブロック識別コードに変換する。
【符号の説明】
【０１２４】
１００  プログラマブルコントローラ、１０１  制御プログラム、１０２  回路ブロック、１１０  第一の記憶部、１１１  ファイル、１２１  第一の回路ブロック識別コード、１２２，１２３  第二の回路ブロック識別コード、１３１  第一の編集元識別コード、１３２，１３３  第二の編集元識別コード、１４０  流用履歴検索部、１５０  識別コード変換部、１６０  第二の記憶部、２００  制御プログラム開発環境、３００  プログラマブル表示器。
【図１】
2010277316.tif 000003
【図２】
2010277316.tif 000004
【図３】
2010277316.tif 000005
【図４】
2010277316.tif 000006
【図５】
2010277316.tif 000007
【図６】
2010277316.tif 000008
【図７】
2010277316.tif 000009
【図８】
2010277316.tif 000010