JP4488226B2 - ラダープログラムの高機能部品化を実現するマクロプログラム - Google Patents

ラダープログラムの高機能部品化を実現するマクロプログラム Download PDF

Info

Publication number
JP4488226B2
JP4488226B2 JP2005288850A JP2005288850A JP4488226B2 JP 4488226 B2 JP4488226 B2 JP 4488226B2 JP 2005288850 A JP2005288850 A JP 2005288850A JP 2005288850 A JP2005288850 A JP 2005288850A JP 4488226 B2 JP4488226 B2 JP 4488226B2
Authority
JP
Japan
Prior art keywords
program
macro
ladder
macro processing
execution
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.)
Expired - Fee Related
Application number
JP2005288850A
Other languages
English (en)
Other versions
JP2007102359A (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.)
Omron Corp
Original Assignee
Omron 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 Omron Corp filed Critical Omron Corp
Priority to JP2005288850A priority Critical patent/JP4488226B2/ja
Publication of JP2007102359A publication Critical patent/JP2007102359A/ja
Application granted granted Critical
Publication of JP4488226B2 publication Critical patent/JP4488226B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、ラダー言語によって記述された機器制御プログラムの部品化を推進するためのマクロ処理に関する発明である。
ラダープログラムの部品化・再利用化については、一般的にIEC61131規格で定義された『ファンクション・ブロック』の仕組みを用いて実現されている。ファンクション・ブロックにより、ラダープログラムと変数のカプセル化が実現され、ラダープログラムを部品として再利用することが可能になっている。また、プログラム上の複数箇所に現れる複合処理をそれぞれ簡単なマクロ演算部品の図形で置き換えることにより、図形表示されたプログラムの簡素化を図ることも知られている(特許文献1参照)。
しかしながら、ラダープログラムが用いられる機器制御システムの分野では、製品ラインナップを充実させてユーザのニーズに対応できるように、大部分は同一であるが部分的に差異のあるシステムを多数開発しているケースが多い。近年、製品ラインアップの共通性と差異性とを分析し、効果的なソフトウェア資産の形成を目指す『プロダクトライン・ソフトウェア・エンジニアリング(以下、PLSEと省略)』と呼ばれる手法が提唱されつつあり、機器制御システムの分野へも適用が試みられている。
特開平6−230804号公報
しかし、このような分析に基づくプログラム部品化を行う上で、ファンクション・ブロックによる方法では以下の問題が生じてしまう。
ラダープログラムは、全回路をサイクリックスキャンすることによって動作するという特徴から、プログラムの規模の増大がそのまま実行時間性能の低下つながる性質がある。そのため実行性能の観点から利用するラダープログラム部品は、極力使用されるアプリケーションに不要な回路を含まないことが望まれる。
しかしながら、複数のアプリケーションにおいて再利用できる汎用性のあるプログラム部品を作成するには、プログラム部品の内部構成や振る舞いにある程度のバリエーションを持たせ、オプション設定などにより内部構成や振る舞いを少し変更させることができる必要が生じる。たとえば火災検出アルゴリズムのプログラム部品を考える場合、火災検出用のセンサの数や種類、自己診断機能の有無などの、アルゴリズムそのものは同一であっても、使用する具体的なアプリケーションにより複数のバリエーションやオプションを含むことが多い。このようなオプション選択も入力値としてプログラム部品を記述することで汎用性をもったプログラム部品を実装することはできる。しかしながらこの場合、あるシステムの実現には不要なラダー回路が部品中に存在することになりプログラムの実行性能が無為に低下する。このため実行性能の制約に厳しい分野では、汎用性のあるプログラム部品を構成することが困難となっている。
ラダープログラミングにおいてファンクション・ブロックの概念は、後に詳細に説明するが、プログラムの階層的な設計を実現している。しかしJava(登録商標)やC++などのオブジェクト指向高級言語がプログラム実行時に動的に子インスタンスを構成できるのと異なり、ファンクション・ブロックでは子インスタンスを静的に親ファンクション・ブロック中に記述する。このため中間階層のプログラムを部品化することが困難であり、結果的に大部分は同じだが一部だけが異なる多くのプログラム部品を作成しなければならないという問題が生じる。
そのような場合を以下に、図21にて示される例を参照して説明する。図21には、ラダープログラミングにおけるファンクションブロックによるプログラムの階層的な設計の一例が示されている。図21(a)にて示されるように、縮みきった状態と伸びきった状態を判定するセンサを持つエアシリンダ100を制御するプログラム部品を一例として考える。このエアシリンダ100には、筒状のシリンダ部101と、このシリンダ部101に挿入され、前後に伸縮可能なアーム部102によって概略構成される。このようなエアシリンダには、その伸びきり状態や縮みきり状態を検出するためのセンサが用いられ、例えば、センサとして光センサがついているものもあれば、同じ入出力をもつ磁気センサを持つものも考えられる。
しかし、図21(b)にて示されるように、ロボットアームの制御プログラム111には、エアシリンダの制御を行うプログラム112が組み込まれており、さらに、そのエアシリンダを制御するプログラム112に、磁気センサの制御プログラム113が組み込まれており、階層的な構造を有している。このようなエアシリンダにおいては、センサの種類にかかわらずエアシリンダ制御部の挙動は同一であるのだが、磁気センサを制御するプログラムがエアシリンダの制御プログラムに、そしてロボットアームの制御プログラムに組み込まれているため、センサとして光センサを用いるような場合においては、センサの制御プログラムのみを取り替えるということができない。従って、このような場合、ファンクション・ブロックでは使用するセンサの種類の組み合わせの数だけ『エアシリンダ』部品を作成しなければならない。
例えば、C言語ではマクロ処理によってソースコードを変形させることにより、C言語の言語仕様の範囲では実現できない高度な部品化を行う試みが既になされている。しかし当然ながら、C言語に特化したマクロであり、本発明が対象とするラダープログラミングの分野にはそのまま適用することはできない。
本発明は上記の問題点に着目したもので、その目的とするところは、ラダープログラムを変形させるマクロの記述方法を定義し、そのルールにしたがい、ラダープログラムの変形を実行する環境を提供することである。
また、本発明の他の目的とするところは、ラダープログラムを変形させるマクロの記述方法を定義することによりソフトウェア資産として複数のアプリケーションで利用可能な汎用性をもつラダープログラム部品群を整備し、そこからラダープログラムの変形を実行する環境によってあるシステムを構成するのに必要な特定のアプリケーション専用のプログラム部品を取り出す仕組みを整備することである。
本発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
本発明の実施形態においては、コンピュータを、ラダー言語によって記述された複数のプログラム部品を組み合わせて機器制御プログラムとしてのラダープログラムを作成する手段と、当該ラダープログラムの接点や回路を組み替えることを目的としたマクロ処理言語をプログラム部品に記述する手段と、マクロ記述を含むプログラム部品にマクロ処理を実行し、特定のアプリケーション専用プログラム部品へと変形させるマクロ処理手段として機能させるためのプログラムとしたことを特徴とする。
このような構成により、汎用性の高いラダープログラムに対して、ユーザが所望する接点や回路を一部組み替えるマクロ処理を行うことが可能とされ、1つの汎用性の高いラダープログラムを基礎として、基本的機能は維持しつつ、当該プログラムが用いられる環境に応じて様々な調整や修正を加えた特定のアプリケーション専用のラダープログラムを容易に作成することがプログラムを提供することが可能となる。このようなプログラムを備えることにより、性能的なオーバーヘッドを生じさせることなく、汎用性の高いラダープログラム部品を作成することが可能となり、様々な製品ラインアップに対応することが可能となる。
本発明の実施形態においては、マクロ処理手段によって実行されたマクロ処理を、ラダープログラムのコメントとして記述する手段としてさらに機能させることを特徴とする。
ここで言う『コメント』とは、ラインコメント、命令コメント、または変数コメント等を含み、実行されたマクロ処理についてその実行箇所や実行内容を特定するコメントである。そして、このコメントの特徴として、マクロ処理に対応していないラダーのプログラミングツールでも開くことが可能とされている。すなわち、本発明における新しい機能においても、当該新機能に対応していない所謂旧型のプログラミングツールにおいても、ユーザは対象となるラダープログラムに対するマクロ処理の閲覧や編集を容易に行うことが可能とされている。
本発明の実施形態においては、マクロ処理実行により変形されたラダープログラムに対し、当該マクロ処理によって変更されたことを表すコメントをラダープログラム内に自動挿入する手段と、当該コメントとしてマクロ処理実行前のプログラム部品におけるマクロ処理記述部分を特定する識別子情報を記述する手段と、当該識別子によって、マクロ処理実行後のラダープログラムから、変形されたマクロ処理実行前のプログラム部品のマクロ記述を表示する手段としてさらに機能させることを特徴とする。
ここで言う『識別子』とは、ラダープログラムにおけるどの部分に対してマクロ処理を実行したかを特定するための識別子であって、用いられる識別子としては、ライン番号等が含まれる。
このような構成により、マクロ記述部位に識別子が挿入され、マクロ処理実行後のラダープログラムから、変形されたマクロ処理実行前のプログラム部品のマクロ記述がユーザに対して表示されるため、ユーザはプログラミングツールを介してその表示を参照してマクロ記述が行われた部分にジャンプすることが可能となる。そして、ユーザがマクロ記述部位に容易にアクセスすることを可能とすることで、閲覧や編集作業が容易となり、変更や修正作業も容易に行うことが可能となる。
本発明の実施形態においては、マクロ処理実行後にラダープログラムの差分を解析して同一部位を認識する手段と、マクロ処理実行前のプログラム部品と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品における同一部位の紐付け実行し、ユーザに表示する手段としてさらに機能させることを特徴とする。
このような構成により、マクロ処理によって変形されない部位の、マクロ処理実行前後での紐付けを差分解析によって行うことが可能となる。そして、ユーザはマクロ処理実行前のプログラム部品と、マクロ処理実行後の特定アプリケーション専用プログラム部品のラダープログラムとの共通性と差異性とをこの紐付けにより容易に認識することが可能となる。
本発明の実施形態においては、マクロ処理実行後にラダープログラムの差分を解析して同一部位を認識する手段と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品のラダープログラムに対して行った変更を、マクロ処理実行前のプログラム部品に反映させる手段としてさらに機能させることを特徴とする。
このような構成により、マクロ処理によって行った変更を、マクロ処理実行前のプログラム部品に反映させることが可能となる。そして、ユーザはマクロ処理実行前のプログラム部品と、マクロ処理実行後の特定アプリケーション専用プログラム部品のラダープログラムとの共通性と差異性とをより容易に認識することが可能となる。
本発明の実施形態においては、ラダー言語によって記述された複数のプログラム部品を組み合わせて機器制御プログラムとしてのラダープログラム作成装置において、当該ラダープログラムの接点や回路を組み替えることを目的としたマクロ処理言語をプログラム部品に記述する手段と、マクロ記述を含むプログラム部品にマクロ処理を実行し、特定のアプリケーション専用プログラム部品へと変形させるマクロ処理手段と、を具備することを特徴とする。
このような構成により、汎用性の高いラダープログラムに対して、ユーザが所望する接点や回路を一部組み替えるマクロ処理を行うことが可能とされ、1つの汎用性の高いラダープログラムを基礎として、基本的機能は維持しつつ、当該プログラムが用いられる環境に応じて様々な調整や修正を加えた特定のアプリケーション専用のラダープログラムを容易に作成するプログラム作成装置を提供することが可能となる。そして、性能的なオーバーヘッドを生じさせることなく、汎用性の高いラダープログラム部品を作成することが可能となり、様々な製品ラインアップに対応することが可能となる。
本発明の実施形態においては、マクロ処理手段によって実行されたマクロ処理を、ラダープログラムのコメントとして記述する手段をさらに有することを特徴とする。
このような構成により、記述されたコメントにより、マクロ処理に対応していないラダーのプログラミングツールでも開くことが可能とされ、本発明における新しい機能においても、当該新機能に対応していない所謂旧型のプログラミングツールにおいても、ユーザは対象となるラダープログラムに対するマクロ処理の閲覧や編集を容易に行うことが可能となる。
本発明の実施形態においては、マクロ処理実行により変形されたラダープログラムに対し、当該マクロ処理によって変更されたことを表すコメントをラダープログラム内に自動挿入する手段と、当該コメントとしてマクロ処理実行前のプログラム部品におけるマクロ処理記述部分を特定する識別子情報を記述する手段と、当該識別子によって、マクロ処理実行後のラダープログラムから、変形されたマクロ処理実行前のプログラム部品のマクロ記述を表示する手段と、をさらに具備することを特徴とする。
このような構成により、マクロ記述部位に識別子が挿入され、マクロ処理実行後のラダープログラムから、変形されたマクロ処理実行前のプログラム部品のマクロ記述がユーザに対して表示されるため、ユーザはプログラミングツールを介してその表示を参照してマクロ記述が行われた部分にジャンプすることが可能となる。そして、ユーザがマクロ記述部位に容易にアクセスすることを可能とすることで、閲覧や編集作業が容易となり、変更や修正作業も容易に行うことが可能となる。
本発明の実施形態においては、マクロ処理実行後にラダープログラムの差分を解析して同一部位を認識する手段と、マクロ処理実行前のプログラム部品と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品における同一部位の紐付け実行し、ユーザに表示する手段と、をさらに具備することを特徴とする。
このような構成により、マクロ処理によって変形されない部位の、マクロ処理実行前後での紐付けを差分解析によって行うことが可能となる。そして、ユーザはマクロ処理実行前のプログラム部品と、マクロ処理実行後の特定アプリケーション専用プログラム部品のラダープログラムとの共通性と差異性とをこの紐付けにより容易に認識することが可能となる。
本発明の実施形態においては、マクロ処理実行後にラダープログラムの差分を解析して同一部位を認識する手段と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品のラダープログラムに対して行った変更を、マクロ処理実行前のプログラム部品に反映させる手段と、をさらに具備することを特徴とする。
このような構成により、マクロ処理によって行った変更を、マクロ処理実行前のプログラム部品に反映させることが可能となる。そして、ユーザはマクロ処理実行前のプログラム部品と、マクロ処理実行後の特定アプリケーション専用プログラム部品のラダープログラムとの共通性と差異性とをより容易に認識することが可能となる。
以上の説明で明らかなように、本発明によれば、ラダープログラムにマクロプログラムを組み込むことによって、性能的なオーバーヘッドを生じさせることなく汎用性の高いラダープログラム部品化を実現するという利点を有する。
また、上記の汎用性の高いラダープログラム部品の開発にあたり、ラダープログラム部品の閲覧・編集とマクロの閲覧・編集を通常のラダー編集ソフトで同時に行うことが可能となる。
また、ラダープログラム部品の開発にあたり、容易にマクロのエラーを確認し、修正することができる。さらにマクロ処理後のラダープログラム部品に対して行ったデバッグ・修正結果をマクロ処理前の汎用プログラム部品に容易に反映させることが可能となる。
さらに、本発明によれば、開発しようとするアプリケーションの特性に応じて、必要なラダープログラム部品を簡単に取り出すことが可能となる。
以下に、この発明の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
本発明においては、対象となる製品のアプリケーション群(プロダクトライン)において共通性と差異性とを分析し、共通部分と差異部分とが一つの部品内に混在しないように部品を設計する。図1に製品の共通性と差異性とを分けた一例を説明する図が示されている。同図(a)には、開発対象のみを考慮した分析並びに設計の一例が示されている。同図にて示されるように、対象となる製品のみを考慮した場合、その製品を基礎として、異なる状況に対応できるような次の製品、並びに製品のバリエーションを作成する際に、例えば、同図の変更箇所1〜4にて示されるように変更箇所が多岐にわたってしまう。そのため、次の製品を作成するためにどこを変更すればよいのか分かりづらくなってしまう。また、それらの変更箇所1〜4は、モジュールA〜Dに組み込まれており、変更箇所のみを入れ替えて対応することが困難である。そのため、共通部分が多く、部分的な変更によって対応できるような場合においても再度製品を作成する必要が生じてしまうことがある。そこで、同図(b)にて示されるように、対象となる製品のみではなく、製品の品揃えに加えて将来のバージョンアップも含めて、共通性と差異性とを分析することによって、同図(c)にて示されるように、対象製品のバリエーションにおいて差異部分のみをまとめたモジュール5を構成することが可能となる。そして、このように共通部分と差異部分とを明確に分けて部品設計を行うことにより、異なる製品バリエーション等を作成する際にはその差異部分に対応する別のモジュール6と置き換えることにより容易に当該製品のバリエーションを作成することが可能となる。
図2には、一つの実施形態として検査装置10が示されている。同図において点線にて描かれた円11〜17にて示されるように、当該検査装置はその機能や処理内容によって大まかに7つの部分に分けられる。
先ず、供給部11を介して当該検査装置において検査対象となるワークが装置へと供給される。そして、エレベータ12とロードアーム13とを介して、ワークはインデックステーブル14へと移動する。このインデックステーブル14が回転動作を行うことにより、ワークは検査位置へと移動し、検査ヘッド15が所定位置に降下し検査を行う。インデックステーブル14は更に回転し、ワークを取り出し位置へと移動する。アンロードアーム16によってワークはインデックステーブル14から取り出され、排出部17は、検査結果に従い良品/不良品とを分別して排出する。
次に、上記の検査装置に対して、同様の検査機能を有するものの、一部の特性において仕様の異なるバリエーションが表形式にて図3に示されている。同図における検査装置Aが先に図2を用いて説明した検査装置の一例であり、検査装置Bとは、その検査装置Aの特性を一部を変更したバリエーションである。同図に示される検査装置Aと検査装置Bとの特性を比較すると、ワークの搬入及び搬出に関しては双方ともロボット輸送を採用しているが、それ以外の特性においては差異が見られる。例えば、供給部において、検査装置Aはエレベータ供給を採用しているが、検査装置Bは採用していない。同様に、検査対象のワークを位置決めするために、検査装置Aはインデックステーブルを用いているが、検査装置Bはベルトコンベアを採用している。同様に、ワークの停止位置についても、検査装置Aは4ポジションによる位置決めを行っているが、検査装置Bではセンサによる位置決めを採用している。そして、検査を行う際に、検査装置Aはカラーセンサを採用しているが、検査装置Bは画像センサを用いている。また、検査後のワークの排出については、検査装置Aはロボットによる良品と不良品との分別を行っており、検査装置Bでは不良品のみを押し出す方法を採用している。
これらの検査装置A並びに検査装置Bを特性によって共通部分と差異部分とに分けたコンポーネント図が図4〜6に示されている。図4には、コンポーネントの全体図が示されている。同図にて示されるように、検査装置20は、ワーク搬入部21、位置決め部22、検査部23、及びワーク搬出部24に区分されている。そして、ワーク搬入部21は、さらに供給部21aとロードアーム21bとが備えられている。そして、位置決め部22にはインデックステーブル22aとベルトコンベア22bが、検査部23には検査方法25が、そしてワーク搬出部24にはアンロ―ドアーム24aと仕分け部24bとがそれぞれ備えられている。
図5には、ワーク搬入部21における検査装置A並びに検査装置Bの共通性と差異性が示されている。同図にて示されるように、検査装置Aは、ワーク搬入部21として供給部(エレベータ供給)21aとロードアーム21bが備えられているが、それに対して検査装置Bは供給部21aはなく、ロードアーム21bのみ備えられている。すなわち、これらの検査装置においては、供給部21aが差異部分であり、ロードアーム21bは共通部分となる。そして、このように製品バリエーションにおける差異部分となった供給部21aは、オプション部品として切り出しておく。
図6には位置決め部22における検査装置A並びに検査装置Bの共通性と差異性が示されている。同図にて示されるように、検査装置Aは、位置決め部22としてインデックステーブル22aを採用しているが、それに対して検査装置Bはベルトコンベア22bを採用している。すなわち、これらの検査装置においては、インデックステーブル22aとベルトコンベア22bとのいずれかを選択することとなる。そして、このような場合は、インデックステーブル22aとベルトコンベア22bとを代替部品(代替コンポーネント)として切り出しておく。
このとき、ラダープログラムにて必要な回路を行単位で取り出すマクロ例としては、
!$IF(condition)[
true statements
!][
false statements
!]
となる。ここで、conditionには、条件を記述する。ある特性が選択されているかどうかを条件とする場合は、
;$feature=true
もしくは、
;$feature=false
と記述する。このとき、feature(特性)には、特定の特性名を指定する。そして、true statementsとfalse statementsには、取り出したい範囲の回路が入り、行コメントに記述された[]で囲む。
このようなマクロを使用した例が図7及び8に示されている。図7には上述のワーク搬入部21のファンクションブロックが示されており、オプションの扱いが示されている。同図にて示されるように、『エレベータ供給』が条件として記述されており、オプションとして選択されていることが示されている。
そして、図8には位置決め部22のファンクションブロックが示されており、代替の扱いが示されている。同図にて示されるように、インデックステーブルとベルトコンベアが代替として記述されている。このように、アプリケーション毎の部品に生じる差異は部品の変形で対応する。尚、ここでは、ワーク搬入部21におけるエレベータ供給と、位置決め部22におけるインデックステーブルとベルトコンベアについて説明したが、他の差異についても同様に対応できることは言うまでもない。
図9及び図10に、特性モデルの例が示されている。特性モデルとは、後に詳細に説明するが、製品ラインアップを特性によって表現したモデルである。これらの図にて示されるように、検査装置30は、その特性によって供給31,ワーク搬入32,位置決め33,検査34,ワーク搬出35,排出36のコンポーネントに分けられる。そして、供給31にはエレベータ供給がオプション・コンポーネントとして備えられている。ここで、エレベータ供給に設けられている円37aは、この特性がオプション・コンポーネントとして選択可能に設定されていることを示している。それに対して、ワーク搬入32及びワーク搬出35に設けられたロボット輸送38及び40は、オプションとしての特性ではないため、エレベータ供給37における円37aのような表示はされていない。
また、位置決め33には停止位置39が設けられており、その停止位置は、その特性上さらに4ポジション39aとセンサによる位置決め39bとが代替コンポーネントとして設けられている。同様に、検査34にはカラーセンサ34aと画像センサ34bが、そして排出36には不良品のみ押し出し36aとロボットによる分別36bとがそれぞれ代替コンポーネントとして設定されている。
図10は、上述の特性モデルにおいて、オプションの選択有無、及びどちらの代替コンポーネントが使用されているかを示している。同図にて示されるように、オプションとして設けられているエレベータ供給37には、黒点41にてマーキングが施されている。この黒点41は、対象となる特性コンポーネントが選択されていることを示すものである。同様に、4ポジション39a、画像センサ34b、及びロボットによる分別36bにも黒点41が施され、これらの特性が選択されていることを示している。そして、このような特性を組み合わせていくと、先に説明した検査装置Aのような特性を有する検査装置が実現される。さらに、このような特性モデル、並びに特性の選択有無をしめすマーキングをユーザに対して画像モニタ等にて表示することによって、どの特性が選択されているのか、並びに選択可能な特性が一目瞭然となる。
次に、本発明における実施形態のソフトウェア構成図が図11に示されている。
同図にて示されるように、この実施形態においては、ドメイン分析支援ツール50、プログラム部品管理ソフトウェア60、ラダー・プログラミング・ツール70、及びプログラム部品データベース80とによって概略構成されている。
ドメイン分析支援ツール50内のFeatureモデルエディタ(以下、特性モデルエディタと言う)51とは、開発対象ドメインにおける製品ラインアップの共通性と差異性とを分析し、製品ラインアップを『特性』によって表現した分析モデルである『Feature Model(以下、特性モデルと言う)』と製品の特性情報52を作成するものである。
次に、プログラム管理ソフトウェア60内の各機能を説明する。プロダクト・パラメータ・マネージャ61とは、ある製品のアプリケーションを構築するために必要なプログラム部品群と、そこに含まれるマクロへの入力パラメータセット(以下、プロダクト・パラメータと言う)を管理するものである。本実施形態では、ドメイン分析支援ツール50が作成する特性モデルと、製品の特性情報52を元に、プロダクト・パラメータを作成する機能も備えている。
コンポーネント・マネージャ66とは、ラダープログラムの作成用のプログラム部品65が格納されているプログラム部品データベース80から、プロダクト・パラメータ・マネージャ61によって作成されたプロダクト・パラメータに従い、必要となるラダープログラム部品を取り出す機能を有する。また、プログラム部品データベース80に格納されていない部品を新規作成したり、既存のプログラム部品65に編集を加えた場合において、新たに作成されたプログラム部品65をプログラム部品データベース80に格納する機能も有する。
コンポーネント・エディタ62とは、マクロを含んだラダープログラム部品の編集を行うものである。この実施形態においては、マクロの編集機能と、ラダープログラムの編集機能とを併せ持っている。
コンポーネント・デバッガ63とは、マクロ処理事項前後での、ラダープログラムの紐付け情報を管理する。マクロ処理後のプログラム部品に対する修正や変更を、マクロ処理実行前の汎用的なプログラム部品に反映させる機能を有する。
マクロ・プロセッサ67とは、マクロ記述とプロダクト・パラメータに従い、ラダープログラムの変形を実行し、特定アプリケーション用のプログラム部品を生成する機能を有する。
そして、ラダー・プログラミング・ツール70には、図示しないラダーエディタ・デバッガが含まれており、一般的なラダープログラミングツールであるため、詳細な説明は省略する。このラダープログラミングツール70では、プログラム部品管理ソフトウェアによって生成されたラダープログラム部品(特定アプリケーション専用プログラム部品90)を用いて、アプリケーションを作成する。また、ラダー・プログラミング・ツール70は、図示しないが、PLCシミュレータと単体テストツール等によって構成されるラダー実行環境と接続されており、作成されたプログラムをラダー実行環境へとダウンリロードし、単体テストを実行可能とする。
次に、図12〜図14に、全体の処理を示すフローチャートが示されている。これらのフローチャートにて示されるように、特性モデルエディタ51は、ユーザが選択した特性を保存する(ステップ1001)。しして、プロダクト・パラメータ・マネージャ61が特性選択結果よりマクロへの入力パラメータ64を生成する(ステップ1002)。続いて、コンポーネント・マネージャ66は、ユーザが選択したコンポーネントを記憶し(ステップ1003)、プログラム部品データベース80より資産プログラム部品(マクロ記述済みのプログラム部品)65を取り出し(ステップ1004)、資産プログラム部品65と入力パラメータ64とをマクロ・プロセッサへと渡す(ステップ1005)。マクロ・プロセッサ67は、マクロ処理を実行し、資産プログラム部品65を変形して、特定アプリケーション専用プログラム部品90を生成する(ステップ1006)。
図11に続き、コンポーネント・デバッガ63は、特定アプリケーション専用プログラム部品90をラダー・プログラミング・ツール70へと送る(ステップ1007)。そして、ラダー実行環境にプログラムをダウンロードし、単体テストを実行する(ステップ1008)。この単体テストに合格しない場合(ステップ1009,NO)、ラダー・プログラミング・ツール70にてプログラムを修正し(ステップ1010)、ステップ1008に戻りラダー実行環境にダウンロードし単体テストを実行する。それに対して、ステップ1008の単体テストに合格した場合(ステップ1009,YES)、ラダー・プログラミング・ツール70にてプログラムをアップロードする(ステップ1011)。続いて、コンポーネント・デバッガ63にてマクロの逆変換処理を実行する(ステップ1012)。ここで、マクロの逆変換処理に成功した場合(ステップ1013,YES)、コンポーネント・デバッガ63にてマクロの逆変換処理を実行し(ステップ1014)、コンポーネント・マネージャ66が資産プログラム部品を上書き更新する(ステップ1015)。それに対して、ステップ1012におけるマクロの逆変換処理が成功しなかった場合(ステップ1013,NO)、修正前との差分を表示し(ステップ1016)、ユーザがコンポーネント・エディタ62で直接資産プログラムの更新を実行する(ステップ1017)。ここでのマクロ逆変換処理が成功しない場合とは、マクロ処理した部分にユーザが変更を加えた場合のことであり、その修正が加えられる前との差分(差異部分)を表示して、ユーザが直接マクロプログラムを更新するようにしたものである。
続いて、図15及び図16に、マクロ処理のフローチャートが記されている。同図にて示されるように、先ず資産プログラム部品を格納しているファイルがオープンされ(ステップ1301)、新しい特定アプリケーションプログラム部品90を格納するファイルを新規作成する(ステップ1302)。続いて、資産プログラム部品のスキャンが実行される(ステップ1303)。資産プログラム部品65をスキャンした結果、ファイルの終わりであれば(ステップ1304,YES)、資産プログラム部品ファイル、特定アプリケーションプログラム部品ファイルをクローズし、処理を終える(ステップ1305)。
ステップ1303に戻り、資産プログラム部品65をスキャンした結果、ファイルの終わりでなければ(ステップ1304,NO)、続いてマクロ処理が行われているかどうかの判別が実行される(ステップ1306)。このとき、マクロ処理が行われていなければ、資産プログラム部品65から特定アプリケーション専用プログラム部品90に、その行を単純コピーし(ステップ1307)、ステップ1304に戻りファイルの終わりであるかどうかの判別を実行する。それに対して、マクロ処理がある場合(ステップ1306,YES)、マクロ命令を取り出し(ステップ1308)、マクロIDをインクリメントする(ステップ1309)。
続いて、取り出されたマクロ命令の種類の判別が行われる(ステップ1310)。このとき、同図においては、必要な回路を取り出す(ステップ1311)、回路を行単位でコピーする(ステップ1312)、及び命令をAND接続でコピーする(ステップ1313)の3つが記載されているが、これらはマクロ命令の一例に過ぎず、後に説明する様々なマクロ命令の種類の判別を実行する。マクロ命令の種類判別が実行されると、続いて、コメントとして記述されているマクロ命令にマクロIDを追加する(ステップ1314)。ここで言うマクロIDとは、ラダープログラムにおけるマクロ処理の記述部位を示す識別子であり、例えば、ライン番号等が用いられる。そして、マクロ命令で削除されるオリジナル回路はコメントアウトし、マーク(REM文とマクロIDを追加)を付けておく(ステップ1315)。
その後、マクロ命令で追加、変形された結果の回路の前後にコメントでマクロIDを挿入する(ステップ1316)。ここで、その例を以下に示す。
MacroID=3:マクロ命令[]
]
BEGIN(3)
変形結果
END(3)
マクロIDの挿入後、特定アプリケーションプログラム部品ファイルに一連の処理を書き出し(ステップ1317)、ステップ1304に戻ってファイルの終わりであるかどうかの識別を実行し、その後上述の処理を繰り返す。
本実施形態においては、ラダープログラムに対して以下の操作を行うためのマクロを定義する。
<宣言の変更>
(1)変数宣言の複製
(2)変数名の変更
(3)入出力属性の変更
<ラダー回路の変更>
(1)接点名の変更
(2)応用命令へのオペランド変更
(3)ファンクション・ブロック・インスタンスの入れ替え
(4)ライン内の特定のIN接点のn倍化
(ア)IN接点を連番で複製し、AND命令で接続
(イ)IN接点を連番で複製し、OR命令で接続
(5)ライン内の特定のOUT接点のn倍化
(ア)OUT接点を連番で複製し、OR命令で接続
(イ)応用命令を連番で複製し、OR命令で接続
(ウ)ファンクション・ブロック・インスタンスを連番で複製し、OR命令で接続
(6)ライン単位での変形
(ア)ブロック単位での入れ替え
(イ)ブロック単位でのn倍化
(7)POU(Program Organization Unit:プログラム部品)名の変更
(8)POUのn倍化
そして、図17に、本実施形態におけるマクロの定義体系が示されている。同図にて示されるように、この例でのマクロ定義は、FB(Function Block)内部変数宣言の操作、回路の操作、POU操作の3つに大別され、それらの操作からさらに詳細操作が枝分かれしている。
本マクロを使用した例が図18に示されている。同図にて示されるケースは、先に説明した、行単位で必要な回路を取り出すマクロの一例であり、inputというオプションが存在していることが前提とされる。図18(a)では、行単位で回路を取り出す条件として、inputと言う特性が記述されており、そのinputが選択されていることが条件であることを示す
;$feature(この例ではinput)=true
という記述もされている。これに対してマクロ処理を行う。inputという特性が選択されていると、図18(b)の回路が得られる。それに対して、inputとい特性が選択されていないと、条件が満たされていないため、上同図(b)の回路は取り出されずに、図18(c)の回路が得られる。このとき、条件として記述されている特性が選択されているか否かは先に図9及び図10を参照して説明した特性モデルで確認することが可能である。
この処理をテキストファイル形式で表したものが図19に示されている。同図にて示されるように、条件である特性(input)が選択されているかどうかで得られる回路は異なる。同図左側が、inputが選択されている場合を示し、同図右側がinputが選択されていない場合を示している。尚、他のマクロの例が図20の表に示されている。図20の表にてFBとは、Function Blockの略であり、ファンクションブロックを意味するものであり、POUとは、上述のプログラム部品を意味する。
本発明によれば、性能的なオーバーヘッドを生じさることなく汎用性の高いラダープログラム部品化を実現するという利点を有する。
製品の共通性と差異性との分析を説明する図である。 本発明の一実施形態である検査装置の構造を示す図である。 検査装置における特性のバリエーションを表形式で示した図である。 コンポーネントの全体構成図である。 オプションコンポーネントを説明する図である。 代替コンポーネントを説明する図である。 オプションコンポーネントを記述するファンクションブロックの一例を示す図である。 代替コンポーネントを記述するファンクションブロックの一例を示す図である。 特性モデルの全体図である。 特性モデルにおいて、オプションコンポーネントと代替コンポーネントの選択状態を示す図である。 本発明の実施形態におけるソフトウェア構成図である。 全体の処理を示すフローチャート(その1)である。 全体の処理を示すフローチャート(その2)である。 全体の処理を示すフローチャート(その3)である。 マクロ処理を示すフローチャート(その1)である。 マクロ処理を示すフローチャート(その2)である。 マクロの定義体系を説明するための図である。 本発明のマクロ処理の実行例を説明するための図である。 本発明のマクロ処理をテキストファイル形式で表した図である。 本発明におけるマクロの一例を示す図である。 ファンクションブロックによるプログラムの階層構造を説明する図である。
符号の説明
1〜4 変更箇所
5 差異箇所のモジュール
6 変更用モジュール
10 検査装置
11 供給部
12 エレベータ
13 ロードアーム
14 インデックステーブル
15 検査部
16 アンロードアーム
17 排出部
20 検査装置
21 ワーク搬入部
21a 供給部
21b ロードアーム
22 位置決め部
22a インデックステーブル
22b ベルトコンベア
23 検査部
24 ワーク搬出部
24a アンロードアーム
24b 仕分け部
25 検査方法
50 ドメイン支援分析ツール
51 Featureモデルエディタ
52 製品の特性情報
60 プログラム部品管理ソフトウェア
61 プロダクト・パラメータ・マネージャ
62 コンポーネント・エディタ
63 コンポーネント・デバッガ
64 入力パラメータ
65 プログラム部品
66 コンポーネント・マネージャ
67 マクロプロセッサ
70 ラダー・プログラミング・ツール
80 プログラム部品データベース
90 特定アプリケーション専用プログラム部品
100 エアシリンダ
101 シリンダー部
102 アーム部
111 ロボットアーム制御プログラム
112 エアシリンダ制御プログラム
113 磁気センサ制御プログラム

Claims (10)

  1. コンピュータを、ラダー言語によって記述された複数のプログラム部品を組み合わせて機器制御プログラムとしてのラダープログラムを作成する手段と、
    当該ラダープログラムの接点や回路を組み替えることを目的としたマクロ処理言語をプログラム部品に記述する手段と、
    マクロ記述を含むプログラム部品にマクロ処理を実行し、特定のアプリケーション専用プログラム部品へと変形させるマクロ処理手段として機能させるためのプログラムであって、
    前記マクロ処理は、プログラム部品に対して入力される条件にしたがって、プログラム部品に含まれる回路を使用する回路と使用しない回路に選別するものであり、特定のアプリケーション専用のプログラム部品に変形する場合には前記使用しない回路は削除すること、を特徴とするプログラム
  2. マクロ処理手段によって実行されたマクロ処理を、ラダープログラムのコメントとして記述する手段としてさらに機能させることを特徴とする請求項1に記載のプログラム。
  3. マクロ処理実行によりプログラム部品が変形されたラダープログラムに対し、当該マクロ処理によってプログラム部品がされたことを表すコメントをラダープログラム内に自動挿入する手段と、
    当該コメントとしてプログラム部品における変形箇所のマクロ処理実行前の記述部分を特定する識別子情報を記述する手段と、
    当該識別子によって、マクロ処理実行後のラダープログラムから、変形されたプログラム部品のマクロ処理実行前の記述を紐付けする手段としてさらに機能させるための、請求項1に記載のプログラム。
  4. マクロ処理実行ラダープログラムの差分を解析して共通部位を特定する手段と、
    マクロ処理実行前のプログラム部品と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品における共通部位の紐付け実行する手段としてさらに機能させるための、請求項3に記載のプログラム
  5. マクロ処理実行ラダープログラムの差分を解析して共通部位を特定する手段と、
    特定アプリケーション専用プログラム部品を含むラダープログラムの前記共通部位に対して修正乃至変更を行った場合に前記修正乃至変更をマクロ処理実行前のラダープログラムのプログラム部品に反映させる手段としてさらに機能させるための、請求項に記載のプログラム
  6. ラダー言語によって記述された複数のプログラム部品を組み合わせて機器制御プログラムとしてのラダープログラム作成装置において、
    当該ラダープログラムの接点や回路を組み替えることを目的としたマクロ処理言語をプログラム部品に記述する手段と、
    マクロ記述を含むプログラム部品にマクロ処理を実行し、特定のアプリケーション専用プログラム部品へと変形させるマクロ処理手段と、を具備するプログラム作成装置であって、
    前記マクロ処理は、プログラム部品に対して入力される条件にしたがって、プログラム部品に含まれる回路を使用する回路と使用しない回路に選別するものであり、特定のアプリケーション専用のプログラム部品に変形する場合には前記使用しない回路は削除すること、を特徴とするプログラム作成装置。
  7. マクロ処理手段によって実行されたマクロ処理を、ラダープログラムのコメントとして記述する手段をさらに有することを特徴とする請求項に記載のプログラム作成装置。
  8. マクロ処理実行によりプログラム部品が変形されたラダープログラムに対し、当該マクロ処理によってプログラム部品がされたことを表すコメントをラダープログラム内に自動挿入する手段と、
    当該コメントとしてプログラム部品における変形箇所のマクロ処理実行前の記述部分を特定する識別子情報を記述する手段と、
    当該識別子によって、マクロ処理実行後のラダープログラムから、変形されたプログラム部品のマクロ処理実行前の記述を紐付けする手段と、
    をさらに具備することを特徴とする請求項6に記載のプログラム作成装置。
  9. マクロ処理実行ラダープログラムの差分を解析して共通部位を特定する手段と、
    マクロ処理実行前のプログラム部品と、マクロ処理実行後に作成される特定アプリケーション専用プログラム部品における共通部位の紐付け実行する手段と、
    をさらに具備することを特徴とする請求項8に記載のプログラム作成装置。
  10. マクロ処理実行ラダープログラムの差分を解析して共通部位を特定する手段と、
    特定アプリケーション専用プログラム部品を含むラダープログラムの前記共通部位に対して修正乃至変更を行った場合に前記修正乃至変更をマクロ処理実行前のラダープログラムのプログラム部品に反映させる手段と、
    をさらに具備することを特徴とする請求項8に記載のプログラム作成装置。
JP2005288850A 2005-09-30 2005-09-30 ラダープログラムの高機能部品化を実現するマクロプログラム Expired - Fee Related JP4488226B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005288850A JP4488226B2 (ja) 2005-09-30 2005-09-30 ラダープログラムの高機能部品化を実現するマクロプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005288850A JP4488226B2 (ja) 2005-09-30 2005-09-30 ラダープログラムの高機能部品化を実現するマクロプログラム

Publications (2)

Publication Number Publication Date
JP2007102359A JP2007102359A (ja) 2007-04-19
JP4488226B2 true JP4488226B2 (ja) 2010-06-23

Family

ID=38029262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005288850A Expired - Fee Related JP4488226B2 (ja) 2005-09-30 2005-09-30 ラダープログラムの高機能部品化を実現するマクロプログラム

Country Status (1)

Country Link
JP (1) JP4488226B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5143087B2 (ja) * 2009-06-01 2013-02-13 三菱電機株式会社 ソフトウェア管理装置
JP5725974B2 (ja) * 2011-05-27 2015-05-27 三菱電機株式会社 受配電監視制御システム
CN113656009B (zh) * 2021-08-26 2024-02-02 五八同城信息技术有限公司 一种宏处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
JP2007102359A (ja) 2007-04-19

Similar Documents

Publication Publication Date Title
Stănciulescu et al. Concepts, operations, and feasibility of a projection-based variation control system
US6993456B2 (en) Mechanical-electrical template based method and apparatus
US6862553B2 (en) Diagnostics method and apparatus for use with enterprise controls
US20190236233A1 (en) Ladder program editing support apparatus and ladder program editing method
JP4973867B2 (ja) Plc制御プログラム開発装置及びプログラム
JP6461092B2 (ja) ツールコンパイラ
KR20130090747A (ko) 프로젝트 데이터 작성 장치 및 프로그래머블 표시기
JP2007511834A (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
JP4488227B2 (ja) 可変性を有する制御部品のデバッグ方法、及びデバッグ支援装置
WO2014136185A1 (ja) プログラム開発支援装置およびその方法
JP4488226B2 (ja) ラダープログラムの高機能部品化を実現するマクロプログラム
KR100694381B1 (ko) 그래피컬 프로그래밍 장치 및 프로그래머블 표시기
CN101501638B (zh) 等离子处理系统部件分析软件以及生成该软件的方法和系统
JP2009193181A (ja) ソフトウェアの開発支援システム、支援方法およびこの方法のプログラム
JP2007011507A (ja) プログラムツリーの表示方法、およびプログラム生成システム
JP2004126866A (ja) 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP4609655B2 (ja) プログラム部品の付属データ生成装置
US9600245B2 (en) Computer-implemented method for generating control unit program code and message management environment relating thereto
JP2011204069A (ja) テスト方法およびテスト仕様書テストデータ自動生成装置
JP2007128456A (ja) プログラム管理装置
JP2009176178A (ja) Plcのグローバル変数定義方式
JP2007058750A (ja) データ仕様記述文書および検証データ生成装置
Frey et al. A re-engineering approach for PLC programs using finite automata and UML
JP2016200872A (ja) 制御プログラム作成装置、及び制御プログラムのデバッグ方法
EP4261678A1 (en) Generation of a technical instruction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100107

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4488226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100323

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees