IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィの特許一覧

特表2024-501588PLCプログラムの正しさをチェックするコンピュータ実施方法
<>
  • 特表-PLCプログラムの正しさをチェックするコンピュータ実施方法 図1
  • 特表-PLCプログラムの正しさをチェックするコンピュータ実施方法 図2
  • 特表-PLCプログラムの正しさをチェックするコンピュータ実施方法 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-12
(54)【発明の名称】PLCプログラムの正しさをチェックするコンピュータ実施方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20240104BHJP
   G06F 11/36 20060101ALI20240104BHJP
【FI】
G05B19/05 A
G06F11/36 108
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023563498
(86)(22)【出願日】2021-12-14
(85)【翻訳文提出日】2023-06-22
(86)【国際出願番号】 JP2021046897
(87)【国際公開番号】W WO2022176369
(87)【国際公開日】2022-08-25
(31)【優先権主張番号】21158306.7
(32)【優先日】2021-02-19
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】503163527
【氏名又は名称】ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ
【氏名又は名称原語表記】MITSUBISHI ELECTRIC R&D CENTRE EUROPE B.V.
【住所又は居所原語表記】Capronilaan 46, 1119 NS Schiphol Rijk, The Netherlands
(74)【代理人】
【識別番号】100110423
【弁理士】
【氏名又は名称】曾我 道治
(74)【代理人】
【識別番号】100111648
【弁理士】
【氏名又は名称】梶並 順
(74)【代理人】
【識別番号】100122437
【弁理士】
【氏名又は名称】大宅 一宏
(74)【代理人】
【識別番号】100147566
【弁理士】
【氏名又は名称】上田 俊一
(74)【代理人】
【識別番号】100188514
【弁理士】
【氏名又は名称】松岡 隆裕
(72)【発明者】
【氏名】クージノー、ドゥニ
(72)【発明者】
【氏名】ファイソル、フロリアン
(72)【発明者】
【氏名】モントレ、ダヴィド
(72)【発明者】
【氏名】井上 裕昭
【テーマコード(参考)】
5B042
5H220
【Fターム(参考)】
5B042HH08
5H220AA04
5H220AA05
5H220AA06
5H220BB09
5H220CC07
5H220CX01
5H220CX09
5H220DD04
5H220GG02
5H220HH01
5H220JJ07
5H220JJ12
5H220JJ32
5H220JJ34
5H220JJ35
5H220JJ36
5H220JJ41
5H220JJ51
5H220KK08
5H220LL03
5H220LL04
5H220LL06
(57)【要約】
本発明は、通常はタイミングチャートとして示される機能仕様によって記述されるPLCプログラムの正しさをチェックする方法に関する。本方法は、PLCプログラムをモデルに変換することと、タイミングチャートを変換し、このタイミングチャートをモデルに統合することと、抽象意味論を計算して、タイミングチャートに最終的に欠落している情報を推論することと、タイミングチャート検証を充足するために、モデル及び既定のPLC形式化命令から検証される特性を述語変換し演繹することと、上記特性が常に検証されるか否かを解明及びチェックすること、又は、反例を提供することと、この反例をPLCモデルエラーイベント初期構成に変換することと、実行をシミュレーションすることと、状態変数値及びイベント実行変数値をアセンブルすることと、PLCプログラムに逆変換することとを含む。
【特許請求の範囲】
【請求項1】
PLCプログラムの正しさをチェックするコンピュータ実施の方法であって、前記PLCプログラムは、時間機能仕様データによって記述されるプログラマブルロジックコントローラのタイプのコンピュータプログラムに対応し、前記方法は、
前記PLCプログラムをモデルに変換すること(S1)と、
前記時間機能仕様データを変換し、変換された前記時間機能仕様データを前記モデルに統合すること(S2)と、
抽象意味論を計算して、前記時間機能仕様データに欠落している情報を推論すること(S3)と、
前記PLCプログラムが前記時間機能仕様データを充足するように検証される特性を前記モデル及び既定のPLC形式化命令から演繹するために、述語変換を行うこと(S4)と、
前記特性が常に検証されるか否かを解明及びチェックすること、又は、反例を提供すること(S5)と、
を含む、方法。
【請求項2】
前記方法は、前記S5の後に、
前記反例をPLCモデルエラーイベント初期構成に変換すること(S6)と、
少なくとも状態変数値及びイベント初期変数値をアセンブルすること(S8)と、
PLCプログラムに逆変換すること(S9)と、
を更に含む、請求項1に記載の方法。
【請求項3】
前記S6において、前記反例の変換は、
前記時間機能仕様データによって記述される特定のイベント後に充足されていない出力値と、
仕様違反をもたらす少なくとも1つの変数値と、
のうちの少なくとも一方を与える、請求項2に記載の方法。
【請求項4】
前記方法は、前記S6の後であって前記S8の前に、
初期構成に加えて、イベント実行の中間値を取得するために、実行をシミュレートすること(S7)、
を更に含み、
前記S8において、状態変数値及びイベント初期変数値、並びに更なる中間変数値をアセンブルする、請求項2又は3に記載の方法。
【請求項5】
前記S7において、モデルイベント実行中間値を、前記S6から取得された前記PLCモデルエラーイベント初期構成と、前記既定のPLC形式化命令とから計算し、前記PLCプログラムの実行をシミュレートし、前記S6において与えられるイベント初期構成から最後の非充足イベントまで、イベント実行中の内部メモリ及び出力の中間値を再計算する、請求項4に記載の方法。
【請求項6】
前記S8において、前記PLCプログラムの開始から最後の非充足イベントまで、前記状態変数値及び前記イベント初期変数値が状態中及びイベント実行中に取ることができる値の領域を定義する完全なエラーシナリオを取得するために、前記S7からのイベント実行値及び前記S3からの前記状態変数値の範囲をアセンブルする、請求項4又は5に記載の方法。
【請求項7】
前記S9において、前記PLCプログラムへの逆変換は、最後の非充足イベントまで、前記PLCプログラムの実行の各イベント及び各状態の入力、内部メモリ及び出力の値を含む中間値情報及びモデル仕様違反シナリオデータとともに与える、請求項2~6のいずれか1項に記載の方法。
【請求項8】
前記S1において取得される前記モデルは、PLCプリミティブの既定のモデルを指し、一階論理の論理フレームワークで表される、請求項1~7のいずれか1項に記載の方法。
【請求項9】
少なくとも整数型参照及びブール型参照が、前記PLCプログラムの入力、内部メモリ及び出力をモデル化するのに使用される、請求項8に記載の方法。
【請求項10】
前記S2において引数として入力される前記時間機能仕様データは、PlantUMLのタイプの言語で表されるタイミングチャートとして与えられる、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記S2の実施は、述語論理の論理フレームワークで表される仕様アサーションを与え、ループに組み込まれる前記モデルの複数の連続したコピーが、前記タイミングチャートによって与えられる連続した状態及びイベントを表すのに使用される、請求項10に記載の方法。
【請求項12】
前記S3において、前記PLCプログラムの実行状態中に取る変数値の範囲は、少なくとも前記時間機能仕様データにおいて指定されていない変数のうちのいくつかについて推論される、請求項1~11のいずれか1項に記載の方法。
【請求項13】
前記S4において、ダイクストラの最弱事前条件計算法が、特性が充足されている場合に、前記PLCプログラムが対応する機能仕様を常に充足するために使用される、請求項1~12のいずれか1項に記載の方法。
【請求項14】
前記S5において、自動化されたソルバーが、
前記S4において生成された前記特性を証明すること、又は、
前記特性が充足されていない前記モデルにおける入力及び内部メモリの値によって表される前記特性の反例を見つけること、
を行うために使用される、請求項1~13のいずれか1項に記載の方法。
【請求項15】
コンピュータプログラムであって、前記コンピュータプログラムがコンピュータデバイスによって実行されると、請求項1~14のいずれか1項に記載の方法を前記コンピュータデバイスに実行させる命令を含む、コンピュータプログラム。
【請求項16】
請求項1~14のいずれか1項に記載の方法を実行する処理回路を備える、コンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックコントローラに関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(以下「PLC」という)は、組立ライン等の製造プロセス、又はロボットデバイスのオートメーションコントローラとして使用される産業用のデジタルコンピュータである。
【0003】
PLCは、ハードワイヤードリレー、タイマー及びシーケンサーに置き換えられるもので、入力及び内部メモリの値から出力の計算を表すソフトウェアによってシミュレーションすることができる。
【0004】
通常、IEC61131-3規格は、特にラダーロジック、ファンクションブロック、ストラクチャードテキストのようなPLCソフトウェアを開発するのに使用できるいくつかのプログラミング言語を定義している。ラダーロジックは、例えば、リレーロジックのハードウェアの回路図を使用して、PLCプログラムをグラフィカルな図で表すのに対して、一方、ストラクチャードテキストはテキスト型のプログラミング言語である。
【0005】
従来のソフトウェアの開発では、開発時間の大部分がデバッグに充てられてきた。特にファクトリーオートメーション(FA)の場合、工場におおてバグが発生すると、人的及び物的損害、並びにプラント閉鎖時間の観点から極めて多くのコストを要するので、プログラムのデバッグは非常に重要である。特にPLCプログラムのデバッグは難しく、多くの時間及びコストを要する。バグは、プログラムの入出力及びローカルメモリの値に関する或る特性の、プログラムの或る箇所における違反と見なすことができる。
【0006】
デバッグの目的は、作成途中においてコードを実行する前に、それらの特性違反を検出すること、すなわちプログラムを実行するときに特性違反をもたらす入力及び内部メモリの初期値を見つけることにある。プログラムの実行可能なすべての動作をチェックすることはほぼ不可能である(及びあまりに多くのコストを要する)ので、通常の方法では、いくつかのテストを開発して実行する(すなわち、特定の初期構成に対してプログラムを実行し、その挙動をチェックする)ものである。
【0007】
しかしながら、テストは、本質的に網羅的なものではなく、その開発には、非常に多くのコスト及び時間を要する。
【0008】
これらの制限を回避する解決策は、形式的演繹的検証を行うことである。
【0009】
演繹的検証は、いくつかの仮定を所与として、プログラムが全ての起こり得る実行について意図した挙動及び結果をもたらすことをチェックすることに基づいている。演繹的検証を使用してPLCプログラムにランタイムエラーがないことをチェックする原理は、特許文献1(本明細書の末尾にある先行引用文献のリストにおけるラベル[1])の文書に開示されている。
【0010】
高レベルの特性の場合には、PLCプログラムの意図した挙動は、通常、タイミングチャート、すなわち、いくつかの入力値の変化に従った出力値の時間の変化として記述される。例として、タイミングチャート仕様を図1に示す。X変数の変化は、入力値に関する仮説を反映する一方、Y変数の変化は、予想出力値を表している。
【0011】
入力値の変化(又はタイマーの終了)を、本明細書では「イベント」と呼ぶ。そのようなイベントは、PLCプログラムの1回の実行に対応する。仕様を検証することは、出力値がタイミングチャートに従って各イベントで変化する(又は変化しない)ことと、2つのイベントの間で出力値が変化しないこととを検証することである。これらのイベント間は、本明細書では「状態」と呼ばれ、PLCプログラムの不定回数の連続実行に対応する。
【0012】
PLCプログラムがタイミングチャート仕様を充足していることを検証する方法として、2つの既知の方法に言及することができる。
【0013】
「テスト」は、最初のものであり、最も一般的なものである。テストは、種々の変化に対するさまざまなシナリオを伴う初期構成からプログラムを実行することである(状態中の実行数のみが変化することができ、タイミングチャートによって与えられる入力変化の順序は変化しない)。テストに伴う問題は、テストが十分に効率的でないことである。多くの異なる構成を実行することは、人的時間及びコンピュータ処理(CPU)時間の点で多くのコストを要し、異なる時限の入力展開の数は無数にあるので、全ての実行をテストすることは不可能であり、テストは網羅的なものとなり得ない。すなわち、テストでエラーが見つからない場合であっても、このことは、エラーが決して存在し得ないことを意味するものではない。また、テストでエラーが検出されると、開発者が入手することができる唯一の情報は、エラーをもたらす入力及び内部メモリの初期構成である。したがって、プログラムを何度か実行した後に、エラーの根本的な理由、及び、検討対象の初期構成がプログラムの別の箇所でなぜエラーをもたらすのかを理解することは、多くの場合困難である。
【0014】
タイミングチャート仕様を検証する最先端の方法は、モデルチェック(例えば、非特許文献1および本明細書の末尾に示す引用文献[2]に開示されている)である。モデルチェックは、状態とそれらの状態の間の遷移とを有するオートマトンの形で、プログラムのモデルを定義することである。次に、モデルチェックは、オートマトンにおける状態間の種々のパスを用いてプログラムの種々の実行をシミュレートする。エラーは、到達すべきでない特定の状態によってモデル化される。モデルチェックは、それらの状態が到達不可能であることを検証する。
【0015】
制限としては、モデルチェックが多くのコスト及び時間(CPU動作時間)を要し、網羅的でないことがある。
【0016】
モデルチェックでは、同じプログラムの連続した実行を検討することができるが、複雑度は多くの場合に指数関数的であり、その結果、プログラムの実行のシミュレーションには、多くのCPU時間を急速に必要とする。したがって、この方法は、通常の産業規模のほとんどのPLCプログラムについて網羅的なものとなり得ない。
【0017】
要するに、PLCプログラムのタイミングチャート仕様の検証に対処するためには、テストは可能な方法ではあるが網羅的でなく、一般に非効率的であり、検出されたエラーのトレーサビリティが得られない。モデルチェックは、同じプログラムの連続した実行を検討することができ、検証が失敗したときに実行トレースを提供することができるため、一部については僅かに効率的である。しかし、モデルチェックは、大規模な産業用プログラムの場合には引き続き比較的高価であり、依然として網羅的でない。
【0018】
演繹的検証は、網羅性保証を提供するが、時間的特性検証には適していない。実際、演繹的検証は、プログラムの変数の進展を完全に知ることを必要とするが、タイミングチャートは、何らかの他のプログラムの変数の進展が欠落していること、2つの状態変化の間の経過時間が常に知られているとは限らないことの点で、仕様が不十分である。その上、タイミングチャートには、演繹的検証に直接アクセス可能でないプログラムのメタプロパティを構成する固定時限(上述した図1の例では3秒)のイベントが含まれる。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】欧州特許第3715975号
【非特許文献】
【0020】
【非特許文献1】Clarke, Edmund & Grumberg, Orna & Peled, Doron. (2001). Model Checking.
【発明の概要】
【0021】
本発明は、抽象意味論計算を使用して、タイミングチャート仕様の演繹的検証を可能にするとともに網羅性保証を提供する。
【0022】
本発明は、上記状況を改善することを目的とする。
【0023】
そのために、本発明は、PLCプログラム(すなわち、任意のPLCプログラミング言語、例えば、IEC61131-3規格によって定義されるもののうちの1つで記述されるプログラム)の正しさをチェックするコンピュータ実施方法を提案する。より詳細には、このPLCプログラムは、時間機能仕様データ(図1を参照して上記で示したようなタイミングチャートのデータ等)によって記述されるプログラマブルロジックコントローラのタイプのコンピュータプログラムに対応する。本方法は、
PLCプログラムをモデルに変換すること(S1)と、
時間機能仕様データを変換し、変換された時間機能仕様データをモデルに統合すること(S2)と、
抽象意味論を計算して、時間機能仕様データに欠落している情報を推論すること(S3)と、
PLCプログラムが時間機能仕様データを充足するように検証される特性をモデル及び既定のPLC形式化命令から演繹するために、述語変換を行うこと(S4)と、
上記特性が常に検証されるか否かを解明及びチェックすること、又は、反例を提供すること(S5)と、
を含む。
【0024】
この方法の実施によって、その後、特性が検証されないときのPLCプログラムの最初の箇所を検出し、プログラマに適切な訂正を行わせることが可能になる。
【0025】
S3に従った抽象意味論の計算に続いて、その後、演繹的検証をS4において実施することは、タイミングチャート等の時間機能仕様によって記述されるPLCプログラムにとって特に効果的であることが分かっている。
【0026】
特定の実施の形態において、本方法は、S5の後に、
上記反例をPLCモデルエラーイベント初期構成に変換すること(S6)と、
少なくとも状態変数値及びイベント初期変数値をアセンブルすること(S8)と、
PLCプログラムに逆変換すること(S9)と、
を更に含むことができる。
【0027】
例えば、S6において、上記反例の変換は、
上記時間機能仕様データによって記述される特定のイベント後に充足されていない出力値と、
仕様違反をもたらす少なくとも1つの変数値と、
のうちの少なくとも一方を与えることができる。
【0028】
最後に、この一連のステップS1~S9によって、プログラマは、S9の後に、モデル仕様違反のシナリオの結果として発生する可能性があるバグを明確に知ることができる。
【0029】
例えば、一実施の形態では、S9において、PLCプログラムへの逆変換は、最後の非充足イベントまで、イベントごとにおよびPLCプログラムの実行状態ごとに、入力、内部メモリ及び出力の値を含む中間値情報及びモデル仕様違反シナリオデータを与えることができる。
【0030】
このような中間値は、例えば、特定の実施の形態において、S6の後であってS8の前に、
初期構成に加えて、イベント実行の中間値を取得するために、実行をシミュレートすること(S7)、
を実施することによって獲得することができ、
したがって、S8において、状態変数値及びイベント初期変数値、並びに更なる中間変数値をアセンブルすることができる。
【0031】
例えば、イベント実行の中間値は、通常、前述の初期構成から取得することができる。
【0032】
実際、S6において、前述の反例は、例えば、タイミングチャートの特定のイベント後に(又はより一般的には前述の時間機能仕様データによって)充足されていない出力値を含む情報に変換することができる。これらの情報は、それによって、対応する仕様違反をもたらす変数の値を与える。
【0033】
変数のこれらの値は、より詳細にはPLCプログラムモデルのイベント初期構成を記述することができ、タイミングチャートのイベントの開始時および最後の非充足イベントまでにおける入力及び内部メモリの値に対応することができる。そのような非充足イベントに対応するバグが修正されると、新たな最後の非充足イベントに遭遇するまで、本方法をS1から再び開始することができる。最後に、本方法によって、タイミングチャート仕様の任意の箇所における違反を検出し、タイミングチャートの連続した箇所の全体的な一貫性をチェックすることが可能になる。
【0034】
その上、S7を実施するために、S7において、モデルイベント実行中間値は、S6から取得されたPLCモデルエラーイベント初期構成と、あらかじめ定義されたPLC形式化命令とから計算することができる。したがって、これにより、PLCプログラムの実行をシミュレートし、S6において与えられるイベント初期構成から最後の非充足イベントまで、イベント実行中の内部メモリ及び出力の中間値を再計算することが可能になる。
【0035】
さらに、S8において、PLCプログラムの開始から最後の非充足イベントまで、前述の変数が状態中及びイベント実行中に取ることができる値の範囲を定義する完全なエラーシナリオを取得するために、S7からのイベント実行値及びS3からの状態変数値変域がアセンブルされる。
【0036】
上記に示した最初のステップS1~S5の実施の形態の例は、以下で示される。
【0037】
例えば、S1の実施のために、S1から取得されるモデルは、PLCプリミティブの既定のモデルを指し、一階論理の論理フレームワークで表すことができる。
【0038】
通常、少なくとも整数型参照及びブール型参照は、PLCプログラムの入力、内部メモリ及び出力をモデル化するのに使用することができる。
【0039】
また、S2において引数として入力される時間機能仕様データは、PlantUMLのタイプの言語で表されるタイミングチャートのデータ形式で与えることができる(例えば、以下に示す引用文献[5]に記載されている)。
【0040】
S2の実施は、述語論理の論理フレームワークで表される仕様アサーションを与えることができる。したがって、場合によってはループに組み込まれる複数の連続したモデルのコピーを使用して、タイミングチャートによって与えられる連続した状態及びイベントを表すことができる。
【0041】
S3において、PLCプログラムの実行状態中に取る変数値の範囲は、少なくとも時間機能仕様データにおいて指定されていないこれらの変数の一部について推論することができる。
【0042】
一実施の形態において、S4において、ダイクストラの最弱事前条件計算法を使用して、生成された特性が充足している場合に、PLCプログラムが対応する機能仕様を常に満たすことを保証することができる。
【0043】
一実施の形態において、S5において、自動化されたソルバーは、
S4において生成された上記特性を証明すること、又は、
上記特性が充足されていないモデルにおける入力及び内部メモリの値によって表される上記特性の反例を見つけること、
を行うために使用することができる。
【0044】
本発明はまた、コンピュータプログラムであって、プログラムがコンピュータデバイスによって実行されると、前述の方法をコンピュータデバイスに実行させる命令を含む、コンピュータプログラムも対象とする。本発明は、そのようなコンピュータプログラムの命令データを記憶する非一時的コンピュータ可読媒体も対象とする。
【0045】
本発明はまた、前述の方法を実行する処理回路を備える、コンピュータデバイスも対象とする(そのような処理回路の一例は、後述する図3に示す)。
【0046】
本発明の実施形態のより詳細な内容及び例については、以下で添付図面を参照して説明する。
【図面の簡単な説明】
【0047】
図1】PLCプログラムのタイミングチャートの一例を示す図である。
図2】特定の実施形態における、本発明による方法の一連のステップの一例を示す図である。
図3】特定の実施形態における、本発明によるコンピュータデバイスの一例を概略的に示す図である。
【発明を実施するための形態】
【0048】
上記で示したように、プログラマブルロジックコントローラ(PLC)は、特に組立ライン及び電子ロボットを制御することができる。PLCは、特にタイミングチャートとして記述される機能仕様についてデバッグするのが難しい。バグは、ダウンタイムの観点並びに時には人間及びハードウェアの損傷の観点から、ファクトリーオートメーションシステムでは多くのコストを要する。タイミングチャート仕様に従ってPLCプログラムの正しさをチェックする現在の技法は、網羅的ではなく、多くの時間を要し、一般的に、バグが検出されたときに問題を理解するのに効率的でない。
【0049】
以下では、タイミングチャートに従ってPLCプログラムの正しさをチェックする、網羅的且つ効率的であるとともに自動化された解決策を提案する。この解決策は、タイミングチャートから欠落情報を推論する抽象意味論計算と、全てのバグが検出されることを保証する演繹的検証との双方を使用する。この解決策は、タイミングチャート仕様の任意の箇所における違反を検出し、タイミングチャートの連続した箇所の全体的な一貫性をチェックする。この解決策は、違反を検出した場合に、そのシナリオを、タイミングチャートの初期構成から不良箇所までの実行シーケンスとしてプログラマに表示することができる。この解決策は、配備時間を安全に削減する効率的なツールを提供するとともに、ファクトリーオートメーション業界におけるPLCプログラムの信頼度を高める。
【0050】
抽象意味論計算(以下に示すステップS3によるもの)、及び
演繹的検証(以下に示すステップS4によるもの)、
の組み合わせは、タイミングチャート仕様によって記述されるPLCプログラムに特に適用されるときに高い効率性を示す。
【0051】
実際、演繹的検証は、検証する特性に関する網羅性を保証するが、2つのイベント間の実行の数が任意に大きな場合、したがって、内部メモリ変数が2つのイベント中に取ることができる値が未知である時間特性検証向けには適応しない。一方、抽象意味論計算は、プログラムの任意の数の連続する実行の間に変数が取ることができる値の過剰近似を与える可能性がある。抽象意味論計算も、網羅性を保証するが、演繹的検証ほどスケーラブルでない。したがって、演繹的検証は、通常の産業規模の完全なPLCプログラム上で動作することができない。本明細書で提案する解決策は、網羅性そ保証し、したがって、実世界の産業用PLCプログラムにスケーラブルでもある検証をもたらす演繹的検証を行うのに必要な変数値情報を推論するために、PLCプログラムの特定の箇所に抽象意味論計算を使用するものである。
【0052】
図2は、PLC時間仕様の自動化された演繹的検証のこの解決策の可能な実施態様の全体的なアーキテクチャを示している。この実施態様は、9つの異なるプロセスステップに分割される。
【0053】
ステップS1は、PLCプログラムをモデルに自動的に変換することに関する。このプロセスは、PLCプログラムを、あらかじめ定義されたPLCプリミティブのモデル、すなわち、論理チェッカー(接点)、アクチュエータ(コイル)、論理回路及び命令を参照するモデルに自動的に変換する。このモデルは、一階論理の論理フレームワークにおいて表すことができる。
【0054】
整数型参照及びブール型参照を使用して、プログラムの入力、内部メモリ及び出力をモデル化することができる。多様型を使用して、モデルプリミティブの数を因数分解することができる。このプロセスでは、モデル要素を元のPLC要素にリンクするためのコード位置のような情報、又はプロセスの後続で使用されるツールをインストルメントする命令のような情報をモデル要素に追加することができる。
【0055】
ステップS2は、タイミングチャートを変換し、タイミングチャートをプログラムモデルに統合することに関する。プログラムモデルにおける仕様アサーションへのタイミングチャートの変換は、場合によってはPlantUML(引用文献[5])のような所与の言語から行うことができる。それらのアサーションは、述語論理の論理フレームワークにおいて表すことができる。
【0056】
場合によってはループに組み込まれるプログラムモデルのいくつかの連続したコピーを使用して、タイミングチャートによって与えられる連続した状態及びイベントを表すことができる。
【0057】
ステップS3は、抽象意味論を計算して、タイミングチャートに欠落している必要な情報を推論することに関する。このプロセスは、健全な抽象意味論計算、例えば抽象解釈(引用文献[6])を使用して、その後の演繹的検証に使用される欠落情報を推論する。例えば、このプロセスは、特に値がタイミングチャートにおいて指定されていない内部変数について、ループ不変量、すなわち(その状態中に起こり得るプログラムの実行の数がどのようなものあっても)変数が状態中に取ることができる値の範囲を推論することができる。この評価情報がない場合には、演繹的検証は、状態後に検証されるべき特性を取り扱うことができない。
【0058】
ステップS4は、このモデル及び或る既定のPLC形式化から、述語を変換するもの、より詳細には検証する特性を演繹するものである。このプロセスは、タイミングチャート検証を充足するために、PLCプログラム及びタイミングチャートのモデル変換を命令の既定のモデルと組み合わせて、PLCプログラムの実行シーケンスの或る箇所において多く持続する特性を計算する。このプロセスは、ダイクストラの最弱事前条件計算法[3]を使用して、そのような計算が、計算される特性のサイズを最小にするとともに健全である(すなわち、特性が充足される場合には、PLCプログラムが仕様を常に充足する)ことを保証することができる。
【0059】
ステップS5は、特性が常に検証されるか否かを自動的に解明及びチェックするもの、又は、反例を提供するものである。このプロセスは、ステップS4において生成された特性を形式的に証明するために、又は、これらの特性の反例を見つけるために、自動化ソルバー(SMTソルバー[4]のようなもの)を使用する。前者の場合、このプロセスは、PLCプログラムが、任意の実行シーケンスについてタイミングチャート仕様を完全に充足することを、ステップS4の計算の健全性とともに保証する。後者の場合、このプロセスは、特性の反例、すなわち特性が充足されていないモデルにおける入力及び内部メモリの値を提供する。
【0060】
ステップS6は、特性反例をPLCモデルエラーイベント初期構成に変換するものである。ステップS5が、ステップS4において生成された特性の反例を見つけた場合、このステップS6は、この充足されていない特性を、タイミングチャートの特定のイベント後にどの出力値が充足されていないのかの情報に変換するとともに、関連した反例を、この仕様違反をもたらす変数の値、すなわちPLCプログラムのモデルのイベント初期構成(すなわち、充足されていないイベントまで、タイミングチャートのイベントの開始時における入力及び内部メモリの値に対応するモデル要素の値)に変換する。
【0061】
ステップS7は、実行をシミュレートするものである。そのために、モデルイベント実行中間値が、PLCモデルエラーイベント初期構成から計算される。このステップS7は、別のPLC形式化を使用してPLCプログラムの実行をシミュレートし、ステップS6において与えられたイベント初期構成から充足されていないイベントまで、イベント実行中の内部メモリ及び出力の全ての中間値を再計算することができる。
【0062】
ステップS8は、状態変数値及びイベント実行変数値をアセンブルするものである。このプロセスは、完全なエラーシナリオを取得するために、ステップS7からのイベント実行値及びステップS3からの状態変数値範囲をアセンブルする。
【0063】
このステップS8は、ステップS3及びS7からの情報を組み合わせて、PLCの開始から、充足されていないイベントまで、完全な仕様違反シナリオ、すなわち変数が状態中及びイベント実行中に取ることができる値の範囲を与えることができる。
【0064】
ステップS9は、PLCプログラムへの逆変換に関する。このプロセスは、モデル中間値を、中間値情報を有するPLCプログラムに逆変換し、例えば、結果を印刷したものをユーザに提示することができる。ステップS9のプロセスは、最終的に、仕様が充足されていないイベントまで、モデル仕様違反シナリオを、各イベント及び各状態の入力、内部メモリ及び出力の値を有する元のPLCプログラムに逆変換することができる。このプロセスは、それらの値を、2値を表す色及び整数値を表すラベルで装飾された元のPLCプログラムの値として印刷することができる。このエラーシナリオは、コード位置及びステップS1においてモデルに追加された情報とともに、発見された違反及びこの違反を修正する方法に関する非常に完全な概要を与える。
【0065】
本発明はまた、図2を参照して上述した方法を実行する処理回路を備える、コンピュータデバイスも対象とする。
【0066】
次に図3を参照する。そのような処理回路は、
PLCプログラムと、そのタイミングチャートと、場合によっては既定のPLC形式化命令とのデータを受信する入力インターフェースINと、
本発明によるコンピュータプログラムの命令のデータと、コンピュータプログラムの実行を実施するのに必要である可能な一時的データ及び/又は非一時的データとを記憶するメモリMEMと、
記憶されたコンピュータプログラムの命令を読み出して実行するためにメモリMEMと協調することができるプロセッサPROCと、
訂正されたPLCプログラムデータと、各イベント及び各状態の入力、内部メモリ及び出力の値とを、仕様が充足されていないイベントまで提供する出力インターフェースOUTと、
を備えることができる。
【0067】
(引用文献)
文献1:欧州特許公開: EP3715975.
文献2:Clarke, Edmund & Grumberg, Orna & Peled, Doron. (2001). Model Checking.
文献3:E.W. Dijkstra. Hierarchical ordering of sequential processes, Acta Informatica , vol. 1, No.2, 1971, pp 115-138.
文献4:C Barrett, R Sebastiani, S Seshia, and C Tinelli, "Satisfiability Modulo Theories." In Handbook of Satisfiability, vol. 185 of Frontiers in Artificial Intelligence and Applications, (A Biere, M J H Heule, H van Maaren, and T Walsh, eds.), IOS Press, Feb. 2009, pp. 825-885.
文献5:Drawing UML with PlantUMLPlantUML Language Reference Guide. http://plantuml.com/guide
文献6:Cousot, Patrick; Cousot, Radhia (1977). "Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints". Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977. ACM Press. pp. 238-252.
図1
図2
図3
【手続補正書】
【提出日】2023-06-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
PLCプログラムの正しさをチェックするコンピュータ実施の方法であって、前記PLCプログラムは、時間機能仕様データによって記述されるプログラマブルロジックコントローラのタイプのコンピュータプログラムに対応し、前記方法は、
前記PLCプログラムをモデルに変換すること(S1)と、
前記時間機能仕様データを変換し、変換された前記時間機能仕様データを前記モデルに統合すること(S2)と、
抽象意味論を計算して、前記時間機能仕様データに欠落している情報を推論すること(S3)と、
前記PLCプログラムが前記時間機能仕様データを充足するように検証される特性を前記モデル及び既定のPLC形式化命令から演繹するために、述語変換を行うこと(S4)と、
前記特性が常に検証されるか否かを解明及びチェックすること、又は、反例を提供すること(S5)と、
を含み、
前記方法は、前記S5の後に、
前記反例をPLCモデルエラーイベント初期構成に変換すること(S6)と、
少なくとも状態変数値及びイベント初期変数値をアセンブルすること(S8)と、
PLCプログラムに逆変換すること(S9)と、
を更に含み、
前記S9において、前記PLCプログラムへの逆変換は、最後の非充足イベントまで、前記PLCプログラムの実行の各イベント及び各状態の入力、内部メモリ及び出力の値を含む中間値情報及びモデル仕様違反シナリオデータとともに与える、方法。
【請求項2】
前記S6において、前記反例の変換は、
前記時間機能仕様データによって記述される特定のイベント後に充足されていない出力値と、
仕様違反をもたらす少なくとも1つの変数値と、
のうちの少なくとも一方を与える、請求項に記載の方法。
【請求項3】
前記方法は、前記S6の後であって前記S8の前に、
初期構成に加えて、イベント実行の中間値を取得するために、実行をシミュレートすること(S7)、
を更に含み、
前記S8において、状態変数値及びイベント初期変数値、並びに更なる中間変数値をアセンブルする、請求項又はに記載の方法。
【請求項4】
前記S7において、モデルイベント実行中間値を、前記S6から取得された前記PLCモデルエラーイベント初期構成と、前記既定のPLC形式化命令とから計算し、前記PLCプログラムの実行をシミュレートし、前記S6において与えられるイベント初期構成から最後の非充足イベントまで、イベント実行中の内部メモリ及び出力の中間値を再計算する、請求項に記載の方法。
【請求項5】
前記S8において、前記PLCプログラムの開始から最後の非充足イベントまで、前記状態変数値及び前記イベント初期変数値が状態中及びイベント実行中に取ることができる値の領域を定義する完全なエラーシナリオを取得するために、前記S7からのイベント実行値及び前記S3からの前記状態変数値の範囲をアセンブルする、請求項又はに記載の方法。
【請求項6】
前記S1において取得される前記モデルは、PLCプリミティブの既定のモデルを指し、一階論理の論理フレームワークで表される、請求項1~のいずれか1項に記載の方法。
【請求項7】
少なくとも整数型参照及びブール型参照が、前記PLCプログラムの入力、内部メモリ及び出力をモデル化するのに使用される、請求項に記載の方法。
【請求項8】
前記S2において引数として入力される前記時間機能仕様データは、PlantUMLのタイプの言語で表されるタイミングチャートとして与えられる、請求項1~のいずれか1項に記載の方法。
【請求項9】
前記S2の実施は、述語論理の論理フレームワークで表される仕様アサーションを与え、ループに組み込まれる前記モデルの複数の連続したコピーが、前記タイミングチャートによって与えられる連続した状態及びイベントを表すのに使用される、請求項に記載の方法。
【請求項10】
前記S3において、前記PLCプログラムの実行状態中に取る変数値の範囲は、少なくとも前記時間機能仕様データにおいて指定されていない変数のうちのいくつかについて推論される、請求項1~のいずれか1項に記載の方法。
【請求項11】
前記S4において、ダイクストラの最弱事前条件計算法が、特性が充足されている場合に、前記PLCプログラムが対応する機能仕様を常に充足するために使用される、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記S5において、自動化されたソルバーが、
前記S4において生成された前記特性を証明すること、又は、
前記特性が充足されていない前記モデルにおける入力及び内部メモリの値によって表される前記特性の反例を見つけること、
を行うために使用される、請求項1~11のいずれか1項に記載の方法。
【請求項13】
コンピュータプログラムであって、前記コンピュータプログラムがコンピュータデバイスによって実行されると、請求項1~12のいずれか1項に記載の方法を前記コンピュータデバイスに実行させる命令を含む、コンピュータプログラム。
【請求項14】
請求項1~12のいずれか1項に記載の方法を実行する処理回路を備える、コンピュータデバイス。
【国際調査報告】