マクロフィルタの作成
イントロダクション
マクロフィルタは、より大きなプログラムの開発において重要な役割を果たします。 これらは、フィルターのシーケンスを分離し、プログラムの他の場所で再利用する手段を提供するサブプログラムです。 マクロフィルターを作成した後、そのインスタンスを作成できます。 外側から見ると、インスタンスは通常のフィルタのように見えますが、インスタンスをダブルクリックすると内部に移動し、内部構造を確認できます。
新しいプロジェクトを作成すると、「Main」という名前のマクロフィルターが 1 つだけ含まれます。 これは、プログラムの実行が開始される最上位のマクロフィルターです。 さらにマクロフィルターを追加するには、既存のフィルターから抽出するか、プロジェクト エクスプローラー ウィンドウでマクロフィルターを作成します。
Extracting Macrofilters (The Quick Way)
マクロフィルターを作成する最も簡単な方法は、既存のマクロフィルターに含まれる複数のフィルターからマクロフィルターを抽出することです。 これを行うには、以下の図に示すように、プログラム エディタでいくつかのフィルタを選択し、コンテキスト メニューから [ステップの抽出...] コマンドを選択します。
この操作が完了すると、新しいマクロフィルター定義が作成され、以前に選択したフィルターがこのマクロフィルターのインスタンスに置き換えられます。 新しいマクロフィルタの追加の入力と出力は、新しいマクロフィルタ インスタンス上に接続をドラッグ アンド ドロップすることで作成できるようになりました。
注: 「タスクの抽出 (ループ)...」コマンドは、特殊な場合にのみ使用される新しいタスク マクロフィルタを作成します。 タスク マクロフィルターの実行は、ステップ マクロフィルターの実行よりも複雑です。 マクロフィルターの複雑さを軽減するためにタスクマクロフィルタを使用することは、不適切である可能性があります。 詳細については、タスクマクロフィルタに関するセクションを参照してください。
インターフェースの定義
「Main」以外のマクロフィルター内では、マクロフィルタ入力とマクロフィルタ出力という2つの特別なブロックが表示されます。 これらのブロックのコンテキスト メニューを使用すると、新しい入力または出力を追加できます。 接続を追加するもう 1 つの方法は、接続をこれらのブロック上にドラッグ アンド ドロップすることです。
新しいポートを作成する前に、少なくともその名前とタイプを指定する必要があります。
注: マクロフィルターの入力と出力の名前は明確で意味のあるものにする必要があります。 入力の名前は常に「in」で始まり、出力の名前は常に「out」で始まります。
レジスタの追加
マクロフィルター入力および出力ブロックのコンテキストメニューには、マクロフィルタレジスターを追加するためのコマンド「マクロフィルター レジスターの追加...」も含まれています。これは高度な機能です。
プロジェクトエクスプローラでのマクロフィルタの作成
現在のプロジェクトに含まれるすべてのマクロフィルタ定義は、プロジェクト エクスプローラ ウィンドウに表示できます (デフォルトでは、タブ ページのツールボックスの後ろにあります)。 このコントロールを使用すると、ユーザーはマクロフィルターを作成または編集できますが、アイテムをプログラム エディターにドラッグ アンド ドロップすることでインスタンスを作成できるフィルターカタログとしても機能します。
プロジェクト エクスプローラーで新しいマクロフィルターを作成するには、新しいマクロフィルターの作成... ボタンをクリックします。
新しいウィンドウが表示され、名前と新しいマクロフィルタの構造を選択できます。
ワーカー タスクは特殊な用途のため、プロジェクト エクスプローラーでのみ作成できることに注意してください。 ワーカー タスクの詳細については、マクロフィルタの記事を参照してください。
マクロフィルタのコピー
[プログラム エディター] ウィンドウでマクロフィルターをコピーする場合、新しいインスタンスを作成することしかできません。1 つのインスタンスを変更すると、必然的に他のすべてのインスタンスに影響します。
古いマクロフィルターの定義を個別に変更できる独立したエンティティとして複製する (新しいコピーを作成する) には、プロジェクト エクスプローラー ウィンドウ内で行う必要があります。
プログラムエディターまたはプロジェクト エクスプローラーのどちらでマクロフィルターをコピーしても、内部に他のマクロフィルターがネストされている場合、ネストされたマクロフィルターの新しい定義は作成されないことに注意してください。
1. プログラム エディターで親マクロフィルター (最初のネスト レベル) をコピーする場合、ネストされた (子) マクロフィルターのインスタンスの数は変わりません。
2. プロジェクト エクスプローラーで親マクロフィルター (最初のネスト レベル) をコピーすると、ネストされた (子) マクロフィルターの新しいインスタンスが作成されます。
マクロフィルターツリー全体の新しいコピー (すべての定義のコピー) を作成する場合は、最もネストされたものから始めて、各マクロフィルターを個別にコピーする必要があります。
スタートアップ プログラム
1 つのプロジェクトに複数のプログラムを含めると便利な場合があります。 最も一般的なシナリオは次のとおりです。
- より複雑なデータの場合、例: カスタム OCR モデルまたは調整された参照画像は、別のプログラムで準備する必要があります。
- 単一プログラムの複数のバージョンを異なるインストール用にカスタマイズすると便利な場合
- 最高の信頼性が重要であり、記録された画像に対して一連の自動テストを実行する必要がある場合
Aurora Vision Studio では、プログラムは任意の ワーカー タスク マクロフィルターになります。 この基準を満たすすべてのマクロフィルターのリストは、アプリケーション ツールバーの [スタートアップ マクロフィルター] コンボ ボックスに表示されます。 このコントロールにより、実行するプログラムを選択できます。
関連するマクロフィルターはプロジェクト エクスプローラーに太字で表示されます。
マクロフィルタのガイドライン
マクロフィルターは大規模なプロジェクトを組織しますが、この組織をクリーンかつ効果的にするのはユーザーの責任です。 プロジェクトが成長すると、特に時間に追われるとこのことを忘れて、理解や保守が難しいプログラムを作成してしまいがちです。
これを回避するには、次のガイドラインに従ってください。
- マクロフィルターは大きすぎてはなりません。 プログラムをわかりやすくするために、通常は 3 ~ 15 個のフィルターで構成する必要があります。 マクロフィルターに 20 を超えると、間違いなく問題が発生します。
- 各マクロフィルターには、その名前に明確に反映された単一の機能が必要です。
さまざまなプロジェクトで使用できるツールとしてマクロフィルターを作成することをお勧めします。 - マクロフィルター名はプログラムの実行には影響しませんが、効果的なメンテナンスのためには非常に重要です。 正確で明確な英語名を選択してください。 可能な限り動詞 + 名詞の命名規則に従い、略語は避けてください。
(これはマクロフィルター ポートの名前にも当てはまります) - 単一のマクロフィルター内でデータ分析と通信や視覚化などを混合しないでください。 これらは分離する必要があります。
HMI にデータの視覚化が必要な場合は、1 つのマクロフィルターで結果を計算し、別のマクロフィルターで視覚化を準備します。 これにより、データの流れがより明確になります。 - プロジェクト開発中、初期のプログラム構造が開発中に追加された内容に対して不適切になったり、複雑すぎてわかりにくくなったりすることはよくあります。 このとき、リファクタリング、つまりプログラム構造やマクロフィルターの境界を再設計し、複雑なフィルターのシーケンスを修正することを検討する必要があります。
リファクタリングを日常的な作業の一部として検討することを強くお勧めします。