Soft...

47
SMP モーションデベロップメントキット(MDK) プログラミングマニュアル 第 1.5 版 C ソフトサーボシステムズ株式会社 Soft Servo SYSTEMS, INC

Transcript of Soft...

Page 1: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK)

プログラミングマニュアル

第 1.5 版

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

Soft ServoSYSTEMS, INC

Page 2: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

警告/重要なお知らせ

i

Soft ServoSYSTEMS, INC

警告

ここで述べられる製品は、誤った使用、不注意または理解不足によりケガや、装置または製品の損傷を引

き起こす恐れがあります。動作中の機構部や高出力・高電流のサーボドライバは非常に危険です。適切な

手順を欠いてモーターの暴走などが起きた場合は、機構部への損害、経済的損失、やけど等深刻なケガ

を引き起こすほか、致死的な事故を招く危険性があります。ソフトサーボシステムズ株式会社はケガ等いか

なる人的被害や機材の損害、また製品の誤った使用による損害やクレームに対し責任を負わないものとし

ます。いかなる場合においても、ソフトサーボシステムズ株式会社またはその供給者はあなたまたはあなた

以外のいかなる人への付帯的、特別な、また結果的に生じる一切の損害(機械、製品、所有物への損害、

利益の逸失、顧客の喪失、信用の喪失、事業の中断、データの喪失、コンピュータの誤動作や故障につ

いてのあなた以外の団体からのクレーム、またこれらに類する全ての損害や損失を含みますがこれらに限

定されません)について、責任を負わないものとします。たとえソフトサーボシステムズ株式会社、その供給

者または代理店がこのような損害の可能性について知らされていた場合も同様です。

従いまして、これらの製品の設置、メンテナンスまたは使用に関わる全ての人がこの冊子及び関連したマ

ニュアルを通読し、その内容を理解する必要があります。ソフトサーボシステムズ株式会社はこの製品に関

する質問への回答及び難解な部分を明確にすることについて可能な限り迅速に対応できるよう準備してい

ます。

ソフトサーボシステムズ株式会社の製品選択と応用は、装置設計者またはエンドユーザの責任となります。

ソフトサーボシステムズ株式会社はその制御機器の機械工具・FA への組み込み方法についていかなる責

任も受け入れません。ソフトサーボシステムズ株式会社が提供する全ての文書や警告は直ちにエンドユー

ザへ提供されなければなりません。

このドキュメントは出版時の情報に基づいており、その時点で可能な限り、正確かつ完全なドキュメントの作

成に努めています。しかしながら製品の様々な使用法又はソフトウェア・ハードウェア設定の組み合わせが

存在するため、このマニュアルがここで述べられる製品の設置、メンテナンスや使用状態、不慮の事故、ま

たはハードウェア・ソフトウェアの設定に関する全ての情報を含んでいるわけではありません。ソフトサーボ

システムズ株式会社はこのドキュメントの所有者に対し、加筆修正が加えられた場合の告知の義務は負わ

ないものとします。いかなる場合においても、ソフトサーボシステムズ株式会社はこのマニュアルの欠陥また

は欠落による損害や人身障害の責任を負いません。

ソフトサーボシステムズ株式会社はこの文書に含まれる情報の正確さ、完全性、十分さ、利便性について

明示的、暗示的また法令によるものに関わらず一切の説明または保証の責任を持ちません。商品性の保

証、目的適合性の保証についての黙示の保証責任は適用されないものとします。

Page 3: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

警告/重要なお知らせ

ii

Soft ServoSYSTEMS, INC

重要なお知らせ

このマニュアルに含まれる情報は、ソフトサーボシステムズ株式会社との関連した契約で同意された目的

にのみ使用されることを前提として作成されています。ここに含まれる全ての内容は当事者間の契約で定

めた権利と制約の上で使用されるものとします。

このマニュアルは機密の情報を含んでおり、ソフトサーボシステムズ株式会社への事前通知及び書面によ

る許諾なしに第三者に対して配布もしくは第三者と共有してはなりません。またソフトサーボシステムズ株

式会社への通知及び書面による許諾なしに本内容の一部または全部を複製または転用してはなりませ

ん。

このマニュアルを作成するにあたり可能な限りの注意を払っていますが、ここに含まれる情報は予告なしに

変更される場合があります。これはソフトサーボシステムズ株式会社が継続的に製品の改良に努めている

ためです。ソフトサーボシステムズ株式会社はこのマニュアルの誤記や内容の欠落についての責任は負わ

ないものとします。

全ての権利は留保されています。この内容に関する契約に違反した場合は法律の及ぶ限りの範囲で起訴

されます。

注意

Windows XP Service Pack 3 が RTX と互換性のない問題につい

Windows XP Service Pack 3(SP3) は RTX7.0 と互換性がありません。Service Pack 2 は必要とされますが、

SP3 をインストールしてはいけません。

注意!

お使いの SMP 製品は Windows XP SP 3 では動作しません。SP3

がアップデートによってインストールされた場合は、「プログラムの

追加と削除」(「アップデートの表示」ボックスをチェックして下さい)

の機能によってアンインストールできる可能性があります。もし

Windows XP SP3 ディスクによってインストールされていた場合

は、Windows XP with SP2 で再インストールする必要があります。

Page 4: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

目次

iii

Soft ServoSYSTEMS, INC

目次

第 1 章: SMP 及び MDK の概要.............................................................................................1-1

1.1 SMP の概要 ...................................................................................................................1-1

1.2 必要システム環境 ...........................................................................................................1-2

1.2.1 PC ハードウェア .......................................................................................................1-2

1.2.2 PC ソフトウェア .........................................................................................................1-3

1.2.3 PC 機能 ..................................................................................................................1-3

1.3 モーションデベロップメントキット(MDK)............................................................................1-3

1.4 SMP シミュレータ(MDK プレミアムパックに含まれます) .....................................................1-3

1.5 ソフトウェア開発..............................................................................................................1-4

第 2 章: SMP ソフトウェアモーションテクノロジ ...........................................................................2-1

2.1 PC ベースのテクノロジ .....................................................................................................2-1

2.2 Windows のリアルタイム拡張 ...........................................................................................2-1

2.3 補間速度(周期)..............................................................................................................2-1

第 3 章: SMP ソフトウェアアーキテクチャ...................................................................................3-1

第 4 章: VERSIOBUS 通信及びハードウェア ..............................................................................4-1

4.1 VersioBus に必要なハードウェア .....................................................................................4-1

4.2 VersioBus オプションハードウェア ....................................................................................4-1

4.3 FPGA ハードウェア シェルアーキテクチャ ........................................................................4-2

4.4 VersioBus 接続..............................................................................................................4-2

第 5 章: SMP 基本ソフトウェアコンポーネント ............................................................................5-1

5.1 Ardence RTX RT...........................................................................................................5-1

5.2 SMP リアルタイムソフトモジュール.....................................................................................5-1

5.3 SMP モーションエンジン..................................................................................................5-2

5.4 SMP モーションパーサー.................................................................................................5-2

5.5 ラダーワークス PLC エンジン ..........................................................................................5-3

5.6 SMP リアルタイム DLL....................................................................................................5-3

5.7 SMP モーション及びロジック API(MAPI).........................................................................5-3

第 6 章: ARDENCE RTX .........................................................................................................6-1

6.1 Ardence RTX の概要 .....................................................................................................6-1

6.2 RTX アーキテクチャ ........................................................................................................6-1

6.2.1 RTX アーキテクチャの概要 .......................................................................................6-1

6.2.2 リアルタイム プロセス間通信.....................................................................................6-2

6.2.3 HAL 拡張 ...............................................................................................................6-2

6.2.4 単一プロセッサ及びマルチプロセッサシステム ............................................................6-2

6.3 RTX アプリケーションプログラムインターフェース(API).......................................................6-3

6.3.1 RTX API の概要......................................................................................................6-3

6.3.2 Win32 及びリアルタイム API.....................................................................................6-3

6.3.3 RTX 実行ファイルイメージ.........................................................................................6-3

6.3.4 ランタイムライブラリ...................................................................................................6-3

6.3.5 ユニコード ...............................................................................................................6-4

6.4 RTX アプリケーションの設計と開発...................................................................................6-4

6.4.1 概要 .......................................................................................................................6-4

6.4.2 RTX デバイスドライバ ...............................................................................................6-4

6.4.3 リアルタイムアプリケーションのテスト...........................................................................6-4

6.4.4 RTSS プロセスの作成と開始 .....................................................................................6-5

6.4.5 RTSS プロセスの停止...............................................................................................6-5

6.5 割込み遅延の原因とその管理..........................................................................................6-5

6.5.1 ソフトウェア的要因 ...................................................................................................6-5

Page 5: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

目次

iv

Soft ServoSYSTEMS, INC

6.5.2 ハードウェア的要因..................................................................................................6-5

6.5.3 割込み遅延の RTX 管理..........................................................................................6-6

第 7 章: MDK 環境のセットアップ ............................................................................................7-1

7.1 モーションデベロップメントキットのインストール...................................................................7-1

7.2 Visual Studio の設定 .....................................................................................................7-5

7.2.1 SMP モーション及びロジック API のための Visual C++ の設定...................................7-5

7.2.2 SMP モーション及びロジック API のための Visual Basic の設定.................................7-8

第 8 章: SMP アプリケーション構築のための MDK の使用法 .....................................................8-1

8.1 MDK サポートオプション .................................................................................................8-1

8.2 SMP モーション及びロジック API の関数呼び出しと遅延....................................................8-1

8.2.1 繰り返しのない SMP モーション及びロジック API 関数呼び出し ..................................8-1

8.2.2 繰り返しのある SMP モーション及びロジック API 関数呼び出し...................................8-1

8.2.3 sssLoadParameters, sssSaveParameters, sssSendParameters のプログラム遅延...8-1

8.2.4 SMP モーション及びロジック API 関数呼び出し間のプログラム遅延 .............................8-1

8.3 SMP モーション及びロジック API 関数呼び出しの順序 ......................................................8-2

8.3.1 PLC 関数の呼び出し................................................................................................8-2

8.3.2 パラメータ関数の呼び出し ........................................................................................8-2

8.3.3 ブロックサーチ関数の呼び出し..................................................................................8-2

8.4 SMP アプリケーションが SMP コンソールと同じパラメータを使用しているかの確認 ...............8-2

8.5 MDK から特定の PLC ビットへのアクセス .........................................................................8-3

8.6 スレーブ軸との同期制御 .................................................................................................8-3

8.7 アブソリュートエンコーダの設定........................................................................................8-3

8.8 カスタイマズ SMP アプリケーションを新しいバージョンの MDK へアップデート ....................8-4

8.9 カスタマイズ SMP アプリケーションのテスト中に値を変更する .............................................8-4

第 9 章: サンプルコード ...........................................................................................................9-1

9.1 サンプルコードの概要 .....................................................................................................9-1

9.2 PLC のサンプルコード.....................................................................................................9-3

9.2.1 PLC のサンプルコードの使い方 ................................................................................9-3

9.2.2 SwPlcDll.dll における PLC 関数の説明 ...................................................................9-3

9.2.3 Plc_ini_start/PLC_INI_START_PROC..................................................................9-4

9.2.4 PlcRequest/PLC_REQUEST_PROC......................................................................9-5

9.2.5 SetPLCdata/SET_PLC_DATA_PROC...................................................................9-6

9.2.6 SavePLCdata/SAVE_PLC_DATA_PROC..............................................................9-7

9.3 ブロックサーチのためのサンプルコード .............................................................................9-8

9.3.1 ブロックサーチ例 1:N サーチボタンのイベント操作の一部 ..........................................9-8

9.3.2 ブロックサーチ例 2:タイマー関数のプロセス(スレッド関数) .........................................9-8

9.3.3 ブロックサーチ例 1:スタートボタンのイベント操作の一部 .............................................9-9

第 10 章: ソフトウェア設定のバックアップ .................................................................................10-1

図表目次

図 1-1 VERSIOBUS インターフェース.............................................................................................1-1

図 1-2 FXI-40 インターフェース ...................................................................................................1-1

図 1-3 MECHATROLINK インターフェース ................................................................................1-2

図 1-4 IEEE1394 インターフェース ..............................................................................................1-2

図 3-1 SMP の独特なソフトウェアアーキテクチャ............................................................................3-2

図 6-1 SMP リアルタイム ソフトウェアモジュール ............................................................................5-1

図 7-1 RTX と WINDOWS の共存状態 ..........................................................................................6-2

図 8-1: 「WELCOME TO MDK INSTALLATION」 ウィンドウ .............................................................7-1

Page 6: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

目次

v

Soft ServoSYSTEMS, INC

図 8-2: 「WINDOWS INSTALLER」 ウィンドウ .................................................................................7-2

図 8-3: 「WELCOME TO THE SETUP WIZARD」 ウィンドウ...............................................................7-2

図 8-4: 「SELECT INSTALLATION FOLDER」 ウィンドウ ..................................................................7-3

図 8-5: 「CONFIRM INSTALLATION」 ウィンドウ .............................................................................7-3

図 8-6: 「INSTALLING MDK」 ウィンドウ.......................................................................................7-4

図 8-7: 「INSTALLATION COMPLETE」 ウィンドウ...........................................................................7-4

図 8-8: VISUALC++ 「OPTIONS」 ウィンドウ -- 「EDITOR」タブ.......................................................7-5

図 8-9: VISUALC++ 「OPTIONS」 ウィンドウ -- INCLUDE ファイルの表示 ........................................7-5

図 8-10: VISUALC++ 「OPTIONS」 ウィンドウ -- ライブラリファイルの表示.......................................7-6

図 8-11: VISUALC++ 「PROJECT SETTINGS」 ウィンドウ -- 「GENERAL」 タブ ................................7-7

図 8-12: VISUALC++ 「PROJECT SETTINGS」 ウィンドウ -- 「LINK」 タブ .......................................7-7

図 8-13: VISUAL BASIC 「ADD MODULE」 ウィンドウ -- 「NEW」 タブ.............................................7-8

図 8-14: VISUAL BASIC 「ADD MODULE」 ウィンドウ -- 「EXISTING」 タブ .....................................7-8

図 8-15: VISUAL BASIC 「ADD MODULE」 ウィンドウ -- MAPI モジュールの表示 ...........................7-9

図 9-1: モーションデベロップメントキットディレクトリ構造.................................................................9-2

表 9-1:SWPLCDLL.DLL の PLC 関数 ..........................................................................................9-3

Page 7: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 1 章: SMP 及び MDKの概要

1-1

Soft ServoSYSTEMS, INC

第1章: SMP 及び MDK の概要

このマニュアルは「C/C++/VisualBasic 用 SMP モーション及びロジック API(MAPI)リファレンスマニュアル」

と合わせてご使用ください。

1.1 SMP の概要

SMP はソフトサーボが提供する完全な PC ベースのソリューションファミリーの基本部分を形成するソフトモ

ーション技術です。単一の CPU がグラフィカルユーザーインターフェースやネットワーク通信などをサポー

トするほか、フィードバックループ、多軸補間、G コード処理、PLC を含む全てのモーション、制御タスクをリ

アルタイムで行ないます。SMP ソフトウェアテクノロジは Ardence の RTX テクノロジを使用して

Windows2000/XP/XPe で動作するほか、Linux 上ではリアルタイムカーネルで動作します。

ソフトサーボのSMP汎用モーションコントロールにはそれぞれ通信テクノロジの異なる4つのサーボ通信プ

ラットフォームが用意されています。

VersioBusTM 光ファイバデジタルサーボ及び I/O通信

FXI-40 パラレル通信 PC インターフェース

安川電機 MECHATROLINKTM II (10Mbps)デジタルサーボ通信テクノロジ

IEEE1394(FireWire) デジタルサーボ通信

これら 3つのサーボ通信インターフェースを図式化すると次の図のようになります。

図 1-1 VersioBus インターフェース

図 1-2 FXI-40 インターフェース

ホスト CPU

■Windows または Linux

■SMPモーション

■ソフトウェア PLC

■SMP GUI

■VersioBus ドライバ

汎用 アナログインター

フェースサーボドライバ

デジタル I/Oデバイス

FP-60/FP-75

デュアルリンク

VersioBus

アダプタボード

DC-120 リモート

サーボインターフェース

モジュール

IM-200 汎用

I/O モジュール

サーボ

ネットワーク

I/O

ネットワーク

VersioBus インターフェース

ホスト CPU

■Windows または Linux

■SMPモーション

■ソフトウェア PLC

■SMP GUI

■FXI-40 ドライバ

汎用 アナログインター

フェースサーボドライバ

デジタル I/Oデバイス

FXI-40 マルチ

ファンクション

データ取得

ボード

FXI-40 サーボ&I/O

接続モジュール100 ピン

導線ケーブル

FXI-40 インターフェース

Page 8: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 1 章: SMP 及び MDKの概要

1-2

Soft ServoSYSTEMS, INC

図 1-3 MECHATROLINK インターフェース

図 1-4 IEEE1394 インターフェース

1.2 必要システム環境

1.2.1 PC ハードウェア

SMP 製品を動作させるのに必要なシステムは以下の通りです。

CPU:

○ PentiumIII 1 GHz同等品かそれ以上の製品

○ 3D-DLACC(三次元の動的等高線コントロール)の場合 PentiumIV 2 GHzまたはそれよりも高速

なもの

RAM:128MB (256MB推奨)

ハードディスク空き容量: 30MB

イーサネット:10MB/秒 または 100MB/秒

ISA または PCI スロット(使用されるサーボプロットフォームとハードウェアオプションによる)

ディスプレイ:

○ 256 色 グラフィックアダプタ

○ 800 x 600 ピクセルカラーモニタ (1024 x 768推奨)

○ 推奨ビデオチップ:ATI または nVidia

○ ソフトサーボシステムズ製品 S3, Trident 及び VIA と互換性のないビデオチップ

ホスト CPU

■Windows または Linux

■SMPモーション

■ソフトウェア PLC

■SMP GUI

■MECHATROLINK ドライバ

■安川電機製サーボドライバ

■安川電機製インバータ

■I/O デバイス(デジタル I/O

アナログ I/O、パルスカウンタ)

MECHATROLINK

アダプタボードMECHATROLINK

ネットワーク

ホスト CPU

■Windows または Linux

■SMPモーション

■ソフトウェア PLC

■SMP GUI

■IEEE1394 ドライバ

■Ormec IEEE1394デジタル

サーボドライバ

■Wago IEEE1394 I/Oデバイス

IEEE1394

PCIアダプタボード

IEEE1394

デジタルサーボ

ネットワーク

Page 9: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 1 章: SMP 及び MDKの概要

1-3

Soft ServoSYSTEMS, INC

1.2.2 PC ソフトウェア

・SMP 製品は以下のいずれかのオペレーティングシステム上で動作します。

Microsoft Windows 2000 サービスパック 4,

Microsoft Windows XP Professional Edition SP2(SP3 には対応しておりません), Microsoft Windows XPe

SMP 製品はオペレーティングシステムを含みません。

・Ardence RTX ランタイムソフトウェア: SMP 製品に同梱されています。

・システム設定の行えるアドミニストレータ権限:Ardence RTX のインストール/アンインストール及び使用に

必要です。

・以下の標準のMicrosoft HALのうちのいづれか:

i) ACPI Multiprocessor PC

ii) ACPI Uniprocessor PC

iii) Advanced Configuration and Power Interface(ACPI) PC

iv) MPS Multiprocessor PC

v) Standard PC

1.2.3 PC 機能

使用するサーボインターフェース、PC上のPCIまたは ISAバススロットの位置、マザーボードスロットの位置、

そしてソフトウェア・ハードウェアの設定によっては、IRQ(割込み要求)の競合を避けるために PC の機能の

一部を停止しなければならない場合があります。これらの機能には USB、イーサネット、サウンド、モデム等

ハードウェア的なものを含みます(これらに限定されるものではありません)。

ソフトサーボ製品をインストールするための PC を購入する前に、ソフトサーボシステムズ営業にご確認され

ることをお勧めします。

1.3 モーションデベロップメントキット(MDK)

MDKパッケージと C/C++、Visual Studio 6.0、Visual Studio .NET を使用することにより、独自の SMPを作

成したりカスタマイズしたりすることができます。SMPアプリケーションはSMPテクノロジとMAPI(SMPモーシ

ョン及びロジックAPI)をベースとしてWindows 2000/XP/XPe、VersioBus、FXI-40、MECHATROLINKまた

は SSCNET などのインターフェースプラットフォーム用に構築することができます。MAPI は MDK の中核を

なすものであり、以下のものを含みます。

○ MAPI Visual Basic 6.0 モジュールパック:Visual Basic プロジェクトに組み込まれる再利用可能な

コードモジュールで、SMP モーション及びロジック API 関数をアプリケーションに用いることができ

ます。

○ MAPI C/C++インターフェースパッケージ:C/C++プロジェクトにインクルードされるヘッダファイル

及びライブラリファイルです。

SMP アプリケーションの作成またはカスタマイズを可能にする 100 以上の API についての詳細な説明(関

数説明、宣言、引数、戻り値、使用例など)は「C/C++/Visual Basic 用 SMP モーション及びロジック

API(MAPI)リファレンスマニュアル」に記載されています。

1.4 SMP シミュレータ(MDK プレミアムパックに含まれます)

モーションコントロールとハードウェアは SMP シミュレータを使用してシミュレートすることができます。ホスト

PCにアダプタボード(VersioBusアダプタボード、RTEXアダプタボード、MECHATROLINKアダプタボード、

SSCNETアダプタボード)を取り付ける必要はありません。ユーザはハードウェアやモータをPCに接続せず

にソフトウェア単体で動作させることができます。例えばユーザは存在しない軸をジョグ移動し、その移動が

Page 10: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 1 章: SMP 及び MDKの概要

1-4

Soft ServoSYSTEMS, INC

ディスプレイ上の位置表示やプロット表示に反映されることを確認できます。

通常、SMP システムでは各サーボループを開始する外部信号(割込み)をアダプタボードで発生させます。

SMPシミュレータを使用する場合、このアダプタボードの割込みサービスルーチンはシミュレータのリアルタ

イムタイマー機能で代用されます。サーボの遅れはあらかじめハードコーディングにより定義された値に設

定され、エンコーダからの実際のフィードバックに置き換えています。

SMP シミュレータには 3つの目的があります。

1) ソフトウェア開発:モーションコントロールのシミュレーションを行なうことにより、開発者はハードウェ

アや機械の損傷のリスクを負わずに開発中のアプリケーションのテストを行なうことができます。

2) トレーニング:新しいオペレータまたは将来 SMP アプリケーションを使用する可能性のある人は

SMP アプリケーションを実際の(高価な)ハードウェアの損傷を心配せずに操作することができま

す。SMPシミュレータは SMP製品のオペレータを教育するための非常に優れたツールです。

3) プログラムの検証とテスト:モーションコントロールのシミュレーションを行なうことにより、開発者は

ハードウェアや機械の損傷のリスクを負わずにモーションプログラムをテストし、それらモーション

プログラムにより作成されたプロット表示を見ることができます。

シミュレータパッケージは各 SMP製品で利用可能です;

SMP400 シミュレータパッケージ、SMP450 シミュレータパッケージなど。

1.5 ソフトウェア開発

ユーザはC/C++の高速実行のメリットとVisual Basicの高度でプロフェッショナルなGUIを簡単に構築でき

るメリットの双方を織り交ぜてアプリケーションを構築することができます。

既にある SMP アプリケーションを使用する際、インターフェースやそのほかの機能に微調整を施す必要が

生じる場合があります。この場合に独自のアプリケーションを設計するためのベースとなる Visual Basic 及

び C/C++ソースコードが用意されています。独自のモーションコントロールシステムやそのオペレータのニ

ーズに合わせたカスタムアプリケーションを構築する場合には、この方法が最も効率的です。

SMP コンソール用のVisual Basic のソースコードはMDKに含まれています。

ソフトウェア開発ツールに加え、ソフトサーボシステムズはソフト開発サービスも提供しています。

独自の SMP アプリケーションの開発を始めるには、まず次章以降で説明される SMP テクノロジと SMP アー

キテクチャを理解する必要があります。

Page 11: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 2 章: SMP ソフトウェアモーションテクノロジ

2-1

Soft ServoSYSTEMS, INC

第2章: SMP ソフトモーションテクノロジ

2.1 PC ベースのテクノロジ

SMPTMテクノロジはソフトサーボシステムズの SMP製品全ての基となる技術です。この革新的な PCベース

のテクノロジはソフトウェアコンポーネントに力点を置き CPU の利点を活かす一方でハードウェア的な要件

を低減または無くすことが可能な、独特でオープンなアーキテクチャを有しています。(サーボ通信プラット

フォームの選択によって異なります。)

このソフトモーションテクノロジは今日の PCが持つ非常に高速かつ高精度(倍精度浮動小数点)の計算能

力をフルに活かしています。この計算能力は少し前のスーパーコンピュータに匹敵します。開発される

SMPアプリケーションは進化を続けるCPUの能力を利用しているため、CPUの能力が高まれば高まるほど

SMP アプリケーションのスピードと能力も向上します。

SMP テクノロジを使用すれば、他社のモーションコントロールのような独占的な情報やブラックボックスの技

術に頼ることなくSMP製品を構築することができます。SMPのオープンなアーキテクチャとリソースを使用す

れば、独自の製品コンセプトを実現したり独自のノウハウを利用して最良の SMP 製品を構築する柔軟性と

自由を得ることができます。

2.2 Windows のリアルタイム拡張

SMP ソフトウェアは Ardence RTX(Windows オペレーティングシステム用ハードウェアリアルタイム拡張機能)

上に構築されます。このマルチタスク/マルチスレッドのリアルタイムソフトウェアにより、タイムクリティカルな

(時間的な制約の厳しい)サーボコントロールプログラムでも単一のホスト CPUで動作することが可能になり

ます。このホスト CPU は全てのリアルタイムサーボ・モーションコントロールタスク(GUI、プログラムのロード

や変換、ファイル管理、データ処理、ネットワーク通信のほかフィードバックループ、加減速、多軸座標移

動、PLC、Gコード処理等)を同時に実行します。この高速の多軸位置決めサーボループは単一のCPU内

で完全に閉じられており、速度フィードフォワード、バックラッシュ補償、リードネジピッチエラー補償、リニア

スケールフィードバック補償、スムージングや補間等、それぞれ最適化された非常に高速で正確なモーシ

ョンコントロールを実現します。ソフトモーションとソフト PLC は単一のモーション・マシンコントロールアプリ

ケーションに統合され、比類のないモーション・マシンコントロールを実現します。

2.3 補間速度(周期)

それぞれのサーボループを開始する割込み処理ルーチン(ISR)は、VersioBus インターフェースで補間速

度 1ms、MECHATROLINK で補間速度 4ms に設定されています。

Page 12: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第3章: SMP ソフトウェアアーキテクチャ

3-1

Soft ServoSYSTEMS, INC

第3章: SMP ソフトウェアアーキテクチャ

SMP 製品は、ハードウェアが PC に接続され、PC上でソフトウェアとモーションコントローラが動作する点で

他製品と大きく異なります。

SMPソフトウェアアーキテクチャは以下の3つのレイヤー(階層)からなる、拡張可能かつオープンな独特の

アーキテクチャです。

1) 下層部は 3 つのリアルタイムモジュールから形成されています。:SMP モーションエンジン、ラダーワー

クスPLCエンジン、そしてSMPモーションパーサーです。これらのモジュールは完全に統合されリアル

タイムサブスペース(RTSS)で実行されます。またモーションコントロールで必要とされるクリティカルな

関数を実行します。コンピュータの CPUはこの層の実行の優先度を最高位に設定しています。

2) 上層部は SMP コントローラ(SMP400, SMP450 など) を Win32 サブスペースで実行します。これらの

GUI アプリケーションはリアルタイムモーションコントロール以外の関数(ステータス表示、プログラムの

変換、読みこみ、ユーザーインターフェース及びファイル管理)に使用されます。これらの関数はリアル

タイムモーションコントロールと同時に実行されます。

3) 中層部(SMP リアルタイム DLL)はリアルタイムサブスペース内の SMPモーションエンジンと、Win32 サ

ブスペース内にあるユーザ SMP アプリケーションとのインターフェースを提供します。SMP リアルタイム

DLL は Windows のリアルタイム拡張である ArdenceRTX をサポートし、これにより全ての汎用モーショ

ンコントロール用 SMP GUI アプリケーションが SMP モーションエンジンとシームレスに統合されていま

す。

データ処理やプラントのモニタリング、ネットワーク通信、画像システム、統計プロセスコントロールをSMPシ

ステムに組み込むためにサードパーティのウィンドウズアプリケーションを追加で組み込むことも容易です。

SMP システムの図式は次のようになります。

Page 13: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第3章: SMP ソフトウェアアーキテクチャ

3-2

Soft ServoSYSTEMS, INC

図 3-1 SMP の独特なソフトウェアアーキテクチャ

ラダー

ワークス

PLC

SMP

コンソール

サンプル SMP

アプリケーション

ユーザー SMP

アプリケーション

SMPモーション及びロジック API

Windows 2000/XP/XPe PC

SMP リアルタイム DLL

ラダー

ワークス

PLC

エンジン

SMP

モーション

パーサー

ハードディスク ハードディスク

SMP モーションエンジン

IEEE 1394

ドライバ

VersioBus

ドライバ

FXI-40

ドライバ

MECHATROLINK

ドライバ

サーボステータス

コントロール変数

コマンド

インターフェース

モーションデータ用

ロータリーバッファ

補間・プロファイリング・補償

・PID サーボアルゴリズム他

PCI

バス

PCI or

ISA バス

PCI or

ISA バス

ISA

バスボード ボード ボード LINKボードIEEE1394 VersioBus FXI-40 MECHATRO

ホスト

CPU

Win32

サブ

スペース

RTOS

サブ

スペース

SMP450

SMP850

にのみ

含まれます

Page 14: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 4 章: FXI-40 通信及びハードウェア

4-1

Soft ServoSYSTEMS, INC

第4章: VersioBus 通信及びハードウェア

IEEE1394 又は MECHATROLINK インターフェースを使用する場合はこの章をお読みになる必要はありま

せん。VersioBusインターフェース用のVersioBus通信とハードウェアはソフトサーボシステムズ株式会社の

独自のものであるため、このマニュアルでカバーされています。VersioBus インターフェース用の SMP 製品

を開発する場合はVersioBus 通信技術とハードウェアの理解が役に立ちます。

4.1 VersioBus に必要なハードウェア

VersioBus インターフェースシステムでは以下のハードウェアが必要となります。

FP-60/FP-75:デュアルリンクの VersioBus アダプタボードです。ホスト PC 上の ISA バス又は PCI バ

スに挿入し、ハンドホイールのためのI/O及び32点の光絶縁の汎用I/Oを提供します。FP-60はISA

バススロット用、FP-75 は PCI バススロット用です。VersioBus インターフェースシステムにはこれらのう

ちいずれか一つが必要となります。(SSP-140 パネル PC を購入された場合、VersioBus アダプタボー

ドは SSP-140 に組み込まれています。)

DC-120:マシンツール内のサーボドライバ及びFP-60(またはFP-75)に接続する4軸のサーボインタ

ーフェースモジュールです。最大 4台の DC-120 を VersioBus 光ケーブルによりデイジーチェーン接

続して最大16軸のモーションコントロールを行なうことができます。それぞれのDC-120は2つの汎用

I/Oコネクタを通して32点の光絶縁の汎用 I/Oを提供し、これらの I/Oはユーザー定義の信号(デジ

タルとアナログの両方)に使用することができます。

VersioBus 光ケーブル:VersioBus 機器を接続するために使用します。

4.2 VersioBus オプションハードウェア

以下のものはニーズに合わせてシステムを拡張するために VersioBus インターフェースシステムに組み込

むことのできるオプションのハードウェア機器です。

IM-200:VersioBusインターフェースシステムの I/Oを増設するためのLEDと端子ネジ付きの64点汎

用 I/Oモジュールです。最大 4台の IM-200 を光ケーブルによりデイジーチェーン接続して最大256

点の I/O を増設することができます。

TB36A, TB36B:I/O機器とDC-120、あるいはサーボドライバとDC-120とを接続するためのネジ式端

子台付きボックスです。TB36A と TB36B の違いはネジ式端子台の大きさと形状のみです。TB36A は

スペード端子用の 2つの端子ブロックを持っています。またTB36Bは導線挿入式のネジ端子ブロック

を 1つ持っています。

TB37AD:操作パネルと PCを接続するための 37 ピンのネジ式端子台付きボックスです。

HW-100:機械の手動ジョグ操作のための手持ち型の手動パルス発生器(ハンドホイール)です。非常

ボタン付きです。

サーボドライバ及び I/O ケーブル:使用されるサーボドライバや I/O 機器に予め適合させたサーボド

ライバケーブルや汎用 I/O ケーブルをご注文頂けます(御注文の際はピン配置をご連絡ください)。

Page 15: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 4 章: FXI-40 通信及びハードウェア

4-2

Soft ServoSYSTEMS, INC

4.3 FPGA ハードウェア シェルアーキテクチャ

プログラム可能な論理回路 IC(FPGA)技術の独特な利用法により、VersioBus は広範な種類やプロトコル

のサーボモータ及びエンコーダと互換性を持ちます。VersioBus は FPGA 技術の持つ様々な機器に対応

できる柔軟性(AC 及び DC サーボモータ、インクリメント型エンコーダ、安川電機製アブソリュート型エンコ

ーダ)を最大限に活用しています。

独自の FPGA ソフトウェアライブラリにより、VersioBus システムは簡単なハードウェアアップデートだけで

様々なモーターやエンコーダに対し即座に適合することができます。性能の最適化のため、FPGAはホスト

CPU へシームレスに統合されます。このシステムは時間及びコストのかかるハードウェアアップグレードの

手間を省き、システム全体を動的かつ柔軟性に富んだものにします。

シェルアーキテクチャ内 FPGA の様々な設定(特に AC/DC モータ及びリニアスケール)については

「VersioBus インターフェースシステムのためのハードウェア及び配線マニュアル」、第 2 章:DC-120 の

「FPGAハードウェアシェルアーキテクチャ」の項を参照してください。

4.4 VersioBus 接続

VersioBusTMは高価な導線ケーブルを必要としない 10Mbps のリアルタイム光ファイバ通信プロトコルです。

接続は簡単で、メンテナンス作業はほとんど必要ありません。

VersioBus 接続により、複雑な作業を省き、さらに通信時のノイズを低減することができます。また、ホスト

PC と通信する際のエンコーダケーブルやアナログケーブルも不要です。

Page 16: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 5 章: SMP 基本ソフトウェアコンポーネント

5-1

Soft ServoSYSTEMS, INC

第5章: SMP 基本ソフトウェアコンポーネント

次のソフトウェアが各 SMP製品に同梱されています。

5.1 Ardence RTX RT

Windows 2000/XP/XPe オペレーティングシステムに対しリアルタイムかつ優先度の高いマルチタスク

プロセスを追加するためのリアルタイム機能拡張です。

リアルタイムでの開発や、ミッションクリティカルな(高い性能やリアルタイムの確定性が要求される)ア

プリケーションの実行環境をWindows 上に実装します。

Windows に汎用OS と高性能リアルタイムOSの両方の機能を同時に持たせます。

5.2 SMP リアルタイムソフトモジュール

SMP システムは、リアルタイムサブスペースで動作する 3 つのソフトウェアモジュール --- SMP モーション

エンジン、SMP モーションパーサー、ラダーワークス PLC エンジン --- に大きく依存しています。リアルタ

イムサブスペースは Ardence RTX OS リアルタイム機能拡張により作られます。

これら 3つのリアルタイムソフトウェアモジュール同士の相互関係は下図によって表されます。

図 5-1 SMP リアルタイム ソフトウェアモジュール

コマンド

コントロール

I/O

マネージャ

ブロック

マネージャ

補間

平均化

位置決め

ブロック

バッファ

SMP

モーション

パーサー

ラダー

ワークス

PLC

エンジン

Win32

HMI

SMP

モーション

エンジン

I/O 速度コマンド エンコーダ

SMP450

SMP850

にのみ

含まれます

Page 17: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 5 章: SMP 基本ソフトウェアコンポーネント

5-2

Soft ServoSYSTEMS, INC

5.3 SMP モーションエンジン

モーションコントロールループのための先進的なソフトウェアモジュールです。

SMP ソフトウェア構造の基本を構成します。

高速の速度フィードバックループ及び位置フィードバックループを閉じます。

高性能・多軸のサーボループのクロージング及び制御、多軸制御、補間、加減速、位置決め、補償

及びスムージングを含む全てのサーボ制御を実行します。

Ardence RTXにより作られるリアルタイムサブスペース(RTSS)で実行されます。

上層の HMI(ヒューマン・マシンインターフェース)GUI アプリケーションからコマンドを受け、マシンツ

ール内のエンコーダや I/Oデバイスに対しコマンドを送ります。

ラダーワークス PLC 及び SMP モーションパーサーとシームレスに統合され、その両方がリアルタイム

サブスペースで実行されます。

5.4 SMP モーションパーサー

G コードのようなモーションプログラミングのためのリアルタイムモーションパーサーソフトウェアです。

基本モーションプログラムの命令文を解析し、SMP モーションエンジンで解釈される形式に変換しま

す。

1000 ブロック/秒の高速ブロック処理能力を持ちます。

オプショナルブロックスキップ機能をサポートします。

メインプログラムからサブプログラムを呼びます。

機械、ワーク、ローカル及び相対座標を認識します。

STMP 機能を含んでいます。

その他以下の機能を持ちます。

○ プログラム停止 (M00)

○ オプショナル停止(M01)

○ プログラム終了(M02)

○ CW(時計回り)(M03) 及び CCW(反時計回り)(M04)

○ プログラム巻き戻し(M30)

○ メインプログラムからのサブプログラム呼び出し(M98)

○ サブプログラムからのメインプログラム呼び出し(M99)

Page 18: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 5 章: SMP 基本ソフトウェアコンポーネント

5-3

Soft ServoSYSTEMS, INC

5.5 ラダーワークス PLC エンジン

リアルタイムソフトウェア PLCモジュールです。

SMP モーションエンジンやサーボワークス CNC と合わせて API 関数を提供する一つの モーション/

マシン コントロールアプリケーションに統合されます。

FANUC とコンパチブルなラダーロジックで動作します。

最大 416 点の Versio Bus インターフェース用光絶縁入出力、最大 216 点の FXI-40 インターフェー

ス用 I/O、最大 464 点の IEEE1394 インターフェース用入出力(光絶縁 416 点、非絶縁 48 点); 288

点の 光絶縁 I/Oに加え、MECHATROLINKインターフェース用 MECHATROLINK I/Oモジュール

がサポートされています。

標準スキャン時間 5ms。

スキャン時間は 1ms まで調整可能。

SMPモーションエンジンと通信し、状態をモニターしながらモーションコマンドを送ることができます。

38 の機能コマンドと 12の基本コマンドを認識します。

5.6 SMP リアルタイムDLL

Win32サブスペース内の SMPアプリケーションと SMPモーションエンジンとの間のインターフェースを

提供します。

RTX (Ardence リアルタイム拡張)をサポートします。

ほとんどの開発者は(SMP モーション及びロジック API を含む)モーションデベロップメントキットを使用

してWin32サブスペース内で独自の上層ユーザーインターフェースアプリケーションを構築しますが、

リアルタイムサブスペースで動作する独自のドライバを作りSMPドライバとリンクすることも可能です。こ

れを行なうにはArdence より RTX ライセンス、そしてソフトサーボシステムズからはリアルタイム DLL ラ

イセンスを取得する必要があります。独自のリアルタイムオペレーティングシステム(RTOS)を作ること

は独自のDSP を加えることと同等です。

5.7 SMP モーション及びロジック API(MAPI)

モーションコントロール API 関数は C/C++ライブラリ及びVisual Basic モジュールとして提供されます。

RTX(Windows OS 用 Ardence リアルタイム拡張)をサポートし、SMP の API を使用することによりモーション

や I/Oのリアルタイムのモニタリングが可能なアプリケーションを構築することが可能です。

デバイス管理、システムの初期化、パラメータ設定、システム制御コマンド、手動操作コマンド、自動操作コ

マンド、テストコマンド、I/O コマンド、PLC コマンド、コントロール・サーボステータスモニタリングなど、API

を使用することで全てのリアルタイムプロセス及びリソースにフルアクセスできます。

Page 19: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-1

Soft ServoSYSTEMS, INC

第6章: Ardence RTX

6.1 Ardence RTX の概要

Windows オペレーティングシステムは先進的な機能を提供し、様々なハードウェア設定や追加コンポーネ

ントをサポートしていますが、一方でそれらの機能はモーションコントロールのようにハードウェア的なリアル

タイム動作を目的として設計されていません。そのため SMP は Ardence RTX を使用し、Windows にハード

ウェア的なリアルタイム機能を追加しています。さらに RTX にはリアルタイムプログラムを開発し実行するた

めのツールやユーティリティ、ハードウェア・ソフトウェア両方のパフォーマンスを測定・微調整するためのツ

ールも用意されています。

Windows オペレーティングシステム(Windows 2000/XP/XPe)を拡張することにより、RTX は確定的で高速

応答が要求される SMP コンポーネントとそれ以外のリアルタイム性のないアプリケーションコンポーネントが

共通の Windows オペレーティングシステムで動作することを可能にします。RTX により、リアルタイム・組み

込みアプリケーションの広範な要求を満たす単一かつ低コストのプラットフォームを動作させることができま

す。

RTXはWindowsに高度なリアルタイム性を実装しますが、その利点をフルに活用するためにリアルタイムア

プリケーション開発者が責任を持たなければならない点が 2 つあります。第一に、応答時間の最大値はシ

ステムによって大きく異なるため、開発者とそのエンドユーザはシステム自体を慎重に選定する必要があり

ます(「セクション1.2 必要システム環境」を御参照ください)。異なるボードメーカー、特にビデオボードメ

ーカーはそれぞれ価格、スループット、そして確定的動作について、それぞれ異なる機能的な取捨選択を

行なっています。Ardence RTX のパフォーマンス解析ツールを利用することで、開発者とユーザは要求さ

れるリアルタイム性を満たすシステムを選定することができます。第二に、開発者は RTXをアプリケーション

に対し適切に実装しなければなりません。アプリケーションへ適切に実装されない場合、RTX が原因で他

のWindows アプリケーションが遅くなったり、システム全体が不安定になったりすることがあります。

RTX を実装する際は、Ardence RTX のドキュメントを参照してください。

6.2 RTX アーキテクチャ

6.2.1 RTX アーキテクチャの概要

RTXは RTSSで知られるリアルタイムサブシステムをWindows に実装します(図6-1 参照)。RTSSは、自分

自身の実行環境と API をサポートするという点では他のWindows サブシステム(Win32, POSIX, WOW又

はDOS)と概念的に同様のものです。RTSSが重要な点で異なるのは、Windowsスケジューラを使用する代

わりに RTSS が自身のリアルタイムスレッドスケジューリングを実行するという点です。さらに、単一プロセッ

サ環境では全ての RTSS スレッドスケジューリングは Windows スケジューリング(Windows 管理の割込みや

分散プログラム呼び出し(DPC)を含む)よりも優先される点も重要です。

Page 20: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-2

Soft ServoSYSTEMS, INC

図 6-1 RTX と Windows の共存状態

6.2.2 リアルタイム プロセス間通信

RTSS もプロセス間通信(IPC)オブジェクト(RTSS 又は Win32 プロセスにより処理されます)をサポートしま

す。これによりリアルタイム及びノンリアルタイムのプログラムの間の通信と同期が容易になります。最後に、

RTSS は他のタイムクリティカルな処理 --- クロック、タイマー割込み管理など --- を RTSS プロセッサに

実装します。

6.2.3 HAL 拡張

RTX はリアルタイム動作を行なうハードウェア抽象化層(HAL)拡張を含んでいます。この拡張は RTSS と

Windowsの割り込みの分離を管理しています。Windowsは(割込み制御レベルでは)RTSSで管理される割

り込みをマスクすることができません。RTSS 処理の間、Windows の割り込みはマスクされます。リアルタイム

HAL 拡張は RTSS 用の高精度クロック及びタイマーをサポートし、一方で Windows 用のノンリアルタイムク

ロック及びタイマーもサポートしています。他のリアルタイムHAL 拡張機能としては、RTSS と Windows 間の

ソフトウェア割込みメカニズム、基本的な例外処理、また確定性のための種々の機能強化があります。

6.2.4 単一プロセッサ及びマルチプロセッサシステム

RTX は単一及びマルチプロセッサの両方の Windows システムをサポートしています。マルチプロセッサを

サポートする RTX ランタイム版は、単一プロセッサ版の全ての機能をカバーし、さらに Intel MPS コンプライ

アント マルチプロセッサシステムの機能を利用してWindows と RTX 両方の環境において、より高いパフォ

ーマンスを実現します。

マルチプロセッサシステムでは、ランタイム RTX はプロセッサ専有モデルを実装します。このモデルでは

RTSS は一つのプロセッサで動作し、それ以外のプロセッサは Windows の動作を行ないます。マルチプロ

セッサ HAL はWindows の起動シーケンスの間、論理プロセッサのうち最後のプロセッサの制御を管理し、

RTSS に制御を渡します。RTSS プログラムはその専有プロセッサ上にロードされ、実行されます。

Win32及びRTSS用RTXアプリケーションプログラミングインターフェース(浮動小数点演算ユニット(FPU)、

構造化された例外処理ルーチンを含みます)は単一プロセッサとマルチプロセッサシステムの両方で使用

できます。これにより RTX(単一プロセッサ)アプリケーションをマルチプロセッサプラットフォーム用に移植

する手間を省くことができます。

Win32

プロセス

Win32 プロセス

又はDLL RTAPI 呼出

Windows カーネル

及び

デバイスドライバ

RTSS プロセス

又は RTDLL

RTX-RTSS (リアルタイム サブシステム)

Windows HAL RTX HAL 拡張

RTAPI W32

Win32 サブシステム

Page 21: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-3

Soft ServoSYSTEMS, INC

6.3 RTX アプリケーションプログラムインターフェース(API)

6.3.1 RTX API の概要

RTX API は Win32 API を基本としており、既にWindows アプリケーション開発者が使い慣れている API 関

数と同様の API を使用しています。このアプローチにより開発者は Win32、コードベース、開発ツールの経

験をそのまま活かすことができ、リアルタイムアプリケーション開発を迅速に行うことができます。Win32 と

RTSS の両方で全ての RTX API(応答時間や動作特性は異なります)がサポートされ、開発者は開発環境

の間で簡単にコードを共有したり移動したりすることができます。

このトピックでは以下の内容が説明されています。

Win32 及びリアルタイム API

RTX 実行ファイルイメージ

ランタイムライブラリ

ユニコード

6.3.2 Win32 及びリアルタイムAPI

RTX は Win32 API 関数のサブセットをサポートしています。それに加え、RTAPI(リアルタイム API)で知ら

れるリアルタイム関数の特別なセットが用意されています。RTAPI 関数はその関数名の先頭に Rt が付けら

れていることで区別できます。RTAPI 関数には Win32 と意味的に同一のものもあれば、RTX に独特なもの

(Win32には類似した呼び出しが存在しないもの)もあります。例えばRTAPI リアルタイムIPC関数は、動作

が行なわれる名前空間やリアルタイム IPCオブジェクトによる確定性以外の点ではWin32 IPC関数と同一

です。一方、Win32 API には割込み管理に関する関数は存在しません。従って独自の割込み管理関数は

RTAPI によって定義されています。

RTX API 関数はリアルタイムアプリケーションコンポーネントの効率的な開発のために慎重に選定されてい

ます。例えば GUI 関連の呼出など、時間的に制限の厳しくないアプリケーションコンポーネントに使用され

る Win32 関数は RTX には含まないようにしています。またリアルタイムプログラミングに必要でない Win32

関数や、確定的な動作を実装するのが事実上困難な API 関数は同様に RTX API 関数に含まれません。

そのため、ほとんどのアプリケーションでは少なくとも 2つのプロセス --- 1つのWin32プロセス(GUI やそ

の他の Win32 固有の関数を利用するため)と 1 つの RTSS ベースのプロセス(タイムクリティカルな処理の

実行のため) --- が同時に動作することが前提となります。

6.3.3 RTX実行ファイルイメージ

RTX は RTSS アプリケーション、RTSS DLL、RTDLL の 3種類の実行ファイルイメージを提供します。RTSS

アプリケーションは Win32 アプリケーションのリアルタイム版です。RTSS DLL はエクスポートライブラリを提

供する RTSS アプリケーションです。RTSS や他のアプリケーションはこのエクスポートライブラリにリンクして

RTSS DLL 内の関数を呼び出すことができます。RTSS DLL は完全な RTSSプロセスであり、RTSS アプリケ

ーションによって使用される前に手動で起動する必要があります。RTDLL は RTSS内で動作する受動的な

プログラムの集まりで、Win32 DLL と機能的に類似しています。

6.3.4 ランタイムライブラリ

RTX はまた様々なランタイムライブラリをサポートし、MS Visual C++をベースとした Cランタイムライブラリを

提供します。RTSS プロセスは静的にリンクされ、それらライブラリをインクルードします(サポートしていない

Win32 関数はリンクされません)。RTSS プロセスはさらに アプリケーションコードをモジュール化するため

に使われたり、リアルタイムソフトウェア環境をランタイムでカスタマイズするような特殊なバージョンの DLL

に対してもリンクされます

Page 22: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-4

Soft ServoSYSTEMS, INC

6.3.5 ユニコード

RTXはユニコードアプリケーションをサポートしています。RTSSプロセスはwmain()関数を使用することがで

き、広範囲の文字入力引数にも対応しています。WCS 関数ファミリのサポートは RTX がサポートする C ラ

ンタイムライブラリの一部として含まれています。

6.4 RTX アプリケーションの設計と開発

6.4.1 概要

リアルタイムアプリケーションの開発を成功させるには、設計者及び開発者はアプリケーションをどのように

効率的に分割するかについて慎重に分析しなければなりません。また、ノンリアルタイム(Win32)のプロセ

スとリアルタイムのプロセス(RTSS)のバランスを正しく取り、それらの間のインターフェースを決定する必要

があります。例えば、タイムクリティカルなプロセスが Win32 プロセス中に存在する場合、あまりに多くのノン

タイムクリティカルなプロセス、またはあまりに多くのプロセスインターフェース間の同期やデータフローの存

在はアプリケーションのパフォーマンスや操作性を低下させ、さらに全体的な開発やメンテナンスを困難に

する恐れがあります。これら制限の厳しい部分のシステム構成に関して、開発者とユーザは様々な取捨選

択や設計を初期段階で詳細に分析検討することが求められます。

このトピックでは以下の内容が説明されています。

RTX デバイスドライバ

リアルタイムアプリケーションのテスト

RTSS プロセスの生成と開始

RTSS プロセスの停止

6.4.2 RTX デバイスドライバ

設計によっては他のアプリケーションコンポーネントへのデバイスドライバとして機能するアプリケーションコ

ンポーネントが必要になります。また、ボードメーカーがそのメーカーのボード用のデバイスドライバを提供

し、様々なリアルタイムまたはノンリアルタイムアプリケーションがそれに対してアクセスを行なう場合がありま

す。デバイスドライバの設計者はドライバとアプリケーションを接続するために DLL またはリアルタイム IPC

を使用することができます。Win32とRTSSプロセスはどちらも同じインターフェースを使用する共通のリアル

タイムドライバに同時にアクセスすることが可能なため、リアルタイム IPC が最も柔軟性の高い選択肢となり

ます。サンプルフォルダにはリアルタイム IPCをベースとした RTX ライブラリが含まれ、Win32又は RTSSア

プリケーション向けに従来のデバイスドライバインターフェース(オープン、クローズ、読み出し、書き込み、

制御)が提供されています。

6.4.3 リアルタイムアプリケーションのテスト

ほとんどの場合、デバイスドライバを含むリアルタイムアプリケーションコンポーネントの初期的な開発とテス

トはWin32環境で行なう方法が最も容易です。Win32環境は最も広範な開発、デバッグ、テストツールやア

プリケーションの誤動作の追跡機能を提供します。すべてのノンタイムクリティカルのテストが完了した後、

確定的な RTSS 環境下でのテストをするには、リアルタイムアプリケーションコンポーネントを RTSSプロセス

として単純に再リンクするだけです。RTSS プロセスに広げてデバッグを行なう必要がある場合はマイクロソ

フトのWinDbg を使用することができます。

Page 23: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-5

Soft ServoSYSTEMS, INC

6.4.4 RTSS プロセスの作成と開始

RTSS プロセスを開始するには様々な方法があります。開発やテストの期間では一般的に RTSS プロセスを

コマンドプロンプトでオプションコマンド引数を付けて開始するか、あるいはエクスプローラでRTSS実行ファ

イルのアイコンをダブルクリックすることで開始します。最終的なアプリケーションでは一般的に起動時(ブ

ルー画面が表示される時)に特定の RTSS を開始する機能を使用するか、または RTSS プロセスを Win32

プロセスの中で直接起動することができます。RTSS プロセスを作成して起動するには Win32 の

RTCreateProcess 関数を呼んで特定の RTSS プロセスを作成/開始します。

6.4.5 RTSS プロセスの停止

以下の場合 RTSSは停止します。

プロセスが ExitProcess 関数を呼んだ場合

ユーザ又はWin32 プロセスが RTSSkill ユーティリティを起動した場合

RTSS タスクマネージャを使用してユーザーがプロセスを終了させた場合

プロセスが例外を生じた場合

Windows システムがシャットダウンされるとき(通常のシャットダウンシーケンス又は例外が発生してブ

ルー画面で停止した場合)

RTSS プロセスはシャットダウン管理プログラム(Windows がシャットダウンされる時に呼ばれたりシステム停

止あるいは再起動の前に Windows を停止して装置の終了シーケンスとクリーンアップを行う時に呼ばれた

りするプログラム)を書き換える場合があります。

6.5 割込み遅延の原因とその管理

リアルタイムシステムの開発者は割込み遅延について特に気を付けなければなりません。このトピックでは

遅延の原因及び RTXによって遅延を管理する方法について検証します。

6.5.1 ソフトウェア的要因

割込み遅延のソフトウェア的要因には次のものが挙げられます。

PIC(プログラム可能な割込みコントローラ)レベルの割込みマスク: Windows カーネル及びドライバ

はHAL IRQL制御呼出を通して割込みマスクを変更します。ドライバは数μsの間割込みをマスクしま

す。

プロセッサレベルの全ての割り込みのマスク: Windows カーネル、HAL、また特別なシステムドライバ

は最大 100ms の間割り込みをマスクします。

割込み処理のための(CPUサイクル)オーバーヘッド

6.5.2 ハードウェア的要因

割込み遅延のハードウェア的要因には次のものが挙げられます。

周辺デバイスによるバスの横取り: 例えばビデオボードでは、CPU がそのボードの I/O空間レジスタ

を読み込もうとした時に CPUが一時的に停止する場合があります。

Page 24: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 6 章: Ardence RTX

6-6

Soft ServoSYSTEMS, INC

SCSI コントローラによる バースト DMA転送

Windows やアプリケーションによるキャッシュ汚染

電源管理機能: 特にポータブルPCのシステムでは時間が来るとパワーセーブモードになり、必要に

応じて復帰しますが、その際に気がつかないほどの(しかしながらリアルタイムアプリケーションにとっ

ては致命的な)遅延を生じる場合があります。

6.5.3 割込み遅延の RTX管理

RTX HAL 拡張を使用して割り込みを分離することにより、RTX は PIC レベルの割込みの無効化が起

こらないようにします。

Windows 及びそのドライバは RTSS の割り込みを無効にすることはできません。

上記に加え、RTSS が動作中は全てのWindows 割り込みがマスクされます。

6.5.4 Windows に対する RTXパワーマネイジメント

RT-TCP/IP スタックを含むUP PICシステム上でRTSSプロセスが動作している場合、RTXパワーマネイジ

メントはシステムパワーのワーキング状態(S0)からスリーピング状態(S1-S5)への遷移をブロックします。この

時、ユーザーにはメッセージで伝えられます。UP PIC システム上で RTSS プロセスが動作していない場合

はそのようなブロックは発生しません。

MP システムや UP APIC システムではシステムパワーのワーキング状態(S0)から他のスリーピング状態

(S1-S5)への遷移は RTSS がロードされている場合にブロックされます。

6.5.5 RTXの休眠方針

RTX は RTX のサブシステムが動作している場合(RTXプロセスは動作していない)、UP PIC システム上で

休眠します。

Page 25: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-1

Soft ServoSYSTEMS, INC

第7章: MDK 環境のセットアップ

7.1 モーションデベロップメントキットのインストール

モーションデベロップメントキット(MDK)のインストールに先立って、Ardence RTX、SMPモーションエンジン

を含むSMP製品(SMP800, SMP850など)がインストール済である必要があります。Ardence RTXのインスト

ールソフトはMDKに同梱されていますが、その前にSMP製品の一部として(有効なPAC番号のある)RTX

を購入している必要があります。(RTX のインストール方法については「VersioBus インターフェースシステ

ム用 SMP インストール及びセットアップマニュアル」、「FXI-40 用インターフェースシステム用 SMP インスト

ール及びセットアップマニュアル」または「MECHATROLINK インターフェースシステム用 SMP インストール

及びセットアップマニュアル」を参照してください。)

以下の手順に従ってインストールを行なって下さい。

1) 現在開いているアプリケーションを全て閉じてください。

2) モーションデベロップメントキットCD-ROMをCD-ROMドライブに挿入してください。インストールソフト

が自動的に起動され、図 8-1 のような「Welcome to MDK Installation」ウィンドウが表示されます。

図 7-1: 「Welcome to MDK Installation」 ウィンドウ

3) 「Read Me」をクリックしてください。インストールに関する情報やモーションデベロップメントキットパッケ

ージに含まれるコンポーネントのリストを記載したファイルがメモ帳によって開かれます。後で参照する

ことができるようにプリントアウトしておくことをお勧めします。

Page 26: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-2

Soft ServoSYSTEMS, INC

4) 図 8-1 の Welcome to MDK ウィンドウで、「MDK」ボタンをクリックしてください。モーションデベロップメ

ントキットのインストールが開始されます。下の「Windows Installer」画面が短い時間表示されます。

図 7-2: 「Windows Installer」 ウィンドウ

5) その後下図のような「Welcome to the Setup Wizard」ウィンドウが自動的に表示されます。

図 7-3: 「Welcome to the Setup Wizard」 ウィンドウ

6) 「Next」ボタンをクリックしてください。次のウィンドウが表示されます。

Page 27: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-3

Soft ServoSYSTEMS, INC

図 7-4: 「Select Installation Folder」 ウィンドウ

7) このウィンドウでは MDK をインストールするディレクトリを選択します。そのままデフォルトのフォルダと

するか、または「Browse」をクリックして新しいインストール先フォルダを「Choose Folder」ダイアログボッ

クスから選択してください。次のウィンドウが表示されます。

図 7-5: 「Confirm Installation」 ウィンドウ

8) 「Next」ボタンをクリックするとMDKが自動的にインストールされます。インストール処理が実行されてい

る間、次のようなウィンドウが表示されます。

Page 28: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-4

Soft ServoSYSTEMS, INC

図 7-6: 「Installing MDK」 ウィンドウ

9) インストールが完了すると次のようなウィンドウが表示されます。

図 7-7: 「Installation Complete」 ウィンドウ

10) モーションデベロップメントキットのインストールが完了しました。「Installation Complete」ウィンドウの

「Close」ボタンをクリックしてください。図 8-1「Welcome to MDK Installation」ウィンドウの「Exit」ボタンを

クリックしてください。これでモーションデベロップメントキットを使用する準備ができました。

Page 29: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-5

Soft ServoSYSTEMS, INC

7.2 Visual Studio の設定

7.2.1 SMP モーション及びロジック API のための Visual C++の設定

Visual C++の設定手順は以下の通りです。

1) Visual C++アプリケーションを起動します。

2) 「Tool」メニューから「Options」を選択します。次のウィンドウが表示されます。

図 7-8: Visual C++ 「Options」 ウィンドウ -- 「Editor」タブ

3) 「Options」ウィンドウの「Directories」タブをクリックします。

図 7-9: Visual C++ 「Options」 ウィンドウ -- Include ファイルの表示

4) 「Show directories for」のプルダウンメニューが「Include files」となっていることを確認してください。

5) ボタンをクリックして新しい「Include」ファイルを追加します。「Directories」テキストボックスにカーソ

ルが表示されます。

Page 30: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-6

Soft ServoSYSTEMS, INC

6) 図 8-9 のようにカーソルの位置で「C:\PROGRAM FILES\SOFTSERVO\SWMDK\C++\INCLUDE」と

入力するか、または をクリックしてこのファイルのディレクトリを指定してください。

7) 次に、下図のように「Show directories for」のプルダウンメニューを「Library files」に切り替えてくださ

い。

図 7-10: Visual C++ 「Options」 ウィンドウ -- ライブラリファイルの表示

8) ボタンをクリックして新しい「Library」ファイルを追加します。「Directories」テキストボックスにカーソ

ルが表示されます。

9) 図 8-9 のようにカーソルの位置で「C:\PROGRAM FILES\SOFTSERVO\SWMDK\C++\LIB」と入力す

るか、または をクリックしてこのファイルのディレクトリを指定してください。

10) 「OK」ボタンをクリックしてください。

11) Visual C++プロジェクトを作成します。(「File」メニューより「New」を選択後、プロジェクトタイプを選択し

てプロジェクト名等を入力して「OK」をクリックします。)

12) 「Project」メニューから「Settings」を選択します。次のようなウィンドウが表示されます。

Page 31: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-7

Soft ServoSYSTEMS, INC

図 7-11: Visual C++ 「Project Settings」 ウィンドウ -- 「General」 タブ

13) 「Link」タブをクリックすると次のようなウィンドウが表示されます。

図 7-12: Visual C++ 「Project Settings」 ウィンドウ -- 「Link」 タブ

14) 図 8-12 のように「Object/Library modules」テキストボックス内でカーソルをテキストの最後尾に移動し

て「Swapi.lib」、「SwDll.lib」、「SwPlcDll.lib」と入力します。

15) 「OK」ボタンをクリックします。

16) 「Swapi_Func.h」を作成するメインのソースコードに追加します。

#include "Swapi_Func.h"

C++プロジェクトで SMPモーション及びロジック API(MAPI)を使用したアプリケーションを作成する準備がで

きました。

Page 32: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-8

Soft ServoSYSTEMS, INC

7.2.2 SMP モーション及びロジック API のための Visual Basic の設定

Visual C++の設定手順は以下の通りです。

1) Visual Basic でプロジェクトを作成します。

2) 「Project」メニューの「Add Module」を選択します。次のウィンドウが表示されます。

図 7-13: Visual Basic 「Add Module」 ウィンドウ -- 「New」 タブ

3) 下図のように「Existing」タブをクリックします。

図 7-14: Visual Basic 「Add Module」 ウィンドウ -- 「Existing」 タブ

4) 「C:\Program Files\SoftServo\MDK\VB\Module」のファイルを表示させます。「Add Module」ウィンドウ

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

Page 33: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 7 章: MDK環境のセットアップ

7-9

Soft ServoSYSTEMS, INC

図 7-15: Visual Basic 「Add Module」 ウィンドウ -- MAPI モジュールの表示

5) 「Swapi_Def.bas」ファイルを選択し、「開く」をクリックします。

6) ステップ 5の手順をさらに 3回繰り返し、「SWAPI_Func.bas」、「SWAPI_Type.bas」、「SwPLC_Func.bas」

も同様に開きます。

Visual Basic プロジェクトで SMP モーション及びロジック API(MAPI)を使用したアプリケーションを作成する

準備ができました。

Page 34: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 8 章: SMP アプリケーション構築のためのMDK の使用法

8-1

Soft ServoSYSTEMS, INC

第8章: SMP アプリケーション構築のための MDK の使用法

8.1 MDKサポートオプション

MDKプレミアムパッケージは以下のものを含んでいます。

最初の 1年間のメンテナンス

最初の 1年間、お一人様のテクニカルサポート(E メール又は電話)

お一人様のMDKプログラミングトレーニング(2日間)

1年メンテナンスには技術サポートスタッフへの無制限の電話と E メールを含んでいます。

テクニカルサポート及びトレーニングは次の各言語で提供されます: 英語 日本語 中国語 韓国語

8.2 SMP モーション及びロジック API の関数呼び出しと遅延

8.2.1 繰り返しのない SMP モーション及びロジック API 関数呼び出し

一般的には繰り返しのない API 関数は API 呼び出し間で遅延なしに呼ばれますが、2点例外があります。

1) sssAutoStart が sssAutoOpenFile/sssAutoOpenFile2/sssAutoRewind の直後に呼ばれた場合には

sssAutoOpenFile / sssAutoOpenFile 2/sssAutoRewind と sssAutoStart との間に最低でも 50ms の遅延が

生じます。

2) sssAutoOpenFile/sssAutoOpenFile2 が sssSetNcMode の直後に呼ばれた場合には sssSetNcMode と

sssAutoOpenFile/sssAutoOpenFile2 との間に 50ms の遅延が生じます。

8.2.2 繰り返しのある SMP モーション及びロジック API 関数呼び出し

API 関数を繰り返し呼び出すときはそれぞれの呼び出しの間を最低でも 10ms 遅延させる必要があります。

(遅延させずに API 関数を呼び出すとリアルタイムエンジンと Win32 サブスペース間の RPC チャンネルを

不足させ、他のスレッドからの API 呼び出しを大幅に遅延させ、深刻な結果を招く場合があります。)

このルールには一点例外があります。sssGetStatus関数は多くのメモリ操作を行なう特別なAPI関数のため、

この関数を繰り返し呼び出す場合、呼び出し間を最低でも(10ms ではなく)50ms はあける必要があります。

8.2.3 sssLoadParameters, sssSaveParameters, sssSendParameters のプログラム遅延

sssLoadParameters, sssSaveParameters, sssSendParameters の間には遅延を生じさせなければなりませ

ん。これはパラメータがセットされてから完全にロード/アップデートされるまでに数 ms の時間が

かかるためですので、パラメータをロード/アップデートした直後は 100ms の遅延を生じさせるコ

マンド(Sleep(100))を使って下さい。

8.2.4 SMP モーション及びロジック API 関数呼び出し間のプログラム遅延

API 関数の呼び出しの間に遅延を発生させる方法は以下の 2つです。

1) 「windows.h」ヘッダーファイルをプログラムにインクルードして Sleep()関数を使用する方法。これにより

ミリセカンドで設定される時間、スレッドをスリープ状態にすることができます。

指定された時間間隔(最低10ms)で起動するタイマースレッドを作成する方法。(注意:繰り返しのAPIはそ

のタイマースレッドの中で 1度だけ呼び出すようにして下さい。)

Page 35: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 8 章: SMP アプリケーション構築のためのMDK の使用法

8-2

Soft ServoSYSTEMS, INC

8.3 SMP モーション及びロジック API 関数呼び出しの順序

8.3.1 PLC 関数の呼び出し

PLC関数の呼び出しは以下の順序となる:

1. sssStartInterrupt(HD)

2. Plc_ini_start(PLC_setdata)

3. sssPLC_Start(HD, PLC_setdat)

8.3.2 パラメータ関数の呼び出し

sssSendParameters 関数を呼び出している場合(この API の呼び出しは必須ではありません)、

sssSendParameters は sssLoadParameters よりも後で呼び出されるようにして下さい。sssSendParameters は

デバイスドライバーにパラメータを設定するために送られ、一方 sssLoadParameters はパラメータの設定を

レジストリからロードしそのデータをパラメータストラクチャーにフィードします。

このような API の呼び出し順序は以下のようになります:

1. sssLoadParameters

2. sssInstallDrivers

3. sssSendParameters

8.3.3 ブロックサーチ関数の呼び出し

ブロックサーチの手順は、まず sssSetBlockSearch でブロックサーチを初期化し、探索が完了するのを待ち

ます。探索が成功したら sssGetBlockSearch を呼び出して軸の動きに必要な情報を得ます。最後に

sssMoveToBlock を呼び出して軸を動かします。API 関数呼び出しの順番は以下のようになります:

1. sssSetBlockSearch

2. sssGetBlockSearch

3. sssMoveToBlock

8.4 SMP アプリケーションが SMP コンソールと同じパラメータを使用しているかの確認

SMP アプリケーションを変更した場合、SMP コンソールと同じシステムパラメータを使っているのか確認しま

す。次の項目の確認を行って下さい:

1) sssInstallDrivers の引数。[宣言:sssInstallDrivers(HSSDEV hDev, LPCSTR pInitDirectory, SHORT

driverInstallMode, SHORT paramLoadMode, LPCSTR pParamPath);]

4つ目の引数(paramLoadMode)が”1”に設定されていることを確認して下さい。”0”はパラメータをロード

しません。”1”は Windows レジストリからパラメータをロードし、”2”はファイルからパラメータをロードしま

す。

2) sssLoadParameters の 引 数 。 [ 宣 言 : HRESULT sssLoadParameters(LPCTR pParamPath,

PNC_PARAMpNcParam, PSERVO_DRIVE_PARAMpServoDriveParam,

PSERVO_CONTROL_PARAMpServoControlParam);]

pParamPath:初期化ファイルを含むフォルダのフルパス。NULL に設定されている場合、パラメータは

システムレジストリからロードされます。pParamPath の値はNULLに設定して下さい。

3) 「8.3.2 パラメータ関数の呼び出し」の要件を確認して下さい。

Page 36: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 8 章: SMP アプリケーション構築のためのMDK の使用法

8-3

Soft ServoSYSTEMS, INC

8.5 MDKから特定の PLCビットへのアクセス

以下のようにして C/C++を使って MDK から特定の PLC ビットへアクセスすることができます(Visual Basic

では若干違った方法になります。)

1) sssGetStatus を呼び出して sssStatus 構造をゲットし、PLCデータを読みだします。

2) sssStatus 構造内で plc_data ストラクチャーにアクセスします。Plc_data 構造にはすべての PLC 信号が

バイト形式で含まれています。特定のビットを参照するにはAND操作をして下さい。

次のコードはX00.4 のビットを返す例です:

sssStatus.plc_data.x[0] & 0x4

※ ”0x4”は 16進法で 4 を表します

IM-300 や VersioBus DC-150 などの I/Oモジュールから読み出しや制御を行う場合はこの方法を用いて

ください。例えば、IM-300#1 の I/O データは X20.0-X23.7, Y08.0-Y11.7 です。I/O データの完全なマッ

ピングは「SMP製品における LadderWorks PLC I/O マッピング」を参照して下さい。

※ sssGetStatus は高々50ms 毎でしか呼び出せませんので(8.2.2 参照)、LadderWorks PLC エンジンに

比べると非常に遅くなります。そのため、LadderWorks PLC エンジンによって発信された信号は

sssGetStatus では確認できないことがあります。

※ PLC ビットを確認する前に、sssStartInterrupt と PLC_ini_start の呼び出しによって PLC をスタートさせ

ておいて下さい。PLC をスタートさせるためにサンプルコードを使って下さい(9.2 参照)。

8.6 スレーブ軸との同期制御

2軸あるいはさらに多くのサーボドライブと同期するためには、各軸に 2 つのパラメータを設定して下さ

い:”axis type”、”sync master axis”。

ス レ ー ブ 側 の サ ー ボ ド ラ イ ブ の ”axis type” は ス レ ー ブ に 設 定 し て 下 さ い : レ ジ ス ト リ 、

HKEY_CLASSES_ROOT/SERVOWORKS/GMC/NC/Param の REG_BINARY の値は 8です。

“sync master axis”はマスター側の軸番号に合わせてください。マスター軸は”sync master axis”パラメータ

を変更しないで下さい(0 のままにしておく)。

これらのパラメータが設定されたら、sssSetSynControlMode を呼び出し、sync control mode を”Enable”にし

て下さい。

8.7 アブソリュートエンコーダの設定

アブソリュートエンコーダを設定するためには 2 つの API があります: sssSaveAbsEncParameters と

sssHomeStart。

sssSaveAbsEncParameters は絶対レファレンス点を設定し、Windows レジストリに保存します。

sssHomeStart は早送り速度で軸を原点に戻します。

SMP コンソールでは、原点ボタンを押したときにどちらの API が作動するか決める HMI パラメータがありま

す。

アブソリュートエンコーダを設定する際の一般的な手順は次のようになります:

1) ソフトウェア側のパラメータ: “Encoder Type”は”1”

2) サーボドライブ側のパラメータ:”absolute encoder”を選択。

3) サーボドライブ側のマルチターンを消去し、電源を入れなおす。

4) 手動で軸をレファレンス点に移動させる(ハンドウィール、ジョクなど)。

5) sssSaveAbsEncParameters を呼び出し、現在位置を原点として Windows レジストリに保存する。

Page 37: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 8 章: SMP アプリケーション構築のためのMDK の使用法

8-4

Soft ServoSYSTEMS, INC

6) HMI を再起動する。

アブソリュートエンコーダが設定されたら、sssHomeStart(自動探索)を Home Mode で呼び出し、軸を目的と

する原点に移動させて下さい。

8.8 カスタイマズ SMP アプリケーションを新しいバージョンの MDKへアップデート

新しいMDKとSMPエンジンへとアップデートする場合、新しい構造や現在の構造内での新しい要

素、新しいAPI、バグの除去といった利点があります。そしてその場合でも、通常はSMPアプリケ

ーションのコードを書き換える必要はありません。ただし、新しいモジュールやヘッダーのファイ

ルでSMPアプリケーションを再コンパイルして下さい。アップデートしたMDKの新しいAPIや構造、

要素に互換がなかった場合はコードを書き換える必要があります。新しいバージョンのMDKと

SMPが同時にお使いになれるように、現在のMDKのバージョンがお使いのSMPエンジンのバージ

ョンと合っていることを確認し下さい。

※ 例えばMDK3.07 と SMP3.10では互換性がありませんので、カスタマイズ SMPアプリケーションは正常

に動作しません。

8.9 カスタマイズ SMP アプリケーションのテスト中に値を変更する

Visual C++あるいはVisual Basic を立ち上げて、カスタマイズ SMP アプリケーションの動作中、同時に SMP

アプリケーション内の値を変更することができます。ALT+TAB で 2 つのアプリケーション間を移動して下さ

い。

軸の位置、I/O, カスタムマクロ変数などの値を書き換えるなどのプログラミングを行うことができます。

Page 38: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-1

Soft ServoSYSTEMS, INC

第9章: サンプルコード

9.1 サンプルコードの概要

モーションデベロプメントキットは、新しく SMPアプリケーションを作る際に参考になるサンプルコードをC++

と Visual Basic の両方について備えています。多くのコメントが添えられた、これらのサンプルコードは SMP

の API 関数の使い方や組み合わせ方の例を示しています。C++、Visual Basic のサンプルコードは以下の

場所に存在します。

• C++: \Program Files\SoftServo\SWMDK\C++\Sample_Codes

• VB: \Program Files\SoftServo\SWMDK\VB\Sample_Codes

MDK ファイル構造は次の通りです。

Page 39: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-2

Soft ServoSYSTEMS, INC

図 9-1: モーションデベロップメントキットディレクトリ構造

Page 40: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-3

Soft ServoSYSTEMS, INC

9.2 PLC のサンプルコード

9.2.1 PLC のサンプルコードの使い方

PLCのサンプルコードには2種類あります:SWSample_Dos_Auto_PLC (C++用サンプルコードフォルダ

内) 、AutoModeSample_PLC (Visual Basic用サンプルコードフォルダ内)。

これらのサンプルコードはSwPlcDll.dllに含まれる4つの関数を使っており、それらはSwPLC_Func.hと

SwPLC_Func.basで各々宣言されます。

表 9-1:SwPlcDll.dll の PLC関数

C/C++ Visual Basic

PLC_INI_START_PROC PLC_ini_start

PLC_REQUEST_PROC PlcRequest

SET_PLC_DATA_PROC SetPLCdata

SAVE_PLC_DATA_PROC SavePLCdata

これら 4 つの関数はサンプルコードで使われている通りに使って下さい。サンプルコードからコピーするな

どして各自のプロジェクトのなかで、正確に同じように使われるようにして下さい。

※表 9-1:SwPlcDll.dll の PLC関数の 4つの関数の一部を書き換えることは推奨されません。

以下ではこれら PLC 関数の説明をしますが、各自のプロジェクトの中でもこれらのサンプルコードを使われ

ることを推奨します。また、PLC 関数については理解する必要性はありません。以下はあくまでも内容を完

結させるための説明です。

9.2.2 SwPlcDll.dll における PLC関数の説明

SwPlcDll.dll 内にある関数を使うために、以下を参考にして下さい。また、実際のサンプルコードは

C:\Program Files\Softservo\

以下にある SWMDK フォルダーを参照して下さい。これらの関数はサンプルコードにある通りに実行

されることのみに意味を持ちます。

Visual Basic での宣言:

Public Declare Function SetPLCdata Lib "SwPlcDll.dll" (ByRef dat As PLC_DLL_DATA) As Long

Public Declare Function SavePLCdata Lib "SwPlcDll.dll" (ByRef dat As PLC_DLL_DATA) As Long

Public Declare Function PlcRequest Lib "SwPlcDll.dll" (ByRef dat As PLC_DLL_DATA) As Long

Public Declare Function Plc_ini_start Lib "SwPlcDll.dll" (ByRef dat As PLC_SETUP) As Long

Page 41: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-4

Soft ServoSYSTEMS, INC

C/C++での宣言:

// Global definition of PLC function pointers

PLC_INI_START_PROC* pPlc_ini_start_Func = NULL;

// Function pointer obtained from the SwPLC DLL

SET_PLC_DATA_PROC* pSetPLCdata_Func = NULL;

// Function pointer obtained from the SwPLC DLL

PLC_REQUEST_PROC* pPlcRequest_Func = NULL;

// Function pointer obtained from the SwPLC DLL

SAVE_PLC_DATA_PROC* pSavePLCdata_Func = NULL;

// Function pointer obtained from the SwPLC DLL

void main(void)

{

HINSTANCE hInstance = NULL; // Instance handle for library loading

// Load PLC DLL functions

hInstance = LoadLibrary("c:/SwPLC/service/SwPlcDll.dll");

pPlc_ini_start_Func = (PLC_INI_START_PROC*)GetProcAddress(hInstance, "Plc_ini_start");

pSetPLCdata_Func = (SET_PLC_DATA_PROC*)GetProcAddress(hInstance, "SetPLCdata");

pPlcRequest_Func = (PLC_REQUEST_PROC*)GetProcAddress(hInstance, "PlcRequest");

pSavePLCdata_Func = (SAVE_PLC_DATA_PROC*)GetProcAddress(hInstance, "SavePLCdata");

}

9.2.3 Plc_ini_start/PLC_INI_START_PROC

関数宣言

LONG Plc_ini_start (PLC_SETUP data)

関数内容

PLCを初期化する

戻り値

1 = TRUE //初期化成功

0 = FALSE //初期化失敗

使用法

Visual Basic:

' Start PLC

PLC_ret = Plc_ini_start(PLC_setdata)

If (PLC_ret = 1) Then

TTTT = sssPLC_Start(HDEVICE, PLC_setdata)

End If

C/C++:

// Start PLC Engine

if ((*pPlc_ini_start_Func)(&plcSetup)) {

causeOfError = sssPLC_Start(hDevice, &plcSetup);

}

参考

8.3.1

Page 42: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-5

Soft ServoSYSTEMS, INC

9.2.4 PlcRequest/PLC_REQUEST_PROC

関数宣言

LONG PlcRequest (PLC_DLL_DATA data)

関数内容

PLCが PLCサービスから要求するモニタとプロセス

戻り値

1 = TRUE //成功

0 = FALSE //失敗

使用法

Visual Basic:

'PLC Monitor

PLC_ret = PlcRequest(PLC_sdata1)

If (PLC_ret = 1) Then

If (PLC_sdata1.RunRequest = 1) Then

For i = 0 To PLC_COMMAND_DATA_SIZE_D - 1

PLC_setdata.d(i) = PLC_sdata1.d(i)

Next

For i = 0 To PLC_COMMAND_DATA_SIZE_K - 1

PLC_setdata.k(i) = PLC_sdata1.k(i)

Next

For i = 0 To PLC_COMMAND_DATA_SIZE_A - 1

PLC_setdata.a(i) = PLC_sdata1.a(i)

Next

For i = 0 To PLC_COMMAND_DATA_SIZE_C - 1

PLC_setdata.c(i) = PLC_sdata1.c(i)

Next

For i = 0 To PLC_COMMAND_DATA_SIZE_T - 1

PLC_setdata.t(i) = PLC_sdata1.t(i)

Next

For i = 0 To PLC_COMMAND_DATA_SIZE_R9000 - 1

PLC_setdata.r9000(i) = PLC_sdata1.r9000(i)

Next

TTTT = sssPLC_Start(HDEVICE, PLC_setdata)

End If

If (PLC_sdata1.StopRequest = 1) Then

' PLC stop request

TTTT = sssPLC_Stop(HDEVICE)

End If

End If

Page 43: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-6

Soft ServoSYSTEMS, INC

C/C++:

// Process PLC request received from the PLC service

if ((*pPlcRequest_Func)(&PLC_sdata1)) {

if (PLC_sdata1.StopRequest == 1) {

// PLC stop request

ret = sssPLC_Stop(hDevice);

}

else if (PLC_sdata1.RunRequest == 1) {

// PLC start request

memcpy (PLC_setdata.d, PLC_sdata1.d, sizeof(PLC_setdata.d));

memcpy (PLC_setdata.k, PLC_sdata1.k, sizeof(PLC_setdata.k));

memcpy (PLC_setdata.a, PLC_sdata1.a, sizeof(PLC_setdata.a));

memcpy (PLC_setdata.c, PLC_sdata1.c, sizeof(PLC_setdata.c));

memcpy (PLC_setdata.t, PLC_sdata1.t, sizeof(PLC_setdata.t));

memcpy (PLC_setdata.r9000, PLC_sdata1.r9000, sizeof(PLC_setdata.r9000));

ret = sssPLC_Start(hDevice, &PLC_setdata);

}

}

9.2.5 SetPLCdata/SET_PLC_DATA_PROC

関数宣言

LONG SetPLCdata (PLC_DLL_DATA data)

関数内容

PLCデータの設定、PLC ステータスの保存

戻り値

1 = TRUE //成功

0 = FALSE //失敗

使用法

Visual Basic:

' Stop PLC

CauseOfError = sssPLC_Stop(HDEVICE)

PLC_sdata2.StopRequest = 1

TTTT = SetPLCdata(PLC_sdata2)

C/C++:

// Save PLC status in the end of the program

PLC_Save(&plcDllData, &sssStatus.plc_data);

if (pSetPLCdata_Func != NULL) {

plcDllData.StopRequest = 1;

plcDllData.Running_flug = 0;

(*pSetPLCdata_Func)(&plcDllData);

}

Page 44: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-7

Soft ServoSYSTEMS, INC

9.2.6 SavePLCdata/SAVE_PLC_DATA_PROC

関数宣言

LONG SavePLCdata (PLC_DLL_DATA data)

関数内容

Kデータと DデータをWindows レジストリに保存

戻り値

1 = TRUE //成功

0 = FALSE //失敗

使用法

C/C++:

// K data and D data of the PLC data are saved to the registry by this function.

void PLC_Save(PPLC_DLL_DATA pPlcDllData, _PPLC_COMMAND_DATA pPlcCmdData)

{

memcpy (pPlcDllData->d, pPlcCmdData->d, sizeof(pPlcDllData->d));

memcpy (pPlcDllData->k, pPlcCmdData->k, sizeof(pPlcDllData->k));

if (pSavePLCdata_Func != NULL) {

(*pSavePLCdata_Func)(pPlcDllData);

}

}

Page 45: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-8

Soft ServoSYSTEMS, INC

9.3 ブロックサーチのためのサンプルコード

9.3.1 ブロックサーチ例 1:Nサーチボタンのイベント操作の一部If (BlockSearchStarted = 0) Then

If BlockSearch_Chk.value = Checked Then

TTTT = sssAutoRewind(HDEVICE)

End If

Sleep (50)

TTTT=sssSetBlockSearch(HDEVICE, BLOCKSEARCH_BY_SQNUM, BLOCKSEARCH_STOP_BLOCKEND,

BlockText.Text)

If (TTTT <> SWAPI_ERROR_SUCCESS) Then

BlockSearchStarted = 0

Else

BlockSearchStarted = 1

End If

Else

sssBlockSearchStop (HDEVICE)

End If

注意:

1)sssAutoRewind が呼び出されている場合は G コードの最初のラインからサーチが始まります。

sssAutoRewind が呼び出されていない場合は停止した場所からサーチが始まります。

2)ブロクサーチテキストボックスの値は BlockText.Text で一旦評価されます。

9.3.2 ブロックサーチ例 2:タイマー関数のプロセス(スレッド関数)If (BlockSearchStarted <> 0) Then

If (SSSSTATUS.nBlockSearchState = 1) Then

Dim tempModal As Modal_Data

Dim tempString As String

Dim BlockEndPos(MAX_ALLAXES - 1) As Double

Dim tempIndex As Long

tempIndex = -2

CauseOfError=sssGetBlockSearch(HDEVICE, BLOCKSEARCH_GET_CURRENTINFO,

BLOCKSEARCH_STOP_BLOCKEND, tempIndex,

BlockEndPos, tempString, tempModal)

If (CauseOfError = SWAPI_ERROR_SUCCESS) Then

MsgBox "Block search done. Block #" ……”

End If

‘BlockSearch_Txt.Text = tempIndex

BlockSearchStarted = 0

ElseIf (SSSSTATUS.nBlockSearchState = -1) Then

MsgBox "Block search failed."

BlockSearchStarted = 0

End If

End If

If (SSSSTATUS.nBlockSearchState = 1 And LastSssStatus.nBlockSearchState = 11) Then

CauseOfError = sssSetBlockSearch(HDEVICE, BLOCKSEARCH_CLEAR, BLOCKSEARCH_STOP_BLOCKEND,

tempIndex)

End If

Page 46: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 9 章: サンプルコード

9-9

Soft ServoSYSTEMS, INC

9.3.3 ブロックサーチ例 1:スタートボタンのイベント操作の一部If (SSSSTATUS.AutoState = SSS_AUTO_STOP) Then

If (SSSSTATUS.nBlockSearchState = 11) Then

If (SSSSTATUS.CncStatus = 4) Then

‘sssPosStop (HDEVICE)

Else

sssPosContinue (HDEVICE)

End If

ElseIf (SSSSTATUS.nBlockSearchState = 1) Then

Sleep (50)

CauseOfError = sssEnableCollectWords(HDEVICE)

If (CauseOfError <> SWAPI_ERROR_SUCCESS) Then

MsgBox "Failed sssEnableCollectWords returned 0x" & Hex(CauseOfError)

Else

Sleep (100)

TTTT = sssMoveToBlock(HDEVICE, -1, ALLAXES, DryRunFeedrate, 1)

End If

Else

If (sssAutoStart(HDEVICE, RT_BLOCK_BUF) <> SWAPI_ERROR_SUCCESS) Then

End If

LastPlotNo = CurrentPlotNo

End If

End If

Page 47: Soft Servosoftservo.com/wp-content/Documentation/JPN_SMP_MDK...SMPモーションデベロップメントキット(MDK)プログラミングマニュアル 警告/重要なお知らせ

SMP モーションデベロップメントキット(MDK) プログラミングマニュアル

第 10 章: ソフトウェア設定のバックアップ

10-1

Soft ServoSYSTEMS, INC

第10章: ソフトウェア設定のバックアップ

現在のソフトウェア設定のすべては Windows レジストリに保存されています。したがって、インストールを完

了し、設定や調整(システムを完全状況にするために特に重要)が済んだ後は、GMC と Windows アプリケ

ー シ ョ ン の バ ッ ク ア ッ プ を 取 ら れ る こ と を 推 奨し ま す 。そ れ ら は Windows レ ジ ス ト リ の

HKEY_CLASSES_ROOT¥ServoWorks というキーとして存在します。

ソフトウェア環境の最適化を再度行うある場合、このようにバックアップをとっておくことは非常

に手間を省きます。また、新しい PCでの理想的な制御システムを構築するのにも役立つでしょう。

現在のパラメータ設定のバックアップを取るためには、2つの Windows ファイルへ 2つのフォルダ

をエクスポートして下さい(詳しくは、「Windows レジストリレファレンスマニュアル:ServoWorks

CNC と SMP シリーズ汎用モーションコントロール」の 4.2 参照)。これらのバックアップファイル

は別の PCへ保存されることを推奨します。