高レベル関数ブロックを使用したモーションプロファイル開発

発行日: Jun 19, 2017 | 0 Ratings | 0.00 out of 5 | 印刷

概要

ナショナルインスツルメンツのLabVIEW NI SoftMotionモジュールを使用すると、LabVIEWプロジェクトを使って、モーション軸設定の構成とテストやサーボモータの調整を行うことができます。そうすることで、PLCopen IEC 1131-3仕様に基づく高レベル関数ブロックで、モーションプロファイルをプログラミングすることが可能となります。NI SoftMotion技術には、新しいNI Cシリーズドライブインタフェースのサポートのほか、特殊なI/Oを追加できる軸インタフェースノード、カスタマイズ可能な制御アルゴリズム、または他社製ドライブへの通信インタフェースなどの機能があります。また、SolidWorks 3D CADを併せて使用すれば、モーションアプリケーションや機械設計でバーチャル試作を行うこともできます。SolidWorks対応NI SoftMotionを使用すると、コストをかけて実機を試作する前に、SolidWorksで作成した設計を、NI SoftMotion関数ブロックで開発した実際のモーションプロファイルを使ってシミュレーションできます。

目次

NI SoftMotionをNIスキャンエンジンとともに使用する

お持ちのハードウェアでNI SoftMotion関数ブロックまたは軸インタフェースノードを使用するには、LabVIEWプロジェクトで軸、座標、テーブルを作成する必要があります。これらの項目はモーションI/Oリソースに関連付けられ、NI SoftMotion関数ブロックまたは軸インタフェースノードを使用してモーションアプリケーションを作成する際に使用します。NI SoftMotion軸をハードウェアと関連付けるには、「Axis Manager」ダイアログボックスを使用します。軸は、軌道発生器、比例/積分/微分(PID)制御ループまたはステッパ出力、監視制御により構成されています。NI SoftMotion軸は、シミュレーションのハードウェアでも実際のハードウェアでも関連付けることができます。サーボ軸には、エンコーダフィードバックリソースが必要です。開ループステッパ軸には、フィードバックは必要ありません。

NI SoftMotion軸に関連付けたハードウェアによって、以下の軸タイプを作成することができます。

  • NI 951x軸(スキャンインタフェースモード)
  • シミュレーション軸
  • SolidWorks軸
  • 関連付けのない軸

図1. 「NI SoftMotion Axis Manager」ダイアログボックス

「Configure Coordinate Spaced」ダイアログボックスを使用して、軸から座標を作成します。座標とは、軸を論理的にグループ化したもので、座標のリソースを使用できるNI SoftMotion関数ブロックへの入力として使用します。座標を使用すると、複数の軸を使ってモーションを指定でき、軸が同時に開始し停止するようにできます。座標に含まれていない個々の軸を同時に開始した場合、モーションの開始は同期できますが停止は同期できません。

図2. 「NI SoftMotion Configure Coordinate Space」ダイアログボックス

図3. 軸と座標スペースが構成されたLabVIEWプロジェクト

全てのモーションI/Oと実行に関する情報は、グローバルスキャンエンジンメモリマップに追加され、スキャンサイクルごとにアップデートされます。Line、Stop、Gearing、Cammingなど、同じスキャンサイクルで実行する関数ブロックは、同じスキャンサイクルで同期され、開始します。つまり、軸、座標、ギアリング操作、カム操作を全て同じスキャンサイクルで開始できるということです。ただし、このようにして同時に開始した軸は、同時に停止しません。モーションを同時に終了するには、移動制限を計算して全ての軸でモーションを同時に停止させるか、それらの値が自動で計算されるように座標を構成する必要があります。

関数ブロックの実行はスキャンエンジンの周期に関連付けられているため、外部イベントに応答する際や異なる軸タイプを同期させる際などにわずかな遅延が生じることがあります。表1は、最大および最小の遅延を示しています。

関数

遅延(スキャン周期)

リミット/原点スイッチのアクティブ化 1 ≤ 遅延 < 2
エンコーダマスタによるギアリングとカム スレーブ出力によりマスタ出力が2スキャンサイクル分遅延
位置エラー 位置エラーのある軸で1スキャンサイクル、最大2スキャンサイクルで座標内の他の軸を減速
NI 951xとカスタム軸 カスタム軸はNI 951x軸に対して1スキャンサイクル遅延

表1. 関数ブロックの実行遅延

NI SoftMotion関数ブロックを使用する

LabVIEW NI SoftMotionモジュールには、確定性に優れたモーションコントロールアプリケーションを作成するための関数ブロックが搭載されています。

LabVIEWには、工業用制御システムのプログラミングを行うためのIEC 61131-3国際規格に基づいた関数ブロックが搭載されています。これらの関数ブロックはリアルタイムアプリケーションで使用することを目的に設計されており、パラメータをシェア変数としてパブリッシュしてヒューマンマシンインタフェース(HMI)プログラミングや状態監視に使用できます。使い慣れた工業用関数ブロックとLabVIEWの全てのVIや関数を利用できるため、シンプルなものも複雑なものもあらゆる工業用計測・制御アプリケーションを開発することができます。

LabVIEW Real-TimeとWindows対応LabVIEWでは、LabVIEW Real-TimeモジュールとともにインストールされるLabVIEW関数ブロックを使用できます。LabVIEW NI SoftMotionにもモーション機能を持つ関数ブロックが含まれており、LabVIEWプロジェクトを使ってモーション軸設定の構成とテストやサーボモータの調整が行えます。LabVIEW NI SoftMotionは、LabVIEWプラットフォームDVDに含まれています。30日間有効の評価版をインストールするか、機能の限定された無料版をご利用いただけます。

関数ブロックはLabVIEWで作成されており、リアルタイムアプリケーションで確定的実行を行うよう設計されているため、タイムクリティカルなコードにも安心して使用できます。関数ブロックの各インスタンスには、固有の名前と再入実行可能なメモリスペースがあります。そのため、それらの関数ブロックはアプリケーションのどこでも単独で使用できます。例えば、PID関数ブロックの各インスタンスで別のシステムを制御することが可能です。

アプリケーションで使用する関数ブロックは、各端子に配線されているシェア変数へのリモートアクセスにより、LabVIEWプロジェクトで表示することができます。端子と変数は、関数ブロックのプロパティページで構成できます。

端子変数は、デフォルトでFIFO対応のシングルプロセスリアルタイムシェア変数として構成されます。これはリアルタイムアプリケーションのどこでも使用することができ、ジッタを発生させずにパラメータ値にアクセスすることが可能です。端子は、ブロックダイアグラム上の端子から、対応するシェア変数からリモートで、あるいは定数として値を受け取るように構成することができます。

端子変数ネットワークパブリッシュシェア変数として構成すると、HMIプログラミングやリモート監視用のパラメータ値にリモートでアクセスすることができます。HMIのプログラミングでは、デスクトップコンピュータや工業用のタッチパネルコンピュータ上のLabVIEWアプリケーションでシェア変数を使用できます。NI分散システムマネージャでは、ネットワーク上のシステム監視とネットワークに公開されたデータの管理を集中して行います。LabVIEW開発環境がなくても、システムマネージャで関数ブロックのパラメータ値を表示することができます。変数から値を受け取るよう関数ブロック端子を構成することで、システムマネージャからパラメータ値に書き込むことができるようになるため、例えばPID関数ブロックのリモートでの調整なども可能となります。

また、NI SoftMotion関数ブロックには、各関数ブロックの状態を監視し保持するパラメータもあります。NI SoftMotion用の関数ブロックAPIは、モーションハードウェアとの通信に使用する非ブロック型(非同期)のAPIです。

下記の表は、モーション関数ブロックの概要を示しています。

パレットオブジェクト

パレットアイコン

説明

ライン 軸または座標リソースを使用して直線モーションを実行します。直線モーションとは、1軸以上で2点間をつなぐものです。モーションの動作は、直線移動モードによって指定されます。
円形、球形、またはらせん形のモーションを実行します。弧モーションとは、指定した半径の円形の動きです。実行される弧のタイプは、弧モーションモードで指定されます。
輪郭 軸または座標リソースを使用して輪郭モーションを実行します。輪郭モーションは、一連の位置で表したモーションで、ソフトウェアがそれを滑らかな曲線として推測します。これらの位置は表に保存できます。各ポイントは、絶対位置とみなされ、モーションの開始地点を一時的な“0”位置とします。輪郭モーションのタイプは、輪郭モードによって指定されます。
基準 軸リソース上で、原点やリミットの位置の検出など、基準モーションを実行します。基準モーションは、モーションシステムを初期化したり、再現可能な基準位置を設定したりするのに使用します。モーションの動作は、基準モーションモードによって指定されます。
キャプチャ センサの状態など、外部入力に基づいてエンコーダ位置を記録します。キャプチャ位置を使用して、キャプチャ位置に対して相対的にモーションを実行したり、キャプチャイベントが発生したときのエンコーダ位置を記録したりできます。
比較 外部アクティビティと指定のエンコーダ位置によりモータを同期します。指定した位置に到達すると、ユーザが設定したパルスが実行されます。位置比較操作の動作は、比較モードによって指定されます。
ギアリング 指定した軸を構成してギアリング操作を行います。ギアリングにより、スレーブ軸の動きがマスタデバイスの動きと同期します。マスタデバイスとしては、エンコーダや他の軸の軌道などがあります。スレーブ軸の動きは、マスタよりギア比が高いあるいは低い場合があります。例えば、マスタ軸が1回転するごとにスレーブ軸は2回転するなどです。実行されるギアリング操作のタイプは、ギアリングモードで指定されます。
カム 指定した軸を構成してカム操作を行います。比率はNI SoftMotionによって自動で処理されるため、ギア比の正確な切り替えが可能です。カム操作は、スレーブ軸がマスタデバイスの非線形プロファイルをたどるアプリケーションで使用します。カム操作のタイプは、カムモードによって指定されます。
読み取り 軸、座標、フィードバック、その他のリソースから状態とデータに関する情報を読み取ります。用意されている読み取り方法で、様々なリソースから情報を得ることができます。
書き込み 軸、座標、またはフィードバックリソースに状態とデータに関する情報を書き込みます。用意されている書き込み方法で、様々なリソースに情報を書き込むことができます。
位置のリセット 指定した軸または座標の位置をリセットします。
停止 軸または座標の現在のモーションを停止します。モーションの動作は、停止モードによって指定されます。
電源 指定した軸または座標リソースの軸やドライブを有効または無効にします。
プログラミングテクニック NI SoftMotionのプログラミングテクニック。

 

LabVIEWでNI SoftMotion関数ブロックをプログラミングする際に役立つヒントを下記に紹介します。

  • 関数ブロックは、LabVIEWプロジェクトの一部をなすVIで実行する必要があります。
  • 関数ブロックは、常にループ内で実行する必要があります。アプリケーションの要件により、「次のミリ秒倍数まで待機」関数でタイミングをとったWhileループを使用するか、関数ブロックがスキャン周期で実行するアプリケーションの場合、NIスキャンエンジンと同期したタイミングループを使用することができます。
  • 関数ブロックの実行順序を特定するには、関数ブロックのステータス出力を使用します。これは通常のLabVIEWプログラミング方法ではありません。例えば、ケースストラクチャ内に関数ブロックを配置しないでください。
  • 関数ブロックがメモリを割り当てないように、アプリケーションループ外の全ての配列出力を初期化する必要があります。これによりシステムのドリフトとジッタが軽減されます。

関数ブロックの実行順序を特定するため、モーション関数ブロックにはステータスパラメータがあります。関数ブロックのステータスパラメータの動作について、概要を下記に説明します。

executeerror outdoneabortedbusy、およびactiveパラメータは、以下の条件に則って動作します。

出力ステータス doneおよびaborted出力は、executeの立ち下がりエッジによってリセットされます。ただし、executeの立ち下がりエッジで、実際の関数ブロックの実行が停止したり影響を受けることはありません。関数ブロックの実行が完了する前にexecuteがリセットされたとしても、いずれかのステータスが発生した場合、対応する出力が少なくとも1サイクル分設定されるようにする必要があります。関数ブロックのインスタンスが完了前に新しいexecuteを(同じインスタンスの一連のコマンドとして)受信した場合、関数ブロックは前回の実行時のdoneabortedなどのステータス出力を返しません。
入力パラメータ 関数ブロックの入力パラメータは、execute入力の立ち上がりエッジで使用されます。いずれかのパラメータを変更するには、入力パラメータを変更して関数ブロックを再度実行する必要があります。
配線されていない入力パラメータ いずれかの関数ブロック入力が配線されていない場合、この関数ブロックの前回実行時の値が使用されます。関数ブロックの最初の実行の場合は、デフォルト値が使用されます。
符号規則 Accelerationdecelerationacceleration jerk、およびdeceleration jerk入力は、常に正の値です。ターゲットのpositionsとdistanceは、正の場合と負の場合があります。Velocityは、速度方式で直線モーションを実行する場合以外は、常に正の値となります。
エラー処理動作

全ての関数ブロックにはerror outクラスタがあり、実行中に発生する可能性のあるエラーに対応できます。これらの出力の定義は下記のとおりです。

  • Statusは、関数ブロックの実行中にエラーが発生するとTRUEになります。status出力がTRUEになるのは、エラーの発生後1回のループ反復のみです。エラーステータスをTRUEのままにしておきたい場合は、シフトレジスタを使用してエラー情報を以降のループ反復に渡します。
  • codeは、エラーコードまたは警告コードです。ステータスがTRUEの場合、コードは0以外のエラーコードとなります。ステータスがFALSEの場合、コードは0または警告コードです。
  • sourceは、エラーまたは警告が発生した場所を示します。ほとんどの場合は、エラーまたは警告が発生した関数ブロックの名前です。

関数ブロックでエラーが発生すると、実行時間が長くなることがあります。

done出力の動作 done出力は、指定された動作が正しく終了すると設定されます。複数の関数ブロックが同じリソースで逐次実行していて、リソース上のモーションが同じリソース上の他のモーションによって目的を遂行する前に中断された場合、最初の関数ブロックのdoneは設定されません。
aborted出力の動作

Abortedは、指定された動作が他のコマンドによって中断されたとき設定されます。abortedのリセット動作はdoneのそれに似ています。abortedが設定されると、他の出力信号はリセットされます。

Abortedは、リソースタイプの異なる他の関数で関数の実行を中断しても、TRUEにはなりません。例えば、座標に含まれる軸で直線モーションを実行しても、実行中の座標のモーションは中断されません。ただし、弧モーションはdoneがTRUEになり、実行が停止します。

アプリケーションリミットを超える入力 関数ブロックがアプリケーションリミットの超過につながるパラメータのコマンドを受け取った場合、関数ブロックのそのインスタンスはエラーを生成します。
busy出力の動作 全ての関数ブロックには、関数ブロックの動作が完了していないことを示すbusy出力があります。Busyは、executeの立ち上がりエッジで設定され、doneaborted、またはerror outが設定されたときにリセットされます。ソフトウェアが未定義状態のままになっている可能性があるため、busyがTRUEの間は、この関数ブロックの実行を制御しているアプリケーションを中止しないことをお勧めします。
activeの出力 active出力は、関数ブロックが指定のリソースの制御権を得たときや、全てのプロパティがコミットされたとき、関数ブロックが実行されたときにTRUEになります。active出力がTRUEになると、関数ブロックは次のスキャンサイクルで有効になります。

 

その他関連リソース

Webイベント: CompactRIOを使用した上級モーション(英語)

スタートアップガイド

 

上に戻る

Bookmark & Share


Ratings

Rate this document

Answered Your Question?
Yes No

Submit