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用のヘッダファイルは機種毎に区別ありません(定数を定義することによって機種ごとに使用できます)。
ライブラリの各関数は、WIN32 API呼び出し規約に従っています。従って、32ビット開発環境を持つVisual C++ や Visual Basicからの呼び出しが可能です。
Win32ではマルチスレッドがサポートされています。本ライブラリ中の関数は、複数のスレッドから同時に使用する事が可能です。単一の資源(CNC/PMCの内部メモリ等)への同時アクセスは、本ライブラリ中で排他制御が行われます。
データウィンドウライブラリは以下の開発言語で動作確認を行いました。
- Visual C++ 6.0
- Visual Basic 6.0
なお、データウィンドウライブラリは、Microsoft社の開発ツールを使って作成されています。その他のベンダから出ている開発ツールと共に使った場合の動作は保証されていません。
本ライブラリは、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バイトアライメントを指定して下さい。
本ライブラリの各関数は"dllexport"を指定して作成してあります。C/C++言語からこれらの関数を使用するには"dllimport"を指定する必要があります。
ヘッダファイル FWLIB32.Hで、この指定を行っています。従って、ヘッダファイルをインクルードしないでアプリケーションを作成しようとした場合、リンクエラーになります。ヘッダファイルは、必ず使用して下さい。
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)
- 最大軸数
- データウィンドウ用インタフェースの最大軸数
- 制御軸数
- 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)で取得できます。
プログラム番号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)となります。
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とで、関数内で使用する構造体の内容が異なります。
(※注) Series 15が多軸(最大制御軸数=24軸)の場合のみ異なる。
機能 関数名 CNCステータス情報のリード cnc_statinfo アラーム情報のリード(※注) cnc_rdalminfo オペレータメッセージのリード cnc_rdopmsg ソフトウェアオペレーターズパネルの出力信号イメージのリード cnc_rdopnlsgnl ソフトウェアオペレーターズパネルの信号のライト cnc_wropnlsgnl - 使用可能な関数
以下の機能において、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)
- パンチプレス/レーザ関係
Series 15-B と Series 15i では、ライブラリ関数の仕様が異なる部分がありますので、使用の際にはご注意下さい。主な相違点は次の通りです。
- プログラム番号桁数
プログラム番号桁数に関して、CNC側の仕様が異なります。
Series 15-B : プログラム番号4桁 Series 15i : プログラム番号8桁 これにともない、Series 15iでは必ず APIを8桁対応に切り替える必要があります。ライブラリをプログラム番号8桁に対応させる方法について は、プログラム番号8桁対応 (Series 15i, 16/18)を参照して下さい。
以下の関数が関係します。
機能 関数名 ダイナミックデータの一括リード cnc_rddynamic2 NC指令データのリードの開始 cnc_upstart 指定プログラムのサーチ cnc_search 指定プログラムの削除 cnc_delete プログラムディレクトリのリード cnc_rdprogdir プログラムディレクトリのリード(2) cnc_rdprogdir2 実行中のプログラム番号のリード cnc_rdprgnum - 工具番号桁数
工具番号桁数に関して、CNC側の仕様が異なります。
Series 15-B : 工具番号4桁 Series 15i : 工具番号8桁 これにともない、Series 15iでは以下の関数が使用できなくなりました。代用関数に関しては、後述します。
機能 関数名 工具寿命管理データ(工具グループ番号)のリード cnc_rdgrpid 工具寿命管理データ(工具長補正番号1)のリード cnc_rd1length 工具寿命管理データ(工具径補正番号1)のリード cnc_rd1radius 工具寿命管理データ(工具情報1)のリード cnc_t1info 工具寿命管理データ(工具データ1)のリード cnc_rd1tlifedata 工具寿命管理データ(工具データ1)のライト 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 とで仕様が異なる関数がありますので、詳しくは各関数の説明を参照して下さい。
- CNC:制御軸/主軸関係
関数名(15-B) 機能 Series 15i での対応 cnc_rddynamic ダイナミックデータの一括リード プログラム番号8桁にアプリケーションで対応する必要があります。また、本関数を使用することはできますが、Series 15i の全てのアラームステータスを読み出すことはできません。なるべく cnc_rddynamic2を使用して下さい。
- CNC:プログラム関係
関数名(15-B) 機能 Series 15i での対応 cnc_dncstart 運転用NC指令データの出力の開始 使用できません。 cnc_dnc 運転用NC指令データの出力 cnc_cdnc 運転用NC指令データの出力(条件付) cnc_dncend 運転用NC指令データの出力の終了 cnc_rdmdipntr MDI運転用実行ポインタのリード cnc_wrmdipntr MDI運転用実行ポインタのライト cnc_upstart NC指令データのリードの開始 プログラム番号8桁にアプリケーションで対応する必要があります。 cnc_search 指定プログラムのサーチ cnc_delete 指定プログラムの削除 cnc_rdprogdir プログラムディレクトリのリード cnc_rdprogdir2 プログラムディレクトリのリード(2) cnc_rdprgnum 実行中のプログラム番号のリード
- CNC:NC用ファイルデータ関係
関数名(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 高速高精度加工調整データ(加速度入力)のライト
- CNC:工具寿命管理データ関係
関数名(15-B) 機能 Series 15i での対応 cnc_rdgrpid 工具グループ番号のリード 使用できません。cnc_rdgrpid2 を使用して下さい。 cnc_rd1length 工具長補正番号1のリード 使用できません。cnc_rd1tlifedat2 で代用できます。 cnc_rd1radius 工具径補正番号1のリード 使用できません。cnc_rd1tlifedat2 で代用できます。 cnc_t1info 工具情報1のリード 使用できません。cnc_rd1tlifedat2 で代用できます。 cnc_rd1tlifedata 工具データ1のリード 使用できません。cnc_rd1tlifedat2 を使用して下さい。 cnc_wr1tlifedata 工具データ1のライト 使用できません。cnc_wr1tlifedat2 を使用して下さい。
- CNC:履歴データ関係
関数名(15-B) 機能 Series 15i での対応 cnc_rdophistry 操作履歴データのリード 使用できません。cnc_rdophistry2 を使用して下さい。 cnc_rdalmhistry アラーム履歴データのリード 使用できません。cnc_rdalmhistry2 を使用して下さい。
- CNC:サーボ/スピンドル関係
関数名(15-B) 機能 Series 15i での対応 cnc_rdwaveprm 波形診断パラメータのリード 使用できません。cnc_rdwaveprm2 を使用して下さい。 cnc_wrwaveprm 波形診断パラメータのライト 使用できません。cnc_wrwaveprm2 を使用して下さい。
- CNC:その他
関数名(15-B) 機能 Series 15i での対応 cnc_sysconfig CNCシステム構成情報のリード 使用できません。cnc_rdsyssoft を使用して下さい。 cnc_rdmdlconfig CNCモジュール構成情報のリード 使用できません。cnc_rdmdlconfig2 を使用して下さい。 cnc_alarm アラームステータスのリード 本関数を使用することはできますが、Series 150i の全てのアラームステータスを読み出すことはできません。なるべく cnc_alarm2 を使用して下さい。 cnc_modal モーダルデータのリード 使用できません。nc_rdgcode, cnc_rdcommand を使用して下さい。 cnc_diagnoss ダイアグノーズデータのリード 実数形ダイアグノーズデータを扱うため、データを格納する構造体に変更があります。 cnc_diagnosr ダイアグノーズデータのリード(範囲指定) cnc_rddiaginfo ダイアグノーズデータ情報のリード
- PMC関係
関数名(15-B) 機能 Series 15i での対応 pmc_rdmsg PMCからMMCへの通信−リード 使用できません。 pmc_wrmsg MMCからPMCへの通信−ライト pmc_crdmsg PMCからMMCへの通信−条件付リード pmc_cwrmsg MMCからPMCへの通信−条件付ライト - 関数仕様の違い (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ビット符号付整数としています。
![]()
- 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のアラーム情報が取得できます。
- 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に対して、同時にアクセスできるアプリケーションの数には制限があります。詳しくは、「イーサネットボードとの通信」をご覧下さい。
- 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関数で取得できます。