-
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のプロジェクトへインポートするためのテキストファイルを作成します。
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.dll → MyPack.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 バーチャルマシン)をリビルドします。 というファイルが作成されます。
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ドライバの宣言を包括したヘッダファイルが生成されます。 (下図参照)