JP6854982B1 - プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法 - Google Patents

プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法 Download PDF

Info

Publication number
JP6854982B1
JP6854982B1 JP2020544689A JP2020544689A JP6854982B1 JP 6854982 B1 JP6854982 B1 JP 6854982B1 JP 2020544689 A JP2020544689 A JP 2020544689A JP 2020544689 A JP2020544689 A JP 2020544689A JP 6854982 B1 JP6854982 B1 JP 6854982B1
Authority
JP
Japan
Prior art keywords
program
display component
circuit display
programming support
circuit
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
JP2020544689A
Other languages
English (en)
Other versions
JPWO2021192152A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6854982B1 publication Critical patent/JP6854982B1/ja
Publication of JPWO2021192152A1 publication Critical patent/JPWO2021192152A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming

Abstract

プログラミング支援プログラムは、ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する第1の変換ステップと、第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換ステップと、第2のプログラムの1ブロックごとの解析結果が定められた条件を満たすと、条件を満たすブロックの内容を表す回路表示部品を生成する回路表示部品生成ステップと、第3のプログラムおよび回路表示部品を、回路表示部品が第3のプログラムのどのブロックに対応するか認識可能な形式で表示する表示ステップと、を電子計算機(100)に実行させる。

Description

本開示は、プログラマブルロジックコントローラが実行するプログラムの作成支援に用いられるプログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法に関する。
従来、プログラマブルロジックコントローラが実行するプログラムは、ラダー言語およびFBD(Function Block Diagram)言語といった、可読性が高いプログラムで記述することが一般的であった。これに対し、近年は、ラダー言語などの代わりにST(Structured Text)言語のような手続型言語を使用してプログラムを記述する要望も高まってきている。
プログラムの開発では、過去に開発したプログラムを流用して新たなプログラムの作成作業を効率的に行うことが広く行われている。ここで、新たなプログラムを作成する場合、例え同じハードウェアで使用するプログラムであっても、作成しようとしているプログラムとは異なるプログラム言語で記述されたプログラムを直接流用することはできない。そのため、あるプログラム言語で記述されたプログラムを他のプログラム言語で記述されたプログラムに変換する技術が提案されている(例えば、特許文献1)。
特開2001−22412号公報
ラダー言語で記述されたプログラムを手続型言語で記述されたプログラムに変換した場合、プログラムの可読性が低下するという問題がある。可読性は、変換する前のプログラムのブロックが複雑な構成になればなるほど低下する。可読性が低下すると、プログラムの開発および編集といった作業の効率も低下する。
本開示は、上記に鑑みてなされたものであって、手続型言語以外のプログラム言語で記述したプログラムを手続型言語で記述したプログラムに変換した場合に、プログラムの可読性の低下に伴い作業効率が低下するのを防止することが可能なプログラミング支援プログラムを得ることを目的とする。
上述した課題を解決し、目的を達成するために、本開示にかかるプログラミング支援プログラムは、ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する第1の変換ステップと、第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換ステップとを含む。また、プログラミング支援プログラムは、第2のプログラムの1ブロックごとの解析結果が定められた条件を満たすと、条件を満たすブロックに対応する、第1のプログラムの1ブロック、を第3のプログラムを表示する際に第3のプログラムとともに表示する回路表示部品として生成する回路表示部品生成ステップと、第3のプログラムおよび回路表示部品を、回路表示部品が第3のプログラムのどのブロックに対応するか認識可能な形式で表示する表示ステップと、をコンピュータに実行させる。
本開示にかかるプログラミング支援プログラムは、手続型言語以外のプログラム言語で記述したプログラムを手続型言語で記述したプログラムに変換した場合に、プログラムの可読性の低下に伴い作業効率が低下するのを防止することができる、という効果を奏する。
実施の形態にかかるプログラミング支援装置の機能ブロック構成の一例を示す図 プログラミング支援装置による第1のSTプログラム生成動作を示すフローチャート 変換対象プログラム指定画面の一例を示す図 プログラミング支援装置がラダープログラムをSTプログラムに変換する動作の概要を示す図 プログラミング支援装置が備える機械学習装置の機能ブロック構成を示す図 機械学習装置が機械学習に用いる学習用データの構成例を示す図 ニューラルネットワークの構成例を示す図 機械学習装置での学習に使用する学習用データの第1の例を示す図 機械学習装置での学習に使用する学習用データの第2の例を示す図 プログラミング支援装置による第2のSTプログラム生成動作を示すフローチャート 変換コード対応テーブルの一例を示す図 プログラミング支援装置によるプログラム表示動作を示すフローチャート プログラミング支援装置による回路表示部品編集動作を示すフローチャート プログラミング支援装置による回路表示部品の表示方法を説明するための図 プログラミング支援装置による回路表示部品の表示方法の第2の例を示す図 プログラミング支援装置による回路表示部品の表示方法の第3の例を示す図 回路表示部品の表示属性設定画面の一例を示す図 回路表示部品を表示するトリガ条件の一例を示す図
以下に、本開示の実施の形態にかかるプログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法を図面に基づいて詳細に説明する。
実施の形態.
本実施の形態では、プログラマブルロジックコントローラが実行するプログラムの開発に用いられるプログラミング支援装置について説明する。このプログラミング支援装置は、ラダー言語で記述されたプログラムであるラダープログラムをST言語で記述されたプログラムであるSTプログラムに変換する機能を有する。図1は、実施の形態にかかるプログラミング支援装置の機能ブロック構成の一例を示す図である。図1に示すプログラミング支援装置1は、プログラマブルロジックコントローラが実行するプログラムの開発に用いられる。
プログラミング支援装置1は、ラダープログラムデータ格納部2、Pコード生成部3、データ操作部4、表示部5、回路表示部品格納部6、STプログラムデータ格納部7およびSTプログラム生成部8を備える。
ラダープログラムデータ格納部2は、ラダープログラムのデータであるラダープログラムデータ21を格納する。Pコード生成部3は、ラダープログラムを中間言語であるPコードで記述されたプログラムに変換する。Pコード生成部3は、ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する変換する第1の変換部である。ここで、コンピュータはプログラミング言語で記述されたプログラムの内容を理解することができない。そのため、プログラミング言語で記述されたプログラムをコンピュータが解読可能なマシン語に変換する必要がある。このとき、プログラミング言語で記述されたプログラムをマシン語のプログラムに直接変換することはせずに、中間表現のプログラムに一度変換した後、さらにマシン語のプログラムに再変換することが一般的である。中間言語は、プログラミング言語で記述されたプログラムを中間表現とする場合に用いられる。中間言語には様々な種類が存在し、中間言語は中間コードと称される場合もある。Pコードは、中間表現のプログラムを作成する場合に用いられる様々な種類の中間言語の中の1種である。データ操作部4は、プログラミング支援装置1が取り扱うデータに対する編集操作などの操作をユーザから受け付ける。表示部5は、ユーザに対してプログラムの確認画面、編集画面などの各種画面を表示する。回路表示部品格納部6は、後述する回路表示部品を格納する。STプログラムデータ格納部7は、STプログラムのデータであるSTプログラムデータ71を格納する。STプログラム生成部8は、Pコードで記述されたプログラムをSTプログラムに変換する。
STプログラム生成部8は、Pコード解析部81、機械学習装置82、STテンプレート格納部83およびプログラム変換部84を備える。Pコード解析部81および機械学習装置82は回路表示部品生成部80を構成する。
Pコード解析部81は、Pコードで記述されたプログラムであるPコードプログラムを解析してプログラムの構造に関するデータを生成するとともに、生成したデータが定められた条件を満たす場合に回路表示部品を生成する。機械学習装置82は、Pコード解析部81が生成したデータおよびデータ操作部4から入力されるデータに基づき、Pコード解析部81が回路表示部品を生成する条件を学習する。STテンプレート格納部83は、PコードプログラムをSTプログラムに変換するためのテンプレートを格納する。プログラム変換部84は、PコードプログラムをSTプログラムに変換する。プログラム変換部84は、第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換部である。
ここで、プログラミング支援装置1は、図1に示すように電子計算機100で実現される。電子計算機100は例えばパーソナルコンピュータであり、CPU(Central Processing Unit)、記憶装置、表示装置、入力装置、通信装置などで構成される。記憶装置は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリー、等の、不揮発性または揮発性の半導体メモリ、磁気ディスク等である。表示装置は液晶ディスプレイ等であり、表示部5を実現する。入力装置はマウス、キーボードなどである。通信装置はネットワークインタフェースカードなどである。なお、図1では、電子計算機100が表示装置を備える構成例について示したが、表示装置は電子計算機100から独立した別の装置であってもよい。
プログラミング支援装置1が有する各機能は、電子計算機100のCPUおよび記憶装置で実現される。すなわち、プログラミング支援装置1が有する各機能を実現するためのプログラムであるプログラミング支援プログラムを記憶装置に格納しておき、CPUが記憶装置に格納されたプログラムを読み出して実行することにより、プログラミング支援装置1が有する各機能が実現される。また、プログラミング支援装置1のラダープログラムデータ格納部2、回路表示部品格納部6およびSTプログラムデータ格納部7は電子計算機100の記憶装置で実現される。なお、電子計算機100の入力装置はユーザがプログラミング支援装置1を操作する場合に利用される。電子計算機100の通信装置は、プログラミング支援装置1が電子計算機100の外部の装置と通信する場合に利用される。上記のプログラミング支援プログラムは、例えば、CD(Compact Disc)−ROM、DVD(Digital Versatile Disc)−ROMなどの記憶媒体に書き込まれた状態でユーザに供給される。上記のプログラミング支援プログラムは、インターネットなどを介してユーザに供給される形態であってもよい。
つづいて、プログラミング支援装置1の動作の詳細について説明する。具体的には、機械学習装置82による学習が済んでいない状態でラダープログラムを変換してSTプログラムを生成する動作(第1のSTプログラム生成動作とする)と、機械学習装置82による学習が済んでいる状態でラダープログラムを変換してSTプログラムを生成する動作(第2のSTプログラム生成動作とする)と、変換後のSTプログラムとともに回路表示部品を表示する動作(プログラム表示動作とする)と、生成済みの回路表示部品を編集する動作(回路表示部品編集動作とする)とについて、それぞれ説明する。
[第1のSTプログラム生成動作]
機械学習装置82による学習が済んでいない状態のときにプログラミング支援装置1がラダープログラムを変換してSTプログラムを生成する第1のSTプログラム生成動作について説明する。この第1のSTプログラム生成動作において、プログラミング支援装置1は、ラダープログラムをSTプログラムに変換するとともに、回路表示部品を生成する条件の学習を行う。
図2は、プログラミング支援装置1による第1のSTプログラム生成動作を示すフローチャートである。プログラミング支援装置1は、STプログラムの生成開始を指示する操作を受け付けた時点で機械学習装置82による学習すなわち回路表示部品を生成する条件の学習が完了していない場合、第1のSTプログラム生成動作を開始する。
第1のSTプログラム生成動作では、まず、データ操作部4が、変換するプログラムの指定を受け付ける(ステップS101)。このステップS101において、データ操作部4は表示部5と連携し、例えば、図3に示す変換対象プログラム指定画面301を表示部5に表示させて、ユーザからの操作を受け付ける。図3は、変換対象プログラム指定画面301の一例を示す図である。データ操作部4は、ラダープログラムデータ21に含まれるラダープログラムのうち、どのラダープログラムをSTプログラムへの変換対象とするかの指定をユーザより受け付ける。また、データ操作部4は、変換対象としたラダープログラムそれぞれについて、実際に変換する範囲の選択(変換範囲選択)を受け付ける。なお、変換範囲選択の受け付けは必須ではなく、ユーザは変換範囲選択の入力を省略してもよい。変換範囲選択の入力が省略された場合、プログラミング支援装置1は、変換対象とされたプログラムの全体が変換範囲であるものとして取り扱う。なお、ユーザは、「全体」と記載された欄の中のプログラムを選択して左矢印ボタン302をクリックすることで、選択したプログラムを変換対象のプログラムに追加することができる。また、ユーザは、「変換対象」と記載された欄の中のプログラム(変換対象のプログラム)を選択して右矢印ボタン303をクリックすることで、選択したプログラムを変換対象のプログラムから除外することができる。また、変換対象プログラム指定画面301は、回路表示部品を強制的に作成する指定を受け付けるためのチェックボックス304を含む。チェックボックス304にチェックが入っている場合、プログラミング支援装置1は、変換対象のプログラムを構成する全てのブロックについて、回路表示部品を作成する条件を満たしているか否かに関係なく回路表示部品を作成する。なお、これ以降では、チェックボックス304にチェックが入っていないものとして説明を行う。
変換ボタンがクリックされるとステップS101が終了となりステップS102に遷移する。
ステップS101が終了すると、次に、Pコード生成部3が、ラダープログラムデータ21からステップS101で指定されたラダープログラムを取得し(ステップS102)、取得したラダープログラムを構成する各ブロックをPコードに変換してPコードプログラムを生成する(ステップS103)。
次に、Pコード解析部81が、Pコードプログラムの1ブロックごとに条件部と実行部を判定する(ステップS104)。ここで、一般的にラダープログラムは、接点命令および比較演算命令といった命令からなる条件部と、文字列処理、実数処理、出力命令などからなる実行部とに分ける事ができる。これはSTプログラムに変換する場合、IF文における条件式と実行文とに置き換える事ができる。そのため、ステップS104において、Pコード解析部81は、図4の手順2に示すように、Pコードで記述されたプログラム(Pコードプログラム)を解析し、IF文の条件文に相当するコードと実行文に相当するコードとを判別し、それぞれを条件部および実行部とする。図4は、プログラミング支援装置1がラダープログラムをSTプログラムに変換する動作の概要を示す図である。図4では、ラダープログラムの1つのブロックをSTプログラムに変換する動作の概要を示している。図4に示す手順1は、上記のステップS103に相当する。
ステップS104の処理が終了した後は、ステップS104で判定処理を行った1ブロックを対象として、ステップS105〜S107に示すSTプログラム生成処理とステップS401〜S403に示す学習処理とが並列に実行される。以下では、ステップS105〜S107のSTプログラム生成処理と、ステップS401〜S403の学習処理とに分けて説明する。
(STプログラム生成処理)
STプログラム生成処理では、上記のステップS104に続いて、プログラム変換部84が、STテンプレート格納部83から変換処理用のテンプレートを取得し(ステップS105)、テンプレートを使用してSTプログラムを作成する(ステップS106)。すなわち、図4の手順3に示すように、プログラム変換部84は、Pコード解析部81がPコードプログラムを解析した結果をテンプレートに当てはめ、STプログラムを作成する。プログラム変換部84は、作成したSTプログラムをSTプログラムデータ格納部7に格納する(ステップS107)。
(学習処理)
ステップS401〜S403の学習処理は、機械学習装置82が行う。機械学習装置82の機能ブロック構成は図5に示したものとなる。図5は、プログラミング支援装置1が備える機械学習装置82の機能ブロック構成を示す図である。すなわち、機械学習装置82は、機械学習に用いる教師データを取得するデータ取得部821と、Pコード解析部81から入力される状態変数を観測する状態観測部822と、データ取得部821が取得した教師データおよび状態観測部822による状態変数の観測結果に基づいて回路表示部品の生成条件を学習する学習部823とを備える。
図6は、機械学習装置82が機械学習に用いる学習用データの構成例を示す図である。学習用データは、データ取得部821が取得する教師データと、状態観測部822が観測する状態変数とで構成される。図6に示す入力1〜入力3は、Pコード解析部81から機械学習装置82に入力されるデータであり、状態観測部822が観測する状態変数に相当する。入力1〜入力3のデータは、変換する対象のラダープログラムの構成に関する情報を含む。入力1の「1命令を実行するための条件数」は、1命令を実行するために影響を与える条件の数を示す。これは単純に回路を構成する条件の数が増えると、IF文の条件文の項数が増え、条件式が複雑になるためである。入力2の「1条件を共有する命令数」は、1条件を共有する命令の数を条件ごとに示す。この条件のうち、ANDやORでまとめられる箇所はまとめて設定する。入力2の「1条件を共有する命令数」はIF文の分岐数に影響する。入力3の「回路を構成するANB、ORB、MPS、MRD、MPPの数」は、回路ブロック直列接続命令であるANBの数と、回路ブロック並列接続命令であるORBの数と、演算結果プッシュ命令であるMPSの数と、演算結果読み出し命令であるMRDの数と、演算結果ポップ命令であるMPPの数と、を示す。入力3のデータは回路構成の複雑度を示す。本実施の形態では、教師データは、ラダープログラムを変換して得られたSTプログラムを確認したユーザが、確認したSTプログラムに対応する回路表示部品の生成が必要か否かを判断した結果のデータとする。
機械学習装置82による学習処理では、上記のステップS104に続いて、状態観測部822が、Pコード解析部81からプログラムの解析結果を取得する(ステップS401)。すなわち、ステップS401において、状態観測部822は、Pコード解析部81から入力される、図6に示す入力1〜入力3のデータを状態変数として観測する。
次に、上記のステップS106で作成されたSTプログラムを元にユーザが回路表示部品の生成有無を判定し、判定結果を教師データとする(ステップS402)。このステップS402では、表示部5が、ステップS106でプログラム変換部84が生成したSTプログラムをSTプログラムデータ格納部7から読み出して表示する。また、データ操作部4が、表示部5が表示しているSTプログラムに対応する回路表示部品を生成する必要があるか否かの判定結果の入力をユーザから受け付け、図6に示す教師データとして機械学習装置82に出力する。機械学習装置82では、データ取得部821が、データ操作部4から教師データを取得する。ステップS401およびS402が終了すると、図6に示す構成の学習用データが得られる。
次に、学習部823が、学習用データに基づいて、回路表示部品を生成する条件を学習する(ステップS403)。
ステップS403について詳しく説明する。ステップS403において、学習部823は、状態観測部822が観測した状態変数およびデータ取得部821が取得した教師データの組合せに基づいて作成されるデータセットに基づいて、回路表示部品の生成条件を学習する。ここで、データセットは状態変数および教師データを互いに関連付けたデータである。
なお、機械学習装置82は、プログラミング支援装置1において、回路表示部品の生成条件を学習するために使用されるが、例えば、ネットワークを介してプログラミング支援装置1に接続され、このプログラミング支援装置1とは別個の装置であってもよい。この場合、機械学習装置82は、クラウドサーバ上に存在していてもよい。
学習部823は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により回路表示部品の生成条件を学習する。ここで、教師あり学習とは、ある入力と結果(ラベル)のデータの組であるデータセットを大量に学習部823に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデルをいう。
ニューラルネットワークは、複数のニューロンからなる入力層と、複数のニューロンからなる中間層(隠れ層)と、複数のニューロンからなる出力層とで構成される。中間層は、1層、又は2層以上でもよい。
図7は、ニューラルネットワークの構成例を示す図である。例えば、図7に示すような3層のニューラルネットワークであれば、複数の入力が入力層に入力層(X1−X3)に入力されると、その値に重みW1(w11−w16)を掛けて中間層(Y1−Y2)に入力され、その結果にさらに重みW2(w21−w26)を掛けて出力層(Z1−Z3)から出力される。この出力結果は、重みW1およびW2の値によって変わる。
本実施の形態において、ニューラルネットワークは、上記のデータセットに従って、いわゆる教師あり学習により、ラダープログラムをSTプログラムに変換した際にユーザが見やすくなる回路表示部品の生成条件を学習する。すなわち、ニューラルネットワークは、入力層に状態変数を入力して出力層から出力された結果が、教師データの値に近づくように重みW1およびW2を調整することで、回路表示部品の生成条件を学習する。
また、ニューラルネットワークは、いわゆる教師なし学習によって、回路表示部品の生成条件を学習することもできる。教師なし学習とは、入力データのみを大量に機械学習装置に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮、分類、整形等を行う装置を学習する手法である。ニューラルネットワークは、入力データにある特徴を似た者どうしにクラスタリングすること等ができる。この結果を使って、何らかの基準を設けてそれを最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。また、教師なし学習と教師あり学習の中間的な問題設定として、半教師あり学習と呼ばれるものもある。半教師あり学習では、一部のみ入力データと教師データのデータセットが存在し、それ以外は入力データのみの学習用データを使用する。
学習部823は、複数のプログラミング支援装置1に対して作成されるデータセットに従って回路表示部品の生成条件を学習するようにしてもよい。なお、学習部823は、同一の現場で使用される複数のプログラミング支援装置1からデータセットを取得してもよいし、異なる現場で独立して使用されるプログラミング支援装置1からデータセットを取得してもよい。さらに、データセットを収集するプログラミング支援装置1を学習の途中で対象に追加し、或いは、逆に対象から除去することも可能である。また、あるプログラミング支援装置1に関して回路表示部品の生成条件を学習した機械学習装置82を、これとは別のプログラミング支援装置1に取り付け、当該別のプログラミング支援装置1に関して回路表示部品の生成条件を再学習して更新するようにしてもよい。
また、学習部823に用いられる学習アルゴリズムとしては、特徴量そのものの抽出を学習する深層学習(Deep Learning)を用いることもできる。また、学習部823は、他の公知の方法、例えば遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って学習を実行してもよい。
本実施の形態で使用する学習用データの具体例を説明する。図8は、機械学習装置82での学習に使用する学習用データの第1の例を示す図である。図8では、学習用データの根拠となるラダープログラムと、変換後のSTプログラムを併せて記載している。図8に示す第1の例の学習用データは、教師データが「回路表示部品生成なし」の場合、すなわち、回路表示部品を生成しないことをユーザが選択した場合の例である。
入力1のデータは、「Y0,8」および「Y1,8」を含む。「Y0,8」は、出力Y0の値に影響する条件部がX0〜X7の8条件である事を表す。「Y1,8」も同様である。
入力2のデータは、「X0 AND X1,2」、「X2 AND X3,2」、「X4 AND X5,2」および「X6 AND X7,2」を含む。「X0 AND X1,2」は、X0とX1をAND演算でまとめ1条件として扱い、この条件をY0およびY1の2命令が使用することを表す。「X2 AND X3,2」、「X4 AND X5,2」および「X6 AND X7,2」も同様である。
入力3のデータは、「ANB,1」、「ORB,2」、「MPS,0」、「MRD,0」および「MPP,0」を含む。「ANB,1」は、回路ブロック直列接続命令であるANBが1箇所であることを表す。「ORB,2」は、回路ブロック並列接続命令であるORBが2箇所であることを表す。「MPS,0」は、演算結果プッシュ命令であるMPSが存在しないことを表す。「MRD,0」は、演算結果読み出し命令であるMRDが存在しないことを表す。「MPP,0」は、演算結果ポップ命令であるMPPが存在しないことを表す。
第1の例では、IF文の深さが2段、IF文の条件式の論理演算項数は2項が最大となり、変換後のSTプログラムから容易に元のラダープログラムを推測できるため、ユーザは回路表示部品の生成が必要ないと判断している。
図9は、機械学習装置82での学習に使用する学習用データの第2の例を示す図である。図8と同様に、図9では、学習用データの根拠となるラダープログラムと、変換後のSTプログラムを併せて記載している。図9に示す第2の例の学習用データは、教師データが「回路表示部品生成」の場合、すなわち、回路表示部品を生成することをユーザが選択した場合の例である。
入力1のデータは、「Y0,9」、「Y1,9」、「Y2,10」、「Y3,1」を含む。入力2のデータは、「X0,4」、「X1 OR X4 OR X5,3」、「X2,3」、「X3,1」、「X6,3」、「X7 OR X8,3」、「X9,2」および「X10,1」を含む。入力3のデータは、「ANB,3」、「ORB,1」、「MPS,2」、「MRD,0」および「MPP,2」を含む。
第2の例では、入力1のデータが、1命令を実行するための条件数が多い事を表し、入力2のデータが、X1〜X10の条件がY0〜Y2の出力値に関係することを表し、入力3のデータが、直列回路ブロックおよび並列回路ブロックがあること、スタックを使用した計算を行う必要がある回路であること、を表している。変換後のSTプログラムから元のラダープログラムの構成を推測できることが難しいため、ユーザは回路表示部品の生成が必要と判断している。
図2の説明に戻り、ステップS105〜S107のSTプログラム生成処理およびステップS401〜S403の学習処理が終了すると、STプログラム生成部8は、変換対象のプログラムの全ブロックの解析、すなわち、全ブロックについて、STプログラムへの変換処理および回路表示部品の生成条件の学習処理が終了したかを確認する(ステップS108)。全ブロックの解析が終了した場合(ステップS108:Yes)、図2に示す動作は終了となる。一方、全ブロックの解析が終了していない場合(ステップS108:No)、ステップS104に戻る。
以上の第1のSTプログラム生成動作は、上記のステップS401〜S403に示す学習動作が繰り返され、回路表示部品の生成条件の学習が十分に進むまで行う。回路表示部品の生成条件の学習が十分に進んだかどうかは、例えば、ステップS401〜S403を繰り返した回数が定められた値に達したかどうかで判断する。
[第2のSTプログラム生成動作]
つづいて、機械学習装置82による学習が済んでいる状態のときにプログラミング支援装置1がラダープログラムを変換してSTプログラムを生成する第2のSTプログラム生成動作について説明する。この第2のSTプログラム生成動作において、プログラミング支援装置1は、ラダープログラムをSTプログラムに変換するとともに、機械学習装置82による学習結果を使用して、回路表示部品の生成が必要か否か判断する。すなわち、機械学習装置82による学習結果は、回路表示部品の生成条件が成立しているか否かの判定処理に用いられる。プログラミング支援装置1は、回路表示部品の生成が必要と判断すると、回路表示部品を生成する。
図10は、プログラミング支援装置1による第2のSTプログラム生成動作を示すフローチャートである。プログラミング支援装置1は、STプログラムの生成開始を指示する操作を受け付けた時点で機械学習装置82による学習すなわち回路表示部品を生成する条件の学習が完了している場合、第2のSTプログラム生成動作を開始する。
図10に示すフローチャートは、図2に示すフローチャートからステップS401〜S403を削除し、ステップS109〜S111を追加した構成である。図10に示すフローチャートのステップS101〜S108は、図2に示すフローチャートのステップS101〜S108と同一であるため、説明を省略する。
第2のSTプログラム生成動作では、ステップS104の次に、上述したステップS105〜S107のSTプログラム生成処理と並列に、ステップS109〜S111を実行する。具体的には、Pコード解析部81が、回路表示部品を生成するか否かを判定する(ステップS109)。ステップS109において、Pコード解析部81は、機械学習装置82による学習結果と、変換対象のラダープログラムの解析結果とに基づいて、回路表示部品を生成するか否かを判定する。ここでの変換対象のラダープログラムの解析結果とは、機械学習装置82が回路表示部品の生成条件を学習する際に使用するものと同様の解析結果であり、具体的には、図6などに示す学習用データの入力1〜入力3と同様のデータである。
回路表示部品を生成すると判断した場合(ステップS109:Yes)、Pコード解析部81は、回路表示部品を生成して回路表示部品格納部6に格納し(ステップS110)、変換コード対応テーブルに情報を格納する(ステップS111)。ステップS110において、Pコード解析部81は、ラダープログラムから1つのブロックを抽出し、これを回路表示部品として回路表示部品格納部6に格納する。ラダープログラムから抽出する対象のブロックは、ステップS104で判定対象としたPコードプログラム内のブロックに対応するブロックであり、例えば、図4に示す手順1でPコードへ変換される、ラダープログラム内の1ブロックが該当する。ステップS111で情報を格納する変換コード対応テーブルとは、変換前のラダープログラムと変換後のSTプログラムの対応関係を示す各種情報が登録されるテーブルである。より詳細には、変換コード対応テーブルは、変換前のラダープログラムのどの部分(ブロック)と変換後のSTプログラムのどの部分(ブロック)が対応しているかを示す情報、STプログラムを構成するブロックのそれぞれについて、対応する回路表示部品が存在するか否かを示す情報、生成された回路表示部品のそれぞれがSTプログラムのどのブロックに対応しているかを示す情報、などが登録されるテーブルである。変換コード対応テーブルは例えば回路表示部品格納部6が保持する。なお、回路表示部品生成部80または表示部5が変換コード対応テーブルを保持するようにしてもよい。
図11は、変換コード対応テーブルの一例を示す図である。変換コード対応テーブルを構成する各レコードには、変換対象のラダープログラムを構成する各ブロックの中のいずれか一つについての情報が格納される。つまり、変換コード対応テーブルには、変換対象のラダープログラムを構成するブロックのそれぞれに対応するレコードが含まれる。変換コード対応テーブルの1つのレコードには、ラダープログラム名、STプログラム名、LD位置情報、部品有無、部品番号およびST位置情報が登録される。「ラダープログラム名」は、変換前のラダープログラムの名称であり、「STプログラム名」は、変換後のSTプログラムの名称である。「LD位置情報」は、変換前のダラープログラム内の位置を示す情報であり、ラダープログラムを構成する各ブロックの中の1つを示す。すなわち、「LD位置情報」は、ラダープログラム内のどの位置のブロックであるかを示す。「部品有無」は、LD位置情報が示すブロックに対応する回路表示部品の有無を示す情報である。「部品有無=TRUE」は回路表示部品が存在することを示し、「部品有無=FALSE」は回路表示部品が存在しないことを示す。「部品番号」は回路表示部品に付与された管理番号であり、「部品有無=TRUE」の場合は数値が入り、「部品有無=FALSE」の場合は「−」となる。「ST位置情報」は、同一レコードのLD位置情報が示すラダープログラム内の位置(ブロック)に対応する、STプログラム内の位置(ブロック)を示す情報である。
回路表示部品を生成しないと判断した場合(ステップS109:No)、Pコード解析部81は、ステップS110を実行せずにステップS111を実行する。なお、変換コード対応テーブルは、ラダープログラムを変換して生成したSTプログラムを表示部5が表示する際に利用される。
ステップS111を実行した後、STプログラム生成部8は、変換対象のプログラムの全ブロックの解析が終了したかを確認する(ステップS108)。
なお、本実施の形態では、機械学習が済んでいる場合にプログラミング支援装置1が回路表示部品を生成する必要があるか否かを判断し、必要と判断した場合に回路表示部品を生成することとした。すなわち、第1のSTプログラム生成動作では、回路表示部品を生成する必要があるか否かをユーザが判断するが、回路表示部品を実際に生成することは行わないこととした。しかし、第1のSTプログラム生成動作においても回路表示部品を生成するようにしてもよい。第1のSTプログラム生成動作においても回路表示部品を生成する場合は、例えば、第1のSTプログラム生成動作を示す図2のフローチャートのステップS402でユーザが回路表示部品の生成が必要と判断したときに、上述したステップS110およびS111と同様の処理を実行するようにすればよい。または、機械学習が済んでいない状態のときは予め定められた条件を用いて回路表示部品を生成する必要があるか否かを判断し、必要と判断した場合には回路表示部品を生成するようにすればよい。この場合、例えば、図2に示すフローチャートのステップS105〜S107の処理およびステップS401〜S403の処理と並列に、図10に示すステップS109〜S111と同様の処理を行うようにする。このときの回路表示部品を生成するか否かの判断に用いる条件は、例えば、「IFの入れ子が3つ以上かつ条件文の項数が5以上のIF文がSTプログラムに含まれる場合」とする。IFの入れ子の数および条件文の項数は一例であり、これらの数に限定するものではない。
[プログラム表示動作]
つづいて、STプログラムデータ格納部7に格納されているSTプログラムデータ71を表示部5が表示するプログラム表示動作について説明する。
図12は、プログラミング支援装置1によるプログラム表示動作を示すフローチャートである。プログラミング支援装置1は、STプログラムデータ格納部7に格納されているSTプログラムデータ71の表示部5への表示開始を指示する操作をユーザから受け付けると、プログラム表示動作を開始する。
プログラム表示動作では、まず、表示部5が、変換コード対応テーブル(図11参照)の1レコードを取得し(ステップS201)、回路表示部品が存在するかを確認する(ステップS202)。すなわち、表示部5は、ステップS201では、ステップS201で取得したレコード内の「部品有無」が、回路表示部品が存在する旨を示しているか(TRUEであるか)を確認する。
回路表示部品が存在する場合(ステップS202:Yes)、表示部5は、該当の回路表示部品、すなわち、ステップS201で取得したレコード内の「部品番号」に対応する回路表示部品を回路表示部品格納部6から取得する(ステップS203)。次に、表示部5は、ステップS203で取得した回路表示部品を表示するとともに(ステップS204)、STプログラムを表示する(ステップS205)。ステップS205において、表示部5は、ステップS201で取得したレコード内の「ST位置情報」が示す、STプログラム内のブロックを表示する。表示部5は、回路表示部品およびSTプログラムを表示する際、回路表示部品がSTプログラムのどの部分(ブロック)を表しているのかをユーザが認識可能な形式で表示する。表示部5が、回路表示部品およびSTプログラムをどのような形式で表示するかの詳細については別途説明する。
回路表示部品が存在しない場合(ステップS202:No)、表示部5は、ステップS203およびS204は実行せずに、STプログラムを表示する(ステップS205)。
表示部5は、ステップS205を実行した後、変換コード対応テーブルの全レコードの処理が終了したか、すなわち、全レコードについて、ステップS201〜S205を実行したか、を確認する(ステップS206)。全レコードの処理が終了した場合(ステップS206:Yes)、図12に示す動作は終了となる。一方、全レコードの処理が終了していない場合(ステップS206:No)、ステップS201に戻る。
[回路表示部品編集動作]
つづいて、生成済みの回路表示部品を編集する動作について説明する。
図13は、プログラミング支援装置1による回路表示部品編集動作を示すフローチャートである。プログラミング支援装置1は、回路表示部品格納部6に格納されている回路表示部品の編集開始を指示する操作をユーザから受け付けると、回路表示部品編集動作を開始する。
回路表示部品編集動作では、まず、データ操作部4が、回路表示部品の内容変更操作を受け付ける(ステップS301)。回路表示部品の内容変更操作は、生成済みの回路表示部品の編集が可能であればどのようなものであってもよい。回路表示部品の内容変更操作受け付ける動作の一例を簡単に説明する。例えば、プログラミング支援装置1は、回路表示部品格納部6に格納されている回路表示部品の編集開始を指示する操作をデータ操作部4で受け付けると、回路表示部品格納部6に格納済みの回路表示部品のリストを表示部5に表示し、編集対象の回路表示部品の指定をデータ操作部4で受け付ける。次に、プログラミング支援装置1は、指定された回路表示部品の編集作業画面を表示部5に表示し、回路表示部品を変更する操作をデータ操作部4が受け付ける。本実施の形態では、回路表示部品はラダープログラムを構成する1つのブロックであるため、回路表示部品を変更する操作は、ラダープログラムを変更する一般的な操作と同様の操作となる。
ユーザによる回路表示部品の内容変更操作が終了すると、変更後の回路表示部品を回路表示部品格納部6に格納する(ステップS302)。ステップS302が終了すると、プログラミング支援装置1はステップS103〜S111を実行するが、これらのステップは、図10に示すフローチャートのステップS103〜S111と同様の処理であるため説明は省略する。
つづいて、プログラミング支援装置1が回路表示部品を表示する方法の具体例について説明する。図14は、プログラミング支援装置1による回路表示部品の表示方法を説明するための図である。上述したように、プログラミング支援装置1は、ラダープログラムをSTプログラムに変換する際、回路表示部品の生成条件が成立すると、すなわち、ラダープログラムを構成するあるブロックをSTプログラム(ST言語での記述)に変換すると可読性が落ちると判断すると、回路表示部品を生成する。また、プログラミング支援装置1は、STプログラムを表示する際、STプログラム内のブロックに対応する回路表示部品が存在していれば、回路表示部品がSTプログラム内のどのブロックに対応するかをユーザが認識可能な形式で表示する。STプログラムとともに回路表示部品を表示することにより、STプログラムを確認する際の可読性が落ちるのを防止することができ、STプログラムのコーディングおよびデバッグといった作業の効率が低下するのを防止できる。図14に示す例の場合、プログラミング支援装置1の表示部5は、STプログラムと回路表示部品501とを別ウインドウで表示し、また、表示中の回路表示部品501がSTプログラムのどの部分(ブロック)に対応しているかを、該当部分を破線で囲んでユーザに通知する。
図14に示す表示方法では、STプログラムと回路表示部品501とを別ウインドウで表示しているが、その他の表示方法として図15および図16に示す表示方法としてもよい。図15は、プログラミング支援装置1による回路表示部品の表示方法の第2の例を示す図、図16は、プログラミング支援装置1による回路表示部品の表示方法の第3の例を示す図である。
図15に示す第2の例では、プログラミング支援装置1の表示部5は、回路表示部品502を、STプログラムの対応する箇所に一緒に表示する。図16に示す第3の例では、プログラミング支援装置1の表示部5は、回路表示部品503を、吹き出し表示によりSTプログラムの対応する箇所に重ねて表示する。図16に示す例の場合、表示部5は、例えば、マウスのカーソルがSTプログラムの上に置かれた状態のとき、カーソル位置のSTプログラムのブロックに対応する回路表示部品が存在していれば、回路表示部品503を表示する。表示部5は、STプログラムのブロックの1つがマウスで選択され、右クリックが行われた場合に、対応する回路表示部品が存在していれば回路表示部品503を表示するようにする、などとしてもよい。
また、プログラミング支援装置1は、回路表示部品の表示属性の設定をユーザから受け付ける機能を有する。表示属性の設定は回路表示部品ごとに個別に行うことを可能とする。図17は、回路表示部品の表示属性設定画面の一例を示す図である。プログラミング支援装置1は、回路表示部品の表示属性の設定をユーザから受け付ける場合、図17に示すような表示属性設定画面401を表示部5で表示し、表示属性の設定を受け付ける。
表示属性設定画面401の場合、ユーザは、回路表示部品を表示するか否か(回路表示部品を表示しない)、回路表示部品の表示を塗りつぶす場合に用いる色(塗りつぶし色)、回路表示部品の表示の透過率、回路表示部品の表示の拡縮率、回路表示部品を表示する条件(表示条件)、回路表示部品の編集を禁止するか否か(回路表示部品の編集禁止)、を設定することが可能である。
表示属性設定画面401の「回路表示部品を表示しない」のチェックボックスにチェックが入っている場合、プログラミング支援装置1は、STプログラムを表示する際に該当の回路表示部品を一緒に表示することはしない。
表示条件の「常に表示」のチェックボックスおよび「デバイス指定」のチェックボックスについては、いずれか一方のチェックを可能とする。表示条件の「常に表示」のチェックボックスにチェックが入っている場合、プログラミング支援装置1は、STプログラムを表示する際に該当の回路表示部品を常に一緒に表示する。表示条件の「デバイス指定」のチェックボックスにチェックが入っている場合、プログラミング支援装置1は、デバイスの指定およびトリガ条件の指定を受け付け、STプログラムを表示する際には、指定されたデバイスが指定されたトリガ条件を満たす場合に、該当の回路表示部品を常に一緒に表示する。なお、デバイスはプログラマブルロジックコントローラが有する内部メモリの特定の領域を示す。「デバイスが指定されたトリガ条件を満たす場合」とは、「デバイスが示すメモリ領域に格納されたデータがトリガ条件を満たす場合」を意味する。プログラミング支援装置1は、トリガ条件として、図18に示す8種類の条件式のうちの1つをユーザに指定させる。図18は、回路表示部品を表示するトリガ条件の一例を示す図である。プログラミング支援装置1は、図18に示すものとは異なるトリガ条件の指定をユーザから受け付けるようにしても構わない。
以上のように、本実施の形態にかかるプログラミング支援プログラムが実現するプログラミング支援装置1は、ラダープログラムを1ブロックごとにSTプログラムに変換する機能を有する。また、プログラミング支援装置1はラダープログラムの1ブロックをSTプログラムに変換する際、定められた条件を満たしていれば、回路表示部品を生成する。すなわち、プログラミング支援装置1は、定められた条件(生成条件)を満たす場合は変換後のSTプログラムの可読性が低下すると判断し、変換するラダープログラムの1ブロックを回路表示部品として保持する。また、プログラミング支援装置1は、変換後のSTプログラムを表示する際、可読性が低下すると判断した箇所と対応付けて、回路表示部品を表示する。また、プログラミング支援装置1は、回路表示部品の生成条件を学習する機械学習装置82を備え、学習結果に基づいて、回路表示部品を生成するか否かを判断する。プログラミング支援装置1は、STプログラムの可読性が低い箇所については可読性が高いラダー言語で記述された回路表示部品を生成しておき、STプログラムを表示する際には生成しておいた回路表示部品を一緒に表示するため、STプログラムに変換したことに伴い可読性が低下し、変換後のSTプログラムに対して行う作業の効率が低下するのを防止できる。
以上の実施の形態に示した構成は、内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
1 プログラミング支援装置、2 ラダープログラムデータ格納部、3 Pコード生成部、4 データ操作部、5 表示部、6 回路表示部品格納部、7 STプログラムデータ格納部、8 STプログラム生成部、21 ラダープログラムデータ、71 STプログラムデータ、80 回路表示部品生成部、81 Pコード解析部、82 機械学習装置、83 STテンプレート格納部、84 プログラム変換部、100 電子計算機、821 データ取得部、822 状態観測部、823 学習部、301 変換対象プログラム指定画面、302 左矢印ボタン、303 右矢印ボタン、304 チェックボックス、401 表示属性設定画面、501〜503 回路表示部品。

Claims (13)

  1. ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する第1の変換ステップと、
    前記第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換ステップと、
    前記第2のプログラムの1ブロックごとの解析結果が定められた条件を満たすと、前記条件を満たすブロックに対応する、前記第1のプログラムの1ブロック、を前記第3のプログラムを表示する際に前記第3のプログラムとともに表示する回路表示部品として生成する回路表示部品生成ステップと、
    前記第3のプログラムおよび前記回路表示部品を、前記回路表示部品が前記第3のプログラムのどのブロックに対応するか認識可能な形式で表示する表示ステップと、
    をコンピュータに実行させることを特徴とするプログラミング支援プログラム。
  2. 前記回路表示部品生成ステップでは、前記解析結果を確認したユーザから指示を受けると前記回路表示部品を生成する、
    ことを特徴とする請求項1に記載のプログラミング支援プログラム。
  3. 前記回路表示部品生成ステップでは、
    前記解析結果と、前記解析結果を確認したユーザによる、前記回路表示部品の生成が必要か否かの判断結果と、を含む学習用データに基づき機械学習装置が前記回路表示部品の生成条件を学習した結果を使用して、前記回路表示部品を生成するか否かを決定する、
    ことを特徴とする請求項1に記載のプログラミング支援プログラム。
  4. 前記解析結果と、前記解析結果を確認したユーザによる、前記回路表示部品の生成が必要か否かの判断結果と、を含む学習用データに基づいて前記回路表示部品の生成条件を学習する機械学習ステップ、
    を含み、
    前記回路表示部品生成ステップでは、前記機械学習ステップによる学習結果を使用して、前記回路表示部品を生成するか否かを決定する、
    ことを特徴とする請求項1に記載のプログラミング支援プログラム。
  5. 前記機械学習ステップは、
    前記第2のプログラムを1ブロックごとに解析して得られる情報のうち、1命令を実行するための条件数、1条件を共有する命令数および回路構成の複雑度を状態変数として観測する状態観測ステップと、
    回路表示部品を生成する必要があるか否かをユーザが判定した結果を教師データとして取得するデータ取得ステップと、
    前記状態変数および前記教師データの組合せに基づいて作成されるデータセットに従って、前記生成条件を学習する学習ステップと、
    を含むことを特徴とする請求項4に記載のプログラミング支援プログラム。
  6. 前記機械学習ステップによる前記生成条件の学習が済んでいない状態の場合、
    前記回路表示部品生成ステップでは、前記第3のプログラムの可読性を判定するための条件を使用して、前記回路表示部品を生成するか否かを決定する、
    ことを特徴とする請求項4または5に記載のプログラミング支援プログラム。
  7. 前記回路表示部品は、前記条件を満たすブロックの内容をラダー言語で表現する、
    ことを特徴とする請求項1から5のいずれか一つに記載のプログラミング支援プログラム。
  8. 前記回路表示部品生成ステップで生成した回路表示部品の内容を変更するための操作を受け付けるデータ操作ステップと、
    前記データ操作ステップで受け付けた操作の内容に従い、ユーザに指定された回路表示部品を変更する第1の変更ステップと、
    前記第1の変更ステップで前記回路表示部品を変更した内容に合わせて、前記第3のプログラムの対応する箇所を変更する第2の変更ステップと、
    を含むことを特徴とする請求項1から7のいずれか一つに記載のプログラミング支援プログラム。
  9. 前記表示ステップで前記回路表示部品を表示する際の表示属性をユーザが設定可能とする、
    ことを特徴とする請求項1から8のいずれか一つに記載のプログラミング支援プログラム。
  10. 前記表示属性は、前記回路表示部品生成ステップで作成済みの回路表示部品を表示する条件と、前記回路表示部品を表示する際の塗りつぶし色、透過率および拡縮率と、を含む、
    ことを特徴とする請求項9に記載のプログラミング支援プログラム。
  11. 前記回路表示部品生成ステップで作成済みの回路表示部品を表示する条件を、前記第1のプログラムまたは前記第3のプログラムに基づく実行ファイルが書き込まれる装置の内部メモリに格納されたデータの値を利用してユーザが指定可能とする、
    ことを特徴とする請求項10に記載のプログラミング支援プログラム。
  12. ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する第1の変換部と、
    前記第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換部と、
    前記第2のプログラムの1ブロックごとの解析結果が定められた条件を満たすと、前記条件を満たすブロックに対応する、前記第1のプログラムの1ブロック、を前記第3のプログラムを表示する際に前記第3のプログラムとともに表示する回路表示部品として生成する回路表示部品生成部と、
    前記回路表示部品を保持する回路表示部品格納部と、
    前記第3のプログラムおよび前記回路表示部品格納部が保持している前記回路表示部品を、前記回路表示部品が前記第3のプログラムのどのブロックに対応するか認識可能な形式で表示する表示部と、
    を備えることを特徴とするプログラミング支援装置。
  13. プログラムの開発に用いられるプログラミング支援装置が実行するプログラミング支援方法であって、
    ラダー言語で記述された第1のプログラムを中間言語で記述された第2のプログラムに変換する第1の変換ステップと、
    前記第2のプログラムを手続型言語で記述された第3のプログラムに変換する第2の変換ステップと、
    前記第2のプログラムの1ブロックごとの解析結果が定められた条件を満たすと、前記条件を満たすブロックに対応する、前記第1のプログラムの1ブロック、を前記第3のプログラムを表示する際に前記第3のプログラムとともに表示する回路表示部品として生成する回路表示部品生成ステップと、
    前記第3のプログラムおよび前記回路表示部品を、前記回路表示部品が前記第3のプログラムのどのブロックに対応するか認識可能な形式で表示する表示ステップと、
    を含むことを特徴とするプログラミング支援方法。
JP2020544689A 2020-03-26 2020-03-26 プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法 Active JP6854982B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/013714 WO2021192152A1 (ja) 2020-03-26 2020-03-26 プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法

Publications (2)

Publication Number Publication Date
JP6854982B1 true JP6854982B1 (ja) 2021-04-07
JPWO2021192152A1 JPWO2021192152A1 (ja) 2021-09-30

Family

ID=75267896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020544689A Active JP6854982B1 (ja) 2020-03-26 2020-03-26 プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法

Country Status (4)

Country Link
US (1) US20230065428A1 (ja)
JP (1) JP6854982B1 (ja)
CN (1) CN115335782A (ja)
WO (1) WO2021192152A1 (ja)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05274011A (ja) * 1992-01-23 1993-10-22 Mitsubishi Electric Corp プログラマブルコントローラ及びその制御方法
JPH10283005A (ja) * 1997-04-04 1998-10-23 Mitsubishi Electric Corp シーケンスプログラムの表示方法、および、実行方法
JPH10340109A (ja) * 1997-06-05 1998-12-22 Yaskawa Electric Corp プログラマブルコントローラのマルチプログラム表示装置
JP2001195108A (ja) * 2000-01-12 2001-07-19 Mitsubishi Electric Corp コントロール装置
JP2003084813A (ja) * 2001-09-14 2003-03-19 Fuji Electric Co Ltd ラダー回路の編集装置、および、その編集方法
JP2008293124A (ja) * 2007-05-22 2008-12-04 Digital Electronics Corp エディタ装置、エディタプログラムおよびそれを記録した記録媒体
WO2014136240A1 (ja) * 2013-03-07 2014-09-12 三菱電機株式会社 ラダープログラム表示プログラムおよびラダープログラム表示装置
WO2014155717A1 (ja) * 2013-03-29 2014-10-02 三菱電機株式会社 シーケンスプログラム部品作成プログラムおよびシーケンスプログラム部品作成装置
JP2016224557A (ja) * 2015-05-27 2016-12-28 株式会社キーエンス プログラム作成支援装置、プログラムおよび判別方法
WO2018051441A1 (ja) * 2016-09-14 2018-03-22 三菱電機株式会社 ラダープログラム編集支援装置およびラダープログラムの編集方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586328A (en) * 1994-10-21 1996-12-17 Microsoft Corporation Module dependency based incremental compiler and method
JP3819639B2 (ja) * 1999-07-09 2006-09-13 株式会社東芝 プログラミング装置
JP3847665B2 (ja) * 2002-05-30 2006-11-22 株式会社デジタル 制御プログラム検索装置、および、そのプログラム
CN101957745B (zh) * 2009-07-16 2013-04-17 沈阳高精数控技术有限公司 梯形图语言转换为结构文本语言的方法
WO2015030722A1 (en) * 2013-08-27 2015-03-05 Ge Intelligent Platforms, Inc. Method and apparatus for handling multiple language representations of computer code
US10102320B2 (en) * 2015-02-26 2018-10-16 Autodesk, Inc. Predictive multi-user client-server electronic circuit design system utilizing machine learning techniques
JP7172864B2 (ja) * 2019-06-07 2022-11-16 オムロン株式会社 サポート装置およびサポートプログラム
EP3835943A1 (en) * 2019-12-13 2021-06-16 Siemens Aktiengesellschaft Method and system for generating engineering diagrams in an engineering system

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05274011A (ja) * 1992-01-23 1993-10-22 Mitsubishi Electric Corp プログラマブルコントローラ及びその制御方法
JPH10283005A (ja) * 1997-04-04 1998-10-23 Mitsubishi Electric Corp シーケンスプログラムの表示方法、および、実行方法
JPH10340109A (ja) * 1997-06-05 1998-12-22 Yaskawa Electric Corp プログラマブルコントローラのマルチプログラム表示装置
JP2001195108A (ja) * 2000-01-12 2001-07-19 Mitsubishi Electric Corp コントロール装置
JP2003084813A (ja) * 2001-09-14 2003-03-19 Fuji Electric Co Ltd ラダー回路の編集装置、および、その編集方法
JP2008293124A (ja) * 2007-05-22 2008-12-04 Digital Electronics Corp エディタ装置、エディタプログラムおよびそれを記録した記録媒体
WO2014136240A1 (ja) * 2013-03-07 2014-09-12 三菱電機株式会社 ラダープログラム表示プログラムおよびラダープログラム表示装置
WO2014155717A1 (ja) * 2013-03-29 2014-10-02 三菱電機株式会社 シーケンスプログラム部品作成プログラムおよびシーケンスプログラム部品作成装置
JP2016224557A (ja) * 2015-05-27 2016-12-28 株式会社キーエンス プログラム作成支援装置、プログラムおよび判別方法
WO2018051441A1 (ja) * 2016-09-14 2018-03-22 三菱電機株式会社 ラダープログラム編集支援装置およびラダープログラムの編集方法

Also Published As

Publication number Publication date
WO2021192152A1 (ja) 2021-09-30
US20230065428A1 (en) 2023-03-02
CN115335782A (zh) 2022-11-11
JPWO2021192152A1 (ja) 2021-09-30

Similar Documents

Publication Publication Date Title
JP6424557B2 (ja) 情報処理装置及び情報処理プログラム
CN104823158B (zh) 用于简化的知识工程的方法与系统
US8830266B1 (en) Merging electronic diagrams
JP5112085B2 (ja) 事務フロー生成装置およびその方法
CN109002879B (zh) 神经网络模型的可视化建模方法和装置
JPWO2004025463A1 (ja) 要件定義方法、ソフトウェアの開発方法、及び、要件単語の変更方法並びに新規規定方法
JP2017506390A (ja) ソフトウェアコードの視覚的実現方法及び装置
JP2008541286A (ja) 3次元形状に関係づけられたパラメトリックモデルを生成する方法および装置
CN111652453A (zh) 用于零件设计、仿真和制造的智能工作流程顾问
JP5921765B2 (ja) プログラムグラフ表示装置、プログラムグラフ表示方法およびプログラムグラフ表示プログラム
CN113051011A (zh) 一种结合rpa和ai的图像信息提取方法及装置
JP6854982B1 (ja) プログラミング支援プログラム、プログラミング支援装置およびプログラミング支援方法
CN117215556A (zh) 模块化的页面快速构建方法、系统、设备及介质
US20210019122A1 (en) Information processing method, information processing apparatus, and program
JP5971399B2 (ja) 実行フロー作成支援プログラム
JP2000237937A (ja) 生産システムの設計支援方法
JP7185888B1 (ja) 情報処理システム、情報処理方法及び情報処理プログラム
US20230409956A1 (en) Machine learning prediction of additional steps of a computerized workflow
EP4283546A1 (en) Machine learning prediction of additional steps of a computerized workflow
US11593096B1 (en) Systems and methods for measuring complexity of applications and components in software development and deployment platforms
Pribeanu Tool support for handling mapping rules from domain to task models
JP2010218319A (ja) 債権ポートフォリオ制御装置、債権ポートフォリオ制御プログラム及び債権ポートフォリオ制御方法
CN110637522B (zh) 控制律增益模型自动生成方法及系统
KR20240007476A (ko) 인공지능 기반의 사용자 스케치 인식을 통한 인포그래픽 라이브러리 추천 장치 및 방법
CN117130598A (zh) 一种用于仿真软件集成的软件参数描述和转换方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200824

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200824

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210122

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: 20210216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210316

R150 Certificate of patent or registration of utility model

Ref document number: 6854982

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250