# PCI-8158

고밀도 & 진보된

8 축 서보 / 스테퍼

모션 제어 카드

매뉴얼 수정 : 2.00

수정 일자 : 2006 년 8 월 5 일

2012 년 1 월 31 일자 번역

부품 번호: 50-11139-2B00

![The image features a white recycling symbol set against a solid black circular background. The symbol consists of three white arrows arranged in a triangular formation, with each arrow pointing to the next in a continuous, chasing loop. At the tail end of each arrow, there are parallel striped lines that curve along the arrow's path. There is no text present in the image.](.pci-8158-korean-50-11139-2b00-200-en/87879f80610c2b2405e6fc54ee88645565be53ee996ee180a8b3198a77724989.jpg)
Recycled Paper

Copyright 2012 ADLINK TECHNOLOGY INC.

모든 권리를 유보합니다 .

이 문서의 정보는 신뢰성 , 디자인 , 기능의 향상을 위해 사전 예고없이 변경될 수 있으며 이는 제조업자의 책무를 대표하지는 않습니다 .

제조업자는 그러한 손실의 가능성을 언급했더라도 제품이나 매뉴얼을 사용하거나 사용할 수 없게되어 발생하는 직접 , 간접 , 특별 ,부수적 , 결과적 손해에 대하여 어떠한 경우에도 책임을 지지 않습니다 .

이 문서는 저작권에 의해 보호되는 재산적 정보를 포함하고 있으며 모든 권리를 유보합니다 . 이 매뉴얼의 어떠한 부분도 제조업자의 사전 서면 허가 없이 기계적 , 전자적 또는 다른 어떠한 형태로의 복제는 금합니다 .

상표

NuDAQ, NuIPC, DAQBench 는 ADLINK TECHNOLOGY INC 의등록된 상표입니다 .

여기 언급된 제품의 이름은 오직 식별을 목적으로만 사용되며 상표 및 / 또는 각 회사의 등록된 상표 일 수 있습니다 .

# 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

신속하고 정확한 서비스를 위해 이 서비스 폼을 이메일 또는 팩스로 보내주시기 바랍니다 .

<table><tr><td colspan="2">회사 정보</td></tr><tr><td>회사 / 단체</td><td></td></tr><tr><td>담당자</td><td></td></tr><tr><td>E-mail 주소</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:M/B: CPU:Chipset: BIOS:</td></tr></table>

문제에 대한 자세한 설명을 써 주시기 바랍니다 :

의도적인 공백 페이지

# 목 차

# List of Tables...... v

# List of Figures ....... . vi

# 1 소 개 .....

1.1 특 징.... 5
1.2 상세 요약.... 6
1.3 소프트웨어 지원 . 8

프로그램 라이브러리 . .8

MotionCreatorPro .8

1.4 사용 가능한 터미널 보드 8

# 2 PCI-8158 설치... 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 PCI-8158 신호 연결.... 19

3.1 펄스 출력 신호 OUT, DIR.... 20
3.2 인코더 피드백 신호 EA, EB 와 EZ .. 23

라인 드라이버 출력 연결 .25

오픈 컬렉터 출력 연결 .25

3.3 원점 신호 ORG .. 27
3.4 End-Limit 신호 PEL 과 MEL .. 28
3.5 In-position 신호 INP ... 29
3.6 경보 신호 ALM.. 30
3.7 편차 카운터 클리어 신호 ERC.. 31
3.8 범용 신호 SVON.. 32

3.9 범용 신호 RDY 33
3.10 다기능 출력 핀 : DO/CMP . . 34
3.11 다기능 입력 핀 : DI/LTC/SD/PCS/CLR/EMG... . 35
3.12 펄스 입력 신호 PA, PB (PCI-8158)... . 36
3.13 동시 시작 / 정지 신호 STA 와 STP... 37

# 4 동작 원리 ... .. 41

4.1 모션 제어기의 분류... . 41

전압 타입의 모션 제어 인터페이스 . ..41
펄스 타입의 모션 제어 인터페이스 . ..42
네트워크 타입의 모션 제어 인터페이스 . ..42
소프트웨어 실시간 모션 제어 커널 ..42
DSP 기반의 모션 제어 커널 ..43
ASIC 기반의 모션 제어 커널 ..43
모든 모션 제어 타입의 비교표 .. ..44
PCI-8158 의 모션 제어기 타입 . ..44

4.2 모션 제어 모드. . 45

좌표 시스템 ... 45
절대 , 상대 위치 이동 ..46
Trapezoidal 속도 프로파일 ... 47
S- 커브와 Bell- 커브 속도 프로파일 .. 47
속도 모드 ..49
한 축의 위치 모드 ..50
두 축의 선형 보간 위치 모드 ..51
두 축간 원형 보간 모드 ..52
연속적 모션 ..53
홈 리턴 모드 .. 56
홈 검색 기능 ..63
수동 펄스 기능 ..64
동시 시작 기능 ..64
속도 Override 기능 ..65
위치 Override 기능 ..65

4.3 모터 드라이버 인터페이스 .. 66

펄스 명령 출력 인터페이스 ..66

펄스 피드백 입력 인터페이스 . ..68

In position 신호 ..70

서보 경보 신호 ..71

에러 클리어 신호 .71

서보 ON/OFF 스위치 ..71

서보 준비 신호 ..72

서보 경보 리셋 스위치 .72

4.4 기계적 스위치 인터페이스.. 72

원점 또는 홈 신호 .73

End-Limit 스위치 신호 .73

Slow down 스위치 ..73

포지셔닝 시작 스위치 ..73

카운터 클리어 스위치 ..74

카운터 Latch 스위치 .74

긴급 정지 입력 .74

4.5 카운터 . 74

명령 위치 카운터 ..75

피드백 위치 카운터 . ..75

명령 및 피드백 에러 카운터 ..75

범용 카운터 .76

목표 위치 리코더 ..76

4.6 콤퍼레이터 (Comparators).. 77

Soft end-limit 콤퍼레이터 .77

명령 및 피드백 에러 카운터 콤퍼레이터 .. .77

일반 콤퍼레이터 ..77

트리거 콤퍼레이터 .78

4.7 다른 모션 기능들 .. 78

Backlash 와 slip 보정 . ..78

진동 억제 (Vibration restriction) 기능 .79

속도 프로파일 연산 기능 .. ..79

4.8 인터럽트 제어.... 80

4.9 여러 장의 카드 동작.. 84

5 MotionCreatorPro....... 85

5.1 MotionCreatorPro 의 실행... 85

5.2 MotionCreatorPro 에 관하여 . 86

5.3 MotionCreatorPro 형태 소개 .. 87

주메뉴 ...87

선택 메뉴 ..88

카드 정보 메뉴 ..89

설정 메뉴 ..90

단일 축 동작 메뉴 .95

두 축 동작 메뉴 . .102

2D\_ 모션 메뉴 ... ...105

도움말 메뉴 111

# 6 함수 라이브러리.... . 113

6.1 함수 리스트 . 114

6.2 C/C++ 프로그래밍 라이브러리... . 122

6.3 시스템 & 초기화... 123

6.4 펄스 입 / 출력 구성 . . 127

6.5 속도 모드 모션... . 130

6.6 단일 축 위치 모드. . 133

6.7 선형 보간 모션... . 137

6.8 원형 보간 모션... . 148

6.9 홈 리턴 모드. . 158

6.10 수동 펄스 모션... . 161

6.11 모션 상태... . 164

6.12 모션 입 / 출력 인터페이스. . 166

6.13 인터럽트 제어... . 174

6.14 위치 제어와 카운터. . 178

6.15 위치 비교 및 latch.. . 183

6.16 연속적 모션 .. . 187

6.17 다축의 동시 동작 ... . 189

6.18 범용 DIO ..... . 192

6.19 Soft Limit . 194

6.20 Backlash 보정 / 진동 억제 . 196

6.21 속도 프로파일 연산.. . 198

6.22 복귀 코드.. .. 202

# 7 결선 예시 . . 205

7.1 일반적인 결선에 대한 설명 . 205

7.2 터미널 보드 사용자 가이드 .. 205

# 보증 제도... . 207

# List of Tables

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: 모션 인터럽트 소스 비트 설정 . . 81

Table 4-2: 에러 인터럽트 리턴 코드 82

Table 4-3: GPIO 인터럽트 소스 비트 설정 83

# List of Figures

Figure 1-1: PCI-8158 의 블록 다이어그램 . 2

Figure 1-2: 응용 프로그램 개발을 위한 흐름도 .. 4

Figure 2-1: PCI-8158 의 PCB Layout... 10

# 1 소 개

PCI-8158 는 PCI 방식의 진보적인 모션 제어 카드로서 8 축 모션제어가 가능하며 스테퍼와 서보모터를 가동하기 위해 최대6.55MHz 의 고주파 펄스를 출력합니다 . 모션 제어기로서 8 축 선형 , 원호 보간과 연속 속도를 위한 연속 보간을 제공하며 한 축에대해서는 움직이는 동안 위치와 속도를 바꿀 수 있습니다 .

또한 , 하나의 시스템 내에서 여러 장의 카드를 사용할 수 있습니다 . 모든 8 개 축의 증가형 인코더 인터페이스는 부정확한 기계적전달에 의해 발생한 위치 에러값을 조정하는 기능을 제공합니다 .

PCI-8158 는 이전과 다른 새로운 설계로 캐리어 보드는 8 축 펄스열 출력 제어 채널을 내장합니다 . 다른 기능으로는 고속의 트리거 또는 분산형 I/O 제어와 사용자는 편의에 따라 도터보드를 추가할 수 있습니다 . 또한 , 보드는 위치 비교 함수를 가지고 있습니다. 보드는 비교 출력 기능을 가지고 모션 제어기는 라인 스캔 적용을 위하여 고속 트리거 펄스를 출력할 수 있어야 하며 고 해상도의이미지를 얻을 수 있어야 합니다 . 이러한 경우 사용자는 PCI-8158 의 기능을 확장하는 DB-8150 를 선택할 수 있습니다 . 또한, 모션 제어기로서 설계뿐 아니라 센서와 엑츄에이터 또한 자동화의 중요한 요소입니다 . 일반적으로 I/O 는 제어장치 내에 센서와엑츄에이터의 통합을 필요로 하는데 ADLINK 는 이러한 장치들을연결하는 또 다른 방법을 제공합니다 ( 분산형 I/O). 도터보드는 분산형 I/O 와 PCI-8158 을 효과적으로 연결하는 데 사용 될 수 있습니다 . 이러한 구성은 배선과 물리적 제어기의 크기에 관한 수고를덜해주며 또한 비용 효율적입니다 .

그림 1-1 은 PCI-8158 의 기능적인 블록 다이어그램을 보여줍니다 . 모션제어 기능은 S- 커브의 가속과 감속 , 두 축 사이에서의 선형 , 원호 보간법 또한 연속적 모션 포지셔닝 , 13 가지 홈 리턴 모드를 포함합니다 . 이 모든 기능과 복잡한 계산은 ASIC 에 의해 내부적으로 실행되어 CPU 를 내부적 충돌로부터 보호합니다 .

또한 , PCI-8158 은 세 가지 사용자 친화적 기능을 제공합니다 .

# 1. 카드 인덱스 설정 :

PCI-8158 는 DIP 스위치 설정으로 카드 인덱스를 지정할 수있습니다 . 값은 0 부터 15 까지 이며 전체 제어 시스템이 매우큰 경우 제조 업체들이 카드 인덱스를 인식하는 데 있어 유용합니다 .

# 2. 비상 입력

비상 입력 핀은 사용자가 어떠한 긴급 상황이 발생하였을 경우유선 비상 버튼을 통해 펄스 출력의 전송을 중지할 수 있습니다

# 3. 소프트웨어의 보안 보호

보안 보호 설계로서 사용자는 16 비트 변수를 EEPROM 에 설정할 수 있습니다 . 귀하의 인터페이스 프로그램은 소프트웨어와 하드웨어의 도용을 방지하여 보안을 강화하는데 EEPROM을 사용할 수 있습니다 .

![The block diagram illustrates a system architecture centered around a **PLX9052** chip.\n\n**Blocks and Connections:**\n\n*   **PCI Bus**: Located at the top, connected via a bidirectional arrow to **PLX9052**.\n*   **ROM**: Connected via a bidirectional arrow to **PLX9052**.\n*   **CPLD**: Connected via a bidirectional arrow to **PLX9052**.\n*   **CardID S1**: Connected via a unidirectional arrow from **CPLD**.\n*   **ASIC**: Located centrally below **PLX9052**, connected via a bidirectional arrow.\n*   **DC/DC**: Located to the left of **ASIC**. It has a downward arrow labeled **VDD** and an upward arrow labeled **+24V**.\n*   **PA/PB P3**: Connected via a bidirectional arrow to the right side of **ASIC**.\n*   **STA/STP K1&2**: Connected via a bidirectional arrow to the right side of **ASIC**. The label **VCC** appears between these two right-side connections.\n*   **Digital I/O Isolation**: A wide block below **ASIC**, connected via a bidirectional arrow.\n*   **SCSI 100 P1** and **SCSI 100 P2**: Located at the very bottom, separate from the main signal flow but positioned below the isolation block.](.pci-8158-korean-50-11139-2b00-200-en/0d592ea38c21063eb2499f8128d1577be36a8d215e7e245b3017473ca6aad070.jpg)

Figure 1-1: PCI-8158 의 블록 다이어그램

MotionCreatorPro 는 윈도우 기반의 응용 소프트웨어 패키지이며 프로젝트의 디자인 단계 중 , 모션 제어 시스템의 결함을없애기 위하여 PCI-8158 과 함께 포함되었습니다 . PCI-8158의 모든 축과 입 / 출력 신호 상태를 화면에 나타냅니다 .

또한 , 윈도우 프로그래밍을 위한 C++ 와 베이직 라이브러리가 포함되어 있으며 함수의 운영을 위한 샘플 프로그램이 제공됩니다 .

그림 1-2 는 응용 프로그램을 개발하는 과정에서 추천하는 프로세스의 순서도를 설명합니다 . 각 단계의 세부사항에 대해서는 각 장을 참고 하십시오 .

![This flowchart outlines a process for setting up and verifying a motion control system, with chapter references on the right side.\n\n**Blocks (Top to Bottom):**\n\n1.  **Rectangle:** '하드웨어 설치 점퍼 설정 배선' (Hardware installation, jumper setting, wiring). Reference: '2 &3 장'\n2.  **Rectangle:** '시스템 구성을 위해 MotionCreatorPro 사용' (Use MotionCreatorPro for system configuration). Reference: '5 장'\n3.  **Rectangle:** 'MotionCreatorPro를 사용하여 동작 검증' (Verify operation using MotionCreatorPro). Reference: '4&5 장'\n4.  **Rectangle:** '응용 프로그램 개발을 위해 함수 라이브러리 사용' (Use function library for application program development). Reference: '4&6 장'\n5.  **Diamond (Decision):** '시스템 ok?' (System ok?)\n6.  **Circle:** 'END'\n\n**Connections:**\n\n*   **Downward Flow:** An arrow points from Block 1 to Block 2. An arrow points from Block 2 to Block 3. An arrow points from Block 3 to Block 4. An arrow points from Block 4 to the Decision diamond.\n*   **Decision Path:** From the bottom of the diamond, an arrow labeled 'Yes' points to the 'END' circle.\n*   **Feedback Loop:** A line exits the left side of the diamond, loops upward, and points into the left side of Block 2 ('시스템 구성을 위해 MotionCreatorPro 사용'), indicating a return to system configuration if the system check fails.](.pci-8158-korean-50-11139-2b00-200-en/8f0e01f82507b0299133d3f975c86c40997013e4d3fa84608c7c5770d34c6b40.jpg)

Figure 1-2: 응용 프로그램 개발을 위한 흐름도

# 1.1 특 징

다음 목록들은 PCI-8158 모션 제어 시스템의 주요한 특징들을 요약합니다 .

 31 비트 PCI bus Plug and Play ( 보편적 )
 서보모터 또는 스테핑 제어를 위한 8 채널의 펄스열
 최대 6.55 MPPS 주파수 출력
 펄스 출력 옵션 : OUT/DIR, CW/CCW
 프로그램상의 모든 모드에서 가속 / 감속 시간 설정 가능
 모든 모드에 대해서 Trapezoidal 과 S- 커브 속도 프로파일을 제공
 2-4 축 선형 보간
 2 축 원형 보간
 모션에 따른 윤곽에 대한 연속 보간
 동작 중 속도 및 위치 변경 (Change position and speed onthe fly)
 자동 검색과 함께 13 가지의 귀환 모드 제공
 하드웨어적인 오류 보정 및 진동 감소
 각 축에 대한 2 가지 소프트웨어
 증가형 인코더 피드백에 대한 28 비트 up/down 카운터
 모든 축에 홈 스위치 , 인덱스 신호 (EZ), 긍정적 , 부정적인end-limit 스위치
 8 축 고속 위치 latch 입력
 8 축 위치 비교 출력과 트리거 출력 ( 고속 트리거 출력을 위해서는 사용자는 DB-8150 을 추가 구매 해야함 )
 모든 디지털 입 / 출력 신호에 대해서 2500Vrms 까지 절연
 프로그래밍이 가능한 인터럽트 소스제공
 동시 시작 / 정지
 수동 펄스 입력 인터페이스
 카드 인덱스 선택 가능
 EERPOM 의 보안 보호
 유선 전용 긴급 입력 핀

 한 시스템 내에서 최대 12 개의 PCI-8158 카드 지원
 소형 PCB 설계
 마이크로소프트 윈도우 기반의 응용 소프트웨어와MotionCreatorPro 포함
 PCI-8158 라이브러리와 윈도우즈 2000/XP 유틸리티 지원 .

# 1.2 상세 요약

 사용 가능한 모터 :

 스테핑 모터

 펄스열에 의해 동작하는 AC 또는 DC 서보 모터

 성능 :

 제어 가능한 축수 : 8 축
 최대 출력 펄스 : 6.55MPPS, 선형 , trapezoidal 또는 S-커브 속도 프로파일
 내부 클록 : 19.66 MHz
 28 비트 up/down 카운터 범위 : 0\~268,435,455 또는 –134,217,728 \~ +134,217,727
 위치 펄스 설정 범위 (28 비트 ): -134,217,728 \~+134,217,728
 펄스 레이트 설정 범위 : ( 펄스 비 = 1:65535):

$$
0. 1 \mathrm{PPS} \sim 6 5 5 3. 5 \mathrm{PPS} (\text {승수} = 0. 1)
$$

$$
1 \mathrm{PPS} \sim 6 5 5 3 5 \mathrm{PPS} (\text {승수} = 1)
$$

$$
1 0 0 \mathrm{PPS} \sim 6 5 5 3 5 0 0 \mathrm{PPS} (\text {승수} = 1 0 0)
$$

 입 / 출력 신호 :

 각 축에 대한 입 / 출력
 모든 입 / 출력 신호는 2500Vrms 까지 지원이 되는 절연체로 구성
 명령 펄스 출력 핀 : OUT, DIR
 증가형 인코더 신호 입력 핀 : EA, EB
 인코더 인덱스 신호 입력 핀 : EZ
 물리적 limit/home 신호 입력 핀 : ±EL, ORG
 복합 핀 : DI / LTC(Latch) / SD(Slow-down) / PCS( 위치 변경 신호 ) / CLR( 클리어 ) / EMG( 긴급입력 )
 서보모터 인터페이스 입 / 출력 핀 : 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 100mm(W)

# 1.3 소프트웨어 지원

# 1.3.1 프로그램 라이브러리

PCI-8158 은 윈도우즈 2000/XP DLL 을 제공하며 이 함수 라이브러리는 보드와 함께 제공됩니다

# 1.3.2 MotionCreatorPro

윈도우 기반의 유틸리티로서 카드 , 모터 , 시스템을 설정하는데 이용됩니다 . 또한 , 하드웨어와 소프트웨어 문제 결함을 없애는 것을 도울 수 있고 I/O 논리 파라미터의 세팅을 사용자 프로그램에서 불러와 사용할 수 있습니다 . 또한 , 이 제품은 카드와 함께 제공됩니다 .

자세한 내용은 5 장을 참고하시기 바랍니다 .

# 1.4 사용 가능한 터미널 보드

ADLINK 가 제공하는 서보 & 스테퍼는 사용자의 보다 쉬운 연결을 위해 터미널 보드를 사용합니다. ADLINK는 서보 & 스테퍼의 쉬운 연결을 위한 터미널 보드를 제공하며 스테퍼의 경우Pin-to-Pin 터미널 보드인 DIN-100S 를 제공하고 서보 사용자의 경우 ADLINK 는 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 설치

이 장에서는 PCI-8158 을 설치하는 방법을 설명하고 있습니다 .그 순서는 다음과 같습니다 .

 내용물 확인 (2.1 장 )
 PCB 확인 (2.2 장 )
 하드웨어 설치 (2.3 장 )
 소프트웨어 드라이버 설치 (2.4 장 )
 입 / 출력 신호결선 (3 장 ) 과 동작 원리의 이해 (4 장 )
 커넥터 핀 할당과 결선의 이해 ( 나머지 장 )

# 2.1 내용물 확인

본 사용자 가이드를 포함하여 다음의 아이템을 포함하는 패키지 :

 PCI-8158: 진보된 8 축 서보 / 스테핑 제어 카드

 ADLINK All-in-one CD ( 제품드라이버 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-korean-50-11139-2b00-200-en/4871cb502a782e9fce2378c63f7dfebe8380956b4e93cdb6a9dfc4e62b0b36ca.jpg)

![186.79\n185\n100.33\n126.41](.pci-8158-korean-50-11139-2b00-200-en/5ab6ab648d1d5e43c92d157db39a82ea4f08d378542ecb74ae6cb499665dc9db.jpg)

Figure 2-1: PCI-8158 의 PCB Layout

 P1 / P2: 입 / 출력 신호 커넥터 (100- 핀 )
 K1 / K2: 동시 시작 / 정지 커넥터
 P3: 동기 구동
 S1: DIP 카드 인덱스 선택 (0-15)
 J1-J16: 펄스 출력 형태를 선택하기 위한 점퍼 ( 라인 드라이버 / 오픈 컬렉터 )

# 2.3 PCI-8158 하드웨어 설치

# 2.3.1 하드웨어 구성

PCI-8158 은 Plug & Play 를 완벽하게 지원합니다 . 그러므로 메모리 할당 ( 입 / 출력 포트 설정 ) 과 PCI 카드의 IRQ 채널은 시스템 BIOS 에 의해 자동 할당 됩니다 . 주소 할당은 시스템 내 모든PCI 카드에 대하여 보드마다 지정됩니다 .

# 2.3.2 PCI 슬롯 선택

귀하의 PC는 PCI 와 ISA 슬롯을 모두 가지고 있을 것입니다. PA/AT 슬롯에 PCI 카드를 강제로 설치하지 마십시오 . PCI-8158 은PCI 슬롯 어디에 설치하셔도 무관합니다 .

# 2.3.3 설치 순서

1. 이 사용자 매뉴얼을 읽고 점퍼를 적용환경에 맞게 설정합니다 .

2. 컴퓨터와 기타 모든 장치 ( 프린터 , 모뎀 , 모니터 등 )를끄고 컴퓨터의 커버를 여십시오 .

3. 32- 비트 PCI 확장 슬롯을 선택하십시오 . PCI 슬롯은ISA 또는 EISA 슬롯보다 짧고 흰색 또는 아이보리 색을가지고 있습니다 .

4. PCI-8158 작업을 하기 전에 컴퓨터의 금속 케이스를 접촉하여 귀하의 몸의 정전기를 제거하시기 바랍니다 . 카드의 양 끝을 잡고 부품을 만지지 마십시오 .

5. 보드를 귀하가 선택한 PCI 슬롯에 꼽으십시오 .

6. 카드의 안정을 위해 슬롯 고정 나사로 카드를 배면 패널에 고정합니다 .

# 2.3.4 문제 해결

만약 시스템이 부팅되지 않거나 오작동 현상이 발생한다면 대부분 원인은 인터럽트 충돌 때문입니다 ( 부적절한 ISA 선정 ). 문제가 발생할 경우 사용하고 있는 시스템에 관련된 BIOS 문서를 찾아보십시오 .

제어판의 장치관리자에 카드가 없다면 BIOS 의 PCI 설정을 체크하시고 또는 다른 PCI 슬롯에 설치해 보십시오 .

# 2.4 소프트웨어 드라이버 설치

1. ADLINK All-In-One CD 를 드라이버에 삽입한 후Driver Installation -> Motion Control -> PCI-8158을 선택하십시오
2. 인스톨 화면의 설치 순서에 따라 설치하십시오 .
3. 설치가 끝난 후 컴퓨터를 재부팅 하십시오 .

참고 : 최신 소프트웨어가 필요하시다면 ADLINK 웹 사이트에서다운로드 하실 수 있습니다 .

# 2.5 P1/P2 핀 할당 : 메인 커넥터

P1/P2 는 모션 제어 입 / 출력 신호를 위한 메인 커넥터입니다 .

<table><tr><td>No.</td><td>명칭</td><td>I/O</td><td>기 능</td><td>No.</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>Ext. 전원 접지</td><td>52</td><td>EXGND</td><td>-</td><td>Ext. 전원 접지</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>Dir. 신호 (+)</td><td>55</td><td>DIR2+</td><td>O</td><td>Dir. 신호 (+)</td></tr><tr><td>6</td><td>DIR0-</td><td>O</td><td>Dir. 신호 (-)</td><td>56</td><td>DIR2-</td><td>O</td><td>Dir. 신호 (-)</td></tr><tr><td>7</td><td>SVON0</td><td>O</td><td>서보 On/Off</td><td>57</td><td>SVON2</td><td>O</td><td>서보 On/Off</td></tr><tr><td>8</td><td>ERC0</td><td>O</td><td>Dev. ctr, clr. 신호</td><td>58</td><td>ERC2</td><td>O</td><td>Dev. ctr, clr. 신호</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>In-position 신호</td><td>60</td><td>INP2</td><td>I</td><td>In-position 신호</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>Ext. 전원 접지</td><td>62</td><td>EXGND</td><td></td><td>Ext. 전원 접지</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>Ext. 전원 접지</td><td>70</td><td>EXGND</td><td>-</td><td>Ext. 전원 접지</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>Dir. 신호 (+)</td><td>73</td><td>DIR3+</td><td>O</td><td>Dir. 신호 (+)</td></tr><tr><td>24</td><td>DIR1-</td><td>O</td><td>Dir. 신호 (-)</td><td>74</td><td>DIR3-</td><td>O</td><td>Dir. 신호 (-)</td></tr><tr><td>25</td><td>SVON1</td><td>O</td><td>서보 On/Off</td><td>75</td><td>SVON3</td><td>O</td><td>서보 On/Off</td></tr><tr><td>26</td><td>ERC1</td><td>O</td><td>Dev. ctr, clr. 신호</td><td>76</td><td>ERC3</td><td>O</td><td>Dev. ctr, clr. 신호</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>In-position 신호</td><td>78</td><td>INP3</td><td>I</td><td>In-position 신호</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>Ext. 전원 접지</td><td>80</td><td>EXGND</td><td></td><td>Ext. 전원 접지</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><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></table>

Table 2-1: P1/P2 핀 할당

<table><tr><td>No.</td><td>명칭</td><td>I/O</td><td>기능</td><td>No.</td><td>명칭</td><td>I/O</td><td>기능</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>End limit 신호 (+)</td><td>87</td><td>PEL2</td><td>I</td><td>End limit 신호 (+)</td></tr><tr><td>38</td><td>MEL0</td><td>I</td><td>End limit 신호 (-)</td><td>88</td><td>MEL2</td><td>I</td><td>End limit 신호 (-)</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>Ext. 전원 접지</td><td>92</td><td>EXGND</td><td></td><td>Ext. 전원 접지</td></tr><tr><td>43</td><td>PEL1</td><td>I</td><td>End limit 신호 (+)</td><td>93</td><td>PEL3</td><td>I</td><td>End limit 신호 (+)</td></tr><tr><td>44</td><td>MEL1</td><td>I</td><td>End limit 신호 (-)</td><td>94</td><td>MEL3</td><td>I</td><td>End limit 신호 (-)</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>Ext. 전원 접지</td><td>98</td><td>EXGND</td><td>-</td><td>Ext. 전원 접지</td></tr><tr><td>49</td><td>EXGND</td><td>-</td><td>Ext. 전원 접지</td><td>99</td><td>E_24V</td><td>-</td><td>Isolation 전원 입력,+24V</td></tr><tr><td>50</td><td>EXGND</td><td>-</td><td>Ext. 전원 접지</td><td>100</td><td>E_24V</td><td>-</td><td>Isolation 전원 입력,+24V</td></tr></table>

Table 2-1: P1/P2 핀 할당

 P1은 0축부터 3축까지 제어하고 P2는 4축부터 7축까지 제어합니다 .

# 2.6 K1/K2 핀 할당 : 동시 시작 / 정지

K1 과 K2 는 여러 축과 여러 카드에 대한 동시 시작 / 정지 신호를위한 부분입니다 .

<table><tr><td>No.</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 &amp; JP2</td><td>축 0</td><td>JP9 &amp; JP10</td><td>축 4</td></tr><tr><td>JP3 &amp; JP4</td><td>축 1</td><td>JP11 &amp; JP12</td><td>축 5</td></tr><tr><td>JP5 &amp; JP6</td><td>축 2</td><td>JP13 &amp; JP14</td><td>축 6</td></tr><tr><td>JP7 &amp; JP8</td><td>축 3</td><td>JP15 &amp; JP16</td><td>축 7</td></tr></table>

Table 2-3: J1-J16 점퍼 설정
![라인 드라이버\n오픈 컬렉터\nJ1\n1\n2\n3](.pci-8158-korean-50-11139-2b00-200-en/de566a5fe96a162357592916618a15f57fa784a76f449d2f288b13ec434c902d.jpg)

# 2.8 S1 카드 인덱스 스위치 설정

S1 스위치는 카드 인덱스를 설정하는데 사용됩니다 . 예를 들어 첫번째 스위치가 ON 이고 다른 나머지가 모두 OFF 이면 카드의 인덱스는 1 입니다 . 이 값은 0 부터 15 까지이며 자세한 내용은 다음의 표를 참고하십시오 .

<table><tr><td>카드 ID</td><td>스위치 설정 (ON=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>No.</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>N/A</td><td>사용할 수 없음</td></tr><tr><td>8</td><td>N/A</td><td>사용할 수 없음</td></tr><tr><td>9</td><td>N/A</td><td>사용할 수 없음</td></tr></table>

Table 2-5: P3 수동 펄스

참고 : +5V 와 GND 핀은 PCI- 버스 전원에 의해 직접적으로 제공됩니다 . 그러므로 이 신호는 분리되지 않습니다 .

의도적인 공백 페이지

# 3 PCI-8158 신호 연결

이 장에서는 모든 입 / 출력 신호 연결에 대하여 설명합니다 . PCI-8158 과 모터 드라이버를 연결하기 전에 이 장의 내용을 참고하시기 바랍니다 .

이 장은 아래의 내용을 포함합니다 .

Section 3.1 펄스 출력 신호 OUT, DIR

Section 3.2 인코더 피드백 신호 EA, EB 와 EZ

Section 3.3 원점 신호 ORG

Section 3.4 End-Limit 신호 PEL 과 EML

Section 3.5 In-position 신호 INP

Section 3.6 경보 신호 ALM

Section 3.7 편차 카운터 클리어 신호 ERC

Section 3.8 범용 목적 신호 SVON

Section 3.9 범용 목적 신호 RDY

Section 3.10 다기능 출력 핀 : DO/CMP

Section 3.11 다기능 입력 신호 DI/LTC/SD/PCS/CLR/EMG

Section 3.12 펄스 입력 신호 PA, PB

Section 3.13 동시 시작 / 정지 신호 STA, STP

Section 3.14 터미네이션 보드

# 3.1 펄스 출력 신호 OUT, DIR

PCI-8158 에는 8 축 펄스 출력 신호가 있습니다 . 모든 각 축에 대해 두 쌍의 다른OUT와 DIR 신호는 방향을 지시하고 펄스 열을 전송하기 위해 사용됩니다 . OUT 와 DIR 신호는 CW 와 CCW 신호로 프로그램될 수 있습니다. 4.1.1에서는 보다 자세한 OUT와 DIR신호의 논리적 특성에 대해 다루고 있습니다 . 여기에서는 OUT 와DIR 신호의 전기적 특성에 대해 자세히 설명합니다 . 예를 들어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 간 close breaks:</td><td>오픈 컬렉터 드라이버 출력에 대한 이하의 2,3 간 close breaks:</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><tr><td>DIR3+</td><td>J12</td><td>J12</td></tr></table>

<table><tr><td>출력신호</td><td>차동 라인 드라이버 출력에 대한 이하의 1,2 간 close breaks:</td><td>오픈 컬렉터 드라이버 출력에 대한 이하의 2,3 간 close breaks:</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\n3\n2\n3\nOUT+/DIR+\n1\nOUT-/DIR-\nEXGND](.pci-8158-korean-50-11139-2b00-200-en/f142c6d80afb871bbb506502ec6978756b79d8e8d9c0e48f33e4d29a2ddf4bde.jpg)

참고 : 만약 펄스 출력이 오픈 컬렉터 출력 모드로 설정되어 있다면 OUT- 와 DIR- 은 OUT 와 DIR 신호를 전송하기 위하여사용됩니다 . OUT- 와 DIR- 핀의 전류싱크가 20mA 를 초과하지 않도록 주의하십시오 . 기본 설정은 1-2 쇼트입니다사용 권장 : 2-3 점퍼를 쇼트 시키고 OUT-/DIR- 를 드라이버의470 옴 펄스 입력 인터페이스 COM 에 연결하십시오 . 다음의 그림을 보고 OUT-/DIR- 를 드라이버의 OUT/DIR 에 연결되도록 선택하십시오

![모션 카드 내부\nVDD\nOUT+, DIR+\nOUT-, DIR-\nEXGND\n모터 카드 내부\n470 Ohm\n+5V](.pci-8158-korean-50-11139-2b00-200-en/0af3e5ecf225e072b8daf3fd05af897b2bc62081b95b56f1a9d6dd11c20db05c.jpg)

주의 : 싱크를 20mA 또는 26LS31 을 초과하지 않도록 주의하십시오 . 이는 제품에 손상을 줄 수 있습니다 !

# 3.2 인코더 피드백 신호 EA, EB 와 EZ

인코더 피드백 신호는 EA, EB 와 EZ 를 포함합니다 . 모든 축은 위상 -A, 위상 -B 와 인덱스 (EZ) 입력의 세 가지 차동 회로에 대한6 핀으로 되어 있습니다 . EA 와 EB 는 위치 계산을 위해 사용되고EZ 는 영점 지표로 사용됩니다 . 아래의 표는 관련된 신호 명칭 , 핀번호 , 축 번호를 보여줍니다 .

<table><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 신호의 입력부 회로는 다음과 같습니다 .

![8158 내부\nMotion IC\nEA, EB, EZ\nHP0631\nR = 330 Ohm\nC = 100 p\nP1, P2\nEA+, EB+, EZ+\nEA-, EB-\nEZ-](.pci-8158-korean-50-11139-2b00-200-en/bb3965b90d4415d45d0134f04cf3107be9c4def6c94da85bd75dff209c232e9d.jpg)

모든 인코더 입력 신호 (EA+, EA-), (EB+, EB-) 와 (EZ+, EZ-)의 각 차동회로를 지나는 전압은 최소 3.5V가 되어야 합니다. 따라서 인코더 피드백 또는 모터 드라이버 피드백이 연결되었을 때그 구동 용량에 의해 주의하셔야 합니다 . 차동회로는 EA, EB 와EZ 를 디지털 신호로 변환된 후 모션 제어 ASIC 에 공급됩니다 .

외부 회로에서 입력 신호를 연결하는 방법의 예는 다음과 같습니다 . 입력 회로는 (1) 차동 라인 드라이버 또는 (2) 오픈 컬렉터 출력을 가지는 모터 드라이버 또는 인코더에 연결할 수 있습니다 .

# 3.2.1 라인 드라이버 출력 연결

PCI-8158 인코더 입력을 구동하기 위해 드라이버 출력은 반드시적어도 8mA 의 구동 용량을 가져야 하며 적어도 차동 회로를 지나는 전압이 3.5V 가 되어야 합니다 . 또한 , 양 끝은 반드시 묶여 있어야 합니다 . 최대 주파수는 4Mhz 또는 배선의 길이나 신호 상태에 따라 그 이상이 될 수 있습니다 .

![8158\n내부\nEA+,EB+,EZ+\nEA-, EB-, EZ-\nEGND\nGND\n외부 인코더/라인\n드라이버 출력을 가진\n드라이버\nA,B 위상신호\n인덱스 신호](.pci-8158-korean-50-11139-2b00-200-en/ec4d271640fff0c30a3f7af87d5bdbea47c19231ef996c35931ccf0f6d0ebcf2.jpg)

# 3.2.2 오픈 컬렉터 출력 연결

오픈 컬렉터 출력 연결을 위해서는 외부 전력 공급이 필요합니다. 일부 모터 드라이버는 전원을 제공합니다 . PCI-8158, 인코더와외부 전력 공급 사이의 연결은 다음의 그림에서 보여주고 있습니다 . 외부 전류 limit 저항 R 은 PCI-8158 의 입력 회로를 보호하기위해 필요합니다 . 다음의 표 목록은 인코더 전원 공급에 따른 저항값을 제안합니다 .

<table><tr><td>인코더 전원 (V)</td><td>외부 레지스터 R</td></tr><tr><td>+ 5V</td><td>0W( 없음 )</td></tr><tr><td>+ 12V</td><td>1.5kW</td></tr><tr><td>+ 24V</td><td>3.0kW</td></tr></table>

$$
\mathrm {I_ {f} = 8mA}
$$

![8158\n내부\nEA+, EB+, EZ+\nRA\nEA-, EB-, EZ-\nV\nGND\n인코더를 위한 외부 전원\n모터 인코더/오픈 컬렉터\n출력을 가진 드라이버\nA,B 위상 신호\n인덱스 신호](.pci-8158-korean-50-11139-2b00-200-en/7540733f751f816b2ebbe485980d272f0b545211c8e26db41cdc0db23740314e.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 신호의 입력 회로는 다음과 같습니다 . 일반적으로 하나의limit 스위치는 하나의 축의 원점을 표시하기 위해 사용됩니다 .limit 스위치의 세부사항으로는 +24V 최소 6mA의 용량을 가져야하며 내부 필터 회로는 오작동에 의한 높은 주파수를 필터링하기위해 사용됩니다 .

![8158 내부\nP1, P2\n모션 IC로\nDGND\nPS2805\nVCC\n2.2K\n1V max.\n1_24V\nEGND\nORG\n스위치](.pci-8158-korean-50-11139-2b00-200-en/aa26824f582b61c2093fa80b9f7f09bbf4ab55fb51461716591f0133ffecadfd.jpg)

모션 제어기가 “ 홈 리턴 ” 모드에서 동작할 때 ORG 신호는 제어출력 신호 (OUT, DIR) 를 정지하기 위해 사용됩니다 . ORG 신호의운용에 대해서는 4.3.3 을 참고하십시오 .

# 3.4 End-Limit 신호 PEL 과 MEL

본 제품은 한 축에 대해 PEL 과 MEL End-Limit 신호가 있습니다. PEL 은 양 (+) 의 방향에서의 End-Limit 을 나타내고 MEL 은 음(-) 의 방향에서의 End-Limit 신호를 나타냅니다 . 다음의 표는 신호 명칭 , 핀 번호 , 축 번호를 나타냅니다 .

<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>

회로도는 아래와 같습니다 . 외부 limit 스위치는 반드시 +24V 최소 8mA 의 접촉 용량을 가져야 합니다 . A- 타입 ’ (normal open)접촉 또는 B- 타입 ’ (normal closed) 접촉 스위치를 사용 할 수 있습니다 . 외부 limit 신호의 자동 논리를 설정하려면 8158 limit\_ 논리 기능 설정의 설명을 참조하십시오 .

![8158 내부\nP1,P2\nVCC\nVCC\n1.24V\n2.2K\n1V Max.\nPS2805\nDGND\nEGND\nPEL\nMEL\n스위치](.pci-8158-korean-50-11139-2b00-200-en/5aa0e351ecbd2b7d69d043df8e65794d8981a32b5ecea5e22d2bbd9b016437ca.jpg)

# 3.5 In-position 신호 INP

서보 모터 드라이버에서의 In-position 신호 INP 는 편차 에러를의미합니다 . 만약 편차 에러가 없을 경우 서보 위치 에러는 영(Zero) 을 의미합니다 . 신호 명칭 , 핀 번호 , 축 번호는 아래 표와같습니다 .

<table><tr><td>P1 편번호</td><td>신호 명칭</td><td>축 #</td></tr><tr><td>10</td><td>INP0</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\n8158 내부\n모션 IC로\nPS2805\nR = 330 Ohm\nVDD\nDGND\n0.5V Max.\nINP\nP1,P2](.pci-8158-korean-50-11139-2b00-200-en/7e68944a67a71a078e28e9b440a567282cb82730c64645920b097eac91304855.jpg)

In-position 신호는 일반적으로 오픈 컬렉터 출력 신호를 제공하는 서보 모터 드라이버로 인가됩니다 . 외부 회로는 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\n8158 내부\n모션 IC로\nPS2805\nR = 330 Ohm\nVDD\nDGND\n0.5V Max.\nP1,P2\nALM](.pci-8158-korean-50-11139-2b00-200-en/233ffe33da1c729c61aba0b67b185d015a912d943d253cf1a30c219cab69225f.jpg)

# 3.7 편차 카운터 클리어 신호 ERC

편차 카운터 클리어 신호 (ERC) 는 다음 4 가지 상황에 따라 활성화됩니다 .

1. 홈 리턴 완료

2. End-limit 스위치 활성화

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 출력 회로는 50mA 구동 용량에서 최대 35V 의외부전원을 사용하는 오픈 컬렉터입니다 .

![VCC\n8158 내부\nP1.P2\n모션 IC로부터\n35V @ 50mA Maximum\nERC\nEGND\nPS2805](.pci-8158-korean-50-11139-2b00-200-en/ae9b53cde17e6f844ca1f676812b114a572f5757c48974304a8ce2af81c774f6.jpg)

# 3.8 범용 신호 SVON

SVON 신호는 서보모터 -on 제어 또는 범용 출력 신호로 사용됩니다 . 신호 명칭 , 핀 번호 , 축 번호는 다음 표와 같습니다 .

<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\n8158 내부\nP1.P2\n모션 IC로부터\nPS2805\n35V @ 50mA Maximum\nSVON\nEGND](.pci-8158-korean-50-11139-2b00-200-en/d2bcbe7c60f7c99b1fd995459e2c3ed3f8c227a543ff08c81c40d6cf6c4cbaa9.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\n모션 IC로\nPS2805\nR = 330 Ohm\n8158 내부\nVDD\nDGND\n0.5V Max.\nP1,P2\nRDY](.pci-8158-korean-50-11139-2b00-200-en/269103b5cb8ac793e5d1aa4d7fb257601db7f7eb852c269511cb435ed6145d50.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\n8158 내부\nP1.P2\nCPLD 로부터\nPS2802\n35V @ 50mA Maximum\nDO/CMP\nEGND](.pci-8158-korean-50-11139-2b00-200-en/8a3f16f0d580e27777baf06ea845821a12cd8ecfb004396863e76844a711663f.jpg)

# 3.11 다기능 입력 핀 : DI/LTC/SD/PCS/CLR/EMG

PCI-8158 은 8 개의 다기능 입력 핀을 제공합니다 . 각 8 개의 핀은 DI( 디지털 입력 ) 또는 LTC (Latch), SD (Slow down), 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\nCPLD 로\nPS2805\nR = 330 Ohm\nVDD\n8158 내부\nP1,P2\nDGND\n0.5V Max.\n다기능\n입력 편](.pci-8158-korean-50-11139-2b00-200-en/91179bc636ee48725ef92951410bbf5dafe207b3401156ed4d4493ee8c823a03.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\_ 입력 기능을 활성화 또는 비활성화할 것 인지를 결정할 수 있습니다 .

다음 회로도는 차동 펄스 입력 핀을 보여줍니다 .

![8158 내부\nR = 220 Ohm\nP3\n모션 IC\nPA, PB\nHP0631\nC = 100 pF\nPA+\nPB+\nPA-\nPB-](.pci-8158-korean-50-11139-2b00-200-en/33519d91e8d227cd5c96ed45ecc9fe02166d0aa8a8f66d69d3c1ebef63640e45.jpg)

# 3.13 동시 시작 / 정지 신호 STA 와 STP

PCI-8158 은 다 축 모션에 동시 시작 / 정지를 제어할 수 있는STA, STP 신호를 제공합니다 . STA 와 STP 는 CN4 에 위치합니다 .

다음 그림은 보드 상의 회로를 보여줍니다 . 4 개의 축의 STA 와STP 신호는 서로 형태에 맞게 연결되어 있습니다 .

![PCI-8158 내부\nVCC\n10 K\nVCC\n10 K\nK1,K2\nSTP\nSTA\nSTP\nSTA](.pci-8158-korean-50-11139-2b00-200-en/bf41558f579c14ecfd928c2b121c8d3e3b0185536c9b6f706cba42f3ad5f9588.jpg)

STP 와 STA 신호는 입력과 출력 신호가 있으며 동시 시작 / 정지동작을 위해서는 소프트웨어와 외부 제어가 둘 다 필요합니다 . 소프트웨어 제어와 함께 PCI-8158 의 어느 한 곳에서 신호가 발생될 것 이며 사용자는 또한 동시 시작 / 정지를 위한 STP/STA 신호의 작동을 위하여 외부 오픈 컬렉터 또는 스위치를 사용할 수 있습니다 .

만약 두 개 이상의 PCI-8158카드가 있는 경우 연결할 카드의 K1커넥터에 K2 커넥터를 연결합니다. K1와 K2 커넥터는 같은 PCI-8158 에 내부적으로 연결 됩니다 .

![Based on the provided image, here is an accurate and concise description of the block diagram:\n\n**Blocks and Labels**\nThe diagram is organized into three columns, labeled at the top:\n*   **PCI-8158 #0**\n*   **PCI-8158 #1**\n*   **PCI-8158 #2**\n\nUnder each column label, there are two rectangular blocks:\n*   A top block labeled **K2**.\n*   A bottom block labeled **K1**.\n\nEach **K2** and **K1** block contains four labeled terminals (indicated by black dots):\n*   **D5V**\n*   **STA**\n*   **STP**\n*   **GND**\n\n**Connections**\nParallel lines connect the blocks in a cascading manner from left to right:\n*   Four lines connect the **K2** block of **PCI-8158 #0** to the corresponding terminals of the **K1** block of **PCI-8158 #1**.\n*   Four lines connect the **K2** block of **PCI-8158 #1** to the corresponding terminals of the **K1** block of **PCI-8158 #2**.\n\nThe **K1** block of **PCI-8158 #0** and the **K2** block of **PCI-8158 #2** are depicted without any connections.](.pci-8158-korean-50-11139-2b00-200-en/65b9cbb2fead14477c163aef6bfb556d6d0fa141d2e2c72e44b45241bcba9a49.jpg)

귀하는 또한 외부의 시작 / 정지 신호를 이용하여 crosscard 동시모터 운영을 하실 수 있습니다 . 첫 PCI-8158 카드 K1 커넥터 상의 STA/STR 의 핀에 외부의 시작 / 정지 신호를 연결하십시오 .

![**Labeled Blocks:**\n\n*   **Column Headers:** 'PCI-8158 #0', 'PCI-8158 #1', 'PCI-8158 #2'\n*   **Top Blocks:** Three blocks labeled 'K2' (one under each header).\n*   **Bottom Blocks:** Three blocks labeled 'K1' (one under each header).\n*   **Terminal Labels:** Inside every K1 and K2 block, four terminals are labeled vertically from top to bottom: 'D5V', 'STA', 'STP', 'GND'.\n\n**Connections:**\n\n*   **Between Column 0 and 1:** Four diagonal lines connect the 'PCI-8158 #0' K2 block to the 'PCI-8158 #1' K1 block. Specifically, the lines connect D5V to D5V, STA to STA, STP to STP, and GND to GND.\n*   **Between Column 1 and 2:** Four diagonal lines connect the 'PCI-8158 #1' K2 block to the 'PCI-8158 #2' K1 block. Specifically, the lines connect D5V to D5V, STA to STA, STP to STP, and GND to GND.\n*   **Input Signal:** A square wave symbol is positioned to the left of the 'PCI-8158 #0' K1 block.](.pci-8158-korean-50-11139-2b00-200-en/35cdd3cf0c6d0e143e89aeaef16c2fba018b38ef07a8cb7b8600ef01b8618cdd.jpg)

의도적인 공백 페이지

# 4 동작 원리

이 장에서는 모션 제어 카드의 동작에 대하여 자세히 설명하고 있습니다 . 내용은 다음과 같습니다 .

Section 4.1: 모션 제어 분류

Section 4.2: 모션 제어 모드

Section 4.3: 모션 드라이버 인터페이스

Section 4.4: 기계적 스위치 인터페이스

Section 4.5: 카운터

Section 4.6: 콤퍼레이터

Section 4.7: 다른 모션 기능들

Section 4.8: 인터럽트 제어

Section 4.9: 여러 장의 카드 동작

# 4.1 모션 제어기의 분류

서보 / 스테퍼 드라이버를 처음 시작할 때 모터 제어는 모터 제어와 모션 제어의 두 가지로 분류됩니다 . 모터 제어는 PWM, 전력 ,Closed loop, Hall 센서 , 벡터 스페이스 등에 관련이 있고 모션 제어는 속도 프로파일 생성 , 궤도 수행 , 다 축 동기화 및 좌표와 관련이 있습니다

# 4.1.1 전압 타입의 모션 제어 인터페이스

모션과 모터 제어 사이의 인터페이스는 빠르게 변화하고 있습니다 . 초기에 전압 신호는 모터 제어기에 대한 명령 신호로써 사용되었습니다 . 신호의 진폭은 얼마나 빠르게 모터를 돌릴 수 있는 지를의미하며 전압 신호의 속도 변화는 얼마나 빠르게 모터가 가속할수 있는지를 의미합니다 . 모터 드라이버에 명령신호로 전압 신호 를 사용하는 경우 이는 “ 아날로그 ” 타입의 모션 제어기로 불립니다 . 이는 모션제어기의 아날로그 회로로 통합하기 용이하지만 가금씩의 소음은 이 타입의 모션 제어의 큰 문제점입니다 . 게다가 귀하가 모터의 위치 제어를 하기 원하신다면 아날로그 타입의 모션제어기는 반드시 위치 정보의 피드백 신호를 가져야 하며 이를 가능하게 하기 위해서는 Closed loop 제어 알고리즘을 사용하셔야합니다 . 이는 모션 제어의 복잡성을 증가시킬 수 있습니다 .

# 4.1.2 펄스 타입의 모션 제어 인터페이스

두 번째 모션 , 모터 제어 인터페이스 타입은 펄스열 타입니다 . 디지털 세상의 추세에 따라 펄스 열 타입은 새로운 컨셉의 모션 제어를 대표합니다 . 펄스의 수는 모터 회전의 스텝 수를 보여주며 펄스의 주파수는 얼마나 빨리 모터를 가동할지를 보여줍니다. 또한, 주파수 지속 시간의 변화는 모터의 가속률을 보여줍니다 . 이 인터페이스의 특징 때문에 사용자는 서보 또는 스테퍼 모터의 위치 제어응용프로그램을 아날로그 타입에서 보다 훨씬 쉽게 사용하실 수있습니다 . 이는 모션과 모션 제어가 이 방법을 통해 쉽게 분류될수 있음을 의미합니다 .

두 인터페이스는 Gain 튜닝을 지원해야 합니다. 아날로그 위치 제어기의 경우 제어루프가 내장되어 있어야 하며 사용자는 반드시제어기로부터 Gain 튜닝을 해주어야 합니다 . 펄스 타입의 위치 제어기의 경우 제어루프는 모터 드라이버의 외부에 위치하며 사용자는 드라이버에 Gain 튜닝을 해주어야 합니다 .

한 축 이상의 동작을 위해서는 모션 제어는 모터 제어보다 중요합니다. 산업용 응용에서 신뢰성은 아주 중요한 요소입니다. 모터 드라이버 생산자는 좋은 성능의 제품을 만들고 모션 제어기 생산자는 강력하고 다양한 모션 소프트웨어를 만듭니다 . 이 두 가지 제품이 합쳐질 때 본 제품은 완벽해질 수 있습니다 .

# 4.1.3 네트워크 타입의 모션 제어 인터페이스

네트워크 모션 제어기는 최근에 소개되었습니다 . 모터 드라이버와 모션 제어기 사이의 명령은 더 이상 아날로그 또는 펄스 신호가아니며 위치 정보와 모터 정보를 포함하는 네트워크 패킷을 사용하는 이 타입의 제어기는 디지털화와 패킷화 되므로 훨씬 더 신뢰할 수 있습니다 . 모션 제어기는 반드시 실시간 제어되어야 하므로네트워크는 반드시 1ms 이하 사이클 타임의 실시간 처리 용량을가져야 합니다. 미츠비시의 SSC-NET 네트워크는 이 속도를 만족하는 네트워크 중 하나입니다 .

# 4.1.4 소프트웨어 실시간 모션 제어 커널

모션 제어 커널은 DSP 기반 , ASIC 기반 , 소프트웨어 실시간 기반의 세 가지 방법을 사용합니다 .

모션 제어 시스템은 확실한 실시간 제어 사이클과 연산을 필요로하며 이러한 사이클을 이용하여 제어기는 제어 데이터를 제공해야합니다. 만약 모터가 부드럽게 작동하지 않을 경우 일반적으로 PC의 연산 능력을 사용하여 문제를 해결합니다 . 또한 , 간단한 피드백 카운터 카드 , 전압 출력 또는 펄스 출력 카드를 사용하기도 합니다 . 이 방법은 저가이지만 소프트웨어의 개발이 필요하며 실시간 성능을 개발하기 위해서는 실시간 소프트웨어를 시스템에 사용해야 합니다 . 이는 시스템을 더욱 복잡하게 하지만 전문적인 모션설계자를 위해서는 높은 유연성을 가진 방법이며 대부분의 경우NC 장비에 사용되고 있습니다 .

# 4.1.5 DSP 기반의 모션 제어 커널

DSP 기반의 모션 제어 커널은 컴퓨터 상의 실시간 소프트웨어 문제들을 해결할 수 있습니다 . DSP 는 마이크로 프로세서이며 모든모션 제어 연산은 이것을 통해서 할 수 있습니다 . 또한 , DSP 는 관련된 모든 과정의 자체 OS를 가지고 있기 때문에 실시간 소프트웨어 문제가 존재하지 않습니다 . 또한 , 다른 입력이나 윈도우 기반의 컴퓨터와 같은 상황정보 스위칭 문제로부터의 문제점이 없습니다. 비록 DSP가 실시간 요구에 적합한 완벽한 성능을 가졌다고 하여도 연산 속도는 오늘날의 컴퓨터와 같이 빠르지 않습니다 . 문제점은 DSP 기반 제어기의 생산자와 사용자 간의 소프트웨어 인터페이스가 사용하기 쉽지 않다는 것입니다 . 몇몇 제어기 공급자는사용자의 학습을 위한 어셈블리 언어와 같은 프로그램을 제공하고몇몇 제어기 공급자는 간단한 참고 문서만을 제공합니다 . 이런 두가지 방법 모두 사용하기에는 쉽지 않으며 일반적으로 DSP 기반의 제어기는 장비 제조업자가 쉽게 적용하기 위하여 소프트웨어커널보다 더 나은 방법을 제공해야 합니다 .

# 4.1.6 ASIC 기반의 모션 제어 커널

ASIC 기반의 모션 제어 커널은 DSP 커널과는 조금 다릅니다 . 이는 모든 모션 기능을 ASIC를 통해서 수행하므로 실시간 제어에 전혀 문제가 없습니다 . 사용자 또는 제어기 공급자는 ASIC 가 요구하는 몇 가지 파라미터의 설정을 필요로 하는데 이는 수행하기 쉽습니다 . 이러한 종류의 모션 제어는 모든 시스템의 통합에 발생하는 문제를 4 가지로 나뉘는데 이는 모터 드라이버의 성능 , ASIC 출력 프로파일 , 공급자의 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 기반의 펄스 타입 모션 제어기입니다 . 이 제어기는 모션 ASCI, PCI 카드 , 소프트웨어 모션 라이브러리의 세가지 부분으로 이루어져 있습니다 . 사용자는 Windows 2000/XP,리눅스 , RTX 드라이버 하에서 드라이버에서 제공하는 소프트웨어 모션 라이브러리를 통해 모션 ASCI에 쉽게 접근할 수 있습니다. 이 제품의 소프트웨어 모션 라이브러리는 모터를 제어하기 위한one-stop 함수를 제공하며 모든 속도 파라미터의 연산은 이 제품의 라이브러리를 통해 행해집니다 .

예를 들어 만약 귀하가 한 축에 대한 지점 간 모션을 trapezoidal속도 프로파일을 이용하여 수행할 경우 단지 하나의 함수의 가속시간 , 속도 , 목표 위치만 정하면 동작이 가능합니다 . 이후 모터는프로파일에 따라 동작하게 됩니다 . 이러한 작업은 CPU 의 자원을사용하지 않는데 그 이유는 모든 제어 사이클 펄스는 ASIC에 의해수행되기 때문입니다 . 목표 위치의 정확성은 모션 제어기의 명령값이 아닌 closed loop 제어 수행능력과 모터 드라이버의 기계적부분에 의존합니다 . 그 이유는 모션 제어기는 단지 요구되는 속도프로파일을 통해 정확한 펄스를 출력하는 부분에만 책임이 있기때문입니다 . 이는 프로그래머 , 기술자 , 엔지니어들이 문제의 원인을 찾아내는 것을 훨씬 용이하게 해줍니다 .

# 4.2 모션 제어 모드

모션 제어는 양 (+) 또는 음 (-) 의 움직임뿐 아니라 , 다른 축과 동기 조건 , 궤도 경로 , 지정된 속도 프로파일에 따라 모터가 구동할수 있도록 돕습니다 . 이하의 내용은 모션 제어기가 수행할 수 있는모션 제어 모드에 대해 자세히 설명하고 있습니다 .

# 4.2.1 좌표 시스템

데카르트 좌표 시스템이 사용되며 펄스는 길이의 단위입니다 . 물리적 길이는 기계적 부분과 모터의 분해능에 따라 다릅니다 . 예를들어, 만약 모터가 피치가 10mm인 스크류 볼에 설치되고 모터 한바퀴당 필요한 펄스가 10,000 펄스일 때 한 펄스의 물리적 단위는10mm/10,000p=1 마이크로미터입니다 .

만약 모션 제어기를 15mm 이동하고 싶다면 명령 펄스를 15,000으로 설정 하시면 됩니다 . 만약 15.0001mm 를 움직이고 싶다면어떻게 해야 할까요? 모션 제어기는 1 펄스보다 작은 잔여 값은 기억해 두었다가 다음 명령에 포함 시킵니다 .

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

모션 제어기는 증가형 펄스를 모터 드라이버로 보냅니다 . 이것은우리가 단지 상대적 명령을 모터 드라이버로 보낼 수 있다는 것을뜻하지만 , 이 문제는 초기에 현재 위치와 목표 위치 사이의 차이를계산함으로써 해결되었습니다 . 예를 들어 만약 현재 위치가 1000이고 9000 으로 모터를 이동하고 싶다면 사용자는 절대 명령을 사용하여 목표 위치를 9000 으로 설정 하면 됩니다 . 모션 제어기 내부에는 먼저 현재 위치 1000 을 얻은 후 목표 위치인 9000 과의 차이점을 얻어낼 수 있습니다 . 이것은 +8000 이며 모션 제어기는8000 펄스를 목표 위치인 9000까지의 이동 명령으로 모터 드라이브에 전송하게 됩니다 .

때때로 귀하는 기계의 위치 값을 확인하기 위하여 선형 스케일 또는 외부의 인코더를 설치할 수 있습니다 . 하지만 어떻게 이 좌표시스템을 설정할 수 있을까요? 만약 외부 인코더의 분해능이 1mm당 10,000 펄스이면 모터는 1mm 이동을 위해 1000 펄스를 전송할 것입니다 . 이것은 1mm 이동을 위해서 1000 펄스를 모터 드라이버로 보냈고 10,000 펄스의 인코더 피드백 값을 받는다는 뜻입니다 . 만약 우리가 절대 명령으로 모터를 10,000 펄스 위치로 이동시키고 싶다면 얼마의 펄스를 모터드라이버로 보내야 할까요 ?답은 (10000 – 3500) / (10,000 / 1,000)=650 펄스 입니다 . 모션제어기는 만약 귀하가 이미 “move ratio” 로 설정하신 경우 자동으로 연산할 것이며 ‘’move ratio” 는 피드백 분해능 / 명령 분해능과 동일 합니다 .

![Based on the provided image, here is the accurate description of the flowchart blocks and connections:\n\n**Labeled Blocks:**\n*   **제어기** (Controller)\n*   **필스 명령** (Pulse Command) - located above the Controller block.\n*   **드라이버** (Driver)\n*   **모터** (Motor)\n*   **운동** (Movement) - located above the mechanical assembly with a double-headed arrow.\n*   **볼 스크류 & 가이드** (Ball Screw & Guide) - pointing to the threaded rod mechanism.\n*   **인코더** (Encoder) - pointing to the bottom guide rod.\n*   **필스 F/B** (Pulse Feedback) - located below the feedback line.\n\n**Connections:**\n*   An arrow points from **제어기** to **드라이버**.\n*   An arrow points from **드라이버** to **모터**.\n*   An arrow points from **모터** to the **볼 스크류 & 가이드** assembly.\n*   A feedback loop arrow labeled **필스 F/B** originates from the bottom of the assembly (near the encoder) and points back to **제어기**.](.pci-8158-korean-50-11139-2b00-200-en/5d95d72dc21b10ec846ff5cf88be46e54de06b942890ae46d46c62254eb5848f.jpg)

# 4.2.2 절대 , 상대 위치 이동

본 제품은 좌표 시스템에서 목표 위치로 이동하기 위해 절대 이동과 상대 이동의 두 가지 명령이 존재합니다 . 절대이동 명령은 사용자가 모션 제어기에 위치 값을 주면 모션 제어기는 현재의 위치부터 목표위치까지 이동하게 됩니다 . 상대이동 명령은 모션 제어기에 거리 값을 주면 모션 제어기는 현재의 위치에서 거리 값에 의하여 모터를 움직이게 됩니다 . 이동 중에 귀하는 속도 프로파일을 설 정할 수 있는데 이는 귀하가 얼마나 빠르게 어떠한 속도로 위치에도착할 것인가를 결정할 수 있습니다 .

# 4.2.3 Trapezoidal 속도 프로파일

Trapezoidal 은 가속 / 감속 구간이 1 차 성분 선형 속도 프로파일을 따르는 것을 말합니다 . 이 프로파일 차트는 다음과 같습니다 .

![| 时间 (秒) | Voltage (s) |\n| --------- | ----------- |\n| Tacc      | StrVel      |\n| MaxVel    | MaxVel      |\n| Tdec      | StrVel      |](.pci-8158-korean-50-11139-2b00-200-en/84c76eb24de51d0f4825e71664f78b25d939a0bab44627589eb4be0ba1ba2b3d.jpg)

속도 프로파일 구간은 이 모션의 거리를 나타내며 때때로 요구되는 거리가 주어진 속도 파라미터 구간보다 작을 경우 삼각형으로보이기도 합니다 . 이러한 상황이 발생할 때 모션 제어기는 최대 속도보다 작아지게 되지만 가속율은 요구거리를 만족시키기 위해 유지하게 됩니다 . 다음 차트는 이와 같은 상황을 보여 줍니다 .

![| Time Segment | Value |\n| ------------ | ----- |\n| MaxVel       | MaxVel |\n| StrVel       | StrVel |](.pci-8158-korean-50-11139-2b00-200-en/2e182677fb36f004dfff3cc976fc90f0cf096ab9867438dd9ffca1862e30cdc5.jpg)

이러한 종류의 속도 프로 파일은 한 축 또는 다 축의 선형 보간이나 2 개의 축의 원형 보간 모드에서 속도 모드 , 위치 모드에 적용이 가능합니다 .

# 4.2.4 S- 커브와 Bell- 커브 속도 프로파일

S- 커브는 가속 / 감속 구간이 2 차 성분 커브를 따르는 것입니다 .이것은 모터의 시작과 정지 동작의 시작 시 진동을 감소시킬 수 있습니다 . 모션 중 가속 / 감속의 속도 증가를 위해 S- 커브 구간에선형 구간이 필요하고 이를 “Bell” 커브라 부릅니다. 이는 S-커브의 상위 구간과 하위 구간 사이에 선형 커브를 추가하게 되고 이러한 형상은 가속의 속도를 증가시키며 가속으로 인한 진동을 감소시킵니다 .

다음 그림은 Bell 커브 형상의 파라미터를 보여줍니다 .

![| Time Segment | Signal Type | Value |\n| ------------ | ----------- | ----- |\n| Tacc         | VSacc       | Peak  |\n| Tacc         | VSacc       | Low   |\n| Tacc         | VSdec       | Peak  |\n| Tdec         | VSdec       | Low   |\n| Tdec         | VSdec       | Peak  |](.pci-8158-korean-50-11139-2b00-200-en/de6754a0f1f689fddb0f2cfaa0d23ee9a556b98bdf3e4f2a4327214d6cd25a3b.jpg)

 Tacc: 초당 가속 시간
 Tdec: 초당 감속 시간
 StrVel: 시작속도 (PPS 단위 )
 MaxVel: 최대속도 (PPS 단위 )
 VSacc: 커브의 가속 S 커브 부분 (PPS 단위 )
 VSdec: 커브의 감속 S 커브 부분 (PPS 단위 )

만약 VSacc 또는 VSdec 값이 0 일 경우 가속 또는 감속이 어떤선형 구간 없이 순수 S- 커브라는 것을 의미합니다 . Bell 커브의가속 차트는 다음과 같습니다 .

![| 时间段 | 能耗 (PPS/S) |\n| ------ | ------------ |\n| Tacc   | -            |\n| Tdec   | -            |](.pci-8158-korean-50-11139-2b00-200-en/6ae304de9cf1cf71046ab5f06b14ad507d2622eae3cbc412a3c8ffc76d4fc067.jpg)

S- 커브 프로파일 모션 함수는 항상 “ 부드러운 모션 ” 을 하도록설계되었습니다 . 만약 최종 위치를 가지는 가속 파라미터에 대한시간이 최대 속도로 축에 도달하는 것을 허용하지 않을 경우 . 즉이동거리가 너무 작아서 최고 속도에 도달하지 않는 경우에는 최대 속도는 자동으로 낮아지게 되고 이는 다음의 그림과 같습니다 .

이 규칙은 MaxVel 과 Tacc, Tdec, VSacc, VSdec 의 값을 자동적으로 낮추며 StrVel, 가속, 변경되지 않은 jerk의 값을 유지합니다 . 이는 또한 Trapezoidal 프로파일 모션에 적용 가능 합니다 .

이러한 속도 프로파일은 한 개의 축 또는 다축의 선형 보간과 두개의 축 간 원형 보간 모드의 위치모드 , 속도 모드에 적용할 수 있습니다 .

![| 时间 (초) | Line 1 | Line 2 | Line 3 | Line 4 | Line 5 |\n| --------- | ------ | ------ | ------ | ------ | ------ |\n| 0         | 0      | 0      | 0      | 0      | 0      |\n| 1         | 0.5    | 0.3    | 0.7    | 0.2    | 0.8    |\n| 2         | 1.2    | 0.8    | 1.5    | 0.6    | 1.8    |\n| 3         | 1.8    | 1.3    | 2.0    | 0.9    | 2.5    |\n| 4         | 2.0    | 1.5    | 2.2    | 1.1    | 2.8    |\n| 5         | 1.8    | 1.3    | 2.0    | 1.0    | 2.5    |\n| 6         | 1.5    | 1.0    | 1.7    | 0.8    | 2.0    |\n| 7         | 1.0    | 0.7    | 1.3    | 0.5    | 1.5    |\n| 8         | 0.5    | 0.3    | 0.8    | 0.2    | 1.0    |\n| 9         | 0      | 0      | 0      | 0      | 0.5    |\n| 10        | 0      | 0      | 0      | 0      | 0      |](.pci-8158-korean-50-11139-2b00-200-en/366fe9ea5d882f78afd98a27f57161682224a2593ab8987e21dd1cbc759316eb.jpg)

# 4.2.5 속도 모드

의미합니다 . 모터는 목표 위치 또는 요구되는 거리 값이 없이 다른이유에 의해 정지될 때까지 동작하게 됩니다 . 출력 펄스는 시작 속도부터 정해진 최대 속도까지 가속하게 되며 이는 선형 또는 S- 커 속 형태를 지닐 수 있습니다 . 펄스 출력 비율은 다 른 속도 명속도를 유지합있으며 새로운속도는 원래의 진행 속도에 반대되는 속도가 될 수 없습니다 . 이러한 종류의 모션 속도 프로파일은 다음과 같습니다 . 령이 설정되거나 정지 명령이 내려질 때까지 최대 니다 . 속도는 새로운 속도 설정에 의해 치환될 수

![속도\n(PPS)\n속도 Override\n정지 기능\n시간\n(초)\n속도 모드 시작](.pci-8158-korean-50-11139-2b00-200-en/145e07f1b36dc908551d76c8be9a5b4576124870238a40c9c175610149bf8270.jpg)

# 4.2.6 한 축의 위치 모드

위치 모드는 모션 제어기가 요구된 위치 또는 거리 값과 같은 지정된 펄스 수를 출력하는 것을 의미합니다 . 거리나 위치의 단위는. PCI-8158에서는 사용자가 물리적 거리를 펄스로 변환실수 사용이 가능한 함수를 제공하며 소프트웨어는 1 펄은 거리 값을 레지스터에 보관하였다가 다음 모션 동작니다 . 펄스 카운터를 통한 위치이동을 제외하고 본 모션 세 가지 타입의 속도 프로파일을 위치이동을 위해 제공 PC1 모션 제어기 내부에서 지정되며 거리의 최소 단위는 1 펄스입니다 스보다 작에 적용합제어기는는 1 차 성분 trapezoidal, 2 차 성분 S- 커브 그리고 혼합된 Bell커브입니다 . 사용자는 각 함수를 사용 가능하며 다음의 그림은 거리 값과 속도 프로파일의 관계를 보여줍니다 .

![수도\nPPS\nMaxVel\nStrVel\nGr리\nStrVel\nTacc\nTdec\n시간\n(초)](.pci-8158-korean-50-11139-2b00-200-en/9c8cdb64c764e3fdbb3370adc54eeebdb021400377fe91f1797d77b57ca7a222.jpg)

거리는 이 프로파일의 V-t 다이어그램 구간입니다 .

# 4.2.7 두 축의 선형 보간 위치 모드

“ 다축간 보간 ” 은 축들이 동시에 모션을 시작하고 지정된 위치에도달하는 것을 말하며 선형은 모든 축의 속도비율이 상수 값을 가지는 것을 의미합니다 . 모션을 (0,0) 부터 (10,4) 까지 이동시킨다고 가정할 때 선형 보간의 결과는 다음과 같습니다 . X 축 또는 Y 축부터의 펄스 출력은 완벽한 선형 라인에 따라 1/2 의 펄스 차가 남아있습니다 . 선형 보간의 정확도는 다음 그림에서 보실 수 있습니다 .

![| X(마스터축) | Y(슬레이브축) |\n|---|---|\n| 0 | 0 |\n| 2 | 0.8 |\n| 3 | 1.0 |\n| 5 | 1.9 |\n| 7 | 2.9 |\n| 9 | 3.9 |\n| 10 | 4.0 |\n정지 좌표\n(10,4)](.pci-8158-korean-50-11139-2b00-200-en/53e2731fa0239c29edbfd278da09aed945b2bb28949dad537ebe5fd7adb12183.jpg)

X 또는 Y 축으로부터의 펄스 출력은 완벽한 선형 보간에 따라 1/2펄스차가 남아있게 되며 선형 보간의 정확도는 다음 그림을 통해확인하실 수 있습니다 .

![| X(마스터축) | Y(슬레이브축) |\n|---|---|\n| 0 | 0 |\n| 2 | 1 |\n| 4 | 2 |\n| 6 | 3 |\n| 8 | 4 |\n| 10 | 4 (标注为(10,4)) |\n±0.5 LSB max](.pci-8158-korean-50-11139-2b00-200-en/82623f965ed1516253c5e00d782d3e93d49f007d8d00afcfaa1ec9a8ee32202e.jpg)

보간 그룹의 정지를 위해서는 단지 첫 축의 그룹에 대한 정지 함수를 호출하면 됩니다 .

밑의 그림과 같이 8 축 선형 보간은 XY 위치가 P0 부터 P1 으로이동 하는 것을 의미합니다 . 두 개의 축은 동시에 시작 / 정지 하며경로는 직선을 나타냅니다 .

X 축과 Y 축의 속도 비율은 (ΔX: ΔY) 이며 각각의 벡터 속도는 :

![| Point | X-Axis | Y-Axis |\n|---|---|---|\n| P0(X0,Y0) | 0 | 0 |\n| P1(X1,Y1) | 1 | 0 |\n| ΔX | X-axis label | ΔX label |\n| ΔY | X-axis label | ΔY label |\n| ΔP/Δt = √((ΔX/Δt)² + (ΔY/Δt)²) | X-axis label | ΔP/Δt value |](.pci-8158-korean-50-11139-2b00-200-en/fd9b7a64e1c1c5774dc9fdd7557e5e5ad72bb9e1738866aac64dfbc6c7aa2633.jpg)

8 축 선형 보간 함수를 호출할 경우 벡터 속도는 시작 속도 ,StrVel, 최대 속도 , MaxVel 의 정의를 필요로 합니다 .

# 4.2.8 두 축간 원형 보간 모드

원형 보간은 XY 축이 모두 동시에 특정한 지점 , (0,0) 에서 출발하여 정지지점 (1800,600) 에서 정지하는 것을 의미합니다 . 두 지점 사이의 경로는 arc 이며 MaxVel 은 접선속도입니다 . 만약 arc의 정지지점이 적절한 위치가 아닌 경우 원형 이동은 정지하지 않을 것입니다 .

![(0,0)\n(1000,0)\n(1800,600)\n중심점](.pci-8158-korean-50-11139-2b00-200-en/0d44eec5a31cb7bf3c11ac5ece4ab897b2cb0738eb25ba40b54561e0d7348ee8.jpg)

모션 제어기는 사용자가 원하는 지점이 arc 경로가 아닐지라도작동하겠지만 , 만약 정지 지점이 아래 그림의 검은색 부분이 아닌경우 원형이동은 정지하지 않을 것입니다 .

![B (100, 100)\n두 번째 위상\nA (0, 0)\n첫 번째 위상\nC (200, 0)\n시작포인트 (0,0)\n세 번째 위상\n중심점 (100, 0)\n내 번째 위상\nD (100, -100)](.pci-8158-korean-50-11139-2b00-200-en/cf27d17f6d6e63ffc28472a0701875b93dbabd610c97a67a966af49cf9a29808.jpg)

원형 보간의 명령 정확도는 다음과 같으며 정확도 범위는 반지름±1/2 펄스입니다 .

![Y\nX\n보간트랙](.pci-8158-korean-50-11139-2b00-200-en/8696c77bdc597d6fca75017658222d67118eb87ffa5a7f550f01a121880edc59.jpg)

：
：11±0.05

# 4.2.9 연속적 모션

연속적 모션은 일련의 모션 명령 또는 계속해서 동작 가능한 위치를 의미합니다 . 귀하는 이전의 동작 이후 간단하게 새로운 명령을설정할 수 있습니다 . 본 모션 제어기는 이미 설정된 내부의 세 가지 커맨드 버퍼를 동해 이를 가능하게 만들었습니다 .

첫 번째 명령을 실행할 때 귀하는 두 번째 명령을 첫 번째 버퍼에, 세 번째 명령을 두 번째 버퍼에 설정할 수 있습니다 . 첫 번째 명령이 완료되면 모션 제어기는 두 번째 명령을 실행 레지스터에 입력할 것이고 세 번째 명령을 첫 번째 버퍼에 입력할 것입니다 . 이때 두 번째 버퍼는 비어있게 되는데 사용자는 네 번째 명령을 두번째 버퍼에 설정할 수 있습니다 . 통상적으로 만약 사용자가 실행레지스터가 완료 되기 전 두 번째 버퍼에 새로운 명령을 설정할 수있는 충분한 시간이 있다면 모션은 정지하지 않고 영원히 동작할것 입니다 . 다음의 그림은 계속되는 모션의 구조를 보여줍니다 .

![The diagram illustrates a data processing flow with the following labeled blocks and connections:\n\n**Main Horizontal Flow:**\n1.  The process begins with the text **'모션 명령'**. An arrow points from this text to a rectangular block labeled **'두 번째 버퍼'**.\n2.  An arrow connects **'두 번째 버퍼'** to the next block, labeled **'첫 번째 버퍼'**.\n3.  An arrow connects **'첫 번째 버퍼'** to the next block, labeled **'레지스터 실행 _'** (with an underscore).\n4.  An arrow leads from **'레지스터 실행 _'** to the final output text, **'펄스 명령'**.\n\n**Secondary Connection:**\n*   There is a separate rectangular block at the bottom labeled **'빈 플래그'**. An arrow points upwards from this block, connecting to the main horizontal line between '모션 명령' and '두 번째 버퍼'.](.pci-8158-korean-50-11139-2b00-200-en/79dc4ac8f3009eb2b45f8cba06b66c5d3a6aac74923fa0bffdbb198ad743b4e1.jpg)

위치 명령 이외에 속도 명령은 속도의 계속되는 프로파일의 구동을 위해 정확히 설정되어야 합니다 . 이하의 예시는 계속되는 모션의 세 가지 모션 명령이 존재하고 두 번째 명령은 다른 명령보다빠른 속도를 가지고 있습니다 . 이러한 세 가지 모션 함수 간의 속도의 상호 연결은 다음 그림과 같이 설정됩니다 .

![속도\n(1)\nA.\n(2)\nB.\n(3)\n시간\nTdec=0\nTacc = 0](.pci-8158-korean-50-11139-2b00-200-en/52a01b1f354ecf84113b595bef26bf83959c4504a045d9deee77b535ecaaf8b7.jpg)

Tdec=0

StrVel=MaxVel

Tacc=0

MaxVel=StrVel만약 세 번째 명령의 속도 값이 다른 명령보다 작다면 다음 그림과같이 설정될 것입니다 .

![속도\n(1)\n(2)\n(3)\n시간\nTdec=0\nTacc = 0](.pci-8158-korean-50-11139-2b00-200-en/0deb8e42b777c484da6799af4b45d65962fca4a31ff8f935411ece8f0f85d039.jpg)

Tacc=0

Tdec=0

MaxVel=StrVel

MaxVel=StrVel

이것은 8 축의 계속되는 원호 보간에 대해서도 같은 컨셉을 가집니다 . 귀하는 두 가지 명령의 속도 설정 간 속도를 일치하도록 설정할 수 있습니다 .

![(1000,1000) (2100,1000)\n(2500,600)\n(2500,-600)\n(1000,-1000) (2100,-1000)\n(1000,-1000) (2100,-1000)\n(0,0)\nX\nY\n속도 = 1000 pps](.pci-8158-korean-50-11139-2b00-200-en/19d2120fb6e235662e0fe554b68cca5f8962dcdc5af8cc72561af4d1789730ea.jpg)

INP 검사가 활성화된 경우 모션은 버퍼의 각 명령 간 약간의 지연시간을 가지게 됩니다 . INP 검사 활성화는 요구되는 지점에 도달하게 하지만 각 명령 간의 smoothing을 감소시킵니다 . 지연시간을 원치 않거나 부드러운 모션을 원하는 경우 INP 검사 기능을 끄십시오 .

# 4.2.10 홈 리턴 모드

홈 리턴 모드는 좌표에서 0점의 위치를 찾는 것을 의미합니다. 때때로 사용자는 ORG, EZ 또는 EL 을 좌표상의 0 점 위치로 사용합니다 . 시스템의 전원 공급 동안 프로그램은 기계의 0 점을 찾아야하며 본 모션 제어기는 이를 위한 홈 리턴 모드를 제공합니다 .

본 제품은 많은 홈 리턴 모드와 각 모드의 내용은 많은 제어 상황을 포함하고 있습니다 . 이러한 모든 상황은 ASIC 를 통해 수행되며 CPU 의 로딩이나 다른 소프트웨어는 필요치 않습니다 . 예를 들어 상승 엣지 시 ORG 입력의 경우 홈 리턴 이 완료된 후 목표 카운터는 홈 모드의 요구되는 조건에서 0 으로 리셋될 것입니다 . 때때로 카운터가 리셋된 이후에도 기계에는 여전히 출력 펄스가 나타날 수 있습니다 . 모터가 정지하였을 때 카운터는 0 점이 아니겠지만 홈 리턴 과정은 이미 완료되었습니다. 이때 귀하가 보는 카운터 값은 기계의 0 점에서부터의 참조 위치입니다 .

이하의 그림은 여러 가지 홈 리턴 모드를 보여줍니다 . R 은 명령과 위치 카운터의 카운터 리셋을 의미하고 E 는 ERC 신호 출력을의미합니다 .

三=O（ORG）

SD

![The diagram contains the following labeled blocks and connections:\n\n**Labeled Blocks/Rows:**\n*   **Rows:** 'ORG', 'EL', 'Case 1', 'Case 2', 'Case 3'\n*   **Blocks:** 'R', 'E'\n\n**Connections:**\n*   A thick black line on the 'Case 1' row ends and splits into arrows.\n    *   One arrow points upwards and to the right, connecting to the **'R'** block.\n    *   One arrow points to the right, connecting to the **'E'** block.\n*   An arrow points from the bottom of the **'R'** block downwards and to the right, connecting to the **'E'** block.\n*   An arrow points from the left side of the **'E'** block to the left (towards the 'Case 1' line).\n\n**Visual Elements:**\n*   Thick black pulses appear on the 'Case 1', 'Case 2', and 'Case 3' rows. The pulses in 'Case 2' and 'Case 3' are shifted to the right relative to 'Case 1'.\n*   Rectangular pulses appear on the 'ORG' and 'EL' rows.](.pci-8158-korean-50-11139-2b00-200-en/111773185310c161939b2a4e3d8b39b988de7de884443c04798ba68134a2dea9.jpg)

·SDlatch

![Based on the provided image, here is the accurate description of the flowchart/block diagram:\n\n**Labeled Blocks:**\nThe diagram lists signals or states on the left-hand side, labeled vertically from top to bottom:\n*   ORG\n*   SD\n*   EL\n*   Case 1\n*   Case 2\n*   Case 3\n*   Case 4\n\nAdditionally, there are two rectangular annotation boxes labeled:\n*   R&E\n\n**Connections:**\n*   There are two 'R&E' boxes positioned between the signal lines.\n*   The upper 'R&E' box has two arrows originating from it, pointing towards the 'Case 1' and 'Case 2' signal lines.\n*   The lower 'R&E' box has two arrows originating from it, pointing towards the 'Case 2' and 'Case 1' signal lines.](.pci-8158-korean-50-11139-2b00-200-en/27e4b5cfeaf36a863d420a7fdbc2df574dffeca912dcec40cb4ba72c0b9c6184.jpg)

=1（ORGON
![ORG\nEL\nCase 1\nFA Speed\nCase 2\nCase 3\nR&E](.pci-8158-korean-50-11139-2b00-200-en/92791a29415dc1c93ad3efc1c73a41c65b80a8178de023d19a0c899f060d8b3f.jpg)

=2（ORGONEZ引）
![ORG\nEZ\nEL\nCase 1\nCase 2\nCase 3\nCase 4\nR&E\n(EZ_Count = 1)\n(EZ_Count = 2)](.pci-8158-korean-50-11139-2b00-200-en/6629645818a6b0a87a90853f67be4560c10caf0fbf33a607aa2278d61bb118d5.jpg)

=3(ORGONEZ
![The image is a timing diagram showing signal interactions across several rows labeled **ORG**, **EZ**, **EL**, **Case 1**, **Case 2**, **Case 3**, and **Case 4**.\n\n**Labeled Blocks:**\n*   **ORG**, **EZ**, **EL**: Row labels.\n*   **R**, **E**: Shaded boxes appearing on the **EL** line and the **Case 3** line.\n*   **Case 1**, **Case 2**, **Case 3**, **Case 4**: Row labels indicating different scenarios.\n*   **(EZ_Count = 1)**: Text label next to **Case 1**.\n*   **(EZ_Count = 2)**: Text label next to **Case 2**.\n\n**Connections:**\n*   **From the upper 'R' box (on EL line):** Arrows point to the trailing edges (falling edges) of the pulses in **Case 1** and **Case 2**.\n*   **From the upper 'E' box (on EL line):** Arrows point to the trailing edges (falling edges) of the pulses in **Case 1** and **Case 2**.\n*   **From the lower 'R' box (on Case 3 line):** An arrow points to the leading edge (rising edge) of the pulse in **Case 3**.\n*   **From the lower 'E' box (on Case 3 line):** An arrow points to the trailing edge (falling edge) of the pulse in **Case 3**.](.pci-8158-korean-50-11139-2b00-200-en/85404f6065ba5e951324a4e31e92bbe5377b265a2dbe824c103c3259e6011a92.jpg)

=4ORGONEZ
![ORG\nEZ\nEL\nCase 1\n(EZ Count = 1)\nFA Speed\nCase 2\n(EZ_Count = 0)\nFA Speed\nCase 3\nR&E\nCase 4](.pci-8158-korean-50-11139-2b00-200-en/c9509d7ad698173d0b793a0bc1c007f856be2790c14884197f46df0d55e93028.jpg)

=5OGOEZ ，

![Based on the provided image, here is an accurate and concise description of the flowchart/block diagram:\n\n**Labeled Blocks and Text:**\n*   **Signal Labels (Top):** 'ORG', 'EZ', 'EL'\n*   **Row Labels:** 'Case 1', 'Case 2', 'Case 3', 'Case 4'\n*   **Logic Blocks:** 'E', 'R'\n*   **Annotations:** '(EZ_Count = 1)', '(EZ_Count = 0)'\n\n**Connections and Structure:**\n*   **Case 1:**\n    *   An arrow connects block **'E'** to the left side of an octagonal loop.\n    *   An arrow connects block **'R'** to the top side of the same loop.\n    *   The loop has an arrow pointing right on its far right side.\n    *   The text **'(EZ_Count = 1)'** is displayed to the right of the loop.\n*   **Case 2:**\n    *   An octagonal loop is shown without external blocks.\n    *   The top wire of the loop has an arrow pointing right.\n    *   The bottom wire of the loop has an arrow pointing left (at the far right end).\n    *   The text **'(EZ_Count = 0)'** is displayed to the right.\n*   **Case 3:**\n    *   Block **'E'** has arrows connecting to the loop and to block **'R'**.\n    *   Block **'R'** has an arrow connecting to the loop.\n    *   The loop has an arrow pointing right.\n    *   Below the loop, a separate arrow points right.\n*   **Case 4:**\n    *   A separate arrow points right, aligning with the path below the loop in Case 3.](.pci-8158-korean-50-11139-2b00-200-en/d3d415c66836c0f876e3ed13ded5e1b754e5887dec68dfd12e6558226a513d09.jpg)

E引）

![EL\nCase 1\nFA Speed\nR&E](.pci-8158-korean-50-11139-2b00-200-en/6aa55d4e1ab209406a012749e41402bcb1ac4e1fbfdf640aeb14296ada24b028.jpg)

=7EOEL）

![EZ\nEL\nCase 1\n(EZ_Count = 1)\nFA Speed\nR&E](.pci-8158-korean-50-11139-2b00-200-en/841f22288231228b04f71e9c537b412ccce0cd7cba34f29ab13d2cd3249ecce9.jpg)

=8EOE ，A

![EZ\nEL\nCase 1\nE\n(EZ_Count = 1)\nR](.pci-8158-korean-50-11139-2b00-200-en/1797bd6c4f1acdc23212f88d355b5601005be938bacd9911d06d09a7c27c6dd2.jpg)

![The diagram features horizontal rows labeled **ORG**, **EL**, **Case 1**, **Case 2**, and **Case 3**. There are two boxes labeled **R** and **E**.\n\nThe connections are as follows:\n*   Two arrows originate from the thick black line in the **Case 1** row and point to the box **R**.\n*   One arrow originates from the box **E** and points to the thick black line structure that bridges the **Case 1** and **Case 2** rows.\n*   Additionally, there are separate thick black lines in the **Case 2** and **Case 3** rows extending to the right.](.pci-8158-korean-50-11139-2b00-200-en/b64dbed078242ab2fefdc64776f017a8d8b653ae165a3b10021f8cbbfc383b06.jpg)

=10（ORGONEZ引， 2

![ORG\nEZ\nEL\nCase 1\n(EZ_Count = 1)\nCase 2\nCase 3](.pci-8158-korean-50-11139-2b00-200-en/80fe56b19f8f9be37a34105d18a3066b3c8fdf77fc3f17a61c8a2cbb326ae032.jpg)

=GEZ

![Based on the provided image, here is an accurate and concise description of the flowchart/timing diagram:\n\n**Row Labels:**\n*   **ORG**\n*   **EZ**\n*   **EL**\n*   **Case 1**\n*   **Case 2**\n*   **Case 3**\n*   **Case 4**\n\n**Text Annotations:**\n*   **(EZ Count = 1)** (located at the end of Case 1)\n*   **(EZ Count = 0)** (located at the end of Case 2)\n\n**Labeled Blocks:**\n*   **E** (appears twice)\n*   **R** (appears twice)\n\n**Connections (Arrows):**\n*   **Case 1:** An arrow connects block **E** to an octagon-shaped logic gate.\n*   **Case 2:** An arrow connects block **R** to an octagon-shaped logic gate, and another arrow connects block **E** to the same gate.\n*   **Case 3:** An arrow connects block **R** to a 'D'-shaped logic gate.](.pci-8158-korean-50-11139-2b00-200-en/3a2f8dc81243e1b94a6225e8cb2225ddeeca2539885eea7d783273f4b26fa8b3.jpg)

=1EONEZ

![EZ\nEL\nCase 1\n(EZ_Count = 1)\nE\nR](.pci-8158-korean-50-11139-2b00-200-en/116fbbd0ec8a032ea01871648bf0ad22caf604fe74810cb6e8587f86e88ea2b2.jpg)

# 4.2.11 홈 검색 기능

이 기능은 축의 위치와 관계없이 이전에 언급된 보통의 홈 리턴 모드에서자동검색 기능을 추가하기 위하여 사용됩니다 . 다음의 그림은 홈 검색 기능을 통한 홈 모드 2 의 예를 보여줍니다 . ORG 옵셋은 0 일 수 없으며 추천 값은 ORG 구간 길이의 두 배입니다 .

![The diagram presents a timing or sequence layout with vertical signal labels on the left: **ORG**, **EL**, **Case 1**, **Case 2**, and **Case 3**.\n\nThere are three distinct logic groupings arranged vertically, each containing the following elements and connections:\n\n1.  **Top Grouping (near Case 1):**\n    *   A rectangular block labeled **R&E** connects via two lines to a small square box containing internal arrows.\n    *   This assembly is positioned adjacent to a shape labeled **FA Speed**.\n\n2.  **Middle Grouping (near Case 2):**\n    *   A rectangular block labeled **R&E** connects via two lines to a small square box containing internal arrows.\n    *   This assembly is positioned adjacent to a shape labeled **FA Speed**.\n    *   A bracket below this shape is labeled **ORG Offset**.\n\n3.  **Bottom Grouping (near Case 3):**\n    *   A rectangular block labeled **R&E** connects via two lines to a small square box containing internal arrows.\n    *   This assembly is positioned adjacent to a shape labeled **FA Speed**.\n    *   A bracket below this shape is labeled **ORG Offset**.](.pci-8158-korean-50-11139-2b00-200-en/debada3f90bd67438c04d1e868c31cdb34282c550e423412b0a69587f9cfc888.jpg)

# 4.2.12 수동 펄스 기능

수동 펄스는 펄스 열을 수동으로 발생시키는 장치입니다 . 발생된펄스는 모션 제어기로 전송되고 펄스 출력 핀으로 재전송 됩니다 .입력 펄스는 전송되기 전 곱해지거나 나누어질 수 있습니다 .

모션 제어기는 수동 펄스 장치로부터 CW/CCW 와 AB 위상의 두가지 종류 펄스열을 받습니다 . 만약 AB 위상 입력 모드가 선택된경우 승수는 1, 2 또는 4 의 추가적인 선택요소를 가지게 됩니다 .

다음 그림은 펄스 비율을 나타냅니다 .

![Based on the provided image, here is an accurate description of the flowchart:\n\n**Labeled Blocks:**\n1.  **First Block (Left):** Contains the text 'CW/CCW, 1x, 2x, 4x AB'. Below this block is the label '입력 모드 설정'.\n2.  **Second Block (Center):** Contains the text '1x to 32x'. Below this block is the label 'PMG 설정'.\n3.  **Third Block (Right):** Contains the text '1 to 1/2048'. Below this block is the label 'PDV 설정'.\n\n**Connections and Flow:**\n*   **Inputs:** Two arrows labeled 'PA' and 'PB' point into the left side of the first block.\n*   **Between First and Second Block:** Two arrows exit the right side of the first block. The top arrow is labeled 'UP1' and the bottom arrow is labeled 'DOWN1'. Both point into the left side of the second block.\n*   **Between Second and Third Block:** Two arrows exit the right side of the second block. The top arrow is labeled 'UP2' and the bottom arrow is labeled 'DOWN2'. Both point into the left side of the third block.\n*   **Final Output:** Two arrows exit the right side of the third block. The top arrow is labeled 'UP3' and the bottom arrow is labeled 'DOWN3'. These point toward the text on the far right, which is stacked vertically as '내부' on top and '제어' below it.](.pci-8158-korean-50-11139-2b00-200-en/d762f8b5071aacf43a8889cd3c3bdef1853e5e072f343853e4d7b1933ce0475b.jpg)

# 4.2.13 동시 시작 기능

동시 모션은 하나의 축 이상이 외부 또는 내부의 신호인 동시 신호로 시작될 수 있음을 의미합니다 . 외부 신호를 위해 사용자는 반드시 모든 축에 대해 외부의 시작 / 정지 명령을 대기하게 하는 동작인 동작 파라미터를 먼저 설정해야 합니다 . 내부 신호에 대해서는 소프트웨어 시작 함수가 시작 명령이 됩니다 . 한번 이것이 호출되면 동기 모드에서 대기하고 있는 모든 축이 동시에 시작하게 됩니다 .

![The diagram depicts a signal control flow splitting into two axes, associated with motion profiles.\n\n**Labeled Blocks and Text:**\n*   **Input:** '시작/정지 신호' (Start/Stop Signal)\n*   **Block 1:** '축 0' (Axis 0)\n*   **Block 2:** '축 1' (Axis 1)\n\n**Connections and Layout:**\n1.  A horizontal line extends from the input text '시작/정지 신호' and splits into two vertical branches.\n2.  The upper branch points to the right into the block labeled '축 0'.\n3.  The lower branch points to the right into the block labeled '축 1'.\n4.  To the right of the blocks, a vertical dashed line separates the diagram from two graphs.\n5.  Aligned with the top block ('축 0'), there is a trapezoidal waveform with an arrow pointing right above it.\n6.  Aligned with the bottom block ('축 1'), there is a smaller trapezoidal waveform with an arrow pointing right above it.](.pci-8158-korean-50-11139-2b00-200-en/e01000c2181565e900bdc17a8c57abfb392e4462e5d791b1ccd57e86144daeec.jpg)

# 4.2.14 속도 Override 기능

속도 override 는 사용자가 모션의 운영 동안 명령의 속도를 바꿀있 을 의미합니다 . 변환 파라미터는 원래 정 의된 속도의 비율용자는 一 속도 값을 100% 로 정의함으로써 모션이 동작하는속도의 비 율 로 속도를 변환할 수 있습니다 . 만약 사용자가을 100%  최근 모션 로 정의하지 않았을 경우 , 속도 기본값의 100%명령의 최대 속도로 설정됩니다 . 이 기능은 어션 기능에도 적용될 수 있는데 만약 동작중인 모션이 S- 커는 Bell 커브인 경우 속도 override 는 순수 S- 커브가 될 것동작 중인 모션이 t- 커브 인 경우에는 속도 override 은 t- 커브가 됩니다 .

![| Region | Value |\n|--------|-------|\n| Top Left | 0%    |\n| Top Right | 100%  |\n| Bottom Left | 50%   |\n| Bottom Right | 50%   |](.pci-8158-korean-50-11139-2b00-200-en/75db0114402451c90141fe659f130075d7e124361ac30d4e39e654f3e7bde320.jpg)

# 4.2.15 위치 Override 기능

위치 override 는 사용자가 위치 명령을 목표 위우 모 표 1 위 치의 변경을 원하는 경 우 를 내릴 의미합니다 . 만 때나 운영 중 위치 약 새로 는 감속 할 것이며 새로운 위치것입니다 . 만약 새로운 목표 위같은 방향의 위치일 경우 모터는 override 명령이 내려질 때의 목표 위치보다 뒤에 위치 를 향해 반대로현진 표 위 재 치를 향 모션이 감속 해 동작할 중이 것입니다 . 卫 고 목표 위치가 치가 명령 현 만 재 현재 위 속도를 약 의 위 속도를 유 override 치로부터 ? 치로같은 방향에 위치할 경우 모터는 원 향해가속하며 새로운 목표 위치를 향해 동작할 것입니다 . 운영 예시는아래 보이는 그림과 같고 만약 새로운 목표 위치의 상대적인 펄스가 원래의 감속하는 펄스보다 작을 경우 이 기능은 제대로 작동하지 않습니다 .

今王
![Override\n새로운\n위치\n시간](.pci-8158-korean-50-11139-2b00-200-en/8ad1a2f540479783bb46302303f1098e044be164b4d67bcdff88e886d92d55e2.jpg)

![Override\n새로운\n위치\n시간](.pci-8158-korean-50-11139-2b00-200-en/8beac8d93e612098dc40fb30319b5e22b82321deaf30455739da292b283ce674.jpg)

今
![Override\n새로운\n위치\n시간](.pci-8158-korean-50-11139-2b00-200-en/9aa6b1bcc30926087f8f8344af8c29064f94370e183cd6a194d942402d5abca8.jpg)

# 4.3 모터 드라이버 인터페이스

본 제품은 각자 고유의 기능을 가지며 모터 드라이버에 직접 연결이 가능한 여러 가지 고유의 I/O 를 제공합니다 . 모터 드라이버는외부의 모션 제어기 사용을 위한 많은 종류의 입 / 출력 핀을 가지는데 우리는 이것을 두 가지 그룹으로 분류했습니다 . 펄스의 입 /출력 신호는 펄스 명령 , 인코더 인터페이스를 포함하고 디지털 입/ 출력 신호는 서보 ON, 경보 , INP, 서보 준비 , 경보 재설정 , 긴급정지 입력을 포함합니다 . 다음 내용에서는 이러한 입 / 출력 핀에대해서 자세히 설명합니다 .

# 4.3.1 펄스 명령 출력 인터페이스

모션 제어기는 모터 드라이버를 통해 서보/ 스테퍼 모터를 제어하기 위하여 펄스 명령을 사용합니다 . 드라이버를 펄스열을 위치 명령으로 인식하는 위치모드로 설정하십시오 . 펄스 명령은 커넥터신호는 서로 다른 출력을 위해 두 개의 핀을 가지고 있습니다 . 본제품은 펄스 출력 명령을 위한 단일 펄스 출력 모드 (OUT/DIR) 과이중 펄스 출력 모드 (CW/CCW 타입 펄스 출력 ) 의 두 개의 신호 川 （CW/CCW）모드를 제공합니다 . 이 모드는 반드시 모터 드라이버의 모드와 같아야 하며 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>방향 신호(level)</td></tr></table>

이 모드에서 OUT 핀은 명령 펄스 열의 출력을 보여주고 펄스열의 수는 펄스의 이동거리를 나타내며 펄스열의 주파수는 초당 움직이는 속도를 보여줍니다 . DIR 신호는 양의 방향 또는 음의 방향의 명령 방향을 나타냅니다 . 펄스열의 극성을 설정할 수도 있으며아래의 그림은 출력 파형을 보여줍니다 .

三=O:(OUTnormally high)

![OUT\nDIR (+) (-)](.pci-8158-korean-50-11139-2b00-200-en/86ce62ee03a64ed6fc662bea99c43aa1e9219bd2ed188afcd507e959928a6ba6.jpg)

三=1:(OUTnormallylow)

![OUT\nDIR (+) (-)](.pci-8158-korean-50-11139-2b00-200-en/c1d7f103162bbec1afb070bd1ed0a9075f2ed6dcb473052cbca50ae5365a7214.jpg)

三= 2:(OUTnormallyhigh)

![OUT\nDIR (+)\n(-)](.pci-8158-korean-50-11139-2b00-200-en/7f1e20dd27b59fcb360a6d50acf8a39dafdee1faa00a64d95a18e11c76360f7c.jpg)

三=3:(OUTnormallylow)

![OUT\nDIR (+) (-)](.pci-8158-korean-50-11139-2b00-200-en/e4d06007614b8778aace94bbdf326210cac9f1dd09a19655a5406d4807621fd5.jpg)

# 이중 펄스 출력 모드 (CW/CCW 모드 )

이 모드에서 OUT, DIR 핀의 파형은 CW ( 시계방향 ) 과 CCW ( 시계 반대방향 ) 각각의 펄스 출력을 나타냅니다 . 펄스열의 수는 펄스의 이동거리를 나타내고 펄스열의 주파수는 초당 움직이는 속도를 보여줍니다 . CW 핀으로부터의 펄스 출력은 모터의 양의 방향움직임을 만들고 , CCW 핀으로부터의 펄스 출력은 음의 방향으로의 이동을 만듭니다 . 아래의 그림은 양의 방향 명령과 음의 방향명령 출력의 파형을 보여줍니다 .

三=4:(normallyhigh)

![OUT\nDIR\n(+)    (-)\nCW\nCCW](.pci-8158-korean-50-11139-2b00-200-en/9bb8d9cf1870fe35a37845b188c9b7d83b5867ec0e2d6e5e16c6a76b08b39bd5.jpg)

三=5:(normallylow)

![OUT\n(+)    (-)\nDIR\nCW\nCCW](.pci-8158-korean-50-11139-2b00-200-en/37f32abc6d6d686de1dba3637d6be035776d1eb95fe113afa28eec603523ee05.jpg)

명령 펄스는 28 비트 카운터로 카운팅되며 명령 카운터는 제어기로부터 출력되는 총 펄스 출력량의 값을 저장할 수 있습니다 .

# 4.3.2 펄스 피드백 입력 인터페이스

본 모션 제어기는 펄스 피드백 카운팅을 위해 각 축에 하나의 28비트 up/down 카운터를 제공합니다 . 이 카운터는 위치 카운터라불리며 차동 신호 입력을 위해 양 , 음의 핀을 가진 커넥터 상의EA, EB 신호로부터의 펄스를 카운팅합니다 . 여기에는 이중 펄스입력 (CW/CCW 모드 ) 와 AB 위상 입력의 두 가지 펄스 타입이 존재합니다 . AB 위상 입력은 1, 2, 4 의 승수이며 4 AB 위상 모드가증분 인코더 입력에서 가장 일반적으로 사용됩니다 .

예를 들어 만약 로터리 인코더가 회전당 2000 펄스를 가진다면위치 카운터로부터 판독되는 카운터 값은 4 AB 위상를 통해 4 배인 회전당 8000 펄스가 될 것입니다 .

만약 귀하가 모션 제어기를 위한 인코더를 사용하지 않는 경우 ,이 카운터를 위한 피드백 소스는 반드시 펄스 명령 출력으로 설정되어야 하며 카운터 값은 항상 0 이 되어야 합니다 . 만약 펄스 명령 출력으로 설정된 경우 사용자는 펄스 명령 출력 카운터로부터위치 카운터 값을 얻을 수 있는데 그 이유는 피드백 펄스가 명령출력 펄스로부터 내부 계산되기 때문입니다 .

다음 그림은 두 가지 타입의 펄스 피드백 신호를 보여줍니다 .，三(CW/CCW）

![EA\n(+) (+) (-)\nEB\nCW\nCCW](.pci-8158-korean-50-11139-2b00-200-en/857f16a90ed9eda884574eacca59b528857548ef464ea9607a90c87e45cc5d0c.jpg)

이 모드의 펄스 패턴은 입력 핀인 EA 와 EB 를 제외한 펄스 명령출력 부분의 이중 펄스 출력 모드와 같습니다 .

이 모드에서 EA 핀으로부터의 펄스는 카운터가 count up 하는 원인인 반면 EB 핀으로부터의 펄스는 카운터가 count down 하는 원인이 됩니다 .

# 90° 위상 차 신호 입력 모드 (AB 위상 모드 )

이 모드에서 EA 신호는 EB 신호에 비해 90° 위상이 선행하거나 후행하며 두 신호간 위상 차를 나타내는 ‘Lead’ 와 ’Lag’ 는모터의 방향 전환에 의하여 나타납니다 . Up/down 카운터의EA 신호의 위상이 EB 신호의 위상보다 선행할 때 카운트를 하게 됩니다 .

다음 그림은 파형을 보여주고 있습니다 .

![EA\nEB\n(+)\nEA\nEB\n(-)](.pci-8158-korean-50-11139-2b00-200-en/069e7c8fa604ddcef840947202d3846d0f1cd6f9cb8ff30ecce04557f42057c1.jpg)

인덱스 입력 (EZ) 신호는 선형 또는 로터리 인코더가 영점을 나타내는 것으로 간주하는데 메커니즘의 기계적 영점 위치를 정의하기위해 사용될 수 있습니다 . 논리 신호는 반드시 정확한 결과를 얻을수 있도록 정확히 설정하셔야 합니다 .

# 4.3.3 In position 신호

In-position 신호는 모터 드라이버로부터의 출력 신호이며 이것은 모션제어기에 모터가 미리 지정된 에러와 함께 위치에 도달했음을 말해줍니다. 미리 지정된 에러 값은 in-position 값이며 대부분의 모터 드라이버는이를 INP 값이라 부릅니다 . 모션 제어기가 위치 명령을 발생한 후 , 모션busy 상태는 INP 신호가 켜져 있는 동안 오차가 보정된 상태를 유지합니다 . 사용자는 모션 busy flag 를 체크하기 위한 INP 의 사용을 중단할 수있는데 이 경우 모션 busy 는 펄스 명령이 모두 전송되었을 때 FALSE 가될 수 있습니다.

![속도\n필스 속도 프로파일\n모터 속도 응답\n시간\n위치\n에러\nINP 범위\nINP\n신호](.pci-8158-korean-50-11139-2b00-200-en/ae47f525cfd78defaf5b53021d71b941fccd88563060cebe0758112d1b191e3e.jpg)

# 4.3.4 서보 경보 신호

경보 신호는 모터 드라이버부터의 출력 신호로서 이것은 모션 제어기에 서보모터 또는 드라이버 내부의 어떤 에러를 가지고 있음을 보고합니다 . 한번 모션 제어기가 이 신호를 받으면 펄스 명령은전송을 중단할 것이며 ALM 신호의 위상이 작동하게 됩니다 . 알람의 원인은 서보모드의 과속 , 과전류 , 과부하와 같은 것이며 모터드라이버의 매뉴얼을 자세히 확인하시기 바랍니다 .

경보 신호의 논리는 반드시 정확히 설정되어야 합니다. 만약 경보논리의 설정이 모터 드라이버의 설정과 동일하지 않은 경우 ALM위상은 항상 켜져 있는 상태가 될 것이며 펄스 명령은 절대 출력되지 않을 것입니다 .

# 4.3.5 에러 클리어 신호

ERC 신호는 모션 제어기로부터의 출력이며 이것은 에러 카운터를 클리어하기 위해 모터 드라이버에 보고합니다 . 에러 카운터는명령 펄스와 피드백 펄스 간 차이로부터 카운트 되며 피드백 위치는 항상 명령 위치에 시간적 지연을 가지고 있습니다 . 그 결과 펄스는 매 순간 두 위치 간의 차이를 가지게 되며 그 차이는 에러 카운터에서 볼 수 있습니다 . 모터 드라이버는 기초 제어 인덱스로 에러 카운터를 사용하며 큰 에러 카운터 값은 보다 빠른 모터 속도명령이 설정될 것을 의미합니다 . 만약 에러 카운터 값이 제로 (0)인 경우 제로 모터 속도 명령이 설정되어야 함을 의미합니다 .

다음의 4 가지 상황에서 자동적으로 ERC 신호는 에러 카운터를동시에 클리어하기 위해 모션 제어기로 출력됩니다 .

1. 홈 리턴이 완료되었을 때
2. End-Limit 스위치가 활성화되었을 때
3. 경보 신호가 활성화되었을 때
4. 긴급 정지 명령이 활성화되었을 때

# 4.3.6 서보 ON/OFF 스위치

서보 ON/OFF 스위치는 모션 제어기의 일반적 디지털 출력 신호입니다 . 이것은 커넥터 상의 SVON 핀과 같이 정의되며 모터 드라이버의 제어 상태를 변환하기 위해 사용됩니다 . 전원이 켜지고 나면 드라이버의 제어 루프가 활성화되었기 때문에 모터는 가동될것입니다 . 축이 수직으로 설치되었으며 서보 신호가 꺼졌을 경우축의 상태는 제어되지 않을 것이며 떨어질 수 있으므로 주의하십시오 . 서보 경보와 긴급 신호가 켜지는 상황도 발생할 수 있습니다

# 4.3.7 서보 준비 신호

서보 준비 신호는 모션 제어기의 목적과는 연관성이 없는 모션 제어기의 일반적인 디지털 입력 신호입니다 . 사용자는 모터 드라이버가 준비 상황일 때 점검을 위해 이 신호를 모터 드라이버의 RDY신호에 연결할 수 있습니다 . 이 신호는 예를 들어 모터 드라이버의전원이 입력되었는지를 확인하는데 사용할 수 있습니다 . 또한 , 사용자는 이 핀을 일반적인 입력처럼 다른 목적을 위해 연결할 수 있으며 이는 모션 제어기에 어떠한 영향도 끼치지 않습니다 .

# 4.3.8 서보 경보 리셋 스위치

서보 드라이버는 서보 드라이버 내부에 어떠한 문제가 생겼을 경우 경보 신호를 발생시킵니다 . 경보 상황은 서보 모터의 과전류 ,과속 , 과부하 등의 상황을 포함하며 전원 리셋은 알람 상황을 정지할 수 있지만 , 사용자는 대부분 서보 모터가 운용 중일 때 전원 차단을 원치 않기 때문에 본 기계는 사용자의 알람 상황을 리셋하기위한 서보 드라이버의 핀이 있습니다 . 본 모션 제어기는 각 축을위한 하나의 일반적인 출력 핀을 제공하는데 사용자는 이 핀을 서보 알람 상황의 리셋을 위해 사용할 수 있습니다 .

# 4.4 기계적 스위치 인터페이스

본 회사는 원점 스위치 (ORG), 플러스와 마이너스의 End-Limit스위치 (±EL), slow down 스위치 (SD), 포지셔닝 시작 스위치(PCS), 카운터 latch 스위치 (CLR) 와 같은 기계적 스위치를 위한전용 입력 핀을 제공하며 이러한 스위치들은 아주 작은 ASIC 클럭사이클을 소비하는 빠른 응답 시간을 가집니다 . 이러한 신호들을사용할 시 실시간 처리 문제가 존재하지 않으며 모든 기능은 모션ASCI 에 의해 수행되므로 소프트웨어는 단지 결과를 확인하는 작업만 필요합니다 .

# 4.4.1 원점 또는 홈 신호

본 제어기는 각 축에 대해 하나의 원점 또는 홈 신호를 제공합니다 . 이 신호는 축의 영점을 정의하기 위해 사용되며 귀환 동작을하기 전에 신호의 논리는 반드시 제대로 설정되어야 합니다 . 귀환모드의 자세한 설명은 귀환 모드 부분을 참고하시기 바랍니다 .

# 4.4.2 End-Limit 스위치 신호

End-Limit 스위치는 일반적으로 축의 양 끝에 설치되며 축의 양의 방향에는 +EL 을 음의 방향에는 –EL 을 설치합니다 . 이 두 신호는 안전을 위함이며 만약 두 신호가 반대로 설치되었을 경우에는 End-Limit 는 제대로 동작하지 않을것 입니다 . 모터가 동작 중일 시 End-Limit 신호를 건드리면 모션 제어기는 ERC 신호 출력과 펄스의 출력을 멈출 것입니다 . 이것은 오작동 시의 기계 충돌을방지할 수 있습니다 .

# 4.4.3 Slow down 스위치

Slow Down 은 활성화되었을 때 명령 펄스를 시작 속도로 감속시키는데 사용되며 매우 빠른 속도로 기구의 끝 부분을 향해 움직일시 발생하는 충돌을 방지하는데 사용됩니다. SD 신호는 양의 방향과 음의 방향 모두 사용할 수 있습니다 .

# 4.4.4 포지셔닝 시작 스위치

포지셔닝 시작 스위치는 켜졌을 경우 정해진 위치로 이동하는데사용되며 기능은 다음과 같습니다 .

![PCS\n속도\nStart_tr_move 및 PCS 활성화\n(거리=1000)\n영역 = 1000필스\n시간](.pci-8158-korean-50-11139-2b00-200-en/669671443c42c177977d7b48fe692c8454254d0fe88031d91bc02ad21a65e0f2.jpg)

# 4.4.5 카운터 클리어 스위치

카운터 클리어 스위치는 모션 제어기의 카운터를 리셋 하기 위한입력 신호로서 사용자가 외부의 명령에 따라 카운터의 리셋이 필요한 경우 이 핀을 사용하여 제어할 수 있습니다 .

# 4.4.6 카운터 Latch 스위치

카운터 Latch 스위치는 입력이 활성화되었을 때 카운터 값을 레지스터로 유지하도록 하는 입력 신호이며 사용자가 입력 활성화시간의 카운터 값을 알고 싶을 때 이 핀을 연결함으로서 알 수 있습니다 .

# 4.4.7 긴급 정지 입력

본 모션 제어기는 긴급 상황을 위한 글로벌 디지털 입력을 제공합니다 . 한번 입력이 가동되면 본 모션 제어기는 기계의 손상을 막기위해 축의 모든 모션을 즉시 정지할 것이며 일반적으로 사용자는긴급 정지 버튼을 기계 상의 입력으로 연결할 수 있습니다 . 본 회사는 안전을 위해 평상시 닫힘 상태로 할 것을 제안합니다 .

# 4.5 카운터

본 기계에는 모션 제어기의 각 축에 4 개의 카운터가 존재합니다 .다음 장에서는 이에 대해 자세히 설명합니다 .

 명령 위치 카운터 : 출력 펄스의 수를 카운터
 피드백 위치 카운터 : 입력 펄스의 수를 카운터
 위치 에러 카운터 : 명령과 피드백 펄스 수 간의 에러를 카운터
 범용 목적 카운터: 소스는 명령위치, 피드백 위치, 수동 펄스또는 ASIC 클럭의 절반으로 구성 .
 목표 위치 리코더 : 최근 모션 명령의 목표 위치 값을 유지

# 4.5.1 명령 위치 카운터

명령 위치 카운터는 28 비트의 2 진법 up/down 카운터입니다 . 입력 소스는 모션 제어기부터의 출력 펄스이며 현재의 명령 위치의정보를 제공할 것입니다 . 이것은 모션 시스템의 문제를 수정하는데 유용합니다 .

본 모션 시스템은 오픈 루프 타입입니다 . 모터 드라이버는 모션제어기로부터 펄스를 전송받고 드라이버는 모터를 움직입니다. 드라이버가 움직이지 않을경우 명령 카운터를 확인하고 새로운 값이있는지 확인하십시오 . 새로운 값이 있는 경우 펄스가 문제점을 전송하였으며 모터 드라이버에 문제가 있다는 의미이므로 모터 드라이버의 펄스 수신 카운터를 확인하시기 바랍니다 .

명령 카운터의 단위는 펄스이며 카운터 값은 카운터 클리어 신호또는 홈 기능의 활성화를 통해 리셋할 수 있습니다 . 사용자는 또한소프트웨어 명령 카운터 설정 기능으로 이를 리셋 할 수 있습니다 .

# 4.5.2 피드백 위치 카운터

피드백 위치 카운터는 28 비트의 2 진법 up/down 카운터입니다 .입력 소스는 EA/EB 핀으로부터의 입력 펄스이며 모터의 인코더출력으로부터의 모터 위치를 카운트합니다. 카운터는 외부 인코더입력이 없을 경우 옵션에 대한 명령 위치의 소스로부터 설정될 것입니다 .

명령 출력 펄스와 피드백 입력 펄스는 항상 같은 미니미터의 비율을 가지지 않으며 사용자는 두 펄스가 1:1 이 아닌 경우 반드시 이를 설정하셔야 합니다 .

본 모션 제어기는 closed loop 타입이 아니므로 피드백 위치 카운터는 모션이 동작한 후에 단순한 참고용으로 쓰입니다 . closedloop 위치는 서보 모터 드라이버에 의해 작동하며 서보 드라이버가 잘 조율 되었거나 기계적 부분이 잘 조합 된 경우에는 모션 명령 후 전체 위치 에러가 수용 가능한 범위 내에서 완료될 것입니다

# 4.5.3 명령 및 피드백 에러 카운터

명령과 피드백 에러 카운터는 명령 위치와 피드백 위치 간의 에러를 계산하는데 사용됩니다 . 값은 명령 위치에서 피드백 위치를 뺀값입니다 .

만약 명령과 피드백 간의 비율이 1:1 이 아닌 경우 에러 카운트는아무런 의미가 없습니다 .

이 카운터는 16 비트의 2 진법 up/down 카운터입니다 .

# 4.5.4 범용 카운터

일반적인 범용 카운터의 소스는 다음과 같습니다 .

1. 명령 위치 출력 - 명령 위치 카운터와 같음
2. 피드백 위치 입력 - 피드백 위치 카운터와 같음
3. 수동 펄스 입력 - 기본 설정
4. 클럭 틱 – 대략 9.8MHz 타이머에서의 카운터

# 4.5.5 목표 위치 리코더

목표 위치 리코더는 목표 위치 정보를 제공하는데 사용되며 연속적 모션에서 사용되는데 그 이유는 모션 제어기는 현재 명령에 연관된 펄스를 계산하여 그 결과를 Pre-register 로 전송하기 위해이전의 모션 명령의 목표 위치와 현재 모션 명령의 목표 위치를 알아야 하기 때문입니다 . 연속적 모션 이전에 목표 위치와 현재 명령위치가 같은지 확인하여 주시고 특별히 홈 기능과 정지 기능 이후에 반드시 확인하여 주십시오 .

# 4.6 콤퍼레이터 (Comparators)

본 기계는 각 축에 5 가지 카운터 콤퍼레이터를 갖추고 있습니다 .각 콤퍼레이터는 아래와 같은 기능이 있습니다 .

1. 명령 카운터를 위한 Positive soft end-limit 콤퍼레이터
2. 명령 카운터를 위한 Negative soft end-limit 콤퍼레이터
3. 명령 , 피드백 에러 카운터 콤퍼레이터
4. 모든 카운터를 위한 일반적 콤퍼레이터
5. 모든 명령 , 피드백 카운터를 위한 트리거 콤퍼레이터

# 4.6.1 Soft end-limit 콤퍼레이터

본 기계는 각 축의 end-limit 기능을 위한 두 가지 콤퍼레이터를갖추고 있으며 이는 soft end-limit 콤퍼레이터라 불립니다 . 이 중하나는 + 또는 Positive end-limit 를 위한 것이고 다른 하나는 –또는 Negative end-limit 를 위한 것입니다 . 이 end-limit 는 초과이동 시 기계의 충돌을 방지하기 위하여 사용되고 real end-limit스위치 대신 soft end-limit 를 사용할 수 있습니다 . 이 두 가지 콤퍼레이터는 단지 명령 위치 카운터를 비교하기 위한 것이며 한번명령 위치가 positive 또는 negative 의 콤퍼레이터 내부에서 설정된 한계를 초과할 시 이는 end-limit 스위치를 누른 것과 마찬가지로 작동이 정지됩니다 .

# 4.6.2 명령 및 피드백 에러 카운터 콤퍼레이터

콤퍼레이터는 오직 명령, 피드백 카운터 에러를 위한 것이며 사용자는 에러의 값이 너무 큰 경우 이를 확인하기 위하여 사용할 수있습니다 . 이 콤퍼레이터는 조건이 맞을 시 동작의 설정이 가능하며 인터럽트 발생 , 즉시 정지 , 정지를 위한 감속이 이 동작에 포함됩니다 .

# 4.6.3 일반 콤퍼레이터

일반 콤퍼레이터는 사용자가 비교할 소스를 선택할 수 있으며 이는 명령 , 피드백 위치 카운터 , 에러 카운터 또는 일반적 카운터로부터 선택할 수 있습니다 . 비교방법은 방향의 유무와 함께 동등 또는 보다 큰 , 보다 작은 으로 선택 가능하며 조건이 충족되었을 시의 동작으로 인터럽트 발생 , 정지 모션 등을 선택할 수 있습니다 .

# 4.6.4 트리거 콤퍼레이터

트리거 콤퍼레이터는 일반적 콤퍼레이터와 유사합니다 . 이는 추가 기능을 가지고 있는데 조건이 충족되었을 때 트리거 펄스를 발생시킵니다 . 조건이 충족될 경우 커넥터 상의 CMP 핀은 사진을찍을 때의 카메라와 같은 특정한 목적의 펄스를 출력하게 됩니다 .모든 축이 이 기능을 가지고 있는 것은 아니며 축의 CMP 핀의 존재에 따라 다릅니다. 아래의 그림은 트리깅의 응용을 보여줍니다,

![v\nt\n1 2 3 4 5 6\nCCD\nCamera](.pci-8158-korean-50-11139-2b00-200-en/36d2e587b5af1cbfbc96aaaf17d281fc00e4b8b03545389fbb3349009122ced2.jpg)

이 응용 중에서 테이블은 모션 명령에 따라 제어되고 CCD 카메라는 CMP 핀에 의해 제어됩니다 . 비교위치에 도달 했을 경우 펄스는 출력되고 이미지는 캡쳐 될 것이며 이는 즉시 이미지 캡쳐 입니다 . 사용자가 모션의 경로 중 더 많은 이미지를 얻기를 원하는 경우 이전의 이미지가 캡쳐 된 바로 직후에 새로운 비교 지점을 설정할 수 있습니다 . 이 방법을 통해 뛰어난 연속 이미지 캡쳐링 기술을 완성할 수 있었습니다 . CMP 效 ?

# 4.7 다른 모션 기능들

본사는 모션 제어기 상의 backlash 보정 , slip 보정 , 진동 억제(vibration restriction), 속도 프로파일 계산 등의 다양한 다른 기능 들을 제공합니다 . 다음의 내용은 이를 자세히 설명합니다 .

# 4.7.1 Backlash 와 slip 보정

본 모션 제어기는 backlash 와 slip 보정 기능을 가지고 있습니다. 이 기능들은 FA 속도 내 명령 펄스의 수를 출력합니다 . Back-lash 보정은 동작 중 방향 전환 시 작동하고 slip 보정 기능은 모션명령 전에 작동합니다. 방향에 관계없이 보정 펄스의 양은 함수 라이브러리를 통해 설정됩니다 .

# 4.7.2 진동 억제 (Vibration restriction) 기능

모션 제어기의 진동 억제 (vibration restriction) 방법은 양의 방향 펄스가 모션 명령을 마친 후 바로 반대 방향의 펄스를 추가하는것입니다 . 두 가짜 펄스의 타이밍은 다음과 같습니다 . (RT 는 역행 타임 , FT 는 전진 타임 )

![(+) 방향\n(-) 방향\n최종 펄스\nRT/2\nFT/2\nRT\nFT](.pci-8158-korean-50-11139-2b00-200-en/b4fdf1a2c1f3697bba36ccf8c023e8cc4c84d087d398fed9abc23fc721644dd7.jpg)

# 4.7.3 속도 프로파일 연산 기능

본 모션 기능은 사용자로부터의 몇 가지 속도 파라미터가 필요합니다 . 몇몇 파라미터들은 속도 프로파일과 충돌을 일으킵니다 . 예를 들어 사용자가 아주 빠른 속도를 입력하고 아주 짧은 거리를 모션 기능에 입력한다면 속도 프로파일은 존재하지 않을 것입니다 .이러한 상황에서는 모션 라이브러리는 가속과 감속율을 유지할 것이며 사용자가 자동적으로 실현 가능한 속도 프로파일로 수정할때까지 최대 속도보다 낮은 속도를 유지할 것입니다 . 다음 그림은이 개념을 보여줍니다 .

![MaxVel\n(±s)\nStrVel\nTacc\nTdec\n시간\n(초)\n거리가\n충분하지\n않을\n경우\nVelocity\nStrVel\nNewMaxVel\n(±s)\nStrVel\nTacc\nTdec\n시간\n(초)](.pci-8158-korean-50-11139-2b00-200-en/0cfd6582cf0d4a8c067797343a18d18ed15aa850104598dec1096b308054b68f.jpg)

본 모션 라이브러리는 사용자로부터 명령의 실제 속도 프로필을알아내기 위한 함수열을 내장하고 있습니다 .

# 4.8 인터럽트 제어

본 모션 제어기는 주 PC 에 인터럽트 신호를 발생시킬 수 있습니다 . 이것은 event-driven 소프트웨어 응용에 굉장히 유용하며 사용자는 \_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>명령 pre- 레지스터 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>+ Soft limit 또는 콘퍼레이터 1 활성화</td></tr><tr><td>9</td><td>-Soft limit 또는 콘퍼레이터 2 활성화</td></tr><tr><td>10</td><td>에러 콘퍼레이터 또는 콘퍼레이터 3 활성화</td></tr><tr><td>11</td><td>일반적 콘퍼레이터 또는 콘퍼레이터 4 활성화</td></tr><tr><td>12</td><td>트리거 콘퍼레이터 또는 콘퍼레이터 활성화</td></tr><tr><td>13</td><td>CLR 입력에 의한 카운터 재설정</td></tr><tr><td>14</td><td>LTC 입력에 의한 카운터 Latch</td></tr><tr><td>15</td><td>ORG 입력에 의한 카운터 Latch</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>+ Soft Limit 활성화, 축 정지</td></tr><tr><td>1</td><td>-Soft Limit 활성화, 축 정지</td></tr><tr><td>2</td><td>콤퍼레이터 3 활성화, 축 정지</td></tr><tr><td>3</td><td>일반적 콤퍼레이터 또는 콤퍼레이터 4 활성화, 축 정지</td></tr><tr><td>4</td><td>트리거 콤퍼레이터 또는 콤퍼레이터 4 활성화, 축 정지</td></tr><tr><td>5</td><td>+ End Limit 활성화, 축 정지</td></tr><tr><td>6</td><td>-End Limit 활성화, 축 정지</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>DI0 하강 옛지</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>DI0 상승 옛지</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(AXIS0, 0x01); // 축 0 정상적정지
4. \_8158\_set\_gpio\_int\_factor(CARD0, 0x01); // DI0 하강 엣지
5. \_8158\_wait\_motion\_interrupt(AXIS0, 0x01, 1000) // 정상적 정지 인터럽트를 위해 1000ms 대기
6. \_8158\_wait\_gpio\_interrupt(CARD0, 0x01, 1000) // D10 하강 엣지 인터럽트를 위해 1000ms 대기
7. I16 ErrNo=\_8158\_wait\_error\_interrupt(AXIS0, 2000); //에러 인터럽트를 위해 2000ms 대기

# 4.9 여러 장의 카드 동작

PCI-8158 모션제어기는 한 시스템에 한 장 이상의 제어카드를장착할 수 있습니다 . 또한 , 모션 제어기는 plug-and-play 특성을가지고 있어 시스템 부팅 시에 기본 주소와 IRQ 설정이 PCI BIOS에 자동으로 할당되므로 사용자는 리소스 관련 설정을 할 필요가없습니다 .

시스템에 여러 장의 카드를 사용할 시 카드의 번호는 반드시 기억해야 하며 카드의 번호는 보드의 카드 ID 스위치 설정으로 정해집니다 . 축의 번호는 카드의 ID 에 의해 정해지게 되며 예를 들어 3장의 모션 제어 카드를 PCI 슬롯에 장착하면 해당 카드 ID 가 설정됩니다 . 각 카드의 축 번호는 다음과 같습니다 .

<table><tr><td>No. 카드 ID\축</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 장 ), 모든 카드와 시스템이 올바르게 설정되고 작동하는지 확인해야 합니다 . 이 장에서는 제어 시스템을 구성하고 PCI-8158 의 카드가 정확히 동작하는지를 확인하기 위한지침을 제공합니다 . MotionCreatorPro 소프트웨어는 PCI-8158카드를 사용하는데 있어 간단히 설정 , 구성 , 테스트 , 문제 해결을하는 것을 도와줍니다 .

MotionCreatorPro는 오직 윈도우즈 2000/XP에서의 1024x768이상의 화면 해상도에서만 사용이 가능하며 1024x768 의 화면 해상도를 추천합니다 . 도스 환경에서는 사용하실 수 없습니다 .

# 5.1 MotionCreatorPro 의 실행

윈도우즈 2000/XP 에 PCI-8158 의 소프트웨어 드라이버 설치가완료된 후에 MotionCreatorPro 은 &lt; 선택된 경로 &gt;₩PCI-Motion₩ MotionCreatorPro에 위치 하게 됩니다. 실행하시기 위해서는 실행 파일을 더블클릭하시거나 시작>프로그램 파일> PCIMotion>₩PCI-Motion₩MotionCreatorPro 를 사용하실 수 있습니다 .

# 5.2 MotionCreatorPro 에 관하여

MotionCreatorPro 를 실행하기 전에 몇 가지 알아두셔야 할 사항이 있습니다 .

1. MotionCreatorPro는 VB.NET 2003에서 만들어졌으며윈도우즈 2000/XP 에서 1024x768 이상의 화면 해상도에서만 작동가능 합니다 . 도스에서는 사용할 수 없습니다 .
2. MotionCreatorPro 는 사용자가 설정한 값을 저장할 수있고 저장된 설정 값은 다음에 MotionCreatorPro 가 실행 될때 자동으로 불러오게 됩니다 . 8158.ini 과8158MC.ini 파일은 윈도우 루트 폴더에 저장됩니다 .
3. 한 시스템과 동일한 구성을 다른 시스템에 적용하기를원하실 경우에는 윈도우 루트 폴더에 있는 8158.ini 과8158MC.ini 파일을 복사하여 넣으시면 됩니다 .
4. 만약 여러 장의 PCI-8158 카드를 동일한 MotionCre-atorPro로 저장된 설정 값으로 사용하실 경우 사용자가개발한 프로그램에서 DLL 함수\_8158\_config\_from\_file() 를 호출하여 사용하시면 되고이는 도스 환경에서도 가능합니다 .

# 5.3 MotionCreatorPro 형태 소개

# 5.3.1 주메뉴

주메뉴는 MotionCreatorPro 를 처음 실행했을 때 나타나며 다음과 같습니다 .

![모든 메뉴 불러오기\n도움말 메뉴 열기(5.3.8 절 참고)\nMotionCreatorPro 나가기](.pci-8158-korean-50-11139-2b00-200-en/bb3afe6e033301b47a48032a313ff69ecbcd443b8191e49d31143bd11d9f0399.jpg)

# 5.3.2 선택 메뉴

선택 메뉴는 MotionCreatorPro 실행 후 나타나고 다음과 같습니다 .

![Based on the provided image, here is the accurate and concise description of the flowchart/block diagram, listing the labeled blocks and their connections verbatim.\n\n**Labeled Blocks:**\n\n*   **Text List (Top Left):**\n    *   카드 정보 메뉴 열기 (5.3.3 절 참고)\n    *   설정 메뉴 열기 (5.3.5 절 참고)\n    *   단일 축 동작 메뉴 열기 (5.3.5 절 참고)\n    *   두 축 동작 메뉴 열기 (5.3.6 절 참고)\n    *   2D_모션 메뉴 열기 (5.3.7 절 참고)\n    *   카드 정보 보기. 관련 함수는: _8158_get_version (),\n    *   버전 정보\n\n*   **frmTreeView Window (Middle):**\n    *   frmTreeView\n    *   ADLINK\n    *   Motion\n    *   PCI-8158\n    *   Hardware\n    *   Card 0\n    *   Axis 0\n    *   Axis 1\n    *   Axis 2\n    *   Axis 3\n    *   Axis 4\n    *   Axis 5\n    *   Axis 6\n    *   Axis 7\n    *   Functions\n    *   1-Axes Operate\n    *   2-Axes Operate\n    *   2D-Motion\n\n*   **Dialog Window (Bottom):**\n    *   Card Information :\n    *   Base Address (HEX) : 0\n    *   IRQ Level : 0\n    *   Version Information :\n    *   Hardware version : 1001\n    *   Library version : 1\n    *   Driver version : 3\n\n**Connections (Red Arrows):**\n\n*   '카드 정보 메뉴 열기 (5.3.3 절 참고)' connects to 'PCI-8158'.\n*   '설정 메뉴 열기 (5.3.5 절 참고)' connects to 'Card 0'.\n*   '단일 축 동작 메뉴 열기 (5.3.5 절 참고)' connects to 'Axis 0'.\n*   '두 축 동작 메뉴 열기 (5.3.6 절 참고)' connects to '1-Axes Operate'.\n*   '2D_모션 메뉴 열기 (5.3.7 절 참고)' connects to '2D-Motion'.\n*   '카드 정보 보기. 관련 함수는: _8158_get_version (), ' connects to the 'Card Information :' section (pointing towards Base Address and IRQ Level).\n*   '버전 정보' connects to the 'Version Information :' section (pointing towards Hardware/Library/Driver version fields).\n\n*(Note: The block '2-Axes Operate' is present in the list but has no incoming connection arrow from the text list above.)*](.pci-8158-korean-50-11139-2b00-200-en/d025a8d03119d2d4f50ddaafd10916ac6cc2edb76cf97b1492e6c056cc426602.jpg)

# 5.3.3 카드 정보 메뉴

이 메뉴는 카드에 대한 정보를 보여줍니다 .

![Green printed circuit board with various electronic components and connectors (no visible text or symbols)](.pci-8158-korean-50-11139-2b00-200-en/a8ad72c69d53d7a9b5e830461dce61aceb2ab83073277e6bff262ef9b9769b89.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\nERC\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-korean-50-11139-2b00-200-en/ba9d8aa2e082063035dd0a03fd530d2fabf807bee834e3663f0a9d94e61e131f.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\nEnable SD Active High\nResponse Mode SD Latch\nSlow Down On Active Low\nSlow Down Then Stop Active High\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 Low 6\nActive High\nNext Card\nNext Axis\n7 Save Config\nClose](.pci-8158-korean-50-11139-2b00-200-en/d5b44c3b6a34dd4cb72e7e33ed5fcbcbd44970834cb049aa5cfc2b89684d5e36.jpg)

1. LTC 논리 : LTC 신호의 논리 선택 . 관련된 함수의 호출은 \_8158\_set\_ltc\_logic() 입니다 .
2. LTC latch\_ 소스 : latch 소스 신호의 논리 선택 . 관련된함수의 호출은 \_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 factor 를설정할 수 있습니다 .

![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 Axis 0,1\nBit 14 □ Latch for Axis 2,3\nBit 15 □ ORG On\nBit 16 □ SD On\nPulse Input Setting\nSource\nEncoder (External) □ Pulse Output (lateral)\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-korean-50-11139-2b00-200-en/aede0d22fce64f5aec7726526ed07c159eba641efdda165b6dd12f414847000e.jpg)

1. 펄스 출력 모드 : 펄스 신호 (OUT/ DIR) 의 출력 모드 선택 . 관련된 함수의 호출은 \_8158\_set\_pls\_outmode() 입니다 .
2. 펄스 입력 : 펄스 입력 신호 (EA/EB) 의 구성 설정 . 관련된 함수의 호출은 \_8158\_set\_pls\_iptmode(),\_8158\_set\_feedback\_src() 입니다 .
3. INT Factor: INT 활동을 시작하는 factor 선택 . 관련된함수의 호출은 \_8158\_set\_int\_factor() 입니다 .
4. 버튼 :

 Next Card: 동작 카드 변경 .
 Next Axis: 동작 축 변경 .
 Save Config: 8158.ini 과 8158MC.ini 에 현재의 설정 값 저장 .
 Close: 메뉴 닫기 .

# 5.3.5 단일 축 동작 메뉴

이 메뉴에서는 속도 모드 모션 , 상대 / 절대 모션 선설정 , 수동 펄스 동작 , 홈 리턴 모드를 포함하는 축의 설정을 변경 할 수 있습니다 .

![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 Manual Home\nMode\n7\nPosition1 Distance Remeat Mode ATII\n5000 5000 CEN ON set_fa_speed\nPosition2 Traperon S-curve FA\n10\n8\n11\nSet Position\nPosition: 0 2 Set Position\nAxis Status\nMotion status:\nNormal stopped on\n3\nINT Status\nSet Factor bit No=\nNormal INT 4\nError INT\nOPIO INT\nVelocity 5 (PPS)\nShow Cu#o\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\nNext Card\nNext Axis Save Config Close](.pci-8158-korean-50-11139-2b00-200-en/7f817f0a8752357f8b36258515da4d19a6f0b237a861a1d873e5eb94eb52baeb.jpg)

# 1. 위치 :

 Command: 명령 카운터의 값을 보여줍니다 . 관련된 함수는 \_8158\_get\_command() 입니다 .
 Feedback: 피드백 위치 카운터의 값을 보여줍니다. 관련된 함수는 \_8158\_get\_position() 입니다 .
 Pos Error: 위치 에러 카운터의 값을 보여줍니다 . 관련된 함수는 \_8158\_get\_error\_counter() 입니다 .
 Target Pos: 목표 위치 리코더의 값을 보여줍니다 . 관련된 함수는 \_8158\_get\_target\_pos() 입니다 .

2. 위치 리셋 : 이 버튼을 클릭하면 모든 포지셔닝 카운터는

지정된 값으로 설정됩니다 . 관련된 함수는 :

```cmake
_8158_set_position()
_8158_set_command()
_8158_reset_error_counter()
_8158_reset_target_pos()
```

3. 모션 상태 : \_8158\_motion\_done function 의 반환 값을보여줍니다 . 관련된 함수는 \_8158\_motion\_done() 입니다 .

4. INT 상태 :

 int\_factor bit no: int\_factor 비트 설정 .
 Normal INT: Normal INT 위상을 보여줍니다 . 관련된함수는 \_8158\_wait\_motion\_interrupt () 입니다 .
 Error INT: Error INT 위상을 보여줍니다 . 관련된 함수는 \_8158\_wait\_error\_interrupt () 입니다 .
 GPIO INT: GPIO INT 위상을 보여줍니다 . 관련된 함수는 \_8158\_wait\_gpio\_interrupt () 입니다 .

5. 속도: 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-korean-50-11139-2b00-200-en/1a4f6b7e96052d03ad43d17fd750c193ee20064710cd50437a1b7a3701485591.jpg)

# 7. 동작 모드: 동작 모드 선택 .

 Absolute Mode: “위치1” 과 “위치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: 수동 펄스 모션 . 이 버튼을 클릭하면 수동 펄스 설정 윈도우가 작동됩니다 .

![필스 입력 모드를\n설정하기 위해\n필스 입력 논리를\n설정하기 위해\nManual Polar Configuration\n1X A/B Phase 4X A/B Phase\n2X A/B Phase CW / CCW\nLogic\nInverse the Direction Do Not Inverse Direction\nClose](.pci-8158-korean-50-11139-2b00-200-en/730e3cba8c6d0d4a85da0adae668a792946409ef60e5ff99a2ac6123a6758c5b.jpg)

 Home Mode: 홈 리턴 모드. 이 버튼을 클릭하면 홈 동작설정 윈도우가 작동됩니다 . 관련된 함수는\_8158\_set\_home\_config() 입니다 . 만약 체크박스

“ATU” 가 체크된 경우에는 모션 시작 시 자동 homing이 실행됩니다 .

 ERC Output: 선택 시 홈 동작이 완료될 때 ERC 신호가전송될 것입니다 .
 EZ Count: EZ 카운트 번호 설정. 이는 지정된 홈 리턴 모드에 영향을 줍니다 .
 Mode: 홈 리턴 모드 설정. 13가지의 모드가 사용 가능합니다 .
 Home Mode figure: 다음 그림은 각 홈 모드의 동작을설명합니다 .
 Close: 클릭 시 메뉴를 닫습니다 .

![Home Move Configurations\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-korean-50-11139-2b00-200-en/478cda47d05310a0cd2f763e93e88311d8fef20ebe6c429f2a9627dbd6fe84eb.jpg)

8. 위치 : “ 절대 모드 ” 의 절대 위치 설정 . 이는 오직 “ 절대 모드 ” 를 선택 했을 때만 유효합니다 .
9. 거리 : “ 상대 모드 ” 의 상대 거리 설정 . 이는 오직 “ 상대모드 ” 를 선택 했을 때만 유효합니다 .
10.반복 모드 : “On” 이 선택된 경우 모션은 반복 모드가 됩니다 . ( 전진 &lt;-&gt; 후진 또는 위치 1&lt;-&gt; 위치 2). 이는 오

직 “ 상대 모드 ” 또는 “ 절대 모드 ” 를 선택 했을 때만 유효합니다 .

11.속도 프로파일 : 속도 프로파일 선택 . Trapezoidal 과 S-커브 “ 절대 모드 ”, “ 상대 모드 ”, “ 일정 운동 ” 에서 사용 가능 .

12.FA 속도 /ATU: FA 속도의 구성 설정 . 관련된 함수의 호출은 \_8158\_set\_fa\_speed() 입니다 . 만약 체크박스“ATU” 가 체크된 경우 , 모션이 시작할 때 자동 homing이 실행 됩니다 .

13.모션 파라미터: 단일 축 모션의 파라미터 설정 . 이 파라미터는 “ 수동 펄스 운동 ” 이 선택 되었다면 속도와 이동거리는 펄스 입력에 의해 결정되므로 아무런 효과가 없습니다 .

 Start Velocity: PPS단위의 모션 시작 속도 설정. “절대모드 ” 또는 “ 상대 모드 ” 모드에서만 이 값은 유효합니다 . 예를 들어 , -100.0 은 100.0 와 동일하며 “ 일정 운동 ” 에서는 값과 사인 모두 유효합니다 . –100.0 은100.0 의 역 방향을 의미합니다 .

 Maximum Velocity: PPS 단위의 모션 최대 속도 설정 .오직 “ 절대 모드 ” 또는 “ 상대 모드 ” 에서 이 값은 유효합니다 . 예를 들어 -5000.0 은 5000.0 와 같으며 “ 일정운동 ” 에서는 값과 사인 모두 유효합니다 . –5000.0 는5000.0 의 역 방향을 의미합니다 .

 Accel. Time: 초 단위의 가속 시간 설정 .

 Decel. Time: 초 단위의 감속 시간 설정 .

 SVacc: PPS 단위의 가속 중 S- 커브 범위 설정 .

 SVdec: PPS 단위의 감속 중 S- 커브 범위 설정 .

 Move Delay: 이 설정은 반복 모드가 “ON” 으로 설정 되었을 때만 유효합니다 . 이는 PCI-8158 이 다음 모션을계속 하기 전에 지정 시간만큼 지연시킵니다 .

14.속도 \_ 프로파일 : 이 버튼을 클릭 시 사용자는 속도 프로파일을 볼 수 있습니다 .

![| Metric       | Value   |\n| ------------ | ------- |\n| Mode         | relative |\n| Vmax         | 1922    |\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-korean-50-11139-2b00-200-en/c0a732000d27b5c2ab0a2ba9e4d2dcf7a715ece3976b7fd43f8c658aae5521de.jpg)

15.디지털 I/O: 디지털 입 / 출력 설정과 보기 . 관련된 함수는 \_8158\_get\_gpio\_output(),\_8158\_get\_gpio\_input(),\_8158\_set\_gpio\_output() 입니다 .
16.서보 On: SVON 신호 출력 위상 설정 . 관련된 함수는\_8158\_set\_servo().
17.플레이 키 :

왼쪽 플레이 버튼 : 이 버튼 클릭 시 PCI-8158 은 이전의 설정에 따라 .

 “ 절대 모드 ” 모드에서 이는 축을 위치 1 로 이동시킵니다 .
 “ 상대 모드 ” 모드에서 이는 축을 앞으로 이동시킵니다 .
 “일정 운동” 에서 이는 축이 속도 설정에 따라 이동을 시작하는원인이 됩니다 .
 “수동 펄스 운동”에서 이는 축을 펄스 방향으로 이동시키며 한계 속도는 “ 최대 속도 ” 에서 설정된 값입니다 .

오른쪽 플레이 버튼 : 이 버튼을 클릭 시 이는 PCI-8158 의 이전의 설정에 따라 outlet 펄스를 시작합니다 .

 “ 절대 모드 ” 모드에서 이는 축을 위치로 이동시킵니다 .
 “상대 모드” 모드에서 이는 축을 뒤로 이동시킵니다 .
 “일정 운동”모드에서 이는 축이 속도 설정에 따라 이동을시작하는 원인이지만 이는 반대 방향입니다 .
 “ 수동 펄스 운동 ” 이는 축을 펄스 방향으로 이동시키며 한계 속도는 “ 최대 속도 ” 에서 설정된 값입니다 .

18.정지 버튼 : 이 버튼을 클릭하면 PCI-8158 은 감속과 정지를 시작합니다 . 감속시간은 “Decel. Time.” 으로 정의되며 관련 함수는 \_8158\_sd\_stop() 입니다 .

19.I/O 상태 : 모션 입 / 출력의 위상 . Light-On 은 활성화 ,Light-Off 는 비 활성화를 의미합니다 . 관련 함수는\_8158\_get\_io\_status() 입니다 .

20.버튼 :

 Next Card: 동작 카드 변경 .
 Next Axis: 동작 축 변경 .
 Save Config: 8158.ini과 8158MC.ini에 현재의 설정 값저장 .
 Close: 메뉴 닫기 .

# 5.3.6 두 축 동작 메뉴

이 메뉴에서 사용자는 두 선택된 축의 속도 모드 모션 , 선설정 상대 / 절대 모션을 설정할 수 있습니다 .

![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\nRepeat Mode\n○ Off ○ ON\n○ T 3 S\nMode\nRelative 4 Distance: 5 100000 Next Card\nPosition1: 5000 Position2: 100000 Next Axis\nDriver Status\nRDY ALM +EL -EL ORG DIRING 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 ORG DIRING 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\n280 300 320 340 360\nAxis 0\nCurrent Position 11\n10 Velocity\n(( +\nSTOP - ))\nAxis 1\nCurrent Position 20000 Velocity\n(( +\nSTOP - ))\nAxis0 Reset\nAxis1 Reset\nClearPlots\nSave Config\nClose](.pci-8158-korean-50-11139-2b00-200-en/4904f63aaae22ebf1057b8d7072539e18fb2c9f2ac3aeb00ea7a09a4710ce179.jpg)

1. 모션 파라미터: 단일 축의 파라미터 설정. “수동 펄스 운동 ” 이 선택된 경우 속도와 이동 거리는 펄스 입력을 통해 결정되므로 이 파라미터는 무효합니다 .

 Start Velocity: PPS 단위의 모션의 시작 속도 설정 . 오직 “ 절대 모드 ” 또는 “ 상대 모드 ” 에서만 값은 유효합니다 . 예를 들어 -100.0 는 100.0 와 동일합니다 .
 Maximum Velocity: PPS 단위의 모션 최대 속도 설정 .오직 “ 절대 모드 ” 또는 “ 상대 모드 ” 에서만 값은 유효하며 예를 들어 -5000.0 은 5000.0 와 동일합니다 .
 Tacc: 초 단위의 가속 시간 설정 .
 Tdec: 초 단위의 감속 시간 설정 .

 Sacc: PPS 단위의 가속 중 S- 커브범위 설정 .
 Sdec: PPS 단위의 감속 중 S- 커브범위 설정 .

2. 반복 모드: “On” 이 선택된 경우 모션은 반복 모드가 됩니다 ( 전진 &lt;-&gt; 후진 또는 위치 1&lt;-&gt; 위치 2). 이는 오직“ 상대 모드 ” 또는 “ 절대 모드 ” 가 선택된 경우 유효합니다 .
3. 속도 프로파일 : 속도 프로파일 선택 . Trapezoidal 과 S-커브는 “ 절대 모드 ” “ 상대 모드 ”, “ 일정 운동 ” 에 사용가능합니다 .
4. 동작 모드: 동작 모드 선택 .

 Absolute Mode: “위치1”와 “위치2” 은 모션의 절대 목표 위치로 사용되며 관련 함수는\_8158\_start\_ta\_move(), \_8158\_start\_sa\_move() 입니다 .
 Relative Mode: “거리” 는 모션의 상대 변위로 사용되며관련 함수는 \_8158\_start\_tr\_move(),\_8158\_start\_sr\_move() 입니다 .

5. 거리 : “ 상대 모드 ” 의 상대 거리 설정 . 이는 오직 “ 상대모드 ” 가 선택되었을 경우에만 유효합니다 .
6. 위치 : “ 절대 모드 ” 의 절대 위치 설정 . 이는 오직 “ 절대모드 ” 가 선택되었을 경우에만 유효합니다 .

7. 버튼 :

 Next Card: 동작 카드 변경 .
 Next Axis: 동작 축 변경 .

8. I/O 상태: 모션 입/출력의 위상 설정. 불이 켜진 것은 활성화 , 꺼진 것은 비활성화를 의미 . 관련 함수는\_8158\_get\_io\_status() 입니다 .
9. 모션 상태 : \_8158\_motion\_done 함수의 리턴 값 보여줌. 관련 함수는 \_8158\_motion\_done() 입니다 .

10.현재 위치 :

 Command: 명령 카운터의 값을 보여줌 . 관련 함수는\_8158\_get\_position() 입니다 .

11.속도 : PPS 단위의 속도 절대 값 . 관련 함수는\_8158\_get\_current\_speed() 입니다 .

12.플레이 키 :

왼쪽 플레이 버튼 : 이 버튼 클릭 시 PCI-8158 은 이전의 설정에 따라 outlet 펄스를 시작합니다 .

 “절대 모드”,모드에서 이는 축을 위치1로 이동시킵니다.
 “ 상대 모드 ”, 모드에서 이는 축을 전진시킵니다 .

오른쪽 플레이 버튼 : 이 버튼 클릭 시 PCI-8158 은 이전의 설정에 따라 outlet 펄스를 시작합니다 .

 “Absolute Mode” 모드에서 이는 축을 위치 2 로 이동시킵니다 .
 “Relative Mode” 모드에서 이는 축을 후진시킵니다 .

Stop Button: 이 버튼 클릭 시 PCI-8158 은 감속과 정지를 시작합니다 . 감속 시간은 “Decel. Time.” 에 정의되고 관련 함수는 \_8158\_sd\_stop() 입니다 .

13.버튼 :

 Axis0 Reset: 이 버튼 클릭 시 모든 선택된 축의 포지셔닝 카운터는 영으로 설정됩니다 . 관련 함수는 다음과 같습니다 .

```cmake
_8158_set_position()
_8158_set_command()
_8158_reset_error_counter()
_8158_reset_target_pos()
```

 Axis1 Reset: 이 버튼 클릭 시 모든 선택된 축의 포지셔닝 카운터는 영으로 설정됩니다 .
 ClearPlots: 모션 그래프를 제거합니다 .
 Save Config: 8158.ini과 8158MC.ini에 현재의 설정 값저장 .
 Close: 메뉴 닫기 .

# 5.3.7 2D\_ 모션 메뉴

2-D 버튼을 동작 윈도우에서 클릭하면 아래의 윈도우를 볼 수 있습니다 . 이는 2-D 모션 테스트를 위한 메뉴이며 다음의 내용을 포함하고 있습니다 .

 선형 보간
 원형 보간
 증가형 Jog
 연속적 Jog
 기타 제어 객체

![) 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 0\nY 0\nClear Pos.\nPlay key\nStop\nNext Card\nSave config\nClose\nGraph Range\nXRang\nYRang\nOrigin Position\nX Org. Shift\nY Org. Shift\nLock\nLock\nHome\nX Forward\nY Back\n13\n9 x+\nY-\nSpeed\nX 10 0\nY Normal stopped condition\nMotion status\nX Normal stopped condition\nY Normal stopped condition\nCommand\nX 11 0\nY Clear Conn.\nCurrent Position\nX 12 0\nY Clear Pos.](.pci-8158-korean-50-11139-2b00-200-en/dc1846acd91201f38dea5fcedc00b7ba9cae31a93164ecfb5b0870a5ac1189e0.jpg)

# 1. Jog 타입 :

 연속적 Jog: 연속적 Jog는 사용자가 한 방향 버튼을 누를때 축이 속도를 증가하며 연속적으로 동작하는 것을 의미합니다 . 사용자가 버튼을 길게 누른다면 동작은 더욱빨라질 것이며 버튼을 누르지 않는다면 축은 즉시 동작을 멈출 것 입니다 .

![Jog Command\nY+\nX-\nX+\nY-](.pci-8158-korean-50-11139-2b00-200-en/fcf61ef024ffbeaa8cb5f5d8f5a482d56778cea0239982e62ae98d579e83c429.jpg)

 증가형 Jog: 증가형 jog는 사용자가 한 방향 버튼을 누를때 축은 증가량 설정에 따라 이동할 것입니다 .

![The image displays a section of a user interface with a light gray background. On the left side, the text 'Step' is stacked vertically above the word 'Size' in black, bold font. To the right of this label is a rectangular input box with a white background, containing the number '5' aligned to the right side.](.pci-8158-korean-50-11139-2b00-200-en/2d73370692534e24a873e56c4d18c7202c60811521a23a46352d4af3d6f6467c.jpg)

2. Jog 설정 : 단일 축 모션에 대한 파라미터 설정 . “Jog 모드 ” 가 선택된 경우 속도와 이동 거리는 펄스 입력에 따라 결정되므로 이 파라미터는 무효합니다 .

 Start Velocity: PPS 단위의 모션 시작 속도 설정 .
 Maximum Velocity: PPS 단위의 모션 최대 속도 설정 .
 Tacc: 초 단위의 가속 시간 설정 .

3. 동작 모드: 동작 모드 설정 .

 Absolute Mode: “위치”는 “선형 보간 모드”가 선택되었을 경우 모션의 절대 목표 위치와 같이 사용됩니다 .“ABS 정지 위치 ” 와 “ABS 중심 ” 은 “ 원형 보간 모드 ”가 선택되었을 경우 모션의 절대 목표 위치로 사용되며관련 함수는 \_8158\_start\_ta\_move(),\_8158\_start\_sa\_move() 입니다 .

 Relative Mode: “ 거리 ” 는 “ 선형 보간 모드 ” 가 선택 되었을 경우 모션의 절대 목표 위치로 사용되며 “Dis 정지위치 ” 와 “Dis 중심 ” 는 “ 원형 보간 모드 ” 가 선택되었을 경우 모션의 절대 목표 위치로 사용됩니다 . 관련 함수는 \_8158\_start\_tr\_move(), \_8158\_start\_sr\_move() 입니다 .

4. DIR: arc 의 지정된 방향 , CW/CCW, 이는 오직 “ 원형 보간 모드 ” 가 선택되었을 경우 유효합니다 .
5. 속도 프로파일 : 속도 프로파일 선택 . Trapezoidal 와 S-커브 는 “ 선형 보간 모드 ” 와 “ 원형 보간 모드 ” 에 사용가능 합니다 .
6. 속도 파라미터 : 단일 축의 파라미터 설정 . 이 파라미터는 만약 “ 선형 보간 모드 ” 또는 “ 원형 보간 모드 ” 가 선택된 경우 속도와 이동 거리는 펄스 입력에 의해 결정되므로 무효합니다 .

 Start Velocity: PPS 단위의 모션 시작 속도 설정 .
 Maximum Velocity: PPS 단위의 모션 최대 속도 설정 .
 Accel. Time: 초 단위의 가속 시간 설정 .
 Decel. Time: 초 단위의 감속 시간 설정 .
 SVacc: PPS 단위의 가속 중 S- 커브 범위 설정 .
 SVdec: PPS 단위의 감속 중 S- 커브 범위 설정 .

7. 거리 / 정지 위치 설정 : “ 원형 보간 모드 ” 의 절대 목표위치 또는 상대 거리 설정 . “ 원형 보간 모드 ” 의 arc 정지 위치 설정 . 이는 “ 선형 보간 모드 ” 와 “ 원형 보간 모드 ” 에 사용 가능 합니다 .
8. 중심점 설정 : “ 원형 보간 모드 ” 의 중앙 위치 설정 . 이는 오직 “ 원형 보간 모드 ” 가 선택되었을 경우 유효합니다 .
9. Jog 명령 : 이동을 위한 한 방향 버튼 누름 .

![Jog Command\nY+\nX-\nY-\nX+](.pci-8158-korean-50-11139-2b00-200-en/8736af7ad035ed73d778ac96dc4abced52b8c5f7b990d542744074a55dac794f.jpg)

10.속도 : PPS 단위의 속도 절대 값 . 관련된 함수는\_8158\_get\_current\_speed() 입니다 .

# 11.보간 명령 :

 명령 : 명령 카운터의 값을 보여줌 . 관련된 함수는\_8158\_get\_command() 입니다 .

# 12.현재 위치 :

 피드백: 피드백 위치 카운터의 값을 보여줌. 관련된 함수는 \_8158\_get\_position() 입니다 .

13.홈 모드 : 홈 리턴 모드 . 이 버튼 클릭 시 홈 이동 설정 윈도우를 볼 수 있습니다 . 관련된 함수는\_8158\_set\_home\_config() 이며 본 기계에는 두 개의 홈리턴 버튼이 이 윈도우의 좌측 하단에 위치하는데 이는사용자가 원점으로 돌아가기를 원하는 경우 유용합니다.

# 14.모드 :

 선형 보간: “모션 파라미터 설정 프레임”에서의 모션 파라미터의 정확한 설정이 완료된 후에 사용자는 이 프레임의 목적지를 입력 할 수 있습니다 . 그 후 Run 버튼을클릭 하시면 선형 보간이 시작됩니다 .

 원형 보간: 원형 보간 모드의 설정은 “ 모션 파라미터 설정 프레임 ” 에 arc 각도 , 분할 축 , 최적 옵션의 세 가지추가적인 파라미터를 내장합니다 . 설정에 대한 자세한내용은 6.7, 6.8 장을 참고 하십시오 .

설정이 완료 된 후 “ 플레이 키 프레임 ” 에 arc 의 중심점과 각도를 입력 할 수 있습니다 . Run 버튼을 클릭 하시면 원형 보간을 시작할 것입니다 .

 Jog Type: 연속적 Jog

![Jog Command\nY+\nX-\nX+\nY-](.pci-8158-korean-50-11139-2b00-200-en/4015f5b2b1b652d7bed12364fd8b08d9f4a84dc0f44829afb07510ea77314d2e.jpg)

연속적 jog 는 사용자가 한 방향 버튼을 클릭할 때 축은 속도를증가하며 연속적으로 움직이는 것을 의미합니다 . 사용자가 길게 버튼을 누를경우 이는 더욱 빠르게 동작 할 것이며 버튼을누르지 않는다면 축은 즉시 정지 할 것입니다 .

 Incremental Jog: 증가형 jog 는 사용자가 한 방향 버튼을 클릭하였을 경우 축이 증가량 설정에 따라 움직이는것을 의미합니다 .

![The image displays a user interface element on a grey background. On the left, the text 'Step' is stacked directly above 'Size' in black font. To the right of this text is a white rectangular input field with a black border, containing the number '5'.](.pci-8158-korean-50-11139-2b00-200-en/c87ad18aa22678fc8cfd128fc4beea2f29d50ed804cc1f3e23a658b7c80143a3.jpg)

15.모션 상태 : \_8158\_motion\_done 기능의 반환값을 보여줌 . 관련 함수는 \_8158\_motion\_done() 입니다 .

16.플레이 키 :

 Play button: 이 버튼 클릭시 PCI-8158 은 이전의 설정에따라 outlet 펄스를 시작할 것 입니다 .

 “선형 모드,” 에서 이는 축을 거리로 이동시키며 관련 함수는\_8158\_start\_tr\_move\_xy, \_8158\_start\_sr\_move\_xy 입니다 “원형 보간,”에서 이는 축을 거리(위치/거리(펄스)로 이동시키며 관련 함수는 \_8158\_start\_tr\_arc\_xy,\_8158\_start\_sr\_arc\_xy 입니다 .

Stop Button: 이 버튼 클릭시 PCI-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\nX Forward\nY Backward\nMode\nLinear\nCircular Step Size\nJog 50\nSpeed\nX 0\nY 0\nMotion status\nX Normal stopped condition\nY Normal stopped condition\nCommand\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 20\nY Org. Shift Lock](.pci-8158-korean-50-11139-2b00-200-en/ba55b79dbbf69b59a7847164fec88a58a6ab00d0e1b1dcd4551f96e16c72c424.jpg)

18.그래프 범위 프레임:

 Clear: 모션 그래프 제거 .
 Center: 중앙에 모션 그래프 표시 .

19.그래프 범위 : X 또는 Y 축의 표시 범위 제어 .
20.원점 위치: 표시 위치를 사용자에게 보여주기 위해 제공.

# 5.3.8 도움말 메뉴

이 메뉴에서 사용자는 마우스 오른쪽 클릭으로 도움말을 볼 수 있습니다 .

![FormHelp\nForm help\nif any else, or here is considered = 0 then,\nand if any should be done, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, and then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then,\nfor any else, or here is considered = 0 then,\nand if any should be done, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then,\nfor any should be done, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then,\nfor any should be done, then, or here is considered, then, or here is considered, then, or here is considered, then, or here is considered, then,\nfor any should be done, then, or here is considered, then, or here is considered, then, or here is considered, then,\nfor any should be done, then, or here is considered, then, or here is considered, then, or here is considered,\nfor any should be done, then, or here is considered, then, or here is considered,\nfor any should be done, then, or here is considered,\nfor any should be done, then, or here is considered,\nfor any should be done, then, or here is considered,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any should be done,\nfor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not has been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nFor any shall not have been done.\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward\nForward](.pci-8158-korean-50-11139-2b00-200-en/5b677be3bbe66412c4b6cc9af5f2fcc5c2d0fbc1e41cad56a8eac351099cc543.jpg)

의도적인 공백 페이지

# 6 함수 라이브러리

이 장에서는 PCI-8158 카드에서 지원하는 소프트웨어에 대해 설명합니다 . 사용자는 이 함수를 이용하여 C, C++ 또는 VisualBasic 을 이용하여 프로그램을 개발할 수 있습니다 . 만약 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>Trapezoidal 프로파일에서의 일정속도 축 가속</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>최대 override 속도 설정</td></tr></table>

단일 축 위치 모드 6.6 절

<table><tr><td>함수 명칭</td><td>설명</td></tr><tr><td>_8158_start_tr_move</td><td>trapezoidal 프로파일에서의 상대 이동 시작</td></tr><tr><td>_8158_start_ta_move</td><td>trapezoidal 프로파일에서의 절대 이동 시작</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>trapezoidal 프로파일에서의 X &amp; Y에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_move_xy</td><td>trapezoidal 프로파일에서의 X &amp; Y에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_move_xy</td><td>S- 커브 프로파일에서의 X &amp; Y에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_move_xy</td><td>S- 커브 프로파일에서의 X &amp; Y에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_tr_move_zu</td><td>trapezoidal 프로파일에서의 Z &amp; U에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_move_zu</td><td>trapezoidal 프로파일에서의 Z &amp; U에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_move_zu</td><td>S- 커브 프로파일에서의 Z &amp; U에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_move_zu</td><td>S- 커브 프로파일에서의 Z &amp; U에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_tr_move_ab</td><td>trapezoidal 프로파일에서의 A &amp; B에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_move_ab</td><td>trapezoidal 프로파일에서의 A &amp; B에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_move_ab</td><td>S- 커브 프로파일에서의 A &amp; B에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_move_ab</td><td>S- 커브 프로파일에서의 A &amp; B에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>함수 명칭</td><td>설명</td></tr><tr><td>_8158_start_tr_move_cd</td><td>trapezoidal 프로파일에서의 C &amp; D에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_move_cd</td><td>trapezoidal 프로파일에서의 C &amp; D에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_move_cd</td><td>S- 커브 프로파일에서의 C &amp; D에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_move_cd</td><td>S- 커브 프로파일에서의 C &amp; D에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_tr_line2</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 2 개의 축에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_line2</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 2 개의 축에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_line2</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 2 개의 축에 대한 상대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_line2</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 2 개의 축에 대한 절대적 2 축 선형 보간 시작</td></tr><tr><td>_8158_start_tr_line3</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 3 개의 축에 대한 상대적 3 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_line3</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 3 개의 축에 대한 절대적 3 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_line3</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 3 개의 축에 대한 상대적 3 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_line3</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 3 개의 축에 대한 절대적 3 축 선형 보간 시작</td></tr><tr><td>_8158_start_tr_line4</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 4 개의 축에 대한 상대적 4 축 선형 보간 시작</td></tr><tr><td>_8158_start_ta_line4</td><td>trapezoidal 프로파일에서의 4 개의 축의 어떠한 4 개의 축에 대한 절대적 4 축 선형 보간 시작</td></tr><tr><td>_8158_start_sr_line4</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 4 개의 축에 대한 상대적 4 축 선형 보간 시작</td></tr><tr><td>_8158_start_sa_line4</td><td>S- 커브 프로파일에서의 4 개의 축의 어떠한 4 개의 축에 대한 절대적 4 축 선형 보간 시작</td></tr></table>

원형 보간 모션 6.8 절

<table><tr><td>함수 명칭</td><td>설명</td></tr><tr><td>_8158_start_tr_arc_xy</td><td>X &amp; Y 축에 대한 상대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_ta_arc_xy</td><td>X &amp; Y 축에 대한 절대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sr_arc_xy</td><td>X &amp; Y 축에 대한 상대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sa_arc_xy</td><td>X &amp; Y 축에 대한 절대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_tr_arc_zu</td><td>Z &amp; U 축에 대한 상대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_ta_arc_zu</td><td>Z &amp; U 축에 대한 절대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sr_arc_zu</td><td>Z &amp; U 축에 대한 상대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sa_arc_zu</td><td>Z &amp; U 축에 대한 절대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_tr_arc_ab</td><td>A &amp; B 축에 대한 상대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_ta_arc_ab</td><td>A &amp; B 축에 대한 절대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sr_arc_ab</td><td>A &amp; B 축에 대한 상대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sa_arc_ab</td><td>A &amp; B 축에 대한 절대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_tr_arc_cd</td><td>C &amp; D 축에 대한 상대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_ta_arc_cd</td><td>C &amp; D 축에 대한 절대적 t- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sr_arc_cd</td><td>C &amp; D 축에 대한 상대적 s- 커브 원형 보간 시작</td></tr><tr><td>_8158_start_sa_arc_cd</td><td>C &amp; 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>

모션 입 / 출력 인터페이스 6.12 절

<table><tr><td>함수 명칭</td><td>설명</td></tr><tr><td>_8158_set_servo</td><td>SVON 신호의 On-Off 상태 설정</td></tr><tr><td>_8158_set_pcs_logic</td><td>PCS(위치 변경 신호) 신호의 논리 설정</td></tr><tr><td>_8158_set_pcs</td><td>위치 override 를 위한 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>PCI-8158 의 모든 모션 입 / 출력 위상 불러옴</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>

위치 비교와 Latch 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>카운터를 위한 latch 타이밍 설정</td></tr><tr><td>_8158_set_ltc_logic</td><td>LTC 신호의 논리 설정</td></tr><tr><td>_8158_get_latch_data</td><td>latch 데이터 불러옴</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>dwell 이동 설정</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>다축 trapezoidal 프로파일 모션 시작</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>

Soft Limit 6.19

<table><tr><td>합수 명칭</td><td>설명</td></tr><tr><td>_8158_disable_soft_limit</td><td>soft limit 기능 비활성화</td></tr><tr><td>_8158_enable_soft_limit</td><td>soft limit 기능 활성화</td></tr><tr><td>_8158_set_soft_limit</td><td>soft limits 설정</td></tr></table>

Backlash 보정 / 진동 억제 6.20

<table><tr><td>합수 명칭</td><td>설명</td></tr><tr><td>_8158_backlash_comp</td><td>보정을 위한 backlash 조정 펼스 설정</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>상대적인 trapezoidal 속도 프로파일을 불러옴</td></tr><tr><td>_8158_get_ta_move_profile</td><td>절대적인 trapezoidal 속도 프로파일을 불러옴</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- 비트 ASCII character</td><td>0 부터 255</td></tr><tr><td>I16</td><td>16- 비트 signed integer</td><td>-32768 부터 32767</td></tr><tr><td>U16</td><td>16- 비트 unsigned integer</td><td>0 부터 65535</td></tr><tr><td>I32</td><td>32- 비트 signed long integer</td><td>-2147483648 부터 2147483647</td></tr><tr><td>U32</td><td>32- 비트 unsigned long integer</td><td>0 부터 4294967295</td></tr><tr><td>F32</td><td>32- 비트 단정도 부동 소수점</td><td>-3.402823E38 부터 3.402823E38</td></tr><tr><td>F64</td><td>64- 비트 2 배 정밀도 부동 소수점</td><td>-1.797683134862315E308부터 1.797683134862315E309</td></tr><tr><td>Boolean</td><td>Boolean 논리 값</td><td>TRUE, FALSE</td></tr></table>

PCI-8158 에서 사용하는 함수의 이름은 함수의 실제 의미를 나타내는데 표현하는 규칙은 다음과 같습니다 :

“C” 언어 환경에서 :

\_{하드웨어 모델}\_{동작 명칭}. 예를 들어, \_8158\_initial().

C 라이브러리와 VB 라이브러리의 차이를 인식하기 위해 “B” 가앞에 붙어있는 함수는 VB 라이브러리를 가리킵니다 . 예를 들어 ,B\_8158\_initial().

# 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)
```rust
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)
```txt
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: 카드 ID 를 결정하는 보드 상의 DIP 스위치 (SW1) 비활성화

값의 의미:

카드 ID 는 다음에 의해 결정됩니다 :

0: PCI 슬롯의 순서 .

1: 보드 상 DIP 스위치 (SW1).

card\_id: PCI-8158 카드 인덱스 지정 . 카드 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 파라미터를 설정할 수 있습니다 . 그 후 내부 28 비트 up/down 카운터는 \_8158\_set\_pls\_iptmode() 함수의 설정에 따라 카운트 할 것이며 명령 펄스의 출력을 카운트할 것입니다 .

# @ 문법

C/C++(Windows 2000/XP)
```c
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>카드 id</td><td>물리적 축</td><td>축번호</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></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="16">값의미</td></tr><tr><td>값</td><td>타입</td><td colspan="6">양의(Positive)방향</td><td colspan="8">음의(Negative)방향</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><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><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><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><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><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><td></td><td></td><td></td></tr><tr><td>6</td><td>AB</td><td colspan="6">OUIDIR</td><td colspan="8">OUIDIR</td></tr><tr><td>7</td><td>AB</td><td colspan="6">OUIDIR</td><td colspan="8">OUIDIR</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 – trapezoidal 프로파일에서 일정한 속도로 축가속

\_8158\_sv\_move – S- 커브 프로파일에서 일정한 속도로 축 가속

\_8158\_emg\_stop – 즉시 정지

\_8158\_sd\_stop – 정지를 위한 감속

\_8158\_get\_current\_speed – 현재 속도 불러옴

\_8158\_speed\_override – 현재 속도 즉시 변경

\_8158\_set\_max\_override\_speed – 최대 override 속도 설정

# @ 설명

# \_8158\_tv\_move:

이 함수는 trapezoidal 프로파일에서 정해진 일정한 속도로 축을 가속 시킵니다. 축은 속도가 변경되거나 정지 명령이 내려질때까지 일정한 속도로 이동하게 되며 방향은 속도 파라미터의사인으로 결정됩니다 .

# \_8158\_sv\_move:

이 함수는 S-커브 프로파일에서 정해진 일정한 속도로 축을 가속 시킵니다. 축은 속도가 변경되거나 정지 명령이 내려질 때까지 일정한 속도로 이동하게 되며 방향은 속도 파라미터의 사인으로 결정됩니다 .

# \_8158\_emg\_stop:

이 함수는 축을 즉시 정지시키는데 사용됩니다 . 이 함수는 또한 선설정 이동 (trapezoidal, S- 커브 ), 수동 이동 , 또는 홈 리턴 기능이 수행될 때 유용합니다 .

# \_8158\_sd\_stop:

trapezoidal 또는 S- 프로파일에서 축을 감속시키는데 사용됩니다 . 이 함수는 또한 선설정 이동 (trapezoidal, S- 커브 ), 수동 이동 , 또는 홈 리턴 기능이 수행될 때 유용합니다 . 속도 프로파일은 원 모션 프로파일에 의해 결정됩니다 .

# \_8158\_get\_current\_speed:

이 함수는 현재 펄스 출력 속도 ( 펄스 / 초 ) 를 읽는 데 사용하며 언제 어느 동작에서나 사용 가능합니다 .

# \_8158\_speed\_override:

이 함수는 예를 들어 "\_8158\_tv\_move" 과 같은 모션 동작 중속도를 즉시 바꾸는 데 사용합니다. 자세한 내용은 4.2.14를 참고 하십시오 .

또한 : \_8158\_set\_max\_override\_speed

# 8158\_set\_max\_override\_speed:

이 함수는 속도 override 동작을 하기 전에 최대 override 속도(100% 속도)를 설정하는데 사용됩니다. 자세한 내용은 4.2.14를 참고 하십시오 .

또한 : \_8158\_speed\_override

# @ 문법

C/C++(Windows 2000/XP)
```c
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)
```txt
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
```

```txt
B_8158_sd_stop(ByVal AxisNo As Integer, ByVal Tdec As Double) As Integer
B_8158_get_current_speed(ByVal AxisNo As Integer, ByRef 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>카드 id</td><td>물리적 축</td><td>축번호</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- 커브 가속 수행 시 특정한 속도 간격 .

참고 : SVacc = 0, 은 순수 S- 커브

Tdec: 초 단위의 지정된 감속 시간

\*속도: 현재 속도를 얻기 위한 변수 (펄스/ 초).

NewVelPercent: 최대 override 속도의 비율 (100% 속도 )

Time: override 속도를 위한 현재 속도의 지속시간 . 단위 : 초

OvrdSpeed: 최대 override 속도 ( 펄스 / 초 )

Enable: 0: 비활성화 , 1: override 속도 동작의 활성화

# 6.6 단일 축 위치 모드

# @ 명칭

\_8158\_start\_tr\_move – 상대적인 trapezoidal 프로파일 이동 시작
\_8158\_start\_ta\_move – 절대적인 trapezoidal 프로파일 이동 시작
$\frac { 8 1 5 8 } { 7 } - 5 \tt { t a r t \_ s r \_ m o v e } \mathrm { ~ \tt ~ - ~ } \mathbb { 3 } \tt { t } \cdot \tt { l } \breve { { s } } \breve { { s } } \breve { { s } } \breve { { \ u } } \breve { { s } } - \mathbb { 3 } \breve { { \mu } } \underline { { ~ \underline { { { \bf ~ v } } } } } \breve { { s } } \breve { { u } } \breve { { s } } = 0 | \frac { \psi _ { s } } { \alpha } \mathrm { ~ \tt { 3 } ~ } \breve { s }$
8158\_start\_sa\_move – 절대적인 S- 커브 프로파일 이동 시작
\_8158\_set\_move\_ratio – 명령 펄스와 피드백 펄스의 비율 설정
\_8158\_position\_override – 위치 즉시 변경

# @ 설명

# 일반 :

위치 또는 거리 파라미터의 사인은 이동 방향을 결정합니다 .만약 이동거리가 특정한 속도에 도달하기 너무 짧을 경우 제어기는 자동적으로 MaxVel 보다 낮게 동작하며 Tacc, Tdec,VSacc 와 VSdec 또한 짧아지는 반면 dV/dt( 가속 / 감속 ) 과d(dV/dt)/dt (jerk) 는 변하지 않습니다 .

# \_8158\_start\_tr\_move:

이 함수는 축을 시작 속도 (StrVel) 에서 부터 가속시키고 일정한 속도 (MaxVel) 로 회전시키며 trapezoidal 프로파일의 상대적 거리에서 정지를 위한 감속을 합니다 . 가속 (Tacc) 과 감속(Tdec) 시간은 각각 특정하며 이는 프로그램을 모션이 완료될때까지 대기하게 하지는 않지만 , 프로그램으로 즉시 복귀를 위한 제어는 가능합니다 .

# \_8158\_start\_ta\_move:

이 함수는 축을 시작 속도 (StrVel) 에서 가속시키며 일정한 속도 (MaxVel) 로 회전시키고 trapezoidal 프로파일의 절대적 위치에서 정지를 위한 감속을 시킵니다 . 가속 (Tacc) 과 감속(Tdec) 시간은 각각 특정하며 이 명령은 프로그램을 모션이 완료 될 때까지 대기하게 하지는 않지만, 프로그램으로 즉시 복귀를 위한 제어는 가능합니다 .

# \_8158\_start\_sr\_move:

이 함수는 축을 시작 속도 (StrVel) 에서 부터 가속시키고 일정한 속도(MaxVel)로 회전시키며 S-커브 프로파일의 상대적 거리에서 정지를 위한 감속을 시킵니다 . 가속 (Tacc) 과 감속(Tdec) 시간은 각각 특정하며 이는 프로그램을 모션이 완료될때까지 대기하게 하지는 않지만 , 프로그램으로 즉시 복귀를 위한 제어는 가능합니다 .

# \_8158\_start\_sa\_move:

이 함수는 축을 시작 속도 (StrVel)에서 가속시키고 일정한 속도로 회전시키며 S- 커브 프로파일의 특정한 절대적 위치에서정지를 위한 감속을 시킵니다. 가속과 감속 시간은 각각 특정하며 이 명령은 프로그램이 모션의 완료를 대기하도록 하지는 않지만 , 프로그램으로의 즉시 복귀 제어는 가능합니다 .

# \_8158\_set\_move\_ratio:

이 함수는 특정한 축을 위한 척도 인자를 설정합니다 . 일반적으로 기계적 분해능이 다를 경우 축은 오직 척도 인자들을 필요로 합니다 . 예를 들어 피드백 센서의 분해능이 명령 펄스 분해능의 두 배일 경우 “move\_ratio” 파라미터는 2로 설정합니다.

# \_8158\_position\_override:

이 함수는 목표 위치를 즉시 바꾸는 데 사용하며 몇 가지의 한계점이 있습니다 . 사용하기 전에 4.2.15 를 참고 하십시오 .

# @ 문법

C/C++(Windows 2000/XP)
```txt
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);
```

```c
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)
```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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: PPS 단위의 속도 프로파일의 시작 속도

MaxVel: PPS 단위의 최대 속도

Tacc: 초 단위의 지정된 가속 시간

Tdec: 초 단위의 지정된 감속 시간

SVacc: S- 커브 가속이 수행될 때의 지정된 속도 간격

Note: SVacc = 0, 은 순수 S- 커브 . 더 자세한 정보는 4.2.4 를참고 하십시오 .

SVdec: S- 커브 감속이 수행될 때의 지정된 속도 간격 .

Note: SVdec = 0, 은 순수 S- 커브 . 더 자세한 정보는 4.2.4 를참고 하십시오 .

Move\_ratio: ( 피드백 분해능)/( 명령 분해능 )의 비율 , 이는 0 이될 수 없음

NewPos: 이동을 위하여 새로 지정된 절대 위치

# 6.7 선형 보간 모션

# @ 명칭

\_8158\_start\_tr\_move\_xy – trapezoidal 프로파일에서의 X& Y 에 대한 상대적 2 축 선형 보간 시작

\_8158\_start\_ta\_move\_xy – trapezoidal 프로파일에서의 X &Y 에 대한 절대적 2 축 선형 보간 시작

\_8158\_start\_sr\_move\_xy – S- 커브 프로파일에서의 X & Y 에대한 상대적 2 축 선형 보간 시작

\_8158\_start\_sa\_move\_xy – S-커브 프로파일에서의 X & Y에대한 절대적 2 축 선형 보간 시작

\_8158\_start\_tr\_move\_zu – trapezoidal 프로파일에서의 Z &U 에 대한 상대적 2 축 선형 보간 시작

\_8158\_start\_ta\_move\_zu – trapezoidal 프로파일에서의 Z &U 에 대한 절대적 2 축 선형 보간 시작

\_8158\_start\_sr\_move\_zu – S-커브 프로파일에서의 Z & U에대한 상대적 2 축 선형 보간 시작

\_8158\_start\_sa\_move\_zu – S-커브 프로파일에서의 Z & U에대한 절대적 2 축 선형 보간 시작

\_8158\_start\_tr\_move\_ab – trapezoidal 프로파일에서의 A &B 에 대한 상대적 2 축 선형 보간 시작

\_8158\_start\_ta\_move\_ab – trapezoidal 프로파일에서의 A& B 에 대한 절대적 2 축 선형 보간 시작

\_8158\_start\_sr\_move\_ab – S- 커브 프로파일에서의 A & B에 대한 상대적 2 축 선형 보간 시작

\_8158\_start\_sa\_move\_ab – S-커브 프로파일에서의 A & B에대한 절대적 2 축 선형 보간 시작

\_8158\_start\_tr\_move\_cd – trapezoidal 프로파일에서의 C& D 에 대한 상대적 2 축 선형 보간 시작

\_8158\_start\_ta\_move\_cd – trapezoidal 프로파일에서의 C &D 에 대한 절대적 2 축 선형 보간 시작

\_8158\_start\_sr\_move\_cd – S-커브 프로파일에서의 C & D에대한 상대적 2 축 선형 보간 시작

\_8158\_start\_sa\_move\_cd – S-커브 프로파일에서의 C & D에대한 절대적 2 축 선형 보간 시작

8158\_start\_tr\_line2 – trapezoidal 프로파일에서의 4 개의축의 어떠한 2 개의 축에 대한 상대적 2 축 선형 보간 시작

8158\_start\_ta\_line2 – trapezoidal 프로파일에서의 4 개의축의 어떠한 2 개의 축에 대한 절대적 2 축 선형 보간 시작

8158\_start\_sr\_line2 – S- 커브 프로파일에서의 4 개의 축의어떠한 2 개의 축에 대한 상대적 2 축 선형 보간 시작

8158\_start\_sa\_line2 – S- 커브 프로파일에서의 4 개의 축의어떠한 2 개의 축에 대한 절대적 2 축 선형 보간 시작

8158\_start\_tr\_line3 – trapezoidal 프로파일에서의 4 개의축의 어떠한 3 개의 축에 대한 상대적 3 축 선형 보간 시작

8158\_start\_ta\_line3 – trapezoidal 프로파일에서의 4 개의축의 어떠한 3 개의 축에 대한 절대적 3 축 선형 보간 시작

8158\_start\_sr\_line3 – S-커브 프로파일에서의 4개의 축의어떠한 3 개의 축에 대한 상대적 3 축 선형 보간 시작

\_8158\_start\_sa\_line3 – S- 커브 프로파일에서의 4 개의 축의어떠한 3 개의 축에 대한 절대적 3 축 선형 보간 시작

8158\_start\_tr\_line4 – trapezoidal 프로파일에서의 4 개의축의 어떠한 4 개의 축에 대한 상대적 4 축 선형 보간 시작

8158\_start\_ta\_line4 – trapezoidal 프로파일에서의 4 개의축의 어떠한 4 개의 축에 대한 절대적 4 축 선형 보간 시작

\_8158\_start\_sr\_line4 – S- 커브 프로파일에서의 4 개의 축의어떠한 4 개의 축에 대한 상대적 4 축 선형 보간 시작

\_8158\_start\_sa\_line4 – S-커브 프로파일에서의 4개의 축의어떠한 4 개의 축에 대한 절대적 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>상대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_ta_move_xy</td><td>2</td><td>T</td><td>절대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_sr_move_xy</td><td>2</td><td>S</td><td>상대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_sa_move_xy</td><td>2</td><td>S</td><td>절대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_tr_move_zu</td><td>2</td><td>T</td><td>상대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_ta_move_zu</td><td>2</td><td>T</td><td>절대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_sr_move_zu</td><td>2</td><td>S</td><td>상대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_sa_move_zu</td><td>2</td><td>S</td><td>절대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_tr_move_ab</td><td>2</td><td>T</td><td>상대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_ta_move_ab</td><td>2</td><td>T</td><td>절대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_sr_move_ab</td><td>2</td><td>S</td><td>상대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_sa_move_ab</td><td>2</td><td>S</td><td>절대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_tr_move_cd</td><td>2</td><td>T</td><td>상대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_ta_move_cd</td><td>2</td><td>T</td><td>절대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_sr_move_cd</td><td>2</td><td>S</td><td>상대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_sa_move_cd</td><td>2</td><td>S</td><td>절대</td><td>축 6 &amp; 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>상대</td><td>4 개 축의 어떤 2축</td></tr><tr><td>_8158_start_ta_line2</td><td>2</td><td>T</td><td>절대</td><td>4 개 축의 어떤 2축</td></tr><tr><td>_8158_start_sr_line2</td><td>2</td><td>S</td><td>상대</td><td>4 개 축의 어떤 2축</td></tr><tr><td>_8158_start_sa_line 2</td><td>2</td><td>S</td><td>절대</td><td>4 개 축의 어떤 2축</td></tr></table>

참고 : 선형 보간의 목표가 되는 두 축은 카드상 , 앞의 0-3 축 또는뒤의 4-7 축 가운데 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>상대</td><td>4 개 축의 어떤 3 축</td></tr><tr><td>_8158_start_ta_line3</td><td>3</td><td>T</td><td>절대</td><td>4 개 축의 어떤 3 축</td></tr><tr><td>_8158_start_sr_line3</td><td>3</td><td>S</td><td>상대</td><td>4 개 축의 어떤 3 축 s</td></tr><tr><td>_8158_start_sa_line3</td><td>3</td><td>S</td><td>절대</td><td>4 개 축의 어떤 3 축</td></tr></table>

참고 : 선형 보간의 목표가 되는 세 축은 카드상 앞의 0-3 축 또는 뒤의 4-7 축 가운데 3 축이며 두 그룹 간 교차할 수 없습니다 .

<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>상대</td><td>4 개 축의 어떤4 축</td></tr><tr><td>_8158_start_ta_line4</td><td>4</td><td>T</td><td>절대</td><td>4 개 축의 어떤4 축</td></tr><tr><td>_8158_start_sr_line4</td><td>4</td><td>S</td><td>상대</td><td>4 개 축의 어떤4 축</td></tr><tr><td>_8158_start_sa_line4</td><td>4</td><td>S</td><td>절대</td><td>4 개 축의 어떤4 축</td></tr></table>

# 속도 프로파일 :

T: trapezoidal 프로파일

S: s 커브 프로파일

# 상대 / 절대 :

상대 : 상대 거리

절대: 절대 위치

# @ 문법

C/C++(Windows 2000/XP)
```c
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, ByValSVdec 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 카드 인덱스를 지정. 카드 ID는 DIP 스위치(SW1) 또는 슬롯의 순서에 의해 결정됩니다. \_8158\_initial()를 참고 하십시오 .

AxisNo: 축 번호는 이동 또는 위치 변경을 위해 지정되었습니다.

<table><tr><td>카드 id</td><td>물리적 축</td><td>축번호</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: PPS 단위의 속도 프로파일 내 시작 속도

MaxVel: PPS 단위의 최대 속도 .

Tacc: 초 단위의 지정된 가속 시간 .

Tdec: 초 단위의 지정된 감속 시간 .

SVacc: S- 커브 가속이 수행될 시의 지정된 속도 간격 .

참고 : SVacc = 0, 은 순수 S- 커브 . 자세한 사항은 4.2.4 를 참고 하십시오

SVdec: S- 커브 감속이 수행될 시의 지정된 속도 간격 .

참고 : SVdec = 0, 은 순수 S- 커브 . 자세한 사항은 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 원형 보간 모션

# @ 명칭

\_8158\_start\_tr\_arc\_xy – X & Y 축에 대한 상대적 t- 커브 원형 보간 시작
\_8158\_start\_ta\_arc\_xy – X & Y축에 대한 절대적 t-커브 원형 보간 시작
\_8158\_start\_sr\_arc\_xy – X & Y 축에 대한 상대적 s- 커브 원형 보간 시작
\_8158\_start\_sa\_arc\_xy – X & Y 축에 대한 절대적 s- 커브 원형 보간 시작
\_8158\_start\_tr\_arc\_zu – Z & U축에 대한 상대적 t-커브 원형 보간 시작
\_8158\_start\_ta\_arc\_zu – Z & U 축에 대한 절대적 t- 커브 원형 보간 시작
\_8158\_start\_sr\_arc\_zu – Z & U 축에 대한 상대적 s- 커브 원형 보간 시작
\_8158\_start\_sa\_arc\_zu – Z & U 축에 대한 절대적 s- 커브 원형 보간 시작
\_8158\_start\_tr\_arc\_ab – A & B 축에 대한 상대적 t- 커브 원형 보간 시작
\_8158\_start\_ta\_arc\_ab – A & B 축에 대한 절대적 t- 커브 원형 보간 시작
\_8158\_start\_sr\_arc\_b – A & B 축에 대한 상대적 s- 커브 원형 보간 시작
\_8158\_start\_sa\_arc\_ab –A & B 축에 대한 절대적 s- 커브 원형 보간 시작
\_8158\_start\_tr\_arc\_cd – C & D 축에 대한 상대적 t- 커브 원형 보간 시작
\_8158\_start\_ta\_arc\_cd – C & D축에 대한 절대적 t-커브 원형 보간 시작

\_8158\_start\_sr\_arc\_cd – C & D축에 대한 상대적 s-커브 원형 보간 시작

8158\_start\_sa\_arc\_cd – C & D축에 대한 절대적 s-커브 원형 보간 시작

\_8158\_start\_tr\_arc2 – 4 개 축의 어떠한 2 축에 대한 상대적t- 커브 원형 보간 시작

\_8158\_start\_ta\_arc2 – 4 개 축의 어떠한 2 축에 대한 절대적t- 커브 원형 보간 시작

\_8158\_start\_sr\_arc2 – 4 개 축의 어떠한 2 축에 대한 상대적s- 커브 원형 보간 시작

\_8158\_start\_sa\_arc2 – 4 개 축의 어떠한 2 축에 대한 절대적s- 커브 원형 보간 시작

# @ 설명

이 함수는 다른 프로파일에서의 원형 보간 모션을 수행합니다 . 함수들의 자세한 비교는 다음 표에서 설명하고 있습니다 .

<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>trapezoidal</td><td>상대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_ta_arc_xy</td><td>2</td><td>trapezoidal</td><td>절대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_sr_arc_xy</td><td>2</td><td>S- 커브</td><td>상대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_sa_arc_xy</td><td>2</td><td>S- 커브</td><td>절대</td><td>축 0 &amp; 1</td></tr><tr><td>_8158_start_tr_arc_zu</td><td>2</td><td>trapezoidal</td><td>상대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_ta_arc_zu</td><td>2</td><td>trapezoidal</td><td>절대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_sr_arc_zu</td><td>2</td><td>S- 커브</td><td>상대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_sa_arc_zu</td><td>2</td><td>S- 커브</td><td>절대</td><td>축 2 &amp; 3</td></tr><tr><td>_8158_start_tr_arc_ab</td><td>2</td><td>trapezoidal</td><td>상대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_ta_arc_ab</td><td>2</td><td>trapezoidal</td><td>절대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_sr_arc_ab</td><td>2</td><td>S- 커브</td><td>상대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_sa_arc_ab</td><td>2</td><td>S- 커브</td><td>절대</td><td>축 4 &amp; 5</td></tr><tr><td>_8158_start_tr_arc_cd</td><td>2</td><td>trapezoidal</td><td>상대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_ta_arc_cd</td><td>2</td><td>trapezoidal</td><td>절대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_sr_arc_cd</td><td>2</td><td>S- 커브</td><td>상대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_sa_arc_cd</td><td>2</td><td>S- 커브</td><td>절대</td><td>축 6 &amp; 7</td></tr><tr><td>_8158_start_tr_arc2</td><td>2</td><td>trapezoidal</td><td>상대</td><td>4개 축의 어떤2축</td></tr><tr><td>_8158_start_ta_arc2</td><td>2</td><td>trapezoidal</td><td>절대</td><td>4개 축의 어떤2축</td></tr><tr><td>_8158_start_sr_arc2</td><td>2</td><td>S- 커브</td><td>상대</td><td>4개 축의 어떤2축</td></tr><tr><td>_8158_start_sa_arc2</td><td>2</td><td>S- 커브</td><td>절대</td><td>4개 축의 어떤2축</td></tr></table>

참고 : 선형 보간의 목표가 되는 2 개의 축은 앞의 4 축 (0-3) 또는뒤의 4 축 (4-7) 중의 2 축이며 두 그룹 간 교차할 수 없습니다 .

# @ 문법

C/C++(Windows 2000/XP)
```c
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,F64MaxVel,F64 Tacc,F64 Tdec,F64 SVacc,F64SVdec);
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\_arc\_cd(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\_arc2(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

```txt
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 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 MaxVel As Double, ByVal Tdec 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\_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\_arc2(AxisArray() As Integer,OffsetCenter() As Double, OffsetEnd() AsDouble, Byval CW\_CCW As Integer, ByValStrVel As Double , ByVal MaxVel As Double,

```txt
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_arc2 (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
```

# @ 인수

card\_id: PCI-8158 카드 인덱스를 지정. 카드 ID는 DIP 스위치(SW1) 또는 슬롯의 순서에 의해 결정됩니다. \_8158\_initial()를 참고 하십시오 .

AxisNo: 축 번호는 이동 또는 위치 변경을 위해 지정되었습니다 .

<table><tr><td>카드 id</td><td>물리적축</td><td>축번호</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- 축 ( 목표축 중의 두 번째 축 ) 을 중심점으로 옵셋

OffsetEx: X-축 (목표축 중의 첫 번째 축) 을 arc의 정지점으로옵셋

OffsetEy: Y- 축을 arc 의 정지점으로 옵셋

Cx: arc 중심점의 X- 축 ( 목표축 중의 첫 번째 축 ) 절대 위치

Cy: arc 중심점의 Y- 축 ( 목표축 중의 두 번째 축 ) 절대 위치

Ex: arc 정지점의 X- 축 ( 목표축 중의 첫 번째 축 ) 절대 위치

Ey: arc 정지점의 Y- 축 ( 목표축 중의 두 번째 축 ) 절대 위치

CW\_CCW: 지정된 arc 방향

<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: PPS 단위의 속도 프로파일 내 시작 속도 .

MaxVel: PPS 단위의 최대 속도 .

Tacc: 초 단위의 지정된 가속 시간 .

Tdec: 초 단위의 지정된 감속 시간 .

SVacc: S- 커브 가속 수행 시 지정된 속도 간격 .

참고 : SVacc = 0, 은 순수 S- 커브 자세한 내용은 4.2.4 를 참고하십시오

SVdec: S- 커브 감속 수행 시 지정된 속도 간격 .

참고 : SVdec = 0, 은 순수 S- 커브 자세한 내용은 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}; // 첫번째 & 두번째 축에 대한 시작위치 ( 초기지점 ) 에서 옵셋

\*OffsetEnd: 옵셋을 arc 의 정지점에 배열 ( 시작 위치에 따라 )

예시 : F64 OffsetEnd[2] = {4000.0, 0.0}; // 첫번째 & 두번째축에 대한 시작위치 ( 초기지점 )에서 옵셋

\*CenterPos: arc 절대위치의 중심점에 배열

예시 : F64 CenterPos[2] = {2000.0, 0.0}; // 첫번째 & 두번째 축에 대한 절대적 중심점 위치

\*EndPos: arc 절대위치의 정지점에 배열

예시 : F64 EndPos[2] = {4000.0, 0.0}; // 첫번째 & 두번째 축에 대한 절대적 정지점 위치

# 6.9 홈 리턴 모드

# @ 명칭

\_8158\_set\_home\_config – 홈 / 인덱스 논리 구성 설정

\_8158\_home\_move – 홈 리턴 동작 시작

\_8158\_home\_search – 자동 홈 검색 수행

# @ 설명

\_8158\_set\_home\_config:

홈 리턴 모드 설정 , 원점 (ORG) 과 인덱스 신호 (EZ) 논리 , EZ카운트, home\_move()함수에 대한 ERC 출력 옵션을 포함합니다 . 자세한 홈 모드 제어의 설정에 자세한 내용은 4.2.10 을 참고하십시오 .

\_8158\_home\_move:

이 함수는 \_8164\_set\_home\_config() 함수의 설정에 따라 축이 홈 리턴 동작을 수행하도록 합니다 . 움직임의 방향은 속도파라미터의 사인 (MaxVel) 에 의해 결정됩니다 . 이 함수는 홈모드의 설정에 따라 정지가 결정되기 때문에 사용자는 초기 이동 방향의 선택에 반드시 주의하셔야 합니다 . 사용자는 또한limit 스위치를 누르거나 축의 정지에 영향을 미칠 수 있는 다른상황에 대해 주의하셔야 합니다 . 좀 더 자세한 내용은 4.2.10을 참고하십시오 .

\_8158\_home\_search:

이 함수는 \_8164\_set\_home\_config() 함수의 설정에 따라 축이 홈 검색 동작을 수행하도록 합니다 . 움직임의 방향은 속도파라미터의 사인 (MaxVel) 에 의해 결정됩니다 . 이 함수는 홈모드의 설정에 따라 정지가 결정되기 때문에 사용자는 초기 이동 방향의 선택에 반드시 주의하셔야 합니다 . 사용자는 또한limit 스위치를 누르거나 축의 정지에 영향을 미칠 수 있는 다른상황에 대해 주의하셔야 합니다 . 좀 더 자세한 내용은 4.2.11을 참고하십시오 .

# @ 문법

C/C++(Windows 2000/XP)
```c
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)
```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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>액티브 LO</td></tr><tr><td>1</td><td>액티브 HI</td></tr></table>

ez\_logic: EZ 에 대한 동작 논리 구성

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>액티브 LO</td></tr><tr><td>1</td><td>액티브 HI</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 동작 시작

\_8158\_pulser\_vmove – 펄스 v 동작 시작

\_8158\_set\_pulser\_ratio – 실제 펄스 출력 속도를 위한 수동펄스 비율 설정

\_8158\_set\_pulser\_iptmode – 펄스의 입력 신호 모드 설정

# @ 설명

\_8158\_disable\_pulser\_input

이 함수는 펄스 입력의 활성화 또는 비활성화를 설정합니다 .

\_8158\_pulser\_pmove

이 명령은 축이 수동 펄스 입력에 따라 이동을 시작하게 합니다 . 축은 한 펄스 수신 시 \_8158\_disable\_pulser\_input 함수가펄스를 비활성화 시키거나 출력 펄스의 수가 거리에 이를 때까지 하나의 펄스를 출력합니다 .

\_8158\_pulser\_vmove

이 명령은 축이 수동 펄스 입력에 따라 이동을 시작하게 합니다 . 축은 \_8158\_disable\_pulser\_input 가 펄스를 비활성화 할때 까지 하나의 수동 펄스를 받을때 하나의 펄스를 출력하게 됩니다 .

\_8158\_set\_pulser\_ratio

실제 펄스 출력 속도를 위한 수동 펄스 비율을 설정합니다 . 수동 펄스 출력 속도를 위한 공식은 :

출력 펄스 카운트 = 입력 펄스 카운트 × 4 (MultiF +1)

$$
\times (\text { DivF } + 1) / 2 0 4 8
$$

The DivF = 0\~2047 나눔인자

The MultiF= 0\~31 곱셈인자

# \_8158\_set\_pulser\_iptmode

이 함수는 수동 펄스의 입력모드를 설정하는데 사용합니다 .

# @ 문법

C/C++(Windows 2000/XP)
```txt
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)
```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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: 이동을 위한 지정된 상대 거리 ( 단위 : 펄스 )

예를 들어 제한 속도가 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>backlash 보정 중</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>카드 id</td><td>물리적 축</td><td>축번호</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 모션 입 / 출력 인터페이스

# @ 명칭

\_8158\_set\_servo – SVON 신호의 On-Off 상태 설정

\_8158\_set\_pcs\_logic – PCS 신호의 논리 설정

\_8158\_set\_pcs – 위치 override 를 위한 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 –PCI-8158 의 모든 모션 입 / 출력 위상불러옴

# @ 설명

\_8158\_set\_servo:

이 함수에서 사용자는 SVON신호의 On-Off 상태를 설정할 수있습니다 . 기본값은 1(OFF) 이며 이는 SVON 이 GND 에 개방되어 있음을 나타냅니다 .

\_8158\_set\_pcs\_logic:

PCS 신호 입력의 활성 논리를 설정합니다 .

# \_8158\_set\_pcs:

입력 신호 PCS가 켜졌을 경우 위치 override를 활성화합니다. PCS 터미널 상태는 “\_8158\_get\_io\_status” 함수로 모니터할 수 있습니다 .

# \_8158\_set\_clr\_mode

CLR 이 입력된 신호는 지정된 카운터 ( 명령 , 위치 , 에러 , 범용 카운터 ) 를 리셋 할 수 있습니다 . 리셋 동작은 이 함수로 설정할 수 있으며 4가지 타입의 리셋 동작 모드가 존재합니다. 자세한 내용은 요지 부분을 참고하십시오 .

# \_8158\_set\_inp:

서보 드라이버에서의 In-Position 신호 입력의 활성 논리를 설정합니다. 사용자는 이 함수를 활성화할 것인지 선택할 수 있으며 기본적으로 비활성화 되어 있습니다 .

# \_8158\_set\_alm:

서보 드라이버에서의 ALARM 신호 입력의 활성 논리를 설정합니다. ALARM 신호가 활성화될 시의 두 가지 반응 모드를 선택할 수 있습니다 .

# \_8158\_set\_erc:

사용자는 이 함수로 ERC 의 시간과 논리를 설정할 수 있습니다. 또한 , ERC 신호의 펄스 폭을 설정 할 수 있습니다 .

# \_8158\_set\_erc\_out:

이 함수는 ERC 신호를 수동으로 출력합니다 .

# \_8158\_clr\_erc:

이 함수는 ERC 신호 출력이 특정 레벨 타입 출력으로 정해진경우 출력을 리셋하는데 사용됩니다 .

# \_8158\_set\_sd:

기계 시스템에서의 SD신호 입력 동작 모드 , latch 제어 , 활성논리 설정 . 사용자는 \_8158\_enable\_sd 함수로 활성화할 것인지 선택할 수 있으며 기본적으로 비활성화 되어 있습니다 .

# \_8158\_enable\_sd:

SD 신호 입력 활성화 . 기본적으로는 비활성화 되어 있습니다 .

\_8158\_set\_limit\_logic:

EL 논리 , normal open 또는 normal closed 설정 .

\_8158\_set\_limit\_mode:

EL 신호의 반응 모드 설정 .

\_8158\_get\_io\_status:

모든 축에 대한 입 / 출력 위상 불러옴 . 각 비트의 정의는 다음과 같습니다 .

<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>양의 Limit 스위치</td></tr><tr><td>3</td><td>-EL</td><td>음의 Limit 스위치</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>Latch 신호 입력</td></tr><tr><td>12</td><td>SD</td><td>Slow Down 신호 입력</td></tr><tr><td>13</td><td>INP</td><td>In-Position 신호 입력</td></tr><tr><td>14</td><td>SVON</td><td>서보 -ON 출력 위상</td></tr></table>

@ 문법

C/C++(Windows 2000/XP)

```txt
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);
```

```c
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)
```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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 신호의 ON-OFF 상태

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>ON</td></tr><tr><td>1</td><td>OFF</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>활성화</td></tr></table>

clr\_mode: CLR 입력 클리어 모드 지정

clr\_mode = 0 , 하강 엣지에서 클리어 ( 기본값)

clr\_mode = 1 , 상승 엣지에서 클리어

clr\_mode = 2 , LOW 레벨에서 클리어

clr\_mode = 3 , HIGH 레벨에서 클리어

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: ALARM 신호에 대한 활성 논리 설정

<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 ms</td></tr><tr><td>1</td><td>102 ms</td></tr><tr><td>2</td><td>409 ms</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>ERCEL, ALM 또는 EMG 입력으로 인해 정지하였을경우 ERC 출력</td></tr><tr><td>2</td><td>홈 리턴 완료하였을 시 ERC 출력</td></tr><tr><td>3</td><td>위의 두 상황 모두 ERC 출력</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 신호에 대한 latch 제어 설정

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>latch 안 함</td></tr><tr><td>1</td><td>latch</td></tr></table>

sd\_mode: SD 신호의 반응 모드 설정

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>단지 slow down</td></tr><tr><td>1</td><td>slow down 후 정지</td></tr></table>

enable: 고속 피드를 위한 ramping-down 지점 설정

Logic: PEL/MEL 논리 설정 .

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>Normal low(normal open)</td></tr><tr><td>1</td><td>Normal high(normal close)</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: 입 / 출력 위상 . 6.12 의 함수 설명을 참고하십시오 .

# 6.13 인터럽트 제어

# @ 명칭

\_8158\_int\_control – INT 서비스 활성화 / 비활성화

8158\_set\_motion\_int\_factor – 모션 관련 인터럽트의 요소를 설정

\_8158\_wait\_error\_interrupt – 에러 관련 인터럽트를 대기

\_8158\_wait\_motion\_interrupt – 모션 관련 인터럽트를 대기

# @ 설명

\_8158\_int\_control:

이 함수는 주 PC로 윈도우 인터럽트 이벤트를 활성화하는데 사용됩니다 .

\_8158\_set\_motion\_int\_factor:

이 함수는 사용자가 이벤트 int 를 시작하는 모션관련 요소를선택하는 것을 가능하게 합니다 . \_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)
```c
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)
```c
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 카드의 인덱스를 지정. 카드 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>활성화</td></tr></table>

AxisNo: 목표 축의 축 번호 .

<table><tr><td>카드 id</td><td>물리적 축</td><td>축번호</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>명령 pre-register 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>+ Soft limit 또는 콤퍼레이터 1 켜짐</td></tr><tr><td>9</td><td>-Soft limit 또는 콤퍼레이터 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 입력에 의해 카운터 latch</td></tr><tr><td>15</td><td>ORG 입력에 의해 카운터 latch</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: 밀리초 단위의 time-out 간격 지정 . 만약TimeOut\_ms 가 영 (0) 이라면 함수는 지정된 대상의 상태를 테스트하고 즉시 복귀할 것이며 TimeOut\_ms 가 -1 이라면 함수의time-out 간격은 절대 흐르지 않습니다 ( 무한 )

IntFactorBitNo: INT 요소의 비트 번호 지정 .

예를 들어 . IntFactorBitNo = 4, 는 “ 가속 시작 ” 인터럽트의요소를 대기 중인 것을 의미합니다 .

# 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 일 경우 위치값은 두 배가 됩니다 . 피드백 카운터의 소스는 외부의 EA/EB 또는 PCI-8158 내부 펄스로 출력되는 \_8158\_set\_feedback\_src() 함수로 선택 가능합니다 .

# \_8158\_set\_position:

이 함수는 피드백 위치 카운터를 지정된 값으로 변경하는데 사용됩니다. 값은 이동 비율에 의해 처리되도록 설정될 것이며 이동비율이 0.5 일 경우 설정값은 주어진 값의 두 배가 될것 입니다 .

# \_8158\_get\_command:

이 함수는 명령 위치 카운터의 값을 읽는데 사용되며 명령 위치카운터의 소스는 PCI-8158 의 펄스 출력입니다 .

# \_8158\_set\_command:

이 함수는 명령 위치 카운터의 값을 변경하는데 사용됩니다 .

# \_8158\_get\_error\_counter:

이 함수는 위치 에러 카운터의 값을 읽는데 사용됩니다 .

# \_8158\_reset\_error\_counter:

이 함수는 위치 에러 카운터를 클리어하는데 사용됩니다 .

# \_8158\_get\_general\_counter:

이 함수는 일반적 카운터의 값을 읽는데 사용됩니다 .

# \_8158\_set\_general\_counter:

이 함수는 카운팅 소스를 설정하고 일반적 카운터의 값을 변경하는데 사용됩니다 . ( 펄스 입력은 소스의 기본 값입니다 .)

# \_8158\_get\_target\_pos:

이 함수는 목표 위치 리코더의 값을 읽는데 사용되며 목표 위치리코더는 PCI-8158 소프트웨어 드라이버에 의해 유지됩니다 .이는 현재의 운영 중인 모션에 대한 정착 위치를 기록합니다 .

# \_8158\_reset\_target\_pos:

이 함수는 목표 위치 리코더에 대한 새로운 값을 설정하는데 사용됩니다. 이 함수의 호출은 홈 리턴이 완료되었거나 새로운 피드백 카운터 값이 \_8158\_set\_position() 함수에 의해 설정되었을 때 필요합니다 .

\_8158\_get\_res\_distance:

이 함수는 잔여 거리 리코더의 값을 읽는데 사용되며 목표 위치리코더는 PCI-8158 소프트웨어 드라이버에 의해 유지됩니다 .이는 현재의 운영 중인 모션에 대한 정착 위치를 기록합니다 .

\_8158\_set\_res\_distance:

이 함수는 잔여 거리 카운터의 값을 변경하는데 사용됩니다 .

@ 문법
```c
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)
```txt
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
```

```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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>시스템 클럭 ÷ 2</td></tr></table>

CntValue, \*CntValue: 카운터 값

TargetPos, \*TargetPos: 목표 위치 리코더 값 ,

범위 : -134217728-134217727

ResDistance, \*ResDistance: 잔여 거리

# 6.15 위치 비교 및 latch

# @ 명칭

\_8158\_set\_trigger\_logic – CMP 신호 논리 설정
\_8158\_set\_trigger\_comparator – 트리거 콤퍼레이터 설정
\_8158\_set\_error\_comparator – 에러 콤퍼레이터 설정
\_8158\_set\_general\_comparator – 일반적 콤퍼레이터 설정
\_8158\_set\_latch\_source – 카운터를 위한 latch 타이밍 설정
\_8158\_set\_ltc\_logic – LTC 신호의 논리 설정
\_8158\_get\_latch\_data – latch 데이터 불러옴

# @ 설명

\_8158\_set\_trigger\_logic:

이 함수는 단일 CMP 의 논리를 설정하는데 사용됩니다 .

\_8158\_set\_error\_comparator:

이 함수는 비교방법과 에러 콤퍼레이터의 값을 설정하는데 사용됩니다 . 위치 에러 카운터의 값이 비교 값에 도달했을 경우8158 은 주 PC 로 인터럽트를 발생합니다 . 6.14 의 “ 인터럽트제어 ” 부분을 참고하십시오 .

\_8158\_set\_general\_comparator:

이 함수는 비교 소스 카운터 , 비교 방법 , 일반적 콤퍼레이터의값을 설정하는데 사용됩니다 . 비교 조건이 충족되었을 경우 4가지 반응 중 하나가 수행될 것입니다 . 자세한 설정은 인수 설명을 참고하십시오 .

\_8158\_set\_trigger\_comparator:

이 함수는 비교 소스 카운터 , 비교 방법 , 트리거 콤퍼레이터의값을 설정하는데 사용됩니다 . 비교 소스 카운터의 값이 비교값에 도달하였을 경우 8158 은 CMP 를 통해 펄스를 발생하고 인터럽트 (event\_int\_status, bit 12) 또한 주 PC 로 전송될 것입니다 .

8158\_set\_latch\_source:

본 기계는 4 가지의 latch 트리거링 소스가 있으며 이 함수를 사용하여 사용자는 카운터의 데이터로 latch 하기 위한 이벤트 소스를 선택할 수 있습니다 .

8158\_set\_ltc\_logic:

이 함수는 latch 입력의 논리를 설정하는데 사용됩니다 .

8158\_get\_latch\_data:

latch 신호가 도달한 후에 이 함수는 카운터의 latch 된 값을 읽는데 사용됩니다 .

@ 문법
C/C++(Windows 2000/XP)
```c
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)
```txt
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
```

```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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>데이터 = 소스 카운터(오직 Count up)</td></tr><tr><td>3</td><td>데이터 = 소스 카운터(오직 Count down)</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: latch 할 카운터 지정

<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: Latch 데이터 ( 위치 )

# 6.16 연속적 모션

# @ 명칭

\_8158\_set\_continuous\_move – 절대 모션을 위한 연속적 모션 활성화

\_8158\_check\_continuous\_buffer – 버퍼가 비어있는지 확인

\_8158\_dwell\_move – dwell 동작 설정

# @ 설명

\_8158\_set\_continuous\_move:

이 함수는 연속적 모션 명령의 일련의 과정 전후에 필요합니다.

\_8158\_check\_continuous\_buffer:

이 함수는 명령 pre-register( 버퍼 ) 가 비어있는지 확인하는데사용됩니다 . 명령 pre-register( 버퍼 ) 가 비어있다면 사용자는 다음 모션 명령을 입력할 수 있습니다 . 그렇지 않으면 새로운 명령은 두 번째 명령 pre-register의 이전 명령에 덮어 쓰여지게 될 것입니다 . 만약 복귀 코드가 1 이라면 버퍼는 가득 차있는 것이고 복귀 코드가 0 이라면 버퍼는 가득 차 있지 않은 것입니다 .

\_8158\_dwell\_move:

이 함수는 dwell 동작을 시작하는데 사용되고 이는 동작이 지정된 시간에 대하여 실제 동작을 하지 않는 것을 의미합니다 .

예시 :

```c
_8158_set_continuous_move(2, 1); // 연속 운동 시작
_8158_start_tr_move(2, 20000.0, 10.0, 10000.0, 0.1, 0.1);
_8158_dwell_move(2, 2000); //2초간dwell 동작 시작
_8158_start_sr_move(2, 20000.0, 10.0, 10000.0, 0.1, 0.1, 0, 0);
_8158_set_continuous_move(2, 0); //연속 운동 정지
```

# @ 문법

```c
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)

```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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) 단위의 dwell 동작 시간 .

# 6.17 다축의 동시 동작

# @ 명칭

```txt
_8158_set_tr_move_all - 다축 동시 동작 설치
_8158_set_ta_move_all - 다축 동시 동작 설치
_8158_set_sr_move_all - 다축 동시 동작 설치
_8158_set_sa_move_all - 다축 동시 동작 설치
_8158_start_move_all - 다축 trapezoidal 프로파일 모션 시작
_8158_stop_move_all - 다축 모션 동시 정지
```

# @ 설명

이 함수는 다른 카드라 할지라도 여러 축을 동시에 동작하는 것과관련된 함수입니다 . 동시 다축 동작은 지정된 축이 동시에 시작하거나 정지하는 것을 의미하며 축은 파라미터 “AxisArray,” 에 의해 지정되어 움직이고 축의 수는 \_8158\_set\_tr\_move\_all() 의 파라미터 “TotalAxes” 에 의해 정의됩니다 .

\_8158\_set\_xx\_move\_all() 가 정확히 설치된 경우 , 함수\_8158\_start\_move\_all()은 모든 지정된 축을 trapezoidal 상대 운동 시키며 \_8158\_stop\_move\_all() 으로 정지시킬 수 있습니다 .두 함수는 모든 지정된 축을 동시에 시작 / 정지할 수 있습니다 . 두함수가 필요한 경우 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};
```

```c
_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)
```c
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)
```txt
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
```

```txt
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: PPS 단위의 시작 속도 배열

\*MaxVelA: PPS 단위의 최대 속도 배열

\*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 개의 디지털 입력 채널을 가지고 있습니다 . 이함수로 사용자는 어떠한 지정된 DI 채널로 여러 입력 신호 중하나를 설정할 수 있으며 입력 신호는 LTCn, SDn, PCSn,CLRn, EMG( 지표어와 축 인덱스 ) 를 포함합니다 .

# @ 문법

C/C++(Windows 2000/XP)
```txt
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 카드 인덱스 지정 . 카드 ID 는 DIP 스위치(SW1) 또는 슬롯의 순서로 결정됩니다 . \_8158\_initial() 을 참고하십시오 .

DoValue, \*DoValue: 디지털 출력 값 . 비트 0-7: D\_out0-7.

\*DiValue: 디지털 입력 값 , 비트 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(active low)</td></tr><tr><td>2</td><td>SD(active low)</td></tr><tr><td>3</td><td>PCS(active low)</td></tr><tr><td>4</td><td>CLR(active low)</td></tr><tr><td>5</td><td>EMG(active low)</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>

# 6.19 Soft Limit

# @ 명칭

\_8158\_disable\_soft\_limit – soft limit 기능 비활성화

\_8158\_enable\_soft\_limit – soft limit 기능 활성화

\_8158\_set\_soft\_limit – soft limit 설정

# @ 설명

\_8158\_disable\_soft\_limit:

이 함수는 soft limit 기능을 비활성화하는데 사용됩니다 .

\_8158\_enable\_soft\_limit:

이 함수는 soft limit 기능을 활성화하는 데 사용됩니다. 활성화된 후 soft limit 동작은 물리적 한계와 정확히 같아질 것입니다

\_8158\_set\_soft\_limit:

이 함수는 soft limit 값을 설정하는데 사용됩니다 .

# @ 문법

C/C++(Windows 2000/XP)

```c
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)

```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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: soft limit 의 반응 방법

<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: Soft limit 값 , 양의 방향

MinusLimit: Soft limit 값 , 음의 방향

# 6.20 Backlash 보정 / 진동 억제

# @ 명칭

\_8158\_backlash\_comp – 보정을 위한 backlash 조정 펄스 설정

\_8158\_suppress\_vibration – 진동 억제를 위한 유휴 펄스 카운트 설정

\_8158\_set\_fa\_speed – FA 속도 설정

# @ 설명

\_8158\_backlash\_comp:

방향이 변할 때 마다 8158 은 명령이 전송되기 전 backlash 조정 펄스를 출력합니다 . 이 함수는 조정 펄스의 수를 설정하는데 사용됩니다 .

\_8158\_suppress\_vibration:

이 함수는 명령 운동의 완료 직후 양의 방향에 대한 단일 펄스와 음의 방향에 대한 단일 펄스의 출력으로 인한 기계 시스템의진동 억제를 위하여 사용됩니다 .

\_8158\_set\_fa\_speed:

이 함수는 backlash 보정 또는 slip 보정에 대한 낮은 속도를지정하는 데 사용됩니다 . 또한 , 홈 리턴 동작에 대한 반대의 낮은 속도에도 사용됩니다 .

# @ 문법

```txt
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)

```txt
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>카드 id</td><td>물리적 축</td><td>축번호</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 비트

Mode:

<table><tr><td>값</td><td>의미</td></tr><tr><td>0</td><td>꺼짐</td></tr><tr><td>1</td><td>backlash 보정 활성화</td></tr><tr><td>2</td><td>Slip 보정</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 – 상대적인 trapezoidal 속도프로파일을 불러옴

\_8158\_get\_ta\_move\_profile – 절대적인 trapezoidal 속도 프로파일을 불러옴

\_8158\_get\_sr\_move\_profile – 상대적인 S- 커브 속도 프로파일을 불러옴

\_8158\_get\_sa\_move\_profile – 절대적인 S- 커브 속도 프로파일을 불러옴

# @ 설명

\_8158\_get\_tr\_move\_profile:

이 함수는 상대적인 trapezoidal 속도 프로파일을 불러오는데사용됩니다. 이 함수로 사용자는 동작 전 실제 속도 프로파일을얻을 수 있습니다 .

\_8158\_get\_ta\_move\_profile:

이 함수는 절대적인 trapezoidal 속도 프로파일을 불러옵니다 .이 함수를 통해 사용자는 동작 전 실제 속도 프로파일을 얻을수 있습니다 .

\_8158\_get\_sr\_move\_profile:

이 함수는 상대적인 S- 커브 속도 프로파일을 불러오는데 사용됩니다 . 이 함수로 사용자는 동작 전 실제 속도 프로파일을 얻을 수 있습니다 .

\_8158\_get\_sa\_move\_profile:

이 함수는 절대적인 S- 커브 속도 프로파일을 불러오는데 사용됩니다 . 이 함수로 사용자는 동작 전 실제 속도 프로파일을 얻을 수 있습니다 .

# @ 문법

C/C++(Windows 2000/XP)
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>카드 id</td><td>물리적 축</td><td>축 번호</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- 커브 범위 ( 단위 : 펄스 / 초 )

참고 : SVacc = 0, 은 순수 S- 커브 . 자세한 내용은 4.2.4 를 참고 하십시오 .

SVdec: 감속 시 S- 커브 범위 ( 단위 : 펄스 / 초 )

참고 : SVdec = 0, 은 순수 S- 커브 . 자세한 내용은 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>에러 동작 시스템 버전</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>에러 slow down 지점</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>에러 dwell 시간</td></tr><tr><td>-10327</td><td>에러 dwell 거리</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 an accurate and concise description of the flowchart:\n\n**Labeled Blocks:**\n*   **Mitsubishi J3A**: Located at the top left, showing a servo drive unit.\n*   **SCSI_VHDCI 100p 2M**: Located at the top center, showing a coiled cable.\n*   **PCI-8158**: Located at the top right, showing a PCI expansion card.\n*   **DIN-814M-J3A**: Located in the center, showing a DIN-rail mount adapter for the J3A drive.\n*   **IPC**: Located at the bottom right, showing an industrial PC chassis.\n*   **MEL ORG PEL**: Located at the bottom center, indicating status lights (Red, Green, Red) representing Motor End Limit, Origin, and Payload End Limit.\n\n**Connections:**\n*   **Red Arrows (From SCSI Cable):** Three red arrows originate from the 'SCSI_VHDCI 100p 2M' block pointing to:\n    1.  'PCI-8158'\n    2.  'Mitsubishi J3A'\n    3.  'DIN-814M-J3A'\n*   **Red Arrow (Downward):** A red arrow points downward from 'PCI-8158' to 'IPC'.\n*   **Dashed Arrow (Upward):** A dashed black arrow points upward from the 'MEL ORG PEL' indicators toward the linear motion stage shown at the bottom left.](.pci-8158-korean-50-11139-2b00-200-en/de18395b65a977c21156fc0ed68aad7dc5253e914d083726b911acb42af83918.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 를 선택해 주셔서 감사합니다 . 사용자의 권리를 이해하고 모든 사후 서비스를 누리기 위하여 다음의 내용을 주의 깊게 읽어 주시기 바랍니다 .

1. ADLINK 의 제품을 사용하시기 전에 반드시 사용자 매뉴얼을 읽어 보시고 지침을 정확히 따라주십시오 . 수리를 위하여 손상된 제품을 보내실 때에는 RMA 신청서를 함께 보내주시기 바라며 신청서는 다음의 웹 사이트에서 다운받으실수 있습니다 : http://rma.adlinktech.com/policy/.

2. 모든 ADLINK 제품은 2 년간의 보증수리 서비스가 제공되며 중국에서 구매하신 제품에 한해 1 년간의 보증기간이 제공됩니다 .

 보증기간은 ADLINK 의 공장에서 출고되는 날부터 시작됩니다 .

 ADLINK 가 제조하지 않은 주변 장치 및 다른 공급 업체제품은 원 제조업자의 보증이 적용됩니다 .

저장 장치를 포함하는 제품들 (하드 드라이브, 플래시 카드 등 ) 의 경우 수리하시기 위해 제품을 보내기 전에 사용자의 데이터를 백업하여 주십시오 . ADLINK 는 데이터의 어떠한 손실에 대해서도 책임을 지지 않습니다 .

1 우리의 시스템과 함께 올바른 라이센스의 소프트웨어를사용하는지 확인하여 주십시오 . ADLINK 는 불법 복제소프트웨어의 사용을 용납하지 않으며 그러한 소프트웨어를 사용하여 서비스하지 않습니다 . ADLINK 는 사용자가 설치한 비면허 소프트웨어와 함께 선적된 제품에대해 법적 책임을 지지 않습니다 .

일반 수리의 경우 주변 장치를 포함하지 마십시오 . 주변장치의 포함이 필요하신 경우 RMA 신청 & 확인 양식에사용자가 보내는 아이템을 확실히 명시하여 주십시오 .ADLINK 는 RMA 신청 & 확인 양식에 명시되지 않은 아이템에 대한 책임을 지지 않습니다 .

3. ADLINK 의 수리 서비스에서 이하의 상황에서는 본사의보증이 적용되지 않습니다 :

 사용자 설명서를 따르지 않아 발생하는 손상 .
 제품 운송 중 사용자의 부품에 대한 부주의로 인하여 발생하는 손상 .
화재, 지진, 홍수, 번개, 환경 오염 등의 천재지변 및/또는잘못된 전압 변압기의 사용으로 인해 발생하는 손상 .
 적합하지 않은 보관 환경으로 인하여 발생하는 손상 (i.e.고온 , 높은 습도 , 휘발성 화학물질 ).
 구매자 / 사용자에 의한 배터리 교체 동안 또는 후에 배터리 유체의 누출로 인해 발생하는 손상 .
 공인되지 않은 ADLINK 기술자에 의해 부적절한 수리로발생하는 손상 .
제품의 일련번호가 변경 및 / 또는 손상되었을 경우 본사의 서비스를 이용할 수 없습니다 .
 이 증서는 양도하거나 연장할 수 없습니다 .
 다른 카테고리는 보증에 의해 보호되지 않습니다 .

4. 소비자는 손상된 제품을 본사 또는 영업부로 배송하기 위하여 드는 선적비용을 부담할 책임이 있습니다 .

5. 제품 수리의 품질과 속도를 보장하기 위해 RMA 신청서 양식을 본사의 웹사이트에서 다운받아 주시기 바랍니다 :http://rma.adlinktech.com/policy. RMA 양식을 첨부한 손상제품은 우선순위를 받을 수 있습니다 .

언제든지 문의사항이 있으시면 저희 FAE 직원에게 이메일을 보내주시기 바랍니다 :

service@adlinktech.com.
[🔗 Link to the original document](.pci-8158-korean-50-11139-2b00-200-en/pci-8158-korean-50-11139-2b00-200-en.pdf)
