JP6504237B2 - 共有データ定義支援システム、その支援装置、プログラム - Google Patents

共有データ定義支援システム、その支援装置、プログラム Download PDF

Info

Publication number
JP6504237B2
JP6504237B2 JP2017243331A JP2017243331A JP6504237B2 JP 6504237 B2 JP6504237 B2 JP 6504237B2 JP 2017243331 A JP2017243331 A JP 2017243331A JP 2017243331 A JP2017243331 A JP 2017243331A JP 6504237 B2 JP6504237 B2 JP 6504237B2
Authority
JP
Japan
Prior art keywords
shared data
definition
data type
information
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017243331A
Other languages
English (en)
Other versions
JP2018041514A (ja
Inventor
東洋史 門崎
東洋史 門崎
吉平 宮野
吉平 宮野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Publication of JP2018041514A publication Critical patent/JP2018041514A/ja
Application granted granted Critical
Publication of JP6504237B2 publication Critical patent/JP6504237B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)
  • Control By Computers (AREA)

Description

本発明は、制御システムの制御プログラムの作成作業に係わる、制御システム全体での共有データ定義の不整合の検査方法等に関する。
複数のコントローラがネットワークに接続されて成る制御システムに関する制御プログラムの作成では、複数の作業者が、各々が担当するコントローラ装置を決めて、制御プログラムの作成を分担し、それぞれの作業者のプログラミング装置を用いて、同時並行で作業を進めることが行われる。
このような環境の下で、制御システムにおける通信ネットワークを用いたコモンメモリ型のデータ交換方式に対応して、複数のコントローラ間で共有するデータ(変数)を用いて制御プログラムを作成する場合がある。
ここで、図22を参照して上記コモンメモリ型のデータ交換方式について説明する。
図22には、上記“複数のコントローラがネットワークに接続されて成る制御システム”の一例の概略構成を示す。
図示の例の制御システムは、複数のコントローラ(PLC)100(PLC1、PLC2、・・・、PLCn)が、ネットワーク200に接続されており、各コントローラ100がネットワーク200を介して相互にデータ送受信可能な構成となっている。
各コントローラ100は、コモンメモリ101を有している。コモンメモリ101は、上記“複数のコントローラ間で共有するデータ(グローバル変数等;共有データというものとする)”を記憶するメモリである。各コントローラ100は、例えば、自己のコモンメモリ101における自局更新領域の格納データ(共有データ)を、ネットワーク上にブロードキャスト送信する。各コントローラ100は、例えば、他のコントローラ100からブロードキャスト送信された上記共有データを受信すると、これを自己のコモンメモリ101に上書き格納する。
上記一例に限らないが、基本的には、全てのコントローラ100のコモンメモリ101の格納データ(全共有データ)が同一となるように制御されている。
尚、各コントローラ100の他の構成については図示・説明は省略するが、CPUやコモンメモリ以外のメモリ等を有しており、上記ブロードキャスト通信等の各種機能を実現させる。
また、図22に示すように、各コントローラ100(PLC1、PLC2、・・・、PLCn)毎に対応して、各プログラミング装置110が接続されている。上記各作業者は、それぞれ、任意のプログラミング装置110を用いて、対応するコントローラ100の制御プログラムを作成する。作成された制御プログラムは、対応するコントローラ100に転送されて記憶される。尚、制御プログラムには、上記共有データ(グローバル変数等)やローカル変数等の各種変数が用いられる。
また、上記各プログラミング装置110は、図23に示すように、他のネットワーク120に接続されている。また、当該他のネットワーク120には、サーバ装置130も接続されている。これより、当該他のネットワーク120を介して、プログラミング装置110間やプログラミング装置110−サーバ装置130間で通信(データ送受信)可能となっている。
ここで、共有データは上述したようなシステム全体で共有するものであるから、各作業者が独自に定義(変数名や割当アドレス等)して上記制御プログラムで使用してよいものではない。この為、予めシステム全体として共有データに関する定義を行って、この定義を各作業者に通知しておく必要がある。
例えば、上記サーバ装置130において、共有データに関する定義を行って、この共有データ定義(その一部)を、上記他のネットワーク120を介して各プログラミング装置110に配信して記憶させること等が行われている。
図24に、このような共有データの定義や配信に係わる具体例を示す。
図24(a)には、上記サーバ装置130で作成/記憶される共有データ定義の具体例(共有データ定義テーブル)を示す。
図示の例の共有データ定義テーブル140は、共有データ変数名141、データ型142、アドレス143、書込み局(ライト局)144、参照局(リード局)145等から成る。
つまり、各共有データ毎に、その識別情報(変数名などの名称など)、INTなどのデータ型、上記コモンメモリ101における割当アドレス等の定義が、共有データ変数名141、データ型142、アドレス143に登録されている。更に、ここでは、説明の簡略化のため、コモンメモリ101における各割当アドレス(各アドレス143)へアクセスを行うのは、各共有データ毎に、リードとライトの1対のコントローラ100のみであるものとする。つまり、アドレス143へ書き込みを行うコントローラ100の識別情報等が書込み局144に格納され、アドレス143からの読出しを行うコントローラ100の識別情報等が参照局145に格納される。尚、参照局145は1つに限らず複数局定義してもよい。
ここで、上記共有データ定義テーブル140を各プログラミング装置110に配信して記憶させてもよいが、上記のように、各共有データ毎に、それに関係するコントローラ100は限られている(書込み局144と参照局145のみ)。
これより、図24(b)に示すように、各コントローラ100毎に、上記共有データ定義テーブル140から、そのコントローラ100に関係するデータを抽出することで共有データ変数宣言テーブル150(150−1、150−2、150−3)を生成して、これをそのコントローラ100に対応するプログラミング装置110に配信して記憶させる。
ここで、図24(a)には一例として、共有データ変数名141がA,B,Cの3つの共有データの定義を示している。そして、図示の例の場合、共有データAに関係するコントローラはPLC1とPLC2であり、共有データBに関係するコントローラはPLC2とPLC1であり、共有データCに関係するコントローラはPLC1とPLC3である。
これより、図24(b)に示すように、PLC1用の共有データ変数宣言テーブル150−1は、上記3つの共有データ定義全てが抽出されて作成されることになる。一方、PLC3用の共有データ変数宣言テーブル150−3は、上記3つの共有データ定義のうち共有データCの定義のみが抽出されて作成されることになる。
この様にして、各プログラミング装置110に配信して記憶させる共有データ定義のデータ量を、削減することができる。
上記各コントローラ100用の各共有データ変数宣言テーブル150を、対応するプログラミング装置110に配信させて記憶させた後、各プログラミング装置110において上記作業者が、記憶された共有データ変数宣言テーブル150を参照しつつ制御プログラムの作成作業を行うことになる。
また、特許文献1に開示されている従来技術では、ネットワーク間で同期化されるデータの多重定義をチェックする方法を示している。この例では、プログラミング装置において、複数のコントローラ装置向けの制御プログラムに記述済みの通信用出力シンボルのデータ変数名の重複チェックを行うことについて開示している。
また、特許文献2には、データ型を有する変数のデータ型情報の流用方法について開示されているが、これは、対象となる変数の利用形態を判断材料に用いてデータ型の内部構造の不整合判定を行うものではない。
特許第3894421号公報 特開2008−276526号公報
ここで、従来では、上述したように予め共有データを定義して、その情報を元に制御プログラム作成を開始したにも関わらず、一部の作業者同士(作業者グループ)が申し合わせて、新たに必要となった共有データをこれら作業者間でのみ追加定義し、全体の共有データ定義に反映させていない等の状況が生じる場合がある。つまり、制御プログラム作成開始時に定義していた共有データに関する定義が、制御プログラムの作成の進展に伴って一部のプログラミング装置110においてのみ改変され(そして、その共有データ変数宣言テーブル150にのみ反映される)、全体の共有データ定義(上記共有データ定義テーブル140等)や、他のプログラミング装置110で使われている共有データ定義(共有データ変数宣言テーブル150)には反映されていない等という状況が発生することがある。
この場合、例えば、2つの作業者グループが、別々に申し合わせて共有データ定義を追加した際、別々の意味のデータを同じ名称で重複定義してしまう、といったことが発生し得る。例えば、共有データ変数名は同じであるが、データ型やアドレスが異なる複数の共有データ定義が行われることが有り得る。
このような不整合の発生を避けるには、共有データ定義に何らかの変更を行う場合に、全ての作業者が現在用いている共有データ定義(共有データ変数宣言テーブル150;但し初期状態のままとは限らない)を一旦全て上記サーバ装置130等に集め、サーバ装置130等において管理者等によって不整合が無い様に共有データ定義テーブル140に新規定義を追加する等して共有データ定義テーブル140を更新する。そして、更新後の共有データ定義テーブル140に基づいて再び上記各共有データ変数宣言テーブル150を作成して各プログラミング装置110に配信して記憶させる方法がある(尚、この配信・記憶が行われるまで、各プログラミング装置110における作業は一旦止めることになる)。
しかし、この方法では、サーバ装置130等において共有データ定義を変更している間、その変更に関係のない作業者の作業まで止めて、定義変更を行う必要があった。更に、サーバ装置130に何らかの不具合が発生した場合、復旧するまでの間、定義変更は困難であった。また、そもそも、各プログラミング装置110以外の構成(つまり、サーバ装置130)が余計に必要であった。
また、上記特許文献1には、複数の作業者が別々のプログラミング装置を用いて、並行して制御プログラムを作成する際の、共有データの多重定義などの不整合検査方法については、何等開示されていない。
本発明の課題は、共有データ定義で用いられるデータ型について、そのデータ型名が同一であるか否かの観点での不整合検査を行っているが、そのデータ型自体が各作業者のプログラミング環境において定義された派生データ型である場合は、派生データ型の内部構造の不整合を検査できるようにする共有データ定義支援システム、その支援装置、プログラム等を提供することである。
本発明の共有データ定義支援システムは、各々がネットワークに接続されると共に1以上の共有データを保持し得る複数のコントローラと、該各コントローラに対応して設けられ、そのコントローラの制御プログラムを前記共有データも用いて任意に作成させるプログラミング装置とを有するシステムであって、前記各プログラミング装置に対応して支援装置が設けられている。
そして、各支援装置は、他の前記各プログラミング装置もしくは他の前記支援装置から名称と内部構造情報とを含む派生データ型の定義情報を取得する派生データ型定義転送手段と、取得した前記派生データ型の定義情報を記憶する派生データ型定義管理テーブル記憶手段と、前記派生データ型の定義情報に基づいて、前記名称が同一である派生データ型同士の前記内部構造情報の整合性を判定する派生データ型整合性検査手段、を有する。
本発明の共有データ定義支援システム、その支援装置、プログラム等によれば、後から一部で共有データが追加されることに伴って発生する可能性のある共有データ定義の不整合を、任意のプログラミング環境で検査できるようにし、また、部分的・段階的に整合性検査を行うことで全体での共有データ定義の不整合の検査を実現させることができる。
本例の共有データ定義支援装置における各作業者のプログラミング環境の概略構成図である。 実施例1の共有データ定義支援装置の機能ブロック図である。 (a)は共有データ定義管理テーブル、(b)は共有データ変数宣言テーブルの具体例である。 共有データ定義支援装置を用いて共有データ定義の不整合を検出するための作業フローである。 全体における各整合性検査の実施の様子を示す図である。 ステップS15における共有データ定義の不整合検査の詳細処理例を示すフローチャートである。 初期状態における各プログラミング環境の各種テーブルの具体例(1/2)である。 初期状態における各プログラミング環境の各種テーブルの具体例(2/2)である。 図7、図8の例から更新後の各種テーブルの具体例(1/2)である。 図7、図8の例から更新後の各種テーブルの具体例(2/2)である。 実施例2の共有データ定義支援装置の機能ブロック図である。 実施例2における共有データ定義の不整合を検出するための作業フロー(1/2)である。 実施例2における共有データ定義の不整合を検出するための作業フロー(2/2)である。 実施例2における共有データ定義管理テーブルのデータ例である。 派生データ型定義管理テーブルのデータ構造例である。 ステップS43の処理の詳細フローチャート図である。 ステップS47の処理の詳細フローチャート図である。 ステップS43、S47の処理イメージを示す図である。 (a)、(b)は、派生データ型の定義情報の一例を示す図である。 ステップS50の表示処理の表示画面例(その1)である。 ステップS50の表示処理の表示画面例(その2)である。 コモンメモリ型のデータ交換方式について説明するための図である。 各プログラミング装置に係わるネットワーク構成例である。 共有データの定義や配信に係わる具体例を示す図である。
以下、図面を参照して、本発明の実施の形態について説明する。
図1(a)は、本例の共有データ定義支援システムにおける各作業者のプログラミング環境の概略構成図である。つまり、共有データを用いた制御プログラムを作成する環境を表すブロック図である。
上記背景技術で説明したように、前提としては、不図示のネットワークを介して複数のコントローラ装置4で共有されるデータ(上記共有データ)等も用いて、各プログラミング装置2毎に、それが対応するコントローラ装置4用の制御プログラムを作業者が作成するものである。その際、予め各共有データの定義を行い、この共有データ定義(その一部)を各プログラミング装置2に保持させておき、各作業者がそれぞれのプログラミング装置2上で、共有データ定義に従って制御プログラムの作成を行うものである。
そして、本例の共有データ定義支援システムは、主にこの制御プログラム作成途中で、共有データ定義の整合性を任意のプログラミング環境で部分的/段階的に検査することができ、以って全ての作業者の制御プログラミング作業を中断させる必要はないものとできる。
まず、図示のコントローラ装置4は、上記従来のコントローラ100と同様と見做して構わない。従って、特に図示しないが、コントローラ装置4は複数台存在して不図示のネットワークに接続している共に、各コントローラ装置4は不図示の上記コモンメモリを有している。そして、上記従来と同様に、各コントローラ装置4に対応して各プログラミング装置2が設けられている。尚、コントローラ装置4は、対応するプログラミング装置2と接続されており、このプログラミング装置2で作業者によって作成された任意の制御プログラムが、ダウンロードされて記憶されて動作するものである。
各制御プログラムを作成する各作業者毎のプログラム作成環境(プログラミング環境1)は、当該プログラミング装置2と、本手法による共有データ定義支援装置3から構成されている。尚、共有データ定義支援装置3は、プログラミング装置2の機能の一部と見做してもよい。あるいは、共有データ定義支援装置3は、プログラミング装置2と接続された情報処理装置(パソコン等)であってもよい。何れにしても、共有データ定義支援装置3は、各プログラミング装置2毎に対応して設けられるものであり、複数存在する。
例えば図1(b)に示すように、上記プログラミング環境1は、複数存在すると共にネットワーク5に接続されている。これは、各プログラミング環境1の共有データ定義支援装置3または/及びプログラミング装置2が、ネットワーク5に接続しているものである。これより、例えば後述するように、全ての共有データ定義支援装置3、プログラミング装置2が、ネットワーク5を介して相互にデータ送受信可能となっている。
但し、これは一例であり、この例に限らない。例えば、共有データ定義支援装置3がネットワーク5に接続されていない構成、あるいはそもそもネットワーク5が存在しない構成等であっても構わない。この様な構成の場合、2つの支援装置3の間で転送すべきデータ、あるいは支援装置3−プログラミング装置2間で転送すべきデータは、USBメモリ等の可搬型記憶媒体を用いることで、データ転送を実現するようにしてもよい。これは、転送元の装置でデータを可搬型記憶媒体に記憶させ、この可搬型記憶媒体を転送先の装置に接続してデータの読出しを実行させることになる。この様に、可搬型記憶媒体を介して各装置2,3間でデータを受け渡す構成の場合でも、各装置2、3等がネットワーク5に接続されている構成の場合と同様に、不整合検査を実現させることができる。尚、USBはUniversal Serial Busの略である。
また、図1(a)、(b)に示すように、本例の場合、上記サーバ装置130に相当する構成は、無くてもよい。本手法では、上記共有データ定義テーブル140に相当するデータ(共有データ定義管理テーブル30)は、全ての上記プログラミング環境(その共有データ定義支援装置3等)で記憶されている。
そして、全てのプログラミング環境(その共有データ定義支援装置3等)において、共有データ定義管理テーブル30などを用いて、上記不整合の検出等を行うことができる。詳しくは後述する。
また、プログラミング環境毎に、その共有データ定義支援装置3等において、上記共有データ定義テーブル等に基づいて、対応するコントローラ装置4に応じた上記共有データ変数宣言テーブル150に相当するデータ(図示の共有データ変数宣言テーブル40)を生成して、これを記憶すると共にプログラミング装置2に記憶させる。
作業者は、プログラミング装置2において、共有データ変数宣言テーブル40を参照する等して、対応するコントローラ装置4に係わる制御プログラム等を任意に作成する。
図2は、共有データ定義支援装置3の機能ブロック図である。
尚、以下の説明では、共有データ定義支援装置3を簡略化して支援装置3と記す場合もあるものとする。
図示の例では、共有データ定義支援装置3は、システム構成管理部11、共有データ定義部12、共有データ定義管理テーブル記憶部13、共有データ変数宣言テーブル生成部14、共有データ変数宣言テーブル記憶部15、共有データ変数宣言テーブル転送部16、共有データ定義管理テーブル転送部17、共有データ整合性検査部18、共有データ整合性検査結果表示部19等の各種機能部を有する。
尚、共有データ定義支援装置3は、例えば一例としてはパソコンやサーバ装置上で実現されるものであり、パソコン等の一般的なコンピュータのハードウェア構成を有するものである。従って、特に図示しないが、CPU等の演算プロセッサ、ハードディスク、メモリ等の記憶部、キーボード、マウス等による入力操作部、液晶ディスプレイ等による表示部、通信機能部等を有している。
そして、例えば上記記憶部には、予め所定のアプリケーションプログラムが記憶されており、上記CPU等がこのプログラムを実行することにより、上記各種機能部11〜19の機能処理が実現される。
尚、プログラミング装置2やコントローラ装置4も、不図示の記憶部や演算プロセッサ等を有しており、記憶部に記憶されるプログラム等を演算プロセッサが実行することで、所定の処理機能を実現するものであるが、これについての説明は省略する。
システム構成管理部11は、対象とする制御システム全体の構成を設定させて管理する機能部である。例えば、不図示の通信ネットワークに接続されているコントローラ装置4の数や、各コントローラ装置4の局番号や名称をユーザに設定させる等して(不図示の設定用の画面を表示して任意に入力させる)、対象システム内の全体の局構成を管理する。
共有データ定義部12は、複数のコントローラ装置4で共有されるデータ(上記共有データ;例えばグローバル変数等)を、任意のユーザに任意に定義させる(その為の不図示の入力画面を表示する)。例えば、通信ネットワークを介して複数のコントローラ装置4で共有したいデータ(共有データ)について、その名称と、書込み局、参照局、ならびに、その共有データに関連付けられる各種データ等を、上記不図示の入力画面上でユーザに入力させる。つまり、共有データ定義管理テーブル30を任意に作成・更新させる機能部である。
但し、共有データ定義管理テーブル30の初期状態の作成は、上記複数の共有データ定義支援装置3のうちの任意の1台の支援装置3でのみ行われる。そして、作成された共有データ定義管理テーブル30のコピーを、他の全ての支援装置3へ送信して記憶させる。つまり、少なくとも初期状態では、全ての支援装置3において同一内容の共有データ定義管理テーブル30を保持させる。
その後、運用中には、各プログラミング環境の各共有データ定義支援装置3毎に、作業者等は、共有データ定義部12によって、共有データ定義管理テーブル30の内容の更新を行うことができる。
共有データ定義管理テーブル記憶部13は、上記共有データ定義部12で作成された(あるいは他の支援装置3の共有データ定義部12で作成されて送信されてきた)上記共有データ定義管理テーブル30を、記憶する。
共有データ定義管理テーブル30自体は、従来の上記共有データ定義テーブル140と略同様であってよく、例えば通信ネットワークを介して複数のコントローラで共有したいデータについて、その名称(共有データ変数名称)とコモンメモリ上の割当アドレスや、書込み局、参照局、ならびに、その共有データに関連付けられる各種データを、共有データ毎に登録したテーブルである。
ここで、図3(a)に、共有データ定義管理テーブル30の具体例を示す。
図示の例では、共有データ定義管理テーブル30は、共有データ変数名31、データ型32、アドレス33、書込み局(ライト局)34、参照局(リード局)35等から成る。これらは、上述した識共有データ変数名141、データ型142、アドレス143、書込み局(ライト局)144、参照局(リード局)145等と略同様であってよく、ここでの説明は省略する。また、図示の関連データ36は、ここでは関係ないので、特に説明しないものとする。
また、図3(b)には、共有データ変数宣言テーブル40の具体例を示す。
図示の例の共有データ変数宣言テーブル40は、共有データ変数名41、データ型42、アドレス43等を有する。各プログラミング環境毎に、対応するコントローラ装置4の局番が上記書込み局34と参照局35の何れかに格納されているレコードを、上記共有データ定義管理テーブル30から抽出して、これら抽出レコードの共有データ変数名31、データ型32、アドレス33のデータを、共有データ変数名41、データ型42、アドレス43に格納することで、共有データ変数宣言テーブル40が生成される。尚、共有データ変数宣言テーブル40には、関連データ36を含めてもよい。
共有データ変数宣言テーブル生成部14は、上記共有データ定義管理テーブル記憶部13に記憶された共有データ定義管理テーブル30に基づいて、当該支援装置3が係わるコントローラ装置4に応じた共有データ変数宣言テーブル40を、生成する。これは、例えば、上記従来の共有データ変数宣言テーブル150の生成処理と略同様の処理(例えば上記した処理)によって生成する。
共有データ変数宣言テーブル記憶部15は、上記生成部14で生成された上記共有デー
タ変数宣言テーブル40を記憶する。
共有データ変数宣言テーブル転送部16は、上記生成・記憶された共有データ変数宣言テーブル40を、自環境のプログラミング装置2や、他のプログラミング環境(その共有データ定義支援装置3等)へ転送する。尚、自環境のプログラミング装置2に転送した共有データ変数宣言テーブル40は、当該プログラミング装置2に記憶されるが、これを共有データ変数宣言テーブル40’と記すものとする。
上記の例の逆に、自環境のプログラミング装置2や、他のプログラミング環境(その共有データ定義支援装置3等)から、そこで記憶されている共有データ変数宣言テーブル40を取得する。
尚、自環境のプログラミング装置2に転送された共有データ変数宣言テーブル40は、当該プログラミング装置2内に記憶され、その後、作業者は、従来と略同様にしてプログラミング装置2を用いて、共有データ変数宣言テーブル40等を参照しつつ、コントローラ装置4の制御プログラムを作成することになる。
共有データ定義管理テーブル転送部17は、上記記憶された共有データ定義管理テーブル30を、他のプログラミング環境(その共有データ定義支援装置3等)へ転送する。その逆に、他のプログラミング環境(その共有データ定義支援装置3等)から、そこで記憶されている共有データ定義管理テーブル30を取得する。
上述したように、初期状態では全てのプログラミング環境の共有データ定義管理テーブル30は同一の内容となっているが、その後、一部のプログラミング環境で上述したように勝手に共有データが追加されること等に伴って、当該一部のプログラミング環境の共有データ定義支援装置3上で、作業者等が共有データ定義管理テーブル30を更新する場合が有り得る。
これより、共有データ整合性検査部18は、自環境の共有データ定義管理テーブル30と他のプログラミング環境の共有データ定義管理テーブル30との一致/不一致判定を行うこと等によって、不整合が生じているか否かを判別する。この判別処理は、他のプログラミング環境における共有データ整合性検査部18で実行させてもよい(その場合には、自環境の共有データ定義管理テーブル30を渡す)。
あるいは、共有データ整合性検査部18は、更に、共有データ変数宣言テーブル40と共有データ定義管理テーブル30との不整合(内容の不一致)を判別するものであってもよい。すなわち、例えば、共有データの追加等に伴って共有データ定義管理テーブル30を更新した後に、更新後の管理テーブル30に基づいて共有データ変数宣言テーブル40を再作成してプログラミング装置2に渡す必要があるが、作業者等がこの再作成を忘れた場合等に、宣言テーブル40と管理テーブル30とで共有データ定義の不整合が生じる。
また、上記共有データの追加等を、プログラミング装置2側で行う場合がある。つまり、上記プログラミング装置2で制御プログラムを作成中に、任意に追加した共有データ(グローバル変数等)を使用している場合がある。この様な場合、プログラミング装置2側で記憶している上記共有データ変数宣言テーブル40’には、上記追加した共有データの情報が作業者等によって反映される。
これに関して、プログラミング装置2側で記憶している上記共有データ変数宣言テーブル40’と共有データ変数宣言テーブル記憶部15に記憶している共有データ変数宣言テーブル40とが同一になるようにする処理を、自動的に行うことはできる。例えば、プログラミング装置2は、上記宣言テーブル40’に何らかの変更が行われる毎に、当該変更後の宣言テーブル40’のコピー等を共有データ定義支援装置3に転送して、これを新たな宣言テーブル40として記憶させること等ができる。
しかしながら、この様な共有データ変数宣言テーブル40の更新に応じて、共有データ定義管理テーブル30も更新させるのは、作業者などが手作業で行うことになる(書込み局、参照局等は宣言テーブル40には無いので)。
この為、上記の様な共有データ変数宣言テーブル40の更新内容を、共有データ定義管理テーブル30に反映する作業を、作業者が忘れる場合が有り得る。この様な場合、当然、宣言テーブル40と管理テーブル30との不整合が生じるが、それ以前に、後から勝手に追加された共有データがある状態にも係わらず、上記管理テーブル30同士の一致/不一致検査では、不整合なしと判定される場合が有り得る。
例えば上述したような理由により、自環境内で宣言テーブル40と管理テーブル30とで共有データ定義の不整合が生じる場合が有り得る。共有データ整合性検査部18は、この様な宣言テーブル40と管理テーブル30との共有データ定義の不整合の判別を、更に行うようにしてもよい。詳しくは後述する。
共有データ整合性検査結果表示部19は、上記共有データ定義の不整合の検査結果を表示する。
図4は、共有データ定義支援装置3を用いて共有データ定義の不整合を検出するための作業フローである。
図示の例では、まず最初に、対象とする制御システムについて、上記システム構成管理部11によって、通信ネットワークに接続されているコントローラ装置4の数や、それらの局番号や名称等の各種データをユーザにより設定させる。つまり、対象システム内の全体の局構成等を定義させる(ステップS11)。
続いて、上記複数のプログラミング環境のなかの任意の1つのプログラミング環境においては、以下のステップS12、S13の作業を実施させる。
すなわち、まず、上記のように任意の共有データ定義支援装置3の上記共有データ定義部12により、対象とするシステムで使用する共有データの初期データ(共有データ定義管理テーブル30の初期状態)を、ユーザにより定義させる(例えば上記不図示の入力画面上で入力させる)(ステップS12)。尚、この作業の際、ユーザは、上記ステップS11で定義された局構成を参照することで、例えば書込み局、参照局の各局番号などを認識できる。
そして、上記共有データ定義管理テーブル転送部17を用いて、並行してプログラミング作業を行う全ての作業者のプログラミング環境向けに、上記初期状態の共有データ定義管理テーブル30を、ネットワーク5等を介して配信する(ステップS13)。
尚、図示していないが、全てのプログラミング環境において、その共有データ定義支援装置3によって、上記配信された初期状態の共有データ定義管理テーブル30に基づいて、初期状態の共有データ変数宣言テーブル40が生成されて記憶されると共にプログラミング装置2にも記憶される。
これより、その後、各プログラミング環境毎に、そのプログラミング装置2において作業者等が、共有データ変数宣言テーブル40’等を参照しつつ、コントローラ装置4の制御プログラムの作成する作業を、開始することになる(ステップS14)。
そして、基本的には、この作成作業中の任意のときに、任意のプログラミング環境においてユーザが、その共有データ定義支援装置3において所定の指示操作(更に1以上の検査対象とするプログラミング環境の指定)を行うと、図示のステップS15の処理が実行される。すなわち、上記指定された各プログラミング環境の共有データ定義支援装置3から、当該支援装置3で保持されている管理テーブル30と宣言テーブル40を取得する。そして、当該取得したテーブル30,40と、自装置3で保持している管理テーブル30と宣言テーブル40とを処理対象テーブルとして、不整合チェック処理を行う。
この不整合チェック処理については、後に図6を参照して説明するが、不整合検査対象のテーブル同士を比較・照合する等して不整合を検出する。そして、この不整合チェック処理結果を表示する(ステップS16)。
これより、上記チェック処理の結果、不整合が検出された場合には(ステップS17,YES)、上記ステップS16の表示内容を参照して作業者等によってステップS18、S19の作業が実行されることになる。尚、図示の例ではステップS17がNOの場合には本処理を終了するが、この例に限らず、ステップS15に戻るようにしてもよい。
ここで、上記制御プログラムの作成作業中に、上記従来で説明したように、一部の作業者同士が申し合わせて、新たに必要となった共有データをこれら作業者間でのみ追加定義する事態が起こり得る。この場合、例えば、新たな共有データの定義が共有データ定義管理テーブル30に追加されると共に、この更新後の管理テーブル30に基づいて新たな共有データ変数宣言テーブル40が生成される。しかし、上記の通り、作業者等が例えば宣言テーブル40を生成し忘れる場合が起こり得る。
あるいは、その逆に、新たな共有データの定義が宣言テーブル40に追加されると共に、この更新後の宣言テーブル40に基づいて管理テーブル30が更新されるケースも有り得る。この場合も、上記のように、作業者等が管理テーブル30の更新を忘れる場合が起こり得る。この様にして管理テーブル30と宣言テーブル40との間で不整合が生じる場合が起こり得る。
あるいは、上記従来で説明したように、2つ以上の作業者グループが、別々に申し合わせて共有データ定義を追加した際、別々の意味のデータを同じ名称(共有データ変数名称)で重複定義してしまう、等の不整合が発生し得る。
上記ステップS15の処理では、例えばこの様な不整合の有無を検査するものであり、詳しい処理例は図6に示し、後に説明するものとする。
そして、これら不整合検査対象同士を比較・照合する等して不整合を検出する。例えば、任意の他のプログラミング環境の共有データ定義支援装置3から取得した共有データ定義管理テーブル30と、自装置が保持する共有データ定義管理テーブル30とを照合して、両者が一致するか否かを判定し、不一致の場合には不整合と判定する。但し、この例に限らない。
そして、共有データ定義の不整合を検出した場合には、この不整合の内容(例えば、一方に存在するが他方に存在しない共有データがある;あるいは、任意の変数名の共有データについて定義内容(アドレスなど)が異なっているなど)をディスプレイに表示する(ステップS16)。
作業者は、不整合がある場合には(ステップS17,YES)、上記ステップS16による表示内容を参照して、上記検査対象の共有データ変数宣言テーブル40や共有データ定義管理テーブル30の該当箇所を修正する。そして、他のプログラミング環境の共有データ定義支援装置3から取得した宣言テーブル40や管理テーブル30については、修正後のこれらテーブル30、40を元のプログラミング環境に反映させる(修正後のテーブル30、40を取得元の共有データ定義支援装置3へ送信して置き換えさせる)(ステップS18)。
更に、自プログラミング環境に関して、作成中の制御プログラム中に修正した共有データを使用している箇所がある場合には、作業者等は、この該当箇所についても修正を行う。
尚、上記元のプログラミング環境に反映させたり制御プログラムを修正する前に、ステップS15に戻り、修正後のテーブル30、40を用いて再検査を行い、再検査で不整合なしとなった場合には、上記元のプログラミング環境に反映させたり制御プログラムを修正するようにしてもよい。
ここで、本手法では、上述したように、任意のプログラミング環境の共有データ定義支援装置3において、任意のときに(制御プログラム作成作業を中断してよい状況のときなどに)整合性検査処理を実行できる。更に、整合性検査対象は、全体ではなく、その都度、一部のプログラミング環境のみとすることができる。
図5に、全体における各整合性検査の実施の様子を示す。
ここでは、プログラミング環境1〜プログラミング環境NまでのN個のプログラミング環境があるものとする。尚、各プログラミング環境の構成は、図1に示す通りとする。
図示の例では、例えばプログラミング環境1において整合性検査を実施しており、検査対象は当該プログラミング環境1とプログラミング環境2となっている。この場合、プログラミング環境1の共有データ定義支援装置3が、プログラミング環境2の共有データ定義支援装置3が記憶している宣言テーブル40や管理テーブル30をネットワーク5を介して取得する。そして、取得した宣言テーブル40や管理テーブル30と、自装置で記憶している宣言テーブル40や管理テーブル30とを検査対象として、例えば後述する図6に示す整合性検査処理を実行する。
この整合性検査処理中、プログラミング環境1,2以外の他のプログラミング環境では、制御プログラム作成作業を中断する必要は無い。
また、図示の例では、例えばプログラミング環境2において整合性検査を実施しており、検査対象は当該プログラミング環境2とプログラミング環境1とプログラミング環境3となっている。この場合、プログラミング環境2の共有データ定義支援装置3が、プログラミング環境1,3の各共有データ定義支援装置3が記憶している宣言テーブル40や管理テーブル30を取得する。そして、取得した宣言テーブル40や管理テーブル30と、自装置で記憶している宣言テーブル40や管理テーブル30とを検査対象として、例えば後述する図6に示す整合性検査処理を実行する。
この整合性検査処理中、プログラミング環境1〜3以外の他のプログラミング環境では、制御プログラム作成作業を中断する必要は無い。
また、図示の例では、例えばプログラミング環境3において整合性検査を実施しており、検査対象は当該プログラミング環境3とプログラミング環境Nとなっている。この場合、プログラミング環境3の共有データ定義支援装置3が、プログラミング環境Nの共有データ定義支援装置3が記憶している宣言テーブル40や管理テーブル30を取得する。そして、取得した宣言テーブル40や管理テーブル30と、自装置で記憶している宣言テーブル40や管理テーブル30とを検査対象として、例えば後述する図6に示す整合性検査処理を実行する。
この整合性検査処理中、プログラミング環境3,N以外の他のプログラミング環境では、制御プログラム作成作業を中断する必要は無い。
このように、本手法では、例えば図5の例のような部分的/段階的な整合性検査処理を実行することができ、全てのプログラミング環境で制御プログラム作成作業を中断する必要は無い。
例えば上記のようにして、部分的に段階的に整合性検査処理を実行していき、全てのプログラミング環境が最低でも1回は検査対象となるようにする(これをサポートする為に、例えば、各処理実行完了毎に、検査対象となったプログラミング環境を全プログラミング環境に通知するようにしてもよい)。これは、例えば、m=1,2,3、・・・Nとし、mの初期値を‘1’とし、プログラミング環境mとプログラミング環境m+1とを検査対象とし整合性検査を実行し、各整合性検査実行毎にmを+1インクリメントして次の整合性検査を実行するようにしてもよい。この例では、m=Nとなったら、検査終了することになる。勿論、この例に限らない。
ここで、各整合性検査処理を実行するのは、任意のプログラミング環境(その共有データ定義支援装置3)であってよいが、検査対象には既に整合性検査処理を実行済みのプログラミング環境が1つ以上は含まれるようにすることが望ましい(但し、最初の1回は除外する)。
これは、図5の例の場合、上記プログラミング環境3,Nに係わる整合性検査処理(3回目の処理となる)を実施する際には、プログラミング環境3は既にプログラミング環境1、2との整合性がとれている状態であるはずである。但し、これは、上記プログラミング環境1,2、3に係わる整合性検査処理(2回目の処理となる)において、もし不整合があった場合には、プログラミング環境3のテーブル30,40を、プログラミング環境1,2に合わせるように修正されていることを前提とする。
これより、もしプログラミング環境3、Nで不整合が生じていた場合には、プログラミング環境Nのテーブル30,40をプログラミング環境3に合わせるように修正することが望ましい。これによって、プログラミング環境Nは、プログラミング環境3だけでなくプログラミング環境1,2とも整合性がとれている状態となるはずである。
よって、仮にN=4とするならば、図5に示す3回の整合性検査処理を行えば、全体の整合性がとれた状態となっているはずである。
また、図5の例では、図示の例の後にプログラミング環境Nで整合性検査処理を実行することになった場合、プログラミング環境3だけでなくプログラミング環境1,2も、検査対象から除外しても構わないと考えることもできる(既に整合が取れているはずであるから)。その意味で、図5に示す2番目の整合性検査(プログラミング環境2で実行する)では、図示の例に限らず、プログラミング環境1は検査対象としなくても構わない。
このように、対象システムの制御プログラムを各作業者が同時並行に作成する過程で、共有データ定義支援装置3を用いて、部分的・段階的に共有データ定義の整合性検査を行っていくことで、例えば全てのプログラミング環境が最低でも1回は検査対象となったときには、全体として共有データ定義の不整合が解消された状態となることが期待でき、以って共有データ定義の不整合が解消された制御プログラムを作成することができる。
尚、図示していないが、全てのプログラミング環境において制御プログラム作成が完了した時点で、最終的な確認の為に、全てのプログラミング環境を検査対象とした整合性検査処理を実行するようにしてもよい(実行するのは任意のプログラミング環境の共有データ定義支援装置3であってよい)。また、整合性検査を行うプログラミング環境は限定されない。
図6は、上記ステップS15における共有データ定義の不整合検査の詳細処理例を示すフローチャートである。
尚、ここでは、既にステップS15で説明した、不整合検査の対象とする他のプログラミング環境から共有データ定義管理テーブル30と共有データ変数宣言テーブル40を取得する処理は、実行済みとする。そして、これら取得したテーブル30、40と、自装置で記憶していた管理テーブル30、宣言テーブル40とを、検査対象として、図示のステップS31,S32,S33の処理を実行する。そして、この処理結果に基づいて上記ステップS16の処理に相当する図示のステップS34の表示処理を実行する。
上記ステップS31,S32,S33の不整合検査処理について、以下、説明する。
尚、必ずしもステップS31,S32,S33の全てを実行しなくても構わない。
尚、ここでは説明を簡単にするために、検査対象となるプログラミング環境は2つとする。よって、2つの共有データ定義管理テーブル30と2つの共有データ変数宣言テーブル40が、検査対象となる。
また、ここでは説明を簡単にする為に、検査対象の全プログラミング環境において共有データ定義管理テーブル30の内容が同一である状態が、正常な状態(不整合はない)と見做すものとするが、この例に限らない。
また、以下のステップS31,S32,S33の不整合検査処理の説明に際して、図7〜図10に示す具体例を用いる場合もあるものとする。
ここで、図7、図8には初期状態における各プログラミング環境の共有データ定義管理テーブル30、共有データ変数宣言テーブル40の具体例を示す。
図9、図10には、図7、図8の初期状態から始まって制御プログラム作成途中の状態の一例を示す。ここでは、新たな共有データ(変数D)が2種類の定義で追加された例を示している。
まず、図7、図8に示す初期状態例について説明する。
尚、ここではプログラミング環境1,2,3、・・NのN個のプログラミング環境があるものとし、各プログラミング環境1,2,3、・・Nに対応するコントローラ装置4の局番は、PLC1、PLC2、PLC3、・・・、PLCnとする。
まず最初に、例えばプログラミング環境1の共有データ定義支援装置3において、予め決定された共有データ定義に基づいて、図7の図上左上に示す内容の共有データ定義管理テーブル30(初期状態)が作成される。そして、作成された共有データ定義管理テーブル30(初期状態)が、他の全てのプログラミング環境(その共有データ定義支援装置3)に配信されて記憶される。これによって、図7、図8では省略して示すが、全てのプログラミング環境における共有データ定義管理テーブル30の初期状態の内容は、図7の図上左上に示す内容と同一となっている。
図示のように、共有データ定義管理テーブル30(初期状態)では、共有データ変数名31が図示の“A”、“B”、“C”の3種類の共有データが登録されている。そして、共有データ“A”は、書込み局34が“PLC1”で参照局35が“PLC2”となっている。共有データ“B”は、書込み局34が“PLC2”で参照局35が“PLC1”となっている。共有データ“C”は、書込み局34が“PLC1”で参照局35が“PLC3”となっている。
そして、各プログラミング環境1,2,3、・・N毎に、その共有データ定義支援装置3において、上記共有データ定義管理テーブル30(初期状態)に基づいて、共有データ変数宣言テーブル40が生成される。
例えば、プログラミング環境1においては、管理テーブル30(初期状態)の全レコードにおいて書込み局34と参照局35の何れかに“PLC1”があるので、全ての共有データ“A”、“B”、“C” に関する定義(変数名、データ型、アドレス等)がある共
有データ変数宣言テーブル40が生成される。
例えば、プログラミング環境2においては、管理テーブル30(初期状態)の共有データ“A”、“B”のレコードにおいて書込み局34と参照局35の何れかに“PLC2”があるので、図7に示すように共有データ“A”、“B”に関する定義(変数名、データ型、アドレス等)がある共有データ変数宣言テーブル40が生成される。
例えば、プログラミング環境3においては、管理テーブル30(初期状態)の共有データ“C”のレコードにおいてのみ参照局35に“PLC3”があるので、図8に示すように共有データ“C”に関する定義(変数名、データ型、アドレス等)のみがある共有データ変数宣言テーブル40が生成される。
また、上記各プログラミング環境1,2,3、・・N毎に、図示のように、上記生成された共有データ変数宣言テーブル40のコピー等を、自己のプログラミング装置2に転送して上記宣言テーブル40’として記憶させる。これより、例えば、プログラミング環境3においては、作業者は、共有データ“C”についてのみ認識しつつ制御プログラムを作成することになる。
その後、任意のときに、プログラミング環境2の作業者とプログラミング環境3の作業者とで申し合わせて、新たに必要となった共有データDをこれら作業者間でのみ追加定義したものとする。更に、プログラミング環境1の作業者とプログラミング環境Nの作業者とで申し合わせて、新たに必要となった共有データDをこれら作業者間でのみ追加定義したものとする。これらは、共有データの名称(変数名)は同じ(=D)であるが定義内容が異なるものとする。そして、それぞれの定義内容が各プログラミング環境1,2,3、・・N毎にその作業者によって管理テーブル30に反映されたものとする。
これより、例えば図9、図10に示すように、プログラミング環境1、Nでは、それぞれ、図示の定義内容の共有データ“D”の定義が、例えば作業者によって手作業で管理テーブル30に追加される。これは図示の例では(但し、プログラミング環境Nについては省略して示している)アドレス33は‘xxx1となっており’、書込み局34は“PLC1”、参照局35は“PLCn”となっている。
また、プログラミング環境2、3では、それぞれ、図示の定義内容の共有データ“D”の定義が、例えば作業者によって手作業で管理テーブル30に追加される。これは図では省略しているがアドレス33は‘xxx2’となっており、また図示のように書込み局34は“PLC2”、参照局35は“PLC3”となっている。
この様に、同一の共有データ(=D)に対して異なる定義が存在することは問題であり、特にアドレスが異なるのは非常に問題であり、この様な不整合は解消されなければならない。
尚、正常な場合には、更に、上記各プログラミング環境1,2,3、・・N毎に、作業者等によって、上記更新後の管理テーブル30に基づいて、図示のように新たな宣言テーブル40が生成・記憶される。更に、当該新たな宣言テーブル40のコピー等が、自己のプログラミング装置2に転送して上書き記憶される(旧宣言テーブル40を削除して記憶する)。但し、作業者が、この様な宣言テーブル40の更新作業を忘れる場合が有り得る(この様な場合、不整合が生じることになる)。
以下、図7〜図10に示す具体例も用いて、ステップS31,S32,S33の処理について説明する。
まず、ステップS31では、不整合検査対象としている2つの共有データ定義管理テーブル30同士を比較して、同一性を確認する。これは、例えば、共有データ変数名31をチェックして、一方の管理テーブル30に登録されている変数名の全てが、他方の管理テーブル30にも登録されているか否かをチェックする(登録されていないものがある場合には、不整合と判定する)。あるいは、更に、後述する定義内容(特にアドレス)が同一か否かのチェックも行うようにしてもよい。
ここで、図9、図10の例に関して、仮に不図示のプログラミング環境4における管理テーブル30は、初期状態のままであったものとする。この場合、仮に、不整合検査対象がプログラミング環境1,4であった場合、プログラミング環境1の管理テーブル30には共有データ“D”の定義があるが、プログラミング環境4の管理テーブル30には共有データ“D”の定義はないことになる。
よって、この例では、不整合と判断すると共に、例えばステップS34の表示処理においてプログラミング環境4の管理テーブル30には共有データ“D”の定義が無い旨の表示を行って、作業者にプログラミング環境4の管理テーブル30の修正を行わせるようにしてもよい。但し、これは管理テーブル30に関しては全てのプログラミング環境で同一内容とすることを意図する場合の処理例では、この例に限らない。例えば以下に説明するような「同一の共有データ(変数名)に対して異なる定義(特にアドレス)が成されている場合のみ、不整合と判定するようにしてもよい。
すなわち、例えば、共有データ変数名31が同一のレコード同士を比較して、定義内容が同一か否かをチェックする(少なくともアドレス33が同一か否かをチェックするが、この例に限らず、更に書込み局34と参照局35も同一か否かをチェックするようにしてもよい)。定義内容が同一ではない場合も、不整合と判定する。
図9、図10の例の場合、仮に不整合検査対象がプログラミング環境2,3であった場合、共有データ“A”、“B”、“C”に関しては、定義内容が同一となる。更に、共有データ“D”に関しても、アドレス33は同一(両方とも‘xxx2’)であり。書込み局34と参照局35も同一である(両方とも“PLC2”と“PLC3”)。
一方、仮に不整合検査対象がプログラミング環境1,2であった場合、共有データ“A”、“B”、“C”に関しては、定義内容が同一となる。しかし、共有データ“D”に関しては、アドレス33が異なる(一方が‘xxx1’で他方が‘xxx2’)。また、書込み局34と参照局35も異なる(一方が“PLC1”と“PLCn”で他方が“PLC2”と“PLC3”)。これより、ステップS34の表示処理では、管理テーブル30における共有データ“D”の定義が不一致である旨を表示することで、作業者にどちらか一方の管理テーブル30の定義を修正させる(例えば、共有データ変数名31を変更させる)。
ここで、この表示に応じて、作業者が、例えば、プログラミング環境2の管理テーブル30の共有データ変数名31を“E”に変更したとする。しかし、この場合、今度は、プログラミング環境2と3とで、管理データ30の定義内容が不一致となってしまう。この不整合状態は、後にプログラミング環境2,3を検査対象とする本処理によって解消するが、それまでは不整合状態のままとなってしまう。
これより、例えば、作業者が管理テーブル30の任意のレコードの共有データ変数名31を変更した場合には、当該レコードの書込み局34、参照局35に係るプログラミング環境(その共有データ定義支援装置3)から管理テーブル30も取得して、これを作業者に修正させるようにしてもよい。勿論、修正後の管理テーブル30は、元のプログラミング環境に返信して、更新させる。
以上、ステップS31について、具体例を用いながら説明した。
続いて、以下、ステップS32について、具体例を用いながら説明する。
ステップS32や後述するステップS33の処理は、基本的に、管理テーブル30と宣言テーブル40との同一性をチェックするものである。両者の違いは、ステップS32が管理テーブル30をベースとするのに対して、ステップS33では宣言テーブル40をベースとする点である。つまり、ステップS32は、基本的に、何らかの変数追加等に応じて管理テーブル30が更新されていることを前提として、この変更を宣言テーブル40に反映させるのを作業者が忘れるケースを想定している。ステップS33は、その逆に、基本的に、何らかの変数追加等に応じて宣言テーブル40が更新されていることを前提として、この変更を管理テーブル30に反映させるのを作業者が忘れるケースを想定している。
ステップS32では、例えば、不整合検査対象の共有データ定義管理テーブル30の各共有データ変数名31に対して定義された書込み局34/参照局35に、不整合検査対象のプログラミング環境に係わる局が含まれていた場合、この局に係わるプログラミング環境の共有データ変数宣言テーブル40を参照し、該当する共有データ変数名41の有無、および、その変数の定義(アドレスやデータ型)の同一性を確認する。この作業を、検査対象の全ての共有データ定義管理テーブル30について実施する。
尚、局とはコントローラ装置4のことである。
図9、図10の例の場合、仮に不整合検査対象がプログラミング環境1,2であったとし、まず、プログラミング環境1の管理テーブル30を用いて上記処理を行うものとする。
この場合、まず、管理テーブル30の共有データ“A”を対象とすると、その書込み局34=PLC1、参照局35=PLC2であるので、書込み局34と参照局35とには、不整合検査対象のプログラミング環境1,2に係わる局が含まれていることになる。
よって、まず、プログラミング環境1の宣言テーブル40の共有データ変数名41に“A”があるか否か(該当レコードの有無)をチェックする。図示の例では該当レコードがあるので、更に、この該当レコードのデータ型42とアドレス43が、上記管理テーブル30の共有データ“A”のレコードのデータ型32とアドレス33と同一か否かを確認することになる(図示していないが、ここでは同一であるものとする)。
更に、プログラミング環境2の宣言テーブル40の共有データ変数名41に“A”があるか否か(該当レコードの有無)をチェックする。図示の例では該当レコードがあるので、更に、この該当レコードのデータ型42とアドレス43が、上記管理テーブル30の共有データ“A”のレコードのデータ型32とアドレス33と同一か否かを確認することになる(図示していないが、ここでは同一であるものとする)。
次に、管理テーブル30の共有データ“B”を対象とすると、その書込み局34=PLC2、参照局35=PLC1であるので、書込み局34と参照局35とには、不整合検査対象のプログラミング環境1,2に係わる局が含まれていることになる。但し、この場合の処理は、上記共有データ“A”を対象とした場合と同じとなるので、ここでは説明しない。
次に、管理テーブル30の共有データ“C”を対象とすると、その書込み局34=PLC1、参照局35=PLC3であるので、書込み局34に関しては、不整合検査対象のプログラミング環境1に係わる局が含まれていることになる。
よって、この場合には、プログラミング環境1の宣言テーブル40の共有データ変数名41に“C”があるか否か(該当レコードの有無)をチェックする。図示の例では該当レコードがあるので、更に、共有データ“C”に係わる定義内容の同一性チェックを行うことになる(図示していないが、ここでは同一であるものとする)。
次に、管理テーブル30の共有データ“D”を対象とすると、その書込み局34=PLC1、参照局35=PLCnであるので、書込み局34に関しては、不整合検査対象のプログラミング環境1に係わる局が含まれていることになる。
よって、この場合には、プログラミング環境1の宣言テーブル40の共有データ変数名41に“D”があるか否か(該当レコードの有無)をチェックする。図示の例では該当レコードがあるので、更に、共有データ“D”に係わる定義内容の同一性チェックを行うことになる(図示のように、少なくともアドレスに関しては同一(xxx1)である)。
尚、上述したように、プログラミング環境1とプログラミング環境2とでは、共有データ“D”に関する定義が異なるのであるが、上記の通り、プログラミング環境1の管理テーブル30の共有データ“D”の書込み局34=PLC1、参照局35=PLCnであるので、プログラミング環境2の宣言テーブル40は上記の通りチェック対象とはならない。
次に、プログラミング環境2の管理テーブル30を用いて上記処理を行うものとする。
この場合、共有データ“A”、“B”、“C”に関しては、上記プログラミング環境1の管理テーブル30を用いる場合と同じとなるので、説明は省略する。
続いて、プログラミング環境2の管理テーブル30の共有データ“D”を処理対象とすると、その書込み局34=PLC2、参照局35=PLC3であるので、書込み局34に関しては、不整合検査対象のプログラミング環境2に係わる局が含まれていることになる。
よって、この場合には、プログラミング環境2の宣言テーブル40の共有データ変数名41に“D”があるか否か(該当レコードの有無)をチェックする。図示の例では該当レコードがあるので、更に、共有データ“D”に係わる定義内容の同一性チェックを行うことになる(図示のように、少なくともアドレスに関しては同一(xxx2)である)。
上述したように、例えばプログラミング環境1,2が検査対象の場合、例えばまずプログラミング環境1の管理テーブル30に基づいて、その各共有データ毎に、その共有データに係わるプログラミング環境における宣言テーブル40に、同一の定義が存在するか否かをチェックする(存在しない場合には、不整合ありと判定する)。
図示の例の場合、全ての共有データで定義同一となるので(ここでは、データ型は、不図示であるが、同一の定義となっているものとする)、不整合なしと判定されるものとする。
しかし、例えば、プログラミング環境1において、作業者等が共有データ“D”の追加に伴って管理テーブル30は更新したが、これに伴う宣言テーブル40の再作成を忘れていた場合等には、宣言テーブル40が例えば図7、図8に示す初期状態のままであったとすると、共有データ“D”に関してはプログラミング環境1の宣言テーブル40には該当する共有データ変数名41は無いことになる。よって、この場合には、例えば、プログラミング環境1における管理テーブル30と宣言テーブル40との不整合がある(共有データ“D”に関する不整合あり)旨、表示されることになる。
この例の場合、続いて更に、プログラミング環境2の管理テーブル30に基づいて、上記と同様のチェック処理を行うが、これについては説明は省略する。但し、1点だけ説明するならば、プログラミング環境2の管理テーブル30の共有データ“D”に関しては、その書込み局34=PLC2、参照局35=PLC3であるので、プログラミング環境1の宣言テーブル40はチェック対象とはならない。
従って、図9、図10の例の場合には、不整合なしと判定されるものとする(ここでは、データ型は、不図示であるが、同一の定義となっているものとする)。
以上、ステップS32の処理について説明した。
以下、ステップS33の処理について説明する。
ステップS33は、検査対象の各共有データ変数宣言テーブル40毎に、その宣言テーブル40に登録された各共有データ変数が、その宣言テーブル40と同じプログラミング環境における共有データ定義管理テーブル30に、同一定義で登録されているか否かをチェックする。尚、この例に限らず、検査対象の全ての共有データ定義管理テーブル30について、上記宣言テーブル40に登録された各共有データ変数が登録されているか否か等をチェックするようにしてもよい。
ステップS33の処理は、基本的に、上述した「一部の作業者同士が申し合わせて、新たに必要となった共有データをこれら作業者間でのみ追加定義した(本例では上記共有データ“D”の追加)」ことに伴って、まず、共有データ変数宣言テーブル40において追加定義を反映させるケースを想定している。尚、これは作業者等が例えば上記宣言テーブル40’を更新することで、この更新が宣言テーブル40に反映されるものであるが、この例に限らない。
上記のケースでは、共有データ変数宣言テーブル40の更新後に、共有データ定義管理テーブル30を更新(修正)することになるが、作業者が共有データ定義管理テーブル30の更新(修正)を忘れることが起こり得る。これより、主に共有データ定義管理テーブル30の更新忘れの有無をチェックする為に、ステップS33の処理を行う。
尚、ここでは上記と同様に、プログラミング環境1,2が検査対象であるものとする。
上記ステップS33の処理について、図9、図10の例を用いて説明する。但し、結果的には図9、図10に示す状態になるが、上記の通り、プロセスは異なるものとする。すなわち、プログラミング環境1において、作業者は、まず、そのプログラミング装置2に記憶されている共有データ変数宣言テーブル40’に対して、上記共有データ“D”の追加定義を反映させる修正を行う。
そして、本例では、上述したように、プログラミング装置1の共有データ変数宣言テーブル40’が更新された場合、この更新が自動的にプログラミング環境1の共有データ定義支援装置3の共有データ変数宣言テーブル40に反映されるものとする。これより、プログラミング環境1の共有データ定義支援装置3の共有データ変数宣言テーブル40は、図9、図10に示す状態となるものとする。
更に、この宣言テーブル40の更新内容を、プログラミング環境1の管理テーブル30に反映させる必要があるが、宣言テーブル40の内容からは書込み局34、参照局35は分からないので、これらは作業者が手作業で入力することになる。これによって、管理テーブル30の内容は図9、図10に示す状態となる。つまり、新たな共有データ“D”の定義が追加されている。
本例では、まず、プログラミング環境1の宣言テーブル40について、当該宣言テーブル40に格納されている各共有データ毎に、それが同環境(プログラミング環境1)の管理テーブル30にも登録されているか否かを確認する。図9、図10の例では、この宣言テーブル40に格納されている共有データ“A”、“B”、“C”、“D”の全てが、プログラミング環境1の管理テーブル30に格納されている。よって、この例では不整合はないものと判定される。
プログラミング環境2に関しても、同様にして、プログラミング環境2の宣言テーブル40について、当該宣言テーブル40に格納されている各共有データ毎に、それが同環境(プログラミング環境2)の管理テーブル30にも登録されているか否かを確認する。
図9、図10の例では、プログラミング環境2の宣言テーブル40には共有データ“A”、“B”、“D”に関する定義が登録された状態となっており、共有データ“A”、“B”、“D”の全てが、プログラミング環境2の管理テーブル30に格納されている。よって、この例では不整合はないものと判定される。
尚、プログラミング環境1の管理テーブル30とプログラミング環境2の管理テーブル30とでは、共有データ“D”に関する定義が相互に異なっているが、ステップS33の処理は、この点に関して検出/判別するものではない。この点に関しては、上記ステップS31の処理によって判別している。
最後に、ステップS34によって、上記ステップS31,S32,S33の3つの整合性検査で確認した内容について、不整合となっている共有データ変数と、その不整合の内容などを表示する。作業者は、この表示内容に応じて、上記のように必要な修正作業を行うことになり、検査対象に関しては整合性がある状態とする。
上述したように、本手法の共有データ定義支援システムによれば、複数の作業者がそれぞれのプログラミング環境(そのプログラミング装置2)で共有データを用いる制御プログラムの作成作業を行っている途中に、一部の作業者が共有データ定義を追加した場合でも、任意のプログラミング環境の共有データ定義支援装置3において、一部の複数のプログラミング環境に関して共有データの定義の整合性を確認することができる。
何れか一つのプログラミング環境(その共有データ定義支援装置3)で整合性チェックを実施できるため、整合性確認を行う場所を限定しなくてもよく、更に、全てのプログラミング環境をチェック対象としなくてよいので、その他のプログラミング環境の作業者の制御プログラミング作業を中断させる必要がない。また、整合性の確認を段階的に行うことができるようになる。
以上説明した実施例を、実施例1とする。
以下、実施例2について説明する。
上述した実施例1の手法では、共有データの定義の変更に伴って発生する可能性のある不整合を、変更に関係する作業者のプログラミング環境で検査できるようにし、また、一部の作業者の環境から段階的に範囲を広げて、対象とする制御システム全体での共有データ定義の不整合の検査を実施可能とする方法を示している。
しかし、この方法では、共有データ定義で用いられているデータ型について、そのデータ型名が同一であるか否かの観点での不整合検査を行っているが、そのデータ型自体が各作業者のプログラミング環境において定義された派生データ型である場合は、考慮していなかった。例えば、複数の作業者のプログラミング環境で定義された派生データ型の名称が、偶然、同一であり、且つ、内部構造が異なる場合、その派生データ型の変数として宣言されている共有データを制御システム内で利用して情報を交換する際、その共有データの内容が、そのPLC局で期待しているものとは異なった構造であるために、正しく情報を交換することができない、という事態が発生する。
実施例2では、上述した実施例1では検出出来ない不整合を検出できるようにするものである。すなわち、実施例2では、制御システムを作成する複数のプログラミング環境で定義されている派生データ型の内部構造の不整合を、検査できるようにする。また、派生データ型が割り付けられている変数が、制御システム全体で利用される共有データであるか否かで、検査結果を区別することで、派生データ型を修正する際の影響範囲を特定した上で、修正作業を行うことができるようにするものである。
図11は、実施例2の共有データ定義支援装置3’の機能ブロック図である。
尚、図11において、上記図2に示す実施例1の構成と略同一の構成については、同一符号を付してあり、その説明は省略または簡略化する。
尚、共有データ定義支援装置3’も、上記共有データ定義支援装置3と同様に、例えば一例としてはパソコンやサーバ装置上で実現されるものであり、パソコン等の一般的なコンピュータのハードウェア構成を有するものである。従って、特に図示しないが、CPU等の演算プロセッサ、ハードディスク、メモリ等の記憶部、キーボード、マウス等による入力操作部、液晶ディスプレイ等による表示部、通信機能部等を有している。
そして、例えば上記記憶部には、予め所定のアプリケーションプログラムが記憶されており、上記CPU等がこのプログラムを実行することにより、以下に説明する各種機能部51〜57の機能処理や、図12、図13、図16、図17等のフローチャート図の処理等が実現される。
共有データ定義管理テーブル記憶部13は、共有データ定義管理テーブル30を記憶する。共有データ定義管理テーブル30は、基本的には図2で説明した実施例1と略同様のデータ構成であるが、後述する図14に示すように、そのデータ型32に派生データ型の任意の名称が格納される場合が有り得る。
尚、上記実施例1では、不整合チェックの為に、例えばデータ型32とアドレス33を用いる場合があったが、この例に限らず、少なくともデータ型32が一致するか否かを判定するようにしてもよい。これは、データ型32とアドレス33に限らず、データ型42とアドレス43についても同様である。
共有データ定義等転送部57は、図2における共有データ変数宣言テーブル転送部16や共有データ定義管理テーブル転送部17に相当する機能部であり、各プログラミング装置2や他の共有データ定義支援装置3等から、共有データの定義等に係わる情報等を取得する。取得した情報は、上記共有データ定義管理テーブル記憶部13に記憶される。
上記構成以外にも、図2に示す実施例1の構成があってもよいが、ここでは省略して示し、説明は行わないものとする。そして、実施例2の共有データ定義支援装置3’においては、更に、図示の派生データ型定義転送部51、派生データ型定義管理テーブル記憶部52、派生データ型整合性検査部53、派生データ型内部構造変換部54、派生データ型割付け変数検査部55、派生データ型検査結果表示部56等の各種機能部を有する。
派生データ型定義転送部51は、複数のプログラミング装置2から派生データ型定義情報を取得して、これに基づいて後述する派生データ型定義管理テーブル60を作成する。派生データ型の定義情報は、後に図19に一例を示すように、例えばテキスト形式で記述されている。この様なテキストファイルを各プログラミング装置2から取得して、そこから後述するように派生データ型の名称や、その内部構造の情報等を抽出して、これらを例えば後述する図15に示すデータ構成の派生データ型定義管理テーブル60に格納する。詳しくは後述する。
但し、これは一例であり、この例に限らない。例えば、派生データ型の定義情報は、最初から派生データ型定義管理テーブル60のようなテーブル形式で、各プログラミング装置2に記憶されていてもよい。換言すれば、派生データ型の定義情報のデータ形式は、何でも良い(テキスト形式でもよいし、テーブル形式でもよいし、他の形式でもよい)。
何れの形式であっても、派生データ型の定義情報には、基本的に、各派生データ型毎に、その名称と内部構造情報等が含まれている。そして、本手法では、名称が同一である派生データ型の内部構造情報同士を比較して、該内部構造情報が不一致の場合には不整合と判定する。
派生データ型定義管理テーブル記憶部52は、上記派生データ型定義転送部51によって生成された派生データ型定義管理テーブル60を記憶する。
派生データ型整合性検査部53は、上記派生データ型定義管理テーブル記憶部52に記憶された派生データ型定義管理テーブル60等に基づいて、同一名称の派生データ型がある場合には、その内部構造の整合性を検査する。すなわち、例えば同一名称の2つの派生データ型について、一方の内部構造が他方の内部構造と同じであるか否かをチェックする。つまり、同一名称の2つの派生データ型の内部構造が同じであるか否かをチェックする。
派生データ型内部構造変換部54は、例えば上記派生データ型整合性検査部53が上記整合性検査処理中に必要に応じて呼び出す機能部である。
派生データ型内部構造変換部54は、上記派生データ型の内部構造が所定の条件を満たす場合に、その内容を所定のルールに従って変換し、この変換結果を派生データ型整合性検査部53に渡す。派生データ型整合性検査部53は、この変換結果を用いて、上記内部構造の整合性を検査する。上記内部構造としては、例えば配列、構造体等がある。例えば“構造体”を例にすると、複数の構造体メンバ名が同一であっても順番が異なる場合を想定し、所定のルール(例えば、アルファベット順)に従って構造体メンバ名をソートしたうえで、整合性を検査する。
派生データ型割付け変数検査部55は、派生データ型整合性検査部53による検査で不整合と判定された派生データ型が、上記共有データのデータ型として使用されているか否かを判定する。システム上の全ての共有データが、上記共有データ定義管理テーブル30に登録されているはずであるので、この管理テーブル30の上記データ型32に、上記不整合と判定された派生データ型の名称が格納されているか否かを判定する。格納されていれば、派生データ型整合性検査部53による検査で不整合と判定された派生データ型が、上記共有データのデータ型として使用されていることになる。
派生データ型検査結果表示部56は、上記各種検査結果/判定結果を表示する。
派生データ型検査結果表示部56は、例えば、上記派生データ型整合性検査部53による検査で不整合と判定され、更に共有データのデータ型として使用されていると判定された派生データ型と当該共有データについて、その名称、内部構造、定義した局、共有データとして利用している局等を表示する。但し、この例に限らない。例えば、共有データのデータ型としては使用されていない、例えばローカルの変数に関してのみ使用されていると見做してよい派生データ型についても、その名称、内部構造、定義した局等を表示するようにしてもよい。
あるいは、派生データ型検査結果表示部56は、例えば、上記共有データのデータ型として使用されているか否かは関係なく、上記派生データ型整合性検査部53による検査で不整合と判定された派生データ型について、上記内部構造情報等に基づく何等かの所定情報を表示するようにしてもよい。例えば、当該派生データ型の名称や定義した局、あるいは当該派生データ型に係わる構造体メンバ名あるいは配列情報(開始インデックス、終了インデックス)等を、表示するようにしてもよい。
派生データ型の場合、その名称や内部構造をユーザが任意に決定・設定できる。この為、実施例1においてデータ型が同一と判定された場合でも、実際には名称は同一であるが内容は同一ではない(内部構造が異なっている)場合が有り得る。実施例2では、この様な場合、データ型が異なるもの(不整合)と判定できる。
更に、不整合と判定された派生データ型が割り付けられている変数が、制御システム全体で利用される変数(共有データ)であるか否かを判別でき、この判別結果によって検査結果を区別することができ、派生データ型を修正する際の影響範囲を特定した上で、修正作業を行うことができる。
図12、図13は、実施例2における共有データ定義の不整合を検出するための作業フロー(1/2)、(2/2)である。この不整合検出には、派生データ型の内部構造の整合性を検査する処理も含まれる。尚、図12、図13は、1つのフローを2つに分けて示しているのであり、特に区別せずに図12等と記すものとする。
図12等に示す例では、各作業は、次のような手順で実施することができる。
並行してプログラミング作業を行う各作業者は、それぞれ、自己のプログラミング環境において、自己が作成する制御プログラムで利用する派生データ型や、共有データ変数の定義を作成する(ステップS41)。その後、任意のときに、ステップS42以降の処理を実行する。尚、作業者は、制御プログラム作成作業を、自己のプログラミング環境におけるプログラミング装置2において行う。
以下、まず、ステップS42の処理について説明する。
任意のときに、共有データ定義支援装置3’は、その共有データ定義等転送部57によって、各プログラミング装置2や他の各共有データ定義支援装置3等から、それらのプログラミング環境における共有データ変数の定義を取得して、これに基づいて共有データ定義管理テーブル30に新規データ登録する。また、派生データ型定義転送部51が、各プログラミング環境(各プログラミング装置2や各共有データ定義支援装置3等)から派生データ型の定義情報等を取得して、これに基づいて派生データ型定義管理テーブル60に新規データ登録する(ステップS42)。この処理の具体例は後述する。
ここで、図15に派生データ型定義管理テーブル60の具体例を示す
図15に示す例では、派生データ型定義管理テーブル60のデータ構造は、図示の派生データ型名61、配列/構造体62、取得局63、要素データ型64、開始Index65、
終了Index66、構造体メンバ名67の各データ項目より成る。
各派生データ型毎に、その名称が派生データ型名61に格納され、それを定義したPLC局(プログラミング装置2)を示す情報が、取得局63に格納される。これら以外のデータ項目は、全て纏めて内部構造の情報と見做してよい。尚、内部構造に係わるデータ項目全てにデータが格納されるわけではない。
つまり、図15に示すように、その派生データ型の種別(配列/構造体62)が、“配列”である場合には、開始Index65、終了Index66にデータ格納されるが、構造体メンバ名67にはデータ格納されない。その逆に、その派生データ型の種別が“構造体”である場合には、構造体メンバ名67にはデータ格納されるが、開始Index65、終了Index66にデータ格納されない。
すなわち、配列/構造体62が上記“配列”である場合には、配列の開始インデックス、終了インデックスが、開始Index65、終了Index66に格納されると共に、データ型が要素データ型64に格納される。尚、「終了Index66−開始Index65+1」によって後述する要素数を算出できる。これより、図15に示す例では、種別が“配列”である派生データ型は、2つとも要素数が10個であることになる。
また、配列/構造体62が上記“構造体”である場合には、その各メンバーの名称が構造体メンバ名67に格納されると共に、これら各メンバーのデータ型が、要素データ型64に格納される。尚、後述する不一致判定の際には、全てのメンバーについて、その名称が一致するだけでなくデータ型も一致しなければ、一致するものと見做さないものとする。但し、この例に限らず、名称だけが一致すればよいものとしてもよい。
また、派生データ型定義管理テーブル60の各レコードは、上記のように各プログラミング装置2から取得した派生データ型定義情報に基づいて生成されるものであり、取得元のプログラミング装置2を示す情報が、取得局63に格納される。尚、基本的/一般的に、任意の派生データ型が任意のプログラミング装置2において定義された場合、その派生データ型定義情報は、当該定義が行われたプログラミング装置2に格納・管理されているものである。
また、共有データ定義管理テーブル30に関しても、図14に具体例を示すが、そのデータ構成自体は図3(a)に示す実施例1の構成と同じであってよく、同一符号を付してあり、説明は省略する。但し、図14に示すように、実施例2の場合、共有データ変数のデータ型32として、派生データ型が指定される場合がある。
上記ステップS42の処理を実行したら、続いて、以下のステップS43の処理を実行する。
ステップS43では、派生データ型定義管理テーブル60を検索して、同一名称の派生データ型が存在するか否かをチェックする。これは、例えば、派生データ型定義管理テーブル60の各レコードを順次チェック対象レコードにして、チェック対象レコードの派生データ型名61を取得して、この名称と同一名称の派生データ型名61を有する他のレコードがあるか否かをチェックする。
例えば、図15に示す例では、“USR_TYP_A”と“USR_TYP_B”に関しては同一名称の派生データ型は存在しないが、“USR_TYP_C”に関しては同一名称の派生データ型が存在す
ることになる。つまり、図示の3番目のレコードと4番目のレコードは、どちらも、派生データ型名61が“USR_TYP_C”である。
例えば上記一例のように同一名称の派生データ型が存在する場合には、更に、その内部構造について、定義内容が一致しているか否かをチェックする。
(以上、ステップS43)
上記定義内容が一致しているか否かをチェックする処理は、例えば、図15に示す例における構造体メンバ名67(あるいは開始Index65及び終了Index66)が一致しているか否かをチェックし、不一致の場合には不整合(ステップS44,YES)と判定する処理である。勿論、それ以前に、配列/構造体62が不一致であれば不整合と判定する(ステップS44,YES)。また、上記構造体メンバ名67(あるいは開始Index65及び
終了Index66)が一致していても、更に要素データ型64が一致するか否かをチェック
し、不一致の場合には不整合(ステップS44,YES)と判定するようにしてもよい。
同一名称の派生データ型が存在しない場合、または、同一名称の派生データ型が存在するが、それらの内部構造が一致している場合には、不整合は検出されなかったものとして(ステップS44,NO)、本処理を終了する。
但し、上記ステップS44がYESの場合でも、以下のステップS45の処理を行って以下のステップS46の判定がNOとなった場合には、実質的に不整合は検出されなかったものとして本処理を終了するようにしてもよい。但し、この例に限らず、例えば実質的には不整合ではないが、順番等の修正が必要である」旨のメッセージを表示するようにしてもよい。また、このメッセージは、同一名称の派生データ型に係わる取得局63(プログラミング装置2等)に通知して表示させるようにしてもよい。図15の例では、PLC1とPLC2にメッセージ通知して表示させることになる。
以下、ステップS45の処理について説明する。
ステップS45では、上記同一名称の派生データ型に関してその内部構造が不一致のものが存在する場合、これを処理対象として、まず、当該内部構造が、変換対象となるものであるか否かを判定する。
これは、例えば、配列/構造体62等を参照して、変換対象となるか否かを判定する。一例としては、配列/構造体62が不一致の場合には、変換対象とはならない。例えば、処理対象の一方が“配列”で他方が“構造体”である場合には、変換しても意味がない(一致する可能性はない)からである。また、処理対象の配列/構造体62が両方とも“配列”である場合には、その要素数が同一である場合に、変換対象とする。逆に言えば、配列要素数が異なる場合には、変換対象とはならない。
あるいは、処理対象の配列/構造体62が両方とも“構造体”である場合には、構造体メンバ名67の数が異なる場合、変換対象とはならない。上記図15の例の場合、構造体メンバ名67の数は、3番目のレコードは3つ、4番目のレコードは2つであるので、後述するように順番を変更しても両者が一致する可能性は無いことになるので、変換対象とはならない。
上記処理対象が変換対象であると判定された場合は、所定のルールに従って内部構造の変換を行い、当該変換後の内部構造について整合性をチェックする。このチェックの結果、変換後の内部構造は一致すると判定された場合には(ステップS46,NO)、上記のように本処理を終了してもよいが、警告対象の派生データ型として記録して、上記メッセージ通知や検査結果表示させるようにしてもよい。
一方、変換後の内部構造も不一致と判定された場合には(ステップS46,YES)、ステップS47以降の処理を実行する。換言すれば、上記変換後も不一致となる派生データ型を含む、上記名称は同一であるが内部構造が不一致となる派生データ型が、1つ以上ある場合には、ステップS47以降の処理を実行する。ステップS47以降の処理については後述する。
ここで、上記ステップS45の処理について、以下、更に具体的に説明する。
ここで、変換対象とする内部構造の例としては、“配列”構造の場合、要素数が同一であり、且つ、開始インデックス、終了インデックスが異なる場合がある。このような場合は、例えば、開始インデックスを‘1’として揃え、終了インデックスを配列要素数に置き換える、等の変換方法が考えられる。例えば、処理対象の一方が開始Index65=‘2
’、終了Index66=‘11’であり、他方が開始Index65=‘0’、終了Index66=‘9’であった場合、両方とも配列要素数は‘10’であるので、上記変換方法によって両方とも開始インデックス=‘1’、終了インデックス=‘10’となる。従って、この例では、変換後の内部構造は一致するものと判定されることになる(ステップS46,NO)。
尚、“配列”構造の場合には、上記“変換対象となる”(配列要素数が同一である)と判定した場合には、変換後の内部構造は一致するものと見做しても良い。配列要素数が同一であれば、上記変換手法であれば、変換後の開始インデックス、終了インデックスは、同一となるはずであるからである。
あるいは、構造体の場合、構造体メンバの名称やデータ型(構造体メンバ名67や要素データ型64)は同一であっても、それらメンバの定義順序が異なる場合がある。このような場合は、例えば、構造体メンバ名67における複数の構造体メンバ名の順番を、メンバ名称の昇順や降順(例えばアルファベット順や、50音順など)、あるいはその要素データ型64のデータサイズの昇順や降順等といったルールに従って、並べ替える、等の方法が考えられる。内容的に同一であれば(順番が異なるだけであれば)、上記並び替えを行うことで、当該変換後の内部構造は一致するはずである。
尚、上述したような変換条件は、利用しているプログラミング環境における、データ型と変数へのアドレス割付けルールを元に設定してもよい。
上述した処理によって検出された、名称は同一であるが内部構造の定義内容が不一致であった全ての派生データ型について、更にステップS47以降の処理を実行する。換言すれば複数のプログラミング環境で(偶然)同一名称の派生データ型が定義されたが両者の内部構造が異なる場合には、これら派生データ型を処理対象として更にステップS47以降の処理を実行する。
ステップS47の処理では、まず、上記処理対象の各派生データ型が、各々、共有データ変数のデータ型として使用されているか否かを判定する。つまり、上記処理対象の各派生データ型が、それぞれ、共有データ定義管理テーブル30に登録されている共有データ変数の何れか1つ以上に、データ型32として割付けられているか否かをチェックする。尚、上記一例における“USR_TYP_C”は、図14に示す例では共有データ変数名31が“XXX2”の共有データ変数のデータ型32として割付けられている。
上記共有データ変数が存在する場合、すなわち“同一名称で内部構造が異なる派生データ型”(“該当派生データ型”と呼ぶものとする)が割付けられている共有データ変数が有る場合には(ステップS48.YES)、以下に説明するステップS49の処理を行って後述するステップS51の処理を実行する。一方、上記“該当派生データ型”が割り付けられた共有データ変数が1つも存在しない場合には(ステップS48,NO)、後述するステップS50の処理を行って後述するステップS51の処理を実行する。
ステップS49の処理では、まず、上記“該当派生データ型”が割り付けられている共有データ変数やこの“該当派生データ型”に係わるPLC局(プログラミング装置2)を判別する。すなわち、例えば、上記該当派生データ型が、どのPLC局で定義されたものであるかを、例えば図15に示す派生データ型定義管理テーブル60を参照して判別する。つまり、“該当派生データ型”に対応する取得局63を、この“該当派生データ型”が定義されたPLC局と見做す。
上記具体例の場合、図15に示す派生データ型定義管理テーブル60において、その派生データ型名61が“USR_TYP_C”であるレコードは、2つあり、一方は取得局63が“PLC1”、他方は取得局63が“PLC2”となっている。これより、上記2つの派生データ型“USR_TYP_C”は、一方が“PLC1”で定義され、他方が“PLC2”で定義されたものと判別される。勿論、これら2つの派生データ型“USR_TYP_C”は、上記の通り、名称は(偶然)同一となっているが定義内容(内部構造)は相互に異なるものである。
また、ステップS49の処理では、上記”該当派生データ型“が割り付けられている共有データ変数を利用しているPLC局(変数利用PLC局)を、共有データ定義管理テーブル30を参照して判別する。これは、該当レコードの書込み局34、参照局35等を取得する。該当レコードとは、そのデータ型32が上記”該当派生データ型“であるレコードであり、上記“USR_TYP_C”の例では、該当レコードの書込み局34は“PLC1”、参照局35は“PLC2”となっており、これらが上記“変数利用PLC局”であると見做す。
ステップS49の処理では、最後に、上記判別結果等に基づく表示を行う。例えば、上記“該当派生データ型”が割付けられている共有データ変数や、この共有データ変数を利用しているPLC局等や、この“該当派生データ型”の名称、この“該当派生データ型”が定義されたPLC局等を、検査結果としてディスプレイ等に表示する。尚、この検査結果を表示する際には、ユーザに必ず修正を行うように要求するエラー表示とすることが望ましい。
この検査結果表示内容が、上記“該当派生データ型”おける「共有データ変数としての制御システム内での影響範囲」となる。例えば上記“USR_TYP_C”の例の場合、制御システム内には仮にPLC1〜PLCnのn台のPLC局があっても、影響範囲は、PLC1とPLC2に限られることになる。よって、この例の場合、例えばPLC1とPLC2に対してのみ上記検査結果を通知して表示させるようにしてもよい。これより、この例では、ステップS51の修正作業を行うのは、PLC1とPLC2の各プログラミング装置2の担当者等となる。例えば、これら各担当者が、話し合って、例えば何れか一方の派生データ型の名称を変更する等、何等かの対応を行うことになる。
尚、ステップS51では、上記ステップS49による表示、あるいは後述するステップS50による表示後、該当する各プログラミング装置2の担当者等に、派生データ型の定義内容や、共有データ変数の定義内容を、修正させる。
一方、上記の通り、上記ステップS48の判定がNOの場合には、ステップS50の処理による表示を行って、上記ステップS51の修正作業を行わせる。
すなわち、上記“該当派生データ型”が割付けられている共有データ変数が無ければ(ステップS48,NO)、この“該当派生データ型”を定義したPLC局の情報や、該当派生データ型の名称等を、検査結果として表示する(ステップS50)。その際、共有データ変数には割り付けられていない旨の表示も行うようにしてもよい。この場合、この表示を見た担当者等は、この“該当派生データ型”は、該当PLC局のローカル変数にのみ利用されている等と、影響範囲を判断できる。尚、この検査結果を表示する際には、必ず修正すべきものとしてエラー表示としても良いし、影響範囲がローカルに限定されることから、警告表示としても良い。
尚、「影響範囲を判断する」のは、例えば、複数のプログラミング環境で共通して利用される「共有データ変数」(制御システムの中ではグローバル変数的な意味合いとなる)と、あるプログラミング環境の中だけで利用される変数(ローカル変数的な意味合いとなる)に分けることで、修正対象の範囲の違いを示すことを意図している。但し、この例に限らない。
また、「共有データ変数」の修正は、その変数を利用(読込み・書込み)しているプログラミング装置全てにおいて、その変数定義に修正が必要になる。これより上記のように、共有データ定義管理テーブル30を参照することで、修正対象の派生データ型を利用している共有データ変数名31と利用局(書込み局34、参照局35)を特定し、ユーザー等に対して表示する。
一方、あるプログラミング装置のみで利用される変数(ローカル変数など)においては、変数定義の修正の影響が及ぶ範囲は、その装置内のみとなる。この場合、プログラミング装置内の変数定義を参照することで、修正対象の派生データ形を利用している変数名を特定し、ユーザー等に対して表示する。
上記修正作業が行われた後、再び上記ステップS42以降の処理を実行し(再検査を実行し)、不一致が検出されなければ(ステップS44等がNO)本処理を終了する。未だ不一致が検出される状態であれば、再び上記エラー表示等を行って、再度、修正作業を行わせるようにしてもよい。
図16は、上記ステップS43の処理の詳細フローチャート図である。
ステップS43の処理は、上記のように、同一名称で内部構造が不一致となっている派生データ型を、抽出するものである。
図16に示す処理例では、まず、派生データ型定義管理テーブル60において任意のレコードを照合元とする(ステップS61)。
そして、この照合元レコードを基準にして、派生データ型定義管理テーブル60における他の登録データ(他のレコード)を順次比較対象として、同一のデータ型名称(派生データ型名61)を持つ登録データが存在しないかをチェックする。すなわち、照合元レコードの派生データ型名61と同一の派生データ型名61を有するレコードが、存在するか否かを検索する(ステップS62)。
照合元と同一名称の登録データが1つも無い場合には(ステップS63,NO)、ステップS67へ移行して、ステップS67において新たな照合元を決定してステップS62に戻る。但し、新たな照合元が最後のレコードである場合には(ステップS68,YES)、他のレコードと比較する意味がないので、本処理を終了する。
尚、図15の例では、先頭レコードから順次、照合元とする場合、最初は照合元の派生データ型名称が“USR_TYP_A”であり、他に派生データ型名61が“USR_TYP_A”であるレコードは存在しないので、ステップS63はNOとなる。そして、次の照合元の名称は“USR_TYP_B”であるので、これも他に派生データ型名61が“USR_TYP_B”であるレコードは存在しないので、ステップS63はNOとなる。そして、次の照合元となる3番目のレコードの派生データ型名61は“USR_TYP_C”であるので、4番目のレコードの派生データ型名61も“USR_TYP_C”であることから、ステップS63はYESとなる。
照合元と同一名称の登録データがある場合には(ステップS63,YES)、照合元レコードの内部構造情報と、これと同一名称を持つ登録データの内部構造情報とを照合して、一致/不一致を判定する(ステップS64)。
ステップS64の処理は、一例としては例えばまず、上記照合対象の2つのレコードの配列/構造体62が一致するか否かを判定し、不一致である場合には内部構造が不一致と判定する(ステップS65,YES)。配列/構造体62が一致する場合には、続いて、配列/構造体62に応じた内部構造情報を照合に用いる。
すなわち、配列/構造体62が“構造体”である場合には、両レコードの構造体メンバ名67同士を比較して、完全に一致するか否かを判定する。上記の通り、ここでは、順番が異なるだけであっても不一致と判定する。更に、上記構造体メンバ名67に対応する要素データ型64同士も比較して、完全に一致するか否かを判定するようにしてもよい。
上記“USR_TYP_C”の例の場合、上記3番目のレコードと4番目のレコードとでは、構造体メンバ名67は全く異なるし、要素データ型64も全く異なるので、内部構造が不一致と判定される(ステップS65,YES)。尚、この例のように、構造体である場合には、基本的には、照合元と、これと同一名称の登録データとで、構造体メンバ名67が完全に一致し、且つ、要素データ型64も完全に一致する場合のみ、内部構造が一致すると判定する(ステップS65,NO)が、この例に限らない。
また、配列/構造体62が“配列”の場合には、両レコードの開始Index65と終了Index66の両方が一致するか否かを判定する。一致する場合には、更に、両レコードの要素データ型64も一致するか否か判定し、一致する場合には内部構造が一致と判定する(ステップS65,NO)。但し、これは一例であり、この例に限らず、例えばIndex65と終了Index66の両方が一致すれば、内部構造が一致すると判定するようにしてもよい(ステップS65,NO)。
内部構造が一致すると判定された場合には(ステップS65,NO)、そのまま上記ステップS67の処理へ移行する。内部構造が不一致と判定された場合には(ステップS65,YES)、以下に説明するステップS66の処理を実行して、上記ステップS67の処理へ移行する。
ステップS66の処理は、例えば、上記照合元レコードと、これと同一名称の登録データから、名称(派生データ型名61)や、各々が定義されていたPLC局(取得局63)等の情報を取得して、所定の記憶領域に記録する。当該記録した情報は、例えば上記ステップS47,S49.S50等の処理の際に利用される。尚、この例に限らず、例えば上記照合元レコードとこれと同一名称の登録データから、その内部構造情報全てを取得して記録するようにしてもよい。
図17は、上記ステップS47の処理の詳細フローチャート図である。
上記ステップS47の処理は、派生データ型定義の内部構造不一致検査(上記ステップS43等)の結果、不一致が検出された派生データ型が、共有データ変数のデータ型として割付けられているものであるか否かを、チェックする処理である。
図17に示す処理例では、まず、例えば上記図16のステップS66の処理で記憶された情報を参照して、複数のプログラミング環境で定義された、相互に名称は同じだが内部構造が異なる派生データ型(上述した“該当派生データ型”)の情報を、1つ取得して判定対象とする(ステップS71)。この取得情報には、少なくとも“該当派生データ型”の名称が含まれている。
そして、上記判定対象の“該当派生データ型”の名称を用いて、共有データ定義管理テーブル30を検索することで、該当する登録データがあるか否かを判定する(ステップS72)。これは、例えば、共有データ定義管理テーブル30の全レコードについて、順次、そのデータ型32が上記判定対象の該当派生データ型の名称と一致するか否かを判定し、一致するレコードは全て“該当登録データ”として抽出する。
そして、上記“該当登録データ”が1つ以上ある場合には(ステップS73,YES)、この“該当登録データ”の情報(共有データ変数名31、書込み局34、参照局35等)を、上記判定対象の“該当派生データ型”の記録情報等と関連付けて記録する(ステップS74)。ここで記録されたデータは、検査結果表示等に用いられる。
そして、次の判定対象の“該当派生データ型”を決定して、その上記記憶情報を取得して(ステップS75)、上記ステップS72の処理へ戻る。但し、次の判定対象が存在しない場合には(ステップS76、YES)本処理を終了する。
尚、上記“該当登録データ”が1つも無い場合には(ステップS73,NO)、そのまま上記ステップS75の処理へ移行する。
図18に、上記図14、図15の例における上記ステップS43、S47の処理イメージを示す。
上記ステップS43の処理では、派生データ型定義管理テーブル60から、“相互に名称は同じだが内部構造が異なる派生データ型”(該当派生データ型)を抽出する。図15の例の場合、図18に示すように、派生データ型名61が“USR_TYP_C”である2つのレコードが抽出されることになる。
そして、ステップS47で、共有データ定義管理テーブル30において、この派生データ型“USR_TYP_C”がデータ型32となっている共有データ変数を探す。もし、この様な共有データ変数があれば、エラー表示の為に必要なデータを取得して記憶する。例えば、図18に示すように、共有データ変数“XXX2”のデータ型が上記“USR_TYP_C”となっているので、その書込み局34=“PLC1”、参照局35=“PLC2”等を取得して記憶する。そして、後にエラー表示等の際にこの記憶データを表示に用いる。
図19(a)、(b)に、上記ステップS42の処理で各プログラミング環境(各プログラミング装置2等)から取得する、派生データ型の定義情報の一例を示す。
尚、ここでは、派生データ型の定義情報は、各プログラミング装置2内の派生データ型定義用のファイルに、テキスト形式で記述されているものとする。これより、上記ステップS42におけるこの定義情報に基づくテーブル60の作成処理は、配列や構造体の定義書式に基づいて上記テキストファイルの記述内容をファイルの先頭から順に解析し、この解析結果を順にテーブル60の新規レコードの該当欄に追記することで実現させる。但し、これは一例であり、この例に限らない。
また、ここでは、図19(a)はPLC1における派生データ型の定義情報、図19(b)はPLC2における派生データ型の定義情報の一例であるものとする。
そして、配列、構造体それぞれについて1つずつ例を挙げて、以下に説明するものとする。
まず、配列に関して、PLC1,PLC2の両方とも、図示のテキストファイルの3行目において、その名称が“ARRAY_A1”である派生データ型(これを、派生データ型“ARRAY_A1”等と記す場合もあるものとする)の定義を行っている。すなわち、派生データ型“ARRAY_A1”について、下記のような定義を行っている。尚、名称が同じであるのは、例えば偶然の一致であるが、この例に限らない。
PLC1の場合;
ARRAY_A1 : ARRAY[1..64] OF INT
PLC2の場合;
ARRAY_A1 : ARRAY[0..63] OF INT
この様に、図示の例では、配列に係わる派生データ型の定義は、
派生データ型名称 : ARRAY[開始Index..終了Index] OF データ型
の形式で記述される。
これより、上記の例では、PLC1から取得した定義情報に基づいて、テーブル60には、派生データ型名61=“ARRAY_A1”、配列/構造体62=“配列”、取得局63=“PLC1”、要素データ型64=“INT”、開始Index65=“1”、終了Index66=“64”のレコードが、新規追加されることになる。
同様にして、PLC2から取得した定義情報に基づいて、テーブル60には、派生データ型名61=“ARRAY_A1”、配列/構造体62=“配列”、取得局63=“PLC2”、要素データ型64=“INT”、開始Index65=“0”、終了Index66=“63”のレコードが、新規追加されることになる。
つまり、これら2つの新規追加レコードは、配列要素の定義(開始Index65&終了Index66)が相互に異なるので、ステップS43の処理で不一致と判定されることになる。
但し、上記ステップS45の処理によって、例えば配列要素のインデックス番号を‘1’から開始するルールに従って変換することで、両方とも、開始Index=“1”、終了Index=“64”となるので、ステップS45では両者は一致するものと判定されることになる。
また、構造体に関して、PLC1,PLC2の両方とも、図示のテキストファイルの7〜11行目において、派生データ型“STR_S1”の定義を行っている。すなわち、下記のような定義を行っている。
(1)PLC1の場合;
STR_S1:
STRUCT
LDATA : DWORD;
UDATA : DWORD;
END_STRUCT;
(2)PLC2の場合;
STR_S1:
STRUCT
UDATA : DWORD;
LDATA : DWORD;
END_STRUCT;
この様に、図示の例では、構造体に係わる派生データ型の定義は、
派生データ型名称 :
SUTRUCT
メンバ名 : データ型;

メンバ名 : データ型;
END_STRUCT;
の形式で記述される。
これより、上記の例では、PLC1から取得した定義情報に基づいて、テーブル60には、派生データ型名61=“STR_S1”、配列/構造体62=“構造体”、取得局63=“PLC1”の新規レコードであって、構造体メンバ名67には“LDATA”、“UDATA”がこの順番で格納され、“LDATA”、“UDATA”それぞれに対応する要素データ型64が両方とも“DWORD”である新規レコードが、追加されることになる。
同様にして、PLC2から取得した定義情報に基づいて、テーブル60には、派生データ型名61=“STR_S1”、配列/構造体62=“構造体”、取得局63=“PLC2”の新規レコードであって、構造体メンバ名67には、“UDATA”、“LDATA”がこの順番で格納され、“LDATA”、“UDATA”それぞれに対応する要素データ型64が両方とも“DWORD”である新規レコードが、追加されることになる。
従って、この例では、構造体メンバ名67の名称自体は同じであるが定義順が異なるので、ステップS43の処理で不一致と判定されることになる。
但し、上記ステップS45の処理によって、例えばアルファベット順(且つ、昇順)に変換することで、両方とも構造体メンバ名67の順番が、“LDATA”、“UDATA”の順となる。これによって、ステップS45では両者は一致するものと判定されることになる。
図20に、上記ステップS50の表示処理の表示画面例を示す。
これは、図19に示す例(それに応じて生成されるテーブル60の例)の場合の表示例であり、特に詳細には説明しないが、例えば上記ステップS43で不一致と判定された派生データ型の名称や、その定義元のプログラミング装置2(取得局63)等が、表示される。例えば、派生データ型“ARRAY_A1”の場合、上記PLC1(局番1)とPLC2(局番2)とで定義されており、且つ、配列要素の定義が相互に異なっているので、その旨が図20に示すように表示されることになる。
また、特に説明していないが、例えば図21に示すような表示を行うようにしてもよい。すなわち、上記テーブル60を作成後、この作成に用いた上記派生データ型の定義情報を保存しておく。そして、例えば上記ステップS43の処理で不一致と判定された派生データ型に係わるPLC局の上記定義情報から、この派生データ型に関する記述箇所を抽出して、例えば図21に示すように表示する。
図21(a)には、上記派生データ型“ARRAY_A1”に関する定義情報における記述箇所を表示しており、図上左側にはPLC1、図上右側にはPLC2における定義内容が表示されている。
図21(b)には、上記派生データ型“STR_S1”に関する定義情報における記述箇所を表示しており、図上左側にはPLC1、図上右側にはPLC2における定義内容が表示されている。
尚、本手法は上述した例に限らない。例えば、図12等の処理において、上記ステップS47,S48,S49の処理は、実行しないようにしてもよい。つまり、複数のプログラミング環境で同一名称且つ異なる内部構造の派生データ型が定義されていないかを、チェックしてチェック結果を表示する処理だけであってもよい。つまり、必ずしも共有データ変数と関連付けた処理を行わなくてもよい。
また、実施例2を実施例1に利用してもよい。すなわち、上述した実施例2の説明では、ステップS43、S45、S47等の検査結果の記録を用いて、ステップS49、S50等の表示を行う例を示したが、この例に限らない。これら検査結果の記録を、例えば上記ステップS31,S32,S33の確認処理の際に、参照・利用するようにしてもよい。すなわち、例えばステップS31の処理の「共有データ変数毎に、定義内容の同一性を確認する」処理の際に、データ型32の一致/不一致を確認する場合に、上記検査結果の記録を利用する。
すなわち、この様な場合、実施例1では、単にデータ型32が同一であれば(例えば両方ともINTであれば)、少なくともデータ型に関しては一致と判定していた。これに対して、上記実施例2の手法を利用する例の場合には、比較対象のデータ型32が同一であっても、更に、このデータ型32について上記ステップS47の処理(図17の処理など)と同様の処理を実行する。
ここで、既に説明した通り、上記ステップS47の処理は、派生データ型定義の内部構造不一致検査(上記ステップS43等)の結果、不一致が検出された派生データ型が、共有データ変数のデータ型として割付けられているものであるか否かを、チェックする処理である。これより、例えば上記比較対象のデータ型32が、上記“不一致が検出された派生データ型”であるか否かを、上記検査結果の記録を参照してチェックする。比較対象のデータ型32が同一であっても、それが“不一致が検出された派生データ型”である場合には、上記データ型32の一致/不一致の確認結果は、「不一致」とする。
例えば、上記ステップS31の処理において、比較対象の2つのテーブル30の両方に同じ共有データ変数“XXX2”があり、且つ、そのデータ型32が両方とも上記“USR_TYP_C”であった場合には、上記図15の例ではこれは“不一致が検出された派生データ型”であると判定されることになるので、上記データ型32の一致/不一致の確認結果は「不一致」とする。よって、この共有データ変数“XXX2”に関する定義内容の同一性の確認結果も、「同一ではない」ことになる。
あるいは、予め上記ステップS47の処理を行って検査結果を記録しておく例に限らず、例えば上記ステップS31の処理の際に、ステップS47の処理を実行するようにしてもよい。そして、この例の場合、ステップS47の処理の対象は、ステップS31において上記データ型32の一致/不一致の確認対象となったデータ型32に限られるようにしてもよい。
また、上記ステップS47の処理の結果を利用する処理は、上記ステップS31に限らず、上記ステップS32、S33等に利用しても構わない。
また、ここでは、上記ステップS44がYESであるがステップS46がNOとなる派生データ型の場合には、上記データ型32の一致/不一致の確認結果は「不一致」としてもよいし、「一致」としてもよいものとする。
勿論、実施例1の処理に利用する例に限らず、実施例1は関係なく上記実施例2単独で実現してもよい。
また、上記実施例2単独の場合において、共有データ変数に関する処理は、必須ではない。つまり、テーブル30の作成や利用に係わる処理は、必ずしも必要ない。つまり、例えばステップS47の処理は、必ずしも必要ない。これに伴って、例えば表示処理に関しては、ステップS49の処理は削除し、必ずステップS50の処理を実行するようにしてもよい。
以上説明したように、実施例2に関しては、制御システム内の複数のプログラミング環境下で定義されている様々な派生データ型について、同一名称の派生データ型がある場合、その内部構造が同一であるか否かを、上記検査によって確認できるため、制御システム内の局間で内部構造が異なるデータを誤って取り扱うことを防止できる。
また、派生データ型の内部構造の不整合を検出した際に、その派生データ型が割り付けられている変数が、共有データ変数であるか否かを検出して区別できるため、不整合検出時に、該当する派生データ型の修正の影響範囲を特定した上で、修正作業を行うことができる。
尚、本例の共有データ定義支援システムは、例えば下記の構成を有するものと言うこともできる。
すなわち、本例の共有データ定義支援システムは、各々がネットワークに接続されると共に1以上の共有データを保持し得る複数のコントローラ装置4と、該各コントローラ装置4に対応して設けられ、そのコントローラ装置4の制御プログラムを上記共有データも用いて任意に作成させるプログラミング装置2とを有するシステムに対して、上記支援装置3を設けた構成である。各支援装置3は上記ネットワーク5に接続される。
そして、各支援装置3は、各々不図示の下記の処理機能部を有するものと見做すこともできる。
・予め決められた共有データ全ての定義情報が登録される共有データ定義記憶部(一例は管理テーブル30等)。
・該共有データ定義記憶部に登録された前記各共有データのなかで自装置に係る共有データの定義情報を抽出することで自装置共有データ情報を生成する自装置共有データ情報生成部。
・上記生成された自装置共有データ情報を記憶する自装置共有データ情報記憶部(一例は宣言テーブル40等)。
・後から当該支援装置3に対応するプログラミング装置2が係わるコントローラ装置1に関して追加された共有データの定義情報を、上記共有データ定義記憶部または上記自装置共有データ情報記憶部に追加登録させる共有データ定義追加部。
・任意のときに、他の支援装置3から、その支援装置3における上記共有データ定義記憶部に記憶されている共有データ定義情報、または/及び、その支援装置における前記自装置共有データ情報記憶部に記憶されている自装置共有データ情報、を取得する他装置情報取得部。
・該他装置情報取得部で取得した他の支援装置3の共有データ定義情報または/及び自装置共有データ情報と、自装置で記憶している共有データ定義情報または/及び自装置共有データ情報とを検査対象として、該検査対象とする各情報間の整合性を検査する整合性検査部。
そして、例えば、任意のときに任意の支援装置3において上記他装置情報取得部と整合性検査部とによる整合性検査が実行されることが繰り返されることによって、システム全体での共有データ定義に係る整合性検査が実現される。
また、例えば、上記他装置情報取得部は、自装置以外の支援装置3のなかの一部の支援装置3を上記他の支援装置とする。つまり、各整合性検査では全てのプログラミング環境が検査対象とならないようにしている。これによって、検査対象外のプログラミング環境では作業中断することはない。
また、上記整合性検査部による整合性検査結果を表示する表示機能部手段を更に備える。この表示機能部の表示内容に基づいて、上記検査対象の共有データ定義情報/自装置共有データ情報の何れか1つ以上を、作業者等に修正させる(特に図示しない設定画面等を表示する等して、作業者に手作業で修正させる)。
また、例えば、上記共有データ定義情報は、各共有データ毎に、その識別情報と各種定義情報とから成る。そして、上記整合性検査部は、上記自装置で記憶している共有データ定義情報と、上記他の支援装置の共有データ定義情報とで、識別情報が同じもの同士で上記各種定義情報が一致するか否かを判定し、不一致の場合には不整合と判定する。各種定義情報には、例えばデータ型などが含まれる。
また、例えば、上記整合性検査部による上記“各種定義情報が一致するか否かの判定”は、少なくともデータ型が一致するか否かを判定するものであり、該データ型が派生データ型である場合には、データ型の名称が一致する場合でもデータ型が不一致と判定する場合がある。
これに関して、例えば、上記派生データ型に係わる定義情報に基づいて、名称が同一である派生データ型同士の整合性を判定する派生データ型整合性検査部を、更に有する構成であっても構わない。そして、例えば、上記整合性検査部は、上記判定対象のデータ型が上記派生データ型整合性検査部で不整合と判定された派生データ型である場合には、データ型の名称が一致する場合でもデータ型が不一致と判定する。
あるいは、本例の共有データ定義支援システムは、複数のプログラミング環境において、それぞれ、共有データを保持し得るコントローラの制御プログラムを前記共有データも用いて任意に作成させるプログラミング装置と、支援装置とが設けられ、該各装置がネットワークに接続されたシステムであって、例えば下記の不図示の構成(機能部)を有するものであっても構わない。すなわち、上記各支援装置は、
・共有データの定義情報を記憶する共有データ定義記憶部;
・上記各プログラミング環境における派生データ型の定義情報に基づいて、名称が同一である派生データ型同士の整合性を判定する派生データ型整合性検査部;
・該派生データ型整合性検査部によって不整合と判定された派生データ型が、そのデータ型として割付けられている上記共有データを、上記共有データ定義記憶部から判別する派生データ型割付け変数検査部;
また、この様な共有データ定義支援システムにおいて、上記支援装置は、更に、例えば下記の不図示の各構成を有するものであっても構わない。
例えば、上記派生データ型の定義情報には、上記各派生データ型毎に、その上記名称と内部構造情報が含まれている。そして、上記派生データ型整合性検査部は、例えば、上記名称が同一である派生データ型の上記内部構造情報同士を比較して、該内部構造情報が不一致の場合には不整合と判定する。
例えば、上記内部構造情報には、1以上の構造体メンバ名が含まれている。そして、上記派生データ型整合性検査部は、例えば、上記名称が同一である派生データ型同士でその上記構造体メンバ名が全て一致する場合、整合すると判定する。あるいは、派生データ型整合性検査部は、例えば、上記名称が同一である派生データ型同士でその上記構造体メンバ名が全て一致し且つ該各構造体メンバ名の要素データ型も全て一致する場合に、整合すると判定する。
また、例えば、上記内部構造情報には、配列に係わる開始、終了情報が含まれている。そして、上記派生データ型整合性検査部は、名称が同一である派生データ型同士でその上記開始、終了情報が一致する場合、あるいは更に上記配列に係わる要素データ型も一致する場合に、整合すると判定する。
あるいは、上記派生データ型整合性検査部が不整合と判定した派生データ型の内部構造情報を、所定のルールに従って変換する内部構造変換部を更に有する構成であってもよい。そして、上記派生データ型整合性検査部は、更に、該変換後の内部構造情報を用いて上記整合性の判定を行うものであってもよい。
また、例えば、上記内部構造変換部による上所定のルールに従った変換は、上記内部構造情報に複数の構造体メンバ名が含まれる場合には、該構造体メンバ名の順番を所定のルールに従って並び替えることである。これは、例えば上記一例のように、五十音順やアルファベット順等に、並び替えるものであるが、この例に限らない。
また、例えば、上記内部構造変換部による上所定のルールに従った変換は、上記内部構造情報に配列の開始、終了が含まれる場合には、開始の値を所定値に揃えることであるが、この例に限らない。
あるいは、上記派生データ型整合性検査部によって不整合と判定された派生データ型に関して、その上記名称と、その上記内部構造情報の一部または全部を記録する記録制御部を、更に有するものであってもよい。
あるいは、例えば、上記記録制御部によって記録された情報に基づいて、上記不整合と判定された派生データ型に関する所定情報の表示を行う表示制御部を、更に有するものであってもよい。
また、例えば、上記表示制御部で表示される上記所定情報は、上記名称が同一である派生データ型に関して、不一致であった構造体メンバ名または配列に関する情報である。
また、例えば、上記記録制御部は、更に、上記不整合と判定された派生データ型に関する記録に関連付けて、該派生データ型が割付けられている共有データに関する所定情報を、その上記定義情報に基づいて記録するものであってもよい。
また、例えば、上記表示制御部は、更に、上記派生データ型が割付けられている共有データに関する所定情報も表示するようにしてもよい。
また、例えば、上記所定情報には、その共有データを利用する上記プログラミング装置を示す識別情報が含まれていてもよい。
あるいは、上述した共有データ定義支援システムにおいて、上記支援装置は、更に、例えば下記の不図示の各構成を有するものであっても構わない。
・任意のときに、他の支援装置から、その支援装置における上記共有データ定義記憶部に記憶されている共有データ定義情報を取得する他装置情報取得部;
・この他装置情報取得部で取得した上記他の支援装置の共有データ定義情報と、自装置で記憶している上記共有データ定義情報との整合性を検査する整合性検査部;
また、この整合性検査部は、例えば、上記整合性の検査の際に、上記派生データ型整合性検査部による判定結果あるいは上記派生データ型割付け変数検査部による判別結果を、用いるものであっても構わない。
また、上記整合性検査部は、例えば、上記自装置で記憶している共有データ定義情報が、上記他の支援装置の共有データ定義情報と一致するか否かを判定して、不一致の場合には不整合と判定する。これは、例えば、名称が同一である共有データ同士のデータ型が不一致の場合には、不整合と判定するものであるが、この例に限らない。
また、上記整合性検査部は、例えば、上記共有データのデータ型が、上記不整合と判定された派生データ型である場合には、データ型の名称が一致する場合でもデータ型が不一致と判定する。
1 コントローラ装置
2 プログラミング装置
3 共有データ定義支援装置
11 システム構成管理部
12 共有データ定義部
13 共有データ定義管理テーブル記憶部
14 共有データ変数宣言テーブル生成部
15 共有データ変数宣言テーブル記憶部
16 共有データ変数宣言テーブル転送部
17 共有データ定義管理テーブル転送部
18 共有データ整合性検査部
19 共有データ整合性検査結果表示部
30 共有データ定義管理テーブル
31 共有データ変数名
32 データ型
33 アドレス
34 書込み局(ライト局)
35 参照局(リード局)
40 共有データ変数宣言テーブル
41 共有データ変数名
42 データ型
43 アドレス
51 派生データ型定義管理テーブル転送部
52 派生データ型定義管理テーブル記憶部
53 派生データ型整合性検査部
54 派生データ型内部構造変換部
55 派生データ型割付け変数検査部
56 派生データ型検査結果表示部
60 派生データ型定義管理テーブル
61 派生データ型名
62 配列/構造体
63 取得局
64 要素データ型
65 開始Index
66 終了Index
67 構造体メンバ名

Claims (20)

  1. 各々がネットワークに接続されると共に1以上の共有データを保持し得る複数のコントローラと、該各コントローラに対応して設けられ、そのコントローラの制御プログラムを前記共有データも用いて任意に作成させるプログラミング装置とを有するシステムであって、
    前記各プログラミング装置に対応して支援装置が設けられ、
    前記各支援装置は、
    他の前記各プログラミング装置もしくは他の前記支援装置から名称と内部構造情報とを含む派生データ型の定義情報を取得する派生データ型定義転送手段と、
    取得した前記派生データ型の定義情報を記憶する派生データ型定義管理テーブル記憶手段と、
    前記派生データ型の定義情報に基づいて、前記名称が同一である派生データ型同士の前記内部構造情報の整合性を判定する派生データ型整合性検査手段
    を有することを特徴とする共有データ定義支援システム。
  2. 前記共有データの定義情報を記憶する共有データ定義記憶手段と、
    前記派生データ型整合性検査手段によって不整合と判定された派生データ型が、そのデータ型として割付けられている前記共有データを、前記共有データ定義記憶手段から判別する派生データ型割付け変数検査手段と、
    を更に有することを特徴とする請求項1記載の共有データ定義支援システム。
  3. 前記派生データ型整合性検査手段は、前記名称が同一である派生データ型の前記内部構造情報同士を比較して、該内部構造情報が不一致の場合には不整合と判定することを特徴とする請求項1または2記載の共有データ定義支援システム。
  4. 前記内部構造情報には、1以上の構造体メンバ名が含まれており、
    前記派生データ型整合性検査手段は、前記名称が同一である派生データ型同士でその前記構造体メンバ名が全て一致する場合、あるいは前記名称が同一である派生データ型同士でその前記構造体メンバ名が全て一致し且つ該各構造体メンバ名の要素データ型も全て一致する場合に、整合すると判定することを特徴とする請求項3記載の共有データ定義支援システム。
  5. 前記内部構造情報には、配列に係わる開始、終了情報が含まれており、
    前記派生データ型整合性検査手段は、前記名称が同一である派生データ型同士でその前記開始、終了情報が一致する場合、あるいは更に前記配列に係わる要素データ型も一致する場合に、整合すると判定することを特徴とする請求項3または4記載の共有データ定義支援システム。
  6. 前記派生データ型整合性検査手段が不整合と判定した派生データ型の内部構造情報を、所定のルールに従って変換する内部構造変換手段を更に有し、
    前記派生データ型整合性検査手段は、更に、該変換後の内部構造情報を用いて前記整合性の判定を行うことを特徴とする請求項3〜5の何れかに記載の共有データ定義支援システム。
  7. 前記内部構造変換手段による前記所定のルールに従った変換は、前記内部構造情報に複数の構造体メンバ名が含まれる場合には、該構造体メンバ名の順番を所定のルールに従って並び替えることであることを特徴とする請求項記載の共有データ定義支援システム。
  8. 前記内部構造変換手段による前記所定のルールに従った変換は、前記内部構造情報に配列の開始、終了が含まれる場合には、開始の値を所定値に揃えることであることを特徴とする請求項記載の共有データ定義支援システム。
  9. 前記派生データ型整合性検査手段によって不整合と判定された派生データ型に関して、その前記名称と、その前記内部構造情報の一部または全部を記録する記録手段を更に有することを特徴とする請求項3〜8の何れかに記載の共有データ定義支援システム。
  10. 前記記録手段によって記録された情報に基づいて、前記不整合と判定された派生データ型に関する所定情報の表示を行う表示手段を更に有することを特徴とする請求項9記載の共有データ定義支援システム。
  11. 前記表示手段で表示される前記所定情報は、前記名称が同一である派生データ型に関して、不一致であった構造体メンバ名または配列に関する情報であることを特徴とする請求項10記載の共有データ定義支援システム。
  12. 前記記録手段は、更に、前記不整合と判定された派生データ型に関する記録に関連付けて、該派生データ型が割付けられている共有データに関する所定情報を、その前記定義情報に基づいて記録することを特徴とする請求項9または10記載の共有データ定義支援システム。
  13. 前記表示手段は、更に、前記派生データ型が割付けられている共有データに関する所定情報も表示することを特徴とする請求項11記載の共有データ定義支援システム。
  14. 前記所定情報には、その共有データを利用する前記プログラミング装置を示す識別情報が含まれることを特徴とする請求項13記載の共有データ定義支援システム。
  15. 任意のときに、他の前記支援装置から、その支援装置における前記共有データ定義記憶手段に記憶されている共有データ定義情報を取得する他装置情報取得手段と、
    該他装置情報取得手段で取得した前記他の支援装置の共有データ定義情報と、自装置で記憶している前記共有データ定義情報との整合性を検査する整合性検査手段とを更に有し、
    該整合性検査手段は、前記整合性の検査の際に、前記派生データ型整合性検査手段による判定結果あるいは前記派生データ型割付け変数検査手段による判別結果を、用いることを特徴とする請求項2記載の共有データ定義支援システム。
  16. 前記整合性検査手段は、前記自装置で記憶している共有データ定義情報が、前記他の支援装置の共有データ定義情報と一致するか否かを判定して、不一致の場合には不整合と判定するものであって、名称が同一である共有データ同士のデータ型が不一致の場合には不整合と判定するものであることを特徴とする請求項15記載の共有データ定義支援システム。
  17. 前記整合性検査手段は、前記共有データのデータ型が、前記不整合と判定された派生データ型である場合には、データ型の名称が一致する場合でもデータ型が不一致と判定することを特徴とする請求項15記載の共有データ定義支援システム。
  18. 各々がネットワークに接続されると共に1以上の共有データを保持し得る複数のコントローラと、該各コントローラに対応して設けられ、そのコントローラの制御プログラムを前記共有データも用いて任意に作成させるプログラミング装置とを有するシステムにおける前記各プログラミング装置に対応して設けられる各支援装置であって、
    他の前記各プログラミング装置もしくは他の前記支援装置から名称と内部構造情報とを含む派生データ型の定義情報を取得する派生データ型定義転送手段と、
    取得した前記派生データ型の定義情報を記憶する派生データ型定義管理テーブル記憶手段と、
    前記派生データ型の定義情報に基づいて、前記名称が同一である派生データ型同士の前記内部構造情報の整合性を判定する派生データ型整合性検査手段
    を有することを特徴とする支援装置。
  19. 前記共有データの定義情報を記憶する共有データ定義記憶手段と、
    前記派生データ型整合性検査手段によって不整合と判定された派生データ型が、そのデータ型として割付けられている前記共有データを、前記共有データ定義記憶手段から判別する派生データ型割付け変数検査手段と、
    を更に有することを特徴とする請求項18記載の支援装置。
  20. 各々がネットワークに接続されると共に1以上の共有データを保持し得る複数のコントローラと、該各コントローラに対応して設けられ、そのコントローラの制御プログラムを前記共有データも用いて任意に作成させるプログラミング装置とを有するシステムにおいて、前記各プログラミング装置に対応して設けられる各支援装置のコンピュータを、
    他の前記各プログラミング装置もしくは他の前記支援装置から名称と内部構造情報とを含む派生データ型の定義情報を取得する派生データ型定義転送手段と、
    取得した前記派生データ型の定義情報を記憶する派生データ型定義管理テーブル記憶手段と、
    前記各派生データ型の定義情報に基づいて、前記名称が同一である派生データ型同士の前記内部構造情報の整合性を判定する派生データ型整合性検査手段、
    として機能させる為のプログラム。
JP2017243331A 2013-05-09 2017-12-20 共有データ定義支援システム、その支援装置、プログラム Active JP6504237B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013099746 2013-05-09
JP2013099746 2013-05-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014081472A Division JP6281389B2 (ja) 2013-05-09 2014-04-10 共有データ定義支援システム、その支援装置、プログラム

Publications (2)

Publication Number Publication Date
JP2018041514A JP2018041514A (ja) 2018-03-15
JP6504237B2 true JP6504237B2 (ja) 2019-04-24

Family

ID=52135898

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014081472A Active JP6281389B2 (ja) 2013-05-09 2014-04-10 共有データ定義支援システム、その支援装置、プログラム
JP2017243331A Active JP6504237B2 (ja) 2013-05-09 2017-12-20 共有データ定義支援システム、その支援装置、プログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014081472A Active JP6281389B2 (ja) 2013-05-09 2014-04-10 共有データ定義支援システム、その支援装置、プログラム

Country Status (1)

Country Link
JP (2) JP6281389B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110678848B (zh) * 2017-03-22 2023-09-19 西门子股份公司 跨装置的通用数据访问
JP6566151B2 (ja) * 2017-03-30 2019-08-28 三菱電機株式会社 システム設計支援装置およびシステム設計支援方法
US20220343901A1 (en) * 2021-04-23 2022-10-27 Kore.Ai, Inc. Systems and methods of implementing platforms for bot interfaces within an intelligent development platform

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3297844B2 (ja) * 1998-01-28 2002-07-02 株式会社デジタル ダウンロードシステム及びダウンロードプログラムを記録したコンピュータ読み取り可能な記録媒体
US7024463B1 (en) * 1999-10-15 2006-04-04 Omron Corporation Network system, control method, control apparatus, and multiprocessor
US7275236B1 (en) * 2000-11-24 2007-09-25 Mitsubishi Denki Kabushiki Kaisha Method for programming a multiple device control system using object sharing
JP3751536B2 (ja) * 2001-04-02 2006-03-01 株式会社東芝 データ伝送装置
JP3894421B2 (ja) * 2001-07-02 2007-03-22 三菱電機株式会社 ネットワークシステム
JP2003271209A (ja) * 2002-03-15 2003-09-26 Omron Corp 制御装置並びに拡張機器及びプログラミングツール
JP2008276526A (ja) * 2007-04-27 2008-11-13 Omron Corp 産業用機器のプログラム開発支援装置
JP2012118715A (ja) * 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム

Also Published As

Publication number Publication date
JP2014238820A (ja) 2014-12-18
JP6281389B2 (ja) 2018-02-21
JP2018041514A (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
JP6504237B2 (ja) 共有データ定義支援システム、その支援装置、プログラム
US10552296B2 (en) Human-readable, language-independent stack trace summary generation
JP5701458B1 (ja) 作画装置および制御システム
US20150121147A1 (en) Methods, apparatuses and computer program products for bulk assigning tests for execution of applications
CN111506358A (zh) 更新容器配置的方法及装置
US20180196708A1 (en) System management apparatus and system management method
CN114490768A (zh) 结合rpa及ai的任务复核方法及其装置
JP4920978B2 (ja) 設計情報管理方法およびシステム
JP5967225B2 (ja) データ更新漏れ検査装置、データ更新漏れ検査方法、データ更新漏れ検査プログラム
JP6299095B2 (ja) 共有データ定義支援システム、そのマスタ装置、ローカル端末、プログラム
CN106021087B (zh) 代码检测方法及装置
CN112685277B (zh) 警告信息检查方法、装置、电子设备和可读存储介质
CN115167896A (zh) 一种更新软件版本的方法、装置、存储介质及电子设备
CN112287027B (zh) 数据库同步方法、装置、设备及存储介质
JP2010072876A (ja) ルール作成プログラム、ルール作成方法及びルール作成装置
KR20160049568A (ko) 소스코드 비교 및 관리 시스템 및 방법
CN113780950A (zh) 数据处理方法、装置、服务器和可读存储介质
US9342512B1 (en) System and method for repairing data synchronization links
TWI594095B (zh) Programmable display, program and access error notification method
AU2010362097B2 (en) Method and system for propagation of amendment made to a master to copies
JP6984120B2 (ja) ロードコンペア装置、ロードコンペアプログラムおよびロードコンペア方法
CN113297056A (zh) 测试数据设置方法、测试数据应用方法、装置及相关设备
CN114694813B (zh) 临床试验数据处理方法、装置、设备及介质
JPH07306795A (ja) 二重系計算機のデータベース等価処理装置
JP6713118B1 (ja) Pdi規約の準拠性分析プログラム、pdi規約の準拠性分析装置及びpdi規約の準拠性分析方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180913

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190311

R150 Certificate of patent or registration of utility model

Ref document number: 6504237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250