soft...

173
Soft Servo SYSTEMS, INC C/C++/Visual Basic 用 SMP モーション及びロジック API(MAPI) リファレンスマニュアル 第 1.53 版 C 2010 ソフトサーボシステムズ株式会社

Upload: others

Post on 25-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

Soft Servo SYSTEMS, INC

C/C++/Visual Basic 用 SMP モーション及びロジック API(MAPI)

リファレンスマニュアル

第 1.53 版

○C 2010 ソフトサーボシステムズ株式会社

Page 2: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

C/C++/VB 用 SMP モーション及びロジック API (MAPI)リファレンスマニュアル 目次

Soft Servo SYSTEMS, INC

目次

第 1 章: SMPモーションとロジックAPIの概要 .................................................................................. 1-1

1.1 概要 ....................................................................................................................................... 1-1 1.2 MDKとサンプルコードの使い方 ............................................................................................... 1-1 1.3 インターフェースシステム ......................................................................................................... 1-1 1.4 APIの概略 .............................................................................................................................. 1-2 1.5 SMPパラメータとストラクチャー変数.......................................................................................... 1-9 1.6 SMPパラメータとストラクチャー変数........................................................................................ 1-12

第 2 章: デバイス操作コマンド用API .............................................................................................. 2-1

2.1 sssOpenDevice ........................................................................................................................ 2-1 2.2 sssCloseDevice ........................................................................................................................ 2-2

第 3 章: システム初期化コマンド用API........................................................................................... 3-1

3.1 sssInstallDrivers ...................................................................................................................... 3-1 表 3-2:sssInstallDrivers (2/3)......................................................................................................... 3-2 3.2 sssOpenDrivers........................................................................................................................ 3-4 3.3 sssRemoveDrivers ................................................................................................................... 3-5 3.4 sssStartInterrupt ....................................................................................................................... 3-6 3.5 sssStopInterrupt ....................................................................................................................... 3-7

第 4 章: パラメータ設定コマンド用API............................................................................................ 4-1

4.1 sssLoadParameters ................................................................................................................... 4-1 4.2 sssSaveParameters ................................................................................................................... 4-3 4.2 sssSaveParameters (続き) ........................................................................................................ 4-4 4.3 sssSendParameters ................................................................................................................... 4-5 4.3sssSendParameters (continued) .................................................................................................. 4-6 4.4 sssLoadAbsEncParameters ....................................................................................................... 4-7 4.5 sssSaveAbsEncParameters........................................................................................................ 4-8 4.6 sssSetPitch .............................................................................................................................. 4-9 4.7 sssSetPitchPlus ...................................................................................................................... 4-10 4.8 sssSetStraightness .................................................................................................................. 4-11

第 5 章: システムコントロールコマンド用API ................................................................................... 5-1

5.1 sssSetEMGStopOn................................................................................................................... 5-1 5.2 sssSetEMGStopReset ............................................................................................................... 5-2 5.3 sssSetServoStatus..................................................................................................................... 5-3 5.4 sssSetNcMode ......................................................................................................................... 5-4 5.5 sssSetJogFeedrate .................................................................................................................... 5-5 5.5sssSetJogFeedrate ..................................................................................................................... 5-6 5.6 SssSetOverride ........................................................................................................................ 5-7 5.7 sssSetOverrideRpd ................................................................................................................... 5-8 5.8 sssSetOvrdLock ....................................................................................................................... 5-9 5.9 sssSetInterlock....................................................................................................................... 5-10 5.9 sssSetInterlock(続き).............................................................................................................. 5-11 5.10 sssSetMachinelock ............................................................................................................... 5-12 5.10 sssSetMachinelock(continued) .............................................................................................. 5-13 5.11 sssReset............................................................................................................................... 5-14

i

Page 3: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

C/C++/VB 用 SMP モーション及びロジック API (MAPI)リファレンスマニュアル 目次

Soft Servo SYSTEMS, INC

5.12 sssPresetWorkCoordinate...................................................................................................... 5-15 5.12 sssPresetWorkCoordinate(続き) ........................................................................................... 5-16 5.13 sssSelectWorkCoordinate...................................................................................................... 5-17 5.14 sssSetWorkOffset ................................................................................................................. 5-18 5.14 sssSetWorkOffset(続き) ........................................................................................................ 5-19 5.15 sssSetToolOffset .................................................................................................................. 5-20 5.15 sssSetToolOffset(続き) ........................................................................................................ 5-21 5.16 sssSetAxisSymbols .............................................................................................................. 5-22 5.17 sssSetMSTBLock................................................................................................................. 5-23

第 6 章: マニュアルオペレーションコマンド用API ............................................................................ 6-1

6.1 sssJogStart............................................................................................................................... 6-1 6.2 sssJogStop............................................................................................................................... 6-2 6.3 sssRapidStart ........................................................................................................................... 6-3 6.4 sssRapidStop ........................................................................................................................... 6-4 6.5 sssPosStart .............................................................................................................................. 6-5 6.5sssPosStart (続き) .................................................................................................................... 6-6 6.5 sssPosStart (続き) ................................................................................................................... 6-9 6.6 sssPosStop............................................................................................................................. 6-10 6.7 sssPosContinue ...................................................................................................................... 6-11 6.8 sssPosCancel ......................................................................................................................... 6-12 6.9 sssPosSetBackupData............................................................................................................. 6-13 6.10 sssPosStart2......................................................................................................................... 6-14 6.11 sssHomeStart ....................................................................................................................... 6-15 6.12 sssHomeStop ....................................................................................................................... 6-16 6.13 sssHndwlStart ...................................................................................................................... 6-17 6.14 SssHndwlStop...................................................................................................................... 6-18

第 7 章: 自動オペレーションコマンド用API..................................................................................... 7-1

7.1 sssAutoOpenFile...................................................................................................................... 7-1 7.2 sssAutoOpenFile2 .................................................................................................................... 7-2 7.3 sssAutoStart ............................................................................................................................ 7-3 7.4 sssAutoStop............................................................................................................................. 7-5 7.5 sssAutoRewind ........................................................................................................................ 7-6 7.6 sssAutoReset ........................................................................................................................... 7-7 7.7 sssSetSingleBlockMode ........................................................................................................... 7-8 7.8 sssSetDryRunMode.................................................................................................................. 7-9 7.9 sssSetOptStopMode ............................................................................................................... 7-10 7.10 sssSetOptSkipMode ............................................................................................................. 7-11 7.11 sssHndwlIntStart .................................................................................................................. 7-12 7.12 sssHndwlIntStop .................................................................................................................. 7-13 7.13 sssSetAuxCodeFinish ........................................................................................................... 7-14 7.14 sssSetBlockSearch ............................................................................................................... 7-15 7.15 sssGetBlockSearch ............................................................................................................... 7-17 7.16 sssBlockSearchStop ............................................................................................................. 7-19 7.17 sssMoveToBlock.................................................................................................................. 7-20

第 8 章: テスト及びサンプリングコマンド用API ................................................................................ 8-1

8.1 sssTestVoltageStart................................................................................................................... 8-1 8.2 sssTestVoltageStop................................................................................................................... 8-2

ii

Page 4: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

C/C++/VB 用 SMP モーション及びロジック API (MAPI)リファレンスマニュアル 目次

Soft Servo SYSTEMS, INC

8.3 sssTestPosStart ........................................................................................................................ 8-3 8.4 sssTestPosStop......................................................................................................................... 8-4 8.5 sssSampleStart......................................................................................................................... 8-5 8.6 sssSampleStop ......................................................................................................................... 8-6 8.7 sssSaveSampledData ................................................................................................................ 8-7

第 9 章: PLCコマンド用API PLC Commands ................................................................................ 9-1

9.1 sssPLC_Start ........................................................................................................................... 9-1 9.2 sssPLC_Stop ........................................................................................................................... 9-2 9.3 sssSetPLCFBit......................................................................................................................... 9-3 9.4 sssSetPLCFByte ...................................................................................................................... 9-4 9.5 sssSetPLCFWord ..................................................................................................................... 9-5 9.6 sssSetPLCFDword ................................................................................................................... 9-6 9.7 sssSetPLCRBit ........................................................................................................................ 9-7 9.8 sssSetPLCRByte ...................................................................................................................... 9-8 9.9 sssSetPLCRWord ..................................................................................................................... 9-9 9.10 sssSetPLCRDword ............................................................................................................... 9-10 9.11 sssSetPLCRData .................................................................................................................. 9-11 9.12 sssSetPLCDBit .................................................................................................................... 9-12 9.13 sssSetPLCDByte .................................................................................................................. 9-13 9.14 sssSetPLCDWord................................................................................................................. 9-14 9.15 sssSetPLCDDword............................................................................................................... 9-15 9.16 sssSetPLCDData .................................................................................................................. 9-16

第 10 章: I/Oコマンド用API ......................................................................................................... 10-1

10.1 sssSetDout........................................................................................................................... 10-1 10.2 sssSetDoutBit ...................................................................................................................... 10-3 10.3 sssToggleDoutBit ................................................................................................................. 10-4

第 11 章: SMPリアルタイムモジュール情報用API ......................................................................... 11-1

11.1 sssGetStatus......................................................................................................................... 11-1 11.2 sssGetDriverVersion ............................................................................................................. 11-9 11.3 sssGetDriverType ............................................................................................................... 11-10 11.3 sssGetDriverType (続き) .....................................................................................................11-11 11.4 sssGetDriverOption ............................................................................................................ 11-12 11.5 sssGetBlockErrMsg............................................................................................................ 11-13

第 12 章: ユーザーブロックデータバッファ用API........................................................................... 12-1

12.1 sssResetBlockBuf ................................................................................................................ 12-1 12.2 sssAddOneBlock.................................................................................................................. 12-2 12.3 sssGetBufStatus ................................................................................................................... 12-4

第 13 章: 特殊機能用API ........................................................................................................... 13-1

13.1 sssSetSynControlMode......................................................................................................... 13-1

第 14 章: マクロ変数用API.......................................................................................................... 14-1

14.1 sssGetLocalMacroVar........................................................................................................... 14-1 14.2 sssGetGlobalMacroVar ......................................................................................................... 14-2 14.3 sssGetPermanentMacroVar ................................................................................................... 14-3 14.4 sssSetPermanentMacroVar .................................................................................................... 14-4

iii

Page 5: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

C/C++/VB 用 SMP モーション及びロジック API (MAPI)リファレンスマニュアル 目次

iv

Soft Servo SYSTEMS, INC

第 15 章: MECHATROLINKサーボドライバ用API ...................................................................... 15-1

15.1 sssLoadYSKDrvParameters .................................................................................................. 15-1 15.2 sssSaveYSKDrvParameters................................................................................................... 15-2 15.3 sssLoadYSKDrvID .............................................................................................................. 15-3 15.4 sssSetYSKDrvIni ................................................................................................................. 15-4 15.5 sssGetYSKDrvAlarm ........................................................................................................... 15-5 15.6 sssClearYSKDrvAlarm......................................................................................................... 15-6

第 16 章: Panasonic MINAS A4Nサーボドライバ用API ................................................................ 16-1

16.1 sssLoadA4NDrvParameters .................................................................................................. 16-1 16.2 sssSaveA4NDrvParameters................................................................................................... 16-2 16.3 sssLoadA4NDrvID............................................................................................................... 16-3 16.4 sssGetA4NDrvAlarm ........................................................................................................... 16-4 16.5 sssClearA4NDrvAlarm......................................................................................................... 16-5

Page 6: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

第1章: SMPモーションとロジックAPIの概要

1.1 概要

ソフトサーボシステムズ株式会社はSMPアプリケーションを作成(カスタマイズ)してSMPリアルタイムモジ

ュール(SMPモーションエンジン、SMPモーションパーサー、ラダーワークスPLCエンジン)をGUIから利

用できるようにするための専用アプリケーションプログラムインターフェース(API)を提供しています。アプリ

ケーション開発には C++または Visual Basic6.0 を使用することができます。 ※注:ここで言う API 機能とは、.NET 2.0 と unmanaged (legacy) C++の C#シンタクスのものです。これらの

API の VB.NET バージョンや managed C++(.NET)バージョンは、多少異なる場合があります。また、Visual

Basic 6.0 バージョンも、legacy C++とは多少異なる場合があります。

1.2 MDKとサンプルコードの使い方

ここでは SMP モーションとロジック API について詳しく説明します。このマニュアルは『SMP Motion

Development Kit (MDK)プログラミングマニュアル』と共同して使用すると良いでしょう。SMP アプリケーショ

ンをカスタマイズするためには非常に重要な内容です。 『SMP Motion Development Kit (MDK)プログラミングマニュアル』の“第8章 MDK による SMP アプリケーショ

ンの構築”に下記の説明があります。 ・ SMP モーションとロジック API 機能呼び出しと required delay (遅れが要求された場合、要求された遅

れの量と遅れの作り方) ・ SMP モーションとロジック API 機能呼び出しの指令(PLC とパラメータの機能は決まった指令で呼び出

されなければならない) ・ カスタマイズされた SMP プログラムは、SMP コンソールと同じパラメータを確実に使用している ・ MDK を通して、特定の PLC ビットにアクセスする ・ スレーブアクシスとの同期的コントロール ・ MDK の新しいバージョンへの SMP アプリケーションをアップデート ・ SMP アプリケーションをテスト “第9章サンプルコード”にも注目してください。この章は、PLC 機能と PLC サンプルコードに関係している

ので特に重要です。

1.3 インターフェースシステム

API は、VersioBusII、MECHATROLONK、Panasonic RTEX と IEEE(Soft Wire)などそれぞれに専用のもの

があります。 ※ 注:SSCNET インターフェースシステムの場合は、全てのパラメータが SSCET.ini file によってスタートア

ップにセットされているため、専用の API はありません。

1-1

Page 7: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

1.4 APIの概略

下記の表は、対応する SMP モーションとロジック API を要約しています。 表1-1:デバイス制御コマンド用API

sssOpenDevice SMPデバイスをオープンします

sssCloseDevice SMPデバイスをクローズします

表1-2:システム初期化コマンド用API

sssInstallDrivers システム実行に必要なリアルタイムモジュールをロードします。

sssOpenDrivers 既にある同じデバイス名のSMPリアルタイムモジュールに対しプロセ

ス間通信を設定します。

sssRemoveDrivers リアルタイムモジュールをアンロードします。

sssStartInterrupt SMPモーションエンジンを開始します。

sssStopInterrupt SMPモーションエンジンを停止します。

表1-3:パラメータ設定コマンド用API

sssLoadParameters レジストリまたは初期設定ファイルからパラメータ設定をロードし、その

データをパラメータ構造体へ保存します。

sssSaveParameters パラメータ構造体の設定データをレジストリまたは初期設定ファイル

に保存します。

sssSendParameters パラメータ設定をSMPモーションエンジンに送ります。

SssLoadAbsEncParameters アブソリュート型エンコーダの設定をロードします。

SssSaveAbsEncParameters アブソリュート型エンコーダの設定を保存します。

sssSetPitch ピッチ補正データのファイルパスをSMPモーションエンジンに送りま

す。

sssSetPitchPlus ピッチエラー補正データを設定します。

sssSetStraightness 直列エラーデータファイルをSMPモーションエンジンに送ります。

1-2

Page 8: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-4:NCシステム制御コマンド用API

sssSetEMGStopOn 非常時に全てのSMPの実行とアンプ動作を停止します。

sssSetEMGStopReset 非常状態から復帰後システムのリセットを行ないます。

sssSetServoStatus 指定軸のサーボドライバ及び位置決めループをON/OFFします。

sssSetNcMode NC動作モードを設定します(HOME, JOG, RAPID, HNDWL, POSIT

または AUTO).

sssSetJogFeedrate Sets JOGモードフィードレートまたは AUTOモード ドライランフィード

レートを設定します。

sssSetOverride フィードレートオーバーライド値を設定します。

sssSetOverrideRpd 高速オーバーライド値を設定します。

sssSetInterlock 軸のインターロックを設定します。

sssMachinelock マシンロックを設定します。

sssReset 新たに初期化された設定にSMP環境をリセットします。警告フラグを

クリアし値を初期値にリセットします。

sssPresetWorkCoordinate ワーク座標オフセットをプリセットします。

sssSelectWorkCoordinate アクティブなワーク座標オフセットを選択します。

sssSetWorkOffse 現在のワーク座標オフセット値を設定します。

sssSetToolOffset 工具オフセットを設定します。

sssSetAxisSymbols 軸シンボルを設定します (X, Y, Z, … etc.)。

sssSetMSTBLock M, S, T, Bをブロックロックし、これらのコードを無効にします。

1-3

Page 9: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-5:マニュアル実行コマンド用API

sssJogStart 軸のジョグ移動を開始します。

sssJogStop 軸のジョグ移動を停止します。

sssRapidStart 軸の高速移動を開始します。

sssRapidStop 軸の高速移動を停止します。

sssPosStart 座標指定または非座標指定の位置決め移動を開始します。

sssPosStop 位置決め移動を停止(一時停止)します。

sssPosContinue 一時停止されている位置決め移動を再開します。

sssPosCancel 位置決め移動をキャンセルします。

sssPosSetBackupData 位置決め移動データをバッファーの中にセットします。データは

sssPosStart2によって使用できます。

sssPosStart2 バッファーに記憶された位置決め移動を開始します。

sssHomeStart 指定軸のホーム位置への移動を開始し、 も近いグリッドを検索して

エンコーダのカウンタをリセットします。

sssHomeStop 指定軸のホーム位置への移動停止します。

sssHndwlStart 指定軸をハンドホイール入力による制御に切り替えます。

sssHndwlStop ハンドホイール入力を使用不可にします。

1-4

Page 10: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-6:自動実行コマンド用API

sssAutoOpenFile SMP実行のためのモーションプログラムファイルを指定します。(フル

軌道ストリングの長さに制限あり。)

sssAutoOpenFile2 SMP実行のためのモーションプログラムファイルを指定します。(フル

軌道ストリングの長さに制限なし。)

sssAutoStart モーションプログラムファイルを実行します。

sssAutoStop モーションプログラムファイルの実行を(一時)停止します。

sssAutoRewind モーションプログラムファイルを 初に巻き戻します。

sssAutoReset オートモードをリセットします。

sssSetSingleBlockMode シングルブロックモード/スイッチをONまたはOFFします。

sssSetDryRunMode オート実行のためのドライランテストをONまたはOFFします。

sssSetOptStopMode オプショナルストップモード/スイッチをONまたはOFFします。

sssSetOptSkipMode オプショナルスキップモード/スイッチをONまたはOFFします。

sssHndwlIntStart オート実行中のオーバーラップコントロールへのハンドホイール割込

みをONにします。

sssHndwlIntStop オート実行中のオーバーラップコントロールへのハンドホイール割込

みをOFFにします。

sssSetAuxCodeFinish 追加コード(M, S, T コード)の完了を設定します。

sssSetBlockSearch 指定されたN, T, MナンバーのGコードを探します。

sssGetBlockSearch 検索されたラインの位置と形式データを見つけます。

sssBlockSearchStop ブロックサーチが何らかの理由で自動停止に失敗した場合、ブロック

サーチを停止させます。

sssMoveToBlock ブロックサーチによって見つけられたコードのラインを実行した後に、

プログラムされた位置まで軸を動かします。

sssSetBlockSearchPlus 指定されたN, T, MナンバーのGコードを探します。

sssSetLargeFileSupport ラージファイルサポートモードをオン・オフします。

1-5

Page 11: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-7:テスト及びサンプリングコマンド用API

sssTestVoltageStart DAC電圧出力テストを開始します。

sssTestVoltageStop DAC電圧出力テストを停止します。

sssTestPosStart 位置決めループパフォーマンステストを開始します。

sssTestPosStop 位置決めループパフォーマンステストを停止します。

sssSampleStart SMPモーションエンジン デバイスドライバのサンプリングデータを開

始します。

sssSampleStop SMPモーションエンジン デバイスドライバのサンプリングデータを停

止します。

sssSaveSampledData サンプリングされたデータをハードディスク上のファイルに保存しま

す。

表1-8:PLCコマンド用API

sssPLC_Start 指定された設定でラダーワークスPLCエンジンをアクティブにします。

sssPLC_Stop ラダーワークスPLCエンジンを非アクティブにします。

sssSetPLCFBit PLC F データ bit 値を設定します。

sssSetPLCFByte PLC F データ BYTE 値を設定します。

sssSetPLCFWord PLC F データ WORD 値を設定します。

sssSetPLCFDword PLC F データ DWORD 値を設定します。

sssSetPLCRBit PLC R データ bit 値を設定します。

sssSetPLCRByte PLC R データ BYTE 値を設定します。

sssSetPLCRWord PLC R データ WORD 値を設定します。

sssSetPLCRDword PLC R データ DWORD 値を設定します。

sssSetPLCRData 指定されたバイト数のPLC R データを設定します。

sssSetPLCDBit PLC D データ bit 値を設定します。

sssSetPLCDByte PLC D データ BYTE 値を設定します。

sssSetPLCDWord PLC D データ WORD 値を設定します。

sssSetPLCDDword PLC D データ DWORD 値を設定します。

sssSetPLCDData 指定されたバイト数のPLC D データを設定します。

表1-9:I/Oコマンド用API

sssSetDout デジタル出力を設定します。

SssSetDoutBit ビット単位でデジタル出力を設定します。

SssToggleDoutBit ビット単位でデジタル出力を切り替えます(ONならOFF,OFFならON)。

1-6

Page 12: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-10:SMPリアルタイムモジュール情報用API

sssGetStatus ソフトウェア・ハードウェア両方の詳細ステータス情報を取得します。

sssGetDriverVersion ドライバのバージョンを取得します。

sssGetDriverType ドライバの種類を取得します。

sssGetDriverOption ドライバのオプションを取得します。

sssGetBlockErrMsg ブロックデータ エラーメッセージ文字列を取得します。

表1-11:ユーザーブロックデータバッファ用API

sssResetBlockBuf ユーザーブロックデータバッファをリセットします。

sssAddOneBlock ユーザーブロックデータバッファにコードを1ブロック追加します。

sssGetBufStatus ユーザーブロックデータバッファの状態を取得します。

表1-12:特殊機能用API

sssSetSynControlMode 軸の同期制御モードを設定します。

sssMacroCallProcess カスタムG/M/S/Tコードを定義し、その定義に基づいてNCプログラ

ムを処理します。

表1-13:マクロ変数用API

sssGetLocalMacroVar リアルタイムエンジンからローカルなマクロ変数(#1~#100)を取得しま

す。

sssGetGlobalMacroVar リアルタイムエンジンからグローバルなマクロ変数(#101~#500)を取

得します。

sssGetPermanentMacroVar リアルタイムエンジンから永久マクロ変数(#501~#1000)を取得しま

す。

sssSetPermanentMacroVar リアルタイムエンジンに永久マクロ変数(#501~#1000)を設定します。

sssSetMacroVarRange グローバルマクロ変数、永久マクロ変数、システムマクロ変数の範囲

を、sssGetStatusによって戻されるよう設定します。

1-7

Page 13: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-14:MECHATROLINKサーボドライバ用API

sssLoadYSKDrvParameters 安川電機製ドライバからパラメータ設定を取得し、そのデータをパラメ

ータ構造体へ保存します。

sssSaveYSKDrvParameters パラメータ構造体のパラメータ設定を安川電機製ドライバに保存しま

す。

sssLoadYSKDrvID 安川電機製ドライバ及びモータからIDを取得し、そのデータを

SIGMA_ID_COLLET構造体に保存します。

sssSetYSKDrvIni アブソリュート型エンコーダをゼロリセットします。この呼び出しで成功

の戻り値を取得後、電源を再投入します。

sssGetYSKDrvAlarm 安川電機製ドライバのアラームコードについて、 新の10個または履

歴のうちから10個を取得します。

休むsssClearYSKDrvAlarm 安川ドライブアラームをクリアします。

表1-15:Panasonic MINAS A4Nサーボドライバ用API

sssLoadA4NdrvParameters パナソニックMINAS A4Nドライバからパラメータの設定を取得し、その

データをパラメータストラクチャーに入力します。

sssSaveA4NdrvParameters パラメータの設定を、パラメータストラクチャーからパナソニックMINAS

A4Nドライバへ保存します。

sssLoadA4NDrvID パナソニックMINAS A4Nドライバ及びモータからIDを取得し、そのデ

ータをA4N_ID_COLLECTストラクチャーへ入力します。

sssGetA4NDrvAlarm パナソニックMINAS A4Nドライバのアラームを取得します。

sssClearA4NDrvAlarm パナソニックMINAS A4Nドライバのアラームをクリアします。

1-8

Page 14: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

1.5 SMPパラメータとストラクチャー変数

パラメータは、全ての SMP システムに不可欠なものです。別マニュアル“SMP パラメータと機能に関するリフ

ァレンスマニュアル”は、SMP パラメータにのみ言及しているマニュアルで、マシーンツールに 高のパフォ

ーマンスをさせるために、 適のNCとマシーンパラメータ、ホームパラメータ、モータ&ドライヴパラメータ、

サーボコントロールパラメータ、補正パラメータ、マクロ機能パラメータなどをSMPシステムに設定できるもの

です。 以下の表は、SMP パラメータの名前を SMP モーション開発キット(MDK)の中で使われた変数へ割り当てた

ものです。: 表1-16:パラメータ名の割り当て(1/3)

パラメータのタイプ パラメータ名 対応するMDKの変数

Distance Per Encoder Revolution DisPerEncRev

Machine Unit (Minimum Resolution) MachineUnit

Over Position Error Protection Limit – Moving OverPosErrServoOffLimit_Moving

Over Position Error Protection Limit – Stopped OverPosErrServoOffLimit_Stopped

In Position Width InPositionWidth

Hard Limit Switch Action LimitSwitchAction

Smoothing Time - Cutting SmoothingTime_Regular_Cutting

Smoothing Time - Rapid SmoothingTime_Regular_Rapid

Smoothing Time - Manual SmoothingTime_Regular_Manual

Look Ahead Smoothing Time SmoothingTime_LookAhead

Position Loop Gain PosLoopGain

Position Loop Integral Control Enable PosLoopIntEnable

Position Loop Integral Time Constant PosLoopIntTimeConst

Position Loop Integral Saturation PosLoopIntSaturation

Velocity Feedforward Enable VelocityFFEnable

Velocity Feedforward Percentage VelocityFFpct

E-STOP Type EStopType

Limit Switch Type LimitSwitchType

Smoothing Mode - Cutting SmoothingMode_Cutting

Smoothing Mode - Rapid SmoothingMode_Rapid

Servo Control

Parameters

Smoothing Mode - Manual SmoothingMode_Manual

1-9

Page 15: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-17:パラメータ名の割り当て(2/3)

パラメータのタイプ パラメータ名 対応するMDKの変数

Plus Stroke PlusStroke

Minus Stroke MinusStroke

Backlash Value Backlash

Pitch Origin PitchOrigin

Pitch Interval PitchInterval

Rapid Feedrate RapidFeedrate

Jog Feedrate JogFeedrate

Home Type HomeType

Home Switch Type HomeSwitchType

Home Direction HomeDirection

Home Position HomePosition

Home Shift HomeShift

Grid Search Speed HomeSpeed

Home Reverse Distance HomeReverseDistance

Home Reverse Dwell Time HomeReverseDwellTime

Axis Type AxisType

Always Search for Home AlwaysSearchHome

Enable Integer Programming with Machine

Unit IntProgEnable

Number of DC Modules NoOfDC_Modules

Number of IM Modules NoOfIM_Modules

Enable HandWheel / HandWheel Type HandWheelType

Accumulate HandWheel Pulse (HandWheel Pulse Accumulation) HandwheelPulseAccumulation

G00 Perform Linear Interpolation (Rapid Feed Type) RapidFeedType

Unit / Default Program Unit DefaultProgramUnit

Reference Position #2 RefPoint_2

Reference Position #3 RefPoint_3

Reference Position #4 RefPoint_4

NC & Machine

Parameters

Home Switch Search Speed HomeSwitchSearchSpeed

1-10

Page 16: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表 1-18:パラメータ名の割り当て(3/3)

パラメータのタイプ パラメータ名 対応する MDK の変数 Maximum

Acceleration/Deceleration Rate MaxAccDecRate

Retract Vector RetractVector

Shift Direction ShiftDirection

Sync Slave Axis Compensation Gain SynSlaveCompGain

Sync Master Axis SynAssociatedToAxis

Over Position Error Sync Limit – Moving OverPosErrSynLimit_Rpd

Over Position Error Sync Limit – Stopped OverPosErrSynLimit_Stp

NC & Machine Parameters (continued)

Dry Run Feedrate DryRunFeedrate

Rated Velocity RatedVelocity

Peak Velocity PeakVelocity

Encoder Resolution EncoderResolution

Encoder Polarity EncoderPolarity

Encoder Type EncoderType

Motor Polarity MotorPolarity

Servo Drive Parameters

Servo Drive Velocity Sensitivity DriveVelSensitivity

S Code Setting SCall

T Code Setting TCall

M Code Settings MCall

Macro Function Parameters

G Code Settings GCall

1-11

Page 17: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

1.6 SMPパラメータとストラクチャー変数

表1-19:さまざまなエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_ARGUMENT_1 (HRESULT)0xC0001001L Invalid API argument #1

SWAPI_ERROR_ARGUMENT_2 (HRESULT)0xC0001002L Invalid API argument #2

SWAPI_ERROR_ARGUMENT_3 (HRESULT)0xC0001003L Invalid API argument #3

SWAPI_ERROR_ARGUMENT_4 (HRESULT)0xC0001004L Invalid API argument #4

SWAPI_ERROR_ARGUMENT_5 (HRESULT)0xC0001005L Invalid API argument #5

SWAPI_ERROR_ARGUMENT_6 (HRESULT)0xC0001006L Invalid API argument #6

SWAPI_ERROR_ARGUMENT_7 (HRESULT)0xC0001007L Invalid API argument #7

SWAPI_ERROR_ARGUMENT_8 (HRESULT)0xC0001008L Invalid API argument #8

SWAPI_ERROR_HANDLE (HRESULT)0xC0001010L Invalid handle

SWAPI_ERROR_DEVICE_COMMAND (HRESULT)0xC0001011L Invalid SMP device control command

SWAPI_ERROR_RPC (HRESULT)0xC0001012L Failed Remote Process Call

SWAPI_ERROR_WARNINGS (HRESULT)0xC0001013L Number of warnings exceeds MAX_WARNINGS

SWAPI_ERROR_DEVICE (HRESULT)0xC0008000L SMP device error

1-12

Page 18: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-20:SMPシステム初期化エラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_MEMORY (HRESULT)0xC0010001L Out of memory

SWAPI_ERROR_DEVICE_OPEN (HRESULT)0xC0010002L Fail to open device

SWAPI_ERROR_LOAD_MOTIONENGINE (HRESULT)0xC0010010L Fail to load Motion Engine process

SWAPI_ERROR_HANDSHAKE_MOTIONENGINE (HRESULT)0xC0010011L Failed to set up communication with Motion Engine process

SWAPI_ERROR_LOAD_MOTIONPARSER (HRESULT)0xC0010012L Fail to load Motion Engine process

SWAPI_ERROR_HANDSHAKE_MOTIONPARSER (HRESULT)0xC0010013L Failed to set up comminucation with Motion Parser process

SWAPI_ERROR_LOAD_PLC (HRESULT)0xC0010014L Fail to load PLC process

SWAPI_ERROR_HANDSHAKE_PLC (HRESULT)0xC0010015L Failed to set up communication with PLC process

SWAPI_ERROR_UNLOAD_ENGINES (HRESULT)0xC0010016L Fail to unload SMP Motion Engines

SWAPI_ERROR_REGISTRATION (HRESULT)0xC0010017L Invalid registration information for SMP

SWAPI_ERROR_INIT_SHMFAIL (HRESULT)0xC0010020L Software Initialization Error: Failed to create shared memory

SWAPI_ERROR_INIT_SHMEXIST (HRESULT)0xC0010021L Software Initialization Error: Create shared memory already exists

SWAPI_ERROR_INIT_CMPT (HRESULT)0xC0010022L Software Initialization Error: Failed to create event "Cmpt"

SWAPI_ERROR_LOAD_PARAM_REG (HRESULT)0xC0010030L Failed to load parameters from registry

SWAPI_ERROR_LOAD_PARAM_FILE (HRESULT)0xC0010031L Failed to load parameters from file

SWAPI_ERROR_SAVE_PARAM_REG (HRESULT)0xC0010032L Failed to load parameters from registry

SWAPI_ERROR_SAVE_PARAM_FILE (HRESULT)0xC0010033L Failed to load parameters from file

SWAPI_ERROR_SEND_NC_PARAM (HRESULT)0xC0010034L Failed to send NC and Machine parameters to Motion Engine

SWAPI_ERROR_SEND_SERVO_CONTROL_PARAM (HRESULT)0xC0010035L Failed to send servo control parameters to Motion Engine

SWAPI_ERROR_SEND_SERVO_DRIVE_PARAM (HRESULT)0xC0010036L Failed to send servo drive parameters to Motion Engine

SWAPI_ERROR_GET_LICENSE_REGISTRY (HRESULT)0xC0010040L Failed to get license code from Windows Registry

SWAPI_ERROR_READ_LICENSE_DISK_VOL (HRESULT)0xC0010041L Failed to read hard disk volume information

SWAPI_ERROR_READ_LICENSE_LAN_MAC (HRESULT)0xC0010042L Failed to read network card MAC number

1-13

Page 19: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-21:ユーザーのブロックバッファーエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_BUFFER_EMPTY (HRESULT)0xC0080001L User's block buffer already empty

SWAPI_ERROR_BUFFER_FULL (HRESULT)0xC0080002L User's block buffer already full

SWAPI_ERROR_BUFFER_END (HRESULT)0xC0080003L User's block buffer already ended

SWAPI_ERROR_BUFFER_OPERATION (HRESULT)0xC0080004L Buffer operation error

SWAPI_ERROR_BUFFER_MUTEX (HRESULT)0xC0080005L Failed to obtain buffer mutex

表1-22:Gコード/ブロックデータ処理エラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_INVALID_GCODE (HRESULT)0xC0090001L Invalid G-Code line

SWAPI_ERROR_POS_TYPE (HRESULT)0xC0090002L Invalid positioning type

SWAPI_ERROR_MISSING_AXIS (HRESULT)0xC0090003L Missing axis movement command

SWAPI_ERROR_MISSING_PARAM (HRESULT)0xC0090004L Missing parameter(s)

SWAPI_ERROR_INVALID_PARAM (HRESULT)0xC0090005L Invalid parameter value(s)

SWAPI_ERROR_PARAM_CONFLICT (HRESULT)0xC0090006L Parameter conflict

SWAPI_ERROR_CMD_FAILURE (HRESULT)0xC0090007L Command execution failure

SWAPI_ERROR_SUBPROG_FILE (HRESULT)0xC0090010L Failed to open subprogram file

SWAPI_ERROR_SUBPROG_LAYER (HRESULT)0xC0090011L Subprogram layer overflow

SWAPI_ERROR_SCALING_FACTOR (HRESULT)0xC0090020L Invalid scaling factor(s)

SWAPI_ERROR_SCALING_NOAXIS (HRESULT)0xC0090021L No axis data is specified for scaling settings

SWAPI_ERROR_CIRCULAR_RIJK (HRESULT)0xC0090030L Invalid circular radius or arc center data

SWAPI_ERROR_CIRCULAR_2D (HRESULT)0xC0090031L Invalid data for 2-dimensional circular interpolation

SWAPI_ERROR_CIRCULAR_PLANE (HRESULT)0xC0090032L Invalid circular plane selection

SWAPI_ERROR_CIRCULAR_ENDPOINT (HRESULT)0xC0090033L Invalid end point for circular interpolation

SWAPI_ERROR_CIRCULAR_CENTERPOINT (HRESULT)0xC0090034L Invalid center point for circular interpolation

SWAPI_ERROR_HELICAL_AXES (HRESULT)0xC0090035L Invalid helical interpolation axes designation

1-14

Page 20: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-23:指数の挿入エラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_EXPO_AXES (HRESULT)0xC0090040L Invalid number of axes commanded for exponential interpolation

SWAPI_ERROR_EXPO_IJR (HRESULT)0xC0090041L Missing I, J or R parameters for exponential interpolation

SWAPI_ERROR_EXPO_FEED (HRESULT)0xC0090042L Invalid feed parameter for exponential interpolation

SWAPI_ERROR_EXPO_HELIX (HRESULT)0xC0090043L Invalid helix angle (J parameter) for exponential interpolation

SWAPI_ERROR_EXPO_TAPER (HRESULT)0xC0090044L Invalid taper angle (I parameter) for exponential interpolation

SWAPI_ERROR_EXPO_RADIUS (HRESULT)0xC0090045L Invalid radius value for exponential interpolation

表1-24:COM Portコミュニケーションエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_COM_PORT (HRESULT)0xC0090070L Invalid COM port settings

SWAPI_ERROR_COM_PWMMODULE (HRESULT)0xC0090071L Invalid PWM module selection

SWAPI_ERROR_COM_PWMFREQ (HRESULT)0xC0090072L Invalid PWM module frequency settings

SWAPI_ERROR_COM_PWMDUTY (HRESULT)0xC0090073L Invalid PWM module duty cycle settings

SWAPI_ERROR_COM_PWMSTART (HRESULT)0xC0090074L Failed to start PWM module output

SWAPI_ERROR_COM_PWMSTOP (HRESULT)0xC0090075L Failed to stop PWM module output

表1-25:製品座標のオフセットエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_WORKOFFSET_NUM (HRESULT)0xC0090080L Invalid workpiece coordinate offset number selection

1-15

Page 21: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

Soft Servo SYSTEMS, INC

表1-26:ツールの範囲補正エラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_TRC_PROCESSING (HRESULT)0xC0090090L Tool radius compensation processing error

SWAPI_ERROR_TRC_PLANE (HRESULT)0xC0090091L Invalid plane in tool radius compensation

SWAPI_ERROR_TRC_PREVIEW (HRESULT)0xC0090092L Failed to preview one block in tool radius compensation

SWAPI_ERROR_TRC_INTPLN (HRESULT)0xC0090093L Invalid interpolation in tool radius compensation

SWAPI_ERROR_TRC_L2L (HRESULT)0xC0090094L Failed to process linear vectors in tool radius compensation

SWAPI_ERROR_TRC_L2C (HRESULT)0xC0090095L Failed to process movement between linear and circular paths in tool radius compensation

SWAPI_ERROR_TRC_C2C (HRESULT)0xC0090096L Failed to process movement between circular paths in tool radius compensation

SWAPI_ERROR_TRC_CIRCULAR (HRESULT)0xC0090097L Invalid circular path in tool radius compensation

SWAPI_ERROR_TRC_TOOLPATH (HRESULT)0xC0090098L Failed to generate tool path in tool radius compensation

SWAPI_ERROR_TRC_INTERFERENCE (HRESULT)0xC0090099L Failed interference check in tool radius compensation

SWAPI_ERROR_TRC_XINGANGLE (HRESULT)0xC009009AL Failed to process crossing angle between movement vectors in tool radius compensation

表1-27:複合的なNCブロックバッファーエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_MULTIBLOCK_FULL (HRESULT)0xC00900B0L Failed to add one block to multiple NC block buffer: Buffer already full

表1-28:ツールエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_TOOL_NUM (HRESULT)0xC00900C0L Invalid tool number

表1-29:DLACCエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_DLACC_GCODE (HRESULT)0xC00900D0L Invalid command in Dynamic Look-Ahead Contour Control (DLACC)

1-16

Page 22: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1 章: SMP API の概要

1-17

Soft Servo SYSTEMS, INC

表1-30:リニアR挿入エラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_G01R_NEXTGCODE (HRESULT)0xC00900F0L Invalid G-code following G01R

SWAPI_ERROR_G01R_NOMOTION (HRESULT)0xC00900F1L No movement command in G01R

SWAPI_ERROR_G01R_MOTIONANGLE (HRESULT)0xC00900F2L Invalid movement angle in G01R

SWAPI_ERROR_G01R_RADIUS (HRESULT)0xC00900F3L G01R radius is too large

表1-31:カスタムマクロエラー

メッセージ ID 32 bit 値 メッセージ文

SWAPI_ERROR_MACROVAR_OPTSKIP (HRESULT)0xC0090200L No optional skip is allowed for custom macro variable settings

SWAPI_ERROR_MACROVAR_INDEX (HRESULT)0xC0090201L Invalid custom macro variable index

SWAPI_ERROR_MACROVAR_SETTINGS (HRESULT)0xC0090202L Invalid custom macro variable value settings

Page 23: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 2 章: デバイス操作コマンド用 API

Soft Servo SYSTEMS, INC

第2章: デバイス操作コマンド用API

2.1 sssOpenDevice

表 2-1:sssOpenDevice

関数宣言 Unmanaged C++

HRESULT sssOpenDevice(PHSSDEV phDev, LPCSTR pDeviceName, LPCSTR

pNetAddr);

関数宣言 C#.NET Int sssOpenDevice (String pDeviceName, String pNetAddr);

機能

SMPデバイスを開きます。デバイスストラクチャが作成され、このデバイスへのハンド

ルが取得されます。このデバイスハンドルは他の全てのSMP API関数で使用されま

す。デバイス名は指定することができます。また、ネットワーク経由でのデバイス制御

で使用されるネットワークアドレスの入力も可能です。

引数 phDev ― sssOpen(…)で代入されるデバイスハンドル pDeviceName ― デバイス名文字列へのポインタ pNetAddr ― デバイスのネットワークアドレス

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_ARGUMENT_1 ― phDev 引数が無効(null)です SWAPI_ERROR_ARGUMENT_2 ― pDeviceName 引数が無効(null)です SWAPI_ERROR_MEMORY ― メモリのアロケートに失敗しました SWAPI_ERROR_DEVICE_OPEN ― デバイスのオープンに失敗しました

Unmanaged C++例 HSSDEV hDevice; sssOpenDevice(&hDevice, "MyDeviceName", NULL);

C#.NET 例 sssOpenDevice (“MyDeviceName”, null);

備考 sssOpenDeviceで代入されるデバイスハンドルはこの後の全てのAPI関数呼出時に引

数として渡す必要があります。この値は保存しておいてください。

2-1

Page 24: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 2 章: デバイス操作コマンド用 API

2-2

Soft Servo SYSTEMS, INC

2.2 sssCloseDevice

表 2-2:sssCloseDevice

関数宣言 Unmanaged C++ HRESULT sssCloseDevice(HSSDEV hDev);

関数宣言 C#.NET Int sssCloseDevice( );

機能 SMPデバイスを閉じます。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― hDeviceハンドルが無効です

Unmanaged C++

HSSDEV hDevice; sssOpenDevice(&hDevice, “MyDeviceName”, NULL); … /*プログラムの終了前にデバイスハンドルを閉じます*/

sssCloseDevice(hDevice);

C#.NET

sssOpenDevice (“MyDeviceName”, null); … // プログラムの終了前にデバイスハンドルを閉じます sssCloseDevice();

備考 sssOpenDeviceで代入されるデバイスハンドルはこの後の全てのAPI関数呼出時に

引数として渡す必要があります。この値は保存しておいてください。

Page 25: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

第3章: システム初期化コマンド用API

3.1 sssInstallDrivers

表 3-1:sssInstallDrivers (1/3)

関数宣言 Unmanaged C++

sssInstallDrivers(HSSDEV hDev, LPCSTR pInitDirectory, SHORT

driverInstallMode, SHORT paramLoadMode, LPCSTR pParamPath);

関数宣言 C#.NET

int sssInstallDrivers( String pInitDirectory, Int16 driverInstallMode, Int16 paramLoadMode, String pParamPath );

機能 システムの実行に必要なリアルタイムドライバをロードします。

引数

hDev ― sssOpenDevice(…)で代入されるデバイスハンドル pInitDirectory ― SMPリアルタイムモジュールの位置を示すフルパスを指定する文

字列 driverInstallMode ― ロードするモジュールを選択します:

0 ― SMPモーションエンジン, ラダーワークスPLCエンジン 及びSMPモーションパーサーをロードします。

1 ― SMPモーションエンジンのみロードします 2 ― SMPモーションエンジン及びSMPモーションパーサーをロードします 3 ― SMPモーションエンジン及びラダーワークスPLCエンジンをロードします

paramLoadMode ― パラメータをロードするか、またロードする場合 ロードする場所を指定します:

0 ― パラメータをロードしません 1 ― Windowsレジストリからパラメータをロードします 2 ― ファイルからパラメータをロードします

pParamPath ― パラメータファイルの位置を示すフルパスを指定する文字列

3-1

Page 26: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

表 3-2:sssInstallDrivers (2/3)

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pInitDirectory引数が無効です(nullまたは文字

列長がMAX_STRINGを超えています)

SWAPI_ERROR_ARGUMENT_3 ― driverInstallMode引数が無効です SWAPI_ERROR_ARGUMENT_4 ― paramLoadMode引数が無効です SWAPI_ERROR_ARGUMENT_5 ― pParamPath引数が無効です(nullまたは

paramLoadMode = 2の時に文字列長がMAX_STRINGを超えています) SWAPI_ERROR_INIT_SHMEXIST ― すでに存在する共有メモリを初期化しようとし

ました SWAPI_ERROR_INIT_SHMFAIL ― 共有メモリの初期化に失敗しました SWAPI_ERROR_INIT_CMPT ― "Complete"イベントの初期化に失敗しました SWAPI_ERROR_LOAD_MOTIONENGINE ― SMPモーションエンジンのロードに失

敗しました SWAPI_ERROR_LOAD_MOTIONPARSER ― SMPモーションパーサーのロードに

失敗しました SWAPI_ERROR_LOAD_PLC - ラダーワークスPLCエンジンのロードに失敗しました SWAPI_ERROR_HANDSHAKE_MOTIONENGINE ― SMPモーションエンジンとの

通信の設定に失敗しました SWAPI_ERROR_HANDSHAKE_MOTIONPARSER ― SMPモーションパーサー との通信の設定に失敗しました SWAPI_ERROR_HANDSHAKE_PLC ― ラダーワークスPLCエンジンとの通信の設

定に失敗しました SWAPI_ERROR_LOAD_PARAM_FILE - ファイルからのパラメータのロードに失敗し

ました SWAPI_ERROR_SEND_NC_PARAM ― SMPモーションエンジンへのNCパラメータ

の送信が失敗しました SWAPI_ERROR_SEND_SERVO_CONTROL_PARAM ― SMPモーションエンジンへ

のサーボ制御パラメータの送信が失敗しました SWAPI_ERROR_SEND_SERVO_DRIVE_PARAM ― SMPモーションエンジンへのサ

ーボ及びドライブパラメータの送信が失敗しました

Unmanaged C++

HSSDEV hDev; /*sssOpenで初期化*/

CHAR* pDir = “C:/Program Files/SMP/Swsdk/Drivers”; … /*pDirで示されるディレクトリからリアルタイムモジュールをインストール

します。SMPモーションエンジンのみをロードし、Windowsレジストリからパ

ラメータをロードします*/

sssInstallDrivers(hDev, sPath, 1, 1, NULL);

C#.NET

// sssOpenDeviceで初期化 … Srting pDir = “C:/Program Files/ServoWorks/Swsdk/Drivers”; //pDirで示されるディレクトリからリアルタイムモジュールをインストール

します。ServoWorks CNCエンジンのみをロードし、Windowsレジストリから

パラメータをロードします// sssInstallDrivers(pDir, 1, 1, null);

3-2

Page 27: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

表 3-3:sssInstallDrivers (3/3)

備考

・ アプリケーションがドライバをロードできない場合は、リアルタイムモジュールが

ディレクトリ(2番目の引数で指定)に正しく含まれているか確認してください。 ・ sssSendParameters APIを呼び出す際は、カスタマイズされたSMPアプリケーシ

ョンの中で、sssSendParametersがsssLoadParametersの後に呼び出されている

ことを確認してください。このAPIは、sssLoadParameterがパラメータの設定をレ

ジストリからロードしてそのデータをパラメータストラクチャに与える間に、パラメ

ータの設定をデバイスドライバに送ります。上記のAPIの呼び出しオーダーは、

1)sssLoadParameters、2)sssInstallDrivers、3)sssSendParameters (任意)になり

ます。 ・ SMPコンソールと共同で使う予定のSMPアプリケーションを開発する際は、その

カスタムSMPプログラムがSMPコンソールと同じシステムパラメータを使っている

ことを確かめましょう。第四変数(paramLoadMode)が”1”に設定されていることを

確認し、またセクション8.4を参照してください。

3-3

Page 28: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

3.2 sssOpenDrivers

表 3-4:sssOpenDrivers

関数宣言 Unmanaged C++ sssOpenDrivers(HSSDEV hDev);

関数宣言 C#.NET int sssOpenDrivers( );

機能 既にある同じデバイス名のSMPリアルタイムモジュールに対しプロセス間通信(IPC)

を設定します。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_HANDSHAKE_MOTIONENGINE ― SMPモーションエンジンとの

通信設定に失敗しました SWAPI_ERROR_HANDSHAKE_MOTIONPARSER ― SMPモーションパーサーとの

通信設定に失敗しました SWAPI_ERROR_HANDSHAKE_PLC ― ラダーワークスPLCエンジンとの通信設定

に失敗しました

Unmanaged C++

HSSDEV hDev; /* sssOpenで初期化します */

… /* ドライバのインストール後 */

sssOpenDrivers(hDev);

C#.NET

//sssOpenDeviceで初期化します … sssInstallDrivers(“C:/Program Files/ServoWorks/Swsdk/Drivers”, 1, 1, NULL); //ドライバーのインストール後 sssOpenDrivers();

備考

sssOpenDevice API関数でhDev引数を作成する場合、デバイス名は既に存在する

リアルタイムエンジンをロードする際に使用されたデバイス名と同一でなければなり

ません。同一でない場合、sssOpenDrivers関数はIPCチャンネルの設定に失敗しま

す。

3-4

Page 29: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

3.3 sssRemoveDrivers

表 3-5:sssRemoveDrivers

関数宣言 Unmanaged C++ sssRemoveDrivers(HSSDEV hDev);

関数宣言 C#.NET int sssRemoveDrivers( );

機能 SMPリアルタイムモジュールをアンロードします

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_UNLOAD_ENGINES ― SMPエンジンのアンロードに失敗しました

Unmanaged C++

HSSDEV hDevice; /* sssOpenで初期化します */

… /* ドライバのインストール後&アプリケーション終了前 */

sssRemoveDrivers(hDevice);

C#.NET

//sssOpen(…)で初期化します … //ドライバのインストール後&アプリケーション終了後 sssRemoveDrivers();

3-5

Page 30: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

Soft Servo SYSTEMS, INC

3.4 sssStartInterrupt

表 3-6:sssStartInterrupt

関数宣言 Unmanaged C++ HRESULT sssStartInterrupt(HSSDEV hDev);

関数宣言 C#.NET int sssStartInterrupt( );

機能 SMP制御ハードウェアをアクティブにします。SMPモーションエンジンとSMP

ハードウェアとの通信が開始されます。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… sssStartInterrupt(hDevice);

C#.NET

//sssOpenDevice(…)で初期化します … sssStartInterrupt();

備考 SMP制御ハードウェアをアクティブにできない場合、SMPモーションエンジン

は開始できません。

3-6

Page 31: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 3 章: システム初期化コマンド用 API

3-7

Soft Servo SYSTEMS, INC

3.5 sssStopInterrupt

表 3-7:sssStopInterrupt

関数宣言 Unmanaged C++ HRESULT sssStopInterrupt(HSSDEV hDev);

関数宣言 C#.NET int sssStopInterrupt( );

機能 SMP制御ハードウェアを非アクティブにし、このハードウェアとSMPモーショ

ンエンジンとの通信を停止します。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* sssStartInterrupt(…)を使用して割込みを開始後 */

sssStopInterrupt(hDevice);

C#.NET

//sssOpenDevice(…)で初期化します … sssStartInterrupt(); … //sssStartInterrupt(…)を使用して割込みを開始後 sssStopInterrupt();

Page 32: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

第4章: パラメータ設定コマンド用API

4.1 sssLoadParameters

表 4-1:sssLoadParameters(1/2)

関数宣言 Unmanaged C++

HRESULT sssLoadParameters(LPCSTR pParamPath, PNC_PARAM pNcParam,

PSERVO_DRIVE_PARAM pServoDriveParam, PSERVO_CONTROL_PARAM

pServoControlParam);

関数宣言 C#.NET

int sssLoadParameters (String pParamPath, ref NC_PARAM NcParam, ref SERVO_DRIVE_PARAM ServoDriveParam, ref SERVO_CONTROL_PARAM ServoControlParam );

機能 レジストリまたは初期設定ファイルからパラメータ設定をロードし、そのデータをパラメ

ータ構造体に保存します。

引数

pParamPath ― 初期設定ファイルのあるフォルダのフルパスです。NULLの場

合パラメータはシステムレジストリからロードされます。 pNcParam ― NCパラメータ構造体へのポインタ pServoDriveParam ― サーボドライブパラメータ構造体へのポインタ pServoControlParam ― サーボ制御パラメータ構造体へのポインタ

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_ARGUMENT_1 ― pParamPath引数が無効です(nullまたは文字列

長がMAX_STRINGを超えています)

SWAPI_ERROR_ARGUMENT_2 ― pNcParam引数が無効です SWAPI_ERROR_ARGUMENT_3 ― pServoDriveParam引数が無効です SWAPI_ERROR_ARGUMENT_4 ― pServoControlParam引数が無効です SWAPI_ERROR_LOAD_PARAM_FILE ― ファイルからのパラメータのロードに失敗し

ました

Unmanaged C++

NC_PARAM ncp; SERVO_CONTROL_PARAM mp; SERVO_DRIVE_PARAM sp; … /* レジストリからパラメータをロードします */

sssLoadParameters(NULL, &ncp, &mp, &sp);

C#.NET

NC_PARAM ncp: SERVO_CONTROL_PARAM mp; SERVO_DRIVE_PARAM sp; … //レジストリからパラメータをロードします sssLoadParameters (null, ref ncp, ref mp, ref sp);

4-1

Page 33: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

表 4-2:sssLoadParameters (2/2)

備考

・ sssLoadParametersとsssSaveParameters、sssSendParametersの間の遅れはプロ

グラムしなければなりません。これは、パラメータの設定がロードまたはアップデ

ートに数ミリセカンドを要する場合があるからで、すぐ次のラインがアップデート

されたパラメータを要求する際は正しくアップデートされていない可能性があり

ます。パラメータをロードまたはアップデートした後に、100ミリセカンドのスリー

プコマンド(Sleep(100))を入れて遅れをプログラムすることは、この問題を解決し

ます。もしもパラメータのロードまたはアップデート後に遅れをプログラムしなか

った場合は、すぐ次のラインは古いパラメータに基づいた実行をするかもしれま

せん。 ・ sssSendParameters APIを呼び出す時は、カスタマイズされたSMPアプリケーシ

ョンの中でsssSendParametersがsssLoadParametersの後に呼び出されているこ

とを確認してください。このAPIは、sssLoadParametersがパラメータの設定をレ

ジストリからロードしてデータをパラメータストラクチャーに与える間に、パラメー

タの設定をデバイスドライバに送ります。上記の3つのAPIの呼び出しへの指令

は、以下の通りです。1)sssLoadParameters, 2)sssInstallDrivers 3)

sssSendParameters(オプション) ・ カスタムアプリケーションにパラメーターの設定用にインターフェースを含まな

いため、SMPコンソールとの結合に使用する特注SMPアプリケーションを開発

する場合、カスタムSMPプログラムはSMPコンソールと同じシステムパラメーター

を使用します。pParamPathがNULLに設定されていることを確認してください。

セクション8.4: SMP Motion Development Kit(MDK)のプログラミングマニュアル

内、特注SAMPプログラムがSMPコンソールと同じパラメーターを使用している

ことの確認の箇所を参照してください。

4-2

Page 34: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.2 sssSaveParameters

表 4-3:sssSaveParameters (1/2)

関数宣言

Unmanaged C++

HRESULT sssSaveParameters(LPCSTR pParamPath, PNC_PARAM pNcParam,

PSERVO_DRIVE_PARAM pServoDriveParam, PSERVO_CONTROL_PARAM

pServoControlParam);

関数宣言

C#.NET

Int sssSaveParameters( Sting pParamPath, NC_PARAM NcParam, SERVO_DRIVE_PARAM ServoDriveParam, SERVO_CONTROL_PARAM ServoControlParam);

機能 構造体からシステムレジストリ(または初期設定ファイル)へパラメータ設定

を保存します。

引数

pParamPath ― 初期設定ファイルのあるフォルダのフルパスです。NULLの場

合パラメータはシステムレジストリへ保存されます。 pNcParam ― pointer to NC パラメータ構造体 pServoDriveParam ― サーボドライブパラメータ構造体へのポインタ pServoControlParam ― サーボ制御パラメータ構造体へのポインタ

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_ARGUMENT_1 ― pParamPath引数が無効です(nullまたは文字列

長がMAX_STRINGを超えています)

SWAPI_ERROR_ARGUMENT_2 ― pNcParam引数が無効です SWAPI_ERROR_ARGUMENT_3 ― pServoDriveParam引数が無効です SWAPI_ERROR_ARGUMENT_4 ― pServoControlParam引数が無効です SWAPI_ERROR_SAVE_PARAM_FILE ― パラメータのファイル保存に失敗しました

Unmanaged C++

NC_PARAM ncp; SERVO_DRIVE_PARAM mp; SERVO_CONTROL_PARAM sp; … /* システムレジストリにパラメータを保存します */

… sssSaveParameters(NULL, &ncp, &mp, &sp);

4-3

Page 35: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.2 sssSaveParameters (続き)

表 4-4:sssSaveParameters (2/2)

C#.NET

NC_PARAM ncp; SERVO_DRIVE_PARAM mp; SERVO_CONTROL_PARAM sp; … //システムレジストリからパラメータを読み込みます sssLoadParameters(null, ref ncp, ref mp, ref sp); …。 //ファイルにパラメータを保存します … sssSaveParameters(“C:/parameters”, ncp, mp, sp);

備考

sssLoadParameters、sssSaveParameters、sssSendParametersの間に遅れをプログラム

する必要があります。パラメータ設定は完全な読み込みやアップデートに数ミリ

秒を要し、また即座にフォローするラインがパラメータのアップデートを要する

ためです。パラメータの読み込みやアップデート後に発生する100ミリ秒のスリー

プコマンド(Sleep100)によるプログラムの遅延により、このプログラムが削除され

ることがあります。もしパラメータの読み込みやアップデート後にプログラム遅

の遅れがない場合、即座にフォローするラインが期限切れのパラメータに基づい

て実行されます。

4-4

Page 36: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.3 sssSendParameters

表 4-5:sssSendParameters (1/2)

関数宣言

Unmanaged C++

HRESULT sssSendParameters(HSSDEV hDev, PNC_PARAM pNcParam,

PSERVO_DRIVE_PARAM pServoDriveParam, PSERVO_CONTROL_PARAM

pServoControlParam);

関数宣言

C#.NET

Int sssSendParameters( NC_PARAM stNcParam, SERVO_DRIVE_PARAM stServoDriveParam, SERVO_CONTROL_PARAM stServoControlParam );

機能 デバイスドライバにパラメータ設定を送ります。

引数

hDev ― sssOpenDevice(…)により初期化されるデバイスハンドル pNcParam ― pointer to NC パラメータ構造体へのポインタ pServoDriveParam ― サーボドライブ パラメータ構造体へのポインタ pServoControlParam ― サーボ制御パラメータ構造体へのポインタ

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pNcParam引数が無効です SWAPI_ERROR_ARGUMENT_3 ― pServoDriveParam 引数が無効です SWAPI_ERROR_ARGUMENT_4 ― pServoControlParam 引数が無効です SWAPI_ERROR_SEND_NC_PARAM ― NCパラメータのSMPモーションエンジン

への送信に失敗しました SWAPI_ERROR_SEND_SERVO_CONTROL_PARAM ― サーボ制御パラメータの

SMPモーションエンジンへの送信に失敗しました SWAPI_ERROR_SEND_SERVO_DRIVE_PARAM ― サーボ及びドライブパラメータの

SMPモーションエンジンへの送信に失敗しました

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

NC_PARAM ncp; SERVO_DRIVE_PARAM mp; SERVO_CONTROL_PARAM sp; … /* sssLoadParameters(…)を使用して構造体に代入します。 */

… sssSendParameters(hDevice, &ncp, &mp, &sp);

4-5

Page 37: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.3sssSendParameters (continued)

表 4-6:sssSendParameters (2/2)

C#. NET

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

NC_PARAM ncp; SERVO_DRIVE_PARAM mp; SERVO_CONTROL_PARAM sp; … // sssLoadParameters(…)を使用して構造体に代入します。 sssLoadParameters(null, ref ncp, ref mp, ref sp); //レジストリパラメーターを手動で無効にし、X軸に 大

ncp.PlusStroke[0]=5.0;//mmのソフトウェアを加えます。 … //パラメーターをドライバーに送ります。 sssSendParameters(hDevice, &ncp, &mp, &sp);

備考

・ sssLoadParametersとsssSaveParameters、sssSendParametersの間の遅れはプログラ

ムしなければなりません。これは、パラメータの設定がロードまたはアップデートに

数ミリセカンドを要する場合があるからで、すぐ次のラインがアップデートされたパラ

メータを要求する際は正しくアップデートされていない可能性があります。パラメー

タをロードまたはアップデートした後に、100ミリセカンドのスリープコマンド

(Sleep(100))を入れて遅れをプログラムすることは、この問題を解決します。もしもパ

ラメータのロードまたはアップデート後に遅れをプログラムしなかった場合は、すぐ

次のラインは古いパラメータに基づいた実行をするかもしれません。 ・ sssSendParameters APIを呼び出す時は、カスタマイズされたSMPアプリケーション

の中でsssSendParametersがsssLoadParametersの後に呼び出されていることを確認

してください。このAPIは、sssLoadParametersがパラメータの設定をレジストリからロ

ードしてデータをパラメータストラクチャーに与える間に、パラメータの設定をデバイ

スドライバに送ります。上記の3つのAPIの呼び出しへの指令は、以下の通りです。

1)sssLoadParameters, 2)sssInstallDrivers 3) sssSendParameters(オプション)

4-6

Page 38: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.4 sssLoadAbsEncParameters

表 4-7:sssLoadAbsEncParameters

関数宣言

Unmanaged C++ HRESULT sssLoadAbsEncParameters(HSSDEV hDev , LPCSTR pParamPath);

関数宣言

C#.NET Int sssLadAbsEncParameters( String pParamPath );

機能

ファイルまたはWindowsレジストリからアブソリュート型エンコーダの設定を

ロードしてリアルタイムエンジンに送ります。これらのパラメータにはホーム

位置の情報や、アブソリュート型エンコーダのホーム移動が既に実行されてい

るかどうかの情報も含まれています。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pParamPath ― 初期設定ファイルのあるフォルダのフルパスです。NULLの場

合、パラメータはWindowsレジストリからロードされます。

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pParamPath引数が無効です(nullまたは文字列

長がMAX_STRINGを超えています)

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* アブソリュート型エンコーダ設定をWindowsレジストリからロードします

*/

… sssLoadAbsEncParameters (hDevice, NULL);

C#.NET

//sssOpenDevice(…)を使って初期化します。 … //Windowsの登録からアブソリュート型エンコーダーパラメータを読み込みま

す。 sssLoadAbsEncParameters(null);

備考 sssLoadAbsEncParameters関数はsssInstallDriversが呼ばれるときに自動的に呼

ばれます。これはアブソリュート型エンコーダがホーム移動を実行しなくても

自動的に位置を確定できるようにするためです。

4-7

Page 39: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.5 sssSaveAbsEncParameters

表 4-8:sssLoadAbsEncParameters

関数宣言

Unmanaged C++ HRESULT sssSaveAbsEncParameters(HSSDEV hDev, LPCSTR pParamPath, LONG

nAxisFlags ;

関数宣言

C#.NET Int sssSaveAbsEncParameters( String pParamPath, Int32 nAxisFlags );

機能

アブソリュート型エンコーダの設定をリアルタイムエンジンより取得し、ファ

イルまたはWindowsレジストリに保存します。これらのパラメータにはホーム

位置の情報や、アブソリュート型エンコーダのホーム移動が既に実行されてい

るかどうかの情報も含まれています。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pParamPath ― 初期設定ファイルのあるフォルダのフルパスです。NULLの場

合、パラメータはWindowsレジストリからロードされます。

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pParamPath引数が無効です(nullまたは文字列

長がMAX_STRINGを超えています)

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* アブソリュート型エンコーダの設定をWindowsレジストリに保存します */

… axisFlags=AXIS_01; sssSaveAbsEncParameters (hDevice, NULL, axisFlags);

備考

sssSaveAbsEncParameters関数はアブソリュート型エンコーダのホーム位置検

出(Zパルスによる)が完了したときに呼び出される必要があります。次回

sssInstallDriverが呼ばれる時は、ホーム移動を実行しなくてもアブソリュート

型エンコーダの位置が自動的に確定します。

4-8

Page 40: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.6 sssSetPitch

表 4-9:sssSetPitch

関数宣言

Unmanaged C++ HRESULT ssssSetPitch(HSSDEV hDev, LPCSTR pPitchFileName);

関数宣言

C#.NET Int sssSetPitch

機能 ピッチエラーデータファイルのパスをSMPモーションエンジンに送ります。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pPitchFileName ― ピッチエラーデータファイル名(プルパス)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

CHAR sFileName[256]; … strncpy (sFileName, “C:/PitchError.dat”, sizeof(sFileName)); sssSetPitch(hDevice, sFileName);

C#.NET

//sssOpenDevice(…)を使って初期化します。 … String sFileName = "C:/PitchError.dat";

sssSetPitch(sFileName);

4-9

Page 41: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

Soft Servo SYSTEMS, INC

4.7 sssSetPitchPlus

表 4-10:sssSetPitchPlus

関数宣言

Unmanaged C++ HRESULT sssSetPitchPlus( HSSDEV hDev, PPITCH_DATA pPitchData, LONG

nAxisNumber );

関数宣言

C#.NET int sssSetPitchPlus( PITCH_DATA pPitchData, Int32 nAxisNumber );

機能 ピッチエラー補償データをセットします。

引数

hDev – sssOpenDevice(…)で初期化されるデバイスハンドル pPitchData – ピッチデータストラクチャーへのポインタ:

typedef struct {

DOUBLE PitchData[MAX_PITCH_POINTS]; // mm

} PITCH_DATA, *PPITCH_DATA; nAxisNumber –設定するアクティブな軸を指定する軸の数

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

C#.NET

//sssOpenDevice(…)を使って初期化します。 … PITCH_DATA pPitchData;

pPitchData.PitchData[0] = 0; //starting point pitch error is zero

pPitchData.PitchData[1] = 1; //pitch error after one pitch interval is 1mm

pPitchData.PitchData[2] = -0.5; //pitch error after two pitch intervals is -0.5mm

//X 軸へピッチデータをセット

sssSetPitchPlus(pPitchData, 0);

4-10

Page 42: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 4 章: パラメータ設定コマンド用 API

4-11

Soft Servo SYSTEMS, INC

4.8 sssSetStraightness

表 4-11:sssSetStraightness

関数宣言

Unmanaged C++ HRESULT sssSetStraightness( HSSDEV hDev, LPCSTR pStraightFileName );

関数宣言

C#.NET int sssSetStraightness( String pStraightFileName );

機能 まっすぐなエラー・データファイル経路をSMP Motion Engineに送ります。

引数 hDev – sssOpenDevice(…)で初期化されるデバイスハンドル pStraightFileName – まっすぐなエラーデータファイル名(プルパス)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Page 43: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

第5章: システムコントロールコマンド用API

5.1 sssSetEMGStopOn

表 5-1:sssSetEMGStopOn

関数宣言

Unmanaged C++ HRESULT sssSetEMGStopON(HSSDEV hDev);

関数宣言

C# .NET Int sssSetEMGStopOn( );

機能 全てのSMPの実行を停止し、サーボドライバを非常停止させます。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… sssSetEMGStopOn(hDevice);

C#.NET

//sssOpenDevice(…)で初期化します … sssSetEMGStopOn( );

備考 非常停止が行なわれた場合はsssSetEMGStopReset(…)を使用してリセットして下さ

い。

5-1

Page 44: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.2 sssSetEMGStopReset

表 5-2:sssSetEMGStopReset

関数宣言

Unmanaged C++ HRESULT sssSetEMGStopReset(HSSDEV hDev);

関数宣言

C#.NET Int sssSetEMGStopReset( );

機能 非常停止状態からシステムを復帰させます。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* sssSetEMGStopON(…) が呼び出された後 */

… sssSetEMGStopReset(hDevice);

C#.NET

//sssOpenDevice(…)で初期化します … sssSetEMGStopOn( ); … //sssSetEMGStopOn(…) が呼び出された後 sssSetEMGStopReset( );

備考 非常時はsssSetEMGStopOn (…)を使用してシステムを停止し、この関数でリセ

ットを行うようにして下さい。

5-2

Page 45: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.3 sssSetServoStatus

表 5-3:sssSetServoStatus

関数宣言

Unmanaged C++ HRESULT sssSetServoStatus(HSSDEV hDev, LONG axisNumber, LONG state);

関数宣言

C#.NET Int sssSteServoStatus(Int32 axisNumber, Int32 state);

機能 指定軸の位置決めループ制御をON/OFFします

引数

hDev ― SMPデバイスハンドル axisNumber:

0 ― 全軸 1~16 ― 軸番号 1~16

state:

0 ― サーボドライブをOFFにし、位置決めループをOFF(open)にします 1 ― サーボドライブをONにし、位置決めループをON(close)にします

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* 全軸のサーボ制御と位置決めループをONにします */

sssSetServoStatus(hDevice, 0, 1);

C#.NET

//sssOpenDevice(…)で初期化します … //全軸のサーボ制御と位置決めループをONにします sssSetServoStatus(0,1);

備考 指定軸に対してモーションAPI関数を実行する場合は、他のモーションAPI関数の実

行前にこの関数を呼び出すようにして下さい。

5-3

Page 46: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.4 sssSetNcMode

表 5-4:sssSetNeMode

関数宣言

Unmanaged C++ HRESULT sssSetNcMode(HSSDEV hDev, LONG nMode);

関数宣言

C#.NET Int sssSetNeMode(Int32 nMode);

機能 実行モードを設定します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nMode ― NCモード設定(以下のいずれかの値をとります):

SSS_OPMODE_IDLE

SSS_OPMODE_HOME

SSS_OPMODE_AUTO

SSS_OPMODE_JOG

SSS_OPMODE_HNDWL

SSS_OPMODE_RAPID

SSS_OPMODE_POS

SSS_OPMODE_TEST

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… sssSetNcMode(hDevice, SSS_OPMODE_AUTO);

C#.NET

//sssOpenDevice(…)で初期化します … //自動オペレーションを可能にするため、NCモードをオートに設定します sssSetNcMode(SSS_OPMODE_AUTO);

備考

• SMPモーション・ロジックAPIは、一致するNCモード下でのみ動作可能で

す。 • sssSetNcModeの直後にsssAutoOpenFileが呼び出される場合、sssSetNcMode

とsssAutoOpenFileの間に少なくとも50ミリ秒プログラムの遅延がありま

す。 詳細は、『SMPモーションデベロップメントキット(MDK)プログラミング

マニュアル』内のセクション8.2.1、非反復SMPモーションとロジックAPI

ファンクションコールをご参照ください。

5-4

Page 47: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.5 sssSetJogFeedrate

表 5-5:sssSetjogFeedrate(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetJogFeedrate(HSSDEV hDev, PJOG_DATA pJogData);

関数宣言

C#.NET Int sssSetJogFeedrate(JOG_DATA_hJogData);

機能 指定軸のJOGモードフィードレート、または線形座標移動のAUTOモードドラ

イランフィードレートを設定します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pJogData ― JOG_DATA型構造体へのポインタ:

typedef struct {

LONG AxisFlags; LONG MoveDirection; DOUBLE Feedrate;

} JOG_DATA,*PJOG_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

JOG_DATA jd; …… jd.AxisFlags = AXIS_01; /* 軸1 のJOGフィードレートを設定します*/

jd.Feedrate = 2000; /* mm/min */

jd.MoveDirection = 1; /* 正方向 */

sssSetJogFeedrate(hDevice, &jd);

C#.NET

//sssOpenDevice(…)で初期化します JOG_DATA jd; … Jd.AxisFlags = AXIS_01;// 軸1 のJOGフィードレートを設定します Id.Feedrate = 2000; //mm/min jd.MoveDirection = 1; /* 正方向 */

sssSetJogFeedrate(jd);

5-5

Page 48: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.5sssSetJogFeedrate

表 5-6:sssSetjogFeedrate(2/2)

備考

• JOG_DATAのメンバAxisFlagsはJOGモードフィードレートの設定において

{AXIS_01, AXIS_02, …, AXIS_16}のいずれかの値を取ることができます。 • AUTOモードドライランフィードレートの設定では,JOG_DATAのメンバ

AxisFlagsの値はALL_AXESに固定です。 • JOG_DATAのメンバJogFeedrateは0.0と高速フィードレートの間の任意の値を

取ることができます。 • JOG_DATAのメンバMoveDirectionは1(正方向)または-1(負方向)のどちらか

の値を取ることができます。

5-6

Page 49: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.6 SssSetOverride

表 5-7:sssSetOverride

関数宣言

Unmanaged C++ HRESULT sssSetOverride(HSSDEV hDev, DOUBLE オーバーライド);

関数宣言

C#.NET Int sssSetOverride(Double nOverride);

機能 オーバーライド値を設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル override ― オーバーライド値(%) 値の範囲: 0.0 ~ 256.0

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

sssSetOverride(hDevice, 200.0);

C#.NET

//sssOpenDevice(…)で初期化します … //オーバーライド値を200%に設定します(倍速) sssSetOverride(200.0);

5-7

Page 50: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.7 sssSetOverrideRpd

表 5-8:sssSetOverrideRpd

関数宣言

Unmanaged C++ HRESULT sssSetOverrideRpd(HSSDEV hDev, DOUBLE rpdOverride);

関数宣言

C#.NET Int sssSetOverrideRpd(Double nRpdOverride);

機能 高速オーバーライド値を設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル rpdOverride ― 高速オーバーライド値(%) 値の範囲: 0.0 ~ 100.0

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

sssSetOverrideRpd(hDevice, 50.0);

C#.NET

//sssOpenDevice(…)で初期化します。 … //オーバーライドを50%に設定します(ハーフスピード) sssSetOverrideRpd(50.0);

5-8

Page 51: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.8 sssSetOvrdLock

表 5-9:sssSetOvdLock

関数宣言

Unmanaged C++ HRESULT sssSetOvrdLock(HSSDEV hDev, SHORT nState);

関数宣言

C#.NET Int sssSetOvrdLock(Int16 nState);

機能 オーバーライド値を固定します。オーバーライド値は100%に固定されます。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nState ― 0:ロック解除、1:ロック

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

C#.NET

//sssOpenDevice(…)で初期化します。 … //オーバーライドをロックし停止させる sssSetOvrdLock(1);

5-9

Page 52: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.9 sssSetInterlock

表 5-10:sssSetinterlock(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetInterlock(HSSDEV hDev, PILK_DATA pInterLockData);

関数宣言

C#.NET Int sssSetInterlock(ILK_DATA hInterLockData);

機能 軸のインターロックを設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pInterLockData ― ILK_DATA構造体へのポインタ:

typedef struct {

DWORD AxisFlags; SHORT InterLockCommand[MAX_ALLAXES];

} ILK_DATA,*PILK_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

ILK_DATA ilk; … ilk.AxisFlags = AXIS_01 | AXIS_02; /* 軸1と2をインターロック */

ilk.InterLockCommand[0] = 1;/* 軸1を正方向にロックします */

ilk.InterLockCommand[1] = -1; /*軸2を負方向にロックします */

sssSetInterlock(hDevice, &ilk);

C#.NET

//sssOpenDevice(…)を使って初期化します。 … ILK.DATA ilk; Ilk.AxisFlags=AXIS_01 | AXIS_02;//Interlock axes 1 and 2 Ilk.InterLockCommand[0]=1;//Lock axis 1 in positive direction Ilk.InterLockCommand[1]=-1;//Lock Axis 2 in negative direction sssSetInterlock(ilk);

5-10

Page 53: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.9 sssSetInterlock(続き)

表 5-11:sssSetinterlock(2/2)

備考

• ILK_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいずれかに

設定してください。 • 軸のロックを解除するにはInterLockCommand[x]の値を0に、正方向にロック

するには1、負方向にロックするには-1に設定して下さい。 • 配列の要素番号{0, 1, …, 15} は 軸定数{AXIS_01, AXIS_02, …, AXIS_16}に該当

します。

5-11

Page 54: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.10 sssSetMachinelock

表 5-12:sssSetMachinelock(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetMachinelock(HSSDEV hDev, PMLK_DATA pMachineLockData);

関数宣言

C#.NET Int sssSetMachinelock(MLK_DATA hMachineLockData);

機能 マシンロックを設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pMachineLockData ― MLK_DATA構造体へのポインタ:

typedef struct {

DWORD AxisFlags; SHORT MachineLockCommand[MAX_ALLAXES];

} MLK_DATA,*PMLK_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

MLK_DATA lk; /* 軸1と2をマシンロック設定します */

lk.AxisFlags = AXIS_01 | AXIS_02; lk.MachineLockCommand[0] = 1;/* 軸1をロックします */

lk. MachineLockCommand [1] = 0; /* 軸2をロック解除します */

sssSetMachineLock(hDevice, &lk);

C#.NET

//sssOpenDevice(…)を使って初期化します。 … MLK_DATA lk; lk.AxisFlags = AXIS_01 | AXIS_02;//Machine lock axes 1 and 2 lk.MachineLockCommand[0] = 1; 軸1をロックします

lk. MachineLockCommand [1] = 0; 軸2をロック解除します

sssSetMachineLock(lk);

5-12

Page 55: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.10 sssSetMachinelock(continued)

表 5-13:sssSetMachinelock(2/2)

備考

• MLK_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいずれかに

設定してください。 • 軸のロックを解除するにはMachineLockCommand[x]の値を0に、両方向にロッ

クするには1に設定して下さい。 • 配列の要素番号{0, 1, …, 15} は 軸定数{AXIS_01, AXIS_02, …, AXIS_16}に該当

します。

5-13

Page 56: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.11 sssReset

表 5-14:sssReset

関数宣言

Unmanaged C++ HRESULT sssReset(HSSDEV hDev);

関数宣言

C#.NET Int sssReset( );

機能 SMP環境を新たに初期化された状態にリセットします。全ての警告フラグはク

リアされ、一部の変数が初期値にリセットされます。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… sssReset(hDevice);

C#.NET

//sssOpenDevice(…)で初期化します … sssReset( );

備考 この関数を使ってシステムを通常の実行状態に戻すことができます。

5-14

Page 57: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.12 sssPresetWorkCoordinate

表 5-15:sssPresetWorkCoodinate(1/2)

関数宣言

Unmanaged C++ HRESULT sssPresetWorkCoordinate (HSSDEV hDev,

PPRESET_WORK_COORDINATE pWorkCoordData);

関数宣言

C#.NET Int sssPresetWorkCoordinate(PRESET_WORK_COORDINATE hWorkCoordData);

機能 全てのワーク座標オフセット設定をSMPモーションエンジンにプリセットし

ます。

引数

hDev ― sssOpenDevice(…)で代入されるデバイスハンドル pWorkCoordData ― PRESET_WORK_COORDINATE構造体へのポインタ:

typedef struct {

DOUBLE fWorkCoordinate[MAX_WORKOFFSET_NUM]

[MAX_ALLAXES]; // 全軸のワーク座標オフセット(mm)

} PRESET_WORK_COORDINATE, *PPRESET_WORK_COORDINATE;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

PRESET_WORK_COORDINATE presetWorkCoord; … /* 初のワーク座標(G54に該当) 軸1オフセットを設定 */

presetWorkCoord.fWorkCoordinate[0][0] = 10.0; // mm

// 全てのワーク座標オフセットを設定 … sssPresetWorkCoordinate(hDevice, &presetWorkCoord);

5-15

Page 58: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.12 sssPresetWorkCoordinate(続き)

表 5-16:sssPresetWorkCoodinate(2/2)

C#.NET

//sssOpenDevice(…)で初期化します

… PRESET_WORK_COORDINATE presetWorkCoord; // 初のワーク座標(G54に該当) 軸1オフセットを設定

presetWorkCoord.fWorkCoordinate[0] = 10.0; // mm

// 初のワーク座標(G54に該当) 軸2オフセットを設定

presetWorkCoord.fWorkCoordinate[0+MAX_WORKOFFSET_NUM] = 15.0; // mm

// 初のワーク座標(G54に該当) 軸3オフセットを設定

presetWorkCoord.fWorkCoordinate[0+2*MAX_WORKOFFSET_NUM] = 20.0; // mm

// 初のワーク座標(G55に該当) 軸1オフセットを設定

presetWorkCoord.fWorkCoordinate[1] = 25.0; // mm

// 初のワーク座標(G55に該当) 軸2オフセットを設定

presetWorkCoord.fWorkCoordinate[1+MAX_WORKOFFSET_NUM] = 30.0; // mm // 全てのワーク座標オフセットを設定 … sssPresetWorkCoordinate(presetWorkCoord);

備考 お使いのモーションプログラムでG54~G59またはsssSelectWorkCoordinate API関

数を使用する場合、先にこのAPI関数を呼び出して全軸のワーク座標オフセット

のプリセットを行なって下さい。

5-16

Page 59: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.13 sssSelectWorkCoordinate

表 5-17:sssSelectWorkCoodinate

関数宣言

Unmanaged C++ HRESULT sssSelectWorkCoordinate(HSSDEV hDev, LONG nOffsetIndex);

関数宣言

C#.NET Int sssSelectWorkCoordinate(Int32 nOffsetIndex);

機能 プリセットされたワーク座標オフセット値の中から1組を選択します。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル nOffsetIndex ― 選択されるオフセットの組を指定するインデックス番号

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* プリセットされたワークピースオフセット値の 初の1組を 新のワーク

ピース座標オフセット値として選択します*/ sssSelectWorkCoordinate(hDevice, 0);

C#.NET

//sssOpenDevice(…)で初期化します … PRESET_WORK_COORDINATE presetWorkCoord; // 初のワーク座標(G54に該当) 軸1オフセットを設定 presetWorkCoord.fWorkCoordinate[0]=10.0;//mm sssPresetWorkCoordinate(presetWorkCoord); … //プリセットされたワークピースオフセット値の 初の1組を 新のワーク

座標オフセット値として選択します sssSelectWorkCoordinate(0);

備考 nOffsetIndexは0から始まるインデックスです:インデックス0はオフセットの組

の中の 初の組を表し、1は2番目の組、2は3番目の組(以下同様)を表します。

5-17

Page 60: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.14 sssSetWorkOffset

表 5-18:sssSetWorkOffset(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetWorkOffset(HSSDEV hDev , PWORK_OFFSET_DATA

pWorkOffsetData);

関数宣言

C#.NET Int sssSetWorkOffset(WORK_OFFSET_DATA hWorkOffsetData);

機能 現在のワーク座標オフセットを設定します。

引数

hDev ― sssOpenDevice(…)で代入されるデバイスハンドル pWorkOffsetData ― WORK_OFFSET_DATA構造体へのポインタ

typedef struct {

DWORD nAxisFlags; // 設定対象となる軸を示すフラグ DOUBLE WorkOffsetValue[MAX_ALLAXES]; // ワーク座標オフセット(mm)

} WORK_OFFSET_DATA,

*PWORK_OFFSET_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

//sssOpenDevice(…)で初期化します

WORK_OFFSET_DATA wod;

… /* 2 番目と 3 番目のワーク座標オフセットを設定します */

wod.nAxisFlags = AXIS_02 | AXIS_03;

wod.WorkOffsetValue[1] = 10.0; // mm

wod.WorkOffsetValue[2] = 20.0; // mm

sssSetWorkOffset(hDevice, &wod);

5-18

Page 61: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.14 sssSetWorkOffset(続き)

表 5-19:sssSetWorkOffset(2/2)

C#.NET

//sssOpenDevice(…)で初期化します */

… WORK_OFFSET_DATA wod; /* 2番目と3番目のワーク座標オフセットを設定します */

wod.nAxisFlags = AXIS_02 | AXIS_03; wod.WorkOffsetValue[1] = 10.0; // mm

wod.WorkOffsetValue[2] = 20.0; // mm

sssSetWorkOffset(hDevice, &wod);

備考 WORK_OFFSET_DATAのメンバnAxisFlagsは次の定数の任意の組み合わせとする

ことができます。: {AXIS_01, AXIS_02, …, AXIS_16}

5-19

Page 62: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.15 sssSetToolOffset

表 5-20:sssSetToolOffset(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetToolOffset(HSSDEV hDev , PTOOL_OFFSET_DATA

pToolOffsetData);

関数宣言

C#.NET Int sssSetToolOffset(TOOL_OFFSET_DATA hToolOffsetData);

機能 全ての工具オフセットデータを設定します。

引数

hDev ― sssOpenDevice(…)で代入されるデバイスハンドル pToolOffsetData ― TOOL_OFFSET_DATA構造体へのポインタ

typedef struct {

DOUBLE fToolRadius_Geom[MAX_TOOL_NUM]; // 工具半径形状オフセット (mm)

DOUBLE fToolRadius_Wear[MAX_TOOL_NUM]; // 工具半径磨耗 オフセット (mm)

DOUBLE fToolLength_Geom[MAX_TOOL_NUM]; // 工具長形状オフセット (mm)

DOUBLE fToolLength_Wear[MAX_TOOL_NUM]; // 工具長磨耗オフセット (mm)

} TOOL_OFFSET_DATA, *PTOOL_OFFSET_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

TOOL_OFFSET_DATA tod; … /* 初の工具半径、長さ、形状、磨耗オフセットを設定します */

tod.fToolRadius_Geom[0] = 10.0; // mm

tod.fToolRadius_Wear[0] = 1.0; // mm

tod.fToolLength_Geom[0] = 40.0; // mm

tod.fToolLength_Wear[0] = 10.0; // mm

// 全ての工具オフセットデータを設定します … sssSetToolOffset(hDevice, &tod);

5-20

Page 63: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.15 sssSetToolOffset(続き)

表 5-21:sssSetToolOffset(2/2)

C#.NET

//sssOpenDevice(…)で初期化します … TOOL_OFFSET_DATA tod; // 初の工具半径、長さ、形状、磨耗オフセットを設定します tod.fToolRadius_Geom[0] = 10.0; // mm

tod.fToolRadius_Wear[0] = 1.0; // mm

tod.fToolLength_Geom[0] = 40.0; // mm

tod.fToolLength_Wear[0] = 10.0; // mm

// 全ての工具オフセットデータを設定します … sssSetToolOffset(tod);

5-21

Page 64: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

Soft Servo SYSTEMS, INC

5.16 sssSetAxisSymbols

表 5-22:sssSetAxisSymbols

関数宣言

Unmanaged C++ HRESULT sssSetAxisSymbols(HSSDEV hDev, LPCSTR pAxisSymbolString);

関数宣言

C#.NET Int sssSetAxisSymbols(String pAxisSymbolString);

機能 軸シンボル(X, Y, Z, … etc.)を設定します。これらのシンボルはモーションプロ

グラムで使用されるシンボルとして使用されます。

引数 hDev ― sssOpenDevice(…)で代入されるデバイスハンドル pAxisSymbolString ― 軸シンボル文字列へのポインタ。この文字列の内 初の文字

は軸1のシンボルに該当し、以下2番目の文字は軸2に該当します(以下同様)。

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

CHAR sSymbolString[MAX_ALLAXES]; … /* 軸1, 2, 3 のシンボルを X, Y, Zに設定します */

strcpy (sSymbolString, “XYZ”); sssSetAxisSymbols(hDevice, sSymbolString);

例 C#.NET

sssOpenDevice(…)で初期化します

… // 軸1, 2, 3 のシンボルを X, Y, Zに設定します

strcpy sSymbolString= “XYZ”; sssSetAxisSymbols( sSymbolString);

備考

• 各軸に有効なシンボルは次に示す文字に限られます。

U, V, W, X, Y, Z, A, B, C, D, E

• sSymbolStringの文字列長はMAX_ALLAXES以下である必要があります。 モーションプログラムで使用されない軸がある場合は、その軸のシンボル

をスペース(空白)で指定してください。

5-22

Page 65: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 5 章: システムコントロールコマンド用 API

5-23

Soft Servo SYSTEMS, INC

5.17 sssSetMSTBLock

表 5-23:sssSetMSTBLock

関数宣言

Unmanaged C++ HRESULT sssSetMSTBLock ( HSSDEV hDev, SHORT nState );

関数宣言

C#.NET int sssSetMSTBLock( Int16 nState );

機能 M, S, T and B block lockをセットします。このコードは自動的に削除されます。

引数 hDev – sssOpenDevice(…)で代入されるデバイスハンドル nState – 0: ロック解除 1: ロック

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

例 C#.NET

sssOpenDevice(…)で初期化します ...

//MSTB lock をオンにする sssSetMSTBLock(1);

Page 66: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

第6章: マニュアルオペレーションコマンド用API

6.1 sssJogStart

表 6-1:sssJogStart

関数宣言

Unmanaged C++ HRESULT sssJogStart(HSSDEV hDev, PJOG_DATA pJogData);

関数宣言

C#.NET int sssJogStart( JOG_DATA hJogData );

機能 pJogDataで選択された軸のJOGを指定のフィードレート及び方向で開始します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pJogData ― JOG_DATA型の構造体へのポインタ:

typedef struct {

DWORD AxisFlags; //Axis to move

LONG MoveDirection; //1, -1

DOUBLE Feedrate; //mm/min

}JOG_DATA, *PJOG_DATA;

戻り値 SWAPI_ERROR_SUCCESS - 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

JOG_DATA jd; jd.AxisFlags = AXIS_01; /* 軸1のJOG移動 */

jd.Feedrate = 2000; /* mm/min */

jd.MoveDirection = 1; /* 正方向 */

sssSetNcMode(hDevice, SSS_OPMODE_JOG); sssJogStart(hDevice, &jd);

例 C#.NET

sssOpenDevice(…)で初期化します ... JOG_DATA jd;

jd.AxisFlags = AXIS_01; /*軸 1 の JOG 移動*/

jd.Feedrate = 2000; /* mm/min */

jd.MoveDirection = 1; /* 正方向*/

sssSetNcMode(hDevice, SSS_OPMODE_JOG);

sssJogStart(hDevice, &jd);

備考

JOG_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいずれかに設

定してください。 JOG_DATAのメンバMoveDirectionは以下の3つの値の内のいずれかを取ること

ができます。1:正方向、–1:負方向、または0:動作の停止 JOG_DATAのメンバJogFeedrateは0.0と高速フィードレートの間の任意の値を取

ることができます。

6-1

Page 67: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.2 sssJogStop

表 6-2:sssJogStop

関数宣言

Unmaganed C++ HRESULT sssJogStop(HSSDEV hDev);

関数宣言

C#.NET int sssJogStop( );

機能 JOGを停止します

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/* ジョグ移動を停止します */

sssJogStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します ... //ジョグ移動を停止します sssJogStop();

備考 この関数は全てのJOG軸を停止します。

6-2

Page 68: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.3 sssRapidStart

表 6-3:sssRapidStart

関数宣言

Unmanaged C++ HRESULT sssRapidStart(HSSDEV hDev, PRPD_DATA pRpdData);

関数宣言

C#.NET int sssRapidStart( RPD_DATA hRpdData );

機能 pRpdDataで指定される軸と方向で高速移動を開始します

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pRpdData ― RPD_DATA型構造体へのポインタ:

typedef struct {

DWORD AxisFlags; //Axis to move

LONG MoveDirection; //1, -1

}RPD_DATA, *PRPD_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

RPD_DATA rd; rd.AxisFlags = AXIS_01; /* 軸1高速移動 */

sssSetNcMode(hDevice, SSS_OPMODE_RAPID); sssRapidStart(hDevice, &rd);

例 C#.NET

sssOpenDevice(…)で初期化します ...

RPD_DATA rd;

rd.AxisFlags = AXIS_01; //軸 1 高速移動 sssSetNcMode(SSS_OPMODE_RAPID);

sssRapidStart(rd);

備考

• RPD_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいずれか

に設定してください。 • RPD_DATAのメンバMoveDirectionは1(正方向)または-1(負方向)のどちら

かの値を取ることができます。 • 高速移動のフィードレートはコントロール&マシンパラメータにおいて

RapidFeedrateとして指定されます。RapidFeedrateは該当する軸の許容 大

フィードレートです。実行の 中に高速フィードレートは高速オーバーラ

イドによりオーバーライドされることがあります。高速オーバーライドは

sssSetOverrideRpd関数で設定されます。

6-3

Page 69: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.4 sssRapidStop

表 6-4:sssRapidStop

関数宣言

Unmanaged C++ HRESULT sssRapidStop(HSSDEV hDev);

関数宣言

C#.NET int sssRapidStop( );

機能 高速移動を停止します。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/*高速移動を停止します */

sssRapidStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します ...

//高速移動を停止します sssRapidStop();

備考 この関数は全ての高速移動中の軸を停止します。

6-4

Page 70: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.5 sssPosStart

表 6-5:sssPosStart(1/5)

関数宣言

Unmanaged C++ HRESULT sssPosStart(HSSDEV hDev, PPOS_DATA pPosData);

関数宣言

C#.NET int sssPosStart( POS_DATA hPosData );

機能 各軸を連動、または独立させて指定位置への移動を開始します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pPosData ― POS_DATA型構造体へのポインタ(下記定義):

typedef struct {

DWORD AxisFlags; // 移動軸 LONG InterpolationMode; // 補間モード LONG PositionType; // 絶対値または相対値 LONG SmoothingMode; // スムージングモード LONG InPosCheckMode; // インポジションチェックモード DWORD DataTypeFlag; // モーションデータタイプフラグ DOUBLE Position[MAX_ALLAXES]; DOUBLE Position[MAX_ALLAXES];// 指定位置 (mm) DOUBLE Velocity[MAX_ALLAXES]; // 指定速度 (mm/min)

} POS_DATA, *PPOS_DATA; sssPosStart(…)により、指定された軸が指定位置に移動します。各軸は連動し

て移動するか、または独立して移動します。移動先の位置は絶対座標

(PositionTypeをSSS_ABSOLUTEに設定)または現在位置からの相対距離

(PositionTypeをSSS_RELATIVEに設定)(mm単位)で指定できます。. AxisFlagsは移動する軸を指定し、次の定数の任意の組み合わせとすることがで

きます。: {AXIS_01, AXIS_02, …, AXIS_16} InterpolationModeフラグはモーションの補間を設定します:

INTPLN_INDIVIDUAL ― 軸はそれぞれ設定された速度で独立して移動します。 INTPLN_RAPID ― 軸はNC&マシンパラメータ設定の高速フィードレートで設定され

ているそれぞれの 高速度で移動します。 INTPLN_LINEAR ― 軸の移動は連動して行なわれ、それぞれのモーションで定義

されるベクトルについてはその経路に従います。この場合、Velocity[0]を設定し

たいベクトル速度に設定してください。 INTPLN_CONTINUOUS – インポジションのチェックを行いません。 INTPLN_CIRCULAR_CW ― 時計回り円弧補間です。(詳細は例を参照して下さい) INTPLN_CIRCULAR_CCW ― 反時計回り円弧補間です。(詳細は例を参照して下

さい) INTPLN_DWELL ― 指定された軸はPOS_DATA構造体のPositionフィールドの

[ms]の間静止します。 INTPLN_EXPO_POS – 正指数補間 INTPLN_EXPO_NEG – 負指数補間 INTPLN_EXPO_SPLINE –

6-5

Page 71: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.5sssPosStart (続き)

表 6-6:sssPosStart(2/5)

引数 (続き)

PositionTypeメンバは以下の3つの定数の内いずれかを取ることができます:

SSS_RELATIVE ― 相対距離移動 SSS_ABSOLUTE_FB ― 指定されたフィードバック絶対位置に移動します。 SSS_ABSOLUTE_CMD ― 指定されたコマンド絶対位置に移動します。 SSS_ABSOLUTE_CMD_WORKPIECE – 指定されたワーク座標系絶対位置に移動し

ます。 SmoothingModeメンバは速度プロファイルの形状を加減速の制御により決定し

ます。以下の内いずれかを取ることができます:

NO_SMOOTHING ― 加減速なし SMOOTH_LINEAR ― 線形(台形)スムージング SMOOTH_BELLSHAPE ― 釣り鐘型(S字)スムージング SMOOTH_EXPONENTIAL ― 指数スムージング InPosCheckModeメンバは以下の2つの定数の内いずれかを取ることができま

す:

0 ― モーション完了後に全ての軸のインポジションをチェックしない 1 ― モーション完了後に軸のインポジションをチェックする

DataTypeFlagメンバは位置データのデータ型を指定します。 下位ビットから

始まるそれぞれのビット値で各軸のデータ型を指定します:

0 ― 浮動小数点型 1 ― 整数型(位置データは機器の 小整数単位の倍数で丸められます)

Positionメンバは指令位置を指定します。位置の解釈(相対・絶対あるいは整

数型・浮動小数点型)はPositionTypeメンバとDataTypeFlagメンバによって決定

されます。 Velocityメンバは速度を指定します。速度の解釈はそれぞれの補間モードによ

り決定されます(詳細は例を参照して下さい)。

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

6-6

Page 72: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.5 sssPosStart (続き)

表 6-7:sssPosStart(3/5)

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

POS_DATA pd; // 個別補間の例 pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_INDIVIDUAL; /* 個別補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離を指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 線形スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2100; /* 軸1は +2100 mm移動 */

pd.Position[2] = -7500; /*軸3は –7500 mm移動 */

// それぞれの軸に速度を指定(個別速度)

pd.Velocity[0] = 400; /*軸1 速度400 mm/min */

pd.Velocity[3] = 600; /*軸3 速度600 mm/min */

sssPosStart(hDevice, &pd); // 直線補間の例 pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_LINEAR; /* 線形補間 */

pd.PositionType = SSS_ABSOLUTE_CMD; /* 絶対値移動コマンド指定 */

pd.SmoothingMode = SMOOTH_BELLSHAPE; /* 釣り鐘型スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2100; /* 軸1は +2100 mm移動 */

pd.Position[2] = -7500; /*軸3は –7500 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度1000 mm/min */

sssPosStart(hDevice, &pd); // 円弧補間の例 (円弧半径指定)

pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_ INTPLN_CIRCULAR_CCW; /* 反時計回り補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 線形スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2000; /* 軸1は +2000 mm移動 */

pd.Position[2] = 2000; /* 軸3は +2000 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度1000 mm/min */

// 円弧半径設定 pd.Velocity[1] = 2000; /* 円弧半径 2000 mm */

sssPosStart(hDevice, &pd);

6-7

Page 73: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.5 sssPosStart (続き)

表 6-8:sssPosStart(4/5)

Unmanaged C++ (続き)

//円弧補間の例 (円弧中心指定)

pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_ INTPLN_CIRCULAR_CW; /*時計回り補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 直線スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2000; /* 軸1は +2000 mm移動 */

pd.Position[2] = 2000; /* 軸3は +2000 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度1000 mm/min */

// 第1移動軸の円弧中心設定 pd.Velocity[2] = 2000; /* 円弧中心は移動開始位置から2000mmの位置 */

// 第2移動軸の円弧中心設定 pd.Velocity[3] = 0.0; /* 円弧中心は移動開始位置から0.0mmの位置 */

sssPosStart(hDevice, &pd);

例 C#.NET

sssOpenDevice(…)で初期化します ...

sssSetNcMode(SSS_OPMODE_POS);

POS_DATA pd;

// 個別補間の例 pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_INDIVIDUAL; /* 個別補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離を指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 直線スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2100; /* 軸1は +2100 mm移動 */

pd.Position[2] = -7500; /*軸3は –7500 mm移動 */

// それぞれの軸に速度を指定(個別速度)

pd.Velocity[0] = 400; /*軸1 速度400 mm/min */

pd.Velocity[3] = 600; /*軸 3 速度 600 mm/min */ sssPosStart(pd);

// 直線補間の例 pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_LINEAR; /* 直線補間 */

pd.PositionType = SSS_ABSOLUTE_CMD; /* 絶対値移動コマンド指定 */

pd.SmoothingMode = SMOOTH_BELLSHAPE; /* 釣り鐘型スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

6-8

Page 74: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.5 sssPosStart (続き)

表 6-9:sssPosStart(5/5)

例 C#.NET

(続き)

// それぞれの軸に位置を設定 pd.Position[0] = 2100; /* 軸1は +2100 mm移動 */

pd.Position[2] = -7500; /*軸3は –7500 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度 1000 mm/min */ sssPosStart(pd);

// 円弧補間の例 (円弧半径指定)

pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_ INTPLN_CIRCULAR_CCW; /* 反時計回り円弧補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 直線スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2000; /* 軸1は +2000 mm移動 */

pd.Position[2] = 2000; /* 軸3は +2000 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度1000 mm/min */

// 円弧半径設定 pd.Velocity[1] = 2000; /* 円弧半径 2000 mm */

sssPosStart(pd); //円弧補間の例 (円弧中心指定)

pd.AxisFlags = AXIS_01 | AXIS_03; /* 軸1と軸3を移動 */

pd.InterpolateMode = INTPLN_ INTPLN_CIRCULAR_CW; /*時計回り円弧補間 */

pd.PositionType = SSS_RELATIVE; /* 移動距離指定 */

pd.SmoothingMode = SMOOTH_LINEAR; /* 線形スムージング */

pd.InPosCheckMode = 0; /* インポジションはチェックしない */

pd.DataTypeFlag = 0; /* 全て浮動小数点 */

// それぞれの軸に位置を設定 pd.Position[0] = 2000; /* 軸1は +2000 mm移動 */

pd.Position[2] = 2000; /* 軸3は +2000 mm移動 */

// 速度ベクトルを指定 pd.Velocity[0] = 1000; /* ベクトル速度1000 mm/min */

// 第1移動軸の円弧中心設定 pd.Velocity[2] = 2000; /* 円弧中心は移動開始位置から2000mmの位置 */

// 第2移動軸の円弧中心設定 pd.Velocity[3] = 0.0; /* 円弧中心は移動開始位置から0.0mmの位置 */

sssPosStart(pd);

備考 配列の要素番号は0から始まり、要素番号{0, 1, …, 15}は軸定数{AXIS_01, AXIS_02,

…, AXIS_16}に該当します。

6-9

Page 75: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.6 sssPosStop

表 6-10:sssPosStop

関数宣言

Unmanaged C++ HRESULT sssPosStop(HSSDEV hDev);

関数宣言

C#.NET int sssPosStop( );

機能 sssPosStartにより開始された位置決め移動を停止(一時停止)します。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/*2点間移動を停止します */

sssPosStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します ...

//2点間移動を停止します 。 sssPosStop();

備考 sssPosContinue関数を使用することにより、停止(一時停止)された2点間移動を

再開できる場合があります。

6-10

Page 76: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.7 sssPosContinue

表 6-11:sssPosContinue

関数宣言

Unmanaged C++ HRESULT sssPosContinue(HSSDEV hDev);

関数宣言

C#.NET int sssPosContinue( );

機能 sssPosStopにより一時停止されていた2点間移動を再開します。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/* 一時停止中の移動を再開 */

sssPosContinue(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します ...

//一時停止中の移動を再開

sssPosContinue();

備考 SssPosStartでは一時停止されている2点間移動を再開できません。

6-11

Page 77: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.8 sssPosCancel

表 6-12:sssPosCancel

関数宣言

Unmanaged C++ HRESULT sssPosCancel(HSSDEV hDev);

関数宣言

C#.NET int sssPosCancel( );

機能 2点間移動をキャンセル/終了します

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/* 2点間移動をキャンセルします */

sssPosCancel(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します ...

// 2 点間移動をキャンセルします

sssPosCancel();

備考 新たなsssPosStart関数呼び出しは、 後の2点間移動が完了するかsssPosCancel

によってキャンセルされた場合にのみ有効です。

6-12

Page 78: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.9 sssPosSetBackupData

表 6-13:sssPosSetBackupData

関数宣言

Unmanaged C++ HRESULT sssPosSetBackupData ( HSSDEV hDev, PPOS_DATA pPosData );

関数宣言

C#.NET int sssPosSetBackupData( POS_DATA hPosData );

機能 位置決め移動データをバッファに設定します。データはsssPosStart2で使用でき

ます。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pPosData ― 以下で定義される構造体、POS_DATA型へのポインタ typedef struct {

DWORD AxisFlags; // 移動する軸 LONG InterpolationMode; // 補間モード LONG PositionType; // 相対か絶対 LONG SmoothingMode; // スムージングモード LONG InPosCheckMode; // インポジションチェックモード //0: インポジションチェックをしない, 1:ブロックの 後でインポジションチェック DWORD DataTypeFlag; //各々の軸のモーションタイプのフラグ (整数型/浮動小数点型) (整数型プログラミン

グ等) DOUBLE Position[MAX_ALLAXES]; // 位置指令値 (mm)

DOUBLE Velocity[MAX_ALLAXES]; // 速度指令値 (mm/min)

} POS_DATA, *PPOS_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

例 C#.NET

sssOpenDevice(…)で初期化します ...

POS_DATA posData;

posData.AxisFlags = 1; // X 軸を動かす

posData.InterpolationMode = INTPLN_LINEAR; //線形補間

posData.PositionType = SSS_RELATIVE; //相対ポジショニング

posData.SmoothingMode = SMOOTH_LINEAR; //線形スムージング

posData.InPosCheckMode = 1; //動きの 後でインポジションチェック

posData.DataTypeFlag = 0; //位置データは浮動小数点として解釈されます

posData.Postion[0] = 50.0; //X 軸を 50mm 位置に移動します posData.Velocity[0] = 500.0; //X 軸を 500mm/min のフィードレートに動かします

sssPosSetBackupData(posData);

6-13

Page 79: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.10 sssPosStart2

表 6-14:sssPosStart2

関数宣言

Unmanaged C++ HRESULT sssPosStart2( HSSDEV hDev, LONG AxisFlags, LONG MoveDirection );

関数宣言

C#.NET int sssPosStart2( Int32 AxisFlags, Int32 MoveDirection );

機能 バッファに保存された位置決め移動を開始します。到達不可能な位置指令もあらかじ

め保存しておくことができます。

例:PLCを用いた特定ボタンの位置移動への割り当てなど。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル AxisFlags – 位置決め移動のための指令フラグ。どの定数(あるいはその組み合わせ)

に も付けることが可能。{AXIS_01, AXIS_02, …, AXIS_16} MoveDirection – 移動方向 (1: 正方向, -1 逆方向)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

例 C#.NET

sssOpenDevice(…)で初期化します ...

POS_DATA posData;

//ポジションデータをセットアップします (sssPosSetBackupData は機能記述を参照く

ださい)

sssPosSetBackupData(posData);

...

sssPosStart2(1,1); //保存したポジションコマンドをスタート

6-14

Page 80: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.11 sssHomeStart

表 6-15:sssHomeStart

関数宣言

Unmanaged C++ HRESULT sssHomeStart(HSSDEV hDev, LONG axisFlags, LONG homeCommand);

関数宣言

C#.NET int sssHomeStart( Int32 AxisFlags, Int32 homeCommand );

機能 axisFlagsにより選択された軸のホーム移動を開始し、homeTypeで指定される方

法でホーム位置を検出します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル axisFlags ― ホーム位置へ移動する軸を指定します。このフラグは次の定数のうち

1つあるいは任意の組み合わせとすることができます: {AXIS_01, AXIS_02,

…, AXIS_16} homeCommand ― 次の6つの値の内のいずれかを取ります:

1 ― 自動ホーム移動 (ホーム移動開始またはホーム位置復帰)

2 ― ホーム移動開始 (Zパルス検出)

3 ― ホーム位置復帰 (Zパルス検出なし)

4 ― 第2リファレンス位置復帰 5 ― 第3リファレンス位置復帰 6 ― 第4リファレンス位置復帰 0: も近いグリッドを検出

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

LONG laxisFlags; LONG lhomeType; laxisFlags = AXIS_01 | AXIS_03; /* ホーム軸1及び3 */

homeCommand = 2; /* ホーム移動開始 */

sssSetNcMode(hDevice, HOME); sssHomeStart(hDevice, laxisFlags, homeCommand);

例 C#.NET

sssOpenDevice(…)で初期化します ...

Int32 laxisFlags;

laxisFlags = AXIS_01 | AXIS_03; // ホーム軸1及び3

homeCommand = 2; // ホーム移動開始

sssSetNcMode(SSS_OPMODE_HOME);

sssHomeStart(laxisFlags, homeCommand);

備考 ホーム移動の説明と手順詳細については「SMPパラメータ及び関数リファレン

スマニュアル」を参照して下さい。

6-15

Page 81: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.12 sssHomeStop

表 6-16:sssHomeStop

関数宣言

Unmanaged C++ HRESULT sssHomeStop(HSSDEV hDev, LONG axisFlags);

関数宣言

C#.NET int sssHomeStop( Int32 AxisFlags );

機能 axisFlagsで指定される軸のホーム移動を停止します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル axisFlags ― ホーム位置へ移動する軸を指定します。このフラグは次の定数の

うち1つあるいは任意の組み合わせとすることができます: {AXIS_01,

AXIS_02, …, AXIS_16}

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

LONG laxisFlags; /* 軸2及び4のホーム移動を停止します */

laxisFlags = AXIS_02 | AXIS_04; sssHomeStop(hDevice, laxisFlags);

例 C#.NET

sssOpenDevice(…)で初期化します

...

Int32 laxisFlags;

// 軸2及び4のホーム移動を停止します

laxisFlags = AXIS_02 | AXIS_04;

sssHomeStop(laxisFlags);

備考 ホーム移動が停止された後、任意のホームコマンドを使用することで(その前

に実行されていたコマンドに関係なく)ホーム移動を再実行することができま

す。

6-16

Page 82: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

Soft Servo SYSTEMS, INC

6.13 sssHndwlStart

表 6-17:sssHndwlStart

関数宣言

Unmanaged C++ HRESULT sssHndwlStart(HSSDEV hDev, PHNDWL_DATA pHndwlData);

関数宣言

C#.NET int sssHndwlStart( HNDWL_DATA hHndwlData );

機能 ハンドホイールによって制御される軸を割り当てます。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pHndwlData ― HNDWL_DATA構造体へのポインタ

typedef struct {

DWORD AxisFlags; //移動軸 DOUBLE Multiple; //てい倍数の値

LONG Reserved_Long; //予備

} HNDWL_DATA, *PHNDWL_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

HNDWL_DATA hd; hd.AxisFlags = AXIS_02; hd.Multiple = X10; /* 1クリックで1機械単位の10倍移動します */

sssHndwlStart(hDevice, &hd);

例 C#.NET

sssOpenDevice(…)で初期化します

...

HNDWL_DATA hd;

hd.AxisFlags = AXIS_02;

hd.Multiple = X10; //1クリックで1機械単位の10倍移動します

sssHndwlStart(hd);

備考

• HNDWL_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいず

れかに設定してください。 • HNDWL_DATAのメンバMultipleは{X1, X10, X100, X1000}のいずれかに設

定してください。

6-17

Page 83: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 6 章: マニュアルオペレーションコマンド用 API

6-18

Soft Servo SYSTEMS, INC

6.14 SssHndwlStop

表 6-18:sssHndwlStop

関数宣言

Unmanaged C++ HRESULT sssHndwlStop(HSSDEV hDev);

関数宣言

C#.NET int sssHndwlStop( );

機能 ハンドホイール入力を無効にします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

sssHndwlStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

… sssHndwlStop();

Page 84: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

第7章: 自動オペレーションコマンド用API

7.1 sssAutoOpenFile

表 7-1:sssAutoOpenFile

関数宣言

Unmanaged C++ HRESULT sssAutoOpenFile(HSSDEV hDev, LPCSTR pFileName);

関数宣言

C#.NET int sssAutoOpenFile( String pAutoFileName );

機能

指定されたリアルタイムSMPモーションパーサーのモーションプログラムフ

ァイルを開きます。AUTO動作が開始されるとSMPモーションパーサーはこの

ファイルからモーションプログラムを読み出して解析し、その情報を内部リア

ルタイムブロックデータバッファに格納します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル pFileName ― モーションプログラムファイルへのフルパスを含む文字列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

CHAR *file = “C:/ncdata/myGcodes.dat”; sssAutoOpenFile(hDevice, file);

例 C#.NET

sssOpenDevice(…)で初期化します

...

String filePath = "C:/ncdata/myGcodes.dat";

sssAutoOpenFile(filePath);

備考

• pFileNameはモーションプログラムファイルへのフルパスを含む必要があ

ります。 • sssAutoStart/sssSetNcModeがsssAutoOpenFileの直後に呼ばれる場合、

sssAutoOpenFileとsssAutoStart/sssSetNcModeの間に 低でも50[ms]のプロ

グラム遅延を設けてください。詳細は「1.2 SMPモーション及びロジック

API関数呼び出し」を参照して下さい。 • sssAutoOpenFile が sssSetNcModeの直後に呼ばれる場合、sssSetNcMode と

sssAutoOpenFileの間に 低でも50[ms]のプログラム遅延を設けてくださ

い。 詳細は、「8.2.1 SMPモーション及びロジックAPI関数呼び出し」を参

照して下さい。

7-1

Page 85: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.2 sssAutoOpenFile2

表 7-2:sssAutoOpenFile2

関数宣言

Unmanaged C++ HRESULT sssAutoOpenFile2(HSSDEV hDev, LPCSTR pFileName);

関数宣言

C#.NET int sssAutoOpenFile2( String pAutoFileName );

機能 この関数はsssAutoOpenFileの改良版です。sssAutoOpenFileはMAX_PATHとして

フルパスの文字列の長さに限界がありますが、sssAutoOpenFile2関数には文字

列の長さに限界がありません。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル pFileName ― モーションプログラムファイルへのフルパスを含む文字列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

CHAR *file = “C:/ncdata/myGcodes.dat”; sssAutoOpenFile2(hDevice, file);

例 C#.NET

sssOpenDevice(…)で初期化します

...

String filePath = "C:/ncdata/myGcodes.dat";

sssAutoOpenFile2(filePath);

備考

• pFileNameはモーションプログラムファイルへのフルパスを含む必要があ

ります。 • sssAutoStart/sssSetNcModeがsssAutoOpenFile2の直後に呼ばれる場合、

sssAutoOpenFile2とsssAutoStart/sssSetNcModeの間に 低でも50[ms]のプ

ログラム遅延を設けてください。詳細は「1.2 SMPモーション及びロジッ

クAPI関数呼び出し」を参照して下さい。 • sssAutoOpenFile2 が sssSetNcMode の直後に呼ばれる場合、sssSetNcMode と

sssAutoOpenFile2の間に 低でも50[ms]のプログラム遅延を設けてくださ

い。 詳細は「8.2.1 SMPモーション及びロジックAPI関数呼び出し」を参

照して下さい。

7-2

Page 86: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.3 sssAutoStart

表 7-3:sssAutoStart (1/2)

関数宣言

UnManaged C++ HRESULT sssAutoStart(HSSDEV hDev, LONG blockBufType);

関数宣言

C#.NET int sssAutoStart( Int32 blockBufType );

機能 バッファに格納されているモーションブロックデータの処理を開始します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル blockBufType ― 使用するブロックバッファを選択します:

RT_BLOCK_BUF:リアルタイムSMPモーションパーサーがサポート する内部ブロックバッファ

USER_BLOCK_BUF:ユーザー定義のモーションブロックバッファ (関係するAPIから直接アクセスされる場合もあります)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… /* モーションバッファにデータを格納します */

… sssAutoStart(hDevice, USER_BLOCK_BUF);

7-3

Page 87: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

表 7-4:sssAutoStart (2/2)

C#.NET

sssOpenDevice(…)で初期化します

...

sssSetNcMode(SSS_OPMODE_AUTO); // NC モードを AUTO にセットします

Servoworks G-Code Parser Case

// G コード プログラムファイルをモーションブロックバッファに読み込みます

sssAutoOpenFile("C:/ncdata/myprogram.dat"); // G コード プログラムファイルを開

けます

System.Threading.Thread.Sleep(50); // 継続する前にファイルがロードされているか

を確認するために 50ms スリープ状態にしてください

sssAutoStart(RT_BLOCK_BUF); // G コード プログラムをスタートします

User Block Buffer Case

// ユーザ定義されたブロックをモーションブロックバッファに読み込みます

MOTION_BLOCK_BUF motionBlock1;

//モーションブロック1のストラクチャーメンバを読み込みます (sssAddOneBlock の

API 記述を参照ください)

MOTION_BLOCK_BUF motionBlock2;

//モーションブロック2ストラクチャメンバを読み込みます (sssAddOneBlock の API

記述を参照ください)

MOTION_BLOCK_BUF motionBlock3;

//モーションブロック3ストラクチャメンバを読み込みます(sssAddOneBlock の API 記

述を参照ください)

sssAddOneBlock(motionBlock1);

sssAddOneBlock(motionBlock2);

sssAddOneBlock(motionBlock3);

sssAutoStart(USER_BLOCK_BUF); // モーションブロックの系列を始めてください

備考

• あるブロックバッファタイプでAUTOモードが開始されると、そのプログ

ラムが終了するかAUTOモードがリセットされるまではそれを変更する

ことができません。 • sssAutoStartがsssAutoOpenFileまたはsssAutoRewindの直後に呼ばれる場

合、sssAutoOpenFileとsssAutoStartまたはsssAutoRewindの間に 低でも

50[ms]のプログラム遅延を設けてください。詳細は『SMP Motion

Development Kit (MDK)プログラミングマニュアル』内の「8.2.1 SMPモーション

及びロジックAPI関数呼び出し」を参照して下さい。

7-4

Page 88: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.4 sssAutoStop

表 7-5:sssAutoStop

関数宣言

Unmanaged C++ HRESULT sssAutoStop(HSSDEV hDev);

関数宣言

C#.NET int sssAutoStop( );

機能 バッファに格納されているモーションブロックデータの処理を停止(一時停止)

します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… /* GCodeファイルをロード/モーションバッファに格納して処理を開始 */

… sssAutoStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

sssSetNcMode(SSS_OPMODE_AUTO); // NC mode を AUTO にセットします

// Gcode ファイルを読み込むか、モーションバッファを読み込み処理を開始します

sssAutoOpenFile("C:/ncdata/myprogram.dat"); // G コード プログラムファイルをオ

ープンします

System.Threading.Thread.Sleep(50); //継続する前にファイルがロードされているか

を確認するために 50ms スリープ状態にしてください

sssAutoStart(RT_BLOCK_BUF); // G コード プログラムをスタートします

...

sssAutoStop(); // Gコード プログラムを停止します

備考 sssAutoStopによりSMPの実行が停止された場合、sssAutoStartによってバッファ

からのモーションデータの処理を再開することができます。

7-5

Page 89: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.5 sssAutoRewind

表 7-6:sssAutoRewind

関数宣言

Unmanaged C++ HRESULT sssAutoRewind(HSSDEV hDev);

関数宣言

C#.NET int sssAutoRewind( );

機能 モーションプログラムファイルを 初まで巻き戻してモーションブロックデ

ータバッファに格納します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… /* GCodeファイルをロード/モーションバッファに格納 */

… sssAutoRewind(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

sssSetNcMode(SSS_OPMODE_AUTO); // NC mode を AUTO にセットします

// G-code ファイルを読み込んで処理し始めます

sssAutoOpenFile("C:/ncdata/myprogram.dat"); // G コード プログラムファイルをオ

ープンします

System.Threading.Thread.Sleep(50); //継続する前にファイルがロードされているか

を確認するために 50ms スリープ状態にしてください

sssAutoStart(RT_BLOCK_BUF); // G コード プログラムをスタートします

...

// G-code ファイルの実行を一時停止します

sssAutoStop(); // G コード プログラムを停止します

...

sssAutoRewind(); // G コードプログラムの始まりまで巻き戻します

...

sssAutoStart(); //Gコードプログラムをもう一度 初から開始します

備考

• sssAutoRewindはSMPモーションパーサーに対してのみ適用され汎用モー

ションブロックデータバッファに対しては適用されません。 • sssAutoStartがsssAutoRewindの直後に呼ばれる場合、sssAutoOpenFileと

sssAutoRewindの間に 低でも50[ms]のプログラム遅延を設けてください。

詳細は、『SMP Motion Development Kit (MDK)プログラミングマニュアル』内の

『SMP Motion Development Kit (MDK)プログラミングマニュアル』内の「8.2.1

SMPモーション及びロジックAPI関数呼び出し」を参照して下さい。

7-6

Page 90: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.6 sssAutoReset

表 7-7:sssAutoReset

関数宣言

Unmanaged C++ HRESULT sssAutoReset(HSSDEV hDev);

関数宣言

C#.NET int sssAutoReset( );

機能 AUTOモードをリセットします。既にモーションプログラムファイルが開かれ

てロードされている場合、そのファイルを閉じてアンロードします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… /* AUTOモードをリセット*/

… sssAutoReset(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO モードを使用します

...

sssAutoReset(); // AUTOモードをリセットします

備考 sssAutoResetはSMPモーションパーサーに対してのみ適用され汎用モーション

ブロックデータバッファに対しては適用されません。

7-7

Page 91: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.7 sssSetSingleBlockMode

表 7-8:sssSetSingleBlockMode

関数宣言

Unmanaged C++ HRESULT sssSetSingleBlockMode (HSSDEV hDev , LONG singleBlockMode);

関数宣言

C#.NET int sssSetSingleBlockMode( Int32 singleBlockMode );

機能 AUTO実行中にシングルブロックモードをONにします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル singleBlockMode ― 0: Off, 1: On

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

sssSetSingleBlockMode(hDevice, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

sssSetSingleBlockMode(1);

...

// AUTO モードを利用します; シングルブロックモードがセットされている場合、

AUTO モードはそれぞれプログラムを 1 行実行する毎に一時停止します。

// プログラム実行を再開するには、sssAutoStartを各行が実行されるごとに実行しま

す。

7-8

Page 92: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.8 sssSetDryRunMode

表 7-9:sssSetDryRunMode

関数宣言

Unmanaged C++ HRESULT sssSetDryRunMode(HSSDEV hDev, LONG dryRunMode);

関数宣言

C#.NET int sssSetDryRunMode( Int32 dryRunMode );

機能 AUTO実行のドライランテストをONにします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル dryRunMode ― 0: Off, 1: On

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

sssSetDryRunMode(hDevice, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

sssSetDryRunMode(1);

...

// AUTO モードを実行します; ドライランモードがセットされているので、AUTO モー

ドはツールがマシンにセットされてないと仮定し、高速で各軸を動かします

7-9

Page 93: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.9 sssSetOptStopMode

表 7-10:sssSetOptStopMode

関数宣言

Unmanaged C++ HRESULT sssSetOptStopMode(HSSDEV hDev, LONG optStopMode);

関数宣言

C#.NET int sssSetOptStopMode( Int32 optStopMode );

機能 オプショナルストップモードをONまたはOFFします。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル optStopMode ― 1:モードON、2:モードOFF

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* オプショナルストップモードをONします */

sssSetOptStopMode(hDevice, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// オプショナルストップモードを ON にします

sssSetOptStopMode(1);

...

// AUTO モードを利用します

7-10

Page 94: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.10 sssSetOptSkipMode

表 7-11:sssSetOptSkipMode

関数宣言

Unamaged C++ HRESULT sssSetOptSkipMode(HSSDEV hDev, LONG optSkipMode);

関数宣言

C#.NET int sssSetOptSkipMode( Int32 optSkipMode );

機能 オプショナルスキップモードをONまたはOFFします。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル optSkipMode ― use 1 to turnモードon, 0 to turnモードoff

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… /* オプショナルスキップモードをONします */

sssSetOptSkipMode(hDevice, 1);

例 C#.NET

sssOpenDevice(…)で初期化します ...

// オプショナルスキップモードを ON にします

sssSetOptSkipMode(1);

...

// AUTOモードを利用します

7-11

Page 95: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.11 sssHndwlIntStart

表 7-12:sssHndwlIntStart

関数宣言

Unmanaged C++ HRESULT sssHndwlIntStart(HSSDEV hDev, PHNDWL_DATA pHndwlData);

関数宣言

C#.NET int sssHndwlIntStart( HNDWL_DATA hHndwlData );

機能 ハンドホイール割込みをONにしてAUTO実行中のオーバーラップ制御を可能

にします。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pHndwlData ― HNDWL_DATA構造体へのポインタ

typedef struct {

LONG AxisFlags; LONG Multiple;

} HNDWL_DATA,*PHNDWL_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

HNDWL_DATA hd; hd.AxisFlags = AXIS_02; hd.Multiple = X10; /* ハンドホイール1クリックあたり10カウント */

… /* AUTO実行モードをON */

… sssHndwlIntStart(hDevice, &hd);

例 C#.NET

sssOpenDevice(…)で初期化します ...

// AUTO CNC モードを ON

...

HNDWL_DATA hd;

hd.AxisFlags = AXIS_02;

hd.Multiple = X10; // ハンドホイール 1 クリックあたり 10 カウント

sssHndwlIntStart(hd); // ハンドホイールの遮断をON

備考

• HNDWL_DATAのメンバAxisFlagsは{AXIS_01, AXIS_02, …, AXIS_16}のいず

れかに設定してください。 • HNDWL_DATAのメンバMultipleは{X1, X10, X100, X1000}のいずれかに設

定してください。

7-12

Page 96: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.12 sssHndwlIntStop

表 7-13:sssHndwlIntStop

関数宣言

Unmanaged C++ HRESULT sssHndwlIntStop(HSSDEV hDev);

関数宣言

C#.NET int sssHndwlIntStop( );

機能 ハンドホイール割込みをOFFにしてAUTO実行中のオーバーラップ制御を無効

にします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… sssHndwlIntStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO CNC モードを ON

...

sssHndwlIntStop(); //ハンドホイール遮断をOFF

7-13

Page 97: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.13 sssSetAuxCodeFinish

表 7-14:sssSetAutoCodeFinish

関数宣言

Unmanaged C++ HRESULT sssSetAuxCodeFinish(HSSDEV hDev, LONG auxCodeFlag);

関数宣言

C#.NET int sssSetAuxCodeFinish( Int32 auxCodeFlag );

機能 SMPモーションエンジンに対し追加コード(M, S, T コード)が完了したことを知らせ

ます。主にラダーワークスPLCエンジンがロードされていない場合の追加コー

ドの制御に使用します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル auxCodeFlag ― 完了した追加コードを指定するlong integer型データフラグ。これ

ら3つの 下位ビットはM, S ,Tコードをそれぞれ表しています:

auxCodeFlag = 0x1; // M code finished

auxCodeFlag = 0x2; // S code finished

auxCodeFlag = 0x4; // T code finished

このフラグはM, S, Tコードの組み合わせとすることも可能です:

auxCodeFlag = 0x4 + 0x2; // S 及び T コードが完了

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

… /* Set M code finish */

sssSetAuxCodeFinish(hDevice, 0x1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO モードを利用します

...

// M コードは G コードプログラムで検出されたときに、プログラムが M コードの終わり

を待って一時停止を終了します。

sssSetAuxCodeFinish(0x1);

7-14

Page 98: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.14 sssSetBlockSearch

表 7-15:sssSetBlockSearch(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetBlockSearch ( HSSDEV hDev, LONG nActionType, LONG

nSearchStopType, LONG *pIndex );

関数宣言

C#.NET

int sssSetBlockSearch( Int32 nActionType, Int32 nSearchStopType, ref Int32

rIndex );

機能

Gコードの特定のN番号、T番号、M番号について検索します。この関数は

ServoWorks CNCエンジンに対して検索を開始するよう信号を送るだけであり、検索

結果を戻り値から参照することはできません。検索結果を得るためには、

SSSSTATUS.nBlockSearchStateの値を参照して下さい。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nActionType―ブロックサーチの実行タイプ:

0 ― BLOCKSEARCH_CLEAR ― サーチブロック情報を消去 1 ― BLOCKSEARCH_BY_SQNUM ― Nサーチ(ServoWorks CNC エンジンによ

って自動的に認識されたN番号だけを検索。 2 ― BLOCKSEARCH_BY_GCOUNT ― プログラムの先頭から指定された行数

だけをサーチ 3 ― BLOCKSEARCH_BY_TOOLNUM ― Tサーチ(ツール番号によってブロック

を検索)

4 ― BLOCKSEARCH_BY_POS ― システム予約 (使用禁止) ― 現在の機械位

置に も近いブロック終了位置によってブロックを検索 5 ― BLOCKSEARCH_BY_MCODENUM ― Mサーチ 6 ― BLOCKSEARCH_BY_SCODENUM ― Sサーチ 7 ― BLOCKSEARCH_BY_NCODENUM ― Nサーチ(Gコード内で表記されてい

るN番号を検索) nSearchStopType ― ブロックサーチの停止タイプ:

0 ― BLOCKSEARCH_STOP_NO ― システム予約(使用禁止) ― 検索されたブ

ロックを現在のブロックとして設定しない 1 ― BLOCKSEARCH_STOP_BLOCKBEGIN ― システム予約(使用禁止) ― 検

索済みのブロックを現在のブロックとしてそのブロックの先頭で停止 2 ― BLOCKSEARCH_STOP_BLOCKEND ― 常にこの値を使用 ― 検索済み

のブロックは現在のブロックとしてそのブロックの末尾で停止 pIndex ― N番号またはT番号を識別 SSSSTATUS.nBlockSearchState:

–1 ― BLOCKSEARCH_STATE_FAILED ― 検索行が見つからない 0 ― BLOCKSEARCH_STATE_NONE ― 現在検索中でない 1 ― BLOCKSEARCH_STATE_DONE ― 検索完了(検索成功) 2 ― BLOCKSEARCH_STATE_1STBLK ― システム予約 3 ― BLOCKSEARCH_STATE_SEARCHING ― 現在検索中 10 ― BLOCKSEARCH_STATE_FOUND ― 検索成功 11 ― BLOCKSEARCH_STATE_MOVING ― 検索された行に軸が移動中

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです

7-15

Page 99: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.14 sssSetBlockSearch (続き)

表 7-16:sssSetBlockSearch(2/2)

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO モードを起動し、プログラムをロードします。

sssSetNcMode(SSS_OPMODE_AUTO);

sssAutoOpenFile("C:/ncdata/myprogram.dat");

//ブロック N500 をブロックサーチします

Int32 index = 500;

sssSetBlockSearch(BLOCKSEARCH_BY_NCODENUM,

BLOCKSEARCH_STOP_BLOCKEND, ref index);

備考

• ブロックサーチ関数の呼び出しは次の順番で行って下さい: 1) sssSetBlockSearch 2) sssGetBlockSearch 3) sssMoveToBlock

• さらに詳細については「ServoWorksデベロップメントキット(SDK)プログラミングマニ

ュアル」8.3.3と9.3を参照して下さい。

7-16

Page 100: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.15 sssGetBlockSearch

表 7-17:sssGetBlockSearch(1/2)

関数宣言

Unmanaged C++

HRESULT sssGetBlockSearch ( HSSDEV hDev, LONG nActionType, LONG

nSearchStopType, LONG *pIndex, DOUBLE *pBlockEndPos, CHAR *pLine,

PMODAL_DATA pModal );

関数宣言

C#.NET

int sssGetBlockSearch( Int32 nActionType, Int32 nSearchStopType, ref Int32 rIndex,

ref Double[] rBlockEndPos, ref Byte[] rLine, ref MODAL_DATA rModal );

機能 検索行の位置とモーダルデータを取得します(内部ではGコードを実行して特

定の位置に到達するまで軸の移動をシミュレーションします)。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nActionType ― ブロックサーチの実行タイプ -1 ― BLOCKSEARCH_GET_CURRENTINFO ― 現在のブロック行(検

索された行)の情報を取得 -2 ― BLOCKSEARCH_GET_LASTINFO ― 現在の行の直前の行の情報

を取得 0 ― BLOCKSEARCH_STOP_NO ― システム予約(使用禁止) ― 検

索済みのブロックを現在のブロックとして設定できない 1 ― BLOCKSEARCH_STOP_BLOCKBEGIN ― システム予約(使用禁止)

検索済みのブロックを現在のブロックとして設定し、そのブロック

の先頭で停止する 2 ― BLOCKSEARCH_STOP_BLOCKEND ― 常にこの値を使用 ― 検

索済みのブロックを現在のブロックとして設定し、そのブロックの

末尾で停止する pIndex ― システム予約のパラメータ。常に含まれる変数-2へのポインタを

渡す pBlockEndPos ― 検索済みの行を実行後、各軸の位置を含む配列を返す pLine ― Gコードの初めから数えた行番号を返す(N番やT番は含まない) pModal ― MODAL_DATA型(下記で定義)構造体へのポインタ typedef struct {

DWORD ModalActiveFlag; // モーダルデータを実行する動的フラグ SHORT Hcode; // ツール長アドレス SHORT OneShot_Gcode; // モーダルでないGコード SHORT GCodeGroup[MAX_GCODE_GROUPS]; // FANUC Mシリーズの定義によるモーダルなGコードグループ DOUBLE Feed; // 線形フィードレート (mm/min)

LONG MSTB_Flag; // MSTBコードフラグ LONG S_Index; // スピンドル関数のインデックス LONG Scode[MAX_ALLAXES]; // スピンドル関数コード LONG Mcode[MAX_MULTI_MCODES]; // M関数コード LONG Tcode; // T関数コードTool function code

LONG Bcode; // 2番目のM関数コード } MODAL_DATA, *PMODAL_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです

7-17

Page 101: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.15 sssGetBlockSearch (続き)

表 7-18:sssGetBlockSearch(2/2)

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO モードを起動しプログラムをロードします

sssSetNcMode(SSS_OPMODE_AUTO);

sssAutoOpenFile("C:/ncdata/myprogram.dat");

// ブロック N500 をブロックサーチします

Int32 index = 500;

sssSetBlockSearch(BLOCKSEARCH_BY_NCODENUM,

BLOCKSEARCH_STOP_BLOCKEND, ref index);

...

// ブロックサーチ完了後、検索したブロックポジションとモデルデータを取得します

Int32 index2 = -2;

Double[] blockEndPos;

Byte[] line

MODAL_DATA modal;

sssGetBlockSearch(BLOCKSEARCH_GET_CURRENTINFO,

BLOCKSEARCH_STOP_BLOCKEND, ref index2, ref blockEndPos, ref line, ref modal);

備考

• ブロックサーチ関数の呼び出しは次の順番で行って下さい: 1) sssSetBlockSearch 2) sssGetBlockSearch 3) sssMoveToBlock

• さらに詳細については「ServoWorksデベロップメントキット(SDK)プログラミングマニ

ュアル」8.3.3と9.3を参照して下さい。

7-18

Page 102: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.16 sssBlockSearchStop

表 7-19:sssBlockSearchStop

関数宣言

Unmanaged C++ HRESULT sssBlockSearchStop ( HSSDEV hDev );

関数宣言

C#.NET int sssBlockSearchStop( );

機能 何らかの理由でブロックサーチが自動停止できない場合にブロックサーチを

停止します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです

備考 詳細については「ServoWorksデベロップメントキット(SDK)プログラミングマニュアル」

8.3.3と9.3を参照して下さい。

7-19

Page 103: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

Soft Servo SYSTEMS, INC

7.17 sssMoveToBlock

表 7-20:sssMoveToBlock(1/2)

関数宣言

Unmanaged C++ HRESULT sssMoveToBlock ( HSSDEV hDev, LONG nIndex, LONG nAxisFlags,

DOUBLE fFeedrate, LONG nSetCurrentBlock );

関数宣言

C#.NET

int sssMoveToBlock( Int32 nIndex, Int32 nAxisFlags, Double fFeedrate,

Int32 nSetCurrentBlock );

機能 ブロックサーチで発見された行のコードを実行後、軸をプログラミングされた

位置へ移動させます。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nIndex ― システム予約のパラメータ。常に-1を渡す nAxis Flags ― 移動する軸を記述するマスクを返す NOAXIS = 0

AXIS_01 = 1

AXIS_02 = 2

AXIS_03 = 4

AXIS_04 = 8

AXIS_05 = 16

AXIS_06 = 32

AXIS_07 = 64

AXIS_08 = 128

AXIS_09 = 256

AXIS_10 = 512

AXIS_11 = 1024

AXIS_12 = 2048

AXIS_13 = 4096

AXIS_14 = 8192

AXIS_15 = 16384

AXIS_16 = 32768

ALLAXES = 65535

fFeedrate ― フィードレートを定める nSetCurrentBlock – システム予約のパラメータ。常に1を渡す。

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです

7-20

Page 104: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 7 章: 自動オペレーションコマンド用 API

7-21

Soft Servo SYSTEMS, INC

7-17 sssMoveToBlock(続き)

表 7-21:sssMoveToBlock(2/2)

例 C#.NET

sssOpenDevice(…)で初期化します

...

// AUTO モードを起動しプログラムをロードします。

sssSetNcMode(SSS_OPMODE_AUTO);

sssAutoOpenFile("C:/ncdata/myprogram.dat");

// ブロック N500 をブロックサーチします

Int32 index = 500;

sssSetBlockSearch(BLOCKSEARCH_BY_NCODENUM,

BLOCKSEARCH_STOP_BLOCKEND, ref index);

...

// ブロックサーチが完了したら、検索したブロックポジションとモーダルデータを取得し

ます。

Int32 index2 = -2;

Double[] blockEndPos;

Byte[] line

MODAL_DATA modal;

sssGetBlockSearch(BLOCKSEARCH_GET_CURRENTINFO,

BLOCKSEARCH_STOP_BLOCKEND, ref index2, ref blockEndPos, ref line, ref modal);

...

// 望ましいデータが取得できたら、ブロックの方へマシンを移動します。

Int32 axisFlags = ALLAXES; // 全軸を移動

Double feedrate = 1000; // 1000mm/min のフィードレートで移動

sssMoveToBlock(-1, axisFlags, feedrate, 1);

注意 nAxis FlagsにはPLC軸を含めないで下さい。

備考

• ブロックサーチ関数の呼び出しは次の順番で行って下さい: 1) sssSetBlockSearch 2) sssGetBlockSearch 3) sssMoveToBlock

• さらに詳細については「ServoWorksデベロップメントキット(SDK)プログラミングマニ

ュアル」8.3.3と9.3を参照して下さい。

Page 105: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

第8章: テスト及びサンプリングコマンド用API

8.1 sssTestVoltageStart

表 8-1:sssTestVoltageStart

関数宣言

Unmanaged C++ HRESULT sssTestVoltageStart(HSSDEV hDev, PTEST_DATA pTestData);

関数宣言

C#.NET int sssTestVoltageStart( TEST_DATA hTestData );

機能 DAC出力電圧をテストします。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pTestData ― テストの条件を指定します:

typedef struct{

DWORD AxisFlags; LONG WaveForm; // SSS_TESTWAVE_SIN, SSS_TESTWAVE_SQUARE

DOUBLE Frequency; // 0 -- 500 Hz

DOUBLE Magnitude; // テスト電圧 mV

}TEST_DATA,*PTEST_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; TEST_DATA td; … td.AxisFlags = AXIS_01 | AXIS_02; td.Frequency = 10; // 10 Hz

td.Magnitude = 100; // 100 mV

td.WaveForm = SSS_TESTWAVE_SIN; sssTestVoltageStart(hDev, &td);

例 C#.NET

sssOpenDevice(…)で初期化します

...

TEST_DATA td;

td.AxisFlags = AXIS_01 | AXIS_02; // 1 軸と 2 軸をテストします

td.Frequency = 10; // 10 Hz

td.Magnitude = 100; // 100 mV

td.WaveForm = SSS_TESTWAVE_SIN; // sin 波形電圧を出力します

sssTestVoltageStart(td);

備考 Frequencyの値が 0[Hz]に設定された場合、電圧出力はMagnitudeで指定される

値に設定されその電圧を維持します(変化しません)。

8-1

Page 106: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

8.2 sssTestVoltageStop

表 8-2:sssTestVoltageStop

関数宣言

Unmanaged C++ HRESULT sssTestVoltageStop (HSSDEV hDev);

関数宣言

C#.NET int sssTestVoltageStop( );

機能 DAC出力電圧のテストを停止します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … sssTestVoltageStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

TEST_DATA td;

//td を書き込みます (sssTestVoltageStart の API についての説明を参照ください)

sssTestVoltagesStart(td);

...

sssTestVoltageStop();

8-2

Page 107: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

8.3 sssTestPosStart

表 8-3:sssTestPosStart

関数宣言

Unmanaged C++ HRESULT sssTestPosStart(HSSDEV hDev, PTEST_DATA pTestData);

関数宣言

C#.NET int sssTestPosStart( TEST_DATA hTestData );

機能 位置決めループのパフォーマンスをテストします。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pTestData ― テストの条件を指定します:

typedef struct{

DWORD AxisFlags; DOUBLE Frequency; // 0 -- 500 Hz

DOUBLE Magnitude; // mm for position test

LONG WaveForm; // SSS_TESTWAVE_SIN, SSS_TESTWAVE_SQUARE

}TEST_DATA,*PTEST_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; TEST_DATA td; … td.AxisFlags = AXIS_01 | AXIS_02; td.Frequency = 10; // 10 Hz

td.Magnitude = 20; // 20 mm

td.WaveForm = SSS_TESTWAVE_SIN; sssTestPosStart(hDev, &td);

例 C#.NET

sssOpenDevice(…)で初期化します

...

TEST_DATA td;

td.AxisFlags = AXIS_01 | AXIS_02; // 1 軸と 2 軸をテストします

td.Frequency = 10; // 10 Hz

td.Magnitude = 20; // 20 mm

td.WaveForm = SSS_TESTWAVE_SIN; // サイン波形ポジションコマンドを出力します

sssTestPosStart(td);

備考 Frequencyメンバの値が 0[Hz]に設定された場合、Magnitudeで指定される位置

に設定され、その位置を維持します(変化しません)。

8-3

Page 108: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

8.4 sssTestPosStop

表 8-4:sssTestPosStop

関数宣言

Unmanaged C++ HRESULT sssTestPosStop (HSSDEV hDev);

関数宣言

C#.NET int sssTestPosStop( );

機能 位置決めループのパフォーマンスのテストを停止します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … sssTestPosStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

TEST_DATA td;

// tdを書き込みます (sssTestPosStart の API についての説明を参照ください)

sssTestPosStart(td);

...

sssTestPosStop();

8-4

Page 109: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

8.5 sssSampleStart

表 8-5:sssSampleStart

関数宣言

Unmanaged C++ HRESULT sssSampleStart (HSSDEV hDev, LONG sampleCode, LONG sampleNum);

関数宣言

C#.NET int sssSampleStart( Int32 sampleCode, Int32 sampleNum );

機能 SMPモーションエンジンのデバイスドライバのデータサンプリングを開始し

ます。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル SampleCode は以下の定数の組合せとすることができます:

SSS_SAMPLE_DAC ― 全軸DACコマンドサンプル SSS_SAMPLE_POS ― 全軸フィードバックポジションサンプル SSS_SAMPLE_POSCMD ― 全軸位置決めコマンドサンプル SSS_SAMPLE_POSERR ― 全軸位置決めエラーサンプル SSS_SAMPLE_VEL ― 全軸速度 サンプル SSS_SAMPLE_SVIO ― 全軸サーボI/O (警告、スイッチ、サーボON)サン

プル SSS_SAMPLE_GENIO ― 全チャンネル汎用デジタルI/O サンプル SSS_SAMPLE_ADC ― 全チャンネルADCサンプル

sampleNum ― 取得するサンプル数(サーボループサイクルあたり1サンプル)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* 1000サイクル分の全軸の速度をサンプリングします */

sssSampleStart(hDevice, SSS_SAMPLE_VEL, 1000);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// 1000サイクルのための全ての軸の速度をサンプリングします

sssSampleStart(SSS_SAMPLE_VEL, 1000);

備考 sampleNumの 大は10,000です。

8-5

Page 110: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

Soft Servo SYSTEMS, INC

8.6 sssSampleStop

表 8-6:sssSampleStop

関数宣言

Unmanaged C++ HRESULT sssSampleStop (HSSDEV hDev);

関数宣言

C#.NET int sssSampleStop( );

機能 SMPモーションエンジンのデバイスドライバのデータサンプリングを停止し

ます。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … sssSampleStop(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// サンプリングを開始します

sssSampleStart(SSS_SAMPLE_VEL, 1000);

...

// サンプリングを停止します

sssSampleStop();

8-6

Page 111: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 8 章: テスト及びサンプリングコマンド用 API

8-7

Soft Servo SYSTEMS, INC

8.7 sssSaveSampledData

表 8-7:sssSaveSampledData

関数宣言

Unmanaged C++ HRESULT sssSaveSampledData(HSSDEV hDev, LPCSTR pSampleFilePath);

関数宣言

C#.NET int sssSaveSampledData( String pSampleFilePath );

機能 サンプリングされたデータをテキスト(ASCII)形式のデータファイルとして保

存します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル pSampleFilePath ― 保存されるサンプリングデータファイルの位置を示すフルパスを

指定する文字列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … /* After sampling data */

sssSaveSampledData(hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// サンプリングを開始します

sssSampleStart(SSS_SAMPLE_VEL, 1000);

...

// After sampling data

sssSaveSampledData("C:/sampleData");

Page 112: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

第9章: PLCコマンド用API PLC Commands

9.1 sssPLC_Start

表 9-1:sssPLC_Start

関数宣言

Unmanaged C++ HRESULT sssPLC_Start (HSSDEV hDev, PPLC_SETUP pData);

関数宣言

C#.NET int sssPLC_Start( ref PLC_SETUP hPlcSetupData );

機能 PLCをスタートします。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pData ― PLC_SETUP構造体へのポインタ:

typedef struct {

BYTE d[PLC_COMMAND_DATA_SIZE_D]; BYTE k[PLC_COMMAND_DATA_SIZE_K]; BYTE c[PLC_COMMAND_DATA_SIZE_C]; BYTE t[PLC_COMMAND_DATA_SIZE_T]; BYTE r9000[PLC_COMMAND_DATA_SIZE_R9000]; BYTE a[PLC_COMMAND_DATA_SIZE_A]; BYTE spare[PLC_COMMAND_DATA_SIZE_SPARE];

} PLC_SETUP, *PPLC_SETUP;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … sssPLC_Start (hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

PLC_SETUP plcData;

sssPLC_Start(plcData); // PLCサービスをスタートします

備考 PLC 関数呼び出しは以下の順序で指定する必要があります

1) sssStartInterrupt(HD),

2) Plc_ini_start(PLC_setdata) and 3) sssPLC_Start(HD, PLC_setdata).

9-1

Page 113: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.2 sssPLC_Stop

表 9-2:sssPLC_Stop

関数宣言

Unmanaged C++ HRESULT sssPLC_Stop (HSSDEV hDev);

関数宣言

C#.NET int sssPLC_Stop( );

機能 PLCを停止します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … sssPLC_Stop (hDevice);

例 C#.NET

sssOpenDevice(…)で初期化します

...

PLC_SETUP plcData;

sssPLC_Start(plcData); // PLC サービスをスタートします

...

sssPLC_Stop(); // PLC サービスを停止します

9-2

Page 114: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.3 sssSetPLCFBit

表 9-3:sssSetPLCFBit

関数宣言

Unmanaged C++

HRESULT sssSetPLCFBit (HSSDEV hDev, SHORT nAddr, SHORT nBit,

SHORTnData);

関数宣言

C#.NET int sssSetPLCFBit( Int16 nAddr, Int16 nBit, Int16 nData );

機能 PLCのFデータアドレスの値をビットで設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Fデータアドレスを指定します nBit ― 0から始まるビット番号を指定します nData ― 設定するビット値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // 150.0を1に設定します sssSetPLCFBit (hDevice, 150, 0, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// F150.0 を 1 に設定します

sssSetPLCFBit (150, 0, 1);

備考 このAPIにおける有効なFデータアドレスは150~199です。他の全てのFデータ

アドレスはシステムが使用します。

9-3

Page 115: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.4 sssSetPLCFByte

表 9-4:sssPLCFByte

関数宣言

Unmanaged C++ HRESULT sssSetPLCFByte (HSSDEV hDev, SHORT nAddr, BYTE nData);

関数宣言

C#.NET int sssSetPLCFByte( Int16 nAddr, Byte nData );

機能 PLCのFデータアドレスの値をバイトで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Fデータアドレスを指定します nData ― 設定するバイト値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // 150を0x5Aに設定します sssSetPLCFByte (hDevice, 150, 0x5A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// // F150を0x5Aに設定します

sssSetPLCFByte (150, 0x5A);

備考 このAPIにおける有効なFデータアドレスは150~199です。他の全てのFデータ

アドレスはシステムが使用します。

9-4

Page 116: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.5 sssSetPLCFWord

表 9-5:sssSetPLCFWord

関数宣言

Unmanaged C++ HRESULT sssSetPLCFWord (HSSDEV hDev, SHORT nAddr, WORD nData);

関数宣言

C#.NET int sssSetPLCFWord( Int16 nAddr, UInt16 nData );

機能 PLCのFデータアドレスの値をワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Fデータアドレスを指定します nData ― 設定するワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // F150~151を0xA55Aに設定します sssSetPLCFWord (hDevice, 150, 0xA55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// F150~151 を 0xA55A に設定します

sssSetPLCFWord (150, 0xA55A);

備考 このAPIにおける有効なFデータアドレスは150~198です。他の全てのFデータ

アドレスはシステムが使用します。

9-5

Page 117: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.6 sssSetPLCFDword

表 9-6:sssSetPLCFDWord

関数宣言

Unmanaged C++ HRESULT sssSetPLCFDword (HSSDEV hDev, SHORT nAddr, DWORD nData);

関数宣言

C#.NET int sssSetPLCFDWord( Int16 nAddr, UInt32 nData );

機能 PLCのFデータアドレスの値をダブルワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Fデータアドレスを指定します nData ― 設定するDワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // F150~153を0x5AA5A55Aに設定します sssSetPLCFDword (hDevice, 250, 0x5AA5A55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// F150~153を0x5AA5A55Aに設定します

sssSetPLCFDword (250, 0x5AA5A55A);

備考 このAPIにおける有効なFデータアドレスは150~196です。他の全てのFデータ

アドレスはシステムが使用します。

9-6

Page 118: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.7 sssSetPLCRBit

表 9-7:sssSetPLCRBit

関数宣言

Unmanaged C++ HRESULT sssSetPLCRBit (HSSDEV hDev, SHORT nAddr, SHORT nBit,

SHORTnData);

関数宣言

C#.NET int sssSetPLCRBit( Int16 nAddr, Int16 nBit, Int16 nData );

機能 PLCのRデータアドレスの値をビットで設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Rデータアドレスを指定します nBit ― 0から始まるビット番号を指定します nData ― 設定するビット値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // R0.0を1に設定します sssSetPLCRBit (hDevice, 0, 0, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// R0.0を1に設定します

sssSetPLCRBit (0, 0, 1);

備考 このAPIにおける有効なRデータアドレスは0~999です。

9-7

Page 119: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.8 sssSetPLCRByte

表 9-8:sssSetPLCRByte

関数宣言

Unmanaged C++ HRESULT sssSetPLCRByte (HSSDEV hDev, SHORT nAddr, BYTE nData);

関数宣言

C#.NET int sssSetPLCRByte( Int16 nAddr, Byte nData );

機能 PLCのRデータアドレスの値をバイトで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Rデータアドレスを指定します nData ― 設定するバイト値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // R0を0x5Aに設定します sssSetPLCRByte (hDevice, 0, 0x5A);

例 C#.NET

sssOpenDevice(…)で初期化します ...

// R0を0x5Aに設定します

sssSetPLCRByte (0, 0x5A);

備考 このAPIにおける有効なRデータアドレスは0~999です。

9-8

Page 120: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.9 sssSetPLCRWord

表 9-9:sssSetPLCRWord

関数宣言

Unmanaged C++ HRESULT sssSetPLCRWord (HSSDEV hDev, SHORT nAddr, WORD nData);

関数宣言

C#.NET int sssSetPLCRWord( Int16 nAddr, UInt16 nData );

機能 PLCのRデータアドレスの値をワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Rデータアドレスを指定します nData ― 設定するワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // R0~1を0xA55Aに設定します sssSetPLCRWord (hDevice, 0, 0xA55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// R0~1 を 0xA55A に設定します

sssSetPLCRWord (0, 0xA55A);

備考 このAPIにおける有効なRデータアドレスは0~998です。

9-9

Page 121: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.10 sssSetPLCRDword

表 9-10:sssSetPLCRDWord

関数宣言

Unmanaged C++ HRESULT sssSetPLCRDword (HSSDEV hDev, SHORT nAddr, DWORD nData);

関数宣言

C#.NET int sssSetPLCRDWord( Int16 nAddr, UInt32 nData );

機能 PLCのRデータアドレスの値をダブルワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Rデータアドレスを指定します nData ― 設定するDワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // R0~3を0x5AA5A55Aに設定します sssSetPLCRDword (hDevice, 0, 0x5AA5A55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// R0~3 を 0x5AA5A55A に設定します

sssSetPLCRDword (0, 0x5AA5A55A);

備考 このAPIにおける有効なRデータアドレスは0~996です。

9-10

Page 122: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.11 sssSetPLCRData

表 9-11:sssSetPLCRData

関数宣言

Unmanaged C++ HRESULT sssSetPLCRData ( HSSDEV hDev, SHORT nAddr, BYTE* pData,

PLONG pSize );

関数宣言

C#.NET int sssSetPLCRData( Int16 nAddr, Byte[] rData, Int32 rSize );

機能 PLCのRデータアドレスの値を指定されたバイト数のデータで設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Rデータアドレスを指定します pData ― データへのポインタ(バイト単位) pSize ― サイズへのポインタ(LONG型)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; BYTE nData[20]; … // nDataは既に初期化されています // ここでPLC R データアドレス100~119をnDataの値に設定します sssSetPLCRData (hDevice, 100, nData, 20);

例 C#.NET

sssOpenDevice(…)で初期化します

Byte nData = new Byte[20];

...

// nData は既に初期化されています

// ここで PLC R データアドレス 100~119 を nData の値に設定します

sssSetPLCRData (100, nData, 20);

備考 このAPIにおける有効なRデータアドレスは0~999です。

9-11

Page 123: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.12 sssSetPLCDBit

表 9-12:sssSetPLCDBit

関数宣言

Unmanaged C++ HRESULT sssSetPLCDBit (HSSDEV hDev, SHORT nAddr, SHORT nBit, SHORT

nData);

関数宣言

C#.NET int sssSetPLCDBit( Int16 nAddr, Int16 nBit, Int16 nData );

機能 PLCのDデータアドレスの値をビットで設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Dデータアドレスを指定します nBit ― 0から始まるビット番号を指定します nData ― 設定するビット値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // D0.0を1に設定します sssSetPLCDBit (hDevice, 0, 0, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// D0.0 を 1 に設定します

sssSetPLCDBit (0, 0, 1);

備考 このAPIにおける有効なDデータアドレスは0~1999です。

9-12

Page 124: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.13 sssSetPLCDByte

表 9-13:sssSetPLCDByte

関数宣言

Unmanaged C++ HRESULT sssSetPLCDByte (HSSDEV hDev, SHORT nAddr, BYTE nData);

関数宣言

C#.NET int sssSetPLCDByte( Int16 nAddr, Byte nData );

機能 PLCのDデータアドレスの値をバイトで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Dデータアドレスを指定します nData ― 設定するバイト値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // D0を0x5Aに設定します sssSetPLCDByte (hDevice, 0, 0x5A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// D0 を 0x5A に設定します

sssSetPLCDByte (0, 0x5A);

備考 このAPIにおける有効なDデータアドレスは0~1999です。

9-13

Page 125: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.14 sssSetPLCDWord

表 9-14:sssSetPLCDWord

関数宣言

Unmanaged C++ HRESULT sssSetPLCDWord (HSSDEV hDev, SHORT nAddr, WORD nData);

関数宣言

C#.NET int sssSetPLCDWord( Int16 nAddr, UInt16 nData );

機能 PLCのDデータアドレスの値をワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Dデータアドレスを指定します nData ― 設定するワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // D0~1を0xA55Aに設定します sssSetPLCDWord (hDevice, 0, 0xA55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// D0~1 を 0xA55A に設定します

sssSetPLCDWord (0, 0xA55A);

備考 このAPIにおける有効なDデータアドレスは0~1998です。

9-14

Page 126: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

Soft Servo SYSTEMS, INC

9.15 sssSetPLCDDword

表 9-15:sssSetPLCDDword

関数宣言

Unmanaged C++ HRESULT sssSetPLCDDword (HSSDEV hDev, SHORT nAddr, DWORD nData);

関数宣言

C#.NET int sssSetPLCDDWord( Int16 nAddr, UInt32 nData );

機能 PLCのDデータアドレスの値をダブルワードで設定します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Dデータアドレスを指定します nData ― 設定するDワード値を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; … // D0~3を0x5AA5A55Aに設定します sssSetPLCDDword (hDevice, 0, 0x5AA5A55A);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// D0~3 を 0x5AA5A55A に設定します

sssSetPLCDDword (0, 0x5AA5A55A);

備考 このAPIにおける有効なDデータアドレスは0~1996です。

9-15

Page 127: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 9 章: PLC コマンド用 API PLC Commands

9-16

Soft Servo SYSTEMS, INC

9.16 sssSetPLCDData

表 9-16:sssSetPLCDData

関数宣言

Unmanaged C++ HRESULT sssSetPLCDData ( HSSDEV hDev, SHORT nAddr, BYTE* pData,

PLONG pSize );

関数宣言

C#.NET int sssSetPLCDData( Int16 nAddr, Byte[] rData, Int32 rSize );

機能 PLCのDデータアドレスの値を指定されたバイト数のデータで設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル nAddr ― Dデータアドレスを指定します pData ― データへのポインタ(バイト単位) pSize ― サイズへのポインタ(LONG型)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; BYTE nData[40]; … // nDataは既に初期化されています // ここでPLC D データアドレス200~219をnDataの値に設定します sssSetPLCRData (hDevice, 200, nData, 40);

例 C#.NET

sssOpenDevice(…)で初期化します

Byte nData = new Byte[40];

...

// nData は既に初期化されています

// ここで PLC D データアドレス 200~219 を nData の値に設定します

sssSetPLCDData (200, nData, 40);

備考 このAPIにおける有効なDデータアドレスは0~1999です。

Page 128: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 10 章: I/O コマンド用 API

Soft Servo SYSTEMS, INC

第10章: I/Oコマンド用API

10.1 sssSetDout

表 10-1:sssSetDout(1/2)

関数宣言

Unmanaged C++ HRESULT sssSetDout(HSSDEV hDev, PDO_DATA pDout);

関数宣言

C#.NET int sssSetDout( DO_DATA hDout );

機能 VersioBus及び(または)IEEE 1394(ServoWire)のデジタル出力を設定します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pDout ― DO_DATA構造体へのポインタ

typedef struct{

DWORD ControlWord; DWORD ControlWord1; LONG DC_Dout[4]; LONG IM_Dout[8]; LONG FP_Dout; USHORT ServoWire_Dout[16];

}DO_DATA,*PDO_DATA; 出力はグループ化されています。出力のON/OFFはDO_DATAのControlWordメ

ンバを使用して16ビットまとめて設定します。 それぞれのコントロールワードのビットをONにすることで以下のようなマッ

ピングが行なわれます: Bit 0 ― DC_Dout[0]を1台目のDC-120の1番目のI/O出力にマップします Bit 1 ― DC_Dout[1]を1台目のDC-120の2番目のI/O出力にマップします Bit 2 ― DC_Dout[2]を2台目のDC-120の1番目のI/O出力にマップします Bit 3 ― DC_Dout[3]を2台目のDC-120の2番目のI/O出力にマップします Bit 4 ― IM_Output[0]を1台目のIM-200出力の0~15ビットにマップします Bit 5 ― IM_Output[1]を1台目のIM-200出力の16~31ビットにマップします Bit 6 ― IM_Output[2]を2台目のIM-200出力の0~15ビットにマップします Bit 7 ― IM_Output[3]を2台目のIM-200出力の16~31ビットにマップします Bit 8 ― IM_Output[4]を3台目のIM-200出力の0~15ビットにマップします Bit 9 ― IM_Output[5]を3台目のIM-200出力の16~31ビットにマップします Bit 10 ― IM_Output[6]を4台目のIM-200出力の0~15ビットにマップします Bit 11 ― IM_Output[7]を4台目のIM-200出力の16~31ビットにマップします Bit 12 ― FP_DoutをFPボード出力にマップします Bits 13-31 ― 予備

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

10-1

Page 129: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 10 章: I/O コマンド用 API

Soft Servo SYSTEMS, INC

10.1 sssSetDout (続き)

表 10-2:sssSetDout(2/2)

Unmanaged

C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

DO_DATA dout; … /* DC-155出力の1番目及び1番目のIM-305出力の全32ビットを設定するために

ControlWordビットの 0, 4, 5 をONにします */

dout.ControlWord = 0x0031; dout.DC_Dout[0] = 0x0ff0; /* DC-155の中央の8ビットを設定 */

/* 1番目のIM-305出力の1番目の全16ビットを設定 */

dout.IM_Output[0] = 0xffff; /* 1番目のIM-305出力の2番目の16ビットのうち下位4ビットを設定 */

dout.IM_Output[1] = 0x000f; sssSetDout(hDevice, &dout);

例 C#.NET

sssOpenDevice(…)で初期化します

...

DO_DATA dout;

// DC-155出力の1番目及び1番目のIM-305出力の全32ビットを設定するために

ControlWordビットの 0, 4, 5 をONにします */

dout.ControlWord = 0x0031;

dout.DC_Dout[0] = 0x0ff0; // DC-155 の中央の 8 ビットを設定

// 1 番目の IM-305 出力の 1 番目の全 16 ビットを設定

dout.IM_Output[0] = 0xffff;

// 1 番目の IM-305 出力の 2 番目の 16 ビットのうち下位 4 ビットを設定

dout.IM_Output[1] = 0x000f;

sssSetDout(dout);

10-2

Page 130: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 10 章: I/O コマンド用 API

Soft Servo SYSTEMS, INC

10.2 sssSetDoutBit

表 10-3:sssSetDoutBit

関数宣言

Unmanaged C++ HRESULT sssSetDoutBit(HSSDEV hDev, USHORT index, USHORT bit, USHORT

value);

関数宣言

C#.NET int sssSetDoutBit( UInt16 index, UInt16 bit, UInt16 value );

機能 単一のデジタル出力ビットを設定します。この関数はsssSetDout(…)関数(上述)

と同じ16ビットグループを使用します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル index ― グループインデックス。sssSetDout(…)関数(上述)で使用されるコントロ

ールワードのビット番号に対応しています。 bit ― 16ビットのうち設定の対象となるビット番号0~15を指定します value ― 1または0

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/* 「4」は1番目のIM-200の 初の16ビットを指します(上記 * sssSetDout(…)の‘Bit 4’の説明を参照して下さい) * 「2」はこれら16ビットの内の2番目を指し、「1」はそのビットの設定値です */

sssSetDoutBit(hDevice, 4, 2, 1);

例 C#.NET

sssOpenDevice(…)で初期化します

...

/* 「4」は1番目のIM-200の 初の16ビットを指します(上記 * sssSetDout(…)の‘Bit 4’の説明を参照して下さい) // 「2」はこれら 16 ビットの内の 2 番目を指し、「1」はそのビットの設定値です

//

sssSetDoutBit(4, 2, 1);

備考 index 及びコントロールワードビットの詳細な説明についてはsssSetDout(…)関

数の説明を参照して下さい。

10-3

Page 131: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 10 章: I/O コマンド用 API

10-4

Soft Servo SYSTEMS, INC

10.3 sssToggleDoutBit

表 10-4:sssToggleDoutBit

関数宣言

Unmanaged C++ HRESULT sssToggleDoutBit(HSSDEV hDev, USHORT index, USHORT bit);

関数宣言

C#.NET int sssToggleDoutBit( UInt16 index, UInt16 bit );

機能 ビット単位でデジタル出力をトグルします(ONならOFF,OFFならON)。index 及び bitパ

ラメータはsssSetDoutBit関数で使用されているものと同一です。ただし、選択さ

れたビットのON/OFFは自動的に選択されるため、value は設定されません。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル index ― グループインデックス。sssSetDout(…)関数(上述)で使用されるコントロ

ールワードのビット番号に対応しています。 bit ― 16ビットのうち切り替えの対象となるビット番号0~15を指定します

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

/* 1台目のDC-155の2番目のI/O出力のビット0を切り替えます */

sssToggleDoutBit(hDevice, 1, 0);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// 1 台目の DC-155 の 2 番目の I/O 出力のビット 0 を切り替えます

sssToggleDoutBit(1, 0);

備考 index 及び bitの詳細な説明についてはsssSetDout(…)関数及びsssSetDoutBit(…)

関数の説明を参照して下さい。

Page 132: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

第11章: SMPリアルタイムモジュール情報用API

11.1 sssGetStatus

表 11-1:sssGetStatus(1/8)

関数宣言

Unmanaged C++ HRESULT sssGetStatus(HSSDEV hDev, PSSS_STATUS pStatus);

関数宣言

C#.NET int sssGetStatus( ref SSS_STATUS hStatus );

機能 包括的なSMPシステムステータス情報を取得します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pStatus ― SSS_STATUS構造体へのポインタ

typedef struct {

//==モーション&サーボコントロールステータス及びフラグ==//

SHORT ServoOn[MAX_ALLAXES]; // 各軸0:サーボOFF 1:サーボON SHORT AlarmReset[MAX_ALLAXES]; // 各軸アラームリセット LONG EncoderValue[MAX_ALLAXES];

// デバイスドライバの32bitパルスカウンタ値 DOUBLE ActualPosition[MAX_ALLAXES]; // マシン座標系のフィードバック位置(mm)

DOUBLE PositionCommand[MAX_ALLAXES]; //マシン座標系の位置決めコマンド(mm)

DOUBLE ActualAxisVelocity[MAX_ALLAXES]; // mm/min

DOUBLE Reserved_DbfArray_0[MAX_ALLAXES]; // 倍精度浮動小数点配列(予備) DOUBLE Reserved_DbfArray_1[MAX_ALLAXES];

// 倍精度浮動小数点配列(予備) DOUBLE ActualVectorVelocity; // mm/min

DOUBLE VectorVelocityCommand;//mm/min

LONG ISRCounter; // 割込みサービスルーチンカウンタ LONG HndwlEncoderValue; // パルス DOUBLE ISRTime; //割込みサービスルーチンの開始からの動作時間(sec) DOUBLE HndwlPositionCounter; // mm

HNDWL_DATA HndwlData; ハンドホイール軸数と倍数 SHORT SmoothingMode; // スムージングなし、線上スムージング、 円錐型ス

ムージング、指数関数スムージング

SHORT SampleState; // 0: サンプリングなし, 1: サンプリング中, // 2: サンプリング完了, 3: サンプリングデータ保存中 LONG SampleCounter; // サイクル回数 SHORT MotionEngineState; //リアルタイムSMPモーションエンジン状態 SHORT GServerState; // リアルタイムSMPモーションパーサー実行状態 SHORT PlcState; // リアルタイムラダーワークスPLCエンジン実行状態 SHORT CommunicationState; // ハードウェア通信状態 SHORT OverPosErrFlag[MAX_ALLAXES]; // 0: Off, 1: On

SHORT InSmoothingFlag[MAX_ALLAXES]; // 0: スムージング中ではない 1: スムージング中

11-1

Page 133: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-2:sssGetStatus(2/8)

引数 (続き)

SHORT InPositionFlag[MAX_ALLAXES];

// 0: インポジションではない, 1: インポジション

SHORT Reserved_IntArray_0[MAX_ALLAXES]; //整数型配列(予備)

//============= SMPステータス及びフラグ =============//

DOUBLE MachinePos[MAX_ALLAXES]; // 機械座標系の機械位置(mm)

DOUBLE ProgramPos[MAX_ALLAXES]; // ワーク座標系のSMPプログラム位置(mm)

DOUBLE RelativePos[MAX_ALLAXES]; // 相対座標系のSMPプログラム位置(mm)

DOUBLE WorkCoordOffset[MAX_ALLAXES]; // 機械原点からのワーク座標系オフセット(mm)

DOUBLE LocalCoordOffset[MAX_ALLAXES];

//ワークピース原点からのローカル座標系オフセット (mm)

DOUBLE JogFeedrate[MAX_ALLAXES]; // mm/min

DOUBLE VectorFeedrate; // mm/min

DOUBLE DryRunFeedrate; // ドライランフィードレート DOUBLE FeedrateOverride;

// ドライランフィードレートオーバーライド(%)

DOUBLE RapidOverride; // 高速オーバーライド (%)

DOUBLE SpindleOverride; // 主軸オーバーライド(%)

LONG ManualMoveDirection; //現在のジョグデータ

LONG ManualMoveState; //現在のジョグデータ

BYTE NCMode; // NCモード BYTE OPMode; //実行モード SHORT CncStatus; // NC実行状態 SHORT AccCheckState;

// 加減速終了チェック 0: チェックしない, 1: チェックする SHORT InPositionCheckState; // インポジションチェック 0: チェックしない, 1: チェックする SHORT AtHomeFlag[MAX_ALLAXES];

// 0: ホーム位置ではない, 1: ホーム位置

SHORT AtAdditionalHomeFlag[MAX_REFERENCE_POINTS–1]

[MAX_ALLAXES]; //0: ホーム位置ではない, 1: ホーム位置

SHORT HomeState[MAX_ALLAXES]; /

/ 0: ホーム移動しない, 1: ホーム移動完了, >1: ホーム移動中 BOOL bHomeDone[MAX_ALLAXES];

// 0: ホーム移動しない, 1: ホーム移動完了 LONG AbsEncHomeDone[MAX_ALLAXES];

// アブソリュート型エンコーダホーム移動完了 LONG AbsEncHomeValue[MAX_ALLAXES];

// 記録されたAbsEncHomeValue

CHAR GCode[STATUS_GCODE_BUFFER_SIZE] [STATUS_GCODE_LINE_LENGTH]; // バッファ中のG-Code

LONG GCodeStep[STATUS_GCODE_BUFFER_SIZE]; // バッファ中のG-Codeステップ数 LONG GCodeCount[STATUS_GCODE_BUFFER_SIZE]; // バッファ中のG-Codeカウンタ

11-2

Page 134: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-3:sssGetStatus(3/8)

引数 (続き)

LONG GCodeStatus[STATUS_GCODE_BUFFER_SIZE]; // バッファ中のG-Codeステータス CHAR SubProgName[MAX_SUB_PROG_LAYER][MAX_STRING]; // サブプログラム名

SHORT AutoState; // 0: AUTOプログラム(一時)停止,

// 1: AUTOプログラム開始, 2: : AUTOプログラム終了 SHORT DryRunMode; // ドライラン 0: Off, 1: On

SHORT SingleBlockMode; // シングルブロック 0: Off, 1: On

SHORT OptStopMode; // オプショナルストップ 0: Off, 1: On

SHORT PosState; //位置モードの動作状態

SHORT HndwlIntMode; // ハンドホイール割込み 0: Off, 1: On

SHORT RTBlockBufStorage;

// リアルタイムブロックバッファストレージ SHORT NCProgramState; // Bit 0: 0-ロック解除状態, 1-ロック状態 SHORT OptSkipMode; // オプショナルスキップ 0: Off, 1: On

LONG nAutoStepControl;

//0: ステップコントロールなし >0: 前方ステップ数, <0: 逆の手順数

LONG nAutoStepCount; //蓄積されたステップ数

LONG nBlockSearchState //1: ブロックサーチ完了, 2: ブロック数による検索

SHORT BlockEnd[MAX_ALLAXES];

// モーションブロック発生パルス終了 DOUBLE CycleTime; // モーションプログラムサイクル時間(秒)

DOUBLE fActiveToolDiameter; //アクティブなツール直径 (mm)

NC_BLOCK_DATA CurrentBlock;

// 現在実行中のモーションブロックデータ SHORT InterlockStatus[MAX_ALLAXES]; // 0: ロックなし, 1: 正方向ロック, // -1: 負方向ロック SHORT MachinelockStatus[MAX_ALLAXES]; // 0:ロックなし, 1:ロック SHORT LimitSwitchPlus[MAX_ALLAXES]; // 0: Off, 1: On

SHORT LimitSwitchMinus[MAX_ALLAXES]; // 0: Off, 1: On

SHORT SoftLimitSwitchPlus[MAX_ALLAXES]; // 0: Off, 1: On

SHORT SoftLimitSwitchMinus[MAX_ALLAXES]; // 0: Off, 1: On

SHORT HomeSwitch[MAX_ALLAXES]; // 0: Off, 1: On

_PLC_COMMAND_DATA plc_data; // PLCステータスデータ //============ SMP VersioBus IIデータ =============//

// 入力データ LONG ADC[32]; // 各DCリモートインターフェースモジュールADC(12ビット)8Ch DWORD DC_Din[4]; //各DCリモートインターフェースモジュール16ビットデジタル入力 DWORD DC_Dout_ReadBack[4]; //各DCリモートインターフェースモジュール16 //ビットデジタル出力読出し LONG ServoAlarm[MAX_ALLAXES];

// 0: アラームなし, 1: 各軸アラーム

11-3

Page 135: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-4:sssGetStatus(4/8)

引数 (続き)

LONG ServoWarning[MAX_ALLAXES];

//0: 警告なし, 1: 各軸警告 LONG ServoInputSignal[MAX_ALLAXES]; // 各軸4ビットサーボアンプ入力 LONG HWIO; // ハンドホイールI/O DWORD FP_Din; // 16ビットFPオン

ボード通信機器デジタル入力

// 16ビットFPオンボード通信機器デジタル出力読出し LONG Timeout;

// 各DC及びIMリモートモジュールのタイムアウトフラグ

// 出力データ LONG Reserved_LongInt_0; // (予備) DWORD FP_Dout_Command; // 16ビットFPオンボード通信機器デジタル出力コマンド DWORD DC_Dout_Command[4]; // 各DCリモートインターフェースモジュール16ビットデジタル出力 LONG ServoCommand[MAX_ALLAXES]; // 各軸 6ビットサーボアンプコマンド DWORD DAC[MAX_ALLAXES]; // 各軸16 ビットDACカウント: 0~0xffff は -10 V~10 Vに対応 DOUBLE AnalogCommand[MAX_ALLAXES]; // 各軸アナログコマンド(mV)

// IMリモート I/Oモジュールデジタル入出力 DWORD IM_Din[8]; // 各グループ16ビットデジタル入力 DWORD IM_Dout_ReadBack[8];

// 各グループ16ビットデジタル出力読出し DWORD IM_Dout_Command[8];

// 各グループ16ビットデジタル出力コマンド

//============ SMP FireWire Data =============//

USHORT ServoWire_Din[16]; // 各ドライブ5ビットデジタル入力 USHORT ServoWire_Dout[16]; // 各ドライブ6ビットデジタル出力 SHORT ServoWire_DataLog1[16]; // 設定可能サーボドライブログデータ SHORT ServoWire_DataLog2[16]; // 設定可能サーボドライブログデータ SHORT ServoWire_DataLog3[16]; // 設定可能サーボドライブログデータ SHORT ServoWire_DataLog4[16]; // 設定可能サーボドライブログデータ // ML I/O RW

//============ SMP MECHATROLINK I/O Data =============//

DWORD ML_INIO[20];

//MECHATROLINK インターフェースモジュール 16 ビットデジタル入力

0-7: Node 2; 8-9: Node 1

DWORD ML_OUTIO[20];

// MECHATROLINK インターフェースモジュール 16 ビットデジタル入力

0-7:Node2; 8-9: Node 1

DWORD ML_Din[16];

// MECHATROLINK インターフェースモジュール 16 ビットデジタル入力

0-7: Node 2; 8-9: Node 1

11-4

Page 136: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-5:sssGetStatus(5/8)

引数 (続き)

DWORD ML_Dout[16];

// MECHATROLINK インターフェースモジュール 16 ビットデジタル出力

コマンド 0-7: Node 2; 8-9: Node 1

LONG ML_ADC[16];

// MECHATROLINK インターフェースモジュール ADC (16 ビット) 8 Ch

LONGML_DAC[16];

// MECHATROLINK インターフェースモジュール DAC (16 ビット) 8 Ch

LONG ML_CountIn[16];

// MECHATROLINK インターフェースモジュール Counter (16 ビット) 8 Ch

LONG ML_CountOut[16];

// MECHATROLINK インターフェースモジュール Counter (16 ビット) 8 Ch

LONG ML_JOY_ADC[6];

// MECHATROLINK インターフェースモジュール JOY STICK (16 ビット) 8

Ch

//===================== SYACC I/O Data =====================//

DWORD SYACC_Din[16];

// SYACC インターフェース 16 ビットデジタル入力

DWORD SYACC_Dout[16];

// SYACC インターフェース 16 ビットデジタル出力コマンド

//============= SMP Panasonic RTEX A4N Data =================//

USHORT A4N_Din[16];

// 各サーボ ドライブ 4 ビット汎用デジタル入力

USHORT A4N_Dout[16];

// 各サーボドライブ 2ビット汎用デジタル出力

USHORT AnyWire_Bit_Din[16];

// 各 AnyWire Gateway BIT モジュール 64 ビット汎用デジタル入力

USHORT AnyWire_Bit_Dout[16];

//各 AnyWire Gateway BIT モジュール 64 ビット汎用デジタル出力

USHORT AnyWire_Word_Din[16];

//各 AnyWire Gateway WORD モジュール 6 ch

USHORT AnyWire_Word_Dout[16];

//各 AnyWire Gateway WORD モジュール 6 ch

//================ Miscellaneous Data =====================//

USHORT nSpindleControlFlag[MAX_ALLAXES];

// Bit0 - [0: RPM, 1: CSS],

// Bit1 - [0: M コードによる軸開始/停止, 1: S コードによる軸開始/停止

SHORT nSpindleStatus[MAX_ALLAXES]; // 停止, CW, CCW

DOUBLE fSpindleVelCmd[MAX_ALLAXES];

LONG EmergencyStopFlag; // 0: Off, 1: On

LONG Reserved_LongInt_1; // 予備

DOUBLE SynControlError[MAX_ALLAXES];

// 機械座標系の位置決めコマンド(mm)

SHORT OverSynPosErrorFlag[MAX_ALLAXES];

LONG SynControlStatus;

SSS_STATUS, *PSSS_STATUS;

11-5

Page 137: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-6:sssGetStatus(6/8)

引数 (続き)

// モーションエンジンインターナル NC ブロックデータ構成

typedef struct {

LONG StepNo; // このブロックのステップ数

LONG SequenceNo; //

LONG GCodeCount; //

LONG BlockStatus; // サブプログラム、エラーコード, etc.

LONG BlockStatus1; // サブプログラム、エラーコード, etc.

LONG OptSkipStatus; // オプショナルスキップフラッグ.

LONG Reserved_Long[2]; // 予備

DOUBLE BlockDurationEst; // ブロック期間の推定

DOUBLE TotalSegment[MAX_ALLAXES];

// 1つのブロックデータの増分距離の合計(um)

DOUBLE MovedSegment[MAX_ALLAXES];

// ブロック内で移動した距離 (nM)

DOUBLE TeachPoint[MAX_ALLAXES];

// 元のブロックのエンドポイント, 特に R を伴う線形など

DOUBLE BlockEndPoint[MAX_ALLAXES];

//ブロック終了時の目標位置, 特に R を伴う線形など

DOUBLE OneCycleSegment[MAX_ALLAXES];

// サイクルセグメント = 個々の軸の速度コマンド (nM/cycle)

DOUBLE AxisRatio[MAX_ALLAXES];

// 各軸上のフィードレート対ベクトルフィードレート

DOUBLE OneCycleAccDec; // 1サイクルの Acc/Dec (nM/cycle^2)

DOUBLE OneCycleFeedrate; // ブロックの途中でのリニアフィードレート

(nM/cycle)

DOUBLE OneCycleFeedrate_Begin;

// ブロック開始時のリニアフィードレート (nM/cycle)

DOUBLE OneCycleFeedrate_End; // ブロック終了時のリニアフィードレート

(nM/cycle)

DOUBLE FeedLength_Total;

// リニア軸とロータリー軸を含んだ全ての軸のフィード長さの合計

DOUBLE FeedLength_Linear; // 全リニア軸のベクトルフィード長さ (um)

DOUBLE FeedLength_2D[MAX_DLACC_PLANE];

// DLACC にサポートされた全2D 平面上のベクトルフィード長さ

DWORD ActiveAxisFlags; // 移動軸

LONG InterpolationMode; // 補間モード

LONG SmoothingMode; // スムージングモード

LONG InposCheckMode; // インポジションチェックモード

SHORT InProcess[MAX_ALLAXES]; // 出力パルス生成フラグ

MODAL_DATA modal_data; // NC モーダルデータ.

LONG nFileLevel; // NC プログラムファイルレベル(サブプログラム)

LONG nFileOffset; // NC プログラムファイルオフセット (現ライン)

CHAR sFileName[MAX_STRING]; // NC プログラムファイル名(サブプログラム)

} NC_BLOCK_DATA,*PNC_BLOCK_DATA;

11-6

Page 138: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-7:sssGetStatus(7/8)

引数 (続き)

// PLC Status

typedef struct {

LONG RunFg;

LONG Reserved;

BYTE x[PLC_COMMAND_DATA_SIZE_X];

BYTE f[PLC_COMMAND_DATA_SIZE_F];

BYTE y[PLC_COMMAND_DATA_SIZE_Y];

BYTE g[PLC_COMMAND_DATA_SIZE_G];

BYTE r[PLC_COMMAND_DATA_SIZE_R];

BYTE d[PLC_COMMAND_DATA_SIZE_D];

BYTE k[PLC_COMMAND_DATA_SIZE_K];

BYTE c[PLC_COMMAND_DATA_SIZE_C];

BYTE t[PLC_COMMAND_DATA_SIZE_T];

BYTE r9000[PLC_COMMAND_DATA_SIZE_R9000];

BYTE a[PLC_COMMAND_DATA_SIZE_A];

BYTE spare[PLC_COMMAND_DATA_SIZE_SPARE];

} _PLC_COMMAND_DATA, *_PPLC_COMMAND_DATA;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

例 HSSDEV hDevice; SSS_STATUS status; sssGetStatus(hDevice, &status);

例 C#.NET

sssOpenDevice(…)で初期化します

...

SSS_STATUS status;

sssGetStatus(ref status);

11-7

Page 139: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.1 sssGetStatus (続き)

表 11-8:sssGetStatus(8/8)

備考

このAPIは多くのメモリアクセスを必要とするため、sssGetStatusが繰り返し呼ば

れる場合は呼び出しの間に 低でも50[ms]のプログラム遅延を設けてください。

詳細は、『SMP Motion Development Kit (MDK)プログラミングマニュアル』内の

「8.2.2SMPモーション及びロジックAPI関数呼び出し」を参照して下さい。

次のように(この手順は、Visual Basic と若干異なります)C/C++を使用して、MDK を介し

て特定の PLC のビットにアクセスすることができます。

1)sssStatus 構造体を取得するために sssGetStatus を呼び出すことによって、

PLC のデータを読み込む

2)sssStatus 構造体内の plc_data 構造体にアクセス

plc_data 構造体はバイトフォーム内のすべての PLC 信号が含まれています。特定ビット

を参照するために、設定ビットとの AND 演算を実行します。

次のコード例は X00.4 ビットのステータスを返します:

sssStatus.plc_data.x[0] & 0x4

メモ: "0x4は、"16進形式で"0x4に"に対応するバイナリ形式、4=00000100に使用

されます。 [接頭辞"0x"を進形式で表示します]

IM -305 I / OモジュールやVersioBus IIのDC-155 I / OなどのI/Oモジュールの値を読

み取ったり制御するにはこの方法を使用してください。

例えば、IMを- 305#1のI / OデータはX20.0は-X23.7とY08.0-Y11.7となります。

詳しくは、LadderWorks PLC I/O Mapping for SMP Products for complete I/O data

mappingを参照ください。

11-8

Page 140: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.2 sssGetDriverVersion

表 11—9:sssGetDriverVersion

関数宣言

Unmanaged C++ HRESULT sssGetDriverVersion(HSSDEV hDev, DOUBLE *pVersion);

関数宣言

C#.NET int sssGetDriverVersion( ref Double pVersion );

機能 pVersion引数にSMPリアルタイムモジュールのバージョンを返します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル pVersion ― 現在のドライババージョンが代入されます

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; DOUBLE version; … /* デバイスのインストール後 */

sssGetDriverVersion(hDevice, &version);

例 C#.NET

sssOpenDevice(…)で初期化します

...

// リアルタイムドライバーをインストール

sssInstallDrivers("C:/Program Files/ServoWorks/Swsdk/Drivers", 1, 1, null);

...

DOUBLE version;

sssGetDriverVersion(ref version); // ドライバーバージョンを読み込む

11-9

Page 141: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.3 sssGetDriverType

表 11-3:sssGetDriverType(1/2)

関数宣言

Unmaged C++ HRESULT sssGetDriverType(HSSDEV hDev, PULONG pType);

関数宣言

C#.NET int sssGetDriverType( ref UInt32 pType );

機能 pType引数にSMPリアルタイムモジュールの種類を返します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pType ― 現在のドライバ種類が代入されます。下位8ビットはSMPハードウェアプラ

ットフォームの種類を示しています:

SSSNC_SIMULATOR ― デモ&トレーニング用ユーザータイマー SSSNC_VERSIO ― VersioBusサーボインターフェースFP-60/75及びDC-120

SSSNC_VERSIO_IOLINK - VersioBus スタンドアローン I/O ネットワーク FP45 <-->

IM-305

SSSNC_SERVOWIRE ― IEEE 1394 Firewireバス SSSNC_MECHATROLINK_I ― 安川電機専用デジタルサーボネットワーク SSSNC_MECHATROLINK_II ― 安川電機専用デジタルサーボネットワーク

SSSNC_GO400 - GOOGOL Tech の GO400 サーボインターフェースボード

SSSNC_SSCNET - 三菱専用デジタルサーボネットワーク

SSSNC_SYACC - ShenYang 専用コントロールカード

SSSNC_PANANET ― パナソニックリアルタイムエクスプレス (RTEX)専用デジタルサ

ーボネットワーク

SSSNC_PASSIVEIO_VB -補足 Versio Bus 受動的 I/O カード- FP-85/105/114

VersioBus II ではないサーボインターフェースに加える

SSSNC_PASSIVEIO_GO // 補足 GO400 受動的 I/O ボードサーボインターフェース

SSSNC_VB_FP60 // VersioBus II ホストタイプ FP-85

SSSNC_VB_FP75 // VersioBus II ホストタイプ FP-105

SSSNC_ML_NT115 // MECHATROLINK ホストタイプ NT115

SSSNC_ML_NT110 // MECHATROLINK ホストタイプ NT110

SSSNC_ML_NT112 // MECHATROLINK ホストタイプ NT112

SSSNC_ML_COMM_4MS // MECHATROLINK コミュニケーションサイクルタイム 4 ms

SSSNC_ML_COMM_2MS // MECHATROLINK コミュニケーションサイクルタイム 2 ms

SSSNC_ML_COMM_1MS // MECHATROLINK コミュニケーションサイクルタイム 1 ms

SSSNC_RTE_FPA200 // RTEX ホストタイプ FPA-200

SSSNC_RTE_FPA400 // RTEX ホストタイプ FPA-400

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; ULONG driverType; … /* デバイスのインストール後 */

sssGetDriverType(hDevice, & driverType);

11-10

Page 142: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.3 sssGetDriverType (続き)

表 11-10:sssGetDryverType(2/2)

例 C#.NET

sssOpenDevice(…)で初期化します

...

// リアルタイムドライバーをインストール

sssInstallDrivers("C:/Program Files/ServoWorks/Swsdk/Drivers", 1, 1, null);

...

UInt32 driverType;

sssGetDriverType(ref driverType); // ドライバータイプを読み込む

11-11

Page 143: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

Soft Servo SYSTEMS, INC

11.4 sssGetDriverOption

表 11-11:sssGetDriverOption

関数宣言

Unmanaged C++ HRESULT sssGetDriverOption ( HSSDEV hDev, PULONG pOption );

関数宣言

C#.NET int sssGetDriverOption( ref UInt32 pOption );

機能 pType引数にSMPリアルタイムモジュールのオプショナル機能ステータスを返

します。

引数

hDev – sssOpenDevice(…)で返されるデバイスハンドル

pOption:

• ビット0がオンの時に DLACC オプションが利用できます • ビット1がオンの時に Macro オプションが利用できます

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; PULONG option; … /* ドライバーのインストール後 */ sssGetDriverOption (hDevice, & option); if(option & 0x1){ /* DLACC が利用できます */ … } if(option & 0x2){ /* Macro が利用できます*/ … }

例 C#.NET

sssOpenDevice(…)で初期化します ... // リアルタイムドライバーのインストール sssInstallDrivers("C:/Program Files/ServoWorks/Swsdk/Drivers", 1, 1, null); ... UInt32 option; sssGetDriverOption(ref option); if (option & 0x1) { // DLACC が利用できます ... } if (option & 0x2) { // Macro が利用できます ... }

11-12

Page 144: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 11 章: SMP リアルタイムモジュール情報用 API

11-13

Soft Servo SYSTEMS, INC

11.5 sssGetBlockErrMsg

表 11-12:sssGetBlockErrMsg

関数宣言

Unmanaged C++ HRESULT sssGetBlockErrMsg (LONG nBlockStatus, PCHAR pErrMsg);

関数宣言

C#.NET int sssGetBlockErrMsg( Int32 nBlockStatus, ref Byte[] baErrMsg );

機能 モーションブロックデータエラーコードに対応するエラーメッセージ文字列

を取得します。

引数

nBlockStatus ― モーションブロックデータステータスを示すlong integer型フラグで

す。この値はNC_BLOCK_DATA構造体のBlockStatusメンバで取得します。 pErrMsg ― エラーメッセージ文字列バッファへのポインタです。バッファのサイズは

MAX_STRING以上である必要があります。

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_DEVICE ― 未定義のデバイスエラー

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)でhDeviceを初期化する必要があります

*/

SSS_STATUS sssStatus; CHAR sErrMsg[MAX_STRING]; … /* SSS_STATUSを取得 */

sssGetStatus(&sssStatus); /* 現在のモーションブロックデータエラーコードメッセージを取得 */

sssGetBlockErrMsg (sssStatus.CurrentBlock.BlockStatus, sErrMsg);

例 C#.NET

sssOpenDevice(…)で初期化します

...

SSS_STATUS sssStatus;

Byte[] sErrMsg = new Byte[MAX_STRING];

// SSS_STATUS を取得

sssGetStatus(ref sssStatus);

//現在のモーションブロックデータエラーコードメッセージを取得

sssGetBlockErrMsg (sssStatus.CurrentBlock.BlockStatus, ref sErrMsg);

Page 145: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 12 章: ユーザーブロックデータバッファ用 API

Soft Servo SYSTEMS, INC

第12章: ユーザーブロックデータバッファ用API

12.1 sssResetBlockBuf

表 12-1:sssResetBlockBuf

関数宣言

Unmanaged C++ HRESULT sssResetBlockBuf(HSSDEV hDev);

関数宣言

C#.NET int sssResetBlockBuf( );

機能 ユーザーブロックデータバッファを初期状態にリセットし、新しいコードブロ

ックを格納できる状態にします。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_RPC ― リモートプロセスコール(RPC)に失敗しました

Unmanaged C++

HSSDEV hDevice; … /* ユーザーブロックデータバッファ終了後 */

sssResetBlockBuf(hDevice); /* コードブロックを追加します */

例 C#.NET

sssOpenDevice(…)で初期化します ...

// ユーザーブロックバッファ終了後

sssResetBlockBuf();

// コードブロックを追加します

12-1

Page 146: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 12 章: ユーザーブロックデータバッファ用 API

Soft Servo SYSTEMS, INC

12.2 sssAddOneBlock

表 12-2:sssAddOneBlock(1/2)

関数宣言

Unmanaged C++ HRESULT sssAddOneBlock(HSSDEV hDev, PBUF_BLOCK_DATA pBlockData);

関数宣言

C#.NET int sssAddOneBlock( BUF_BLOCK_DATA blockData );

機能 ユーザーブロックデータバッファにコマンドコードを1ブロック追加します。

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pBlockData ― BUF_BLOCK_DATA構造体へのポインタ

typedef struct {

LONG StepNo; // このブロックのステップ番号 LONG SequenceNo; //

LONG GCodeCount; //

LONG BlockStatus; // サブプログラム、エラーコード等 LONG BlockStatus1; // ブロックステータス、エラーコード etc.

LONG OptSkipStatus; // オプショナルスキップフラグ

LONG Reserved_Long[2]; // 予備

LONG nFileLevel; // モーションプログラムファイルレベル (サブプログラム)

LONG nFileOffset; // モーションプログラムファイルオフセット (現ライン)

CHAR sFileName[MAX_STRING]; // モーションプログラムファイル名

(サブプログラム)

POS_DATA motion_data; // 位置決めコマンドデータ構造体 MODAL_DATA modal_data; // SMPモーダルデータ構造体

} BUF_BLOCK_DATA, *PBUF_BLOCK_DATA; typedef struct {

DWORD ModalActiveFlag;

// モーダルデータ実行を制御するアクティブフラグ SHORT Hcode; // 工具長アドレス SHORT OneShot_Gcode; // ノンモーダルのGコード SHORT GCodeGroup[MAX_GCODE_GROUPS]; // FANUC Mシリーズの定義に従うGコードモーダルグループ DOUBLE Feed; // 線形フィードレート(mm/min)

LONG MSTB_Flag; // MSTB-コードフラグ LONG S_Index; // 主軸機能インデックス LONG Scode[MAX_ALLAXES]; // 主軸機能コード LONG Mcode[MAX_MULTI_MCODES]; // 多目的機能コード LONG Tcode; // 工具機能コード LONG Bcode; // 第二多目的機能コード

} MODAL_DATA, *PMODAL_DATA;

12-2

Page 147: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 12 章: ユーザーブロックデータバッファ用 API

Soft Servo SYSTEMS, INC

12.2 sssAddOneBlock (続き)

表 12-3:sssAddOneBlock(2/2)

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_RPC ― リモートプロセスコール(RPC)に失敗しました SWAPI_ERROR_ARGUMENT_2 ― pBlockData引数が無効(null)です SWAPI_ERROR_BUFFER_END ― ユーザーブロックバッファが既に終了しています SWAPI_ERROR_BUFFER_FULL ― ユーザーブロックバッファに空きがありません SWAPI_ERROR_BUFFER_OPERATION ― バッファ実行エラー SWAPI_ERROR_BUFFER_MUTEX ― バッファのミューテック取得に失敗しました(別

プロセスからのアクセス禁止)

Unmanaged

C++

HSSDEV hDevice; … BUF_BLOCK_DATA bbd; /* bbdを設定します */

… sssAddOneBlock(hDevice, &bbd); /* バッファにブロックデータを追加しAUTO実行を開始します */

例 C#.NET

sssOpenDevice(…)で初期化します ... // ブロックデータをセットアップします

POS_DATA hPosData;

hPosData.Position[0] = 50; // 50mm に位置を設定します

hPosData.Velocity[0] = 500; // 500mm/min にフィードレートを設定します

hPosData.AxisFlags = AXIS_01; // X 軸を移動

hPosData.InterpolationMode = INTPLN_INDIVIDUAL; // 個々の軸補間

hPosData.PositionType = SSS_RELATIVE; // 相対的な位置

hPosData.SmoothingMode = SMOOTH_LINEAR; // リニアスムージング

hPosData.InPosCheckMode = 0; // インポジションチェックなし

hPosData.DataTypeFlag = 0; // 浮動小数点データ

MODAL_DATA hModalData;

BUF_BLOCK_DATA bufferBlock;

bufferBlock.motion_data = hPosData; // 位置データを設定します

bufferBlock.modal_data = hModalData; // モーダルデータを設定します

bufferBlock.StepNo = 1; // ステップ数をブロックします

// バッファへデータブロック追加します

sssAddOneBlock(bbd);

...

// バッファへさらにブロックデータを追加します

...

// 自動運転を起動します

sssSetNcMode(SSS_OPMODE_AUTO);

sssAutoStart(USER_BLOCK_BUF);

備考 sssAddOneBlockはどの実行モードでも動作します。実行モードが

SS_OPMODE_AUTOである必要はありません。

12-3

Page 148: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 12 章: ユーザーブロックデータバッファ用 API

12-4

Soft Servo SYSTEMS, INC

12.3 sssGetBufStatus

表 12-4:sssGetBufStatus

関数宣言

Unmanaged C++ HRESULT sssGetBufStatus(HSSDEV hDev, PBUF_STATUS pMbs);

関数宣言

C#.NET int sssGetBufStatus( ref BUF_STATUS mbs );

機能 ユーザーブロックデータバッファステータスを取得します

引数

hDev ― sssOpenDevice(…)で返されるデバイスハンドル pMbs ― BUF_STATUS データ構造体へのポインタ

typedef struct {

LONG bufState; // SSS_BUF_STATE

LONG bufHead; // バッファの先頭インデックス LONG bufTail; // バッファの末尾インデックス LONG bufStorage; // バッファに格納されているブロック数

} BUF_STATUS, *PBUF_STATUS; SSS_BUF_STATE:

BUF_EMPTY, // バッファが空です (バッファから読出しできません)

BUF_READY, // バッファの書き込みまたは読出しが可能な状態です BUF_FULL, // バッファに空きがありません(バッファに書き込めません)

BUF_END // バッファが終了しています (これ以上使用できません)

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_RPC ― リモートプロセスコール(RPC)に失敗しました SWAPI_ERROR_ARGUMENT_2 ― pMbs引数が無効(null)です

Unmanaged C++

HSSDEV hDevice; … BUF_STATUS bufferStatus; sssGetBufStatus(hDevice, &bufferStatus);

例 C#.NET

sssOpenDevice(…)で初期化します ...

BUF_STATUS bufferStatus;

sssGetBufStatus(ref bufferStatus);

Page 149: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 14 章: 特殊機能用 API

Soft Servo SYSTEMS, INC

第13章: 特殊機能用API

13.1 sssSetSynControlMode

表 13-1:sssSetSynControlMode

関数宣言

Unmanaged C++ HRESULT sssSetSynControlMode (HSSDEV hDev, LONG SynControlMode);

関数宣言

C#.NET int sssSetSynControlMode( Int32 SynControlMode );

機能

同期モードをマニュアルでON/OFFします。マスターとスレーブの関係にある

軸が設定されている場合、同期モードはパラメータのロード中に自動的に呼び

出されます。このAPIは新たなマスタースレーブ設定またはE-Stopモードの状

態から同期モードを復帰させたい場合にのみ使用します。

引数 hDev ― sssOpenDevice(…)で返されるデバイスハンドル SynControlMode: 0 (disable)または2 (enable)

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_RPC ― リモートプロセスコール(RPC)に失敗しました

Unmanaged C++

HSSDEV hDevice; … /* 軸制御の同期をONにします */

sssSetSynControlMode(hDevice, 2);

例 C#.NET

sssOpenDevice(…)で初期化します

...

//軸制御の同期を ON にします

sssSetSynControlMode(2);

13-1

Page 150: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 15 章: マクロ変数用 API

Soft Servo SYSTEMS, INC

第14章: マクロ変数用API

14.1 sssGetLocalMacroVar

表 14-1:sssGetLocalMacroVar

関数宣言

Unmanaged C++ HRESULT sssGetLocalMacroVar (HSSDEV hDev, LOCAL_MACRO_DATA

plMacroData);

関数宣言

C#.NET int sssGetLocalMacroVar( ref LOCAL_MACRO_DATA lMacroData );

機能 ローカルマクロ変数(#1~#100)をリアルタイムエンジンから取得します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル plMacroData ― LOCAL_MACRO_DATA構造体へのポインタ

typedef struct{

DOUBLE fVariables[MAX_LOCAL_MACRO_VAR]

[MAX_SUB_PROG_LAYER+1]; } LOCAL_MACRO_DATA, *PLOCAL_MACRO_DATA;

fVariables ― サブプログラムのそれぞれのレイヤーにおけるローカル変数(#1~

#100)を格納するための2次元配列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― plMacroData引数が無効です

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

LOCAL_MACRO_DATA LMD; /* ローカルマクロ変数データ構造体 */

… /* ローカルマクロ変数を取得します */

sssGetLocalMacroVar (hDevice, &LMD);

例 C#.NET

sssOpenDevice(…)で初期化します

...

LOCAL_MACRO_DATA LMD; // ローカルマクロ変数データ構造体

// ローカルマクロ変数を取得します

sssGetLocalMacroVar(ref LMD);

備考 fVariables配列はその時点のプログラムレイヤーにおけるローカル変数のみ保

持することができます。従って配列の第2要素は0の時のみ意味を持ちます。

14-1

Page 151: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 15 章: マクロ変数用 API

Soft Servo SYSTEMS, INC

14.2 sssGetGlobalMacroVar

表 14-2:sssGetGlobalMacroVar

関数宣言

Unmanaged C++ HRESULT sssGetGlobalMacroVar (HSSDEV hDev, GLOBAL_MACRO_DATA

pgMacroData);

関数宣言

C#.NET int sssGetGlobalMacroVar( ref GLOBAL_MACRO_DATA gMacroData );

機能 リアルタイムエンジンからグローバルマクロ変数(#101~#500)を取得します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル pgMacroData ― GLOBAL _MACRO_DATA構造体へのポインタ

typedef struct{

DOUBLE fVariables[MAX_GLOBAL_MACRO_VAR]; } GLOBAL_MACRO_DATA, *PGLOBAL_MACRO_DATA;

fVariables ― グローバル変数配列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pgMacroData引数が無効です

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

GLOBAL_MACRO_DATA GMD; /* グローバルマクロ変数構造体 */

… /* グローバルマクロ変数を取得します */

sssGetGlobalMacroVar (hDevice, &GMD);

例 C#.NET

sssOpenDevice(…)で初期化します.

..

GLOBAL_MACRO_DATA GMD; // グローバルマクロ変数構造体

// グローバルマクロ変数を取得します

sssGetGlobalMacroVar(ref GMD);

14-2

Page 152: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 15 章: マクロ変数用 API

Soft Servo SYSTEMS, INC

14.3 sssGetPermanentMacroVar

表 14-3:sssGetPermanentMacroVar

関数宣言

Unmanaged C++ HRESULT sssGetPermanentMacroVar (HSSDEV hDev,

PERMANENT_MACRO_DATA ppMacroData);

関数宣言

C#.NET int sssGetPermanentMacroVar( ref PERMANENT_MACRO_DATA pMacroData );

機能 リアルタイムエンジンから永久マクロ変数(#501~#1000)を取得します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル ppMacroData ― PERMANENT_MACRO_DATA構造体へのポインタ

typedef struct{

DOUBLE fVariables[MAX_ PERMANENT _MACRO_VAR]; } PERMANENT _MACRO_DATA, *PPERMANENT _MACRO_DATA;

fVariables ― 永久変数配列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― ppMacroData引数が無効です

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

PERMANENT _MACRO_DATA PMD; /* 永久マクロ変数構造体 */

… /* 永久マクロ変数を取得します */

sssGetPermanentMacroVar (hDevice, &PMD);

例 C#.NET

sssOpenDevice(…)で初期化します

...

PERMANENT_MACRO_DATA PMD; //永久マクロ変数構造体

//永久マクロ変数を取得します

sssGetPermanentMacroVar(ref PMD);

備考 このAPIはsssRemoveDrives関数が呼び出される直前に使用して、リアルタイム

エンジンから永久マクロ変数を取得してください。その後永久マクロ変数をス

トレージデバイスに保存してください。

14-3

Page 153: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 15 章: マクロ変数用 API

14-4

Soft Servo SYSTEMS, INC

14.4 sssSetPermanentMacroVar

表 14-4:sssSetPermanentMacroVar

関数宣言

Unmanaged C++ HRESULT sssSetPermanentMacroVar (HSSDEV hDev,

PERMANENT_MACRO_DATA ppMacroData);

関数宣言

C#.NET int sssSetPermanentMacroVar( PERMANENT_MACRO_DATA pMacroData );

機能 永久マクロ変数(#501~#1000)をリアルタイムエンジンに設定します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル ppMacroData ― PERMANENT _MACRO_DATA構造体へのポインタ

typedef struct{

DOUBLE fVariables[MAX_ PERMANENT _MACRO_VAR]; } PERMANENT _MACRO_DATA, *PPERMANENT _MACRO_DATA;

fVariables ― 永久変数配列

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― ppMacroData引数が無効です

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

PERMANENT _MACRO_DATA PMD; /* 永久マクロ変数構造体 */

… /* 永久マクロ変数を設定します */

sssSetPermanentMacroVar (hDevice, &PMD);

例 C#.NET

sssOpenDevice(…)で初期化します

...

PERMANENT_MACRO_DATA PMD; //永久マクロ変数構造体

//永久マクロ変数を設定します

sssSetPermanentMacroVar(PMD);

備考 先ず永久マクロ変数をストレージデバイスから取り込んでください。その後

sssInstallDrives関数を呼び出し、直後にこのAPIを使用してリアルタイムエンジ

ンに永久マクロ変数を設定してください。

Page 154: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

Soft Servo SYSTEMS, INC

第15章: MECHATROLINKサーボドライバ用API

15.1 sssLoadYSKDrvParameters

表 15-1:sssLoadYSKDrvParameters

関数宣言

Unmanaged C++ HRESULT sssLoadYSKDrvParameters ( HSSDEV hDev, LONG nAxis, LONG

nVersion, LONG nIndex, LONG nDataSize, PLONG npValue );

関数宣言

C#.NET

int sssLoadYSKDrvParameters( Int32 nAxis, Int32 nVersion, Int32 nIndex,

Int32 nDataSize, ref Int32 npValue );

機能 安川電機製ドライバからパラメータ設定を取得し、パラメータ構造体に送りま

す。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― バージョン番号、Sigma II/III

nIndex – パラメータインデックス番号 詳細は Sigma III のマニュアルを参照ください

nDataSize – バイト単位で読み込むデータのサイズ

nValue – 値へのポインタ

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION – 失敗

15-1

Page 155: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

Soft Servo SYSTEMS, INC

15.2 sssSaveYSKDrvParameters

表 15-2:sssSaveYSKDrvParameters

関数宣言

Unmanaged C++ HRESULT sssSaveYSKDrvParameters ( HSSDEV hDev, LONG nAxis, LONG

nVersion, LONG nIndex, LONG nDataSize, LONG nValue );

関数宣言

C#.NET

int sssSaveYSKDrvParameters( Int32 nAxis, Int32 nVersion, Int32 nIndex,

Int32 nDataSize, Int32 nValue );

機能 パラメータ構造体のパラメータ設定を安川電機製ドライバに保存します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― バージョン番号、Sigma II/III

nIndex – パラメータインデックズ番号 詳細は Sigma III のマニュアルを参照ください

nDataSize – バイト単位で読み込むデータのサイズ

nValue – その値へのポインタ

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION – 失敗

15-2

Page 156: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

Soft Servo SYSTEMS, INC

15.3 sssLoadYSKDrvID

表 15-3:sssLoadYSKDrvID

関数宣言

Unmanaged C++ HRESULT sssLoadYSKDrvID (HSSDEV hDev, LONG nAxis, LONG nVersion,

PSIGMA_ID_COLLET pSigmaID);

関数宣言

C#.NET

int sssLoadYSKDrvID( Int32 nAxis, Int32 nVersion,

ref SIGMA_ID_COLLET pSigmaID );

機能 安川電機製ドライバ及びモータからIDを取得し、SIGMA_ID_COLLET構造体に

送ります。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― バージョン番号、Sigma II/III

pSigmaID ― ドライバ及びモータID構造体SIGMA_ID_COLLETへのポインタ(下

記定義):

typedef struct {

BYTE bServoPackName[16]; BYTE bServoPackVer[2]; BYTE bEncoderVer[2]; BYTE bMotorVer[16]; BYTE OptionVer1[16]; BYTE OptionVer2[2];

} SIGMA_ID_COLLET, *PSIGMA_ID_COLLET;

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_2 ― pSidParam引数が無効です SWAPI_ERROR_ARGUMENT_3 ― nAxis引数が無効です SWAPI_ERROR_LOAD_YSKDRV_ID ― ドライバからのID取得に失敗しました

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

SIGMA_ID_COLLET pSKDrvID; … sssLoadYSKDrvID (hDevice, 2,1, pSKDrvID);

15-3

Page 157: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

Soft Servo SYSTEMS, INC

15.4 sssSetYSKDrvIni

表 15-4:sssSetYSKDrvIni

関数宣言

Unmanaged C++ HRESULT sssSetYSKDrvIni (HSSDEV hDev, LONG nAxis, LONG nVersion, LONG

nAction);

関数宣言

C#.NET int sssSetYSKDrvIni( Int32 nAxis, Int32 nVersion, Int32 nAction );

機能 アブソリュート型エンコーダをゼロリセットします。この関数から成功の戻り

値を得た後電源を再投入してください。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― バージョン番号、Sigma II/III

nAction ― アクションコード(予備)

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_3 ― nVersion引数が無効です SWAPI_ERROR_ARGUMENT_4 ― nAxis引数が無効です SWAPI_ERROR_ARGUMENT_5 ― nAction引数が無効です SWAPI_ERROR_SET_SIGMA_YSK ― 初期化に失敗しました

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化します */

… sssSetYSKDrvIni (hDevice, 2, 1, 2);

15-4

Page 158: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

Soft Servo SYSTEMS, INC

15.5 sssGetYSKDrvAlarm

表 15-5:sssGetYSKDrvAlarm

関数宣言

Unmanaged C++ HRESULT sssGetYSKDrvAlarm ( HSSDEV hDev, LONG nAxis, LONG

nAlmReadMode, LONG nAlmReadIndex, PALM_ID_COLLET pAlmData );

関数宣言

C#.NET

int sssGetYSKDrvAlarm( Int32 nAxis, Int32 nAlmReadMode, Int32 nAlmReadIndex,

ref ALM_ID_COLLET pAlmData );

機能 新の10件のアラームコードまたは、アラーム履歴から10件のアラームコード

を読み込みます。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nAlmReadMode ― 0:現在のアラームを読み込む 1:アラーム状態の履歴を読み込

む nAlmReadIndex ― 常に0 pAlmData ― ALM_ID_COLLETへのポインタ。10件のアラームコードを保持する。 typedef struct {

BYTE bAlmData[10]; } ALM_ID_COLLET, *PALM_ID_COLLET;

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_3 ― nVersion引数が無効です SWAPI_ERROR_ARGUMENT_4 ― nAxis引数が無効です SWAPI_ERROR_ARGUMENT_5 ― nAction引数が無効です SWAPI_ERROR_SET_SIGMA_YSK ― 初期化に失敗しました

15-5

Page 159: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 16 章: MECHATROLINK サーボドライバ用 API

15-6

Soft Servo SYSTEMS, INC

15.6 sssClearYSKDrvAlarm

表 15-6:sssClearYSKDrvAlarm

関数宣言

Unmanaged C++ HRESULT sssClearYSKDrvAlarm ( HSSDEV hDev, LONG nAxis, LONG

nAlmClearMode );

関数宣言

C#.NET int sssClearYSKDrvAlarm( Int32 nAxis, Int32 nAlmClearMode );

機能 アラームを消去します。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nAlmClearMode ― 0:現在のアラームと警告状態を消去 1:アラームの履歴消去

戻り値

SWAPI_ERROR_SUCCESS ― 成功 SWAPI_ERROR_HANDLE ― 無効なデバイスハンドルです SWAPI_ERROR_ARGUMENT_3 ― nVersion引数が無効です SWAPI_ERROR_ARGUMENT_4 ― nAxis引数が無効です SWAPI_ERROR_ARGUMENT_5 ― nAction引数が無効です SWAPI_ERROR_SET_SIGMA_YSK ― 初期化に失敗しました

Page 160: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 17 章: Panasonic MINAS A4N サーボドライバ用 API

Soft Servo SYSTEMS, INC

第16章: Panasonic MINAS A4Nサーボドライバ用API

16.1 sssLoadA4NDrvParameters

表 16-1:sssLoadA4NDrvParameters

関数宣言

Unmanaged C++ HRESULT sssLoadA4NDrvParameters ( HSSDEV hDev, LONG nAxis, LONG

nVersion, LONG nIndex, PLONG npValue );

関数宣言

C#.NET

int sssSaveA4NDrvParameters( Int32 nAxis, Int32 nVersion, Int32 nIndex,

Int32 nValue );

機能 Panasonic MINAS A4Nドライバからパラメータ設定を取得し、パラメータ構造体へ送り

ます。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― システム予約。無視される。 nIndex – パラメータインデックス番号。A4Nマニュアルを参照。 npValue – その値へのポインタ

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION – 失敗

16-1

Page 161: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 17 章: Panasonic MINAS A4N サーボドライバ用 API

Soft Servo SYSTEMS, INC

16.2 sssSaveA4NDrvParameters

表 16-2:sssSaveA4NDrvParameters

関数宣言

Unmanaged C++ HRESULT sssSaveA4NDrvParameters ( HSSDEV hDev, LONG nAxis, LONG

nVersion, LONG nIndex, LONG nValue );

関数宣言

C#.NET

int sssSaveA4NDrvParameters( Int32 nAxis, Int32 nVersion, Int32 nIndex,

Int32 nValue );

機能 パラメータ構造体からのパラメータ設定をPanasonic MINAS A4Nドライバに保存しま

す。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― システム予約。無視される。 nIndex – パラメータインデックス番号。A4Nマニュアルを参照。 npValue – 書き込まれる値

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION – 失敗

16-2

Page 162: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 17 章: Panasonic MINAS A4N サーボドライバ用 API

Soft Servo SYSTEMS, INC

16.3 sssLoadA4NDrvID

表 16-3:sssLoadA4NDrvID

関数宣言

Unmanaged C++ HRESULT sssLoadA4NDrvID ( HSSDEV hDev, LONG nAxis, LONG nVersion,

PA4N_ID_COLLET pA4nID );

関数宣言

C#.NET int sssLoadA4NDrvID( Int32 nAxis, Int32 nVersion, ref A4N_ID_COLLET pA4nID );

機能 Panasonic MINAS A4NドライバとモータからIDを取得し、A4N_ID_COLLET構造

体へ送ります。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nVersion ― システム予約。無視される。 pA4nID ― – a pointer to drive and motor ID structure of type A4N_ID_COLLET

型構造体におけるドライバとモータのIDへのポインタ: typedef struct {

BYTE bVendorName[16]; BYTE bDriveModelNo[16]; BYTE bFirmwareVer[16]; BYTE bMotorModelNo[16]; BYTE bMotorSerialNo[16]; } A4N_ID_COLLET, *PA4N_ID_COLLET;

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION – 失敗

Unmanaged C++

HSSDEV hDevice; /* sssOpenDevice(…)で初期化される */

PA4N_ID_COLLET pSKDrvID; … sssLoadA4NDrvID (hDevice, 2,1, pSKDrvID);

16-3

Page 163: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 17 章: Panasonic MINAS A4N サーボドライバ用 API

Soft Servo SYSTEMS, INC

16.4 sssGetA4NDrvAlarm

表 16-4:sssGetA4NDrvAlarm

関数宣言

Unmanaged C++ HRESULT sssGetA4NDrvAlarm ( HSSDEV hDev, LONG nAxis, LONG

nAlmReadIndex, PLONG nAlmCode );

関数宣言

C#.NET int sssGetA4NDrvAlarm( Int32 nAxis, Int32 nAlmReadIndex, ref Int32 npAlmCode );

機能 A4Nサーボドライブからアラームを取得します。

引数

hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nAlmReadIndex ― 0:現在のアラーム 1…14:アラーム履歴 [注意: 1は も新しい

アラームで、14が履歴内で も古いアラームになります。]

nAlmCode ― アラームコードへのポインタ

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION ― 失敗

16-4

Page 164: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 17 章: Panasonic MINAS A4N サーボドライバ用 API

16-5

Soft Servo SYSTEMS, INC

16.5 sssClearA4NDrvAlarm

表 16-5:sssClearA4NDrvAlarm

関数宣言

Unmanaged C++ HRESULT sssClearA4NDrvAlarm ( HSSDEV hDev, LONG nAxis, LONG

nAlmClearIndex );

関数宣言

C#.NET int sssClearA4NDrvAlarm( Int32 nAxis, Int32 nAlmClearIndex );

機能 アラームを消去します。

引数 hDev ― sssOpenDevice(…)で初期化されるデバイスハンドル nAxis ― 軸番号 nAlmClearIndex ― 常に0

戻り値 SWAPI_ERROR_SUCCESS ― 成功 SSS_INFORMATION ― 失敗

Page 165: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

索引

* *PALM_ID_COLLET......................................... 16-5 *pIndex................................................................ .7-14

. .ini file....................................................................1-1

_ _PLC_COMMAND_DATA....................... 11-3, 11-7

A AbsEncHomeDone .............................................. 11-2 AbsEncHomeValue ............................................. 11-2 AccCheckState .................................................... 11-2 ActualAxisVelocity ............................................. 11-1 ActualPosition ..................................................... 11-1 ActualVectorVelocity.......................................... 11-1 ADC[32] .............................................................. 11-3 AlarmReset .......................................................... 11-1 AnalogCommand................................................. 11-4 AtHomeFlag ........................................................ 11-2 AutoState ............................................................. 11-3 auxCodeFlag........................................................ 7-12 axisFlags ..................................................... 6-12, 6-13 AxisFlags........ 5-9, 6-1, 6-3, 6-5, 6-14, 7-10, 8-1, 8-3 axisNumber............................................................ 5-3

B Bcode................................................................... 12-2 bEncoderVer[2] ................................................... 15-3 bHomeDone......................................................... 11-2 bit................................................................ 10-3, 10-4 blockBufType ........................................................ 7-2 BlockEnd ............................................................. 11-3 BlockStatus.......................................................... 12-2 bMotorVer[16] .................................................... 15-3 bServoPackName[16].......................................... 15-3 bServoPackVer[2] ............................................... 15-3 BUF_BLOCK_DATA......................................... 12-2 BUF_EMPTY...................................................... 12-4 BUF_END........................................................... 12-4 BUF_FULL ......................................................... 12-4 BUF_READY...................................................... 12-4 BUF_STATUS .................................................... 12-4 bufHead ............................................................... 12-4 bufState................................................................ 12-4 bufStorage............................................................ 12-4 bufTail ................................................................. 12-4

C C++........................................................................ 1-1 CncStatus............................................................. 11-2 command code..................................................... 12-2

CommunicationState ........................................... 11-1 ControlWord........................................................ 10-1 ControlWord1...................................................... 10-1 CurrentBlock ....................................................... 11-3 CycleTime ........................................................... 11-3

D DAC..................................................................... 11-4 DAC voltage output test ................................. 8-1, 8-2 DataTypeFlag ................................................. 6-5, 6-6 DC_Din[4]........................................................... 11-3 DC_Dout[4]......................................................... 10-1 DC_Dout_Command[4] ...................................... 11-4 DC_Dout_ReadBack[4]....................................... 11-3 DO_DATA.......................................................... 10-1 driverInstallMode .................................................. 3-1 DryRunFeedrate................................................... 11-2 dryRunMode.......................................................... 7-7 DryRunMode....................................................... 11-3

E EmergencyStopFlag............................................. 11-4 EncoderValue ...................................................... 11-1

F Feed ..................................................................... 12-2 FeedrateOverride ................................................. 11-2 fOverride.............................................................. 13-3 FP_Din................................................................. 11-3 FP_Dout............................................................... 10-1 FP_Dout_Command ............................................ 11-4 FP_Dout_ReadBack ............................................ 11-3 Frequency ....................................................... 8-1, 8-3 fSpindleVelCmd .................................................. 11-4 fToolLength_Geom............................................. 5-14 fToolLength_Wear .............................................. 5-14 fToolRadius_Geom ............................................. 5-14 fToolRadius_Wear............................................... 5-14 fVariables .................................16-1, 16-2, 16-3, 16-4 fWorkCoordinate ................................................. 5-11

G G54 ~ G59 ........................................................... 5-11 GCode.................................................................. 11-2 GCodeCount ........................................................ 11-2 GCodeGroup........................................................ 12-2 GCodeStatus ........................................................ 11-2 GCodeStep........................................................... 11-2 GLOBAL_MACRO_DATA ............................... 16-2 GServerState........................................................ 11-1

H Hcode................................................................... 12-2 hDev 2-2, 3-1, 3-3, 3-4, 3-5, 3-6, 4-3, 4-4, 4-5, 4-6, 5- 1, 5-2, 5-3, 5-4, 5-5, 5-6, 5-7, 5-8, 5-9, 5-10, 5-11,

I

Page 166: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

5-12, 5-13, 5-14, 5-15, 6-1, 6-2, 6-3, 6-4, 6-5, 6-9, 6-10, 6-11, 6-12, 6-13, 6-14, 6-15, 7-1, 7-2, 7-3, 7- 4, 7-5, 7-6, 7-7, 7-8, 7-9, 7-10, 7-11, 7-12, 8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 9-1, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9-12, 9-13, 9-14, 9-15, 9- 16, 10-1, 10-3, 10-4, 11-1, 11-6, 11-7, 12-1, 12-2, 12-4, 13-1, 13-2, 13-3, 14-1, 15-1, 15-2, 15-3, 15- 4, 16-1, 16-2, 16-3, 16-4 HNDWL_DATA........................................ 6-14, 7-10 HndwlData........................................................... 11-1 HndwlEncoderValue ........................................... 11-1 HndwlIntMode .................................................... 11-3 HndwlPositionCounter ........................................ 11-1 homeCommand.................................................... 6-12 HomeState ........................................................... 11-2 HomeSwitch ........................................................ 11-3 HWIO .................................................................. 11-3

I IM_Din[8]............................................................ 11-4 IM_Dout[8].......................................................... 10-1 IM_Dout_Command[8] ....................................... 11-4 IM_Dout_ReadBack[8] ....................................... 11-4 index ........................................................... 10-3, 10-4 InPosCheckMode............................................ 6-5, 6-6 InPositionCheckState........................................... 11-2 InPositionFlag...................................................... 11-1 InSmoothingFlag ................................................. 11-1 InterlockStatus..................................................... 11-3 InterpolationMode ................................................. 6-5 INTPLN_CIRCULAR_CCW................................ 6-5 INTPLN_CIRCULAR_CW .................................. 6-5 INTPLN_DWELL................................................. 6-5 INTPLN_INTPLN_LINEAR ................................ 6-5 INTPLN_RAPID................................................... 6-5 IPC......................................................................... 3-3 ISRCounter .......................................................... 11-1 ISRTime .............................................................. 11-1

J JOG_DATA........................................................... 6-1 JogFeedrate................................................... 6-1, 11-2

L LimitSwitchMinus ............................................... 11-3 LimitSwitchPlus .................................................. 11-3 LOCAL_MACRO_DATA.................................. 16-1

M M コード ............................................................... 7-12 MachineLockCommand ........................................ 5-9 MachinelockStatus............................................... 11-3 MachinePos ......................................................... 11-2 Magnitude....................................................... 8-1, 8-3

MAPI MAPI 概要 ..................................................... 1-1 MAPI まとめ ..................................................... 1-2 MAX_ALLAXES.....................5-11, 5-15, 11-1, 11-3 MAX_GCODE_GROUPS .................................. 12-2 MAX_GLOBAL_MACRO_VAR....................... 16-2 MAX_LOCAL_MACRO_VAR.......................... 16-1 MAX_TOOL_NUM............................................ 5-14 MAX_WORKOFFSET_NUM............................ 5-11 Mcode.................................................................. 12-2 MECHATROLINK サーボドライバ.............. 1-6, 15-1 ML_ADC[12] ...................................................... 11-4 ML_Din[8] .......................................................... 11-4 ML_Dout[8] ........................................................ 11-4 ML_JOY_ADC[6]............................................... 11-4 modal_data .......................................................... 12-2 MODAL_DATA ................................................. 12-2 ModalActiveFlag................................................. 12-2 motion_data ......................................................... 12-2 MotionEngineState .............................................. 11-1 MoveDirection................................................ 6-1, 6-3 MSTB_Flag ......................................................... 12-2 Multiple ...................................................... 6-14, 7-10

N nAction ................................................................ 15-4 nAddr..9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9- 12, 9-13, 9-14, 9-15, 9-16 nAxis ........................................15-1, 15-2, 15-3, 15-4 nAxisFlags........................................................... 5-13 nBit ........................................................9-3, 9-7, 9-12 nBlockStatus........................................................ 11-8 NC オーバーライド.............................................. 5-6 NC システム制御コマンド....................... 1-3, 5-1 NCMode .............................................................. 11-2 NCProgramState.................................................. 11-3 nData ..9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-12, 9- 13, 9-14, 9-15 nMode.................................................................... 5-4 NO_INTERPOLATION........................................ 6-5 NO_SMOOTHING ............................................... 6-6 nOffsetIndex ........................................................ 5-12 nPnSize ................................................................ 15-2 nPnValue ............................................................. 15-2 nSpindleControlFlag............................................ 11-4 nSpindleNum....................................................... 13-1 nSpindleState ....................................................... 13-1 nSpindleStatus ..................................................... 11-4 nVersion ...................................15-1, 15-2, 15-3, 15-4

O OneShot_Gcode................................................... 12-2

II

Page 167: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

OPMode............................................................... 11-2 optional skip mode................................................. 7-9 optional stop mode................................................. 7-8 OptionVer1[16] ................................................... 15-3 OptionVer2[2] ..................................................... 15-3 optSkipMode ......................................................... 7-9 OptSkipMode ...................................................... 11-3 optStopMode ......................................................... 7-8 OptStopMode ...................................................... 11-3 OverPosErrFlag ................................................... 11-1 override.................................................................. 5-6 OverSynPosErrorFlag.......................................... 11-5

P paramLoadMode.................................................... 3-1 pAxisSymbolString ............................................. 5-15 pBlockData .......................................................... 12-2 pData ...................................................9-1, 9-11, 9-16 pDeviceName ........................................................ 2-1 pDout ................................................................... 10-1 PERMANENT _MACRO_DATA............. 16-3, 16-4 pErrMsg............................................................... 11-8 pFileName ............................................................. 7-1 pgMacroData ....................................................... 16-2 phDev .................................................................... 2-1 pHndwlData................................................ 6-14, 7-10 pInitDirectory ........................................................ 3-1 pInterLockData...................................................... 5-8 pJogData......................................................... 5-5, 6-1 PLC コマンド .............................................. 1-5, 9-1 PLC D データアドレス値. 9-12, 9-13, 9-14, 9-15, 9-16 PLC F データアドレス値............... 9-3, 9-4, 9-5, 9-6 PLC R データアドレス値... 9-7, 9-8, 9-9, 9-10, 9-11 PLC_COMMAND_DATA_SIZE_A .................... 9-1 PLC_COMMAND_DATA_SIZE_C..................... 9-1 PLC_COMMAND_DATA_SIZE_D .................... 9-1 PLC_COMMAND_DATA_SIZE_K .................... 9-1 PLC_COMMAND_DATA_SIZE_R9000............. 9-1 PLC_COMMAND_DATA_SIZE_SPARE........... 9-1 PLC_COMMAND_DATA_SIZE_T..................... 9-1 plc_data................................................................ 11-3 PLC_SETUP.......................................................... 9-1 PlcState ................................................................ 11-1 plMacroData ........................................................ 16-1 pMachineLockData ............................................... 5-9 pMbs.................................................................... 12-4 PN_PRM_COLLET ................................... 15-1, 15-2 pNcParam ................................................4-1, 4-2, 4-3 pNetAddr ............................................................... 2-1 POS_DATA........................................................... 6-5 PositionCommand ............................................... 11-1

PositionType................................................... 6-5, 6-6 pParamPath............................... 3-1, 4-1, 4-2, 4-4, 4-5 pPitchFileName ..................................................... 4-6 ppMacroData .............................................. 16-3, 16-4 pPnParam.................................................... 15-1, 15-2 pPosData................................................................ 6-5 PRESET_WORK_COORDINATE..................... 5-11 ProgramPos.......................................................... 11-2 pRpdData............................................................... 6-3 pSampleFilePath.................................................... 8-7 pServoControlParam ...............................4-1, 4-2, 4-3 pServoDriveParam...................................4-1, 4-2, 4-3 pSigmaID............................................................. 15-3 pSize ........................................................... 9-11, 9-16 pSpindleData ....................................................... 13-2 pStatus ................................................................. 11-1 pTestData........................................................ 8-1, 8-3 pToolOffsetData .................................................. 5-14 pType................................................................... 11-7 pVersion .............................................................. 11-6 pWorkCoordData................................................. 5-11 pWorkOffsetData................................................. 5-13

R RapidOverride ..................................................... 11-2 RelativePos .......................................................... 11-2 Reserved_DbfArray_0......................................... 11-1 Reserved_DbfArray_1......................................... 11-1 Reserved_IntArray_0........................................... 11-1 Reserved_LongInt_0 ........................................... 11-4 Reserved_LongInt_1 ........................................... 11-4 RPC チャンネル................................................. 1-1 RPD_DATA .......................................................... 6-3 rpdOverride............................................................ 5-7 RT_BLOCK_BUF................................................. 7-2 RTBlockBufStorage ............................................ 11-3

S S コード................................................................. 7-12 S_Index................................................................ 12-2 SampleCounter .................................................... 11-1 sampleNum............................................................ 8-5 SampleState ......................................................... 11-1 Scode ................................................................... 12-2 ServoAlarm.......................................................... 11-3 ServoCommand ................................................... 11-4 ServoInputSignal ................................................. 11-3 ServoOn............................................................... 11-1 ServoWire digital output ..................................... 10-1 ServoWire_DataLog1[16] ................................... 11-4 ServoWire_DataLog2[16] ................................... 11-4 ServoWire_DataLog3[16] ................................... 11-4

III

Page 168: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

ServoWire_DataLog4[16] ................................... 11-4 ServoWire_Din[16] ............................................. 11-4 ServoWire_Dout[16] .................................. 10-1, 11-4 PLC Dデータアドレス値の設定 bit........................................................................ 9-12 BYTE.................................................................. 9-13 DWORD............................................................. 9-15 WORD................................................................ 9-14 PLC Fデータアドレス値の設定 bit.......................................................................... 9-3 BYTE.................................................................... 9-4 DWORD............................................................... 9-6 WORD.................................................................. 9-5 PLC Rデータアドレス値の設定 bit.......................................................................... 9-7 BYTE.................................................................... 9-8 DWORD.............................................................. 9-10 指定バイト数...................................................... 9-11 WORD................................................................. 9-9 SIGMA_ID_COLLET......................................... 15-3 singleBlockMode................................................... 7-6 SingleBlockMode ................................................ 11-3 SMOOTH_BELLSHAPE...................................... 6-6 SMOOTH_EXPONENTIAL................................. 6-6 SMOOTH_LINEAR.............................................. 6-6 SmoothingMode ............................................. 6-5, 6-6 SMP モーション及びロジックAPI..........MAPI参照 SMP リアルタイムモジュール 説明 ......................................................... 1-1 SMPリアルタイムモジュール情報................ 11-1 SMPリアルタイムモジュール情報.................. 1-5 SoftLimitSwitchMinus ........................................ 11-3 SoftLimitSwitchPlus............................................ 11-3 Speed_Command................................................. 13-2 Speed_Type ......................................................... 13-2 SPINDLE_DATA................................................ 13-2 Spindle_Num....................................................... 13-2 SpindleOverride................................................... 11-2 SSS_ABSOLUTE_CMD....................................... 6-6 SSS_ABSOLUTE_FB........................................... 6-6 SSS_BUF_STATE .............................................. 12-4 SSS_OPMODE_AUTO......................................... 5-4 SSS_OPMODE_HNDWL..................................... 5-4 SSS_OPMODE_HOME........................................ 5-4 SSS_OPMODE_IDLE........................................... 5-4 SSS_OPMODE_JOG ............................................ 5-4 SSS_OPMODE_POS ............................................ 5-4 SSS_OPMODE_RAPID........................................ 5-4 SSS_OPMODE_TEST .......................................... 5-4 SSS_RELATIVE................................................... 6-6

SSS_SAMPLE_ADC ............................................ 8-5 SSS_SAMPLE_DAC ............................................ 8-5 SSS_SAMPLE_GENIO ........................................ 8-5 SSS_SAMPLE_POS ............................................. 8-5 SSS_SAMPLE_POSCMD .................................... 8-5 SSS_SAMPLE_POSERR...................................... 8-5 SSS_SAMPLE_SVIO ........................................... 8-5 SSS_SAMPLE_VEL............................................. 8-5 SSS_SPINDLE_STATE_CCW........................... 13-1 SSS_SPINDLE_STATE_CW ............................. 13-1 SSS_SPINDLE_STATE_STOP.......................... 13-1 SSS_STATUS ................ 11-1, 11-2, 11-3, 11-4, 11-5 SSS_TESTWAVE_SIN.................................. 8-1, 8-3 SSS_TESTWAVE_SQUARE........................ 8-1, 8-3 sssAddOneBlock ........................................ 12-2, 12-3 sssAutoOpenFile......................................1-1, 7-1, 7-2 sssAutoReset.......................................................... 7-5 sssAutoRewind ........................................1-1, 7-2, 7-4 sssAutoStart.............................. 1-1, 7-1, 7-2, 7-3, 7-4 sssAutoStop ........................................................... 7-3 sssCloseDevice ...................................................... 2-2 sssGetBlockErrMsg ............................................. 11-8 sssGetBufStatus ................................................... 12-4 sssGetDriverType ................................................ 11-7 sssGetDriverVersion............................................ 11-6 sssGetGlobalMacroVar ....................................... 16-2 sssGetLocalMacroVar ......................................... 16-1 sssGetPermanentMacroVar ................................. 16-3 sssGetStatus.................... 11-1, 11-2, 11-3, 11-4, 11-5 sssHndwlIntStart.................................................. 7-10 sssHndwlIntStop.................................................. 7-11 sssHndwlStart ...................................................... 6-14 sssHndwlStop ...................................................... 6-15 sssHomeStart ....................................................... 6-12 sssHomeStop ....................................................... 6-13 sssInstallDrivers .............................. 3-1, 3-2, 4-4, 4-5 sssInstallDrives.................................................... 16-4 sssJogStart ............................................................. 6-1 sssJogStop.............................................................. 6-2 sssLoadAbsEncParameters .................................... 4-4 sssLoadParameters................................................. 4-1 sssLoadYSKDrvID.............................................. 15-3 sssLoadYSKDrvParameters ................................ 15-1 SSSNC_MECHATROLINK_I............................ 11-7 SSSNC_MECHATROLINK_II .......................... 11-7 SSSNC_SERVOWIRE........................................ 11-7 SSSNC_SIMULATOR........................................ 11-7 SSSNC_VERSIO................................................. 11-7 sssOpenDevice ...................................................... 2-1 sssOpenDrivers...................................................... 3-3

IV

Page 169: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

sssPLC_Start.......................................................... 9-1 sssPLC_Stop.......................................................... 9-2 sssPosCancel........................................................ 6-11 sssPosContinue ............................................. 6-9, 6-10 sssPosStart .............................................6-5, 6-6, 6-11 SssPosStart .......................................................... 6-10 sssPosStop ............................................................. 6-9 sssPresetWorkCoordinate .................................... 5-11 sssRapidStart ......................................................... 6-3 sssRapidStop.......................................................... 6-4 sssRemoveDrivers ................................................. 3-4 sssRemoveDrives................................................. 16-3 sssReset................................................................ 5-10 sssResetBlockBuf ................................................ 12-1 sssSampleStart....................................................... 8-5 sssSampleStop ....................................................... 8-6 sssSaveAbsEncParameters .................................... 4-5 sssSaveParameters ................................................. 4-2 sssSaveSampledData ............................................. 8-7 sssSaveYSKDrvParameters................................. 15-2 sssSelectWorkCoordinate ........................... 5-11, 5-12 sssSendParameters................................................. 4-3 sssSetAuxCodeFinish .......................................... 7-12 sssSetAxisSymbols.............................................. 5-15 sssSetDout ................................10-1, 10-2, 10-3, 10-4 sssSetDoutBit ...................................................... 10-3 sssSetDryRunMode ............................................... 7-7 sssSetEMGStopOn ......................................... 5-1, 5-2 sssSetEMGStopReset ..................................... 5-1, 5-2 sssSetInterlock....................................................... 5-8 sssSetJogFeedrate .................................................. 5-5 sssSetMachinelock................................................. 5-9 sssSetNcMode ....................................................... 5-4 sssSetOptSkipMode............................................... 7-9 sssSetOptStopMode............................................... 7-8 sssSetOverride ....................................................... 5-6 sssSetOverrideRpd.......................................... 5-7, 6-3 sssSetPermanentMacroVar.................................. 16-4 sssSetPitch ............................................................. 4-6 sssSetPLCDBit .................................................... 9-12 sssSetPLCDByte.................................................. 9-13 sssSetPLCDData.................................................. 9-16 sssSetPLCDDword .............................................. 9-15 sssSetPLCDWord ................................................ 9-14 sssSetPLCFBit....................................................... 9-3 sssSetPLCFByte .................................................... 9-4 sssSetPLCFDword................................................. 9-6 sssSetPLCFWord................................................... 9-5 sssSetPLCRBit ...................................................... 9-7 sssSetPLCRByte.................................................... 9-8

sssSetPLCRData.................................................. 9-11 sssSetPLCRDword .............................................. 9-10 sssSetPLCRWord .................................................. 9-9 sssSetServoStatus .................................................. 5-3 sssSetSingleBlockMode ........................................ 7-6 sssSetSpindleOverride ......................................... 13-3 sssSetSpindleSpeed ............................................. 13-2 sssSetSpindleState ............................................... 13-1 sssSetSynControlMode........................................ 14-1 sssSetToolOffset.................................................. 5-14 sssSetWorkOffset ................................................ 5-13 sssSetYSKDrvIni................................................. 15-4 sssStartInterrupt ..................................................... 3-5 sssStopInterrupt ..................................................... 3-6 sssTestPosStart ...................................................... 8-3 sssTestPosStop ...................................................... 8-4 sssTestVoltageStart ............................................... 8-1 sssTestVoltageStop................................................ 8-2 sssToggleDoutBit ................................................ 10-4 sSymbolString ..................................................... 5-15 state........................................................................ 5-3 STATUS_GCODE_BUFFER_SIZE................... 11-2 StepNo ................................................................. 12-2 SubProgName...................................................... 11-2 SWAPI関数の概要............................... 1-2 SWAPI_ERROR_ARGUMENT_1.........2-1, 4-1, 4-2 SWAPI_ERROR_ARGUMENT_2 2-1, 3-2, 4-1, 4-2, 4-3, 4-4, 4-5, 12-2, 12-4, 15-1, 15-2, 15-3, 16-1, 16-2, 16-3, 16-4 SWAPI_ERROR_ARGUMENT_3 3-2, 4-1, 4-2, 4-3, 15-1, 15-2, 15-3, 15-4 SWAPI_ERROR_ARGUMENT_4 3-2, 4-1, 4-2, 4-3, 15-1, 15-2, 15-4 SWAPI_ERROR_ARGUMENT_5.............. 3-2, 15-4 SWAPI_ERROR_BUFFER_END ...................... 12-2 SWAPI_ERROR_BUFFER_FULL..................... 12-2 SWAPI_ERROR_BUFFER_MUTEX ................ 12-2 SWAPI_ERROR_BUFFER_OPERATION........ 12-2 SWAPI_ERROR_DEVICE.3-5, 3-6, 4-6, 5-1, 5-2, 5- 3, 5-4, 5-5, 5-6, 5-7, 5-8, 5-9, 5-10, 5-11, 5-12, 5- 13, 5-14, 5-15, 6-1, 6-2, 6-3, 6-4, 6-6, 6-9, 6-10, 6- 11, 6-12, 6-13, 6-14, 6-15, 7-1, 7-2, 7-3, 7-4, 7-5, 7-6, 7-7, 7-8, 7-9, 7-10, 7-11, 7-12, 8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 9-1, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9-12, 9-13, 9-14, 9-15, 9-16, 10-1, 10-3, 10-4, 11-5, 11-6, 11-7, 11-8 SWAPI_ERROR_DEVICE_OPEN ...................... 2-1 SWAPI_ERROR_HANDLE2-2, 3-2, 3-3, 3-4, 3-5, 3- 6, 4-3, 4-4, 4-5, 4-6, 5-1, 5-2, 5-3, 5-4, 5-5, 5-6, 5- 7, 5-8, 5-9, 5-10, 5-11, 5-12, 5-13, 5-14, 5-15, 6-1,

V

Page 170: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

6-2, 6-3, 6-4, 6-6, 6-9, 6-10, 6-11, 6-12, 6-13, 6-14, 6-15, 7-1, 7-2, 7-3, 7-4, 7-5, 7-6, 7-7, 7-8, 7-9, 7- 10, 7-11, 7-12, 8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 9-1, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9- 12, 9-13, 9-14, 9-15, 9-16, 10-1, 10-3, 10-4, 11-5, 11-6, 11-7, 11-8, 12-1, 12-2, 12-4, 13-1, 13-2, 13- 3, 14-1, 15-1, 15-2, 15-3, 15-4, 16-1, 16-2, 16-3,16-4 SWAPI_ERROR_HANDSHAKE_MOTIONENGINE .................................................................. 3-2, 3-3 SWAPI_ERROR_HANDSHAKE_MOTIONPARSE R ................................................................. 3-2, 3-3 SWAPI_ERROR_HANDSHAKE_PLC ........ 3-2, 3-3 SWAPI_ERROR_INIT_CMPT............................. 3-2 SWAPI_ERROR_INIT_SHMEXIST.................... 3-2 SWAPI_ERROR_INIT_SHMFAIL ...................... 3-2 SWAPI_ERROR_LOAD_MOTIONENGINE...... 3-2 SWAPI_ERROR_LOAD_MOTIONPARSER...... 3-2 SWAPI_ERROR_LOAD_PARAM_FILE..... 3-2, 4-1 SWAPI_ERROR_LOAD_PLC............................. 3-2 SWAPI_ERROR_LOAD_YSKDRV_ID............ 15-3 SWAPI_ERROR_LOAD_YSKDRV_PARAM.. 15-1 SWAPI_ERROR_MEMORY................................ 2-1 SWAPI_ERROR_RPC.. 12-1, 12-2, 12-4, 13-1, 13-2, 13-3, 14-1 SWAPI_ERROR_SAVE_PARAM_FILE............. 4-2 SWAPI_ERROR_SAVE_YSKDRV_PARAM... 15-2 SWAPI_ERROR_SEND_NC_PARAM ........ 3-2, 4-3 SWAPI_ERROR_SEND_SERVO_CONTROL_PAR AM.............................................................. 3-2, 4-3 SWAPI_ERROR_SEND_SERVO_DRIVE_PARAM .................................................................... 3-2, 4-3 SWAPI_ERROR_SET_SIGMA_YSK................ 15-4 SWAPI_ERROR_SUCCESS .. 2-1, 2-2, 3-2, 3-3, 3-4, 3-5, 3-6, 4-1, 4-2, 4-3, 4-4, 4-5, 4-6, 5-1, 5-2, 5-3, 5-4, 5-5, 5-6, 5-7, 5-8, 5-9, 5-10, 5-11, 5-12, 5-13, 5-14, 5-15, 6-1, 6-2, 6-3, 6-4, 6-6, 6-9, 6-10, 6-11, 6-12, 6-13, 6-14, 6-15, 7-1, 7-2, 7-3, 7-4, 7-5, 7-6, 7-7, 7-8, 7-9, 7-10, 7-11, 7-12, 8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 9-1, 9-2, 9-3, 9-4, 9-5, 9-6, 9-7, 9-8, 9-9, 9-10, 9-11, 9-12, 9-13, 9-14, 9-15, 9-16, 10-1, 10-3, 10-4, 11-5, 11-6, 11-7, 11-8, 12-1, 12-2, 12- 4, 13-1, 13-2, 13-3, 14-1, 15-1, 15-2, 15-3, 15-4, 16-1, 16-2, 16-3, 16-4 SWAPI_ERROR_UNLOAD_ENGINES.............. 3-4 SynControlError .................................................. 11-5 SynControlMode ................................................. 14-1

T T コード................................................................. 7-12 Tcode ................................................................... 12-2 TEST_DATA ................................................. 8-1, 8-3

Timeout................................................................ 11-3 TOOL_OFFSET_DATA..................................... 5-14

U USER_BLOCK_BUF............................................ 7-2

V value .................................................................... 10-3 variables................................................................. 1-6 VectorFeedrate .................................................... 11-2 VersioBus digital output ...................................... 10-1 Visual Basic........................................................... 1-1

W WaveForm...................................................... 8-1, 8-3 Win32 subspace..................................................... 1-1 windows.h.............................................................. 1-1 WORK_OFFSET_DATA.................................... 5-13 WorkCoordOffset ................................................ 11-2 WorkOffsetValue................................................. 5-13

VI

Page 171: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

アクティブ化(ハードウェア)................................. 3-5 アクティブ化(PLC) ................................................. 9-1 アドレス範囲(Dデータ)... 9-12, 9-13, 9-14, 9-15, 9-16 アドレス値(Dデータ) ..... 9-12, 9-13, 9-14, 9-15, 9-16 アドレス範囲(Fデータ) ................... 9-3, 9-4, 9-5, 9-6 アドレス値(Fデータ) ....................... 9-3, 9-4, 9-5, 9-6 アドレス範囲(Rデータ) ......... 9-7, 9-8, 9-9, 9-10, 9-11 アドレス値(Rデータ) ............. 9-7, 9-8, 9-9, 9-10, 9-11

アブソリュート型エンコーダ............................. 15-4 アブソリュート型エンコーダパラメータ.... 4-4, 4-5 位置決め移動 ..............................6-5, 6-10, 6-11 位置決め移動のキャンセル.................................. 6-11 位置決め移動の再開.............................................. 6-10 位置決め移動の停止.............................................. 6-11 位置決めループ制御................................................ 5-3 位置決めループパフォーマンステスト........ 8-3, 8-4 一時停止(モーションブロックデータの実行)... 7-3 一時停止(位置決め移動).................................... 6-9 永久マクロ変数...................................................... 16-3 エラーメッセージ文字列 .................................... 11-8 オートモード........................................................... 7-5 オーバーライド値....................................5-6, 5-7, 13-3 送る(パラメータ設定→デバイスドライバ)........ 4-3 送る(ピッチエラーデータファイル→SMPモーショ

ンエンジン).............................................................. 4-6 オフセット(現在のワーク座標) ................... 5-13 オペレーショナル高速オーバーライド.............. 5-7 OFFにする(ハンドホイール割込み)................... 7-11 OFFにする(PLC)..................................................... 9-2 ONにする(ドライランテスト)............................... 7-7 ONにする(ハンドホイール割込み)..................... 7-10 ONにする(シングルブロックモード)................... 7-6 ON/OFFする(オプショナルスキップモード)....... 7-9 ON/OFFする(オプショナルストップモード)....... 7-8

開始(SMPモーションエンジンのハードウェアとの

通信)........................................................................... 3-5 開始(PLC).................................................................. 9-1 開始(位置決め移動)................................................. 6-5 開始(指定軸のジョグ移動)...................................... 6-1 開始(モーションブロックデータの解析).............. 7-2 開始(モーションプログラムファイル).................. 7-1 開始(DAC電圧出力テスト)..................................... 8-1 開始(ホーム移動).................................................... 6-12 開始(位置決めループパフォーマンステスト)...... 8-3 開始(高速移動).......................................................... 6-3 開始(データのサンプリング).................................. 8-5

回転速度................................................................... 13-2 関数呼出.................................................................... 1-1 繰り返しのある関数呼出........................................ 1-1 繰り返しのない関数呼出........................................ 1-1 グローバルマクロ変数.......................................... 16-2 警告フラグ ........................................................... 5-10 警告フラグのクリア ........................................... 5-10 工具長形状オフセット........................................ 5-14 工具長磨耗オフセット........................................ 5-14 工具オフセットデータ........................................ 5-14 工具半径形状オフセット.................................... 5-14 工具半径磨耗オフセット.................................... 5-14 高速移動.................................................................. 6-4 高速オーバーライド値.......................................... 5-7

サーボドライブ制御.............................................. 5-3 サンプリング(コマンド) ............................... 1-4, 8-1 サンプリング(データ)........................................... 8-7 軸(インターロック)............................................ 5-8 軸(名) ................................................................ 5-15 軸(シンボル) .................................................... 5-15 システム制御コマンド.................................. 1-3, 5-1 システム環境....................................................... 5-10 システム初期化コマンド.............................. 1-2, 3-1 システムステータス情報....................................... 11-1 自動実行コマンド ............................................ 1-4, 7-1 主軸関数.................................................................... 1-6 主軸制御.................................................................. 13-1 主軸速度オーバーライド値................................. 13-3 主軸回転速度......................................................... 13-2 取得(ブロックバッファステータス)............ 12-4 取得(包括的システム情報)............................. 11-1 取得(エラーメッセージ文字列)..................... 11-8 取得(グローバルマクロ変数)......................... 16-2 取得(安川電機ドライバ・モータID)............. 15-3 取得(ローカルマクロ変数)............................. 16-1 取得(マクロ変数)...........................16-1, 16-2, 16-3 取得(安川電機ドライバパラメータ設定)..... 15-1 取得(永久マクロ変数)..................................... 16-3 取得(アブソリュートエンコーダ設定)........... 4-5 初期値..................................................................... 5-10 初期設定ファイル................................................... 4-1 初期化..................................................................... 5-10 ジョグ移動........................................................ 6-1, 6-2 処理(モーションブロックデータ)................. 7-2, 7-3 処理((モーションプログラムブロックデータ)... 7-4 シングルブロックモード....................................... 7-6 スリープ関数........................................................... 1-1 スレッド................................................................... 1-1

VII

Page 172: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

Soft Servo SYSTEMS, INC

設定(AUTOモードドライランフィードレート).. 5-5 設定(軸インターロック)......................................... 5-8 設定(軸シンボル)................................................... 5-15 設定(ワーク座標オフセット値)........................... 5-13 設定(JOGモードフィードレート)......................... 5-5 設定(マシンロック)................................................. 5-9 設定(マクロ変数) .................................................. 16-4 設定(NCオーバーライド値)................................... 5-6 設定(NC実行モード)............................................... 5-4 設定(オペレーショナル高速オーバーライド値).. 5-7 設定(永久マクロ変数)........................................... 16-4 設定(ServoWireデジタル出力)............................... 10-1 設定(デジタルビット出力)................................... 10-3 設定(主軸実行状態)............................................... 13-1 設定(主軸速度オーバーライド値)....................... 13-3 設定(主軸回転速度)............................................... 13-2 設定(同期モードON/OFF).................................... 14-1 設定(工具オフセットデータ).............................. 5-14 設定(リアルタイムモジュールのプロセス間通信)3-3 設定(VersioBus)デジタル出力.............................. 10-1 選択(モーションプログラムファイル).................. 7-1 選択(ハンドホイールで制御する軸)................... 6-14 選択(ワーク座標オフセットの組)....................... 5-12

タイマースレッド..................................................... 1-1 遅延(間隔).....................................................1-1, 7-1, 7-2 遅延( 小)................................................................... 1-1 遅延(プログラムによる).............................1-1, 7-1, 7-2 追加コード(M, S, T) ................................................ 7-12 追加コード(M, S, T)のSMPエンジンへの終了通知 .................................................................................... 7-12 通常の実行................................................................ 5-10 停止(JOG移動)............................................................ 6-2 停止(モーションブロックデータの解析)............... 7-3 停止(全てのSMP実行).............................................. 5-1 停止(DAC電圧出力テスト)..................................... 8-2 停止(位置決めループパフォーマンステスト)...... 8-4 停止(位置決め移動).................................................. 6-9 停止(高速移動).......................................................... 6-4 停止(データのサンプリング).................................. 8-6 停止(SMPモーションエンジンのハードウェアとの 通信)............................................................................ 3-6 停止(ホーム移動)..................................................... 6-13 デジタルI/Oコマンド....................................... 1-5, 10-1 デジタル出力ビット ............................................. 10-4 デジタルビット出力の切り替え........................... 10-4 テスト(コマンド) ............................................... 1-4, 8-1 テスト(DAC電圧出力).............................................. 8-1

テスト(位置決めループパフォーマンス).............. 8-3 デバイスハンドル.................................................... 2-1 デバイス操作コマンド..................................... 1-2, 2-1 デバイス名 .............................................................. 3-3 デバイス構造体........................................................ 2-1 同期モード.............................................................. 14-1 特殊機能........................................................... 1-6, 14-1 閉じる(SMPデバイス) ...................................... 2-2 ドライバのインストール........................................ 3-1 ドライランテスト................................................... 7-7

パラメータ(設定コマンド)........................... 1-2, 4-1 パラメータ(設定)....................................4-1, 4-2, 4-3 パラメータ(安川電機ドライバ設定)...... 15-1, 15-2 パラメータ(構造体)............................................. 4-1 ハンドホイール入力...................................... 6-14, 6-15 ハンドホイール入力の軸への割り当て ................................................................................... 6-14 ハンドホイール割込み.................................. 7-10, 7-11 非アクティブ化(ハードウェア).............................. 3-6 非アクティブ化(PLC) ............................................. 9-2 非常停止.............................................................. 5-1, 5-2 非常停止からの復帰................................................. 5-2 ピッチエラーデータファイル................................. 4-6 開く(モーションプログラムファイル)................... 7-1 開く(SMPデバイス).................................................. 2-1 復帰(通常実行)........................................................ 5-10 フラグ ..................................................................... 5-10 プロセス間通信........................................................ 3-3 ブロックコマンドのバッファへの追加 ................................................................................... 12-2 ブロックバッファデータ................................ 1-5, 12-1 ブロックバッファステータス............................... 12-4 ブロックデータ...........................................7-2, 7-3, 7-4 ブロックデータバッファ....................................... 12-1 ブロックデータエラーコード............................... 11-8 保存(パラメータ設定) ............................................ 4-2 保存(安川電機ドライバ)....................................... 15-2 保存(サンプリングデータ)..................................... 8-7 保存(アブソリュートエンコーダパラメータ)..... 4-5

マクロ変数........................... 1-6, 16-1, 16-2, 16-3, 16-4 マシンロック............................................................. 5-9 マニュアル実行コマンド ................................ 1-3, 6-1 無効化(ハンドホイール入力)............................ 6-15 無効化(サーボドライブ・位置決めループ)..... 5-3 無効化(サーボドライブ)......................................... 5-1

VIII

Page 173: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_Motion...ここではSMPモーションとロジックAPIについて詳しく説明します。このマニュアルは『SMP

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 索引

IX

Soft Servo SYSTEMS, INC

モーションブロックデータ.............................. 7-2, 7-3 モーションブロックデータの開始......................... 7-2 モーションプログラムブロックデータ................. 7-4 モーションプログラムファイル............................. 7-1 モーションプログラムファイルの巻き戻し........ 7-4

や 安川電機製ドライバ...................................... 15-1, 15-2 安川電機製ドライバおよびモータ....................... 15-3 有効化(サーボドライブ・位置決めループ)..... 5-3 ユーザーブロックバッファデータ......................... 1-5

リアルタイムモジュール値................................... 11-7 リアルタイムモジュール........................................ 3-4 リアルタイムモジュール情報............................... 11-1 リアルタイムモジュールバージョン................... 11-6 リアルタイムモジュールのアンロード................. 3-4 リセット(アブソリュートエンコーダ)................. 15-4 リセット(オートモード)........................................... 7-5 リセット(ブロックデータバッファ)..................... 12-1 リセット(システム環境)......................................... 5-10 リセット(変数)......................................................... 5-10 ローカルマクロ変数................................................ 16-1 ロード(アブソリュートエンコーダ設定)............. 4-4 ロード(ドライバ).................................................. 3-1 ロード(パラメータ設定)...................................... 4-1

ワーク座標オフセット設定のプリセット........... 5-11

ワーク座標オフセットのプリセット ................. 5-12 ワーク座標オフセット値.............................. 5-12, 5-13