PCI-8158

高密度高機能

8 軸サーボ / ステッパ

モーション・コントロール・カード

ユーザー・マニュアル

マニュアルバージョン2.00

改訂日：2007年12月5日

品番：50-11139-1000

![The image displays the standard recycling symbol: a black circle containing three white arrows arranged in a triangular formation, pointing clockwise in a continuous loop.](.pci-8158-50-11139-1000-200jp-en/8395410d769720ae511d6528afb43b6e98faaf2efb959eda95deebd372feb582.jpg)
Recycled Paper

Copyright 2007 ADLINK TECHNOLOGY INC.

All Rights Reserved.

本書の情報は信頼性、デザイン、機能などの改善で予告なしに変更されることがあります。また、製造元の側のコミットメントを示すものではありません。

製造元は、本製品または本書の使用または不使用によって発生したいかなる直接的、間接的、特別の、付随的、または結果的な損害に対して、たとえこのような損害が生じる可能性について報告を受けていたとしても、一切責任を負いません。

本書には著作権で保護された独占情報が含まれています。すべての権利が留保されます。本書の一部または全部を製造元の文書による事前の許可なしに、機械的、電子的、またはその他のいかなる方法で、複製することを禁止します。

# 商標

NuDAQ、NuIPC、DAQBench は ADLINK TECHNOLOGY 社の登録商標です。

本書に記載されている製品名は認証目的のためだけで、各社の商標または登録商標となっている場合があります。

# ADLINK にサービスを申し込む

お客様の満足は ADLINK Technology Inc. の最優先事項です。サービスやサポートを必要とする場合はお知らせください。

# ADLINK TECHNOLOGY INC.

ウェブサイト：http://www.adlinktech.com

販売およびサービス：Service@adlinktech.com

TEL: +886-2-82265877

FAX: +886-2-82265717

住所：9F, No. 166, Jian Yi Road, Chungho City,

Taipei, 235 Taiwan

迅速で納得できるサービスを得るため、以下のサービス用紙の必要事項をすべて記入してメールまたはFAXで送信してください。

<table><tr><td colspan="2">会社情報</td></tr><tr><td>会社/組織名</td><td></td></tr><tr><td>担当者氏名</td><td></td></tr><tr><td>Eメールアドレス</td><td></td></tr><tr><td>アドレス</td><td></td></tr><tr><td>国名</td><td></td></tr><tr><td>TEL</td><td>FAX:</td></tr><tr><td>ウェブサイト</td><td></td></tr><tr><td colspan="2">製品情報</td></tr><tr><td>製品モデル名</td><td></td></tr><tr><td>環境</td><td>OS:マザーボード: CPU:チップセット: BIOS:</td></tr></table>

問題を詳しく説明してください：

# 目次

# 目次 i

# 表目次 v

# 図目次 vi

# 1 製品紹介 .... 1

1.1 特徵.... 5
1.2 仕様....6
1.3 対応ソフトウェア 8

プログラミング・ライブラリ 8

MotionCreatorPro 8

1.4 使用可能な端子ボード 8

# 2 インストール 9

2.1 同梱物....9
2.2 PCI-8158 の輪郭図.... 10
2.3 PCI-8158ハードウェアの取り付け 10

ハードウェア設定 10

PCI スロットの選択 11

取り付け手順 11

トラブルシューティング 11

2.4 ソフトウェア・ドライバのインストール.... 12
2.5 P1/P2 ピン・アサイン: 主コネクタ 13
2.6 K1/K2 ピン・アサイン:同時スタート / ストップ.... 14
2.7 パルス出力用 J1～J16 ジャンパの設定.... 15
2.8 カード・インデックス用 S1 スイッチ設定.... 16
2.9 P3 手動パルス 17

# 3 信号接続....19

3.1 パルス出力信号 OUT および DIR...... 20
3.2 エンコーダ・フィードバック信号 EA、EB、EZ 23

回線ドライバ出力の接続 25

オープン・コレクタ出力の接続 26

3.3 原点信号ORG 27
3.4 エンド・リミット信号 PEL および MEL 28
3.5 インポジション信号 INP 29
3.6 アラーム信号 ALM 30

3.7 偏差カウンタ・クリア信号 ERC 31
3.8 汎用信号 SVON 32
3.9 汎用信号 RDY 34
3.10 多機能出力ピン: DO/CMP 35
3.11 多機能入力ピン: DI/LTC/SD/PCS/CLR/EMG.... 36
3.12 パルス入力信号 PA および PB（PCI-8158）…… 37
3.13 同時スタート / ストップ信号 STA および STP 38

# 4 動作理論.... 41

4.1 モーション・コントローラの種類.... 41

電圧タイプのモーション制御インタフェース 41
パルス・タイプのモーション制御インタフェース ...... 42
ネットワーク・タイプのモーション制御インタフェース 42
ソフトウェア・リアルタイムのモーション制御カーネル 43
DSP ベースのモーション制御カーネル 43
ASIC ベースのモーション制御カーネル 43
モーション制御の比較表 44
PCI-8158 のモーション・コントローラ・タイプ ...... 44

4.2 モーション制御モード 45

座標系 45
絶対的および相対的位置移動 46
台形速度プロファイル 47
S 曲線およびベル曲線速度プロファイル 47
速度モード 49
1 軸位置モード 50
2 軸直線補間位置モード 50
2 軸円形補間モード 51
連続モーション 53
原点復帰モード 55
原点検索機能 62
手動パルス機能 63
同時スタート機能 63
速度オーバーライド機能 63
位置オーバーライド機能 64

4.3 モータ・ドライブのインタフェース 65

パルス・コマンド出力インタフェース 65
パルス・フィードバック入力のインタフェース ......67
インポジション信号 69
サーボ・アラーム信号 70
エラー・クリア信号 70

サーボ・オン / オフ・スイッチ 71

サーボ・レディ信号 71

サーボ・アラーム・リセット・スイッチ 71

# 4.4 機械スイッチのインタフェース....72

原点信号 72

エンド・リミット・スイッチ信号 72

減速スイッチ 72

位置決め開始スイッチ 73

カウンタ・クリア・スイッチ 73

カウンタ・ラッチ・スイッチ 73

緊急停止入力 73

# 4.5 カウンタ 74

コマンド位置カウンタ 74

フィードバック位置カウンタ 74

コマンドおよびフィードバック・エラー・カウンタ ..... 75

汎用カウンタ 75

ターゲット位置レコーダ 75

# 4.6 コンパレータ 76

ソフト・エンド・リミット・コンパレータ 76

コマンドおよびフィードバック・エラー・カウンタのコンパレータ 76

汎用コンパレータ 77

トリガ・コンパレータ 77

# 4.7 その他のモーション機能 78

バックラッシュ補正およびスリップ補正 78

振動抑制機能 78

速度プロファイルの計算機能 79

# 4.8 割り込み制御 79

# 4.9 マルチ・カード動作 83

# 5 MotionCreatorPro 85

5.1 MotionCreatorPro の実行....85

5.2 MotionCreatorPro について....86

5.3 MotionCreatorPro の形式の紹介 87

メイン・メニュー 87

選択メニュー 88

カード情報メニュー 89

設定メニュー 90

Single Axis Operation (1 軸動作) メニュー 96

Two-Axis Operation (2 軸動作) メニュー ..... 103

2D\_Motion メニュー 107

Help（ヘルプ）メニュー 114

# 6 関数ライブラリ 115

6.1 関数のリスト 116

6.2 C/C++ プログラミング・ライブラリ 124

6.3 システムおよび初期化 125

6.4 パルス入力 / 出力設定 129

6.5 速度モード・モーション 132

6.6 1 軸位置モード 135

6.7 直線補間モーション 139

6.8 円形補間モーション 149

6.9 原点復帰モード 157

6.10 手動パルス・モーション 160

6.11 モーション・ステータス 163

6.12 モーション・インタフェース I/O 165

6.13 割り込み制御 173

6.14 位置制御およびカウンタ 176

6.15 位置比較およびラッチ 181

6.16 連続モーション 185

6.17 多軸同時動作 187

6.18 汎用 DIO 190

6.19 ソフト・リミット 193

6.20 バックラッシュ補正 / 振動抑制.... 195

6.21 速度プロファイルの計算 197

6.22 応答コード 200

# 7 接続例 203

7.1 配線の概要 203

7.2 端子ボードのユーザー・ガイド 203

# 保證方針 205

# 表目次

Table 1-1: 使用可能な端子ボード 8

Table 2-1: P1/P2 ピン・アサイン 13

Table 2-2: K1/K2 ピン・アサイン 14

Table 2-3: J1 から J16 までのジャンパ設定 15

Table 2-4: S1 スイッチ設定 16

Table 2-5: P3 手動パルス 17

Table 3-1: パルス出力信号 OUT (P1) 20

Table 3-2: パルス出力信号 OUT (P2) 21

Table 3-3: 出力信号 22

Table 4-1: モーション割り込みソースのビット設定 80

Table 4-2: エラー割り込みの応答コード 81

Table 4-3: GPIO 割り込みソースのビット設定 82

# 図目次

Figure 1-1: PCI-8158 のブロック図.... 2

Figure 1-2: アプリケーション構築のフロー・チャート 4

Figure 2-1: PCI-8158 の PCB レイアウト 10

# 1 製品紹介

PCI-8158 は PCI インタフェースを搭載した高機能高密度の 8 軸モーション・コントローラ・カードで、高周波パルス（6.55MHz）を発生してステッパまたはサーボ・モータを駆動できます。また、モーション・コントローラとして、8 軸直線および円形補間、速度が連続した連続補間を提供できます。1 軸動作ではオン・ザ・フライによる速度／位置の変更も可能です。

1つのシステムで複数のPCI-8158カードが使用できます。全8軸のインクリメンタル・エンコーダ・インタフェースには、不正確な機械的転送に起因する位置エラーを訂正する機能が備えられています。

PCI-8158は全く新しいデザインを採用しています。キャリア・ボードは8軸パルス・トレイン出力制御チャンネルを搭載しています。高速トリガや分散 I/O 制御といった機能が必要な場合はドータ・ボードを追加できます。PCI-8158は位置比較機能をサポートしています。直線スキャン・アプリケーションでは、モーション・コントローラは高速のトリガ・パルスを発生して、高解像度画像を取得する必要があります。この場合、DB-8150を追加すると、PCI-8158の機能を拡張できます。マシン・オートメーションではモーション・コントロール設計だけでなく、センサーや作動装置もカギとなります。通常、コントローラのセンサーや作動装置を統合するにはI/Oが必要です。ADLINKはそれらのデバイスを接続する別の方法、すなわち分散 I/O も提供しています。ドータ・カードを使用すれば、PCI-8158に分散I/O機能を追加できます。この構成は配線の手間を軽減し、コントローラの実際のサイズを縮小できるだけでなく、費用対効果にも優れています。

図 1-1 は PCI-8158 カードの機能ブロック図です。モーション・コントロール機能には、台形および S 曲線加速 / 減速、2 軸間の直線および円形補間、連続モーション位置決め、13 の原点復帰モードが含まれています。上記の機能と複雑な計算はすべて ASIC 内部で実行されるので、CPU の負荷は軽減されます。

PCI-8158 は以下の 3 つのユーザー・フレンドリーな機能もサポートしています。

1. カード・インデックス設定：

PCI-8158 は DIP スイッチ設定でカードのインデックスを割り当てることができます。値は 0 から 15 までです。全体の制御システムが巨大な場合、マシン・メーカーにとってカードのインデックスを判別できるのは役立ちます。

# 2. 緊急入力

緊急入力ピンを使うと、緊急事態発生時、パルス出力の送信を停止するようボードに促す緊急停止ボタンを配置できます。

# 3. ソフトウェアのセキュリティ保護

セキュリティ保護設計では、EEPROM に 16 ビット値を設定できます。ユーザーのインタフェース・プログラムはこの EEPROM を使って、不正はユーザーからソフトウェアおよびハードウェアを保護できます。

![Based on the provided block diagram, here is the accurate description of the labeled blocks and their connections:\n\n**Labeled Blocks:**\n*   **PCI Bus**\n*   **ROM**\n*   **CPLD**\n*   **CardID S1**\n*   **PLX9052**\n*   **DC/DC**\n*   **ASIC**\n*   **PA/PB P3**\n*   **STA/STP K1&2**\n*   **Digital I/O Isolation**\n*   **SCSI 100 P1**\n*   **SCSI 100 P2**\n\n**Connections:**\n*   **PCI Bus** is connected via a double-headed arrow to **PLX9052**.\n*   **ROM** is connected via a double-headed arrow to **PLX9052**.\n*   **CPLD** is connected via a double-headed arrow to **PLX9052**.\n*   **CPLD** is connected via a double-headed arrow to **CardID S1**.\n*   **PLX9052** is connected via a double-headed arrow to **ASIC**.\n*   **ASIC** is connected via a double-headed arrow to **PA/PB P3**.\n*   **ASIC** is connected via a double-headed arrow to **STA/STP K1&2**.\n*   **ASIC** is connected via a double-headed arrow to **Digital I/O Isolation**.\n*   The **DC/DC** block has a downward arrow labeled **VDD** and an upward arrow labeled **+24V**.\n*   **SCSI 100 P1** and **SCSI 100 P2** are listed at the bottom below the **Digital I/O Isolation** block.](.pci-8158-50-11139-1000-200jp-en/cc491e936e49b248c85474bdbd560752f403220b6a91e8ec36f8c0afc59801c3.jpg)

Figure 1-1: PCI-8158 のブロック図

MotionCreatorPro は PCI-8158 に同梱される Windows ベースのアプリケーション開発ソフトウェア・パッケージです。MotionCreatorPro はプロジェクト設計時のモーション・コントロール・システムのデバッグに役立ちます。オンスクリーン・ディスプレイには、インストールされているすべての軸の情報と PCI-8158 の I/O 信号ステータスが表示されます。

C++ コンパイラおよび Visual Basic 用に Windows プログラミング・ライブラリも提供されています。また、機能の動作を示すサンプル・プログラムも用意されています。

図1-2はアプリケーションの開発に本書を使用した推奨手順のフロー・チャートです。各手順については該当する章を参照してください。

![The flowchart depicts a sequential process with a feedback loop, accompanied by chapter references on the right. The blocks and connections are as follows:\n\n1.  **Top Block:** A rectangle containing 'Hardware Installation Jumper Setting Wiring'. To its right is the text 'Chapter 2 & 3'. An arrow points downward from this block.\n2.  **Second Block:** A rectangle containing 'Using MotionCreatorPro to Configure a System'. To its right is 'Chapter 5'. An arrow points downward from this block.\n3.  **Third Block:** A rectangle containing 'Using MotionCreatorPro to Verify Operations'. To its right is 'Chapter 4 & 5'. An arrow points downward from this block.\n4.  **Fourth Block:** A rectangle containing 'Using the Function Libraries to Develop Applications'. To its right is 'Chapter 4 & 6'. An arrow points downward from this block.\n5.  **Decision Diamond:** The arrow leads into a diamond shape containing 'System is OK?'.\n    *   **Yes Path:** An arrow labeled 'Yes' points downward from the bottom of the diamond to a circle.\n    *   **Loop Path:** A line exits the left side of the diamond, goes up, and splits. One arrow points to the left side of the 'Using MotionCreatorPro to Configure a System' block, and another arrow points to the left side of the 'Using the Function Libraries to Develop Applications' block.\n6.  **End:** The arrow from the 'Yes' path leads to a circle containing the text 'END'.](.pci-8158-50-11139-1000-200jp-en/de69d6a2e61ed4684196cae7227a566ce95385924bc0b62aa9c953398c0d66ac.jpg)

Figure 1-2: アプリケーション構築のフロー・チャート

# 1.1 特徵

以下のリストは PCI-8158 モーション・コントロール・システムの主な特徴の要約です。

▶ 32-bit PCI バス Plug & Play 対応（ユニバーサル）
▶ ステッピングまたはサーボ・モータ制御用8軸ステップおよび方向パルス出力
▶ 最大出力周波数：6.55 MPPS
▶ パルス出力オプション : OUT/DIR, CW/CCW
▶ 全モードで加速および減速時間がプログラム可能
▶ 全モードで台形または S 曲線速度プロファイルをサポート
▶ 2～4軸直線補間
▶ 2 軸円形補間
▶ モーション後の輪郭連続補間
▶ ポジションおよび速度をオン・ザ・フライで変更
▶ 13 の自動検索対応原点復帰モード
▶ ハードウェア・バックラッシュ補償器および振動抑制
▶ 各軸で 2 ソフトウェア・エンド・リミットをサポート
▶ インクリメンタル・エンコーダ・フィードバック用 28-bit
アップ / ダウン・カウンタ
▶ 全軸に原点スイッチ、インデックス信号（EZ）、正および負のエンド・リミット・スイッチ・インタフェースをサポート
▶ 8 軸高速位置ラッチ入力
▶ 8 軸位置比較およびトリガ出力（高速ではない。高速トリガ出力機能を追加するには DB-8150 の購入が必要）
▶ すべてのデジタル入力および出力信号が 2500Vrms 絶縁
▶ プログラマブル割り込みソース
▶ 複数軸でモーションの同時スタート / ストップ
▶ 手動パルス入力インタフェース
▶ カード・インデックス選択
▶ EERPOM によるセキュリティ保護
▶ 専用緊急入力ピンへの配線が可能

▶ ソフトウェアは1つのシステムで最大12のPCI-8158カード動作をサポート
▶ コンパクトな PCB 設計
▶ Microsoft WindowsI ベースのアプリケーション開発ソフトウェア MotionCreatorPro 同梱
▶ Windows 2000/XP 用 PCI-8158 ライブラリおよびユーティリティをサポート

# 1.2 仕様

▶ 使用可能モータ：

▷ ステッピング・モータ
▶ パルス・トレイン入力サーボ・ドライバによる AC または DC サーボ・モータ

▶ 性能：

▷ コントロール可能な軸数: 8
▷ 最大パルス出力周波数：6.55MPPS、直線、台形、または S 曲線速度プロファイル駆動
▶ 内部参照クロック：19.66 MHz
28-bitアップ/ダウン・カウンタ範囲: 0～268,435,455または -134,217,728～+134,217,727
位置パルス設定範囲（28-bit）：-134,217,728～+134,217,728
▷ パルス・レート設定範囲（パルス比 = 1:65535）：
0.1 PPS \~ 6553.5 PPS （マルチプライア = 0.1）
1 PPS \~ 65535 PPS （マルチプライア = 1）

100 PPS \~ 6553500 PPS （マルチプライア = 100）

# ▶ I/O 信号：

▶ 軸ごとに入力 / 出力信号をサポート
▶ すべての I/O 信号が 2500Vrms 絶縁電圧で光絶縁
▶ コマンド・パルス出力ピン: OUT および DIR
▷ インクリメンタル・エンコーダ信号入力ピン: EA および EB
▷ エンコーダ・インデックス信号入力ピン：EZ
▷ 機械式リミット / 原点信号入力ピン: □}EL、ORG
▷ コンポジット・ピン: DI/LTC（ラッチ）/SD（減速）/PCS（位置変更信号）/CLR（クリア）/EMG（緊急入力）
▷ サーボ・モータ・インタフェース I/O ピン: INP、ALM、ERC
▷ 汎用デジタル出力ピン: SVON、DO
▷ 汎用デジタル入力ピン：RDY、GDI
▶ パルス信号入力ピン: PA および PB（絶縁対応）
▷ 同時スタート / ストップ信号: STA および STP

# ▶ 共通仕様

▷ コネクタ: 68 ピン SCSI タイプ・コネクタ
▶ 稼働時温度: 0□\~C - 50□\~C
▷ 非稼働時温度：-20□\~C - 80□\~C
▷ 湿度: 5 \~ 85% (結露なきこと)

# ▶ 電力消費

▷ スロット電源（入力）：+5V DC□}5%、最大 900mA
外部電源（入力）：+24V DC□}5%、最大 500mA
外部電源（出力）：+5V DC□}5%、最大 500mA

▶ PCI-8158 寸法（PCB サイズ）: 185mm (L) X 100 mm (W)

# 1.3 対応ソフトウェア

# 1.3.1 プログラミング・ライブラリ

PCI-8158 ユーザーには Windows 2000/XP DLL が提供されています。上記関数ライブラリはボードに同梱されています。

# 1.3.2 MotionCreatorPro

この Windows ベースのユーティリティはカード、モータ、システムのセットアップに使用されます。また、ハードウェアやソフトウェアの問題解決にも役立ちます。同ユーティリティを使えば、I/O 論理パラメータがユーザーのプログラムにロードされるように設定できます。この製品もカードに同梱されます。

詳しくは5章を参照してください。

# 1.4 使用可能な端子ボード

ADLINK では接続に便利なサーボおよびステッパ用端子ボードを用意しています。ステッパではピン-to-ピン端子ボードのDIN-100S を使用し、サーボでは DIN-814M、DIN-814M-J3A、DIN-814Y、DIN-814P-A4 を使用します。対応するサーボは下表の通りです：

<table><tr><td>Mitsubishi J2 Super</td><td>DIN-814M</td></tr><tr><td>Mitsubishi J3A</td><td>DIN-814M-J3A</td></tr><tr><td>Yaskawa Sigma II</td><td>DIN-814Y</td></tr><tr><td>Panasonic MINAS A4</td><td>DIN-814P-A4</td></tr></table>

Table 1-1: 使用可能な端子ボード

# 2 インストール

本章では PCI-8158 の取り付け方法を説明します。以下の手順に従ってください：

▶ パッケージの確認（セクション 2.1）
▶ PCB の確認（セクション 2.2）
▶ ハードウェアの取り付け（セクション 2.3）
▶ ソフトウェア・ドライバのインストール（セクション 2.4）
▶ I/O 信号接続（3 章）とその動作（4 章）の理解
▶ コネクタのピン・アサインの理解と配線（その他のセクション）

# 2.1 同栖物

パッケージにはこのユーザーガイドのほかに、以下のアイテムも含まれています：

▶ PCI-8158: 高機能 8 軸サーボ / ステッパ・モーション・コントロール・カード
▶ ADLINK オールインワン CD

端子ボードは別売のアクセサリなので、PCI-8158 のパッケージには同梱されません。

不足しているものや損傷しているものがあれば、製品を購入したディーラーにお知らせください。製品を送付したり、保管したりする場合に備えて、梱包材料やカートンは保存しておいてください。

# 2.2 PCI-8158 の輪郭図

![Technical line drawing of a vertical cylindrical device with internal components and mounting brackets (no text or symbols)](.pci-8158-50-11139-1000-200jp-en/033e6f5f0a336077b1aea80645f6db3a038ad372541729bd882617e2cc81ec92.jpg)

![186.79\n185\n126.41\n100.33](.pci-8158-50-11139-1000-200jp-en/c4b4a3962b814aca542037d85a583e5d07e5ad1695899b08392217f8b3a67a59.jpg)

Figure 2-1: PCI-8158 の PCB レイアウト

▶ P1/P2: 入力 / 出力信号コネクタ（100 ピン）
▶ K1/K2: 同時スタート / ストップ・コネクタ
▶ P3: 手動パルサー
▶ S1: カード・インデックス選択用 DIP スイッチ（0-15）
J1-J16: パルス出力選択ジャンパ（回線ドライバ / オープン・コレクタ）

# 2.3 PCI-8158 ハードウェアの取り付け

# 2.3.1 ハードウェア設定

PCI-8158 は Plug & Play にフル対応です。したがって、メモリ割り当て（I/O ポート・ロケーション）と PCI カードの IRQ チャンネルはシステム BIOS によって割り当てられます。アドレスの割り当てはシステムのすべての PCI カードに対してボードごとに行われます。

# 2.3.2 PCI スロットの選択

コンピュータ・システムが採用するスロットには PCI と ISA の両方があります。PCI カードを PC/AT スロットに無理に挿入しないでください。PCI-8158 は PCI スロットのみで使用できます。

# 2.3.3 取り付け手順

1. 本書を最後まで読み、必要に応じてジャンパを設定します。
2. コンピュータの電源を切ります。コンピュータに接続されているすべてのアクセサリ（プリンタ、モデム、モニタなど）の電源を切ります。コンピュータのカバーを外します。
3. 取り付け可能な 32-bit PCI 拡張スロットを選択します。PCI スロットは ISA や EISA スロットよりも短く、通常白または象牙色をしています。
4. PCI-8158 を取り付ける前に、コンピュータの金属ケースに触れるなどして体に蓄積している静電気を放電させます。カードの端を持ち、コンポーネントには手を触らないでください。
5. 選択した PCI スロットの位置にカードを合わせます。
6. スロットから外したネジを使って、システムのリア・パネルの所定の場所にカードを固定します。

# 2.3.4 トラブルシューティング

システムが再起動しない場合、または PCI ボードが正しく機能しない場合、（不正な ISA 設定などのため）割り込みが衝突しているのかもしれません。単純なミスによるのではない場合は、システムに同梱されているBIOSの説明書を参照して問題を解決してください。

Windows システムのコントロールパネルからカードがシステムに表示されているかどうか確認します。システムに表示されていない場合は、BIOS の PCI 設定を確認するか、他の PCI スロットを使用してください。

# 2.4 ソフトウェア・ドライバのインストール

1. ADLINK オールインワン CD を自動実行します。「Driver Installation -> Motion Control -> PCI-8158」を選択します。
2. インストーラの手順に従います。
3. セットアップ・インストール完了後、Windows を再起動します。

注意：必要な場合は、ADLINKのウェブサイトから最新のソフトウェアをダウンロードしてください。

# 2.5 P1/P2 ピン・アサイン: 主コネクタ

P1/P2 はモーション・コントロール I/O 信号の主コネクタです。

<table><tr><td>番号</td><td>名称</td><td>I/O</td><td>関数</td><td>番号</td><td>名称</td><td>I/O</td><td>関数</td></tr><tr><td>1</td><td>VDD</td><td>O</td><td>+5V 電源出力</td><td>51</td><td>VDD</td><td>O</td><td>+5V 電源出力</td></tr><tr><td>2</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td><td>52</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td></tr><tr><td>3</td><td>OUT0+</td><td>O</td><td>パルス信号(+)</td><td>53</td><td>OUT2+</td><td>O</td><td>パルス信号(+)</td></tr><tr><td>4</td><td>OUT0-</td><td>O</td><td>パルス信号(-)</td><td>54</td><td>OUT2-</td><td>O</td><td>パルス信号(-)</td></tr><tr><td>5</td><td>DIR0+</td><td>O</td><td>方向信号(+)</td><td>55</td><td>DIR2+</td><td>O</td><td>方向信号(+)</td></tr><tr><td>6</td><td>DIR0-</td><td>O</td><td>方向信号(-)</td><td>56</td><td>DIR2-</td><td>O</td><td>方向信号(-)</td></tr><tr><td>7</td><td>SVON0</td><td>O</td><td>サーボ・オン/オフ</td><td>57</td><td>SVON2</td><td>O</td><td>サーボ・オン/オフ</td></tr><tr><td>8</td><td>ERC0</td><td>O</td><td>偏差カウンタ・クリアSignal</td><td>58</td><td>ERC2</td><td>O</td><td>偏差カウンタ・クリア信号</td></tr><tr><td>9</td><td>ALM0</td><td>I</td><td>アラーム信号</td><td>59</td><td>ALM2</td><td>I</td><td>アラーム信号</td></tr><tr><td>10</td><td>INP0</td><td>I</td><td>インポジション信号</td><td>60</td><td>INP2</td><td>I</td><td>インポジション信号</td></tr><tr><td>11</td><td>RDY0</td><td>I</td><td>多目的入力信号</td><td>61</td><td>RDY2</td><td>I</td><td>多目的入力信号</td></tr><tr><td>12</td><td>EXGND</td><td></td><td>外部電源グラウンド</td><td>62</td><td>EXGND</td><td></td><td>外部電源グラウンド</td></tr><tr><td>13</td><td>EA0+</td><td>I</td><td>エンコーダA相(+)</td><td>63</td><td>EA2+</td><td>I</td><td>エンコーダA相(+)</td></tr><tr><td>14</td><td>EA0-</td><td>I</td><td>エンコーダA相(-)</td><td>64</td><td>EA2-</td><td>I</td><td>エンコーダA相(-)</td></tr><tr><td>15</td><td>EB0+</td><td>I</td><td>エンコーダB相(+)</td><td>65</td><td>EB2+</td><td>I</td><td>エンコーダB相(+)</td></tr><tr><td>16</td><td>EB0-</td><td>I</td><td>エンコーダB相(-)</td><td>66</td><td>EB2-</td><td>I</td><td>エンコーダB相(-)</td></tr><tr><td>17</td><td>EZ0+</td><td>I</td><td>エンコーダZ相(+)</td><td>67</td><td>EZ2+</td><td>I</td><td>エンコーダZ相(+)</td></tr><tr><td>18</td><td>EZ0-</td><td>I</td><td>エンコーダZ相(-)</td><td>68</td><td>EZ2-</td><td>I</td><td>エンコーダZ相(-)</td></tr><tr><td>19</td><td>VDD</td><td>O</td><td>+5V 電源出力</td><td>69</td><td>VDD</td><td>O</td><td>+5V 電源出力</td></tr><tr><td>20</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td><td>70</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td></tr><tr><td>21</td><td>OUT1+</td><td>O</td><td>パルス信号(+)</td><td>71</td><td>OUT3+</td><td>O</td><td>パルス信号(+)</td></tr><tr><td>22</td><td>OUT1-</td><td>O</td><td>パルス信号(-)</td><td>72</td><td>OUT3-</td><td>O</td><td>パルス信号(-)</td></tr><tr><td>23</td><td>DIR1+</td><td>O</td><td>方向信号(+)</td><td>73</td><td>DIR3+</td><td>O</td><td>方向信号(+)</td></tr><tr><td>24</td><td>DIR1-</td><td>O</td><td>方向信号(-)</td><td>74</td><td>DIR3-</td><td>O</td><td>方向信号(-)</td></tr><tr><td>25</td><td>SVON1</td><td>O</td><td>サーボ・オン/オフ</td><td>75</td><td>SVON3</td><td>O</td><td>サーボ・オン/オフ</td></tr><tr><td>26</td><td>ERC1</td><td>O</td><td>偏差カウンタ・クリア信号</td><td>76</td><td>ERC3</td><td>O</td><td>偏差カウンタ・クリア信号</td></tr><tr><td>27</td><td>ALM1</td><td>I</td><td>アラーム信号</td><td>77</td><td>ALM3</td><td>I</td><td>アラーム信号</td></tr><tr><td>28</td><td>INP1</td><td>I</td><td>インポジション信号</td><td>78</td><td>INP3</td><td>I</td><td>インポジション信号</td></tr><tr><td>29</td><td>RDY1</td><td>I</td><td>多目的入力信号</td><td>79</td><td>RDY3</td><td>I</td><td>多目的入力信号</td></tr><tr><td>30</td><td>EXGND</td><td></td><td>外部電源グラウンド</td><td>80</td><td>EXGND</td><td></td><td>外部電源グラウンド</td></tr><tr><td>31</td><td>EA1+</td><td>I</td><td>エンコーダA相(+)</td><td>81</td><td>EA3+</td><td>I</td><td>エンコーダA相(+)</td></tr><tr><td>32</td><td>EA1-</td><td>I</td><td>エンコーダA相(-)</td><td>82</td><td>EA3-</td><td>I</td><td>エンコーダA相(-)</td></tr><tr><td>33</td><td>EB1+</td><td>I</td><td>エンコーダB相(+)</td><td>83</td><td>EB3+</td><td>I</td><td>エンコーダB相(+)</td></tr></table>

Table 2-1: P1/P2 ピン・アサイン

<table><tr><td>番号</td><td>名称</td><td>I/O</td><td>関数</td><td>番号</td><td>名称</td><td>I/O</td><td>関数</td></tr><tr><td>34</td><td>EB1-</td><td>I</td><td>エンコーダ B 相(-)</td><td>84</td><td>EB3-</td><td>I</td><td>エンコーダ B 相(-)</td></tr><tr><td>35</td><td>EZ1+</td><td>I</td><td>エンコーダ Z 相(+)</td><td>85</td><td>EZ3+</td><td>I</td><td>エンコーダ Z 相(+)</td></tr><tr><td>36</td><td>EZ1-</td><td>I</td><td>エンコーダ Z 相(-)</td><td>86</td><td>EZ3-</td><td>I</td><td>エンコーダ Z 相(-)</td></tr><tr><td>37</td><td>PEL0</td><td>I</td><td>エンド・リミット信号(+)</td><td>87</td><td>PEL2</td><td>I</td><td>エンド・リミット信号(+)</td></tr><tr><td>38</td><td>MEL0</td><td>I</td><td>エンド・リミット信号(-)</td><td>88</td><td>MEL2</td><td>I</td><td>エンド・リミット信号(-)</td></tr><tr><td>39</td><td>GDI0</td><td>I</td><td>DI/LTC/PCS/SD/CLR0</td><td>89</td><td>GDI2</td><td>I</td><td>DI/LTC/PCS/SD/CLR2</td></tr><tr><td>40</td><td>DO0</td><td>O</td><td>汎用出力 0</td><td>90</td><td>DO2</td><td>O</td><td>汎用出力 2</td></tr><tr><td>41</td><td>ORG0</td><td>I</td><td>原点信号</td><td>91</td><td>ORG2</td><td>I</td><td>原点信号</td></tr><tr><td>42</td><td>EXGND</td><td></td><td>外部電源グラウンド</td><td>92</td><td>EXGND</td><td></td><td>外部電源グラウンド</td></tr><tr><td>43</td><td>PEL1</td><td>I</td><td>エンド・リミット信号(+)</td><td>93</td><td>PEL3</td><td>I</td><td>エンド・リミット信号(+)</td></tr><tr><td>44</td><td>MEL1</td><td>I</td><td>エンド・リミット信号(-)</td><td>94</td><td>MEL3</td><td>I</td><td>エンド・リミット信号(-)</td></tr><tr><td>45</td><td>GDI1</td><td>I</td><td>DI/LTC/PCS/SD/CLR1/EMG</td><td>95</td><td>GDI3</td><td>I</td><td>DI/LTC/PCS/SD/CLR3</td></tr><tr><td>46</td><td>DO1</td><td>O</td><td>汎用出力 1</td><td>96</td><td>DO3</td><td>O</td><td>汎用出力 3</td></tr><tr><td>47</td><td>ORG1</td><td>I</td><td>原点信号</td><td>97</td><td>ORG3</td><td>I</td><td>原点信号</td></tr><tr><td>48</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td><td>98</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td></tr><tr><td>49</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td><td>99</td><td>E_24V</td><td>-</td><td>絶縁電源入力、+24V</td></tr><tr><td>50</td><td>EXGND</td><td>-</td><td>外部電源グラウンド</td><td>100</td><td>E_24V</td><td>-</td><td>絶縁電源入力、+24V</td></tr></table>

Table 2-1: P1/P2 ピン・アサイン

▶ P1 は軸 0 から 3 を制御し、P2 は軸 4 から 7 を制御します。

# 2.6 K1/K2 ピン・アサイン: 同時スタート / ストップ

K1 および K2 は複数軸または複数カードの同時スタート / ストップ信号を送信します。

<table><tr><td>番号</td><td>名称</td><td>関数</td></tr><tr><td>1</td><td>+5V</td><td>PCI バス電源出力 (VCC)</td></tr><tr><td>2</td><td>STA</td><td>同時スタート信号入力 / 出力</td></tr><tr><td>3</td><td>STP</td><td>同時ストップ信号入力 / 出力</td></tr><tr><td>4</td><td>GND</td><td>PCI バス電源グラウンド</td></tr></table>

Table 2-2: K1/K2 ピン・アサイン

注意: +5VピンおよびGNDピンの電源はPCIバスから供給されます。

# 2.7 パルス出力用 J1～J16 ジャンパの設定

J1～J16はパルス出力信号（DIRおよびOUT）の種類を設定するのに使用されます。出力信号の種類は差動回線ドライバかオープン・コレクタ出力のどちらかです。ジャンパ設定の詳細についてはセクション3.1を参照してください。デフォルト設定は差動回線ドライバ・モードです。対応表は以下の通りです：

<table><tr><td>JP1 および JP2</td><td>軸0</td><td>JP9 および JP10</td><td>軸4</td></tr><tr><td>JP3 および JP4</td><td>軸1</td><td>JP11 および JP12</td><td>軸5</td></tr><tr><td>JP5 および JP6</td><td>軸2</td><td>JP13 および JP14</td><td>軸6</td></tr><tr><td>JP7 および JP8</td><td>軸3</td><td>JP15 および JP16</td><td>軸7</td></tr></table>

Table 2-3: J1 から J16 までのジャンパ設定

![The image depicts a schematic connection between signal descriptions and a connector.\n\n**Labeled Blocks and Text:**\n*   **Line Driver**\n*   **Open Collector**\n*   **J1** (Label above the connector)\n*   **1**, **2**, **3** (Numbers indicating pin positions along the left edge of the connector)\n\n**Connections:**\n*   A horizontal arrow extends from **Line Driver** pointing to pin **1** of connector **J1**.\n*   A horizontal arrow extends from **Open Collector** pointing to pin **3** of connector **J1**.](.pci-8158-50-11139-1000-200jp-en/18bbf9488948be3b580c384ceb4779dd34a67348f1ef475df81ecda91a64c185.jpg)

# 2.8 カード・インデックス用 S1 スイッチ設定

S1 スイッチはカード・インデックスの設定に使用されます。例えば、1 をオンに、その他をオフにすると、カード・インデックスは1になります。値は0から15までです。詳しくは下表を参照してください。

<table><tr><td>カードID</td><td>スイッチ設定(オン=1)</td></tr><tr><td>0</td><td>0000</td></tr><tr><td>1</td><td>0001</td></tr><tr><td>2</td><td>0010</td></tr><tr><td>3</td><td>0011</td></tr><tr><td>4</td><td>0100</td></tr><tr><td>5</td><td>0101</td></tr><tr><td>6</td><td>0110</td></tr><tr><td>7</td><td>0111</td></tr><tr><td>8</td><td>1000</td></tr><tr><td>9</td><td>1001</td></tr><tr><td>10</td><td>1010</td></tr><tr><td>11</td><td>1011</td></tr><tr><td>12</td><td>1100</td></tr><tr><td>13</td><td>1101</td></tr><tr><td>14</td><td>1110</td></tr><tr><td>15</td><td>1111</td></tr></table>

Table 2-4: S1 スイッチ設定

# 2.9 P3 手動パルス

P3 の信号は手動パルス入力に使用されます。

<table><tr><td>番号</td><td>名称</td><td>機能(軸)</td></tr><tr><td>1</td><td>VDD</td><td>絶縁電源、+5V</td></tr><tr><td>2</td><td>PA+</td><td>パルス A+ 相信号入力</td></tr><tr><td>3</td><td>PA-</td><td>パルス A- 相信号入力</td></tr><tr><td>4</td><td>PB+</td><td>パルス B+ 相信号入力</td></tr><tr><td>5</td><td>PB-</td><td>パルス B- 相信号入力</td></tr><tr><td>6</td><td>EXGND</td><td>外部グラウンド</td></tr><tr><td>7</td><td>なし</td><td>未使用</td></tr><tr><td>8</td><td>なし</td><td>未使用</td></tr><tr><td>9</td><td>なし</td><td>未使用</td></tr></table>

Table 2-5: P3 手動パルス
注意：+5V ピンおよび GND ピンの電源は PCI バスから直接供給されます。したがって、それらの信号は絶縁されていません。

# 3 信号接続

本章ではすべての I/O の信号接続について説明します。PCI-8158 とモータ・ドライバをケーブルで接続する前に、本章の内容を参照してください。

本章には以下のセクションが含まれます：

セクション 3.1 パルス出力信号 OUT および DIR

セクション 3.2 エンコーダ・フィードバック信号 EA、EB、EZ

セクション 3.3 原点信号 ORG

セクション 3.4 エンド・リミット信号 PEL および MEL

セクション 3.5 インポジション信号 INP

セクション 3.6 アラーム信号 ALM

セクション 3.7 偏差カウンタ・クリア信号 ERC

セクション 3.8 汎用信号 SVON

セクション 3.9 汎用信号 RDY

セクション 3.10 多機能出力ピン: DO/CMP

セクション 3.11 多機能入力信号 DI/LTC/SD/PCS/CLR/EMG

セクション 3.12 パルス入力信号 PA および PB

セクション 3.13 同時スタート / ストップ信号 STA および STP

セクション 3.14 ターミネーション・ボード

# 3.1 パルス出力信号 OUT および DIR

PCI-8158 には 8 軸のパルス出力信号があります。各軸では、OUT および DIR の差動信号からなる 2 つのペアがパルス・トレインを送信し、方向を示すのに使用されます。OUT 信号と DIR 信号は CW 信号と CCW 信号のペアとしてもプログラムできます。OUT 信号と DIR 信号の詳しい論理特性についてはセクション 4.1.1 を参照してください。同セクションでは、OUT 信号と DIR 信号の電気的特性が詳しく説明されています。各信号は 1 組の差動信号から構成されます。例えば、OUT0 は OUT0+ 信号と OUT0- 信号から構成されます。P1 のすべてのパルス出力信号は下表の通りです。

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>説明</td><td>軸 #</td></tr><tr><td>3</td><td>OUT0+</td><td>パルス信号(+)</td><td>0</td></tr><tr><td>4</td><td>OUT0-</td><td>パルス信号(-)</td><td>0</td></tr><tr><td>5</td><td>DIR0+</td><td>方向信号(+)</td><td>0</td></tr><tr><td>6</td><td>DIR0-</td><td>方向信号(-)</td><td>0</td></tr><tr><td>21</td><td>OUT1+</td><td>パルス信号(+)</td><td>1</td></tr><tr><td>22</td><td>OUT1-</td><td>パルス信号(-)</td><td>1</td></tr><tr><td>23</td><td>DIR1+</td><td>方向信号(+)</td><td>1</td></tr><tr><td>24</td><td>DIR1-</td><td>方向信号(-)</td><td>1</td></tr><tr><td>53</td><td>OUT2+</td><td>パルス信号(+)</td><td>2</td></tr><tr><td>54</td><td>OUT2-</td><td>パルス信号(-)</td><td>2</td></tr><tr><td>55</td><td>DIR2+</td><td>方向信号(+)</td><td>2</td></tr><tr><td>56</td><td>DIR2-</td><td>方向信号(-)</td><td>2</td></tr><tr><td>71</td><td>OUT3+</td><td>パルス信号(+)</td><td>3</td></tr><tr><td>72</td><td>OUT3-</td><td>パルス信号(-)</td><td>3</td></tr><tr><td>73</td><td>DIR3+</td><td>方向信号(+)</td><td>3</td></tr><tr><td>74</td><td>DIR3-</td><td>方向信号(-)</td><td>3</td></tr></table>

Table 3-1: パルス出力信号 OUT (P1)

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>説明</td><td>軸 #</td></tr><tr><td>3</td><td>OUT4+</td><td>パルス信号(+)</td><td>4</td></tr><tr><td>4</td><td>OUT4-</td><td>パルス信号(-)</td><td>4</td></tr><tr><td>5</td><td>DIR4+</td><td>方向信号(+)</td><td>4</td></tr><tr><td>6</td><td>DIR4-</td><td>方向信号(-)</td><td>4</td></tr><tr><td>21</td><td>OUT5+</td><td>パルス信号(+)</td><td>5</td></tr><tr><td>22</td><td>OUT5-</td><td>パルス信号(-)</td><td>5</td></tr><tr><td>23</td><td>DIR5+</td><td>方向信号(+)</td><td>5</td></tr><tr><td>24</td><td>DIR5-</td><td>方向信号(-)</td><td>5</td></tr><tr><td>53</td><td>OUT6+</td><td>パルス信号(+)</td><td>6</td></tr><tr><td>54</td><td>OUT6-</td><td>パルス信号(-)</td><td>6</td></tr><tr><td>55</td><td>DIR6+</td><td>方向信号(+)</td><td>6</td></tr><tr><td>56</td><td>DIR6-</td><td>方向信号(-)</td><td>6</td></tr><tr><td>71</td><td>OUT7+</td><td>パルス信号(+)</td><td>7</td></tr><tr><td>72</td><td>OUT7-</td><td>パルス信号(-)</td><td>7</td></tr><tr><td>73</td><td>DIR7+</td><td>方向信号(+)</td><td>7</td></tr><tr><td>74</td><td>DIR7-</td><td>方向信号(-)</td><td>7</td></tr></table>

Table 3-2: パルス出力信号 OUT (P2)

OUT 信号または DIR 信号の出力はジャンパを使って、差動回線ドライバまたはオープン・コレクタ出力として設定できます。ジャンパ J1 から J16 の 1 と 2 または 2 と 3 の間のジャンパ回線によって出力モードを以下のように選択できます。

<table><tr><td>出力信号</td><td>差動回線ドライバ出力では、以下の1と2間の切断を閉じます:</td><td>オープン・コレクタ出力では、以下の2と3間の切断を閉じます:</td></tr><tr><td>OUT0+</td><td>J1</td><td>J1</td></tr><tr><td>DIR0+</td><td>J9</td><td>J9</td></tr><tr><td>OUT1+</td><td>J2</td><td>J2</td></tr><tr><td>DIR1+</td><td>J10</td><td>J10</td></tr><tr><td>OUT2+</td><td>J3</td><td>J3</td></tr><tr><td>DIR2+</td><td>J11</td><td>J11</td></tr><tr><td>OUT3+</td><td>J4</td><td>J4</td></tr></table>

<table><tr><td>出力信号</td><td>差動回線ドライバ出力では、以下の1と2間の切断を閉じます:</td><td>オープン・コレクタ出力では、以下の2と3間の切断を閉じます:</td></tr><tr><td>DIR3+</td><td>J12</td><td>J12</td></tr><tr><td>OUT4+</td><td>J5</td><td>J5</td></tr><tr><td>DIR4+</td><td>J13</td><td>J13</td></tr><tr><td>OUT5+</td><td>J6</td><td>J6</td></tr><tr><td>DIR5+</td><td>J14</td><td>J14</td></tr><tr><td>OUT6+</td><td>J7</td><td>J7</td></tr><tr><td>DIR6+</td><td>J15</td><td>J15</td></tr><tr><td>OUT7+</td><td>J8</td><td>J8</td></tr><tr><td>DIR7+</td><td>J16</td><td>J16</td></tr></table>

Table 3-3: 出力信号

OUT と DIR のデフォルト 設定は差動回線ドライバ・モードに設定されています。

2 つの軸の OUT 信号と DIR 信号の配線図は以下の通りです。

![VCC\n4.7K\n26LS31\nJ1-J16\nVDD\nOUT/DIR\nOUT+/DIR+\nOUT-/DIR-\nEXGND](.pci-8158-50-11139-1000-200jp-en/d60a00b059750424d78ab08afd04a8774ce9d199b653f0754251d90454fa75e0.jpg)

¡çà": パルス出力がオープン・コレクタ出力モードに設定されている場合、OUT-とDIR-がOUT信号とDIR信号を送信するのに使用されます。OUT-ÉsÉiÇýDIR-EsÉiÇAÉVEiENidó“ÇÕ20mAà»â½ÇYÇ»Ç∅CÍÇOEC»ÇËC&lt;Ç¼ÇOÄBデフォルト設定では1-2がショートされています。

提案される使用方法：下図のように、ジャンパ2-3をショートし、OUT-/DIR-をドライバの470Ωパルス入力インタフェースのCOMに接続します。ドライバの OUT/DIR に接続する OUT-/DIR- を選択します。

![Inside Motion Card\nVDD\nOUT+, DIR+\nOUT-, DIR-\nEXGND\n+5V\n470 Ohm\nInside Motor Driver](.pci-8158-50-11139-1000-200jp-en/33b25ef8a9d0c5ec77afc1ec4077b77a2014cd53ad17d95bb1085e918b2d1280.jpg)

警告: シンク電流は 20mA 以下でなければなりません。20mA を超えると、26LS31 の故障の原因となります。

# 3.2 エンコーダ・フィードバック信号 EA、EB、EZ

エンコーダ・フィードバック信号には、EA、EB、EZがあります。それぞれの軸には、相A（EA）入力、相B（EB）入力、インデックス（EZ）入力の3つの作動ペアからなる6つのピンがあります。EAとEBは位置カウントに使用され、EZはゼロ位置のインデックスに使用されます。信号名、ピン番号、軸番号の対応は下表の通りです：

&lt;table&gt;<tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>13</td><td>EA0+</td><td>0</td><td>14</td><td>EA0-</td><td>0</td></tr><tr><td>15</td><td>EB0+</td><td>0</td><td>16</td><td>EB0-</td><td>0</td></tr><tr><td>31</td><td>EA1+</td><td>1</td><td>32</td><td>EA1-</td><td>1</td></tr><tr><td>33</td><td>EB1+</td><td>1</td><td>34</td><td>EB1-</td><td>1</td></tr><tr><td>63</td><td>EA2+</td><td>2</td><td>64</td><td>EA2-</td><td>2</td></tr><tr><td>65</td><td>EB2+</td><td>2</td><td>66</td><td>EB2-</td><td>2</td></tr><tr><td>81</td><td>EA3+</td><td>3</td><td>82</td><td>EA3-</td><td>3</td></tr><tr><td>83</td><td>EB3+</td><td>3</td><td>84</td><td>EB3-</td><td>3</td></tr><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>13</td><td>EA4+</td><td>4</td><td>14</td><td>EA4-</td><td>4</td></tr><tr><td>15</td><td>EB4+</td><td>4</td><td>16</td><td>EB4-</td><td>4</td></tr><tr><td>31</td><td>EA5+</td><td>5</td><td>32</td><td>EA5-</td><td>5</td></tr><tr><td>33</td><td>EB5+</td><td>5</td><td>34</td><td>EB5-</td><td>5</td></tr><tr><td>63</td><td>EA6+</td><td>6</td><td>64</td><td>EA6-</td><td>6</td></tr><tr><td>65</td><td>EB6+</td><td>6</td><td>66</td><td>EB6-</td><td>6</td></tr><tr><td>81</td><td>EA7+</td><td>7</td><td>82</td><td>EA7-</td><td>7</td></tr><tr><td>83</td><td>EB7+</td><td>7</td><td>84</td><td>EB7-</td><td>7</td></tr></table>

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>17</td><td>EZ0+</td><td>0</td><td>18</td><td>EZ0-</td><td>0</td></tr><tr><td>35</td><td>EZ1+</td><td>1</td><td>36</td><td>EZ1-</td><td>1</td></tr><tr><td>67</td><td>EZ2+</td><td>2</td><td>68</td><td>EZ2-</td><td>2</td></tr><tr><td>85</td><td>EZ3+</td><td>3</td><td>86</td><td>EZ3-</td><td>3</td></tr></table>

<table><tr><td>P2のピン番号</td><td>信号名</td><td>軸#</td><td>P2のピン番号</td><td>信号名</td><td>軸#</td></tr><tr><td>17</td><td>EZ4+</td><td>4</td><td>18</td><td>EZ4-</td><td>4</td></tr><tr><td>35</td><td>EZ5+</td><td>5</td><td>36</td><td>EZ5-</td><td>5</td></tr><tr><td>67</td><td>EZ6+</td><td>6</td><td>68</td><td>EZ6-</td><td>6</td></tr><tr><td>85</td><td>EZ7+</td><td>7</td><td>86</td><td>EZ7-</td><td>7</td></tr></table>

EA 信号、EB 信号、EZ 信号の入力回路は以下の通りです：

![Inside 8158\nMotion IC\nEA, EB, EZ\nHP0631\nR = 330 Ohm\nC = 100 p\nP1, P2\nEA+, EB+, EZ+\nEA-, EB-\nEZ-](.pci-8158-50-11139-1000-200jp-en/d7c37d07130a94404d4dc3d81c431be6923e8654610de44bb3f72febb468775b.jpg)

エンコーダ入力信号（EA+、EA-）、（EB+、EB-）、（EZ+、EZ-）のそれぞれの差動ペア間の電圧は3.5V以上でなければならないことに注意してください。したがって、エンコーダのフィードバックまたはモータ・ドライバのフィードバック接続時、出力電流がソースを超えないように注意しなければなりません。差動信号のペアはデジタル信号のEA、EB、EZに変換されてから、モーション・コントロールASICに提供されます。

下図は入力信号と外部回路の接続の例です。入力回路は（1）差動回線ドライバ、または（2）オープン・コレクタ出力が備わっている場合、エンコードまたはモータ・ドライバに接続できます。

# 3.2.1 回線ドライバ出力の接続

PCI-8158 のエンコーダ入力を駆動するには、ドライバ出力が 8mA 以上の駆動容量を備え、差動ペア間に 3.5V 以上の電圧を提供しなければなりません。また、両端のグラウンドは結合されていなければなりません。最大周波数は配線距離および信号状況により 4MHz またはそれ以上になります。

![The diagram depicts a schematic connecting a source labeled 'Inside 8158' to an 'External Encoder / Driver With line driver output,' separated by a vertical dashed line.\n\n**Labeled Blocks and Text:**\n*   **Top Left:** 'Inside 8158'\n*   **Top Right:** 'External Encoder / Driver With line driver output'\n*   **Middle Left:** 'EA+,EB+,EZ+' and 'EA-, EB-, EZ-' (in red)\n*   **Bottom Left:** 'EGND' (in red)\n*   **Bottom Right:** 'GND' (in red)\n*   **Bottom Right (Output):** 'A,B phase signals Index signal'\n*   **Center Component:** A blue triangle symbol representing a buffer or driver.\n*   **Ground Symbols:** Two downward-pointing arrows indicating ground connections.\n\n**Connections:**\n*   The line labeled **'EA+,EB+,EZ+'** runs horizontally from the left, passes a connection dot, and enters the top input of the blue triangle.\n*   The line labeled **'EA-, EB-, EZ-'** runs horizontally from the left, passes a connection dot, and enters the bottom input of the blue triangle. There is a small circle (bubble) at this connection point on the triangle.\n*   The line labeled **'EGND'** runs horizontally, connects to a ground symbol on the left, and continues to the right side where it is labeled **'GND'** and connects to a second ground symbol.\n*   A horizontal line extends from the pointed output of the blue triangle to the right.\n*   The text **'A,B phase signals Index signal'** is positioned below the output line.](.pci-8158-50-11139-1000-200jp-en/9d6f92ff3fca772662af6775e99efea92dd694d89098ad90b91f13c75876bbbe.jpg)

# 3.2.2 オープン・コレクタ出力の接続

オープン・コレクタ出力を接続するには、外部電源が必要です。モータ・ドライバの中には、電源を備えているものもあります。PCI-8158、エンコーダ、電源の接続は下図の通りです。PCI-8158の入力回路を保護するために、外部電流を抑制する抵抗 R が必要であることに注意してください。エンコーダの電源により提案されている抵抗値は下表の通りです。

<table><tr><td>エンコーダ電圧(V)</td><td>外部抵抗 R</td></tr><tr><td>+5V</td><td>0Ω(なし)</td></tr><tr><td>+12V</td><td>1.5kΩ</td></tr><tr><td>+24V</td><td>3.0kΩ</td></tr></table>

![I_f = 8mA\nInside PCI-8158\nEA+, EB+, EZ+\nRA\nV GND\nExternal Power for Encoder\nMotor Encoder / Driver\nWith Open Collector Output\nEA-, EB-, EZ-\nA, B phase signals\nIndex signal](.pci-8158-50-11139-1000-200jp-en/99c117818571fa17afb5fa5876ae5158bd18704504f957a8c758229ac7efe99f.jpg)

エンコーダのフィードバック信号の詳しい動作情報については、セクション 4.4 を参照してください。

# 3.3 原点信号 ORG

原点信号（ORG0～ORG7）はメカニズムの原点の入力信号として使用されます。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>41</td><td>ORG0</td><td>0</td></tr><tr><td>47</td><td>ORG1</td><td>1</td></tr><tr><td>91</td><td>ORG2</td><td>2</td></tr><tr><td>97</td><td>ORG3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>41</td><td>ORG4</td><td>4</td></tr><tr><td>47</td><td>ORG5</td><td>5</td></tr><tr><td>91</td><td>ORG6</td><td>6</td></tr><tr><td>97</td><td>ORG7</td><td>7</td></tr></table>

ORG 信号の入力回路は下図の通りです。通常、軸の原点を示すのにリミット・スイッチが使用されます。リミット・スイッチの仕様は +24V @ 6mA 以上の接点容量がなければなりません。不具合の原因となる高周波数スパイクを排除するために、内部フィルタ回路が使用されます。

![VCC\nInside 8158\nTo motion IC\n2.2K\nI 24V\n1V max.\nPS2805\nDGND\nEGND\nORG\nSwitch\nP1, P2](.pci-8158-50-11139-1000-200jp-en/563dfdbb2a693cd2dbef1f7f0a62623fddfcc9c5a334e87de702a65dfb34ccc4.jpg)

モーション・コントローラが原点復帰モードで動作している場合、ORG 信号は制御出力信号（OUT および DIR）を禁止するために使用されます。ORG 信号の詳しい動作については、セクション 4.3.3 を参照してください。

# 3.4 エンド・リミット信号 PEL および MEL

各軸には PEL と MEL の 2 つのエンド・リミット信号があります。PEL はエンド・リミット信号がプラス方向であることを示し、MEL はエンド・リミット信号がマイナス方向であることを示します。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>37</td><td>PEL0</td><td>0</td><td>38</td><td>MEL0</td><td>0</td></tr><tr><td>43</td><td>PEL1</td><td>1</td><td>44</td><td>MEL1</td><td>1</td></tr><tr><td>87</td><td>PEL2</td><td>2</td><td>88</td><td>MEL2</td><td>2</td></tr><tr><td>93</td><td>PEL3</td><td>3</td><td>94</td><td>MEL3</td><td>3</td></tr></table>

<table><tr><td>P2のピン番号</td><td>信号名</td><td>軸#</td><td>P2のピン番号</td><td>信号名</td><td>軸#</td></tr><tr><td>37</td><td>PEL4</td><td>4</td><td>38</td><td>MEL4</td><td>4</td></tr><tr><td>43</td><td>PEL5</td><td>5</td><td>44</td><td>MEL5</td><td>5</td></tr><tr><td>87</td><td>PEL6</td><td>6</td><td>88</td><td>MEL6</td><td>6</td></tr><tr><td>93</td><td>PEL7</td><td>7</td><td>94</td><td>MEL7</td><td>7</td></tr></table>

回路図は下図の通りです。外部リミット・スイッチは +24V @ 8mA 以上の接点容量を備えていなければなりません。『A タイプ』（常時開）接点または『B タイプ』（常時閉）接点のいずれかのスイッチが使用できます。外部リミット信号のアクティブ論理を設定するには、\_8158\_set\_limit\_logic 関数の説明を参照してください。

![VCC\nInside 8158\nTo motion IC\n2.2K\n1.24V\nP1,P2\n1V Max.\nPS2805\nDGND\nEGND\nPEL\nMEL\nSwitch](.pci-8158-50-11139-1000-200jp-en/fede72de8c67d3b5e004f067f38dbbddd66813df9e2cf0ec329fe53273fc0658.jpg)

# 3.5 インポジション信号 INP

サーボ・モータ・ドライバからのインポジション信号 INP は偏差エラーを示します。偏差エラーが発生すると、サーボの位置はゼロになります。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>10</td><td>INPO</td><td>0</td></tr><tr><td>28</td><td>INP1</td><td>1</td></tr><tr><td>60</td><td>INP2</td><td>2</td></tr><tr><td>78</td><td>INP3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>10</td><td>INP4</td><td>4</td></tr><tr><td>28</td><td>INP5</td><td>5</td></tr><tr><td>60</td><td>INP6</td><td>6</td></tr><tr><td>78</td><td>INP7</td><td>7</td></tr></table>

INP 信号の入力回路は下図に通りです：

![VCC\nTo motion IC\nPS2805\nR = 330 Ohm\nVDD\nDGND\nInside 8158\n0.5V Max.\nP1,P2\nINP](.pci-8158-50-11139-1000-200jp-en/2ad22aa1a73b8f8f281e4f50861fdadc5db04e9780da19a1e8f807aea491a69f.jpg)

通常、インポジション信号はサーボ・モータから発生されて、オープン・コレクタ出力信号になります。外部回路は INP 信号を駆動するために 8mA 以上の電流シンク容量を備えていなければなりません。

# 3.6 アラーム信号 ALM

アラーム信号 ALM はサーボ・ドライバからのアラーム状態を表示するのに使用されます。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>9</td><td>ALM0</td><td>0</td></tr><tr><td>27</td><td>ALM1</td><td>1</td></tr><tr><td>59</td><td>ALM2</td><td>2</td></tr><tr><td>77</td><td>ALM3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>9</td><td>ALM4</td><td>4</td></tr><tr><td>27</td><td>ALM5</td><td>5</td></tr><tr><td>59</td><td>ALM6</td><td>6</td></tr><tr><td>77</td><td>ALM7</td><td>7</td></tr></table>

入力アラーム回路は下図の通りです。通常、ALM 信号はサーボ・モータ・ドライバから発生されて、オープン・コレクタ出力信号になります。外部回路は ALM 信号を駆動するために 8mA 以上の電流シンク容量を備えていなければなりません。

![VCC\nTo motion IC\nPS2805\nR = 330 Ohm\nVDD\nDGND\nInside 8158\n0.5V Max.\nP1,P2\nALM](.pci-8158-50-11139-1000-200jp-en/ad9079fe9cd7116ee929264d1cb97e7418e0b2d15cd0e3f199d6473006ddad7c.jpg)

# 3.7 偏差カウンタ・クリア信号 ERC

偏差カウンタ・クリア信号（ERC）は以下の4つの状況でアクティブになります：

1. 原点復帰完了時
2. エンド・リミット・スイッチ・アクティブ時
3. アラーム信号が OUT および DIR 信号を停止した場合
4. ソフトウェア（オペレータ）から緊急停止コマンドが発行された場合

信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>8</td><td>ERC0</td><td>0</td></tr><tr><td>26</td><td>ERC1</td><td>1</td></tr><tr><td>58</td><td>ERC2</td><td>2</td></tr><tr><td>76</td><td>ERC3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>8</td><td>ERC4</td><td>4</td></tr><tr><td>26</td><td>ERC5</td><td>5</td></tr><tr><td>58</td><td>ERC6</td><td>6</td></tr><tr><td>76</td><td>ERC7</td><td>7</td></tr></table>

ERC 信号はサーボ・モータ・ドライバの偏差カウンタをクリアするのに使用されます。ERC 出力回路は最大 35V @ 50mA の駆動容量を備えたオープン・コレクタです。

![VCC\nInside 8158\nP1.P2\nFrom motion IC\nPS2805\n35V @ 50mA Maximum\nERC\nEGND](.pci-8158-50-11139-1000-200jp-en/cfbd4a86e08562ac79daaa9410ccdd0187638650859f19ac732499687a08c2b6.jpg)

# 3.8 汎用信号 SVON

SVON 信号はサーボ・モータ制御または汎用出力信号として使用できます。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>7</td><td>SVON0</td><td>0</td></tr><tr><td>25</td><td>SVON1</td><td>1</td></tr><tr><td>57</td><td>SVON2</td><td>2</td></tr><tr><td>75</td><td>SVON3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>7</td><td>SVON4</td><td>4</td></tr><tr><td>25</td><td>SVON5</td><td>5</td></tr><tr><td>57</td><td>SVON6</td><td>6</td></tr><tr><td>75</td><td>SVON7</td><td>7</td></tr></table>

SVON 信号の出力回路は下図の通りです：
![VCC\nInside 8158\nP1.P2\nFrom motion IC\nPS2805\n35V @ 50mA Maximum\nSVON\nEGND](.pci-8158-50-11139-1000-200jp-en/3a40fc2323966785bc7060060cb1ceefd75a2da1937935b317c4acae58a0761d.jpg)

# 3.9 汎用信号 RDY

RDY 信号はモータ・ドライバ対応入力または汎用入力信号として使用できます。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>11</td><td>RDY0</td><td>0</td></tr><tr><td>29</td><td>RDY1</td><td>1</td></tr><tr><td>61</td><td>RDY2</td><td>2</td></tr><tr><td>79</td><td>RDY3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>11</td><td>RDY4</td><td>4</td></tr><tr><td>29</td><td>RDY5</td><td>5</td></tr><tr><td>61</td><td>RDY6</td><td>6</td></tr><tr><td>79</td><td>RDY7</td><td>7</td></tr></table>

RDY 信号の入力回路は下図に通りです：

![VCC\nTo motion IC\nPS2805\nR = 330 Ohm\nVDD\nInside 8158\nP1,P2\n0.5V Max.\nDGND\nRDY](.pci-8158-50-11139-1000-200jp-en/44973e5c394fb472021add1391606f695bb34f3797b3635461cccaa10d6f68a9.jpg)

# 3.10 多機能出力ピン: DO/CMP

PCI-8158 は 8 つの軸に対応する DO/CMP0 から DO/CMP7 までの 8 つの多機能出力チャンネルを備えています。それぞれの出力ピンはデジタル出力（DO）または比較出力（CMP）として個別に設定できます。比較出力ピンに設定した場合、エンコーダ・カウンタがユーザー設定値に達すると、ピンはパルス出力を発生します。

多機能チャンネルは P1 および P2 に配置されます。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>40</td><td>DO/CMP0</td><td>0</td></tr><tr><td>46</td><td>DO/CMP1</td><td>1</td></tr><tr><td>90</td><td>DO/CMP2</td><td>2</td></tr><tr><td>96</td><td>DO/CMP3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>40</td><td>DO/CMP4</td><td>4</td></tr><tr><td>46</td><td>DO/CMP5</td><td>5</td></tr><tr><td>90</td><td>DO/CMP6</td><td>6</td></tr><tr><td>96</td><td>DO/CMP7</td><td>7</td></tr></table>

最初の 2 軸の CMP は以下の配線図の通りです：

![3.3V\nInside 8158\nP1.P2\nFrom CPLD\nPS2802\n35V @ 50mA Maximum\nDO/CMP\nEGND](.pci-8158-50-11139-1000-200jp-en/f0ac584517504ba8cbeb83eb3a6872208d3858ce5bba992abf616e84c35497d7.jpg)

# 3.11 多機能入力ピン：DI/LTC/SD/PCS/CLR/EMG

PCI-8158 は 8 つの多機能入力ピンを備えています。8 つのピンはそれぞれ DI（デジタル入力）、LTC（ラッチ）、SD（減速）、PCS（ターゲット位置のオーバーライド）、CLR（カウンタ・クリア）、EMG（緊急）のいずれかに設定できます。ピン機能の選択方法については、6.12 を参照してください。

多機能入力ピンは P1 と P2 です。信号名、ピン番号、軸番号は下表の通りです：

<table><tr><td>P1 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>39</td><td>DI/LTC/SD/PCS/CLR/EMG_0</td><td>0</td></tr><tr><td>45</td><td>DI/LTC/SD/PCS/CLR/EMG_1</td><td>1</td></tr><tr><td>89</td><td>DI/LTC/SD/PCS/CLR/EMG_2</td><td>2</td></tr><tr><td>95</td><td>DI/LTC/SD/PCS/CLR/EMG_3</td><td>3</td></tr></table>

<table><tr><td>P2 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>39</td><td>DI/LTC/SD/PCS/CLR/EMG_4</td><td>4</td></tr><tr><td>45</td><td>DI/LTC/SD/PCS/CLR/EMG_5</td><td>5</td></tr><tr><td>89</td><td>DI/LTC/SD/PCS/CLR/EMG_6</td><td>6</td></tr><tr><td>95</td><td>DI/LTC/SD/PCS/CLR/EMG_7</td><td>7</td></tr></table>

多機能入力ピンの配線図は以下の通りです：

![VCC\nTo CPLD\nPS2805\nR = 330 Ohm\nVDD\nDGND\nInside 8158\nP1,P2\n0.5V Max.\nMulti-Functional\nInput Pin](.pci-8158-50-11139-1000-200jp-en/318af7fde612e70e1589d681decc659338f77823726437723c39d7657422a607.jpg)

# 3.12 パルス入力信号 PA および PB (PCI-8158)

PCI-8158は以下のPN1のピンからの差動パルス入力信号を受信できます。パルスの動作はエンコーダと同様です。A-B相信号はモータをガイドする位置決め情報を発行します。

<table><tr><td>P3 のピン番号</td><td>信号名</td><td>軸 #</td><td>P3 のピン番号</td><td>信号名</td><td>軸 #</td></tr><tr><td>2</td><td>PA+</td><td>0-7</td><td>3</td><td>PA-</td><td>0-7</td></tr><tr><td>4</td><td>PB+</td><td>0-7</td><td>5</td><td>PB-</td><td>0-7</td></tr></table>

パルス信号は軸0から軸7で使用されます。8158\_disable\_pulser\_input 関数を使用すれば、各軸でパルスを使用するか、使用しないを設定できます。

差動パルス入力ピンの配線図は以下の通りです：

![Inside 8158\nR = 220 Ohm\nMotion IC\nPA, PB\nHP0631\nC = 100 pF\nP3\nPA+\nPB+\nPA-\nPB-](.pci-8158-50-11139-1000-200jp-en/71666a9fad2df9e81466e48cca342d2801242fe98684dd866fb0e7bc7f665494.jpg)

# 3.13 同時スタート / ストップ信号 STA および STP

PCI-8158 は複数の軸のモーションの同時スタート / ストップを可能にする STA および STP 信号に対応しています。STA 信号と STP 信号は CN4 で使用されます。

オンボード回路は下図の通りです。4つの軸のSTA信号とSTP信号はそれぞれ結合されています。

![VCC\n10 K\nVCC\n10 K\nInside PCI-8158\nK1,K2\nSTP\nSTA\nSTP\nSTA](.pci-8158-50-11139-1000-200jp-en/307438f8e070c73d146e4794d7c5906a216dd399d232c6c6238e59df478a2f00.jpg)

STA 信号および STP 信号は入力と出力の両方の信号です。スタート動作とストップ動作を同時に操作するには、ソフトウェア制御と外部制御の両方が必要です。ソフトウェア制御を使えば、どの PCI-8158 からでも信号を発生できるようになります。外部オープン・コレクタまたはスイッチを使えば、同時スタート / ストップ用 STA/ STP 信号を駆動できます。

PCI-8158 カードが複数ある場合、最初のカードの K2 コネクタと次のカードの K1 コネクタを接続してください。同じ PCI-8158 の K1 コネクタと K2 コネクタは内部で接続されています。

![Based on the provided flowchart/block diagram, here is the accurate description:\n\n**Labeled Blocks:**\nThe diagram is organized into three columns, each headed by a PCI label:\n*   **PCI-8158 #0**: Contains a top block labeled **K2** and a bottom block labeled **K1**.\n*   **PCI-8158 #1**: Contains a top block labeled **K2** and a bottom block labeled **K1**.\n*   **PCI-8158 #2**: Contains a top block labeled **K2** and a bottom block labeled **K1**.\n\nInside each of these six blocks (K2 and K1), there are four terminals listed vertically with black dots:\n*   **D5V**\n*   **STA**\n*   **STP**\n*   **GND**\n\n**Connections:**\nThere are parallel diagonal lines connecting the blocks between columns:\n*   Four lines connect the right side of the **K2** block in **PCI-8158 #0** to the left side of the **K1** block in **PCI-8158 #1**. These lines connect the corresponding terminals: **D5V** to **D5V**, **STA** to **STA**, **STP** to **STP**, and **GND** to **GND**.\n*   Four lines connect the right side of the **K2** block in **PCI-8158 #1** to the left side of the **K1** block in **PCI-8158 #2**. These lines connect the corresponding terminals: **D5V** to **D5V**, **STA** to **STA**, **STP** to **STP**, and **GND** to **GND**.](.pci-8158-50-11139-1000-200jp-en/b9661142abad87d1e56fb8a7f291370dc3f1f56caff66c57b53b6c5a0ebd8f98.jpg)

外部のスタートおよびストップ信号を使えば、複数のカードの同時モータ操作を発行することもできます。それは外部のスタートおよびストップ信号を最初のPCI-8158カードのK1コネクタのSTAピンとSTPピンに接続するだけで可能となります。

![The diagram displays three columns of interconnected blocks under the headers **PCI-8158 #0**, **PCI-8158 #1**, and **PCI-8158 #2**.\n\n**Blocks:**\n*   **Top Row:** Under each PCI-8158 header is a box labeled **K2**. Inside each box are four labeled points: **D5V**, **STA**, **STP**, and **GND**.\n*   **Bottom Row:** Below the K2 boxes is a row of boxes labeled **K1**. Inside each K1 box are the same four labeled points: **D5V**, **STA**, **STP**, and **GND**.\n*   **Left Side:** To the left of the bottom-left **K1** box is a square wave symbol.\n\n**Connections:**\n*   Four diagonal lines connect the **K2** box under **PCI-8158 #0** to the **K1** box under **PCI-8158 #1**. These lines correspond terminal to terminal (D5V to D5V, STA to STA, STP to STP, GND to GND).\n*   Four diagonal lines connect the **K2** box under **PCI-8158 #1** to the **K1** box under **PCI-8158 #2**. These lines correspond terminal to terminal.](.pci-8158-50-11139-1000-200jp-en/a389d9e5853066451c10ca12e60d7e4c54c0e9414bd3d8f33fde43bc121f3147.jpg)

# 4 動作理論

この章ではモーション・コントローラ・カードの動作について詳しく説明します。この章の内容は以下の通りです：

セクション 4.1: モーション・コントローラの種類

セクション 4.2: モーション制御モード

セクション 4.3: モータ・ドライバのインタフェース

セクション 4.4: 機械スイッチのインタフェース

セクション 4.5: カウンタ

セクション 4.6: コンパレータ

セクション 4.7: その他のモーション機能

セクション 4.8: 割り込み制御

セクション 4.9: マルチ・カード動作

# 4.1 モーション・コントローラの種類

サーボ / ステッパ・ドライバが最初にリリースされたとき、モータ制御はモータ制御とモーション制御の2つのレイヤーに分かれていました。モータ制御は PWM、パワー・ステージ、閉ループ、ホール・センサー、ベクトル空間などに関連し、モーション制御は速度プロファイルの生成、軌跡追従、多軸同期化、調整などを行います。

# 4.1.1 電圧タイプのモーション制御インタフェース

モーション制御とモータ制御間のインタフェースは急速に変化しています。電圧信号は当初からモータ・コントローラのコマンドとして使用されました。信号の振幅はモータの回転速度を表し、電圧の変化の間隔はある速度から別の速度へのモータの加速度を表します。モータ・ドライバのコマンドとしての電圧信号がいわゆる「アナログ」タイプのモーション・コントローラです。モータ・コントローラのアナログ回路への統合は極めて容易ですが、同タイプのモーション制御ではノイズが大きな問題となることがあります。また、モータの位置決め制御を行う場合、アナログ・タイプのモーション・コントローラは位置情報のフィードバック信号を必要とし、位置決め制御を可能にする閉ループ制御アルゴリズムを使わなければなりません。これにより、モーション制御はより複雑なものになりました。

# 4.1.2 パルス・タイプのモーション制御インタフェース

2 番目のモーションおよびコー他制御インタフェースのタイプはパルス・トレインです。デジタル・ワールドのトレンドとして、パルス・トレイン・タイプはモーション制御に新しいコンセプトを提供します。パルスのカウントはモータ回転のステップ数を表し、パルスの周波数はモータの動作速度を表します。また、周波数が変化する間隔はモータの加速度を表します。このインタフェースによって、ユーザーはアナログ・タイプの位置決めアプリケーションよりもはるかに容易にサーボまたはステッパ・モータを制御できます。これにより、モーション制御とモータ制御はより容易に分離できます。

上記の2つのインタフェースはゲイン調整を必要とします。アナログ位置コントローラでは、内部に制御ループが構築され、ユーザーはコントローラからゲインを調整できます。パルス・タイプの位置コントローラでは、モータ・ドライブの外部に制御ループが構築され、ユーザーはドライバのゲインを調整する必要があります。

複数軸の動作では、モーション制御のほうがモータ制御よりも重要かもしれません。産業アプリケーションでは、信頼性が非常に重要な要素となります。モータ・ドライバ業者は高性能製品を製造し、モーション・コントローラ業者は強力で多機能なモーション・ソフトウェアを開発しています。ADLINKのマシンにそれら2つの製品を統合すれば、完璧なソリューションを実現できます。

# 4.1.3 ネットワーク・タイプのモーション制御インタフェース

ネットワーク・モーション・コントローラは最近開発されました。モータ・ドライバとモーション・コントローラ間のコマンドはアナログ信号でも、パルス信号でもなく、位置情報とモータ情報を含むネットワーク・パケットです。このタイプのコントローラはデジタル化およびパケット化されているので、高い信頼性を提供できます。モーション・コントローラはリアルタイムでなければならないので、ネットワークはサイクル時間が1 ms以下のリアルタイム機能を備えていなければなりません。MitsubishiのSSCNETネットワークはそうした速度条件に合致したネットワークの1つです。

# 4.1.4 ソフトウェア・リアルタイムのモーション制御カーネル

モーション制御カーネルに使用される方法には、DSPベース、ASICベース、ソフトウェア・リアルタイム・ベースの3つの方法があります。

モーション制御システムには完全にリアルタイムな制御サイクルが必要で、コントローラの計算は同じサイクルで制御データを提供しなければなりません。そうでない場合、モータはスムーズに動作しません。通常、これは PC の計算性能およびフィードバック・カウンタ・カード、電圧出力またはパルス出力カードを使って行われます。この方法は非常にローエンドですが、広範なソフトウェア開発が求められます。システムでリアルタイム性能を確保するためには、リアルタイム・ソフトウェアを使用しなければなりません。システムの複雑性は増しますが、この方法はプロのモーション・コントローラ開発者にとっては最も柔軟な方法です。最も一般的な方法は NC マシンによる方法です。

# 4.1.5 DSP ベースのモーション制御カーネル

DSP ベースのモーション制御カーネルはコンピュータのリアルタイム・ソフトウェアの問題を解決します。DSP はマイクロ・プロセッサで、すべてのモーション制御計算は DSP で処理されます。DSP は専用の OS を使ってすべての手順を処理するので、リアルタイム・ソフトウェアの問題はありません。また、Windows ベースのコンピュータのような他の入力の割り込みやコンテキスト・スイッチの問題もありません。DSP はリアルタイム条件に対応した完全な性能を備えていますが、その計算速度は今のところ PC の CPU ほど速くはありません。また、DSP ベース・コントローラの業者とユーザーのインタフェースを結ぶソフトウェアは使用が簡単ではありません。ユーザーが学ぶアセンブリ言語を提供するコントローラ業者もあれば、ユーザーが使用するハンドシェーク・ドキュメントだけを提供するコントローラ業者もありますが、どちらも使用するのは容易ではありません。通常、DSP ベースのコントローラはマシン・メーカーがアプリケーションを構築するソフトウェア・カーネルよりも優れた方法を提供します。

# 4.1.6 ASIC ベースのモーション制御カーネル

ASICベースのモーション制御カーネルはソフトウェアやDSPカーネルとはかなり異なります。すべてのモーション機能は ASIC が行うので、リアルタイムの問題はありません。ユーザーまたはコントローラ業者はASICが必要とする幾つかのパラメータを設定するだけで、簡単にモーション制御を実行できます。この種のモーション制御を使えば、システム統合のすべての問題は、モータ・ドライバの性能、ASICが出力するプロファイル、ベンダーのソフトウェア・パラメータとASICの関係、ユーザーのコマンドとベンダーのソフトウェアの関係の4つの分野に分類されます。ASICベースのモーション制御はモーション・コントローラがデバイス間でよりスムーズに共同作業するのに役立ちます。

# 4.1.7 モーション制御の比較表

<table><tr><td></td><td>ソフトウェア</td><td>ASIC</td><td>DSP</td></tr><tr><td>価格</td><td>*普通</td><td>安価</td><td>高価</td></tr><tr><td>機能性</td><td>最高</td><td>低</td><td>通常</td></tr><tr><td>メンテナンス</td><td>煩雑</td><td>容易</td><td>普通</td></tr></table>

\* リアルタイム OS を含む

<table><tr><td></td><td>アナログ</td><td>パルス</td><td>ネットワーク</td></tr><tr><td>価格</td><td>高</td><td>低</td><td>**通常</td></tr><tr><td>信号品質(距離参照)</td><td>普通</td><td>良</td><td>最良</td></tr><tr><td>メンテナンス</td><td>煩雑</td><td>普通</td><td>容易</td></tr></table>

\*\* DSP またはソフトウェア・リアルタイム OS が必要

# 4.1.8 PCI-8158 のモーション・コントローラ・タイプ

PCI-8158 は ASIC ベース、パルス・タイプのモーション・コントローラです。このコントローラは、モーション ASIC、PCI カード、ソフトウェア・モーション・ライブラリの 3 つのブロックから構成されます。ユーザーは Windows 2000/XP、Linux、RTX ドライバ上で ADLINK のソフトウェア・モーション・ライブラリを使ってモーション ASIC にアクセスできます。ADLINK のソフトウェア・モーション・ライブラリはモータ制御のワンストップ機能を提供します。速度パラメータの計算はすべて ADLINK のライブラリを使って行われます。

例えば、台形速度プロファイルで1軸のポイント・ツー・ポイント・モーションを実行する場合、1つの関数にターゲットの位置、速度、加速時間を入力するだけです。その後、モータはプロファイル通りに動作します。各制御サイクルのパルスは ASIC が発生するので、CPU リソースは消費されません。モーション・コントローラは希望の速度プロファイルを使って正しいパルス・カウントを送信する責任を負っているだけなので、ターゲット位置の精度はモーション・コントローラのコマンドではなく、閉ループのコントロール性能およびモータ・ドライバの機械部分に依存します。したがって、プログラマー、機械エンジニア、電気エンジニアにとって、問題を検出して解決することは一層容易になります。

# 4.2 モーション制御モード

モータ制御は正または負の動きだけのものではありません。モーション制御を使えば、モータは特定の速度プロファイル、軌跡、他の軸との同期条件に従って動作できます。以下のセクションでは、このモーション・コントローラで実行可能なモーション制御モードについて説明します。

# 4.2.1 座標系

長さの単位にはデカルト座標系とパルスが使用されます。実際の長さは機械部品およびモータの解像度に依存します。例えば、モータがスクリュー・ボールに搭載されている場合、スクリュー・ボールのピッチは10mmで、モータの回転に必要なパルスは10,000パルスになります。1パルスの実際の単位は10mm/10,000p=1マイクロ・メータに等しいと言えます。

15,000 パルスのコマンドを設定すると、モーション・コントローラは 15mm 移動します。15.0001mm 移動させるにはどうすればよいでしょうか。モーション・コントローラは 1 パルス未満の残余値を保持して、それを次のコマンドに加えます。

![Simple 2D coordinate system with X and Y axes (no plotted data or labels)](.pci-8158-50-11139-1000-200jp-en/813f230467e7ff2eb47be1a168714eaa5ca4410d4da7d185ad30f199f4087704.jpg)

モーション・コントローラは増加分のパルスをモータ・ドライバに送信します。これは、モータ・ドライバには相対コマンドだけが送信されるという意味です。ただし、この問題は現在の位置とターゲットの位置の違いを最初に計算することで解決できます。

その後、その違いをモータ・ドライバに送信します。例えば、現在の位置が1000で、モータを9000に移動させたい場合、絶対コマンドを使って、ターゲットの位置9000を設定できます。モーション・コントローラ内部では、最初に現在位置1000が取得されてから、ターゲットの位置との違いが計算されます。結果は+8000となるので、モーション・コントローラはモータ・ドライバが9000の位置に移動するように8000パルスを送信します。

マシンの位置をチャックするために、直線スケールまたは外部エンコーダを取り付けなければならないときがあります。しかし、その座標系はどのように構築すればよいでしょうか。外部エンコーダの解像度は10,000パルス/1mmであるとします。モーション・コントローラが1,000パルスを送信すると、モータは1mm動きます。したがって、1mm動かす場合は、モータ・ドライバに1,000パルス送信する必要があります。その後、エンコーダのフィードバック値は10,000パルスになります。エンコーダの現在位置の読みが3500パルスで、絶対コマンドを使ってモータを10,000パルスの位置に移動させたい場合、モータ・ドライブに何パルス送信したらよいでしょうか。答えは(10000・3500)/(10,000/1,000)=650パルスです。「移動比」が設定されている場合、モーション・コントローラはそれを自動的に計算します。「移動比」はフィードバック解像度/コマンド解像度に等しくなります。

![Based on the provided image, here is the accurate and concise description of the flowchart:\n\n**Labeled Blocks:**\n*   **Controller** (text inside a box), labeled above with **Pulses Cmd**.\n*   **Driver** (text above a tall vertical rectangular box).\n*   **Motor** (text inside a rectangular box).\n*   **Moving** (text above a block sliding on the rod, flanked by double-headed arrows).\n*   **Screw ball & guider** (text pointing to the upper threaded rod).\n*   **Encoder** (text pointing to the lower thin rod).\n\n**Connections:**\n*   An arrow connects **Controller** to **Driver**.\n*   An arrow connects **Driver** to **Motor**.\n*   An arrow connects **Motor** to the **Screw ball & guider**.\n*   An arrow connects the **Encoder** location back to the **Controller**, labeled underneath as **Pulses F/B**.](.pci-8158-50-11139-1000-200jp-en/85139f0c131226fbeba2dc31d6c8dc3a47cccc1f30cdae33429702a401063137.jpg)

# 4.2.2 絶対的および相対的位置移動

座標系のターゲット位置を特定するには、絶対コマンドと相対コマンドの2種類のコマンドがあります。絶対コマンドはモーション・コントローラに位置を与え、モーション・コントローラはモータを現在の位置からその位置に移動させます。相対コマンドはモーション・コントローラを動かす距離を指定し、モーション・コントローラはモータを現在の位置からその距離移動させます。

移動中の速度プロファイルを指定すれば、位置に到達するまでの速度を定義できます。

# 4.2.3 台形速度プロファイル

台形速度プロファイルでは、加速／減速エリアが1次直線の速度プロファイル（一定の加速率）に従います。プロファイル表は以下の通りです：

![| Time (second) | Velocity (Sold) |\n| ------------- | --------------- |\n| Tacc          | 0               |\n| MaxVel        | 1               |\n| StrVel        | 0               |\n| Tdec          | 0               |](.pci-8158-50-11139-1000-200jp-en/3443cd212814d0329bd07bd21a55670d68f32994a1e22992bd468c10872307ee.jpg)

速度プロファイルの面積はこのモーションの距離を表します。希望の距離が与えられた速度パラメータの面積よりも小さい場合、プロファイルが三角形に見えるときがあります。その場合、モーション・コントローラは最大速度を下げますが、距離条件を満たす加速率を維持します。その場合の図は以下の通りです：

![| Time (second) | Velocity (Sdd) |\n| ------------- | -------------- |\n| Tacc          | MaxVel         |\n| Tdec          | StrVel         |](.pci-8158-50-11139-1000-200jp-en/2a4856b7da5327a28869c913afe0a2512390d03ea79aef1de74556ad9a92fa34.jpg)

この種の速度プロファイルは速度モード、1 軸または複数軸の直線補間の位置モード、2 軸円形補間モードに適用されます。

# 4.2.4 S 曲線およびベル曲線速度プロファイル

S 曲線では、加速 / 減速エリアの速度プロファイルが 2 次曲線に従います。また、モータのスタートおよびストップ開始時に振動を低減できます。モーション中に加速 / 減速を拡大するには、それらのエリアに直線部分を挿入する必要があります。この形は「ベル」曲線と呼ばれます。S 曲線の上部と下部の間に直線が追加されます。この形は加速の速度を増すと共に、加速の振動を低減します。

ベル曲線のパラメータは以下のように定義されます：

![| Time (Second) | Velocity (PPS) |\n| ------------- | -------------- |\n| Tacc          | MaxVel         |\n| Tdec          | MaxVel         |\n| Tacc          | VSacc          |\n| Tdec          | VSdec          |](.pci-8158-50-11139-1000-200jp-en/fd4ea80cc9dafd6bc18ef7e9af502ae83a0e12260f3bcc96a45c7346fa0cb15e.jpg)

▶ Tacc: 加速時間（秒単位）
▶ Tdec: 減速時間（秒単位）
▶ StrVel: 初速度（PPS 单位）
▶ MaxVel: 最大速度（PPS 单位）
▶ VSacc: 加速時のベル曲線の S 曲線部分（PPS）
▶ VSdec: 減速時のベル曲線の S 曲線部分（PPS）

VSacc=0 または VSdec=0 の場合、加速または減速は直線部分のない純粋な S 曲線となります。ベル曲線の加速図は以下の通りです：

![| Time (Second) | Acc. (PPS/S) |\n| ------------- | ------------ |\n| Start         | Low          |\n| Tacc          | Low          |\n| Tdec          | High         |](.pci-8158-50-11139-1000-200jp-en/4e67a57bdb92037df76055b2122e7aabb7495232ee342cfc361d40dae9b61c8a.jpg)

S 曲線プロファイルのモーション関数は常にスムーズなモーションを発行するように設計されています。最終位置とリンクした加速度パラメータの時間が原因で、軸が最大速度に到達できない(すなわち、MaxVel に達するには距離が短すぎる）場合、最大速度は自動的に低下します。（下図参照）

通常、MaxVel および Tacc、Tdec、VSacc、VSdec の値は自動的に低下し、StrVel、加速度、加加速度は変わりません。これは台形プロファイル・モーションにも適用されます。

この種の速度プロファイルは速度モード、1 軸または複数軸の直線補間の位置モード、2 軸円形補間モードに適用されます。

![The image displays a line graph with a vertical axis labeled 'Velocity' and a horizontal axis labeled 'Time (sec)'. The graph features a solid black curve that rises from a low point, peaks, and then descends. Nested inside and below this solid curve are four dotted curves, each following a similar bell-shaped trajectory but with lower amplitudes and shorter durations, ending at progressively earlier points on the time axis.](.pci-8158-50-11139-1000-200jp-en/29e66454e5461a755ff6689a3569e1f3017659bc13e576a7357aa2474e9f8cbb.jpg)

# 4.2.5 速度モード

加速モードでは、停止コマンドが発行されるまで、パルス・コマンドが連続して出力されます。他の理由で停止されない限り、モータはターゲット位置や希望の距離に関係なく動作します。出力パルスは初速度から指定の最大速度に達するまで加速し、加速直線またはS曲線に従います。また、他の速度コマンドが設定されたり、停止コマンドが発行されたりするまで、パルス出力レートは最大速度を維持します。速度は新しい速度設定でオーバーライドできます。新しい速度に最初の動作速度と反対の速度は指定できません。この種のモーションの速度プロファイルは以下の通りです：

![| Time (Second) | Velocity (PPS) |\n| ------------- | -------------- |\n| 0             | 0              |\n| Start         | Speed Override |\n| End           | Stop function  |](.pci-8158-50-11139-1000-200jp-en/77b23faa1bf3e8b4ac9e0f142c5b109166fa535c149ba4f89ffa355307196281.jpg)

# 4.2.6 1 軸位置モード

位置モードでは、モーション・コントローラは希望の位置または距離に等しい量のパルスを出力します。距離または位置の単位はモーション・コントローラ内のパルスです。距離の最小長は1パルスです。PCI-8158では、ユーザーがパルスの実際の長さを変換できる浮動点関数を使用できます。ADLINKのソフトウェア・ライブラリでは、1パルス未満の距離をレジスタ内に保持し、次のモーション関数に適用します。ADLINKのモーション・コントローラはパルス・カウントによる位置決め以外にも、1次台形、2次S曲線、それらを混在したベル曲線の3種類の速度プロファイルを提供して、位置決めを行います。ユーザーはそれぞれの関数を呼び出して、位置決めを実行できます。距離と速度プロファイルの関係は下図の通りです：

![| Time (second) | Velocity (sppd) |\n| ------------- | --------------- |\n| Tacc          | StrVel          |\n| Tdec          | MaxVel          |](.pci-8158-50-11139-1000-200jp-en/87ddb2c779fb8eb5564e6e89659f771cb8d20637e4f284e867b8261aeacd70ca.jpg)

このプロファイルの V-t 図の面積が距離となります。

# 4.2.7 2 軸直線補間位置モード

「複数軸間の補間」では、複数軸が同時に出発し、最終地点に同時に到達します。直線では、各軸の速度比が一定です。(0,0)から(10,4)へのモーションを実行すると、直線補間の結果は下図のようになります。

![| X (Master axis) | Y (Slave axis) |\n| :--- | :--- |\n| 0 | 0 |\n| 2 | 1 |\n| 3 | 1 |\n| 5 | 2 |\n| 6 | 2 |\n| 8 | 3 |\n| 10 | 4 |\nEnd coordinates (10, 4)](.pci-8158-50-11139-1000-200jp-en/33f9d4fa1dea9db38c6cd835c4fc044a937a96c8d384229fbedfcdf488bff28e.jpg)

X 軸または Y 軸からのパルス出力は完全な直線に従って 1/2 パルスの違いを残します。直線補間の精度は以下の通りです：

![| X (Master axis) | Y (Slave axis) |\n| --------------- | -------------- |\n| 0               | 0              |\n| 2               | 1              |\n| 4               | 2              |\n| 6               | 3              |\n| 8               | 4              |\n| 10              | 4              |](.pci-8158-50-11139-1000-200jp-en/4f3c7dacf324f8afe16cea69cb088e7cf4754e063d9d957b465b0e6a4c562190.jpg)

補間グループを停止するには、グループの最初の軸に停止関数を呼び出します。

下図のように、8軸直線補間では、XYの位置がP0からP1に移動します。2つの軸は同時に出発および停止し、軌跡は直線になります。

X 軸と Y 軸の速度比は (ΔX: ΔY) で、ベクトル速度はこうなります：

![| Point | X-Axis | Y-Axis |\n|---|---|---|\n| P0(X0,Y0) | 0 | 0 |\n| P1(X1,Y1) | 1 | 0 |\n| ΔX | 0 | 0 |\n| ΔY | 1 | 0 |\nThe formula represents the derivative of the square root of ΔX / Δt. The formula is calculated as: (ΔX/Δt)² + (ΔY/Δt)².](.pci-8158-50-11139-1000-200jp-en/c332a237f6001c082648f46de666c986280834b7ec5c817d2299ed13a88a1bd9.jpg)

8 軸直線補間関数を呼び出す場合、ベクトル速度は初速度 StrVel と最大速度 MaxVel を定義する必要があります。

# 4.2.8 2 軸円形補間モード

円形補間では、XY 軸は出発点 (0,0) から同時に出発し、終点 (1800,600) で停止します。両点を結ぶ軌道は円弧で、MaxVel は接線速度です。円弧の終点が正しい位置ではない場合は停止せずに円形に移動します。

![| Point | X     | Y     |\n|-------|-------|-------|\n| Center| 1000  | 0     |\n| End   | 1800  | 600   |](.pci-8158-50-11139-1000-200jp-en/5a3f4275ca7ea20ae5f33c101984298f29c5ec620d074e264a8d80d3d8b92750.jpg)

終点が円弧の軌道上にない場合でも、モーション・コントローラはユーザーが希望する終点に移動します。ただし、終点が以下のグラフの斜線部分にないと、停止せずに円形に移動し続けます。

![B (100, 100)\n2nd phase\nA (0, 0)\nStart point\n(0,0)\n3rd phase\nCenter\n(100, 0)\n1st phase\nC (200, 0)\n4th phase\nD (100, -100)](.pci-8158-50-11139-1000-200jp-en/ba808b61d6fcd9f3d040e1c3f98b657d29ede60f115105bc985f76d055b5c1e0.jpg)

円形補間のコマンド精度は以下の通りです。誤差は半径±1/2パルスです。

![Y\nX\nSolid line : A circle of radius 11\nDotted line : A circle of radius 11±0.5](.pci-8158-50-11139-1000-200jp-en/5865140b3a256fb317690aecbb436c14653df9787919ca6acdf056bc64e41854.jpg)

# 4.2.9 連続モーション

連続モーションでは、一連のモーション・コマンドまたは位置を連続して実行できます。中断することなく、前のコマンドの直後に新しいコマンドを設定できます。モーション・コントローラには3つのコマンド・バッファ（プリレジスタ）が内蔵されているので、連続モーションが可能となります。

最初のコマンドを実行していても、2番目のコマンドを最初のバッファに、3番目のコマンドを2番目のバッファに設定できます。最初のコマンドが完了すると、モーション・コントローラは2番目のコマンドを実行レジスタに、3番目のコマンドを最初のバッファに移します。すると、2番目のバッファが空くので、4番目のコマンドを2番目のバッファに設定できます。通常、実行レジスタが完了する前に新しいコマンドを2番目のバッファに設定する時間がある場合、モーションをエンドレスで実行できます。下図は連続モーションのこの構造を示しています。

![The flowchart depicts a data processing sequence with the following labeled blocks and connections:\n\n1.  **Motion Command** connects via a rightward arrow to **2nd buffer**.\n2.  **2nd buffer** connects via a rightward arrow to **1st buffer**.\n3.  **1st buffer** connects via a rightward arrow to **Executing register**.\n4.  **Executing register** connects via a rightward arrow to **Pulse Command**.\n5.  **Empty Flag** connects via an arrow that goes up and then left, pointing towards **Motion Command**.](.pci-8158-50-11139-1000-200jp-en/4d8541591b190d861092a915670fbcbaaa7ffccc299dd7a9855a5df9ce94480d.jpg)

速度連続プロファイルを実行するには、位置コマンドに加え、速度コマンドを正しく設定しなければなりません。以下の例では、この連続モーションの3つのモーション・コマンドがあります。2番目のコマンドは他よりも高速です。これら3つのモーション関数の間の速度の相互接続は下図のように設定する必要があります：

![| Time | Velocity |\n|------|----------|\n| 1    | (1)      |\n| 2    | (2)      |\n| 3    | (3)      |](.pci-8158-50-11139-1000-200jp-en/0927f07d7957a0ecb57749f634df6b2cd38fafce8e513690d3d9de77afdf4050.jpg)

Tdecof the first command =0

StrVel of the second command = MaxVel of the first command

Taccof the third command =0

MaxVel of the third command = StrVel of the second command

2 番目のコマンドの速度値が他を下回る場合、設定は下図のようになります：

![| Time | Velocity |\n|------|----------|\n| 0    | 0        |\n| Tdec | 0        |\n| 1    | 1        |\n| 2    | 0        |\n| 3    | 1        |](.pci-8158-50-11139-1000-200jp-en/03c92aac8867a270ff374867b3a556ab1058058dda48b7e174bb45e51cfb7b62.jpg)

Taccc of the second command = 0

Tdec of the second command = 0

MaxVel of the second command = StrVel of the first command

MaxVel of the second command = StrVel of the second command

8 軸連続円弧補間でも状況は変わりません。2 つのコマンドの速度設定が合致するように速度を設定できます。

![(1000,1000) (2100,1000)\nVelocity = 1000 pps\n(2500,600)\n(2500,-600)\n(1000,-1000) (2100,-1000)\n(0,0)](.pci-8158-50-11139-1000-200jp-en/29f82c7aca24e3de0536cbb9f2b091b84d889a5056209b7623432b772af238b8.jpg)

INP チェックを有効にすると、モーションはバッファ内の各コマンド間に遅延を生じさせます。INP チェックを有効にすると、希望の地点に到達できますが、各コマンド間の円滑性は減少します。遅延を必要とせず、スムーズなモーションが必要な場合は INP チェックを無効にしてください。

# 4.2.10 原点復帰モード

原点復帰とは、座標のゼロ位置点を検索することです。座標のゼロ位置として ORG、EZ、または EL ピンを使用する場合もあります。システム起動時、プログラムはこのマシンのゼロ点を検出する必要があります。ADLINK のモーション・コントローラはゼロ点を検出する原点復帰モードをサポートしています。

ADLINK では多数の原点モードをサポートしており、各モードには多数の制御相が含まれます。それらの相は全て ASIC によって実行されます。ソフトウェアを追加する必要もなければ、CPU に負荷がかかることもありません。原点復帰が完了すると、ターゲットのカウンタは ORG 入力時のライジング・エッジといった希望の原点モードでゼロにリセットされます。モーション・コントローラはカウンタ・リセット後、マシンを減速させるためにパルスを出力し続けることがあります。モータが停止すると、カウンタはゼロ点ではないかもしれませんが、原点復帰手順は完了しています。表示されるカウンタ値は参照位置で、マシンはすでに原点復帰しています。

以下の図で様々な原点モードを紹介します。Rはカウンタ・リセット（コマンドおよび位置カウンタ）、EはERC信号出力をそれぞれ意味します。

Home mode=0: (ORG Turn ON then reset counter)
![The flowchart is titled '**When SD is not installed**'. It features horizontal tracks labeled '**ORG**', '**EL**', '**Case 1**', '**Case 2**', and '**Case 3**'. There are two blocks labeled '**R**' and '**E**'.\n\nThe connections are:\n*   A thick line from the '**Case 1**' track moves right, then up, splitting into arrows pointing to the '**R**' and '**E**' blocks.\n*   A thick line from the '**Case 2**' track moves right, ending in a vertical line that extends upwards to connect to the '**ORG**' track.\n*   A thick line from the '**Case 3**' track moves right, ending in a vertical line that extends upwards to connect to the '**EL**' track.](.pci-8158-50-11139-1000-200jp-en/410f932ed0265357be7c66070586c983128a310b8cfb83a8667ad8f0194d3f9c.jpg)

![| Case   | Time Segment | Event     |\n|--------|--------------|-----------|\n| Case 1 | Initial      | R&E       |\n| Case 2 | Initial      | R&E       |\n| Case 3 | Initial      | R&E       |\n| Case 4 | Initial      | R&E       |](.pci-8158-50-11139-1000-200jp-en/ea1f5b97c1f81c86743ba0edd14101fde5f16f7d8ddae34d4950b0d133eba462.jpg)

Home mode=1: (Twice ORG turn ON then reset counter)
![Based on the provided image, here is an accurate and concise description of the flowchart/block diagram:\n\n**Labeled Elements:**\n*   **Left Column Labels:** 'ORG', 'EL', 'Case 1', 'Case 2', 'Case 3'\n*   **Diagram Labels:** 'FA Speed', 'R&E'\n\n**Connections and Structure:**\nThe diagram is arranged as a timeline with horizontal rows and vertical grid lines.\n*   **Case 1 Row:** A thick horizontal line segment spans from the first to the second vertical grid line. The text '**FA Speed**' is written below this line. At the end of this line (at the second vertical grid line), there is a small square box. A speech-bubble box labeled '**R&E**' points an arrow to this square box.\n*   **Case 2 Row:** A thick horizontal line segment begins shortly after the second vertical grid line and ends at the third vertical grid line.\n*   **Case 3 Row:** A thick horizontal line segment begins further to the right (after the start of the Case 2 line) and ends at the third vertical grid line.](.pci-8158-50-11139-1000-200jp-en/33a4e1ccfca457767c68824c27b7a8828479009d90397f587a755f2a9676cd10.jpg)

Home mode=2: (ORG.ON then Slow down to count EZ numbers and reset counter)
![| Case   | Value |\n|--------|-------|\n| Case 1 | EZ_Count = 1 |\n| Case 2 | EZ_Count = 2 |\n| Case 3 | EZ_Count = 2 |\n| Case 4 | EZ_Count = 2 |](.pci-8158-50-11139-1000-200jp-en/e25d3307396434c10f3ffafa00046c6360499a8383f6f736e0cf82c781ce40af.jpg)

Home mode=3: (ORG On then count EZ numbers and reset counter)
![| Case   | Signal | Value |\n|--------|--------|-------|\n| Case 1 | R      | 1     |\n| Case 1 | E      | 1     |\n| Case 2 | R      | 2     |\n| Case 2 | E      | 2     |](.pci-8158-50-11139-1000-200jp-en/87068339f8af7a64547fea6dcef0ebcf62a6432ac36020195af009b47117bc80.jpg)

Home mode=4: (ORG On then reverse to count EZ number and reset counter)
![Based on the provided image, here is the description of the flowchart/block diagram:\n\n**Labeled Blocks:**\n*   ORG\n*   EZ\n*   EL\n*   Case 1\n*   Case 2\n*   Case 3\n*   Case 4\n*   R&E (appears twice)\n*   FA Speed (appears twice)\n*   (EZ Count= 1)\n*   (EZ_Count= 0)\n\n**Connections:**\n*   An arrow connects the upper **R&E** block to the **FA Speed** text located below the Case 1 pulse.\n*   An arrow connects the lower **R&E** block to the **FA Speed** text located below the Case 3 pulse area.\n*   An arrow connects the lower **R&E** block to the rising edge of the first pulse in **Case 3**.\n*   An arrow connects the falling edge of the pulse in **Case 1** to the **FA Speed** text.\n*   An arrow connects the falling edge of the pulse in **Case 2** to the **FA Speed** text.\n*   An arrow connects the falling edge of the first pulse in **Case 3** to the **FA Speed** text.](.pci-8158-50-11139-1000-200jp-en/5880f08ff8c78f1f8b055acb950511ffb40bfe4c2af88ec05e8515d5b3034311.jpg)

Home mode=5: (ORG On then reverse to count EZ number and reset counter, not using FA Speed)
![Based on the provided image, here is an accurate description of the flowchart/timing diagram:\n\n**Labeled Blocks and Signals:**\n*   **Top Waveforms:** Three signal lines labeled **ORG**, **EZ**, and **EL**.\n*   **Case Rows:** Four rows labeled **Case 1**, **Case 2**, **Case 3**, and **Case 4**.\n*   **Control Blocks:** Four gray boxes containing letters: two labeled **R** and two labeled **E**.\n*   **Condition Labels:** Text labels reading **(EZ_Count= 1)** and **(EZ_Count= 0)**.\n\n**Connections and Transitions:**\n*   **Case 1:**\n    *   An arrow from the top block labeled **R** points to the rising edge of the waveform.\n    *   An arrow from the block labeled **E** (positioned to the left) points to the falling edge of the waveform.\n    *   The label **(EZ_Count= 1)** is adjacent to this row.\n*   **Case 2:**\n    *   The row shows a high pulse waveform.\n    *   The label **(EZ_Count= 0)** is adjacent to this row.\n*   **Case 3 & 4 Sequence:**\n    *   An arrow from the lower-left block labeled **E** points to the rising edge of the waveform in Case 3.\n    *   An arrow from the bottom-right block labeled **R** points to the falling edge (transition point) of the waveform in Case 3.\n    *   The waveform in Case 3 shows a sequence of pulses that extends towards the Case 4 area, where a final pulse is depicted on the Case 4 row.](.pci-8158-50-11139-1000-200jp-en/05e0f6613c5a50dd47952c39e9eee2e65aa94f78d09119aac0ddb87367a9b1f0.jpg)

Home mode=6: (EL On then reverse to leave EL and reset counter)
![EL\nCase 1\nFA Speed\nR&E](.pci-8158-50-11139-1000-200jp-en/bae9a6f90a747e17083f22d5011ffed304c77d923baf26a5cd335f478a4ded2b.jpg)

Home mode=7: (EL On then reverse to count EZ number and reset counter)
![EZ\nEL\nCase 1\n(EZ_Count = 1)\nFA Speed\nR&E](.pci-8158-50-11139-1000-200jp-en/ae85694ef7ca5b4d68110d886b64368abfc59c7a7dc7099020bc1be536470c2a.jpg)

Home mode=8: (EL On then reverse to count EZ number and reset counter, not using FA Speed)

![EZ\nEL\nCase 1\nE\nR\n(EZ_Count = 1)](.pci-8158-50-11139-1000-200jp-en/54461204e78074051b476161d4275f728cc0ca57b9a19f8c1d754f0b1ffd7f7c.jpg)

Home mode=9: (ORG On then reverse to zero position, an extension from mode 0)

![The diagram features five horizontal rows labeled on the left as 'ORG', 'EL', 'Case 1', 'Case 2', and 'Case 3'. There are two labeled blocks: 'R' and 'E'.\n\nConnections:\n- Two arrows point from the 'EL' row to the block 'R'.\n- Two arrows point from the thick black path in the 'Case 1' row to the block 'E'.\n\nAdditionally, there are thick black paths in the 'Case 1', 'Case 2', and 'Case 3' rows, each starting from the left, extending right, and turning downwards.](.pci-8158-50-11139-1000-200jp-en/e155f4a85502f3fa6115bd913d179f83b62e25807a6cd575ab4d2e64911a852c.jpg)

Home mode=10: (ORG On then counter EZ and reverse to zero position, an extension from mode 3)
![ORG\nEZ\nEL\nCase 1\n(EZ_Count = 1)\nCase 2\nCase 3](.pci-8158-50-11139-1000-200jp-en/96980006029ecacab77ae600731e96c63d0c95d1c7a9c46a277732ef60740184.jpg)

Home mode=11: (ORG On then reverse to counter EZ and reverse to zero position, an extension from mode 5)
![Based on the provided image, which appears to be a timing diagram with overlaid annotations, here are the labeled blocks and their connections:\n\n**Labeled Blocks:**\n*   ORG\n*   EZ\n*   EL\n*   Case 1\n*   Case 2\n*   Case 3\n*   Case 4\n*   E\n*   R\n*   (EZ Count = 1)\n*   (EZ Count = 0)\n\n**Connections:**\n*   **Signal Lines:** Horizontal lines connect the labels **ORG**, **EZ**, and **EL** to their respective waveforms. Horizontal lines define the rows for **Case 1**, **Case 2**, **Case 3**, and **Case 4**.\n*   **Pointer Lines:**\n    *   A line connects block **E** (in the upper section) to the top vertex of the hexagonal shape in **Case 1**.\n    *   A line connects block **R** (in **Case 2**) to the left side of the hexagonal shape in **Case 2**.\n    *   A line connects block **E** (in **Case 2**) to the right side of the hexagonal shape in **Case 2**.\n    *   A line connects block **R** (in **Case 3**) to the start of the thick line segment in **Case 3**.\n*   **Internal Arrows:** Arrows within the thick black shapes indicate direction.\n    *   In **Case 1** and **Case 2**, arrows point along the top (right) and bottom (left) edges of the hexagonal shapes.\n    *   In **Case 3** and **Case 4**, arrows point along the top edge of the line segments (right).](.pci-8158-50-11139-1000-200jp-en/cf334e59ed35a15536b307d4430e4f88e7e74bec5a40874c2a6697969ffc44b3.jpg)

Home mode=12: (EL On then reverse to count EZ number and reverse to zero position, an extension from mode 8)

![EZ\nEL\nCase 1\n(EZ_Count = 1)\nE\nR](.pci-8158-50-11139-1000-200jp-en/813f0238e5b8a3d4cf4509eda0963f36bf26580628b8804334512d550a38870d.jpg)

# 4.2.11 原点検索機能

このモードは軸の位置に関わらず、前セクションで説明されている通常の原点復帰モードに自動検索機能を追加するのに使用されます。下図は原点検索機能を使った原点モード2の例です。ORGオフセットはゼロになり得ません。提案値はORGの面積の2倍の長さです。

![The diagram features horizontal tracks labeled **ORG**, **EL**, **Case 1**, **Case 2**, and **Case 3**.\n\n**Labeled Blocks and Elements:**\n*   Three blocks labeled **R&E**.\n*   Three shapes labeled **FA Speed**.\n*   Two labels for **ORG Offset**.\n\n**Connections:**\n*   Arrows connect each **R&E** block to its corresponding **FA Speed** shape.\n*   Horizontal lines run across the diagram corresponding to the labels on the left.\n*   Vertical dotted lines intersect the shapes and the **ORG Offset** brackets.\n*   Brackets labeled **ORG Offset** are positioned below the **Case 2** and **Case 3** sections.](.pci-8158-50-11139-1000-200jp-en/3869a4dc89dbc9d0f885478ed105e7275ef69167478ee56542f876a6bfedf54a.jpg)

# 4.2.12 手動パルス機能

手動パルスは手動でパルス・トレインを発生させる装置です。パルスはモーション・コントローラに送信されてから、パルス出力ピンに送られます。入力パルスは送出前に増幅したり、分割したりできます。

モーション・コントローラは手動パルス装置から CW/CCW と AB 相の 2 種類のパルス・トレインを受信します。AB 相の入力モードを選択すると、1 倍、2 倍、または 4 倍の選択肢が追加されます。

パルス比のブロック図は以下の通りです。

![The flowchart depicts a linear signal processing chain consisting of three main blocks arranged horizontally from left to right.\n\n**1. First Block**\n*   **Block Label:** 'CW/CCW, 1x, 2x, 4x AB'\n*   **Underlying Label:** 'Input mode setting'\n*   **Inputs:** Two arrows enter from the left labeled 'PA' and 'PB'.\n*   **Outputs:** Two arrows exit to the right labeled 'UP1' (top) and 'DOWN1' (bottom).\n\n**2. Second Block**\n*   **Block Label:** '1x to 32x'\n*   **Underlying Label:** 'PMG setting'\n*   **Inputs:** Receives connections from 'UP1' and 'DOWN1'.\n*   **Outputs:** Two arrows exit to the right labeled 'UP2' (top) and 'DOWN2' (bottom).\n\n**3. Third Block**\n*   **Block Label:** '1 to 1/2048'\n*   **Underlying Label:** 'PDV setting'\n*   **Inputs:** Receives connections from 'UP2' and 'DOWN2'.\n*   **Outputs:** Two arrows exit to the right labeled 'UP3' (top) and 'DOWN3' (bottom).\n\n**Final Destination**\n*   The arrow 'UP3' points to the text 'To internal control'.](.pci-8158-50-11139-1000-200jp-en/7f5304a7a45f0bbc67e4d31338f12071574af909cbf55f3fa82d56ae696d91c8.jpg)

# 4.2.13 同時スタート機能

同時モーションでは、複数の軸が外部信号でも、内部信号でもよい同時信号でスタートできます。外部信号では、すべての軸の移動パラメータを最初に設定しなければなりません。その後、それらの軸は外部スタート／ストップ・コマンドを待って、出発または停止します。内部信号では、スタート・コマンドはソフトウェアのスタート機能から送信されます。コマンドが発行されると、同期モードで待機しているすべての軸が同時にスタートします。

![The diagram displays a control flow on the left and corresponding graphs on the right, separated by a vertical dashed line.\n\n**Blocks and Connections:**\n*   A text label **'Start/Stop Signal'** is on the far left. A line extends from it to the right and splits into two branches.\n*   The upper branch connects to a rectangular block labeled **'Axis0'**.\n*   The lower branch connects to a rectangular block labeled **'Axis1'**.\n\n**Right Side Graphics:**\n*   Aligned with the top block, there is a graph showing a large trapezoidal shape with an arrow pointing to the right above it.\n*   Aligned with the bottom block, there is a graph showing a smaller trapezoidal shape with an arrow pointing to the right above it.](.pci-8158-50-11139-1000-200jp-en/7dbb5484b380aacc9bcd799097956ee4951d3f65d1a1affa190e35452601b8f4.jpg)

# 4.2.14 速度オーバーライド機能

速度オーバーライドでは、モーション実行時にコマンドの速度を変更できます。変更パラメータは最初に定義した速度の百分率で表されます。100%の速度値を定義してから、モーション実行時に最初の速度の百分率で速度を変更できます。ユーザーが100%の速度値を定義していない場合、デフォルトの100%の速度は最後のモーション・コマンドの最大速度になります。この機能はすべてのモーション機能に適用されます。実行モーションがS曲線またはベル曲線の場合、速度オーバーライドは純粋なS曲線になります。実行モーションがT曲線の場合、速度オーバーライドはT曲線になります。

![| Time (Second) | Speed (PPS) |\n| ------------- | ----------- |\n| Start         | 0           |\n| Peak          | 100%        |\n| Midpoint      | 50%         |\n| End           | 50%         |](.pci-8158-50-11139-1000-200jp-en/dc65045dddce5a2c6c672e77a337d646a3fc05c8931c1a38404894e9afc3c130.jpg)

# 4.2.15 位置オーバーライド機能

位置オーバーライドでは、実行中に位置決めコマンドを発行して、ターゲットの位置を変更できます。オーバーライド・コマンド発行時、新しいターゲット位置が現在の位置に隠れている場合、モータは減速して、新しいターゲット位置に反転します。新しいターゲット位置が現在の位置から同じ方向に離れている場合、モーションは速度を維持して、新しいターゲット位置に向かいます。オーバーライドのタイミングが現在のモーションの減速時で、ターゲット位置が現在の位置から同じ方向に離れている場合、モーションは最初の速度に加速して、新しいターゲット位置に向かいます。以下の図は動作の例です。新しいターゲット位置の相対パルスが最初の減速パルスを下回っている場合、この機能は正しく動作できないことに注意してください。

![The image displays three graphs plotting 'Speed' on the vertical axis against 'Time' on the horizontal axis.\n\n*   **Top Left Graph:** A solid line forms a trapezoidal profile (ramp up, plateau, ramp down). A dashed line branches off from the downward slope of the solid line, dropping steeply below the time axis (negative speed), holding a flat negative value, and then ramping back up to the axis. An arrow labeled '**Override**' points to the start of the dashed deviation. An arrow labeled '**New Pos.**' points to the end of the dashed line.\n\n*   **Top Right Graph:** A solid line forms a trapezoidal profile. A dashed line branches off from the top plateau section, dropping down to the time axis earlier than the solid line ends. An arrow labeled '**Override**' points to the top plateau. An arrow labeled '**New Pos.**' points to the end of the dashed line.\n\n*   **Bottom Graph:** A solid line forms a trapezoidal profile that has a small 'V' shaped interruption or dip in the middle. A dashed line runs underneath the profile, dropping straight down to the axis from the start of the dip. An arrow labeled '**Override**' points to the dip. An arrow labeled '**New Pos.**' points to the end of the solid line.](.pci-8158-50-11139-1000-200jp-en/5c328fe0f4d5541f2954194a426eaf6a73651bf08a2190dc756dfe1da8b0ac27.jpg)

# 4.3 モータ・ドライブのインタフェース

ADLINK はモータ・ドライブに直接接続可能で、独自の機能をもつ複数の専用 I/O を提供しています。モータ・ドライバは外部モーション・コントローラが使用可能な多数の I/O ピンを備えています。それらの I/O ピンは、パルス・コマンドやエンコーダ・インタフェースなどのパルス I/O 信号とサーボ・オン、アラーム、INP、サーボ・レディ、アラーム・リセット、緊急停止入力などのデジタル I/O 信号の 2 つのグループに分類されます。以下のセクションではそれらの I/O ピンの機能について説明します。

# 4.3.1 パルス・コマンド出力インタフェース

モーション・コントローラはパルス・コマンドを使って、モータ・ドライバからサーボ / ステッパ・モータを制御します。ドライバはパルス・トレインを位置コマンドとして受信できる位置モードに設定します。パルス・コマンドは2つの信号ペアから構成され、コネクタのOUTおよびDIRピンとして定義されます。各信号は差動出力のペアとして2つのピンを有しています。パルス出力コマンドには、（1）シングル・パルス出力モード（OUT/DIR）と（2）デュアル・パルス出力モード（CW/CCWタイプ・パルス出力）の2つの信号モードがあります。モードはモータ・ドライバのモードと同じでなければなりません。モードと OUT および DIR ピンの信号タイプの関係は下表の通りです：

シングル・パルス出力モード（OUT/DIR モード）

<table><tr><td>モード</td><td>OUT ピンの出力</td><td>DIR ピンの出力</td></tr><tr><td>デュアル・パルス出力(CW/CCW)</td><td>プラス(すなわち CW)方向のパルス信号</td><td>マイナス(すなわち CCW)方向のパルス信号</td></tr><tr><td>シングル・パルス出力(OUT/DIR)</td><td>パルス信号</td><td>方向信号(レベル)</td></tr></table>

このモードでは、OUT ピンはコマンド・パルス・チェーンの出力に使用されます。OUT パルスの番号はパルスの距離を表します。OUT パルスの周波数はパルスの秒速を表します。DIR 信号は正（+）または負（-）のコマンド方向を表します。出力波形は下図の通りです。パルス・チェーンの極性は設定可能です。

Pulse mode = 0: ( OUT pin normally high )
![OUT\nDIR (+) (-)](.pci-8158-50-11139-1000-200jp-en/57e6fc042d1aba68667251f9c1428c545d4d1a2b6020685409239b473aa5c4e7.jpg)

Pulse mode = 1: (OUT pin normally low)
![OUT\nDIR (+) (-)](.pci-8158-50-11139-1000-200jp-en/5b0434deeea7bfe311c030cbfe127f7b9c437e2ea07c73a286585ce8a255cf54.jpg)

Pulse mode = 2: (OUT pin normally high)
![OUT\nDIR (+)\n(-)](.pci-8158-50-11139-1000-200jp-en/bf3e966e9bfecd74a9ed311dbc2d70a4068dd0f1b0463117c5cc49789bcc03a9.jpg)

Pulse mode = 3: (OUT pin normally low)
![OUT\nDIR (+)\n(-)](.pci-8158-50-11139-1000-200jp-en/a832bb701032c648e1e8acd31e833d61942829519bb87cc1fd0d35017feba9ce.jpg)

# デュアル・パルス出力モード（CW/CCW モード）

このモードでは、OUT および DIR ピンの波形は CW（時計回り）および CCW（反時計回り）のパルス出力をそれぞれ表します。パルスの番号はパルスの距離を表します。パルスの周波数はパルスの秒速を表します。CW ピンのパルス出力はモータを正の方向に動かし、CCW からのパルス出力はモータを負の方向に動かします。正（+）コマンドと負（-）コマンドの出力波形は下図の通りです。

Pulse outmode = 4: (Pulse is normally high)
![OUT\nDIR\n(+)          (-)\nCW\nCCW](.pci-8158-50-11139-1000-200jp-en/1e4218e34228d3944c56c4695ee33d6dbf026b83859edd883950cf1536c8d569.jpg)

Pulse outmode = 5: ( Pulse is normally low )

![OUT\n(+)    (-)\nDIR\nCW\nCCW](.pci-8158-50-11139-1000-200jp-en/d18786ddc414e377b4237669ec3bfff9c6048de9480599f7e2b80f89a316ea60.jpg)

コマンドのパルスは 28-bit のコマンド・カウンタでカウントされます。コマンドのカウンタはコントローラからのパルス出力の合計値を保存できます。

# 4.3.2 パルス・フィードバック入力のインタフェース

ADLINK のモーション・コントローラは各軸に 1 つの 28-bit アップ / ダウン・カウンタを備えて、パルスのフィードバックをカウントします。これは位置カウンタと呼ばれます。位置カウンタはコネクタに差動信号入力用プラスおよびマイナス・ピンを備えた EA および EB 信号からのパルスをカウントします。また、デュアル・パルス入力（CW/CCW モード）と AB 相入力の 2 つのパルス・タイプを受信します。AB 相入力は 1 倍、2 倍、または 4 倍に増幅できます。インクリメンタル・エンコード入力で最も一般的に使用されるのは 4 倍 AB 相モードです。

例えば、回転エンコーダの1回転が2000パルスである場合、AB相を4倍すると、位置カウンタのカウンタ値の表示は1回転あたり8000パルスになります。

モーション・コントローラにエンコーダを使用しない場合、このカウンタのフィードバック・ソースをパルス・コマンド出力に設定してください。設定しないと、カウンタ値は常にゼロになります。カウンタのフィードバック・ソースをパルス・コマンド出力に設定すると、コマンド出力パルスからのフィードバック・パルスが内部でカウントされるので、パルス・コマンド出力カウンタの位置カウンタ値を取得できます。

上の2種類のパルス・フィードバック信号は下図ようになります。

Plus and Minus Pulses Input Mode (CW/CCW Mode)
![EA\n(+)    (-)\nEB\nCCW\nCCW](.pci-8158-50-11139-1000-200jp-en/b0b243ae4184f8e957e59ec00fc191d875024385d2f86f7eb3cbf5b05d95ff8d.jpg)

このモードのパルスのパターンは、入力ピンが EA および EB であることを除き、パルス・コマンド出力のセクションのデュアル・パルス出力モードの場合と同じです。

このモードでは、カウンタは EA ピンからのパルスでカウントアップし、EB ピンからのパルスでカウントダウンします。

# 90° 位相が異なる信号入力モード（AB 相モード）

このモードでは、EA 信号の位相は EB 信号と比較して 90° 進んでいるか、遅れています。2 つの信号の「進んでいる」または「遅れている」という位相の違いはモータの転換方向に起因します。EA 信号の位相が EB 信号の位相よりも進んでいる場合、アップ / ダウン・カウンタはカウントアップします。

波形は下図のようになります。

![EA\nEB\n(+)\nEA\nEB\n(-)](.pci-8158-50-11139-1000-200jp-en/60e7862aba077372e93844cf1c80c91544fd5155720638304d2d6d2789af326f.jpg)

インデックス入力（EZ）信号は直線または回転エンコーダのゼロ参照として使用されます。EZ はマシンの機械的ゼロ位置を定義するのに使用できます。正しい結果を得るため、信号のロジックも正確に設定してください。

# 4.3.3 インポジション信号

インポジション信号はモータ・ドライバの出力信号で、モータが事前に定義したエラーを伴って位置に到達したことをモーション・コントローラに知らせます。事前に定義したエラーの値がインポジション値です。ほとんどのモータ・ドライバはそれを INP 値と呼んでいます。モーション・コントローラが位置決めコマンドを発行すると、INP 信号がオンになるまで、モーションのビジー・ステータスは「真」を維持します。モーションのビジー・フラッグとなる INP チェックは無効にできます。INP チェックを無効にすると、すべてのパルス・コマンドの送信が終わるまで、モーションのビジーは「偽」となります。

![| Time | Position Errors | INP Signal |\n|------|-----------------|------------|\n| 0    | 0               | 0          |\n| Peak | 0.5             | 0          |\n| End  | 0               | 0          |](.pci-8158-50-11139-1000-200jp-en/80ba1b15fbdc4debad01376c4999ddcb0e934c92b3c6d8b414d3297e48f65a6d.jpg)

# 4.3.4 サーボ・アラーム信号

アラーム信号はモータ・ドライバの出力信号で、サーボ・モータやドライバ内部でエラーが発生したことをモーション・コントローラに知らせます。モーション・コントローラがこの信号を受信すると、パルス・コマンドは送信を停止し、ALM信号のステータスはオンになります。アラームの原因では、サーボ・モータのオーバー・スピード、過電流、過負荷などが考えられます。詳しくはモータ・ドライバのマニュアルを確認してください。

アラーム信号のロジックは正しく設定してください。アラーム・ロジックの設定とモータ・ドライバの設定が異なる場合、ALM ステータスは常にオンになって、パルス・コマンドは出力されません。

# 4.3.5 エラー・クリア信号

ERC 信号はモーション・コントローラの出力で、エラー・カウンタをクリアするようにモータ・ドライバに指示します。エラー・カウンタはコマンド・パルスとフィードバック・パルスの違いでカウントされます。フィードバック位置はコマンド位置よりも必ず遅れるので、それらの2つの位置の間には常にパルスの違いがあります。違いはエラー・カウンタに表示されます。モータ・ドライバはエラー・カウンタを基本的な制御インデックスに使用します。エラー・カウンタ値が大きくなるにつれ、モータ速度コマンドは高速に設定されます。エラー・カウンタがゼロの場合、ゼロのモータ速度コマンドが設定されます。

以下の 4 つの状況では、エラー・カウンタを同時にクリアするため、ERC 信号がモーション・コントローラからモータ・ドライバに自動的に出力されます。

1. 原点復帰完了時
2. エンド・リミット・スイッチ接触時
3. アラーム信号アクティブ時
4. 緊急停止コマンド発行時

# 4.3.6 サーボ・オン / オフ・スイッチ

サーボ・オン／オフ・スイッチはモーション・コントローラの汎用デジタル出力信号で、コネクタ上のSVONピンとして定義されます。また、モータ・ドライバの制御状態を切り替えるのに使用できます。同スイッチをオンにすると、ドライバの制御ループがアクティブになるので、モータはホールドされます。軸が垂直にインストールされており、サーボ信号がオフになっている場合、軸が未制御状態にになっていると、落下することがあるので注意してください。サーボ・アラームや緊急信号がオンの場合といった一部の状況でも同様です。

# 4.3.7 サーボ・レディ信号

サーボ・レディ信号はモーション・コントローラの汎用デジタル入力で、モーション・コントローラに関連した目的はありません。この信号とモータ・ドライバのRDY信号を接続すれば、モータ・ドライバがレディ状態にあるかどうか確認できます。また、モータ・ドライバの電源が入っているかどうかもチェックできます。このピンは汎用入力として他の用途で接続できますが、モーション制御に影響を与えることはありません。

# 4.3.8 サーボ・アラーム・リセット・スイッチ

サーボ・ドライバ内部に問題があると、サーボ・ドライバはアラーム信号を発行します。アラームの原因には、サーボ・モータの過電流、オーバー・スピード、過負荷などがあります。電源のリセットでアラーム・ステータスをクリアできますが、通常、実行中はサーボ・モータの電源を切りたいとは思いません。サーボ・ドライバにはユーザーがアラーム・ステータスをリセットできるピンが1つ用意されています。ADLINKのモーション・コントローラは各軸に1つの汎用出力ピンを備えています。このピンはサーボ・アラーム・ステータスのリセットに使用できます。

# 4.4 機械スイッチのインタフェース

ADLINK では、原点スイッチ（ORG）、プラスおよびマイナスのエンド・リミット・スイッチ（□）EL）、減速スイッチ（SD）、位置決め開始スイッチ（PCS）、カウンタ・ラッチ・スイッチ（LTC）、緊急停止入力（EMG）、カウンタ・クリア・スイッチ（CLR）といった機会スイッチ専用の入力ピンを提供しています。これらのスイッチの応答時間は非常に短く、数 ASIC クロック・サイクルに過ぎません。上記信号の使用時、リアルタイムの問題はありません。すべての機能はモーション ASIC によって実行されます。ソフトウェアは何もする必要がなく、必要なのは結果を待つだけです。

# 4.4.1 原点信号

ADLINK のコントローラは各軸に 1 つの原点信号を備えています。この信号は軸のゼロ位置を定義するのに使用されます。原点手順を実行する前に、信号のロジックを正しく設定しなければなりません。詳しくは原点モードのセクションを参照してください。

# 4.4.2 エンド・リミット・スイッチ信号

通常、エンド・リミット・スイッチは軸の両端に設置されます。軸の正位置にはプラス EL を、負位置にはマイナス EL を設置しなければなりません。これら 2 つの信号は安全上の理由から設置されます。反対に設置すると、保護が無効になります。モータの稼働部分がエンド・リミット信号の 1 つに接触すると、モーション・コントローラはパルスの送信を停止して、ERC 信号を出力します。これは操作を間違えたときにマシンが損傷するのを防ぎます。

# 4.4.3 減速スイッチ

減速信号はコマンド・パルスに初速度を強制的に減速させるのに使用されます。同信号は高速移動時の機械的稼働部品をメカニズムの限界から守るのに使用されます。SD 信号は正負の両方の方向で有効です。

# 4.4.4 位置決め開始スイッチ

位置決め開始スイッチは特定の位置を移動させるのに使用されます。機能は下図の通りです。

![PCS\nVelocity\nstart_tr_move and enable PCS\n(Distance = 1000)\nArea = 1000 pulse\nTime](.pci-8158-50-11139-1000-200jp-en/3ecfd871b72d2a1136ef5eaee9d42a4bbf6ec81246b4712269fdcfcd46aac988.jpg)

# 4.4.5 カウンタ・クリア・スイッチ

カウンタ・クリア・スイッチはモーション・コントローラのカウンタをリセットする入力信号です。外部コマンドによってカウンタをリセットする必要がある場合は、このピンを制御ソースに使用します。

# 4.4.6 カウンタ・ラッチ・スイッチ

カウンタ・ラッチ・スイッチはカウンタ値をレジスタに保存させる入力信号です。ある入力の投入時のカウンタ値を知る必要がある場合は、このピンを接続すれば取得できます。

# 4.4.7 緊急停止入力

ADLINK のモーション・コントローラは緊急時に備えた包括的なデジタル入力をサポートしています。入力をオンにすると、ADLINK のモーション・コントローラはマシンの損傷を防ぐため軸のすべてのモーションを直ちに停止します。通常、緊急停止ボタンはマシンのこの入力に接続します。この入力は安全上常時閉路式として使用するようお勧めします。

# 4.5 カウンタ

このモーション・コントローラの各軸には4つのカウンタがあります。このセクションではそれらのカウンタについては説明します。

▶ コマンド位置カウンタ：出力パルスの数をカウントします。
▶ フィードバック位置カウンタ：入力パルスの数をカウントします。
▶ 位置エラー・カウンタ：コマンドおよびフィードバック・パルス数の間のエラーをカウントします。
▶ 汎用カウンタ：ソースはコマンド位置、フィードバック位置、手動パルス、または ASIC クロックの半分に設定できます。
▶ ターゲット位置レコーダ：最後のモーション・コマンドのソフトウェアに記録されたターゲット位置の値

# 4.5.1 コマンド位置カウンタ

コマンド位置カウンタは 28-bit バイナリのアップ / ダウン・カウンタです。その入カソースはモーション・コントローラからの出力パルスです。コマンド位置カウンタは現在のコマンド位置の情報を提供し、モーション・システムのデバッグに役立ちます。

ADLINK のモーション・システムは開ループ式です。モータ・ドライバはモーション・コントローラからパルスを受信して、モータを駆動します。ドライバは非稼働時、このコマンド・カウンタをチェックして、更新値がないかどうか確認します。更新値がある場合、パルスが送信されていることを意味し、モータ・ドライバに問題が発生している場合があります。その場合は、モータ・ドライバのパルス受信カウンタをチェックしてください。

コマンド・カウンタの単位はパルスです。カウンタ値はカウンタ・クリア信号または原点機能でリセットできます。また、ソフトウェアのコマンド・カウンタ設定機能を使ってリセットすることもできます。

# 4.5.2 フィードバック位置カウンタ

フィードバック位置カウンタは28-bitバイナリのアップ/ダウン・カウンタです。その入カソースはEA/EBピンからの入力パルスです。フィードバック位置カウンタはモータのエンコーダ出力からのモータ位置をカウントします。外部のエンコーダ入力がない場合、このカウンタはオプションでコマンド位置のソースから設定できます。

コマンド出力パルスとフィードバック入力パルスは必ずしもミニメータで同じ比率とはなりません。それら2つのパルスが1:1ではない場合は比率を設定してください。

ADLINK のモーション・コントローラは閉ループ式ではないので、モーション稼働後、フィードバック位置カウンタは参照用に使用されるだけです。位置の閉ループはサーボ・モータ・ドライバによって実行されます。サーボ・ドライバが適切に調整されており、機械部品がよく組み合わされている場合、モーション・コマンド完了後、全体の位置エラーは受け入れ可能な範囲にとどまります。

# 4.5.3 コマンドおよびフィードバック・エラー・カウンタ

コマンドおよびフィードバック・エラー・カウンタはコマンド位置とフィードバック位置の間のエラーを計算するのに使用されます。値はフィードバック位置を差し引いて、コマンドから計算されます。

コマンドとフィードバックの比率が 1:1 ではない場合、エラー・カウンタに意味はありません。

このカウンタは 16-bit バイナリのアップ / ダウン・カウンタです。

# 4.5.4 汎用カウンタ

以下のどれも汎用カウンタのソースとなり得ます：

1. コマンド位置出力 - コマンド位置カウンタと同じ
2. フィードバック位置入力 - フィードバック位置カウンタと同じ
3. 手動パルス入力 - デフォルト設定
4. クロック・チック - タイマのカウンタ、約 9.8MHz

# 4.5.5 ターゲット位置レコーダ

ターゲット位置レコーダはターゲット位置情報を提供するのに使用されます。また、モーション・コントローラは現在のコマンドの相対パルスを計算してから結果をプリレジスタに送信するために直前のモーション・コマンドのターゲット位置と現在のモーション・コマンドのターゲット位置を知る必要があるので、ターゲット位置レコーダは連続モーションで使用されます。連続モーションの前に、ターゲット位置が現在のコマンド位置と同じかどうかを確認してください。特に、原点機能や停止機能の実行後はそうしてください。

# 4.6 コンパレータ

各軸には 5 つのカウンタ・コンパレータがあります。コンパレータには以下のような専用機能を備えています：

1. コマンド・カウンタの正ソフト・エンド・リミット・コンパレータ
2. コマンド・カウンタの負ソフト・エンド・リミット・コンパレータ
3. コマンドおよびフィードバック・エラー・カウンタのコンパレータ
4. すべてのカウンタの汎用コンパレータ
5. すべてのコマンドおよびフィードバック・カウンタのトリガ・コンパレータ

# 4.6.1 ソフト・エンド・リミット・コンパレータ

各軸のエンド・リミット機能には2つのコンパレータがあります。ADLINKではそれらをソフト・・エンド・リミット・コンパレータを呼んでいます。1つはプラスすなわち正のエンド・リミットに、もう1つはマイナスすなわち負のエンド・リミットに使用されます。エンド・リミットは動きすぎたマシンの損傷を防ぐために使用されます。実際のエンド・リミット・スイッチの代わりにソフト・リミットを使用できます。上記の2つのコンパレータはコマンド位置のカウンタを比較するだけであることに注意してください。コマンド位置が正または負のコンパレータ内部の制限設定を超えると、エンド・リミット・スイッチに接触した場合と同じように稼働を停止します。

# 4.6.2 コマンドおよびフィードバック・エラー・カウンタのコンパレータ

このコンパレータはコマンドおよびフィードバック・カウンタ・エラーにのみ使用されます。このコンパレータを使えば、エラーの深刻さを確認できます。また、条件に合致した場合のアクションを設定できます。アクションには、割り込み発生、直ちに停止、減速して停止などが含まれます。

# 4.6.3 汎用コンパレータ

汎用コンパレータを使えば、比較するソースを選択できます。ソースはコマンド、フィードバック位置カウンタ、エラー・カウンタ、または汎用カウンタから選択できます。比較方法は、方向を含む、または含まない、イコール、以上、以下から選択できます。また、条件合致時のアクションは割り込み発生や停止モーションなどから選択できます。

# 4.6.4 トリガ・コンパレータ

トリガ・コンパレータは汎用コンパレータとよく似ています。トリガ・コンパレータは条件合致時にトリガ・パルスを発生させる機能が追加されています。条件が合致すると、コネクタのCMPピンはカメラに写真をとらせるように特定目的のパルスを出力します。すべての軸がこの機能を有しているとは限りません。軸にCMPピンがあるかどうかによります。下図はトリガの例です。

![v\nt\n1 2 3 4 5 6\nCCD\nCamera\nTrigger Output](.pci-8158-50-11139-1000-200jp-en/f644476393b8c012591d93c725c30efc19dbbff4f6ea7da2a00d4b06a861eb4e.jpg)

このアプリケーションでは、テーブルはモーション・コマンドで制御され、CCDカメラはCMPピンで制御されます。比較位置に達すると、パルスが出力され、画像がキャプチャされます。これはオン・ザ・フライによる画像のキャプチャです。モーション軌道にある画像をさらに取得したい場合は、直前の画像のキャプチャ直後に新しい比較点を設定してください。この方法で連続画像のキャプチャも可能となります。

# 4.7 その他のモーション機能

ADLINK のモーション・コントローラは上記の機能以外にも、バックラッシュ補正、スリップ補正、振動抑制、速度プロファイルの計算といった多数の機能を備えています。以下のセクションではそれらの機能について説明します。

# 4.7.1 バックラッシュ補正およびスリップ補正

モーション・コントローラはバックラッシュ補正およびスリップ補正機能を備えています。上記機能はFA速度のコマンド・パルスの数を出力します。バックラッシュ補正は動作中方向が変更されるたびに実行されます。スリップ補正は方向に関係なく、モーション・コマンドの前に実行されます。パルスの補正量は関数ライブラリから設定できます。

# 4.7.2 振動抑制機能

モーション・コントローラの振動抑制は、モーション・コマンド完了直後に、反対方向のパルスを1つ追加してから、前進方向のパルスを1つ追加する方法によって行われます。それら2つのダミー・パルスのタイミングは以下の図の通りです：（RTは逆進時間、FTは前進時間）

![(+) Direction\n(-) Direction\nFinal Pulse\nRT/2\nFT/2\nRT\nFT](.pci-8158-50-11139-1000-200jp-en/0ba2dd650428aeb7f6207bf2666b064c7ec186c8d4439f8825df5a8e75793b1d.jpg)

# 4.7.3 速度プロファイルの計算機能

ADLINK のモーション関数ではユーザーが幾つかの速度パラメータを設定しなければなりません。速度プロファイルと衝突するパラメータもあります。例えば、モーション関数に非常に高速なプロファイルと非常に短い距離を入力する場合、それらのパラメータに対応した速度プロファイルは存在しません。その場合、モーション・ライブラリは加速および減速率を維持し、ユーザーからの最大速度を下げて、実行可能な速度プロファイルを自動的に再構成します。そのしくみは下図の通りです。

![| Time (second) | Velocity (pps) |\n| ------------- | -------------- |\n| Tacc          | 0              |\n| Tdec          | 0              |\n| MaxVel        | 10             |\n| NewMaxVel     | 10             |\n| NewTacc       | 0              |\n| NewTdec       | 0              |](.pci-8158-50-11139-1000-200jp-en/af4deb094e39509e6e1e28a415ebeaa8b40bf8b0dedc8f1e4e2d3596ba57ef76.jpg)

ADLINK のモーション・ライブラリには、ユーザーからのコマンドの実際の速度プロファイルを検出するための一連の関数が用意されています。

# 4.8 割り込み制御

モーション・コントローラはホスト PC に割り込み信号を出力できます。イベント・トリガのソフトウェア・アプリケーションではそれは非常に役立ちます。この関数 \_8158\_int\_control() を使えば、割り込みサービスを使用するかどうかを設定できます。

PCI-8158 には、モーション割り込みソース、エラー割り込みソース、GPIO 割り込みソースの 3 種類の割り込みソースがあります。モーション割り込みソースと GPIO 割り込みソースはマスカブルですが、エラー割り込みソースはマスカブルではありません。モーション割り込みソースは\_8158\_set\_motion\_int\_factor()でマスカブルとなります。そのマスク・ビットは以下の表の通りです：

モーション割り込みソースのビット設定

<table><tr><td>ビット</td><td>説明</td></tr><tr><td>0</td><td>常時停止</td></tr><tr><td>1</td><td>バッファ内の次のコマンドを開始</td></tr><tr><td>2</td><td>コマンド・プリレジスタ 2 はエンプティで、次のコマンドの書き込みが可能</td></tr><tr><td>3</td><td>0</td></tr><tr><td>4</td><td>加速開始</td></tr><tr><td>5</td><td>加速終了</td></tr><tr><td>6</td><td>減速開始</td></tr><tr><td>7</td><td>減速終了</td></tr><tr><td>8</td><td>+ ソフト・リミットまたはコンパレータ 1 がオン</td></tr><tr><td>9</td><td>- ソフト・リミットまたはコンパレータ 2 がオン</td></tr><tr><td>10</td><td>エラー・コンパレータまたはコンパレータ 3 がオン</td></tr><tr><td>11</td><td>汎用コンパレータまたはコンパレータ 4 がオン</td></tr><tr><td>12</td><td>トリガ・コンパレータまたはコンパレータ 5 がオン</td></tr><tr><td>13</td><td>CLR 入力でカウンタをリセット</td></tr><tr><td>14</td><td>LTC 入力でカウンタをラッチ</td></tr><tr><td>15</td><td>ORG 入力でカウンタをラッチ</td></tr><tr><td>16</td><td>SD 入力がオン</td></tr><tr><td>17</td><td>0</td></tr><tr><td>18</td><td>0</td></tr><tr><td>19</td><td>CSTA 入力または _8158_start_move_all() がオン</td></tr><tr><td>20-31</td><td>0</td></tr></table>

Table 4-1: モーション割り込みソースのビット設定

エラー割り込みソースはマスク不可ですが、タイムアウトにならない限り、状況のエラー数は\_8158\_wait\_error\_interrupt()の応答コードから取得できます。

エラー割り込みの応答コード

<table><tr><td>値</td><td>説明</td></tr><tr><td>0</td><td>+ ソフト・リミットがオン、軸停止</td></tr><tr><td>1</td><td>- ソフト・リミットがオン、軸停止</td></tr><tr><td>2</td><td>コンパレータ 3 がオン、軸停止</td></tr><tr><td>3</td><td>汎用コンパレータまたはコンパレータ 4 がオン、軸停止</td></tr><tr><td>4</td><td>トリガ・コンパレータまたはコンパレータ 5 がオン、軸停止</td></tr><tr><td>5</td><td>+ エンド・リミットがオン、軸停止</td></tr><tr><td>6</td><td>- エンド・リミットがオン、軸停止</td></tr><tr><td>7</td><td>ALM 発行、軸停止</td></tr><tr><td>8</td><td>CSTP がオンまたは _8158_stop_move_all がオン、軸停止</td></tr><tr><td>9</td><td>CEMG がオン、軸停止</td></tr><tr><td>10</td><td>SD 入力オン、軸は減速して停止</td></tr><tr><td>11</td><td>0</td></tr><tr><td>12</td><td>補間動作エラー、停止</td></tr><tr><td>13</td><td>軸は他の軸のエラー停止で停止</td></tr><tr><td>14</td><td>パルス入力バッファがオーバーフローで停止</td></tr><tr><td>15</td><td>補間カウンタのオーバーフロー</td></tr><tr><td>16</td><td>エンコーダ入力信号エラーでも、軸は停止しない</td></tr><tr><td>17</td><td>パルス入力信号エラーでも、軸は停止しない</td></tr><tr><td>11-31</td><td>0</td></tr></table>

Table 4-2: エラー割り込みの応答コード

GPIO 割り込みソースはマスカブルです。マスク・ビットは下図の通りです：

GPIO 割り込みソースのビット設定（1=有効、0=無効）

<table><tr><td>ビット</td><td>説明</td></tr><tr><td>0</td><td>DIO のフォーリング・エッジ</td></tr><tr><td>1</td><td>DI1 のフォーリング・エッジ</td></tr><tr><td>2</td><td>DI2 のフォーリング・エッジ</td></tr><tr><td>3</td><td>DI3 のフォーリング・エッジ</td></tr><tr><td>4</td><td>DIO のライジング・エッジ</td></tr><tr><td>5</td><td>DI1 のライジング・エッジ</td></tr><tr><td>6</td><td>DI2 のライジング・エッジ</td></tr><tr><td>7</td><td>DI3 のライジング・エッジ</td></tr><tr><td>8</td><td>ピン 23 の入力割り込み</td></tr><tr><td>9</td><td>ピン 57 の入力割り込み</td></tr><tr><td>10</td><td>ピン 23/57 の割り込みボード指定(0= フォーリング、1= ライジング)</td></tr><tr><td>11-14</td><td>0</td></tr><tr><td>15</td><td>GPIO の割り込みスイッチ(常時 =1)</td></tr></table>

Table 4-3: GPIO 割り込みソースのビット設定

割り込み使用の手順は以下の通りです：

1. \_8158\_int\_control(CARD\_ID, 有効=1/無効=0) を使用します;
2. イベントまたは GPIO 割り込みの割り込みソースを設定します。
3. \_8158\_set\_motion\_int\_facor(AXISO, 0x01); // Axis0 は常時停止
4. \_8158\_set\_gpio\_int\_factor(CARD0, 0x01); // DI0 のフォーリング・エッジ
5. \_8158\_wait\_motion\_interrupt(AXISO, 0x01, 1000) // 常時停止割り込みを 1000ms 待機
6. \_8158\_wait\_gpio\_interrupt(CARD0, 0x01, 1000) // DIO のフォーリング・エッジ割り込みを 1000ms 待機
7. I16 ErrNo=\_8158\_wait\_error\_interrupt(AXISO, 2000); // エラー割り込みを 2000ms 待機

# 4.9 マルチ・カード動作

モーション・コントローラは1つのシステムで複数のカードを使用可能にします。モーション・コントローラはPlug & Play対応なので、カードのベース・アドレスとIRQ設定はシステム起動時にPCI BIOSによって自動的に割り当てられます。リソースの設定や設定の変更は不要です。

1 つのシステムで複数のカードを使用している場合、カードの番号に注意しなければなりません。カード番号はボードのカード ID のスイッチ設定に依存しています。軸番号はカード ID に依存します。例えば、PCI スロットに 3 枚のモーション・コントローラ・カードが接続されており、対応するカード ID が設定されている場合、それぞれのカードの軸番号は以下のようになります：

<table><tr><td>Card ID\No.\Axis</td><td>X</td><td>Y</td><td>Z</td><td>U</td><td>A</td><td>B</td><td>C</td><td>D</td></tr><tr><td>0</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td></tr><tr><td>2</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td></tr><tr><td>3</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td><td>31</td></tr></table>

複数のカードのカード ID が同じ場合は正しく機能しません。

# 5 MotionCreatorPro

ハードウェアの取り付け（2 章および 3 章）後、すべてのカードを正しく設定して、実行の前に、システムをダブルチェックする必要があります。この章では、制御システムを構築し、8158 カードを手動でテストして正しい動作を検証するためのガイドラインを提供します。MotionCreatorPro ソフトウェアは、8158 カードを使用するモーション制御システムのセットアップ、設定、テスト、デバッグのためのシンプルで強力な手段を提供します。

MotionCreatorPro はスクリーン解像度が 1024x768 以上の Windows 2000/ XP でのみ使用できます。推奨スクリーン解像度は 1024x768 です。DOS 環境では使用できません。

# 5.1 MotionCreatorPro の実行

8158 用ソフトウェア・ドライバを Windows 2000/ XP にインストールすると、MotionCreatorPro のプログラムはく指定したパス >¥PCI-Motion¥MotionCreatorPro にコピーされます。プログラムを実行するには、実行可能ファイルをダブルクリックするか、スタート >プログラム >PCI-Motion>MotionCreatorPro を使用してください。

# 5.2 MotionCreatorPro について

MotionCreatorPro を実行する前に、以下の問題に留意してください。

1. MotionCreatorPro は VB.NET 2003 で作成されたプログラムなので、スクリーン解像度が 1024×768 以上の Windows 2000/XP でのみ使用できます。DOS 上では使用できません。
2. 2.MotionCreatorPro を使えば、8158 カードの設定や構成を保存できます。保存された設定は MotionCreatorPro の次回実行時に自動的にロードされます。Windows ルート・ディレクトリ内の 8158.ini と 8158MC.ini の 2 つのファイルはすべての設定および構成を保存するのに使用されます。
3. 他のシステムに設定をコピーするには、8158.iniと8158MC.iniをWindowsのルート・ディレクトリにコピーしてください。
4. MotionCreatorPro が保存した同じ設定ファイルを複数の8158カードが使用する場合、ユーザー開発プログラムにDLL関数呼び出し\_8158\_config\_from\_file()を呼び出すことができます。この関数はDOS環境でも使用できます。

# 5.3 MotionCreatorPro の形式の紹介

# 5.3.1 メイン・メニュー

MotionCreatorPro を実行すると、メイン・メニューが表示されます。選択メニューの使用方法は以下の通りです：

![Reload all Menu\nOpen Help menus (refer to section 5.3.8)\nExit MotionCreatorPro\nFile TreeView\nFile ADLINK\nBox Motion\nPC1-0150\nBackface\nCat 0\nAxis 0\nAxis 1\nAxis 2\nAxis 3\nAxis 4\nAxis 5\nAxis 6\nAxis 7\nPosition\n1 - User Operate\n2 - User Operate\n2D-Matrix\nCard Information\nBase Address (HDQ):\nIRQ Level:\nVersion Information:\nHardware version:\nLibrary version:\nDriver version:](.pci-8158-50-11139-1000-200jp-en/3fb1298969cc3098c474f078bb63aae4802635b44b2b116a36465084500d03d3.jpg)

# 5.3.2 選択メニュー

MotionCreatorPro を実行すると、選択メニューが表示されます。選択メニューの使用方法は以下の通りです：

- Select operating card and axis
- Open Card Information Menu (refer to section 5.3.3)
- Open Configuration Menu (refer to section 5.3.4)
- Open Single Axis Operation Menu (refer to section 5.3.5)
- Open Two-Axis Operation Menu (refer to section 5.3.6)
- Open 2D\_Motion Menu (refer to section 5.3.7)
- Show card information. Related function are : \_8158\_get\_version (0),
- Version Information

![frmTreeView\nADLINK\nMotion\nPCI-8158\nHardware\nCard 0\nAxis 0\nAxis 1\nAxis 2\nAxis 3\nAxis 4\nAxis 5\nAxis 6\nAxis 7\nFunctions\n1-Axes Operate\n2-Axes Operate\n2D-Motion\nCard Information :\nBase Address (HEX) : 0\nIRQ Level : 0\nVersion Information :\nHardware version : 1001\nLibrary version : 1\nDriver version : 3](.pci-8158-50-11139-1000-200jp-en/719c315322dd946261f3011684156bf52c679b309314ad038b5ff4b8d5d7d3d8.jpg)

# 5.3.3 カード情報メニュー

このメニューはこのカードに関する情報を表示します。

![Green printed circuit board with various electronic components and connectors (no visible text or symbols)](.pci-8158-50-11139-1000-200jp-en/fab4772ae53364856df6ca18bf19877d3511b7366fd93ee09a2fff5515375148.jpg)

# 5.3.4 設定メニュー

このメニューでは、ALM、INP、ERC、EL、ORG、EZを設定できます。

![Configuration\nPCI-8158 Card no : Card 0 Axis no : Axis 0\nIO_Config_1 | IO_Config_2 | Pulse & INT_Config\nServo Motor Signal\nALM\nLogic\nActive Low\nActive High\nResponse Mode\nStop immediately\nDec. to Stop\nINP\nLogic\nActive Low\nActive High\nEnable/Disable\nDisable INP\nEnable INP\nFRC\nLogic\nActive Low\nActive High\nActive Timing\n12 us\n102 us\n409 us\n1.6 ms\n13 ms\n52 ms\n104 ms\nMech Signal\nEL\nEnable/Unable\nDisable EL Enable EL\nAction\nInterrupt only if INT factor is set\nStop immediately\nSlow then stop\nChange Operation Data to pre-regiate\nResponse Mode\nStop immediate Dec. to Stop\nSoft_limit\nPLUS_Limit = 0\nNEG_Limit = 0\nORG\nLogic\nActive Low 5 Active High\nEZ\nLogic\nActive Low 6 Active High\nNext Card\nNext Axis\n7 Save Config\nClose](.pci-8158-50-11139-1000-200jp-en/22ec0548fc68df6cd7e062079ae54bb868c695ed729287576371acf896f3445e.jpg)

1. ALM のロジックおよび応答モード: ALM 信号のロジックと応答モードを選択します。関係する関数呼び出しは \_8158\_set\_alm() です。
2. INP のロジックとオン / オフの選択: ロジックを選択し、INP 信号を使用するかどうかを指定します。関係する関数呼び出しは \_8158\_set\_inp() です。
3. ERC のロジックとアクティブ・タイミング: ERC 信号のロジックとアクティブ・タイミングを選択します。関係する関数呼び出しは \_8158\_set\_erc() です。
4. EL の応答モード: EL 信号の応答モードを選択します。関係する関数呼び出しは \_8158\_set\_limit\_logic() です。
5. ORG のロジック : ORG 信号のロジックを選択します。関

係する関数呼び出しは \_8158\_set\_home\_config() です。

6. EZ のロジック : EZ 信号のロジックを選択します。関係する関数呼び出しは \_8158\_set\_home\_config() です。

7. ボタン：

▷ Next Card（次のカード）：操作するカードを変更します。
▷ Next Axis（次の軸）：操作する軸を変更します。
▷ Save Config（設定を保存）: 現在の設定を 8158.ini および 8158MC.ini に保存します。
▷ Close（閉じる）：メニューを閉じます。

このメニューでは、LTC、SD、PCS、Select\_Input を設定できます。

![Configuration\nPCI-8158 Card no : Card 0 Axis no : Axis 0\nIO_Config_1 IO_Config_2 Pulse & INT_Config\nMech Signal\nLTC\nLogic\nActive Low 1 Active High\nLatch_source\nActive Low 2 Active High\nSD\nEnable/Disable Logic\nDisable SD Active Low 3 PCS\nEnable SD Active High\nResponse Mode SD Latch\nSlow Down On Active Low 4 CLR\nSlow Down Active High 5 EMO\nPCS\nLogic\nActive Low 4 Active High\nSelect_Input\nSet_gpio_input\n0 DI 3 PCS\n1 LTC 4 CLR\n2 SD 5 EMO\nLogic\nActive L 6\nActive High\nNext Card\nNext Axis\n7\nSave Config\nClose](.pci-8158-50-11139-1000-200jp-en/ea884c11e9ceaa838efa5782bb3a9ac68435b984b9f75724645ab1c0b9c7b50d.jpg)

1. LTC のロジック: LTC 信号のロジックを選択します。関係する関数呼び出しは \_8158\_set\_ltc\_logic() です。
2. LTCのlatch\_source: latch\_source信号のロジックを選択します。関係する関数呼び出しは\_8158\_set\_latch\_source()です。
3. SD 設定：SD 信号を設定します。関係する関数呼び出しは \_8158\_set\_sd() です。
4. PCSのロジック: SelectNo信号のロジックを選択します。関係する関数呼び出しは\_8158\_set\_pcs\_logic()です。
5. Gpio 入力の設定 : Gpio 入力の設定を選択します。関係する関数呼び出しは \_8158\_set\_gpio\_input\_function です。
6. Gpio のロジック : Gpio のロジックを選択します。関係する関数呼び出しは \_8158\_set\_gpio\_input\_function です。

# 7. ボタン：

▷ Next Card（次のカード）：操作するカードを変更します。
▷ Next Axis（次の軸）：操作する軸を変更します。
▷ Save Config（設定を保存）：現在の設定を 8158.ini および 8158MC.ini に保存します。
▷ Close（閉じる）：メニューを閉じます。

このメニューでは、パルス入力／出力、移動比、INT ファクタを設定します。

![Configuration\nPCI-8158 Card no : Card 0 Axis no : Axis 0\nIO_Config_1 IO_Config_2 Pulse & INT_Config\nPulse Output Setting\nOUT/DIR -- OUT is falling edge, DIR+ is high level\nOUT/DIR -- OUT is rising edge, DIR+ is high level\nOUT/DIR -- OUT is falling edge, DIR+ is low level\nOUT/DIR -- OUT is rising edge, DIR+ is low level\nCWCCW Falling edge\nCWCCW Rising edge\nINT Factor\nBit 0 □ Normal Stop\nBit 1 □ Next Command Continued\nBit 2 □ Writing to the 2nd pre-register\nBit 4 □ Acceleration Start\nBit 5 □ Acceleration End\nBit 6 □ Deceleration Start\nBit 7 □ Deceleration End\nBit 10 □ Position Error Occur\nBit 11 □ General Comparator Compared\nBit 12 □ Compare Trigger for Axie 0,1\nBit 14 □ Latch for Axie 2,3\nBit 15 □ ORO On\nBit 16 □ SD On\nPulse Input Setting\nSource\nEncoder (External) □ Pulse Output (Internal)\nMove Ratio (Feedback/Command) = 1\nMode\n1X A/B Phase □ 4X A/B Phase\n2X A/B Phase □ CW / CCW\nLogic\nDo Not Inverse Direction □ Inverse the Direction\nNext Card\nNext Axis\nSave Config\nClose](.pci-8158-50-11139-1000-200jp-en/5fa5de007824350d77e9d93ed63f88a0234332c31a801dee9da2ad3b69223bc7.jpg)

1. パルス出力モード：パルス信号（OUT/DIR）の出力モードを選択します。関係する関数呼び出しは\_8158\_set\_pls\_outmode()です。
2. パルス入力：パルス入力信号（EA/EB）を設定します。関係する関数呼び出しは \_8158\_set\_pls\_iptmode(), \_8158\_set\_feedback\_src() です。
3. INT ファクタ：イベント割り込みを発生させるファクタを選択します。関係する関数呼び出しは\_8158\_set\_int\_factor()です。
4. ボタン：

▷ Next Card（次のカード）：操作するカードを変更します。
▷ Next Axis（次の軸）：操作する軸を変更します。
▷ Save Config（設定を保存）：現在の設定を 8158.ini および

8158MC.ini に保存します。

▷ Close（閉じる）：メニューを閉じます。

# 5.3.5 Single Axis Operation（1 軸動作）メニュー

このメニューでは、選択した軸の速度モード・モーション、プリセットされた相対／絶対モーション、手動パルス移動、原点復帰などの設定を変更できます。

![Single Axis Operation\nPCI-8158 Card no : Card 0 Axis no : Axis 0\nPosition Status\nCommand 0\nFeedback = 0\nPos Error = 0\nTarget Pos= 0\nOperation Mode\nAbsolute\nMode Relative\nMode Cont.\nMove Manual\nPulse Move Home\nMode\n7\nPosition1 Distance Repeat Mode ATII\n5000 9 Control ON set_fa_speed\nPosition2 10 Trapezion S-curve FA\n11\nSet Position\nPosition: 0 Set Position\nAxis Status\nMotion status:\nNormal stopped motion\n3\nINT Status\nSet Factor bit No= 0\nNormal INT 4\nError INT\nOPIO INT\nVelocity 5 (fps)\nShow Cuts\nSpeed Parameter\nStart Velocity(pps) : 0\nMaximum Velocity(pps) : 10000\nAccel. Time(sec) : 3 SVacc(pps) : 0\nDecel. Time(sec) : 3 SVdec (pps) : 0\nMove Delay (sec) : 0\nSpeed Profile\n14\nDigital I/O Play key\nDI DO Servo On 16 Low STOP\nHigh Forward Move Backward Move 17 18 Next Card\nNext Axis Save Config Close](.pci-8158-50-11139-1000-200jp-en/cf0741d1e88864ee2abd619e8dea1e6581273aa224315d59f513a4fd0a3cc59c.jpg)

# 1. 位置：

Command（コマンド）：コマンド・カウンタの値を表示します。関係する関数は\_8158\_get\_command()です。
▷ Feedback（フィードバック）：フィードバック位置カウンタの値を表示します。関係する関数は\_8158\_get\_position()です。
▷ Pos Error（位置エラー）: 位置エラー・カウンタの値を表示します。関係する関数は \_8158\_get\_error\_counter() です。
▷ Target Pos（ターゲット位置）：ターゲット位置レコー

ダの値を表示します。関係する関数は

\_8158\_get\_target\_pos() です。

2. 位置のリセット：このボタンをクリックすると、すべての位置決めカウンタが特定の値に設定されます。関係する関数は以下の通りです：

\_8158\_set\_position()

\_8158\_set\_command()

\_8158\_reset\_error\_counter()

\_8158\_reset\_target\_pos()

3. モーション・ステータス：\_8158\_motion\_done 関数の応答値を表示します。関係する関数は \_8158\_motion\_done() です。

4. INT ステータス：

▷ int\_factor bit no (int\_factor のビット数) : int\_factor のビットを設定します。
Normal INT（通常 INT）：通常時の INT ステータスを表示します。関係する関数は \_8158\_wait\_motion\_interrupt() です。
▷ Error INT（エラーINT）：エラー時のINTステータスを表示します。関係する関数は\_8158\_wait\_error\_interrupt()です。
▷ GPIO INT: GPIO の INT ステータスを表示します。関係する関数は \_8158\_wait\_error\_interrupt() です。

5. Velocity（速度）: PPS 単位の速度の絶対値。関係する関数は \_8158\_get\_current\_speed() です。

6. 速度曲線表示ボタン：このボタンをクリックすると、速度と時間の曲線を表示するウィンドウが開きます。この曲線では、100msごとに新しい速度データ点が追加されます。ウィンドウを閉じるには、同じボタンを再度クリックします。データをクリアするには、曲線上をクリックします。

![| x    | y      |\n| ---- | ------ |\n| 0    | 0      |\n| 100  | -5000  |\n| 200  | 0      |\n| 300  | 3750   |\n| 400  | 5000   |\n| 500  | 5000   |](.pci-8158-50-11139-1000-200jp-en/ac76a5680e0a0d712a61446d0bc7d0feb5c208ffae705c52cae3409a34b2b985.jpg)

7. Operation Mode (動作モード): 動作モードを選択します。

Absolute Mode（絶対モード）：「Position1（位置1）」と「Position2（位置2）」はモーションの絶対テーゲット位置に使用されます。関係する関数は\_8158\_start\_ta\_move(), \_8158\_start\_sa\_move()です。
▷ Relative Mode（相対モード）：「Distance（距離）」はモーションの相対変位に使用されます。関係する関数は \_8158\_start\_tr\_move(), \_8158\_start\_sr\_move() です。
Cont. Move（連続移動）：速度のモーション・モード。関係する関数は \_8158\_tv\_move(), \_8158\_start\_sv\_move() です。
▷ Manual Pulse Move（手動パルス・モーション）：手動パルス・モーション。このボタンをクリックすると、手動パルス設定のウィンドウが開きます。

![To Set the Pulse\ninput mode\nTo Set the Pulse\ninput logic\nHemmel Pulsor Configurations\n1X A/B Phase 4X A/B Phase\n2X A/B Phase CW / CDW\nLogic\nInverse the Direction Do Not Inverse Direction\nClose](.pci-8158-50-11139-1000-200jp-en/3309274a566a52f2499426ed407a716c6cb6a721ae7acef4956aea75e065ae24.jpg)

Home Mode（原点モード）：原点復帰モーション。このボタンをクリックすると、原点移動設定のウィンドウが開きます。関係する関数は \_8158\_set\_home\_config() です。「ATU」のチェックボックスをオンにすると、モーション開始時に自動原点復帰を実行します。

▷ ERC Output（ERC 出力）：原点移動完了時、ERC 信号を送信するかどうかを指定します。
▷ EZ Count（EZ カウント）：特定の原点復帰モードで有効な EZ カウント数を設定します。
▶ Mode（モード）: 原点復帰モードを選択します。13 のモードが用意されています。
Home Mode figure（原点モード図）：個々の原点モードの動作を説明する図が表示されます。
▷ Close（閉じる）：このボタンをクリックすると、このウィンドウが閉じます。

![Home Move Configuration\nERC Output\nOutput when finished\nNot Output\nEZ Count\nCount = 0\nMode\n0 1 2 3 4 5 6 7 8 9 10 11 12\nFigure\nhome_mode=0: ORO → Slow down → Stop\n● When SD(Ramp-down signal) is inactive.\nORO\nEL\nCase 1\nCase 2\nCase 3\nReset\n● When SD(Ramp-down signal) is active.\nORO\nSD\nEL\nCase 1\nCase 2\nCase 3\nReset\nORG Distance 10000 Close](.pci-8158-50-11139-1000-200jp-en/2d474084a6eaba41e9099f24e3ddaf2d8cc1153586e6158ebe319f83b004ac03.jpg)

8. Position（位置）：「Absolute Mode（絶対モード）」の絶対位置を設定します。これは「Absolute Mode（絶対モード）」選択時のみ有効です。
9. Distance（距離）：「Relative Mode（相対モード）」の相対距離を設定します。これは「Relative Mode（相対モード）」選択時のみ有効です。
10. Repeat Mode（繰り返しモード）：「On（オン）」を選択すると、モーションは繰り返しモード（前進&lt;-&gt;逆進ま

たは位置 1&lt;-&gt;位置 2)になります。これは「Relative Mode（相対モード）」または「Absolute Mode（絶対モード）」選択時のみ有効です。

11. Vel. Profile（速度プロファイル）：速度プロファイルを選択します。「Absolute Mode（絶対モード）」、「Relative Mode（相対モード）」、「Cont. Move（連続移動）」では Trapezoidal（台形）と S-Curve（S 曲線）が使用できます。
12. FA Speed/ATU（FA 速度 /ATU）: FA 速度を設定します。関係する関数呼び出しは \_8158\_set\_fa\_speed() です。「ATU」のチェックボックスをオンにすると、モーション開始時に自動原点復帰を実行します。
13. Motion Parameters（モーション・パラメータ）: 1 軸モーションのパラメータを設定します。速度と移動距離はパルス入力によって決定されるので、「Manual Pulse Move（手動パルス移動）」が選択されている場合、このパラメータは無効になります。

▷ Start Velocity（初速度）：モーションの初速を PPS 単位で設定します。値は「Absolute Mode（絶対モード）」または「Relative Mode（相対モード）」でのみ有効です。例えば、-100.0 は 100.0 と同じです。「Cont. Move（連続移動）」では、値と符号の両方が有効になります。-100.0 はマイナス方向の 100.0 を意味します。
▷ Maximum Velocity（最大速度）：モーションの最大速度を PPS 単位で設定します。値は「Absolute Mode（絶対モード）」または「Relative Mode（相対モード）」でのみ有効です。例えば、-5000.0 は 5000.0 と同じです。「Cont. Move（連続移動）」では、値と符号の両方が有効になります。-5000.0 はマイナス方向の 5000.0 を意味します。
Accel. Time（加速時間）：加速時間を秒単位で設定します。
▷ Decel. Time（減速時間）：減速時間を秒単位で設定します。
▷ SVacc: 加速時の S 曲線の範囲を PPS 単位で設定します。
▷ SVdec: 減速時の S 曲線の範囲を PPS 単位で設定します。
▶ Move Delay（移動遅延）：この設定は繰り返しモードが

「On（オン）」に設定されている場合のみ有効です。その場合、8158は次のモーションに移る前に、指定時間待機します。

14. Speed\_Profile: このボタンをクリックすると、速度プロファイルが表示されます。

![| Metric       | Value   |\n| ------------ | ------- |\n| Mode         | relative |\n| Vmax         | 1999    |\n| Vmin         | 1       |\n| VSvacc       | 9999    |\n| VSvdec       | 9999    |\n| Tacc         | 0.29330200195 |\n| Tx           | 2.20680833846 |\n| Tdec         | 0.29330200195 |\n| Distance     | 50000   |](.pci-8158-50-11139-1000-200jp-en/16c247d9e01c79ca213210b859495783d331b88db1793e29a8bf9127445380a9.jpg)

15. Digital I/O（デジタル I/O）：デジタル I/O の表示と設定。

関係する関数は
\_8158\_get\_gpio\_output(),\_8158\_get\_gpio\_input(),
\_8158\_set\_gpio\_output()です。

16. Servo On（サーボ・オン）: SVON 信号の出力ステータスを設定します。関係する関数は \_8158\_set\_servo() です。

17. Play Key（再生キー）：

左再生キー: このボタンをクリックすると、8158は直前の設定に従ってパルスの出力を開始します。

▷ 「Absolute Mode（絶対モード）」では、軸が position1（位置 1）に移動します。
▷ 「Relative Mode（相対モード）」では、軸が前進します。
▷ 「Cont. Move（連続移動）」では、軸は速度設定に従って移動を開始します。
▷ 「Manual Pulse Move（手動パルス移動）」では、軸はパルス移動に入ります。速度制限は「Maximum Velocity（最大速度）」で設定された値です。

右再生キー: このボタンをクリックすると、8158は直前の設定に従ってパルスの出力を開始します。

▷ 「Absolute Mode（絶対モード）」では、軸が position1（位置 1）に移動します。
▷ 「Relative Mode（相対モード）」では、軸が後退します。
▷ 「Cont. Move（連続移動）」では、軸は速度設定に従って逆方向に移動を開始します。
▷ 「Manual Pulse Move（手動パルス移動）」では、軸はパルス移動に入ります。速度制限は「Maximum Velocity（最大速度）」で設定された値です。

18. Stop（停止）ボタン：このボタンをクリックすると、8158は減速して停止します。減速時間は「Decel. Time（減速時間）」で定義されます。関係する関数は\_8158\_sd\_stop()です。

19. I/O Status (I/O ステータス): モーション I/O の状態。点灯はアクティブ状態、消灯は非アクティブ状態を表します。関係する関数は \_8158\_get\_io\_status() です。

20. ボタン：

▷ Next Card（次のカード）：操作するカードを変更します。
▷ Next Axis（次の軸）：操作する軸を変更します。
▷ Save Config（設定を保存）: 現在の設定を 8158.ini および 8158MC.ini に保存します。
▷ Close（閉じる）：メニューを閉じます。

# 5.3.6 Two-Axis Operation（2 軸動作）メニュー

このメニューでは、2つの選択した軸の速度モード・モーションやプリセットされた相対／絶対モーションなどの設定を変更できます。

![8158 Two-Axis Operation\nCard 0 Axis 0\nStart Velocity(pps) : 0\nMaximum Velocity(pps) : 20000\nMove Delay (sec) : 0\nTacc(sec) : 0.5 Sacc(pps : 0\nTdec(sec) : 0.5 Sdec(pps : 0\nMode\nRelative 4 Distance : 100000 Next Card\nPosition1: 5000 Position2: 100000 Next Axis\nDriver Status\nRDY ALM +EL -EL ORO DIR DIO PCS ERC EZ CLR LTC SD INP SVON\nCard 0 Axis 0 Motion status: Normal stopped condition\nCard 0 Axis 1\nStart Velocity(pps) : 0\nMaximum Velocity(pps) : 10000\nMove Delay (sec) : 0\nTacc(sec) : 1 Sacc(pps) : 0\nTdec(sec) : 1 Sdec(pps) : 0\nMode\nRelative Distance : 20000\nPosition1: 10000 Position2: 30000 Next Card\nDriver Status\nRDY ALM +EL -EL ORO DIR EMG PCS ERC EZ CLR LTC SD INP SVON\nCard 0 Axis 1 Motion status: Normal stopped condition\nOperate\nPPS Velocity Profile Axis 0: Axis 1:\n20000\n15000\n10000\n5000\n-5000\n-10000\n-15000\n-20000\nAxis 0\nCurrent Position 10\nVelocity 1\n(( +\nSTOP - ))\nAxis 1\nCurrent Position 20000 Velocity 0\n(( +\nSTOP - ))\nAxis0 Reset\nAxis1 Reset\nClearPlots\nSave Config\nClose](.pci-8158-50-11139-1000-200jp-en/1fe3f25dfe061bf5b0f85a7eaee78093c60fd24ce5ce107b73b14a37ddfeed62.jpg)

1. Motion Parameters（モーション・パラメータ）: 1 軸モーションのパラメータを設定します。速度と移動距離はパルス入力によって決定されるので、「Manual Pulse Move（手動パルス移動）」が選択されている場合、このパラメータは無効になります。

▷ Start Velocity（初速度）：モーションの初速を PPS 単位で設定します。値は「Absolute Mode（絶対モード）」または「Relative Mode（相対モード）」でのみ有効です。例えば、-100.0 は 100.0 と同じです。
▷ Maximum Velocity（最大速度）：モーションの最大速度を PPS 単位で設定します。値は「Absolute Mode（絶対

モード)」または「Relative Mode（相対モード）」でのみ有効です。例えば、-5000.0は5000.0と同じです。

▷ Tacc: 加速時間を秒単位で設定します。
▷ Tdec: 減速時間を秒単位で設定します。
▷ Sacc: 加速時の S 曲線の範囲を PPS 単位で設定します。
▷ Sdec: 減速時の S 曲線の範囲を PPS 単位で設定します。

2. Repeat Mode（繰り返しモード）：「On（オン）」を選択すると、モーションは繰り返しモード（前進&lt;-&gt;逆進または位置1&lt;-&gt;位置2)になります。これは「Relative Mode（相対モード）」または「Absolute Mode（絶対モード）」選択時のみ有効です。
3. Vel. Profile（速度プロファイル）：速度プロファイルを選択します。「Absolute Mode（絶対モード）」、「Relative Mode（相対モード）」、「Cont. Move（連続移動）」では Trapezoidal（台形）と S-Curve（S 曲線）が使用できます。
4. Operation Mode (動作モード): 動作モードを選択します。

Absolute Mode（絶対モード）：「Position1（位置1）」と「Position2（位置2）」はモーションの絶対テーゲット位置に使用されます。関係する関数は\_8158\_start\_ta\_move(), \_8158\_start\_sa\_move()です。

▷ Relative Mode（相対モード）：「Distance（距離）」はモーションの相対変位に使用されます。関係する関数は \_8158\_start\_tr\_move(), \_8158\_start\_sr\_move() です。

5. Distance（距離）：「Relative Mode（相対モード）」の相対距離を設定します。これは「Relative Mode（相対モード）」選択時のみ有効です。
6. Position（位置）：「Absolute Mode（絶対モード）」の絶対位置を設定します。これは「Absolute Mode（絶対モード）」選択時のみ有効です。
7. ボタン:

▷ Next Card（次のカード）: 操作するカードを変更します。

▷ Next Axis（次の軸）：操作する軸を変更します。

8. I/O Status (I/O ステータス): モーション I/O の状態。点灯はアクティブ状態、消灯は非アクティブ状態を表します。関係する関数は\_8158\_get\_io\_status()です。

9. モーション・ステータス：\_8158\_motion\_done 関数の応答値を表示します。関係する関数は \_8158\_motion\_done() です。

10. Current Position（現在位置）：

Command（コマンド）：コマンド・カウンタの値を表示します。関係する関数は\_8158\_get\_position()です。

11. Velocity（速度）: PPS 単位の速度の絶対値。関係する関数は \_8158\_get\_current\_speed() です。

12. Play Key（再生キー）：

左再生キー: このボタンをクリックすると、8158は直前の設定に従ってパルスの出力を開始します。

▷ 「Absolute Mode（絶対モード）」では、軸が position1（位置 1）に移動します。

▷ 「Relative Mode（相対モード）」では、軸が前進します。

右再生キー: このボタンをクリックすると、8158は直前の設定に従ってパルスの出力を開始します。

▷ 「Absolute Mode（絶対モード）」では、軸が position2（位置 2）に移動します。

▷ 「Relative Mode（相対モード）」では、軸が後退します。

Stop（停止）ボタン：このボタンをクリックすると、8158は減速して停止します。減速時間は「Decel.Time（減速時間）」で定義されます。関係する関数は\_8158\_sd\_stop()です。

13. ボタン：

▷ Axis0 Reset（Axis0 のリセット）：このボタンをクリックすると、選択した軸のすべての位置決めカウンタがゼロに設定されます。関係する関数は以下の通りです：

```txt
_8158_set_position()
_8158_set_command()
_8158_reset_error_counter()
```

\_8158\_reset\_target\_pos()

> Axis1 Reset (Axis1 のリセット): このボタンをクリックすると、選択した軸のすべての位置決めカウンタがゼロに設定されます。
▷ ClearPlots: モーション・グラフをクリアします。
▷ Save Config（設定を保存）: 現在の設定を 8158.ini および 8158MC.ini に保存します。
▷ Close（閉じる）：メニューを閉じます。

# 5.3.7 2D\_Motion メニュー

操作ウィンドウの 2-D ボタンを押すと、このウィンドウに入ります。これは 2-D モーションのテストに使用されます。内容は以下の通りです：

▶ 直線補間
▶ 円形補間
▶ インクリメンタル・ジョグ
▶ 連続ジョグ
▶ その他の制御対象

![) Card 0 : Axis 0 (X) , Axis 1 (Y)\nSetting | Motion Graph |\nJog Type\nIncremental Continuous\nOperation Mode\nRelative\nJog Setting\nStart Speed 100\nMax Speed 1000\nAcc. Time 0.1\nDIR\nCW COW\nVol. Profile\nTrapezone S-curve\nSpeed Parameters\nStart Speed (pps) 0 Max Speed (pps) 10000\nTacc Time (sec) 1 Succ(pps) 0\nTdec Time (sec) 1 Sdec(pps) 0\nSet Distance End Pos\nDistance X: -10000\nDistance Y: -10000\nSet Center\nDis Center X: 0\nDis Center Y: 0\nCurrent Position\nX 12\nY 12\nClear\nCenter\nGraph Range\nXRang\nYRang\nOrigin Position\nX Org. Shift\nY Org. Shift\nLock\nLock\nHome\nForward\nBack\n13\n9 x+\ny-\nSpeed\nx 10 0\nY 0\nMotion status\nx Normal stopped condition\nY Normal stopped condition\nCommand\nX 11 0\nY 0\nClear Conn.\nPlay key\nStop\nNext Card\nSave config\nClose](.pci-8158-50-11139-1000-200jp-en/81b4300e14bc9205750fd8317070c896f82def52e8b0a97d2c1955095a3ad5a6.jpg)

1. Jog Type（ジョグ・タイプ）：

Continuous Jog（連続ジョグ）：連続ジョグでは、方向ボタンを押すと、軸は速度を上げて連続移動します。

押している時間が長いほど、速度が速くなります。ボタンを放すと、軸は直ちに停止します。

![Jog Command\nY+\nX-\nY-\nX+](.pci-8158-50-11139-1000-200jp-en/947ea829f7a6163521a4c53ab65be78fc406afef8cf813a6dd81cdc7fce1b467.jpg)

▶ Incremental Jog（インクリメンタル・ジョグ）：インクリメンタル・ジョグでは、方向ボタンをクリックすると、軸は Step-Size（ステップ・サイズ）設定に従って一定の距離をステップします。

![The image displays the text 'Step' positioned above the text 'Size' on the left side. To the right of this text is a small rectangular input box containing the number '5'.](.pci-8158-50-11139-1000-200jp-en/bd7d0241c7e59cb3a256052134ec3f4bb2d9bf85cbe12499fb3a5d2a4721b49d.jpg)

2. Jog Setting（ジョグ設定）: 1 軸モーションのパラメータを設定します。速度と移動距離はパルス入力によって決定されるので、「Jog Mode（ジョグモード）」が選択されている場合、このパラメータは無効になります。

▷ Start Velocity（初速度）: モーションの初速を PPS 単位で設定します。
▷ Maximum Velocity（最大速度）：モーションの最大速度を PPS 単位で設定します。
▷ Tacc: 加速時間を秒単位で設定します。

3. Operation Mode (動作モード): 動作モードを選択します。

Absolute Mode（絶対モード）：「直線補間モード」が選択されている場合、「Position（位置）」はモーションの絶対ターゲット位置に使用されます。「円形補間モード」が選択されている場合は、「ABS EndPos」と「ABS Center」がモーションの絶対ターゲット位置に使用されます。関係する関数は \_8158\_start\_ta\_move(), \_8158\_start\_sa\_move() です。

▷ Relative Mode（相対モード）：「直線補間モード」が選択されている場合、「Distance（距離）」はモーションの絶対ターゲット位置に使用されます。「円形補間モード」が選択されている場合は、「Dis EndPos」と「Dis Center」がモーションの絶対ターゲット位置に使用されます。関係する関数は \_8158\_start\_tr\_move(), \_8158\_start\_sr\_move() です。

4. DIR: 円弧、CW/CCW の指定した距離。「円形補間モード」選択時のみ有効です。

5. Vel. Profile（速度プロファイル）：速度プロファイルを選択します。「直線補間モード」と「円形補間モード」では Trapezoidal（台形）と S-Curve（S 曲線）の両方が使用できます。

6. Motion Parameters（速度パラメータ）: 1 軸モーションのパラメータを設定します。速度と移動距離はパルス入力によって決定されるので、「直線補間モード」または「円形補間モード」が選択されている場合、このパラメータは無効になります。

▷ Start Velocity（初速度）：モーションの初速を PPS 単位で設定します。
▷ Maximum Velocity（最大速度）：モーションの最大速度を PPS 単位で設定します。
Accel. Time（加速時間）：加速時間を秒単位で設定します。
Decel. Time（減速時間）：減速時間を秒単位で設定します。
▷ SVacc: 加速時の S 曲線の範囲を PPS 単位で設定します。
▷ SVdec: 減速時の S 曲線の範囲を PPS 単位で設定します。

7. Set Distance/End Pos（距離／終点位置の設定）：「直線補間モード」では絶対ターゲット位置または相対距離を設定します。「円形補間モード」では円弧の終点位置を設定します。「直線補間モード」と「円形補間モード」で使用できます。

8. Set Center（中心の設定）：「円形補間モード」で中心の位置を設定します。これは「円形補間モード」選択時のみ有効です。

9. Jog Command（ジョグ・コマンド）：方向ボタンを押すと移動します。

![Jog Command\nY+\nX-\nY-\nX+](.pci-8158-50-11139-1000-200jp-en/e722420395da5947b84f145fcc7bd030a14757e4df07ffffa4615eeb889660f1.jpg)

10. Velocity（速度）: PPS 単位の速度の絶対値。関係する関数は \_8158\_get\_current\_speed() です。
11. Interpolation Command（補間コマンド）：

Command（コマンド）：コマンド・カウンタの値を表示します。関係する関数は\_8158\_get\_command()です。

12. Current Position（現在位置）：
▷ Feedback（フィードバック）：フィードバック位置カウンタの値を表示します。関係する関数は\_8158\_get\_position()です。
13. Home Mode（原点モード）：原点復帰モーション。このボタンをクリックすると、原点移動設定のウィンドウが開きます。関係する関数は\_8158\_set\_home\_config()です。このウィンドウの左下には2つの原点復帰ボタンが用意されています。これは原点に復帰する必要がある場合に役立ちます。
14. モード：

▷ Linear Interpolation（直線補間）：「Motion Parameters Setting Frame（モーション・パラメータ設定フレーム）」でモーションのパラメータを正しく設定した後、このフレームに移動先を入力できます。その後、Run（実行）ボタンをクリックすると、直線補間モーションがスタートします。

▶ Circular Interpolation（円形補間）：円形補間モードの設定では、「Motion Parameters Setting Frame（モーションン・パラメータ設定フレーム)」に、円弧角度、分割軸、最適化オプションの3つのパラメータを追加できます。設定方法についてセクション6.7および6.8を参照してください。

上記パラメータ設定後、「Play Key Frame（再生キー・フレーム）」に円弧の中心と角度を入力できます。Run（実行）ボタンをクリックすると、円形補間モーションがスタートします。

Jog Type（ジョグ・タイプ）: Continuous Jog（連続ジョグ）

![Jog Command\nY+\nX-\nY-\nX+](.pci-8158-50-11139-1000-200jp-en/25611b18e733d238ee6a033b7c3b1fe284593ff40fb823191ad4077959d982da.jpg)

連続ジョグでは、方向ボタンを押すと、軸は速度を上げて連続移動します。押している時間が長いほど、速度が速くなります。ボタンを放すと、軸は直ちに停止します。

Incremental Jog（インクリメンタル・ジョグ）：インクリメンタル・ジョグでは、方向ボタンをクリックすると、軸は Step-Size（ステップ・サイズ）設定に従って一定の距離をステップします。

![The image displays a grey rectangular interface element. On the left side, the text 'Step' is stacked vertically above the text 'Size'. To the right of this text is a white, rectangular input field containing the number '5'.](.pci-8158-50-11139-1000-200jp-en/78476b2d6a0ac5ea7f976dcc4b87f9d54cb203519a842dbff3505db4922458f0.jpg)

15. モーション・ステータス：\_8158\_motion\_done 関数の応答値を表示します。関係する関数は \_8158\_motion\_done() です。
16. Play Key（再生キー）：

再生ボタン：このボタンをクリックすると、8158は直前の設定に従ってパルスの出力を開始します。

▷ 「Linear Mode（直線モード）」では、軸が Distance（距離）に移動します。関係する関数は
\_8158\_start\_tr\_move\_xy, \_8158\_start\_sr\_move\_xy です。
▷ 「Circular Mode（円形モード）」では、軸は Distance（距離）（Pos/Dist（パルス）によって）に移動します。関係する関数は \_8158\_start\_tr\_arc\_xy, \_8158\_start\_sr\_arc\_xy です。

▶ Stop（停止）ボタン：このボタンをクリックすると、8158は減速して停止します。減速時間は「Decel.Time（減速時間）」で定義されます。関係する関数は\_8158\_sd\_stop()です。

# 17. ボタン：

▷ Next Card（次のカード）：操作するカードを変更します。
Save Config（設定を保存）: 現在の設定を 8158.ini および 8158MC.ini に保存します。

▷ Close（閉じる）：メニューを閉じます。

![) Card 0 : Axis 0 (X) , Axis 1 (Y)\nSetting   Motion Graph |\n28\n24\n20\n16\n12\n8\n4\n0\n-4\n-8\n-12\n-16\n-20\n-24\n-28\nx1000\nJog Command\nHome\n○ X    Forward\n○ Y    Backward\nMode\n○ Linear\n○ Circular    Step Size\n○ Jog    50\nSpeed                 Motion status\nX      0      X    Normal stopped condition\nY      0      Y    Normal stopped condition\nCommand                  Play key\nX      10000\nY      -10000\nClear Conn.\nPlay key\nRun\nStop\nCurrent Position\nX      10000\nY      -10000\nClear Pos.\nNext Card\nSave Config\nClose\nClear\n18\nCenter\nGraph Range\nXRang     19\nYRang     ✓ Lock\nOrigin Position\nX Org. Shift     ✓\nY Org. Shift     ✓ Lock](.pci-8158-50-11139-1000-200jp-en/5fed0fb5bddaa88e9953aed94c66550f57806951d92006cb56df6e9f2eab0ef1.jpg)

18. Graph Range Frame（グラフ範囲フレーム）：

▷ Clear（クリア）: モーション・グラフをクリアします。
▷ Center（中心）：モーション・グラフを中心位置に表示します。

19. Graph Range（グラフ範囲）: X または Y 軸の表示範囲を制御します。

20. Origin Position（原点位置）：ユーザーによる表示位置のパンを可能にします。

# 5.3.8 Help（ヘルプ）メニュー

このメニューでは、マウスを右クリックしてヘルプ情報を表示できます。

![FormHelp\nfor you, please check the formula = 0 items.\nif following: (1) if you have your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your code to get your code from your type.](.pci-8158-50-11139-1000-200jp-en/fb93c523ae91d9a8808ac82877ecfb9b2f347938077c239b84c47ea80fca85e5.jpg)

# 6 関数ライブラリ

この章ではPCI-8158カードの対応ソフトウェアについて説明します。それらの関数を使えば、C、C++、または Visual Basic でプログラムを開発できます。プログラミング環境に Delphi を使用する場合は、ヘッダ・ファイルと pci\_8158.h を手動で変換する必要があります。

# 6.1 関数のリスト

システムおよび初期化、セクション 6.3

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_initial</td><td>カードの初期化</td></tr><tr><td>_8158_close</td><td>カードの終了</td></tr><tr><td>_8158_get_version</td><td>ハードウェアおよびソフトウェア・バージョンの確認</td></tr><tr><td>_8158_set_security_key</td><td>セキュリティ・パスワードの設定</td></tr><tr><td>_8158_check_security_key</td><td>セキュリティ・パスワードの確認</td></tr><tr><td>_8158_reset_security_key</td><td>セキュリティ・パスワードをデフォルト値にリセット</td></tr><tr><td>_8158_config_from_file</td><td>ファイルからPCI-8158を設定</td></tr></table>

パルス入力 / 出力設定、セクション 6.4

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_pls_outmode</td><td>パルス・コマンドの出力モードを設定</td></tr><tr><td>_8158_set_pls_iptmode</td><td>エンコーダの入力モードを設定</td></tr><tr><td>_8158_set_feedback_src</td><td>カウンタの入カソースを設定</td></tr></table>

速度モード・モーション、セクション 6.5

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_tv_move</td><td>台形プロファイルで軸を一定の速度に加速</td></tr><tr><td>_8158_sv_move</td><td>S 曲線プロファイルで軸を一定の速度に加速</td></tr><tr><td>_8158_sd_stop</td><td>減速して、停止</td></tr><tr><td>_8158_emg_stop</td><td>直ちに停止</td></tr><tr><td>_8158_get_current_speed</td><td>現在の速度(パルス/秒)を取得</td></tr><tr><td>_8158_speed_override</td><td>オン・ザ・フライで速度を変更</td></tr><tr><td>_8158_set_max_override_speed</td><td>最大オーバーライド速度を設定</td></tr></table>

1 軸位置モード、セクション 6.6

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_start_tr_move</td><td>相対台形プロファイル移動を開始</td></tr><tr><td>_8158_start_ta_move</td><td>絶対台形プロファイル移動を開始</td></tr><tr><td>_8158_start_sr_move</td><td>相対 S 曲線プロファイル移動を開始</td></tr><tr><td>_8158_start_sa_move</td><td>絶対 S 曲線プロファイル移動を開始</td></tr><tr><td>_8158_set_move_ratio</td><td>コマンド・パルスとフィードバック・パルスの比を設定</td></tr><tr><td>_8158_position_override</td><td>オン・ザ・フライで位置を変更</td></tr></table>

直線補間モーション、セクション 6.7

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_start_tr_move_xy</td><td>台形プロファイルでXおよびYの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_ta_move_xy</td><td>台形プロファイルでXおよびYの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_sr_move_xy</td><td>S曲線プロファイルでXおよびYの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_sa_move_xy</td><td>S曲線プロファイルでXおよびYの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_tr_move_zu</td><td>台形プロファイルでZおよびUの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_ta_move_zu</td><td>台形プロファイルでZおよびUの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_sr_move_zu</td><td>S曲線プロファイルでZおよびUの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_sa_move_zu</td><td>ZおよびUのS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_move_ab</td><td>台形プロファイルでAおよびBの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_ta_move_ab</td><td>台形プロファイルでAおよびBの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_sr_move_ab</td><td>S曲線プロファイルでAおよびBの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_sa_move_ab</td><td>AおよびBのS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_move_cd</td><td>台形プロファイルでCおよびDの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_ta_move_cd</td><td>台形プロファイルでCおよびDの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_sr_move_cd</td><td>S曲線プロファイルでCおよびDの相対2軸直線補間を開始</td></tr><tr><td>_8158_start_sa_move_cd</td><td>S曲線プロファイルでCおよびDの絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_tr_line2</td><td>4軸の任意の2軸に対して台形プロファイルで相対2軸直線補間を開始</td></tr><tr><td>_8158_start_ta_line2</td><td>4軸の任意の2軸に対して台形プロファイルで絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_sr_line2</td><td>4軸の任意の2軸に対してS曲線プロファイルで相対2軸直線補間を開始</td></tr><tr><td>_8158_start_sa_line2</td><td>4軸の任意の2軸に対してS曲線プロファイルで絶対2軸直線補間を開始</td></tr><tr><td>_8158_start_tr_line3</td><td>4軸の任意の3軸に対して台形プロファイルで相対3軸直線補間を開始</td></tr><tr><td>_8158_start_ta_line3</td><td>4軸の任意の3軸に対して台形プロファイルで絶対3軸直線補間を開始</td></tr><tr><td>_8158_start_sr_line3</td><td>4軸の任意の3軸に対してS曲線プロファイルで相対3軸直線補間を開始</td></tr><tr><td>_8158_start_sa_line3</td><td>4軸の任意の3軸に対してS曲線プロファイルで絶対3軸直線補間を開始</td></tr><tr><td>_8158_start_tr_line4</td><td>4軸の任意の4軸に対して台形プロファイルで相対4軸直線補間を開始</td></tr><tr><td>_8158_start_ta_line4</td><td>4軸の任意の4軸に対して台形プロファイルで絶対4軸直線補間を開始</td></tr><tr><td>_8158_start_sr_line4</td><td>4軸の任意の4軸に対してS曲線プロファイルで相対4軸直線補間を開始</td></tr><tr><td>_8158_start_sa_line4</td><td>4軸の任意の4軸に対してS曲線プロファイルで絶対4軸直線補間を開始</td></tr></table>

円形補間モーション、セクション 6.8

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_start_tr_arc_xy</td><td>X および Y の T 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_xy</td><td>X および Y の T 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_xy</td><td>X および Y の S 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_xy</td><td>X および Y の S 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_zu</td><td>Z および U の T 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_zu</td><td>Z および U の T 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_zu</td><td>Z および U の S 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_zu</td><td>Z および U の S 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_ab</td><td>A および B の T 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_ab</td><td>A および B の T 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_ab</td><td>A および B の S 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_ab</td><td>A および B の S 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_cd</td><td>C および D の T 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_cd</td><td>C および D の T 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_cd</td><td>C および D の S 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_cd</td><td>C および D の S 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc2</td><td>4 軸の任意の 2 軸に対して T 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc2</td><td>4 軸の任意の 2 軸に対して T 曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc2</td><td>4 軸の任意の 2 軸に対して S 曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc2</td><td>4 軸の任意の 2 軸に対して S 曲線絶対円形補間を開始</td></tr></table>

原点復帰モード、セクション 6.9

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_home_config</td><td>原点 / インデックス・ロジックの設定</td></tr><tr><td>_8158_home_move</td><td>原点復帰アクションの開始</td></tr><tr><td>_8158_home_search</td><td>原点自動検索を実行</td></tr></table>

手動パルス・モーション、セクション 6.10

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_pulser_iptmode</td><td>パルス入力モードの設定</td></tr><tr><td>_8158_disable_pulser_input</td><td>パルス入力を無効にする</td></tr><tr><td>_8158_pulser_vmove</td><td>パルスのV移動を開始</td></tr><tr><td>_8158_pulser_pmove</td><td>パルスのP移動を開始</td></tr><tr><td>_8158_set_pulser_ratio</td><td>手動パルス比を実際の出力パルス速度に設定</td></tr></table>

モーション・ステータス、セクション 6.11

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_motion_done</td><td>モーション・ステータスを返す</td></tr></table>

モーション・インタフェース I/O、セクション 6.12

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_servo</td><td>SVON 信号のオン / オフ状態を設定</td></tr><tr><td>_8158_set_pcs_logic</td><td>PCS(位置変更信号)のロジックを設定</td></tr><tr><td>_8158_set_pcs</td><td>PCS の位置オーバーライドを可能にする</td></tr><tr><td>_8158_set_clr_mode</td><td>CLR 信号のモードを設定</td></tr><tr><td>_8158_set_inp</td><td>INP 信号のロジックおよび動作モードを設定</td></tr><tr><td>_8158_set_alm</td><td>ALM 信号のロジックおよび動作モードを設定</td></tr><tr><td>_8158_set_erc</td><td>ERC 信号のロジックおよびタイミングを設定</td></tr><tr><td>_8158_set_erc_out</td><td>ERC 信号を出力</td></tr><tr><td>_8158_clr_erc</td><td>ERC 信号をクリア</td></tr><tr><td>_8158_set_sd</td><td>SD 信号のロジックおよび動作モードを設定</td></tr><tr><td>_8158_enable_sd</td><td>SD 信号を使用する</td></tr><tr><td>_8158_set_limit_logic</td><td>EL 信号のロジックを設定</td></tr><tr><td>_8158_set_limit_mode</td><td>EL の動作モードを設定</td></tr><tr><td>_8158_get_io_status</td><td>8158 のすべてのモーション I/O を取得</td></tr></table>

割り込む制御、セクション 6.13

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_int_control</td><td>INT サービスを使用するかどうかを設定</td></tr><tr><td>_8158_wait_error_interrupt</td><td>エラー関連割り込みの待機</td></tr><tr><td>_8158_wait_motion_interrupt</td><td>モーション関連割り込みの待機</td></tr><tr><td>_8158_set_motion_int_factor</td><td>モーション関連割り込みのファクタを設定</td></tr></table>

ポジション制御およびカウンタ、セクション6.14

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_get_position</td><td>フィードバック位置カウンタの値を取得</td></tr><tr><td>_8158_set_position</td><td>フィードバック位置カウンタの設定</td></tr><tr><td>_8158_get_command</td><td>コマンド位置カウンタの値を取得</td></tr><tr><td>_8158_set_command</td><td>コマンド位置カウンタの設定</td></tr><tr><td>_8158_get_error_counter</td><td>位置エラー・カウンタの値を取得</td></tr><tr><td>_8158_reset_error_counter</td><td>位置エラー・カウンタをリセット</td></tr><tr><td>_8158_get_general_counter</td><td>汎用カウンタの値を取得</td></tr><tr><td>_8158_set_general_counter</td><td>汎用カウンタの設定</td></tr><tr><td>_8158_get_target_pos</td><td>ターゲット位置レコーダの値を取得</td></tr><tr><td>_8158_reset_target_pos</td><td>ターゲット位置レコーダをリセット</td></tr><tr><td>_8158_get_res_distance</td><td>モーションから蓄積された残存パルスを取得</td></tr><tr><td>_8158_set_res_distance</td><td>残存パルス記録の設定</td></tr></table>

位置比較およびラッチ、セクション 6.15

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_trigger_logic</td><td>CMP 信号のロジックを設定</td></tr><tr><td>_8158_set_error comparator</td><td>エラー・コンパレータの設定</td></tr><tr><td>_8158_set_general comparator</td><td>汎用コンパレータの設定</td></tr><tr><td>_8158_set_trigger comparator</td><td>トリガ・コンパレータの設定</td></tr><tr><td>_8158_set_latch_source</td><td>カウンタのラッチ・タイミングの設定</td></tr><tr><td>_8158_set_ltc_logic</td><td>LTC 信号のロジックを設定</td></tr><tr><td>_8158_get_latch_data</td><td>ラッチ・データの取得</td></tr></table>

連続モーション、セクション 6.16

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_continuous_move</td><td>絶対モーションの連続モーションを有効にする</td></tr><tr><td>_8158_check_continuous_buffer</td><td>バッファがエンプティかどうかを確認</td></tr><tr><td>_8158_dwell_move</td><td>タイマ移動の設定</td></tr></table>

多軸同時動作、セクション 6.17

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_tr_move_all</td><td>多軸同時動作のセットアップ</td></tr><tr><td>_8158_set_ta_move_all</td><td>多軸同時動作のセットアップ</td></tr><tr><td>_8158_set_sr_move_all</td><td>多軸同時動作のセットアップ</td></tr><tr><td>_8158_set_sa_move_all</td><td>多軸同時動作のセットアップ</td></tr><tr><td>_8158_start_move_all</td><td>多軸台形プロファイル・モーションを開始</td></tr><tr><td>_8158_stop_move_all</td><td>多軸モーションの同時停止</td></tr></table>

汎用入力 / 出力、セクション 6.18

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_set_gpio_output</td><td>デジタル出力の設定</td></tr><tr><td>_8158_get_gpio_output</td><td>デジタル出力を取得</td></tr><tr><td>_8158_get_gpio_input</td><td>デジタル入力を取得</td></tr><tr><td>_8158_set_gpio_input_function</td><td>信号タイプをデジタル入力に設定</td></tr></table>

ソフト・リミット、6.19

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_disable_soft_limit</td><td>ソフト・リミット機能を使用しない</td></tr><tr><td>_8158_enable_soft_limit</td><td>ソフト・リミット機能を使用する</td></tr><tr><td>_8158_set_soft_limit</td><td>ソフト・リミットの設定</td></tr></table>

バックラッシュ補正 / 振動抑制、6.20

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_backlash_comp</td><td>バックラッシュ調整パルスを補正に設定</td></tr><tr><td>_8158_suppress_vibration</td><td>振動抑制を無効なパルス・カウントに設定</td></tr><tr><td>_8158_set_fa_speed</td><td>FA 速度を原点モードに設定</td></tr></table>

速度プロファイルの計算、6.21

<table><tr><td>関数名</td><td>説明</td></tr><tr><td>_8158_get_tr_move_profile</td><td>相対台形速度プロファイルを取得</td></tr><tr><td>_8158_get_ta_move_profile</td><td>絶対台形速度プロファイルを取得</td></tr><tr><td>_8158_get_sr_move_profile</td><td>相対 S 曲線速度プロファイルを取得</td></tr><tr><td>_8158_get_sa_move_profile</td><td>絶対 S 曲線速度プロファイルを取得</td></tr></table>

# 6.2 C/C++ プログラミング・ライブラリ

このセクションではすべての関数を詳しく説明します。関数のプロトタイプと一部のコマンド・データ・タイプはpci\_8158.hで宣言されます。アプリケーション・プログラムでは上記のデータ・タイプを使用してください。データ・タイプ名とその範囲は下表の通りです。

<table><tr><td>タイプ名</td><td>説明</td><td>範囲</td></tr><tr><td>U8</td><td>8-bit ASCII 文字</td><td>0~255</td></tr><tr><td>I16</td><td>16-bit 符号化整数</td><td>-32768~32767</td></tr><tr><td>U16</td><td>16-bit 非符号化整数</td><td>0~65535</td></tr><tr><td>I32</td><td>32-bit 符号化長整数</td><td>-2147483648~2147483647</td></tr><tr><td>U32</td><td>32-bit 非符号化長整数</td><td>0~4294967295</td></tr><tr><td>F32</td><td>32-bit 単精度浮動点</td><td>-3.402823E38~3.402823E38</td></tr><tr><td>F64</td><td>64-bit 倍精度浮動点</td><td>-1.797683134862315E308~1.797683134862315E309</td></tr><tr><td>ブーリアン</td><td>ブーリアン論理値</td><td>真、偽</td></tr></table>

PCI-8158 のソフトウェア・ドライバの関数はフルネームを使用して、関数の実際の意味を表示します。命名規則は以下の通りです：

「C」プログラミング環境では：

[ハードウェアモデル][アクション名]すなわち、\_8158\_initial()となります。

C ライブラリと VB ライブラリの違いを示すため、それぞれの関数名の最初に、B\_8158\_initial() のように、大文字の「B」が配置されます。

# 6.3 システムおよび初期化

# @名称

\_8158\_initial・カードの初期化

\_8158\_close・カードの終了

\_8158\_get\_version・ハードウェアおよびソフトウェア・バージョンの確認

\_8158\_set\_security\_key・セキュリティ・パスワードの設定

\_8158\_check\_security\_key・セキュリティ・パスワードの確認

\_8158\_reset\_security\_key・セキュリティ・パスワードをデフォルト値にリセット

\_8158\_config\_from\_file Config・ファイルから PCI-8158 を設定

# @ 說明

# \_8158\_initial:

この関数は 8158 カードを初期化してハードウェア・リソースを割り当てるのに使用されます。すべての 8158 カードはアプリケーションで他の関数を呼び出す前に、この関数を使って初期化しなければなりません。「Manual\_ID」のパラメータを設定することで、カードの ID が手動または自動で割り当てられるタイプを選択できます。

# \_8158\_close:

この関数は 8158 カードを終了し、アプリケーションの最後に呼び出されることになっていカードのリソースを解放するのに使用されます。

# \_8158\_get\_version:

ファームウェア、ドライバ、DLL のバージョン情報を呼び出すことができます。

# \_8158\_set\_security\_key:

この関数はセキュリティ・コードを PCI カードに設定するのに使用されます。

\_8158\_check\_security\_key, \_8158\_reset\_security\_key も参照してください。

# \_8158\_check\_security\_key:

この関数は関数「\_8158\_set\_security\_key」で設定されるセキュリティ・コードを検証するのに使用されます。

\_8158\_set\_security\_key, \_8158\_reset\_security\_key も参照してください。

# \_8158\_reset\_security\_key:

この関数を使えば、PCI カードのセキュリティ・コードをデフォルト値にリセットできます。デフォルトのセキュリティ・コードは0です。

\_8158\_check\_security\_key, \_8158\_set\_security\_key も参照してください。

# \_8158\_config\_from\_file:

この関数は指定したファイルに従って PCI-8158 の設定をロードするのに使用されます。MotionCreatorPro を使えば、8158 のテストと設定を正しく行えます。設定の保存後、ファイルはユーザーのシステム・ディレクトリに 8158.ini として保存されます。

この関数を実行すると、システムのすべての 8158 カードは 8158.ini に記録されたパラメータに従って以下の関数を呼び出したように設定されます。

```txt
_8158_set_limit_logic
_8158_set_pcs_logic
_8158_set_ltc_logic
_8158_set_inp
_8158_set_erc
_8158_set_alm
_8158_set_pls_iptmode
_8158_set_pls_outmode
_8158_set_move_ratio
_8158_set_latch_source
_8158_set_feedback_src
_8158_set_home_config
_8158_set_soft_limit
_8158_set_fa_speed
_8158_set_sd
```

# @ 文字列

C/C++(Windows 2000/XP)
I16 _8158_initial(I16 *CardID_InBit, I16 Manual_ID);
I16 _8158_close(void);
I16 _8158_get_version(I16 card_id, I16 *firmware_ver, I32 *driver_ver, I32 *dll_ver);
I16 _8158_set_security_key(I16 card_id, I16 old_secu_code, I16 new_secu_code);
I16 _8158_check_security_key(I16 card_id, I16 secu_code);
I16 _8158_reset_security_key(I16 card_id);
I16 _8158_config_from_file();

Visual Basic 6(Windows 2000/XP)
B_8158_initial(CardID_InBit As Integer, ByVal Manual_ID As Integer) As Integer
B_8158_close() As Integer
B_8158_get_version(ByVal card_id As Integer, firmware_ver As Integer, driver_ver As Long, dll_ver As Long) As Integer
B_8158_set_security_key(ByVal card_id As Integer, ByVal old_secu_code As Integer, ByVal new_secu_code As Integer) As Integer
B_8158_check_security_key(ByVal card_id As Integer, ByVal secu_code As Integer) As Integer
B_8158_reset_security_key(ByVal card_id As Integer);
B_8158_config_from_file() As Integer

# @ 引数

# CardID\_InBit:

Manual\_ID: オンボード DIP スイッチ（SW1）がカード ID を決定できるようにします。

値の意味：

カード ID は以下で決定できます：

0: PCI スロットのシーケンス

1: オンボード DIP スイッチ (SW1)

card\_id: PCI-8158 カードのインデックスを指定します。card\_id は DIP スイッチ（SW1）によって決定されるか、スロットのシーケンスに依存します。\_8158\_initial() を参照してください。

firmware\_ver: 現在のファームウェア・バージョン

driver\_ver: 現在のデバイス・ドライバ・バージョン

dll\_ver: 現在の DLL ライブラリのバージョン

old\_secu\_code: 以前のセキュリティ・コード

new\_secu\_code: 新しいセキュリティ・コード

secu\_code: セキュリティ・コード

# 6.4 パルス入力 / 出力設定

# @名称

\_8158\_set\_pls\_iptmode・フィードバック・パルス入力を設定します。

\_8158\_set\_pls\_outmode・パルス・コマンド出力を設定します。

\_8158\_set\_feedback\_src・外部フィードバック・パルス入力を有効/無効にします。

# @ 說明

\_8158\_set\_pls\_iptmode:

外部フィードバック・パルスの入力モードを設定します。フィードバック・パルス入力には4つのタイプがあります。この関数は、\_8158\_set\_feedback\_src()関数のSrcパラメータが使用可能な場合のみ有効です。

\_8158\_set\_pls\_outmode:

コマンド・パルスの出力モードを設定します。コマンド・パルス出力には6つのモードがあります。

\_8158\_set\_feedback\_src:

システムで外部エンコーダ・フィードバックが使用可能な場合、この関数の Src パラメータを Enabled（有効）状態に設定してください。すると、内部 28-bit アップ / ダウン・カウンタは \_8158\_set\_pls\_iptmode() 関数の設定に従ってカウントするようになります。また、カウンタはコマンド・パルス出力もカウントします。

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8158\_set\_pls\_iptmode(I16 AxisNo, I16 pls\_iptmode, I16 pls\_logic);

I16 \_8158\_set\_pls\_outmode(I16 AxisNo, I16 pls\_outmode);

I16 \_8158\_set\_feedback\_src(I16 AxisNo, I16 Src);

Visual Basic6 (Windows 2000/XP)

B\_8158\_set\_pls\_iptmode(ByVal AxisNo As Integer, ByVal pls\_iptmode As Integer, ByVal pls\_logic As Integer) As Integer

B\_8158\_set\_pls\_outmode(ByVal AxisNo As Integer, ByVal pls\_outmode As Integer) As Integer
B\_8158\_set\_feedback\_src(ByVal AxisNo As Integer, ByVal Src As Integer) As Integer

# @ 引数

AxisNo: パルス入力 / 出力を設定するように指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

pls\_iptmode: エンコーダのフィードバック・パルス入力モードの設定

<table><tr><td>值</td><td>意味</td></tr><tr><td>0</td><td>1X A/B</td></tr><tr><td>1</td><td>2X A/B</td></tr><tr><td>2</td><td>4X A/B</td></tr><tr><td>3</td><td>CW/CCW</td></tr></table>

pls\_logic: エンコーダのフィードバック・パルスのロジック

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>逆方向ではない</td></tr><tr><td>1</td><td>逆方向</td></tr></table>

pls\_outmode: コマンド・パルス出力モードの設定

<table><tr><td colspan="13">Value meaning</td></tr><tr><td>value</td><td>type</td><td colspan="5">Positive Direction</td><td colspan="6">Negative Direction</td></tr><tr><td>0</td><td>OUT/DIR</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>1</td><td>OUT/DIR</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>2</td><td>OUT/DIR</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>3</td><td>OUT/DIR</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>4</td><td>CW/CCW</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>5</td><td>CW/CCW</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>6</td><td>AB</td><td colspan="5">OUTDIR</td><td colspan="6">OUTDIR</td></tr><tr><td>7</td><td>AB</td><td colspan="5">OUTDIR</td><td colspan="6">OUTDIR</td></tr></table>

Src: カウンタ・ソース

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>外部フィードバック</td></tr><tr><td>1</td><td>コマンド・パルス</td></tr></table>

# 6.5 速度モード・モーション

# @名称

\_8158\_tv\_move・台形プロファイルで軸を一定の速度に加速

\_8158\_sv\_move・S曲線プロファイルで軸を一定の速度に加速

\_8158\_emg\_stop・直ちに停止

\_8158\_sd\_stop・減速して、停止

\_8158\_get\_current\_speed・現在の速度を取得

\_8158\_speed\_override・オン・ザ・フライで速度を変更

\_8158\_set\_max\_override\_speed・最大オーバーライド速度を設定

# @ 說明

\_8158\_tv\_move:

この関数は台形プロファイルで軸を一定の速度に加速します。軸は速度が変更されるか、軸が停止するように命令されるまで、一定の速度で移動します。方向は速度パラメータの符号によって決定されます。

\_8158\_sv\_move:

この関数は S 曲線プロファイルで軸を一定の速度に加速します。軸は速度が変更されるか、軸が停止するように命令されるまで、一定の速度で移動します。方向は速度パラメータの符号によって決定されます。

\_8158\_emg\_stop:

この関数は軸を直ちに停止させるのに使用されます。また、プリセットされた移動（台形および S 曲線の両方のモーション）、手動移動、または原点復帰機能を実行する場合にも役立ちます。

\_8158\_sd\_stop:

この関数は台形またはS曲線プロファイルで軸を減速して停止させるのに使用されます。また、プリセットされた移動（台形およびS曲線の両方のモーション）、手動移動、または原点復帰機能を実行する場合にも役立ちます。注意：速度プロファイルは最初のモーション・プロファイルによって決定されます。

# \_8158\_get\_current\_speed:

この機能は指定した軸の現在のパルス出力速度（パルス／秒）を表示するのに使用されます。いつでもどんな動作モードでも使用できます。

# \_8158\_speed\_override:

(「\_8158\_tv\_move」を実行している場合などの) モーション動作では、この関数はオン・ザ・フライで速度を変更するのに使用できます。セクション 4.2.14 を参照してください。

\_8158\_set\_max\_override\_speed も参照してください。

# 8158\_set\_max\_override\_speed:

この関数は速度オーバーライド動作の前に最大オーバーライド速度（100% 速度）を設定するのに使用されます。セクション4.2.14を参照してください。

\_8158\_speed\_override も参照してください。

# @ 文字列

C/C++(Windows 2000/XP)
I16 _8158_tv_move(I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc);
I16 _8158_sv_move(I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc, F64 SVacc);
I16 _8158_emg_stop(I16 AxisNo);
I16 _8158_sd_stop(I16 AxisNo, F64 Tdec);
I16 _8158_get_current_speed(I16 AxisNo, F64 *speed)
I16 _8158_set_max_override_speed(I16 AxisNo, F64 OvrdSpeed, I16 Enable);

Visual Basic6 (Windows 2000/XP)
B_8158_tv_move(ByVal AxisNo As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double) As Integer
B_8158_sv_move(ByVal AxisNo As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal SVacc As Double) As Integer
B_8158_emg_stop(ByVal AxisNo As Integer) As Integer
B_8158_sd_stop(ByVal AxisNo As Integer, ByVal Tdec As Double) As Integer
B_8158_get_current_speed(ByVal AxisNo As Integer, ByVal Ref Speed As Double) As Integer

B\_8158\_set\_max\_override\_speed(ByVal AxisNo As Integer, ByVal OvrdSpeed As Double, ByVal Enable As Integer) As Integer

# @ 引数

AxisNo: 移動または停止するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

StrVel: 初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 指定された加速時間（単位：秒）

SVacc: S 曲線加速が実行される指定された速度間隔

注意: 純粋な S 曲線では SVacc = 0

Tdec: 指定された減速時間（単位：秒）

\*Speed: 現在の速度（パルス／秒）を取得する変数

NewVelPercent: 最大オーバーライド速度（100% 速度）の割合

時間：速度をオーバライドする現在の速度の間隔単位：秒

OvrdSpeed: 最大オーバーライド速度（パルス / 秒）

Enabl: 0: 無効、1: オーバーライド速度動作を使用する

# 6.6 1 軸位置モード

# @名称

\_8158\_start\_tr\_move・相対台形プロファイル移動を開始

\_8158\_start\_ta\_move・絶対台形プロファイル移動を開始

\_8158\_start\_sr\_move・相対 S 曲線プロファイル移動を開始

\_8158\_start\_sa\_move・絶対 S 曲線プロファイル移動を開始

\_8158\_set\_move\_ratio・コマンド・パルスとフィードバック・パルスの比を設定

\_8158\_position\_override・オン・ザ・フライで位置を変更

# @ 說明

# 共通：

移動方向はPosまたはDistパラメータの符号によって決定されます。指定速度に到達するのに移動距離が短すぎる場合、コントローラはMaxVelを自動的に引き下げます。また、Tacc、Tdec、VSacc、VSdecも短くなりますが、dV/dt（加速／減速）とd(dV/dt)/dt（加加速度）は変更されません。

# \_8158\_start\_tr\_move:

この関数は軸を初速度（StrVel）から加速させ、一定速度（MaxVel）で回転させ、相対距離で停止するまで台形プロファイルで減速させます。加速（Tacc）および減速（Tdec）時間は独立して指定されます。また、プログラムはモーションの完了を待つ必要がなく、制御は直ちにプログラムに返されます。

# \_8158\_start\_ta\_move:

この関数は軸を初速度（StrVel）から加速させ、一定速度（MaxVel）で回転させ、指定された絶対位置で停止するまで台形プロファイルで減速させます。加速（Tacc）および減速（Tdec）時間は独立して指定されます。また、プログラムはモーションの完了を待つ必要がなく、制御は直ちにプログラムに返されます。

\_8158\_start\_sr\_move:

この関数は軸を初速度（StrVel）から加速させ、一定速度(MaxVel)で回転させ、相対距離で停止するまでS曲線プロファイルで減速させます。加速（Tacc）および減速（Tdec）時間は独立して指定されます。また、プログラムはモーションの完了を待つ必要がなく、制御は直ちにプログラムに返されます。

# \_8158\_start\_sa\_move:

この関数は軸を初速度（StrVel）から加速させ、一定速度で回転させ、指定された絶対位置で停止するまで S 曲線プロファイルで減速させます。加速および減速時間は独立して指定されます。また、プログラムはモーションの完了を待つ必要がなく、制御は直ちにプログラムに返されます。

# \_8158\_set\_move\_ratio:

この関数は指定した軸の定数を設定します。通常、軸の機械的解像度が異なる場合、軸は定数を必要とします。例えば、フィードバック・センサーの解像度がコマンド・プラスの解像度の2倍である場合、パラメータ「move\_ratio」は2に設定されます。

# \_8158\_position\_override:

この関数はオン・ザ・フライでターゲット位置を変更するのに使用されます。この関数には幾つかの制限があります。使用する前にセクション4.2.15を参照してください。

# @ 文字列

C/C++(Windows 2000/XP)
I16 _8158_start_tr_move(I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 _8158_start_ta_move(I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 _8158_start_sr_move(I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 _8158_start_sa_move(I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 _8158_set_move_ratio(I16 AxisNo, F64 move_ratio);
I16 _8158_position_override(I16 AxisNo, F64 NewPos);

# Visual Basic6 (Windows 2000/XP)

B\_8158\_start\_tr\_move(ByVal AxisNo As Integer, ByVal Dist As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_move(ByVal AxisNo As Integer, ByVal Pos As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_move(ByVal AxisNo As Integer, ByVal Dist As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_sa\_move(ByVal AxisNo As Integer, ByVal Pos As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_set\_move\_ratio(ByVal AxisNo As Integer, ByVal move\_ratio As Double) As Integer
B\_8158\_position\_override(ByVal AxisNo As Integer, ByVal NewPos As Double) As Integer

# @ 引数

AxisNo: 移動または位置を変更するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Dist: 指定された相対移動距離（単位：パルス）

Pos: 指定された絶対移動位置（単位：パルス）

StrVel: 速度プロファイルの初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 指定された加速時間（単位：秒）

Tdec: 指定された減速時間（単位：秒）

SVacc: S 曲線加速が実行される指定された速度間隔

注意: 純粋な S 曲線では SVacc = 0。詳しくはセクション 4.2.4 を参照

SVdec: S 曲線減速が実行される指定された速度間隔

注意: 純粋な S 曲線では SVdec = 0。詳しくはセクション 4.2.4 を参照

Move\_ratio: （フィードバックの解像度）/（コマンドの解像度）の比率、0とはならない

NewPos: 指定された新しい絶対移動位置

# 6.7 直線補間モーション

@名称

<table><tr><td>_8158_start_tr_move_xy・2軸直線補間を開始</td><td>台形プロファイルでXおよびY軸の相対</td></tr><tr><td>_8158_start_ta_move_xy・2軸直線補間を開始</td><td>台形プロファイルでXおよびY軸の絶対</td></tr><tr><td>_8158_start_sr_move_xy・対2軸直線補間を開始</td><td>S曲線プロファイルでXおよびY軸の相</td></tr><tr><td>_8158_start_sa_move_xy・対2軸直線補間を開始</td><td>S曲線プロファイルでXおよびY軸の絶</td></tr><tr><td>_8158_start_tr_move_zu・2軸直線補間を開始</td><td>台形プロファイルでZおよびU軸の相対</td></tr><tr><td>_8158_start_ta_move_zu・2軸直線補間を開始</td><td>台形プロファイルでZおよびU軸の絶対</td></tr><tr><td>_8158_start_sr_move_zu・対2軸直線補間を開始</td><td>S曲線プロファイルでZおよびU軸の相</td></tr><tr><td>_8158_start_sa_move_zu・対2軸直線補間を開始</td><td>S曲線プロファイルでZおよびU軸の絶</td></tr><tr><td>_8158_start_tr_move_ab・2軸直線補間を開始</td><td>台形プロファイルでAおよびB軸の相対</td></tr><tr><td>_8158_start_ta_move_ab・2軸直線補間を開始</td><td>台形プロファイルでAおよびB軸の絶対</td></tr><tr><td>_8158_start_sr_move_ab・対2軸直線補間を開始</td><td>S曲線プロファイルでAおよびB軸の相</td></tr><tr><td>_8158_start_sa_move_ab・対2軸直線補間を開始</td><td>S曲線プロファイルでAおよびB軸の絶</td></tr><tr><td>_8158_start_tr_move_cd・2軸直線補間を開始</td><td>台形プロファイルでCおよびD軸の相対</td></tr><tr><td>_8158_start_ta_move_cd・2軸直線補間を開始</td><td>台形プロファイルでCおよびD軸の絶対</td></tr><tr><td>_8158_start_sr_move_cd・対2軸直線補間を開始</td><td>S曲線プロファイルでCおよびD軸の相</td></tr></table>

\_8158\_start\_sa\_move\_cd・S曲線プロファイルでCおよびD軸の絶対2軸直線補間を開始
\_8158\_start\_tr\_line2・4軸の任意の2軸に対して台形プロファイルで相対2軸直線補間を開始
\_8158\_start\_ta\_line2・4軸の任意の2軸に対して台形プロファイルで絶対2軸直線補間を開始
\_8158\_start\_sr\_line2・4軸の任意の2軸に対してS曲線プロファイルで相対2軸直線補間を開始
\_8158\_start\_sa\_line2・4軸の任意の2軸に対してS曲線プロファイルで絶対2軸直線補間を開始
\_8158\_start\_tr\_line3・4軸の任意の3軸に対して台形プロファイルで相対3軸直線補間を開始
\_8158\_start\_ta\_line3・4軸の任意の3軸に対して台形プロファイルで相対3軸直線補間を開始
\_8158\_start\_sr\_line3・4軸の任意の3軸に対してS曲線プロファイルで相対3軸直線補間を開始
\_8158\_start\_sa\_line3・4軸の任意の3軸に対してS曲線プロファイルで絶対3軸直線補間を開始
\_8158\_start\_tr\_line4・4軸の任意の4軸に対して台形プロファイルで相対4軸直線補間を開始
\_8158\_start\_ta\_line4・4軸の任意の4軸に対して台形プロファイルで絶対4軸直線補間を開始
\_8158\_start\_sr\_line4・4軸の任意の4軸に対してS曲線プロファイルで相対4軸直線補間を開始
\_8158\_start\_sa\_line4・4軸の任意の4軸に対してS曲線プロファイルで絶対4軸直線補間を開始

# @ 說明

上記関数は様々なプロファイルで直線補間モーションを実行します。関数の詳しい比較表は以下の通りです。

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_move_xy</td><td>2</td><td>T</td><td>R</td><td>軸0および1</td></tr><tr><td>_8158_start_ta_move_xy</td><td>2</td><td>T</td><td>A</td><td>軸0および1</td></tr><tr><td>_8158_start_sr_move_xy</td><td>2</td><td>S</td><td>R</td><td>軸0および1</td></tr><tr><td>_8158_start_sa_move_xy</td><td>2</td><td>S</td><td>A</td><td>軸0および1</td></tr><tr><td>_8158_start_tr_move_zu</td><td>2</td><td>T</td><td>R</td><td>軸2および3</td></tr><tr><td>_8158_start_ta_move_zu</td><td>2</td><td>T</td><td>A</td><td>軸2および3</td></tr><tr><td>_8158_start_sr_move_zu</td><td>2</td><td>S</td><td>R</td><td>軸2および3</td></tr><tr><td>_8158_start_sa_move_zu</td><td>2</td><td>S</td><td>A</td><td>軸2および3</td></tr><tr><td>_8158_start_tr_move_ab</td><td>2</td><td>T</td><td>R</td><td>軸4および5</td></tr><tr><td>_8158_start_ta_move_ab</td><td>2</td><td>T</td><td>A</td><td>軸4および5</td></tr><tr><td>_8158_start_sr_move_ab</td><td>2</td><td>S</td><td>R</td><td>軸4および5</td></tr><tr><td>_8158_start_sa_move_ab</td><td>2</td><td>S</td><td>A</td><td>軸4および5</td></tr><tr><td>_8158_start_tr_move_cd</td><td>2</td><td>T</td><td>R</td><td>軸6および7</td></tr><tr><td>_8158_start_ta_move_cd</td><td>2</td><td>T</td><td>A</td><td>軸6および7</td></tr><tr><td>_8158_start_sr_move_cd</td><td>2</td><td>S</td><td>R</td><td>軸6および7</td></tr><tr><td>_8158_start_sa_move_cd</td><td>2</td><td>S</td><td>A</td><td>軸6および7</td></tr></table>

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_line2</td><td>2</td><td>T</td><td>R</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_ta_line2</td><td>2</td><td>T</td><td>A</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_sr_line2</td><td>2</td><td>S</td><td>R</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_sa_line2</td><td>2</td><td>S</td><td>A</td><td>4 軸の任意の 2 軸</td></tr></table>

íçà":

直線補間のターゲットの2軸はカードの前0-3軸のうちの2軸か後4-7軸のうちの2軸です。それら2つのグループをまたぐことはできません。

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_line3</td><td>3</td><td>T</td><td>R</td><td>4 軸の任意の 3 軸</td></tr><tr><td>_8158_start_ta_line3</td><td>3</td><td>T</td><td>A</td><td>4 軸の任意の 3 軸</td></tr><tr><td>_8158_start_sr_line3</td><td>3</td><td>S</td><td>R</td><td>4 軸の任意の 3 軸</td></tr><tr><td>_8158_start_sa_line3</td><td>3</td><td>S</td><td>A</td><td>4 軸の任意の 3 軸</td></tr></table>

¡çà": 直線補間のターゲットの3軸はカードの前4軸のうちの3軸か後4軸のうちの3軸です。それら2つのグループをまたぐことはできません。

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_line4</td><td>4</td><td>T</td><td>R</td><td>4 軸の任意の 4 軸</td></tr><tr><td>_8158_start_ta_line4</td><td>4</td><td>T</td><td>A</td><td>4 軸の任意の 4 軸</td></tr><tr><td>_8158_start_sr_line4</td><td>4</td><td>S</td><td>R</td><td>4 軸の任意の 4 軸</td></tr><tr><td>_8158_start_sa_line4</td><td>4</td><td>S</td><td>A</td><td>4 軸の任意の 4 軸</td></tr></table>

¡çà": 直線補間のターゲットの4軸はカードの前4軸のうちの4軸か後4軸のうちの4軸です。それら2つのグループをまたぐことはできません。

速度プロファイル：

T: 台形プロファイル

S: S 曲線プロファイル

相対 / 絶対

R: 相対距離

A: 絶対位置

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8158\_start\_tr\_move\_xy(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_move\_xy(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);

I16 \_8158\_start\_sr\_move\_xy(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_move\_xy(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_move\_zu(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_move\_zu(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_move\_zu(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_move\_zu(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_move\_ab(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_move\_ab(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_move\_ab(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_move\_ab(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_move\_cd(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_move\_cd(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_move\_cd(I16 Card\_id, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_move\_cd(I16 Card\_id, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_line2(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_line2(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_line2(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_line2(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);

I16 \_8158\_start\_tr\_line3(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_line3(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_line3(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_line3(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_line4(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_line4(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_line4(I16 \*AxisArray, F64 \*DistArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_line4(I16 \*AxisArray, F64 \*PosArray, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);

# Visual Basic6 (Windows 2000/XP)

B\_8158\_start\_tr\_move\_xy(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_move\_xy(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_move\_xy(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_sa\_move\_xy(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_tr\_move\_zu(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_move\_zu(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal

MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_move\_zu(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_sa\_move\_zu(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_tr\_move\_ab(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_move\_ab(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_move\_ab(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_sa\_move\_ab(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_tr\_move\_cd(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_move\_cd(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_move\_cd(ByVal Card\_id As Integer, ByVal DistX As Double, ByVal DistY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer

B\_8158\_start\_sa\_move\_cd(ByVal Card\_id As Integer, ByVal PosX As Double, ByVal PosY As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double) As Integer
B\_8158\_start\_tr\_line2(AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_line2(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_line2((AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_line2(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_line3(AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_line3(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_line3((AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_line3(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_line4(AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_line4(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_line4((AxisArray() As Integer, DistArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer

B\_8158\_start\_sa\_line4(AxisArray() As Integer, PosArray() As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer

# @ 引数

card\_id: PCI-8158 カードのインデックスを指定します。card\_id は DIP スイッチ（SW1）によって決定されるか、スロットのシーケンスに依存します。\_8158\_initial() を参照してください。

AxisNo: 移動または位置を変更するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

DistX: 軸 0 の指定された相対移動距離（単位：パルス）

DistY: 軸 1 の指定された相対移動距離（単位：パルス）

PosX: 軸 0 の指定された絶対移動位置（単位：パルス）

PosY: 軸 1 の指定された絶対移動位置（単位：パルス）

StrVel: 速度プロファイルの初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 指定された加速時間（単位：秒）

Tdec: 指定された減速時間（単位：秒）

SVacc: S 曲線加速が実行される指定された速度間隔

注意：純粋な S 曲線では SVacc = 0。詳しくはセクション 4.2.4 を参照

SVdec: S 曲線減速が実行される指定された速度間隔

注意：純粋な S 曲線では SVdec = 0。詳しくはセクション 4.2.4 を参照

\*AxisArray: 補間を実行する軸番号の配列

例：I16 AxisArray[2] = {0, 3}; // 軸 0 および軸 3（正）

I16 AxisArray[3] = {0,2, 3}; // 軸 0、2、3（正）

I16 AxisArray[2] = {1, 6}; // 軸 1 および軸 6 （誤）

\*DistArray: 直線補間の相対距離の配列

例：I16 AxisArray[2] = {0, 3}; // 軸 0 および軸 3

F64 DistArray[2] = {1000.0, 2000.0} // 軸 0 および 3 の場合

\*PosArray: 直線補間の絶対位置の配列

例：I16 AxisArray[3] = {0.2, 3}; // 轴 0、2、3

F64 PosArray[3] = {200.0, 300.0, 400.0} // 軸 0、2、3 の絶対位置

# 6.8 円形補間モーション

# @名称

<table><tr><td>_8158_start_tr_arc_xy・XおよびY軸のT曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_xy・XおよびY軸のT曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_xy・XおよびY軸のS曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_xy・XおよびY軸のS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_zu・ZおよびU軸のT曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_zu・ZおよびU軸のT曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_zu・ZおよびU軸のS曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_zu・ZおよびU軸のS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_ab・AおよびB軸のT曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_ab・AおよびB軸のT曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_b・AおよびB軸のS曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_ab・AおよびB軸のS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc_cd・CおよびD軸のT曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc_cd・CおよびD軸のT曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc_cd・CおよびD軸のS曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc_cd・CおよびD軸のS曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_tr_arc2・4軸の任意の2軸に対してT曲線相対円形補間を開始</td></tr><tr><td>_8158_start_ta_arc2・4軸の任意の2軸に対してT曲線絶対円形補間を開始</td></tr><tr><td>_8158_start_sr_arc2・4軸の任意の2軸に対してS曲線相対円形補間を開始</td></tr><tr><td>_8158_start_sa_arc2・4軸の任意の2軸に対してS曲線絶対円形補間を開始</td></tr></table>

# @ 說明

上記関数は様々なプロファイルで円形補間モーションを実行します。関数の詳しい比較表は以下の通りです。

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_arc_xy</td><td>2</td><td>台形</td><td>R</td><td>軸0および1</td></tr><tr><td>_8158_start_ta_arc_xy</td><td>2</td><td>台形</td><td>A</td><td>軸0および1</td></tr><tr><td>_8158_start_sr_arc_xy</td><td>2</td><td>S曲線</td><td>R</td><td>軸0および1</td></tr><tr><td>_8158_start_sa_arc_xy</td><td>2</td><td>S曲線</td><td>A</td><td>軸0および1</td></tr><tr><td>_8158_start_tr_arc_zu</td><td>2</td><td>台形</td><td>R</td><td>軸2および3</td></tr><tr><td>_8158_start_ta_arc_zu</td><td>2</td><td>台形</td><td>A</td><td>軸2および3</td></tr><tr><td>_8158_start_sr_arc_zu</td><td>2</td><td>S曲線</td><td>R</td><td>軸2および3</td></tr><tr><td>_8158_start_sa_arc_zu</td><td>2</td><td>S曲線</td><td>A</td><td>軸2および3</td></tr><tr><td>_8158_start_tr_arc_ab</td><td>2</td><td>台形</td><td>R</td><td>軸4および5</td></tr><tr><td>_8158_start_ta_arc_ab</td><td>2</td><td>台形</td><td>A</td><td>軸4および5</td></tr><tr><td>_8158_start_sr_arc_ab</td><td>2</td><td>S曲線</td><td>R</td><td>軸4および5</td></tr><tr><td>_8158_start_sa_arc_ab</td><td>2</td><td>S曲線</td><td>A</td><td>軸4および5</td></tr><tr><td>_8158_start_tr_arc_cd</td><td>2</td><td>台形</td><td>R</td><td>軸6および7</td></tr><tr><td>_8158_start_ta_arc_cd</td><td>2</td><td>台形</td><td>A</td><td>軸6および7</td></tr><tr><td>_8158_start_sr_arc_cd</td><td>2</td><td>S曲線</td><td>R</td><td>軸6および7</td></tr><tr><td>_8158_start_sa_arc_cd</td><td>2</td><td>S曲線</td><td>A</td><td>軸6および7</td></tr></table>

<table><tr><td>関数</td><td>軸総数</td><td>速度プロファイル</td><td>相対/絶対</td><td>ターゲット軸</td></tr><tr><td>_8158_start_tr_arc2</td><td>2</td><td>台形</td><td>R</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_ta_arc2</td><td>2</td><td>台形</td><td>A</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_sr_arc2</td><td>2</td><td>S 曲線</td><td>R</td><td>4 軸の任意の 2 軸</td></tr><tr><td>_8158_start_sa_arc2</td><td>2</td><td>S 曲線</td><td>A</td><td>4 軸の任意の 2 軸</td></tr></table>

¡çà": 直線補間のターゲットの2軸はカードの前4軸（0-3）のうちの2軸か後4軸（4-7）のうちの2軸です。それら2つのグループをまたぐことはできません。

# @ 文字列

# C/C++(Windows 2000/XP)

I16 \_8158\_start\_tr\_arc\_xy(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);
I16 \_8158\_start\_ta\_arc\_xy(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);
I16 \_8158\_start\_sr\_arc\_xy(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_arc\_xy(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_arc\_zu(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);
I16 \_8158\_start\_ta\_arc\_zu(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);
I16 \_8158\_start\_sr\_arc\_zu(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_arc\_zu(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_arc\_ab(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_arc\_ab(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);
I16 \_8158\_start\_sr\_arc\_ab(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_arc\_ab(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_arc\_cd(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_arccdd(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec);

I16 \_8158\_start\_sr\_arc\_cd(I16 card\_id, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 CW\_CCW, F64 StrVel,F64 MaxVel,F64 Tacc,F64 Tdec,F64 SVacc,F64 SVdec);
I16 \_8158\_start\_sa\_arc\_cd(I16 card\_id, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_tr\_arc2(I16 \*AxisArray, F64 \*OffsetCenter, F64 \*OffsetEnd, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_ta\_arc2(I16 \*AxisArray, F64 \*CenterPos, F64 \*EndPos, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 \_8158\_start\_sr\_arc(I16 \*AxisArray, F64 \*OffsetCenter, F64 \*OffsetEnd, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 \_8158\_start\_sa\_arc2(I16 \*AxisArray, F64 \*CenterPos, F64 \*EndPos, I16 CW\_CCW, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);

# Visual Basic6 (Windows 2000/XP)

B\_8158\_start\_tr\_arc\_xy( ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_arc\_xy(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_arc\_xy(ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_arc\_xy(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_arc\_zu( ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double,

ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_arc\_zu(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_arc\_zu(ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_arc\_zu(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_arc\_ab( ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_arc\_ab(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_arc\_ab(ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_arc\_ab(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_arc\_cd( ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double,

ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double);
B\_8158\_start\_ta\_arc\_cd(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_arc\_cd(ByVal card\_id As Integer, ByVal OffsetCx As Double, ByVal OffsetCy As Double, ByVal OffsetEx As Double, ByVal OffsetEy As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_arc\_cd(ByVal card\_id As Integer, ByVal Cx As Double, ByVal Cy As Double, ByVal Ex As Double, ByVal Ey As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_tr\_arc(AxisArray() As Integer, OffsetCenter() As Double, OffsetEnd() As Double, Byval CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_ta\_arc2(AxisArray() As Integer, CenterPos() As Double, EndPos() As Double, Byval CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double) As Integer
B\_8158\_start\_sr\_arc(AxisArray() As Integer, OffsetCenter() As Double, OffsetEnd() As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer
B\_8158\_start\_sa\_arc2(AxisArray() As Integer, CenterPos() As Double, EndPos() As Double, ByVal CW\_CCW As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal Svacc As Double, ByVal Svdec As Double) As Integer

# @ Argument

card\_id: Specify the PCI-8158 card index. The card\_id could be decided by DIP switch (SW1) or depend on slot sequence. Please refer to \_8158\_initial().

AxisNo: Axis number designated to move or change position.

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

OffsetCx: 中心への X 軸（ターゲット軸の最初の軸）のオフセット

OffsetCy: 中心へのY軸(ターゲット軸の2番目の軸)のオフセット

OffsetEx: 円弧終点への X 軸（ターゲット軸の最初の軸）のオフセット

OffsetEy: 円弧終点への Y 軸のオフセット

Cx: 円弧中心の X 軸（ターゲット軸の最初の軸）の絶対位置

Cy: 円弧中心の Y 軸（ターゲット軸の 2 番目の軸）の絶対位置

Ex: 円弧終点の X 軸（ターゲット軸の最初の軸）の絶対位置

Ey: 円弧終点の Y 軸（ターゲット軸の 2 番目の軸）の絶対位置

CW\_CCW: 円弧の指定方向

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>時計回り(CW)</td></tr><tr><td>1</td><td>反時計回り(CCW)</td></tr></table>

StrVel: 速度プロファイルの初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 指定された加速時間（単位：秒）

Tdec: 指定された減速時間（単位：秒）

SVacc: S 曲線加速が実行される指定された速度間隔

注意：純粋な S 曲線では SVacc = 0。詳しくはセクション 4.2.4 を参照

SVdec: S 曲線減速が実行される指定された速度間隔

注意: 純粋な S 曲線では SVdec = 0。詳しくはセクション 4.2.4 を参照

\*AxisArray: 補間を実行する軸番号の配列

例：I16 AxisArray[2] = {0, 3}; // 軸 0 および軸 3（正）

I16 AxisArray[2] = {1, 6}; // 軸 1 および軸 6 （誤）

\*OffsetCenter: （開始位置に対する）中心へのオフセットの配列

例：F64 OffsetCenter[2] = {2000.0, 0.0}; // 最初の軸と 2 番目の軸に対する開始位置（始点）からのオフセット

\*OffsetEnd: （開始位置に対する）円弧終点へのオフセットの配列

例：F64 OffsetEnd[2] = {4000.0, 0.0}; // 最初の軸と 2 番目の軸に対する開始位置（始点）からのオフセット

\*CenterPos: 円弧絶対位置の中心の配列

例：F64 CenterPos[2] = {2000.0, 0.0}; // 最初の軸と 2 番目の軸に対する絶対中心位置

\*EndPos: 円弧絶対位置の終点の配列

例：F64 EndPos[2] = {4000.0, 0.0}; // 最初の軸と 2 番目の軸に対する絶対終点位置

# 6.9 原点復帰モード

# @名称

\_8158\_set\_home\_config・原点復帰移動モーションを設定

\_8158\_home\_move・原点復帰移動を実行

\_8158\_home\_search・原点自動検索を実行

# @ 說明

\_8158\_set\_home\_config:

home\_move() 関数の原点復帰モード、原点（ORG）およびインデックス信号（EZ）のロジック、EZ カウント、ERC 出力オプションを設定します。home\_mode 制御の設定についてはセクション 4.2.10 を参照してください。

\_8158\_home\_move:

この関数は \_8164\_set\_home\_config() 関数の設定に従って軸に原点復帰移動を実行させます。移動の方向は速度パラメータ (MaxVel) の符号によって決定されます。この関数の停止条件は home\_mode の設定によって決まるので、最初の移動方向を選択には注意が必要です。また、リミット・スイッチに接触するときの条件や軸を停止させることが可能な他の条件の処理にも注意が必要です。詳しくはセクション 4.2.10 を参照してください。

\_8158\_home\_search:

この関数は \_8164\_set\_home\_config() 関数の設定に従って軸に原点検索移動を実行させます。移動の方向は速度パラメータ (MaxVel) の符号によって決定されます。この関数の停止条件は home\_mode の設定によって決まるので、最初の移動方向を選択には注意が必要です。また、リミット・スイッチに接触するときの条件や軸を停止させることが可能な他の条件の処理にも注意が必要です。詳しくはセクション 4.2.11 を参照してください。

# @ 文字列

# C/C++(Windows 2000/XP)

I16 \_8158\_set\_home\_config(I16 AxisNo, I16 home\_mode, I16 org\_logic, I16 ez\_logic, I16 ez\_count, I16 erc\_out);

I16 \_8158\_home\_move(I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc);

I16 \_8158\_home\_search(I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc, F64 ORGOffset);

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_home\_config(ByVal AxisNo As Integer, ByVal home\_mode As Integer, ByVal org\_logic As Integer, ByVal ez\_logic As Integer, ByVal ez\_count As Integer, ByVal erc\_out As Integer) As Integer

B\_8158\_home\_move(ByVal AxisNo As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double) As Integer

B\_8158\_home\_search(ByVal AxisNo As Integer, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal ORGOffset As Double) As Integer

# @ 引数

AxisNo: 移動または位置を変更するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

home\_mode: 原点復帰の停止モード。値は 0 から 12 までです。セクション 4.2.10 をご覧ください。

org\_logic: ORG のアクション・ロジックの設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>アクティブ低</td></tr><tr><td>1</td><td>アクティブ高</td></tr></table>

ez\_logic: EZ のアクション・ロジックの設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>アクティブ低</td></tr><tr><td>1</td><td>アクティブ高</td></tr></table>

ez\_count: 0-15（セクション 4.2.10 参照）

erc\_out: ERC の出力オプションを設定

<table><tr><td>值</td><td>意味</td></tr><tr><td>0</td><td>非 ERC 出力</td></tr><tr><td>1</td><td>原点移動完了時 ERC 信号を出力</td></tr></table>

StrVel: 速度プロファイルの初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 指定された加速時間（単位：秒）

ORGOffset: 原点検索が ORG 信号に達した時のエスケープ・パルス量（単位：パルス）

# 6.10 手動パルス・モーション

# @名称

\_8158\_disable\_pulser\_input・パルス入力を無効にする
\_8158\_pulser\_pmove・手動パルス p\_move
\_8158\_pulser\_vmove・手動パルス v\_move
\_8158\_set\_pulser\_ratio・手動パルス比を実際の出力パルス速度に設定
\_8158\_set\_pulser\_iptmode・パルスの入力信号モードを設定

# @ 說明

\_8158\_disable\_pulser\_input

この関数はパルス出力を有効または無効にするのに使用されます。

\_8158\_pulser\_pmove

このコマンドで、軸は手動パルス入力に従って移動を開始します。\_8158\_disable\_pulser\_input 関数がパルスを無効にするか、出力パルス数が距離に到達するまで、軸は1つの手動パルスを受信すると1つのパルスを出力します。

\_8158\_pulser\_vmove

このコマンドで、軸は手動パルス入力に従って移動を開始します。\_8158\_disable\_pulser\_input 関数がパルスを無効にするまで、軸は1つの手動パルスを受信すると1つのパルスを出力します。

\_8158\_set\_pulser\_ratio

手動パルス比を実際の出力パルス速度に設定します。手動パルス出力速度の方程式や以下の通りです：

出力パルス・カウント = 入力パルス・カウント × 4

(MultiF +1) × (DivF +1) /2048

DivF = 0 \~ 2047 除算係数

MultiF=0～31乘算計数

# \_8158\_set\_pulser\_iptmode

この館数は手動パルスの入力モードを設定するのに使用されます。

# @ 文字列

C/C++(Windows 2000/XP)
I16 _8158_disable_pulser_input(I16 AxisNo, U16 Disable);
I16 _8158_pulser_pmove(I16 AxisNo, F64 Dist, F64 SpeedLimit);
I16 _8158_pulser_vmove(I16 AxisNo, F64 SpeedLimit);
I16 _8158_set_pulser_ratio(I16 AxisNo, I16 DivF, I16 MultiF);
I16 _8158_set_pulser_iptmode(I16 AxisNo, I16 InputMode, I16 Inverse);

Visual Basic (Windows 2000/XP)
B_8158_disable_pulser_input(ByVal AxisNo As Integer, ByVal Disable As Integer) As Integer
B_8158_pulser_pmove(ByVal AxisNo As Integer, ByVal Dist As Double, ByVal SpeedLimit As Double) As Integer
B_8158_pulser_vmove(ByVal AxisNo As Integer, ByVal SpeedLimit As Double) As Integer
B_8158_set_pulser_ratio(ByVal AxisNo As Integer, ByVal DivF As Integer, ByVal MultiF As Integer) As Integer
B_8158_set_pulser_iptmode(ByVal AxisNo As Integer, ByVal InputMode As Integer, ByVal Inverse As Integer) As Integer

# @ 引数

AxisNo: 移動または位置を変更するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Disable: パルス入力を無効にする

Disable = 1、パルスを使用しない

Disable = 0、パルスを使用する

Dist: 指定された相対移動距離（単位：パルス）

例えば、SpeedLimit を 100pps に設定すると、入力パルス信号速度が 100pps を上回っても、軸は最速の 100pps を超えて移動することはできません。

DivF: 除算係数 (0-2047)

MultiF: 乘算係数 (0-31)

InputMode: PA ピンと PB ピンからの手動パルス入力モードの設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>1X AB 相タイプのパルス入力</td></tr><tr><td>1</td><td>2X AB 相タイプのパルス入力</td></tr><tr><td>2</td><td>4X AB 相タイプのパルス入力</td></tr><tr><td>3</td><td>CW/CCW タイプのパルス入力</td></tr></table>

Inverse: 移動方向をパルス方向と逆にする

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>逆にしない</td></tr><tr><td>1</td><td>移動方向を逆にする</td></tr></table>

# 6.11 モーション・ステータス

# @名称

\_8102\_motion\_done - モーション・ステータスを返す

# @ 說明

\_8102\_motion\_done:

8102 のモーション・ステータスを返します。応答コードは以下の通りです：

<table><tr><td>0</td><td>通常の停止状態</td></tr><tr><td>1</td><td>DR を待機</td></tr><tr><td>2</td><td>CSTA 入力を待機</td></tr><tr><td>3</td><td>内部同期信号を待機</td></tr><tr><td>4</td><td>他の軸が停止するのを待機</td></tr><tr><td>5</td><td>ERC タイマの完了を待機</td></tr><tr><td>6</td><td>方向変更タイマの完了を待機</td></tr><tr><td>7</td><td>バックラックの訂正中</td></tr><tr><td>8</td><td>PA/PB を待機</td></tr><tr><td>9</td><td>FA 速度で動作</td></tr><tr><td>10</td><td>FL 速度で動作</td></tr><tr><td>11</td><td>加速中</td></tr><tr><td>12</td><td>FH 速度で動作</td></tr><tr><td>13</td><td>減速中</td></tr><tr><td>14</td><td>INP を待機</td></tr><tr><td>15</td><td>その他(制御開始)</td></tr><tr><td>16</td><td>SALM</td></tr><tr><td>17</td><td>SPEL</td></tr><tr><td>18</td><td>SMEL</td></tr><tr><td>19</td><td>SEMG</td></tr><tr><td>20</td><td>SSTP</td></tr><tr><td>21</td><td>SERC</td></tr></table>

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8102\_motion\_done(I16 AxisNo)

Visual Basic (Windows 2000/XP)

B\_8102\_motion\_done(ByVal AxisNo As Integer) As Integer

# @ 引数

AxisNo: 移動または位置を変更するよう指定された軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

# 6.12 モーション・インタフェース I/O

# @名称

\_8158\_set\_servo・SVON 信号のオン－オフ状態を設定

\_8158\_set\_pcs\_logic・PCS 信号のロジックを設定

\_8158\_set\_pcs・PCS の位置オーバーライドを可能にする

\_8158\_set\_clr\_mode・CLR信号のモードを設定

\_8158\_set\_inp・INP 信号および動作モードのロジックを設定

\_8158\_set\_alm・ALM 信号および動作モードのロジックを設定

\_8158\_set\_erc・ERC 信号および動作モードのロジックを設定

\_8158\_set\_erc\_out · ERC 信号を出力

\_8158\_clr\_erc · ERC 信号をクリア

\_8158\_set\_sd・SD 信号および動作モードのロジックを設定

\_8158\_enable\_sd・SD信号を使用する

\_8158\_set\_limit\_logic・PEL/MEL 信号のロジックを設定

\_8158\_set\_limit\_mode・PEL/MELの動作モードを設定

\_8158\_get\_io\_status・各 8158 のすべてのモーション I/O ステータスを取得

# @ 說明

\_8158\_set\_servo:

この関数で SVON 信号のオン－オフ状態を設定できます。デフォルト値は 1（オフ）で、SVON は GND にオープンです。

\_8158\_set\_pcs\_logic:

PCS 信号入力のアクティブ・ロジックを設定

\_8158\_set\_pcs:

入力信号 PCS がオンの場合、位置のオーバーライドを可能にします。PCS のターミナル状態は「\_8158\_get\_io\_status」関数でモニタできます。

\_8158\_set\_clr\_mode

CLR 入力信号は指定したカウンタ（コマンド、位置、エラー、汎用カウンタ）をリセットできます。リセット・アクションはこの関数で設定できます。リセット・アクションには 4 つのモードがあります。詳しくは引数の説明を参照してください。

# \_8158\_set\_inp:

サーボ・ドライバのインポジション信号入力のアクティブ・ロジックを設定します。ユーザーはこの関数を使用するかどうかを選択できます。デフォルトは「使用しない」です。

# \_8158\_set\_alm:

サーボ・ドライバのアラーム信号入力のアクティブ・ロジックを設定します。アラーム信号がアクティブの場合、2つの応答モードが使用できます。

# \_8158\_set\_erc:

この関数で ERC のロジックおよびオンタイムを設定できます。また、ERC 信号のパルス幅も設定できます。

# \_8158\_set\_erc\_out:

この関数は ERC 信号を手動で出力するのに使用されます。

# \_8158\_clr\_erc:

この関数は ERC 信号がレベル・タイプの出力に指定された場合の出力をリセットするのに使用されます。

# \_8158\_set\_sd:

機械システムから SD 信号入力のアクティブ・ロジック、ラッチ制御、動作モードを設定します。ユーザーは \_8158\_enable\_sd でこの関数を使用するかどうかを選択できます。デフォルトは「使用しない」です。

# \_8158\_enable\_sd:

SD 信号入力を使用するかどうか設定します。デフォルト設定は「使用しない」です。

# \_8158\_set\_limit\_logic:

EL ロジック、常時開、常時閉を設定します。

# \_8158\_set\_limit\_mode:

EL 信号の応答モードを設定します。

# \_8158\_get\_io\_status:

各軸のすべての I/O ステータスを取得します。各ビットの定義は以下の通りです：

<table><tr><td>ビット</td><td>名称</td><td>説明</td></tr><tr><td>0</td><td>RDY</td><td>RDY ピン入力</td></tr><tr><td>1</td><td>ALM</td><td>アラーム信号</td></tr><tr><td>2</td><td>+EL</td><td>正のリミット・スイッチ</td></tr><tr><td>3</td><td>-EL</td><td>負のリミット・スイッチ</td></tr><tr><td>4</td><td>ORG</td><td>原点スイッチ</td></tr><tr><td>5</td><td>DIR</td><td>DIR 出力</td></tr><tr><td>6</td><td>EMG</td><td>EMG ステータス</td></tr><tr><td>7</td><td>PCS</td><td>PCS 信号入力</td></tr><tr><td>8</td><td>ERC</td><td>ERC ピン出力</td></tr><tr><td>9</td><td>EZ</td><td>インデックス信号</td></tr><tr><td>10</td><td>CLR</td><td>クリア信号</td></tr><tr><td>11</td><td>LTC</td><td>ラッチ信号入力</td></tr><tr><td>12</td><td>SD</td><td>減速信号入力</td></tr><tr><td>13</td><td>INP</td><td>インポジション信号入力</td></tr><tr><td>14</td><td>SVON</td><td>サーボ・オン出力ステータス</td></tr></table>

# @ 文字列

# C/C++(Windows 2000/XP)

I16 \_8158\_set\_servo(I16 AxisNo, I16 on\_off);

I16 \_8158\_set\_pcs\_logic(I16 AxisNo, I16 pcs\_logic);

I16 \_8158\_set\_pcs(I16 AxisNo, I16 enable);

I16 \_8158\_set\_clr\_mode(I16 AxisNo, I16 clr\_mode, I16 targetCounterInBit);

I16 \_8158\_set\_inp(I16 AxisNo, I16 inp\_enable, I16 inp\_logic);

I16 \_8158\_set\_alm(I16 AxisNo, I16 alm\_logic, I16 alm\_mode);

I16 \_8158\_set\_erc(I16 AxisNo, I16 erc\_logic, I16 erc\_pulse\_width, I16 erc\_mode);
I16\_8158\_set\_erc\_out(I16 AxisNo);
I16 \_8158\_clr\_erc(I16 AxisNo);
I16 \_8158\_set\_sd(I16 AxisNo, I16 sd\_logic, I16 sd\_latch, I16 sd\_mode);
I16 \_8158\_enable\_sd(I16 AxisNo, I16 enable);
I16\_8158\_set\_limit\_logic(I16 AxisNo, U16 Logic);
I16 \_8158\_set\_limit\_mode(I16 AxisNo, I16 limit\_mode);
I16 \_8158\_get\_io\_status(I16 AxisNo, U16 \*io\_sts);

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_servo(ByVal AxisNo As Integer, ByVal on\_off As Integer)
As Integer
B\_8158\_set\_pcs\_logic(ByVal AxisNo As Integer, ByVal pcs\_logic As Integer) As Integer
B\_8158\_set\_pcs(ByVal AxisNo As Integer, ByVal enable As Integer) As Integer
B\_8158\_set\_clr\_mode(ByVal AxisNo As Integer, ByVal clr\_mode As Integer, ByVal targetCounterInBit as Integer) As Integer
B\_8158\_set\_inp(ByVal AxisNo As Integer, ByVal inp\_enable As Integer, ByVal inp\_logic As Integer) As Integer
B\_8158\_set\_alm(ByVal AxisNo As Integer, ByVal alm\_logic As Integer, ByVal alm\_mode As Integer) As Integer
B\_8158\_set\_erc(ByVal AxisNo As Integer, ByVal erc\_logic As Integer, ByVal erc\_pulse\_width As Integer, ByVal erc\_mode As Integer) As Integer
B\_8158\_set\_erc\_out(ByVal AxisNo As Integer) As Integer
B\_8158\_clr\_erc(ByVal AxisNo As Integer) As Integer
B\_8158\_set\_sd(ByVal AxisNo As Integer, ByVal sd\_logic As Integer, ByVal sd\_latch As Integer, ByVal sd\_mode As Integer) As Integer
B\_8158\_enable\_sd(ByVal AxisNo As Integer, ByVal Enable As Integer)
As Integer
B\_8158\_set\_limit\_logic(ByVal AxisNo As Integer, ByVal Logic As Integer) As Integer
B\_8158\_set\_limit\_mode(ByVal AxisNo As Integer, ByVal limit\_mode As Integer) As Integer
I16 \_8158\_get\_io\_status(ByVal AxisNo As Integer, io\_sts As Integer) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

on\_off: SVON 信号のオン - オフ状態

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>オン</td></tr><tr><td>1</td><td>オフ</td></tr></table>

pcs\_logic: PCS 信号入力のロジック

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

enable: 使用するかどうかを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>使用しない</td></tr><tr><td>1</td><td>Enable(使用する)</td></tr></table>

clr\_mode: CLR 入力クリア・モードの指定

clr\_mode = 0、フォーリング・エッジでクリア（デフォルト）

clr\_mode = 1、ライジング・エッジでクリア

clr\_mode = 2、低レベルでクリア

clr\_mode = 3、高レベルでクリア

targetCounterInBit: ビットごとでターゲット・カウンタをクリアするかどうかを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>ビット</td><td>説明</td></tr><tr><td>0</td><td>CLR 入力がオンになると、コマンド・カウンタをリセットする</td></tr><tr><td>1</td><td>CLR 入力がオンになると、位置カウンタをリセットする</td></tr><tr><td>2</td><td>CLR 入力がオンになると、エラー・カウンタをリセットする</td></tr><tr><td>3</td><td>CLR 入力がオンになると、汎用位置カウンタをリセットする</td></tr></table>

inp\_enable: INP 機能を使用するかどうかを設定

inp\_enable = 0、使用しない（デフォルト）

inp\_enable = 1、使用する

inp\_logic: INP 信号のアクティブ・ロジックを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

alm\_logic: アラーム信号のアクティブ・ロジックを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

alm\_mode: ALARM 信号を受信したときの応答モード

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>モータを直ちに停止する(デフォルト)</td></tr><tr><td>1</td><td>モータを減速してから停止する</td></tr></table>

erc\_logic: ERC 信号のアクティブ・ロジックを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

erc\_pulse\_width: ERC 信号のパルス幅を設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>12 μs</td></tr><tr><td>1</td><td>102 μs</td></tr><tr><td>2</td><td>409 μs</td></tr><tr><td>3</td><td>1.6 ms</td></tr><tr><td>4</td><td>13 ms</td></tr><tr><td>5</td><td>52 ms</td></tr><tr><td>6</td><td>104 ms</td></tr><tr><td>7</td><td>レベル出力</td></tr></table>

erc\_mode:

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>使用しない</td></tr><tr><td>1</td><td>EL、ALM、EMG 入力で停止した場合、ERC を出力</td></tr><tr><td>2</td><td>原点復帰完了時 ERC を出力</td></tr><tr><td>3</td><td>1 と 2 の両方</td></tr></table>

sd\_logic:

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

sd\_latch: SD 信号のラッチ制御を設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>ラッチしない</td></tr><tr><td>1</td><td>ラッチする</td></tr></table>

sd\_mode: SD 信号の応答モードを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>減速のみ</td></tr><tr><td>1</td><td>減速後、停止</td></tr></table>

enable: 高速フィードの下降点を設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>自動設定</td></tr><tr><td>1</td><td>手動設定(デフォルト)</td></tr></table>

Logic: PEL/MEL のロジックを設定

<table><tr><td>值</td><td>意味</td></tr><tr><td>0</td><td>常時低(常時開)</td></tr><tr><td>1</td><td>常時高(常時閉)</td></tr></table>

limit\_mode:

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>直ちに停止</td></tr><tr><td>1</td><td>減速後、停止</td></tr></table>

\*io\_sts: I/O ステータス。6.12 の関数の説明を参照してください。

# 6.13 割り込み制御

# @名称

\_8158\_int\_control・INT サービスを使用するかどうかを設定

\_8158\_set\_motion\_int\_factor・モーション関連の割り込みのファクタを設定

\_8158\_wait\_error\_interrupt・エラー関連の割り込みを待機

\_8158\_wait\_motion\_interrupt・モーション関連の割り込みを待機

# @ 說明

\_8158\_int\_control:

この関数は Windows の割り込みイベントがホスト PC を制御可能にするのに使用されます。

\_8158\_set\_motion\_int\_factor:

この関数を使えば、イベント割り込みを発生させるモーション関連ファクタを選択できます。\_8158\_int\_control()で割り込みサービスをオンにすると、エラーをマスクすることはできません。割り込み機能が有効になると、\_8158\_wait\_motion\_interrupt()を使用して、イベントを待機できます。

\_8158\_wait\_error\_interrupt:

\_8158\_int\_control() で割り込み機能を有効にすると、この関数を使ってエラーの割り込みを待機できます。動作理論についてはセクション 4.8 を参照してください。

\_8158\_wait\_motion\_interrupt:

\_8158\_int\_control() で割り込み機能を有効にし、\_8158\_set\_motion\_int\_factor() で割り込みファクタを設定すると、この関数を使って特定の割り込みを待機できます。この関数の実行中、イベントがトリガされるか、関数がタイムアウトになるまで、プロセスは停止しません。

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8158\_int\_control(I16 card\_id, I16 intFlag);

I16\_8158\_set\_motion\_int\_factor(I16 AxisNo, U32 int\_factor);
I16 \_8158\_wait\_error\_interrupt(I16 AxisNo, I32 TimeOut\_ms);
I16 \_8158\_wait\_motion\_interrupt(I16 AxisNo, I16 IntFactorBitNo, I32 TimeOut\_ms );

# Visual Basic (Windows 2000/XP)

B\_8158\_int\_control(ByVal card\_id As Integer, ByVal intFlag As Integer)
As Integer
B\_8158\_wait\_error\_interrupt(ByVal AxisNo As Integer, ByVal TimeOut\_ms As Long) As Integer
B\_8158\_wait\_motion\_interrupt(ByVal AxisNo As Integer, ByVal IntFactorBitNo As Integer, ByVal TimeOut\_ms As Long) As Integer
B\_8158\_set\_motion\_int\_factor(ByVal AxisNo As Integer, ByVal int\_factor As Long) As Integer

# @ 引数

card\_id: ターゲットの PCI-8158 カードのインデックスを指定します。card\_id は DIP スイッチ（SW1）によって決定されるか、スロットのシーケンスに依存します。\_8158\_initial() を参照してください。

intFlag: 割り込み機能を使用するかどうかを設定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>使用しない</td></tr><tr><td>1</td><td>Enable(使用する)</td></tr></table>

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

int\_factor: 割り込みファクタ

モーション INT のファクタ

<table><tr><td>値</td><td>意味(0:無効、1:有効)</td></tr><tr><td>ビット</td><td>説明</td></tr><tr><td>0</td><td>常時停止</td></tr><tr><td>1</td><td>バッファ内の次のコマンドを開始</td></tr><tr><td>2</td><td>コマンド・プリレジスタ2はエンプティで、次のコマンドの書き込みが可能</td></tr><tr><td>3</td><td>(逆)(常に0に設定)</td></tr><tr><td>4</td><td>加速開始</td></tr><tr><td>5</td><td>加速終了</td></tr><tr><td>6</td><td>減速開始</td></tr><tr><td>7</td><td>減速終了</td></tr><tr><td>8</td><td>+ソフト・リミットまたはコンパレータ1がオン</td></tr><tr><td>9</td><td>-ソフト・リミットまたはコンパレータ2がオン</td></tr><tr><td>10</td><td>エラー・コンパレータまたはコンパレータ3がオン</td></tr><tr><td>11</td><td>汎用コンパレータまたはコンパレータ4がオン</td></tr><tr><td>12</td><td>トリガ・コンパレータまたはコンパレータ5がオン</td></tr><tr><td>13</td><td>CLR入力でカウンタをリセット</td></tr><tr><td>14</td><td>LTC入力でカウンタをラッチ</td></tr><tr><td>15</td><td>ORG入力でカウンタをラッチ</td></tr><tr><td>16</td><td>SD入力がオン</td></tr><tr><td>17</td><td>(逆)(常に0に設定)</td></tr><tr><td>18</td><td>CSTA入力または_8158_start_move_all()がオン</td></tr><tr><td>19~31</td><td>定義なし(常に0に設定)</td></tr></table>

TimeOut\_ms: タイムアウト間隔（ms 単位）を指定します。TimeOut\_ms がゼロの場合、関数は指定した対象物の状態をテストして結果を正に返します。TimeOut\_ms が -1 の場合、関数のタイムアウト間隔は無効（無期限）になります。

IntFactorBitNo: INT ファクタのビット数を指定します。

例えば、IntFactorBitNo = 4 の場合、「Acceleration Start（加速開始）」の割り込みのファクタを待機します。

# 6.14 位置制御およびカウンタ

# @名称

\_8158\_get\_position・フィードバック位置カウンタの値を取得
\_8158\_set\_position・フィードバック位置カウンタの設定
\_8158\_get\_command・コマンド位置カウンタの値を取得
\_8158\_set\_command・コマンド位置カウンタの設定
\_8158\_get\_error\_counter・位置エラー・カウンタの値を取得
\_8158\_reset\_error\_counter・位置エラー・カウンタのリセット
\_8158\_get\_general\_counter・汎用カウンタの値を取得
\_8158\_set\_general\_counter・汎用カウンタの設定
\_8158\_get\_target\_pos・ターゲット位置レコーダの値を取得
\_8158\_reset\_target\_pos・ターゲット位置レコーダのリセット
\_8158\_get\_res\_distance・モーションから蓄積された残存パルスを取得
\_8158\_set\_res\_distance・残存パルス記録の設定

# @ 說明

\_8158\_get\_position:

この関数はフィードバック位置カウンタの値を表示するのに使用されます。この値は\_8158\_set\_move\_ratio()による移動比設定によってすでに処理されていることに注意してください。移動比が0.5の場合、位置の値は2倍になります。フィードバック・カウンタのソースは外部EA/EBまたは8158の内部パルス出力になるように関数\_8158\_set\_feedback\_src()によって設定できます。

\_8158\_set\_position:

この関数はフィードバック位置カウンタを指定された値を変更するのに使用されます。設定される値は移動比によって処理されることに注意してください。移動比が0.5の場合、設定値は与えられた値の2倍になります。

\_8158\_get\_command:

この関数はコマンド位置カウンタの値を表示するのに使用されます。コマンド位置カウンタのソースは8158のパルス出力です。

# \_8158\_set\_command:

この関数はコマンド位置カウンタの値を変更するのに使用されます。

# \_8158\_get\_error\_counter:

この関数は位置エラー・カウンタの値を表示するのに使用されます。

# \_8158\_reset\_error\_counter:

この関数は位置エラー・カウンタをクリアするのに使用されます。

# \_8158\_get\_general\_counter:

この関数は汎用カウンタの値を表示するのに使用されます。

# \_8158\_set\_general\_counter:

この関数は汎用カウンタのカウンティング・ソースを設定たり、汎用カウンタの値を変更したりするのに使用されます。(デフォルトでは、ソースはパルス入力)

# \_8158\_get\_target\_pos:

この関数はターゲット位置レコーダの値を表示するのに使用されます。ターゲット位置レコーダは 8158 のソフトウェア・ドライバによって管理され、現在の動作モーションが落ち着く位置を記録します。

# \_8158\_reset\_target\_pos:

この関数はターゲット位置レコーダの新しい値を設定するのに使用されます。原点復帰完了時、または関数\_8158\_set\_position()によって新しいフィードバック・カウンタ値を設定した場合、この関数を呼び出す必要があります。

# \_8158\_get\_res\_distance:

この関数は残存距離レコーダの値を表示するのに使用されます。ターゲット位置レコーダは8158のソフトウェア・ドライバによって管理され、現在の動作モーションが落ち着く位置を記録します。

# \_8158\_set\_res\_distance:

この関数は残存距離レコーダの値を変更するのに使用されます。

# @ 文字列

C/C++(Windows 2000/XP)
I16 _8158_get_position(I16 AxisNo, F64 *Pos);
I16 _8158_set_position(I16 AxisNo, F64 Pos);
I16 _8158_get_command(I16 AxisNo, I32 *Command);
I16 _8158_set_command(I16 AxisNo, I32 Command);
I16 _8158_get_error_counter(I16 AxisNo, I16 *error);
I16 _8158_reset_error_counter(I16 AxisNo);
I16 _8158_get_general_counter(I16 AxisNo, F64 *CntValue);
I16 _8158_set_general_counter(I16 AxisNo, I16 CntSrc, F64 CntValue);
I16 _8158_get_target_pos(I16 AxisNo, F64 *T_pos);
I16 _8158_reset_target_pos(I16 AxisNo, F64 T_pos);
I16 _8158_get_res_distance(I16 AxisNo, F64 *Res_Distance);
I16 _8158_set_res_distance(I16 AxisNo, F64 Res_Distance);

Visual Basic (Windows 2000/XP)
B_8158_get_position(ByVal AxisNo As Integer, Pos As Double) As Integer
B_8158_set_position(ByVal AxisNo As Integer, ByVal Pos As Double) As Integer
B_8158_get_command(ByVal AxisNo As Integer, Cmd As Long) As Integer
B_8158_set_command(ByVal AxisNo As Integer, ByVal Cmd As Long) As Integer
B_8158_get_error_counter(ByVal AxisNo As Integer, ByRef error As Integer) As Integer
B_8158_reset_error_counter(ByVal AxisNo As Integer) As Integer
B_8158_set_general_counter(ByVal AxisNo As Integer, ByVal CntSrc As Integer, ByVal CntValue As Double) As Integer
B_8158_get_general_counter(ByVal AxisNo As Integer, ByRef Pos As Double) As Integer

B\_8158\_reset\_target\_pos(ByVal AxisNo As Integer, ByVal Pos As Double) As Integer
B\_8158\_get\_target\_pos(ByVal AxisNo As Integer, ByRef Pos As Double) As Integer
B\_8158\_set\_res\_distance(ByVal AxisNo As Integer, ByVal Res\_Distance As Double) As Integer
B\_8158\_get\_res\_distance(ByVal AxisNo As Integer, ByRef Res\_Distance As Double) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Pos, \*Pos: フィードバック位置カウンタ値(\_8158\_get/ set\_position)

範囲：-134217728-134217727

Cmd, \*Cmd: コマンド位置カウンタ値、

範囲：-134217728-134217727

\*error: 位置エラー・カウンタ値、

範囲：-32768-32767

CntSrc: 汎用カウンタ・ソース

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>コマンド・パルス</td></tr><tr><td>1</td><td>EA/EB</td></tr><tr><td>2</td><td>パルス入力</td></tr><tr><td>3</td><td>システム・クロック $\div$  2</td></tr></table>

CntValue, \*CntValue: カウンタ値

TargetPos, \*TargetPos: ターゲット位置レコーダ値、

範囲：-134217728-134217727

ResDistance, \*ResDistance: 残存距離

# 6.15 位置比較およびラッチ

# @名称

\_8158\_set\_trigger\_logic

\_8158\_set\_trigger\_comparator・トリガ・コマンドの設定

\_8158\_set\_error\_comparator・エラー・コンパレータの設定

\_8158\_set\_general\_comparator・汎用コンパレータの設定

\_8158\_set\_latch\_source・カウンタのラッチ・タイミングの設定

\_8158\_set\_ltc\_logic・LTC 信号のロジックを設定

\_8158\_get\_latch\_data・カウンタからラッチ・データを取得

# @ 說明

\_8158\_set\_trigger\_logic:

この関数はCMP信号のロジックを設定するのに使用されます。

\_8158\_set\_error comparator:

この関数はエラー・コンパレータの比較方法と値を設定するのに使用されます。位置エラー・カウンタの値が比較値に達すると、8158はホストPCに割り込みを送信します。セクション6.14「割り込み制御」も参照してください。

\_8158\_set\_general\_comparator:

この関数は汎用コンパレータの比較ソース・カウンタ、比較方法、値を設定するのに使用されます。比較条件に適合すると、4つの応答のうちの1つが実行されます。詳しい設定方法については、引数の説明を参照してください。

\_8158\_set\_trigger comparator:

この関数はトリガ・コンパレータの比較ソース・カウンタ、比較方法、値を設定するのに使用されます。比較ソース・カウンタの値が比較値に達すると、8158はCMPからパルス出力を発生し、割り込み（event\_int\_status、ビット12）をホストPCに送信します。

\_8158\_set\_latch\_source:

ラッチ・トリガ・ソースには4種類あります。この関数を使うと、カウンタのデータをラッチするイベント・ソースを選択できます。

# \_8158\_set\_ltc\_logic:

この関数はラッチ入力のロジックを設定するのに使用されます。

# \_8158\_get\_latch\_data:

この関数はラッチ信号到達後のカウンタのラッチされた値を表示するのに使用されます。

# @文字列

# C/C++(Windows 2000/XP)

I16\_8158\_set\_trigger\_logic(I16 AxisNo, I16 Logic);
I16 \_8158\_set\_error comparator(I16 AxisNo, I16 CmpMethod, I16 CmpAction, I32 Data);
I16 \_8158\_set\_general comparator(I16 AxisNo, I16 CmpSrc, I16 CmpMethod, I16 CmpAction, I32 Data);
I16 \_8158\_set\_trigger comparator(I16 AxisNo, I16 CmpSrc, I16 CmpMethod, I32 Data);
I16\_8158\_set\_latch\_source(I16 AxisNo, I16 LtcSrc);
I16 \_8158\_set\_ltc\_logic(I16 AxisNo, I16 LtcLogic);
I16 \_8158\_get\_latch\_data(I16 AxisNo, I16 CounterNo, F64 \*Pos);

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_trigger\_logic(ByVal AxisNo As Integer, ByVal Logic As Integer) As Integer
B\_8158\_set\_error comparator(ByVal AxisNo As Integer, ByVal CmpMethod As Integer, ByVal CmpAction As Integer, ByVal Data As Long) As Integer
B\_8158\_set\_general comparator(ByVal AxisNo As Integer, ByVal CmpSrc As Integer, ByVal CmpMethod As Integer, ByVal CmpAction As Integer, ByVal Data As Long) As Integer
B\_8158\_set\_trigger comparator(ByVal AxisNo As Integer, ByVal CmpSrc As Integer, ByVal CmpMethod As Integer, ByVal Data As Long) As Integer
B\_8158\_set\_latch\_source(ByVal AxisNo As Integer, ByVal LtcSrc As Integer) As Integer
B\_8158\_set\_ltc\_logic(ByVal AxisNo As Integer, ByVal StcLogic As Integer) As Integer

B\_8158\_get\_latch\_data(ByVal AxisNo As Integer, ByVal CounterNo As Integer, Pos As Double) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Logic: 比較するトリガのロジック

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

CmpSrc: 比較するソース・カウンタ

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>コマンド・カウンタ</td></tr><tr><td>1</td><td>フィードバック・カウンタ</td></tr><tr><td>2</td><td>エラー・カウンタ</td></tr><tr><td>3</td><td>汎用カウンタ</td></tr></table>

CmpMethod: 比較方法

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>比較しない(無効)</td></tr><tr><td>1</td><td>データ = ソース・カウンタ(方向独立)</td></tr><tr><td>2</td><td>データ = ソース・カウンタ(カウント・アップのみ)</td></tr><tr><td>3</td><td>データ = ソース・カウンタ(カウント・ダウンのみ)</td></tr><tr><td>4</td><td>データ &gt; ソース・カウンタ</td></tr><tr><td>5</td><td>データ &lt; ソース・カウンタ</td></tr></table>

Data: 比較值（位置）

CmpAction:

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>アクションなし</td></tr><tr><td>1</td><td>直ちに停止</td></tr><tr><td>2</td><td>減速後、停止</td></tr></table>

ltc\_src:

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>LTC ピン入力</td></tr><tr><td>1</td><td>ORG ピン入力</td></tr><tr><td>2</td><td>汎用コンパレータの条件が適合</td></tr><tr><td>3</td><td>トリガコンパレータの条件が適合</td></tr></table>

ltc\_logic: LTC 信号作動エッジ

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>負ロジック</td></tr><tr><td>1</td><td>正ロジック</td></tr></table>

CounterNo: ラッチするカウンタを指定

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>コマンド・カウンタ</td></tr><tr><td>1</td><td>フィードバック・カウンタ</td></tr><tr><td>2</td><td>エラー・カウンタ</td></tr><tr><td>3</td><td>汎用カウンタ</td></tr></table>

\*Pos: ラッチ・データ（位置）

# 6.16 連続モーション

# @名称

\_8158\_set\_continuous\_move・絶対モーションの連続モーションを有効にする

\_8158\_check\_continuous\_buffer・バッファがエンプティかどうかを確認

\_8158\_dwell\_move・タイマ移動の設定

# @ 說明

\_8158\_set\_continuous\_move:

この関数は連続モーションのコマンド列の前後に必要とされます。

\_8158\_check\_continuous\_buffer:

この関数はコマンド・プリレジスタ（バッファ）がエンプティかどうかを検出するに使用されます。コマンド・プリレジスタ（バッファ）がエンプティになると、次のモーション・コマンドを書き込めます。エンプティではないと、新しいコマンドは2番目のコマンド・プリレジスタに直前のコマンドを上書きします。1の応答コードはバッファに空きがないことを意味します。バッファに空きがある場合の応答コードは0です。

\_8158\_dwell\_move:

この関数は、指定された時間実際のモーションを実行しないタイマ移動を開始するのに使用されます。

例：

```c
_8158_set_continuous_move(2, 1); // start continuous move
_8158_start_tr_move(2, 20000.0, 10.0, 10000.0, 0.1, 0.1);
_8158_dwell_move(2, 2000); //dwell move for 2 sec.
_8158_start_sr_move(2, 20000.0, 10.0, 10000.0, 0.1, 0.1, 0, 0);
_8158_set_continuous_move(2, 0); //end continuous move
```

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8158\_set\_continuous\_move(I16 AxisNo, I16 Enable);

I16 \_8158\_check\_continuous\_buffer(I16 AxisNo);

I16 \_8158\_dwell\_move(I16 AxisNo, F64 miniSecond);

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_continuous\_move(ByVal AxisNo As Integer, ByVal Enable As Integer) As Integer

B\_8158\_check\_continuous\_buffer(ByVal AxisNo As Integer) As Integer

B\_8158\_dwell\_move(ByVal AxisNo As Integer, ByVal miniSecond As Double) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Enable: 連続モーション・スイッチのロジック

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>連続モーション列終了(無効)</td></tr><tr><td>1</td><td>連続モーション列開始(有効)</td></tr></table>

millisecond: タイマ移動の時間、単位は ms

# 6.17 多軸同時動作

# @名称

\_8158\_set\_tr\_move\_all・多軸同時動作のセットアップ

\_8158\_set\_ta\_move\_all・多軸同時動作のセットアップ

\_8158\_set\_sr\_move\_all・多軸同時動作のセットアップ

\_8158\_set\_sa\_move\_all・多軸同時動作のセットアップ

\_8158\_start\_move\_all・多軸台形プロファイル・モーションを開始

\_8158\_stop\_move\_all・多軸モーションの同時停止

# @ 說明

上記関数は異なるカードの場合も含む多軸同時動作で使用します。多軸同時動作は指定した軸を同時にスタートまたは停止させる動作です。移動する軸はパラメータ「AxisArray」で指定され、軸数は\_8158\_set\_tr\_move\_all()のパラメータ「TotalAxes」で定義されます。

\_8158\_set\_xx\_move\_all() を使って正しくセットアップすると、指定したすべての軸は関数 \_8158\_start\_move\_all() で相対台形移動を開始し、\_8158\_stop\_move\_all() で停止します。両方の関数は指定したすべての軸のスタート / ストップのモーションが同時に開始するのを保証します。上記の2つの関数が必要な場合、セクション2.6に従って接続しなければならないことに注意してください。

以下のコードは上記関数の使用方法を示しています。このコードで、軸0と軸1は距離80000.0と120000.0にそれぞれ移動します。距離の比に比例した速度と加速度を選択すると、両方の軸はそれぞれの終点に同時に到達します。

[例]

```c
I16 axes[2] = {0, 1};
F64 dist[2] = {80000.0, 120000.0},
F64 str_vel[2] = {0.0, 0.0},
F64 max_vel[2] = {4000.0, 6000.0},
F64 Tacc[2] = {0.1, 0.6},
F64 Tdec[2] = {0.1, 0.6};

_8158_set_tr_move_all(2, axes, dist, str_vel, max_vel, Tacc, Tdec);
_8158_start_move_all(axes[0]);
```

# @ 文字列

# C/C++(Windows 2000/XP)

I16 \_8158\_set\_tr\_move\_all(I16 TotalAxes, I16 \*AxisArray, F64 \*DistA, F64 \*StrVelA, F64 \*MaxVelA, F64 \*TaccA, F64 \*TdecA);
I16 \_8158\_set\_ta\_move\_all(I16 TotalAx, I16 \*AxisArray, F64 \*PosA, F64 \*StrVelA, F64 \*MaxVelA, F64 \*TaccA, F64 \*TdecA);
I16 \_8158\_set\_sr\_move\_all(I16 TotalAx, I16 \*AxisArray, F64 \*DistA, F64 \*StrVelA, F64 \*MaxVelA, F64 \*TaccA, F64 \*TdecA, F64 \*SVaccA, F64 \*SVdecA);
I16 \_8158\_set\_sa\_move\_all(I16 TotalAx, I16 \*AxisArray, F64 \*PosA, F64 \*StrVelA, F64 \*MaxVelA, F64 \*TaccA, F64 \*TdecA, F64 \*SVaccA, F64 \*SVdecA);
I16 \_8158\_start\_move\_all(I16 FirstAxisNo);
I16 \_8158\_stop\_move\_all(I16 FirstAxisNo);

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_tr\_move\_all(ByVal TotalAxes As Integer, ByRef AxisArray As Integer, ByRef DistA As Double, ByRef StrVelA As Double, ByRef MaxVelA As Double, ByRef TaccA As Double, ByRef TdecA As Double) As Integer
B\_8158\_set\_sa\_move\_all(ByVal TotalAxes As Integer, ByRef AxisArray As Integer, ByRef PosA As Double, ByRef StrVelA As Double, ByRef MaxVelA As Double, ByRef TaccA As Double, ByRef TdecA As Double, ByRef SVaccA As Double, ByRef SVdecA As Double) As Integer
B\_8158\_set\_ta\_move\_all(ByVal TotalAxes As Integer, ByRef AxisArray As Integer, ByRef PosA As Double, ByRef StrVelA As Double, ByRef MaxVelA As Double, ByRef TaccA As Double, ByRef TdecA As Double) As Integer
B\_8158\_set\_sr\_move\_all(ByVal TotalAxes As Integer, ByRef AxisArray As Integer, ByRef DistA As Double, ByRef StrVelA As Double, ByRef MaxVelA As Double, ByRef TaccA As Double, ByRef TdecA As Double, ByRef SVaccA As Double, ByRef SVdecA As Double) As Integer
B\_8158\_start\_move\_all(ByVal FirstAxisNo As Integer) As Integer
B\_8158\_stop\_move\_all(ByVal FirstAxisNo As Integer) As Integer

# @ 引数

TotalAxes: 同時モーションの軸数

\*AxisArray: 移動するように指定された軸番号の配列

\*DistA: 指定された距離の配列（単位：パルス）

\*StrVelA: 初速度の配列（単位：パルス / 秒）

\*MaxVelA: 最大速度の配列（単位：パルス / 秒）

\*TaccA: 加速時間の配列（単位：秒）

\*TdecA: 減速時間の配列（単位：秒）

\*PosA: 指定された位置の配列（単位：パルス）

\*SvaccA: S 曲線加速が実行される指定された速度間隔の配列

\*SvdecA: S 曲線減速が実行される指定された速度間隔の配列

FirstAxisNo: AxisArray の最初のエレメント

# 6.18 汎用 DIO

# @名称

\_8158\_set\_gpio\_output・デジタル出力の設定

\_8158\_get\_gpio\_output・デジタル出力の取得

\_8158\_get\_gpio\_input・デジタル入力の取得

\_8158\_set\_gpio\_input\_function · デジタル入力の信号タイプを設定

# @ 說明

\_8158\_set\_gpio\_output:

PCI-8158 は 8 つのデジタル出力チャンネルを備えています。この関数を使えば、デジタル出力を制御できます。

\_8158\_get\_gpio\_output:

この関数はデジタル出力のステータスを取得するのに使用されます。

\_8158\_get\_gpio\_input:

PCI-8158 は 8 つのデジタル入力チャンネルを備えています。この関数を使えば、デジタル出力のステータスを取得できます。

\_8158\_set\_gpio\_input\_function:

PCI-8158 は 8 つのデジタル入力チャンネルを備えています。この関数を使えば、複数の入力信号の 1 つを特定の DI チャンネルに設定できます。入力信号には、LTCn、SDn、PCSn、CLRn、EMG が含まれます。(n は軸のインデックス)

# @ 文字列

C/C++(Windows 2000/XP)
```c
I16 _8158_set_gpio_output(I16 card_id, I16 DoValue);
I16 _8158_get_gpio_output(I16 card_id, I16 * DoValue);
I16 _8158_get_gpio_input(I16 card_id, I16 * DiValue);
I16 _8158_set_gpio_input_function(I16 card_id, I16 Channel, I16Select, I16 Logic);
```

# Visual Basic (Windows 2000/XP)

B\_8158\_set\_gpio\_output(ByVal card\_id As Integer, ByVal DoValue As Integer) As Integer
B\_8158\_get\_gpio\_output(ByVal card\_id As Integer, DoValue As Integer)
As Integer
B\_8158\_get\_gpio\_input(ByVal card\_id As Integer, DiValue As Integer) As Integer
B\_8158\_set\_gpio\_input\_function(ByVal card\_id As Integer, ByVal Channel As Integer, ByVal Select As Integer, ByVal Logic As Integer) As Integer

# @ 引数

card\_id: PCI-8158 カードのインデックスを指定します。card\_id は DIP スイッチ（SW1）によって決定されるか、スロットのシーケンスに依存します。\_8158\_initial() を参照してください。

DoValue, \*DoValue: デジタル出力値。Bit 0-7: D\_out0-7。

\*DiValue: デジタル入力値、Bit 0-7: D\_in0-7

Channel: デジタル・チャンネル DI0 - DI7

Select: 信号タイプの選択

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>汎用 DI(デフォルト)</td></tr><tr><td>1</td><td>LTC(アクティブ低)</td></tr><tr><td>2</td><td>SD(アクティブ低)</td></tr><tr><td>3</td><td>PCS(アクティブ低)</td></tr><tr><td>4</td><td>CLR(アクティブ低)</td></tr><tr><td>5</td><td>EMG(アクティブ低)</td></tr></table>

Logic: 入力信号のロジック

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>逆にしない(デフォルト)</td></tr><tr><td>值</td><td>意味</td></tr><tr><td>1</td><td>逆</td></tr></table>

# 6.19 ソフト・リミット

# @名称

\_8158\_disable\_soft\_limit・ソフト・リミット機能を無効にする

\_8158\_enable\_soft\_limit・ソフト・リミット機能を有効にする

\_8158\_set\_soft\_limit・ソフト・リミットの設定

# @ 說明

\_8158\_disable\_soft\_limit:

この関数はソフト・リミット機能を無効にするのに使用されます。

\_8158\_enable\_soft\_limit:

この関数はソフト・リミット機能を有効にするのに使用されます。同機能を有効にすると、ソフト・リミットのアクションは実際のリミットと全く同じになります。

\_8158\_set\_soft\_limit:

この関数はソフト・リミット値を設定するのに使用されます。

# @ 文字列

C/C++(Windows 2000/XP)

I16 \_8158\_disable\_soft\_limit(I16 AxisNo);
I16 \_8158\_enable\_soft\_limit(I16 AxisNo, I16 Action);
I16\_8158\_set\_soft\_limit(I16 AxisNo, I32 PlusLimit, I32 MinusLimit);

Visual Basic (Windows 2000/XP)

B\_8158\_disable\_soft\_limit(ByVal AxisNo As Integer) As Integer
B\_8158\_enable\_soft\_limit(ByVal AxisNo As Integer, ByVal Action As Integer) As Integer
B\_8158\_set\_soft\_limit(ByVal AxisNo As Integer, ByVal PlusLimit As Long, ByVal MinusLimit As Long) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Action: ソフト・リミットの応答方法

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>INT のみ</td></tr><tr><td>1</td><td>直ちに停止</td></tr><tr><td>2</td><td>減速後、停止</td></tr></table>

PlusLimit: ソフト・リミット値、正方向

MinusLimit: ソフト・リミット値、負方向

# 6.20 バックラッシュ補正 / 振動抑制

# @名称

\_8158\_backlash\_comp・バックラッシュ調整パルスを補正に設定

\_8158\_suppress\_vibration・振動抑制時間の設定

\_8158\_set\_fa\_speed・FA 速度の設定

# @ 說明

\_8158\_backlash\_comp:

方向が変更されると、8158はコマンドを送信する前に、バックラッシュ調整パルスを出力します。この関数は補正パルス数を設定するのに使用されます。

\_8158\_suppress\_vibration:

この関数は、コマンド移動完了直後に負方向のパルスと正方向のパルスを1つずつ出力することで、機械システムの振動を抑制するのに使用されます。

\_8158\_set\_fa\_speed:

この関数はバックラッシュ補正またはスリップ補正のための低速度を指定するのに使用されます。また、原点復帰動作のための逆の低速度としても使用されます。

# @ 文字列

C/C++(Windows 2000/XP)

I16\_8158\_backlash\_comp(I16 AxisNo, I16 CompPulse, I16 Mode);

I16 \_8158\_suppress\_vibration(I16 AxisNo, U16 ReverseTime,

U16 ForwardTime);

I16 \_8158\_set\_fa\_speed(I16 AxisNo, F64 FA\_Speed);

Visual Basic (Windows 2000/XP)

B\_8158\_backlash\_comps (ByVal AxisNo As Integer, ByVal CompPulse As Integer, ByVal Mode As Integer) As Integer

B\_8158\_suppress\_vibration(ByVal AxisNo As Integer, ByVal ReverseTime As Integer, ByVal ForwardTime As Integer) As Integer

B\_8158\_set\_fa\_speed(ByVal AxisNo As Integer, ByVal FA\_Speed As Double) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

CompPulse: 指定された補正パルス数、12 ビット

モード：

<table><tr><td>値</td><td>意味</td></tr><tr><td>0</td><td>電源オフ</td></tr><tr><td>1</td><td>バックラッシュ補正を有効にする</td></tr><tr><td>2</td><td>スリップ補正</td></tr></table>

ReverseTime: 指定された逆進時間、0 - 65535、単位 1.6 us

ForwardTime: 指定された前進時間、0 - 65535、単位 1.6 us

FA\_Speed: FA 速度（単位：パルス / 秒）

# 6.21 速度プロファイルの計算

# @名称

\_8158\_get\_tr\_move\_profile・相対台形速度プロファイルを取得
\_8158\_get\_ta\_move\_profile・絶対台形速度プロファイルを取得
\_8158\_get\_sr\_move\_profile・相対 S 曲線速度プロファイルを取得
\_8158\_get\_sa\_move\_profile・絶対 S 曲線速度プロファイルを取得

# @ 說明

\_8158\_get\_tr\_move\_profile:

この関数は相対台形速度プロファイルを取得するのに使用されます。この関数を使えば、実行前に実際の速度プロファイルを取得できます。

\_8158\_get\_ta\_move\_profile:

この関数は絶対台形速度プロファイルを取得するのに使用されます。この関数を使えば、実行前に実際の速度プロファイルを取得できます。

\_8158\_get\_sr\_move\_profile:

この関数は相対S曲線速度プロファイルを取得するのに使用されます。この関数を使えば、実行前に実際の速度プロファイルを取得できます。

\_8158\_get\_sa\_move\_profile:

この関数は絶対S曲線速度プロファイルを取得するのに使用されます。この関数を使えば、実行前に実際の速度プロファイルを取得できます。

# @ 文字列

C/C++(Windows 2000/XP)
```txt
I16 _8158_get_tr_move_profile(I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 *pStrVel, F64 *pMaxVel, F64 *pTacc, F64 *pTdec, F64 *pTconst);
I16 _8158_get_ta_move_profile(I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 *pStrVel, F64 *pMaxVel, F64 *pTacc, F64 *pTdec, F64 *pTconst);
```

I16 \_8158\_get\_sr\_move\_profile(I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec, F64 \*pStrVel, F64 \*pMaxVel, F64 \*pTacc, F64 \*pTdec, F64 \*pSVacc, F64 \*pSVdec, F64 \*pTconst);

I16 \_8158\_get\_sa\_move\_profile(I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec, F64 \*pStrVel, F64 \*pMaxVel, F64 \*pTacc, F64 \*pTdec, F64 \*pSVacc, F64 \*pSVdec, F64 \*pTconst);

# Visual Basic (Windows 2000/XP)

B\_8158\_get\_tr\_move\_profile(ByVal AxisNo As Integer, ByVal Dist As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByRef pStrVel As Double, ByRef pMaxVel As Double, ByRef pTacc As Double, ByRef pTdec As Double, ByRef pTconst As Double) As Integer

B\_8158\_get\_ta\_move\_profile(ByVal AxisNo As Integer, ByVal Pos As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByRef pStrVel As Double, ByRef pMaxVel As Double, ByRef pTacc As Double, ByRef pTdec As Double, ByRef pTconst As Double) As Integer

B\_8158\_get\_sr\_move\_profile(ByVal AxisNo As Integer, ByVal Dist As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double, ByRef pStrVel As Double, ByRef pMaxVel As Double, ByRef pTacc As Double, ByRef pTdec As Double, ByRef pSVacc As Double, ByRef pSVdec As Double, ByRef pTconst As Double) As Integer

B\_8158\_get\_sa\_move\_profile(ByVal AxisNo As Integer, ByVal Pos As Double, ByVal StrVel As Double, ByVal MaxVel As Double, ByVal Tacc As Double, ByVal Tdec As Double, ByVal SVacc As Double, ByVal SVdec As Double, ByRef pStrVel As Double, ByRef pMaxVel As Double, ByRef pTacc As Double, ByRef pTdec As Double, ByRef pSVacc As Double, ByRef pSVdec As Double, ByRef pTconst As Double) As Integer

# @ 引数

AxisNo: ターゲット軸の軸番号

<table><tr><td>card_id</td><td>実際の軸</td><td>AxisNo</td></tr><tr><td rowspan="4">0</td><td>0</td><td>0</td></tr><tr><td>1</td><td>1</td></tr><tr><td>...</td><td>...</td></tr><tr><td>7</td><td>7</td></tr><tr><td rowspan="3">1</td><td>0</td><td>8</td></tr><tr><td>1</td><td>9</td></tr><tr><td>...</td><td>...</td></tr></table>

Dist: 指定された相対距離（単位：パルス）

Pos: 指定された絶対位置（単位：パルス）

StrVel: 初速度（単位：パルス / 秒）

MaxVel: 最大速度（単位：パルス / 秒）

Tacc: 加速時間（单位：秒）

Tdec: 減速時間（单位：秒）

SVacc: 加速時の S 曲線エリア（単位：パルス / 秒）

注意: 純粋な S 曲線では SVacc = 0。詳しくはセクション 4.2.4 を参照

SVdec: 減速時の S 曲線エリア（単位：パルス / 秒）

注意: 純粋な S 曲線では SVdec = 0。詳しくはセクション 4.2.4 を参照

\*pStrVel: 計算上の初速度

\*pMaxVel: 計算上の最大速度

\*pTacc: 計算上の加速時間

\*pTdec: 計算上の減速時間

\*pSVacc: 計算上の加速時の S 曲線エリア

\*pSVdec: 計算上の減速時の S 曲線エリア

\*pTconst: 一定速度時間（最大速度）

# 6.22 応答コード

応答コードは「8158\_err.h」で定義されます。意味は以下の表の通りです。

<table><tr><td>コード</td><td>意味</td></tr><tr><td>0</td><td>エラーなし</td></tr><tr><td>-10000</td><td>カード番号エラー</td></tr><tr><td>-10001</td><td>OS バージョン・エラー</td></tr><tr><td>-10002</td><td>エラーコードの ID 衝突</td></tr><tr><td>-10300</td><td>他のタスクを処理中</td></tr><tr><td>-10301</td><td>カードがありません。</td></tr><tr><td>-10302</td><td>ドライバを開けません。</td></tr><tr><td>-10303</td><td>ID マッピング・エラー</td></tr><tr><td>-10304</td><td>トリガ・チャンネル・エラー</td></tr><tr><td>-10305</td><td>トリガ・タイプ・エラー</td></tr><tr><td>-10306</td><td>イベントはすでに有効になっています。</td></tr><tr><td>-10307</td><td>イベントはまだ有効になっていません。</td></tr><tr><td>-10308</td><td>オンボード FIFO に空きがありません。</td></tr><tr><td>-10309</td><td>未知のコマンド・タイプ</td></tr><tr><td>-10310</td><td>未知のチップ・タイプ</td></tr><tr><td>-10311</td><td>カードが初期化されていません。</td></tr><tr><td>-10312</td><td>位置が範囲外です。</td></tr><tr><td>-10313</td><td>モーションがビジーです。</td></tr><tr><td>-10314</td><td>速度エラー</td></tr><tr><td>-10315</td><td>減速点エラー</td></tr><tr><td>-10316</td><td>軸範囲エラー</td></tr><tr><td>-10317</td><td>比較パラメータ・エラー</td></tr><tr><td>-10318</td><td>比較方法が無効です。</td></tr><tr><td>-10319</td><td>軸はすでに停止しています。</td></tr><tr><td>-10320</td><td>軸 INT 待機エラー</td></tr><tr><td>-10321</td><td>ユーザー・コードを書き込めません。</td></tr><tr><td>-10322</td><td>配列サイズが制限を超えています。</td></tr><tr><td>-10323</td><td>ファクタ番号エラー</td></tr><tr><td>-10324</td><td>範囲を有効にできません。</td></tr><tr><td>-10325</td><td>自動加速時間エラー</td></tr><tr><td>-10326</td><td>タイマ時間エラー</td></tr><tr><td>-10327</td><td>タイマ距離エラー</td></tr><tr><td>-10328</td><td>新しい位置を設定できません。</td></tr><tr><td>-10329</td><td>モーションが動作していません。</td></tr><tr><td>-10330</td><td>速度変更時間エラー</td></tr><tr><td>-10331</td><td>速度ターゲット・エラー</td></tr><tr><td>-10332</td><td>速度の割合に問題があります。</td></tr><tr><td>-10333</td><td>位置逆進変更エラー</td></tr><tr><td>-10334</td><td>カウンタ番号エラー</td></tr><tr><td>-10335</td><td>GPIO 入力関数パラメータ・エラー</td></tr><tr><td>-10336</td><td>チャンネル番号エラー</td></tr><tr><td>-10337</td><td>ERC モード・エラー</td></tr><tr><td>-10338</td><td>セキュリティ・コード・エラー</td></tr></table>

# 7 接続例

この章では PCI-8158、サーボ・ドライバ、ステッピング・ドライバの接続例を紹介します。

# 7.1 配線の概要

PCI-8158 とパルス入力サーボ・ドライバまたはステッピング・ドライバの接続は主要な接続となります。PCI-8158 と DIN-814M-J3A の接続方法は下図の通りです。

![Based on the provided image, here is the accurate and concise description of the flowchart:\n\n**Labeled Blocks:**\n*   Mitsubishi J3A\n*   SCSI_VHDCI 100p 2M\n*   PCI-8158\n*   DIN-814M-J3A\n*   IPC\n*   MEL ORG PEL\n\n**Connections:**\n*   Red arrows originate from **SCSI_VHDCI 100p 2M** and point to **Mitsubishi J3A**, **PCI-8158**, and **DIN-814M-J3A**.\n*   A red arrow points downward from **PCI-8158** to **IPC**.\n*   A dashed arrow originates from **MEL ORG PEL** and points to the mechanical linear stage (the unlabeled hardware component).](.pci-8158-50-11139-1000-200jp-en/b6b20bd93615af6a0129021efede56913455b31bcbcc5daf128280769e44b668.jpg)

# 7.2 端子ボードのユーザー・ガイド

端子ボードの個別のユーザー・ガイドを参照してください。対応している端子ポートは以下の通りです：

<table><tr><td>Mitsubishi J2 Super</td><td>DIN-814M</td></tr><tr><td>Mitsubishi J3A</td><td>DIN-814M-J3A</td></tr><tr><td>Yaskawa Sigma II</td><td>DIN-814Y</td></tr><tr><td>Panasonic MINAS A4</td><td>DIN-814P-A4</td></tr></table>

# 保証方針

ADLINK をお選びくださりありがとうございました。お客様の権利を理解し、ADLINK が提供するアフターサービスを利用できるように、以下の内容を注意深くお読みください。

1. ADLINK 製品を使用する前に、ユーザーマニュアルをお読みになり、指示に正しく従ってください。損傷のある製品を返却する場合は、RMA 申込書を以下のサイトからダウンロードし、必要事項を記入して添付してください：http://rma.adlinktech.com/policy/

2. すべての ADLINK 製品の保証期間は 2 年間ですが、中国で販売された製品の保証期間は 1 年間です：

▶ 保証期間は製品が ADLINK の工場から出荷された日付から始まります。
▶ ADLINK が製造したのではない周辺機器および他社製品には最初の製造元の保証が適用されます。
▶ ストレージ・デバイス（ハードディスクやフラッシュカードなど）を含む製品を返却する場合はデータのバックアップを取ってください。ADLINKはデータ損失の責任を負いません。
▶ ADLINK のシステムでは必ずライセンスを正しく取得したソフトウェアを使用してください。ADLINK は海賊版ソフトウェアの使用を禁止しており、そのようなソフトウェアを使用したシステムにサービスを提供することはありません。ADLINK はユーザーがライセンスのないソフトウェアをインストールした製品に対してはいかなる法的責任も負いません。
一般的修理では、周辺アクセサリ製品は取り外してください。周辺機器を含める必要がある場合は、送付したアイテムを RMA 要求確認用紙に必ず明記してください。ADLINK は RMA 要求確認用紙に記載されていないアイテムに対して責任を負いません。

3. 以下の条件に該当する場合、修理サービスに ADLINK の保証は適用されません：

▶ ユーザーマニュアルの指示に従わないで生じた損傷
▶ 製品の輸送中にユーザーの過失で生じた損傷
▶ 火災、地震、洪水、落雷、汚染などの自然現象または変圧器の不正な使用による損傷
▶ 不適切な保存環境（例えば、高温、高湿度、揮発性化学物質など）によって生じた損傷
▶ お客様 / ユーザーがバッテリの交換中または交換後にバッテリの液漏れによって生じた損傷
▶ ADLINK の技術者以外の無資格者による不正な修理によって生じた損傷
▶ シリアル番号が変更または損傷された製品はサービスの対象になりません。
▶ この保証の移譲または延期はできません。
▶ その他の製品に ADLINK の保証は適用されません。

4. 損傷した製品を ADLINK または販売店に返却する場合、郵送費はお客様が負担するものとします。

5. 製品修理の期間短縮と品質向上のため、ADLINK のウェブサイト（http://rma.adlinktech.com/policy）から RMA 申込書をダウンロードしてください。RMA 用紙が添付されている製品の修理は優先されます。

ご質問があれば、ADLINK の FAE スタッフ（以下のアドレス）に e メールでお問い合わせください：

service@adlinktech.com.
[🔗 Link to the original document](.pci-8158-50-11139-1000-200jp-en/pci-8158-50-11139-1000-200jp-en.pdf)
