(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-06
(45)【発行日】2024-06-14
(54)【発明の名称】プログラム生成装置、および、プログラム生成方法
(51)【国際特許分類】
G05B 19/05 20060101AFI20240607BHJP
G06F 8/35 20180101ALI20240607BHJP
【FI】
G05B19/05 A
G06F8/35
(21)【出願番号】P 2023510127
(86)(22)【出願日】2021-04-02
(86)【国際出願番号】 JP2021014264
(87)【国際公開番号】W WO2022208860
(87)【国際公開日】2022-10-06
【審査請求日】2023-03-14
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(73)【特許権者】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100088672
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【氏名又は名称】有田 貴弘
(72)【発明者】
【氏名】藤田 浩平
(72)【発明者】
【氏名】潮 俊光
【審査官】松本 泰典
(56)【参考文献】
【文献】特開平8-6777(JP,A)
【文献】特表2008-517362(JP,A)
【文献】特開平4-18605(JP,A)
【文献】米国特許出願公開第2014/0372967(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G06F 8/35
(57)【特許請求の範囲】
【請求項1】
制御対象を制御するコントローラで実行されるプログラムを生成するためのプログラム生成装置であり、
前記制御対象を構成する機器の複数の状態と、前記制御対象と前記コントローラとの間で入出力される信号と前記機器の前記状態とのそれぞれの関係と、前記機器の前記状態の変化のそれぞれに要する時間とを含む設計情報を
、前記機器の前記状態の集合である状態集合と、前記コントローラから前記制御対象へ入力される前記信号の集合である入力集合と、前記状態集合に含まれる前記機器の前記状態間の、前記制御対象へ入力される前記信号に起因する遷移を表す関数である遷移関数と、前記遷移関数で示されるそれぞれの前記遷移に要する時間とを含むモデルに変換するための設計情報変換部と、
前記機器の前記状態の前記遷移に要する時間に関する仕様を含む要求仕様と、前記モデルとに基づき、前記要求仕様を満たすように、前記機器のそれぞれの前記状態と、前記コントローラから前記制御対象へ入力される前記信号とを対応づける制御則を導出するための制御則導出部と、
前記制御則に基づいて前記プログラムを生成するためのプログラム生成部とを備える、
プログラム生成装置。
【請求項2】
請求項1に記載のプログラム生成装置であり、
前記モデルは、前記機器の前記状態が満たす性質を含む、
プログラム生成装置。
【請求項3】
請求項1または2に記載のプログラム生成装置であり、
前記要求仕様を、オートマトンの形式に変換するための要求仕様変換部をさらに備え、
前記制御則導出部は、前記モデルとオートマトンの形式に変換された前記要求仕様とに基づき、前記要求仕様を満たすように前記制御則を導出する、
プログラム生成装置。
【請求項4】
請求項1から3のうちのいずれか1つに記載のプログラム生成装置であり、
前記要求仕様を満たす前記機器の前記状態の前記遷移に関する情報と、前記要求仕様を満たさない前記機器の前記状態の前記遷移に関する情報とに基づいて、前記機器の前記状態の前記遷移に関する前記要求仕様を学習するための要求仕様学習部をさらに備え、
前記制御則導出部は、前記モデルと前記要求仕様学習部によって学習された前記要求仕様とに基づき、前記要求仕様を満たすように前記制御則を導出する、
プログラム生成装置。
【請求項5】
請求項4に記載のプログラム生成装置であり、
前記要求仕様学習部には、少なくとも一部の前記要求仕様が入力される、
プログラム生成装置。
【請求項6】
請求項1から5のうちのいずれか1つに記載のプログラム生成装置であり、
前記機器の前記状態の前記遷移の回数を制限するしきい値を、前記制御則導出部に入力するためのパラメータ入力部をさらに備え、
前記制御則導出部は、前記しきい値を超えない前記遷移の回数である前記制御則を導出する、
プログラム生成装置。
【請求項7】
請求項1から6のうちのいずれか1つに記載のプログラム生成装置であり、
少なくとも前記設計情報と、前記モデルと、前記制御則とに基づいて、前記制御対象の外観および動作のうちの少なくとも一方を表示するための表示部をさらに備える、
プログラム生成装置。
【請求項8】
制御対象を制御するコントローラで実行されるプログラムを生成するためのプログラム生成方法であり、
前記制御対象を構成する機器の複数の状態と、前記制御対象と前記コントローラとの間で入出力される信号と前記機器の前記状態とのそれぞれの関係と、前記機器の前記状態の変化のそれぞれに要する時間とを含む設計情報を
、前記機器の前記状態の集合である状態集合と、前記コントローラから前記制御対象へ入力される前記信号の集合である入力集合と、前記状態集合に含まれる前記機器の前記状態間の、前記制御対象へ入力される前記信号に起因する遷移を表す関数である遷移関数と、前記遷移関数で示されるそれぞれの前記遷移に要する時間とを含むモデルに変換し、
前記機器の前記状態の前記遷移に要する時間に関する仕様を含む要求仕様と、前記モデルとに基づき、前記要求仕様を満たすように、前記機器のそれぞれの前記状態と、前記コントローラから前記制御対象へ入力される前記信号とを対応づける制御則を導出し、
前記制御則に基づいて前記プログラムを生成する、
プログラム生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願明細書に開示される技術は、プログラムの生成に関するものである。
【背景技術】
【0002】
生産システムなどを構成する機械は、シーケンサなどのコントローラで実行されるプログラムを用いて制御される(たとえば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に示される技術では、機械の状態および動作の推移がペトリネットモデルで表現している。しかしながら、特許文献1における当該モデルでは機械の動作の推移に要する時間情報が考慮されていない。そのため、生成されるプログラムを時間に関して最適化することができない。その結果として、制御対象である生産システムの生産効率を向上させることが困難であった。
【0005】
また、プログラムの変換ルールがラダー言語を前提としたものであり、IEC61131-3で規定されるようなラダー言語以外の言語(たとえば、ST、FBDまたはSFCなど)、または、一般的な言語(たとえば、C/C++など)への変換が困難であった。
【0006】
本願明細書に開示される技術は、以上に記載されたような問題を鑑みてなされたものであり、制御対象の動作効率を向上させつつ、プログラムの言語変換の自由度を向上させるための技術である。
【課題を解決するための手段】
【0007】
本願明細書に開示される技術の第1の態様であるプログラム生成装置は、制御対象を制御するコントローラで実行されるプログラムを生成するためのプログラム生成装置であり、前記制御対象を構成する機器の複数の状態と、前記制御対象と前記コントローラとの間で入出力される信号と前記機器の前記状態とのそれぞれの関係と、前記機器の前記状態の変化のそれぞれに要する時間とを含む設計情報を、前記機器の前記状態の集合である状態集合と、前記コントローラから前記制御対象へ入力される前記信号の集合である入力集合と、前記状態集合に含まれる前記機器の前記状態間の、前記制御対象へ入力される前記信号に起因する遷移を表す関数である遷移関数と、前記遷移関数で示されるそれぞれの前記遷移に要する時間とを含むモデルに変換するための設計情報変換部と、前記機器の前記状態の前記遷移に要する時間に関する仕様を含む要求仕様と、前記モデルとに基づき、前記要求仕様を満たすように、前記機器のそれぞれの前記状態と、前記コントローラから前記制御対象へ入力される前記信号とを対応づける制御則を導出するための制御則導出部と、前記制御則に基づいて前記プログラムを生成するためのプログラム生成部とを備える。
【発明の効果】
【0008】
本願明細書に開示される技術の少なくとも第1の態様によれば、遷移に要する時間を含むモデルに基づいて、遷移に要する時間を含む要求仕様を満たすように制御則を導出するため、当該制御則に基づいて生成されるプログラムにおいて時間に関する制御がなされ、制御対象の動作効率を高めることができる。また、生成されるプログラムの変換ルールはラダー言語に限定されないため、プログラムの言語変換の自由度が向上する。
【0009】
また、本願明細書に開示される技術に関連する目的と、特徴と、局面と、利点とは、以下に示される詳細な説明と添付図面とによって、さらに明白となる。
【図面の簡単な説明】
【0010】
【
図1】実施の形態に関する、プログラム生成装置の構成の例を概念的に示す図である。
【
図2】プッシャー装置をモデル化する場合の例を示す図である。
【
図3】制御則導出部における動作の例を示すフローチャートである。
【
図4】制御則導出部におけるパス導出動作の例を示すフローチャートである。
【
図5】制御則導出部における遷移時間算出動作の例を示すフローチャートである。
【
図6】実施の形態に関する、プログラム生成装置の構成の例を概念的に示す図である。
【
図7】制御則導出部における遷移時間算出動作の例を示すフローチャートである。
【
図8】実施の形態に関する、プログラム生成装置の構成の例を概念的に示す図である。
【
図9】実施の形態に関する、プログラム生成装置の構成の例を概念的に示す図である。
【
図10】実施の形態に関する、プログラム生成装置の構成の変形例を概念的に示す図である。
【
図11】本実施の形態に関するプログラム生成装置の構成の例を概念的に示す図である。
【
図12】
図1、
図6、
図8、
図9および
図10に例が示されるプログラム生成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【
図13】
図1、
図6、
図8、
図9および
図10に例が示されるプログラム生成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【発明を実施するための形態】
【0011】
以下、添付される図面を参照しながら実施の形態について説明する。以下の実施の形態では、技術の説明のために詳細な特徴なども示されるが、それらは例示であり、実施の形態が実施可能となるためにそれらすべてが必ずしも必須の特徴ではない。
【0012】
なお、図面は概略的に示されるものであり、説明の便宜のため、適宜、構成の省略、または、構成の簡略化が図面においてなされるものである。また、異なる図面にそれぞれ示される構成などの大きさおよび位置の相互関係は、必ずしも正確に記載されるものではなく、適宜変更され得るものである。また、断面図ではない平面図などの図面においても、実施の形態の内容を理解することを容易にするために、ハッチングが付される場合がある。
【0013】
また、以下に示される説明では、同様の構成要素には同じ符号を付して図示し、それらの名称と機能とについても同様のものとする。したがって、それらについての詳細な説明を、重複を避けるために省略する場合がある。
【0014】
また、本願明細書に記載される説明において、ある構成要素を「備える」、「含む」または「有する」などと記載される場合、特に断らない限りは、他の構成要素の存在を除外する排他的な表現ではない。
【0015】
また、本願明細書に記載される説明において、「第1の」または「第2の」などの序数が用いられる場合があっても、これらの用語は、実施の形態の内容を理解することを容易にするために便宜上用いられるものであり、実施の形態の内容はこれらの序数によって生じ得る順序などに限定されるものではない。
【0016】
<プログラム生成装置の概念的な構成について>
図11は、本実施の形態に関するプログラム生成装置の構成(機能部)の例を概念的に示す図である。
【0017】
図11に概念的に示されるプログラム生成装置は、制御対象を制御するコントローラで実行されるプログラムを生成するためのプログラム生成装置である。
【0018】
図11に例示されるようにプログラム生成装置は、設計情報変換部3001と、制御則導出部3002と、プログラム生成部3003とを備える。
【0019】
設計情報変換部3001は、少なくとも、制御対象を構成する機器の複数の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態とのそれぞれの関係と、機器の状態の変化のそれぞれに要する時間とを含む設計情報を、少なくとも、機器の状態の集合である状態集合と、コントローラから制御対象へ入力される信号の集合である入力集合と、状態集合に含まれる機器の状態間の、制御対象へ入力される信号に起因する遷移を表す関数である遷移関数と、遷移関数で示されるそれぞれの遷移に要する時間とを含むモデルに変換する。
【0020】
制御則導出部3002は、機器の状態の遷移に要する時間に関する仕様を含む要求仕様と、モデルとに基づき、要求仕様を満たすように、機器のそれぞれの状態と、コントローラから制御対象へ入力される信号とを対応づける制御則を導出する。
【0021】
プログラム生成部3003は、制御則に基づいてプログラムを生成する。
【0022】
以下の実施の形態において図面などを用いて示されるそれぞれの構成は、上記の
図11に示された構成の例をさらに具体的に示すものである。
【0023】
<第1の実施の形態>
以下、本実施の形態に関するプログラム生成装置、および、プログラム生成方法について説明する。
【0024】
<プログラム生成装置の構成について>
本実施の形態に関するプログラム生成装置は、生産システムを制御するためのコントローラで実行されるプログラムを生成する装置である。
【0025】
生産システムを制御するためのコントローラは、たとえば、プログラマブルロジックコントローラ(programmable logic controller、すなわち、PLC)、数値制御装置(numerical control、すなわち、NC)、または、産業用PCなどがあるが、これらに限らず、制御対象を後述する方法でモデル化するための設計情報と、制御対象の動作に対する要求仕様とを記述可能であれば、制御対象を制御するあらゆるコントローラに対して適用可能である。
【0026】
図1は、本実施の形態に関するプログラム生成装置の構成の例を概念的に示す図である。
【0027】
図1に例が示されるように、プログラム生成装置は、設計情報入力部1と、設計情報変換部2と、要求仕様入力部3と、制御則導出部4と、プログラム生成部5と、要求仕様変換部6とを備える。制御対象の設計情報Aは設計情報入力部1に入力され、要求仕様Bは要求仕様入力部3へ入力される。
【0028】
設計情報入力部1は、入力された制御対象の設計情報Aを、後述する設計情報変換部2で変換可能な形式で設計情報変換部2へ出力する。
【0029】
制御対象の設計情報Aは、少なくとも、制御対象を構成する機器の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態との関係と、機器のある状態から別の状態への変化に要する時間とを含む情報である。
【0030】
また、制御対象の設計情報Aが設計情報変換部2へ出力される際の制御対象の設計情報Aの形式は、たとえば、ペトリネット、または、状態遷移図などである。しかしながら、制御対象の設計情報Aの形式は、設計情報入力部1に入力される時点であらかじめこれらの形式になっている必要はなく、グラフィカル・ユーザ・インターフェース(graphical user interface、すなわち、GUI)による対話的な入力、または、3DCADツールによる入力などの形式である制御対象の設計情報Aを設計情報入力部1において変換して、ペトリネット、または、状態遷移図などの形式として制御対象の設計情報Aを設計情報変換部2へ出力することも考えられる。
【0031】
設計情報変換部2は、設計情報入力部1から入力された制御対象の設計情報Aを遷移システム(モデル)に変換する。遷移システムは、制御対象を構成する機器がとりうる全状態の集合(状態集合)と、コントローラから制御対象への入力信号の集合(入力集合)と、それぞれの入力信号による状態集合に含まれる状態間の遷移を表す遷移関数と、遷移関数で規定されるそれぞれの遷移に要する時間と、状態集合に含まれるそれぞれの状態が満たす性質とを含むことができる。
【0032】
状態集合に含まれるそれぞれの状態が満たす性質は、たとえば、命題の集合で表される。命題は、たとえば、制御対象の設計情報Aがペトリネット形式で表現されていた場合には、「プレースAにトークンが1つ存在する」というような、プレースとトークンとの関係に関する記述である。
【0033】
要求仕様入力部3には、制御対象の状態遷移に関して記述された要求仕様Bが入力される。要求仕様Bは、制御対象が満たすべき仕様を、命題を用いて記述した論理式であり、たとえば、前述の命題を原子命題とする時相論理式などで表される。要求仕様Bは、少なくとも、機器の状態の遷移に要する時間に関する仕様を含む。
【0034】
また、要求仕様入力部3は、入力された要求仕様Bが矛盾していないかを確認する。要求仕様入力部3は、要求仕様を構成する命題の真偽値の全組み合わせについて、要求仕様が真となるような組み合わせが存在しない場合に、要求仕様Bが矛盾しているとする。
【0035】
要求仕様変換部6は、要求仕様入力部3から入力された要求仕様Bに基づきオートマトンを生成する。オートマトンは、状態集合、初期状態、入力集合、遷移関数および受理状態の5つ組で表現される状態遷移機械である。オートマトンは、たとえば、SCHECK2またはRabinizer3などの既存のツールに要求仕様を入力することで生成することができるものであり、生成されたオートマトンで受理される言語はすべて要求仕様を満たす。
【0036】
制御則導出部4は、要求仕様Bに基づくオートマトンと遷移システムとから、合成オートマトンを生成する。合成オートマトンは、状態集合、初期状態、入力集合、遷移関数および受理状態の5つ組で表現される状態遷移機械である。合成オートマトンの生成方法については、後述する。
【0037】
合成オートマトンの状態遷移は、遷移システムの状態遷移とオートマトンの状態遷移とを同時に表現するものであり、合成オートマトンで受理される状態遷移は、遷移システムが要求仕様を満たす場合の状態遷移に対応する。
【0038】
そのため、合成オートマトンで初期状態から受理状態に到達可能なパスを求めることで、制御対象の状態遷移が要求仕様Bを満たすように、制御対象の状態とコントローラからの入力信号とを対応づける関数(制御則)を導出することができる。
【0039】
プログラム生成部5は、導出された制御則に基づき、コントローラで実行するためのプログラムを生成する。
【0040】
<プログラム生成装置の動作について>
次に、それぞれの機能部における動作について説明する。ここでは例として、制御対象の設計情報Aが、時間付きペトリネットの形式で設計情報入力部1に入力されるものとする。
【0041】
ペトリネットは、有向グラフの一種であり、プレースおよびトランジションと呼ばれる2種類のノードと、アークと呼ばれるエッジとからなる。プレースおよびトランジションはアークで結ばれ、アークには重みが存在する。ここでは、簡単のため重みがすべて1であると仮定する。プレースにはトークンと呼ばれるマークを付与することができ、ペトリネット全体のトークンの分布をマーキングと呼ぶ。また、初期状態におけるマーキングを初期マーキングと呼ぶ。
【0042】
プレースpからトランジションtへ結ぶアークが存在する場合、プレースpをトランジションtの入力プレースと呼ぶ。またトランジションtからプレースpへ結ぶアークが存在する場合、プレースpをトランジションtの出力プレースと呼ぶ。入力プレースおよび出力プレースはともに集合となる場合もある。
【0043】
トランジションは、そのすべての入力プレースにトークンが存在する場合に発火可能であり、発火すると入力プレースからトークンを取り除き、出力プレースにトークンを追加する。初期マーキングから、発火可能なトランジションを発火することによって現れるマーキングを、到達可能なマーキングと呼ぶ。
【0044】
ペトリネットのプレースを状態と見て、トランジションを制御信号と見ると、機械のモデル化が可能である。
【0045】
図2は、プッシャー装置をモデル化する場合の例を示す図である。
図2において、円はプレースを表し、長方形はトランジションを表す。また、矢印はアークであり、矢印の近くに記された数値は重みを表す。また、円の内部に存在する点はトークンを表す。
【0046】
図2では、プッシャーを押し出した状態をプレースP0とし、プッシャーを戻した状態をプレースP1とし、プッシャーを押し出す信号をトランジションT0とし、プッシャーを戻す信号をトランジションT1とする。
【0047】
プレースにトークンが存在する場合、機器も対応する状態であることを示す。
図2では、プッシャー装置がプッシャーを押し出した状態であることを示す。
【0048】
時間付きペトリネットは、ペトリネットのトランジションに発火継続時間を追加したものであり、トランジションの発火があらかじめ定められた一定時間継続するモデルである。時間付きペトリネットにおいて、トランジションが発火した場合は、発火開始時に当該トランジションの入力プレースからトークンを取り除き、上記の発火継続時間が経過した後の発火終了時に、当該トランジションの出力プレースにトークンが追加される。
【0049】
プッシャー装置を時間付きペトリネットでモデル化すると、トランジションT0およびトランジションT1のそれぞれについて、プッシャーを戻した状態からプッシャーを押し出した状態に変化するまでの時間、および、プッシャーを押し出した状態からプッシャーを戻した状態に変化するまでの時間が発火継続時間となる。
【0050】
要求仕様Bは、時相論理(Linear Temporal Logic)のサブクラスであるscLTL(Syntactically Co-safe LTL)で記述されるものとする。
【0051】
また、制御対象の状態が満たす性質、および、要求仕様は、ペトリネットのプレースとトークンとの関係に関する命題を用いて記述されるものとする。命題は、たとえば、「プレースP0にトークンが存在する」というようなものであり、プッシャー装置の例では、命題は「プッシャーが押し出した状態である」ということを示す。
【0052】
設計情報変換部2は、入力された制御対象の設計情報Aを遷移システムの形式に変換する。遷移システムは、状態集合、入力集合、遷移関数、観測値および観測写像の5つ組で表現される。
【0053】
状態集合は、時間付きペトリネットの初期マーキングから、任意の回数のトランジションの発火で到達可能なすべてのマーキングの集合とする。入力集合は、トランジションと空集合との和集合とする。空集合は、どのトランジションも発火しない場合を表す。
【0054】
遷移関数は、状態集合と入力集合との直積から状態集合への写像で表され、状態集合の状態に対して入力集合の入力を加えた際の、遷移先の状態を示す。状態xにおける入力σによる遷移先の状態x’は、遷移関数δを用いて以下の式で表すことができる。
【0055】
【0056】
遷移関数は、制御対象の設計情報Aが時間付きペトリネットから遷移システムの形式に変換されたものである場合には、状態集合に含まれるマーキングにおいて、入力集合に含まれるトランジションの発火によって、状態集合に含まれるどのマーキングに遷移するかを示す。
【0057】
観測値は、命題の冪集合とする。観測写像は、状態集合に含まれる状態に対して、それぞれの状態が満たす命題の集合を対応づけるルールであり、状態集合から観測値への写像で表される。
【0058】
要求仕様変換部6は、入力された要求仕様Bを有限状態オートマトンに変換する。scLTLの形式で記述された仕様は、有限状態オートマトンに変換可能なことが知られている。これは、たとえば、「O. Kupferman and M. Y. Vardi:Model Checking of Safety Properties, Formal Methods in System Design, 19:291-314(2001)」に記載されている。
【0059】
なお、仕様がscLTLの形式で記述されていない場合でも、時相論理式で記述された仕様はオートマトンに変換可能であるため、scLTLの形式で記述されていない仕様についても、同様に変換可能である。
【0060】
有限状態オートマトンは、状態集合、初期状態、入力集合、遷移関数および受理状態の5つ組で表現される状態遷移機械である。入力集合は、上記の遷移システムの観測値である。また、状態sにおける入力o1による遷移先の状態s’は、遷移関数δAを用いて以下の式で表すことができる。
【0061】
【0062】
上記の式によれば、有限状態オートマトンは、遷移システムの状態遷移の結果観測される観測値を入力とする状態遷移を行うものである。そのため、遷移システムの状態遷移の結果観測される観測値の列が、この有限状態オートマトンで受理されるかどうかを判定することによって、遷移システムの状態遷移が要求仕様を満たすかどうかを判定することができる。
【0063】
制御則導出部4では、遷移システムと有限状態オートマトンとを用いて合成オートマトンを生成し、さらに制御則を導出する。合成オートマトンは、状態集合、初期状態、入力集合、遷移関数および受理状態の5つ組で表現されるオートマトン(状態遷移機械)であり、それぞれ以下のようなものである。
【0064】
状態集合は、遷移システムの状態集合と有限状態オートマトンの状態集合との直積集合である。初期状態は、遷移システムの初期状態と有限状態オートマトンの初期状態との直積集合である。
【0065】
入力集合は、遷移システムの入力集合と同じである。遷移関数は後述する式で表され、合成オートマトンの入力集合に含まれる入力による合成オートマトンの状態集合に含まれる状態間の遷移を示す。受理状態は、遷移システムの状態集合と有限状態オートマトンの受理状態との直積集合である。
【0066】
合成オートマトンの状態(x,s)において、入力σが加えられたときの遷移先の状態(x’,s’)を表す遷移関数δPは、以下の式で表すことができる。
【0067】
【0068】
ここで、xは遷移システムの状態、δは遷移システムの遷移関数、oは遷移システムの観測写像である。さらに、sはオートマトンの状態、δAはオートマトンの遷移関数である。
【0069】
このようにして生成された合成オートマトンで受理される入力列は、制御対象が要求仕様を満たすように動作することを保証する入力列であり、この入力列によって到達する状態は、この入力列によって遷移した制御対象の状態に対応する。
【0070】
そのため、合成オートマトンの初期状態から、受理状態に到達可能なパスを求めることで、制御対象が要求仕様Bを満たす場合の状態遷移と当該遷移に必要な入力列とを求めることができる。
【0071】
以上から、制御対象が要求仕様Bを満たすように、制御対象の状態とコントローラからの入力とを対応づける関数(制御則)を導出することができる。
【0072】
図3は、制御則導出部4における動作の例を示すフローチャートである。
図3に示されるように、ステップST101では、設計情報変換部2から遷移システムが入力され、要求仕様変換部6から有限状態オートマトンが入力されることを待って制御則導出部4が動作を開始する。
【0073】
次にステップST102では、制御則導出部4は、設計情報変換部2から入力された遷移システムと、要求仕様変換部6から入力された有限状態オートマトンとを合成して、合成オートマトンを生成する。
【0074】
次にステップST103では、制御則導出部4は、合成オートマトンの初期状態から受理状態に到達可能なパスを求める。詳細なフローについては、
図4を参照しつつ後述する。
【0075】
次にステップST104では、制御則導出部4は、ステップST103で求められたパスそれぞれに対し、初期状態から受理状態までの遷移時間を求める。詳細なフローについては、
図5を参照しつつ後述する。
【0076】
次にステップST105では、制御則導出部4は、ステップST104で求められた遷移時間が最も短いパスについて、初期状態から受理状態に到達するための入力を求め、それぞれの状態と入力との対応を制御則とする。
【0077】
次にステップST106では、制御則導出部4が動作を終了する。
【0078】
次に、ステップST103の詳細なフローについて、
図4を参照しつつ説明する。なお、
図4は、制御則導出部4におけるパス導出動作の例を示すフローチャートである。
【0079】
図4に示されるように、ステップST201では、合成オートマトンが入力されることを待って、制御則導出部4がパス導出動作を開始する。
【0080】
次にステップST202では、制御則導出部4は、目標状態の集合を新たに定義する。目標状態の集合は、受理状態に到達可能な遷移が存在する状態の集合となり、始めは受理状態のみの集合(空集合)である。
【0081】
次にステップST204では、制御則導出部4が、目標状態の集合に属する状態に1回の遷移で到達可能な状態を求める。
【0082】
次にステップST205では、制御則導出部4が、ステップST204において、目標状態の集合に属する状態に1回の遷移で到達可能な状態が存在したか否かを判定する。そして、そのような状態が存在した場合、すなわち、
図4に例が示されるステップST205から分岐する「YES」に対応する場合には、
図4に例が示されるステップST206へ進む。一方で、そのような状態が存在しなかった場合、すなわち、
図4に例が示されるステップST205から分岐する「NO」に対応する場合には、
図4に例が示されるステップST207へ進む。
【0083】
ステップST206では、制御則導出部4が、目標状態の集合に、ステップST204で求められた状態を加える。そして、ステップST208へ進む。
【0084】
ステップST207では、制御則導出部4が、目標状態の集合に到達可能な状態が存在しないために要求仕様を満たすプログラムが生成できないことを、ユーザーに通知する。そして、ステップST209へ進んでパス導出動作を終了する。
【0085】
ステップST208では、制御則導出部4が、目標状態の集合に初期状態が含まれるかを判定する。そして、初期状態が含まれる場合、すなわち、
図4に例が示されるステップST208から分岐する「YES」に対応する場合には、
図4に例が示されるステップST209へ進んでパス導出動作を終了する。一方で、初期状態が含まれない場合、すなわち、
図4に例が示されるステップST208から分岐する「NO」に対応する場合には、
図4に例が示されるステップST202に戻る。
【0086】
次に、ステップST104の詳細なフローについて、
図5を参照しつつ説明する。なお、
図5は、制御則導出部4における遷移時間算出動作の例を示すフローチャートである。
【0087】
図5に示されるように、ステップST301では、受理状態に到達可能なパスのみが定義された合成オートマトンが入力されることを待って、制御則導出部4が遷移時間算出動作を開始する。
【0088】
次にステップST302では、制御則導出部4が、処理の起点を初期状態とし、初期状態のラベルを0とする。以降の処理過程において、上記の起点は集合となる場合もある。
【0089】
次にステップST304では、制御則導出部4が、起点から1回の遷移で到達可能なすべての状態に対し、起点のラベルと当該遷移に要する時間との和を、ラベルとして付与する。起点が集合である場合は、集合に含まれるすべての状態に対して、同様の処理を行う。
【0090】
次にステップST305では、制御則導出部4が、複数のラベルが付与された状態が存在するか否かを判定する。そして、複数のラベルが付与された状態が存在する場合、すなわち、
図5に例が示されるステップST305から分岐する「YES」に対応する場合には、
図5に例が示されるステップST306へ進む。一方で、複数のラベルが付与された状態が存在しない場合、すなわち、
図5に例が示されるステップST305から分岐する「NO」に対応する場合には、
図5に例が示されるステップST307へ進む。
【0091】
ステップST306では、制御則導出部4は、付与されている複数のラベルのうち、最小のラベル以外を削除する。最小のラベルが複数存在する場合は、1つのみを残す。そして、ステップST307へ進む。
【0092】
次にステップST307では、制御則導出部4は、起点から遷移可能なすべての状態を、新たな起点とする。
【0093】
次にステップST308では、制御則導出部4は、全状態にラベルが付与されているか否かを判定する。そして、全状態にラベルが付与されている場合、すなわち、
図5に例が示されるステップST308から分岐する「YES」に対応する場合には、
図5に例が示されるステップST309へ進んで遷移時間算出動作を終了する。一方で、全状態にはラベルが付与されていない場合、すなわち、
図5に例が示されるステップST308から分岐する「NO」に対応する場合には、
図5に例が示されるステップST304に戻る。
【0094】
上記のフローによれば、制御則導出部4において時間に関して最適化された制御則が求められるため、制御対象が要求仕様を満たし、かつ、制御対象の制御時間が最小となるような、制御対象のそれぞれの状態に対してコントローラから入力すべき制御信号を決定することができる。
【0095】
プログラム生成部5は、制御則導出部4からの制御則を入力として、コントローラで実行するための制御プログラムを生成する。制御則によって、制御対象のそれぞれの状態に対しコントローラから制御対象へ入力すべき信号が対応づけられることから、まず、制御対象の状態の観測を行い、次に、制御則に基づく制御信号の計算を行い、次に、制御対象へ制御信号を出力する、という一連の処理を繰り返し実行するプログラムを生成する。当該プログラムによって、制御対象が要求仕様を満たし、かつ、制御対象の制御時間が最小となるように、制御を行うことが可能となる。
【0096】
生成されるプログラムの言語は、ユーザーが適宜選択することができる。言語の種類としては、たとえば、シーケンスプログラムの作成に用いられるIEC61131―3で規定される5言語、または、汎用的なC/C++などの言語が考えられるが、上記の処理を記述可能な言語であればどのようなものであってもよい。
【0097】
本実施の形態によって、制御対象の要求仕様を満たし、制御対象の制御時間を最小化し、さらに、言語が限定されないプログラムを生成することができる。
【0098】
なお、本実施の形態において、要求仕様変換部6がない場合であっても、制御則導出部4の処理を以下のように変更することで、制御則を導出することができる。
【0099】
すなわち、制御則導出部4では、入力された遷移システムについて、状態をノードとし、遷移をエッジとし、初期状態から到達可能なすべての状態を記す有向グラフを生成する。
【0100】
そして、生成された有向グラフにおいて初期状態から始まるすべてのパスから、与えられた要求仕様を満たし、かつ、最小の遷移時間で目標状態に到達するものを選択することで、制御則を導出することができる。
【0101】
この場合でも、要求仕様変換部6が備えられる場合と同様の効果を得られるが、要求仕様変換部6を用いる構成よりも制御則を導出するまでの処理時間が長くなる場合がある。
【0102】
<第2の実施の形態>
本実施の形態に関するプログラム生成装置、および、プログラム生成方法について説明する。なお、以下の説明においては、以上に記載された実施の形態で説明された構成要素と同様の構成要素については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【0103】
<プログラム生成装置の構成について>
図6は、本実施の形態に関するプログラム生成装置の構成の例を概念的に示す図である。
図6に示される構成では、プログラム生成装置は、設計情報入力部1と、設計情報変換部2と、要求仕様入力部3と、制御則導出部4Aと、プログラム生成部5と、要求仕様変換部6と、パラメータ入力部7とを備える。制御則導出部4Aは、遷移システムとオートマトンとから、合成オートマトンを生成する。
【0104】
パラメータ入力部7は、制御則導出部4Aにおける制御則導出時間に関するしきい値であるパラメータ(1以上、かつ、初期状態から受理状態までの最小ステップ数以下の整数値K)の入力をユーザーなどから受け付ける。パラメータ入力部7は、ラベル付与の対象とする機器の状態を、当該パラメータに対応する範囲に限定する。
【0105】
第1の実施の形態に示された場合と異なる点は、
図3におけるステップST104に対応するフロー(特に、合成オートマトンの初期状態から受理状態に到達可能なパスのうち、最小の遷移時間のパスを求める処理)であり、本実施の形態では、パラメータ入力部7に入力された整数値Kを用いる処理を行う。
【0106】
次に、上記のステップST104に対応するフローについて、
図7を参照しつつ説明する。なお、
図7は、制御則導出部4Aにおける遷移時間算出動作の例を示すフローチャートである。
【0107】
図7に示されるように、ステップST401では、受理状態に到達可能なパスのみが定義された合成オートマトンが入力されることを待って、制御則導出部4Aが遷移時間算出動作を開始する。
【0108】
次にステップST402では、制御則導出部4Aが、処理の起点を初期状態とし、初期状態のラベルを0とする。
【0109】
次にステップST404では、制御則導出部4Aが、パラメータ入力部7にあらかじめ入力されているしきい値である整数値Kを用いて、起点からK回の遷移で到達可能なすべての状態に対し、起点のラベルとK回の当該遷移に要する時間との和を、ラベルとして付与する。
【0110】
次にステップST405では、制御則導出部4Aが、複数のラベルが付与された状態が存在するか否かを判定する。そして、複数のラベルが付与された状態が存在する場合、すなわち、
図7に例が示されるステップST405から分岐する「YES」に対応する場合には、
図7に例が示されるステップST406へ進む。一方で、複数のラベルが付与された状態が存在しない場合、すなわち、
図7に例が示されるステップST405から分岐する「NO」に対応する場合には、
図7に例が示されるステップST407へ進む。
【0111】
ステップST406では、制御則導出部4Aは、付与されている複数のラベルのうち、最小のラベル以外を削除する。最小のラベルが複数存在する場合は、1つのみを残す。そして、ステップST407へ進む。
【0112】
次にステップST407では、制御則導出部4Aは、起点からK回の遷移で遷移可能なすべての状態のうち、最小のラベルが付与された状態に遷移するパスを求める。
【0113】
次にステップST408では、制御則導出部4Aは、ステップST407で求められたパスにおいて、起点から1回の遷移で到達する状態を新たな起点とする。
【0114】
次にステップST409では、制御則導出部4Aは、受理状態にラベルが付与されているか否かを判定する。そして、受理状態にラベルが付与されている場合、すなわち、
図7に例が示されるステップST409から分岐する「YES」に対応する場合には、
図7に例が示されるステップST410へ進んで遷移時間算出動作を終了する。一方で、受理状態にラベルが付与されていない場合、すなわち、
図7に例が示されるステップST409から分岐する「NO」に対応する場合には、
図7に例が示されるステップST404に戻る。
【0115】
本実施の形態における制御則導出部4Aの処理は、第1の実施の形態における制御則導出部4の処理と比較すると、合成オートマトンのすべての状態に対してラベルを付与する必要がない。そのため、制御則を導出するまでの処理時間が削減される。
【0116】
ただし、合成オートマトンの限られた状態にのみラベルを付与する動作であるため、受理状態に付与されるラベルが、全状態に対してラベルを付与した場合よりも大きくなる可能性がある。これは、最終的に得られるプログラムの実行時間が、第1の実施の形態で得られるプログラムの実行時間よりも長くなる可能性があることを意味する。
【0117】
また、上記の場合、パラメータ入力部7で設定された整数値Kによってその影響の度合が変化する。整数値Kが大きい場合は、処理時間の削減効果は小さいが、得られるプログラムの実行時間がより短くなる可能性が高い(ただし、第1の実施の形態で得られるプログラムの実行時間よりも小さくなることはない)。一方で、整数値Kが小さい場合は、処理時間の削減効果は大きいが、得られるプログラムの実行時間がより長くなる可能性が高い。
【0118】
よってユーザーは、パラメータ入力部7で設定する整数値Kを調整することで、許容することができる実行時間となるプログラムを、短時間で得ることが可能となる。
【0119】
<第3の実施の形態>
本実施の形態に関するプログラム生成装置、および、プログラム生成方法について説明する。なお、以下の説明においては、以上に記載された実施の形態で説明された構成要素と同様の構成要素については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【0120】
<プログラム生成装置の構成について>
図8は、本実施の形態に関するプログラム生成装置の構成の例を概念的に示す図である。
図8に示される構成では、プログラム生成装置は、設計情報入力部1と、設計情報変換部2と、要求仕様入力部3と、制御則導出部4Bと、プログラム生成部5と、要求仕様変換部6と、表示部8とを備える。制御則導出部4Bは、遷移システムとオートマトンとから、合成オートマトンを生成する。
【0121】
表示部8は、設計情報変換部2で生成された遷移システムの情報と制御対象の設計情報Aと制御則とから、制御対象の外観、制御対象の動作、および、制御対象のそれぞれの状態が満たす性質を表示する。これによって、制御則導出部4Bで導出された制御則にしたがって制御対象を制御した場合の動作を確認すること、または、制御対象の動作を確認しながら要求仕様Bを補正することなどが可能となる。
【0122】
表示部8は、たとえば、3Dシミュレータなどで実現することができる。表示部8に表示される制御対象の外観は、制御対象の設計情報Aを変換することで生成することができる。
【0123】
制御対象の動作は、設計情報変換部2で生成された遷移システムを用いることで、表示することができる。遷移システムの状態の定義から、制御対象の状態と遷移システムの状態とは対応づけられるため、遷移システムの現在の状態と対応づけられる制御対象の状態とを、表示部8に表示することができる。
【0124】
さらに、遷移関数の定義から、状態集合に含まれるそれぞれの状態において、入力集合に含まれるそれぞれの入力があった場合の、遷移先の状態と遷移時間とがわかるため、制御対象のそれぞれの状態において、それぞれの制御信号が入力された場合の遷移先の状態と遷移時間とがわかる。これらを表示部8の制御対象の外観と対応づけて表示することで、制御対象の動作を表示することができる。
【0125】
また、遷移システムでは観測写像も定義していることから、制御対象のそれぞれの状態が満たす性質も表示部8に表示することができる。これによってユーザーは、制御対象のそれぞれの状態で満たす性質を確認しながら、要求仕様Bの補正を行うことができる。
【0126】
本実施の形態によれば、制御対象の外観または動作などをユーザーが適宜確認可能となる。そのため、生成されたプログラムを用いて制御対象を制御した場合の動作確認、または、要求仕様の修正などが可能となり、結果として、ユーザーが所望するプログラムを容易に得ることができる。
【0127】
<第4の実施の形態>
本実施の形態に関するプログラム生成装置、および、プログラム生成方法について説明する。なお、以下の説明においては、以上に記載された実施の形態で説明された構成要素と同様の構成要素については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【0128】
本実施の形態では、制御対象に対する要求仕様Bのすべてを記述せずとも、ユーザーが所望するように制御対象を動作させるようなプログラムを生成することを目的とする。
【0129】
<プログラム生成装置の構成について>
図9は、本実施の形態に関するプログラム生成装置の構成の例を概念的に示す図である。
図9に示される構成では、プログラム生成装置は、設計情報入力部1と、設計情報変換部2と、制御則導出部4Cと、プログラム生成部5と、要求仕様関連情報Cに基づいて学習を行う要求仕様学習部9とを備える。制御則導出部4Cは、遷移システムと要求仕様学習部9から出力されたオートマトンとから、合成オートマトンを生成する。
【0130】
要求仕様関連情報Cは、要求仕様Bを満たすような制御対象である機器の状態遷移の例と、制御対象である機器が陥ってはいけない状態(すなわち、要求仕様Bを満たさない機器の状態遷移)の例とを含む情報であり、要求仕様学習部9からの要求に応じて、ユーザーが適宜入力または追加などすることができる情報である。
【0131】
要求仕様学習部9は、要求仕様関連情報Cに基づいて、学習オートマトンの手法または強化学習などの学習方法を用いて、要求仕様Bを満たす入力列のみを受理するオートマトンを学習する。
【0132】
以降では、要求仕様学習部9における学習方法として、たとえば、AngluinのL*アルゴリズムを用いる場合のオートマトンの学習方法を示す。
【0133】
AngluinのL*アルゴリズムの詳細は、たとえば、「Dana Angluin:Learning Regular Sets from Queries and Counterexamples. Information and Computation 75,87-106(1987)」に記載されている。
【0134】
L*アルゴリズムは、以下のクエリを利用することで、未知の言語Lを受理するオートマトンを学習するアルゴリズムである。
【0135】
クエリには、membershipクエリおよびequivalenceクエリの2種類のクエリが存在する。membershipクエリは、ある入力列が未知の言語Lに属するか否かを尋ねるものである。また、equivalenceクエリは、L*アルゴリズムの処理過程において出力されるオートマトンが、未知の言語Lを受理するオートマトンと等しいか否かを尋ね、等しくない場合には反例を尋ねるものである。
【0136】
要求仕様学習部9は、L*アルゴリズムの処理過程において、必要なタイミングでユーザーに上記のクエリへの回答を要求し、ユーザーから上記のクエリへの回答を得ることによって、未知の言語Lを受理するオートマトンを学習し、かつ、出力する。
【0137】
ユーザーへ上記のクエリへの回答を要求する際、
図9には示されていないが、
図8に示されるような表示部8を用いて要求内容などを表示してもよい。この場合、membershipクエリへの回答を要求する場合は、入力列に対応する制御対象の動作を表示部8に表示して、ユーザーが所望する制御対象の動作から外れていないかを確認してもよい。また、equivalenceクエリへの回答を要求する場合は、L*アルゴリズムで学習中のオートマトンで受理される複数の入力列について、対応する制御対象の動作を表示部8に表示して、ユーザーが所望する通りに制御対象が動作しているかを確認してもよい。
【0138】
要求仕様学習部9には、さらに、制御対象に対する要求仕様Bの一部を入力されてもよい。
図10は、本実施の形態に関するプログラム生成装置の構成の変形例を概念的に示す図である。
【0139】
図10に示される構成では、プログラム生成装置は、設計情報入力部1と、設計情報変換部2と、制御則導出部4Dと、プログラム生成部5と、要求仕様入力部3と、要求仕様Bおよび要求仕様関連情報Cに基づいて学習を行う要求仕様学習部9Dとを備える。制御則導出部4Dは、遷移システムと要求仕様学習部9Dから出力されたオートマトンとから、合成オートマトンを生成する。
【0140】
図10に例が示されるように、要求仕様学習部9Dには、要求仕様Bの一部が要求仕様入力部3から入力され、また、要求仕様関連情報Cが入力される。要求仕様学習部9Dは、入力された要求仕様Bの一部を用いて上記のクエリへの回答が生成可能な場合は、ユーザーへの回答要求を行わないものとすることができる。そうすることで、ユーザーが上記のクエリへ回答する手間を減らすことができる。
【0141】
本実施の形態によって、ユーザーが要求仕様Bを完全に記述できない場合でも、制御対象がユーザーが所望するように動作するプログラムを生成することができる。
【0142】
なお、
図6に示されたパラメータ入力部7および
図8に示された表示部8は、ともに本実施の形態の制御則導出部に対しても適用可能である。
【0143】
<プログラム生成装置のハードウェア構成について>
図12および
図13は、
図1、
図6、
図8、
図9および
図10に例が示されるプログラム生成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【0144】
【0145】
【0146】
図12では、
図1、
図6、
図8、
図9および
図10中の設計情報入力部1、設計情報変換部2、要求仕様入力部3、制御則導出部4、プログラム生成部5、要求仕様変換部6、パラメータ入力部7、表示部8、要求仕様学習部9などを実現するためのハードウェア構成として、演算を行う処理回路1102Aと、情報を記憶することができる記憶装置1103と、マウス、キーボード、タッチパネル、または、各種スイッチなどの、情報を入力することができる入力装置1104Aと、ディスプレイ、液晶表示装置、または、ランプなどの、情報を出力することができる出力装置1105A(入力装置1104Aと共用である場合を含む)とが示される。これらの構成は、他の実施の形態においても同様である。
【0147】
図13では、
図1、
図6、
図8、
図9および
図10中の設計情報入力部1、設計情報変換部2、要求仕様入力部3、制御則導出部4、プログラム生成部5、要求仕様変換部6、パラメータ入力部7、表示部8、要求仕様学習部9などを実現するためのハードウェア構成として、演算を行う処理回路1102Bと、マウス、キーボード、タッチパネル、または、各種スイッチなどの、情報を入力することができる入力装置1104Bと、ディスプレイ、液晶表示装置、または、ランプなどの、情報の出力を行うことができる出力装置1105B(入力装置1104Bと共用である場合を含む)とが示される。当該構成は、他の実施の形態においても同様である。
【0148】
記憶装置1103は、たとえば、ハードディスクドライブ(Hard disk drive、すなわち、HDD)、ランダムアクセスメモリ(random access memory、すなわち、RAM)、リードオンリーメモリ(read only memory、すなわち、ROM)、フラッシュメモリ、erasable programmable read only memory(EPROM)およびelectrically erasable programmable read-only memory(EEPROM)などの、揮発性または不揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスクまたはDVDなどを含むメモリ(記録媒体)、または、今後使用されるあらゆる記録媒体であってもよい。
【0149】
処理回路1102Aは、記憶装置1103、外部のCD-ROM、外部のDVD-ROM、または、外部のフラッシュメモリなどに格納されたプログラムを実行するものであってもよい。すなわち、たとえば、中央演算処理装置(central processing unit、すなわち、CPU)、マイクロプロセッサ、マイクロコンピュータ、デジタルシグナルプロセッサ(digital signal processor、すなわち、DSP)であってもよい。
【0150】
処理回路1102Aが記憶装置1103、外部のCD-ROM、外部のDVD-ROM、または、外部のフラッシュメモリなどに格納されたプログラムを実行するものである場合、設計情報変換部2、制御則導出部4、プログラム生成部5、要求仕様変換部6、要求仕様学習部9は、記憶装置1103に格納されたプログラムが処理回路1102Aによって実行されるソフトウェア、ファームウェアまたはソフトウェアとファームウェアとの組み合わせにより実現される。なお、設計情報変換部2、制御則導出部4、プログラム生成部5、要求仕様変換部6、要求仕様学習部9の機能は、たとえば、複数の処理回路が連携することによって実現されてもよい。
【0151】
ソフトウェアおよびファームウェアはプログラムとして記述され、記憶装置1103に記憶されるものであってもよい。その場合、処理回路1102Aは、記憶装置1103に格納されたプログラムを読み出して実行することによって、上記の機能を実現する。すなわち、記憶装置1103は、処理回路1102Aに実行されることによって、上記の機能が結果的に実現されるプログラムを記憶するものであってもよい。
【0152】
また、処理回路1102Bは、専用のハードウェアであってもよい。すなわち、たとえば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、集積回路(application specific integrated circuit、すなわち、ASIC)、field-programmable gate array(FPGA)またはこれらを組み合わせた回路であってもよい。
【0153】
処理回路1102Bが専用のハードウェアである場合、設計情報変換部2、制御則導出部4、プログラム生成部5、要求仕様変換部6、要求仕様学習部9は、処理回路1102Bが動作することにより実現される。なお、設計情報変換部2、制御則導出部4、プログラム生成部5、要求仕様変換部6、要求仕様学習部9の機能は、別々の回路で実現されてもよいし、単一の回路で実現されてもよい。
【0154】
なお、設計情報変換部2、制御則導出部4、プログラム生成部5、要求仕様変換部6、要求仕様学習部9の機能は、一部が記憶装置1103に格納されたプログラムを実行するものである処理回路1102Aにおいて実現され、一部が専用のハードウェアである処理回路1102Bにおいて実現されてもよい。
【0155】
また、設計情報入力部1、要求仕様入力部3、パラメータ入力部7は、入力装置1104Aまたは入力装置1104Bによって実現される。
【0156】
また、表示部8は、出力装置1105Aまたは出力装置1105Bによって実現される(入力装置と共用であってもよい)。
【0157】
<以上に記載された実施の形態によって生じる効果について>
次に、以上に記載された実施の形態によって生じる効果の例を示す。なお、以下の説明においては、以上に記載された実施の形態に例が示された具体的な構成に基づいて当該効果が記載されるが、同様の効果が生じる範囲で、本願明細書に例が示される他の具体的な構成と置き換えられてもよい。すなわち、以下では便宜上、対応づけられる具体的な構成のうちのいずれか1つのみが代表して記載される場合があるが、代表して記載された具体的な構成が対応づけられる他の具体的な構成に置き換えられてもよい。
【0158】
また、当該置き換えは、複数の実施の形態に跨ってなされてもよい。すなわち、異なる実施の形態において例が示されたそれぞれの構成が組み合わされて、同様の効果が生じる場合であってもよい。
【0159】
以上に記載された実施の形態によれば、プログラム生成装置は、設計情報変換部2と、制御則導出部4(または、制御則導出部4A、制御則導出部4B、制御則導出部4C、制御則導出部4D)と、プログラム生成部5とを備える。設計情報変換部2は、設計情報Aを、少なくとも、機器の状態の集合である状態集合と、コントローラから制御対象へ入力される信号の集合である入力集合と、状態集合に含まれる機器の状態間の、制御対象へ入力される信号に起因する遷移を表す関数である遷移関数と、遷移関数で示されるそれぞれの遷移に要する時間とを含むモデルに変換する。なお、設計情報Aは、少なくとも、制御対象を構成する機器の複数の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態とのそれぞれの関係と、機器の状態の変化のそれぞれに要する時間とを含む。制御則導出部4は、機器の状態の遷移に要する時間に関する仕様を含む要求仕様Bと、モデルとに基づき、要求仕様Bを満たすように、機器のそれぞれの状態と、コントローラから制御対象へ入力される信号とを対応づける制御則を導出する。プログラム生成部5は、制御則に基づいてプログラムを生成する。
【0160】
また、以上に記載された実施の形態によれば、プログラム生成装置は、プログラムを実行する処理回路1102Aと、実行されるプログラムを記憶する記憶装置1103とを備える。そして、処理回路1102Aがプログラムを実行することによって、以下の動作が実現される。
【0161】
すなわち、少なくとも、制御対象を構成する機器の複数の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態とのそれぞれの関係と、機器の状態の変化のそれぞれに要する時間とを含む設計情報Aが、少なくとも、機器の状態の集合である状態集合と、コントローラから制御対象へ入力される信号の集合である入力集合と、状態集合に含まれる機器の状態間の、制御対象へ入力される信号に起因する遷移を表す関数である遷移関数と、遷移関数で示されるそれぞれの遷移に要する時間とを含むモデルに変換される。そして、機器の状態の遷移に要する時間に関する仕様を含む要求仕様Bと、モデルとに基づき、要求仕様Bを満たすように、機器のそれぞれの状態と、コントローラから制御対象へ入力される信号とを対応づける制御則が導出される。そして、制御則に基づいてプログラムが生成される。
【0162】
また、以上に記載された実施の形態によれば、プログラム生成装置は、専用のハードウェアである処理回路1102Bを備える。そして、専用のハードウェアである処理回路1102Bは、以下の動作を行う。
【0163】
すなわち、専用のハードウェアである処理回路1102Bは、少なくとも、制御対象を構成する機器の複数の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態とのそれぞれの関係と、機器の状態の変化のそれぞれに要する時間とを含む設計情報Aを、少なくとも、機器の状態の集合である状態集合と、コントローラから制御対象へ入力される信号の集合である入力集合と、状態集合に含まれる機器の状態間の、制御対象へ入力される信号に起因する遷移を表す関数である遷移関数と、遷移関数で示されるそれぞれの遷移に要する時間とを含むモデルに変換する。そして、機器の状態の遷移に要する時間に関する仕様を含む要求仕様Bと、モデルとに基づき、要求仕様Bを満たすように、機器のそれぞれの状態と、コントローラから制御対象へ入力される信号とを対応づける制御則を導出する。そして、制御則に基づいてプログラムを生成する。
【0164】
このような構成によれば、遷移に要する時間を含むモデルに基づいて、遷移に要する時間を含む要求仕様を満たすように制御則を導出するため、当該制御則に基づいて生成されるプログラムにおいて時間に関する制御(最適化)がなされ、制御対象の動作効率を高めることができる。また、生成されるプログラムの変換ルールはラダー言語に限定されないため、プログラムの言語変換の自由度が向上する。
【0165】
なお、上記の構成に本願明細書に例が示された他の構成を適宜追加した場合、すなわち、上記の構成としては言及されなかった本願明細書中の他の構成が適宜追加された場合であっても、同様の効果を生じさせることができる。
【0166】
また、以上に記載された実施の形態によれば、モデルは、機器の状態が満たす性質を含む。このような構成によれば、遷移に要する時間を含むモデルに基づいて、遷移に要する時間を含む要求仕様を満たすように制御則を導出するため、当該制御則に基づいて生成されるプログラムにおいて時間に関する制御(最適化)がなされ、制御対象の動作効率を高めることができる。また、生成されるプログラムの変換ルールはラダー言語に限定されないため、プログラムの言語変換の自由度が向上する。
【0167】
また、以上に記載された実施の形態によれば、プログラム生成装置は、要求仕様Bを、オートマトンの形式に変換するための要求仕様変換部6を備える。制御則導出部4(または、制御則導出部4A、制御則導出部4B)は、モデルとオートマトンの形式に変換された要求仕様Bとに基づき、要求仕様Bを満たすように制御則を導出する。このような構成によれば、制御則導出部4における制御則の導出が容易となり、制御則が導出されるまでの処理時間を短くすることができる。
【0168】
また、以上に記載された実施の形態によれば、プログラム生成装置は、要求仕様Bを満たす機器の状態の遷移に関する情報と、要求仕様Bを満たさない機器の状態の遷移に関する情報とに基づいて、機器の状態の遷移に関する要求仕様Bを学習するための要求仕様学習部9(または、要求仕様学習部9D)を備える。制御則導出部4C(または、制御則導出部4D)は、モデルと要求仕様学習部9(または、要求仕様学習部9D)によって学習された要求仕様Bとに基づき、要求仕様Bを満たすように制御則を導出する。このような構成によれば、要求仕様Bが直接入力されなくても、要求仕様関連情報Cに基づいて要求仕様Bを学習して得ることによって、制御則を導出することができる。
【0169】
また、以上に記載された実施の形態によれば、要求仕様学習部9Dには、少なくとも一部の要求仕様Bが入力される。このような構成によれば、一部の要求仕様Bを参照しつつ、要求仕様関連情報Cに基づく学習によって得られる要求仕様を補助的に用いることができる。よって、ユーザーが要求仕様Bを完全に記述できない場合でも、制御対象がユーザーが所望するように動作するプログラムを生成することができる。
【0170】
また、以上に記載された実施の形態によれば、プログラム生成装置は、機器の状態の遷移の回数を制限するしきい値を、制御則導出部4に入力するためのパラメータ入力部7を備える。制御則導出部4は、しきい値を超えない遷移の回数である制御則を導出する。このような構成によれば、パラメータ入力部7で設定する整数値Kを調整して状態の遷移の回数を制限することで、許容することができる実行時間となるプログラムを、短時間で得ることが可能となる。
【0171】
また、以上に記載された実施の形態によれば、プログラム生成装置は、少なくとも設計情報Aと、モデルと、制御則とに基づいて、制御対象の外観および動作のうちの少なくとも一方を表示するための表示部8を備える。このような構成によれば、表示部8に表示される制御対象の外観および動作を適宜確認することができるため、生成されたプログラムによる制御対象の動作の確認、または、要求仕様の修正などに利用することができ、結果としてユーザーが所望するプログラムを得やすくなる。
【0172】
以上に記載された実施の形態によれば、プログラム生成方法において、少なくとも、制御対象を構成する機器の複数の状態と、制御対象とコントローラとの間で入出力される信号と機器の状態とのそれぞれの関係と、機器の状態の変化のそれぞれに要する時間とを含む設計情報Aを、少なくとも、機器の状態の集合である状態集合と、コントローラから制御対象へ入力される信号の集合である入力集合と、状態集合に含まれる機器の状態間の、制御対象へ入力される信号に起因する遷移を表す関数である遷移関数と、遷移関数で示されるそれぞれの遷移に要する時間とを含むモデルに変換する。そして、機器の状態の遷移に要する時間に関する仕様を含む要求仕様Bと、モデルとに基づき、要求仕様Bを満たすように、機器のそれぞれの状態と、コントローラから制御対象へ入力される信号とを対応づける制御則を導出する。そして、制御則に基づいてプログラムを生成する。
【0173】
このような構成によれば、遷移に要する時間を含むモデルに基づいて、遷移に要する時間を含む要求仕様を満たすように制御則を導出するため、当該制御則に基づいて生成されるプログラムにおいて時間に関する制御(最適化)がなされ、制御対象の動作効率を高めることができる。また、生成されるプログラムの変換ルールはラダー言語に限定されないため、プログラムの言語変換の自由度が向上する。
【0174】
なお、特段の制限がない場合には、それぞれの処理が行われる順序は変更することができる。
【0175】
また、上記の構成に本願明細書に例が示された他の構成を適宜追加した場合、すなわち、上記の構成としては言及されなかった本願明細書中の他の構成が適宜追加された場合であっても、同様の効果を生じさせることができる。
【0176】
<以上に記載された実施の形態の変形例について>
以上に記載された実施の形態では、それぞれの構成要素の寸法、形状、相対的配置関係または実施の条件などについても記載する場合があるが、これらはすべての局面においてひとつの例であって、限定的なものではないものとする。
【0177】
したがって、例が示されていない無数の変形例、および、均等物が、本願明細書に開示される技術の範囲内において想定される。たとえば、少なくとも1つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも1つの実施の形態における少なくとも1つの構成要素を抽出し、他の実施の形態における構成要素と組み合わせる場合が含まれるものとする。
【0178】
また、矛盾が生じない限り、以上に記載された実施の形態において「1つ」の構成要素が備えられる、と記載された場合に、当該構成要素が「1つ以上」備えられていてもよいものとする。
【0179】
また、本願明細書における説明は、本技術に関連するすべての目的のために参照され、いずれも、従来技術であると認めるものではない。
【0180】
また、以上に記載された実施の形態で記載されたそれぞれの構成要素は、ソフトウェアまたはファームウェアとしても、それと対応するハードウェアとしても想定され、その双方の概念において、それぞれの構成要素は「部」または「処理回路」(circuitry)などと称される。
【0181】
また、本願明細書に開示される技術は、それぞれの構成要素が複数の装置に分散して備えられる場合、すなわち、複数の装置の組み合わせとしてのシステムのような態様であってもよいものとする。
【符号の説明】
【0182】
1 設計情報入力部、2,3001 設計情報変換部、3 要求仕様入力部、4,4A,4B,4C,4D,3002 制御則導出部、5,3003 プログラム生成部、6 要求仕様変換部、7 パラメータ入力部、8 表示部、9,9D 要求仕様学習部、1102A,1102B 処理回路、1103 記憶装置、1104A,1104B 入力装置、1105A,1105B 出力装置。