ETCPでバインディングを行うようなアプリケーションを開発したが、
「カーネルバインディング初期化エラー」
が発生してしまう。


  • ETCPを使用してバインディングを実現しようとしているが動作しないETCPでバインディングを実行していて、コンフィギュレーションマネージャを終了してもETCPタスクが終了しない

上記のような現象が起こっている場合は、ETCP用のバインディング受信バッファのサイズが不足している可能性があります。デフォルトのサイズは512Bです。

まず、バーチャルマシン(VM)がどのようなエラーを出力しているかを確認します。
ターゲットにターミナルを接続して(WindowsNT版の場合はコンソールウィンドウを確認)、
"warning 1e:0 kernel binding: init error"
というエラーを発生していないかどうか確認してみてください。このメッセージが出ていれば受信バッファ不足です。

対策
ETCPバッファサイズを調節するには
通信タスク起動時に、ETCP NCRBSize パラメータに適切なバッファサイズを指定します。
NCRBSizeの最小値は、以下のように計算します。

NCRBSize = バインディングプロデューサ数 × (ヘッダサイズ + プロデューサのプロデュースサイズ)

ここで、
ヘッダサイズ = 32 です。
プロデューサのプロデュースサイズとは、1プロデューサ用に提供されるデータサイズです。プロデューサ毎に計算します。


ISaGRAF Ver.4/5 NTターゲットで NCRBSize を "20000" に設定する場合。
    1. "ETCP.INI"ファイルが存在しない場合、ファイルを作成します。
    2. "ETCP.INI" 内に以下のセクションを追加します。
    [APP]
    NCRBSize=20000

なお、NCRBSizeについての詳細は関連項目をご覧ください。
ちなみに、HSD(同一コンフィグレーション内でのバインディング)にはメモリサイズの制限はありません。
最終更新:
2008-07-30 10:27
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

このカテゴリー内のレコード

タグ