C言語ファンクションを作る手順


バージョンによって手順が異なります。

ISaGRAF  Ver.4/5の場合
定義

    まず、ワークベンチに付属するTDBuild.exe(Target Definition Builder)を使用します。これはC言語ファンクション/ファンクションブロック/変換関数をはじめ、I/Oボードやターゲットの構成を定義しするためのツールです。
    TDBuildを使えば、必要なCソースファイルやワークベンチ用の定義ファイルを簡単に生成することができます。
      1. TDBuildを起動します。TDBuildはワークベンチのインストールディレクトリの "Bin" フォルダにあります。
      2. 新しいTDBuildの定義ファイル(*.tdb)を作成します。
      3. "Insert" メニューを実行し、"C function"を新規作成します。
      4. 追加するファンクションの名前を入力します。(例:MyFCT)
      5. 入力パラメータ/出力パラメータ/ヘルプコメント等を定義します。
      6. "Tools"-"Generate 'C' code" メニューを実行し、ソースファイル("*.c") とヘッダファイル("*.h") ファイルを生成します。
      このファイルを、ターゲットのパッケージディレクトリに直接生成するか、後でそこにコピーしてください。
      7. "Build"-"Send to File" メニューを実行し、ISaGRAF Ver.4/5プロジェクトにインポートする定義ファイル(*.txt)を生成します。

    注意:生成された定義ファイルは、1つのターゲットにしか適用できません。ファンクションを複数のターゲット上で使用する必要がある場合は、ターゲット毎に定義ファイルを生成してください。

ワークベンチ側での作業

      1. 新しいプロジェクトを作成します。
      2. 「リソースのプロパティ」でC言語ファンクションの定義を追加するターゲットを選択します。
      3. "ファイル" - "インポート" - "PLC定義" を実行し、TDBuildで生成した定義ファイルを選択します。
      4. IECプログラムから定義したCファンクションをコールします。
      5. プロジェクトをビルドします。
      6. Cファンクションを使用しているプロジェクトをターゲットにダウンロードします。

    C言語ファンクションブロック/変換ファンクションの実装手順も同じです。

ターゲット側での作業

    生成されたCソースファイル内の、以下の関数をコーディングします。
    void [ファンクション名]UsfCall(
    void* pvBfData, /* In: データ */
    strParamVa* InParam, /* In: 入力パラータ */
    uchar cuNbInParam, /* In: 入力パラメータの数 */
    strParamVa* OutParam /* In: 出力パラメータ */
    )

    注意: ISaGRAF Ver.4/5開発ツールキットのCD-ROMからこのファイルをコピーして使う場合、ファイルの属性はすべて書きこみ禁止になっています。ファイルの操作をする前に、属性を変更しておいてください。

    コンパイルやリンクの手順はターゲットの種類によって異なります。

    WindowsNTターゲットのコンパイル手順
      WindowsNTではダイナミックリンクライブラリ(DLL)を利用できるため、ターゲット全体をリンクしなおす必要はありません。
      以下はMicrosoft Visual C++ 6.0 でコンパイルする場合の作業手順の例です。
        1. 以下の場所にある ワークスペースCjCSmpl.dswを開きます。(サンプルとして提供されています)
        \Target\Targets\WinNT_XXX\PkgSmpl\CjCSmpl
        2. プロジェクトのウィンドウの"File View"でこのCファンクションをプロジェクトに追加します。CjCSmpl.dswプロジェクトのウィンドウのワークスペース上で右クリックして、"ファイルをプロジェクトへ追加" を実行します。
        3. ファンクションをコンパイルします。
        4. CjCSmpl.dllをビルドします。
        5. 生成された dll ファイルをターゲットの "CMDS" フォルダにコピーします。

      注意:パッケージ名を変更する場合には(例:MyPack)、CjCSmpl.c ファイルの名前をMyPack.c と変更し、 "プロジェクト"-"設定"の、プロジェクト設定ダイアログの "リンク" で、コンパイルパラメータのDLL名(出力ファイル名)を変更してください。(CjCSmpl.dllMyPack.dll)

    一般的なターゲットのコンパイル手順
      サンプルで提供されているパッケージを使用しても、自作しても、どちらでも実装が可能です。
      • サンプルパッケージを使用する場合は、"CjCSmpl.mak" を使用してパッケージを生成します。
        ファイルは\Target\Targets\Target_name\PkgSmpl\CjCSmpl\ にあります。自作のパッケージを使用する場合は、\Target_name\IsaVMにある"package.h"に以下のようにパッケージ名を追加します。
        #define MyPack.h

        また、同じファイルに以下のような書式でパッケージの宣言を追加します。
        #define ISA_DECLARE_ALLPACKAGES \
        ISA_DECLARE_MyPack
        1. C言語ファンクションのライブラリを生成します。
        まず、メイクファイルMypack.mak(または CjCSmpl.mak)のエントリにこのファンクションを追加します。
        2. コンパイルとリンクをおこないます。サンプルのリンク用バッチファイルとしてLibMyPack.bat(またはLibCjCSmpl.bat)が付属します。
        VxWorksターゲットの場合、LIB\MyPack.o というライブラリファイルが作成されます。
        3. ターゲットを生成します。
        まず、メイクファイルISaGRAF.makに新しいライブラリMyPack.o(前述の例の場合)を追加します。
        4. リンクを行います。サンプルのリンク用バッチファイルとしてMakIsa.batが付属します。
最終更新:
2008-07-31 09:30
改訂:
1.4
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.