ISaGRAF Ver.4/5では、I/Oデバイスはどのようにして追加するのですか?


1.ドライバの定義
    1. TDBuildユーティリティを起動します。TDBuildはワークベンチのインストールフォルダの "Bin" の下にインストールされているユーティリティです。
    2. 新しい定義を作成します。
    3. "Insert" で新しいI/Oデバイスを挿入します
    4. デバイスの名前を変更します。(例: DigitOutDev)
    5. ボードパラメータを定義します
    (例:パッケージ名:MyPack、ドライバ名:driver_name、ボードの方向:入力ボード、チャンネル数: 8チャンネル等)
    6. I/Oドライバのソースファイルの生成
    TDBuild の "Tools" - "Generate 'C' code" コマンドを実行すると、ソースファイルのテンプレートが生成されます。
    生成されるファイル名は、
      ドライバ名.c (例:driver_name.c)
      ドライバ名.h (例:driver_name.h)
    です。
    これらはターゲットのパッケージ用フォルダにコピーしておきます。
    7. ISaGRAF Ver.4/5のプロジェクトへインポートするためのテキストファイルを作成します
    TDBuild の "Build" - "Send to File" を実行してください。

    注意:インポート用のテキストファイルは、指定した1種類のターゲット用のファイルだけ作成されます。もし複数のターゲットにそのI/Oドライバの実装を行う場合は、ターゲット毎にファイルを作成してください。

2.I/Oドライバの実装
    "driver_name.c" ファイルで、以下の関数の中身をコーディングします。
    関数名 機能
    [パッケージ名]_[ドライバ名]_IosInit MyPack_driver_name_IosInit ドライバ全体の初期化
    [パッケージ名]_[ドライバ名]_IosExit MyPack_driver_name_IosExit ドライバ全体の終了
    [パッケージ名]_[ドライバ名]_[デバイス名]_IosOpen MyPack_driver_name_DigitOutDev_IosOpen デバイスのオープン
    [パッケージ名]_[ドライバ名]_[デバイス名]_IosClose MyPack_driver_name_DigitOutDev_IosClose デバイスのクローズ
    [パッケージ名]_[ドライバ名]_[デバイス名]_IosRead MyPack_driver_name_DigitOutDev_IosRead デバイスからの読み込み
    [パッケージ名]_[ドライバ名]_[デバイス名]_IosWrite MyPack_driver_name_DigitOutDev_IosWrite デバイスへの書き込み

    注意: CD-ROMからファイルをコピーした場合、全ファイルの属性は "read only" になっています。ファイルを編集する前に、属性の変更を行っておいてください。
    ●NT ターゲットの場合 (ダイナミックリンクライブラリ)
      Microsoft Visual C++ 6.0 の場合の作業手順の例です。
        1. 以下の場所にある ワークスペース CjIOSmpl.dswを開きます。(サンプルとして提供されています)\Target\Targets\WinNT_XXX\PkgSmpl\CjIOSmpl
        2. MS Visual C の "File View" ウィンドウでこのI/Oドライバをプロジェクトに追加します。
        CjIOSmpl.dswプロジェクトのウィンドウのワークスペース上で右クリックして、"ファイルをプロジェクトへ追加" を実行します。
        3. ドライバのソースファイルをコンパイルします。
        4. CjIOSmpl.dswをビルドします。
        5. 生成された dll ファイルをターゲットの "CMDS" フォルダへコピーします。

      注意:パッケージ名を変更する場合には以下の手順で行います。(例:MyPack)
        1. CjIOSmpl.c ファイルの名前を MyPack.c と変更する。
        2. "プロジェクト"-"設定"の、プロジェクト設定ダイアログの "リンク" で、出力ファイル名を変更する(CjIOSmpl.dllMyPack.dll)

    ●その他のOSの場合(通常のライブラリ)
      サンプルで提供されているパッケージを使用しても、自作しても、どちらでも可能です。
      サンプルパッケージを使用する場合は、"CjIOSmpl.mak" を使用してパッケージを生成します。ファイルは \Target\Io\Target_name\PkgSmpl\CjIOSmpl\ にあります。

      自作のパッケージを使用する場合は、\Target_name\IsaVM にある"package.h" に以下のようにパッケージ名を追加します。
      例えば、

      #define MyPack.h

      また、同じファイルに以下のような書式でパッケージの宣言を追加します:

      #define ISA_DECLARE_ALLPACKAGES ISA_DECLARE_MyPack

      注意: このパッケージの定義ファイル(MyPack.h)はTDBuildユーティリティで生成します。TDBuildの "Tools" - "Generate C code" メニューを実行してから、ソースを生成したいパッケージをリストから選択して下さい。
        1. Mypack.mak(または CjIOSmpl.mak)ファイルのエントリにこのI/Oドライバを追加します。
        2. LibMyPack.bat (または LibCjIOSmpl.bat)で新しいライブラリを生成します。例えば、VxWorksターゲットの場合、LIBMyPack.o
        3. ISaGRAF.mak ファイルに新しいライブラリ MyPack.o (VxWorksの場合) を追加します。
        4. MakIsa.bat で新しいVM(ISaGRAF Ver.4/5 バーチャルマシン)をリビルドします。 というファイルが作成されます。

3.ワークベンチ側の設定
      1. 新しいプロジェクトを作成し、リソースのプロパティでI/Oドライバの定義を追加するターゲットを選択します。
      2. "ファイル" - "インポート" - "PLC定義" を実行し、I/Oドライバ定義ファイル(TDBuildで生成したもの)を選択し、インポートします。
      3. I/O接続エディタで新しく追加したI/Oデバイスを使用します。
      4. プロジェクトをビルドします。
      5. I/Oデバイスを使用しているプロジェクトをターゲットにダウンロードします。

    パッケージのヘッダファイルはI/Oドライバ、C言語ファンクション、ファンクションブロック、C言語変換関数を一度に定義することができます。
    ダイナミックリンクライブラリを使用できないOSでは、各要素毎に新しい "package.h" ファイルをTDBuildで生成し、ターゲットへ実装を行います。

    ・TDBuildのウィンドウの左側の ツリーで、オブジェクトを選択します。
    ・"Generate "C" Code" を実行し、"Package" を選択/実行すると、ツリーで選択したC言語ファンクション、ファンクションブロック、I/Oドライバの宣言を包括したヘッダファイルが生成されます。 (下図参照)

     
最終更新:
2009-03-19 16:21
改訂:
1.2
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.