プロジェクトエクスプローラーを使用したプロジェクトの管理
イントロダクション
プロジェクト エクスプローラーは、現在開いているプロジェクトに含まれる要素を表示するウィンドウです。
- モジュール
- マクロフィルター (定義)
- グローバルパラメータ
- ユーザーのタイプ
- ユーザー フィルター ライブラリ
- 添付ファイル
その主な目的は、フィルター カタログのフィルターと同じ方法でカテゴリにグループ化されたアイテムを参照、追加、削除、名前変更、または開くための単一の場所を提供することです。
カテゴリは、標準モジュールまたはユーザー フィルター ライブラリのモジュールに対応する場合があります。 また、添付ファイルという特別なカテゴリが 1 つあります。これは、ユーザーが外部ファイルをプロジェクトに追加するときに表示されます (たとえば、ドキュメントを含むテキスト ドキュメントなど)。

プロジェクトエクスプローラーのモジュール
マクロフィルタを開く
「プログラムの実行と分析」で説明されているように、既存の マクロフィルター 内を移動するには 2 つの方法があります。 。 そのうちの 1 つはプロジェクト エクスプローラー ウィンドウを使用したもので、インスタンスではなくマクロフィルターの定義が表示されます。 ただし、プロジェクト エクスプローラーでマクロフィルターをダブルクリックすると、プログラム エディターでマクロフィルター インスタンスが開きます。 1 つのマクロフィルター定義には、ゼロ、1 つ、または多数のインスタンスを含めることができます。 いくつかの特別なルールが、どのインスタンスに適用されるかに適用されます。
- 可能であれば、最後に実行されたインスタンスが開かれます。
- まだインスタンスが実行されていない場合は、最後に作成されたインスタンスが開かれます。
- インスタンスがまったくない場合は、「ゴーストインスタンス」が表示され、マクロフィルタの編集が可能になりますが、出力ポートにはデータが保持されません。
マクロフィルターカウンター
マクロフィルターカウンタは、特定のマクロフィルターがプログラム内で使用された回数を示します。
詳細注意: マクロフィルタ X がマクロフィルタ Y で使用されており、マクロフィルタ Y のインスタンスが複数ある場合でも、マクロフィルタ X は 1 回使用されていると見なされます。 使用数はインスタンス数と同じではありません。
グローバルパラメータ
ある値がプログラムの複数の異なる場所で何度も使用される場合、その値をグローバル パラメータに変換する必要があります。 そうしないと、値を連続して変更する場合、すべての出現箇所を見つけて変更するという、エラーが発生しやすい手動プロセスが必要になります。 また、プロジェクト仕様から最も重要な値を明確に区別するために、グローバル パラメーターを使用することをお勧めします。 たとえば、予想される寸法や公差などです。 これにより、将来的にプログラムの保守がはるかに簡単になります。
Aurora Vision Studio では、グローバル パラメーターは特定のモジュールに属し、プロジェクト エクスプローラーで管理されます。
作成するには、新しいグローバル パラメータの作成... ボタンをクリックし、 次に、ダイアログ ボックスが表示され、新しい項目の名前、タイプ、値を入力します。
グローバル パラメータを作成した後、フィルタ入力にドラッグ アンド ドロップすると、パラメータの名前を表示するビジュアル ラベルを使用して適切な接続が作成されます。

グローバル パラメータを作成

プログラムで使用されるグローバル パラメータ
プロジェクトに含まれるグローバル パラメータは、プロジェクト エクスプローラまたはプログラム エディタで選択した後、プロパティ ウィンドウで編集することもできます。
バージョン 4.11 以降、専用フィルターである WriteParameter および ReadParameter を使用してグローバル パラメーターを作成および管理できるようになりました。 これらは、ツールボックスのプログラム構造カテゴリで入手できます。
新しい入力を追加するときに、「グローバル パラメーターの選択」ウィンドウが表示されます。

すでに作成されているグローバル パラメータを選択することも、
新しいグローバル パラメータを作成することもできます。

WriteParameterフィルタ内で作成されたグローバルパラメータ「inAddress」は、
ReadParameter フィルターで読み取ることができます。
これらのフィルターのおかげで、アルゴリズム内の任意の場所でグローバル パラメーターの値を簡単に読み書きできます。 開発を容易にするために、グローバルパラメータのアイコンは、プログラム内のどこかに上書きされるかどうかに応じて外観が異なります。
アイコンの色は赤になり、アプリケーションの実行中にこの値が変更される可能性があることがわかります。
グローバル パラメータが実際にどのように機能するかを確認するには、公式の例である HMI Handling Events を確認してください。
備考:
- 接続されたフィルターは、グローバル パラメーターの変更後に再実行されません。 これは、プログラムのさまざまな部分にある多くのフィルターを 1 つのグローバル パラメーターに接続できるためです。
これらをすべて再実行すると、予期しない非ローカルなプログラム状態の変化が発生する可能性があるため、禁止されています。 - 本当に必要な場合を除き、書き込み可能なグローバル パラメータを使用しないでください。 ほとんどの場合、接続数が多い場合でも、明示的な接続を使用してフィルター間でデータを渡す必要があります。 書き込み可能なグローバル パラメータは、いくつかの非常に特殊なタスクにのみ使用する必要があります。特に、プログラムの実行中に動的にロードされる可能性のある構成パラメータや、HMI を通じて操作される可能性のある高レベルのプログラム統計 (最終欠陥時間など) に使用されます。
モジュール
プロジェクトが 10 ~ 20 のマクロフィルタを超えて大きくなった場合、プロジェクトをいくつかの個別のモジュールに分割し、それぞれが何らかの論理部分に対応することが適切な場合があります。 I/O 通信、構成管理、自動単体テストなどのために別のモジュールを作成することをお勧めします。 マクロフィルターとグローバル変数は論理的な方法でグループ化され、参照しやすくなります。
モジュールは「マクロフィルターのライブラリ」と呼ばれることもあります。 これは、さまざまなプロジェクトで使用できる一般的なユーザー ツールのセットを開発する手段を提供するためです。 これは、特定の市場分野に特化し、いくつかの標準タスクが繰り返し表示されることに気付いたユーザーにとって非常に便利です。
モジュールを作成するには、[新規モジュールの作成...] ボタンをクリックすると、ダイアログ ボックスが表示されます。 そこでモジュールの場所と名前を指定します。 パスは絶対パスでも相対パスでもかまいません。 モジュールは拡張子 .avlib で保存されます。 モジュール ファイルの保存と更新は、含まれているプログラムが保存されるときに行われます。

絶対パスと相対パスの両方のモジュール作成ウィンドウ
モジュールを作成した後、既存のマクロフィルターをプロジェクト エクスプローラーのモジュールにドラッグすることで、モジュールに移動できます。 [新しいマクロフィルタの作成... ボタンをクリックすると、新しいマクロフィルタを作成できます。 指定された名前のマクロフィルター。 その間、適切なボタンをクリックして詳細オプションにアクセスできます。 そこで親モジュールを指定し、マクロフィルターにアクセスできます。 アクセスはプライベートまたはパブリックのいずれかにできます。 プライベート マクロフィルターをモジュールの外部で直接使用することはできません。 マクロフィルターのツールチップ (説明) を提供することもできます。 これは、インスタンスのプロパティ セクションに表示され、プロジェクト エクスプローラーにカーソルを置くと表示されます。 ツールチップはマクロフィルターの目的を簡潔に説明する必要があります。 これらは作成する場合に特に重要です。

詳細オプションを使用したマクロフィルタの作成

サンプル ツールチップを表示するビュー
マクロフィルタを右クリックし、プロパティの編集... を選択すると、マクロフィルタを変更できます。 作成後のプロパティ (アクセスを含む)。

編集ウィンドウにアクセスする方法。アイコンを変更するオプションが強調表示されます。
以下の図はサンプルプログラムの構造を示しています。 マクロフィルターは 2 つのモジュールにグループ化されています。 モジュール FindDefects には、欠陥検出に関連するマクロフィルタと、マクロフィルタで使用されるグローバル パラメータがあります。 ProcessImage マクロフィルターがグレー表示になっていることに注目してください。 これは、プライベートマクロフィルターであることを示します (ここでは、FindShapeDefects によって使用されます)。 ProcessImage は、そのモジュールの外では使用できません。
もう 1 つのモジュールには、検査結果の表示と保存に関連するマクロフィルターがあります。

マクロフィルターがモジュールにグループ化されたプログラム構造の例
このような状況でモジュールを使用する方法に関するガイドラインをいくつか示します。
- 関連する標準マクロフィルタのセットごとに個別のモジュールを作成します。
- 各モジュールに一意で明確な名前を付けます。
- 英語を使用し、ネイティブ フィルタと同じ命名規則に従います。
- 異なるプロジェクト間でマクロフィルタを変更する必要がなく、パラメータの値のみを調整する必要があるような方法で共通のマクロフィルタを作成します。
- 一部のマクロフィルタが実装のみを目的としている(他のモジュールから使用されない)場合は、それらをプライベートとしてマークします。
HMI とインターフェースするフィルターを含むモジュールはプログラム間で共有すべきではないことに注意することが重要です。 HMI に接続されているすべてのフィルター ポートには一意の識別子があります。 これらの識別子はプログラムによって異なります。異なるプログラムの同じフィルターのポートは異なる識別子を持ちます。
一般に、HMI に関連するすべてのものに対して別のモジュールを作成することをお勧めします。 そうすれば、他のすべてのモジュールを問題なくプログラム間で共有できます。
モジュールのインポート
以前に作成したモジュールを使用する場合は、[既存モジュールのインポート...] をクリックします。
これにより、追加するモジュールを選択できるウィンドウが開きます。 これで、モジュールへのパスがプロジェクトにリンクされます。 新しいモジュールを作成する場合と同様に、そのモジュールへのパスを相対パスにするか絶対パスにするかを選択できます。
モジュールは別個のファイルであるため、外部から変更できることに注意してください。 これは、複数のプロジェクト間で同時に共有されるモジュールの場合に特に重要です。
以下も参照してください。
Trick: モジュールとしての INI ファイルが AVEXE にエクスポートされない.
モジュールのロック
ユーザーは、不正アクセスから保護するためにマクロフィルターの一部の内容を非表示にしたい場合があります。
これは、モジュール内に配置してロックすることで実行できます。 これを行うには、プロジェクト エクスプローラーでモジュールを右クリックし、[モジュールのロック] オプションを選択する必要があります。 ユーザーは、この特定のモジュールのパスワードを入力するように求められます。

モジュールにロックを追加
パスワードを作成すると、プロジェクト エクスプローラーのモジュール名の横に開いた鍵のアイコンが表示されます。
このモジュールは、他のモジュールとまったく同じ方法で作業できます。 他のモジュールと異なるのは、ロックできることです。ロックすると、内部に含まれるマクロフィルターの実装をチェックできなくなります。 このようなモジュールは、この点ではフィルターに似ています。 この操作により、avlib ファイルも暗号化されます。 作業を終了するたびにモジュールをロックすることが重要です。

プロジェクトエクスプローラーでモジュールをロック

プログラム内のロックされたモジュールからのマクロフィルター
モジュールのロックを解除するには、ProjectExplorer で [モジュールのロック解除] オプションを選択し、正しいパスワードを入力する必要があります。
選択したモジュールからモジュール ロック機能を完全に削除するには、[モジュール ロックの削除] オプションを使用します。