soft...
TRANSCRIPT
SMP モーションデベロップメントキット(MDK)
プログラミングマニュアル
第 1.5 版
○C ソフトサーボシステムズ株式会社
Soft ServoSYSTEMS, INC
SMP モーションデベロップメントキット(MDK) プログラミングマニュアル
警告/重要なお知らせ
i
Soft ServoSYSTEMS, INC
警告
ここで述べられる製品は、誤った使用、不注意または理解不足によりケガや、装置または製品の損傷を引
き起こす恐れがあります。動作中の機構部や高出力・高電流のサーボドライバは非常に危険です。適切な
手順を欠いてモーターの暴走などが起きた場合は、機構部への損害、経済的損失、やけど等深刻なケガ
を引き起こすほか、致死的な事故を招く危険性があります。ソフトサーボシステムズ株式会社はケガ等いか
なる人的被害や機材の損害、また製品の誤った使用による損害やクレームに対し責任を負わないものとし
ます。いかなる場合においても、ソフトサーボシステムズ株式会社またはその供給者はあなたまたはあなた
以外のいかなる人への付帯的、特別な、また結果的に生じる一切の損害(機械、製品、所有物への損害、
利益の逸失、顧客の喪失、信用の喪失、事業の中断、データの喪失、コンピュータの誤動作や故障につ
いてのあなた以外の団体からのクレーム、またこれらに類する全ての損害や損失を含みますがこれらに限
定されません)について、責任を負わないものとします。たとえソフトサーボシステムズ株式会社、その供給
者または代理店がこのような損害の可能性について知らされていた場合も同様です。
従いまして、これらの製品の設置、メンテナンスまたは使用に関わる全ての人がこの冊子及び関連したマ
ニュアルを通読し、その内容を理解する必要があります。ソフトサーボシステムズ株式会社はこの製品に関
する質問への回答及び難解な部分を明確にすることについて可能な限り迅速に対応できるよう準備してい
ます。
ソフトサーボシステムズ株式会社の製品選択と応用は、装置設計者またはエンドユーザの責任となります。
ソフトサーボシステムズ株式会社はその制御機器の機械工具・FA への組み込み方法についていかなる責
任も受け入れません。ソフトサーボシステムズ株式会社が提供する全ての文書や警告は直ちにエンドユー
ザへ提供されなければなりません。
このドキュメントは出版時の情報に基づいており、その時点で可能な限り、正確かつ完全なドキュメントの作
成に努めています。しかしながら製品の様々な使用法又はソフトウェア・ハードウェア設定の組み合わせが
存在するため、このマニュアルがここで述べられる製品の設置、メンテナンスや使用状態、不慮の事故、ま
たはハードウェア・ソフトウェアの設定に関する全ての情報を含んでいるわけではありません。ソフトサーボ
システムズ株式会社はこのドキュメントの所有者に対し、加筆修正が加えられた場合の告知の義務は負わ
ないものとします。いかなる場合においても、ソフトサーボシステムズ株式会社はこのマニュアルの欠陥また
は欠落による損害や人身障害の責任を負いません。
ソフトサーボシステムズ株式会社はこの文書に含まれる情報の正確さ、完全性、十分さ、利便性について
明示的、暗示的また法令によるものに関わらず一切の説明または保証の責任を持ちません。商品性の保
証、目的適合性の保証についての黙示の保証責任は適用されないものとします。
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 で再インストールする必要があります。
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
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
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
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 インターフェース
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
デジタルサーボ
ネットワーク
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に接続せず
にソフトウェア単体で動作させることができます。例えばユーザは存在しない軸をジョグ移動し、その移動が
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 アー
キテクチャを理解する必要があります。
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 に設定されています。
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 システムの図式は次のようになります。
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
にのみ
含まれます
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 ケーブルをご注文頂けます(御注文の際はピン配置をご連絡ください)。
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 と通信する際のエンコーダケーブルやアナログケーブルも不要です。
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
にのみ
含まれます
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)
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
を使用することで全てのリアルタイムプロセス及びリソースにフルアクセスできます。
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)を含む)よりも優先される点も重要です。
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 サブシステム
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
に対してもリンクされます
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 を使用することができます。
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が一時的に停止する場合があります。
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 システム上で
休眠します。
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」をクリックしてください。インストールに関する情報やモーションデベロップメントキットパッケ
ージに含まれるコンポーネントのリストを記載したファイルがメモ帳によって開かれます。後で参照する
ことができるようにプリントアウトしておくことをお勧めします。
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」ボタンをクリックしてください。次のウィンドウが表示されます。
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が自動的にインストールされます。インストール処理が実行されてい
る間、次のようなウィンドウが表示されます。
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」ボタンを
クリックしてください。これでモーションデベロップメントキットを使用する準備ができました。
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」テキストボックスにカーソ
ルが表示されます。
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」を選択します。次のようなウィンドウが表示されます。
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)を使用したアプリケーションを作成する準備がで
きました。
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」ウィンドウ
は以下のようになります。
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)を使用したアプリケーションを作成する
準備ができました。
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度だけ呼び出すようにして下さい。)
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 パラメータ関数の呼び出し」の要件を確認して下さい。
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 レジストリに保存する。
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, カスタムマクロ変数などの値を書き換えるなどのプログラミングを行うことができます。
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 ファイル構造は次の通りです。
SMP モーションデベロップメントキット(MDK) プログラミングマニュアル
第 9 章: サンプルコード
9-2
Soft ServoSYSTEMS, INC
図 9-1: モーションデベロップメントキットディレクトリ構造
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
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
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
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);
}
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);
}
}
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
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
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へ保存されることを推奨します。