ライブラリ全般

トップページ

## ライブラリ全般

1. ファイル構成
2. WIN32 API関数呼び出し規約
3. マルチスレッド対応
4. 開発言語
5. 構造体メンバのアライメント
6. ヘッダファイル
7. Visual Basic 6.0でユーザ定義型の配列を使用する場合
8. データウィンドウでのCNCの軸数
9. プログラム番号8桁対応 (Series 15i, 16/18)
10. 関数仕様の違い (Series 15iと他のCNC(Series 16/18/21/0, Power Mate))
11. 関数仕様の違い (Series 15-B、Series 15i)
12. 関数仕様の違い (FS30iと他のCNC)
13. FS30i本来の仕様(32軸)とFS16i互換(8軸)仕様
14. HSSB版とEthernet版の相違点
15. FS30iのフォルダ名/ファイル名の指定方法について

1. ファイル構成

   > FWLIB32.DLL | : | CNC/PMCデータウィンドウ統轄ライブラリ
   > FWLIBE1.DLL | : | Ethernet用ライブラリ (*1)
   > FWLIB150.DLL | : | HSSB用機種別ライブラリ(15-B用)
   > FWLIB15i.DLL | : | HSSB用機種別ライブラリ(15i用)
   > FWLIB160.DLL | : | HSSB用機種別ライブラリ(16/18/21用)
   > FWLIB16W.DLL | : | HSSB用機種別ライブラリ(16i/18i-W用)
   > FWLIB0i.DLL | : | HSSB用機種別ライブラリ(0i-A用)
   > FWLIB0iB.DLL | : | HSSB用機種別ライブラリ(0i-B用)
   > FWLIBPM.DLL | : | HSSB用機種別ライブラリ(Power Mate-D/H用)
   > FWLIBPMi.DLL | : | HSSB用機種別ライブラリ(Power Mate i-D/H用)
   > FWLIB30i.DLL | : | HSSB用機種別ライブラリ(30i/31i/32i用)
   > FWLIB32.LIB | : | インポートライブラリ
   > FWLIB32.H | : | C/C++用関数のプロトタイプ宣言、構造体宣言、戻り値の定義用ヘッダファイル (*2)(*3)(*4)
   > FWLIB32.BAS | : | Visual Basic用関数のプロトタイプ宣言、構造体宣言、戻り値の宣言用ヘッダファイル (*2)(*3)(*4)

   > (*1)Ethernet用ライブラリは、0i-B/C, 160i/180i/210i, 150i, Power Mate i-D/H および、300i/310i/320i で共通に使用できます。

   > (*2)ヘッダファイルは、機種ごとにその内容が異なります。

   > (*3)機種ごとのヘッダファイルは、HSSB、Ethernet共通に使用できます。

   > (*4)Ethernet用のヘッダファイルは機種毎に区別ありません(定数を定義することによって機種ごとに使用できます)。

2. WIN32 API関数呼び出し規約

   > ライブラリの各関数は、WIN32 API呼び出し規約に従っています。従って、32ビット開発環境を持つVisual C++ や Visual Basicからの呼び出しが可能です。

3. マルチスレッド対応

   > Win32ではマルチスレッドがサポートされています。本ライブラリ中の関数は、複数のスレッドから同時に使用する事が可能です。単一の資源(CNC/PMCの内部メモリ等)への同時アクセスは、本ライブラリ中で排他制御が行われます。

4. 開発言語

   > データウィンドウライブラリは以下の開発言語で動作確認を行いました。

   > - Visual C++ 6.0
   > - Visual Basic 6.0

   > なお、データウィンドウライブラリは、Microsoft社の開発ツールを使って作成されています。その他のベンダから出ている開発ツールと共に使った場合の動作は保証されていません。

5. 構造体メンバのアライメント

   > 本ライブラリは、WIN32対応のため、「4バイトアライメント」で設計されています。

   > 4バイトアライメントでは、4バイト以上の長さのデータが4の倍数のアドレスに配置されます。例えば、

   >         struct {
   >             short   a1;     /* 2バイト長 */
   >             long    a2;     /* 4バイト長 */
   >         };

   > のような構造体では、a1とa2との間に2バイトの隙間が空く事になります。また、構造体のサイズは4の倍数に切り上げられます。

   > 4バイトアライメントに変更した結果、構造体のサイズやメンバのオフセットが変わりました。それゆえ、16ビット版データウィンドウライブラリの仕様説明(「MMC-IV取扱説明書」中の記述)に書いてある情報に従って、構造体のサイズや、メンバのオフセットを計算で求めているプログラムは正しく動作しません。構造体のサイズは"sizeof(構造体)"で求めて下さい。

   > ヘッダファイル FWLIB32.Hでは、"#pragma pack(4)"を使用して、構造体のアライメントを強制的に4バイトに指定しています。アプリケーションで、データウィンドウライブラリとのインタフェースのため、構造体をソース中で再定義する場合は、"#pragma pack(4)"を指定するか、コンパイラオプション"/Zp4"で4バイトアライメントを指定して下さい。

6. ヘッダファイル

   > 本ライブラリの各関数は"dllexport"を指定して作成してあります。C/C++言語からこれらの関数を使用するには"dllimport"を指定する必要があります。

   > ヘッダファイル FWLIB32.Hで、この指定を行っています。従って、ヘッダファイルをインクルードしないでアプリケーションを作成しようとした場合、リンクエラーになります。ヘッダファイルは、必ず使用して下さい。

7. Visual Basic 6.0でユーザ定義型の配列を使用する場合

   > Visual Basic 6.0でユーザ定義型の配列を使用する場合、次のように新たなユーザ定義型を定義してそのユーザ定義型を指定して下さい。

   > 例) cnc_rdprogdir3関数

   >     Type MyPrgDir3
   >         DirBuf(0 To 9) As PRGDIR3
   >     End Type' 読み取り個数=10の場合

   >     プログラム例
   >             以下のプログラムは全てのNCプログラムの登録状況を読みだし、その内容をファイルに出力します。

   >             Type MyPrgDir3
   >                 DirBuf(0 To 99) As PRGDIR3
   >             End Type'

   >             Dim ret As Integer
   >             Dim prg As MyPrgDir3
   >             Dim i As Integer
   >             Dim num As Integer
   >             Dim top As Long
   >             Dim dir3 As String

   >             Open "C:\\temp\\sample.dat" For Output As #1

   >             top = 0
   >             Do
   >                 num = 100
   >                 ret = cnc_rdprogdir3(h, 0, top, num, prg)
   >                 If ret = EW_NUMBER Then
   >                     Exit Do
   >                 ElseIf ret <> 0 Then
   >                     dir3 = "ERROR: " + Format(ret, "###0")
   >                     Print #1, dir3
   >                     Exit Do
   >                 End If

   >                 For i = 0 To num - 1
   >                     dir3 = "O" + Format(prg.DirBuf(i).lNumber, "######0")
   >                     Print #1, dir3
   >                 Next
   >                 top = prg.DirBuf(num - 1).lNumber + 1
   >             Loop While (num >= 100)

   >             Close #1

   > 次のような指定をした場合、正しく動作しません(データが取得できない。アプリケーションエラーが発生する。等の現象が発生する)ので注意して下さい。

   >     Dim prg(0 To 9) As PRGDIR3
   >     ret = cnc_rdprogdir3(h, 0, top, num, prg)

8. データウィンドウでのCNCの軸数

   > 最大軸数
   >   データウィンドウ用インタフェースの最大軸数
   > 制御軸数
   >   CNCシステムで現在制御している軸数

   > 最大軸数はヘッダファイルにてMAX_AXISと定義されています。この定数の値は使用するシステムによって異なります。必要に応じて、C/C++言語の場合、コンパイル時に-Dオプションにて、以下の文字定数を定義して下さい。

   > - Ethernet版用ヘッダファイルを使用する場合
   >   Ethernet用のヘッダファイルは、次の -Dオプションで、全ての機種(HSSB, Ethernet共)に対応できます。
   >   HSSB用に使用する場合は、"HSSB_LIB" も定義して下さい。

   >   機種 | 定数(-D)
   >   --- | ---
   >   FS16/18/21, 0i-B, 0i-C, 16i/18i-W, Power Mate i(8軸) | (なし)
   >   FS30i/31i/32i(32軸) | FS30D
   >   FS15-B/15i多軸(24軸) | M_AXIS2
   >   FS15-B多軸(15軸) | M_AXIS1
   >   FS15-B(10軸) | FS15BD
   >   FS15i(10軸) | FS15D
   >   FS0i-A(4軸) | FS0ID
   >   Power Mate(6軸) | PMD

   >   * FS15の場合は、シリーズにより、"FS15BD"(FS15-Bの場合)、"FS15D"(FS15iの場合) も定義して下さい。

   >       #if defined (FS30D)
   >       #define MAX_AXIS        32
   >       #elif defined (M_AXIS2)
   >       #define MAX_AXIS        24
   >       #elif defined(M_AXIS1)
   >       #define MAX_AXIS        15
   >       #elif defined (FS15BD)
   >       #define MAX_AXIS        10
   >       #elif defined (FS15D)
   >       #define MAX_AXIS        10
   >       #elif defined (FS0ID)
   >       #define MAX_AXIS        4
   >       #elif defined (PMD)
   >       #define MAX_AXIS        6
   >       #else
   >       #define MAX_AXIS        8
   >       #endif

   > - Series 30i/31i/32i用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(32軸) | (なし)

   >       #define MAX_AXIS        32

   > - Series 15-B用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(10軸) | (なし)
   >   多軸(15軸) | M_AXIS1
   >   多軸(24軸) | M_AXIS2

   >       #if defined(M_AXIS2)
   >       #define MAX_AXIS        24
   >       #elif defined(M_AXIS1)
   >       #define MAX_AXIS        15
   >       #else
   >       #define MAX_AXIS        10
   >       #endif

   > - Series 15i用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(10軸) | (なし)
   >   多軸(24軸) | M_AXIS2

   >       #if defined(M_AXIS2)
   >       #define MAX_AXIS        24
   >       #else
   >       #define MAX_AXIS        10
   >       #endif

   > - Series 16/18/21, 0i-B, 16i/18i-W, Power Mate i用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(8軸) | (なし)

   >       #define MAX_AXIS        8

   > - HSSB用Series 0i-A用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(4軸) | (なし)

   >       #define MAX_AXIS        4

   > - HSSB用Power Mate用ヘッダファイルを使用する場合

   >   システム | 定数(-D)
   >   --- | ---
   >   標準(6軸) | (なし)

   >       #define MAX_AXIS        6

   > Visual Basicの場合、Visual Basicのメニュー[ツール]→[オプション]→[詳細設定]→[条件付きコンパイル引数]にて、指定して下さい。

   > 制御軸数は、CNCシステム情報のリード(cnc_sysinfo)で取得できます。

9. プログラム番号8桁対応 (Series 15i, 16/18)

   > プログラム番号8桁対応の場合には、後述のウインドウ関数のプログラム番号に関連する引き数、及び構造体のメンバがshortからlongに変更されます。

   > C/C++言語の場合、コンパイル時に-Dオプションにて文字定数ONO8Dを定義することにより、プログラム番号8桁対応用に切り替わります。

   > > システム | 定数(-D)
   > > --- | ---
   > > プログラム番号4桁 | (なし)
   > > プログラム番号8桁 | ONO8D

   > Visual Basicの場合、プログラム番号8桁にするときは、Visual Basicのメニュー[ツール]→[オプション]→[詳細設定]→[条件付きコンパイル引数]にてONO8D=1と、指定して下さい。変数定義がない場合と、ONO8D=0を指定した場合はプログラム番号4桁となります。

   > プログラム番号8桁用としてコンパイルしたウインドウ関数は、CNC側がプログラム番号4桁の場合にも正常に動作します。逆にプログラム番号4桁用ウインドウ関数をCNC側がプログラム番号8桁の場合に使用するとエラー(EW_FUNC)となります。

10. 関数仕様の違い (Series 15iと他のCNC(Series 16/18/21/0, Power Mate))

    > Series 15i用のアプリケーションを作成する場合、コンパイルオプション(FS15D)を指定する必要があります。

    > C/C++言語の場合、コンパイル時に-Dオプションにて文字定数FS15Dを定義してください。Visual Basicの場合、VBのメニュー[ツール] → [オプション] → [詳細設定] → [条件付きコンパイル引数]にてFS15D=1と、指定して下さい。

    > また、Series 15iと他のCNC(Series 16/18/21/0, Power Mate)とでは、関数の仕様が異なります。主な相違点は次の通りです。

    > - 全軸指定のデータサイズ

    >   関数によっては、全軸指定のリード/ライトを行う場合、確保するデータのサイズが以下のように異なることがあります。

    >   > Series 16/18/21/0, Power Mate | : | 制御軸数分のサイズ
    >   > Series 15 | : | 最大制御軸数分のサイズ

    >   関係する関数は以下の通りです。

    >   機能 | 関数名
    >   --- | ---
    >   制御軸の絶対位置のリード | cnc_absolute, cnc_absolute2
    >   制御軸の機械位置のリード | cnc_machine
    >   制御軸の相対位置のリード | cnc_relative, cnc_relative2
    >   制御軸の残移動量のリード | cnc_distance
    >   制御軸のスキップ位置のリード | cnc_skip
    >   制御軸のサーボ遅れ量のリード | cnc_srvdelay
    >   制御軸の加減速遅れ量のリード | cnc_accdecdly
    >   制御軸の相対位置のオリジン/プリセット | cnc_wrrelpos
    >   ワーク座標系のプリセット | cnc_prstwkcd
    >   ワーク原点オフセット量のリード | cnc_rdzofs
    >   ワーク原点オフセット量のライト | cnc_wrzofs
    >   パラメータのリード | cnc_rdparam
    >   パラメータのライト | cnc_wrparam
    >   セッティングデータのリード | cnc_rdset
    >   セッティングデータのライト | cnc_wrset
    >   ダイアグノーズデータのリード | cnc_diagnoss

    > - プログラム番号桁数

    >   Series 15iでは、プログラム番号が必ず8桁となります。

    >   よってSeries 15iでは、必ずAPIを8桁対応に切り替える必要があります。ライブラリをプログラム番号8桁に対応させる方法については、「プログラム番号8桁対応」を参照して下さい。関係する関数は以下の通りです。

    >   機能 | 関数名
    >   --- | ---
    >   ダイナミックデータの一括リード | cnc_rddynamic
    >   指定プログラムのサーチ | cnc_search
    >   指定プログラムの削除 | cnc_delete
    >   プログラムディレクトリのリード(2) | cnc_rdprogdir2
    >   実行中のプログラム番号のリード | cnc_rdprgnum

    > - 工具番号桁数

    >   Series 15iでは、工具番号が必ず8桁となります。

    >   Series 15iでは、以下の表の工具番号4桁用の関数はサポートされていません。工具番号8桁用の関数を使用するようにしてください。

    >   機能 | 工具番号4桁用 | 工具番号8桁用
    >   --- | --- | ---
    >   工具寿命管理データ(工具グループ番号)のリード | cnc_rdgrpid | cnc_rdgrpid2
    >   工具寿命管理データ(工具長補正番号1)のリード | cnc_rd1length | cnc_rd1tlifedat2
    >   工具寿命管理データ(工具径補正番号1)のリード | cnc_rd1radius
    >   工具寿命管理データ(工具情報1)のリード | cnc_t1info
    >   工具寿命管理データ(工具データ1)のリード | cnc_rd1tlifedata
    >   工具寿命管理データ(工具データ1)のライト | cnc_wr1tlifedata | cnc_wr1tlifedat2

    > - 実数型パラメータ/実数型ダイアグノーズデータ

    >   Series 15iでは、パラメータ/ダイアグノーズデータに、実数型データが追加されています。

    >   以下の関数において、実数型データをサポートするために、Series 15iと他のCNCとでは、仕様が異なる部分があります。詳しくは各関数の説明を参照して下さい。

    >   機能 | 関数名
    >   --- | ---
    >   パラメータのリード | cnc_rdparam, cnc_rdparar
    >   パラメータのライト | cnc_wrparam, cnc_wrparas
    >   パラメータ情報のリード | cnc_rdparainfo
    >   セッティングデータのリード | cnc_rdset, cnc_rdsetr
    >   セッティングデータのライト | cnc_wrset, cnc_wrsets
    >   セッティングデータ情報のリード | cnc_rdsetinfo
    >   ダイアグノーズデータのリード | cnc_diagnoss, cnc_diagnosr
    >   ダイアグノーズデータ情報のリード | cnc_rddiaginfo

    > - アラームステータス

    >   他のCNCと異なり、Series 15iではアラームステータスが、"short"ではなく"long"になっています。

    >   Series 15iでも、以下のshortステータス用の関数を使用することはできますが、全てのアラームステータスを読み出すことはできません。できるだけlongステータス用の関数を使用するようにしてください。

    >   機能 | shortステータス用 | longステータス用
    >   --- | --- | ---
    >   ダイナミックデータの一括リード | cnc_rddynamic | cnc_rddynamic2
    >   アラームステータスのリード | cnc_alarm | cnc_alarm2

    >   アラームステータスの内容も、Series 15iと他のCNCとでは異なります。以下の関数を使用する際は注意してください。

    >   機能 | 関数名
    >   --- | ---
    >   ダイナミックデータの一括リード | cnc_rddynamic, cnc_rddynamic2
    >   操作履歴データのリード | cnc_rdophistry, cnc_rdophistry2
    >   アラーム履歴データのリード | cnc_rdalmhistry, cnc_rdalmhistry2
    >   アラームステータスのリード | cnc_alarm, cnc_alarm2
    >   アラーム情報のリード | cnc_rdalminfo
    >   アラームメッセージの一括リード | cnc_rdalmmsg

    > - 構造体

    >   以下の関数では、Series 15iと他のCNCとで、関数内で使用する構造体の内容が異なります。

    >   機能 | 関数名
    >   --- | ---
    >   CNCステータス情報のリード | cnc_statinfo
    >   アラーム情報のリード(※注) | cnc_rdalminfo
    >   オペレータメッセージのリード | cnc_rdopmsg
    >   ソフトウェアオペレーターズパネルの出力信号イメージのリード | cnc_rdopnlsgnl
    >   ソフトウェアオペレーターズパネルの信号のライト | cnc_wropnlsgnl

    >   (※注) Series 15が多軸(最大制御軸数=24軸)の場合のみ異なる。
    > - 使用可能な関数

    >   以下の機能において、Series 15iと他のCNCとでは、使用する関数が異なります。

    >   機能 | Series 16/18/21, Power Mate | Series 15
    >   --- | --- | ---
    >   操作履歴データのリード | cnc_rdophistry | cnc_rdophistry2
    >   アラーム履歴データのリード | cnc_rdalmhistry | cnc_rdalmhistry2
    >   波形診断パラメータのリード | cnc_rdwaveprm | cnc_rdwaveprm2
    >   波形診断パラメータのライト | cnc_wrwaveprm | cnc_wrwaveprm2
    >   モーダルデータのリード | cnc_modal | cnc_rdgcode, cnc_rdcommand

    >   以下の関数は、Series 15iでのみ使用可能です。

    >   - 3次元ハンドル送り関係
    >   - 高速高精度設定関係
    >   - フィクスチャオフセット関係
    >   - プログラム再開用シーケンス番号のサーチ(2)(cnc_rstrseqsrch2)
    >   - ブロック再開情報のリード(cnc_rdbrstrinfo)
    >   - 内部位置補正データ関係
    >   - CNCタイマデータのリード/ライト(cnc_rdtimer, cnc_wrtimer)

    >   以下の関数は、Series 15iではサポートされていません。

    >   - Pコードマクロ変数関係
    >   - Mコードグループデータ関係
    >   - 干渉チェックデータ関係
    >   - ワークシフト(T系)関係
    >   - B軸制御関係
    >   - 工具寿命管理(グループ任意番号、残量設定値)のリード/ライト
    >   - 外部オペレータメッセージ履歴データ関係
    >   - スピンドル調整(同期制御モード)用データのリード(cnc_rdposerrs2, cnc_rdsynerrsy)
    >   - パンチプレス/レーザ関係

11. 関数仕様の違い (Series 15-Bと Series15i)

    > Series 15-B と Series 15i では、ライブラリ関数の仕様が異なる部分がありますので、使用の際にはご注意下さい。主な相違点は次の通りです。

    > - プログラム番号桁数

    >   プログラム番号桁数に関して、ＣＮＣ側の仕様が異なります。

    >   > Series 15-B | : | プログラム番号４桁
    >   > Series 15i | : | プログラム番号８桁

    >   これにともない、Series 15iでは必ず APIを８桁対応に切り替える必要があります。ライブラリをプログラム番号８桁に対応させる方法について は、プログラム番号8桁対応 (Series 15i, 16/18)を参照して下さい。

    >   以下の関数が関係します。

    >   機能 | 関数名
    >   --- | ---
    >   ダイナミックデータの一括リード | cnc_rddynamic2
    >   ＮＣ指令データのリードの開始 | cnc_upstart
    >   指定プログラムのサーチ | cnc_search
    >   指定プログラムの削除 | cnc_delete
    >   プログラムディレクトリのリード | cnc_rdprogdir
    >   プログラムディレクトリのリード(2) | cnc_rdprogdir2
    >   実行中のプログラム番号のリード | cnc_rdprgnum

    > - 工具番号桁数

    >   工具番号桁数に関して、ＣＮＣ側の仕様が異なります。

    >   > Series 15-B | : | 工具番号４桁
    >   > Series 15i | : | 工具番号８桁

    >   これにともない、Series 15iでは以下の関数が使用できなくなりました。代用関数に関しては、後述します。

    >   機能 | 関数名
    >   --- | ---
    >   工具寿命管理データ(工具グループ番号)のリード | cnc_rdgrpid
    >   工具寿命管理データ(工具長補正番号１)のリード | cnc_rd1length
    >   工具寿命管理データ(工具径補正番号１)のリード | cnc_rd1radius
    >   工具寿命管理データ(工具情報１)のリード | cnc_t1info
    >   工具寿命管理データ(工具データ１)のリード | cnc_rd1tlifedata
    >   工具寿命管理データ(工具データ１)のライト | cnc_wr1tlifedata

    > - 実数形パラメータ／実数形ダイアグノーズデータ

    >   Series 15i では、実数形パラメータと実数形ダイアグノーズデータが新たに追加れました。これらのデータをリード／ライトするため、以下の関数のデータを格納する構造体に変更があります。

    >   機能 | 関数名
    >   --- | ---
    >   パラメータのリード | cnc_rdparam
    >   パラメータのライト | cnc_wrparam
    >   パラメータのリード(範囲指定) | cnc_rdparar
    >   パラメータのライト(複数個指定) | cnc_wrparas
    >   パラメータ情報のリード | cnc_rdparainfo
    >   セッティングデータのリード | cnc_rdset
    >   セッティングデータのライト | cnc_wrset
    >   セッティングデータのリード(範囲指定) | cnc_rdsetr
    >   セッティングデータのライト(複数個指定) | cnc_wrsets
    >   セッティングデータ情報のリード | cnc_rdsetinfo
    >   ダイアグノーズデータのリード | cnc_diagnoss
    >   ダイアグノーズデータのリード(範囲指定) | cnc_diagnosr
    >   ダイアグノーズデータ情報のリード | cnc_rddiaginfo

    >   Series 15-B で使用していた関数が Series 15i でも使用可能か、以下にまとめます。下記関数以外でも、Series 15-B と Series 15i とで仕様が異なる関数がありますので、詳しくは各関数の説明を参照して下さい。

    > - ＣＮＣ：制御軸／主軸関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_rddynamic | ダイナミックデータの一括リード | プログラム番号８桁にアプリケーションで対応する必要があります。また、本関数を使用することはできますが、Series 15i の全てのアラームステータスを読み出すことはできません。なるべく cnc_rddynamic2を使用して下さい。

    > - ＣＮＣ：プログラム関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_dncstart | 運転用ＮＣ指令データの出力の開始 | 使用できません。
    >   cnc_dnc | 運転用ＮＣ指令データの出力
    >   cnc_cdnc | 運転用ＮＣ指令データの出力(条件付)
    >   cnc_dncend | 運転用ＮＣ指令データの出力の終了
    >   cnc_rdmdipntr | ＭＤＩ運転用実行ポインタのリード
    >   cnc_wrmdipntr | ＭＤＩ運転用実行ポインタのライト
    >   cnc_upstart | ＮＣ指令データのリードの開始 | プログラム番号８桁にアプリケーションで対応する必要があります。
    >   cnc_search | 指定プログラムのサーチ
    >   cnc_delete | 指定プログラムの削除
    >   cnc_rdprogdir | プログラムディレクトリのリード
    >   cnc_rdprogdir2 | プログラムディレクトリのリード(2)
    >   cnc_rdprgnum | 実行中のプログラム番号のリード

    > - ＣＮＣ：ＮＣ用ファイルデータ関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_rdparam | パラメータのリード | 実数形パラメータを扱うためデータを格納する構造体に変更があります。
    >   cnc_wrparam | パラメータのライト
    >   cnc_rdparar | パラメータのリード(範囲指定)
    >   cnc_wrparas | パラメータのライト(複数個指定)
    >   cnc_rdparainfo | パラメータ情報のリード
    >   cnc_rdset | セッティングデータのリード
    >   cnc_wrset | セッティングデータのライト
    >   cnc_rdsetr | セッティングデータのリード(範囲指定)
    >   cnc_wrsets | セッティングデータのライト(複数個指定)
    >   cnc_rdsetinfo | セッティングデータ情報のリード
    >   cnc_rdhpccset | 高速高精度加工設定データのリード | 使用できません。パラメータのリード／ライト(cnc_rdparam, cnc_wrparam, cnc_rdparar, cnc_wrparas)で代用可能です。
    >   cnc_wrhpccset | 高速高精度加工設定データのライト
    >   cnc_rdhpcctupr | 高速高精度加工調整データ(パラメータ入力)のリード
    >   cnc_wrhpcctupr | 高速高精度加工調整データ(パラメータ入力)のライト
    >   cnc_rdhpcctuac | 高速高精度加工調整データ(加速度入力)のリード
    >   cnc_wrhpcctuac | 高速高精度加工調整データ(加速度入力)のライト

    > - ＣＮＣ：工具寿命管理データ関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_rdgrpid | 工具グループ番号のリード | 使用できません。cnc_rdgrpid2 を使用して下さい。
    >   cnc_rd1length | 工具長補正番号１のリード | 使用できません。cnc_rd1tlifedat2 で代用できます。
    >   cnc_rd1radius | 工具径補正番号１のリード | 使用できません。cnc_rd1tlifedat2 で代用できます。
    >   cnc_t1info | 工具情報１のリード | 使用できません。cnc_rd1tlifedat2 で代用できます。
    >   cnc_rd1tlifedata | 工具データ１のリード | 使用できません。cnc_rd1tlifedat2 を使用して下さい。
    >   cnc_wr1tlifedata | 工具データ１のライト | 使用できません。cnc_wr1tlifedat2 を使用して下さい。

    > - ＣＮＣ：履歴データ関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_rdophistry | 操作履歴データのリード | 使用できません。cnc_rdophistry2 を使用して下さい。
    >   cnc_rdalmhistry | アラーム履歴データのリード | 使用できません。cnc_rdalmhistry2 を使用して下さい。

    > - ＣＮＣ：サーボ／スピンドル関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_rdwaveprm | 波形診断パラメータのリード | 使用できません。cnc_rdwaveprm2 を使用して下さい。
    >   cnc_wrwaveprm | 波形診断パラメータのライト | 使用できません。cnc_wrwaveprm2 を使用して下さい。

    > - ＣＮＣ：その他

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   cnc_sysconfig | ＣＮＣシステム構成情報のリード | 使用できません。cnc_rdsyssoft を使用して下さい。
    >   cnc_rdmdlconfig | ＣＮＣモジュール構成情報のリード | 使用できません。cnc_rdmdlconfig2 を使用して下さい。
    >   cnc_alarm | アラームステータスのリード | 本関数を使用することはできますが、Series 150i の全てのアラームステータスを読み出すことはできません。なるべく cnc_alarm2 を使用して下さい。
    >   cnc_modal | モーダルデータのリード | 使用できません。nc_rdgcode, cnc_rdcommand を使用して下さい。
    >   cnc_diagnoss | ダイアグノーズデータのリード | 実数形ダイアグノーズデータを扱うため、データを格納する構造体に変更があります。
    >   cnc_diagnosr | ダイアグノーズデータのリード(範囲指定)
    >   cnc_rddiaginfo | ダイアグノーズデータ情報のリード

    > - ＰＭＣ関係

    >   関数名(15-B) | 機能 | Series 15i での対応
    >   --- | --- | ---
    >   pmc_rdmsg | ＰＭＣからＭＭＣへの通信−リード | 使用できません。
    >   pmc_wrmsg | ＭＭＣからＰＭＣへの通信−ライト
    >   pmc_crdmsg | ＰＭＣからＭＭＣへの通信−条件付リード
    >   pmc_cwrmsg | ＭＭＣからＰＭＣへの通信−条件付ライト

12. 関数仕様の違い (Series 30iと他のCNC)

    > 従来のライブラリ(Series 30i以外)とSeries 30i用のライブラリとでは、関数の仕様が異なる部分がありますので、使用の際にはご注意下さい。主な相違点は次の通りです。

    > - 全軸指定のデータサイズ

    >   関数によっては、全軸指定のリード/ライトを行う場合、確保するデータのサイズが以下のように異なることがあります。

    >   > 従来のライブラリ | : | 実制御軸数分のサイズ
    >   > Series 30i用ライブラリ | : | インタフェースの最大軸数

    >   最大軸数はヘッダファイルにて MAX_AXIS(=32) と定義されています。

    >   関係する関数は以下の通りです。

    >   機能 | 関数名
    >   --- | ---
    >   制御軸の絶対位置のリード | cnc_absolute, cnc_absolute2
    >   制御軸の機械位置のリード | cnc_machine
    >   制御軸の相対位置のリード | cnc_relative, cnc_relative2
    >   制御軸の残移動量のリード | cnc_distance
    >   制御軸のスキップ位置のリード | cnc_skip
    >   制御軸のサーボ遅れ量のリード | cnc_srvdelay
    >   制御軸の加減速遅れ量のリード | cnc_accdecdly
    >   制御軸の相対位置のオリジン/プリセット | cnc_wrrelpos
    >   ワーク座標系のプリセット | cnc_prstwkcd
    >   ワーク原点オフセット量のリード | cnc_rdzofs
    >   ワーク原点オフセット量のライト | cnc_wrzofs
    >   パラメータのリード | cnc_rdparam
    >   パラメータのライト | cnc_wrparam
    >   セッティングデータのリード | cnc_rdset
    >   セッティングデータのライト | cnc_wrset
    >   ダイアグノーズデータのリード | cnc_diagnoss

    > - 主軸関連のデータサイズ

    >   Series 30i では、最大主軸数が4から8に拡張されるのに伴い、主軸関連の関数において、確保するデータのサイズが異る場合があります。

    >   最大主軸数はヘッダファイルにて MAX_SPINDLES(=8) と定義されています。

    >   関係する関数は以下の通りです。

    >   機能 | 関数名
    >   --- | ---
    >   スピンドルの負荷情報のリード | cnc_rdspload
    >   スピンドルの最高回転数比のリード | cnc_rdspmaxrpm
    >   スピンドルのギヤ比のリード | cnc_rdspgear
    >   実主軸回転数(S)のリード2 | cnc_acts2
    >   スピンドル設定用運転モードのリード | cnc_rdopmode
    >   スピンドル調整用位置偏差Sのリード | cnc_rdposerrs
    >   スピンドルアラームのリード | cnc_rdspdlalm
    >   スピンドルモニタ用制御入力信号 | cnc_rdctrldi
    >   スピンドルモニタ用制御出力信号のリード | cnc_rdctrldo

    > - プログラム関連

    >   これまでのO番号による管理から、ファイル名/階層化ディレクトリによる管理となり、関数仕様が一新されました。

    > - 実数型パラメータ／実数型ダイアグノーズデータ

    >   Series 30iでは、実数型パラメータと実数型ダイアグノーズデータが新たに追加されました。これらのデータをリード／ライトするため、以下の関数のデータを格納する構造体に変更があります。

    >   関係する関数は以下の通りです。

    >   機能 | 関数名
    >   --- | ---
    >   パラメータのリード | cnc_rdparam
    >   パラメータのライト | cnc_wrparam
    >   パラメータのリード(範囲指定) | cnc_rdparar
    >   パラメータのライト(複数個指定) | cnc_wrparas
    >   パラメータ情報のリード | cnc_rdparainfo
    >   セッティングデータのリード | cnc_rdset
    >   セッティングデータのライト | cnc_wrset
    >   セッティングデータのリード(範囲指定) | cnc_rdsetr
    >   セッティングデータのライト(複数個指定) | cnc_wrsets
    >   セッティングデータ情報のリード | cnc_rdsetinfo
    >   ダイアグノーズデータのリード | cnc_diagnoss
    >   ダイアグノーズデータのリード(範囲指定) | cnc_diagnosr
    >   ダイアグノーズデータ情報のリード | cnc_rddiaginfo

    > - CNCアラーム

    >   Series 30iではアラームステータスは32ビットになります。cnc_alarm 関数はサポートされていますが、Series 30i の全てのアラームステータスを読み出すことはできません。なるべく cnc_alarm2 を使用して下さい。

    >   アラームステータスの内容も、FOCAS1とは異なります。

    >   また、cnc_rdalminfo 関数で使用する構造体内の軸情報を格納する領域が short から long に拡張されています。

    > - モーダル/指令値

    >   cnc_modal 関数はサポートされていますが、Series 30i の拡張された全てのモーダル/指令値の情報を読み出すことはできません。なるべく cnc_rdgocde, cnc_rdcommand を使用して下さい。

    >   cnc_modal 関数の読み出し対象のブロックで、次の次のブロック(=2)は指定できません。

    >   指令値（主にI,J,K）の12桁化に伴い、4バイト整数変換でオーバフローするデータは丸められ、小数点以下桁数がセットされます。このため、Fコード以外でも小数点以下桁数がセットされる場合があります。

    >   小数点以下桁数が負になる場合もあり、これに伴い小数点以下桁数を従来の符号なし3ビットから8ビット符号付整数としています。

13. FS30i本来の仕様(32軸)とFS16i互換(8軸)仕様

    > FS30i本来の仕様とFS16i互換仕様を、内部でアドバンスド/トラディショナルというモードで切り替えます。（仕様の切り替えは、cnc_setlibopt関数を使用します。）デフォルトは、アドバンスドモードです。

    > 各モードの仕様は、以下の様になります。

    > 項目 | アドバンスドモード | トラディショナルモード
    > --- | --- | ---
    > 最大制御軸数 | 32 | 8
    > 最大制御スピンドル数 | 8 | 4
    > 全軸指定のリード/ライト | 確保するバッファのサイズは常に最大制御軸数分のサイズ | FS16同様、範囲指定でなければ現在の制御軸数分のサイズ
    > パラメータ/ダイアグノーズの実数型 | 小数点付き8バイト | 4バイトの整数へ変換
    > アラームステータス | 32ビット | 16ビット

    > ここで言う軸数とは、軸関連データのアクセスに使用するバッファ数のことを示します。

    > トラディショナルモードは、以下の場合には使用できません。

    > - 系統内の制御軸数が8を超える場合
    > - 系統内の制御スピンドル数が4を超える場合

    > アドバンスドモードとトラディショナルモードでは、以下の様にデータ構造が異なります。

    > - パラメータ/ダイアグノーズ

    >   トラディショナルモードでは、実数型パラメータ/ダイアグノーズは最小設定単位を1桁目とした2ワード整数型に擬似的に扱われます。

    >       　　例）1.230の場合 : データ=1230、小数点以下桁数=3

    >   アドバンスドモードでは、FS30iのパラメータ/ダイアグノーズのサポートに伴い、ライブラリ関数を一部拡張します(太線部)。トラディショナルモードでは、この拡張部分が入出力されることはありません。

    >   cnc_rdparar, cnc_wrparas「構造体IODBPSDのtype」の説明から
    >     type : リードしたパラメータの属性が格納されます。

    >     0 | : | ビット型
    >     1 | : | バイト型
    >     2 | : | ワード型
    >     3 | : | 2ワード型
    >     4 | : | 実数型

    >   cnc_diagnosr「構造体ODBDGNのtype」の説明から
    >     type : パラメータの属性が格納されます。

    >     0 | : | バイト型
    >     1 | : | ワード型
    >     2 | : | 2ワード型
    >     3 | : | ビット型(8 bit)
    >     4 | : | ビット型(1 bit)
    >     5 | : | 実数型

    >   cnc_rdparainfo「構造体ODBPARAIFのprm_type」の説明から
    >     info[N].prm_type : パラメータの属性、以下の属性が設定されます。

    >     bit 0,1

    >     :

    >     型属性

    >     0 | : | ビット型
    >     1 | : | バイト型
    >     2 | : | ワード型
    >     3 | : | 2ワード、または実数型

    >     | : : |

    >     bit 12

    >     :

    >     型属性3のとき

    >     0 | : | 実数型以外
    >     1 | : | 実数型

    >   cnc_rddiaginfo「構造体ODBDIAGIFのdiag_type」の説明から
    >     info[N].prm_type : パラメータの属性、以下の属性が設定されます。

    >     bit 0,1

    >     :

    >     型属性(bit 3 = 0 のとき、有効)

    >     0 | : | ビット型 (8 bit)
    >     1 | : | バイト型
    >     2 | : | ワード型
    >     3 | : | 2ワード、または実数型

    >     | : : |

    >     bit 12

    >     :

    >     型属性3のとき

    >     0 | : | 実数型以外
    >     1 | : | 実数型

    > - アラームステータス

    >   16ビットアラームステータスで全てのアラーム情報を取得できるようにするために、トラディショナルモードでは、cnc_alarm2関数の32ビットアラームステータスの上位ワード(ビット16から31)のアラームが発生すると、cnc_alarm関数の16ビットアラームステータスのビット14が立ちます。アドバンスドモードでは、ビット14は予約です。

    >   #00 | : | パラメータ書込みスイッチオン | (SW)
    >   #01 | : | 電源断が必要なパラメータの入力 | (PW)
    >   |  | : |
    >   |  | : |
    >   #13 | : | 同期誤差過大エラー | (SN)
    >   #14 | : | その他(#16〜#31が発生) |
    >   #15 | : | 外部アラームメッセージ | (EX)

    >   このとき、cnc_rdalminfo関数のアラーム種類に14を指定すれば、ビット16〜31のアラーム情報が取得できます。

14. HSSB版とEthernet版の相違点

    > - 関数の戻り値に、EW_SOCKET、EW_PROTOCOL、EW_ALARM、EW_STOPの4つが追加されています。
    > - 以下の表のHSSBの関数はサポートされていません。表右の関数を使用するようにしてください。

    >   機能 | HSSB | Ethernet
    >   --- | --- | ---
    >   ライブラリハンドルの取得 | cnc_allclibhndl、cnc_allclibhndl2 | cnc_allclibhndl3
    >   登録用NC指令データの出力の開始 | cnc_dwnstart | cnc_dwnstart3
    >   登録用NC指令データの出力 | cnc_download、cnc_cdownload | cnc_download3
    >   登録用NC指令データの出力の終了 | cnc_dwnend | cnc_dwnend3
    >   運転用NC指令データの出力の開始 | cnc_dncstart | cnc_dncstart2
    >   運転用NC指令データの出力 | cnc_dnc、cnc_cdnc | cnc_dnc2
    >   運転用NC指令データの出力の終了 | cnc_dncend | cnc_dncend2
    >   NC指令データのリードの開始 | cnc_upstart | cnc_upstart3
    >   NC指令データのリード | cnc_upload、cnc_cupload | cnc_upload3
    >   NC指令データのリードの終了 | cnc_upend | cnc_upend3

    > - 以下の関数は、Ethernet版ではサポートされていません。
    >   - データサーバ, DNC1, DNC2, OSI-Ethernet関係
    >   - サーボ学習データ関係
    >   - ラダーとのメッセージ転送(pmc_rdmsg、pmc_wrmsg)
    >   - PROFIBUS-DP関係
    > - Ethernet版では、NCのBOOT/IPL機能(SRAMバックアップ/リストア、システムソフトの入れ替え等)はサポートされていません。
    > - Ethernet版では、ローダ制御ボード(5系統目)はアクセスできません(FS30iは除く)。
    > - 1つのCNCに対して、同時にアクセスできるアプリケーションの数には制限があります。詳しくは、「イーサネットボードとの通信」をご覧下さい。

15. FS30iのフォルダ名/ファイル名の指定方法について

    > FS30iでは、フォルダ名は "ドライブ名＋フォルダ文字列" のように指定します。

    > また、ファイル名は "ドライブ名＋フォルダ文字列＋ファイル名" のように指定します。

    > フォルダ名の場合には、文字列の最後に"/"(スラッシュ)を置いてください｡ "/"がない場合はファイル名とみなされます｡

    > 形式は以下のようになります。

    > - //ドライブ名/フォルダ文字列1/フォルダ文字列2/.../フォルダ文字列n/ファイル名

    > 例1) CNCメモリのフォルダ "USER/PATH1" の指定

    > - //CNC_MEM/USER/PATH1/

    > 例2) データサーバのフォルダ "NCDATA/MACHINE1" にある "PART1.PRG" ファイルの指定

    > - //DATA_SV/NCDATA/MACHINE1/PART1.PRG

    > なお、ドライブ名称は、cnc_rdpdf_drive関数で取得できます。

トップページ