(57)【要約】      （修正有）【課題】いずれのシステムに対しても有向グラフをモデリングの共通手段として、システムの統合を容易にする。【解決手段】グラフィカルユーザインタフェースのディスプレイ上でノードを示すアイコンを生成し表示する。ディスプレイ上で、入力手段からの操作に基づいて、アイコンの属性を与えると同時に該アイコンを指定された位置に配置する。ディスプレイ上で、アイコンを有向アークで接続すると同時に、該有向アークの属性および、該有向アークとアイコンに対応するノードとの関係を確定する。ノードおよび有向アークのインデックス、ノードおよび有向アークの属性、有向アークとノードとの間の確定された関係をソースプログラムデータとして記憶する。ソースプログラムデータから実行可能な制御プログラムを生成する。【選択図】図１
2004265393.tif 000002
【特許請求の範囲】
【請求項１】
離散事象動的システム、論理動的システムおよび数値動的システムの少なくとも１つの動作を表現したグラフであって、前記各システムに関する演算機能を表現したノードと、前記ノード間を接続し、かつ属性として固有の関数をもつ有向アークとで構成されるグラフを使用して、目的とする制御プログラムを組み立てる制御プログラム組み立てシステムであって、
（１）グラフィカルユーザインタフェースのディスプレイ上で前記ノードを示すアイコンを生成し表示する手段と、
（２）前記ディスプレイ上で、入力手段からの操作に基づいて、前記アイコンの属性を与えると同時に該アイコンを指定された位置に配置する手段と、
（３）前記ディスプレイ上で、前記アイコンを有向アークで接続すると同時に、該有向アークの属性および、該有向アークと前記アイコンに対応するノードとの関係を確定する手段と、
（４）前記ノードおよび有向アークのインデックス、前記ノードおよび有向アークの属性、前記有向アークと前記ノードとの間の確定された関係をソースプログラムデータとして記憶する手段と、
（５）前記ソースプログラムデータから実行可能な制御プログラムを生成する手段と、
（６）前記実行可能な制御プログラムを実行する手段と
を備えたことを特徴とする制御プログラム組立てシステム。
【請求項２】
離散事象動的システム、論理動的システムおよび数値動的システムの少なくとも１つの動作を表現したグラフであって、前記各システムに関する演算機能を表現したノードと、前記ノード間を接続し、かつ属性として固有の関数をもつ有向アークとで構成されるグラフを使用して、目的とする制御プログラムを組み立てる制御プログラム組み立てプログラムであって、
（１）グラフィカルユーザインタフェースのディスプレイ上で前記ノードを示すアイコンを生成し表示するステップと、
（２）前記ディスプレイ上で、入力手段からの操作に基づいて、前記アイコンの属性を与えると同時に該アイコンを指定された位置に配置するステップと、
（３）前記ディスプレイ上で、前記アイコンを有向アークで接続すると同時に、該有向アークの属性および、該有向アークと前記アイコンに対応するノードとの関係を確定するステップと、
（４）前記ノードおよび有向アークのインデックス、前記ノードおよび有向アークの属性、前記有向アークと前記ノードとの間の確定された関係をソースプログラムデータとして記憶するステップと、
（５）前記ソースプログラムデータから実行可能な制御プログラムを生成するステップと、
（６）前記実行可能な制御プログラムを実行するステップと
を備えたことを特徴とする制御プログラム組立てプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、目的とする制御プログラムを、離散事象動的システム、論理動的システム及び数値動的システムの少なくとも１つの動作で表現されるグラフを使用して組立てるようにした制御プログラム組立てシステム及びプログラムに関する。
【背景技術】
【０００２】
各種メカトロニックスシステムの自動化にはシーケンス制御を代表とする論理制御は不可欠のものである。このためのロジックコントローラとして、従来より市販の汎用制御装置（プログラマブルロジックコントローラ、以下「ＰＬＣ 」と呼ぶ）が多く用いられている。その一方、最近では絶えず変化するユーザ側の要求（例えば、物流管理対応、ディジタル対応、分散通信対応、計測データ処理および表示、など）に対して従来のハードウエアに拘束されず、素早く対応するため、パソコンやマイクロコンピュータに基づくソフトウエアＰＬＣ、あるいはソフトウエアサーボコントローラへの移行が確実視されている。
【０００３】
その一方で、システム設計から制御ソフト作成までの作業が複雑かつ大規模になる傾向にあり、しかも論理、数値、離散事象などが入り交ざった混成動的システムモデルに基づく計測制御アルゴリズム実現のために従来型のプログラミング技法に拘束されない新しいプログラミング手法が望まれるようになってきている（非特許文献１ ，２）。この流れの中では、単に仕様表現上の問題だけでなく、これまで積み上げてきた経験や成果を定石として再利用しながら設計を進めるというボトムアップ的な部分と、システム全体を大局的に把握して概念設計から詳細設計へ進めるというトップダウン的な部分の両面が必要とされる。いわゆるオブジェクト指向設計（ＯＯＤ ）は、これを意識したものである。
【０００４】
【非特許文献１】関口  隆編；新しいプログラマブルコントローラのプログラミング、コロナ社1999
【非特許文献２】宮沢以鋼；IECの技術動向−SFC 及びその周辺技術−、計測自動制御学会 、システム・情報部門学術講演会2002 講演論文集、pp.125- 130 (2002.11)
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このような新しいプログラミング手法を確立するためには、離散事象制御、論理制御、及び数値制御という、それぞれ固有の手法をつなぎ目なしに統合しなければならず、そこには新しい概念とモデリング方法とプログラミング方法を必要とする。そのためには、離散事象動的システムについては二種類のノードをもつ有向グラフ（二部有向グラフ）であるペトリネット、論理動的システムおよび数値動的システムは一種類のノードをもつ有向グラフをモデリング方法として採用することが有効である。
【０００６】
本発明の第一の目的は、前記いずれのシステムに対しても有向グラフをモデリングの共通手段として、システムの統合を容易にすることにある。
本発明の第二の目的は、タスクの並列同時進行が多く観察されるシステム上位のいわゆる人造システム制御に対しては、ペトリネット理論を基礎にした有向グラフによる離散事象システムモデルをトップダウン的に構築し、一方、自然システムを制御対象とし、信号伝達を中心とすることが多い論理制御や数値制御に関しては通常の有向グラフによる論理動的システムモデル、数値動的システムモデルをボトムアップ的に構築するという役割分担を行うことにある。
【課題を解決するための手段】
【０００７】
本発明に係る制御プログラム組立てシステムは、離散事象動的システム、論理動的システムおよび数値動的システムの少なくとも１つの動作を表現したグラフであって、前記各システムに関する演算機能を表現したノードと、前記ノード間を接続し、かつ属性として固有の関数をもつ有向アークとで構成されるグラフを使用して、目的とする制御プログラムを組み立てる制御プログラム組み立てシステムであって、
（１）グラフィカルユーザインタフェースのディスプレイ上で前記ノードを示すアイコンを生成し表示する手段と、
（２）前記ディスプレイ上で、入力手段からの操作に基づいて、前記アイコンの属性を与えると同時に該アイコンを指定された位置に配置する手段と、
（３）前記ディスプレイ上で、前記アイコンを有向アークで接続すると同時に、該有向アークの属性および、該有向アークと前記アイコンに対応するノードとの関係を確定する手段と、
（４）前記ノードおよび有向アークのインデックス、前記ノードおよび有向アークの属性、前記有向アークと前記ノードとの間の確定された関係をソースプログラムデータとして記憶する手段と、
（５）前記ソースプログラムデータから実行可能な制御プログラムを生成する手段と、
（６）前記実行可能な制御プログラムを実行する手段とを備えたことを特徴とする。
【０００８】
また、本発明に係る制御プログラム組立プログラムは、離散事象動的システム、論理動的システムおよび数値動的システムの少なくとも１つの動作を表現したグラフであって、前記各システムに関する演算機能を表現したノードと、前記ノード間を接続し、かつ属性として固有の関数をもつ有向アークとで構成されるグラフを使用して、目的とする制御プログラムを組み立てる制御プログラム組み立てプログラムであって、
（１）グラフィカルユーザインタフェースのディスプレイ上で前記ノードを示すアイコンを生成し表示するステップと、
（２）前記ディスプレイ上で、入力手段からの操作に基づいて、前記アイコンの属性を与えると同時に該アイコンを指定された位置に配置するステップと、
（３）前記ディスプレイ上で、前記アイコンを有向アークで接続すると同時に、該有向アークの属性および、該有向アークと前記アイコンに対応するノードとの関係を確定するステップと、
（４）前記ノードおよび有向アークのインデックス、前記ノードおよび有向アークの属性、前記有向アークと前記ノードとの間の確定された関係をソースプログラムデータとして記憶するステップと、
（５）前記ソースプログラムデータから実行可能な制御プログラムを生成するステップと、
（６）前記実行可能な制御プログラムを実行するステップとを備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、コンピュータの演算機能を前記グラフのノードの機能として与え、属性としての関数は主としてコンピュータがもつ組み込み関数を利用するもので、例えば、必要に応じて、新しい関数をグラフの合成で容易に構成することが可能である。また、作成された各種の機能に関するデータをモジュール化しライブラリに保存して再利用することができる。その際、詳細なドキュメントを必要とせず、グラフ表現された機能ブロックをディスプレイ上に作図再現することでその内容の解読と、動作の確認が容易にできる。このことにより設計情報の共有化と設計のトレーサビリティ向上を図ることができる。また汎用性の高い有効な機能ブロックの公開や、商品価値を持つ高レベル機能ブロックの提供など、設計情報の公正なオープン化、流通化が図られる。同時にカプセル化による内容の隠蔽を通して技術情報の秘守を保つことが可能となる。
【発明を実施するための最良の形態】
【００１０】
離散事象動的システムの動作で表現されるコントロール動作の制御プログラム組立てシステムの場合、例えば上記システムの構造を拡張マークフローグラフ（Extended Mark Flow Graph. 以下、ＥＭＦＧ）で表現することになるが、該ＥＭＦＧは、有向アークで交互に接続できるボックスとトランジションの２種類のノード、ボックス／トランジション間を接続する有向アークのうち、ボックスからトランジションへの有向アークを入力フローアーク、トランジションからボックスへのアークを出力フローアークとし、トランジションの上流および下流に接続可能なボックス数を任意とし、ボックスの上流および下流に接続可能なトランジション数を任意とし、ボックスの属性としてトークン単位で保有可能な上限値（以下，ボックス容量）を与えて該ボックスに非負整数値記憶機能を持たせ、またトランジションは属性として遅延時間を持ち，外部からの制御信号によって該遅延時間経過後にイベントを発生（以下，発火）して，該トランジションからみて上流側のすべてのボックスについて各ボックスが保有するトークンを前記入力フローアークを通して残量がゼロを限度に流出させ，また該トランジションからみて下流側のすべてのボックスについて各ボックスへ該ボックスの容量を限度に前記出力フローアークを通して流入させる機能を与え，また，入力フローアークおよび出力フローアークの属性として，１回の前記トランジションの発火に対して流すことができるトークン数に相当するアークの重みをもたせ，上記限度が満たされるときのみ該トランジションの発火できるという規則を有するものであって，上記ボックスについては属性としてのボックス容量が示されたボックスアイコン（ボックス容量１の場合は無記入）で，上記トランジションは属性としての遅延時間が示されたトランジションアイコン（遅延時間が１プログラムサイクルの場合は無記入），上記入力フローアークもしくは出力フローアークはそれぞれ重みが示されたフローアークアイコン（重み１の場合は無記入）とし，グラフィカルユーザインタフェース（ＧＵＩ）のディスプレイ上、マウスなどを用いて要求する制御機能に対して前記アイコンを相互に接続することによって離散事象動的システムでモデル化される制御プログラムを作成することができる。
【００１１】
論理動的システムの動作で表現されるコントロール動作のプログラム組立てシステムの場合、上記システムの構造を論理フローグラフ（Logic Flow Graph：以下，ＬＦＧ）で表現し，該論理フローグラフは，論理積ノード（以下，ＡＮＤノード）、論理和ノード（以下，ＯＲノード）および排他論理和ノード（以下、ＸＯＲノード）の３種類の属性を持つノード，前記ＡＮＤノード，前記ＯＲノード、および前記ＸＯＲノード間の接続を可能とする正論理アーク、負論理アークおよび、単位遅延アークの３種類のアークからなり，前記ＡＮＤノードは演算開始時に該ＡＮＤ ノードが保有する基底ブール値“True”と他ノードからアークを介して入力される論理値との間でＡＮＤ演算を行い、その結果を自身のブール値とする機能をもち，また前記ＯＲノードは演算開始時に該ＯＲノードが保有する基底ブール値“False”と他ノードからアークを介して入力される論理値との間でＯＲ演算を行いその結果を自身のブール値とする機能をもち，また前記ＸＯＲノードは演算開始時に該ＸＯＲノードが保有する基底ブール値“False”と他ノードからアークを介して入力される論理値との間でＸＯＲ 演算を行いその結果を自身のブール値とする機能をもち，前記ＡＮＤノード、ＯＲノードおよびＸＯＲノードを入力アークを持たないソースノードとした場合は外部から与えられるブール値を保持できる機能をもち、前記正論理アークはそれが発するノードのブール値をそれが到達するノードへ伝達する機能を持ち，前記負論理アークはそれが発するノードのブール値の否定値をそれが到達するノードへ伝達する機能を持つ。前記単位遅延アークはそれが発するノードのブール値を固有の一定時間遅延させてそれが到達するノードへ伝達する機能を持つ。この場合、該ノードは状態ノードとなる。上記ＡＮＤノード，ＯＲノード、ＸＯＲノードに対してそれぞれＡＮＤアイコン，ＯＲアイコン，ＸＯＲアイコン，上記正論理アーク，負論理アーク，単位遅延アークについてはそれぞれ正論理の属性をもつ正論理アイコン，負論理の属性をもつ負論理アイコンおよび遅延を属性としてもつ遅延アイコンで表し，グラフィカルユーザインタフェース（ＧＵＩ）のディスプレイ上，マウスなどを用いて要求する制御機能に対して前記アイコンを相互に接続することによって論理動的システムでモデル化される制御プログラムを作成することができる。
【００１２】
数値動的システムの動作で表現されるコントロール動作のプログラム組立てシステムの場合、上記システムの構造を数値フローグラフ（Numeric Flow Graph。以下、ＮＦＧ）で表現し，該数値フローグラフは，加算ノード，前記加算ノード間を接続し属性として数値と正符号をもつ正符号アーク、属性として数値と負符号をもつ負符号アーク，属性として単位時間の遅延をもつ単位遅延アークの３種類の線形アーク、さらに自乗、平方根などの一変数非線形関数を属性としてもつ非線形アークと、乗算、除算などの二変数非線形関数を属性として持つアークからなり，前記加算ノードは演算開始時に該ノードが保有する基底数値０ と他ノードからアークを介して入力される数値との間でそれぞれ加算を行った後，その結果を自身の数値とする機能をもち，また、前記単位遅延アークを入力アークとしてもつ前記加算ノードは状態ノードとしてその初期値が与えられる機能をもち，前記正符号アークはそれが発するノードの数値に該正符号アークの属性である数値を乗じた値をそれが到達するノードへ伝達する機能を持ち，前記負符号アークはそれが発するノードの数値に該負符号アークの属性である数値を乗じた値にもう１つの属性である負符号を乗じた値をそれが到達するノードへ伝達する機能を持つ。前記単位遅延アークはそれが発するノードの数値を単位時間遅延させてそれが到達するノードへ伝達する機能を持つ。その場合、該ノードは状態ノードとなる。一変数非線形関数を属性としてもつ非線形アークはそれが発するノードの数値に対する該一変数非線形関数値をそれが到達するノードへ伝達する機能を持ち、二変数非線形関数を属性として持つアークはそれが発するノードの数値を第一変数、該アークに対応して指定された任意のノードの数値を第二変数として得られる該二変数非線形関数値をそれが到達するノードへ伝達する機能を持つ。上記加算ノードに対してそれぞれ加算アイコン，上記正符号アーク，負符号アーク，単位遅延アークについてはそれぞれ正符号の属性をもつ正符号アイコン，負符号の属性をもつ負符号アイコンおよび単位遅延時間を属性としてもつ単位遅延アイコンで表し，さらに一変数非線形関数を属性を持つ非線形関数アークはそれぞれの一変数非線形関数を意味する文字標識もしくは図標識を付した一変数非線形関数アイコン、二変数非線形関数を属性として持つ非線形関数アークはそれぞれの二変数非線形関数を意味する文字標識もしくは図標識を付した二変数非線形関数アイコンで表し、グラフィカルユーザインタフェース（ＧＵＩ）のディスプレイ上，マウスなどを用いて要求する制御機能に対して前記アイコンを相互に接続することによって数値動的システムでモデル化される制御プログラムを作成することができる。
【００１３】
さらに、論理動的システム、数値動的システムおよび離散事象動的システムの固有の各動作を結合したコントロール動作のプログラム組立てシステムの場合、これらを結合するための接続アークを備えている。すなわち、ＬＦＧの論理ノードからＥＭＦＧの一要素であるトランジションへ接続される発火許可アークおよび発火禁止アークは、発火可能となったトランジションの発火制御に使われる。発火許可アークはその出発ノードの論理値が“True”となったとき、かつそのときだけ該発火許可アークが到達する発火可能なトランジションを発火させる機能をもつ。また、発火禁止アークはその出発ノードの論理値が“False”となったとき、かつそのときだけ該発火禁止アークが到達する発火可能なトランジションを発火させる機能をもつ。
【００１４】
ＥＭＦＧの要素であるボックスからＬＦＧのノードへ接続される満状況アークおよび空状況アークは、該ボックス内のトークンが該ボックス容量に等しい満杯状況かまったく存在しない空状況かを検知するものである。すなわち、満状況アークは前記ボックス内のトークン数が該ボックスの容量に等しくなったとき、かつそのときのみ到達ノードへ論理値 “True”を伝達し、空状況アークは前記ボックス内のトークン数が零のとき、かつそのときのみ到達ノードへ論理値 “True”を伝達する機能をもつ。さらに、ＥＭＦＧの要素であるボックスからＮＦＧの数値ノードへ接続されるトークン数アークは属性として定係数をもち、該ボックス内のトークン数に前記定係数倍した数値を該数値ノードへ伝達する機能をもつ。
【００１５】
ＮＦＧの数値ノードからＬＦＧの論理ノードへ接続される零比較アークとして、前記数値ノードの数値が零より大（ＧＴと略記し、後述のアーク名に対応させる。以下、同様）、零より大もしくは等しい（ＧＥと略記）、零と等しい（ＥＧと略記）、零より小もしくは等しい（ＬＥ）、零より小（ＬＴ）のうちの一条件に対応する５種類のアーク、すなわち、ＧＴアーク、ＧＥアーク、ＥＱアーク、ＬＥアークおよびＬＴアークを備えており、該各アークはその出発ノードの数値と該アークに対応する述語論理条件によって決まる論理値を到達ノードへ伝達する機能をもつ。
ＬＦＧの論理ノードからＮＦＧの数値ノードへ接続されるビット重みアークは、前記論理ノードの論理値が“True”に対して２のｎ乗（ｎは整数）を、また論理値が“False”に対して零として前記数値ノードへ伝達する機能をもつ。なお、前記整数値ｎは任意に指定できるようにする。
【００１６】
上記発火許可アーク、発火禁止アークに対してそれぞれ発火許可アイコン、発火禁止アイコンを、満状況アーク、空状況アークおよびトークン数アークに対してそれぞれ満状況アイコン、空状況アイコン、トークン数アイコンを、また、零比較アーク群のＧＴアーク、ＧＥアーク、ＥＱアーク、ＬＥアーク、ＬＴアークに対してはそれぞれＧＴアイコン、ＧＥアイコン、ＥＱアイコン、ＬＥアイコン、ＬＴアイコンを、さらにビット重みアークに対しては、重みが可変のビット重みアイコンで表し，グラフィカルユーザインタフェース（ＧＵＩ）のディスプレイ上，マウスなどを用いて要求する制御機能に対して前記アイコンを相互に接続することによって離散動的システム、論理動的システムおよび数値動的システムでモデル化される制御プログラムを作成することができる。
【００１７】
以下、図面を参照しながら、本発明の実施形態に係る制御プログラム組立てシステムについて説明する。
図１は、本発明の一実施形態に係る制御プログラム組立てシステムの構成を示すブロック図である。
このシステムは、処理の中心をなすシステム本体１と、このシステム本体１とオペレータとの間で必要な情報の入出力を行うためのキーボード２、マウス３などの入力手段と、ディスプレイ４などの出力手段と、プログラム実行時に外部システムと交信する通信機能部５とを備えて構成されている。
【００１８】
システム本体１は、組立てエディタ６、インデックス処理部８及び実行エンジン１０を備えている。組立てエディタ６は、ディスプレイ４上で記述されたソースプログラムから得られるソースプログラムデータ、もしくはソースプログラムデータライブラリ１１にソースファイルとして一時的に保存されたソースプログラムデータ、アプリケーションデータライブラリ１２にアプリケーションファイルとして保存されたアプリケーションプログラムデータ、さらにソフトウエア部品ライブラリ１３に部品ファイルとして保存されたソフトウエア部品プログラムデータを活用しながら、グラフィカルプログラミングによってソースプログラム７を組み立てるためのエディタである。インデックス処理部８は、組み立てられたプログラムのグラフ構造を解析してグラフ要素のインデックスに処理を行い実行可能プログラム９を生成するための処理部である。実行エンジン１０は、生成された実行可能プログラム９ 又は実行可能プログラムライブラリ１４に保存された作成済みの実行可能プログラムの動作検証を行うためのもので、状態の初期化、実行サイクルの指定、連続実行開始指令、実行停止指令、一時休止指令、ステップ実行指令によって実行されるプログラム実行機構である。
【００１９】
このように構成されたプログラミングシステムの基礎概念は、オブジェクト指向、グラフに基づく制御プログラムの組み立てと実行、及びビジュアル化の３つである。すなわち、
（１）オブジェクト指向
このシステムでは、オブジェクト指向に基礎をおいたＧＵＩ （グラフィカルユーザースインタフェース）を持つ。このシステムにおけるプログラムの対象となるコントロールの基礎機能を、コンピュータの演算機能、時限機能、記憶機能とし、これらにそれぞれグラフ要素というオブジェクトとして対応させる。これらのオブジェクトをオブジェクト素子と呼ぶ。
【００２０】
（２）グラフに基づく制御プログラムのグラフ組み立てと実行
このシステムでは、制御プログラムを生成するための基礎構造を、
（ａ）ペトリネットを拡張した拡張マークフローグラフ（ＥＭＦＧ）、
（ｂ）シグナルフローグラフを論理演算に拡張した論理フローグラフ（ＬＦＧ）、
（ｃ）シグナルフローグラフを二変数非線形関数による数値計算に拡張した数値フローグラフ（ＮＦＧ）、
（ｄ）ＥＭＦＧとＬＦＧ、ＥＭＦＧとＮＦＧおよびＬＦＧとＮＦＧとを相互に接続する異種グラフ間接続アーク
で表現し、かつプログラム実行がグラフの性質に従って並列同時進行的に行われる。
（３）ビジュアル化
（ａ）システム構築過程がグラフの有向アークを辿ることからシステムの原理を含めて容易に理解できる。
（ｂ）プログラムを機能ブロックごとにオブジェクト化してアイコンで表現し、システムのマクロな理解が容易となる。
（ｃ）カプセル化されて隠蔽された機能ブロックの内容をカプセルを開く操作により確認、改良ができる。
【００２１】
ＭＦＧ（マークフローグラフ）は、現在、JIS Z8116（1994「自動制御用語−一般」）の中で、ブロック線図、シグナルフローグラフ、ボンドグラフ及びペトリネットと並んでシステムの構造表現方法の一つとして取り入れられている。図２ は、ＭＦＧで使用される要素を図で表したものである。ＭＦＧは、状況を表現するボックス（ａ）と、事象を表現するトランジション（ｂ）と、現在の状況を示すトークン（ｃ）（ボックス内の○マーク）と、上記ボックス及びトランジションを接続して動作やジョブの流れを示す有向アーク（ｄ）〜（ｇ）等の基本要素からなる。図２（ｄ），（ｅ），（ｇ）に示すように、ボックスからトランジションへの有向アークを入力フローアーク、図２（ｆ）に示すように、トランジションからボックスへのアークを出力フローアークと呼ぶ。またトランジションからみて上流側のボックスを前置ボックス、下流側のボックスを後置ボックス、さらにボックスから見て上流側のトランジションを前置トランジション、下流側のトランジションを後置トランジションと呼ぶ。ボックスの上流および下流に接続可能なトランジション数は任意であり、同様にトランジションの上流および下流に接続可能なボックス数も任意である。
【００２２】
本システムにおいては従来の上記ＭＦＧの機能をつぎのように拡張したものを適用する。これをＥＭＦＧ（拡張マークフローグラフ）と呼ぶ。図３はＥＭＦＧの要素を示す図である。従来のＭＦＧのボックスはトークンをたかだか一個しか保有できないが、ＥＭＦＧのボックスは例えば図３（ａ）中の下側の数値１００で示すように、ボックスの属性として保有可能なトークン数の上限値（以下，ボックス容量）を与え、図３（ａ）中の上側の数値０で示すように、該ボックス内のトークン数を記憶できる機能を持たせる。また、同図（ｂ ）に示すように、属性として例えば５ｓなどの遅延時間を持つトランジションを用いる。これを遅延トランジションと呼ぶ。遅延トランジションでは、外部からの論理信号によって該遅延時間経過後にイベントを発生（以下、「発火」と呼ぶ）する。同図（ｃ ）は、入力フローアークもしくは出力フローアークは属性としてそれぞれ固有の重みを持つ多重フローアークである。
【００２３】
ＥＭＦＧでは、トランジションからみて上流側の全ての前置ボックスについて各ボックスが保有するトークンを、該トランジションの発火によって入力フローアークを通して残量がゼロを限度に流出できるという条件がある。同時に該トランジションからみて下流側の全ての後置ボックスについて各ボックスへ該ボックスの容量を限度に出力フローアークを通して流入できるという条件がある。また、入力フローアークおよび出力フローアークは、前記トランジションの１回の発火に対して該アークの属性であるアーク重みだけトークン数を流すことができるという条件がある。ＥＭＦＧは上記３つの条件すべてが満たされるときのみ該トランジションの発火できるという規則を有するものであって，上記，ボックス，トランジションをオブジェクト素子とし，ボックスについては属性としてのボックス容量が示されたボックスアイコン（ボックス容量１の場合は無記入）で，トランジションは属性としての遅延時間が示されたトランジションアイコン（遅延時間が１プログラムサイクルの場合は無記入），上記入力フローアークもしくは出力フローアークはそれぞれ重みが示されたフローアークアイコン（重みが１の場合は無記入）とする。
【００２４】
また、ＥＭＦＧでは、ボックスからみて下流側に複数の後置トランジションが存在してその内の２個以上が同時に発火条件を満たしたとき、これを前記トランジション間の出口競合という。また、ボックスからみて上流側に複数の後置トランジションが存在してその内の２個以上が発火可能となったとき、これを前記トランジション間の入口競合という。前記競合関係にある複数のトランジションについて同時に発火することを禁じ、代わりに該トランジション間の発火競合の調停を行い、そのうちの一個だけを選択してこれを発火させるようにする。
【００２５】
図４は、ＬＦＧの要素と演算ルールを示す図である。
ＬＦＧ（論理フローグラフ）は，同図（ａ）に示す論理和ノード（以下，ＯＲノード）、（ｂ）に示す論理積ノード（以下，ＡＮＤノード）、および（ｃ）に示す排他論理和ノード（以下、ＸＯＲノード）の３ 種類のノード，前記ＡＮＤノード，前記ＯＲノード、および前記ＸＯＲノード間の接続を可能とする正論理アーク、負論理アークおよび単位遅延アークの３種類のアークを備える。
【００２６】
ＡＮＤノードは演算開始時に該ＡＮＤノードが保有する基底ブール値“True” と他ノードからアークを介して入力される論理値との間でＡＮＤ演算を行い、その結果を自身のブール値とする機能を持つ。ＯＲノードは、演算開始時に該ＯＲノードが保有する基底ブール値“False”と他ノードからアークを介して入力される論理値との間でＯＲ演算を行い、その結果を自身のブール値とする機能を持つ。また、ＸＯＲノードは、演算開始時に該ＸＯＲノードが保有する基底ブール値“False”と他ノードからアークを介して入力される論理値との間でＸＯＲ演算を行い、その結果を自身のブール値とする機能を持つ。正論理アークは、それが発するノードのブール値をそれが到達するノードへ伝達する機能を持ち，負論理アークはそれが発するノードのブール値の否定値をそれが到達するノードへ伝達する機能を持つ。単位遅延アークはそれが発するノードのブール値を制御プログラムの１実行サイクルに相当する時間だけ遅延させてそれが到達するノードへ伝達する機能を持つ。この場合、該到達ノードはＬＦＧで表現される論理動的システムの状態ノードとみなされ、演算に先立って初期値が与えられる。また、ソースノードとしての論理ノードには任意の論理を初期入力として与えることができるようにする。
【００２７】
図４（ｄ ）、（ｅ ）、（ｆ ）、（ｇ ）、（ｈ）は、それぞれ論理積演算、論理和演算、否定演算、排他論理和演算および単位遅延操作をそれぞれ示している。なお、これらにおいてソースノードとして論理和ノードが使用されているが、その他の  論理ノードを同様に使用することができる。
【００２８】
図５は、ＮＦＧの要素と演算ルールを示す図である。
ＮＦＧ（数値フローグラフ）は，同図（ａ）に示す加算ノードがあり、これらを相互に接続し，属性として数値と正符号をもつ正符号アーク（ｂ）、属性として数値と負符号をもつ負符号アーク（ｃ）、属性として単位時間の遅延をもつ単位遅延アーク（ｄ）の３種類の線形アークを備えている。また、図６に示すような一変数非線形関数を属性としてもつ非線形アークを備えている。これには同図（ａ）の属性としての自乗機能をもつ自乗アーク、同図（ｂ）の３乗機能をもつ３乗アーク、同図（ｃ）の平方根機能をもつ平方根アーク、同図（ｄ）の絶対値機能をもつ絶対値アーク、同図（ｅ）の数値を正負に対応してそれぞれ１および−１とする二値アーク、同図（ｆ）の数値を−１と＋１で飽和させる飽和アーク、同図（ｇ）の数値をその余弦に変える余弦アーク、同図（ｈ）の数値をその正弦に変える正弦アークを備えている。さらに図７に示す二変数非線形関数はそれが発するノードの数値を第一変数、該アークに対応して指定された任意のノードの数値を第二変数として得られる関数値を伝達する機能をもつアークであって、同図（ａ）の乗算アーク、同図（ｂ）の除算アーク、同図（ｃ）のスイッチアーク、同図（ｄ）のベクトル絶対値アーク、同図（ｅ）の二変数逆正接アークを備えている。
【００２９】
加算ノードでは、０を基底数とし、該ノードを到達ノードとする数値アークを通して変換伝達された数値を項として加算し、これを自身の数値とする機能をもつ。また単位遅延アークを到達ノードとする加算ノードには該アークの出発ノードの値が制御プログラムの１実行サイクルだけ遅延して伝達される。したがって、この場合の該加算ノードはＮＦＧで表現される数値動的システムの状態ノードとみなされ、演算に先立って初期値が与えられる。 また、ソースノードとしての数値ノードには任意の数値を初期入力として与えることができるようにする。
【００３０】
異種グラフ間の接続に関して次のように実施する。すなわち、ＬＦＧからＭＦＧへのトランジション発火制御のためのアークとして図８（ａ）に示す発火許可アークおよび同図（ｂ）に示す発火禁止アークを備える。ＭＦＧのボックス内の状況を定性的に検知してＬＦＧの論理ノードへ伝達するアークとして図９（ａ）に示す満状況アーク、同図（ｂ）に示す空状況アークを備える。さらに、ボックス内のトークン数を定量的に検知してＮＦＧの数値ノードへ伝達するアークとして同図（ｃ）に示すトークン数アークを備える。
【００３１】
ＮＦＧの数値ノードからＬＦＧの論理ノードへ接続される５種類の零比較アーク、すなわちＧＴアーク、ＧＥアーク、ＥＱアーク、ＬＥアーク、ＬＴアークをそれぞれ図１０（ａ）〜（ｅ）に示す。すなわち、ＧＴアークは前記数値ノードの数値が零より大であるときのみ前記論理ノードの論理値を“True”とし、ＧＥアークは前記数値ノードの数値が零より大もしくは等しいときのみ前記論理ノードの論理値を“True”とし、ＥＱアークは前記数値ノードの数値が零に等しいときのみ前記論理ノードの論理値を“True”とし、ＬＥアークは前記数値ノードの数値が零より小もしくは等しいときのみ前記論理ノードの論理値を“True”とし、ＬＴアークは前記数値ノードの数値が零より小であるときのみ前記論理ノードの論理値を“True”とする機能をもつ。
【００３２】
ＬＦＧの論理ノードからＮＦＧの数値ノードへ接続されるビット重みアークは図１１に示すように、出発論理ノードの論理値が“True”に対して到達数値ノードの数値を２のｎ乗（ｎは整数）とし、前記論理値が“False”に対して前記数値を零とし、かつ前記整数値ｎを任意に指定できる機能をもつ。
【００３３】
これらの有向グラフにおけるオブジェクト素子としてのグラフ構成要素をアイコンとして、マウス３の操作により、ディスプレイ４ 上でグラフを構成していく。すなわち、ＥＭＦＧ の場合、ボックスおよびトランジションをオブジェクト素子とし、ボックスについては、該ボックスが容量１の場合は図２（ａ）のボックスアイコンを画面上に配置し、容量が２以上の場合は図３（ａ）の太枠のボックスアイコンを画面上に配置した後、ボックス容量値を入力する。トランジションは属性としての遅延時間がゼロの場合は図２（ｂ）のトランジションアイコンを画面上に配置し、遅延時間がプログラムの１実行サイクルを単位時間としてそれ以上の場合、図３（ｂ）に示すような図２（ｂ）のトランジションよりも太い線のアイコンを画面上に配置した後、遅延時間数を入力する。入力フローアークもしくは出力フローアークは、それぞれ重みが１の場合は図２（ｄ）、（ｆ）のようにボックス、トランジション間をフローアークアイコンでつなぎ、また重みが２以上の場合は図３（ｃ）に示すようにフローアークアイコンを描いた後、該アークの重みをフローアイコン上に入力、付記する。
【００３４】
ＬＦＧの場合、ノード、アークをオブジェクト素子とし、ＡＮＤノード、ＯＲノード、ＸＯＲノードに対してそれぞれＡＮＤアイコン、ＯＲアイコン、ＸＯＲアイコン、正論理アーク、負論理アーク、単位遅延アークについてはそれぞれ正論理の属性を持つ正論理アイコン、負論理の属性を持つ負論理アイコンおよび遅延を属性として持つ単位遅延アイコンで表す。特に負論理アイコンは点線もしくは正論理アイコンと異なる色を用いる。遅延アイコンには標識文字Ｄを付けることで区別する。
【００３５】
ＮＦＧの場合、ノード、アークをオブジェクト素子とし、加算ノードに対して加算アイコン、正符号アーク、負符号アーク、単位遅延アークについては、それぞれ正符号の属性を持つ正符号アイコン、負符号の属性を持つ負符号アイコンおよび遅延を属性として持つ単位遅延アイコンで表す。負符号アイコンは前記負論理アイコンと同様に点線もしくは正符号アイコンと異なる色を用いる。単位遅延アイコンは論理の単位遅延アイコン同様に標識文字Ｄをつけることで他と区別する。また、一変数非線形関数アークは図６に示した一変数非線形関数アイコンで表す。さらに二変数関数アークは図７に示した二変数非線形関数アイコンで表す。それぞれのアイコンは非線形関数に応じた文字標識もしくは図標識をつけることで相互に区別し易くする。
【００３６】
そして、ディスプレイ４上に、マウス３などを用いて、要求する制御機能に対してアイコンを相互に接続することによって離散事象動的システム、論理動的システムおよび数値動的システムの動作を表現するグラフを統一的に作成し、このグラフの作成によって、モデル化される制御プログラムを作成していく。
【００３７】
ソースプログラムデータライブラリ１１は、作成されたソースプログラムを構成する構成要素の種類と属性および構成要素間の関係をデータとして記録したファイルを収納するライブラリである。
アプリケーションデータライブラリ１２は、完成されたアプリケーションを構成する構成要素の種類と属性および構成要素間の関係、さらにアプリケーション固有のデータを記録したファイルを収納するライブラリである。
ソフトウエア部品ライブラリ１３は、オブジェクト素子で作成された一定機能を持つ機能ブロックをソフトウエア部品とし、該ソフトウエア部品に関する構成要素の種類とその属性および構成要素間の関係をデータとして記録したファイルを収納するライブラリである。
【００３８】
組立てエディタ１１では作図上の見易さを配慮して、作画ＣＡＤの機能を十分に活用し、ノードアイコンや有向アークの配置、移動（向きと位置）、削除、アークアイコンの配置、削除、折れ線変形、円弧線変形などが容易に行えるようにする。さらに部分グラフのコピー、移動、消去が容易に行えるようにする。また、アイコンやグラフへの指示線、説明文を記入できるようにする。
実行可能プログラムライブラリ１４は作成されたケースモデルプログラムや実用プログラムをファイルとして収納するものである。
部品ライブラリ１５はＥＭＦＧ，ＬＦＧ，ＮＦＧを用いて作成された新しい機能のブロックを部品として再利用できるように収納するものである。その際、入出力端を残して機能ブロックを枠でカプセル化し内容を隠蔽して保存することができるように、前記組立てエディタ６にはカプセル化機能を用意する。また該カプセルを必要に応じて解除あるいは一時開放を可能とする機能も備える。
【００３９】
インデックス処理部８はＬＦＧやＮＦＧで組みたてられたプログラムを実行可能にする機能をもつ。
すなわち、ＬＦＧやＮＦＧで組み立てられたプログラムの実行は信号フローにそってその１実行サイクルですべてが行われることが必要である。そのため信号フローに関する前処理が必要である。いま、ＬＦＧにおいて入力アークを持たないソースノードを除くと、一般に一個のノードに対してこれを到着ノードとするアーク群に対する出発ノード群が存在する。したがって前記一個のノードを親ノード、前記出発ノード群を子ノード群とする親子ノード集合が存在する。これと前記アーク群とで構成される部分ＬＦＧを信号フローリストと定義する。
信号フローリストではそれに属する子ノードすべての値が更新されてはじめて、それに属する親ノードの値が更新されるものとする。一方、プログラミングで得られたＬＦＧにおいて、ある信号フローリストの親ノードは他の信号フローリストの子ノード、もしくは該ＬＦＧのシンクノードになっている。したがって信号フローでは、信号フローリストの親ノードの値が次の信号フローリストの子ノードである場合、該親ノードの値が更新されることが、次の信号フローリストの親ノードの値が更新される必要条件である。ＬＦＧにおいて無条件にノード値が決まるノードは外部から入力信号値を受けるソースノードと初期値を持つ状態ノードであるので、演算サイクルの最初に前記ノードのみを子ノードとして持つ信号フローリストの親ノードの値の更新が始まり、これが次段の信号フローリストに伝播し、最後に親ノードとしてのシンクノードもしくは状態ノードを到達ノードとする単位遅延アークの出発ノードの値の更新に到る。これによりＬＦＧによるプログラム中の演算が１実行サイクル内で完了することになる。ＮＦＧについても同様である。ＮＦＧはグラフ構造ならびに演算の過程についてはＬＦＧと全く等しく、前記信号フロー処理は相互接続アークを通して継ぎ目なしにＬＦＧ，ＮＦＧ共通に行われる。以上のことから、ＥＭＦＧ、ＬＦＧおよびＮＦＧにより組み立てられたコントロールシステムではＥＭＦＧに対してＬＦＧの前記シンクノードはＥＭＦＧのトランジションに到る発火制御アークの出発ノードとなり、ＥＭＦＧのボックスからの定性的状況アークの到達ノードはＬＦＧのソースノードとなり、さらにＥＭＦＧのボックスからの定量的状況アークの到達ノードはＮＦＧのソースノードとなり、したがって、プログラムの１実行サイクルごとにすべての信号フロー処理が並列的に完了し、かつ離散事象システムとしてのトークンフロー処理も完了することになる。
【００４０】
作図によりプログラミングを行う際に、それぞれの構成要素にはプログラミング過程での作図順にインデックスが割り当てられる。これを固有インデックスと定義する。とくにＬＦＧの論理ノードおよびＮＦＧの加算ノードはすべてまとめて固有インデックスが順に割り当てられている。一方、演算はインデックスに着目して行われるので、１実行サイクルにおけるＬＦＧおよびＮＦＧに関する信号フロー処理は、上記信号フローリストに基づく演算順序をインデックスとして親ノードに割り当てる必要がある。このインデックスを演算インデックスとよぶことにする。該演算インデックスと前記固有インデックスとが一致するように作図することは複雑かつ規模の大きいシステムのプログラミングでは困難であるので、インデックス処理部８はこの変換を行うアルゴリズムを実行するプログラムを備えている。
【００４１】
さらに、インデックス処理部８はＥＭＦＧで組みたてられたプログラムを実行可能にする機能をもつ。すなわち、ＥＭＦＧにおいてトランジションの発火には該トランジションのインデックスに対する該トランジションの上流にあるすべての前置ボックスのインデックス集合ならびに下流にあるすべての後置ボックスのインデックス集合が得られる必要がある。インデックス処理部にはこのインデックス構造化を行うアルゴリズムを実行するプログラムを備えている。
また、インデックス処理部８はＥＭＦＧで組み立てられたプログラムを実行する際に発生するトランジション間の調停を行うための情報を生成する機能をもつ。すなわち、そのためにはＥＦＭＧにおいてあるボックスの上流にある複数のすべての競合前置トランジションのインデックス集合ならびに下流にある複数のすべての競合後置トランジションのインデックス集合が得られる必要がある。インデックス処理部８にはこのインデックス構造化を行うアルゴリズムを実行するプログラムを備えている。
【００４２】
実行エンジン１０ には、インデックス処理部でのインデックス処理が行われた後に得られる各プログラム構成要素の種類および該構成要素間の関係などのプログラムデータをもとにして該エンジンが内蔵する各プログラム構成要素に相当するオブジェクト素子の機能を組み合わせて実行可能プログラムを実行するもので、機能設計組み立て結果のシステムの検証が容易にできる。ここには競合関係にあるトランジション発火の機会均等原理にもとづく調停機能をもたせている。
通信機能部５はプログラムを通して、外部システムとのデータ交換機能を備えている。
【００４３】
以上のシステムによれば、作成されるプログラムを構成するオブジェクト素子は、コンピュータのメモリや発生するイベント、論理演算、四則演算、時限などに直接関係する機能をノードに対応させたもので、またこれらを直線、円、四角などの単純な素子アイコンで表している。これらを使ってデバイスに対応したブロックをディスプレイ上でコンパクトにデザインすることができ、また、プログラミング結果をカプセル化することができる。そして、上記ブロックは説明や改良など必要に応じてワンタッチで内容を展開、再圧縮が容易にできるという特徴を有する。
【００４４】
このため、次のような効果がある。
（１）アイコンで表されたＥＭＦＧ ／ＬＦＧ ソフトウエア素子を適当に接続して、ソトウエアデバイス（フリップフロップ，カウンタ，タイマー，論理アレイなど）を組み立てることができる。
（２）アイコンで表されたＮＦＧソフトウエア素子を適当に接続して、ディジタルフィルタを組み立てることができる。
（３）制御の要求仕様を満たすようにＥＭＦＧ／ＬＦＧ／ＮＦＧを利用して、シーケンスコントローラのプログラミングができる。
（４）制御の要求仕様を満たすようにＥＭＦＧ／ＬＦＧ／ＮＦＧを利用して、フィードバックコントローラのプログラミングができる。
（５）テーブル上で電子部品から計測制御装置を組み立てる過程をそのままパソコンのディスプレイ上で実現できる。
（６）パソコン上でシミュレーションによって上記各システムの動作を検証することができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態に係る制御プログラム組立てシステムのブロック図である。
【図２】ＭＦＧで使用される図形要素を示す図である。
【図３】ＥＭＦＧ（拡張マークフローシート）の要素を示す図である。
【図４】ＬＦＧ（論理フローグラフ）の要素と演算ルールを示す図である。
【図５】ＮＦＧ（数値フローグラフ）の数値ノードと線形アークを示す図である。
【図６】ＮＦＧの一変数非線形関数アークを示す図である。
【図７】ＮＦＧの二変数非線形アークを示す図である。
【図８】ＬＦＧからＥＭＦＧへの接続に必要なアークを示す図である。
【図９】ＥＭＦＧからＬＦＧおよびＮＦＧへの接続に必要なアークを示す図である。
【図１０】ＮＦＧからＬＦＧへの接続に必要な零比較アークの図である。
【図１１】ＬＦＧからＮＦＧへの接続に必要なビット重みアークの図である。
【符号の説明】
【００４６】
１…システム本体、２…キーボード、３…マウス、４…ディスプレイ、５…通信機能部、６…組立てエディタ、７…ソースプログラム、８…インデックス処理部、９…実行可能プログラム、１０…実行エンジン、１１…ソースプログラムデータライブラリ、１２…アプリケーションデータライブラリ、１３…ソフトウエア部品ライブラリ、１４…実行可能プログラムライブラリ。
【図１】
2004265393.tif 000003
【図２】
2004265393.tif 000004
【図３】
2004265393.tif 000005
【図４】
2004265393.tif 000006
【図５】
2004265393.tif 000007
【図６】
2004265393.tif 000008
【図７】
2004265393.tif 000009
【図８】
2004265393.tif 000010
【図９】
2004265393.tif 000011
【図１０】
2004265393.tif 000012
【図１１】
2004265393.tif 000013