JP7466806B1 - データ処理装置、データ処理方法及びデータ処理プログラム - Google Patents

データ処理装置、データ処理方法及びデータ処理プログラム Download PDF

Info

Publication number
JP7466806B1
JP7466806B1 JP2023575965A JP2023575965A JP7466806B1 JP 7466806 B1 JP7466806 B1 JP 7466806B1 JP 2023575965 A JP2023575965 A JP 2023575965A JP 2023575965 A JP2023575965 A JP 2023575965A JP 7466806 B1 JP7466806 B1 JP 7466806B1
Authority
JP
Japan
Prior art keywords
condition
value
variable
control
partial program
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
JP2023575965A
Other languages
English (en)
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 JP7466806B1 publication Critical patent/JP7466806B1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

制御手順データ取得部(101)は、順序付けられた複数の条件と、いずれかの条件である対応条件と対応付けられ、対応条件の成否に応じて値が代入される複数の制御変数とが用いられて、制御手順が記述される制御手順データ(200)を取得する。プログラム管理部(102)は、各条件を選択し、選択した選択条件ごとに、選択条件の成否と、選択条件よりも前の順序の先行条件の状態変数の値とに基づき選択条件の状態変数の値を決定する状態判定ブロックを生成する。プログラム管理部(102)は、各制御変数を選択し、選択した選択制御変数ごとに、選択制御変数の対応条件の状態変数の値に基づき選択制御変数に代入する値を決定する制御実行ブロックを生成する。更に、プログラム管理部(102)は、状態判定ブロックと制御実行ブロックとを用いて、制御手順が反映される制御プログラム(300)を生成する。

Description

本開示は、プログラムの生成に関する。
本開示では、主に製造設備等で用いられる制御プログラム(以下、単にプログラムともいう)の生成について説明する。
製造設備は、PLC(Programmable Logic Controller)のようなコントローラで制御されている。制御の内容は製造設備ごとに異なる。このため、製造設備及び/又は製造設備を構成する機器の開発者は、制御仕様に応じてプログラムを開発している。PLCのプログラムは、主にIEC61131-3で規定された言語が用いられることが多く、中でもラダー言語が用いられることが多い。
PLCのプログラムは、製造設備が複雑になればなるほど、プログラム量が多くなり、開発工数が多くなる。PLCのプログラムの開発を支援するために、例えば、特許文献1~3に開示の技術がある。
特許3426405 特開平5-173609号公報 特開2021-149853号公報
製造設備に問題が発生した際に、原因究明のために製造設備の保守員がプログラムを確認することが多い。例えば、保守員は、プログラム上で問題発生時の各変数の値を確認する。このため、制御設備のプログラムには、要求仕様通りに動作することに加え、プログラム開発者以外の者にも理解しやすいように作成することが求められる。
ラダー言語によるプログラムの記法として、状態遷移記法(参考文献1)及び歩進制御記法(参考文献2)が用いられることがある。以降、両者をまとめて状態遷移記法と記す。
参考文献1:必携 PLCを使ったシーケンス制御プログラム定石集 シーケンス、PLC、制御、メカトロニクス 機械|本・雑誌 日刊工業新聞 (nikkan.co.jp)
参考文献2:歩進制御/シーケンス制御講座 (plckouza.com)
状態遷移記法により記述されたプログラムは、図17に示すように、状態判定ブロックと制御実行ブロックで構成される。状態判定ブロックは、状態の変化に従って順序動作が1動作ずつ進んでいく様子を変数に記憶するコードブロックである。制御実行ブロックは、各状態に応じて出力処理を切り替えるコードブロックである。
図17の例では、状態判定ブロックの状態変数M0~M3の値が状態を示す。また、条件変数X0、X1及びX2の値が遷移条件の成否を示す。そして、条件変数X0、X1及びX2の値が順にONになることで状態変数M1~M3の値が順次ONになる。そして、状態変数M3の値がONになると状態変数M0~M3の全ての値がOFFとなり、処理が初期状態に戻る。
また、制御実行ブロックにおいて、出力変数Y10は制御対象への出力値を示す。出力変数Y10の値は状態変数M1の値がONになればONとなる。一方、状態変数M2の値がONになれば出力変数Y10の値はOFFとなる。
また、同様の記法として、イベント制御記法(参考文献1)が用いられることがある。イベント制御記法で記述されたプログラムも、図18に例示するように、状態判定ブロックと制御実行ブロックで構成される。イベント制御記法で記述されたプログラムでは、順に発生するイベントが判定され、イベントの判定結果に応じて出力が制御される。
状態遷移記法とイベント制御記法の違いは以下の通りである。
状態遷移記法によるプログラムでは、最後の状態に達してから全ての状態変数M0~M3の値がOFFになる。一方、イベント制御記法によるプログラムでは、状態が変わった段階で前の状態がOFFになる。図18の例では、状態変数M1の値がONになれば、状態変数M0の値がOFFになる。また、状態変数M2の値がONになれば、状態変数M1の値がOFFになる。また、状態変数M3の値がOFFになれば、状態変数M2の値がONになる。更に、状態変数M0の値がONになれば、状態変数M3の値がOFFになる。
状態遷移記法とイベント制御記法は、用途、製造設備の分野等により使い分けられている。
現状、このような状態遷移記法及びイベント制御記法により容易にプログラムを記述する手法が確立されていない。
このため、プログラムを開発する開発者は制御手順に従ってプログラムを全て作成する必要があり、開発工数が大きくなるという課題がある。
本開示は、このような課題を解決することを主な目的とする。より具体的には、本開示は、プログラム生成における開発工数を削減することを主な目的とする。
本開示に係るデータ処理装置は、
順序付けられた複数の条件と、各々が前記複数の条件のいずれかと対応付けられ、対応付けられた条件である対応条件の成否に応じて値が代入される複数の制御変数とが用いられて、制御手順が記述される制御手順データを取得する制御手順データ取得部と、
前記複数の条件の各条件を順次選択し、選択した条件である選択条件ごとに、前記選択条件の成否と、前記選択条件よりも前の順序の条件である先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、前記制御手順に従って生成する第1の部分プログラム生成部と、
前記複数の制御変数の各制御変数を順次選択し、選択した制御変数である選択制御変数ごとに、前記選択制御変数の前記対応条件の状態変数の値に基づき前記選択制御変数に代入する値を決定する第2の部分プログラムを、前記制御手順に従って生成する第2の部分プログラム生成部と、
前記第1の部分プログラムと前記第2の部分プログラムとを用いて、前記制御手順が反映されるプログラムを生成するプログラム生成部とを有する。
本開示によれば、制御手順が反映されるプログラムを生成することができ、開発工数を削減することができる。
実施の形態1に係るデータ処理装置の機能構成例を示す図。 実施の形態1に係るデータ処理装置のハードウェア構成例を示す図。 実施の形態1に係る制御対象を制御する例を示す図。 実施の形態1に係る制御手順データの例を示す図。 実施の形態1に係る制御プログラムの例を示す図。 実施の形態1に係るプログラム管理部の動作例を示すフローチャート。 実施の形態1に係る制御プログラムの一部の例を示す図。 実施の形態1に係る制御プログラムの一部の例を示す図。 実施の形態1に係る制御プログラムの一部の例を示す図。 実施の形態2に係る制御プログラムの例を示す図。 実施の形態2に係る制御プログラムの例を示す図。 実施の形態3に係る制御プログラムの例を示す図。 実施の形態3に係るプログラム管理部の動作例を示すフローチャート。 実施の形態4に係る制御手順データの例を示す図。 実施の形態4に係る制御プログラムの例を示す図。 実施の形態4に係るプログラム管理部の動作例を示すフローチャート。 状態遷移記法による制御プログラムの例を示す図。 イベント制御記法による制御プログラムの例を示す図。
以下、実施の形態を図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係るデータ処理装置100の機能構成例を示す。
また、図2は、本実施の形態に係るデータ処理装置100のハードウェア構成例を示す。
データ処理装置100の動作手順は、データ処理方法に相当する。また、データ処理装置100の動作を実現するプログラムは、データ処理プログラムに相当する。
データ処理装置100は、コンピュータである。
データ処理装置100は、図2に示すように、ハードウェアとして、プロセッサ901、主記憶装置902、補助記憶装置903及び通信装置を備える。
また、データ処理装置100は、機能構成として、図1に示すように、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104を備える。制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能は、例えば、プログラムにより実現される。
補助記憶装置903には、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能を実現するプログラムが記憶されている。
これらプログラムは、補助記憶装置903から主記憶装置902にロードされる。そして、プロセッサ901がこれらプログラムを実行して、後述する制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の動作を行う。
図2は、プロセッサ901が制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能を実現するプログラムを実行している状態を模式的に表している。
図1において、制御手順データ取得部101は、制御手順データ200を取得する。
制御手順データ200は、制御手順が記述されるデータである。制御手順データ200には条件201と制御処理202が含まれる。制御手順データ200の詳細は後述する。
制御手順データ取得部101が行う処理は制御手順データ取得処理に相当する。
プログラム管理部102は、制御手順データ200を解析して制御プログラム300を生成する。制御プログラム300は、制御手順データ200に記述される制御手順が反映されるプログラムである。制御プログラム300には、状態判定ブロック301と制御実行ブロック302が含まれる。制御プログラム300の詳細は後述する。
プログラム管理部102は、第1の部分プログラム生成部、第2の部分プログラム生成部及びプログラム生成部に相当する。
また、プログラム管理部102により行われる処理は、第1の部分プログラム生成処理、第2の部分プログラム生成処理及びプログラム生成処理に相当する。
表示部103は、データ処理装置100のユーザに各種情報を表示する。また、表示部103は、生成された制御プログラム300を表示してもよい。
操作部104は、データ処理装置100のユーザからの操作を受け付ける。
操作部104は、コマンド取得部に相当する。
次に、制御手順データ200を説明する。
制御手順データ200は、条件201と制御処理202で構成される。制御手順データ200には複数の条件201と複数の制御処理202が含まれる、複数の条件201は順序付けられている。各制御処理202は、制御変数への変数値の代入処理、演算処理等である。制御変数は、制御対象を制御するための変数値が代入される変数である。制御変数は、例えば、出力変数である。各制御変数は、複数の条件201のうちのいずれかの条件と対応付けられる。そして、各制御変数には、対応付けられた条件である対応条件の成否に応じた変数値が代入される。制御手順データ200では、これら複数の条件201と複数の制御処理202(制御変数への変数値の代入処理)とが用いられて制御手順が記述される。
以下では、特に断りがない限り、制御変数は出力変数であるものとする。
以下、具体例を用いて制御手順データ200を説明する。
図3は、制御対象である空気圧シリンダの制御手順を示す。
また、図4は、図3の制御手順が記述される制御手順データ200の例を示す。
図3の例では、スタートボタンが押されると条件変数X0の値がONになる。
条件変数X0の値がONになると、出力変数Y10の値がONになる。
出力変数Y10の値がONになると、PLCの指示により空気圧シリンダ内のピストンが前進する。
ピストンの先端にセンサX1が反応すると、条件変数X1の値がONになる。
条件変数X1の値がONになると、出力変数Y10の値がOFFになる。
出力変数Y10の値がOFFになると、PLCの指示によりピストンの前進が停止する。
続いて、出力変数Y11がONになる。
出力変数Y11がONになると、PLCの指示によりピストンが後退する。
そして、ピストンの先端にセンサX2が反応すると条件変数X2がONになる。
条件変数X2がONになると、出力変数Y11の値がOFFになる。
出力変数Y11の値がOFFになると、PLCの指示によりピストンは動きを止める。
図4の例では、制御手順をフローチャート形式で記述している。図4の例では、条件201を判断オブジェクト(ひし形のオブジェクト)で表現している。また、制御処理202を処理オブジェクト(矩形のオブジェクト)で表現している。そして、オブジェクト間を矢印で繋ぐことで制御手順を示している。
つまり、図4の例では、判断オブジェクトに示される「X0==ON」、「X1==ON」及び「X2==ON」の各々が条件201である。そして、条件201に含まれる「X0」、「X1」及び「X2」の各々が条件変数である。また、処理オブジェクトに示される「Y10=ON」、「Y10=OFF」、「Y11=ON」及び「Y11=OFF」の各々が制御処理202である。そして、制御処理202で変数値(ON又はOFF)が代入される「Y10」及び「Y11」の各々が出力変数である。
なお、図4の例では「Y10=OFF」の後で「Y11=ON」が行われることが一つの処理オブジェクト(ステップT4)に記述されている。これに代えて、「Y10=OFF」と「Y11=ON」を別の処理オブジェクトに記述して、これら処理オブジェクトを矢印で繋ぐようにしてもよい。
同様に、論理積(AND)で接続した複数の条件を一つの判断オブジェクトに記述してもよいし、各条件を別の判断オブジェクトに記述してこれら判断オブジェクトを矢印で繋ぐようにしてもよい。また、他の方法で複数の条件を記述するようにしてもよい。
また、制御手順データ200では、条件201と制御処理202の順序が示せればよい。このため、フローチャートに代えて、XML(Extensible Markup Language)のような構造化言語で制御手順データ200を生成してもよい。更に、スプレッドシートのような表形式で制御手順データ200を生成してもよい。
また、図4の例では、PLCの入出力番地を示す変数X0、Y10等を用いてフローチャートを生成しているが、「センサA」のように理解しやすい名称を用いてフローチャートを生成してもよい。この場合は、「X0==ON」等に代えて「センサA==ON」等の記述が用いられる。また、フローチャートに用いられる名称と入出力番地の対応表を別途用意して、対応表を用いて名称を入出力番地に変換して制御プログラム300を生成してもよい。また、ラダー言語を扱うソフトウェアが変数を用いたプログラムに対応しているのであれば、「センサA」のような名称を変数名として用いて制御プログラム300を生成してもよい。この場合は、変数名と入出力番地の対応表も生成する。
次に、図1に示す制御プログラム300を説明する。
制御プログラム300は、状態判定ブロック301と制御実行ブロック302で構成される。
図5は、図4に示す制御手順データ200から生成された制御プログラム300の例を示す。
状態判定ブロック301は、図17の説明で示したように、状態の変化に従って順序動作が1動作ずつ進んでいく様子を変数に記憶するコードブロックである。図5の破線より上に示されている各行のコードブロックが各々状態判定ブロック301である。各状態判定ブロック301は第1の部分プログラムに相当する。
また、制御実行ブロック302も、図17の説明で示したように、各状態に応じて出力処理を切り替えるコードブロックである。図5の破線より下に示されている各行のコードブロックが各々制御実行ブロック302である。各制御実行ブロック302は、第2の部分プログラムに相当する。
***動作の説明***
本実施の形態に係るプログラム管理部102の動作例を図6を参照して説明する。
以下では、図4に示す制御手順データ200から図5に示す制御プログラム300を生成する例を用いて、プログラム管理部102の動作例を説明する。
図6は、制御手順データ取得部101が制御手順データ200を取得し、取得した制御手順データ200をプログラム管理部102に出力した後の動作を示す。
先ず、プログラム管理部102は、各条件、起点、及び終点に対応する状態変数を定義する(ステップS1)。
図5の例では、プログラム管理部102は、起点に状態変数M0を定義している。また、プログラム管理部102は、条件「X0==ON」に状態変数M1を定義している。また、プログラム管理部102は、条件「X1==ON」に状態変数M2を定義している。また、プログラム管理部102は、条件「X2==ON」に状態変数M3を定義している。更に、プログラム管理部102は、終点に状態変数M4を定義している。
なお、プログラム管理部102は、上述のように制御手順データ200に記載されている順に状態変数の変数名を指定してもよいし、データ処理装置100のユーザが例えば制御手順データ200上で状態変数の変数名を指定してもよい。
次に、プログラム管理部102は、起点に対するコードブロック(以下、単にブロックという)を生成する(ステップS2)。
ステップS2から後述するステップS6までに生成される各コードブロックが状態判定ブロック301(第1の部分プログラム)に相当する。
図5の例では、プログラム管理部102は、起点に対するコードブロックとして、終点の状態変数M4の値がONになったときのみ起点の状態変数M0の値がOFFになり、それ以外の場合は状態変数M0の値がONになるコードブロックを生成している。こうすることで、後述するステップS6で生成する終点に対するコードブロックによって状態変数M4の値がONになったときに状態変数M0の値がOFFになる。そして、他の状態変数M1~M4の値が順次OFFになる。この結果、処理が初期状態(全ての状態変数の値がOFF)に戻る。
なお、図3の例では、開始条件の成否の判定として、ピストンが初期位置にあるか否かを判定することを省略している。これに代えて、ピストンが初期位置にあるか否を判定することとし、プログラム管理部102が、起点に対するコードブロックにピストンが初期位置にあるか否を判定するための状態変数を追加してもよい。また、プログラム管理部102は、最初の条件でピストンが初期位置にあるか否かを判定をするコードブロックを生成してもよい。
次に、プログラム管理部102は、状態判定ブロック301を生成していない条件が存在するか否かを判定する(ステップS3)。
状態判定ブロック301を生成していない条件が存在する場合(ステップS3でYES)は、処理がステップS4に進む。一方、全ての条件に対して状態判定ブロック301を生成している場合(ステップS3でNO)は、処理がステップS6に進む。
ステップS4では、プログラム管理部102は次の条件を選択する。
より具体的には、プログラム管理部102は、ステップS2の直後のステップS4では、制御手順データ200における最初の条件を選択する。一方、既にいずれかの条件に対して状態判定ブロック301を生成している場合は、プログラム管理部102は、直前に状態判定ブロック301の生成の対象とした条件の制御手順データ200における次の条件を選択する。
ここでは、プログラム管理部102は、図5の制御手順データ200における最初の条件である条件「X0==ON」を選択するものとする。
次に、プログラム管理部102は、制御手順に従って、選択した選択条件(「X0==ON」)の状態変数(M1)の値を決定するブロック(状態判定ブロック301)を生成する(ステップS5)。
具体的には、プログラム管理部102は、選択条件(「X0==ON」)の成否、選択条件の前の順序の先行条件の状態変数(起点の状態変数M0)の値、選択条件の状態変数(M1)の値、及び選択条件の状態変数(M1)を非成立にする条件に基づき、選択条件の状態変数(M1)の値(ON/OFF)を決定するコードブロックを生成する。
ここでは、プログラム管理部102は、先行条件として、選択条件の直前の順序の条件のみを用いている。プログラム管理部102は、選択条件の前の順序の条件であれば、直前の順序の条件とともに、直前の順序以外の条件を用いてもよい。
選択条件の状態変数を非成立にする条件とは、選択条件の状態変数の値をOFFにする条件である。また、ここでは、選択条件の状態変数を非成立にする条件が、直前の条件の状態変数の値がOFFになることであるとデータ処理装置100又は制御手順データ200に定義されているものとする。このため、図5の例では、状態変数M1を非成立にする条件として状態変数M0の値がOFFであることが用いられている。
プログラム管理部102は、直前の状態変数M0の値がONであり、かつ条件「X0==ON」が成立したときに状態変数M1の値がONになり、直前の状態変数M0の値がOFFになると状態変数M1の値がOFFになるブロックを生成している。なお、ラダー言語では左側の条件が非成立になると右側の変数がOFFになる。このため、プログラム管理部102は、状態変数M1の値がONになった後で条件変数X0の値がOFFになっても状態変数M1の値をONにし続けるために、状態変数M1による自己保持プログラムも生成する。
プログラム管理部102は、条件「X1==ON」及び条件「X2==ON」に対してもステップS3~S5を行い、状態変数M2及び状態変数M3の値を決定するコードブロック(状態判定ブロック301)を生成する。
上記は制御手順データ200の最先の条件である「X0==ON」の状態判定ブロック301の生成を説明しているので、先行条件の状態変数として起点の状態変数M0が用いられている。条件「X1==ON」の状態判定ブロック301の生成では、先行条件の状態変数として条件「X0==ON」の状態変数M1が用いられる。また、条件「X2==ON」の状態判定ブロック301の生成では、先行条件の状態変数として条件「X1==ON」の状態変数M2が用いられる。
本実施の形態では、「X0==ON」のような単純な条件についての状態判定ブロック301を示している。しかし、プログラム管理部102は、より複雑な条件についても状態判定ブロック301を生成することができる。
複雑な条件として、例えば、タイマーが満了したか否かの判定を伴う条件が制御手順データ200に含まれていることが考えられる。プログラム管理部102は、タイマーが満了したか否かの判定を伴う条件が選択条件である場合は、選択条件の状態変数の値を、タイマーが満了したか否かの判定結果に基づく選択条件の成否と、先行条件の状態変数の値とに基づき決定する状態判定ブロック301を生成する。
また、別の複雑な条件として、複数の部分条件の論理演算を伴う条件が制御手順データ200に含まれていることが考えられる。プログラム管理部102は、複数の部分条件の論理演算を伴う条件が選択条件である場合に、選択条件の状態変数の値を、複数の部分条件の論理演算の結果に基づく選択条件の成否と、先行条件の状態変数の値とに基づき決定する状態判定ブロック301を生成する。
その際に、プログラム管理部102は、条件を判定するためだけのコードブロックを生成し、そのコードブロックにおける判定結果を用いて状態変数の値を決定する状態判定ブロック301を生成してもよい。例えば、図4の「X0==ON」の代わりに「(X10==ON AND X11==OFF」 OR D0>=10」という論理演算を伴う条件が設定されていると仮定する。この場合に、プログラム管理部102は、図7に示すように、当該条件の成否を判定し、判定結果を変数M99に代入するコードブロックを生成する。そして、プログラム管理部102は、変数M99の値を用いて状態変数M1の値を決定する状態判定ブロック301を生成する。
図6において、全ての条件に対して状態判定ブロック301が生成されたら(ステップS3でNO)、プログラム管理部102は、終点に対するコードブロック(状態判定ブロック301)を生成する(ステップS6)。
図5の例では、プログラム管理部102は、直前の状態変数M3の値がONになると、終点の状態変数M4の値がONになる状態判定ブロック301を生成している。
状態変数M4の値がONになることで、状態変数M0の値がOFFとなる。この結果、状態変数M1~M4の値も順次OFFとなり、処理が初期状態(全ての状態変数の値がOFF)に戻る。
続いて、プログラム管理部102は、制御実行ブロック302を生成する。
製造設備の保守時には、各出力変数が現在の値になった要因を判別しやすくすることが求められる。このため、値が変化する出力変数(特にビット型の変数)の値を決定するコードブロックは出力変数ごとにまとめて記述することが多い。このような理由から、図6の処理フローでは、プログラム管理部102は出力変数ごとに制御実行ブロック302を生成する。ただし、制御プログラム300の生成方法に明確なルールはないので、プログラム管理部102は、制御手順データ200における出現順序に沿って出力変数の値を決定するコードブロック(制御実行ブロック302)を生成してもよい。
図6において、プログラム管理部102は、制御実行ブロック302を生成していない出力変数が存在するか否かを判定する(ステップS7)。
制御実行ブロック302を生成していない出力変数が存在する場合(ステップS7でYES)は、処理がステップS8に進む。一方、全ての出力変数に対して制御実行ブロック302を生成している場合(ステップS7でNO)は、処理がステップS10に進む。
ステップS8では、プログラム管理部102は次の出力変数を選択する。
より具体的には、プログラム管理部102は、制御手順データ200において、直前に制御実行ブロック302の生成の対象とした出力変数の次の出力変数を選択する。
次に、プログラム管理部102は、選択した選択出力変数に代入する値を決定するコードブロック(制御実行ブロック302)を生成する
(ステップS9)。
より詳細には、プログラム管理部102は、選択出力変数に代入する値を選択出力変数が対応する対応条件の状態変数の値に基づき決定する制御実行ブロック302を生成する。
具体例として、ステップS8で出力変数Y10が選択された場合のプログラム管理部102のステップS9の動作を説明する。
図4では、出力変数Y10の値は、対応条件である「X0==ON」が成立したとき(ステップT1でYES)にONになる(ステップT2)。つまり、出力変数Y10の値は、対応条件「X0==ON」の状態変数M1の値がONであるときにONになる。また、図4では、出力変数Y10の値は、対応条件である「X1==ON」が成立したとき(ステップT3でYES)にOFFになる(ステップT4)。つまり、出力変数Y10の値は、対応条件「X1==ON」の状態変数M2の値がONであるときにOFFになる。プログラム管理部102は、このような制御手順が反映される制御実行ブロック302を生成する。
また、ステップS8で出力変数Y11が選択された場合のプログラム管理部102のステップS9の動作を説明する。
図4では、出力変数Y11の値は、対応条件である「X1==ON」が成立したとき(ステップT3でYES)にONになる(ステップT4)。つまり、出力変数Y11の値は、対応条件「X1==ON」の状態変数M2の値がONであるときにONになる。また、図4では、出力変数Y11の値は、対応条件である「X2==ON」が成立したとき(ステップT5でYES)にOFFになる(ステップT6)。つまり、出力変数Y11の値は、対応条件「X2==ON」の状態変数M3の値がONであるときにOFFになる。プログラム管理部102は、このような制御手順が反映される制御実行ブロック302を生成する。
全ての出力変数に対して制御実行ブロック302が生成されると(ステップS7でNO)、プログラム管理部102は、全ての状態判定ブロック301と制御実行ブロック302とを組み合わせて、制御手順データ200の制御手順を反映する制御プログラム300を生成する(ステップS10)。
なお、以上では、プログラム管理部102が、ステップS9において、出力変数が1回ずつONとOFFになる制御実行ブロック302を生成する例を示している。プログラム管理部102は、出力変数の値がより多く変化する制御実行ブロック302を生成することもできる。
例えば、制御手順データ200に2つ以上の条件の組み合わせである条件セットが2つ以上存在し、出力変数に2つ以上の条件セットが対応付けられているとものとする。また、当該出力変数に、2つ以上の条件セットの各々に含まれる条件が対応条件として対応付けられているものとする。なお、ここでは、このような出力変数を複合出力変数と呼ぶ。複合出力変数は複合制御変数の例である。
このような場合に、複合出力変数が選択出力変数として選択されたとする。プログラム管理部102は、複合出力変数に対応付けられている条件セットごとに、複合出力変数に代入する値を条件セットに含まれる対応条件の状態変数の値の組み合わせに基づき決定する制御実行ブロック302を生成する。
具体的には、複合出力変数Y1に条件セット1~3が対応付けられているものとする。
条件セット1には、条件1(「X1==ON」)と条件2(「X2==OFF」)が含まれているものとする。条件セット2には、条件3(「X3==ON」)と条件4(「X4==OFF」)が含まれているものとする。条件セット3には、条件5(「X5==ON」)と条件6(「X6==OFF」)が含まれているものとする。
この場合に、プログラム管理部102は、条件1(「X1==ON」)の状態変数としてM1を設定し、条件2(「X2==OFF」)の状態変数としてM2を設定したものとする。また、プログラム管理部102は、条件3(「X3==ON」)の状態変数としてM3を設定し、条件4(「X4==OFF」)の状態変数としてM4を設定したものとする。また、プログラム管理部102は、条件5(「X5==ON」)の状態変数としてM5を設定し、条件6(「X6==OFF」)の状態変数としてM6を設定したものとする。
このような場合に、プログラム管理部102は、図8に示すように、条件セットごとに、複合出力変数Y1に代入する値を条件セットに含まれる対応条件の状態変数の値の組み合わせに基づき決定する制御実行ブロック302を生成する。
また、1ビット値ではなく整数値をとる出力変数の値を決定する制御実行ブロック302をプログラム管理部102が生成する場合がある。
例えば、2つ以上の条件が対応条件として対応付けられ、対応条件が成立した場合に代入される値が対応条件ごとに変動する出力変数が制御手順データ200に含まれているとする。ここでは、このような出力変数を変動出力変数と呼ぶ。変動出力変数は変動制御変数の例である。
このような場合に、変動出力変数が選択出力変数として選択されたとする。プログラム管理部102は、変動出力変数に代入する値を、変動出力変数の対応条件の状態変数の値に基づき変動させる制御実行ブロック302を生成する。
具体的には、変動出力変数D10が条件1~3に対応付けられているものとする。そして、条件1が成立すれば変動出力変数D10に値10が代入されるものとする。また、条件2が成立すれば変動出力変数D10に値20が代入されるものとする。更に、条件3が成立すれば変動出力変数D10に値30が代入されるものとする。
この場合に、プログラム管理部102は、条件1に対して状態変数M1を設定し、条件2に対して状態変数M2を設定し、条件3に対して状態変数M3を設定する。
制御手順データ取得部101は、状態変数M1の値がONであれば変動出力変数D10に値10を代入し、状態変数M2の値がONであれば変動出力変数D10に値20を代入し、状態変数M3の値がONであれば変動出力変数D10に値30を代入する制御実行ブロック302を生成する。プログラム管理部102は、例えば、図9に示すように、状態変数ごとに変動出力変数D10に代入する値を変動させる(図9ではMOV命令で表現)制御実行ブロック302を生成する。
また、単純な値の変更に限らず、例えばファンクションブロックのような別なコードブロックを呼び出すような処理を制御手順データ200で規定してもよい。このような場合は、プログラム管理部102は、条件成立時にファンクションブロックを呼び出す制御変数が含まれる制御実行ブロック302を生成する。
***実施の形態の効果の説明***
本実施の形態によれば、制御手順が反映される制御プログラムを状態遷移記法により生成することができ、開発工数を削減することができる。
つまり、本実施の形態では、条件と条件の成否に応じた制御処理が記述された制御手順データをプログラム開発者が作成するだけで、制御手順が反映された制御プログラムを普段見慣れた形式(状態遷移記法)が生成される。このため、本実施の形態によれば、製造設備の保全のしやすさを維持したまま製造設備の制御プログラムの開発工数を削減することができる。
実施の形態2.
実施の形態1では状態遷移記法による制御プログラム300の生成例を示した。本実施の形態では、イベント制御記法による制御プログラム300の生成例を示す。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図10は、イベント制御記法での制御プログラム300を示す。
以下では、図4の制御手順データ200に対して、プログラム管理部102が図6の処理フローを実行することで、図10に示す制御プログラム300を生成する例を説明する。
また、以下では、主に実施の形態1と異なる処理を説明する。
ステップS5では、プログラム管理部102は、選択条件の状態変数の値を、選択条件の成否と、先行条件の状態変数の値と、選択条件よりも後の順序の条件の状態変数の値とに基づき決定する状態判定ブロック301を生成する。
ここで、選択条件「X0==ON」の状態変数を決定する状態判定ブロック301の生成例を用いて、ステップS5におけるプログラム管理部102の動作の詳細を説明する。
ここでは、選択条件の状態変数を非成立にする条件が、選択条件の直後の条件の状態変数の値がONになることであると制御手順データ200に定義されているものとする。
このため、プログラム管理部102は、選択条件「X0==ON」の直後の条件である「X1==ON」の状態変数M2の値がONであるときに選択条件「X0==ON」の状態変数M1の値がOFFになる状態判定ブロック301を生成している。
なお、選択条件「X0==ON」の直前の条件(起点)の状態変数M0は状態変数M1の値がONになる条件ではある。しかし、実施の形態1(状態遷移記法)とは異なり、プログラム管理部102は、状態変数M0が状態変数M1の値をOFFにする条件とはならないように状態判定ブロック301を生成する。
ステップS2では、プログラム管理部102は、状態変数M1~M4の値がONでない状態、つまり初期状態であるときに、起点の状態変数M0の値がONになり、ステップS5の処理と同様に、直後の条件の状態変数M1がONになると状態変数M0の値がOFFになる状態判定ブロック301を生成する。
なお、図10では、状態判定ブロック301を単純化して示すために状態変数M1の判定処理を重複して記述している。プログラム管理部102は、不要な左側の状態変数M1の判定処理を生成しなくてもよい。
イベント制御記法の場合は、次の条件の状態変数の値がONだと、前の条件の状態変数の値はOFFである。このため、プログラム管理部102は、選択出力変数がビット型変数の場合は、ステップS9において、ビット型変数の値がONとなる状態変数のみで制御実行ブロック302を生成する。図4の例では、出力変数Y10の値は条件「X0==ON」の状態変数M1の値がONの時のみONになる。また、出力変数Y11の値は条件「X1==ON」の状態変数M2の値がONの時のみONになる。プログラム管理部102は、図10に示すように、このような制御手順が反映されるように出力変数Y10の制御実行ブロック302と出力変数Y11の制御実行ブロック302を生成する。
以上のように、本実施の形態によれば、制御手順が反映される制御プログラムをイベント制御記法により生成することができ、開発工数を削減することができる。
また、実施の形態1及び実施の形態2では、プログラム管理部102がラダー言語で制御プログラムを生成する例を説明した。プログラム管理部102は、ラダー言語以外の言語で制御プログラムを生成することもできる。
図11は、プログラム管理部102が、図4の制御手順データ200に対し図6の処理フローを実行して生成したC言語による制御プログラム300の例を示す。
なお、図11は、制御手順データ200で規定された条件201と制御処理202のみを反映したコードブロックを示す。つまり、図11では、変数名の定義等の図示は省略している。
データ処理装置100のユーザは、プログラム管理部102が生成する制御プログラム300(状態判定ブロック301、制御実行ブロック302)の種別を指定することができる。つまり、ユーザは、状態遷移記法、イベント制御記法、C言語等のいずれで制御プログラム300を生成するかを指定することができる。
データ処理装置100のユーザは、例えば、入出力装置904を介して、操作部104に、制御プログラム300の種別を指定するコマンドを入力する。操作部104は、コマンドを取得し、プログラム管理部102に制御プログラム300の種別を通知する。
プログラム管理部102は、操作部104から通知された種別に対応する制御プログラム300を生成する。つまり、ユーザにより制御プログラム300の種別として状態遷移記法が指定された場合は、プログラム管理部102は、実施の形態1で説明した方法により制御プログラム300を生成する。一方、ユーザにより制御プログラム300の種別としてイベント制御記法が指定された場合は、プログラム管理部102は、実施の形態2で説明した方法により制御プログラム300を生成する。
また、ユーザは、他の選択、例えば、状態変数を非成立にする条件を設定するか否かの選択を行うことができる。例えば、ユーザは、このような選択を指示するコマンドを操作部104に入力する。また、ユーザは、このような選択を制御手順データ200において行ってもよい。また、表示部103に、このような選択を可能にするインターフェースを用意してもよい。プログラム管理部102は、ユーザの選択に合致する制御プログラム300を生成する。
実施の形態3.
製造設備を制御する制御プログラムには、状態の初期化、製造設備の動作の強制停止、問題発生時の変数値の維持等を可能とすることが求められることが多い。このため、本実施の形態では、プログラム管理部102は、これらの要求に対応する制御プログラム300を生成する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図12は、本実施の形態に係る状態遷移記法による制御プログラム300の例を示す。
図12では、図5と比較して、破線で囲んだ変数が追加されている。
具体的には、図12では、変数M100の値がONになると全ての状態変数の初期化が行われる。また、図12では、変数M101の値がOFFになると、全ての状態変数の値が固定化され、状態の進行が止まる。更に、変数M101の値がOFFになると、出力変数Y10と出力変数Y11の値が強制的にOFFになり、ピストンの動作が停止する。
図13は、プログラム管理部102が図12の制御プログラム300を生成する際の動作例を示すフローチャートである。
図13では、図6と比較して、ステップS100、ステップS21、ステップS51、ステップS61及びステップS91が異なる。
以下では、主にこれらについて説明する。
ステップS100では、プログラム管理部102は、状態変数の初期化のための変数、状態変数の値の固定化のための変数を決定する。
図12の例では、プログラム管理部102は、初期化のための変数(以下、初期化変数という)としてM100を決定する。また、プログラム管理部102は、状態変数の値の固定化のための変数(以下、固定化変数という)としてM101を決定する。
初期化変数及び固定化変数の変数名は、プログラム管理部102が自動で割り振っても良いし、ユーザが例えば制御手順データ200で事前に指定してもよい。
また、図12の例では、全ての状態変数の値を一律に固定化するので、プログラム管理部102は固定化変数を一つだけ決定する。これと異なり、プログラム管理部102は、固定化の範囲を切り分けるために、複数の固定化変数を決定してもよい。例えば、ユーザが制御手順データ200にて同時に変数値を固定化する範囲を指定する。そして、プログラム管理部102は、ユーザにより指定された範囲ごとに、固定化変数を決定する。
ステップS21では、起点に対するブロック(状態判定ブロック301)として、初期化変数M100の値がONになると状態変数M0の値がOFFになるブロックを生成する。起点の状態変数M0の値がOFFになることで、状態変数M1~M4の値が順次OFFとなる。この結果、全ての状態変数の初期化が実現される。
また、プログラム管理部102は、状態変数M0の値がOFFであり固定化変数M101の値がOFFの時に状態変数M0の値がONにならないように固定化変数M101を起点の状態判定ブロック301に追加する。これにより、固定化変数M101の値がOFFの時に状態変数M0の値がONにならない。これにより、状態を維持して制御の進行を止めることができる。
ステップS51では、プログラム管理部102は、ステップS21と同様に状態変数M1~M3の値がOFFであり固定化変数M101の値がOFFの時に状態変数M1~M3の値がONにならないようにするブロック(状態判定ブロック301)生成する。
ステップS61でも同様に、プログラム管理部102は、状態変数M4の値がOFFであり固定化変数M101の値がOFFの時に状態変数M4の値がONにならないようにするブロック(状態判定ブロック301)を生成する。また、プログラム管理部102は、それ以外の処理が変わらないように、状態変数M3と状態変数M4の値が共にONの時に状態変数M4の値がONのまま維持するようにする。
ステップS91では、プログラム管理部102は、固定化変数M101の値がOFFの時に出力変数Y10と出力変数Y11の値がOFFになるブロック(制御実行ブロック302)を生成する。これにより、どのような状態で固定化変数M101の値がOFFになってもピストンを停止することができる。
本実施の形態では、固定化変数M101の値がOFFになると全ての出力変数の値が強制的にOFFになるブロックをプログラム管理部102が生成する例を説明した。
これに代えて、プログラム管理部102は、指定された出力変数の値のみが強制的にOFFになる制御実行ブロック302を生成してもよい。この場合は、ユーザが対象となる出力変数を例えば制御手順データ200上で指定する。そして、プログラム管理部102が制御手順データ200で指定されている出力変数の値を強制的にOFFにする制御実行ブロック302を生成する。
また、プログラム管理部102は、強制的に値がOFFになる出力変数を切り替える制御実行ブロック302を生成してもよい。この場合は、ユーザが出力変数の切り替え条件を例えば制御手順データ200上で指定する。そして、プログラム管理部102が、強制的に値がOFFになる出力変数を切り替え条件に従って切り替える制御実行ブロック302を生成する。
また、プログラム管理部102は、出力変数の値をOFF以外の既定値に強制的に変更する制御実行ブロック302を生成してもよい。この場合は、ユーザが強制変更後の出力変数の値を例えば制御手順データ200上で指定する。そして、プログラム管理部102が制御手順データ200で指定されている値に出力変数の値を強制的に変更する制御実行ブロック302を生成する。
また、本実施の形態では、プログラム管理部102が初期化変数と固定化変数を用いる例を示したが、プログラム管理部102は、これら以外の変数を用いてもよい。
プログラム管理部102は、このような変数を常に用いて制御プログラム300を生成してもよい。また、ユーザが制御手順データ200でこれら変数の使用有無を指定し、プログラム管理部102が、制御手順データ200の指定に従って変数を使用して制御プログラム300を生成してもよい。
以上のように、本実施の形態によれば、状態の初期化、製造設備の動作の強制停止、問題発生時の変数の状態維持などを可能にする制御プログラムを生成することができる。また、この結果、制御プログラムの開発工数を低減することができる。
実施の形態4.
製造設備の制御では、条件に応じて制御を切り替えることがある。本実施の形態では、このような事象に鑑み、プログラム管理部102は、分岐及び合流が定義された制御手順データ200に対応して制御プログラム300を生成する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図14は、分岐条件及び合流条件が含まれる制御手順データ200の例を示す。
図14のステップT11とステップT12は図4のステップT1とステップT2と同じである。
図14では、ステップT13において、条件「X1==ON」と条件「X20==ON」が成立していると判定されれば、出力変数Y10の値がOFFになり、出力変数Y11の値がONになる(ステップT14)。一方で、条件「X1==ON」と条件「X20==OFF」が成立していると判定された場合は、出力変数Y10の値がOFFになり、出力変数Y12の値がONになる(ステップT15)。
そして、ステップT14及びステップT15のいずれが実行されても、条件「X2==ON」が成立すれば(ステップT16でYES)、出力変数Y11の値と出力変数Y12の値がOFFになる(ステップT17)。
図14では、ステップT13の「X1==ON&&X20==ON」と「X1==ON&&X20==OFF」により分岐が発生しており、これらは分岐条件である。
また、ステップ16の条件「X2==ON」の成立時に分岐が合流する。このため、ステップ16の条件「X2==ON」は合流条件である。
また、分岐条件により発生した分岐が合流するまでの複数の経路を分岐経路という。図14では、ステップT13からステップT14を経てステップT16に至る経路と、ステップT13からステップT15を経てステップT16に至る経路は、それぞれ分岐経路である。
また、図14では、出力変数Y11の値は、ステップT14において分岐条件「X1==ON&&X20==ON」の成立に依存している。また、出力変数Y11の値は、ステップT17において合流条件「X2==ON」の成立に依存している。このため、分岐条件「X1==ON&&X20==ON」と合流条件「X2==ON」は、出力変数Y11の対応条件である。
同様に、出力変数Y12の値は、ステップT15において分岐条件「X1==ON&&X20==OFF」の成立に依存している。また、出力変数Y12の値は、ステップT17において合流条件「X2==ON」の成立に依存している。このため、分岐条件「X1==ON&&X20==OFF」と合流条件「X2==ON」は、出力変数Y12の対応条件である。
出力変数Y11と出力変数Y12は、分岐条件と合流条件を対応条件としており、合成出力変数に該当する。合成出力変数は合成制御変数の例である。
一方で、出力変数Y10は、分岐条件「X1==ON&&X20==ON」又は「X1==ON&&X20==OFF」が対応条件となっているが、合流条件「X2==ON」は対応条件になっていない。このため、出力変数Y10は合成出力変数に該当しない。
図15は、図14に示す制御手順データ200から生成された状態遷移記法による制御プログラム300の例を示す。
以下では、プログラム管理部102が図14に示す制御手順データ200から図15に示す制御プログラム300を生成する手順を、図16を用いて説明する。
図15では、図6と比較して、ステップS11、ステップS52及びステップS92が異なる。
以下では、主にこれらについて説明する。
ステップS11では、図6のステップS1と同様に、各条件、起点及び終点に対して状態変数を定義する。ステップS11では、制御手順データ200に分岐条件が含まれている場合に、プログラム管理部102は、分岐条件に、分岐条件の成否を示す状態変数を定義する。また、制御手順データ200に合流条件が含まれている場合に、プログラム管理部102は、合流条件に、合流条件の成否を示す状態変数を定義する。
図15の例では、プログラム管理部102は、起点に状態変数M0を定義している。また、プログラム管理部102は、条件「X0==ON」に状態変数M1を定義している。また、プログラム管理部102は、分岐条件「X1==ON&&X20==ON」に状態変数M2を定義している。また、プログラム管理部102は、分岐条件「X1==ON&&X20==OFF」に状態変数M3を定義している。また、プログラム管理部102は、合流条件「X2==ON」に状態変数M4を定義している。また、プログラム管理部102は、終点に状態変数M5を定義している。
ステップS52では、プログラム管理部102は、選択条件が分岐条件の場合に、選択条件である分岐条件(選択分岐条件という)の状態変数の値を、選択分岐条件の成否と、選択分岐条件の先行条件の状態変数の値と、他の分岐条件の状態変数の値とに基づき決定するコードブロック(状態判定ブロック301)を生成する。
より具体的には、プログラム管理部102は、選択分岐条件が成立し、選択分岐条件の直前の条件の状態変数の値がONであり、他の分岐条件の状態変数がOFFである場合に、選択分岐条件の状態変数がONになる状態判定ブロック301を生成する。換言すると、プログラム管理部102は、選択分岐条件が成立し、選択分岐条件の直前の条件の状態変数の値がONである場合に、選択分岐条件の状態変数がONになるとともに、他の分岐条件の状態変数がOFFになる状態判定ブロック301を生成する。
図15では、選択分岐条件「X1==ON&&X20==ON」が成立し、直前の条件の状態変数M1の値がONであり、他の分岐条件「X1==ON&&X20==OFF」の状態変数M3の値がOFFの場合に、選択分岐条件「X1==ON&&X20==ON」の状態変数M2の値がONになる。
つまり、プログラム管理部102は、状態変数M2の値が先にONになると状態変数M3の値がONにならず、逆に、状態変数M3の値が先にONになると状態変数M2の値がONにならない状態判定ブロック301を生成する。
図15では、直前の条件の状態変数M1の成否判定処理が、状態変数M2の成否判定処理と、状態変数M3の成否判定処理とで共通化されている。これに代えて、プログラム管理部102は、状態変数M2の成否判定処理と状態変数M3の成否判定処理とで、個別に状態変数M1の成否判定処理を実施する状態判定ブロック301を生成してもよい。
また、ステップS52では、選択条件が合流条件である場合に、プログラム管理部102は、合流条件の状態変数の値を、合流条件の成否と、複数の分岐経路に含まれる条件の状態変数の値又は複数の分岐条件の状態変数の値とに基づき決定するコードブロック(状態判定ブロック301)を生成する。
より具体的には、プログラム管理部102は、合流条件が成立し、合流前の複数の分岐経路のいずれかに含まれるいずれかの条件の状態変数又は複数の分岐条件のうちのいずれかの状態変数の値がONである場合に、合流条件の状態変数がONになる状態判定ブロック301を生成する。
図15では、合流条件「X2==ON」が成立し、2つの分岐条件の状態変数M2及び状態変数M3のうちのいずれかの値がONである場合に、合流条件の状態変数M4の値がONになる。なお、図14の制御手順データ200では、いずれの分岐経路にも途中に条件はないので、図15では、合流条件が成立し、状態変数M2及び状態変数M3のうちのいずれかの値がONである場合に、合流条件「X2==ON」の状態変数M4の値がONになる。
なお、図14では、条件の成立で複数の分岐経路が合流する例を示したが、制御処理で複数の分岐経路が合流する場合も、プログラム管理部102は、同様の手順で状態判定ブロック301を生成する。
例えば、図14のステップT14及びステップT15とステップT16との間に制御処理「Y13=ON」が記載され、制御処理「Y13=ON」で複数の分岐経路が合流するような例でも、プログラム管理部102は、同様の手順で状態判定ブロック301を生成する。
ステップS92では、プログラム管理部102は、実施の形態1と同様に、制御手順に従って、選択出力変数に代入する値を決定するコードブロック(制御実行ブロック302)を生成する。
なお、本実施の形態では、選択制御変数が合成出力変数である場合に、プログラム管理部102は、合成出力変数に代入する値を、分岐条件(合成出力変数の対応条件)の状態変数の値と合流条件(合成出力変数の対応条件)の状態変数の値とに基づき決定するコードブロック(制御実行ブロック302)を生成する。
選択出力変数が合成出力変数ではない場合は、プログラム管理部102は、実施の形態1と同様の方法で、制御実行ブロック302を生成する。
図15の例では、合成出力変数ではない出力変数Y10の値は、条件「X0==ON」の状態変数M1がONのときにONになる。また、出力変数Y10の値は、分岐条件「X1==ON&&X20==ON」の状態変数M2及び分岐条件「X1==ON&&X20==OFF」の状態変数M3のいずれかがONのときにOFFになる。
また、合成出力変数である出力変数Y11の値は、分岐条件「X1==ON&&X20==ON」の状態変数M2の値がONのときにONになる。また、出力変数Y11の値は、合流条件「X2==ON」の状態変数M4がONのときにOFFになる。
また、合成出力変数である出力変数Y12の値は、分岐条件「X1==ON&&X20==OFF」の状態変数M3の値がONのときにONになる。また、出力変数Y12の値は、合流条件「X2==ON」の状態変数M4がONのときにOFFになる。
以上のように、本実施の形態によれば、分岐及び合流が規定された制御手順データから制御プログラムを生成することができ、制御プログラムの開発工数を低減することができる。
以上、実施の形態1~4を説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
また、これらの実施の形態に記載された構成及び手順を必要に応じて変更してもよい。
***ハードウェア構成の補足説明***
最後に、データ処理装置100のハードウェア構成の補足説明を行う。
図2に示すプロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
図2に示す主記憶装置902は、RAM(Random Access Memory)である。
図2に示す補助記憶装置903は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
図2に示す入出力装置904は、マウス、キーボード、ディスプレイ等である。
図2には図示していないが、データ処理装置100は通信装置を備えていてもよい。通信装置は、データの通信処理を実行する電子回路である。通信装置は、例えば、通信チップ又はNIC(Network Interface Card)である。
また、補助記憶装置903には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がプロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、主記憶装置902、補助記憶装置903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
また、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104の少なくともいずれかの「部」を、「回路」又は「工程」又は「手順」又は「処理」又は「サーキットリー」に読み替えてもよい。
また、10は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
この場合は、制御手順データ取得部101、プログラム管理部102、表示部103及び操作部104は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
100 データ処理装置、101 制御手順データ取得部、102 プログラム管理部、103 表示部、104 操作部、200 制御手順データ、201 条件、202 制御処理、300 制御プログラム、301 状態判定ブロック、302 制御実行ブロック、901 プロセッサ、902 主記憶装置、903 補助記憶装置、904 入出力装置。

Claims (19)

  1. 順序付けられた複数の条件と、各々が前記複数の条件のいずれかと対応付けられ、対応付けられた条件である対応条件の成否に応じて値が代入される複数の制御変数とが用いられて、制御手順が記述される制御手順データを取得する制御手順データ取得部と、
    前記複数の条件の各条件を順次選択し、選択した条件である選択条件ごとに、前記選択条件の成否と、前記選択条件よりも前の順序の条件である先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、前記制御手順に従って生成する第1の部分プログラム生成部と、
    前記複数の制御変数の各制御変数を順次選択し、選択した制御変数である選択制御変数ごとに、前記選択制御変数の前記対応条件の状態変数の値に基づき前記選択制御変数に代入する値を決定する第2の部分プログラムを、前記制御手順に従って生成する第2の部分プログラム生成部と、
    前記第1の部分プログラムと前記第2の部分プログラムとを用いて、前記制御手順が反映されるプログラムを生成するプログラム生成部とを有するデータ処理装置。
  2. 前記第1の部分プログラム生成部は、
    前記選択条件の成否と、前記選択条件の直前の順序の条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  3. 前記第1の部分プログラム生成部は、
    前記制御手順の起点の状態変数を生成し、
    前記複数の条件のうちの最先の順序の条件が前記選択条件である場合に、前記選択条件である前記最先の順序の条件の成否と、前記起点の状態変数の値とに基づき、前記選択条件である前記最先の順序の条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  4. 前記第1の部分プログラム生成部は、
    前記制御手順の終点の状態変数を生成し、
    前記終点の状態変数の値に基づき前記起点の状態変数の値を決定する第1の部分プログラムを、生成する請求項3に記載のデータ処理装置。
  5. 前記第1の部分プログラム生成部は、
    前記選択条件の成否又は前記選択条件の状態変数の値と、前記先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  6. 前記制御手順データ取得部は、
    複数の部分条件の論理演算を伴う条件が前記複数の条件に含まれる制御手順データを取得し、
    前記第1の部分プログラム生成部は、
    前記複数の部分条件の論理演算を伴う条件が前記選択条件である場合に、前記複数の部分条件の論理演算の結果に基づく前記選択条件の成否と、前記先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  7. 前記制御手順データ取得部は、
    タイマーが満了したか否かの判定を伴う条件が前記複数の条件に含まれる制御手順データを取得し、
    前記タイマーが満了したか否かの判定を伴う条件が前記選択条件である場合に、前記タイマーが満了したか否かの判定結果に基づく前記選択条件の成否と、前記先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  8. 前記制御手順データ取得部は、
    各々が2つ以上の条件の組み合わせである2つ以上の条件セットが対応付けられ、前記2つ以上の条件セットの各々に含まれる条件が前記対応条件として対応付けられた制御変数である複合制御変数が前記複数の制御変数に含まれる制御手順データを取得し、
    前記第2の部分プログラム生成部は、
    前記複合制御変数が前記選択制御変数である場合に、前記複合制御変数に対応付けられている条件セットごとに、条件セットに含まれる前記対応条件の状態変数の値の組み合わせに基づき前記複合制御変数に代入する値を決定する第2の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  9. 前記制御手順データ取得部は、
    2つ以上の条件が前記対応条件として対応付けられ、前記対応条件が成立した場合に代入される値が前記対応条件ごとに変動する制御変数である変動制御変数が前記複数の制御変数に含まれる制御手順データを取得し、
    前記第2の部分プログラム生成部は、
    前記変動制御変数が前記選択制御変数である場合に、前記変動制御変数の前記対応条件の状態変数の値に基づき、前記変動制御変数に代入する値を変動させる第2の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  10. 前記第1の部分プログラム生成部は、
    前記選択条件の成否と、前記先行条件の状態変数の値と、前記選択条件よりも後の順序の条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項1に記載のデータ処理装置。
  11. 前記第1の部分プログラム生成部は、
    前記選択条件の成否と、前記先行条件の状態変数の値と、前記選択条件の直後の順序の条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、生成する請求項10に記載のデータ処理装置。
  12. 前記第1の部分プログラム生成部は、
    前記複数の条件の全ての状態変数を初期化する第1の部分プログラムを生成する請求項1に記載のデータ処理装置。
  13. 前記第1の部分プログラム生成部は、
    前記複数の条件の全ての状態変数の値又は前記複数の条件の状態変数のうちの指定された状態変数の値を固定化する第1の部分プログラムを生成する請求項1に記載のデータ処理装置。
  14. 前記第2の部分プログラム生成部は、
    前記複数の制御変数の全ての値又は前記複数の制御変数のうちの指定された制御変数の値を既定の値にする第2の部分プログラムを生成する請求項1に記載のデータ処理装置。
  15. 前記第2の部分プログラム生成部は、
    前記複数の制御変数のうちの指定された制御変数の値を既定の値にする第2の部分プログラムを生成する場合に、前記既定の値にする制御変数を切り替える第2の部分プログラムを生成する請求項14に記載のデータ処理装置。
  16. 前記制御手順データ取得部は、
    複数の分岐経路が発生する複数の分岐条件と、前記複数の分岐経路が合流する合流条件とが前記複数の条件に含まれ、前記対応条件としていずれかの分岐条件と前記合流条件とが対応付けられている制御変数である合成制御変数が前記複数の制御変数に含まれる制御手順データを取得し、
    前記第1の部分プログラム生成部は、
    いずれかの分岐条件が前記選択条件である場合に、前記選択条件である分岐条件の成否と、前記選択条件である分岐条件の前記先行条件の状態変数の値と、前記選択条件である分岐条件以外の分岐条件の状態変数の値とに基づき、前記選択条件である分岐条件の状態変数の値を決定する第1の部分プログラムを生成し、
    前記合流条件が前記選択条件である場合に、前記選択条件である前記合流条件の成否と、前記複数の分岐経路に含まれる条件の状態変数の値又は前記複数の分岐条件の状態変数の値とに基づき前記選択条件である前記合流条件の状態変数の値を決定する第1の部分プログラムを生成し、
    前記第2の部分プログラム生成部は、
    前記合成制御変数が前記選択制御変数である場合に、前記選択制御変数である前記合成制御変数の前記対応条件である分岐条件の状態変数の値と前記合流条件の状態変数の値とに基づき、前記選択制御変数である前記合成制御変数に代入する値を決定する第2のプログラムを生成する請求項1に記載のデータ処理装置。
  17. 前記データ処理装置は、更に、
    前記第1の部分プログラムと第2の部分プログラムのプログラム種別を指定するコマンドを取得するコマンド取得部を有し、
    前記第1の部分プログラム生成部は、前記コマンドで指定されたプログラム種別に適合する第1の部分プログラムを生成し、
    前記第2の部分プログラム生成部は、前記コマンドで指定されたプログラム種別に適合する第2の部分プログラムを生成する請求項1に記載のデータ処理装置。
  18. 順序付けられた複数の条件と、各々が前記複数の条件のいずれかと対応付けられ、対応付けられた条件である対応条件の成否に応じて値が代入される複数の制御変数とが用いられて、制御手順が記述される制御手順データを、コンピュータが取得し、
    前記コンピュータが、前記複数の条件の各条件を順次選択し、選択した条件である選択条件ごとに、前記選択条件の成否と、前記選択条件よりも前の順序の条件である先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、前記制御手順に従って生成し、
    前記コンピュータが、前記複数の制御変数の各制御変数を順次選択し、選択した制御変数である選択制御変数ごとに、前記選択制御変数の前記対応条件の状態変数の値に基づき前記選択制御変数に代入する値を決定する第2の部分プログラムを、前記制御手順に従って生成し、
    前記コンピュータが、前記第1の部分プログラムと前記第2の部分プログラムとを用いて、前記制御手順が反映されるプログラムを生成するデータ処理方法。
  19. 順序付けられた複数の条件と、各々が前記複数の条件のいずれかと対応付けられ、対応付けられた条件である対応条件の成否に応じて値が代入される複数の制御変数とが用いられて、制御手順が記述される制御手順データを取得する制御手順データ取得処理と、
    前記複数の条件の各条件を順次選択し、選択した条件である選択条件ごとに、前記選択条件の成否と、前記選択条件よりも前の順序の条件である先行条件の状態変数の値とに基づき前記選択条件の状態変数の値を決定する第1の部分プログラムを、前記制御手順に従って生成する第1の部分プログラム生成処理と、
    前記複数の制御変数の各制御変数を順次選択し、選択した制御変数である選択制御変数ごとに、前記選択制御変数の前記対応条件の状態変数の値に基づき前記選択制御変数に代入する値を決定する第2の部分プログラムを、前記制御手順に従って生成する第2の部分プログラム生成処理と、
    前記第1の部分プログラムと前記第2の部分プログラムとを用いて、前記制御手順が反映されるプログラムを生成するプログラム生成処理とをコンピュータに実行させるデータ処理プログラム。
JP2023575965A 2023-03-17 2023-03-17 データ処理装置、データ処理方法及びデータ処理プログラム Active JP7466806B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023010766 2023-03-17

Publications (1)

Publication Number Publication Date
JP7466806B1 true JP7466806B1 (ja) 2024-04-12

Family

ID=90622487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023575965A Active JP7466806B1 (ja) 2023-03-17 2023-03-17 データ処理装置、データ処理方法及びデータ処理プログラム

Country Status (1)

Country Link
JP (1) JP7466806B1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004265060A (ja) 2003-02-28 2004-09-24 Denso Corp プログラマブル・ロジック制御装置及び制御方法
JP2005222484A (ja) 2004-02-09 2005-08-18 Mitsubishi Electric Corp シーケンス制御プログラム生成装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004265060A (ja) 2003-02-28 2004-09-24 Denso Corp プログラマブル・ロジック制御装置及び制御方法
JP2005222484A (ja) 2004-02-09 2005-08-18 Mitsubishi Electric Corp シーケンス制御プログラム生成装置

Similar Documents

Publication Publication Date Title
JP2003067185A (ja) アプリケーション編集装置、データ処理方法及びプログラム
KR20120026055A (ko) 슬라이드 전환 중 전환 이미지의 표시
CN114153896A (zh) 序列化与反序列化方法及其装置、设备和介质
WO2020039900A1 (ja) 情報処理装置およびプログラム
CA2686367A1 (en) Dynamic native editor code view facade
JP7466806B1 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
KR101552914B1 (ko) 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체
US20100218200A1 (en) Method for programmatic editing of text files
KR100331159B1 (ko) 화면작성에디터
US7603542B2 (en) Reconfigurable electric computer, semiconductor integrated circuit and control method, program generation method, and program for creating a logic circuit from an application program
WO2020195195A1 (ja) 開発支援装置、開発支援装置の制御方法、情報処理プログラム、および記録媒体
JP2004070810A (ja) ビジュアルプログラミングシステム、ビジュアルプログラミング方法、ビジュアルプログラミング用プログラム及びそのプログラムを記録した記録媒体
US11768482B2 (en) Information processing apparatus, ladder-program generation apparatus, information processing method, ladder-program generation method, method of manufacturing product, and recording medium
KR100237642B1 (ko) 파이프라인 정지회로를 구비한 프로세서
US20110320769A1 (en) Parallel computing device, information processing system, parallel computing method, and information processing device
TW202416194A (zh) 用以提供代碼資訊之電子裝置及其方法
JP2503634B2 (ja) マイクロプログラム制御装置
JP2003263328A (ja) イベント駆動型ファンクションブロックの起動方法、イベント駆動型制御装置、イベント駆動型ファンクションブロック用コンパイラ及びイベント駆動型制御プログラム用コンパイラ
CN117149009A (zh) 工况选定方法及系统、工程机械、交互系统、设备及介质
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
JP2003076547A (ja) 制御ソフトウェア自動生成システムおよび方法
JP2022018696A (ja) 制御プログラム生成装置
CN118012694A (en) Form data management method and device, electronic equipment and storage medium
JP2007094922A (ja) プログラム自動生成装置、方法、およびプログラム
KR19980075906A (ko) 수치제어기의 화면구성 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231208

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20231208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240402

R150 Certificate of patent or registration of utility model

Ref document number: 7466806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150