#ERR
#ERR の意味
#ERR を表示するセルは、そのセルが関数を正常に実行できなかったことを示しています。一般的には、無効な入力パラメータが原因です。 #ERR 状態は、ビジョンアプリケーションの通常の操作によって発生することもあれば、スプレッドシートの論理そのものに含まれるエラーによって発生することもあり、さまざまなことが要因となります。 一般に、次の場合に #ERR が発生します。
-
算術演算の基本的なエラー
セル A4 = A3/A2 で、セル A2 が 0 の場合、セル A4 の関数は「ゼロによる除算」エラーを生成します。
-
領域グラフィックスエラー: 領域が画像の範囲外へ移動
PatFind などの位置決めツールを使用して、ほかのビジョンツールの位置をフィクスチャするとき、ビジョンツールの領域の一部が画像の範囲外に出てしまうことがあります。 この場合、ビジョンツールは、ビジョンツールの有効な結果構造体を返さずに #ERR を報告します。
-
「Get」関数のエラー: ビジョンツールが結果を生成しない
ExtractBlobs ツールとともに GetRow 関数を使用する場合、状況によっては、ExtractBlobs ツールで予想される数のブロブを確認できないことがあります。 このような状況で画像から目的のブロブを検出できなかった場合、GetRow 関数は #ERR を報告します。
-
通信エラー: データを送信できない
WriteImageFTP セルや WriteDevice セルは、スプレッドシートが実行されるたびに、データを In-Sight センサから別のコンピュータに自動的に送信します。 クライアントコンピュータで問題が発生し、データを受信できない場合、In-Sight センサの出力バッファがいっぱいになることがあります。 出力バッファのオーバフロー (データを格納できない状態) が発生すると、これらのセルは #ERR を報告します。
#ERR セルのトラブルシューティングの方法
ほとんどの #ERR 状態はエラー文字列を返します。エラー文字列が生成されている場合、#ERR を含むセルにマウスを合わせると、エラー文字列が表示されます。また、赤い感嘆符 () がプロパティシートに表示された場合は、その赤い感嘆符にマウスを合わせるとエラー文字列が表示されます。エラー文字列をスプレッドシート上で取得するには、GetErrorString 関数を使用します。各エラー文字列には個別の診断コード番号が割り当てられています。診断コードは、GetErrorCode 関数で取得できます。最もよく返されるエラー文字列を確認するには、ここをクリックしてください。
エラー文字列を返さない #ERR については、エラーとなっているセル関数の各パラメータを調べることによって、#ERR の原因を究明することができます。 数式内のセル参照を調べて、それらの値を確認してください。 複雑なジョブの場合は、いくつかの参照や入れ子型の参照を追跡する必要が生じる場合もあります。
画像取り込み関数の一部の機能 (部分取り込み、照明制御など) は、エミュレータではサポートされていません。In-Sight センサ上でこれらの機能を使用したジョブを作成し、そのジョブをエミュレータにロードすることは可能ですが、このとき、セル A0 の AcquireImage 関数が #ERR を報告することがあります。
#ERR を無視してエラーの拡散を防止する方法
ExtractBlobs ツールにより検出された複数のブロブの合計面積を計算するケースを考えて見ましょう。GetArea 関数を使用して、ブロブ構造体から個々のブロブの面積を取得します。 ブロブが検出されないと、GetArea 関数は正常に実行されませんが、アプリケーションでは正常な状況である場合があります。
セル |
関数 |
説明 |
A1 |
ExtractBlobs([パラメータ]) |
ブロブを抽出して、ブロブ構造体を返します。 |
B1 |
GetArea(A1,0) |
ブロブ 0 の面積を返します。 |
B2 |
GetArea(A1,1) |
ブロブ 1 の面積を返します。 |
B3 |
GetArea(A1,2) |
ブロブ 2 の面積を返します。 |
B4 |
Sum(B1:B3) |
ブロブの総面積を計算します。 |
ExtractBlobs 関数が 3 つ以上のブロブを検出できないと、1 つ以上の GetArea セルが #ERR を報告するために、数式 Sum(B1:B3) は、#ERR を報告します。このエラー状態を無視するには、次の ErrFree 関数を使用します。 |
||
B4 |
Sum(ErrFree(B1:B3)) |
ブロブの総面積を計算します。 |
ErrFree 関数を使用すると #ERR が 0 に置き換えられます。したがって、この Sum の入力パラメータに含まれる #ERR の値はすべて 0 として処理されます。