コンテンツにスキップ

ランタイム 5.9.0 の既知の問題#

このセクションでは、Basler Runtime バージョン 5.9.0 に関する既知の問題について説明します。

すべてのコンポーネント#

概要 カメラが正しい画像を出力しない
説明 複数のリンクを備えたカメラが、リンク間での画像データの分散に関するCXP規格に準拠していない場合、正しい画像がコンピュータに送信されません。この問題は、JAI SP-12000C-CXP4カメラで確認されています。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID TFS 211645
概要 カメラシミュレータの予期しない動作
説明 アプレットの内部カメラシミュレーターを使用すると、期待されるよりも低い帯域幅が表示される場合があります。そのため、現在のシミュレーターを使用する際に特定のオーバーフロー条件が発生する可能性があります。実カメラを使用している場合、この動作は発生しません。この問題は内部カメラシミュレーターのみに関連しています。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID –
概要 フレームグラバーがWindows Fast Startupで動作しない
説明 Windows 8以降でFast Startupが有効になっている(Hybrid BootまたはHybrid Shutdownとも呼ばれます)場合、ハードウェア構成を変更してシステムを再起動した後にフレームグラバーが動作しなくなることがあります。
影響を受ける OS Windows 8 以降
回避策 再起動(シャットダウンではなく、明示的な再起動)を行うことで、これらの問題が解決します。問題を完全に回避するには、www.windowscentral.comで説明されているようにFast Startupを無効にしてください。
チケット ID –
概要 高フレームレートでの画像表示によりユーザー入力に対する反応が遅くなる場合がある
説明 Framegrabber API ライブラリ display_lib(Windowsでのみ利用可能)を使用する場合、高フレームレート(約10,000フレーム/秒)で画像を表示すると、ホストコンピューターのユーザー入力(キーボードやマウスなど)に対する反応が遅くなることがあります。
影響を受ける OS Windows
回避策 回避策はありません。
チケット ID –
概要 信頼できるBasler証明書でLinuxドライバに署名できない
説明 Linuxでセキュアブート(UEFIモード)を使用する場合、信頼された証明書で署名されたドライバが必要です。ドライバはソースコードとして提供されるため、信頼されたBasler証明書で署名する方法はありません。
影響を受ける OS Linux
回避策 ドライバを使用するには、セキュアブートを無効にすることができます。または、このUbuntuのブログ記事で説明されているようにドライバに署名することもできます。
チケット ID –

フレームグラバー#

概要 不正なイベント時にLED 12EXTが赤色に点灯する
説明 imaWorxが外部電源に接続されていない場合、LED 12EXTは赤色に点灯する仕様になっています。ただし、このLEDは外部電源コネクタが接続されている場合にのみ赤色に点灯し、12V_EXTではなく12V_DC_UPの状態を誤って反映します。
回避策 回避策はありません。
チケット ID TFS 206709

ファームウェア#

概要 CXP-12 Interface Card 1C カードの PCIe 通信モジュールに起因するデータ損失とシステムフリーズ
説明 ファームウェアバージョン 3.0 S1.1 P1(および対応するアプレット)を搭載した CXP-12 Interface Card 1C カードの PCIe 通信モジュールの問題により、コンピューターの PCI ハードウェアの感度によっては、データ転送が失敗しシステムがフリーズする可能性があります。これは次の場合に発生する可能性があります:
  • バッファのメモリ アドレスが、PCI ペイロードサイズの境界の 4 バイト後から始まるか、または 4 バイト前で終了しています。
  • カメラが生成するフレームのバイトサイズが 4 の倍数であり、かつ 8 の倍数ではない場合。
影響を受ける OS WindowsおよびLinux
影響を受けるハードウェア ファームウェアバージョン 3.0 S1.1 P1 を搭載した CXP-12 Interface Card 1C カード
回避策 8で割り切れるメモリアドレスにバッファを作成します。希望するバッファサイズが8で割り切れない場合は、この要件を満たすために追加のバイトを割り当て、データを処理する際はこのパディングを無視します。a
チケット ID TFS 184670
概要 変更点: DeviceUserID GenTL Producer またはその他のアプリケーションの再起動が必要
説明 カメラの DeviceUserID (正確には、カメラの CXP ブートストラップレジスタの DeviceUserID)が変更された場合、その変更を GenTL API経由で反映させるには、GenTL Producer の再起動が必要です。GenTL 経由でカメラと対話するために GUI(pylon Viewer など)を使用している場合、変更を反映させるにはそのアプリケーションの再起動が必要です。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID TFS 207518

CXP-12 Interface Card 1C アプレット#

概要 頻繁なリンク速度の変更によるエラー
説明 1つのポートで CXP リンク速度が頻繁に変更されると、速度変更が機能しなくなることがあります。その場合、「Failed to set bitrate of uplink transceivers」および「Failed to set bitrate of downlink transceivers」というエラーメッセージがログに記録されます。
カメラ検出では未接続のポートもプローブしてリンク速度を変更するため、アプリケーションが未接続ポート上の新しいカメラを頻繁に検出しようとすると、この問題が発生する可能性があります。
影響を受ける OS WindowsおよびLinux
回避策 アプレットの再読み込み:
アプレットを再読み込みするには、別の阿プレットを読み込んでから元のものを再度読み込みます。もし、次の名前の環境変数 SISO_FORCE_RELOAD_APPLET の値が はいに設定されている場合、最初に別のアプリケーションを読み込まなくても再読み込みが機能します。
チケット ID TFS 197127

SDK#

概要 カメラからフレームグラバーへの画像転送の遅延による破損フレーム
説明 バッファの(再)キューイングが、カメラからフレームグラバーへの画像転送よりも遅い場合、破損した画像が配信されます。この動作は、画像データを検査することによってのみ検出できます。
影響を受ける OS WindowsおよびLinux
回避策 こうした破損した画像を回避するため、画像処理およびバッファの再キューイングは、カメラのフレームレートよりも高速に行う必要があります。フレーム grabber上の内部バッファは、スケジューリング等による小さな遅延を相殺するのに十分な容量を備えています。
この問題によって生成された破損したフレームは、設定された寸法よりも小さくなります。そのため、想定外に小さいフレームをこの問題のインジケーターとして利用できます。フレームデータのサイズは、次のように決定できます。
  • GenTL Producer の使用:
    呼び出します DSGetBufferInfo を BUFFER_INFO_SIZE_FILLED としてコマンドを使用します。
    Do NOT use BUFFER_INFO_IS_INCOMPLETE を使用せず、 BUFFER_INFO_SIZE_FILLED < BUFFER_INFO_DATA_SIZE。これらのチェックは常に falseになります。詳細については、セクション GenTL Producer.
  • Framegrabber SDK / Fglib の使用:
    呼び出します Fg_getParameterEx を FG_TRANSFER_LEN をパラメータとして使用します。
チケット ID TFS 207873

Cognex アダプター#

概要 Cognex VisionPro は Admin ユーザー権限で起動する必要があります
説明 フレーム grabberにアクセスするには、Cognex VisionPro を Admin ユーザー権限で起動する必要があります。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID TFS 187245
概要 メモリが限られているため、大サイズの画像の取得に失敗する
説明 大きな ROI(4096 x 3000 など)を設定する場合、「The acquisition failed abnormally. (Adapter image pool full.)」というメッセージが表示されてアクピジションの開始が失敗することがあります。
これは、VisionPro がベンダー固有のアダプターで使用できるメモリを制限しているために発生します。
影響を受ける OS Windows
回避策 これを回避するには、Cognex VisionPro Adapter Manual に記載されている手順に従って、Windows レジストリ経由で制限を増やしてください。
チケット ID TFS 203605

GenTL Producer#

概要 Acquisition Start後に変更されたカメラパラメータが Frame Grabber に反映されない
説明 画像取得中にカメラパラメータを変更しても、その変更はフレーム grabberに反映されません。これは、GenTL Producer がアクピジションの開始前に、関連するパラメータ(幅、高さ、画像フォーマットなど)を照会し、それらをフレーム grabberと同期させるためです。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID TFS 195482
概要 BUFFER_INFO_DATA_SIZE フレームサイズではなく、転送されたバイト数が含まれる
説明 バッファ Property BUFFER_INFO_DATA_SIZE が期待通りに機能しません: BUFFER_INFO_DATA_SIZE には設定されたフレームサイズが含まれているはずですが、 BUFFER_INFO_SIZE_FILLEDと同様に、実際に転送されたバイト数が含まれます。したがって、Property BUFFER_INFO_IS_INCOMPLETE 常に false.
影響を受ける OS WindowsおよびLinux
回避策 意図された値 BUFFER_INFO_DATA_SIZE 通常は画像のものと同等です。 width * height * pixel size.
チケット ID TFS 211972
概要 アプレットの変更時にGenTLデバイスIDが変更される
説明 GenTL規格によると、デバイスIDは2つのセッション間で一定に保たれる必要があります。しかし、アプレットが変更されるとGenTLデバイスIDも変更されます。したがって、あるアプレットでクエリされたデバイスIDは、デバイスIDが生成された元のアプレットと同じ名前を持つアプレットを使用する場合に限り、別のボードおよび別のアプレットで使用できます。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID –
概要 BUFFER_INFO_FRAME_ID CXP イメージヘッダーからのソースタグの代わりに、すべてのフレームの Counter が含まれる
説明 GenTL BUFFER_INFO_FRAME_ID(次を介してクエリ可能: DSGetBufferInfo経由でクエリを実行できます)には、CXPイメージヘッダーからのソースタグが含まれていません。その代わりに、コンピュータに配信されたすべてのフレームのCounterが含まれています。
影響を受ける OS WindowsおよびLinux
回避策 回避策はありません。
チケット ID TFS 197430

microDisplay X#

概要 設定 TriggerState を active Acquisition のタイムアウトを引き起こす可能性がある
説明 アプレットパラメータの設定 TriggerState を active カメラでのアクイジション開始前に実行すると、画像が取得されずにアクイジションがタイムアウトする原因になることがあります。
影響を受ける OS WindowsおよびLinux
回避策 これを回避するには、 TriggerState がアクイジションの開始後にのみ有効化されるようにしてください。
チケット ID TFS 191631
概要 Linux環境で、終了時にmicroDisplay Xがクラッシュすることがある
説明 Linux環境で、終了時にmicroDisplay Xがクラッシュすることがあります。これによる影響はなく、無視して問題ありません。
影響を受ける OS Linux
回避策 回避策はありません。
チケット ID TFS 211811

  1. 次のコード例を使用して、このデータ転送の問題が発生しないバッファを作成できます。

    // create a ROI that could trigger the issue (for demonstration purposes only!)
    
        size_t imageWidthPx = 252;
    
        size_t imageHeightPx = 15;
    
        size_t pixelSizeBytes = 1;
    
    // compute the required buffer size for one image
    
    size_t imageSizeBytes = imageWidthPx * imageHeightPx * pixelSizeBytes;
    
    // set the buffer size to the nearest larger size that is divisible by 8
    
    size_t bufferSizeBytes = ((imageSizeBytes + 7) / 8) * 8;
    
    // add 4 more bytes so we can add an offset of 4 bytes if the address ends up being only 4 byte aligned
    
    bufferSizeBytes += 4;
    
    // allocate the buffer
    
    uint8_t* imageBuffer = (uint8_t*)malloc(bufferSizeBytes);
    
    // sanitize the address
    
    uint8_t* sanitizedImageBuffer = (((uintptr_t)(imageBuffer)) % 8 == 0)
    
        ? imageBuffer
    
        : imageBuffer + 4;
    
     /* [use the sanitized buffer] */
    
    // free the original(!) buffer
    
    free(imageBuffer);
    

     ↩