(57)【要約】  本発明は、ＰＣプログラム（２２０）を用いてＰＬＣを制御する方法に関し、ＰＬＣプログラムのソースコードは、データセクション（１００）を含み、データセクション（１００）は、ＰＬＣプログラムの実行時にＰＬＣによって公開されるサービスを示すデータを含み、データセクション（１００）に含まれるデータおよびＰＣプログラムテンプレート（２００）を用いて、ＰＣプログラムのソースコード（２１０）を自動生成し、ＰＣプログラムの自動生成されたソースコード（２１０）から生成されたＰＣプログラム（２２０）を用いて、ＰＬＣを制御する。【選択図】図３
2020523689.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣプログラム（２２０）を用いてＰＬＣ（３０）を制御する方法であって、
ＰＬＣプログラムのソースコード（３１０）は、データセクション（１００）を含み、前記データセクション（１００）は、前記ＰＬＣプログラムの実行時に前記ＰＬＣ（３０）によって公開されるサービスを示すデータを含み、
前記データセクション（１００）に含まれる前記データおよびＰＣプログラムテンプレート（２００）を用いて、前記ＰＣプログラムのソースコード（２１０）を自動生成し、
前記ＰＣプログラムの前記自動生成されたソースコード（２１０）から生成された前記ＰＣプログラム（２２０）を用いて、前記ＰＬＣ（３０）を制御する、方法。
【請求項２】
前記ＰＣプログラムテンプレート（２００）は、テキストテンプレートである、請求項１に記載の方法。
【請求項３】
前記データセクション（１００）は、前記ＰＬＣプログラムの前記ソースコード（３１０）のヘッダである、請求項１または２に記載の方法。
【請求項４】
前記ＰＬＣプログラムの前記ソースコード（３１０）は、高水準プログラミング言語である、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記ＰＣプログラム（２２０）は、ＰＣ（２０）上で実行されると、グラフィカルユーザインタフェースを表示するように構成される、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記ＰＣプログラム（２２０）を用いて前記ＰＬＣ（３０）を制御することは、前記ＰＬＣに値を書き込むこと、および／または前記ＰＬＣから値を読み取ることを含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記ＰＣプログラム（２２０）を用いて前記ＰＬＣ（３０）を制御することは、前記ＰＬＣから情報を受信すること、および／または前記ＰＬＣにコマンドを送信することを含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記ＰＬＣ（３０）によって公開される前記サービスは、前記ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／または前記ＰＬＣからデータを読み取るための少なくとも１つのサービスを含む、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記サービスは、前記ＰＬＣ（３０）上で動作するサーバを用いて、前記ＰＬＣ（３０）によって公開される、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記ＰＬＣ（３０）は、前記ＰＬＣプログラムを実行している、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
ＰＬＣ（３０）を制御するためのＰＣプログラム（２２０）を自動的に作成する方法であって、
ＰＬＣプログラムのソースコード（３１０）のデータセクション（１００）に含まれるデータおよびＰＣプログラムテンプレート（２００）を用いて、前記ＰＣプログラムのソースコード（２１０）を自動生成し、
前記データセクションは、前記ＰＬＣプログラムの実行時に前記ＰＬＣ（３０）によって公開されるサービスを示すデータを含む、方法。
【請求項１２】
請求項１〜１１のいずれか一項に記載の方法を実行するように、特にプログラム的に、適応させたコンピュータ。
【請求項１３】
プログラムコードを有するコンピュータプログラムであって、コンピュータ上で実行されることで、請求項１〜１１のいずれか一項に記載の方法を前記コンピュータに実行させるための、コンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを格納している、マシン可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣプログラムを用いてＰＬＣを制御する方法、ならびに本方法を実行するためのコンピュータおよびコンピュータプログラムに関するものである。
【背景技術】
【０００２】
ＰＬＣ（プログラマブルロジックコントローラ）は、プロセスプラントまたは機械類を制御するための装置であり、デジタル的にプログラムされる。ＰＬＣは、通常、入力と、出力と、ファームウェア（オペレーティングシステム）と、アプリケーションプログラムをダウンロードするためのインタフェースと、を有する。アプリケーションプログラムは、入力に応じて、いかに出力が設定されるのかを定義する。ファームウェアによって、アプリケーションプログラムの入力および出力が利用可能となる。
【０００３】
リアルタイムシステムとしてのＰＬＣは、デジタルセンサまたはアナログセンサと接続しており、プロセスプラントまたは機械類の空気圧シリンダもしくは油圧シリンダまたは電気モータのようなアクチュエータを制御する。特に半導体製造装置アプリケーションである多くの機械制御アプリケーションとして、典型的には、ＰＬＣおよび工場内ネットワーク（例えば、ファブまたはファウンドリとしても知られる半導体製造工場のホストシステム）に接続されたパーソナルコンピュータ（ＰＣ）アプリケーションがあり、それは、これらのセンサ値をＰＬＣから読み取って、これらの取得したリアルタイムデータについて高度な管理を実行し（例えば、これらのデータを状態変数としてファブホストに送信し）、個々のアクションを実行するためのコマンドをＰＬＣに送信する。
【０００４】
従来のＰＣアプリケーションにおける問題は、例えば、新たなセンサの追加または新たなアクチュエータの追加など、ＰＬＣアプリケーション側に進展があるたびに、ＰＣアプリケーション側でも、これらの新たに追加された要素にアクセスするための基本機能を実装するために、例えば以下のような、かなりの量の修正作業があることである。
・ＰＣがアクセスできる新たに追加されたセンサ／アクチュエータに関するＰＬＣインタフェースのドキュメンテーションを作成／修正する。
・新たに追加された要素のための、ＰＬＣアプリケーションとＰＣアプリケーションとの間の追加の通信リンクを追加する。
・新たに追加された要素を表現するＰＣプログラムにおいて内部変数／手続きを作成する。
・新たに追加されたセンサを表示するため、および新たに追加されたアクチュエータを制御するためにＰＬＣにコマンドを送信する可能性を提供するために、ＰＣプログラムのグラフィカルユーザインタフェースを作成／修正する。
【０００５】
例えばＯＰＣサーバを用いて、読み取りおよび／または書き込みのために、ＰＬＣの内部変数をＰＣに公開することができる。ただし、その場合にも、新たに提供される変数を用いるために、ＰＣプログラムを手動で適応させなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
よって、ＰＣプログラムをＰＬＣアプリケーション側の進展に適応させることに関わる必要な作業を軽減することが望ましい。
【課題を解決するための手段】
【０００７】
本発明によれば、独立請求項の特徴により、ＰＣプログラムを用いてＰＬＣを制御するための方法、コンピュータプログラム、およびコンピュータについて提案する。効果的なさらなる改良は、従属請求項の主題および以下の説明の主題をなしている。
【０００８】
本発明により、ＰＬＣプログラムのソースコードのデータセクションおよびＰＣプログラムテンプレートから読み出されたデータに基づいて、ＰＬＣと通信および／またはＰＬＣを制御するために、好ましくはグラフィカルユーザインタフェース（ＧＵＩ）を有する、ＰＣプログラムを自動的に生成するための方法およびその実装を導入する。すなわち、そのデータセクションは、ＰＣプログラムとＰＬＣプログラムの両方に共通のソースコード部分となる。従って、ＰＣプログラムをＰＬＣアプリケーション側の進展に手動で適応させることによって導入されるエラーを防ぐことができる。ＰＬＣプログラム内では、データセクションは、ＰＬＣプログラムの実行時にＰＬＣによって公開されるサービスをそれぞれ指定または宣言するデータを含み、それを対応するサービス公開手続きによって用いることができる。ＰＣプログラム内では、これらのデータを、実際に公開されているサービスを把握するために用いることができるとともに、対応するサービス接続手続きによって用いることができ、さらに、好ましくは、それぞれの公開サービスのための視覚要素（入力または出力）を作成するために、ＧＵＩ作成手続きによって用いることができる。
【０００９】
本発明は、ＰＬＣプログラム側で進展または変更があって、これらの変更をＰＣでも実装する必要がある場合に、ＰＣプログラム側での開発時間を節約することを目的とする。ＰＬＣプログラム側、すなわちＰＬＣプログラムのソースコードを適応させる必要は依然としてあるものの、ＰＣプログラムが何らかのさらなる開発を必要とすることはない。ＰＬＣプログラムのソースコードが定義または変更された場合に、新たなＰＣプログラムソースコードを作成するために、変更されたデータセクションをＰＣプログラムテンプレートに結合する必要があるのみである。これにより、ＰＣ側での開発時間が大幅に節約されるとともに、ヒューマンエラーが回避され、さらに、自動的な機能整合性チェックが行われる。
【００１０】
本発明は、効果的には、「監視制御とデータ取得」（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ Ｃｏｎｔｒｏｌ Ａｎｄ Ｄａｔａ Ａｃｑｕｉｓｉｔｉｏｎ）の枠内で用いることができる。ＳＣＡＤＡは、高度なプロセス監視管理のために、ＰＣ、ネットワーク化されたデータ通信、およびグラフィカルユーザインタフェースを用いる制御システムアーキテクチャであるが、プロセスプラントまたは機械類にインタフェースするために、ＰＬＣおよび離散ＰＩＤコントローラのような他の周辺装置を使用する。監視、およびコントローラ設定点変更のようなプロセスコマンドの発行を可能とするオペレータインタフェースは、ＳＣＡＤＡ監視コンピュータシステムを介して処理される。一方、リアルタイム制御ロジックまたはコントローラ計算は、フィールドセンサおよびアクチュエータに接続するネットワーク化されたモジュールによって実行される。
【００１１】
好ましい実施形態によれば、ＰＬＣプログラムのソースコードは、高水準プログラミング言語であり、特にＣ系言語またはＩＥＣ ６１１３１−３で定義される言語である。ＩＥＣ ６１１３１−３は、プログラマブルロジックコントローラ用のオープン国際標準規格ＩＥＣ ６１１３１の（１０部のうちの）第３部である。ＩＥＣ ６１１３１の第３部は、ＰＬＣ内の制御プログラムの基本的なソフトウェアアーキテクチャおよびプログラミング言語を扱う。それは、２種類の図式プログラミング言語規格および２種類のテキストプログラミング言語規格、すなわち、ラダーダイアグラム（ＬＤ）図式言語；ファンクションブロックダイアグラム（ＦＢＤ）図式言語；ストラクチャードテキスト（ＳＴ）テキスト言語；インストラクションリスト（ＩＬ）テキスト言語、を定義している。
【００１２】
ＰＬＣプログラムの作成は、ＰＣ上でＰＬＣプログラミングツールキットを用いて行うと非常に簡便である。ＰＬＣプログラミングツールキットは、ＰＣプログラムのプログラミング用のプログラミングツールキットとは異なる可能性があるが、本発明の利点は、ＰＬＣプログラミングとＰＣプログラミングとの間の言語の壁をいずれも乗り越えるために共通のファイルを共有することである。ＰＬＣプログラムでは、このファイルは、ソースコードの一部であり、ＰＣプログラムでは、このファイルは、プログラムを自動的に生成するための入力である。本発明により、ＰＣプログラムとＰＬＣプログラムの両方に関連したソースコードを一度のみ提供することによって、コード生成が改善および簡略化される。本発明により、この場合は本発明の意味においてデータセクションである少なくとも１つのモジュールが一度のみ提供されて、それが二度、すなわち両方のプログラムを作成するときに使用されるような、ＰＣプログラムとＰＬＣプログラムの両方のソースコードのモジュール化について提案する。
【００１３】
効果的には、そのデータセクションを、別個のファイルの形で提供することができる。これにより、そのデータセクションを、非常に簡単に、ＰＬＣプログラムソースコードおよびＰＣプログラムソースコードに関連付けて利用する。そのデータセクションは、好ましくは、ＰＬＣプログラムのソースコードのヘッダであり、より好ましくは、別個のヘッダファイルの形で提供される。
【００１４】
好ましくは、ＰＣプログラムテンプレートは、テキストテンプレートである。従って、同じくテキストである、ソースコードからのデータセクションに関連付けて、ＰＣプログラムのソースコードを非常に簡単に自動生成することができる。特に、Ｍｉｃｒｏｓｏｆｔ社が提供するいわゆる「テキストテンプレート変換ツールキット」（Ｔ４）のような、いずれかの周知のコード生成ツールを効果的に使用することができる。開発者は、様々なパラメータを用いてテキストファイルの作成を自動化するためのアプリケーションフレームワークまたはツールフレームワークの一部として、Ｔ４を使用することができる。これらのテキストファイルは、最終的に、コード（例えば、（Ｖｉｓｕａｌ）Ｃ＃のようなＣ系、もしくはＶｉｓｕａｌ ＢａｓｉｃのようなＢＡＳＩＣ系）、ＸＭＬ、ＨＴＭＬ、またはＸＡＭＬのような、任意のテキスト形式で提供することができる。
【００１５】
ＰＣプログラムがＰＬＣと十分に通信可能とするためには、ＰＣプログラムを用いてＰＬＣを制御することは、好ましくは、ＰＬＣへの値の書き込みおよび／またはＰＬＣからの値の読み取りを含む。典型的なＰＬＣでは、ランタイム中に、最終的にＰＬＣの動作を定義する特定の値を有する多くの異なる変数が、メモリに保存される。従って、そのような値を読み取ること、および書き込むことは、ＰＬＣを制御するための基本的な方法である。さらに効果的には、ＰＣプログラムを用いてＰＬＣを制御することは、ＰＬＣから情報を受信すること、および／またはＰＬＣにコマンドを送信すること、を含む。
【００１６】
ＰＣプログラムによりＰＬＣを制御することを可能とするためには、ＰＬＣによって公開されるサービスは、好ましくは、ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／またはＰＬＣからデータを読み取るための少なくとも１つのサービス、を含む。これらのサービスにより、効果的に、ＰＣプログラムが、ＰＬＣに値を書き込むこと、および／またはＰＬＣから値を読み取ること、ひいてはＰＬＣを制御することが可能となる。
【００１７】
本発明の好ましい実施形態によれば、それらのサービスは、例えば、（特にＯＰＣ ＵＡによる）ＯＰＣ、ＰＶＩ、ＰｒｏｆｉＮｅｔなどのサーバである、ＰＬＣ上で動作するサーバを用いて、ＰＬＣによって公開される。これらは、特に、サーバから値（特に測定値）を読み取るため、および／またはサーバすなわちＰＬＣに値（特に設定値）を書き込むための、様々なサービスをクライアントに公開するための、十分に試行されたソリューションである。さらに、公開されたサービスに接続するために、例えば、Ｂ＆ＲからのいわゆるＰＶＩ（Ｐｒｏｃｅｓｓ Ｖｉｓｕａｌｉｚａｔｉｏｎ Ｉｎｔｅｒｆａｃｅ）など、サードパーティのプロシージャおよびクライアントを効果的に使用することができる。ＰＶＩは、ＰＣ上で動作可能であって、データを受信するためにＰＬＣに接続するソフトウェアである。ＰＣプログラムは、ＰＬＣに接続するために、ＰＶＩを補助ツールとして用いることができる。
【００１８】
プログラムコードを含む、本発明によるコンピュータプログラムは、このコンピュータプログラムがコンピュータ上で実行されることで、本発明による方法のうちの１つのすべてのステップをコンピュータに実行させる。そのコンピュータプログラムを提供するための適切な非一時的マシン可読媒体は、特に、フロッピーディスク、ハードディスク、フラッシュメモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、およびＤＶＤなどである。コンピュータネットワーク（インタネット、イントラネットなど）上のプログラムをダウンロードすることが効果的である。
【００１９】
本発明のさらなる効果および実施形態は、説明および添付の図面から明らかになるであろう。
【００２０】
前述の特徴および以下でさらに記載する特徴は、個々に示す組み合わせだけではなく、さらなる組み合わせまたは単独でも、本発明の範囲から逸脱することなく、用いることができることに留意すべきである。
【図面の簡単な説明】
【００２１】
【図１】図１は、プロセスチェンバと、いくつかのセンサ、およびＰＬＣによって制御されるアクチュエータと、を備える例示的な機械を示している。
【図２】図２は、本発明の好ましい実施形態によるデータセクションを概略的に示している。
【図３】図３は、本発明の好ましい実施形態による、ヘッダファイルおよびＰＣプログラムテンプレートを用いてＰＣプログラムを作成するプロセスを概略的に示している。
【図４】図４は、本発明の好ましい実施形態による、ヘッダファイルおよびＰＬＣメインプログラムファイルを用いてＰＬＣプログラムを作成するプロセスを概略的に示している。
【発明を実施するための形態】
【００２２】
図１は、製造プロセスで使用する基板キャリア（例えば、半導体ウェハキャリア、フラットパネルディスプレイキャリア、レチクルキャリア、および電子装置製造用の他のキャリア）のための自動洗浄・検査システムの一部であり得る機械１０を概略的に示している。機械１０は、ドア１２と、この場合はドアを開閉するための空気圧シリンダとして構成されたアクチュエータ１３と、を有するプロセスチェンバ１１を備える。ドア１２が開いているのか閉じているのかを判断するために、アクチュエータの位置を検出するための２つのセンサ１４が設けられている。
【００２３】
プロセスチェンバ１１内には、チェンバを所望の温度まで加熱するためのヒータ１５と、電気モータ１７によって所望の速度で回転させる回転板と、が設けられている。
【００２４】
センサ１４およびアクチュエータ１３、１５、１７は、プロセスを制御するためのＰＬＣ３０に接続されている。そしてＰＬＣ３０は、ＰＬＣを制御するためのＰＣ２０に接続されており、例えば、ＰＣは、ＰＬＣにコマンドを送信するとともに、ＰＬＣからデータを取得する。
【００２５】
図２は、様々なサービスを示すための内部ブロックを有する、ＰＬＣプログラムのデータセクション１００を概略的に示している。好ましくは、このデータセクションは、ＰＬＣプログラムのヘッダである。従って、そのデータを、信頼性の高い直接的な方法で読み出すことが可能である。
【００２６】
前述のように、ＰＬＣによって公開されるサービスは、ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／またはＰＬＣからデータを読み取るための少なくとも１つのサービス、を含むことができる。従って、実際には、このデータセクションは、ＰＬＣにデータを書き込むためのサービス（「ＣＯＮＴＲＯＬ」）としての１つのセクションまたはブロック１１０と、ＰＬＣからデータを読み取るためのサービス（「ＩＮＦＯ」）としての１つのブロック１２０と、を含む。
【００２７】
同様に、ブロック１１０は、コマンドとパラメータにそれぞれ関連した２つのサブブロック１１１、１１２に分割することができる。例えば、サブブロック１１１では、装置のアクション（例えば、ドアの開閉、プロセスの開始／停止）を開始させるための、ＰＬＣへの可能なコマンドすなわちＰＣからの到来データを示すことができ、サブブロック１１２では、機械に関連したパラメータを設定するための、可能な書き込み可能パラメータすなわちＰＣからの到来データを示すことができる。
【００２８】
基本的に、２つのタイプのパラメータがあり、装置関連パラメータの場合、特定の装置構成部品がそのコマンドに関連しており（例えば、「Ｒｏｔａｔｅ Ｔａｂｌｅ」コマンドの場合の所望速度）、プロセス関連パラメータの場合、何らかのプロセスの制約がそのコマンドに関連している（例えば、「Ｒｕｎ Ｐｒｏｃｅｓｓ」コマンドの場合の所望温度）。
【００２９】
ブロック１２０は、プロセス結果と装置状態にそれぞれ関連した２つのサブブロック１２１、１２２に分割することができる。例えば、サブブロック１２１では、プロセスの結果（例えば、「Ｒｕｎ Ｐｒｏｃｅｓｓ」コマンドの場合の測定された平均／最低／最高温度、および「Ｄｅｓｉｒｅｄ Ｔｅｍｐｅｒａｔｕｒｅ」パラメータによる結果の評価）を報告するための、可能な読み取り可能プロセス結果すなわちＰＣに送信される発信データを示すことができ、サブブロック１２２では、装置状態（例えば、ドアの開閉状態）および（何らかの障害が生じている場合の）装置障害状態を報告するための、可能な読み取り可能装置状態データすなわちＰＣに送信される発信データを示すことができる。
【００３０】
図１に示す例では、
・ＰＣは、チェンバのＯＰＥＮまたはＣＬＯＳＥ（２つのコマンド）をＰＬＣに要求できる。
・ＰＣは、ドアがＯＰＥＮまたはＣＬＯＳＥＤ（２つの装置状態）のどちらかである状態を通知される。
・ＰＣは、所望の温度および電気モータ速度（２つのコマンドパラメータ）でプロセスを開始させること（１つのコマンド）をＰＬＣに要求できる。
・プロセスが終了すると、ＰＣは、プロセス中の最低／最高／平均温度（１つのプロセス結果）を通知される。
【００３１】
本例に関連した好ましいヘッダを、付録に示している。このヘッダファイルは、所望の装置機能に応じて、手動で設計されている。これは、ＰＣプログラムに対して、インタフェースを提供するとともに、制御対象のＰＬＣ装置のすべての能力を完全に規定している。
【００３２】
一方で、このヘッダファイルは、図３に示すようにＰＣプログラムを作成するために、使用される。他方で、このヘッダファイルは、図４に示すようにＰＬＣプログラムを作成するためにも、使用される。
【００３３】
次に図３を参照して、ＰＣプログラムソースコード２１０を生成するために、ＰＣプログラムテンプレート２００と共にヘッダファイル１００を使用する。ＰＬＣ３０を制御するためにＰＣ２０上で実行可能なＰＣプログラム２２０を作成するために、ＰＣプログラムソースコード２１０をコンパイルすることができる。好ましくは、ＰＣプログラム２２０は、ＰＣ２０上で実行されると、グラフィカルユーザインタフェースを表示するように構成される。
【００３４】
次に図４を参照して、ＰＬＣプログラムソースコード３１０を生成するために、対応するＰＬＣプログラムソースコード３００と共にヘッダファイル１００を同じく使用する。ＰＬＣプログラム３２０を作成するために、ＰＬＣプログラムソースコード３１０をコンパイルすることができ、ＰＬＣプログラム３２０は、ＰＬＣ３０に転送されて、実行されることで、プロセスを制御すると同時に、ヘッダファイル１００で宣言されているサービスを、ＰＣプログラムにより接続されるように公開する。
【００３５】
ＰＣプログラムを用いて、ユーザは、
・チェンバのＯＰＥＮまたはＣＬＯＳＥをＰＬＣに要求できる。
・ドアがＯＰＥＮまたはＣＬＯＳＥＤのどちらかである状態を通知される。
・所望の温度および電気モータ速度でプロセスを開始させることをＰＬＣに要求できる。
・プロセスが終了した後に、プロセス中の最低／最高／平均温度を通知される。
【００３６】
なお、上記説明は、開示の実施形態の態様の例示的なものにすぎないことは理解されるべきである。当業者であれば、開示の実施形態の態様から逸脱することなく、種々の代替案および変形例を考案することができる。よって、開示の実施形態の態様は、添付の請求項の範囲内にあるすべてのかかる代替案、変更、および変形を包含するものである。さらに、様々に異なる特徴が、互いに異なる従属請求項または独立請求項に記載されているということだけで、それらの特徴の組み合わせを効果的に用いることができないことを示すものではなく、かかる組み合わせは、本発明の態様の範囲から逸脱していない。
【００３７】
例示的なヘッダファイル：
typedef struct
{
CONTROL_INTERFACE tControl; // control of slave (PLC) from master (PC)
INFO_INTERFACE tInfo; // info back from slave (PLC) to master (PC)
} PLC_INTERFACE;
typedef struct
{
EQUIPMENT_STATUS tStatus;
PROCESS_RESULT tResult;
} INFO_INTERFACE;
typedef struct
{
BOOL bProcessChamberClosed; // cylinder position sensor (Digital Input)
BOOL bProcessChamberOpen; // cylinder position sensor (Digital Input)
INT16 iMotorPosition; // motor position (Analog Input)
} EQUIPMENT_STATUS;
typedef struct
{
REAL rMinTemperatureDuringProcess; // min temperature during process
REAL rMaxTemperatureDuringProcess; // max temp during process
REAL rAverageTemperatureDuringProcess; // average temp during process
} PROCESS_RESULT;
typedef struct
{
COMMAND tCommand;
PARAMETERS tParameters;
} CONTROL_INTERFACE;
typedef struct
{
BOOL bOpenProcessChamber; // command to open the process chamber
BOOL bCloseProcessChamber; // command to close the process chamber
BOOL bRunProcess; // command to start a process
} COMMAND;
typedef struct
{
REAL rTargetProcessTemperature; // target temperature during process
REAL rTargetMotorSpeed; // target motor speed during process
} PARAMETERS
【００３８】
ＰＣプログラムテンプレート２００によって生成されたＰＣプログラムソースコード２１０の例示的な部分：
public class PLC_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tControl":
tControl = InternalSetValue(memberName, value, tControl);
break;
case "tInfo":
tInfo = InternalSetValue(memberName, value, tInfo);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tControl":
return tControl;
case "tInfo":
return tInfo;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tControl":
return (T)(object)tControl;
case "tInfo":
return (T)(object)tInfo;
}
return default(T);
}
public CONTROL_INTERFACE tControl = new CONTROL_INTERFACE(); // control of slave (PLC) from master (PC)
public INFO_INTERFACE tInfo = new INFO_INTERFACE(); // info back from slave (PLC) to master (PC)
}
public class INFO_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tStatus":
tStatus = InternalSetValue(memberName, value, tStatus);
break;
case "tResult":
tResult = InternalSetValue(memberName, value, tResult);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tStatus":
return tStatus;
case "tResult":
return tResult;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tStatus":
return (T)(object)tStatus;
case "tResult":
return (T)(object)tResult;
}
return default(T);
}
public EQUIPMENT_STATUS tStatus = new EQUIPMENT_STATUS();
public PROCESS_RESULT tResult = new PROCESS_RESULT();
}
ＥＱＵＩＰＭＥＮＴ＿ＳＴＡＴＵＳおよびＰＲＯＣＥＳＳ＿ＲＥＳＵＬＴは、同様のスタイルを有するが、ここでは示していない。
public class CONTROL_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tCommand":
tCommand = InternalSetValue(memberName, value, tCommand);
break;
case "tParameters":
tParameters = InternalSetValue(memberName, value, tParameters);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tCommand":
return tCommand;
case "tParameters":
return tParameters;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tCommand":
return (T)(object)tCommand;
case "tParameters":
return (T)(object)tParameters;
}
return default(T);
}
public COMMAND tCommand = new COMMAND();
public PARAMETERS tParameters = new PARAMETERS();
}
ＣＯＭＭＡＮＤおよびＰＡＲＡＭＥＴＥＲＳは、同様のスタイルを有するが、ここでは示していない。
【図１】
2020523689.tif 000003
【図２】
2020523689.tif 000004
【図３】
2020523689.tif 000005
【図４】
2020523689.tif 000006
【手続補正書】
【提出日】令和1年7月2日(2019.7.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣプログラムを用いてＰＬＣを制御する方法、ならびに本方法を実行するためのコンピュータおよびコンピュータプログラムに関するものである。
【背景技術】
【０００２】
ＰＬＣ（プログラマブルロジックコントローラ）は、プロセスプラントまたは機械類を制御するための装置であり、デジタル的にプログラムされる。ＰＬＣは、通常、入力と、出力と、ファームウェア（オペレーティングシステム）と、アプリケーションプログラムをダウンロードするためのインタフェースと、を有する。アプリケーションプログラムは、入力に応じて、いかに出力が設定されるのかを定義する。ファームウェアによって、アプリケーションプログラムの入力および出力が利用可能となる。
【０００３】
リアルタイムシステムとしてのＰＬＣは、デジタルセンサまたはアナログセンサと接続しており、プロセスプラントまたは機械類の空気圧シリンダもしくは油圧シリンダまたは電気モータのようなアクチュエータを制御する。特に半導体製造装置アプリケーションである多くの機械制御アプリケーションとして、典型的には、ＰＬＣおよび工場内ネットワーク（例えば、ファブまたはファウンドリとしても知られる半導体製造工場のホストシステム）に接続されたパーソナルコンピュータ（ＰＣ）アプリケーションがあり、それは、これらのセンサ値をＰＬＣから読み取って、これらの取得したリアルタイムデータについて高度な管理を実行し（例えば、これらのデータを状態変数としてファブホストに送信し）、個々のアクションを実行するためのコマンドをＰＬＣに送信する。
【０００４】
特許文献１は、ＰＬＣとして実施することが可能な制御環境であって、生産プロセスなどの装置の動作を制御する制御環境について開示している。産業オートメーションデータを表示するためのレンダリング環境が提供される。この制御環境は、装置の動作を制御するマシン実行可能制御コードを含むことができる。レンダリング環境の端末は、コンピュータ実行可能コード命令を実行するためのプロセッサ（群）を含む。
【０００５】
特許文献２は、プログラマブルロジックコントローラのプログラミングおよび構成設定のための方法について開示しており、この方法は、ＩＥＣ６１１３１言語のモジュールを含む構成ツールをプログラミングツール内に配置することと、少なくとも１つの追加モジュールを構成ツールに組み込むことと、Ｃコードエディタを用いて高水準言語でプログラマブルロジックコントローラのプログラミングおよび構成設定を行うことと、を含み、その少なくとも１つの追加モジュールは、ＩＥＣ６１１３１コードと高水準言語コードとの間のインタフェースの定義、および高水準言語コードの構成、を提供するように構成される。
【０００６】
従来のＰＣアプリケーションにおける問題は、例えば、新たなセンサの追加または新たなアクチュエータの追加など、ＰＬＣアプリケーション側に進展があるたびに、ＰＣアプリケーション側でも、これらの新たに追加された要素にアクセスするための基本機能を実装するために、例えば以下のような、かなりの量の修正作業があることである。
・ＰＣがアクセスできる新たに追加されたセンサ／アクチュエータに関するＰＬＣインタフェースのドキュメンテーションを作成／修正する。
・新たに追加された要素のための、ＰＬＣアプリケーションとＰＣアプリケーションとの間の追加の通信リンクを追加する。
・新たに追加された要素を表現するＰＣプログラムにおいて内部変数／手続きを作成する。
・新たに追加されたセンサを表示するため、および新たに追加されたアクチュエータを制御するためにＰＬＣにコマンドを送信する可能性を提供するために、ＰＣプログラムのグラフィカルユーザインタフェースを作成／修正する。
【０００７】
例えばＯＰＣサーバを用いて、読み取りおよび／または書き込みのために、ＰＬＣの内部変数をＰＣに公開することができる。ただし、その場合にも、新たに提供される変数を用いるために、ＰＣプログラムを手動で適応させなければならない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２０１４／０３４３６９６号明細書
【特許文献２】米国特許出願公開第２０１４／０１２３１０４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
よって、ＰＣプログラムをＰＬＣアプリケーション側の進展に適応させることに関わる必要な作業を軽減することが望ましい。
【課題を解決するための手段】
【００１０】
本発明によれば、独立請求項の特徴により、ＰＣプログラムを用いてＰＬＣを制御するための方法、コンピュータプログラム、およびコンピュータについて提案する。効果的なさらなる改良は、従属請求項の主題および以下の説明の主題をなしている。
【００１１】
本発明により、ＰＬＣプログラムのソースコードのデータセクションおよびＰＣプログラムテンプレートから読み出されたデータに基づいて、ＰＬＣと通信および／またはＰＬＣを制御するために、好ましくはグラフィカルユーザインタフェース（ＧＵＩ）を有する、ＰＣプログラムを自動的に生成するための方法およびその実装を導入する。すなわち、そのデータセクションは、ＰＣプログラムとＰＬＣプログラムの両方に共通のソースコード部分となる。従って、ＰＣプログラムをＰＬＣアプリケーション側の進展に手動で適応させることによって導入されるエラーを防ぐことができる。ＰＬＣプログラム内では、データセクションは、ＰＬＣプログラムの実行時にＰＬＣによって公開されるサービスをそれぞれ指定または宣言するデータを含み、それを対応するサービス公開手続きによって用いることができる。ＰＣプログラム内では、これらのデータを、実際に公開されているサービスを把握するために用いることができるとともに、対応するサービス接続手続きによって用いることができ、さらに、好ましくは、それぞれの公開サービスのための視覚要素（入力または出力）を作成するために、ＧＵＩ作成手続きによって用いることができる。
【００１２】
本発明は、ＰＬＣプログラム側で進展または変更があって、これらの変更をＰＣでも実装する必要がある場合に、ＰＣプログラム側での開発時間を節約することを目的とする。ＰＬＣプログラム側、すなわちＰＬＣプログラムのソースコードを適応させる必要は依然としてあるものの、ＰＣプログラムが何らかのさらなる開発を必要とすることはない。ＰＬＣプログラムのソースコードが定義または変更された場合に、新たなＰＣプログラムソースコードを作成するために、変更されたデータセクションをＰＣプログラムテンプレートに結合する必要があるのみである。これにより、ＰＣ側での開発時間が大幅に節約されるとともに、ヒューマンエラーが回避され、さらに、自動的な機能整合性チェックが行われる。
【００１３】
本発明は、効果的には、「監視制御とデータ取得」（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ Ｃｏｎｔｒｏｌ Ａｎｄ Ｄａｔａ Ａｃｑｕｉｓｉｔｉｏｎ）の枠内で用いることができる。ＳＣＡＤＡは、高度なプロセス監視管理のために、ＰＣ、ネットワーク化されたデータ通信、およびグラフィカルユーザインタフェースを用いる制御システムアーキテクチャであるが、プロセスプラントまたは機械類にインタフェースするために、ＰＬＣおよび離散ＰＩＤコントローラのような他の周辺装置を使用する。監視、およびコントローラ設定点変更のようなプロセスコマンドの発行を可能とするオペレータインタフェースは、ＳＣＡＤＡ監視コンピュータシステムを介して処理される。一方、リアルタイム制御ロジックまたはコントローラ計算は、フィールドセンサおよびアクチュエータに接続するネットワーク化されたモジュールによって実行される。
【００１４】
好ましい実施形態によれば、ＰＬＣプログラムのソースコードは、高水準プログラミング言語であり、特にＣ系言語またはＩＥＣ ６１１３１−３で定義される言語である。ＩＥＣ ６１１３１−３は、プログラマブルロジックコントローラ用のオープン国際標準規格ＩＥＣ ６１１３１の（１０部のうちの）第３部である。ＩＥＣ ６１１３１の第３部は、ＰＬＣ内の制御プログラムの基本的なソフトウェアアーキテクチャおよびプログラミング言語を扱う。それは、２種類の図式プログラミング言語規格および２種類のテキストプログラミング言語規格、すなわち、ラダーダイアグラム（ＬＤ）図式言語；ファンクションブロックダイアグラム（ＦＢＤ）図式言語；ストラクチャードテキスト（ＳＴ）テキスト言語；インストラクションリスト（ＩＬ）テキスト言語、を定義している。
【００１５】
ＰＬＣプログラムの作成は、ＰＣ上でＰＬＣプログラミングツールキットを用いて行うと非常に簡便である。ＰＬＣプログラミングツールキットは、ＰＣプログラムのプログラミング用のプログラミングツールキットとは異なる可能性があるが、本発明の利点は、ＰＬＣプログラミングとＰＣプログラミングとの間の言語の壁をいずれも乗り越えるために共通のファイルを共有することである。ＰＬＣプログラムでは、このファイルは、ソースコードの一部であり、ＰＣプログラムでは、このファイルは、プログラムを自動的に生成するための入力である。本発明により、ＰＣプログラムとＰＬＣプログラムの両方に関連したソースコードを一度のみ提供することによって、コード生成が改善および簡略化される。本発明により、この場合は本発明の意味においてデータセクションである少なくとも１つのモジュールが一度のみ提供されて、それが二度、すなわち両方のプログラムを作成するときに使用されるような、ＰＣプログラムとＰＬＣプログラムの両方のソースコードのモジュール化について提案する。
【００１６】
効果的には、そのデータセクションを、別個のファイルの形で提供することができる。これにより、そのデータセクションを、非常に簡単に、ＰＬＣプログラムソースコードおよびＰＣプログラムソースコードに関連付けて利用する。そのデータセクションは、好ましくは、ＰＬＣプログラムのソースコードのヘッダであり、より好ましくは、別個のヘッダファイルの形で提供される。
【００１７】
好ましくは、ＰＣプログラムテンプレートは、テキストテンプレートである。従って、同じくテキストである、ソースコードからのデータセクションに関連付けて、ＰＣプログラムのソースコードを非常に簡単に自動生成することができる。特に、Ｍｉｃｒｏｓｏｆｔ社が提供するいわゆる「テキストテンプレート変換ツールキット」（Ｔ４）のような、いずれかの周知のコード生成ツールを効果的に使用することができる。開発者は、様々なパラメータを用いてテキストファイルの作成を自動化するためのアプリケーションフレームワークまたはツールフレームワークの一部として、Ｔ４を使用することができる。これらのテキストファイルは、最終的に、コード（例えば、（Ｖｉｓｕａｌ）Ｃ＃のようなＣ系、もしくはＶｉｓｕａｌ ＢａｓｉｃのようなＢＡＳＩＣ系）、ＸＭＬ、ＨＴＭＬ、またはＸＡＭＬのような、任意のテキスト形式で提供することができる。
【００１８】
ＰＣプログラムがＰＬＣと十分に通信可能とするためには、ＰＣプログラムを用いてＰＬＣを制御することは、好ましくは、ＰＬＣへの値の書き込みおよび／またはＰＬＣからの値の読み取りを含む。典型的なＰＬＣでは、ランタイム中に、最終的にＰＬＣの動作を定義する特定の値を有する多くの異なる変数が、メモリに保存される。従って、そのような値を読み取ること、および書き込むことは、ＰＬＣを制御するための基本的な方法である。さらに効果的には、ＰＣプログラムを用いてＰＬＣを制御することは、ＰＬＣから情報を受信すること、および／またはＰＬＣにコマンドを送信すること、を含む。
【００１９】
ＰＣプログラムによりＰＬＣを制御することを可能とするためには、ＰＬＣによって公開されるサービスは、好ましくは、ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／またはＰＬＣからデータを読み取るための少なくとも１つのサービス、を含む。これらのサービスにより、効果的に、ＰＣプログラムが、ＰＬＣに値を書き込むこと、および／またはＰＬＣから値を読み取ること、ひいてはＰＬＣを制御することが可能となる。
【００２０】
本発明の好ましい実施形態によれば、それらのサービスは、例えば、（特にＯＰＣ ＵＡによる）ＯＰＣ、ＰＶＩ、ＰｒｏｆｉＮｅｔなどのサーバである、ＰＬＣ上で動作するサーバを用いて、ＰＬＣによって公開される。これらは、特に、サーバから値（特に測定値）を読み取るため、および／またはサーバすなわちＰＬＣに値（特に設定値）を書き込むための、様々なサービスをクライアントに公開するための、十分に試行されたソリューションである。さらに、公開されたサービスに接続するために、例えば、Ｂ＆ＲからのいわゆるＰＶＩ（Ｐｒｏｃｅｓｓ Ｖｉｓｕａｌｉｚａｔｉｏｎ Ｉｎｔｅｒｆａｃｅ）など、サードパーティのプロシージャおよびクライアントを効果的に使用することができる。ＰＶＩは、ＰＣ上で動作可能であって、データを受信するためにＰＬＣに接続するソフトウェアである。ＰＣプログラムは、ＰＬＣに接続するために、ＰＶＩを補助ツールとして用いることができる。
【００２１】
プログラムコードを含む、本発明によるコンピュータプログラムは、このコンピュータプログラムがコンピュータ上で実行されることで、本発明による方法のうちの１つのすべてのステップをコンピュータに実行させる。そのコンピュータプログラムを提供するための適切な非一時的マシン可読媒体は、特に、フロッピーディスク、ハードディスク、フラッシュメモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、およびＤＶＤなどである。コンピュータネットワーク（インタネット、イントラネットなど）上のプログラムをダウンロードすることが効果的である。
【００２２】
本発明のさらなる効果および実施形態は、説明および添付の図面から明らかになるであろう。
【００２３】
前述の特徴および以下でさらに記載する特徴は、個々に示す組み合わせだけではなく、さらなる組み合わせまたは単独でも、本発明の範囲から逸脱することなく、用いることができることに留意すべきである。
【図面の簡単な説明】
【００２４】
【図１】図１は、プロセスチェンバと、いくつかのセンサ、およびＰＬＣによって制御されるアクチュエータと、を備える例示的な機械を示している。
【図２】図２は、本発明の好ましい実施形態によるデータセクションを概略的に示している。
【図３】図３は、本発明の好ましい実施形態による、ヘッダファイルおよびＰＣプログラムテンプレートを用いてＰＣプログラムを作成するプロセスを概略的に示している。
【図４】図４は、本発明の好ましい実施形態による、ヘッダファイルおよびＰＬＣメインプログラムファイルを用いてＰＬＣプログラムを作成するプロセスを概略的に示している。
【発明を実施するための形態】
【００２５】
図１は、製造プロセスで使用する基板キャリア（例えば、半導体ウェハキャリア、フラットパネルディスプレイキャリア、レチクルキャリア、および電子装置製造用の他のキャリア）のための自動洗浄・検査システムの一部であり得る機械１０を概略的に示している。機械１０は、ドア１２と、この場合はドアを開閉するための空気圧シリンダとして構成されたアクチュエータ１３と、を有するプロセスチェンバ１１を備える。ドア１２が開いているのか閉じているのかを判断するために、アクチュエータの位置を検出するための２つのセンサ１４が設けられている。
【００２６】
プロセスチェンバ１１内には、チェンバを所望の温度まで加熱するためのヒータ１５と、電気モータ１７によって所望の速度で回転させる回転板と、が設けられている。
【００２７】
センサ１４およびアクチュエータ１３、１５、１７は、プロセスを制御するためのＰＬＣ３０に接続されている。そしてＰＬＣ３０は、ＰＬＣを制御するためのＰＣ２０に接続されており、例えば、ＰＣは、ＰＬＣにコマンドを送信するとともに、ＰＬＣからデータを取得する。
【００２８】
図２は、様々なサービスを示すための内部ブロックを有する、ＰＬＣプログラムのデータセクション１００を概略的に示している。好ましくは、このデータセクションは、ＰＬＣプログラムのヘッダである。従って、そのデータを、信頼性の高い直接的な方法で読み出すことが可能である。
【００２９】
前述のように、ＰＬＣによって公開されるサービスは、ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／またはＰＬＣからデータを読み取るための少なくとも１つのサービス、を含むことができる。従って、実際には、このデータセクションは、ＰＬＣにデータを書き込むためのサービス（「ＣＯＮＴＲＯＬ」）としての１つのセクションまたはブロック１１０と、ＰＬＣからデータを読み取るためのサービス（「ＩＮＦＯ」）としての１つのブロック１２０と、を含む。
【００３０】
同様に、ブロック１１０は、コマンドとパラメータにそれぞれ関連した２つのサブブロック１１１、１１２に分割することができる。例えば、サブブロック１１１では、装置のアクション（例えば、ドアの開閉、プロセスの開始／停止）を開始させるための、ＰＬＣへの可能なコマンドすなわちＰＣからの到来データを示すことができ、サブブロック１１２では、機械に関連したパラメータを設定するための、可能な書き込み可能パラメータすなわちＰＣからの到来データを示すことができる。
【００３１】
基本的に、２つのタイプのパラメータがあり、装置関連パラメータの場合、特定の装置構成部品がそのコマンドに関連しており（例えば、「Ｒｏｔａｔｅ Ｔａｂｌｅ」コマンドの場合の所望速度）、プロセス関連パラメータの場合、何らかのプロセスの制約がそのコマンドに関連している（例えば、「Ｒｕｎ Ｐｒｏｃｅｓｓ」コマンドの場合の所望温度）。
【００３２】
ブロック１２０は、プロセス結果と装置状態にそれぞれ関連した２つのサブブロック１２１、１２２に分割することができる。例えば、サブブロック１２１では、プロセスの結果（例えば、「Ｒｕｎ Ｐｒｏｃｅｓｓ」コマンドの場合の測定された平均／最低／最高温度、および「Ｄｅｓｉｒｅｄ Ｔｅｍｐｅｒａｔｕｒｅ」パラメータによる結果の評価）を報告するための、可能な読み取り可能プロセス結果すなわちＰＣに送信される発信データを示すことができ、サブブロック１２２では、装置状態（例えば、ドアの開閉状態）および（何らかの障害が生じている場合の）装置障害状態を報告するための、可能な読み取り可能装置状態データすなわちＰＣに送信される発信データを示すことができる。
【００３３】
図１に示す例では、
・ＰＣは、チェンバのＯＰＥＮまたはＣＬＯＳＥ（２つのコマンド）をＰＬＣに要求できる。
・ＰＣは、ドアがＯＰＥＮまたはＣＬＯＳＥＤ（２つの装置状態）のどちらかである状態を通知される。
・ＰＣは、所望の温度および電気モータ速度（２つのコマンドパラメータ）でプロセスを開始させること（１つのコマンド）をＰＬＣに要求できる。
・プロセスが終了すると、ＰＣは、プロセス中の最低／最高／平均温度（１つのプロセス結果）を通知される。
【００３４】
本例に関連した好ましいヘッダを、付録に示している。このヘッダファイルは、所望の装置機能に応じて、手動で設計されている。これは、ＰＣプログラムに対して、インタフェースを提供するとともに、制御対象のＰＬＣ装置のすべての能力を完全に規定している。
【００３５】
一方で、このヘッダファイルは、図３に示すようにＰＣプログラムを作成するために、使用される。他方で、このヘッダファイルは、図４に示すようにＰＬＣプログラムを作成するためにも、使用される。
【００３６】
次に図３を参照して、ＰＣプログラムソースコード２１０を生成するために、ＰＣプログラムテンプレート２００と共にヘッダファイル１００を使用する。ＰＬＣ３０を制御するためにＰＣ２０上で実行可能なＰＣプログラム２２０を作成するために、ＰＣプログラムソースコード２１０をコンパイルすることができる。好ましくは、ＰＣプログラム２２０は、ＰＣ２０上で実行されると、グラフィカルユーザインタフェースを表示するように構成される。
【００３７】
次に図４を参照して、ＰＬＣプログラムソースコード３１０を生成するために、対応するＰＬＣプログラムソースコード３００と共にヘッダファイル１００を同じく使用する。ＰＬＣプログラム３２０を作成するために、ＰＬＣプログラムソースコード３１０をコンパイルすることができ、ＰＬＣプログラム３２０は、ＰＬＣ３０に転送されて、実行されることで、プロセスを制御すると同時に、ヘッダファイル１００で宣言されているサービスを、ＰＣプログラムにより接続されるように公開する。
【００３８】
ＰＣプログラムを用いて、ユーザは、
・チェンバのＯＰＥＮまたはＣＬＯＳＥをＰＬＣに要求できる。
・ドアがＯＰＥＮまたはＣＬＯＳＥＤのどちらかである状態を通知される。
・所望の温度および電気モータ速度でプロセスを開始させることをＰＬＣに要求できる。
・プロセスが終了した後に、プロセス中の最低／最高／平均温度を通知される。
【００３９】
なお、上記説明は、開示の実施形態の態様の例示的なものにすぎないことは理解されるべきである。当業者であれば、開示の実施形態の態様から逸脱することなく、種々の代替案および変形例を考案することができる。よって、開示の実施形態の態様は、添付の請求項の範囲内にあるすべてのかかる代替案、変更、および変形を包含するものである。さらに、様々に異なる特徴が、互いに異なる従属請求項または独立請求項に記載されているということだけで、それらの特徴の組み合わせを効果的に用いることができないことを示すものではなく、かかる組み合わせは、本発明の態様の範囲から逸脱していない。
【００４０】
例示的なヘッダファイル：
typedef struct
{
CONTROL_INTERFACE tControl; // control of slave (PLC) from master (PC)
INFO_INTERFACE tInfo; // info back from slave (PLC) to master (PC)
} PLC_INTERFACE;
typedef struct
{
EQUIPMENT_STATUS tStatus;
PROCESS_RESULT tResult;
} INFO_INTERFACE;
typedef struct
{
BOOL bProcessChamberClosed; // cylinder position sensor (Digital Input)
BOOL bProcessChamberOpen; // cylinder position sensor (Digital Input)
INT16 iMotorPosition; // motor position (Analog Input)
} EQUIPMENT_STATUS;
typedef struct
{
REAL rMinTemperatureDuringProcess; // min temperature during process
REAL rMaxTemperatureDuringProcess; // max temp during process
REAL rAverageTemperatureDuringProcess; // average temp during process
} PROCESS_RESULT;
typedef struct
{
COMMAND tCommand;
PARAMETERS tParameters;
} CONTROL_INTERFACE;
typedef struct
{
BOOL bOpenProcessChamber; // command to open the process chamber
BOOL bCloseProcessChamber; // command to close the process chamber
BOOL bRunProcess; // command to start a process
} COMMAND;
typedef struct
{
REAL rTargetProcessTemperature; // target temperature during process
REAL rTargetMotorSpeed; // target motor speed during process
} PARAMETERS
【００４１】
ＰＣプログラムテンプレート２００によって生成されたＰＣプログラムソースコード２１０の例示的な部分：
public class PLC_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tControl":
tControl = InternalSetValue(memberName, value, tControl);
break;
case "tInfo":
tInfo = InternalSetValue(memberName, value, tInfo);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tControl":
return tControl;
case "tInfo":
return tInfo;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tControl":
return (T)(object)tControl;
case "tInfo":
return (T)(object)tInfo;
}
return default(T);
}
public CONTROL_INTERFACE tControl = new CONTROL_INTERFACE(); // control of slave (PLC) from master (PC)
public INFO_INTERFACE tInfo = new INFO_INTERFACE(); // info back from slave (PLC) to master (PC)
}
public class INFO_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tStatus":
tStatus = InternalSetValue(memberName, value, tStatus);
break;
case "tResult":
tResult = InternalSetValue(memberName, value, tResult);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tStatus":
return tStatus;
case "tResult":
return tResult;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tStatus":
return (T)(object)tStatus;
case "tResult":
return (T)(object)tResult;
}
return default(T);
}
public EQUIPMENT_STATUS tStatus = new EQUIPMENT_STATUS();
public PROCESS_RESULT tResult = new PROCESS_RESULT();
}
ＥＱＵＩＰＭＥＮＴ＿ＳＴＡＴＵＳおよびＰＲＯＣＥＳＳ＿ＲＥＳＵＬＴは、同様のスタイルを有するが、ここでは示していない。
public class CONTROL_INTERFACE : PlcMember
{
public override void SetValue(string memberName, dynamic value)
{
switch(memberName)
{
case "tCommand":
tCommand = InternalSetValue(memberName, value, tCommand);
break;
case "tParameters":
tParameters = InternalSetValue(memberName, value, tParameters);
break;
}
}
public override dynamic GetValue(string memberName)
{
switch(memberName)
{
case "tCommand":
return tCommand;
case "tParameters":
return tParameters;
}
return null;
}
public override T GetValue<T>(string memberName)
{
switch(memberName)
{
case "tCommand":
return (T)(object)tCommand;
case "tParameters":
return (T)(object)tParameters;
}
return default(T);
}
public COMMAND tCommand = new COMMAND();
public PARAMETERS tParameters = new PARAMETERS();
}
ＣＯＭＭＡＮＤおよびＰＡＲＡＭＥＴＥＲＳは、同様のスタイルを有するが、ここでは示していない。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＰＣプログラム（２２０）を用いてＰＬＣ（３０）を制御する方法であって、
ＰＬＣプログラムのソースコード（３１０）は、データセクション（１００）を含み、前記データセクション（１００）は、前記ＰＬＣプログラムの実行時に前記ＰＬＣ（３０）によって公開されるサービスを示すデータを含む、方法において、
前記データセクション（１００）に含まれる前記データおよびＰＣプログラムテンプレート（２００）を用いて、前記ＰＣプログラムのソースコード（２１０）を自動生成することと、
前記ＰＣプログラムの前記自動生成されたソースコード（２１０）から生成された前記ＰＣプログラム（２２０）を用いて、前記ＰＬＣ（３０）を制御することと、を特徴とする方法。
【請求項２】
前記ＰＣプログラムテンプレート（２００）は、テキストテンプレートである、請求項１に記載の方法。
【請求項３】
前記データセクション（１００）は、前記ＰＬＣプログラムの前記ソースコード（３１０）のヘッダである、請求項１または２に記載の方法。
【請求項４】
前記ＰＬＣプログラムの前記ソースコード（３１０）は、高水準プログラミング言語である、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記ＰＣプログラム（２２０）は、ＰＣ（２０）上で実行されると、グラフィカルユーザインタフェースを表示するように構成される、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記ＰＬＣ（３０）によって公開される前記サービスは、前記ＰＬＣにデータを書き込むための少なくとも１つのサービス、および／または前記ＰＬＣからデータを読み取るための少なくとも１つのサービスを含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記ＰＣプログラム（２２０）を用いて前記ＰＬＣ（３０）を制御することは、前記ＰＬＣから情報を受信すること、および／または前記ＰＬＣにコマンドを送信することを含む、請求項６に記載の方法。
【請求項８】
前記ＰＣプログラム（２２０）を用いて前記ＰＬＣ（３０）を制御することは、前記ＰＬＣに値を書き込むこと、および／または前記ＰＬＣから値を読み取ることを含む、請求項６または７に記載の方法。
【請求項９】
前記サービスは、前記ＰＬＣ（３０）上で動作するサーバを用いて、前記ＰＬＣ（３０）によって公開される、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記ＰＬＣ（３０）は、前記ＰＬＣプログラムを実行している、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
ＰＬＣ（３０）を制御するためのＰＣプログラム（２２０）を自動的に作成する方法であって、
ＰＬＣプログラムのソースコード（３１０）のデータセクション（１００）に含まれるデータおよびＰＣプログラムテンプレート（２００）を用いて、前記ＰＣプログラムのソースコード（２１０）を自動生成することと、
前記データセクションは、前記ＰＬＣプログラムの実行時に前記ＰＬＣ（３０）によって公開されるサービスを示すデータを含むことと、を特徴とする方法。
【請求項１２】
請求項１〜１１のいずれか一項に記載の方法を実行するように、特にプログラム的に、適応させたコンピュータ。
【請求項１３】
プログラムコードを有するコンピュータプログラムであって、コンピュータ上で実行されることで、請求項１〜１１のいずれか一項に記載の方法を前記コンピュータに実行させるための、コンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを格納している、マシン可読記憶媒体。
【国際調査報告】
2020523689.tif 000007
2020523689.tif 000008