ターゲットの起動時のパラメータはどのように指定するか?また、どのような意味があるのか?


ISaGRAF Ver.4/5ターゲットの各アプリケーション(ISaVM,ISaCMG,ISaISX...)とISaIXLライブラリ(他のクライアントの窓口)は、原則として起動時に構成を指定する必要があります。例えばコンフィグレーションマネージャには起動可能なリソースの最大数を指定します。
通常これらのパラメータは起動時にのみ参照されます。パラメータを指定しないと、デフォルト値が適用されます。
また、起動パラメータの設定方法はターゲットにより異なります。NTターゲットの場合、拡張子が"ini"のファイルで指定することもできます。

一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9/QNXターゲット | IXLクライアント

一般的な規則
パラメータ名の規則
    パラメータ名には次のものの組み合わせになります。
      • パラメータを使うアプリケーション名コンポーネント名。これは、パラメータ名がアプリケーションそのものを表わさないが、内部のコンポーネント(I/O、バインディング、IXLなど)に由来するような場合です。これはこれらのコンポーネントでパラメータ名の競合を防ぐためのものです。
        【例】TCP/IPバインディングドライバの "KVBETCP"バーチャルマシンのスレーブ番号(必要な場合のみ)パラメータ名そのもの

値の指定方法
    一般的には、起動時にC言語のmain関数に渡される引数を使います。ターゲットアプリケーションの場合はシステムレイヤのdsys0arg.cファイルをリンクすることで、下記のようなコマンドライン管理機能を利用できます。
      • パラメータ名の前に '-' をつけます。コンポーネント名がある場合はパラメータ名の後ろに\とともに付記します。'='記号でパラメータ名と渡す値を区切ります。複数の値を渡す場合は、カンマ(,)で区切ります。パラメータ値に空白を含まる場合は、OSにも依存しますが、"パラメータ=値"のように全体をダブルクォーテーション(")で囲みます。

        【例】
        -ResNbr=20
        -s=2,5,6
        -HSD\RcvMaxMsg=10

一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
ワークベンチ
    ワークベンチはターゲットの1リソースあたり2個、1コンフィグレーションあたり1個のIXL接続を使用します。
    ワークベンチのbinディレクトリで、下記の各INIファイルを修正します。

    (1)DTA.INI ファイル
    [IXL]
    CnxNbr = (リソース数 + 1) × 3
      [IXL] セクションでは、ワークベンチのデバッガから全コンフィギュレーションへのIXL経由での接続数を指定します。
      Ver4.03でのデフォルト値は16です。つまり、リソース数は7個に制限されます。
      Ver4.03以降では、デフォルト値は102です。つまり、リソース数は33個に制限されます。
      制限を越えると、下記のエラーが発生することがあります。
        ワークベンチの表示 「リソースへの接続中にエラーが発生しました。DTAサーバシステムエラー 20000539」
        DTA_SRVの画面 -16 20000539
        エラーの意味 -16:DTA サーバシステムエラー。
        539: IXL: 接続を確立できない。接続の最大数に達している。
      このエラーが発生した場合、上記の [IXL] ブロックの "CnxNbr" の値が必要なリソース数を満たすように変更して下さい。

    (2)ETCP.INI ファイル
    [APP]
    ChNbr = (リソース数 + 1) × 4
      これはETCPネットワーク上のリソースをデバッグする際のものです。
      デフォルト値は50です。つまり、リソース数は11個に制限されます。
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
WindowsNTターゲット/シミュレータ
    ターゲットのディレクトリにINIファイルを作り、パラメータを記述しておくこともできます。
      • INIファイル名は、<アプリケーション名>.INI です。
        【例】isagraf.iniコンポーネント名の無いパラメータは [APP] セクションで設定します。コンポーネント名があるパラメータは コンポーネント名のセクションで設定します。
        【例】[HSD]セクションバーチャルマシンのパラメータは、セクション名の後ろにスレーブ番号を10進数で付記します。この場合、そのパラメータはまずスレーブ番号が付加されているセクションをサーチし、存在しなければ、番号の付加されていないセクションをサーチします。
        例:ISaGRAF.ini
        [APP]
        ResNbr=20
        s=2,5,6
        例:IsaVM.ini
        [APP]
        RtnRead=0

        [SRV]
        MaxScan=8

        [SRV12] ('12' は10進表記で、12番のVMを示す)
        MaxScan=3

    以下は、設定例です。
    ターゲットのディレクトリで、下記の各INIファイルの内容を修正します。ファイルがない場合は、テキストエディタなどで作成してください。

    (1)ETCP.INI ファイル
    [APP]
    ChNbr = (リソース数 + 1) × 4
      [APP]セクションでは、ETCPのチャネル数(ChNbr)を設定します。ETCPは1リソースにつき4チャネルのリンクと、1コンフィギュレーションにつき4チャネルのリンクをオープンします。((リソース数+1)×4)
      ChNbrのデフォルト値は50です。つまり、リソース数は11個に制限されます。
      制限を越えると、下記のエラーが発生することがあります。
        ワークベンチの表示 「リソースへの接続中にエラーが発生しました。DTAサーバシステムエラー 20000411」
        DTA_SRVの画面 -1 20000411
        エラーの意味 -1:サーバシステムエラーが発生した
        411:CRU:チャンネルテーブルに空きがない

      他にもパラメータがあります。詳細は関連項目「ETCPタスクに渡すバインディング起動パラメータについて」をご覧下さい。
    (2)ISaGRAF.iniファイル
    [APP]
    ResNbr = リソース数
      [APP]セクションではコンフィギュレーションマネージャが起動してよいリソースの最大数を指定します。
      デフォルト値は16です。つまり、リソース数は16個に制限されます。
      起動するリソース数を増やす場合は、この "ResNbr" の数を大きくして下さい。
      制限を越えたり、[APP]セクション自体の指定がないと、下記のエラーが発生することがあります。
        ワークベンチの表示 「リソースへの接続中にエラーが発生しました。リクエストは失敗しました」
        DTA_SRVの画面 -50 2000053F
        エラーの意味 -50:リクエストが失敗した
        53F:IXL: リクエスト処理中のカーネルの不具合

    (3)ISaIXD.iniファイル
    [APP]
    ChNbr = (リソース数 + 1) × 2
    ResNbr = リソース数

    [IXL]
    CnxNbr = リソース数 + 1

    [IXS]
    CnxNbr = (リソース数 + 1) × 2
      [APP]セクションではエクスチェンジディスパッチャ(IXD)の最大チャネル数を設定します。チャネルの最大数=ChNbrは((リソース数(ResNbr)+1)×2)です。CNbrのデフォルト値は16なので、リソース数は7個に制限されます。
      制限を越えたり、[APP]セクション自体の指定がないと、下記のエラーが発生することがあります。
      ワークベンチの表示 「リソースへの接続中にエラーが発生しました。タイムアウトが発生しました。」
      DTA_SRVの画面 -16 20000513
      エラーの意味 -16: ISaIXD: ISaIXDでのデータ転送に失敗
      513: ISXL: ダイアログの起動に失敗
      [IXL]セクションでは、IXDからリソースとコンフィギュレーションマネージャへのIXL接続についての設定を行います。IXDはリソースにつき1つと、コンフィギュレーションマネージャに1つのリンクをオープンします。(ResNbr+1)
      CnxNbrのデフォルト値は16です。つまり、リソース数は15個に制限されます。接続リソース数を増やす場合は、CnxNbrを増やしてください。
      制限を越えると、下記のエラーが発生することがあります。
      ワークベンチの表示 「リソースへの接続中にエラーが発生しました。ISaIXDのタイムアウトが発生しました。」
      DTA_SRVの画面 -16 20000539
      エラーの意味 -16: ISaIXD: ISaIXDでのデータ転送に失敗
      539: IXL: 接続を確立できない。接続の最大数に達している。
      [IXS]セクションでは、IXDからリソースとコンフィギュレーションマネージャへのIXS接続についての設定を行います。IXSはリソース毎に2つと、コンフィギュレーションマネージャにつき2つのリンクをオープンします。((ResNbr+1)*2)
      CnxNbrのデフォルト値は16です。つまり、リソース数は7個に制限されます。接続リソース数を増やす場合は、CnxNbrを増やしてください。
      制限を越えると、下記のエラーが発生することがあります。
      ワークベンチの表示 「リソースへの接続中にエラーが発生しました。ネットワークの転送に失敗しました。」
      DTA_SRVの画面 -32 20000521
      エラーの意味 -32: NET: ネットワークの転送に失敗。
      521: ISXS: 接続を確立できない。利用できるIXS接続がありません。

    例 リソースを20個起動する場合
    WindowsNTターゲット、もしくはシミュレータでの設定例です。

    ISAGRAF.INIファイルに下記のセクションを追記します。
    [APP]
    ResNbr = 20 ;これでコンフィグレーションマネージャがリソースを20個起動できます。

    ISAIXD.INIファイル
    [IXL]
    CnxNbr=21 ;20リソース + 1コンフィグレーションマネージャ

    [IXS]
    CnxNbr=42 ;((20 リソース + 1コンフィグレーションマネージャ)×2

    [APP]
    ChNbr=42 ;((20 リソース + 1コンフィグレーションマネージャ)×2

    ETCP.INIファイル
    [APP]
    ChNbr=84 ;((20 リソース + 1コンフィグレーションマネージャ)×4
一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る

VxWorks/OS-9/QNXターゲット
    パラメータは環境変数として設定しておくことができます。
    VxWorksの場合、putEnV関数を、OS-9の場合はsetenv() を、QNXの場合はenv を使います。

    下記の文法で、大文字で指定します。

    APP[_CMPT][_No0x....]_ABCD....

    ここで
    APP = アプリケーション名 (ISACMG, ISAIXD, ISAVMなど)
    CMPT = コンポーネント名(オプション)
    No0x = スレーブ番号。16進数で記入します。おもにISAVM用です。
    ABCD = パラメータ名

    【例】
    putEnv("ISAVM_RTNREAD=0")
    putEnv("ISAVM_SRV_MAXSCAN=8")
    putEnv("ISAVM_SRV_000B_MAXSCAN=3")

一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る

IXLクライアントアプリケーション
    IXLを利用するクライアントアプリケーションの場合は、ixlInit()関数の引数"pfnParamExtract"で渡されるパラメータ展開用の関数で定義します。ISaGRAF PROターゲットがパラメータの情報を得る際に、渡されたdsysArgGetルーチンを利用できます。
    なお、コマンドライン解析をする場合は下記の関数を ixlInit()より先にコールするようにしてください。

    dsysInit(
      ISA_SYS_PINIT_IXLCLIENT,
      MyClientNum, /*In:クライアント番号(ixlInit()と同じ) */
      ldArgc, /*In: コマンドライン引数の数 */
      ppsArgv /*In: コマンドライン引数の配列 */
    )

一般的な規則 | ワークベンチ | WindowsNTターゲット/シミュレータ | VxWorks/OS-9ターゲット | IXLクライアント | ▲先頭に戻る
最終更新:
2008-07-31 10:32
改訂:
1.2
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

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

タグ