重要なシステムでは通常、何らかの方法による冗長化または二重安全装置が必要です。システムコンポーネントに予期しない障害が発生した場合、二重安全装置つまりフェイルセーフメカニズムが引き継いで、システムを既知の安全な状態に移行させます。ウォッチドッグタイマは、このフェイルセーフメカニズムを実現するための1つの方法です。システムを監視することで正常に動作していることを確認し、システムが意図しない動作をしていた場合には安全な状態に戻すために使用されます。プログラムが可能なタイムアウト時間内に確認信号を受信できないソフトウェアハングアップといった望ましくない状況が発生することがあります。そうした場合のために、デバイスに対してウォッチドッグタイマを設定しておくことで、出力チャンネルの状態を変更してシステムを既知の安全な状態に移行させることができます。NI-DAQmxウォッチドッグ機能は、ソフトウェアのエラーやハングアップからシステムを保護するためのものです。MXI経由でリモート制御されているPXIシステムでは、MXI接続が失われると、予期しないウォッチドッグの動作が発生し、ウォッチドッグが不適切に実装された状態になることがあります。
ウォッチドッグタイマは、コンピュータが正常に機能していること、またはデバイスとネットワークとの接続が維持されていることを、デバイスが継続して確認することにより動作します。この確認信号がプログラムで設定したタイムアウト時間内に受信されないと、構成済みの出力にセーフステート (安全状態) が書き込まれます。ウォッチドッグタイマの構成が行われ、動作が開始したら、ソフトウェアアプリケーションは期限終了状態にならないように継続的にタイマをリセットする必要があります。このリセット処理によって、デバイスはコンピュータが正常に動作していることを認識します。以下の図1は、正常な動作においてソフトウェアレベルとハードウェアレベルの間で起こる情報の流れを示しています。
図1. ハードウェアレベルとソフトウェアレベルを区別して図示したウォッチドッグタイマフローチャート。
フォルトが発生すると、ハードウェアはタイマが期限終了になるまでカウントダウンを続行します。この時点で、事前に定義済みのセーフステートが構成済みの出力に書き込まれます。デバイスが再びハードウェアのコマンドに応答するようにするには、ウォッチドッグタイマの期限終了の状態をクリアする必要があります。図2は、コンピュータがハングアップしたときに行われるソフトウェアとハードウェアの動作のフローチャートです。このフローチャートから、ハードウェアはタイムアウト期限に達するまでカウントダウンを続行することがわかります。タイムアウト期限に達すると、定義済みのセーフステートが出力に書き込まれて、それ以降に発生するデバイスへの書き込みは無視されます。
図2. ウォッチドッグタイマの期限終了を示すフローチャート。
ウォッチドッグタイマは、システムにフォルトや障害が発生した際に、デバイスの出力を既知の安全な状態に設定する方法を提供します。ウォッチドッグタイマによって提供されるこのフェイルセーフメカニズムは、システムが意図せず動作を停止したときに、デバイスに接続されているハードウェアを保護します。例として、製材工場における監視処理について考えてみます。ここではcDAQ-9185/9189を使用して、ブレード(刃)の速度、位置、振動、キルン(窯)の温度などを監視するとしましょう。そして、CompactDAQハードウェアにより、工場内の全ての装置を制御しているコントローラに絶えず通知信号を送り続けるものとします。それにより、コントローラは、CompactDAQハードウェアがネットワークに接続されており、各種の値を監視可能であることを把握することができます。仮に、cDAQ-9185/9189とネットワークとの接続が失われてユーザが数値を監視できなくなると、cDAQ-9185/9189は全ての機械装置をシャットダウンして安全を確保するために、コントローラにデジタル信号を送ります。このアプリケーションにおいて、もしフェイルセーフメカニズムを実現するウォッチドッグタイマが存在しなければ、機械装置は損傷を受け、修理や交換が必要になるかもしれません。ウォッチドッグタイマを利用するアプリケーションはいくつかあり、システムに対して生産ラインの停止を強制するフェイルセーフメカニズムを搭載しています。そのようにして事前定義されたセーフステートを使用し、システムへの損傷を回避します。
NI-DAQmxデバイスドライバに含まれるウォッチドッグAPIによって、デバイスの出力チャンネル用にウォッチドッグタイマをセットアップし、構成することができます。ウォッチドッグの構成可能オプションは、ウォッチドッグタイマのサポート対象デバイスの種類によって異なります。また、ウォッチドッグタイマを構成するためのオプションも、デバイスごとに異なります。図3は、LabVIEWシステム開発ソフトウェアで開いたウォッチドッグAPIのスクリーンショットです。このパレットにあるVIは以下のとおりです。
これらのVIを使って、アプリケーションにウォッチドッグタイマを作成、セットアップ、および制御します。
図3. ウォッチドッグAPIパレット内のVIによって、ウォッチドッグタイマを作成、セットアップ、制御する。
Xシリーズデバイスやさまざまな工業用DIOデバイスのデジタル出力にウォッチドッグタイマを構成できます。cDAQ-9185/9189では、デジタル出力のほかに、アナログ出力やカウンタ出力にもウォッチドッグタイマを構成できます。またcDAQ-9185/9189では、DAQmxウォッチドッグプロパティノードを使用することで、シャーシがネットワークから切断された際にタイムアウトをトリガにすることができます。この機能を利用して、システムで予期しない障害が発生したときや、cDAQ-9185/9189とホストの間でネットワーク接続が失われたときにタイマの期限を終了させることが可能です。表1に、ウォッチドッグAPIに含まれる機能と、これらを利用できるデバイスを一覧で表示します。
ウォッチドッグがサポートされるデバイス | |||
機能 | Xシリーズカード | 工業用DIO製品 | cDAQ-9185/9189 |
デジタル出力セーフステート | Low/High/トライステート/変更なし | Low/High/トライステート/変更なし | Low/High/トライステート/変更なし |
アナログ出力 (電流) セーフステート | − | − | 電流レベル/変更なし |
アナログ出力 (電圧) セーフステート | − | − | 電圧レベル/変更なし |
カウンタ出力セーフステート | − | − | Low/High/変更なし |
トリガ期限終了OFFネットワーク接続 (Trigger Expiration Off Network Connection) プロパティ | − | − | 有効/無効 |
表1.サポートされているウォッチドッグデバイスで利用可能な機能
ウォッチドッグタイマは、NI-DAQmxのタスクを作成する場合と同じ方法で実装します。まず、「DAQmxウォッチドッグタイマタスクを作成」VIを使用して、ウォッチドッグタイマタスクを作成します。このVIによって、デバイスへのリファレンスとタイマのタイムアウト時間を構成します。
ウォッチドッグタイマタスクを作成したら、「DAQmxウォッチドッグ期限終了状態を構成」VIを使用してこのタスクを構成します。この多態性VIを使用すれば、ウォッチドッグタイマで監視している出力チャンネルの期限終了状態を構成できます。デジタル出力については、タイムアウトしたときの状態としてハイ、ロー、トライステートのうちいずれかを選択できます。cDAQ-9185/9189のウォッチドッグタイマタスクでは、アナログ出力とカウンタ出力の構成も可能です。アナログ出力については、電流タスクか電圧タスクかを選択し、タイムアウトしたときの値を設定します。カウンタ出力のチャンネルに対しては、ハイ、ローを設定するか、またはタイムアウトしたときの値をそのまま保持するという設定が行えます。ウォッチドッグタスクを設定するツールとしては、このほかにDAQmxウォッチドッグプロパティノードがあります。このノードを使用することで、すべての期限終了状態とタイムアウト値を構成できます。また、cDAQ-9185/9189においては、ネットワークが切断した際にタイマのタイムアウトをトリガにする機能を有効にするか無効にするかを設定できます。
ウォッチドッグタスクの構成後、「DAQmxタスクを開始」VIを使用してウォッチドッグタスクを開始する必要があります。ウォッチドッグタスクは、動作を開始すると、コンピュータが正常に動作していることを示す確認信号を継続して待機します。ウォッチドッグタスクにコンピュータが正常に動作していることを知らせるために、「DAQmxウォッチドッグタスクを制御」VIを使用して、構成されたタイムアウトの値になる前にタイマをリセットします。図4に、cDAQ-9185/9189で使用されるウォッチドッグタスクの例を示します。この例では、cDAQ-9185/9189に対してウォッチドッグタスクが設定され、タイマが期限終了状態になったとき、またはシャーシがネットワークから切断されたときに、アナログ出力チャンネルがセーフステートに移行するように構成されています。
図4. ウォッチドッグタスクが構成されたcDAQ-9185/9189のアナログチャンネル。
タイマの期限が終了し、チャンネルがセーフステートに移行した場合、デバイスが再びハードウェアコマンドに応答できるようにするために期限終了状態を解除する必要があります。図5に示すように、「DAQmxウォッチドッグタスクを制御」VIを使用して期限終了状態を解除するか、またはハードウェアデバイスをリセットします。cDAQ-9185/9189を使用している場合、ハードウェアデバイスをリセットする方法でのみウォッチドッグタイマの期限終了状態を解除できます。
図5. 「DAQmxウォッチドッグタスクを制御」VIによって期限終了状態を解除する。
アプリケーションのシステムコンポーネントに予期しない障害が発生したときのために、ウォッチドッグタイマによってフェイルセーフメカニズムつまり二重安全装置または冗長化が用意されます。ウォッチドッグタイマを利用することで、システムにフォルトや障害が発生した際に、デバイスの出力を既知の安全な状態に設定することができます。XシリーズのマルチファンクションDAQカードや工業用DIO製品では、デジタル出力チャンネルにウォッチドッグタイマを設定できます。cDAQ-9185/9189では、デジタル出力のほかに、アナログ出力 (電圧/電流) やカウンタ出力にもウォッチドッグタイマを設定できます。さらに、ネットワーク接続を監視して、接続が失われた際にセーフステートを有効にできます。