[ otioncontrollerseries multimotioncontroller · 2005-09-23 · [otioncontrollerseries...

382
2003년 07월 15일 작성 Rockwell Samsung Automation Rockwell Samsung Automation

Upload: others

Post on 19-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

otion Controller Series

MULTI MOTION CONTROLLER

사용자 설명서 (VER 1.4)

2003년 07월 15일 작성

Rockwell Samsung AutomationRockwell Samsung Automation

Page 2: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

제1장. MMC 개요1.1 MMC 특징 1-1 page

1.2 MMC 제품군 모델코드 표기법

1.2.1 MMC Board 1-2 page

1.2.2 MMC Option Module 1-3 page

1.2.3 MMC Cable 1-3 page

1.3 MMC 사양 1-4 page

1.4 기본품목

1.4.1 FULL SIZE ISA BOARD 구성품 1-5 page

1.4.2 FULL SIZE PCI BOARD 1-6 page

1.4.3 HALF SIZE ISA BOARD 1-7 page

1.5 OPTION 품목

1.5.1 축 CABLE(JP11,JP12,JP13,JP14) 1-8 page

1.5.2 LIMIT SENSOR 모듈 1-8 page

1.5.3 I/O 출력 모듈 1-9 page

1.5.4 I/O 입력 모듈 1-9 page

1.5.5 터미널 블락 모듈 1-10 page

1.5.6 Analog 입력보드 1-10 page

1.5.7 HALF SIZE 기본 모듈 1-11 page

1.5.8 HALF SIZE 확장 모듈 1-11 page

1.5.9 I/O 확장 모듈 (MMC-CA20) 1-12 page

1.5.10 Position Compare Board 1-12 page

1.6 DIMENSION

1.6.1 MMC보드 DIMENSION 1-13 page

1.6.2 LMT,TB 모듈 DIMENSION 1-14 page

1.6.3 IN,OUT 모듈 DIMENSION 1-15 page

제2장. MMC 구조2.1 Software 구성

2.1.1 MMC 모델의 OS 지원 범위 2-1 page

2.1.2 MMC Software Package 구성 2-1 page

2.1.3 MMC Library 파일의 형식표기 2-1 page

2.1.4 Setup 파일 설치 설명 (MMC Manager for Windows) 2-2 page

2.1.5 Open Source for MMC Manager (Visual Basic) 2-2 page

2.1.6 MMC 신ㆍ구 버전 호환 2-3 page

목 차

Page 3: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2.1.7 DownLoader 기능 설명 2-3 page

2.1.8 Error Code 2-4 page

2.1.9 Parameters 저장 2-4 page

2.2 Software 요약

2.2.1 제어 Loop 2-5 page

2.2.2 Trajectory 2-5 page

2.2.3 AXIS I/O 2-5 page

2.2.4 내부 Booting 순서 2-6 page

2.2.5 MMC 보드의 내부 제어 Loop Flowchart 2-6 page

2.3 Hardware 구성 2-7 page

2.4 CONFIG.SYS 파일의 수정 (DOS용) 2-8 page

제3장. 빠른설치 방법3.1 MMC ISA 보드 설치 3-1 page

3.2 DOS 및 Windows용 빠른 설치 방법

3.2.1 Analog 입력을 받는 속도형 SERVO Drive 3-2 page

3.2.2 STEP 모타 및 위치형 Servo Drive 3-2 page

3.3 Lynx용 빠른 설치 방법

3.3.1 SERVO 모타 3-3 page

3.3.2 STEP 모타 및 위치형 Servo Drive 3-3 page

3.4 MMC PCI 보드의 설치

3.4.1 Windows 98/2000에서 설치하는 방법 3-4 page

3.4.2 Windows 98/2000에서 드라이버를 설치한 후 문제에 대처하는 방법 3-6 page

3.4.3 WindowsNT에서 설치하는 방법 3-8 page

3.4.4 WindowsNT에서 MMC Manager를 설치한 후 문제에 대처하는 방법 3-8 page

제4장. AMP(SERVO) 배선4.1 ISA AMP 콘넥터 PIN 사양 4-1 page

4.2 ISA AMP 콘넥터 PIN 설명 4-2 page

4.3 MMC ISA FULL SIZE 와 SERVO DRIVE 결선

4.3.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도 4-6 page

4.3.2 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도 4-8 page

4.3.3 MITSUBISHI MR-J2 Series Servo Drive와 배선도 4-10 page

4.3.4 PANASONIC MINAS A Series Servo Drive(콘넥터 CN I/F)와 배선도 4-12 page

4.4 PCI AMP 콘넥타 PIN 사양 4-15 page

4.5 PCI AMP 콘넥터 PIN 설명 4-16 page

4.6 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도

4.6.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도 4-20 page

4.6.2 삼성 CSD3 Servo Drive와 배선도 4-22 page

4.6.3 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도 4-24 page

Page 4: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4.6.4 MITSUBISHI MR-J2 Series Servo Drive와 배선도 4-26 page

4.6.5 PANASONIC MINAS A Series Servo Drive(콘넥터 CN I/F)와 배선도 4-28 page

4.7 OPEN Collector 타입 ENCODER 사용시 결선 및 JUMP핀 배치

4.7.1 ENCODER핀의 결선도 4-30 page

4.7.2 JUMP핀의 배치도 4-30 page

4.8 I/O SYNK,I/O COM 콘넥타 배선 4-31 page

참조 ISA 보드용 축케이블 제작 사양서 (to SAMSUNG CSDJ PLUS) 4-32 page

참조 PCI 보드용 축케이블 제작 사양서 (to SAMSUNG CSD3) 4-34 page

제5장. LIMIT,I/O,A/D 배선5.1 Limit Sensor 입력 콘넥타 Pin 사양 (JP8) 5-1 page

5.2 사용자 I/O 출력 콘넥타 Pin 사양 (JP9) 5-2 page

5.3 사용자 I/O 입력 콘넥타 Pin 사양 (JP10) 5-4 page

5.4 ADC 입력 콘넥타 Pin 사양 (JP5)

5.4.1 ADC 입력 콘넥타 Pin 사양 (JP5) 5-6 page

5.4.2 MMC-AD11 사양 5-7 page

5.5 MMC-LIMIT OPTION 모듈

5.5.1 LIMIT모듈 MMCLM11모델 5-7 page

5.5.2 LIMIT모듈 MMCLM10모델 5-8 page

5.6 MMC-OUTPUT OPTION 모듈

5.6.1 OUTPUT모듈 회로도 5-9 page

5.6.2 OUTPUT모듈 Terminal Block 핀사양 5-9 page

5.7 MMC-INPUT OPTION 모듈

5.7.1 INPUT모듈 회로도 5-10 page

5.7.2 INPUT모듈 Terminal Block 핀사양 5-10 page

제6장. DOS용 SETUP 프로그램6.1 개요

6.1.1 SETUP 프로그램의 설치 6-1 page

6.1.2 Hot Keys 6-2 page

6.1.3 Buttons 6-2 page

6.1.4 Parameters 저장 6-2 page

6.2 SETUP 화면 6-3 page

6.3 DPRAM Addr Set메뉴

6.3.1 SAVE 6-4 page

6.3.2 EXIT 6-4 page

6.4 Configuration 메뉴

6.4.1 Tuning Parameters 6-5 page

6.4.1.1 비례게인(Proportional Gain) 6-6 page

6.4.1.2 적분게인(Integral Gain) 6-7 page

Page 5: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6.4.1.3 미분게인(Derivative Gain) 6-7 page

6.4.1.4 Feedforward 게인 6-7 page

6.4.1.5 적분 최대치(I LIMIT) 6-7 page

6.4.2 Axis Configuration 6-7 page

6.4.2.1 SERVO,STEPPER,MICRO 6-8 page

6.4.2.2 OPEN_LOOP or CLOSED_LOOP 6-8 page

6.4.2.3 CONTROL 6-8 page

6.4.2.4 VOLTAGE 6-8 page

6.4.2.5 FEEDBACK 6-9 page

6.4.2.6 Pos I Mode , Vel I Mode 6-9 page

6.4.2.7 STEP Mode 6-9 page

6.4.3 Limit Switch Configuration 6-10 page

6.4.4 Software Limits Configuration 6-11 page

6.4.5 UESR I/O Configuration 6-12 page

6.5 STATUS 6-13 page

6.6 MOTION 메뉴 6-14 page

6.6.1 AXIS_I/O 6-16 page

6.6.2 GRAPHICS 6-17 page

제7장. WINDOWS용 SETUP 프로그램7.1 개요

7.1.1 Win '98, ME, '2000, NT용 SETUP 프로그램의 설치 7-1 page

7.1.2 SETUP 프로그램의 실행 7-2 page

7.2 주(Main) 화면

7.2.1 Motion 메뉴 7-3 page

7.2.2 Status 메뉴 7-5 page

7.2.3 Graphics 메뉴 7-6 page

7.3 Setup 메인 메뉴

7.3.1 DPRAM Setup 7-7 page

7.3.2 TUNING PARAMETERS SETUP 7-8 page

7.3.3 Software Limits Configuration 7-10 page

7.3.4 AXIS CONFIGURATION 7-11 page

7.3.5 AXIS I/O 7-14 page

7.3.6 LIMIT SWITCH CONFIGURATION 7-15 page

7.3.7 USER I/O CONFIGURATION 7-16 page

7.4 View 메인 메뉴 7-17 page

7.5 Window 메인 메뉴 7-17 page

7.6 HELP - About MMCWin 메뉴 7-17 page

7.7 Sync Control 메뉴 7-19 page

7.8 H/W Config

7.8.1 Down Load 메뉴 7-20 page

Page 6: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7.8.2 Control Time 7-21 page

7.8.3 Parameter Save/Load 7-22 page

제8장. 시스템 검사8.1 Closed-Loop 시스템 시험

8.1.1 스텝1) Encoder 배선 및 연결 8-1 page

8.1.2 스텝2) Encoder 동작 시험 8-1 page

8.1.3 스텝3) 모타 Power 콘넥타의 배선 및 연결 8-2 page

8.1.4 스텝4) 모타 / Encoder의 상(phase) 8-2 page

8.1.5 스텝5) 모타 Gain Tuning 8-2 page

8.1.6 스텝6) 시스템 Gain Tuning 8-3 page

8.2 Open-Loop Stepper 시험

8.2.1 스텝1) Stepper의 연결 8-4 page

8.2.2 스텝2) 위치제어 여부 시험 8-4 page

제9장. Gain Tuning9.1 Closed_Loop 시스템의 Tuning 9-1 page

9.2 Closed_Loop Servo의 Tuning 9-2 page

9.3 Closed_Loop Stepper Tuning 9-4 page

제10장. MMC-BDPV42 사용설명서10.1 MMC-BDPV42 개요

10.1.1 MMC-BDPV42 사양 10-1 page

10.1.2 기본 품목 10-2 page

10.1.3 OPTION 품목 10-2 page

10.2 MMC-HM10모델 핀 사양 10-3 page

10.3 MMC-HM20모델 핀 사양 10-4 page

10.4 100핀 콘넥타 핀 사양 10-5 page

10.5 MMC-BDPV42보드 설치 10-6 page

10.6 초기화 함수 10-7 page

10.7 I/O 설정 함수 10-8 page

제11장. 함수 및 DEFINE문 목록11.1 함수 11-1 page

11.2 Define 문 11-9 page

Page 7: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

제12장. 함수 사용설명서12.1 함수 사용설명서

12.2 함수 INDEX 12-1 page

제13장. SAMPLE PROGRAM-.Step 모타 제어 설정 프로그램(1) 13-1 page

-.Step 모타 제어 설정 프로그램(2) 13-2 page

-.Micro Stepper 제어 설정 프로그램 13-3 page

-.Encoder 타입 설정 프로그램 13-4 page

-.Closed Loop 제어시 PID 게인 설정 프로그램 13-6 page

-.축의 상태 Monitor & 초기화 프로그램 13-8 page

-.현재 위치 Monitor 프로그램 13-11page

-.실제 속도 Monitor 프로그램 13-12page

-.AD Converter 12bit 데이타를 읽는 프로그램 13-13page

-.원호 Coordinated 동작 프로그램 13-14page

-.직선 Coordinated 동작 프로그램 13-15page

-.Coordinated 동작 프로그램 13-16page

-.EVENT 설정 프로그램 13-18page

-.User IO Output 출력 프로그램 13-20page

-.IO 입력 비트 0 으로 인터럽트를 발생 프로그램 13-22page

-.Electronic Gearing 설정 프로그램 13-24page

-.홈센서 이동 프로그램 13-25page

-.Postive/Negative Limit의 Center 점으로 이동 프로그램 13-27page

-.Z상 Index Pulse를 이용한 Homing 13-29page

-.다축 제어 프로그램 13-31page

-.0축과 1축의 동기제어 프로그램 13-33page

Page 8: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MEMO

Page 9: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MEMO

Page 10: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

.1 MMC 특징 1-1 page

1.2 MMC 제품군 모델코드 표기법

1.2.1 MMC Board 1-2 page

1.2.2 MMC Option Module 1-3 page

1.2.3 MMC Cable 1-3 page

1.3 MMC 사양 1-4 page

1.4 기본품목

1.4.1 FULL SIZE ISA BOARD 구성품 1-5 page

1.4.2 FULL SIZE PCI BOARD 1-6 page

1.4.3 HALF SIZE ISA BOARD 1-7 page

1.5 OPTION 품목

1.5.1 축 CABLE(JP11,JP12,JP13,JP14) 1-8 page

1.5.2 LIMIT SENSOR 모듈 1-8 page

1.5.3 I/O 출력 모듈 1-9 page

1.5.4 I/O 입력 모듈 1-9 page

1.5.5 터미널 블락 모듈 1-10 page

1.5.6 Analog 입력보드 1-10 page

1.5.7 HALF SIZE 기본 모듈 1-11 page

1.5.8 HALF SIZE 확장 모듈 1-11 page

1.5.9 I/O 확장 모듈 (MMC-CA20) 1-12 page

1.5.10 Position Compare Board 1-12 page

1.6 DIMENSION

1.6.1 MMC보드 DIMENSION 1-13 page

1.6.2 LMT,TB 모듈 DIMENSION 1-14 page

1.6.3 IN,OUT 모듈 DIMENSION 1-15 page

제 1 장

MMC 개요

Page 11: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 1

1.1 MMC 특징

최근의 산업용 FA제어기는 종전의 전용기 형태에서 범용제어기 형태로 바뀌어 가고 있다.

이 같은 추세에 맞춰 Motion 제어기 또한 PC-Base에 Open-Architecture 구조로 가는 추세이다.

또한 PC-Base slot형태의 Open-Architecture 구조로 설계되어, FA-Computer 및 일반 PC에도

장착하여 Motor의 종류에 관계없이 Motion 제어가 가능하도록 설계 되어 있다

MMC의 특징을 간략히 소개하면 아래와 같다.

▷ TMS320C3X DSP 를 Processor로 사용하여 고정도의 Motion 제어가 가능하다.

▷ Host(Computer)와 MMC 보드간에 원활한 통신을 위해 Dual Port RAM을 이용함으로서 고속통신이

가능하게끔 설계되어 있다.

▷ MMC Software Package는 다양한 Motion 함수 및 I/O 함수를 C-library 형태로 제공함으로서

사용자가 원하는 다양한 기능 및 동작이 가능하게 프로그램을 할 수 있다.

또한 MMC Software Package는 DOS, Windows3.1, Windows 95/98, Windows 2000, Windows NT,

Windows XP 등의 O/S를 지원한다.

* O/S 지원범위에 관하여는 본 메뉴얼 2장 2.1 Software 구성을 참조하여 주십시오.

▷ DC / AC Servo, Open/Closed Loop, Stepper등 다양한 종류의 Motor를 제어할 수 있다.

▷ PTP, CP, ARC, SPLine 등 다양한 Motion을 제공하며, 한 대의 제어기에 최대 8 장의 MMC 보드를

장착 제어가 가능함으로서 최대 64 축까지 제어 할 수 있다.

또한 GUI화면인 SETUP 프로그램을 제공하여 사용자가 손쉽게 Hardware의 시험이나 제어시스템의

Tuning작업을 할 수 있게 하였다

▷ 4채널의 ADC(Analog to Digital Converter)를 사용하여 Analog입력을 Feedback받아 제어를 할 수

있다. (Option Module : MMC-AD11)

▷ User I/O 각 32 점 , Limit Sensor 입력 24 점, AMP Enable/Disable, AMP fault Reset을 비롯한

System I/O 32점 등 풍부한 I/O Point을 제공한다.

▷ 두 축의 동기제어(Synchronous Control) 기능 및 Vision에 의한 위치 보정 기능을 제공한다.

▷ 충돌 방지 기능이 있어 임의의 두 축에 대한 설정으로 충돌을 미연에 방지 할 수 있다.

▷ Fresh Memory 를 채용하여 설정된 내용이 Board에 Backup 가능하다.

▷ Sampling Time을 임의로 조정 할 수가 있어 목적에 맞는 제어를 구현 할 수 있다.

MMC특징

Page 12: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 2

1.2 MMC 제품군 모델코드 표기법

1.2.1 MMC Board

MMC - BD PV 4 1 I N A

MMC-BDPV81PNA 는 2001년형, Normal, PCI, Full size, 8축, 위치형/속도형 제어

임을 알 수가 있다.

타입별

1: FullSize

2: HalfSize

MMC Board 모델코드

Multi

Motion

Controller

Board

위치,속도

PV : 위치,속도

PO : 위치

OV : 속도

제어축수

2: 2축제어

4: 4축제어

6: 6축제어

8: 8축제어

BUS Type

P: PCI BUS

I: ISA BUS

C: CPCI

Special사양

N:없음

D:DeviceNet

S:SerialCon

개발년도

(Ver)

A: 2001

Page 13: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 3

1.2.2 MMC Option Module

MMC - HM 1 0

1.2.3 MMC Cable

MMC - CA AX 2 H 2 2 02

Multi Motion

Controller

용도별

AX : SERVO용

IO : I/O용

PW : 전원용

SE : 통신용

결선 타입

1 : 일체형

2 : 내부형

3 : 외부형

4 : 모듈형

BUS Type

L : 구형

H : ISA

P : PCI

C : 공통

위치,속도

0 : 위치형

1 : 속도형

2 : 일체형

N : 무관

축수

1 : 1축용

2 : 2축용

N : 무관

CABLE 길이

B1 : 1.5 M

02 : 2 M

B2 : 2.5 M

03 : 3 M

B3 : 3.5 M

05 : 5 M

CABLE

Multi Motion

Controller

사양별

AD : A/D INPUT 보드

IN : I/O 입력모듈

OU : I/O 출력모듈

LM : LIMIT 모듈

TB : TERMINAL BLOCK

HM : Half Size 용 모듈

CA : Cable ASS'y 모듈

PC : Position Compare

타입 구분

1 : 기본형

2 : 확장형

VERSION 구분

0 : VERSION 0

1 : VERSION 1

MMC Option Module 모델코드

Page 14: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 4

1.3 MMC 사양

취급시 주의사항

1. 1M 이상의 높이에서 낙하되었을 경우 제품의 성능을 보장할 수 없습니다.

2. 제품을 장착시나 취급시 제품의 모서리나 측면을 잡아 보드내의 부품을 직접 접촉

하는 것은 피해 주시기 바랍니다. 부득이한 경우 콘넥터 등을 잡아 전자부품이

정전기로 인하여 손상이 되는 것을 방지하여 주십시오.

3. MMC Board를 장착하는 PC의 전원도 반드시 안정된 Ground에 접지하여 주시기

바랍니다.

항 목 사 양

CPU TMS320C3X

동작방법 PTP,원호보간,직선보간,스플라인보간

INTERFACE PC/AT/산업용Computer

SAMPLING RATE 표준 4msec, 1msec ‾ 4msec 가변가능 (1msec는 4축보드만 가능)

ANALOG 출력 ±10V, @16-bit 분해능

PULSE 출력 최대주파수 = 1.5MHz, 50% Duty Cycle, 주파수단위 = 250Hz

동작 범위 32-bit, ± 2147483647

가,감속설정 0 ‾ 25000(0 ‾ 100 sec) : 표준 4msec sampling time 기준

위치 FEEDBACK 입력주파수= 6MHz(max), Digital Noise 필터

속도 PROFILES 사다리꼴, 비대칭 사다리꼴, S_Curve, 비대칭 S_Curve 가,감속

시스템 I/O 입력(축당) AMP Fault 입력, 위치결정 완료 신호

시스템 I/O 출력(축당) Amp-Enable, Amp-Fault Reset, Position-Clear

LIMIT SENSOR 입력(축당) 3개 (Positive, Negative, Home)

사용자 입,출력 TTL Level 입,출력 각 32점

ANALOG 입력 4채널 @12bit 분해능, 32 conversion rate

소비전원(최대전류 소비량) +5V≒2A, +12V≒0.5A, -12V≒0.5A, -5V≒0.3A

환경조건 0 - 50°C, 20 - 95 % RH, Non - condensing

크 기 325 X 110 mm

MMC사양

표 1.1 MMC 제품 사양

1)

註 1) PCI Board 에만 해당하는 사양입니다.

Page 15: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 5

1.4 기본 품목

기본품목은 MMC 보드 구입시 제공되는 품목으로 다음과 같습니다.

1.4.1 FULL SIZE ISA BOARD 구성품

하나. MMC 보드

상기 제품 중 하나의 보드를 구입시 아래의 품목이 제공됩니다.

둘. Software CD 1장

- DOS, WINDOWS 98/2000/NT SETUP & LIBRARY S/W

- 예제 프로그램 / 예제 프로그램 Source

- MMC 메뉴얼(Acrobat 파일)

- Acrobat Reader 설치 프로그램

셋. 24V용 4핀 케이블

넷. MMC 사용자 설명서

위 품목 중 일부라도 누락된 경우에는 제품을 구입하신 곳에 문의하여 주시기 바랍니다.

번호 제어축수 모델명 특징

14축 제어용

MMC-BDPV41INA 4 축 MMC 보드, ISA BUS, FULL-SIZE,위치/속도 제어용

2 MMC-BDPO41INA 4 축 MMC 보드, ISA BUS, FULL-SIZE,위치제어 전용

38축 제어용

MMC-BDPV81INA 8 축 MMC 보드, ISA BUS, FULL-SIZE,위치/속도 제어용

4 MMC-BDPO81INA 8 축 MMC 보드, ISA BUS, FULL-SIZE,위치제어 전용

구입시 구성품(FULL SIZE ISA)

그림 1.1 MMC ISA FULL SIZE

표 1.2 MMC ISA FULL SIZE 보드 종류

Page 16: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 6

1.4.2 FULL SIZE PCI BOARD

하나. MMC 보드

상기 제품 중 하나의 보드를 구입시 아래의 품목이 제공됩니다.

둘. Software CD 1장

- DOS, WINDOWS 98/2000/NT SETUP & LIBRARY S/W

- 예제 프로그램 / 예제 프로그램 Source

- MMC 메뉴얼(Acrobat 파일)

- Acrobat Reader 설치 프로그램

셋. 24V용 4핀 케이블

넷. MMC 사용자 설명서

위 품목 중 일부라도 누락된 경우에는 제품을 구입하신 곳에 문의하여 주시기 바랍니다.

번호 제어축수 모델명 특징

14축 제어용

MMC-BDPV41PNA 4 축 MMC 보드, PCI BUS, FULL-SIZE,위치/속도 제어용

2 MMC-BDPO41PNA 4 축 MMC 보드, PCI BUS, FULL-SIZE,위치제어 전용

38축 제어용

MMC-BDPV81PNA 8 축 MMC 보드, PCI BUS, FULL-SIZE,위치/속도 제어용

4 MMC-BDPO81PNA 8 축 MMC 보드, PCI BUS, FULL-SIZE,위치제어 전용

표 1.3 MMC PCI FULL SIZE 보드 종류

그림 1.2 MMC PCI FULL SIZE

구입시 구성품(FULL SIZE PCI)

Page 17: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 7

1.4.3 HALF SIZE ISA BOARD

하나. MMC 보드

둘. CD 1장

- DOS, WINDOWS 98/2000/NT SETUP & LIBRARY S/W

- 예제 프로그램 / 예제 프로그램 Source

- MMC 메뉴얼(Acrobat 파일)

- Acrobat Reader 설치 프로그램

셋. MMC 축 CABLE (보드와 Option Module 결선용 CABLE)

- Option module : MMC-HM10, MMC-HM20

넷. MMC 사용자 설명서

위 품목 중 일부라도 누락된 경우에는 제품을 구입하신 곳에 문의하여 주시기 바랍니다.

번호 제어축수 모델명 특징

1 4축 제어용 MMC-BDPV42INA 4 축 MMC 보드, ISA BUS, HALF-SIZE,위치/속도 제어용

표 1.4 MMC ISA HALF SIZE 보드 종류

그림 1.3 MMC ISA HALF SIZE

구입시 구성품(HALF SIZE ISA)

1)

註 1) 옵션 모듈의 자세한 사양은 본 메뉴얼 12장을 참조하여 주시기 바랍니다.

Page 18: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 8

1.5 OPTION 품목

OPTION 품목은 MMC보드 구입시에 MMC보드와는 별도로 구입하셔야 됩니다.

MMC보드만 구입시에는 아래의 품목은 제공되지 않습니다.

1.5.1 축 CABLE(JP11,JP12,JP13,JP14)

삼성 SERVO DRIVER와 결선 시 사용하는 CABLE (2축/CABLE)

1.5.2 LIMIT SENSOR 모듈

MMC보드의 JP8 40핀 콘넥타와 연결하는 모듈로서 24V 외부전원을 이용해서 작동되며

외부 SENSOR와 MMC보드간 절연을 시켜 NOISE에 강하도록 설계된 모듈입니다.

사용하시는 LIMIT SENSOR가 24V로 구동되는 타입일 경우에 MMC보드에서는 5V용 SENSOR만 구동하는

관계로 반드시 필요한 모듈입니다. 회로 및 결선 사양은 메뉴얼 5.5절을 참조하여 주십시오.

번호 CABLE 이름 길이 (mm, ±10%) 모델명 비 고

1 MMC ISA 제품용 CABLE(구형MMC용) 2000 X 2000 mm MMC-CAAX1H2202 삼성 CSDP,CSDJ Type

2 MMC ISA 제품용 CABLE 2000 X 2000 mm MMC-CAAX2H2202 삼성 CSDP,CSDJ Type

3 MMC PCI 제품용 CABLE 2000 X 2000 mm MMC-CAAX3P2203 삼성 CSDP,CSDJ Type

번호 모듈명 사양 모델명 적용제품

1 MMC LIMIT 5V,24V SENSOR 타입 사용가능,Sensor LED 부착 MMC-LM11 FULL SIZE MMC

MMC Option 품목

표 1.5 MMC CABLE 종류

표 1.6 MMC OPTION MODULE - LIMIT MODULE

그림 1.4 MMC 축 CABLE

그림 1.5 MMC LIMIT MODULE

Page 19: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 9

1.5.3 I/O 출력 모듈

MMC보드의 JP9 40핀 콘넥타와 연결하는 모듈로서 24V 외부전원을 이용해서 작동되며 외부 I/O 출력

접점과 MMC보드를 절연시켜 NOISE에 강하도록 설계된 모듈입니다.

사용하시는 I/O 가 24V로 구동되는 타입일 경우에 MMC보드에서는 5V TTL 레벨에 출력만 구동하는

관계로 반드시 필요한 모듈입니다. 회로 및 결선 사양은 메뉴얼 5.6절을 참조하여 주십시오.

1.5.4 I/O 입력 모듈

MMC보드의 JP10 40핀 콘넥타와 연결하는 모듈로서 24V 외부전원을 이용해서 작동되며 외부 I/O

입력 접점과 MMC보드를 절연시켜 NOISE에 강하도록 설계된 모듈입니다.

사용하시는 I/O 가 24V로 구동되는 타입일 경우에 MMC보드에서는 5V TTL 레벨에 입력만 구동하는

관계로 반드시 필요한 모듈입니다. 회로 및 결선 사양은 메뉴얼 5.7절을 참조하여 주십시오.

번호 모듈명 사양 모델명 적용제품

1 MMC I/O 출력 모듈 24V용 접점제어 가능, 출력 LED 부착 MMC-OU11 FULL SIZE MMC

번호 모듈명 사양 모델명 적용제품

1 MMC I/O 입력 모듈 24V용 접점제어 가능, 입력 LED 부착 MMC-IN11 FULL SIZE MMC

MMC Option 품목

표 1.7 MMC OPTION MODULE - OUTPUT MODULE

표 1.8 MMC OPTION MODULE - INPUT MODULE

그림 1.6 MMC OUTPUT MODULE

그림 1.7 MMC INPUT MODULE

Page 20: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 10

1.5.5 터미널 블락 모듈

MMC보드의 40핀 콘넥터와 1:1로 단순연결 시켜 주는 모듈로서 배선 작업을 손쉽게 할 수 있도록

설계된 모듈입니다.

1.5.6 Analog 입력보드

MMC보드의 JP3,JP4 콘넥타에 부착하여 사용 가능한 Analog 전압 입력보드입니다.

회로 및 결선 사양은 메뉴얼 5.4절을 참조하여 주십시오.

번호 모듈명 사양 모델명 적용제품

1 MMC 터미널 블락 모듈 1:1 결선용 MMC-TB11 FULL SIZE MMC

번호 모듈명 사양 모델명 적용제품

1 MMC ANALOG 입력보드 4채널,12BIT MMC-AD11 FULL SIZE MMC

MMC Option 품목

표 1.9 MMC OPTION MODULE - TB MODULE

표 1.10 MMC OPTION MODULE - ANALOG INPUT MODULE

그림 1.8 MMC TB MODULE

그림 1.9 MMC ANALOG INPUT MODULE

Page 21: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 11

1.5.7 HALF SIZE 기본 모듈

MMC HALF SIZE 보드에 적용되는 모듈입니다. SERVO DRIVE와의 INTERFACE를 원할하게 하여 주는

축 CABLE 취부 콘넥터와 STEPPING DRIVE 및 타사 서보드라이브와의 결선에 용이한 터미널 블럭이

있습니다.

HALF SIZE에 제공되는 8점 INPUT/OUTPUT 의 절연회로가 내장되어 있는 모듈입니다.

회로 및 결선 사양은 메뉴얼 5.8절을 참조하여 주십시오.

1.5.8 HALF SIZE 확장 모듈

MMC HALF SIZE 보드에 적용되는 모듈입니다. SERVO DRIVE와의 INTERFACE를 원할하게 하여 주는

축 CABLE 취부 콘넥터와 STEPPING DRIVE 및 타사 서보드라이브와의 결선에 용이한 터미널 블럭이

있습니다.

번호 모듈명 사양 모델명 적용제품

1 MMC HALF SIZE 확장 모듈 50PIN TB ,축 CABLE 결선 MMC-HM20 HALF SIZE MMC

표 1.11 MMC OPTION MODULE - HALF SIZE 기본 모듈

표 1.12 MMC OPTION MODULE - HALF SIZE 확장 모듈

그림 1.10 MMC-HM10

그림 1.11 MMC - HM20

MMC Option 품목

번호 모듈명 사양 모델명 적용제품

1 MMC HALF SIZE 기본 모듈 50PIN TB,I/O 절연 모듈,축 CABLE 결선 MMC-HM10 HALF SIZE MMC

Page 22: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 12

1.5.9 I/O 확장 모듈 (MMC-CA20)

MMC PCI 제품의 I/O, Limit의 결선을 용이하게 하여 주는 제품입니다.

컴퓨터 내부로 결선해야 하는 I/O, Limit의 결선을 PC 외부 슬롯까지 확장가능 하게 하는 제품.

1.5.10 Position Compare Board

MMC-PC10 Option 보드는 Position Compare 기능 수행하는 보드입니다.

Position Compare란 Servo Driver에서 Feedback되는 Motor의 Encoder데이타를 이용하여 특정위치

에서 기지정된 사용자 I/O출력을 일정시간동안 ON/OFF하거나 I/O의 상태를 ON또는 OFF로 유지하는

기능입니다. 또한 Position Compare의 기능은 Hardware적으로 이루어지기 때문에 매번 I/O출력시

마다 정확한 위치정도 및 재현성을 구현할수 있다.

관련함수는 함수편 A-145,A-147,A-148 을 참조해 주십시오.

SPEC

MMC Option 품목

그림 1.12 MMC - CA20

MMC BD LIMIT 결선

MMC BD OUTPUT 결선

MMC BD INPUT 결선

외부 결선

외부 결선CN2

CN1

CN1

LIMIT

OUTPU

T

INPUT

번호 모듈명 사양 모델명 적용제품

1 MMC In/Out 확장 모듈 Input,Output,Limit 외부결선 MMC-CA20 PCI MMC

번호 모듈명 사양 모델명 적용제품

1 Position Compare B'd 1 or 2축 Position Compare MMC-PC10 PCI MMC

항 목 축 수 비 고

Compare축수 1 또는 2축

설정위치개수 8개 위치데이타

사용자 I/O 8 points

최소 I/O 출력설정시간 40μsec Trans parent mode인경우

최대 I/O 출력설정시간 5.38sec Trans parent mode인경우

Page 23: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 13

325mm

325mm

1.6 DIMENSION

1.6.1 MMC보드 DIMENSION

50mm

12mm

<측 면>

110mm

그림 1.13 MMC FULL Size

그림 1.14 Option Module

MMC Option 품목

ISA

PCI 110mm

Page 24: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 14

US SM GN

1.6.2 LMT,TB 모듈 DIMENSION

45mm

22mm 101mm 12mm

<정 면>

135mm

77mm

<윗 면>

MMC사양

그림 1.15 MMC LIMIT Module

Page 25: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter1

MMC개요

1 - 15

USS M GN

45mm

39mm 101mm 41mm

<정 면>

1.6.3 IN,OUT 모듈 DIMENSION

77mm

181mm

<윗 면>

그림 1.16 MMC INPUT Module

MMC Option 품목

Page 26: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 16

MEMO

Page 27: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1 - 17

MEMO

Page 28: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2.1 Software 구성

2.1.1 MMC 모델의 OS 지원 범위 2-1 page

2.1.2 MMC Software Package 구성 2-1 page

2.1.3 MMC Library 파일의 형식표기 2-1 page

2.1.4 Setup 파일 설치 설명 (MMC Manager for Windows) 2-2 page

2.1.5 Open Source for MMC Manager (Visual Basic) 2-2 page

2.1.6 MMC 신ㆍ구 버전 호환 2-3 page

2.1.7 DownLoader 기능 설명 2-3 page

2.1.8 Error Code 2-4 page

2.1.9 Parameters 저장 2-4 page

2.2 Software 요약

2.2.1 제어 Loop 2-5 page

2.2.2 Trajectory 2-5 page

2.2.3 AXIS I/O 2-5 page

2.2.4 내부 Booting 순서 2-6 page

2.2.5 MMC 보드의 내부 제어 Loop Flowchart 2-6 page

2.3 Hardware 구성 2-7 page

2.4 CONFIG.SYS 파일의 수정 (DOS용) 2-8 page

제 2 장

MMC 구조

Page 29: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter2

MMC구조

2 - 1註 1) .BAS 모듈은 1.0 버젼에 맞추어져 있습니다. 내용 확인 하신 후 현재 사용하고

계시는 버젼에 맞추어 수정하신 후 사용하셔야 합니다.

2.1 Software 구성

MMC Software는 Function-Base 구조로 되어있다. 프로그램 언어로는 Borland C, Visual C++, Visual Basic,

Delphi 언어를 지원하며 O/S는 DOS, Windows 98, Windows NT, Windows 2000, Lynx 및 Linux O/S를 지원한다.

MMC Software 중 MMC Manager (Setup) 는 GUI화면을 제공하여, Debugging 시에 매우 유용하게 사용 수 있다.

2.1.1 MMC 모델의 OS 지원 범위

MMC Full Size ISA : Dos, Windows 98/NT/2000/XP

MMC Half Size ISA : Dos, Windows 98/NT/2000/XP

MMC Full Size PCI : Windows 98/NT/2000

※ Lynx, Linux 는 출시 예정임.

2.1.2 MMC Software Package 구성

MMC 보드 구입시 1장의 CD가 제공되며, CD의 내용은 다음과 같이 구성된다.

Acrobat 폴더 : Acrobat Reader 4.0 설치 프로그램.

FullSize 폴더 : MMC Full Size 제품에 대한 S/W가 들어 있다.

HalfSize 폴더 : MMC Half Size 제품에 대한 S/W가 들어 있다.

DownLoader 폴더 : 구 모델과의 호환을 위한 다운로드 S/W가 들어 있다.

Source 폴더 : 기존에 사용되던 Manager 소스가 사용자를 위해 공개 되어 있다.

Manual 폴더 : .pdf 파일로 제작된 매뉴얼이 들어 있다.

Fullsize 와 HalfSize 각각의 하위 폴더에는 Sample 과 버젼별로 S/W가 구성되어 있으며 그 아래

에는 Lib,Setup S/W 가 O/S별로 구성되어 있다.

- Sample 폴더 : C, Delphi, Visual C, Visual Basic의 Sample Code 가 들어 있다.

- LIB 폴더 : DOS, Windows 98/NT/2000, Lynx, Linux 용 Library 파일 및 DLL 파일이 들어있다.

- Setup 폴더 : DOS, Windows 98/NT/2000 용 Setup Program이 들어 있다.

2.1.3 MMC Library 파일의 형식표기

MMCW F I 10 .DLL① ② ③ ④ ⑤

① 프로그램 환경 : MMCW = Windows 98/NT/2000 용, MMCD = DOS 용,

MMCL = Lynx 용, MMCN = Linux 용(개발예정)

BC30 = DOS 용 Borland C ver 3.0, CB30 = Windows 용 C Builder ver 3.0

VC60 = Visual C ver 6.0, VB60 = Visual Basic ver 6.0

② Board Size : F = Full Size, H = Half Size

③ Interface Type : I = ISA, P = PCI

④ VERSION명 : 10 = MMC S/W Version 1.0

⑤ 파일 확장명 : LIB = C Library, DLL = Windows Dynamic Link Library, BAS = Basic 모듈,

PAS = 델파이 모듈, H = C 헤더

MMC ROM Version 과 DLL 버젼은 소숫점 첫 째 자리에 맞추어져 있습니다.

소숫점 첫째 자리를 동일하게 맞추어 사용하시면 ROM 과 DLL의 버젼이 출하시에 맞추어진

내용대로 사용하실 수 있습니다.

SOFTWARE 구성

1)

Page 30: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 2

MMC Library 파일의 종류 (Full Size ISA Ver 1.0 의 예)

- MMCWFI10.H : Windows 용 C 헤더 파일

- BC30FI10.LIB : DOS용 Borland C++ 3.0 version Library 파일.

- VC60FI10.LIB : Windows 98/NT/2000 용 Visual C++ 6.0 version Library 파일.

- CB30FI10.LIB : Windows 98/NT/2000 용 C Builder 3.0 version Library 파일.

- MMCWFI10.BAS : Windows 98/NT/2000 용 Visual Basic 6.0 version Bas 파일.

- MMCWFI10.PAS : Windows 98/NT/2000 용 Delphi 3.0 version Pas 파일.

- MMCWFI10.DLL : Windows 98/NT/2000 용 DLL (Dynamic Link Library) 파일.

- MMCLFI10.LIB : Lynx용 Lynx 2.2.1 version Library 파일.

- MMCNFI10.LIB : Linux용 g++ 2.42 Kernel version Library 파일.

2.1.4 Setup 파일 설치 설명 (MMC Manager for Windows)

▷ Windows 프로그램 개발 시에는 반드시 Setup 을 실행하여 설치하여야만 MMC 보드와의 인터페이스가

가능하여진다.

Setup 프로그램 실행 시 설치되는 파일

-. 기본 설치 디렉토리에 설치되는 파일

C:\Program Files \ MMC Manager for Windows \ MMCW10FI.EXE

wct32dx.dll

wrt32dx.dll

scrollx.ocx

threed32.ocx

MMC Manager 와 GUI 에 필요한 파일들이 설치된다.

만약, 개발자가 기존에 사용하던 컨트롤과 같은 것이 있다면, 해당 OCX 를 unResister 하고 사용자의

OCX를 등록해 사용하여도 무방하다.

방법: 윈도우가 제공하는 파일을 이용한다.

regsvr32.exe /u c:\Program Files \MMC Manager for Windows\ threed32.ocx

regsvr32.exe c:\ Windows \ System \ threed32.ocx 또는, 사용자의 디렉토리

-. DLL 파일

C:\ Windows \ System \ MMCW10FI.DLL

MMC Board 와의 Interface 를 위한 파일이며, 프로그램 개발 시 해당 실행 파일과 같은 디렉토리에

있어도 무방하다.

-. 드라이버 파일은 C:\ Windows \ System32 \ drivers 밑에 설치되며 제거 되어서는 안된다.

2.1.5 Open Source for MMC Manager (Visual Basic)

테스트하여 실행하기 전에 보드와 함께 제공 받았던 Setup 프로그램을 설치하여야 한다.

MMC Half Size Isa 보드 : MMC42.vbp 파일을 클릭하여 프로젝트를 실행한다.

MMC Full Size Isa 보드 : MMC.vbp 파일을 클릭하여 프로젝트를 실행한다.

본 소스는 제공되는 동일한 MMC 라이브러리를 이용하여 실행된다. 따라서, MMC Full Size PCI 용이나,

새로운 버전의 라이브러리를 링크하여 사용하고자 할 때는 modMMCWin 모듈을 교체하고, dll 을 copy하여

개발하면 된다.

Setup File 설치 및 설명

Page 31: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter2

MMC구조

2 - 3

2.1.6 MMC 신ㆍ구 버전 호환

▷ 보드만 교체하고자 하는 경우 (구버젼 S/W 사용)

사용자 S/W 는 그대로 유지하면서 구 모델의 보드만을 신 모델의 보드로 교체해 사용하고자 하는 경우에

는 신 모델 동일 사양의 Full Size ISA와 Half Size ISA 로 교체 후 사용이 가능하다.

단, 제공되는 DownLoad 프로그램을 사용하여 보드에 Hexa 파일을 전송하여 호환되게 한 후 사용한다.

(CD에서 DownLoader 폴더 아래에 프로그램이 들어있다.)

▷ Library 만 업그레이드 할 경우

MMC 신 모델 Ver 1.xx 이후는 Board 와 Library 모두가 Upgrade 되었으므로 구 모델 보드에는 새로운 라

이브러리를 적용할 수 없다.

▷ 신 모델 사용시에 향후 Upgrade 된 사양을 적용하고자 하는 경우

MMC Manager 에 포함되어있는 DownLoad 기능을 이용하여 Hexa 파일을 전송하여 업그레이드 한다.

2.1.7 DownLoader 기능 설명

▷ Down Load : Program Hexa File 을 MMC 보드로 다운로드 한다.

1. Open File 을 클릭하여 Program Hexa File 을 선택한다.

2. 인식된 보드 주소 중 하나를 선택하여 다운로드 할 보드를 선택한다.

3. Down Load 를 클릭하여 다운로딩을 실시한다.

4. 적용된 내용은 재부팅 후에 적용된다.

▷ Serial : 시리얼 케이블을 사용하여 보드를 부팅시키고, Boot Hexa File 과 Program Hexa File을

MMC 보드로 다운로드 한다.

1. Computer 전원을 끈다.

2. MMC 시리얼 케이블을 보드의 연결단자에 연결하고 PC의 parallel 포트에 연결한다.

3. 케이블이 연결된 상태에서 PC 를 켠다.

4. Open File 을 클릭하여 Program Hexa File 을 선택한다.

5. Half Size ISA 는 Boot42.hex 가, Full Size ISA와 PCI는 Boot8x.hex 가 Program Hexa File 과

같은 디렉토리에 있는지 확인한다.

6. Serial 을 클릭하여 Serial 부팅과 다운로드를 실시한다.

7. 적용된 내용은 재부팅 후에 적용된다.

※ Serial 기능은 기술팀에게 문의한 후 사용하도록 한다.

▷ Dpram Addr : MMC Board 어드레스를 설정한다.

- Save 를 클릭하면 프로그램이 종료하며, 다음 번 실행 시에 저장한 주소로 초기화를 한다.

※ 보드의 Boot 영역이 없거나 삭제된 경우 보드는 부팅되지 않고 프로그램에서 인식되지도 않는다.

이때, Dpram Addr 의 Cancel 을 클릭하여 프로그램을 강제 실행 시키고, 2) 번 절차에 따라 Serial 을 실

행시키면 Dpram Addr에서 Save 되었던 주소 중에서 첫 번째 보드에 다운로드를 실시한다.

▷ 신 버전의 Manager를 설치한 경우에는 DownLoader를 별도로 설치해서는 안 된다.

Manager에 Down 기능이 포함되어 있으므로 Manager에서 사용하도록 한다. 부트 영역이 없어 인식이 안

된 경우는 역시 첫번째 보드로 Serial 기능이 수행된다.

MMC 신구버젼 호환

Page 32: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 4

2.1.8 Error Code

MMC Software에서 제공하는 대부분의 함수는 Integer 형태의 Error Code를 돌려준다. Error Code가 '0'일때

는 Error없이 정상적으로 함수가 실행되었음을 의미하며, '0'이 아닌 값일때에는 함수가 비정상적으로 실행

되었음을 의미한다.

2.1.9 Parameters 저장

각 축의 중요 Parameters는 MMC 보드내의 Flash Memory에 저장이 됩니다.

별도의 저장을 하실 필요가 없으며 Setup Program이나 User가 직접 coding 하신 내용이 Flash Memory에

저장이 됩니다.

MMC Manager Program의 download를 이용하여 Download를 하실 경우 Parameter는 초기화가 되며 인의적으로

초기화를 하시고자 할 경우에는 MMC Manager Program의 Default 기능을 이용하여 주십시오.

자세한 설명은 본 매뉴얼 7장 WINDOWS용 SETUP프로그램 편을 참조하여 주시기 바랍니다.

Error Code

Page 33: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter2

MMC구조

2 - 5

2.2 Software 요약

MMC보드의 Software는 Host(Computer)와 명령어를 주고 받으며 실제 시스템을 동작시키는데 필요한 각종 제

어 알고리즘으로 구성되어 있다. 특히 Host와 의 고속통신을 위해 DPRAM(Dual Port RAM)을 이용함으로서 MMC

보드와 Host(Computer)와 의 고속통신이 가능하게 설계되어 있다. MMC보드의 Software는 크게 제어 Loop,

Trajectory생성,I/O 제어 부분으로 나눌 수 있으며, 각부분의 구성 및 동작절차는 아래와 같다.

2.2.1 제어 Loop

MMC 보드는 매 Sample Period 마다 PID 제어를 실시하여 시스템을 제어한다. PID 알고리즘은 출력은 현재

위치오차(current position error)를 이용하여 계산된다. MMC보드는 현재위치(actual position)와 목표위치

(command position)를 가지고 있다. 현재위치는 Feedback 장치로부터 입력된 값을 가지고 있으며, 목표위치

는 사용자가 프로그램에서 지정한 위치가 된다. 현재위치와 목표위치의 차이가 위치오차(position error)이

다. MMC보드에서 출력되는 Analog 전압출력은 속도 혹은 Torque 제어모드에 따라 아래식에 의거 계산된다.

Yv (속도제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn)]

Yt (Torque 제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn) +

( Kvp * VEn + Kvi * VSn + Kvd * (VEn - VEn-1) + Kvf * An)]

PSn = PSn-1 + PEn [ if ( -PSmax < PSn < PSmax ) PSmax [ if ( PSn > PSmax ) ]

-PSmax [ if ( PSn < -PSmax ) ]

VSn = VSn-1 + VEn [ if ( -VSmax < VSn < VSmax ) ]

VSmax [ if ( VSn > VSmax ) ]

-VSmax [ if ( VSn < -VSmax ) ]

Yv,Yt = PID 및 Feedforward 제어출력 , Sample Period n

KR = Scale Factor ( 1/512)

Kpp,Kvp = 위치,속도 비례(Proportional) Gain

Kpi,Kvi = 위치,속도 적분(Integral) Gain

Kpd,Kvd = 위치,속도 미분(Derivative) Gain

Kpf,Kvf = Feedforward Gain

PEn,VEn = Sample Period n 의 위치,속도오차

Vn = Sample Period n 의 속도명령

An = Sample Period n 의 가속도명령

PSn,VSn = 위치오차(PEn),속도오차(VEn)의 합

PSmax,VSmax = 위치오차(PEn),속도오차(VEn)의 합의 최대 값

2.2.2 Trajectory

MMC 보드는 사용자가 지정한 목표위치, 가속시간,속도를 기초로 Trajectory를 생성 해낸다. MMC보드에서 제

공하는 Trajectory는 사다리꼴(trapezoid), S_Curve, 비대칭 사다리꼴(trapezoid), 비대칭 S_Curve 네 가지

형태의 Trajectory가 있다.

2.2.3 AXIS I/O

MMC 보드는 매 Sample Period 마다 +,- Limit 센서와 Home 센서, AMP Fault 발생여부를 검사하여, Active일

경우 기 지정된 EVENT를 발생시켜 해당동작을 수행한다.

SoftWare 요약

Page 34: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 6

2.2.4 내부 Booting 순서

① 모든 변수 초기화

② I/O, DAC 등의 출력 OFF

③ Booting Parameter Download

④ 명령수행

2.2.5 MMC 보드의 내부 제어 Loop Flowchart

YES

NO

그림 2.1 제어 Loop Flowchart

MMC 내부 제어 순서

Event 체크 & 실행

제어 loop 실행 및 출력

목표위치 계산

현재위치 Read

Interrupt 발생

Interrupt 종료

모든 축 실행완료?

Page 35: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter2

MMC구조

2 - 7註 1) ADC 12bit 4채널 및 ABS Encoder counter는 Option 사양임.

2) PCI Board 에만 해당하는 사양입니다.

2.3 Hardware 구성

MMC 보드의 내부구조는 아래의 구성도와 같다. 각각 8개의 Analog 출력(±10V) 및 펄스 출력 Port가 있어

모터 드라이버가 종류(위치형,속도형,스텝 모터등) 형태에 관계없이 제어가 가능하게 설계 되어 있어 한

장의 MMC 보드로 여러 종류의 모터를 동시에 제어 할 수 있게 되어 있다.

I/O의 구성은 시스템 입출력 I/O( AMP En/Disable 출력, AMP Fault 입력)외에 사용자 입,줄력 I/O 각 32점

씩, Limit Sensor입력 24점 제공하고 있어 부가적으로 I/O보드를 따로 장착할 필요없이 주변장치의 I/O를

제어할 수 있다.

TMS

320C31

16bit D/A

PulseGenerator

Pulsecounter

Encodercounter

ABS Encodercounter

DPRAM

Host(Computer)

Memory

TTL I/O

Sensor IN

A/D IN *

AMP(Servo)

512K Byte

Input 32점Output 32점

Limit 입력

12 Bit, 4채널

AMP Fault INAMP Fault Reset

AMP Power ONIN POSITION

POSITION CLEAR2)

1)

ABS Encoder입력

Encoder 입력

Step/DirectionPulse 출력

Analog

전압출력

그림 2.2 Hardware Block도

Hardware 구성

I

S

A

/

P

C

I

B

U

S

Page 36: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 8

2.4 CONFIG.SYS 파일의 수정 (DOS용)

SETUP 프로그램을 실행하기 위해서는 사용자 Computer의 CONFIG.SYS 파일에 아래의 내용을 추가 또는

삽입해야 한다.

EMM386을 수정하는 이유는 Segment Address D800-DF00 영역이 DPRAM 어드레스 영역이기 때문에 다른 응용

프로그램의 접근을 막기 위함이다. D800-DF00의 어드레스 영역은 Default 값이며 사용자가 DPRAM 어드레스

영역을 다르게 설정 할 경우 값을 변경하여야 한다. HIMEM.SYS를 수정하는 이유는 GUI 화면인 SETUP 프로

그램이 그래픽으로 구성되어 메인메모리(extended memory)를 영역을 사용하기 때문이다.

위의 CONFIG.SYS 파일의 수정이 끝나면 반드시 컴퓨터를 재부팅 시켜야 한다.

DEVICE=C:\DOS\HIMEM.SYS /NUMHANDLERS=80

DEVICE=C:\DOS\EMM386.EXE X=D800-DF00

Config.sys 파일의 수정

Page 37: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 9

MEMO

Page 38: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2 - 10

MEMO

Page 39: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

.1 MMC ISA 보드 설치 - Address 설정 3-1 page

3.2 DOS 및 Windows용 빠른 설치 방법

3.2.1 Analog 입력을 받는 속도형 SERVO Drive 3-2 page

3.2.2 STEP 모타 및 위치형 Servo Drive 3-2 page

3.3 Lynx용 빠른 설치 방법

3.3.1 SERVO 모타 3-3 page

3.3.2 STEP 모타 및 위치형 Servo Drive 3-3 page

3.4 MMC PCI 보드의 설치

3.4.1 Windows 98/2000에서 설치하는 방법 3-4 page

3.4.2 Windows 98/2000에서 드라이버를 설치한 후 문제에 대처하는 방법 3-6 page

3.4.3 WindowsNT에서 설치하는 방법 3-8 page

3.4.4 WindowsNT에서 MMC Manager를 설치한 후 문제에 대처하는 방법 3-8 page

제 3 장

빠른 설치 방법

Page 40: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter3

빠른설치방법

3 - 1

3.1 MMC ISA 보드 설치-Address 설정

Computer에서 MMC 보드 1장의 메모리 용량은 1K Byte(DPRAM)로 구성되어 있다.

일반적으로 Computer에서는 메모리를 사용하고 있는 영역과 사용하지 않는 영역이 Computer Maker에 따라서

다르기 때문에 Computer에서 사용하고 있는 어드레스 영역을 피하여 MMC 보드를 사용 하여야 한다.

MMC 보드의 최소 어드레스 설정 단위는 1K Byte이며, DIP Switch를 조정하여 어드레스 영역을 사용자가

편리대로 설정할 수 있다 그림 3.1,3.2, 표 3.1 참조

단 2장 이상의 MMC보드 장착시 어드레스를 영역을 중복되게 설정하면 안된다.

Setting 예

D800:0000 C940:0000

아래 표 3.1의 표시는 가변가능한 Address 이다.

Default Address : D800:000 ‾ D800:3FF 로 Setting 되어 있다.

Address A19 A18 A17 A16 Address A15 A14 A13 A12 Address A11 A10

가변 여부 1 가변 여부 0 가변 여부

DIP S/W 고정 8 7 6 DIP S/W 5 고정 4 3 DIP S/W 2 1

8

9

A

B

C

D

E

F

1

1

1

1

1

1

1

1

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

2

3

8

9

A

B

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

4

8

C

0

0

1

1

0

1

0

1

ON

1 2 3 4 5 6 7 8

ON

1 2 3 4 5 6 7 8

D80 C94

MMC ISA 보드 설치-Address 설정

그림 3.1 ISA 보드의 Address Setting

표 3.1 ISA 보드 Dip Switch 설정 방법

그림 3.2 Dip 설정 예

1

0

1

addr1

ISA

ON

1 2 3 4 5 6 7 8

Page 41: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 2

3.2 DOS 및 Windows용 빠른 설치 방법

이 부분은 Motion 제어기에 익숙한 사용자를 위하여 빠르고 쉽게 MMC보드를 설치하는 방법에 대해

기술한다. 제어기의 배선이나 콘넥트 작업에 익숙하지 않은 사용자는 매뉴얼의 모타 배선부분이나,

설치부분을 참조하시기 바랍니다.

3.2.1 Analog 입력을 받는 속도형 SERVO Drive

① MMC 보드의 DIP Switch로 DPRAM 어드레스를 지정한다. (Default = 0xD800|0000)

② Host(Computer)에 MMC 보드를 장착한다.

③ AMP가 Disable(Power Off)이 되어있는지 확인한다.

④ MMC 보드에 MMC 축 CABLE 과 24V CABLE을 연결한다.

⑤ SETUP 프로그램을 실행시킨다.

⑥ Configuration / Axis Configuration 메뉴에서 "SERVO","CLOSED_LOOP","VELOCITY","ENCODER",

"BIPOLAR"를 지정한다. 단 Torque 제어용 Servo인 경우 "VELOCITY" 대신 "TORQUE"를 지정한다.

⑦ MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Disable"를 지정한다.

⑧ Encoder의 연결상태를 검사하기 위해 모타를 회전시키면서 MOTION 메뉴의 Actual Position이

변하는지 여부와 1회전당 Counts수가 맞는지 여부를 검사한다.

⑨ MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Enable"를 지정한다. 이때 위치제어가 되지않고

모타가 어느 한 방향으로 회전하면 A+ 와 B+ Encoder상의 결선을 바꾸거나, A- 와 B- Encoder상의

결선을 바꾸어 본다. 이와 같은 조치에도 불구하고 모타가 정지제어가 되지 않을 경우에는 배선에

문제가 있거나 모타나 모타 드라이버에 이상이 있는 것이다.

⑩ SETUP 화면의 AXIS I/O 메뉴에서 "ENABLE" 을 클릭하여 SERVO ON을 한다.

⑪ SETUP 화면의 MOTION 메뉴에서 "GO"버튼을 입력하여 PTP Motion을 실행시켜 본다.

⑫ MOTION / TUNING(F1) 메뉴에서 Tuning Parameters를 바꾸어 가면서 Gain Tuning을 실시한다.

⑬ 모타가 한 번 이동 후 다시 "GO"버튼을 눌러도 움직이지 않을 경우에는 In_position 상태가 되지

않았기 때문이며 이때는 MOTION / S/W LIMIT(F2)메뉴에서 IN_POSIITON값(default 100.0 encoder

counts)을 크게하면 해결된다.

3.2.2 STEP 모타 및 위치형 Servo Drive

① MMC 보드의 DIP Switch로 DPRAM 어드레스를 지정한다. (Default = 0xD800|0000)

② Host(Computer)에 MMC 보드를 장착한다.

③ AMP가 Disable(Power Off)이 되어있는지 확인한다.

④ MMC 보드에 Stepper Driver를 연결한다.

⑤ SETUP 프로그램을 실행시킨다.

⑥ Configuration / Axis Configuration 메뉴에서

일반 Stepper의 경우 => "STEPPER","ENCODER","OPEN_LOOP"를 지정한다.

Micro Stepper 및 위치형 Servo의 경우 => "MICRO","ENCODER","OPEN_LOOP"를 지정한다.

⑦ Configuration / Software Limits Configuration 메뉴에서 "PULSE RATIO"는 적용이 되지 않으므로

설정을 하실 필요가 없습니다.

⑧ Pulse 출력모드를 모타 Drive의 사양에 맞게 설정한다.

⑨ AMP를 Enable(Power ON) 시킨다.

⑩ MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Enable"를 지정한다.

⑪ MOTION 메뉴의 Actual Position값이 변하는지 여부를 검사한다. 값이 변할 경우에는 배선상에

문제가 있거나 Stepper Driver에 이상이 있는 것이다.

⑫ MOTION 메뉴에서 "GO"버튼을 입력하여 PTP Motion을 실행시켜 본다.

빠른 설치 방법

Page 42: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter3

빠른설치방법

3 - 3

3.3 Lynx용 빠른 설치 방법

3.3.1 SERVO 모타

① MMC 보드의 DIP Switch로 DPRAM 어드레스를 지정한다. (Default = 0xD800|0000)

② Host(Computer)에 MMC 보드를 장착한다.

③ AMP가 Disable(Power Off)이 되어있는지 확인한다.

④ MMC 보드에 Encoder 콘넥트를 연결한다.

⑤ 아래와 같이 함수를 사용하여 각종 변수를 설정한다. 여기서는 0축의 예를 든다.

set_servo(0);

set_feedback(0,FB_ENCODER);

set_closed_loop(0,TRUE);

set_control(0,VELOCITY); (속도제어 모드) or set_control(TORQUE); (Torque 제어모드)

set_unipolar(0,FLASE);

⑥ Encoder의 연결상태를 검사하기 위해 모타를 회전시키면서 get_position 함수를 사용하여 Actual

Position이 변하는지 여부와 1회전당 Counts수가 맞는지 여부를 검사한다.

⑦ set_amp_enable(0,TRUE); 함수를 사용하여 AMP Device를 "Enable" 시킨다. 이때 위치제어가 되지

않고 모타가 어느 한 방향으로 회전하면 A+ 와 B+ Encoder상의 결선을 바꾸거나, A- 와 B- Encoder

상의 결선을 바꾸어 본다. 이와 같은 조치에도 불구하고 모타가 정지제어가 되지 않을 경우에는 배

선에 문제가 있거나 모타나 모타 드라이버에 이상이 있는 것이다.

⑧ start_move 또는 move 함수를 이용하여 PTP Motion을 실행시켜 본다.

⑧ set_filter,set_v_filter 함수를 이용하여 Tuning Parameters를 바꾸어 가면서 Gain Tuning을 실시

한다.

⑩ 모타가 한번이동 후 다시 움직이지 않을 경우에는 In_position 상태가 되지 않았을 경우가 많으며

, 이때는 set_in_position 함수를 이용하여 IN_POSIITON값(default 100 encoder counts)을 키워야

한다.

3.3.2 STEP 모타 및 위치형 Servo Drive

① MMC 보드의 DIP Switch로 DPRAM 어드레스를 지정한다. (Default = 0xD800|0000)

② Host(Computer)에 MMC 보드를 장착한다.

③ AMP가 Disable(Power Off)이 되어있는지 확인한다.

④ MMC 보드에 Stepper Driver를 연결한다.

⑤ 아래와 같이 함수를 사용하여 각종 변수를 설정한다. 여기서는 0축의 예를 든다.

일반 Stepper Micro Stepper, 위치형 Servo

set_stepper(0); set_micro_stepper(0);

set_feedback(0,FB_ENCODER); set_feedback(0,FB_ENCODER);

set_closed_loop(0,FALSE); set_closed_loop(0,FALSE);

set_pulse_ratio(20);

set_electric_gear(20);

⑥ Pulse 출력모드를 모타 Drive의 사양에 맞게 설정한다.

⑦ set_amp_enable(0,TRUE); 함수를 사용하여 AMP Device를 "Enable" 시킨다. 이때 위치제어가 되지

않고 모타가 어느 한 방향으로 회전하면 배선에 문제가 있거나 모타나 모타 드라이버에 이상이

있는 것이다.

⑧ start_move 또는 move 함수를 이용하여 PTP Motion을 실행시켜 본다.

LYNX용 빠른 설치 방법

Page 43: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 4

3.4 MMC PCI 보드의 설치

3.4.1 Windows 98/2000에서 설치하는 방법

다음과 같이 드라이버를 검색하도록 설정하고, 제공된 MMC CD 의 \Setup 디렉토리에서

mmcpci.inf 파일을 선택한다. 그림 3.4

Windows가 새로운 PCI 보드를 찾게 되면 MMC 드라이버를 설치하고 재부팅한다.만약 다음

메시지가 표시 되지 않는다면 PC 전원을 끄고 보드의 삽입상태를 확인한다.그림 3.3

그림 3.3 새하드웨어 검색

그림 3.4 드라이버 검색 화면

MMC PCI 보드 설치 방법

Page 44: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter3

빠른설치방법

3 - 5

다음처럼 드라이버를 찾게 되면 설치를 계속 진행한다. 만약, 다음 메시지가 나오지 않는

다면 PC 의 PCI Slot에 MMC 가 정확히 장착되었는지 확인하여야 한다. 그림 3.5

그림 3.5 드라이버 검색 결과

다음과 같은 메시지가 나오면 보드가 정상적으로 설치된 것이므로 마침을 누르고 PC 를 재

부팅하여 설치를 완료하여야 한다. 재부팅이 되면 \Setup 폴더 밑의 MMC Manager를 인스

톨하여 MMC 보드를 테스트해 볼 수 있다. 그림 3.6

그림 3.6 Windows 재시동

MMC PCI 보드의 설치

Page 45: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 6

3.4.2 Windows 98/2000에서 드라이버를 설치한 후 문제에 대처하는 방법

-. 시스템 등록정보의 장치 관리자에서 다음처럼 보드가 정상 설치되어 있는지 확인한다. 만약 정상 동작

되고 있지 않다는 메시지가 보인다면 삭제 후 보드를 재설치하여야 한다. 그림 3.7

MMC PCI Board를 여러장 설치한 경우 MMC 보드의 순서는 PC 의 PCI Slot에서 버스번호와

슬롯번호가 빠른 순으로 결정된다. 이것은 메인보드에서 내부 PCI Bus에 관한 Number로

윈도우에서는 버스와 장치로 표현되기도 한다. 각 버스에 대응하여 실제 보드가 삽입되는

PC 외부 슬롯에 해당하는 위치는 Main 보드 제작업체에 따라 다르다.

그림 3.7 장치관리자 화면

PCI 보드 설치 문제점 대처(Win98/2000)

Page 46: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter3

빠른설치방법

3 - 7

-. 보드의 설치는 정상적으로 이루어 졌으나 S/W에서 인식되지 않는 경우, 다음처럼 윈도우

에서 MMC 의 리소스가 메모리 영역 3개, 입출력 1개, IRQ 1개로 인식되었는지 확인한다.

Plug & Play 이므로 각 설정값은 각 PC 시스템마다 다른 값으로 설정되지만 리소스 종류

의 개수 는 다음과 같아야 한다. 만약 다음과 그 리소스의 수가 같지 않다면 A/S 를 의뢰

하여야 한다.(실제 값은 아래 그림과 다를 수 있다). 그림 3.8

그림 3.8 리소스 설정 상태

PCI 보드 설치 문제점 대처(Win98/2000)

Page 47: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 8

3.4.3 WindowsNT에서 설치하는 방법

NT 는 PnP 가 지원되지 아니하므로 MMC PCI 드라이버의 설치 과정은 제공된 CD 의 \Setup

밑의 MMC Manager 를 Install 함으로써 같이 이루어진다. 재부팅한 후 에는 'Windows NT

진단'에서 MMC 드라이버가 설치된 것을 확인할 수 있다. 그림 3.9

3.4.4 WindowsNT에서 MMC Manager를 설치한 후 문제에 대처하는 방법

보드의 설치는 정상적으로 이루어 졌으나 S/W에서 인식되지 않는 경우, 다음처럼 윈도우

에서 MMC 의 리소스가 메모리 영역 3개, 입출력 1개, IRQ 1개로 인식되었는지 확인한다.

리소스의 수는 'Windows NT 진단 프로그램'에서 확인할 수 있다. MMC 보드의 리소스

할당은 보드의 PnP 기능으로 각 PC 시스템마다 다른 값으로 자동 설정되지만 리소스 영역의

개수 는 다음의 그림과 같아야 한다. 만약 다음과 그 리소스의 수가 같지 않다면 A/S

를 의뢰하여야 한다.

그림 3.9 Windows NT 설치

PCI 보드 - WindowsNT에서 설치하기

Page 48: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter3

빠른설치방법

3 - 9

"Windows NT 진단 프로그램"에서 윈도우가 인식한 MMC의 물리적 리소스를 확인할 수 있다.

그림 3.10

MMCnew 디바이스를 클릭했을 때 보이는 MMC PCI 보드의 리소스.그림 3.11

그림 3.11 Windows NT 리소스

그림 3.10 Windows NT 리소스 확인

PCI 보드 설치 문제점 대처(WindowsNT)

Page 49: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 10

MEMO

Page 50: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 11

MEMO

Page 51: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

3 - 12

MEMO

Page 52: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

.1 ISA AMP 콘넥터 PIN 사양 4-1 page

4.2 ISA AMP 콘넥터 PIN 설명 4-2 page

4.3 MMC ISA FULL SIZE 와 SERVO DRIVE 결선

4.3.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도 4-6 page

4.3.2 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도 4-8 page

4.3.3 MITSUBISHI MR-J2 Series Servo Drive와 배선도 4-10 page

4.3.4 PANASONIC MINAS A Series Servo Drive(콘넥터 CN I/F)와 배선도 4-12 page

4.4 PCI AMP 콘넥타 PIN 사양 4-15 page

4.5 PCI AMP 콘넥터 PIN 설명 4-16 page

4.6 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도

4.6.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도 4-20 page

4.6.2 삼성 CSD3 Servo Drive와 배선도 4-22 page

4.6.3 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도 4-24 page

4.6.4 MITSUBISHI MR-J2 Series Servo Drive와 배선도 4-26 page

4.6.5 PANASONIC MINAS A Series Servo Drive(콘넥터 CN I/F)와 배선도 4-28 page

4.7 OPEN Collector 타입 ENCODER 사용시 결선 및 JUMP핀 배치

4.7.1 ENCODER핀의 결선도 4-30 page

4.7.2 JUMP핀의 배치도 4-30 page

4.8 I/O SYNK,I/O COM 콘넥타 배선 4-31 page

참조 ISA 보드용 축케이블 제작 사양서 (to SAMSUNG CSDJ PLUS) 4-32 page

참조 PCI 보드용 축케이블 제작 사양서 (to SAMSUNG CSD3) 4-34 page

제 4 장

AMP(SERVO) 배선

Page 53: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 1註 1) In-Position Siginal은 TTL levle 입력이나 Open Collector 입력을 모두

받을 수 있게 설계 되어 있습니다. 자세한 내용은 4-2의 1항을 참조하십시오.

MMC ISA 보드의 콘넥터 구성은 아래의 그림과 같다. 4개의 AMP(Servo) 콘넥터

(JP11,12,13,14)는 한 개당 2개의 SERVO 드라이버를 연결할 수 있다.

0,1축 AMP (AXIS1,2)

2,3축 AMP (AXIS3,4)

4,5축 AMP (AXIS5,6)

6,7축 AMP (AXIS7,8)

Limit Sensor Input(LMT)User Output (OUT)User Input (IN)

MMC-ADIN 보드(AD b'd)Analog IN

4.1 ISA AMP 콘넥타 PIN 사양 (AXIS1.2, AXIS3.4, AXIS5.6, AXIS7.8)

핀 번호 신호명 축 핀 번호 신호명 축

1 위치결정 완료신호 입력 1축 21 위치결정 완료신호 입력 2축

2 ±10V Analog 출력 1축 22 ±10V Analog 출력 2축

3 5V GND 1축 23 5V GND 2축

4 ENCODER A+ 1축 24 ENCODER A+ 2축

5 ENCODER A- 1축 25 ENCODER A- 2축

6 ENCODER B+ 1축 26 ENCODER B+ 2축

7 ENCODER B- 1축 27 ENCODER B- 2축

8 ENCODER Z+ 1축 28 ENCODER Z+ 2축

9 ENCODER Z- 1축 29 ENCODER Z- 2축

10 ABS ENCODER + 1축 30 ABS ENCODER + 2축

11 ABS ENCODER - 1축 31 ABS ENCODER - 2축

12 STEP PULSE + (CW+) 1축 32 STEP PULSE + (CW+) 2축

13 STEP PULSE - (CW-) 1축 33 STEP PULSE - (CW-) 2축

14 STEP SIGN + (CCW+) 1축 34 STEP SIGN + (CCW+) 2축

15 STEP SIGN - (CCW-) 1축 35 STEP SIGN - (CCW-) 2축

16 AMP(Servo) Alarm 입력 1축 36 AMP(Servo) Alarm 입력 2축

17 I/O SYNK 1축 37 I/O SYNK 2축

18 AMP(Servo) Power ON 출력 1축 38 AMP(Servo) Power ON 출력 2축

19 AMP(Servo) Alarm Reset 출력 1축 39 AMP(Servo) Alarm Reset 출력 2축

20 I/O COM 1축 40 I/O COM 2축

24V EXT

콘넥터 구성 ISA

그림 4.1 MMC ISA FULL SIZE

표 4.1 MMC ISA FULL SIZE 축 콘넥타 PIN 사양

P5V

P24V

1) 1)

ISA

Page 54: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 2

4.2 ISA AMP 콘넥터 PIN 설명

핀 번호 신호명 설명

1위치결정 완료신호 입력

(In_Position)

1. Servo drive의 위치일치완료 신호를 입력 받는 Line입니다.

서보모터의 이동완료가 이루어지면 Servo Drive는 이 신호를

출력하게 됩니다.

2. 이동완료는 대부분 Servo Drive에서 설정한 '위치일치신호

출력폭'으로 설정한 값에 의해 설정이 됩니다.

3. MMC 는 위치일치완료 신호를 입력 받지 않은 경우 Motion이

완료되지 않았다고 가정을 하며 다음 모션을 수행하지 않습

니다.

4. 속도형으로 사용시 이 신호는 입력이 무시되어 집니다.

5. Drive에 따라 레벨을 조정하여 사용하실 수 있으며 관련

함수는 본 매뉴얼 함수편 A-102를 참조하여 주십시오.

6. P24V(Default) 일 경우는 24V EXT 입력 전압으로, P5V 일

때는 내부 5V Levle로 입력되므로 주의하십시오.(그림참조)

2 ±10V Analog 출력

1. 16 bit Analog 출력 Line입니다.

2. 속도형 Servo Drive 일 경우 속도 지령을, 토크형 Servo dr-

ive 의 경우 토크 지령을 출력합니다.

(속도형, 토크형으로 설정해야함. 매뉴얼 7장 참조)

3. 임의의 Analog 전압 출력이 가능합니다.

관련 함수는 함수편 A-40 을 참조하여 주십시오.

4. ±10V 출력이며 최소 제어전압은 ±3V입니다.

3 5V GND

1. MMC TTL 레벨의 GND입니다.

2. Analog 출력 전압의 GND 이며 PC의 GND 와도 일치합니다.

3. 외부 배선시 NOISE 유입이 이루어 지지 않도록 배선하여

주시기 바랍니다.

4 ENCODER A+

1. Encoder 입력 Line 으로 Servo Drive나 외부 Encoder를 입력

받을 수 있으며 4체배 되어 입력됩니다.

2. 라인 리시버 입력(SN75173) 이며 MAX 5MHz 까지 입력이

가능합니다.

3. 보드별 4채널의 오픈 컬렉터 입력이 가능합니다. 4.7장 참조

5 ENCODER A-

6 ENCODER B+

7 ENCODER B-A 상

B 상

90°

Z 상

정회전시

A 상

B 상

90°

Z 상

역회전시

엔코더 위상 상태(Motor에 따라 다름)

SERVO DRIVE

P

P

P

R

MMC

A상

B상

Z상

SN75174

R

R

A상

B상

Z상

P 표시는

트위스트페어

를 의미함.

-Cab le은

반드시 실드

케이블을 사

용하십시오.

ISA AMP 콘텍터 PIN 설명

표 4.2 MMC ISA FULL SIZE 축 콘넥타 PIN 설명

Page 55: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 3

논리

지령펄스형태

정 방향 운전 역 방향 운전

CW

+

CCW

펄스열

+

부호

CW

+

CCW

펄스열

+

부호

핀 번호 신호명 설명

8 ENCODER Z+1. 라인 리시버 입력으로 Servo Drive나 외부 Encoder에서 입력

을 받을 수 있습니다.

2. 결선 예는 4-2page A,B상을 참조하여 주십시오.

3. Motor 1회전에 1 Pulse 발생하며 관련 함수는 함수편 A-72를

참조하여 주시기 바랍니다.9 ENCODER Z-

10 ABS ENCODER +

1. 절대치 Encoder 입력 Line 으로 422 라인리시버 방식입니다.

2. 절대치 Encoder 입력을 사용하시기 위해서는 Serial Inter-

face 회로가 있는 MMC-AD11의 구입이 필수입니다.

3. MMC는 Full ABS Type이 아닙니다.

MMC Init 후에 절대치 Encoder를 MMC Count와 일치하여 쓰는

Half ABS Type 이며 관련 함수는 함수편 A-130을 참조하여

주시기 바랍니다.

4. 2002년 현재 삼성CSDJ 모델군과 YASKAWA 제품을 지원합니다.

11 ABS ENCODER -

12 STEP PULSE + (CW+)

1. 위치 지령 출력단으로 MAX 3.75MHz, Duty 50%, 출력 주파수

변동 단위 250Hz입니다.

2. CW/CCW Mode, Sign/Puls Mode 로 사용 가능합니다.

함수편 A-53 을 참조하여 주시기 바랍니다.

3. 정논리/부논리 출력 조정 가능하며 매뉴얼 7장 과 함수편

A-119을 참조하여 주십시요

13 STEP PULSE - (CW-)

14 STEP SIGN + (CCW+)

15 STEP SIGN - (CCW-)

SERVO DRIVE

P

P

P

MMC

A상

B상

Z상

P 는 트위스트 페어선을나타낸다

EA

EB

EC

R

R

R

PPS

RSeria

lData

MMC-AD11(Serial nterface

회로 내장)

Back upBattery

EB

EA

EC

PS

"L"PULS(CW)

SIGN(CCW)

"L"

"H" "L"

"H"

"H"

"L" "H"

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

AMP 콘텍터 PIN 설명 ISA

표 4.3 MMC ISA FULL SIZE 축 콘넥타 PIN 설명

Page 56: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 4

핀 번호 신호명 설명

CW+

CW-

CCW+

CCW-

16 AMP(Servo) Alarm 입력

1. Servo Drive의 Error 발생 입력 Line 으로 AMP_Fault EVENT

를 설정할 수 있습니다. 함수편 A-76 을 참조하여 주시기

바랍니다.

2. 입력회로는 그림과 같습니다.

3. In-Position 입력 회로도 동일한 회로 구성을 가집니다.

4. Servo Drive의 신호 출력 Level 에 따라 조정이 가능합니다.

17 I/O SYNK

1. AMP_Enable, AMP_Fault_Reset, AMP_Fault, In-position 의

동작 전원입니다.

2. 입력은 EXT24 콘넥터에

제품 구입시 공급되는

24V 용 Cable 을 이용하여

공급하여 주시기 바랍니다. (그림 참조)

3. Servo Drive 의 회로가 12V로 동작 되는 경우 12V를 공급

하여 주십시오.

4. 역전압이 인가되지 않게 주의하여 주십시오.

1

2 3

4

SERVO DRIVEMMC

R 472

R 10K

Vcc24V

GND

EXT24

ISA AMP 콘텍터 PIN 설명

표 4.4 MMC ISA FULL SIZE 축 콘넥타 PIN 설명

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

AMP Alarm

입력

PULS

SIGN

P

P SIGN

PULS

LINE DRIVE 결선도

Counter

Open Collector 결선도

SERVO DRIVE

PULS

SIGN

Counter

MMC

SIGN

PULS

점퍼 설정으로 Open Collector 사용 가능(메뉴얼 4.7장 참조)

Alarm IN

Page 57: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 5

註 1) In-Position Siginal 의 경우 보드내의 P24V,P5V 점퍼에 의해 Common의 달라지게

되어 있습니다. 점퍼의 위치가 P24V 일 경우는 I/O COM 의 Common 이지만 P5V일

경우에는 3번 Pin 5V GND 가 Common 이 됩니다.

WARNING ! 외부에서 I/O SYNK 전원을 투입 할 때 역전압이 걸리지 않도록

주의 바랍니다. 역전압 인가로 인한 보드 파손의 우려가 있습니다.

핀 번호 신호명 설명

18 AMP(Servo) Power ON 출력

1. AMP_Enable Siginal 이 출력되는 Line입니다.

2. Enable Signal은 Disable 하기 전까지 신호가 출력이 되며

출력 Time은 50μsec 이하입니다.

3. 출력 Level은 조정 할 수가 있으며 관련 함수는 함수편

A-74를 참조하여 주십시오.

4. 회로 구성은 그림과 같습니다.

19 AMP(Servo) Alarm Reset 출력

1. AMP_Fault_Reset signal 이 출력되는 Line입니다.

2. 출력 Level은 조정 할 수가 있으며 관련 함수는 함수편

A-76,A-77을 참조하여 주십시오.

3. 회로 구성은 그림과 같습니다.

20 I/O COM1. AMP_Enable, AMP_Fault_Reset, AMP_Fault, In-position

동작 전원의 Common 단자입니다.

R 331

Vcc

0V

Amp_Enable

SERVO DRIVE

Amp_Fault_Reset

R 331

Vcc

0V

SERVO DRIVE

AMP 콘텍터 PIN 설명 ISA

표 4.5 MMC ISA FULL SIZE 축 콘넥타 PIN 설명

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

1

2 3

4

1

2 3

4

1)

Connector 사양 (AXIS,LIMIT,IN,OUT)

DESCRIPTION SPECCIFICATION MAKER

MMC Board Part HIF3BA-40PA-2.54DS HRS

Cable part HIF3BA-40D-2.54R HRS

Page 58: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 6

4.3 MMC ISA FULL SIZE 와 SERVO DRIVE 결선

MMC

40핀 번호신호명

SERVO #1

50핀 번호

MMC

40핀 번호신호명

SERVO #2

50핀 번호

1 위치결정 완료신호 입력 41 21 위치결정 완료신호 입력 41

2 ±10V Analog 출력 19,21 22 ±10V Analog 출력 19,21

3 5V GND 20,22 23 5V GND 20,22

4 ENCODER A+ 29 24 ENCODER A+ 29

5 ENCODER A- 30 25 ENCODER A- 30

6 ENCODER B+ 31 26 ENCODER B+ 31

7 ENCODER B- 32 27 ENCODER B- 32

8 ENCODER Z+ 33 28 ENCODER Z+ 33

9 ENCODER Z- 34 29 ENCODER Z- 34

10 ABS ENCODER + 35 30 ABS ENCODER + 35

11 ABS ENCODER - 36 31 ABS ENCODER - 36

12 STEP PULSE + (CW+) 11 32 STEP PULSE + (CW+) 11

13 STEP PULSE - (CW-) 12 33 STEP PULSE - (CW-) 12

14 STEP SIGN + (CCW+) 13 34 STEP PULSE + (CCW+) 13

15 STEP SIGN - (CCW-) 14 35 STEP PULSE - (CCW-) 14

16 Servo Alarm 입력 45 36 Servo Alarm 입력 45

17 24V 출력 1 37 24V 출력 1

18 Servo Power ON 출력 3 38 Servo Power ON 출력 3

19 Servo Alarm Reset 출력 7 39 Servo Alarm Reset 출력 7

20 24V GND 46,42 40 24V GND 46,42

SHIELD 50 SHIELD 50

註 1) 24V 출력 및 24V GND는 I/O SYNK,I/O COM 콘넥타를 외부 24V SMPS에 배선을 해야

사용하실수 있습니다. 역전압 인가 주의!

1)

1)

ISA MMC-CSDJ 결선도

표 4.6 MMC ISA 보드 - SAMSUNG CSDJ 결선도

4.3.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도

Page 59: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 7註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선도에 따른 Cable 제품 코드는 MMC-CAAX2H2202 입니다.

3) 결선에 사용하시는 Cable은 판매되는 Cable을 사용하실 것을 권장합니다.

삼성 대용량 일체형(CSDP), CSDJ Servo Drive와 MMC 보드 결선도

V/T-REF

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

2

3

4

5

6

7

8

9

sn75173

22

29

30

31

32

33

34

19

21

20

대용량(CSDP),CSDJ SERVOMMC ISA 보드

LINE DRIVER

<F.G>

V-REF

T-REF

ANALOG 지령 입력 ->

50

D/A

EA

EZ

EZ

EB

EB

EA

SERVO PG출력1)

1)

1)

150Ω

150Ω

CW +

CW -

CCW +

CCW - 15

12

13

14

11

13

12

14

PULSE

SIGN

PULSE

SIGN

sn75174 위치 PLUSE 입력 ->

1)

1)

MMC-CSDJ 결선도 ISA

그림 4.2 MMC ISA BOARD - CSDJ 결선도

SV-ON

ALM RST

18 AMP En/Disable

19 AMP Fault Reset 7

3

1I/O SYNK (+24V)17

16 AMP Fault IN

20 I/O COM (24V GND) 46

45

I/O SYNK

SALM+

1 In-Position

20 I/O COM (24V GND) : P24V 일 경우 42

41

SALM-

P-COM-

P-COM+

4 . 7 K

4 . 7 K

ENC Z

ENC Z 10

11

35

36

EZ

EZ1)

( 3번 Pin 5V GND : P5V 일 경우 )

Page 60: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 8

4.3.2 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도

MMC

40핀 번호신호명

SERVO #1

50핀 번호

MMC

40핀 번호신호명

SERVO #2

50핀 번호

1 위치결정 완료신호 입력 25 21 위치결정 완료신호 입력 25

2 ±10V Analog 출력 5,9 22 ±10V Analog 출력 5,9

3 5V GND 6,10 23 5V GND 6,10

4 ENCODER A+ 33 24 ENCODER A+ 33

5 ENCODER A- 34 25 ENCODER A- 34

6 ENCODER B+ 35 26 ENCODER B+ 35

7 ENCODER B- 36 27 ENCODER B- 36

8 ENCODER Z+ 19 28 ENCODER Z+ 19

9 ENCODER Z- 20 29 ENCODER Z- 20

10 ABS ENCODER + 48 30 ABS ENCODER + 48

11 ABS ENCODER - 49 31 ABS ENCODER - 49

12 STEP PULSE + (CW+) 7 32 STEP PULSE + (CW+) 7

13 STEP PULSE - (CW-) 8 33 STEP PULSE - (CW-) 8

14 STEP SIGN + (CCW+) 11 34 STEP PULSE + (CCW+) 11

15 STEP SIGN - (CCW-) 12 35 STEP PULSE - (CCW-) 12

16 Servo Alarm 입력 31 36 Servo Alarm 입력 31

17 24V 출력 47 37 24V 출력 47

18 Servo Power ON 출력 40 38 Servo Power ON 출력 40

19 Servo Alarm Reset 출력 44 39 Servo Alarm Reset 출력 44

20 24V GND 32,26 40 24V GND 32,26

SHIELD 콘넥터 셀 SHIELD 콘넥터 셀

ISA MMC-YASKAWA 결선도

표 4.7 MMC ISA 보드 - YASKAWA 결선도

Page 61: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 9註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT,SEN 등 필요한 결선을 하십시오.

YASKAWA SGDM형 Servo Drive와 MMC 보드 결선도

MMC-YASKAWA 결선도 ISA

그림 4.3 MMC ISA BOARD - YASKAWA 결선도

V/T-REF

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

2

3

4

5

6

7

8

9

sn75173

10

33

34

35

36

19

20

5

9

6

YASKAWA SGDM형MMC ISA 보드

LINE DRIVER

V-REF

T-REF

ANALOG 지령 입력 ->

D/A

PAO

PCO

PCO

PBO

PBO

PAO

SERVO PG출력1)

1)

1)

150Ω

150Ω12

7

11

8

PULSE

SIGN

PULSE

SIGN

S-ON

ALM RST

18 AMP En/Disable

19 AMP Fault Reset 44

40

47I/O SYNK (+24V)17

16 AMP Fault IN

20 I/O COM (24V GND) 32

31

I/O SYNK

ALM+

1 In-Position

20 I/O COM (24V GND) : P24V 일 경우 26

25

ALM-

COIN-

COIN+

4 . 7 K

4 . 7 K

ENC Z

ENC Z 10

11

48

49

PSO

PSO1)

( 3번 Pin 5V GND : P5V 일 경우 )

2)

CW +

CW -

CCW +

CCW - 15

12

13

14

sn75174 위치 PLUSE 입력 ->

1)

1)

SG

SG

Page 62: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 10

4.3.3 MITSUBISHI MR-J2 Series Servo Drive와 배선도

MMC

40핀 번호신호명

SERVO #1

CN 번호

MMC

40핀 번호신호명

SERVO #2

50핀 번호

1 위치결정 완료신호 입력 1A-18 21 위치결정 완료신호 입력 1A-18

2 ±10V Analog 출력 1B-2,1B-12 22 ±10V Analog 출력 1B-2,1B-12

3 5V GND 1B-1 23 5V GND 1B-1

4 ENCODER A+ 1A-6 24 ENCODER A+ 1A-6

5 ENCODER A- 1A-16 25 ENCODER A- 1A-16

6 ENCODER B+ 1A-7 26 ENCODER B+ 1A-7

7 ENCODER B- 1A-17 27 ENCODER B- 1A-17

8 ENCODER Z+ 1A-5 28 ENCODER Z+ 1A-5

9 ENCODER Z- 1A-15 29 ENCODER Z- 1A-15

10 ABS ENCODER + - 30 ABS ENCODER + -

11 ABS ENCODER - - 31 ABS ENCODER - -

12 STEP PULSE + (CW+) 1A-3 32 STEP PULSE + (CW+) 1A-3

13 STEP PULSE - (CW-) 1A-2 33 STEP PULSE - (CW-) 1A-2

14 STEP SIGN + (CCW+) 1A-13 34 STEP PULSE + (CCW+) 1A-13

15 STEP SIGN - (CCW-) 1A-12 35 STEP PULSE - (CCW-) 1A-12

16 Servo Alarm 입력 1B-18 36 Servo Alarm 입력 1B-18

17 24V 출력 1B-13 37 24V 출력 1B-13

18 Servo Power ON 출력 1B-5 38 Servo Power ON 출력 1B-5

19 Servo Alarm Reset 출력 1B-14 39 Servo Alarm Reset 출력 1B-14

20 24V GND 1A20,1B20 40 24V GND 1A20,1B20

SHIELD Plate SHIELD Plate

ISA MMC-MITSUBISHI 결선도

표 4.8 MMC ISA 보드 - MITSUBISHI 결선도

Page 63: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 11註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT 등 필요한 결선을 하십시오.

MITSUBISHI MR-J2 Series Servo Drive와 MMC 보드 결선도

Mitsubishi SERVOMMC ISA 보드

MMC-MITSUBISHI 결선도 ISA

그림 4.4 MMC ISA BOARD - MITSUBISHI 결선도

TLA

V/T-REF

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

2

3

4

5

6

7

8

9

sn75173

LINE DRIVER

ANALOG 지령 입력 ->

D/A

SERVO PG출력1)

1)

1)

150Ω

150Ω

18 AMP En/Disable

19 AMP Fault Reset

I/O SYNK (+24V)17

16 AMP Fault IN

20 I/O COM (24V GND)

I/O SYNK

1 In-Position

20 I/O COM (24V GND) : P24V 일 경우

4 . 7 K

4 . 7 K

( 3번 Pin 5V GND : P5V 일 경우 )

CW +

CW -

CCW +

CCW - 15

12

13

14

sn75174 위치 PLUSE 입력 ->

1)

1)

2)

1B-2 VC

1B-12

1A-3 PF+

1A-13 PF-

1A-2 PR+

1A-12 PR-

1A-6 LA

1A-16 LAR

1A-7 LB

1A-17 LBR

1A-5 LZ

1A-15 LZR

1B-13 COM

1B-5 SON

1B-14

1B-18 ALM

1B-20 SG

1A-18 INP

1A-20 SG

RES

Page 64: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 12

4.3.4 PANASONIC MINAS A Series Servo(콘넥터 CN I/F)와 배선도

MMC

40핀 번호신호명

SERVO #1

50핀 번호

MMC

40핀 번호신호명

SERVO #2

50핀 번호

1 위치결정 완료신호 입력 39 21 위치결정 완료신호 입력 39

2 ±10V Analog 출력 14 22 ±10V Analog 출력 14

3 5V GND 15 23 5V GND 15

4 ENCODER A+ 21 24 ENCODER A+ 21

5 ENCODER A- 22 25 ENCODER A- 22

6 ENCODER B+ 48 26 ENCODER B+ 48

7 ENCODER B- 49 27 ENCODER B- 49

8 ENCODER Z+ 23 28 ENCODER Z+ 23

9 ENCODER Z- 24 29 ENCODER Z- 24

10 ABS ENCODER + - 30 ABS ENCODER + -

11 ABS ENCODER - - 31 ABS ENCODER - -

12 STEP PULSE + (CW+) 3 32 STEP PULSE + (CW+) 3

13 STEP PULSE - (CW-) 4 33 STEP PULSE - (CW-) 4

14 STEP SIGN + (CCW+) 5 34 STEP PULSE + (CCW+) 5

15 STEP SIGN - (CCW-) 6 35 STEP PULSE - (CCW-) 6

16 Servo Alarm 입력 37 36 Servo Alarm 입력 37

17 24V 출력 7 37 24V 출력 7

18 Servo Power ON 출력 29 38 Servo Power ON 출력 29

19 Servo Alarm Reset 출력 31 39 Servo Alarm Reset 출력 31

20 24V GND 36,38 40 24V GND 36,38

SHIELD 50 SHIELD 50

ISA MMC-PANASONIC 결선도

표 4.9 MMC ISA 보드 - PANASONIC 결선도

Page 65: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 13註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT 등 필요한 결선을 하십시오.

PANASONIC MINAS A Series Servo(콘넥터 CN I/F)와 MMC 보드 결선도

Panasonic SERVOMMC ISA 보드

LINE DRIVERSERVO PG출력

MMC-PANASONIC 결선도 ISA

그림 4.5 MMC ISA BOARD - PANASONIC 결선도

V/T-REF

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

2

3

4

5

6

7

8

9

sn75173

LINE DRIVER

ANALOG 지령 입력 ->

D/A

SERVO PG출력1)

1)

1)

150Ω

150Ω

18 AMP En/Disable

19 AMP Fault Reset

I/O SYNK (+24V)17

16 AMP Fault IN

20 I/O COM (24V GND)

I/O SYNK

1 In-Position

20 I/O COM (24V GND) : P24V 일 경우

4 . 7 K

4 . 7 K

( 3번 Pin 5V GND : P5V 일 경우 )

CW +

CW -

CCW +

CCW - 15

12

13

14

sn75174 위치 PLUSE 입력 ->

1)

1)

2)

21

22

48

49

23

24

14

<F.G>

V/T-REF

6

3

5

4

50

PULSE

OA-

OZ

OZ-

OB

OB-

SIGN

PULSE-

SIGN-

OA

SV-ON

ALM CLR31

29

7

36

37 ALM OUT

38

39 COIN+

15 SG

COIN-

ALM OUT-

Page 66: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 14

MMC PCI 보드의 콘넥터 구성은 아래의 그림과 같다. 4개의 AMP(Servo) 콘넥터

(JP11,12,13,14)는 한 개당 2개의 SERVO 드라이버를 연결할 수 있다.

PCI 콘넥터 구성

그림 4.6 MMC PCI BOARD

PCI0,1축 AMP (JP12)

2,3축 AMP (JP34)

4,5축 AMP (JP56)

6,7축 AMP (JP78)

Limit Sensor Input(JP8)User Output (JP9)User Input (JP10)

MMC-ADIN 보드(JP3,4)

Analog IN

24V EXT

Position Compare/Capture Board

AXIS 1, AXIS 2

AXIS 5, AXIS 6AXIS 7, AXIS 8

AXIS 3, AXIS 4

그림 4.7 PCI BOARD Connector 배치

Page 67: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 15

핀 번호 신호명 축 핀 번호 신호명 축

1 5V GND 1축 2 5V GND 2축

3 - 1축 4 - 2축

5 ENCODER Z- 1축 6 ENCODER Z- 2축

7 ENCODER Z+ 1축 8 ENCODER Z+ 2축

9 ENCODER B- 1축 10 ENCODER B- 2축

11 ENCODER B+ 1축 12 ENCODER B+ 2축

13 ENCODER A- 1축 14 ENCODER A- 2축

15 ENCODER A+ 1축 16 ENCODER A+ 2축

17 ABS ENCODER - 1축 18 ABS ENCODER - 2축

19 ABS ENCODER + 1축 20 ABS ENCODER + 2축

21,23 - 1축 22,24 - 2축

25 I/O COM 1축 26 I/O COM 2축

27 AMP(Servo) Alarm 입력 1축 28 AMP(Servo) Alarm 입력 2축

29 위치결정 완료신호 입력 1축 30 위치결정 완료신호 입력 2축

31 - 1축 32 - 2축

33 I/O SYNK 1축 34 I/O SYNK 2축

35 5V GND 1축 36 5V GND 2축

37 ±10V Analog 출력 1축 38 ±10V Analog 출력 2축

39,41 - 1축 40,42 - 2축

43 STEP SIGN - (CCW-) 1축 44 STEP SIGN - (CCW-) 2축

45 STEP SIGN + (CCW+) 1축 46 STEP SIGN + (CCW+) 2축

47 STEP PULSE - (CW-) 1축 48 STEP PULSE - (CW-) 2축

49 STEP PULSE + (CW+) 1축 50 STEP PULSE + (CW+) 2축

51 POSITION CLEAR - 1축 52 POSITION CLEAR - 2축

53 POSITION CLEAR + 1축 54 POSITION CLEAR + 2축

55,57 - 1축 56,58 - 2축

59 I/O COM 1축 60 I/O COM 2축

61 AMP(Servo) Power ON 출력 1축 62 AMP(Servo) Power ON 출력 2축

63 AMP(Servo) Alarm Reset 출력 1축 64 AMP(Servo) Alarm Reset 출력 2축

65 - 1축 66 - 2축

67 I/O SYNK 1축 68 I/O SYNK 2축

4.4 PCI AMP 콘넥타 PIN 사양 (JP12,34,56,78)

AMP 콘텍터 PIN 설명 PCI

표 4.10 MMC PCI FULL SIZE 축콘넥타 PIN 사양

Connector 사양 (AXIS)

DESCRIPTION SPECCIFICATION MAKER

MMC Board Part HRDA-E68W1LFDT1EC-SL HONDA

Cable part Connector HDRA-E68MA1 HONDA

Cable part HOOD HDRA-E68LGKPE HONDA

Connector 사양 (LIMIT,IN,OUT)

DESCRIPTION SPECCIFICATION MAKER

MMC Board Part HIF3BA-40PA-2.54DS HRS

Cable part HIF3BA-40D-2.54R HRS

Page 68: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 16

4.5 PCI AMP 콘넥터 PIN 설명

핀 번호 신호명 설명

29위치결정 완료신호 입력

(In_Position)

1. Servo drive의 위치일치완료 신호를 입력 받는 Line입니다.

서보모터의 이동완료가 이루어지면 Servo Drive는 이 신호를

출력하게 됩니다.

2. 이동완료는 대부분 Servo Drive에서 설정한 '위치일치신호

출력폭'으로 설정한 값에 의해 설정이 됩니다.

3. MMC 는 위치일치완료 신호를 입력 받지 않은 경우 Motion이

완료되지 않았다고 가정을 하며 다음 모션을 수행하지 않습

니다.

4. 속도형으로 MMC를 사용하실 경우에는 이 신호는 입력이 무시

되어 집니다.

5. Drive에 따라 레벨을 조정하여 사용하실 수 있으며 관련

함수는 본 매뉴얼 함수편 A-102를 참조하여 주십시오.

37 ±10V Analog 출력

1. 16 bit Analog 출력 Line입니다.

2. 속도형 Servo Drive 일 경우 속도 지령을, 토크형 Servo dr-

ive 의 경우 토크 지령을 출력합니다.

(속도형, 토크형으로 설정해야함. 매뉴얼 7장 참조)

3. 임의의 Analog 전압 출력이 가능합니다.

관련 함수는 함수편 A-40 을 참조하여 주십시오.

4. ±10V 출력이며 최소 제어전압은 ±3V입니다.

1

355V GND

1. MMC TTL 레벨의 GND입니다.

2. Analog 출력 전압의 GND 이며 PC의 GND 와도 일치합니다.

3. 외부 배선시 NOISE 유입이 이루어 지지 않도록 배선하여

주시기 바랍니다.

15 ENCODER A+

1. Encoder 입력 Line 으로 Servo Drive나 외부 Encoder를 입력

받을 수 있으며 4체배 되어 입력됩니다.

2. 라인 리시버 입력(SN75173) 이며 MAX 5MHz 까지 입력이

가능합니다.

3. 보드별 4채널의 오픈 컬렉터 입력이 가능합니다. 4.7장 참조

13 ENCODER A-

11 ENCODER B+

9 ENCODER B-A 상

B 상

90°

Z 상

정회전시

A 상

B 상

90°

Z 상

역회전시

엔코더 위상 상태

SERVO DRIVE

P

P

P

R

MMC

A상

B상

Z상

SN75174

R

R

A상

B상

Z상

P 표시는

트위스트페어

를 의미함.

-Cab le은

반드시 실드

케이블을 사

용하십시오.

PCI AMP 콘텍터 PIN 설명

표 4.11 MMC PCI FULL SIZE 축콘넥타 PIN 설명

Page 69: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 17

논리

지령펄스형태

정 방향 운전 역 방향 운전

CW

+

CCW

펄스열

+

부호

CW

+

CCW

펄스열

+

부호

핀 번호 신호명 설명

7 ENCODER Z+1. 라인 리시버 입력으로 Servo Drive나 외부 Encoder에서 입력

을 받을 수 있습니다.

2. 결선 예는 4-16page A,B상을 참조하여 주십시오.

3. Motor 1회전에 1 Pulse 발생하며 관련 함수는 함수편 A-72를

참조하여 주시기 바랍니다.5 ENCODER Z-

19 ABS ENCODER +

1. 절대치 Encoder 입력 Line 으로 422 라인리시버 방식입니다.

2. 절대치 Encoder 입력을 사용하시기 위해서는 Serial Inter-

face 회로가 있는 MMC-AD11의 구입이 필수입니다.

3. MMC는 Full ABS Type이 아닙니다.

MMC Init 후에 절대치 Encoder를 MMC Count와 일치하여 쓰는

Half ABS Type 이며 관련 함수는 함수편 A-130을 참조하여

주시기 바랍니다.

4. 2002년 현재 삼성CSDJ 모델군과 YASKAWA 제품을 지원합니다.

17 ABS ENCODER -

49 STEP PULSE + (CW+)

1. 위치 지령 출력단으로 MAX 3.75MHz, Duty 50%, 출력 주파수

변동 단위 250Hz입니다.

2. CW/CCW Mode, Sign/Puls Mode 로 사용 가능합니다.

함수편 A-53 을 참조하여 주시기 바랍니다.

3. 정논리/부논리 출력 조정 가능하며 매뉴얼 7장 과 함수편

A-119을 참조하여 주십시요

47 STEP PULSE - (CW-)

45 STEP SIGN + (CCW+)

43 STEP SIGN - (CCW-)

SERVO DRIVE

P

P

P

MMC

A상

B상

Z상

P 는 트위스트 페어선을나타낸다

EA

EB

EC

R

R

R

PPS

RSeria

lData

MMC-AD11(Serial nterface

회로 내장)

Back upBattery

EB

EA

EC

PS

"L"PULS(CW)

SIGN(CCW)

"L"

"H" "L"

"H"

"H"

"L" "H"

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

PULS(CW)

SIGN(CCW)

AMP 콘텍터 PIN 설명 PCI

표 4.12 MMC PCI FULL SIZE 축콘넥타 PIN 설명

Page 70: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 18

핀 번호 신호명 설명

CW+

CW-

CCW+

CCW-

27 AMP(Servo) Alarm 입력

1. Servo Drive의 Error 발생 입력 Line 으로 AMP_Fault EVENT

를 설정할 수 있습니다. 함수편 A-76 을 참조하여 주시기

바랍니다.

2. 입력회로는 그림과 같습니다.

3. In-Position 입력 회로도 동일한 회로 구성을 가집니다.

4. Servo Drive의 신호 출력 Level 에 따라 조정이 가능합니다.

33

67I/O SYNK

1. AMP_Enable, AMP_Fault_Reset, AMP_Fault, In-position 의

동작 전원입니다.

2. 입력은 EXT24 콘넥터에

제품 구입시 공급되는

24V 용 Cable 을 이용하여

공급하여 주시기 바랍니다. (그림 참조)

3. Servo Drive 의 회로가 12V로 동작 되는 경우 12V를 공급

하여 주십시오.

SERVO DRIVE

PULS

SIGN

P

P

MMC

SIGN

PULS

LINE DRIVE 결선도

Open Collector 결선도

R 472

R 10K

Vcc24V

GND

PCI AMP 콘텍터 PIN 설명

표 4.13 MMC PCI FULL SIZE 축콘넥타 PIN 설명

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

1

2 3

4

EXT24

SERVO DRIVE

PULS

SIGN

Counter

MMC

SIGN

PULS

Counter

점퍼 설정으로 Open Collector 사용 가능(메뉴얼 4.7장 참조)

Alarm IN

Page 71: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 19

WARNING ! 외부에서 I/O SYNK 전원을 투입 할 때 역전압이 걸리지 않도록

주의 바랍니다. 역전압 인가로 인한 보드 파손의 우려가 있습니다.

핀 번호 신호명 설명

61 AMP(Servo) Power ON 출력

1. AMP_Enable Siginal 이 출력되는 Line입니다.

2. Enable Signal은 Disable 하기 전까지 신호가 출력이 되며

출력 Time은 50μsec 이하입니다.

3. 출력 Level은 조정 할 수가 있으며 관련 함수는 함수편

A-74를 참조하여 주십시오.

4. 회로 구성은 그림과 같습니다.

63 AMP(Servo) Alarm Reset 출력

1. AMP_Fault_Reset signal 이 출력되는 Line입니다.

2. Reset Signal은 명령 전달 후 10msec 동안 출력됩니다.

3. 출력 Level은 조정 할 수가 있으며 관련 함수는 함수편

A-76,A-77을 참조하여 주십시오.

4. 회로 구성은 그림과 같습니다.

25

59I/O COM

1. AMP_Enable, AMP_Fault_Reset, AMP_Fault, In-position

동작 전원의 Common 단자입니다.

51 POSITION CLEAR +

1. Servo drive의 위치편차를 clear 하는 기능으로 Drive에

기능이 지원되어야 합니다.

2. 출력 회로는 그림과 같습니다.

53 POSITION CLEAR -

R 331

Vcc

0V

Amp_Enable

SERVO DRIVE

Amp_Fault_Reset

R 331

Vcc

0V

SERVO DRIVE

SERVO DRIVE

P라인 드라이브

SN75174

MMCp_clear +

p_clear -

AMP 콘텍터 PIN 설명 PCI

표 4.14 MMC PCI FULL SIZE 축콘넥타 PIN 설명

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

1:ANODE

2:CATHODE

3:EMITTER

4:COLLECTOR

1

2 3

4

1

2 3

4

Page 72: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 20

MMC PCI

68Pin신호명

Servo

50Pin

MMC PCI

68Pin신호명

Servo

50Pin

1 5V GND 20,22 2 5V GND 20,22

3 - 4 -

5 ENCODER Z- 34 6 ENCODER Z- 34

7 ENCODER Z+ 33 8 ENCODER Z+ 33

9 ENCODER B- 32 10 ENCODER B- 32

11 ENCODER B+ 31 12 ENCODER B+ 31

13 ENCODER A- 30 14 ENCODER A- 30

15 ENCODER A+ 29 16 ENCODER A+ 29

17 ABS ENCODER - 36 18 ABS ENCODER - 36

19 ABS ENCODER + 35 20 ABS ENCODER + 35

21 - 22 -

23 - 24 -

25 I/O COM 42,46 26 I/O COM 42,46

27 Servo Alarm 입력 45 28 Servo Alarm 입력 45

29 위치결정 완료신호 입력 41 30 위치결정 완료신호 입력 41

31 - 32 -

33 I/O SYNK 1 34 I/O SYNK 1

35 5V GND 20,22 36 5V GND 20,22

37 ±10V Analog 출력 19,21 38 ±10V Analog 출력 19,21

39 - 40 -

41 - 42 -

43 STEP SIGN - (CCW-) 14 44 STEP SIGN - (CCW-) 14

45 STEP SIGN + (CCW+) 13 46 STEP SIGN + (CCW+) 13

47 STEP PULSE - (CW-) 12 48 STEP PULSE - (CW-) 12

49 STEP PULSE + (CW+) 11 50 STEP PULSE + (CW+) 11

51 POSITION CLEAR - 52 POSITION CLEAR -

53 POSITION CLEAR + 54 POSITION CLEAR +

55 - 56 -

57 - 58 -

59 I/O COM 42,46 60 I/O COM 42,46

61 Servo Power ON 출력 3 62 Servo Power ON 출력 3

63 Servo Alarm Reset 출력 7 64 Servo Alarm Reset 출력 7

65 - 66 -

67 I/O SYNK 1 68 I/O SYNK 1

4.6.1 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도

註 1) 24V 출력 및 24V GND는 I/O SYNK,I/O COM 콘넥타를 외부 24V SMPS에 배선을 해야

사용하실수 있습니다. (배선도 : 4.6절 참조) 역전압 인가 주의!

1)

1)

1)

1)

1)

1)

1)

1)

PCI MMC-CSDJ 결선도

표 4.15 MMC PCI 보드 - SAMSUNG CSDJ 결선도

4.6 삼성 대용량(CSDP), CSDJ Servo Drive와 배선도

Page 73: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 21註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선도에 따른 Cable 제품 코드는 MMC-CAAX3P2203 입니다.

3) 결선에 사용하시는 Cable은 판매되는 Cable을 사용하실 것을 권장합니다.

삼성 대용량 일체형(CSDP), CSDJ Servo Drive와 MMC 보드 결선도

대용량(CSDP),CSDJ SERVOMMC PCI 보드

MMC-CSDJ 결선도 PCI

그림 4.8 MMC PCI BOARD - SAMSUNG CSDJ 결선도

V/T-REF

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

1,35

37

15

13

11

9

7

5

sn75173

22

29

30

31

32

33

34

19

21

20

LINE DRIVER

<F.G>

V-REF

T-REF

ANALOG 지령 입력 ->

50

D/A

EA

EZ

EZ

EB

EB

EA

SERVO PG출력1)

1)

1)

150Ω

150Ω

CW +

CW -

CCW +

CCW - 43

49

47

14

11

13

12

45

PULSE

SIGN

PULSE

SIGN

sn75174 위치 PLUSE 입력 ->

1)

1)

SV-ON

ALM RST

61 AMP En/Disable

63 AMP Fault Reset 7

3

1I/O SYNK (+24V)33,67

27 AMP Fault IN

25,59 I/O COM (24V GND) 46

45

I/O SYNK

SALM+

29 In-Position

25,59 I/O COM (24V GND) 42

41

SALM-

P-COM-

P-COM+

4 . 7 K

4 . 7 K

ABS -

ABS + 19

17

35

36

EZ

EZ1)

P-clear+

51

53

P-clear-

5V GND

Page 74: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 22

MMC PCI

68Pin신호명

Servo

50Pin

MMC PCI

68Pin신호명

Servo

50Pin

1 5V GND 20,22 2 5V GND 20,22

3 - - 4 - -

5 ENCODER Z- 34 6 ENCODER Z- 34

7 ENCODER Z+ 33 8 ENCODER Z+ 33

9 ENCODER B- 33 10 ENCODER B- 33

11 ENCODER B+ 31 12 ENCODER B+ 31

13 ENCODER A- 30 14 ENCODER A- 30

15 ENCODER A+ 29 16 ENCODER A+ 29

17 ABS ENCODER - 36 18 ABS ENCODER - 36

19 ABS ENCODER + 35 20 ABS ENCODER + 35

21 - - 22 - -

23 - - 24 - -

25 I/O COM 42,46 26 I/O COM 42,46

27 Servo Alarm 입력 45 28 Servo Alarm 입력 45

29 위치결정 완료신호 입력 41 30 위치결정 완료신호 입력 41

31 - - 32 - -

33 I/O SYNK 1,2 34 I/O SYNK 1,2

35 5V GND 20,22 36 5V GND 20,22

37 ±10V Analog 출력 19,21 38 ±10V Analog 출력 19,21

39 - - 40 - -

41 - - 42 - -

43 STEP SIGN - (CCW-) 14 44 STEP SIGN - (CCW-) 14

45 STEP SIGN + (CCW+) 13 46 STEP SIGN + (CCW+) 13

47 STEP PULSE - (CW-) 12 48 STEP PULSE - (CW-) 12

49 STEP PULSE + (CW+) 11 50 STEP PULSE + (CW+) 11

51 POSITION CLEAR - 16 52 POSITION CLEAR - 16

53 POSITION CLEAR + 15 54 POSITION CLEAR + 15

55 - - 56 - -

57 - - 58 - -

59 I/O COM 42,46 60 I/O COM 42,46

61 Servo Power ON 출력 3 62 Servo Power ON 출력 3

63 Servo Alarm Reset 출력 4 64 Servo Alarm Reset 출력 4

65 - - 66 - -

67 I/O SYNK 1,2 68 I/O SYNK 1,2

4.6.2 삼성 CSD3 Servo Drive와 배선도

註 1) 외부 24V SMPS에 배선을 해야 사용하실수 있습니다. (배선도 : 4.6절 참조)

2) I/O 입출력 사양은 Servo Drive에서 임의 조정 가능합니다.

1)

1)

1)

1)

2)

2)

2)

2)

1)

1)

1)

1)

2)

2)

2)

2)

PCI MMC-CSD3 결선도

표 4.16 MMC PCI 보드 - SAMSUNG CSD3 결선도

Page 75: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 23註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선도에 따른 Cable 제품 코드는 MMC-CAAX3P2203 입니다.

3) 결선에 사용하시는 Cable은 판매되는 Cable을 사용하실 것을 권장합니다.

삼성 CSD3 Servo Drive와 MMC 보드 결선도

삼성 CSD3 SERVOMMC PCI 보드

MMC-CSD3 결선도 PCI

그림 4.9 MMC PCI BOARD - SAMSUNG CSD3 결선도

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

15

13

11

9

7

5

sn75173

22

29

30

31

32

33

34

19

21

20

LINE DRIVER

<F.G>

V-REF

T-REF

ANALOG 지령 입력 ->

50

D/A

EA

EZ

EZ

EB

EB

EA

SERVO PG출력1)

1)

1)

150Ω

150Ω

CW +

CW -

CCW +

CCW - 43

49

47

14

11

13

12

45

PULSE

SIGN

PULSE

SIGN

sn75174 위치 PLUSE 입력 ->

1)

1)

SV-ON

ALM RST

61 AMP En/Disable

63 AMP Fault Reset 7

3

1,2I/O SYNK (+24V)33,67

27 AMP Fault IN

25,59 I/O COM (24V GND) 46

45

I/O SYNK

SALM+

29 In-Position

25,59 I/O COM (24V GND) 42

41

SALM-

P-COM-

P-COM+

4 . 7 K

4 . 7 K

19

17

35

36

EZ

EZ1)

P-clear+

51

53

P-clear-150Ω

16

15 PCLR

PCLR

ABS -

ABS +

V/T-REF

5V GND

37

1,35

Page 76: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 24

4.6.3 YASKAWA SERVOPACK SGDM형 Servo Drive와 배선도

MMC PCI

68Pin신호명

Servo

50Pin

MMC PCI

68Pin신호명

Servo

50Pin

1 5V GND 6,10 2 5V GND 6,10

3 - 4 -

5 ENCODER Z- 20 6 ENCODER Z- 20

7 ENCODER Z+ 19 8 ENCODER Z+ 19

9 ENCODER B- 36 10 ENCODER B- 36

11 ENCODER B+ 35 12 ENCODER B+ 35

13 ENCODER A- 34 14 ENCODER A- 34

15 ENCODER A+ 33 16 ENCODER A+ 33

17 ABS ENCODER - 49 18 ABS ENCODER - 49

19 ABS ENCODER + 48 20 ABS ENCODER + 48

21 - 22 -

23 - 24 -

25 I/O COM 32,26 26 I/O COM 32,26

27 Servo Alarm 입력 31 28 Servo Alarm 입력 31

29 위치결정 완료신호 입력 25 30 위치결정 완료신호 입력 25

31 - 32 -

33 I/O SYNK 47 34 I/O SYNK 47

35 5V GND 6,10 36 5V GND 6,10

37 ±10V Analog 출력 5,9 38 ±10V Analog 출력 5,9

39 - 40 -

41 - 42 -

43 STEP SIGN - (CCW-) 12 44 STEP SIGN - (CCW-) 12

45 STEP SIGN + (CCW+) 11 46 STEP SIGN + (CCW+) 11

47 STEP PULSE - (CW-) 8 48 STEP PULSE - (CW-) 8

49 STEP PULSE + (CW+) 7 50 STEP PULSE + (CW+) 7

51 POSITION CLEAR - 52 POSITION CLEAR -

53 POSITION CLEAR + 54 POSITION CLEAR +

55 - 56 -

57 - 58 -

59 I/O COM 32,26 60 I/O COM 32,26

61 Servo Power ON 출력 40 62 Servo Power ON 출력 40

63 Servo Alarm Reset 출력 44 64 Servo Alarm Reset 출력 44

65 - 66 -

67 I/O SYNK 47 68 I/O SYNK 47

SHIELD 콘넥터 셀 SHIELD 콘넥터 셀

1)

1)

1)

1)

1)

1)

1)

1)

註 1) 24V 출력 및 24V GND는 I/O SYNK,I/O COM 콘넥타를 외부 24V SMPS에 배선을 해야

사용하실수 있습니다. (배선도 : 4.6절 참조)

PCI MMC-YASKAWA 결선도

표 4.17 MMC PCI 보드 - YASKAWA 결선도

Page 77: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 25註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT,SEN 등 필요한 결선을 하십시오.

YASKAWA SGDM형 Servo Drive와 MMC 보드 결선도

MMC-YASKAWA 결선도 PCI

그림 4.10 MMC PCI BOARD - YASKAWA 결선도

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

15

13

11

9

7

5

sn75173

LINE DRIVER

ANALOG 지령 입력 ->

D/A

SERVO PG출력1)

1)

1)

150Ω

150Ω

CW +

CW -

CCW +

CCW - 43

49

47

45

sn75174 위치 PLUSE 입력 ->

1)

1)

61 AMP En/Disable

63 AMP Fault Reset

I/O SYNK (+24V)33,67

27 AMP Fault IN

25,59 I/O COM (24V GND)

I/O SYNK

29 In-Position

25,59 I/O COM (24V GND)

4 . 7 K

4 . 7 K

19

17

1)

P-clear+

51

53

P-clear-

YASKAWA SGDM SERVOMMC PCI 보드

10

5

9

6

V-REF

T-REF

SG

SG

12

7

11

8

PULSE

SIGN

PULSE

SIGN

33

34

35

36

19

20

PAO

PCO

PCO

PBO

PBO

PAO

S-ON

ALM RST44

40

47

32

31 ALM+

26

25

ALM-

COIN-

COIN+

48

49

PSO

PSO

150Ω 1)

14

15 CLR

CLR

ABS -

ABS +

2)

V/T-REF

5V GND

37

1,35

Page 78: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 26

4.6.4 MITSUBISHI MR-J2 Series Servo Drive와 배선도

MMC PCI

68Pin신호명

SERVO #1

CN 번호

MMC PCI

68Pin신호명

SERVO #2

CN 번호

1 5V GND 1B-1 2 5V GND 1B-1

3 - - 4 - -

5 ENCODER Z- 1A-15 6 ENCODER Z- 1A-15

7 ENCODER Z+ 1A-5 8 ENCODER Z+ 1A-5

9 ENCODER B- 1A-17 10 ENCODER B- 1A-17

11 ENCODER B+ 1A-7 12 ENCODER B+ 1A-7

13 ENCODER A- 1A-16 14 ENCODER A- 1A-16

15 ENCODER A+ 1A-6 16 ENCODER A+ 1A-6

17 ABS ENCODER - - 18 ABS ENCODER - -

19 ABS ENCODER + - 20 ABS ENCODER + -

21 - - 22 - -

23 - - 24 - -

25 I/O COM 1A20,1B20 26 I/O COM 1A20,1B20

27 Servo Alarm 입력 1B-18 28 Servo Alarm 입력 1B-18

29 위치결정 완료신호 입력 1A-18 30 위치결정 완료신호 입력 1A-18

31 - - 32 - -

33 I/O SYNK 1B-13 34 I/O SYNK 1B-13

35 5V GND 1B-1 36 5V GND 1B-1

37 ±10V Analog 출력 1B-2,1B-12 38 ±10V Analog 출력 1B-2,1B-12

39 - - 40 - -

41 - - 42 - -

43 STEP SIGN - (CCW-) 1A-12 44 STEP SIGN - (CCW-) 1A-12

45 STEP SIGN + (CCW+) 1A-13 46 STEP SIGN + (CCW+) 1A-13

47 STEP PULSE - (CW-) 1A-2 48 STEP PULSE - (CW-) 1A-2

49 STEP PULSE + (CW+) 1A-3 50 STEP PULSE + (CW+) 1A-3

51 POSITION CLEAR - - 52 POSITION CLEAR - -

53 POSITION CLEAR + - 54 POSITION CLEAR + -

55 - - 56 - -

57 - - 58 - -

59 I/O COM 1A20,1B20 60 I/O COM 1A20,1B20

61 Servo Power ON 출력 1B-5 62 Servo Power ON 출력 1B-5

63 Servo Alarm Reset 출력 1B-14 64 Servo Alarm Reset 출력 1B-14

65 - - 66 - -

67 I/O SYNK 1B-13 68 I/O SYNK 1B-13

SHIELD Plate SHIELD Plate

1)

1)

1)

1)

1)

1)

1)

1)

註 1) 24V 출력 및 24V GND는 I/O SYNK,I/O COM 콘넥타를 외부 24V SMPS에 배선을 해야

사용하실수 있습니다. (배선도 : 4.6절 참조)

PCI MMC-MITSUBISHI 결선도

표 4.18 MMC PCI 보드 - MITSUBISHI 결선도

Page 79: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 27註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT 등 필요한 결선을 하십시오.

MITSUBISHI MR-J2 Series Servo Drive와 MMC 보드 결선도

MMC-MITSUBISHI 결선도 PCI

그림 4.11 MMC PCI BOARD - MITSUBISHI 결선도

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

15

13

11

9

7

5

sn75173

LINE DRIVER

ANALOG 지령 입력 ->

D/A

SERVO PG출력1)

1)

1)

CW +

CW -

CCW +

CCW - 43

49

47

45

sn75174 위치 PLUSE 입력 ->

1)

1)

61 AMP En/Disable

63 AMP Fault Reset

I/O SYNK (+24V)33,67

27 AMP Fault IN

25,59 I/O COM (24V GND)

I/O SYNK

29 In-Position

25,59 I/O COM (24V GND)

4 . 7 K

4 . 7 K

19

17

P-clear+

51

53

P-clear-

Mitsubishi SERVOMMC PCI 보드

TLA

1B-2 VC

1B-12

150Ω

150Ω

1A-3 PF+

1A-13 PF-

1A-2 PR+

1A-12 PR-

1A-6 LA

1A-16 LAR

1A-7 LB

1A-17 LBR

1A-5 LZ

1A-15 LZR

1B-13 COM

1B-5 SON

1B-14

1B-18 ALM

1B-20 SG

1A-18 INP

1A-20 SG

RES

ABS -

ABS +

2)

V/T-REF

5V GND

37

1,35

Page 80: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 28

4.6.5 PANASONIC MINAS A Series Servo(콘넥터 CN I/F)와 배선도

MMC PCI

68Pin신호명

SERVO

50Pin

MMC PCI

68Pin신호명

SERVO

50Pin

1 5V GND 15 2 5V GND 15

3 - - 4 - -

5 ENCODER Z- 24 6 ENCODER Z- 24

7 ENCODER Z+ 23 8 ENCODER Z+ 23

9 ENCODER B- 49 10 ENCODER B- 49

11 ENCODER B+ 48 12 ENCODER B+ 48

13 ENCODER A- 22 14 ENCODER A- 22

15 ENCODER A+ 21 16 ENCODER A+ 21

17 ABS ENCODER - - 18 ABS ENCODER - -

19 ABS ENCODER + - 20 ABS ENCODER + -

21 - - 22 - -

23 - - 24 - -

25 I/O COM 36,38 26 I/O COM 36,38

27 Servo Alarm 입력 37 28 Servo Alarm 입력 37

29 위치결정 완료신호 입력 39 30 위치결정 완료신호 입력 39

31 - - 32 - -

33 I/O SYNK 7 34 I/O SYNK 7

35 5V GND 15 36 5V GND 15

37 ±10V Analog 출력 14 38 ±10V Analog 출력 14

39 - - 40 - -

41 - - 42 - -

43 STEP SIGN - (CCW-) 6 44 STEP SIGN - (CCW-) 6

45 STEP SIGN + (CCW+) 5 46 STEP SIGN + (CCW+) 5

47 STEP PULSE - (CW-) 4 48 STEP PULSE - (CW-) 4

49 STEP PULSE + (CW+) 3 50 STEP PULSE + (CW+) 3

51 POSITION CLEAR - - 52 POSITION CLEAR - -

53 POSITION CLEAR + - 54 POSITION CLEAR + -

55 - - 56 - -

57 - - 58 - -

59 I/O COM 36,38 60 I/O COM 36,38

61 Servo Power ON 출력 29 62 Servo Power ON 출력 29

63 Servo Alarm Reset 출력 31 64 Servo Alarm Reset 출력 31

65 - - 66 - -

67 I/O SYNK 7 68 I/O SYNK 7

SHIELD 50 SHIELD 50

1)

1)

1)

1)

1)

1)

1)

1)

註 1) 24V 출력 및 24V GND는 I/O SYNK,I/O COM 콘넥타를 외부 24V SMPS에 배선을 해야

사용하실수 있습니다. (배선도 : 4.6절 참조)

PCI MMC-PANASONIC 결선도

표 4.18 MMC PCI 보드 - PANASONIC 결선도

Page 81: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 29註 1) " " 표시는 TWIST PAIR 표시합니다.

2) 상기 결선은 MMC 기준입니다. POT,NOT 등 필요한 결선을 하십시오.

PANASONIC MINAS A Series Servo(콘넥터 CN I/F)와 MMC 보드 결선도

MMC-PANASONIC 결선도 PCI

그림 4.12 MMC PCI BOARD - PANASONIC 결선도

ENC A

ENC A

ENC B

ENC B

ENC Z

ENC Z

15

13

11

9

7

5

sn75173

LINE DRIVER

ANALOG 지령 입력 ->

D/A

SERVO PG출력1)

1)

1)

CW +

CW -

CCW +

CCW - 43

49

47

45

sn75174 위치 PLUSE 입력 ->

1)

1)

61 AMP En/Disable

63 AMP Fault Reset

I/O SYNK (+24V)33,67

27 AMP Fault IN

25,59 I/O COM (24V GND)

I/O SYNK

29 In-Position

25,59 I/O COM (24V GND)

4 . 7 K

4 . 7 K

19

17

P-clear+

51

53

P-clear-

Panasonic SERVOMMC PCI 보드

TLA

1B-2 VC

1B-12

150Ω

150Ω

1A-3 PF+

1A-13 PF-

1A-2 PR+

1A-12 PR-

1A-6 LA

1A-16 LAR

1A-7 LB

1A-17 LBR

1A-5 LZ

1A-15 LZR

1B-13 COM

1B-5 SON

1B-14

1B-18 ALM

1B-20 SG

1A-18 INP

1A-20 SG

RES

ABS -

ABS +

2)

V/T-REF

5V GND

37

1,35

Page 82: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 30

4.7 OPEN Collector 타입 ENCODER 사용시 결선 및 JUMP핀 배치

MMC 보드는 기본적으로 LINE DRIVER방식의 ENCODER를 지원한다. 단 0축에서 3축까지만 LINE DRIVER

방식과 OPEN COLLECTOR방식을 모두 지원하도록 설계되어 있다. OPEN COLLECTOR방식을 사용할 경우에는

ENCODER선의 결선방식과 MMC보드에서의 JUMP핀을 아래의 그림과 같이 배치하여야 정상동작을 한다.

4.7.1 ENCODER핀의 결선도(Pin 번호는 ISA 보드를 예입니다.)

4.7.2 JUMP핀의 배치도

ENJ11

전원

A

B

Z

GND

GND

5VENCODER A+ (4,24번 핀)

ENCODER B+ (6,26번 핀)

ENCODER Z+ (8,28번 핀)

5V GND (3,23번 핀) 외부전원

MMC 축 CABLE ENCODER

ENJ11 ‾ ENJ43

ISA PCI

ENJ11 ‾ ENJ43

ENJ12 ENJ13 ENJ21 ENJ22 ENJ23 ENJ31 ENJ32 ENJ33 ENJ41 ENJ42 ENJ43

ENJ11 ENJ11

LIND DRIVE

방식

OPEN COLLECTOR

방식

Jumper Funct ion Jumper Funct ion

ENJ11 1축 A상 ENJ31 3축 A상

ENJ12 1축 B상 ENJ32 3축 B상

ENJ13 1축 Z상 ENJ33 3축 Z상

ENJ21 2축 A상 ENJ41 4축 A상

ENJ22 2축 B상 ENJ42 4축 B상

ENJ23 2축 Z상 ENJ43 4축 Z상

Open Collector Encoder 결선

그림 4.13 Encoder PIN 의 결선도

그림 4.14 JUMPER Pin 의 출하 설정

그림 4.15 JUMPER Pin 의 설정 방법

표 4.19 JUMPER PIN 설명

註 1) PCI Board 를 사용하시는 분은 4-15page 사양서를 참조하여 결선하시기 바랍니다.

1)

Page 83: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 31

WARNING !외부에서 I/O SYNK 전원을 투입 할 때 역전압이 걸리지 않도록 주의해 주십시오.

역전압 인가로 인한 보드 파손의 우려가 있습니다.

4.8 I/O SYNK,I/O COM 콘넥타 배선

AMP(Servo) En/Disable, Alarm Reset, Alarm 입력등의 신호가 24V DC전원을 필요로 하는 AMP 사용

시에 24V 전원은 외부에서 공급을 하여야 하며 배선 방법은 MMC 보드 구입시 제공되는 4핀 CABLE를

이용하며 결선방법은 다음과 같다.

[MMC보드쪽 4핀 콘넥타] [4핀 CABLE]

외부전원

GND

24V

검은색선

빨간색선

24V EXT

ISA PCI

24V EXT

註 1) AMP가 24V로 제어되지 않고, 12V 또는 15V로 제어되는 SERVO일경우 4핀 콘넥타에

외부전원을 24V가 아닌 12V 또는 15V용 외부전원을 연결하여 사용하실 수 있습니다.

1)

I/O SYNK,I/O COM 결선

그림 4.16 외부 24V 공급 콘넥타 위치

그림 4.17 외부 24V 공급 콘넥타 결선 방법

Page 84: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 32

1.외형도

2.케이블 절단 및 외피 탈피 사양

3.Shield 사양

4. 사용자재 목록

CON.A CON.B

CON.C3000±100

2900±100 3060 3

2900±100 3060

CON.A

CON.B

50

※ Shield 선을 UL1007 APPROVED WIRE(AWG28,녹색)과 연결한다. 이때 연결부에 수축 TUBE를

씌워 단락을 방지 한다.

연결한 WIRE의 다른 쪽은 CON.B와 CON.C의 50번핀과 연결 한다.역시 연결부에 수축 TUBE를

씌워 단락을 방지한다.

※ 케이블의 Shield를 CON.B와 CON.C의 접지플레이트와 연결하여 케이스와 접지한다.

50

CON.C

3

DESCRIPTION SPECCIFICATION MAKER Q'TY REMARK

CONNECTOR HIF3BA-40D-2.54R HRS 1 CON.A:MMC-INA

CONNECTOR 10150-3000VE3M

2EA CON.B:SERVO1

HOOD 10350-52A0-008 2EA CON.C:SERVO2

수축 TUBE 2ψ, 흑색 UL APPROVED 0.1M

CABLE UL2969-SB 10P*28AWG LG 6.2M

WIRE UL1007 AWG#28(녹색) UL APPROVED 제작사양 참조

참조 .. ISA 보드용 축케이블 제작 사양서(to SAMSUNG CSDJ Plus)

Page 85: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 33

5.제작 사양

6.제작 요령 및 주의사항

가. 케이블은 길이“L”의 공차 이내로 정확히 절단하여 도표와 같이 외피를 탈피한다.

나. CON.B,CON.C는 외피 탈피 길이에 준하여 피복을 벗긴후 TWIST하여 예비 SOLDERING한다

다. CON.B와 CON.C는 CONNECTOR의 CONTACT에 납땜한다. 이때 각 핀마다 수축 TUBE를 씌워

SHORT를 방지한다.

라. CON.B와 CON.C는 CABLE이 헐겁지 않도록 고무 PACKING을 끼워 조립한다.(CABLE CLAMP역할)

마. 결선 완료후 CONNECTOR를 조립하고 각각 제작 사양의 LABEL을 부착한다.

MMC-INA SERVO2

PIN NO SIG NAME PIN NO

21 PCIN 41

22 ANALOG OUT 19,21

23 GND 20,22

24 A+(IN) 29

25 A-(IN) 30

26 B+(IN) 31

27 B-(IN) 32

28 Z+(IN) 33

29 Z-(IN) 34

30 ABS+(OUT) 35

31 ABS-(-) 36

32 STEP PLUS+(OUT) 11

33 STEP PLUS-(OUT) 12

34 STEP DIR+(OUT) 13

35 STEP DIR-(OUT) 14

36 SERVO ERR IN 45

37 +24V 1

38 SERVO ON OUT 3

39 SERVO ERR RST OUT 7

40 24G 42,46

SHIFLD 50

MMC-INA SERVO1

PIN NO SIG NAME PIN NO

1 PCIN 41

2 ANALOG OUT 19,21

3 GND 20,22

4 A+(IN) 29

5 A-(IN) 30

6 B+(IN) 31

7 B-(IN) 32

8 Z+(IN) 33

9 Z-(IN) 34

10 ABS+(IN) 35

11 ABS-(-) 36

12 STEP PLUS+(OUT) 11

13 STEP PLUS-(OUT) 12

14 STEP DIR+(OUT) 13

15 STEP DIR-(OUT) 14

16 SERVO ERR IN 45

17 +24V 1

18 SERVO ON OUT 3

19 SERVO ERR RST OUT 7

20 24G 42,46

SHIFLD 50

" "표시는 반드시 TWIST 처리 할 것.

참조 .. ISA 보드용 축케이블 제작 사양서(to SAMSUNG CSDJ Plus)

Page 86: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 34

1.외형도

2.케이블 절단 및 외피 탈피 사양

3.Shield 사양

4. 사용자재 목록

CON.A

CON.B

50

50

CON.C

DESCRIPTION SPECCIFICATION MAKER Q'TY REMARK

CONNECTOR HDRA-E68MA1HONDA

1 CON.A: MMC

HOOD HDRA-E68LGKPE 1 CONNECTOR

10150-3000VE 3M2EA

CON.B:SERVO1 HOOD

10350-52A0-008 2EA CON.C:SERVO2 수축 TUBE

2ψ, 흑색 UL APPROVED 0.1M CABLE

20276-SB 13P*30AWG EAST WEST ELECTRIC WIRE 6.2M

CON.B

CON.C3000±100

CON.A

2900±100 3030

2900±100 3030

3

3

케이블 쉴드를 꼬은것

수축 TUBE를 씌운다별도 F.G선을 납땜하여 연결 한다.

※ CABLE의 Shield를 CON.A,CON.B와 CON.C의 접지플레이트와 연결하여 케이스와 접지한

다.

참조 .. PCI 보드용 축케이블 제작 사양서(to SAMSUNG CSD3)

Page 87: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter4

AMP(SERVO)배선

4 - 35

5.제작 사양

6.제작 요령 및 주의사항

가. 케이블은 길이“L”의 공차 이내로 정확히 절단하여 도표와 같이 외피를 탈피한다.

나. CON.B,CON.C는 외피 탈피 길이에 준하여 피복을 벗긴후 TWIST하여 예비 SOLDERING한다

다. CON.B와 CON.C는 CONNECTOR의 CONTACT에 납땜한다. 각 핀마다 수축TUBE를 씌워 SHORT를 방지한다.

라. CON.B와 CON.C는 CABLE이 헐겁지 않도록 고무 PACKING을 끼워 조립한다.(CABLE CLAMP역할)

마. CON.B, CON.C의 SHIELD는 HOOD데 접지 시킨다.

바. 결선 완료후 CONNECTOR를 조립하고 각각 제작 사양의 LABEL을 부착한다.

MMC-PCI AXIS SERVO2

NO. SIG NAME NO. COLOR

2 5V GND 20,22 백색

6 ENC Z- 34 회색

8 ENC Z+ 33 회색점

10 ENC B- 32 갈색

12 ENC B+ 31 갈점

14 ENC A- 30 적색

16 ENC A+ 29 적점

18 ABS ENC- 36 청색

20 ABS ENC+ 35 청점

26 24V GND 10,42,46 살색

28 SERVO ALARM 입력 45 살색점

30 In_position 입력 41 흑색

34 24V 출력 1,2 흑색점

36 5V GND 20,22 녹색

38 ± 10V ANALOG 출력 19,21 녹색점

44 STEP SIGN - (CCW-) 14 황색

46 STEP SIGN + (CCW+) 13 황색점

48 STEP PULSE - (CW-) 12 주황색

50 STEP PULSE + (CW+) 11 주황색점

52 Position Clear + 16

54 Position clear - 15

60 24V GND 10,42,46 황색-흰점

62 SERVO POWER ON출력 3 회색-흰점

64 ALARM RESET 출력 4 갈색-흰점

68 24V 출력 1,2 주황-흰점

Shield Con cell

MMC-PCI AXIS SERVO1

NO. SIG NAME NO. COLOR

1 5V GND 20,22 백색

5 ENC Z- 34 회색

7 ENC Z+ 33 회색점

9 ENC B- 32 갈색

11 ENC B+ 31 갈점

13 ENC A- 30 적색

15 ENC A+ 29 적점

17 ABS ENC- 36 청색

19 ABS ENC+ 35 청점

25 24V GND 10,42,46 살색

27 SERVO ALARM 입력 45 살색점

29 In_position 입력 41 흑색

33 24V 출력 1,2 흑색점

35 5V GND 20,22 녹색

37 ± 10V ANALOG 출력 19,21 녹색점

43 STEP SIGN - (CCW-) 14 황색

45 STEP SIGN + (CCW+) 13 황색점

47 STEP PULSE - (CW-) 12 주황색

49 STEP PULSE + (CW+) 11 주황색점

51 Position Clear + 16

53 Position clear - 15

59 24V GND 10,42,46 황색-흰점

61 SERVO POWER ON출력 3 회색-흰점

63 ALARM RESET 출력 4 갈색-흰점

67 24V 출력 1,2 주황-흰점

Shield Con cell

" "표시는 반드시 TWIST 처리 할 것.

참조 .. PCI 보드용 축케이블 제작 사양서(to SAMSUNG CSD3)

Page 88: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 36

MEMO

Page 89: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 37

MEMO

Page 90: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4 - 38

MEMO

Page 91: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

 제 5 장

LIMIT,I/O,A/D 배선

5.1 Limit Sensor 입력 콘넥타 Pin 사양 (JP8) 5-1 page

5.2 사용자 I/O 출력 콘넥타 Pin 사양 (JP9) 5-2 page

5.3 사용자 I/O 입력 콘넥타 Pin 사양 (JP10) 5-4 page

5.4 ADC 입력 콘넥타 Pin 사양 (JP5)

5.4.1 ADC 입력 콘넥타 Pin 사양 (JP5) 5-6 page

5.4.2 MMC-AD11 사양 5-7 page

5.5 MMC-LIMIT OPTION 모듈

5.5.1 OUTPUT모듈 회로도 5-7 page

5.5.2 OUTPUT모듈 Terminal Block 핀사양 5-8 page

5.6 MMC-OUTPUT OPTION 모듈

5.6.1 OUTPUT모듈 회로도 5-9 page

5.6.2 OUTPUT모듈 Terminal Block 핀사양 5-9 page

5.7 MMC-INPUT OPTION 모듈

5.7.1 INPUT모듈 회로도 5-10 page

5.7.2 INPUT모듈 Terminal Block 핀사양 5-10 page

Page 92: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

LIMIT,I/O,A/D배선

5 - 1

註 전원부가 +5V를 사용하는 photo sensor의 경우 전류용량을 반드시 획인후 결선하시기 바랍니다.

PC쪽의 Power Supply용량이 +5V인 경우 대부분이 3A 이상 이므로 과전류로 인해 photo diode가

손상을 입는 경우가 있습니다.

MMC보드 I/O는 User I/O 각32점, Limit Sensor 입력 32점, ADC 입력 4채널을 제공한다.

User I/O 입력 콘넥타는 JP10, 출력 콘넥타는 JP9, Limit Sensor 입력 콘넥타는 JP8, ADC

입력 콘넥타는 JP5이다.

5.1 Limit Sensor 입력 콘넥타 Pin 사양 (JP8)

핀 번호 신호명 핀 번호 신호명 핀 번호 신호명 핀 번호 신호명

1 +5V 출력 11 +5V 출력 21 +5V 출력 31 +5V 출력

2 0축 +limit 12 2축 +limit 22 4축 +limit 32 6축 +limit

3 0축 Home 13 2축 Home 23 4축 Home 33 6축 Home

4 0축 -limit 14 2축 +limit 24 4축 +limit 34 6축 +limit

5 GND 15 GND 25 GND 35 GND

6 +5V 출력 16 +5V 출력 26 +5V 출력 36 +5V 출력

7 1축 +limit 17 3축 +limit 27 5축 +limit 37 7축 +limit

8 1축 Home 18 3축 Home 28 5축 Home 38 7축 Home

9 1축 -limit 19 3축 -limit 29 5축 -limit 39 7축 -limit

10 GND 20 GND 30 GND 40 GND

표 5.1 JP8의 Limit 입력 Pin 사양

LIMIT PIN 사양

PCI

ISA

LIMIT

OUTPUT

INPUT

그림 5.1 MODULE 결선 위치

LIMIT

OUTPUT

INPUT

Page 93: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 2

5.2 사용자 I/O 출력 콘넥타 Pin 사양 (JP9)

I/O 의 결선시 MMC Option(MMC-OU11) 의 사용을 적극 권장합니다.

Option Module 의 사용이 여의치 않으실 경우 다음 페이지의 결선도에 따라 결선할 것을

권장합니다.

다음 페이지의 결선도는 MMC Option Module (MMC-OU11) 과 동일한 시퀀스입니다.

핀 번호 신호명 핀 번호 신호명 설명

1 +5V 출력 21 +5V 출력 MMC에서 출력되는 전원으로 Computer와 동일

Level입니다. 사용시 Computer Power의 전류

를 고려하시어 사용하시기 바랍니다.

( 참고 : MMC 5V 사용전류 → ≒1A )

2 +5V 출력 22 +5V 출력

3 GND 23 GND

4 GND 24 GND

5 UserOUT 01 25 UserOUT 17 MMC USER OUTPUT 출력단자입니다.

TTL Level 출력으로서 결선은 아래의 그림을

참조하여 주시기 바랍니다.

결선이 제대로 되었나 확인하시는 방법은

보드 구입시에 제공되는 MMC Manager Prog-

ram의 User I/O의 입출력 Monitor를 이용하

시는 방법과 직접 Coding을 하시어 하실 수

있습니다.

MMC Manager Program은 본 매뉴얼 7-3-7 절

을 참조하십시오.

Program 함수는 본 매뉴얼 A-36, A-37 절을

참조하시기 바랍니다.

6 UserOUT 02 26 UserOUT 18

7 UserOUT 03 27 UserOUT 19

8 UserOUT 04 28 UserOUT 20

9 UserOUT 05 29 UserOUT 21

10 UserOUT 06 30 UserOUT 22

11 UserOUT 07 31 UserOUT 23

12 UserOUT 08 32 UserOUT 24

13 UserOUT 09 33 UserOUT 25

14 UserOUT 10 34 UserOUT 26

15 UserOUT 11 35 UserOUT 27

16 UserOUT 12 36 UserOUT 28

17 UserOUT 13 37 UserOUT 29

18 UserOUT 14 38 UserOUT 30

19 UserOUT 15 39 UserOUT 31

20 UserOUT 16 40 UserOUT 32

표 5.2 JP9 의 UserOut 입력 Pin 사양

JP9

USER OUTPUT PIN 사양

Page 94: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

LIMIT,I/O,A/D배선

5 - 3註 1) 위 그림은 결선예제입니다. 위를 참조하여 구성하시려는 시스템에 맞게 결선

하시기 바랍니다.

USER OUTPUT 결선 권장 회로

MMC 출력부 User 결선부분

그림 5.2 UserOUT 결선 회로

그림 5.2.1 UserOUT 결선 회로

USER OUTPUT 결선 사양

MMC 출력부 User 결선부분

MMCTTL출력

출력

COM

GND 24V

(외부전원)<외부 RELAY>

TLP127

Vcc

470Ω

MMCTTL출력

출력

COM

GND 24V

(외부전원)<외부 RELAY>

TLP127

Vcc

470Ω

Page 95: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 4

5.3 사용자 I/O 입력 콘넥타 Pin 사양 (JP10)

I/O 의 결선시 MMC Option Module (MMC-IN11) 의 사용을 적극 권장합니다.

Option Module 의 사용이 여의치 않으실 경우 다음 페이지의 결선도에 따라 결선할 것을

권장합니다.

다음 페이지의 결선도는 MMC Option Module (MMC-IN11) 과 동일한 시퀀스입니다.

핀 번호 신호명 핀 번호 신호명 설명

1 +5V 출력 21 +5V 출력 MMC에서 출력되는 전원으로 Computer와 동일

Level입니다. 사용시 Computer Power의 전류

를 고려하시어 사용하시기 바랍니다.

( 참고 : MMC 5V 사용전류 → ≒1A )

2 +5V 출력 22 +5V 출력

3 GND 23 GND

4 GND 24 GND

5 UserIN 01 25 UserIN 17 MMC USER INPUT 입력단자입니다.

TTL Level 입력으로서 결선은 아래의 그림을

참조하여 주시기 바랍니다.

결선이 제대로 되었나 확인하시는 방법은

보드 구입시에 제공되는 MMC Manager Prog-

ram의 User I/O의 입출력 Monitor를 이용하

시는 방법과 직접 Coding을 하시어 하실 수

있습니다.

MMC Manager Program은 본 매뉴얼 7-3-7 절

을 참조하십시오.

Program 함수는 본 매뉴얼 A-36 절을 참조하

시기 바랍니다.

6 UserIN 02 26 UserIN 18

7 UserIN 03 27 UserIN 19

8 UserIN 04 28 UserIN 20

9 UserIN 05 29 UserIN 21

10 UserIN 06 30 UserIN 22

11 UserIN 07 31 UserIN 23

12 UserIN 08 32 UserIN 24

13 UserIN 09 33 UserIN 25

14 UserIN 10 34 UserIN 26

15 UserIN 11 35 UserIN 27

16 UserIN 12 36 UserIN 28

17 UserIN 13 37 UserIN 29

18 UserIN 14 38 UserIN 30

19 UserIN 15 39 UserIN 31

20 UserIN 16 40 UserIN 32

표 5.3 JP10 의 UserIN 입력 Pin 사양

JP10

USER INPUT PIN 사양

Page 96: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

LIMIT,I/O,A/D배선

5 - 5註 1) 위 그림은 결선예제입니다. 위를 참조하여 구성하시려는 시스템에 맞게 결선

하시기 바랍니다.

USER INTPUT 결선 권장 회로

MMC 출력부 User 결선부분

그림 5.3 UserIN 결선 회로

USER INPUT 결선 사양

외부SWITCHMMC

TTL출력

입력

COM

GND 24V

(외부전원)

Vcc

10KΩ

TLP120

3.3KΩ

330Ω

Page 97: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 6

5.4 Analog 입력부 및 AD보드 사양

5.4.1 ADC 입력 콘넥타 Pin 사양 (JP5)

입력장치와 MMC GND는 반드시 결선하여 Level을 맞추어 주시기 바랍니다.

낮은 전압의 Analog 입력이므로 입력 Line에 Noise 원을 제거하여 주십시오.

그림 5.4 Analog 입력 결선 회로

표 5.4 JP5 의 ADIN 입력 Pin 사양

JP5

ANALOG INPUT PIN 사양

Analog SensorCPU

AD Converter

MMC-AD11

MMC Board

Input

+12V (+5V)

-12V (-5V)

1)

註 1) 위 결선은 가변저항을 이용한 결선예제입니다. Input Channel에 원하시는 입력장치의

입력을 결선하시고 5V GND에 입력 Signal의 GND를 결선하여 주십시오.

핀 번호 신호명 설명

1 AnalogIN 0 Analog 0 채널 입력 단자

2 GND Analog 입력 Basis Ground 단자 (PC GND)

3 AnalogIN 1 Analog 1 채널 입력 단자

4 +12V + 12V 출력 단자

5 AnalogIN 2 Analog 2 채널 입력 단자

6 GND Analog 입력 Basis Ground 단자 (PC GND)

7 AnalogIN 3 Analog 3 채널 입력

8 -12V - 12V 출력 단자

9 RXD(RS-232) RS-232 통신 RXD 단자

2001년 현재 Serial

통신기능은 제공되고

있지 않습니다.

2002년 추가 예정입

니다.

10 GND Analog 입력 GND

11 TXD(RS-232) RS-232 통신 TXD 단자

12 TIM0

사용되지 않는 pin

입니다.

13 VCC(+5V)

14 CNT00

15 CNT01

16 GND

5V GND

Page 98: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

LIMIT,I/O,A/D배선

5 - 7

5.4.2 MMC-AD11 사양

5.4.1.1 기능

MMC 보드의 JP5를 통해 입력되어지는 Analog 값을 해석하는 기능.

Absolute Encoder 입력을 해석하는 기능.

RS232 통신을 Interface 하는 기능.

Analog 입력은 2047 ‾ -2048 의 입력 범위를 가집니다.

+10V 의 경우 2047, -10V 의 경우 -2048 의 값을 가지게 됩니다.

5.4.1.2 Absolute Encoder 입력을 위한 Jumper 배치(JP1)

5.4.1.3 Analog 입력범위 선택(J1 ~ J4)

±10V 입력일 경우 +10V입력이 2047, -10V 입력이 -2048입니다.

± 5V 입력일 경우 + 5V입력이 2047, - 5V 입력이 -2048입니다.

점퍼가 ±5V (1-2 Short) 로 되어 있는 경우 그 이상의 전압이 입력 되면 내부 회로가

손상되므로 주의하시기 바랍니다.

그림 5.5 MMC-AD11의 콘넥터 배치도

MMC-AD11

JP4 JP3

JP1

J1J2 J4J3

1 2 3 1 2 3

Absolute 입력(Default) RS232 통신(현재 제공되지 않는 기능)

1

2

3

±10V 입력을 위한 Jumper 위치

1

2

3

±5V 입력을 위한 Jumper 위치

MMC-AD11 사양 MMC-AD11

Page 99: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 8

5.5 MMC-LIMIT OPTION 모듈

Limit Sensor 전압은 5V와 24V를 구분하여 사용

소비전류 : 105mA+α

MMC

보드

VCC

+LIMIT

HOME

-LIMIT

GND

24VGND

외부전원

+24V 출력

SENSOR

출력

+5V 출력

핀번호 신호명 핀번호 신호명 핀번호 신호명 핀번호 신호명

1 +5V 출력 11 +5V 출력 21 +5V 출력 31 +5V 출력

2 0 -Limit 12 2 -Limit 22 4 -Limit 32 6 -Limit

3 0 Home 13 2 Home 23 4 Home 33 6 Home

4 0 +Limit 14 2 +Limit 24 4 +Limit 34 6 +Limit

5 +24V 출력 15 +24V 출력 25 +24V 출력 35 +24V 출력

6 +24V 외부입력 16 +24V 외부입력 26 +24V 외부입력 36 +24V 외부입력

7 1 -Limit 17 3 -Limit 27 5 -Limit 37 7 -Limit

8 1 Home 18 3 Home 28 5 Home 38 7 Home

9 1 +Limit 19 3 +Limit 29 5 +Limit 39 7 +Limit

10 +5V 출력 20 +5V 출력 30 +5V 출력 40 +5V 출력

[ LIMIT 모듈 ]

MMC-LM11 LIMIT OPTION MODULE

LIMIT SENSOR입력

MMCMMC-LM11

MMC-CAIO2CNNA2

5.5.2 Limit 모듈 Terminal Block 핀사양

5.5.1 Limit 모듈 회로도

표 5.5 Limit 모듈 Terminal Block 핀사양

Page 100: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

LIMIT,I/O,A/D배선

5 - 9

5.6 MMC-OUTPUT OPTION 모듈

5.6.1 OUTPUT모듈 회로도

핀번호 신호명 핀번호 신호명 핀번호 신호명 핀번호 신호명

1 +24V 외부입력 11 +24V 외부입력 21 +24V 외부입력 31 +24V 외부입력

2 GND 12 GND 22 GND 32 GND

3 사용자 출력 01 13 사용자 출력 09 23 사용자 출력 17 33 사용자 출력 25

4 사용자 출력 02 14 사용자 출력 10 24 사용자 출력 18 34 사용자 출력 26

5 사용자 출력 03 15 사용자 출력 11 25 사용자 출력 19 35 사용자 출력 27

6 사용자 출력 04 16 사용자 출력 12 26 사용자 출력 20 36 사용자 출력 28

7 사용자 출력 05 17 사용자 출력 13 27 사용자 출력 21 37 사용자 출력 29

8 사용자 출력 06 18 사용자 출력 14 28 사용자 출력 22 38 사용자 출력 30

9 사용자 출력 07 19 사용자 출력 15 29 사용자 출력 23 39 사용자 출력 31

10 사용자 출력 08 20 사용자 출력 16 30 사용자 출력 24 40 사용자 출력 32

5.6.2 OUTPUT모듈 Terminal Block 핀사양

MMC

보드

24VGND

외부전원

USER I/OSYSTEM

[ 사용자 I/O 출력 모듈 ]

OUTPUT OPTION MODULE MMC-OU11

USER OUTPUT출력

MMCMMC-OU11

MMC-CAIO2CNNA2

표 5.6 Output 모듈 Terminal Block 핀사양

Page 101: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 10

MMC

보드

I/O접점

I/O접점

I/O접점

GND

24V GND

외부전원

USER I/OSYSTEM

[ 사용자 I/O 입력 모듈 ]

5.7 MMC-INPUT OPTION 모듈

5.7.1 INPUT모듈 회로도

핀번호 신호명 핀번호 신호명 핀번호 신호명 핀번호 신호명

1 +24V 외부입력 11 +24V 외부입력 21 +24V 외부입력 31 +24V 외부입력

2 사용자 입력 01 12 사용자 입력 09 22 사용자 입력 17 32 사용자 입력 25

3 사용자 입력 02 13 사용자 입력 10 23 사용자 입력 18 33 사용자 입력 26

4 사용자 입력 03 14 사용자 입력 11 24 사용자 입력 19 34 사용자 입력 27

5 사용자 입력 04 15 사용자 입력 12 25 사용자 입력 20 35 사용자 입력 28

6 +24V 외부입력 16 +24V 외부입력 26 +24V 외부입력 36 +24V 외부입력

7 사용자 입력 05 17 사용자 입력 13 27 사용자 입력 21 37 사용자 입력 29

8 사용자 입력 06 18 사용자 입력 14 28 사용자 입력 22 38 사용자 입력 30

9 사용자 입력 07 19 사용자 입력 15 29 사용자 입력 23 39 사용자 입력 31

10 사용자 입력 08 20 사용자 입력 16 30 사용자 입력 24 40 사용자 입력 32

5.7.2 INPUT모듈 Terminal Block 핀사양

MMC-IN11 INPUT OPTION MODULE

USER INPUT입력

MMCMMC-IN11

MMC-CAIO2CNNA2

표 5.7 Input 모듈 Terminal Block 핀사양

Page 102: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 11

MEMO

Page 103: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

5 - 12

MEMO

Page 104: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

 제 6 장

DOS용 SETUP 프로그램

6.1 개요

6.1.1 SETUP 프로그램의 설치 6-1 page

6.1.2 Hot Keys 6-2 page

6.1.3 Buttons 6-2 page

6.1.4 Parameters 저장 6-2 page

6.2 SETUP 화면 6-3 page

6.3 DPRAM Addr Set메뉴

6.3.1 SAVE 6-4 page

6.3.2 EXIT 6-4 page

6.4 Configuration 메뉴

6.4.1 Tuning Parameters 6-5 page

6.4.1.1 비례게인(Proportional Gain) 6-6 page

6.4.1.2 적분게인(Integral Gain) 6-7 page

6.4.1.3 미분게인(Derivative Gain) 6-7 page

6.4.1.4 Feedforward 게인 6-7 page

6.4.1.5 적분 최대치(I LIMIT) 6-7 page

6.4.2 Axis Configuration 6-7 page

6.4.2.1 SERVO,STEPPER,MICRO 6-8 page

6.4.2.2 OPEN_LOOP or CLOSED_LOOP 6-8 page

6.4.2.3 CONTROL 6-8 page

6.4.2.4 VOLTAGE 6-8 page

6.4.2.5 FEEDBACK 6-9 page

6.4.2.6 Pos I Mode , Vel I Mode 6-9 page

6.4.2.7 STEP Mode 6-9 page

6.4.3 Limit Switch Configuration 6-10 page

6.4.4 Software Limits Configuration 6-11 page

6.4.5 UESR I/O Configuration 6-12 page

6.5 STATUS 6-13 page

6.6 MOTION 메뉴 6-14 page

6.6.1 AXIS_I/O 6-16 page

6.6.2 GRAPHICS 6-17 page

Page 105: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 1

6.1 개요

SETUP 프로그램은 MMC제어기의 설치,축의 구성 설정 및 Gain Tuning에 매우 유용하게 사용 할 수 있으며,

Pull-down 메뉴방식으로 구성되어 있다. SETUP 프로그램은 Hardware 시험에도 유용하게 사용 할 수

있으며, MMC 제어기에 모타가 연결되지 않은 경우에도 "Axis Configuration" 화면에서 모타를

"Stepper", 또는 'MICRO"로 하고, Encoder를 "OPEN_LOOP"로 설정하면 모타가 연결되어 있는 것처럼

Simulation이 가능하다.

6.1.1 SETUP 프로그램의 설치

DOS SETUP 프로그램은 그래픽으로 처리 되므로 설치 전 컴퓨터의 사양부터 점검을 해야 한다. SETUP 프로

그램을 설치하기 위한 컴퓨터의 사양은 아래와 같다.

CPU MEMORY 그래픽카드

386이상 4M 이상 VGA

위의 사양을 만족하지 못하는 컴퓨터 기종일 경우 SETUP 프로그램을 설치하더라도 정상적으로 동작하지 않

을 수 있다.

SETUP 프로그램은 메인메모리를 사용하기 때문에 SETUP 프로그램 설치후에 CONFIG.SYS 파일에 아래의 내용

을 추가 또는 삽입해야 한다.

또한 EMM386.EXE를 사용하는 경우

EMM386을 수정하는 이유는 Segment Address D800-DF00 영역이 DPRAM 어드레스 영역이기 때문에 다른 응용

프로그램의 접근을 막기위함이다. D800-DF00의 어드레스 영역은 Default 값이며 사용자가 DPRAM 어드레스

영역을 다르게 설정 할경우 값을 변경하여야 한다. HIMEM.SYS를 수정하는 이유는 GUI 화면인 SETUP 프로그

램이 그래픽으로 구성되어 메인메모리(extended memory)를 영역을 사용하기 때문이다.

위의 CONFIG.SYS 파일의 수정이 끝나면 반드시 컴퓨터를 재부팅 시켜야 한다.

SETUP 프로그램의 기동은 DOS Prompt에서 "SETUP"을 실행하면 화면에 Setup 메뉴가 표시된다. 각각의 메뉴

는 Mouse나 빨간밑줄이 있는 Key 또는 HOT key를 입력하면 해당 메뉴가 화면상에 출력된다.

SETUP 프로그램 개요 및 설치

DEVICE=C:\DOS\HIMEM.SYS /NUMHANDLERS=80

DEVICE=C:\DOS\EMM386.EXE X=D800-DF00

DEVICE=C:\DOS\HIMEM.SYS /NUMHANDLERS=80

Page 106: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 2

6.1.2 Hot Keys

Mouse가 설치되어 있지 않을경우 아래의 Hot Keys를 이용하면 동일한 작업을 수행한다.

F1 === TUNING 메뉴화면을 Open (MOTION 메뉴에서 가능)

F2 === Software Limits 메뉴화면을 Open (MOTION 메뉴에서 가능)

F3 === Axis Configuration 메뉴화면을 Open (MOTION 메뉴에서 가능)

F4 === Axis I/O 메뉴화면을 Open (MOTION 메뉴에서 가능)

F5 === Axis Status 모니터화면을 Open (MOTION 메뉴에서 가능)

F6 === Motion Graphic 화면을 Open (MOTION 메뉴에서 가능)

<ESC> === 현재 표시되고 있는 메뉴를 Close

<TAB> === 메뉴내의 항목선택

UP-ARROW === 메뉴내의 항목선택

DOWN_ARROW === 메뉴내의 항목선택

RIGHT_ARROW === 메뉴내의 항목선택

LEFT_ARROW === 메뉴내의 항목선택

6.1.3 Buttons

SEND === 메뉴 Data를 MMC 보드에 전달, Boot Memory에 저장은 하지 않는다.

SAVE === 메뉴 Data를 MMC 보드에 전달, Boot Memory에 저장.

NEXT === 축의 증가 이동. ( 0 -> 1,2,3````축)

PREV === 축의 감소 이동. ( ```-> 0축)

EXIT === 현재 표시되고 있는 메뉴를 Close.

6.1.4 Parameters 저장

SETUP 화면에서 설정한 각축의 각변수들은 "SAVE" 버튼을 눌리거나 Data 입력 즉시 자동적으로 Boot Memory

에 저장된다.

Boot Memory의 내용은 각 보드별로 Binary Datafile 및 Checksum File로 저장된다.

각 보드의 Datafile 및 Checksum File의 이름은 아래와 같다.

MMC 보드 #0 === mmcbd1.dat , chksum1.dat

MMC 보드 #1 === mmcbd2.dat , chksum2.dat

MMC 보드 #2 === mmcbd3.dat , chksum3.dat

MMC 보드 #3 === mmcbd4.dat , chksum4.dat

각각의 파라메터 값들은 SETUP 프로그램 기동시 Load 된다.

SETUP 화면 설명

Page 107: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 3

6.2 SETUP 화면

SETUP 화면은 아래의 5개 주 메뉴화면과 한개의 Error 표시 창으로 구성된다.

▷ Version

▷ DPRAM Addr Set

▷ Configuration : - Tuning Parameter

- Axis Configuration

- Limit Switch Configuration

- Software Limits Configuration

- USER I/O Configuration

▷ STATUS

▷ MOTION : - Axis I/O

- GRAPHICS

▷ Error 표시창

SETUP 화면 설명

Page 108: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 4

6.3 DPRAM Addr Set메뉴

DPRAM Addr Set 메뉴는 각 MMC 보드의 DPRAM 어드레스를 입력하는데 사용된다. 제어기에 최대로 장착할 수

있는 MMC 보드수는 4장이기 때문에 4개의 입력창과 SAVE,EXIT 2개의 버튼으로 구성된다.

[ DPRAM Addr Set 메뉴 ]

입력창에 표시되는 어드레스는 HEX값이며 Segmemt + Offset으로 구성되어 있다.

Segment Offset

d800 + 0000 ===> d8000000

입력창에 표시된 DPRAM 어드레스와 MMC보드의 DIP 스위치(SW1)로 설정한 어드레스값이 틀릴경우 Error 표시

창에 "DPRAM Communication Error"가 표시된다.

6.3.1 SAVE

SAVE 버튼을 누르면 입력된 각 보드당 DPRAM 어드레스는 Boot Memory에 저장된다. 입력만 한채 SAVE 버튼을

누르지 않으면 입력시킨 Data는 무시된다.

6.3.2 EXIT

EXIT 버튼을 누르면 DPRAM Addr Set 메뉴화면을 빠져나간다. Data 입력후 SAVE 하지않고 EXIT 버튼을 누를경

우 입력된 Data는 모두 무시된다.

DPRAM ADDRESS SETUP MENU

MMC #0 DPRAM Addr

MMC #1 DPRAM Addr

MMC #2 DPRAM Addr

MMC #3 DPRAM Addr

d8000000

d8400000

d8800000

d8c00000

HEX

HEX

HEX

HEX

SAVE EX IT

고장대책: "DPRAM Communication Error" 에러발생 현상

DPRAM 어드레스를 일치시킨 상태에서 위의 Error 발생시 MMC 보드의 장착에 문제가 있을 확률이 높다.

고장대책: "AXIS 메뉴항목 창에 축수가 0의 상태에서 증가 혹은 감소하지 않을때"

DPRAM 어드레스를 일치시킨 상태에서 위의 Error 발생시 MMC 보드의 장착에 문제가 있을 확률이 높다.

고장대책: "MMC Board is not exist" 에러발생 현상

MMC 보드가 Computer에 장착이 되어 있음에도 불구하고 위의 Error가 발생할때에는 DPRAM의 어드레스가

보드에 설정된것과 SETUP 프로그램이 저장하고 있는것과 서로 맞지 않을경우에 발생될 확률이 높다.

DPRAM ADDRESS 설정

Page 109: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 5

6.4 Configuration 메뉴

Configuration 메뉴는 아래 4개의 부메뉴로 구성된다.

▷ Tuning Parameters

▷ Axis Configuration

▷ Limit Switch Configuration

▷ Software Limits Configuration

▷ USER I/O Configuration

6.4.1 Tuning Parameters

Tuning Parameters 메뉴는 각축 제어 Loop의 Gain값을 설정하거나, 모니터하는데 사용된다. 제어 Loop는

위치와 속도 Loop로 구성되며 위치 Gain 5개 속도 Gain 5개로 구성되어 있다. 본 메뉴는 MOTION 메뉴에서

도 선택이 가능하며, MOTION 메뉴에서는 Tuning Parameter 입력후 바로 동작을 수행하여 그 결과를 알 수

있기 때문에 편리하다.

[ Configuration / Tuning Parameters 메뉴 ]

TUNING PARAMETERS SETUP MENU

A X I S

Posi t ion P Gain

Posi t ion I Gain

Posi t ion D Gain

Posi t ion I L imi t

Posi t ion F Gain

0

100

1

0

0

1000

Veloci ty P Gain

Veloci ty I Gain

Veloci ty D Gain

Veloci ty F Gain

Veloci ty I L imi t

1500

10

0

0

1000

SEND SAVE NEXT PREV EXIT

TUNING PARAMETERS

Page 110: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 6

각 제어 Loop는 PID 알고리즘과 속도,가속도 Feedforward로 구성되어 있다. MMC 보드 PID 알고리즘은 아래의

식과 같다. 위치 및 속도의 PID 알고리즘은 동일하다. MMC보드에서 출력되는 Analog 전압출력은 속도 혹은

Torque 제어모드에 따라 아래식에의거 계산된다.

Yv (속도제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn)]

Yt (Torque 제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn) +

( Kvp * VEn + Kvi * VSn + Kvd * (VEn - VEn-1) + Kvf * An)]

PSn = PSn-1 + PEn [ if ( -PSmax < PSn < PSmax ) ]

PSmax [ if ( PSn > PSmax ) ]

-PSmax [ if ( PSn < -PSmax ) ]

VSn = VSn-1 + VEn [ if ( -VSmax < VSn < VSmax ) ]

VSmax [ if ( VSn > VSmax ) ]

-VSmax [ if ( VSn < -VSmax ) ]

Y = PID 및 Feedforward 제어출력 , Sample Period n

KR = Scale factor ( 1/512)

Kpp,Kvp = 위치,속도 비례(Proportional) gain

Kpi,Kvi = 위치,속도 적분(Integral) gain

Kpd,Kvd = 위치,속도 미분(Derivative) gain

Kpf,Kvf = Feedforward gain

PEn,VEn = Sample Period n의 위치,속도오차

Vn = Sample Period n의 속도명령

An = Sample Period n의 가속도명령

PSn,VSn = 위치오차(PEn),속도오차(VEn)의 합

PSmax,VSmax = 위치오차(PEn),속도오차(VEn)의 합의 최대값

Tuning Parameters 메뉴의 각 버튼들의 역활은 아래와 같다.

SEND = 설정한 Gain값들이 PID제어에 적용되도록 MMC보드에 Gain값을 전달한다. 단 Boot Memory에 저장

은 하지 않는다. 따라서 설정한 Gain값들은 Host의 전원 OFF시에는 없어지게 된다.

SAVE = 설정한 Gain값들이 PID제어에 적용되도록 MMC보드에 Gain값을 전달하며, Boot Memory에 저장을

한다. 따라서 설정한 Gain값들은 Host의 전원이 OFF되어도 Gain값을 유지한다.

NEXT,PREV = 축의 증가 및 감소.

EXIT = Tuning Parameters 메뉴화면을 빠져나간다. Data 입력후 SEND나 SAVE를 하지않고 EXIT 버튼을 누를

경우 입력된 Data는 모두 무시된다.

6.4.1.1 비례게인(Proportional Gain)

비례게인은 오차를 기초로 Analog Command Voltage에 영향을 준다. 비례게인이 높을경우 응답이 "Stiffer"

해지고, 비례게인이 낮을경우 응답이 "Mushy" 해져서 주어진 명령을 따라가는데 오차값이 커지는 문제가 발

생된다. 비례게인이 너무 높을경우 모타가 진동하거나, 움직이거나 정지시에 "Buzz" 현상이 발생한다.

비례게인의 입력범위는 0 ‾ 32767까지 이다.

TUNING PARAMETERS

Page 111: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 7

6.4.1.2 적분게인(Integral Gain)

적분게인은 Static State Error (정상상태 편차)를 더하여, 정지시에 위치,속도오차 값을 줄이거나 없애

주는데 사용된다. 오차의 합은 I LIMIT를 최대 값으로 가지게 되므로 "WINDUP" 현상을 방지할 수 있다.

적분게인의 입력범위는 0 ‾ 32767까지 이다.

6.4.1.3 미분게인(Derivative Gain)

미분게인은 오차의 변화량을 기초로 Analog Command Voltage에 영향을 준다. 미분게인은 Damping 요소로

동작을 하며 오버슈트(overshoot)를 줄여 주는 역할을 한다. 미분게인이 클 경우 소음이 발생한다.

미분게인의 입력범위는 0 ‾ 32767까지 이다.

6.4.1.4 Feedforward 게인

Feedforward게인은 위치,속도명령의 변화량을 입력으로 받아 작용하여 그 결과를 PID 출력에 더해주는

Feedforward 게인이다. Feedforward게인은 동작 중에 발생되는 오차를 줄여 주는 역할을 한다.

Feedforward 게인의 입력범위는 0 ‾ 32767까지 이다.

6.4.1.5 적분 최대치(I LIMIT)

적분 최대치는 절대 값이며 오차 합의 상한치와 하한치를 결정해주는 값이다. 적분 최대치는 "WINDUP" 현

상을 막아 주기 위해 사용되기도 한다.

적분 최대치의 입력범위는 0 ‾ 32767까지 이다.

6.4.2 Axis Configuration

[ Configuration / Axis Configuration 메뉴 ]

0

ENCODER

CONTROL

VOLTAGE

AXIS

AXIS CONFIGURATION SETUP MENU

MOTORSTEPPER

CLOSED_LOOP

TORQUE

UNIPOLAR

SERVO MICRO

OPEN_LOOP

VELOCITY

BIPOLAR

NEXT PREV EXIT

FEEDBACK

Pos I Mode

Vel I Mode

STEP Mode

ANALOG

ALWAYS

ALWAYS

ENCODER BI-ANALOG

ONLY STANDING

ONLY STANDING

SIGN+PULSECW+CCW MODE

AXIS CONFIGURATION

Page 112: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 8

6.4.2.1 SERVO,STEPPER,MICRO

모타 및 모타 드라이버에 따라서 "SERVO","STEPPER","MICRO"로 축별로 선택이 가능하다.

"STEPPER","MICRO"를 선택한 경우 "VOLTAGE", "CONTROL" 선택항목은 무시된다. 모타 드라이버에 따른 선택메

뉴는 아래와 같다.

▷ Analog 입력을 사용하는 Servo ===> "SERVO"

▷ Pulse 입력을 사용하는 Servo ===> "MICRO"

▷ Micro Step 드라이버 ===> "MICRO"

▷ 일반 Step 드라이버 ===> "STEPPER"

6.4.2.2 OPEN_LOOP or CLOSED_LOOP

제어 Loop를 선택할수있다. Closed_Loop의 경우 외부장치(예:servo driver)로 부터 Feedback 입력을 받아 제

어를 하게 된다. STEPPER의 경우 Open_Loop 선택시 Pulse 출력을 직접 Encoder Counter 입력으로 받아 제어

를 실시하므로 MMC 보드내에서는 실질적으로 Closed_Loop처럼 동작한다.

[ STEP 모타의 내부 제어구조 ]

6.4.2.3 CONTROL

Servo Drive의 제어모드를 선택할 수 있다. 제어모드에는 속도제어 모드, Torque제어 모드 두가지가 있으며

,Servo Drive에 설정한 제어모드와 같게 선택을 하여야 한다. Servo Drive에 설정한 제어모드와 맞지 않을

경우에는 모타가 비정상적으로 제어된다. STEPPER의 경우 본 메뉴는 무시된다.

▷ VELOCITY = 속도제어 모드

▷ TORQUE = Torque제어 모드

6.4.2.4 VOLTAGE

Analog 출력을 UNIPOLAR( 0 to 10 Volts) , BIPOLAR( -10 to 10 Volts)를 선택할 수 있다. Servo 모타의 경

우 BIPOLAR를 사용해야 되며, STEPPER의 경우 본 메뉴는 무시된다.

pulse 출력

open_loop 제어

closed_loop 제어Encoder 입력

Digital To

Frequency

Converter

Counter

+

-

명령

feedback

오차

AXIS CONFIGURATION

Page 113: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 9

6.4.2.5 FEEDBACK

Feedback 장치들을 축별로 선택할 수 있다. 단, Analog Feedback 장치의 경우 4개의 채널이 있기 때문에

1축에서 4축까지만 선택이 가능하며, 5축에서 8축까지는 Analog Feedback은 선택할 수가 없다.

Feedback 장치 장치형태

ENCODER === Encoder

ANALOG === Unipolar Analog

BI-ANALOG === Bipolar Analog

6.4.2.6 Pos I Mode , Vel I Mode

적분제어 모드를 축별로 선택할 수 있다. Pos I Mode는 위치제어에 사용되는 적분제어 모드이며, Vel I

Mode는 속도제어에 사용되는 적분제어 모드이다.

▷ ONLY_STANDING = 정지시에만 적분제어를 실시하는 모드

▷ ALWAYS = 적분제어를 항상 실시하는 모드

6.4.2.7 STEP Mode

Stepper 제어 시 Pulse 출력방식을 축별로 선택할 수 있다. Pulse 출력방식에는 CW,CCW Pulse를 출력하는

모드와 부호(Sign)와 펄스열을 출력하는 모드 두가지가 있다. 각 출력방식에 따른 Pulse열의 사양은 아래

의 그림과 같다.

펄스열

[ 부호(SIGN) + 펄스열 출력모드 ]

부호 (SIGN)

정방향(CW) 펄스열

역방향(CCW) 펄스열

[ CW + CCW 펄스열 출력모드 ]

AXIS CONFIGURATION

Page 114: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 10

6.4.3 Limit Switch Configuration

[ Configuration / Limit Switch Configuration 메뉴 ]

Limit Switch Configuration 메뉴는 Home Switch, Limit Switch, AMP Fault/Reset/Enable 등의 Active Level

를 설정하며, 또한 Active 상태 발생시 적용될 Event를 설정하는 메뉴이다.

NO_EVENT === Active 상태 무시

STOP_EVENT === Active 상태 발생시 정해진 Stop_Rate로 감속후 정지

E_STOP_EVENT === Active 상태 발생시 정해진 E_Stop_Rate로 감속후 정지

ABORT_EVENT === Active 상태 발생시 AMP Disable

각 버튼의 역활은 아래와 같다.

NEXT,PREV 버튼 === 축의 증가 및 감소

EXIT 버튼 === Limit Switch Configuration 메뉴 종료

LIMIT SWITCH CONFIGURATION SETUP MENU

Low-Act ive

NO-EVENT

Low-Act ive

Low-Act ive

Low-Act ive

NO-EVENT

NO-EVENT

NO-EVENT

Low-Act ive

Low-Act ive

Low-Act ive

High-Act ive

High-Act ive

High-Act ive

High-Act ive

High-Act ive

High-Act ive

High-Act ive

STOP

STOP

STOP

STOP

E-STOP

E-STOP

E-STOP

E-STOP

ABORT

ABORT

ABORT

ABORT

AXIS 0

NEXT PREV EXIT

POSITIVE LIMIT

NEGATIVE LIMIT

HOME SENSOR

AMP FAULT

AMP RESET LEVEL

AMP ENABLE LEVEL

IN_POSITION LEVEL

LIMIT SWITCH CONFIGURATION

Page 115: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 11

6.4.4 Software Limits Configuration

[ Configuration / Software Limits Configuration 메뉴 ]

Software Limits Configuration 메뉴는 각축의 Software Limits(lowest position, highest position,

maximum velocity, maximum acceleration, error limit)를 설정하는데 사용되며, 각 Event는 설정

Software Limits값에 도달시 적용된다.

NO_EVENT === Active 상태 무시

STOP_EVENT === Active 상태 발생시 정해진 Stop_Rate로 감속후 정지

E_STOP_EVENT === Active 상태 발생시 정해진 E_Stop_Rate로 감속후 정지

ABORT_EVENT === Active 상태 발생시 AMP Disable

각 버튼의 역활은 아래와 같다.

NEXT,PREV 버튼 === 축의 증가 및 감소

EXIT 버튼 === Software Limits Configuration 메뉴 종료

SOFTWARE LIMITS CONFIGURATION SETUP MENU

AXIS 0

-2147483647.0

214748364.0

35000.0

NO-EVENT

NO-EVENT

NO-EVENT

NEXT PREV EXIT

STOP

STOP

STOP

E-STOP

E-STOP

E-STOP

ABORT

ABORT

ABORT

2047000.0

200

100.0

10

10

1.000

8

LOWEST Pos.

HIGHEST Pos.

ERROR LIMIT

MAX VELOCITY

MAX ACCEL

IM-POSITION

STOP DEC.

E-STOP DEC.

GEAR RATIO

PULSE RATIO

Counts/sec

10 msec

Counts

10 msec

10 msec

Counts/Rev

SOFTWARE LIMIT CONFIGURATION

Page 116: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 12

6.4.5 UESR I/O Configuration

[ Configuration / USER I/O Configuration 메뉴 ]

USER I/O Configuration 메뉴는 MMC 보드당 각 32점의 User I/O 입,출력을 모니터 하거나 Test 하는데 사용

된다.

Key Board를 이용하여 메뉴를 사용 힐때에는 UP/DOWN, RIGHT/LEFT Arrow Key, Enter Key를 사용하면된다.숫

자의 Box는 현재 출력 I/O Point를 가리킨다. 즉 0 숫자에 Box가 위치할때 Enter Key를 사용하여 User I/O

bit 0를 ON/OFF 할 수 있다.

각 버튼의 역활은 아래와 같다.

NEXT,PREV 버튼 === MMC 보드 번호의 증가 및 감소

EXIT 버튼 === USER I/O Configuration 메뉴 종료

USER I/O CONFIGURATION SETUP MENU

NEXT PREV EXIT

BOARD NUMBER 0

2 3 4 5 6 70

8 10 11 12 13 14 15

16 18 19 20 21 22 23

24

1

9

17

25 26 27 28 29 30 31

2 3 4 5 6 70

8 10 11 12 13 14 15

16 18 19 20 21 22 23

24

1

9

17

25 26 27 28 29 30 31

HIGH

LOW

USER I/O INPUT (JP10)

USER I/O OUTPUT (JP9)

USER I/O CONFIGURATION

Page 117: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 13

6.5 STATUS

[ STATUS 메뉴 ]

STATUS 메뉴는 각축의 현재 상태를 표시해주는 메뉴이다.

In Sequence ? === "move" 명령이 실행중이면 "YES"를 표시하고, 아니면 "NO"를 표시한다.

In Motion ? === 속도명령이 0(zero)이 아니면 "YES"를 표시하고, 0 이면 "NO"를 표시한다.

In Position ? === 위치오차값이 In-position 범위내이면"YES"를 표시하고,아니면 "NO"를 표시한다.

Frames Empty No === MMC 보드에서 Host(Computer)에서 받아 들일 수 있는 명령의 개수를 표시한다.

받아들일수 있는 명령의 갯수는 최대 50개이다. "50"이 표시되면 Host로 부터 명

령을 받은 것이 없다는 것을 나타내며, "0"일때는 더이상 Host로 부터 명령을

받아 들일 수 없음을 나타낸다.

Axis Done === In Sequence ?, In Motion ? 이 "NO" 이고 In Position ? 이 "YES"일때

Axis Done은 "YES"를 표시한다.

SOURCE === 축의 현재 상태를 Hex로 표시한다. axis_source()함수 참조

STATE === 축의 EVENT 발생상태를 Hex로 표시한다. axis_state()함수 참조

각 버튼의 역할은 아래와 같다.

NEXT,PREV 버튼 === 축의 증가 및 감소

EXIT 버튼 === STATUS 메뉴 종료

NEXT PREV EXIT

AXIS STATUS DISPLAY MENU

AXIS 0

NO

NO

YES

YES

50

0x800

0x00

In Sequence ?

In Mot ion ?

In Posi t ion ?

Frames Empty No

Axis Done

SOURCE

STATE

STATUS

Page 118: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 14

6.6 MOTION 메뉴

[ MOTION 메뉴 ]

Motion 메뉴는 Hot Key로 선택되는 6개의 부메뉴가 있다.

F1 === TUNING ( Configuration / Tuning Parameters 메뉴와 동일 )

F2 === S/W LIMIT ( Configuration / Software Limits Configuration 메뉴와 동일 )

F3 === AXIS_CFG ( Configuration / Axis Configuration 메뉴와 동일 )

F4 === AXIS_IO ( Limit Switch의 상태와 AMP의 En/Dis, Fault Reset을 설정, 표시해주는 메뉴)

F5 === STATUS ( STATUS 메뉴와 동일 )

F6 === GRAPHICS ( 축의 동작 시에 위치 및 속도를 모니터하여 표시해주는 메뉴)

VELOCITY는 등속시의 속도(counts/sec, pulse/sec)를 나타내며 속도의 단위는 전자기어비에 따라

deg/sec,mm/sec, counts/sec, pulse/sec 등으로 표시된다. ACCEL,DECEL은 가,감속 시간을 나타내며

단위는 10msec 이다. POSITION 1,2는 동작의 시작위치와 목표위치를 나타내며 단위는 Counts(pulses)이다.

DELAY는 목표위치로 이동후 정지하는 시간을 나타내며 단위는 1msec 이다.

속도 Profile은 사다리꼴(TRAPEZOID), S_CURVE가 있으며, 부드러운 가,감속을 원할 때는 S_CURVE 속도

Profile을 적용하는 것이 좋다. ACCEL,DECEL 값을 디르게 적용할 경우 비대칭 사다리꼴, S_CURVE Profile로

움직인다. 가,감속시간은 10 (100msec)이상의 값을 사용하는 것이 시스템의 안정적인 운용에 도움이 된다.

MOTION SETUP MENU

AXIS 0

100

0.0

100000.0

100000.0

20

20

TRAPEZ0ID

DELAY

POSITON 1

POSITION 2

VELOCITY

ACCEL

DECEL

0.00

0.00

0.00

0.00

Command Posi t ion

Actua l Posi t ion

Error Value

Veloci ty

S_CURVE

TUNING S/W LIMIT AXIS_CFG AXIS_I/O STATUS GRAPHICS

F1 F2 F3 F4 F5 F6

GO

REPEAT

END-REPEAT

E-STOP

CLEAR

NEXT

PREA

EXIT

MOTION

Page 119: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 15

메뉴의 아래쪽에 위치해 있는 Command Position, Actual Position, Error Value, Velocity등은 축의 동작

시 위치 및 속도를 실시간으로 모니터 할 수있도록 위치 및 속도를 표시해준다.

Command Position은 위치명령 값을 표시해준다. 표시되는 값은 전자기어비가 감안된 값이다.Actual

Position은 실제 Feedback된 위치 값을 표시해준다. 표시되는 값은 전자기어비가 감안된 값이다.

Error Value는 위치오차값을 전자기어비와 관계없이 모타의 Count(step,pulse)로 표시해준다.

Velocity는 속도명령을 전자기어비와 관계없이 모타의 Count(step,pulse)로 표시해준다.

메뉴에 있는 각 버튼의 역할은 아래와 같다.

GO === 1회 동작을 실행시키는데 사용, 1회동작 후 정지한다.

REPEAT === 반복동작을 실행할 때 사용하며, END-REPEAT 버튼을 누르면 반복동작을 정지한다.

END-REPEAT === 반복동작을 종료시킬 때 사용한다.

E-STOP === E-STOP Event를 발생 시켜며, 동작 중 일때는 E-STOP 감속비율로 정지시킨다. E-STOP

버튼을 누른 후에는 반드시 CLEAR버튼을 눌려서 E-STOP Event 상태를 해제해야 한다.

그렇지 않을 경우 Event 상태가 유지되어 "GO","REPEAT" 버튼을 눌러도 실행이 되지 않

는다.

CLEAR === Event 발생을 해제시키며, 목표위치와 현재위치를 0(zero)으로 지정한다.

NEXT,PREV === 축의 증가

EXIT === MOTION 메뉴 종료

MOTION

Page 120: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 16

6.6.1 AXIS_I/O

[ MOTION / AXIS_IO 메뉴 ]

Pos. Limit === Positive Limit가 Active 상태일 때 "ON"을 표시한다.

Neg. Limit === Negative Limit가 Active 상태일 때 "ON"을 표시한다.

Home Sensor === Home Sensor가 Active 상태일 때 "ON"을 표시한다.

AMP Fault === AMP Fault Signal이 Active 상태일 때 "ON"을 표시한다.

AMP Device === "ENABLE" 버튼을 누르면 "AMP Enable 상태"가 된다.

"DISABLE" 버튼을 누르면 "AMP Disable 상태"가 된다.

"RESET" 버튼을 누르면 "AMP Fault 상태"가 해소된다.

NEXT PREV EXIT

AXIS 0

AXIS I/O SETUP MENU

Pos. L imi t

Neg. L imi t

Home Sensor

AMP Faul t

AMP Device

OFF

OFF

OFF

OFF

ENABLE DISABLE RESET

AXIS I/O

Page 121: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter5

DOS용SETUP프로그램

6 - 17

6.6.2 GRAPHICS

[ MOTION / GRAPHICS 메뉴 ]

GRAPHICS 메뉴는 MOTION 메뉴에서 실행시킨 Position, Velocity를 그래픽으로 나타내준다. 본 기능은 Gain

Tuning시에 유용하게 사용되며, 빨간 점으로 나타나는 파형은 Position과 Velocity 명령이며, 검은색 점으

로 나타나는 파형은 실제 Position과 Velocity를 나타낸다.

"STOP" 버튼은 Display를 중지하고자 할 때 사용된다. "STOP" 버튼이 눌려져 있을 때는 갈색의 버튼이

표시되며, 다시 버튼을 누르면 "STOP" 상태가 해제된다.

GRAPHICS 메뉴 버튼의 역할은 아래와 같다.

STOP === Position,Velocity 그래픽 표시 중지 및 재개

NEXT,PREV === 축의 증가 및 감소

EXIT === GRAPHICS 메뉴 종료

Ax is 0: Ve l

Ax is 0: Pos

GRAPHICS DISPLAY SETUP MENU

NEXT PREV EXITSTOP

GRAPHICS

Page 122: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 18

MEMO

Page 123: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 19

MEMO

Page 124: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6 - 20

MEMO

Page 125: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

 제 7 장

WINDOWS용 SETUP 프로그램

7.1 개요

7.1.1 Win '98, ME, '2000, NT용 SETUP 프로그램의 설치 7-1 page

7.1.2 SETUP 프로그램의 실행 7-2 page

7.2 주(Main) 화면

7.2.1 Motion 메뉴 7-3 page

7.2.2 Status 메뉴 7-5 page

7.2.3 Graphics 메뉴 7-6 page

7.3 Setup 메인 메뉴

7.3.1 DPRAM Setup 7-7 page

7.3.2 TUNING PARAMETERS SETUP 7-8 page

7.3.3 Software Limits Configuration 7-11 page

7.3.4 AXIS CONFIGURATION 7-12 page

7.3.5 AXIS I/O 7-15 page

7.3.6 LIMIT SWITCH CONFIGURATION 7-16 page

7.3.7 USER I/O CONFIGURATION 7-17 page

7.4 View 메인 메뉴 7-18 page

7.5 Window 메인 메뉴 7-18 page

7.6 HELP - About MMCWin 메뉴 7-18 page

7.7 Sync Control 메뉴 7-19 page

7.8 H/W Config

7.8.1 Down Load 메뉴 7-20 page

7.8.2 Control Time 7-21 page

7.8.3 Parameter Save/Load 7-22 page

Page 126: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 1

7.1 개요

Windows용 SETUP 프로그램은 MMC제어기의 설치,축의 구성 설정 및 Gain Tuning에 매우 유용

하게 사용할 수 있으며, WINDOWS Version에서 구동할 수 있다. SETUP 프로그램은 Hardware

시험에도 유용하게 사용할 수 있으며, MMC 제어기에 모타가 연결되지 않은 경우에도 "AXIS

CONFIGURATION" 화면에서 모타를 "MICRO" 또는 "STEPPER" , Encoder를 "OPEN_LOOP"로 설정하면 모타가

연결되어 있는 것처럼 Simulation이 가능하다.

7.1.1 Win '98, ME, '2000, NT용 SETUP 프로그램의 설치

Windows용 SETUP 프로그램을 설치하기 위해서는 MMC보드 구입시 제공되는 CD가 필요하다.

CD내에 해당 WINDOWS Version에 맞는 "SETUP" 프로그램을 실행해야 한다.

Windows용 SETUP 프로그램의 설치 순서는 아래와 같다.

① CD를 CD 드라이버에 넣고 SETUP.EXE 파일을 실행한다.

② 확인버튼을 누른 경우 "MMC Setup" 화면이 나타나면서 설치여부를 묻는 화면이 표시된다.

이때 "NEXT"버튼을 누르면 SETUP 프로그램이 Windows에 설치가 되고, "CANCEL" 버튼을 누르면

설치작업은 중지된다.

③ "NEXT"버튼을 누른 경우 SETUP 프로그램이 설치될 디렉토리를 묻는 화면이 표시된다.

폴더를 변경하지 않으면 ISA 모델은 Default로 "C:\Program Files\MMC Manager FI for Windows"

에 설치된다. PCI 모델인 경우는 Default로 "C:\Program Files\MMC Manager FP for Windows"에

설치된다.

④ SETUP 프로그램의 설치가 정상적으로 끝나면 컴퓨터 재시작이라는 메세지와 함께 확인버튼 화면이

표시된다.

⑤ SETUP 프로그램의 설치가 완료되면 모타모양의 "MMC 아이콘"이 생성되고 설치 디렉토리 밑에 아래

의 실행 파일과 OCX 관련 파일들이 생성된다.

SETUP 프로그램 개요 및 설치

Page 127: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 2

7.1.2 SETUP 프로그램의 실행

SETUP 프로그램의 실행은 모타 모양의 "MMC아이콘"을 마우스로 두 번 클릭하면 실행이 된다. 각

메뉴화면 및 버튼은 마우스 및 FUNCTION KEY로 선택되며, 숫자를 입력하는 경우는 키보드를 이용한다.

SETUP 화면은 1개의 주화면과 8개의 선택화면으로 구성된다. 4가지의 메인메뉴와 각 메인메뉴에 속해

있는 부메뉴는 아래와 같다.

SETUP VIEW WINDOW HELP

DPRAM SETUP TOOLBAR CASCADE ABOUT MMCWIN F8

TUNING PARAMETER F1 STATUS BAR TILE

SOFTWARE LIMITS CONFIG F2

LIMIT SWITCH CONFIG F3

AXIS CONFIG F4

AXIS I/O CONFIG F5

USER I/O CONFIG F6

MMC GRAPH F7

Sync Control

① SETUP 프로그램 실행중 중 아래와 같은 메세지가 나타나는 경우가 있다. 이 메세지가 나타나는 원인은

MMC보드가 장착 되어 있지 않거나, MMC보드쪽의 DIP 스위치와 SETUP화면에서 설정한 DPRAM ADDRESS가

일치하지 않아서 발생된다. 조치방법은 MMC보드가 없는 경우에는 MMC보드를 장착하면 해결되고 또는

DPRAM Address Setup에서 DPRAM address를 맞게 설정하고 재실행하면 된다.

(PCI는 매뉴얼 2장을 참조하여 주십시요)

② DPRAM SETUP 프로그램의 설정이 끝나면 "Restart MMC Manager again"라는 메세지와 함께 확인버튼 화면이

표시된다.

위와 같은 조치 후에도 ERROR 표시 화면이 출력되며, ERROR의 원인을 제거

후 재 설치작업을 하여야 한다.

SETUP 프로그램 실행

Page 128: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 3

7.2 주(Main) 화면

7.2.1 Motion 메뉴

Motion 메뉴는 Hot Key 및 마우스로 선택되는 5개의 부메뉴가 있다.

F1 === TUNING ( Setup / Tuning Parameter 메뉴와 동일 )

F2 === S/W LIMIT ( Setup / Software Limits Config 메뉴와 동일 )

F3 === LIMIT SWITCH ( Setup / Limits Switch Config 메뉴와 동일 )

F4 === AXIS_CFG ( Setup / Axis Config 메뉴와 동일 )

F5 === AXIS_IO ( Setup / Axis I/O Config 메뉴와 동일 )

VELOCITY는 등속시의 속도(counts/sec, pulse/sec)를 나타내며 속도의 단위는 전자기어비에 따라

deg/sec,mm/sec, counts/sec, pulse/sec 등으로 표시된다. ACCEL,DECEL은 가,감속 시간을 나타내며

단위는 10msec 이다. POSITION 1,2는 동작의 시작위치와 목표위치를 나타내며 단위는 전자기어비에 따라 달라지

며, 디폴트는 Counts(pulses)이다. DELAY는 목표위치로 이동 후 정지하는 시간을 나타내며 단위는

1msec 이다.

속도 Profile은 사다리꼴(TRAPEZOID), S_CURVE가 있으며, 부드러운 가,감속을 원할 때는 S_CURVE 속도 Profile을

적용하는 것이 좋다. ACCEL,DECEL 값을 디르게 적용할 경우 비대칭 사다리꼴, S_CURVE Profile로 움직인다. 가,

감속시간은 10 (100msec)이상의 값을 사용하는 것이 시스템의 안정적인 운용에 도움이 된다.

MOTION 메뉴

그림 7.1 MMC MANAGER MAIN 화면

Page 129: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 4

메뉴의 아래쪽에 위치해 있는 Command Position, Actual Position, Error Value, Velocity등은 축의 동작 시 위

치 및 속도를 실시간으로 모니터 할 수있도록 위치 및 속도를 표시해준다.

Command Position은 위치명령 값을 표시해준다. 표시되는 값은 전자기어비가 감안된 값이다.Actual Position은

실제 Feedback된 위치 값을 표시해준다. 표시되는 값은 전자기어비가 감안된 값이다.

Error Value는 위치오차 값을 전자기어비와 관계없이 모타의 Count(step,pulse)로 표시해준다.

Velocity는 속도명령을 전자기어비와 관계없이 모타의 Count(step,pulse)로 표시해준다.

메뉴에 있는 각 버튼의 역할은 아래와 같다.

GO === 1회 동작을 실행시키는데 사용, 1회 동작 후 정지한다.

REPEAT === 반복동작을 실행할 때 사용하며, Toggle 버튼으로 되어있어 REPEAT 버튼을 누르면

END_REPEAT 버튼으로 변경된다. 따라서 REPEAT 버튼을 눌러 시스템을 동작 시키다가

다시 한번 REPEAT 버튼을 누르면 반복동작을 정지한다.

END-REPEAT === 반복동작을 종료시킬 때 사용한다.(REPEAT 버튼을 누르면 나타남)

E-STOP === E-STOP Event를 발생시키며, 동작 중일 때는 E-STOP 감속비율로 정지시킨다.

E-STOP 버튼을 누른 후에는 반드시 CLEAR버튼을 눌려서 E-STOP Event 상태를 해제해야

한다. 그렇지 않을 경우 Event 상태가 유지되어 "GO","REPEAT" 버튼을 눌러도 실행이

되지 않는다.

CLEAR === Event 발생을 해제시키며, 목표위치와 현재위치를 0(zero)으로 지정한다.

NEXT,PREV === 축의 증가

JOG POS === + 방향으로 조그 이동을 한다.

JOG NEG === - 방향으로 조그 이동을 한다.

JOG SPEED === 조그 이동시의 속도를 지정한다.

AMP ON === SERVO DRIVE 를 ENABLE 한다.

AMP OFF === SERVO DRIVE 를 DISABLE 한다.

RESET === SERVO ALARM을 해제 한다.

AMP ON, AMP OFF, RESET 등의 메뉴는 AXIS I/O 메뉴에서 전체 축을 CONTROL 할 수 있다.

뒷 장에서 AXIS I/O에 대한 자세한 설명을 참조하기 바람.

새로 추가된 화면 구성

화면 아래의 짙은 하늘색으로 표시된 Encoder Position, RPM, Revolution, Jog Speed(r/m) 들은 MMC Board와

Servo Driver가 연결된 상태에서 Encoder의 Position과 RPM 을 표시해준다. 모타의 Revolution을 입력하면 Jog

Speed(r/m)가 변하는 것을 볼 수 있다. Revolution의 Default값은 2500으로 되어 있다.

MOTION 메뉴

Page 130: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 5

7.2.2 Status 메뉴

STATUS 메뉴는 각축의 현재 상태를 표시해주는 메뉴이다.(점선 내부)

In Sequence ? === "move" 명령이 실행 중이면 "YES"를 표시하고, 아니면 "NO"를 표시한다.

In Motion ? === 속도명령이 0(zero)이 아니면 "YES"를 표시하고, 0 이면 "NO"를 표시한다.

In Position ? === 위치오차값이 In-position 범위내이면"YES"를 표시하고,아니면 "NO"를 표시한다.

Frames Empty No === MMC 보드에서 Host(Computer)에서 받아 들일 수 있는 명령의 개수를 표시한다.

받아들일수 있는 명령의 개수는 최대 50개이다. "50"이 표시되면 Host로 부터 명

령을 받은 것이 없다는 것을 나타내며, "0"일때는 더이상 Host로 부터 명령을

받아 들일 수 없음을 나타낸다.

Axis Done === In Sequence ?, In Motion ? 이 "NO" 이고 In Position ? 이 "YES"일 때

Axis Done은 "YES"를 표시한다.

SOURCE === 축의 현재 상태를 Hex로 표시한다. axis_source()함수 참조

STATE === 축의 EVENT 발생상태를 Hex로 표시한다. axis_state()함수 참조

각 버튼의 역할은 아래와 같다.

NEXT,PREV 버튼 === 축의 증가 및 감소

STATUS 메뉴

그림 7.2 MMC MANAGER STATUS 메뉴

Page 131: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 6

7.2.3 Graphics 메뉴

GRAPHICS 메뉴는 Motion 메뉴에서 실행시킨 Position, Velocity를 그래픽으로 나타내 준다.

본 기능은 Gain Tuning시에 유용하게 사용된다. 주 메뉴는 Channel, Axis Size, Sample Interval로 구성되어 있

다.

Channel에서는 각각의 Channel을 통해 다른 값을 표시할 수 있다.

Channel 1,2 의 풀 다운 메뉴는 다음과 같다.

Position: Command =====> Position의 명령값

Position: Actual =====> Position의 실제값

Position: FeedBack =====> Encoder Position 값

Position: Error =====> Error Value 값

Velocity: Command =====> Velocity의 명령값

Velocity: Actual =====> Velocity의 실제값

"Color" 버튼을 누르면 각 파형의 색깔을 바꿀 수 있다. "Thickness" 버튼은 각 파형의 굵기를 1‾5 사이

에서 선택하여 원하는 파형을 볼 수 있다.

Axis Size에서는 Graph의 X축 Size와 Y축 Size를 조절할 수 있다.

Sample Interval에서는 각 Channel의 1 Hz~100 Hz 사이의 Sample interval을 조절 할

수 있다.

GRAPHICS 메뉴 버튼의 역할은 아래와 같다.

Grid Show,Hide === Graph 의 Grid 를 숨기거나 표시한다.

Reset Graph === 그래프를 Reset 하여 다시 시작할 수 있다.

GRAPHICS 메뉴

그림 7.3 MMC MANAGER GRAPHICS 화면

Page 132: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 7

7.3 Setup 메인 메뉴

7.3.1 DPRAM Setup

DPRAM Setup 메뉴는 각 MMC 보드의 DPRAM 어드레스를 입력하는데 사용된다. 제어기에 최대로 장착할 수 있는 MMC

보드 수는 8장이기 때문에 8개의 입력창과 SAVE,EXIT 2개의 버튼으로 구성된다.

입력창에 표시되는 어드레스는 HEX값이며 Segmemt + Offset으로 구성되어 있다.

Segment Offset

d800 + 0000 ===> d8000000

Manager 실행시 입력창에 표시된 DPRAM 어드레스와 MMC보드의 DIP 스위치(SW1)로 설정한 어드레스 값이 틀릴 경

우 "MMC board is not found"라는 메세지 창이 아래와 같이 표시된다.

Save

Save 버튼을 누르면 입력된 각 보드당 DPRAM 어드레스는 Boot Memory에 저장된다.

입력만 한채 Save 버튼을 누르지 않으면 입력시킨 Data는 무시된다.

Close

Close 버튼을 누르면 DPRAM Address 화면을 빠져나간다. Data 입력 후 Save 하지 않고 Close 버튼을

누를 경우 입력된 Data는 모두 무시된다.

단 PCI Board 에서는 Dpram Setup 이 필요 없습니다.

고장대책: "MMC board is not found!" 에러발생 현상

MMC 보드가 Computer에 장착이 되어 있음에도 불구하고 위의 Error가 발생할때에는 DPRAM의

어드레스가 보드에 설정된것과 SETUP 프로그램이 저장하고 있는것과 서로 맞지 않을경우에 발생될

확률이 높다.

DPRAM SETUP

그림 7.4 DPRAM SETUP 화면

Page 133: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 8

7.3.2 TUNING PARAMETERS SETUP

각 제어 Loop는 PID 알고리즘과 속도,가속도 Feedforward로 구성되어 있다. MMC 보드 PID 알고리즘은 아래의 식

과 같다. 위치 및 속도의 PID 알고리즘은 동일하다. MMC보드에서 출력되는 Analog 전압출력은 속도 혹은 Torque

제어모드에 따라 아래 식에 의거 계산된다.

Yv (속도제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn)]

Yt (Torque 제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn) +

( Kvp * VEn + Kvi * VSn + Kvd * (VEn - VEn-1) + Kvf * An)]

PSn = PSn-1 + PEn [ if ( -PSmax < PSn < PSmax ) ]

PSmax [ if ( PSn > PSmax ) ]

-PSmax [ if ( PSn < -PSmax ) ]

VSn = VSn-1 + VEn [ if ( -VSmax < VSn < VSmax ) ]

VSmax [ if ( VSn > VSmax ) ]

-VSmax [ if ( VSn < -VSmax ) ]

Y = PID 및 Feedforward 제어출력 , Sample Period n

KR = Scale factor ( 1/512)

Kpp,Kvp = 위치,속도 비례(Proportional) gain

TUNING PARAMETERS SETUP

그림 7.5 TUNING PARAMETER 화면

Page 134: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 9

Kpi,Kvi = 위치,속도 적분(Integral) gain

Kpd,Kvd = 위치,속도 미분(Derivative) gain

Kpf,Kvf = Feedforward gain

PEn,VEn = Sample Period n의 위치,속도오차

Vn = Sample Period n의 속도명령

An = Sample Period n의 가속도명령

PSn,VSn = 위치오차(PEn),속도오차(VEn)의 합

PSmax,VSmax = 위치오차(PEn),속도오차(VEn)의 합의 최대 값

Tuning Parameters 메뉴의 각 버튼들의 역할은 아래와 같다.

Send = 설정한 Gain값들이 PID제어에 적용되도록 MMC보드에 Gain값을 전달한다. 단 Boot Memory에 저장

은 하지 않는다. 따라서 설정한 Gain값들은 Host의 전원 OFF시에는 없어지게 된다.

Save = 설정한 Gain값들이 PID제어에 적용되도록 MMC보드에 Gain값을 전달하며, Boot Memory에 저장을

한다. 따라서 설정한 Gain값들은 Host의 전원이 OFF되어도 Gain값을 유지한다.

Next = 축의 증가.

Prev = 축의 감소.

Close = Tuning Parameters Setup화면을 종료한다. Data 입력 후 Send나 Save를 하지 않고 Close 버튼을

누를 경우 입력된 Data는 모두 무시된다.

비례게인(Proportional Gain)

비례게인은 오차를 기초로 Analog Command Voltage에 영향을 준다. 비례게인이 높을경우 응답이 "Stiffer" 해지

고, 비례게인이 낮을경우 응답이 "Mushy" 해져서 주어진 명령을 따라가는데 오차 값이 커지는 문제가 발생된다.

비례게인이 너무 높을 경우 모타가 진동하거나, 움직이거나 정지시에 "Buzz" 현상이 발생한다.

비례게인의 입력범위는 0 ‾ 32767까지 이다.

적분게인(Integral Gain)

적분게인은 Static State Error (정상상태 편차)를 더하여, 정지시에 위치,속도오차값을 줄이거나 없애주는데 사

용된다. 오차의 합은 I LIMIT를 최대값으로 가지게 되므로 "WINDUP" 현상을 방지할 수 있다.

적분게인의 입력범위는 0 ‾ 32767까지 이다.

미분게인(Derivative Gain)

미분게인은 오차의 변화량을 기초로 Analog Command Voltage에 영향을 준다. 미분게인은 Damping 요소로 동작을

하며 오버슈트(overshoot)를 줄여주는 역할을 한다. 미분게인이 클 경우 소음이 발생한다.

미분게인의 입력범위는 0 ‾ 32767까지 이다.

Feedforward 게인

Feedforward게인은 위치,속도명령의 변화량을 입력으로 받아 작용하여 그 결과를 PID 출력에 더해주는

Feedforward 게인이다. Feedforward게인은 동작 중에 발생되는 오차를 줄여 주는 역할을 한다.

Feedforward 게인의 입력범위는 0 ‾ 32767까지 이다.

TUNING PARAMETERS SETUP

Page 135: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 10

적분 최대치(I LIMIT)

적분 최대치는 절대 값이며 오차 합의 상한치와 하한치를 결정해주는 값이다. 적분 최대치는 "WINDUP" 현상을 막

아 주기 위해 사용되기도 한다.

적분 최대치의 입력범위는 0 ‾ 32767까지 이다.

Analog Limit

Analog 출력값은 한계값을 절대치 값으로 설정합니다. 기본적으로 서보 드라이버 제어를 위해 ±10V를 출력하게

되어 있다. 이 때의 값이 32767이다.

Analog Offset

Analog 출력값의 Offset 값을 조정 할 수가 있다.

Offset은 Servo Drive와 MMC 간의 기준값(OV)가 일치하지 않을 때 이의 차이를 말하는 것이며, Offset 값이

크면 클수록 제대로 된 제어가 이루어지지 않으므로 MMC에서나 Servo Drive에서 반드시 맞추어 주어야 한다.

Analog Output / Controller Idle Mode

임의의 Analog 출력을 할 수 있는 기능으로 함수 set_dac_output(), controller_idle() 를 구현하였다.

Controller Idle Mode를 Click 한 상태에서 Analog Output 입력창에 임의의 값(digital, 범위:±32767)을

입력하면 해당하는 전압이 출력된다. 제어범위는 16bit 이다.

TUNING PARAMETERS SETUP

Page 136: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 11

7.3.3 Software Limits Configuration

Software Limits Configuration 메뉴는 각축의 Software Limits(lowest position, highest position, maximum

velocity, maximum acceleration, error limit)를 설정하는데 사용되며, 각 Event는 설정 Software Limits값에

도달 시 적용된다.

NO_EVENT === Active 상태 무시

STOP_EVENT === Active 상태 발생시 정해진 Stop_Rate로 감속 후 정지

E_STOP_EVENT === Active 상태 발생시 정해진 E_Stop_Rate로 감속 후 정지

ABORT_EVENT === Active 상태 발생시 AMP Disable

각 버튼의 역할은 아래와 같다.

Next,Prev 버튼 === 축의 증가 및 감소

Close 버튼 === Software Limits Configuration 메뉴 종료

Encoder 입력체배를 조정할 수가 있는데 Encoder Ratio A 와 Encoder Ratio B 로 조정 가능하다.

Encoder Ratio A(분자) / Encoder Ratio B(분모) 로 설정된다.

MMC Encoder 입력은 기본적으로 4체배 되어진다.

그림 7.6 SOFTWARE LIMITS CONFIGURATION 화면

SOFTWARE LIMITS CONFIGURATION

Page 137: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 12

7.3.4 AXIS CONFIGURATION

SERVO,STEPPER,MICRO

모타 및 모타 드라이버에 따라서 "SERVO","STEPPER","MICRO"로 축별로 선택이 가능하다.

"STEPPER","MICRO"를 선택한경우 "VOLTAGE", "CONTROL" 선택항목은 무시된다. 모타 드라이버에 따른 선택메뉴는

아래와 같다.

Analog 입력을 사용하는 Servo ===> "SERVO"

Pulse 입력을 사용하는 Servo ===> "MICRO"

Micro Step 드라이버 ===> "MICRO"

일반 Step 드라이버 ===> "STEPPER"

그림 7.7 AXIS CONFIGURATION 화면

AXIS CONFIGURATION

Page 138: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 13

OPEN_LOOP or CLOSED_LOOP

제어 Loop를 선택할수있다. Closed_Loop의 경우 외부장치(예:servo driver)로 부터 Feedback 입력을 받아 제어를

하게 된다. STEPPER의 경우 Open_Loop 선택시 Pulse 출력을 직접 Encoder Counter 입력으로 받아 제어를 실시하

므로 MMC 보드내에서는 실질적으로 Closed_Loop처럼 동작한다.

CONTROL

Servo Drive의 제어모드를 선택할 수 있다. 제어모드에는 속도제어 모드, Torque제어 모드 두 가지가 있으며

,Servo Drive에 설정한 제어모드와 같게 선택을 하여야 한다. Servo Drive에 설정한 제어모드와 맞지 않을 경우

에는 모타가 비정상적으로 제어된다. STEPPER의 경우 본 메뉴는 무시된다.

VELOCITY = 속도제어 모드

TORQUE = Torque제어 모드

VOLTAGE

Analog 출력을 UNIPOLAR( 0 to 10 Volts) , BIPOLAR( -10 to 10 Volts)를 선택할 수 있다. Servo 모타의 경우

BIPOLAR를 사용해야 되며, STEPPER의 경우 본 메뉴는 무시된다.

FEEDBACK

Feedback 장치들을 축별로 선택할 수 있다. 단, Analog Feedback 장치의 경우 4개의 채널이 있기 때문에

1축에서 4축까지만 선택이 가능하며, 5축에서 8축까지는 Analog Feedback은 선택할 수가 없다.

Feedback 장치 장치형태

ENCODER === Encoder

ANALOG === Unipolar Analog

BI-ANALOG === Bipolar Analog

Pos I Mode , Vel I Mode

적분제어 모드를 축별로 선택할 수 있다. Pos I Mode는 위치제어에 사용되는 적분제어 모드이며, Vel I Mode는

속도제어에 사용되는 적분제어 모드이다.

ONLY_STANDING = 정지 시에만 적분제어를 실시하는 모드

ALWAYS = 적분제어를 항상 실시하는 모드

pulse 출력

open_loop 제어

closed_loop 제어Encoder 입력

Digital To

Frequency

Converter

Counter

+

-

명령

feedback

오차

그림 7.8 STEP 모타의 내부 제어구조

AXIS CONFIGURATION

Page 139: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 14

STEP Mode

Stepper 제어 시 Pulse 출력방식을 축별로 선택할 수 있다. Pulse 출력방식에는 CW,CCW Pulse를 출력하는 모드와

부호(Sign)와 펄스 열을 출력하는 모드 두 가지가 있다. 각 출력방식에 따른 Pulse열의 사양은 아래의 그림과 같

다.

Cordinate Direction

MMC에서 출력방향을 바꾸어 줄 때 사용한다.

기본 출력이 정방향 출력이나 설정시에 역방향 출력이 된다.

Encoder Direction

입력되어 지는 Encoder 의 부호를 바꾸는 것으로 하드웨어적인 변경은 아니다.

Analog Direction

Analog Direction은 Encoder 입력 방향을 바꾸는 것으로 Encoder A, B 상이 역전되어 입력되는 효과가 생기므로

Analog 제어를 할 경우 Encoder 방향이 맞지 않아 폭주 하는 경우에 사용이 가능하다.

정방향(CW) 펄스열

역방향(CCW) 펄스열

[ CW + CCW 펄스열 출력모드 ]

[ 부호(SIGN) + 펄스열 출력모드 ]

펄스열

부호 (SIGN)

그림 7.9 펄스열 출력 모드

AXIS CONFIGURATION

Page 140: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 15

7.3.5 AXIS I/O

Pos. Limit === Positive Limit가 Active 상태일 때 "YES"을 표시한다.

Neg. Limit === Negative Limit가 Active 상태일 때 "YES"을 표시한다.

Home Sensor === Home Sensor가 Active 상태일 때 "YES"을 표시한다.

AMP Fault === AMP Fault Signal이 Active 상태일 때 "YES"을 표시한다.

AMP Device === "ENABLE" 버튼을 누르면 "AMP Enable 상태"가 된다.

"DISABLE" 버튼을 누르면 "AMP Disable 상태"가 된다.

"Reset" 버튼을 누르면 "AMP Fault 상태"가 해소된다.

Total Axis === 현재 PC에서 제어할 수 있는 전체 축 수를 표시한다.

그림 7.10 AXIS I/O 화면

AXIS I/O

Page 141: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 16

7.3.6 LIMIT SWITCH CONFIGURATION

LIMIT SWITCH CONFIGURATION 메뉴는 Home Switch, Limit Switch, AMP Fault/Reset/Enable 등의 Active Level를

설정하며, 또한 Active 상태 발생시 적용될 Event를 설정하는 메뉴이다.

NO_EVENT === Active 상태 무시

STOP_EVENT === Active 상태 발생시 정해진 Stop_Rate로 감속 후 정지

E_STOP_EVENT === Active 상태 발생시 정해진 E_Stop_Rate로 감속후 정지

ABORT_EVENT === Active 상태 발생시 AMP Disable

각 버튼의 역할은 아래와 같다.

Next,Prev 버튼 === 축의 증가 및 감소

Close 버튼 === LIMIT SWITCH CONFIGURATION 메뉴 종료

그림 7.11 LIMIT SWITCH CONFIGURATION 화면

LIMITS SWITCH CONFIGURATION

Page 142: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 17

7.3.7 USER I/O CONFIGURATION

USER I/O CONFIGURATION 메뉴는 MMC 보드당 각 32점의 User I/O 입,출력을 모니터 하거나 Test 하는데 사용된다.

Key Board를 이용하여 메뉴를 사용 힐 때에는 UP/DOWN, RIGHT/LEFT Arrow Key, Enter Key를 사용 하면 된다.숫자

의 Box는 현재 출력 I/O Point를 가리킨다. 즉 0 숫자에 Box가 위치할 때 Enter Key를 사용하여 User I/O bit 0

를 ON/OFF 할 수 있다.

각 버튼의 역할은 아래와 같다.

Next,Prev 버튼 === MMC 보드 번호의 증가 및 감소

Close 버튼 === USER I/O CONFIGURATION 메뉴 종료

그림 7.12 USER I/O CONFIGURATION

USER I/O CONFIGURATION

Page 143: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 18

7.4 View 메인 메뉴

View 메인메뉴는 아래와 같이 3개의 부 메뉴를 가지고 있다. View 메뉴에서는 화면에 표시되는 축의 수를

결정해 주는 기능을 한다.

Tool bar => Tool bar를 Setup 화면에 표시,또는 숨기는 기능이다.

Status Bar => Setup 화면의 상태를 표시해 주는 하단의 상태바를 표시 또는 숨기는 기능이다.

7.5 Window 메인 메뉴

Window 메인메뉴는 여러 개의 축을 Setup화면에 표시할 때, 표시되는 방식을 지정할 때 사용된다.

부메뉴는 아래와 같이 2가지가 있다.

Cascade

Tile

7.6 HELP - About MMCWin 메뉴

About 메뉴는 MMC S/W 및 ROM Version을 표시해주는 메뉴이다.

Board 수에 맞게 ROM Version이 표시된다.

그림 7.13 ABOUT MMCWIN 화면

ABOUT MMC

Page 144: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 19

7.7 Sync Control 메뉴

Full Down 메뉴 중 Sync Control 이란 메뉴(아래 그림 참조)를 click 하면 Sync Control 이란 다이얼로그

박스가 뜬다.

Sync Control은 2축에 대한 동기제어를 설정하고 설정된 2축의 움직임을 모니터링 할 수 있는 창이다.

Master Position과 Slave Position 은 set_sync_map_axis로 설정이 가능하며 하나의 보드 내에 두 축만

설정이 가능하다.

위 그림의 Set Sync Control 을 check 해야 동작하며 set_sync_control() 함수로 동작되어진다.

SYNC CONTROL 메뉴

Page 145: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 20

7.8 H/W Config

MMC Manager의 Main Form을 종료하거나 보드가 없다는 메세지 후에 다음과 같은 창을 볼 수 있다.

이 때 H/W Config 메뉴가 뜬다.

7.8.1 Down Load 메뉴

Open File

Down Load 할 파일을 선택하는 메뉴로서 다음과 같은 포맷을 가진 파일을 로드하여야 한다.

R8FXV102.HEX

ROM Version 1.02Version 이라는 의미X : 2002년 출시된 신형보드용 S/W, O : 2002년 이전의 구 Version ROMF : Full Size용, H : Half size용8 : 8축 보드, 4 : 4축 보드ROM 을 의미함, S : Serial, B : Booting

H/W CONFIGURATION

Page 146: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter7

WINDOWS용SETUP프로그램

7 - 21

Down Load

Open File에서 선택한 파일을 MMC Flash Memory에 Down Load 한다.

Down Load 가 시작되면 메세지 창에 Delete Flash Memory, Wait! 이란 메세지가 디스플레이

되고 곧이어 Down Load가 진행되면서 진행상태가 표시된다.

Down Load, Fail 이란 메세지가 표시되면 DownLoad가 실패한 것인데 이 때는 보드 내의

Reset 버튼을 누르거나 컴퓨터를 껏다가 다시 켜고 재실행을 한다.

그래도 Down Load 가 되지 않으면 A/S를 의뢰하여야 한다.

Serial Down Load

MMC 는 세 가지의 파일이 보드 내에 Down Load 되어야 제품이 정상적으로 동작되는데

ROM File 만 User가 Down Load 하는 것이 일반적인 경우이며 제품의 LED 세 개가 모두 점등되어

컴퓨터를 끄지 않으면 꺼지지 않는 경우에는 세 가지 파일을 순서대로 모두 Down Load 해주어야

한다.

이의 경우 Down Load를 위한 별도의 Cable 이 필요하며 쉬운 경우가 아니므로 이러한 경우가

발생하면 구입하신 곳이나 당사 기술지원 파트로 문의하여 주시기 바랍니다.

7.8.2 Control Time

MMC는 Control Time 을 조정할 수가 있다.

Control Time 은 위치/속도 등의 계산 시간이나 Sample Time 등의 시간을 말하는 것이며

빠르다고 좋은 것만은 아니다

그리고 1msec 제어는 4축보드에서만 가능하다.

보드별로 설정이 가능하며 설정한 후 SAVE 를 누르면 설정이 끝난다.

DOWNLOAD 메뉴

Page 147: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 22

7.8.3 Parameter Save/Load

MMC 는 Parameter를 보드 내의 Flash Memory에 저장을 하므로 인해서 임의로 보드 내의 저장 값을

Load 하거나 Save가 불가능하다.

물론 프로그램을 통해 fset_ 이나 fget_ 함수를 통해 읽고 쓰고가 가능하지만 불편함을 고려하여

만들어진 메뉴다.

Save Para to File

보드 내의 Parameter를 읽어서 파일로 저장을 한다.

왼쪽의 보드 선택 메뉴에서 선택되어진 보드의 파일을 저장하며 파일 이름은

mmcpara0.frm , mmcpara1.frm ..... mmcpara7.frm 으로 저장이 된다.

선택된 보드가 6번째 이면 mmcpara5.frm으로 저장이 된다.

만약 선택되어진 보드가 선택되어진 위치에 있으면 값을 읽어서 저장을 하며

선택되어진 위치에 보드가 없으면 기본값이 저장된다.

저장은 c:\mmcparameter\ 에 저장된다.

Open the File

보드로 DownLoad 할 파일을 선택한다. 파일은 위에서 저장한 이름과 같아야 한다.

Load to Checked Board from File

Open the File에서 읽은 파일을 보드 내로 저장한다.

물론 왼쪽에서 선택되어진 보드로만 DownLoad를 실시한다.

Load Default Setting

보드에 공장 출하시 값으로 DownLoad를 실시한다.

PARAMETER SAVE/LOAD

Page 148: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 23

MEMO

Page 149: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 24

MEMO

Page 150: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

7 - 25

MEMO

Page 151: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

 제 8 장

시스템 검사

8.1 Closed-Loop 시스템 시험

8.1.1 스텝1) Encoder 배선 및 연결 8-1 page

8.1.2 스텝2) Encoder 동작 시험 8-1 page

8.1.3 스텝3) 모타 Power 콘넥타의 배선 및 연결 8-2 page

8.1.4 스텝4) 모타 / Encoder의 상(phase) 8-2 page

8.1.5 스텝5) 모타 Gain Tuning 8-2 page

8.1.6 스텝6) 시스템 Gain Tuning 8-3 page

8.2 Open-Loop Stepper 시험

8.2.1 스텝1) Stepper의 연결 8-4 page

8.2.2 스텝2) 위치제어 여부 시험 8-4 page

Page 152: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter8

시스템검사

8 - 1

8.1 Closed-Loop 시스템 시험

Servo 모타나 Closed-Loop Step 모타를 시험 할 때 그 절차를 요약하면 아래와 같다.

① Encoder를 연결한다.

② Encoder 동작이 제대로 되는지를 시험을 할 때는 손으로 모타를 돌리면서 MOTION 메뉴에서 Actual

Position값이 변하는지 여부를 확인한다.

③ 모타의 Power 콘넥타를 연결하고,MOTION/AXIS_IO(F4) 메뉴에서 AMP(Servo)를 "Disable"상태로 한

다.

④ 모타나 Encoder의 상(phase)이 맞는지를 시험을 할 때는 MOTION / AXIS_IO(F4) 메뉴에서

AMP Device "Enable"를 지정하여 위치제어가 정상적으로 되는지 확인한다.

⑤ MOTION 메뉴에서 모타를 구동시키면서 Gain Tuning을 한다.

⑥ 시스템을 구동시키면서 Gain Tuning을 한다.

위의 각 스텝들은 Host(Computer)에 MMC 보드가 장착되어 동작을 하는 상태에서 가능한 절차들이며, 각 스

텝들을 실행하기 전에 MOTION / AXIS_CFG(F3) 메뉴에서 "ENCODER", "CLOSED_LOOP" 버튼이 눌려져 있는지를

확인해야 하며, Servo Drive를 사용할 경우 속도제어 모드인지, Torque제어 모드를 인지를 확인해야 한다.

8.1.1 스텝1) Encoder 배선 및 연결

Host(Computer)의 전원을 Off 시키고, Motor Driver의 배선도와 메뉴얼에 개재된 MMC 보드 결선도에 따라

모든 Encoder를 연결시킨다.

Host(Computer)의 전원을 ON 한다. MMC 보드는 대부분의 AC,EC Servo나 Step Motor 시스템의 Encoder를

위해 전원을 공급한다. 단 Drive내부의 Encoder가 아닌 외부에 별도의 Encoder를 장착할 경우에는 별도의

전원을 외부에서 공급해야 한다.

8.1.2 스텝2) Encoder 동작 시험

SETUP 프로그램을 실행 후, 손으로 모타/Encoder를 돌리면서 MOTION 메뉴에서 Actual Position값이 정상적

으로 증가하거나 감소하는지 여부를 확인한다. 또한 Encoder 1회전당 출력되는 Encoder Count의 개수를 확

인해야 한다. Actual Position에 표시되는 값은 Encoder 1회전당 Count수 * 4, 즉 4체배한 값이다.

모타의 POWER 콘넥타가 분리되어 있는지 확인하라

고장대책: Encoder Count가 튀는 현상(Encoder Counts Bounce)

모타를 시계방향 / 반시계방향으로 회전시에 Encoder Count의 값이 0과 1사이 값만

Actual Position으로 표시될경우 Encoder의 A, B상 중에 한쪽만 연결되었을 확률이 높다.

CLOSED_LOOP 시스템 시험

Page 153: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

8 - 2

8.1.3 스텝3) 모타 Power 콘넥타의 배선 및 연결

Host(Computer)의 전원을 OFF 한다.

Host(Computer)의 전원을 ON 한다.

8.1.4 스텝4) 모타 / Encoder의 상(phase)이 맞는지를 시험

MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Enable"를 지정하여 위치제어가 정상적으로 되는지 확인한다.

8.1.5 스텝5) 모타 Gain Tuning

시스템 Tuning 전에 모타 단독으로 Gain Tuning을 실시하여 어느 정도 Gain을 Tuning 한 상태에서 실시하

여만 Tuning 잘못으로 인한 시스템의 손상을 방지하고 작업의 안전성을 높일 수 있다. 또한

MOTION/GRAPHICS 메뉴를 사용하면 Tuning 결과를 바로 알 수 있기 때문에 편리하다. Tuning Parameter의

값은 아래의 값에서부터 출발하는 것이 좋다.

Gain Type Servo Motor (Torque모드) Closed_Loop Stepper Motor

Position P Gain === 80 ==== 100

Position I Gain === 3 ==== 0

Position D Gain === 0 ==== 0

Position F Gain === 0 ==== 0

Position I Limit === 5000 ==== 0

Velocity P Gain === 3000 ==== *

Velocity I Gain === 10 ==== *

Velocity D Gain === 0 ==== *

Velocity F Gain === 0 ==== *

Velocity I Limit === 500 ==== *

Servo Driver / Stepper 의 전원이 OFF 상태인지 확인하라

고장대책: Motor Runaway 현상

위치제어가 되지않고 모타가 어느한방향으로 회전하면 A+ 와 B+ or A- 와 B- Encoder상의

결선이 반대로되어있을 확률이 높다.

고장대책: Motor가 움직이지 않을 경우

모타가 한번이동후 다시 동작명령을 내려도 움직이지 않을경우에는 In_position 상태가 되지

않았을 확률이 높다.

이런경우에는 MOTION / S/W LIMIT(F2)메뉴에서 IN_POSIITON값(default 100.0 encoder

counts)를 증가시켜야 한다.

CLOSED_LOOP 시스템 시험

Page 154: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter8

시스템검사

8 - 3

8.1.6 스텝6) 시스템 Gain Tuning

모타 단독으로 Gain Tuning후 실제 시스템을 MOTION 메뉴에서 동작을 시키면서 Fine Gain Tuning을 실시한

다. MOTION/GRAPHICS 메뉴를 사용하면 Tuning 결과를 바로 알 수 있기 때문에 편리하다.

CLOSED_LOOP 시스템 시험

Page 155: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

8 - 4

8.2 Open-Loop Stepper 시험

Open-Loop Stepper를 시험힐 때 그 절차를 요약하면 아래와 같다.

① Stepper의 연결.

② MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Enable"를 지정하여 위치제어가 정상적으로 되는지

확인한다.

위의 각 스텝들은 Host(Computer)에 MMC 보드가 장착되어 동작을 하는 상태에서 가능한 절차들이며, 각 스

텝들을 실행하기 전에 MOTION / AXIS_CFG(F3) 메뉴에서 "STEPPER"또는"MICRO","ENCODER", "OPEN_LOOP"

버튼이 눌려져 있는지를 먼저 확인해야 한다.

8.2.1 스텝1) Stepper의 연결

Host(Computer)의 전원을 Off 시키고, Stepper의 배선도와 메뉴얼에 개재된 MMC 보드 결선도에 따라

Stepper를 연결시킨다.

8.2.2 스텝2) 위치제어 여부 시험

MOTION / AXIS_IO(F4) 메뉴에서 AMP Device "Enable"를 지정하여 위치제어가 정상적으로 되는지 확인한다.

연결 및 SOFTWARE 시험시 항상 MOTOR축과 시스템은 분리된 상태에서 실시해야

시스템을 보호 할수 있다.

OPEN_LOOP 시스템 시험

Page 156: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MEMO

Page 157: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MEMO

Page 158: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

.1 Closed_Loop 시스템의 Tuning 9-1 page

9.2 Closed_Loop Servo의 Tuning 9-2 page

9.3 Closed_Loop Stepper Tuning 9-4 page

`제 9 장

GAIN TUNING

Page 159: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter9

GAINTUNING

9 - 1

9.1 Closed_Loop 시스템의 Tuning

MMC 보드는 목표위치(Command Position)와 현재위치(Actual Position)의 차이 값인 위치오차를 이용하여

축을 제어한다. 위치오차가 증가하면 모타제어 출력값도 증가한다. 모타제어 출력값은 Tuning Parameters

의 값에 의해 그 크기가 결정된다.

MMC 보드는 사용자가 정확한 Tuning 작업을 할 수있도록 위치와 속도 Loop를 분리하여 각각 Tuning이 가능

하도록 되어있으며, 위치게인 5개 속도게인 5개로 구성되어 있다. Tuning 작업은 MOTION / TUNING 메뉴를

이용함으로서 빠르고도 편리하게 수행할 수 있다. MMC 보드 PID 알고리즘은 아래의 식과 같다.

Yv (속도제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn)]

Yt (Torque 제어) = KR [( Kpp * PEn + Kpi * PSn + Kpd * (PEn - PEn-1) + Kpf * Vn) +

( Kvp * VEn + Kvi * VSn + Kvd * (VEn - VEn-1) + Kvf * An)]

PSn = PSn-1 + PEn [ if ( -PSmax < PSn < PSmax ) ]

PSmax [ if ( PSn > PSmax ) ]

-PSmax [ if ( PSn < -PSmax ) ]

VSn = VSn-1 + VEn [ if ( -VSmax < VSn < VSmax ) ]

VSmax [ if ( VSn > VSmax ) ]

-VSmax [ if ( VSn < -VSmax ) ]

Y = PID 및 Feedforward 제어출력 , Sample Period n

KR = Scale factor (1/512)

Kpp,Kvp = 위치,속도 비례(Proportional) gain

Kpi,Kvi = 위치,속도 적분(Integral) gain

Kpd,Kvd = 위치,속도 미분(Derivative) gain

Kpf,Kvf = Feedforward gain

PEn,VEn = Sample Period n 의 위치,속도오차

Vn = Sample Period n 의 속도명령

An = Sample Period n 의 가속도명령

PSn,VSn = 위치오차(PEn),속도오차(VEn)의 합

PSmax,VSmax = 위치오차(PEn),속도오차(VEn)의 합의 최대 값

CLOSED_LOOP 시스템의 TUNING

Page 160: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

9 - 2

9.2 Torque 제어모드 Servo의 Tuning 절차

① Position Gain을 설정한다.

② Velocity P Gain(Kvp)을 Tuning 한다.

③ Velocity D Gain(Kvd)을 Tuning 한다.

④ Velocity I Gain(Kvi)과 I Limit를 Tuning 한다.

⑤ Velocity Feedforwad Gain(Kvf)을 Tuning 한다.

⑥ Positon P Gain(Kpp)을 Tuning 한다.

⑦ Positon D Gain(Kpd)을 Tuning 한다.

⑧ Positon I Gain(Kpi)과 I Limit를 Tuning 한다.

⑨ Position Feedforwad Gain(Kpf)을 Tuning 한다.

9.2.1

① Position Gain 설정.

Gain Type Tuning 값

Position P Gain (Kpp) === 50

Position I Gain (Kpi) === 0

Position D Gain (Kpd) === 0

Position F Gain (Kpf) === 0

Position I Limit === 0

9.2.2

② Velocity P Gain(Kvp) Tuning.

먼저 Kvi,Kvd,Kvf를 모두 0으로 설정하고 Velocity P Gain값은 1000부터 출발하여 응답성을 보면서 단계적

으로 Velocity P Gain을 시스템 진동이 일어날 때까지 올린다. 진동이 발생했을 때 Gain값의 3/4 정도를

Velocity P Gain (Kvp)으로 설정한다.

9.2.3

③ Velocity D Gain(Kvp) Tuning.

Velocity D Gain은 Step 응답에서 Overshoot가 없을 정도의 최소 값을 설정한다. 최대속도로 동작 시 약간

의 Overshoot가 발생하도록 Tuning하는 것이 좋다.

TORQUE 제어모드 SERVO의 TUNING

Page 161: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter9

GAINTUNING

9 - 3

9.2.4

④ Velocity I Gain(Kvi), I Limit Tuning.

Velocity I Gain은 시스템이 동작후 정지상태에서 속도오차가 거의 존재하지 않을 때 까지 올린다. 만약

시스템이 진동을 하면 Gain값을 내린다.

9.2.5

⑤ Velocity Feedforwad Gain(Kvf) Tuning .

Velocity Feedforwad Gain(Kvf)은 속도,Torque Feedback파형을 보면서 원하는 모양이 나올 때까지 올린다.

속도 Velocity Feedforwad Gain은 가속,감속 시에 발생되는 속도오차를 줄여 준다.

9.2.6

⑥ Positon P Gain(Kpp) Tuning.

Position P Gain은 위의 Velocity Gain들을 Tuning해도 위치오차가 많을 경우 시스템이 진동을 하지 않을

때까지 올린다.

9.2.7

⑦ Position D Gain(Kpd) Tuning.

Position D Gain은 소음이나 동작 후 정지 시에 Overshoot가 없을 정도의 최소 값을 설정한다.

9.2.8

⑧ Position I Gain(Kpi), I Limit Tuning.

Position I Gain은 시스템이 동작후 정지상태에서 위치오차 값이 1 또는 2정도로 될 때까지 올린다. 만약

시스템이 진동을 하면 Gain값을 내린다. I Limit는 I Gain은 시스템의 진동으로 더 높은 값을 사용하기 어

려운경우 Limit값을 키워서 정지 시 위치오차 값이 줄어들도록 할 수 있다.

9.2.9

⑨ Position Feedforwad Gain(Kpf) Tuning .

Position Feedforwad Gain은 두 Point를 이동하면서 이때 발생되는 위치오차를 보면서 조절해 나간다. 위

치오차는 MOTION메뉴의 Error Value를 보면 알 수있다. Position Feedforwad Gain(Kpf)은 모타가 일정속도

로 회전(등속)시에 위치오차를 줄여주는 역할을 한다. 따라서 Position Feedforwad Gain값을 설정할 때는

움직이는 거리를 멀리 떨어뜨려 놓고 사용하는 것이 좋다.

TORQUE 제어모드 SERVO의 TUNING

Page 162: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

9 - 4

9.3 Closed_Loop Stepper 및 속도 제어모드 Servo의 Tuning 절차

① Position P Gain을 설정한다.

② Position Feedforwad Gain(Kpf)을 Tuning 한다.

③ Positon I Gain(Kpi)과 I Limit를 Tuning 한다.

9.3.1

① Position P Gain(Kpp) Tuning

먼저 Kpi,Kpd,Kpf를 모두 0으로 설정하고 Position P Gain값은 100부터 출발하여 응답성을 보면서 단계적

으로 Gain값을 모타가 stall 현상를 일으키거나 시스템 진동이 일어날 때까지 올린다. 진동이나 stall 현

상이 발생했을 때 Gain값의 3/4 정도를 Position P Gain (Kpp)으로 설정한다.

9.3.2

② Position Feedforwad Gain(Kpf) Tuning .

Position Feedforwad Gain은 두 Point를 이동하면서 이때 발생되는 위치오차를 보면서 조절해 나간다. 위

치오차는 MOTION메뉴의 Error Vlaue를 보면 알 수있다. Position Feedforwad Gain(Kpf)은 모타가 일정속도

로 회전(등속)시에 위치오차를 줄여 주는 역할을 한다. 따라서 Position Feedforwad Gain값을 설정할때는

움직이는 거리를 멀리하는게 좋다.

9.3.3

③ Position I Gain(Kpi), I Limit Tuning.

Position I Gain은 시스템이 동작 후 정지상태에서 위치오차 값이 1 또는 2정도로 될 때까지 올린다. 만약

시스템이 진동을 하면 Gain값을 내린다. I Limit는 I Gain은 시스템의 진동으로 더 높은 값을 사용하기 어

려운 경우 Limit값을 키워서 정지 시 위치오차 값이 줄어들도록 할 수 있다.

STEPPER 및 속도 제어모드 SERVO의 TUNING

Page 163: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

`제 10 장

MMC-BDPV42 사용설명서

10.1 MMC-BDPV42 개요

10.1.1 MMC-BDPV42 사양 10-1 page

10.1.2 기본 품목 10-2 page

10.1.3 OPTION 품목 10-2 page

10.2 MMC-HM10모델 핀 사양 10-3 page

10.3 MMC-HM20모델 핀 사양 10-4 page

10.4 100핀 콘넥타 핀 사양 10-5 page

10.5 MMC-BDPV42보드 설치 10-6 page

10.6 초기화 함수 10-7 page

10.7 I/O 설정 함수 10-8 page

Page 164: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter10

MMCBDPV42사용설명서

10 - 1

10.1 MMC-BDPV42 개요

10.1.1 MMC-BDPV42 사양

항 목 사 양

CPU TMS320C32

동작방법 PTP,원호보간,직선보간,스플라인보간

Interface PC/AT/산업용Computer

Sampling Rate 1msec

Analog 출력 ±10V, @16-bit 분해능

Pulse 출력 최대주파수 = 3.75MHz, 50% Duty Cycle, 주파수 분해능(60ns)

동작 범위 32-bit, ± 2147483647

가,감속설정 0 ‾ 200 (0 ‾ 2sec)

위치 Feedback 입력주파수= 2.5MHz(max), Digital Noise 필터

속도 Profiles 사다리꼴, 비대칭 사다리꼴, S_Curve, 비대칭 S_Curve 가,감속

시스템 I/O 입력(축당) AMP Fault 입력

시스템 I/O 출력(축당) Amp-Enable, Amp-Reset

Limit Sensor 입력(축당) 3개 Limit Sensor

사용자 입,출력 TTL Level 입,출력 8점

소비전원(최대전류 소비량) +5V-@2A,[email protected],[email protected],[email protected]

환경조건 0 - 50°C, 20 - 95 % RH, Non - condensing

크 기 160 X 100 mm

MMC-BDPV42 사양

표 10.1 MMC-BDPV42 사양

Page 165: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

10 - 2

10.1.2 기본 품목

기본품목은 MMC보드 구입시 제공되는 품목으로 다음과 같습니다.

① MMC 보드

② CD 1장

- WINDOWS 95/98 SETUP S/W

- WINDOWS NT SETUP S/W

- LIBRARY & DOS SETUP

③ 100핀 케이블(모듈 결선용) -> 1개

④ MMC 사용자 설명서

10.1.3 OPTION 품목

OPTION 품목은 MMC보드 구입시에 MMC보드와는 별도로 구입하셔야 됩니다.

MMC보드만 구입시에는 아래의 품목은 제공되지 않습니다.

① 축 CABLE(모듈 40PIN에 연결)

삼성 SERVO DRIVER와 결선시 사용하는 CABLE (2축/CABLE)

② OPTION 모듈

HALF-SIZE용 MMC 보드에 적용되는 OPTION 모듈은 두 가지 종류가 있습니다.

MMC-HM10모듈

MMC-HM10모듈은 1,2축 결선 및 LIMIT SENSOR, I/O 8점을 결선할 수 있도록 50PIN TERMINAL

BLOCK이 있는 모듈입니다.

MMC-HM20모듈

MMC-HM20모듈은 3,4축 결선 및 LIMIT SENSOR를 결선할 수 있도록 42PIN TERMINAL BLOCK이

있는 모듈입니다.

번호 CABLE 이름 길이 (mm, ±10%) 모델명 비 고

1 MMC 소용량 위치형 CABLE 2000 X 2000 mm MMC-CAAX1L0202 삼성 CSD Type 위치형

2 MMC 소용량 속도형 CABLE 2000 X 2000 mm MMC-CAAX1L1202 삼성 CSD Type 속도형

3 MMC 대용량 위치,속도형 CABLE 2000 X 2000 mm MMC-CAAX2H2202 삼성 CSDP,CSDJ Type

MMC-BDPV42 사양

표 10.2 MMC-BDPV42 CABLE 종류

Page 166: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter10

MMCBDPV42사용설명서

10 - 3

10.2 MMC-HM10모델 핀 사양

핀 번호 신호명 기능 핀 번호 신호명 기능

1 ENCODER A(0)+ ENCODER A+상 입력(0) 25 +LIMIT(1) + LIMIT SENSOR 입력 (1)

2 ENCODER A(1)+ ENCODER A+상 입력(1) 27 -LIMIT(0) - LIMIT SENSOR 입력 (0)

3 ENCODER A(0)- ENCODER A-상 입력(0) 23 -LIMIT(1) - LIMIT SENSOR 입력 (0)

4 ENCODER A(1)- ENCODER A-상 입력(1) 29 HOME INPUT(0) HOME SENSOR 입력

5 ENCODER B(0)+ ENCODER B+상 입력(0) 30 HOME INPUT(1) HOME SENSOR 입력

6 ENCODER B(1)+ ENCODER B+상 입력(1) 31 AMP FAULT(0) SERVO ERROR 입력 (0)

7 ENCODER B(0)- ENCODER B-상 입력(0) 32 AMP FAULT(1) SERVO ERROR 입력 (1)

8 ENCODER B(1)- ENCODER B-상 입력(1) 33 AMP ENABLE(0) SERVO 전원 ON (0)

9 ENCODER Z(0)+ ENCODER Z+상 입력(0) 34 AMP ENABLE(1) SERVO 전원 ON (1)

10 ENCODER Z(1)+ ENCODER Z+상 입력(1) 35 IN POSITION(0) 위치 결정 완료 (0)

11 ENCODER Z(0)- ENCODER Z-상 입력(0) 36 IN POSITION(1) 위치 결정 완료 (1)

12 ENCODER Z(1)- ENCODER Z-상 입력(1) 37 ERROR CLR(0) SERVO ERROR CLEAR(0)

13 ANALOG OUT(0) ±10(V) ANALOG 출력(0) 38 ERROR CLR(1) SERVO ERROR CLEAR(1)

14 ANALOG OUT(1) ±10(V) ANALOG 출력(1) 39 EXT VCC(0) 외부 공급전원 +24V

15 GND(0) ANALOG GND(0) 40 EXT VCC(1) 외부 공급전원 +24V

16 GND(1) ANALOG GND(1) 41 USER I/O 사용자 정의 I/0 0

17 CLKO(0)+ PULSE출력 + (0) 42 USER I/O 사용자 정의 I/0 1

18 CLKO(1)+ PULSE출력 + (1) 43 USER I/O 사용자 정의 I/0 2

19 CLKO(0)- PULSE출력 - (0) 44 USER I/O 사용자 정의 I/0 3

20 CLKO(1)- PULSE출력 - (1) 45 USER I/O 사용자 정의 I/0 4

21 CW(0) SIGN출력 + (0) 46 USER I/O 사용자 정의 I/0 5

22 CW(1) SING출력 + (1) 47 USER I/O 사용자 정의 I/0 6

23 CCW(0) SING출력 - (0) 48 USER I/O 사용자 정의 I/0 7

24 CCW(1) SING출력 - (1) 49 EXT GND(0) 외부 공급 전원 GND

25 +LIMIT(0) + LIMIT SENSOR 입력 (0) 50 EXT GND(1) 외부 공급 전원 GND

MMC-HM10 PIN 사양

표 10.3 MMC-HM10 모델핀 사양

Page 167: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

10 - 4

10.3 MMC-HM20모델 핀 사양

핀 번호 신호명 기능 핀 번호 신호명 기능

1 ENCODER A(2)+ ENCODER A+상 입력(2) 22 CW(3) SIGN출력 + (3)

2 ENCODER A(3)+ ENCODER A+상 입력(3) 23 CCW(2) SIGN출력 - (2)

3 ENCODER A(2)- ENCODER A-상 입력(2) 24 CCW(3) SIGN출력 - (3)

4 ENCODER A(3)- ENCODER A-상 입력(3) 25 +LIMIT(2) +LIMITS SENSOR 입력 (2)

5 ENCODER B(2)+ ENCODER B+상 입력(2) 26 +LIMIT(3) +LIMITS SENSOR 입력 (3)

6 ENCODER B(3)+ ENCODER B+상 입력(3) 27 -LIMIT(2) -LIMITS SENSOR 입력 (2)

7 ENCODER B(2)- ENCODER B-상 입력(2) 28 -LIMIT(3) -LIMITS SENSOR 입력 (3)

8 ENCODER B(3)- ENCODER B-상 입력(3) 29 HOME INPUT(2) HOME SENSOR 입력 (2)

9 ENCODER Z(2)+ ENCODER Z+상 입력(2) 30 HOME INPUT(3) HOME SENSOR 입력 (3)

10 ENCODER Z(3)+ ENCODER Z+상 입력(3) 31 AMP FAULT(2) SERVO ERROR 입력 (2)

11 ENCODER Z(2)- ENCODER Z-상 입력(2) 32 AMP FAULT(3) SERVO ERROR 입력 (3)

12 ENCODER Z(3)- ENCODER Z-상 입력(3) 33 AMP FAULT(2) SERVO ERROR 입력 (2)

13 ANALOG OUT(2) ±10(V) ANALOG 출력(2) 34 AMP FAULT(3) SERVO ERROR 입력 (3)

14 ANALOG OUT(3) ±10(V) ANALOG 출력(3) 35 IN POSITION(2) 위치 결정 완료 (2)

15 GND(2) ANALOG GND(2) 36 IN POSITION(3) 위치 결정 완료 (3)

16 GND(3) ANALOG GND(3) 37 ERROR CLR(2) SERVO ERROR CLEAR(2)

17 CLKO(2)+ PULSE출력 + (2) 38 ERROR CLR(3) SERVO ERROR CLEAR(3)

18 CLKO(3)+ PULSE출력 + (3) 39 EXT VCC(2) 외부 공급전원+24V

19 CLKO(2)- PULSE출력 - (2) 40 EXT VCC(3) 외부 공급전원+24V

20 CLKO(3)- PULSE출력 - (3) 41 EXT GND(2) 외부 공급 전원 GND

21 CW(2) SIGN출력 +(2) 42 EXT GND(3) 외부 공급 전원 GND

MMC-HM20 PIN 사양

표 10.4 MMC-HM11 모델핀 사양

Page 168: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter10

MMCBDPV42사용설명서

10 - 5

10.4 100핀 콘넥타 핀 사양

CON1 CON2

PIN 신호명 기능 PIN

1 +5 V 출력 1

2 +5 V 출력 2

3 ENCODER A(0)+ ENCODER A+상 입력(0) 3

4 ENCODER A(1)+ ENCODER A+상 입력(1) 4

5 ENCODER A(0)- ENCODER A-상 입력(0) 5

6 ENCODER A(1)- ENCODER A-상 입력(1) 6

7 ENCODER B(0)+ ENCODER B+상 입력(0) 7

8 ENCODER B(1)+ ENCODER B+상 입력(1) 8

9 ENCODER B(0)- ENCODER B-상 입력(0) 9

10 ENCODER B(1)- ENCODER B-상 입력(1) 10

11 ENCODER Z(0)+ ENCODER Z+상 입력(0) 11

12 ENCODER Z(1)+ ENCODER Z+상 입력(1) 12

13 ENCODER Z(0)- ENCODER Z-상 입력(0) 13

14 ENCODER Z(1)- ENCODER Z-상 입력(1) 14

15 ANALOG OUT(0) ±10(V) ANALOG 출력(0) 15

16 ANALOG OUT(1) ±10(V) ANALOG 출력(0) 16

17 GND(0) ANALOG GND 17

18 GND(1) ANALOG GND 18

19 CLKO(0)+ PULSE출력(정논리) (0) 19

20 CLKO(1)+ PULSE출력(정논리) (1) 20

21 CLKO(0)- PULSE출력(부논리) (0) 21

22 CLKO(1)- PULSE출력(부논리) (1) 22

23 CW(0) SIGN출력(정논리) (0) 23

24 CW(1) SIGN출력(정논리) (1) 24

25 CCW(0) SIGN출력(부논리) (0) 25

26 CCW(1) SIGN출력(부논리) (1) 26

27 POSITIVE LIMIT(0) LIMIT SENSOR 입력 +(0) 27

28 POSITIVE LIMIT(1) LIMIT SENSOR 입력 +(1) 28

29 NEGATIVE LIMIT(0) LIMIT SENSOR 입력 -(0) 29

30 NEGATIVE LIMIT(1) LIMIT SENSOR 입력 -(1) 30

31 HOME INPUT(0) HOME SENSOR 입력 (0) 31

32 HOME INPUT(1) HOME SENSOR 입력 (1) 32

33 AMP FAULT(0) SERVO ERROR 입력 (0) 33

34 AMP FAULT(1) SERVO ERROR 입력 (1) 34

35 AMP ENABLE(0) SERVO 전원 ON (0) 35

36 AMP ENABLE(1) SERVO 전원 ON (1) 36

37 IN POSITION(0) 위치이동완료 (0) 37

38 IN POSITION(1) 위치이동완료 (1) 38

39 ERROR CLR(0) SERVO ERROR CLEAR(0) 39

40 ERROR CLR(1) SERVO ERROR CLEAR(1) 40

41 EXT VCC(0) 외부 공급전원 +24V 41

42 EXT VCC(1) 외부 공급전원 +24V 42

43 USER I/O 0 사용자정의 I/O 0 43

44 USER I/O 1 사용자정의 I/O 1 44

45 USER I/O 2 사용자정의 I/O 2 45

46 USER I/O 3 사용자정의 I/O 3 46

47 EXT GND(0) 외부 공급전원 GND 57

48 EXT GND(1) 외부 공급전원 GND 58

49 GND GND(BOARD) 59

50 GND GND(BOARD) 60

CON1 CON3

PIN 신호명 기능 PIN

51 +5 V 출력 1

52 +5 V 출력 2

53 ENCODER A(2)+ ENCODER A+상 입력(2) 3

54 ENCODER A(3)+ ENCODER A+상 입력(3) 4

55 ENCODER A(2)- ENCODER A-상 입력(2) 5

56 ENCODER A(3)- ENCODER A-상 입력(3) 6

57 ENCODER B(2)+ ENCODER B+상 입력(2) 7

58 ENCODER B(3)+ ENCODER B+상 입력(3) 8

59 ENCODER B(2)- ENCODER B-상 입력(2) 9

60 ENCODER B(3)- ENCODER B-상 입력(3) 10

61 ENCODER Z(2)+ ENCODER Z+상 입력(2) 11

62 ENCODER Z(3)+ ENCODER Z+상 입력(3) 12

63 ENCODER Z(2)- ENCODER Z-상 입력(2) 13

64 ENCODER Z(3)- ENCODER Z-상 입력(3) 14

65 ANALOG OUT(2) ±10(V) ANALOG 출력(2) 15

66 ANALOG OUT(3) ±10(V) ANALOG 출력(3) 16

67 GND(2) ANALOG GND(2) 17

68 GND(3) ANALOG GND(3) 18

69 CLKO(2)+ PULSE출력(정논리) (2) 19

70 CLKO(3)+ PULSE출력(정논리) (3) 20

71 CLKO(2)- PULSE출력(부논리) (2) 21

72 CLKO(3)- PULSE출력(부논리) (3) 22

73 CW(2) SIGN출력(정논리) (2) 23

74 CW(3) SIGN출력(정논리) (3) 24

75 CCW(2) SIGN출력(부논리) (2) 25

76 CCW(3) SIGN출력(부논리) (3) 26

77 POSITIVE LIMIT(2) LIMIT SENSOR 입력 +(2) 27

78 POSITIVE LIMIT(3) LIMIT SENSOR 입력 +(3) 28

79 NEGATIVE LIMIT(2) LIMIT SENSOR 입력 -(2) 29

80 NEGATIVE LIMIT(3) LIMIT SENSOR 입력 -(3) 30

81 HOME INPUT(2) HOME SENSOR 입력 (2) 31

82 HOME INPUT(3) HOME SENSOR 입력 (3) 32

83 AMP FAULT(2) SERVO ERROR 입력 (2) 33

84 AMP FAULT(3) SERVO ERROR 입력 (3) 34

85 AMP ENABLE(2) SERVO 전원 ON (2) 35

86 AMP ENABLE(3) SERVO 전원 ON (3) 36

87 IN POSITION(2) 위치이동완료 (2) 37

88 IN POSITION(3) 위치이동완료 (3) 38

89 ERROR CLR(2) SERVO ERROR CLEAR(2) 39

90 ERROR CLR(3) SERVO ERROR CLEAR(3) 40

91 EXT VCC(2) 외부 공급전원 +24V 41

92 EXT VCC(3) 외부 공급전원 +24V 42

93 USER I/O 4 사용자정의 I/O 4CON2-47에 연결

94 USER I/O 5 사용자정의 I/O 5CON2-48에 연결

95 USER I/O 6 사용자정의 I/O 6CON2-49에 연결

96 USER I/O 7 사용자정의 I/O 7CON2-50에 연결

97 EXT GND(2) 외부 공급전원 GND 57

98 EXT GND(3) 외부 공급전원 GND 58

99 GND GND(BOARD) 59

100 GND GND(BOARD) 60

100핀 콘넥타 PIN 사양

표 10.5 100핀 콘넥타 핀 사양

Page 169: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

10 - 6

10.5 MMC-BDPV42보드 설치

Computer에서 MMC 보드 1장의 메모리 용량은 1K Byte(DPRAM)로 구성되어 있다. 일반적으로 Computer에서는 메모

리를 사용하고 있는 영역과 사용하지 않는 영역이 Computer Maker에 따라서 다르기 때문에 Computer에서 사용하

고 있는 어드레스 영역을 피하여 MMC 보드를 사용 하여야 한다.

MMC 보드의 최소 어드레스 설정 단위는 4K Byte이며, DIP Switch를 조정하여 어드레스 영역을 사용자가 편리대로

설정할 수 있다(아래 그림참조). 단 2장 이상의 MMC보드 장착 시 어드레스를 영역을 중복되게 설정하면 안 된다.

DPRAM ADDR

IRQ Select

I/O ADDR

1 2 3 4 5 6 7 8

ON

SA19

SA18SA17

SA16

SA15

SA14SA13

SA12

Address 설정방법

DIP S/W로 설정 가능한 Address범위 0x00XXX ‾ 0xffXXX (각 보드당 할당되는 Memory는 4(KByte)단위)

위의 설정 가능한 영역에서 PC에서 사용하지 않는 Address 영역을 선택하여 설정함

위의 설정 가능한 영역 내에서 설정된 DIP S/W에 의해 설정된 번지가 DPRAM의 시작번지가 된다

(ex. 0xD0XXX 으로 설정을 하면 "D000:0000" 번지가 DPRAM의 시작번지가 된다)

Default Setting : d800:0000 ‾ d800:03ff

MMC-BDPV42 설치

그림 10.1 MMC-BDPV42 DPRAM 설정

Page 170: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter10

MMCBDPV42사용설명서

10 - 7

10.6 초기화 함수

mmc_init42(bdNum,*Addr)

mmc_init42함수는 시스템 초기화에 필요한 함수로서 프로그램 실행시 반드시

제일먼저 수행되어야 하며, 프로그램 실행전 DPRAM의 어드레스를 확인한다.

/* 보드 2장이상 장착시 초기화 프로그램 */

#include "mmcdef.h"#include <stdio.h>#define MMCPV42NUM 4int main()long Addr[MMCPV42NUM] = 0xd8000000, 0xd9000000 0xda000000,

0xdb000000 ;int e = mmc_init42(MMCPV42NUM,*addr); /* 변수 초기화 */if(e)printf(stderr,"MMC Initial error:%s(%d)\n", _error_msg(e),e);return e;

return MMC_OK;

/* 보드 1장 장착시 초기화 프로그램 */

#include "mmcdef.h"#include <stdio.h>int main()long Addr = 0xd8000000;int e = mmc_init42(1,&Addr); /* 변수 초기화 */if(e)printf(stderr,"MMC Initial error:%s(%d)\n", _error_msg(e),e);return e;

return MMC_OK;

"mmc_init42" 함수는 MMC-BDPV42 모델(HALF-SIZE)에만 적용되는 초기화

함수로서 기존의 초기화 함수인 "mmc_initx"와 동일한 기능을 가진다.

bdNum 인수는 장착된 MMC 보드의 개수를 의미하고, *addr은 각 보드의 DPRAM 어

드레스를 의미한다.

MMC_OK(0), MMC_NOT_INITIALIZED(1), MMC_TIMEOUT_ERR(2),MMC_NON_EXIST(10),

MMC_BOOT_OPEN_ERROR(11), MMC_CHKSUM_OPEN_ERROR(12)

mmc_init42 = MMC 보드 및 Parameter 초기화기 능

#include "mmcdef.h"

int mmc_init42(int bdNum, long *addr);사 용 예

주 의

함 수 명

예 제

NOTE

Error Return값

초기화 함수

Page 171: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

10 - 8

set_io_mode(bdNum, mode)

fset_io_mode(bdNum, mode)

get_io_mode(bdNum, *mode)

fget_io_miode(bdNum, *mode)

10.7 I/O 설정 함수

MMC-BODPV42 모델은 기존 모델인 MMC-BODPV41 모델과는 달리 입,출력

모드를 각 BIT별로 설정 할 수있다.

set_io_mode, fset_io_mode 함수에서 mode 인수값이

출력 bit로 설정시에는 mode를 1로 설정

입력 bit로 설정시에는 mode를 0으로 설정 하면 됩니다.

get_io_mode, fget_io_mode 함수에서 mode 인수값이

mode=1 인 경우는 출력 bit로 설정

mode=0 인 경우는 입력 bit로 설정된 상태 입니다.

MMC_OK(0), MMC_NOT_INITIALIZED(1), MMC_TIMEOUT_ERR(2),MMC_NON_EXIST(10),

MMC_BOOT_OPEN_ERROR(11), MMC_CHKSUM_OPEN_ERROR(12)

set_io_mode = I/O 8점에 대한 입,출력 모드 설정

fset_io_mode = I/O 8점에 대한 입,출력 모드 설정, Boot Memory에 저장

get_io_mode = I/O 8점에 대한 입,출력 모드 읽음

fget_io_mode = I/O 8점에 대한 Boot Memory에 있는 입,출력 모드 읽음

기 능

#include "mmcdef.h"

int set_io_mode(int bdNum, int mode);

int fset_io_mode(int bdNum, int mode);

int get_io_mode(int bdNum, int *mode);

int fget_io_mode(int bdNum, int *mode);

사 용 예

함 수 명

NOTE

Error Return값

I/O 설정 함수

Page 172: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

 제 11 장

함수 및 DEFINE문 목록

11.1 함수 11-1 page

11.2 Define 문 11-9 page

Page 173: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 1

11.1 함수다음의 List는 MMC 보드에서 제공하는 C-Library함수들을 기능별로 분류한 것이다.

초기화mmc_initx(totalbdnum,*Addr) MMC-BDPV41/81보드의 초기화 및 Parameter 설정

mmc_init42(bdNum,*addr) MMC-BDPV42보드의 초기화 및 Parameter 설정

set_dpram_addr(bdNum,addr) DPRAM 어드레스 설정

Error 처리error_message(code,*dst) Error Message를 dst 버퍼에 Copy

_error_message(code) Error Message의 어드레스를 돌려준다.

get_mmc_error() Windows 프로그램에서 mmc_error를 읽을때 사용.

단축이동start_move(axis,pos,vel,accel) 사다리꼴 속도 Profile로 지정축 이동

move(axis,pos,vel,accel) 사다리꼴 속도 Profile로 이동 및 완료시까지 기다린다.

start_r_move(axis,pos,vel,accel) 사다리꼴 속도 Profile로 지정축 상대이동

r_move(axis,pos,vel,accel) 사다리꼴 속도 Profile로 상대이동 및 완료시까지 기다린다.

start_t_move(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 지정축 이동

t_move(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 이동 및 완료시까지 기다린다.

start_tr_move(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 지정축 상대이동

tr_move(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 상대이동 및 완료시까지 기다린다.

wait_for_done(axis) 지정축의 동작완료시 까지 다음 명령수행을 중지

S_CURVE 속도Profile 단축이동start_s_move(axis,pos,vel,accel) S_CURVE 속도 Profile로 이동

s_move(axis,pos,vel,accel) S_CURVE 속도 Profile로 이동 및 완료시까지 기다린다.

start_rs_move(axis,pos,vel,accel) S_CURVE 속도 Profile로 지정축 상대이동

rs_move(axis,pos,vel,accel) S_CURVE 속도 Profile로 상대이동 및 완료시까지 기다린다.

start_ts_move(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 이동

ts_move(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 이동 및 완료시까지 기다린다.

start_trs_move(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 지정축 상대이동

trs_move(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 상대이동 및 완료시까지 기다린다.

다축 이동start_move_all(axis,pos,vel,accel) 사다리꼴 속도 Profile로 이동

move_all(axis,pos,vel,accel) 사다리꼴 속도 Profile로 이동 및 완료시까지 기다린다.

start_s_move_all(axis,pos,vel,accel) S_CURVE 속도 Profile로 이동

s_move_all(axis,pos,vel,accel) S_CURVE 속도 Profile로 이동 및 완료시까지 기다린다.

start_t_move_all(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 이동

t_move_all(axis,pos,vel,accel,decel) 비대칭 사다리꼴 속도 Profile로 이동 및 완료시까지 기다린다.

start_ts_move_all(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 이동

ts_move_all(axis,pos,vel,accel,decel) 비대칭 S_CURVE 속도 Profile로 이동 및 완료시까지 기다린다.

wait_for_all(len,*axes) 지정축들의 동작완료시 까지 다음 명령수행을 중지

Velocity 이동v_move(axis,vel,accel) 가속후 지정속도로 일정하게 회전

v_move_stop(axis) 지정축 감속후 정지

함수 LIST

Page 174: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 2

좌표축의 구성

map_axes(n_axes,*map_array) 직선,원호,원,spline등의 동작을 수행할 축의 그룹을 지정

Coordinated 동작변수set_move_speed(speed) 직선,spline 동작속도 지정

set_move_accel(accel) 직선,원호,원,spline의 동작시 가,감속시간을 지정

all_done() 직선,원호,원,spline의 동작완료시 까지 다음 명령수행을 중지

다축직선이동move_2(x,y) x,y 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_3(x,y,z) x,y,z 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_4(x,y,z,w) x,y,z,w 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_n(*axes) 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

smove_2(x,y) x,y 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_3(x,y,z) x,y,z 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_4(x,y,z,w) x,y,z,w 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_n(*axes) 좌표값 만큼 S_Curve 속도 Profile로 직선이동

move_2ax(ax1,ax2,x,y,vel,acc) 지정축이 x,y 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_3ax(ax1,ax2,ax3,x,y,z,vel,acc) 지정축이 x,y,z 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_4ax(ax1,ax2,ax3,ax4,x,y,z,w,vel,acc) 지정축이 x,y,z,w 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

move_nax(len,*axes,*pos,vel,acc) 지정축이 좌표값 만큼 사다리꼴 속도 Profile로 직선이동

smove_2ax(ax1,ax2,x,y,vel,acc) 지정축이 x,y 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_3ax(ax1,ax2,ax3,x,y,z,vel,acc) 지정축이 x,y,z 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_4ax(ax1,ax2,ax3,ax4,x,y,z,w,vel,acc) 지정축이 x,y,z,w 좌표값 만큼 S_Curve 속도 Profile로 직선이동

smove_nax(len,*axes,*pos,vel,acc) 지정축이 좌표값 만큼 S_Curve 속도 Profile로 직선이동

원 및 원호이동set_arc_division(degrees) 원호,원 동작시에 원주속도 지정

arc_2(x_center,y_center,angle) 주어진 각도만큼 원호,원 이동

SPLINE 이동spl_line_move2(*pntxy,vel,acc) 2축 자동가,감속에의한 직선 spline 이동

spl_line_move3(*pntxyz,vel,acc) 3축 자동가,감속에의한 직선 spline 이동

spl_arc_move2(x_c,y_c,*pxy,vel,acc,dir) 2축 자동가,감속에의한 원호 spline 이동

spl_arc_move3(x_c,y_c,*pxyz,vel,acc,dir) 3축 자동가,감속에의한 원호 spline 이동

spl_move(len,ax1,ax2,ax3,*x,*y,*z,vel,acc) 3축 spline 이동

rect_move(ax1,ax2,*pxy,vel,acc) 2축이 사각형을 그리면서 spline 이동

set_spl_auto_off(bd_num, mode) 자동 가,감속 기능 사용여부 설정

spl_line_move2ax(ax1,ax2,*pntxy,vel,acc) spline축 지정 2축 자동가,감속에의한 직선 spline 이동

spl_line_move3ax

(ax1,ax2,ax3,*pntxyz,vel,acc) spline축 지정 3축 자동가,감속에의한 직선 spline 이동

spl_arc_move2ax

(ax1,ax2,xc,yc,*pntxy,vel,acc,dir) spline축 지정 2축 자동가,감속에의한 원호 spline 이동

spl_arc_move3ax

(ax1,ax2,ax3,xc,yc,*pntxyz,vel,acc,dir) spline축 지정 3축 자동가,감속에의한 원호 spline 이동

함수 LIST

Page 175: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 3

정지동작set_stop(axis) STOP_EVENT 지정

set_stop_rate(axis,rate) STOP_EVENT 수행시 감속시간 지정

get_stop_rate(axis,*rate) STOP_EVENT 수행시 적용되는 감속시간 읽음

fset_stop_rate(axis,rate) STOP_EVENT 수행시 감속시간 지정, Boot File에 저장

fget_stop_rate(axis,*rate) Boot File에서 STOP_EVENT 수행시 적용되는 감속시간 읽음

긴급정지동작set_e_stop(axis) E_STOP_EVENT 지정

set_e_stop_rate(axis,rate) E_STOP_EVENT 수행시 감속시간 지정

get_e_stop_rate(axis,*rate) E_STOP_EVENT 수행시 적용되는 감속시간 읽음

fset_e_stop_rate(axis,rate) E_STOP_EVENT 수행시 감속시간 지정, Boot File에 저장

fget_e_stop_rate(axis,*rate) Boot File에서 E_STOP_EVENT 수행시 적용되는 감속시간 읽음

위치변수set_position(axis,position) 현재위치(actual position)와 목표위치(desired position) 지정

get_position(axis,*position) 현재위치(actual position)을 읽음

set_command(axis,command) 목표위치(command position) 지정

get_command(axis,*command) 목표위치를 읽음

get_error(axis,*error) 위치오차를 읽음

위치에 따른 I/O 출력

position_io_onoff(pos_num,ioNum,ax,pos,enc_flag) 현재위치(actual position)에 따라 지정 I/O 출력 ON/OFF

position_io_clear(pos_num) 지정 I/O 출력 ON/OFF 설정 해제

position_io_allclear() 지정 I/O 출력 ON/OFF 설정 전부해제

동작상태in_sequence(axis) 축이 명령을 수행중 일때 TRUE(1)을 돌려줌

in_motion(axis) 축이 동작중일때 TRUE(1)을 돌려줌

in_position(axis) 위치오차가 In_Position범위 내일때 TRUE(1)을 돌려줌

motion_done(axis) !in_sequence && !in_motion 일때 TRUE(1)을 돌려줌

axis_done(axis) motion_done && in_position 일때 TRUE(1)을 돌려줌

get_com_velocity(axis) 해당축의 동작중 속도명령값을 PULSE값으로 돌려준다.

get_act_velocity(axis) 해당축의 동작중 실제속도값을 PULSE값으로 돌려준다.

제어상태axis_state(axis) EVENT 발생상태를 돌려줌

axis_source(axis) 축의 현재상태를 돌려줌

clear_status(axis) EVENT 및 상태 Bit를 Clear하고, 다음명령부터 실행

frames_clear(axis) MMC보드가 가지고 있는 실행 대기명령을 전부취소시킴

frames_left(axis) 비어있는 MMC보드의 frame 갯수를 읽음

controller_idle/run PID 제어상태 disable/Enable

함수 LIST

Page 176: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 4

Sensor 상태home_switch(axis) Home 센서의 상태를 읽음

pos_switch(axis) + Limit 센서의 상태를 읽음

neg_switch(axis) - Limit 센서의 상태를 읽음

amp_fault_switch(axis) AMP의 Fault 상태를 읽음

Analog 입,출력get_analog(channel,*value) ADC채널로 부터 12bit/16bit Data를 읽음

set_dac_output(axis,volt) 12bit/16bit Analog전압을 출력

get_dac_output(axis,volt) Analog 출력전압 Data를 읽음

set_analog_offset(ax,offset) Analog 출력전압의 offset을 설정

Motion 제어mmc_dwell(axis,duration) 다음 이동 동작을 Duration만큼 지연시킴

mmc_io_trigger(axis,bitNo,state) 지정 I/O Bit Level이 지정 State로 바뀔 때까지 실행을 지연시킴

mmcDelay(duration) Duration만큼 프로그램 실행을 지연시킴

MMC 보드 구성mmc_axes(bdNum,*axes) MMC보드의 제어축수를 돌려줌

mmc_all_axes() 제어되고 있는 전체 제어축수를 돌려줌

set_stepper(axis) 일반 Stepper 제어축으로 지정

set_micro_stepper(axis) Micro Stepper나 위치형 Servo 제어축으로 지정

set_servo(axis) Servo 제어축으로 지정

get_stepper(axis) 축이 Stepper로 지정되었을 경우 TRUE(1)을 돌려줌

get_micro_stepper(axis) 축이 Micro Stepper나 위치형 Servo로 지정되었을 경우 TRUE(1)을 돌려줌

fset_stepper(axis) 일반 Stepper 제어축으로 지정, Boot File에 저장

fset_micro_stepper(axis) Micro Stepper나 위치형 Servo 제어축으로 지정, Boot File에 저장

fset_servo(axis) Servo 제어축으로 지정, Boot File에 저장

fget_stepper(axis) Boot File에 축이 Stepper로 지정되었을 경우 TRUE(1)을 돌려줌

fget_micro_stepper(axis) Boot File에 축이 Micro Stepper, 위치형Servo로 지정되었을 경우 TRUE(1)을

돌려줌

함수 LIST

Page 177: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 5

축 구성set_closed_loop(axis,loop) 축을 Closed_Loop(loop=1) / Open_Loop(loop=0)로 지정

get_closed_loop(axis,*loop) Closed_Loop(loop=1) / Open_Loop(loop=0)인지를 판별

fset_closed_loop(axis,loop) 축을 Closed_Loop(loop=1) / Open_Loop(loop=0)로 지정,

Boot File에 저장

fget_closed_loop(axis,*loop) Boot File에서 Closed_Loop(loop=1) /

Open_Loop(loop=0)인지를 판별

set_feedback(axis,device) Feedback장치를 지정

get_feedback(axis,*device) Feedback장치의 종류를 읽음

fset_feedback(axis,device) Feedback장치를 지정, Boot File에 저장

fget_feedback(axis,*device) Boot File에서 Feedback장치의 종류를 읽음

set_unipolar(axis,state) Analog 출력을 Unipolar로 지정

get_unipolar(axis) Analog 출력이 Unipolar인지 판별

fset_unipolar(axis,state) Analog 출력을 Unipolar로 지정, Boot File에 저장

fget_unipolar(axis) Boot File에서 Analog 출력이 Unipolar인지 판별

set_control(axis,cont) 속도 or Torque제어 모드를 지정

get_control(axis,*cont) 적용중인 제어모드(속도 or Torque제어)를 읽음

fset_control(axis,cont) 속도 or Torque제어 모드를 지정, Boot File에 저장

fget_control(axis,*cont) Boot File에서 제어모드(속도 or Torque제어)를 읽음

set_step_mode(axis,mode) Pulse 출력모드를 지정

get_step_mode(axis,*mode) 적용중인 Pulse 출력모드를 읽음

fset_step_mode(axis,mode) Pulse 출력모드를 지정, Boot File에 저장

fget_step_mode(axis,*mode) Boot File에서 Pulse 출력모드를 읽음

Pulse 분주비set_pulse_ratio(axis,pgratio) 지정 축의 Pulse 분주비를 지정

get_pulse_ratio(axis,*pgratio) 지정 축의 Pulse 분주비를 읽음

Gain 변수set_filter(axis,*coeff), set_gain(axis,*coeff) 위치 Gain을 지정

get_filter(axis,*coeff), get_gain(axis,*coeff) 위치 Gain을 읽음

set_v_filter(axis,*coeff), set_v_gain(axis,*coeff) 속도 Gain을 지정

get_v_filter(axis,*coeff), get_v_gain(axis,*coeff) 속도 Gain을 읽음

fset_filter(axis,*coeff), fset_gain(axis,*coeff) 위치 Gain 지정 및 Boot File에 저장

fset_v_filter(axis,*coeff), fset_v_gain(axis,*coeff) 속도 Gain 지정 및 Boot File에 저장

fget_filter(axis,*coeff), fget_gain(axis,*coeff) 위치 Gain을 Boot File에서 읽음

fget_v_filter(axis,*coeff), fget_v_gain(axis,*coeff) 속도 Gain을 Boot File에서 읽음

set_p_integration(axis,mode) 위치 Loop의 적분 제어모드를 지정

get_p_integration(axis,mode) 위치 Loop의 적분 제어모드를 읽음

set_v_integration(axis,mode) 속도 Loop의 적분 제어모드를 지정

get_v_integration(axis,mode) 속도 Loop의 적분 제어모드를 읽음

fset_p_integration(axis,mode) 위치 Loop의 적분 제어모드를 지정, Boot File에 저장

fset_v_integration(axis,mode) 속도 Loop의 적분 제어모드를 지정, Boot File에 저장

함수 LIST

Page 178: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 6

Software Limitsset_positive_sw_limit(axis,pos,action) +방향 Limit 위치 및 EVENT 지정

get_positive_sw_limit(axis,*pos,*action +방향 Limit 위치 및 EVENT 읽음

fset_positive_sw_limit(axis,pos,action) +방향 Limit 위치 및 EVENT 지정, Boot File에 저장

fget_positive_sw_limit(axis,*pos,*action) Boot File에서 +방향 Limit 위치 및 EVENT 읽음

set_negative_sw_limit(axis,pos,action) -방향 Limit 위치 및 EVENT 지정

get_negative_sw_limit(axis,*pos,*action) -방향 Limit 위치 및 EVENT 읽음

fset_negative_sw_limit(axis,pos,action) -방향 Limit 위치 및 EVENT 지정, Boot File에 저장

fget_negative_sw_limit(axis,*pos,*action) Boot File에서 -방향 Limit 위치 및 EVENT 읽음

set_vel_limit(axis,limit) 속도 Limit 지정

get_vel_limit(axis,*limit) 속도 Limit 읽음

set_accel_limit(axis,limit) 가,감속 Limit 지정

get_accel_limit(axis,*limit) 가,감속 Limit 읽음

set_in_position(axis,limit) 위치결정 완료(in_position)값 지정

(closed_loop 설정시 유효)

get_in_position(axis,*limit) 위치결정 완료(in_position)값 읽음

fset_in_position(axis,limit) 위치결정 완료(in_position)값 지정, Boot File에 저장

fget_in_position(axis,*limit) Boot File에서 위치결정 완료(in_position)값 읽음

set_error_limit(axis,limit) 위치오차 Limit를 지정

get_error_limit(axis,*limit) 위치오차 Limit를 읽음

fset_error_limit(axis,limit) 위치오차 Limit를 지정, Boot File에 저장

fget_error_limit(axis,*limit) Boot File에서 위치오차 Limit를 읽음

set_inposition_level(axis,level) 위치결정 완료(in_position) 신호 Level를 지정

(open_loop 설정시 유효)

get_inposition_level(axis,*level) 위치결정 완료(in_position) 신호 Level를 읽음

Hardware Limits

set_positive_limit(axis,action) + Limit Switch의 EVENT 지정

get_positive_limit(axis,*action) + Limit Switch의 EVENT 읽음

fset_positive_limit(axis,action) + Limit Switch의 EVENT 지정, Boot File에 저장

fget_positive_limit(axis,*action) Boot File에서 + Limit Switch의 EVENT 읽음

set_negative_limit(axis,action) - Limit Switch의 EVENT 지정

get_negative_limit(axis,*action) - Limit Switch의 EVENT 읽음

fset_negative_limit(axis,action) - Limit Switch의 EVENT 지정, Boot File에 저장

fget_negative_limit(axis,*action) Boot File에서 - Limit Switch의 EVENT 읽음

set_positive_level(axis,level) + Limit Switch의 Active Level를 지정

get_positive_level(axis,*level) + Limit Switch의 Active Level를 읽음

set_negative_level(axis,level) - Limit Switch의 Active Level를 지정

get_negative_level(axis,*level) - Limit Switch의 Active Level를 읽음

함수 LIST

Page 179: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 7

Home Sensorset_home(axis,action) Home Sensor의 EVENT 지정

get_home(axis,*action) Home Sensor의 EVENT 읽음

fset_home(axis,action) Home Sensor의 EVENT 지정, Boot File에 저장

fget_home(axis,*action) Boot File에서 Home Sensor의 EVENT 읽음

set_home_level(axis,level) Home Sensor의 Active Level를 지정

get_home_level(axis,*level) Home Sensor의 Active Level를 읽음

fset_home_level(axis,level) Home Sensor의 Active Level를 지정, Boot File에 저장

fget_home_level(axis,*level) Boot File에서 Home Sensor의 Active Level를 읽음

set_index_required(axis,indexRequired) 원점복귀(Homing)시에 Index Pulse (Encoder C상) 이용여부 지정

get_index_required(axis,*indexRequired) 원점복귀(Homing)시에 Index Pulse (Encoder C상) 이용여부 읽음

fset_index_required(axis,indexRequired) 원점복귀(Homing)시에 Index Pulse 이용여부 지정, Boot File에 저장

fget_index_required(axis,*indexRequired) Boot File에서 원점복귀(Homing)시에 Index Pulse 이용여부 읽음

AMP 제어set_amp_enable(axis,state) AMP Enable/Disable을 지정

get_amp_enable(axis,*state) AMP Enable/Disable 상태를 읽음

set_amp_enable_level(axis,level) AMP Enable의 Active Level을 지정

get_amp_enable_level(axis,*level) AMP Enable의 Active Level을 읽음

AMP Faultset_amp_fault(axis,action) AMP Fault시 EVENT 지정

get_amp_fault(axis,*action) AMP Fault의 EVENT 읽음

fset_amp_fault(axis,action) AMP Fault시 EVENT 지정, Boot File에 저장

fget_amp_fault(axis,*action) Boot File에서 AMP Fault의 EVENT 읽음

set_amp_fault_level(axis,level) AMP Fault의 Active Level을 지정

get_amp_fault_level(axis,*level) AMP Fault의 Active Level을 읽음

amp_fault_reset(axis) AMP Fault를 Clear 시킴

amp_fault_set(axis) AMP Fault Port를 Enable 시킴

set_amp_reset_level(axis,level) AMP Fault Reset의 Active Level을 지정

get_amp_reset_level(axis,*level) AMP Fault Reset의 Active Level을 읽음

I/O Interrupt 구성io_interrupt_enable(bd_num,state) I/O Interrupt를 Enable/Disable 시킴

io_interrupt_on_stop(axis,state) I/O Interrupt 발생시 STOP_EVENT 지정

io_interrupt_on_e_stop(axis,state) I/O Interrupt 발생시 E_STOP_EVENT 지정

fio_interrupt_enable(bd_num,state) I/O Interrupt를 Enable/Disable 시키고, Boot File에 저장

fio_interrupt_on_stop(axis,state) I/O Interrupt 발생시 STOP_EVENT 지정, Boot File에 저장

fio_interrupt_on_e_stop(axis,state) I/O Interrupt 발생시 E_STOP_EVENT 지정, Boot File에 저장

io_interrupt_pcirq I/O Interrupt 발생시 PC쪽으로 지정 Interrupt 발생

io_interrupt_pcirq_eoi I/O Interrupt 발생시 PC쪽으로 발생된 Interrupt Clear

함수 LIST

Page 180: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 8

I/O Port 입,출력set_io(port,value) 32-bit의 User I/O Data를 출력

get_io(port,*value) User I/O 입력 Port를 읽음

get_out_io(port,*value) User I/O 출력 Port를 읽음

set_bit(bitNo) User I/O의 지정 Bit ON

reset_bit(bitNo) User I/O의 지정 Bit OFF

전자기어비set_electric_gear(axis,ratio) 축의 전자기어비를 지정

get_electric_gear(axis,*ratio) 적용중인 축의 전자기어비를 읽음

동기제어set_sync_map_axes(master_ax,slave_ax) 동기제어를 실시할 Master축과 Slave축을 지정

set_sync_control(state) 동기제어 적용 여부를 TRUE(1), FALSE(0)로 지정한다.

get_sync_control(*state) 동기제어 적용 여부를 읽음

set_sync_gain(coeff) 동기제어시 적용할 보상 Gain값을 지정한다.

get_sync_gain(*coeff) 동기제어시 적용할 보상 Gain값을 읽는다.

set_sync_position(*pos_m,*pos_s) Master축과 Salve축의 실제위치(Actual Position)을 읽음.

위치보정compensation_pos(len,*axes,*c_dist,*c_acc) 동작 중 목표위치를 보정

Interpolation 제어set_interpolation(len,*ax,*delt_s,flag) 사용자 Motion S/W 지원, MMC보드는 단순 제어보드 역할수행

frames_interpolation(axis) 비어있는 MMC보드의 위치증가분 data의 frame 개수를 읽음

LATCHarm_latch(bdNum,state) latch position을 clear시키고, latch_status를 False로 만듦.

latch_status(bdNum) latch 발생여부를 True(1),False(0)로 읽음

get_latched_position(axis,*pos) 지정축의 latch된 위치 값을 읽음

latch() S/W적으로 latch 상태를 만들어 위치 값을 읽음

함수 LIST

Page 181: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 9

11.2 Define 문

C-Library에서 사용하고있는 Define문 List는 다음과 같다.

True & False

TRUE 1

FALSE 0

High & Low

HIGH 1

LOW 0

Positive & Negative

POSITIVE 1

NEGATIVE 0

모타 Type

STEPPER 1

SERVO_MOTOR 0

제어 모드

V_CONTROL 0

T_CONTROL 1

제어 LOOP 구성

CLOSED_LOOP 1

OPEN_LOOP 0

원호보간 방향

CIR_CCW 1

CIR_CW 0

DEFINE 문

Page 182: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 10

축 상태

ST_NONE 0x0000 정상동작

ST_HOME_SWITCH 0x0001 원점(home) 센서 감지

ST_POS_LIMIT 0x0002 + Limit 센서 감지

ST_NEG_LIMIT 0x0004 - Limit 센서 감지

ST_AMP_FAULT 0x0008 AMP Fault 상태 발생

ST_A_LIMIT 0x0010 가,감속시간이 Limit 보다 클때 발생

ST_V_LIMIT 0x0020 현재속도가 속도Limit 보다 클때 발생

ST_X_NEG_LIMIT 0x0040 - Position Limit를 벗어날때 발생

ST_X_POS_LIMIT 0x0080 + Position Limit를 벗어날때 발생

ST_ERROR_LIMIT 0x0100 위치오차가 Limit값보다 클때 발생

ST_PC_COMMAND 0x0200 EVENT가 발생된 상태일때 발생

ST_OUT_OF_FRAMES 0x0400 MMC 보드의 Frame Buffer가 Full 상태일때 발생

ST_AMP_POWER_ONOFF 0x0800 AMP Disable 상태일때 발생

ST_ABS_COMM_ERROR 0x1000 Absolute Encoder 통신이상 발

EVENT 종류

NO_EVENT 0 EVENT 발생없이 정상동작

STOP_EVENT 1 Stop_Rate로 감속하면서 정지

E_STOP_EVENT 2 E_Stop_Rate로 감속하면서 정지

ABORT_EVENT 3 AMP Disable 상태(Servo Power OFF)

Gain 변수

GA_P 0 비례게인 (Proportional Gain)

GA_I 1 적분게인 (Integral Gain)

GA_D 2 미분게인 (Derivative Gain)

GA_F 3 Feedforward 게인

GA_ILIMIT 4 오차합의 Limit (Integration summing limit)

GAIN_NUMBER 5 게인의 개수

DEFINE 문

Page 183: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter11

함수및DEFINE문목록

11 - 11

ERROR 정의

MMC_OK 0 "NO ERROR"

MMC_NOT_INITIALIZED 1 "Boot Memory has been corrupted"

MMC_TIMEOUT_ERR 2 "DPRAM Communication Error"

MMC_INVALID_AXIS 3 "Non existent axis"

MMC_ILLEGAL_ANALOG 4 "Illegal Analog Input Channel"

MMC_ILLEGAL_IO 5 "Illegal I/O port"

MMC_ILLEGAL_PARAMETER 6 "Illegal Parameter"

MMC_NO_MAP 7 "Not Define Map axis"

MMC_AMP_FAULT 8 "AMP Fault"

MMC_ON_MOTION 9 "Motion is not completed"

MMC_NON_EXIST 10 "MMC Board is not exist"

MMC_BOOT_OPEN_ERROR 11 "MMC Boot File Read/Write Error"

MMC_CHKSUM_OPEN_ERROR 12 "MMC Checksum File Read/Write Error"

MMC_WINNT_DRIVER_OPEN_ERROR 13 "Win NT에서 Driver Open Error"

MMC 보드 정의

MMC_BD_NUM 4 제어기에 최대로 장착할수있는 MMC보드수

BD_AXIS_NUM 8 MMC보드 1장당 최대제어축수

TOTAL_AXIS_NUM 32 MMC_BD_NUM * BD_AXIS_NUM

MMC_BD1 1 #0 MMC보드

MMC_BD2 2 #1 MMC보드

MMC_BD3 3 #2 MMC보드

MMC_BD4 4 #3 MMC보드

MAX_FRAME_NUM 50 MMC보드의 축당 frame 갯수

FEEDBACK 장치

FB_ENCODER 0 Encoder Feedback장치

FB_UNIPOLAR 1 0 ‾ 10volt의 Analog 입력 Feedback장치

FB_BIPOLAR 2 -10 ‾ 10volt의 Analog 입력 Feedback장치

LIMIT 값

MMC_ACCEL_LIMIT 100 가,감속구간 Limit값

MMC_VEL_LIMIT 2047000.0 속도 Limit값

MMC_POS_SW_LIMIT 2147483647.0 +이동방향 위치 Limit값

MMC_NEG_SW_LIMIT -2147483647.0 -이동방향 위치 Limit값

MMC_ERROR_LIMIT 35000.0 동작 중 위치오차 Limit값

DEFINE 문

Page 184: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 12

INTEGRATION 모드

IN_STANDING 0 정지 시 적분제어 모드

IN_ALWAYS 1 항상 적분제어 실시 모드

STEP 모드

TWO_PULSE 0 CW + CCW PULSE 출력모드

SIGN_PULSE 1 SIGN + PULSE 출력모드

DEFINE 문

Page 185: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 13

MEMO

Page 186: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

11 - 14

MEMO

Page 187: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

제 12 장

함수 사용설명서

12.1 함수 사용설명서

12.2 함수 INDEX 12-1 page

Page 188: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation
Page 189: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 1

mmc_initx(totalbdNum,*Addr)

set_dpram_addr(bdNum,Addr)

1-1. 초기화

mmc_initx = MMC 보드 및 Parameter 초기화

set_dpram_addr = MMC보드 DPRAM 어드레스 설정.

#include "mmcdef.h"

int mmc_initx(totalbdNum,*Addr);

int set_dpram_addr(int bdNum, long addr)

mmc_initx 함수는 시스템 초기화에 필요한 함수로서 프로그램 실행시 반드시

제일먼저 수행되어야 하며, 프로그램 실행전 DPRAM의 어드레스를 확인한다.

set_dpram_addr 함수는 아래의 예제와 같이 사용하는것이 좋다.

#include "mmcdef.h"

#include <stdio.h>

int main() /* 4장의 보드를 초기화 */

long addr[4] = 0xD8000000, 0xD8400000, 0xD8800000, 0xD8C00000 ;

int e = mmc_initx(4, addr); /* 변수 초기화 */

if(e)

if(e==MMC_TIMEOUT_ERR) set_dpram_addr(0,0xd8000000);

else printf(stderr,"MMC Initial error:%s(%d)\n", _error_msg(e),e);

return e;

return MMC_OK;

/* PCI 보드에서도 동일하게 함수를 사용합니다. */

set_dpram_addr함수는 MMC보드가 장착되어 있는데도 불구하고 "MMC board is

not exist" 에러가 발생하거나, "Dpram commuication error"에러 발생시에 사용

된다, 이러한 에러는 MMC 보드의 Dip Switch로 설정된 어드레스와

Host(Computer)가 가지고 있는 DPRAM의 어드레스가 서로 다르기 때문에 발생하

는것으로 SETUP프로그램 메뉴에서 어드레스를 수정하거나, 아니면 사용자 프로

그램에서 set_dpram_addr 함수를 사용하면 된다.

MMC_OK(0), MMC_NOT_INITIALIZED(1), MMC_TIMEOUT_ERR(2),MMC_NON_EXIST(10),

MMC_BOOT_OPEN_ERROR(11), MMC_CHKSUM_OPEN_ERROR(12)

기 능

사 용 예

주 의

함 수 명

예 제

NOTE

Error Return값

초기화

※ 이후에 사용되는 모든 int형은 2bytes 데이터형임에 유의한다.

Visual Basic :Integer, Visual C++ :short,

C++Builder :short , Delphi :Smallint

<mmcdef.h> ------------------ #define INT short

Page 190: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

기 능

사 용 예

error_message(int code, char *dst)

_error_message(int code)

mmc_error

get_mmc_error(void)

1-2. ERROR 처리

error_message = 해당 Error Code의 Error Message를 dst 버퍼에 복사한다.

_error_message = 해당 Error Code의 Error Message가 저장된 번지를 돌려준다.

mmc_error = 전역변수로 가장 최근의 Error Code를 가지고 있다. (DOS용)

get_mmc_error = Windows 프로그램에서 mmc_error를 읽을때 사용한다.

#include "mmcdef.h"

int error_message(int code, char *dst);

char *_error_message(int code);

int get_mmc_error();

함 수 명

NOTE MMCDEF.H 파일에 정의되어 있는 Error Code에 대해서 정리하면 아래와 같다.

1. MMC_OK(0) :

-.함수가 정상적으로 수행되었을때 즉 Error가 없음을 의미한다.

-.Error 표시 => "NO ERROR"

2. MMC_NOT_INITIALIZED(1) :

-.Boot Memory의 내용이 Checksum 값과 일치하지 않을때 발생한다.

-.Error 표시 => "Boot Memory has been corrupted"

3. MMC_TIMEOUT_ERROR(2) :

-.Host(Computer)와 MMC 보드간에 통신 Error가 발생했음을 나타낸다.

-.Error 표시 => "DPRAM Communication Error"

4. MMC_INVALID_AXIS(3) :

-.함수의 axis, ax 인수값이 MMC 보드에 정의되어 있지 않은값일때 발생한다.

-.Error 표시 => "Non existent axis"

5. MMC_ILLEGAL_ANALOG(4) :

-.MMC 보드는 보드당 4개의 analog 채널을 가지고 있다. 함수의 channel 인

수값이 MMC 보드에서 정의되어 있지 않은 값일때 발생한다.

-.Error 표시 => "Illegal Analog Input Channel"

6. MMC_ILLEGAL_IO(5) :

-.MMC 보드는 보드당 1개의 입출력 32점의 I/O Port를 가지고 있다. 함수의

port , bitNo 인수값이 MMC 보드에 정의되어 있지 않은 값일때 발생한다.

-.Error 표시 => "Illegal I/O port"

7. MMC_ILLEGAL_PARAMETER(6) :

-.함수의 인수값이 기 정의한 limit값을 넘을경우에 발생한다.

-.Error 표시 => "Illegal Parameter"

ERROR 처리

Page 191: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

8. MMC_NO_MAP(7) :

-.여러축의 동시동작을 실행하기전에 map_axes() 함수를 실행하지 않았을때

발생한다.

-.Error 표시 => "Not Define Map axis"

9. MMC_AMP_FAULT(8) :

-.AMP Driver에 Error 발생시 설정된다.

-.Error 표시 => "AMP Fault"

10. MMC_ON_MOTION(9) :

-.clear_status(), clear_stop() 함수를 동작이 완료되기전에 실행시 발생한다.

-.Error 표시 => "Motion is not completed"

11. MMC_NON_EXIST(10) :

-.Host(Computer)에서 DPRAM 통신결과 장착되어 있는 모든 MMC 보드와

MMC_TIMEOUT_ERROR가 발생했거나, MMC보드가 없을때 발생한다.

-.Error 표시 => "MMC Board is not exist"

12. MMC_BOOT_OPEN_ERROR(11) :

-.Boot File의 Read/Write시 Error가 발생하면 설정된다.

-.Error 표시 => "MMC Boot File Read/Write Error"

13. MMC_CHKSUM_OPEN_ERROR(12) :

-.Checksum File의 Read/Write시 Error가 발생하면 설정된다.

-.Error 표시 => "MMC Checksum File Read/Write Error"

14. MMC_WINNT_DRIVER_OPEN_ERROR(13) :

-.Win NT에서 Driver를 Open 할수 없을때 설정된다.

-.Error 표시 => "MMC Win NT Driver Open Error"

15. MMC_EVENT_OCCUR_ERROR(14)

-.wait_for_done 함수 종료시 해당축에 EVENT가 발생되어있는 경우 발생한다.

-.Error 표시 => "Event Occured"

16. MMC_AMP_POWER_OFF(15)

-.서보 드라이브의 파워가 OFF 되어 있어서 이동할 수 없을 경우 발생한다.

-.Error 표시 => "AMP Drive Power Off Status"

17. MMC_DATA_DIRECTORY_OPEN_ERROR(16)

-.mmc 실행 프로그램에서 mmc data 저장 디렉토리를 찾지 못할 경우 발생한다.

-.Error 표시 => "MMC Data File Save Directory Open Error"

18. MMC_INVALID_CPMOTION_GROUP(17)

-.그룹 다축 이동 함수에서 지정된 그룹이 일치하지 않는 경우 발생한다.

19. MMC_VELOCITY_ILLEGAL_PARAMETER(18)

-.move with zero velocity or over velocity limit

20. MMC_ACCEL_ILLEGAL_PARAMETER(19)

-.move with zero accel or over accel limit

21. FUNC_ERR(-1)

-.Function Error

ERROR 처리

Page 192: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int e = mmc_initx(1,&addr);

if(e)

printf("MMC Initial error : %s(%d)\n", _error_message(e),e);

return e;

return MMC_OK;

주 의 error_message(int code, char *dst) 함수의 char *dst의 크기는

MAX_ERROR_LEN(100)하고 같거나 커야한다.

Page 193: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

기 능

사 용 예

start_move(axis,pos,vel,accel)

move(axis,pos,vel,accel)

start_r_move(axis,dist,vel,accel)

r_move(axis,dist,vel,accel)

start_t_move(axis,pos,vel,accel,decel)

t_move(axis,pos,vel,accel,decel)

start_tr_move(axis,dist,vel,accel,decel)

tr_move(axis,dist,vel,accel,decel)

wait_for_done(axis)

1-3. 단축 이동

start_move = 사다리꼴 속도Profile, vel속도로 pos위치 만큼 움직인다

move = 사다리꼴 속도Profile, vel속도로 pos위치 만큼 움직이며,

동작이 완료될때까지 기다린다.

start_r_move = 사다리꼴 속도Profile, vel속도로 dist위치 만큼 상대이동을 한다.

r_move = 사다리꼴 속도Profile, vel속도로 dist위치 만큼 상대이동을 하며,

동작이 완료될때까지 기다린다.

start_t_move = 비대칭 사다리꼴 속도Profile, vel속도로 pos위치 만큼 움직인다.

t_move = 비대칭 사다리꼴 속도Profile, vel속도로 pos위치 만큼 움직이며,

동작이 완료될때까지 기다린다.

start_tr_move = 비대칭 사다리꼴 속도Profile, vel속도로 dist위치 만큼 상대이동

을 한다

tr_move = 비대칭 사다리꼴 속도Profile, vel속도로 dist위치 만큼 상대이동

을 하며, 동작이 완료될때까지 기다린다.

wait_for_done = 지정축의 동작이 완료될때까지 기다린다.

#include "mmcdef.h"

int start_move(int ax, double pos, double velo, int accel);

int move(int ax, double pos, double velo, int accel);

int start_r_move(int ax, double dist, double velo, int accel);

int r_move(int ax, double dist, double velo, int accel);

int start_t_move(int ax, double pos, double velo, int accel, int decel);

int t_move(int ax, double pos, double velo, int accel, int decel);

int start_tr_move(int ax, double dist, double velo, int accel, int decel);

int tr_move(int ax, double dist, double velo, int accel, int decel);

int wait_for_done(int ax);

함 수 명

단축 이동

Page 194: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int e = mmc_initx(1,&addr);

int j = 0;

set_amp_enable(0,TRUE);

while(!e)

if(j) e = move(0, 10000.0, 5000.0, 10);

else e = move(0, 0.0, 5000.0, 10);

j = !j;

return e;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_AMP_FAULT(8)

주 의

start_move,start_r_move,start_t_move와 move,r_move,t_move 함수의 차이는

동작의 완료여부를 검사하는 것이다. move,r_move,t_move 함수는 동작이 완료

될때 까지 다음 동작를 수행하지 않는다. start_r_move와 r_move 함수는 현재

위치를 기준으로 주어진 dist 위치값만큼 상대위치 이동을 한다.

accel 인수는 가,감속 시간을 나타내며 단위는 4msec 이다. accel 인수값의 범

위는 1부터 25000까지 이다. 권장범위는 10 이상이다.

NOTE

pos, dist, vel, accel 등의 인수값 들은 기설정한, Position-Limit,

Velocity-Limit, Accel-limit의 값을 넘지 않아야 한다. 특히 accel의 인수값

이 0인 경우는 속도명령이 구형파로 나가기 때문에 시스템에 충격이 가해질수

있으므로 주의해야 한다. ax인수값의 범위는 MMC보드의 제어축수에 따라 결정

된다.

가 속 등 속 감 속

속 도

시 간

사다리꼴 속도 Profile

단축 이동

Error Return값

Page 195: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

기 능

사 용 예

start_s_move(axis,pos,vel,accel)

s_move(axis,pos,vel,accel)

start_rs_move(axis,dist,vel,accel)

rs_move(axis,dist,vel,accel)

start_ts_move(axis,pos,vel,accel,decel)

ts_move(axis,pos,vel,accel,decel)

start_trs_move(axis,dist,vel,accel,decel)

trs_move(axis,dist,vel,accel,decel)

1-4. S-CURVE PROFILE 단축 이동

start_s_move = S-Curve 속도Profile, vel속도로 pos위치 만큼 움직인다

s_move = S-Curve 속도Profile, vel속도로 pos위치 만큼 움직이며, 동작이

완료될때까지 기다린다.

start_rs_move = S-Curve 속도Profile, vel속도로 dist위치 만큼 상대이동을 한다

rs_move = S-Curve 속도Profile, vel속도로 dist위치 만큼 상대이동을 하며,

동작이 완료될때까지 기다린다.

start_ts_move = 비대칭 S-Curve 속도Profile, vel속도로 pos위치 만큼 움직인다

ts_move = 비대칭 S-Curve 속도Profile, vel속도로 pos위치 만큼 움직이며,

동작이 완료될때까지 기다린다.

start_trs_move = 비대칭 S-Curve 속도Profile, vel속도로 dist위치 만큼 상대이동

을 한다

trs_move = 비대칭 S-Curve 속도Profile, vel속도로 dist위치 만큼 상대이동

을 하며, 동작이 완료될때까지 기다린다.

#include "mmcdef.h"

int start_s_move(int ax, double pos, double vel, int accel);

int s_move(int ax, double pos, double vel, int accel);

int start_rs_move(int ax, double dist, double vel, int accel);

int rs_move(int ax, double dist, double vel, int accel);

int start_ts_move(int ax, double pos, double vel, int accel, int decel);

int ts_move(int ax, double pos, double vel, int accel, int decel);

int start_trs_move(int ax, double dist, double vel, int accel, int decel);

int trs_move(int ax, double dist, double vel, int accel, int decel);

함 수 명

S-CURVE PROFILE 단축 이동

Page 196: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int e = mmc_initx(1,&addr);

int j = 0;

set_amp_enable(0,TRUE); /* 0축 AMP Power ON */

while(!e)

if(j) e = s_move(0, 10000.0, 5000.0, 10);

else e = ts_move(0, 0.0, 5000.0, 10,15);

j = !j;

return e;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_AMP_FAULT(8)

start_s_move,start_rs_move,start_ts_move,start_trs_move와 s_move,rs_move,

ts_move,trs_move 함수의 차이는 동작의 완료여부를 검사하는 것이다.

s_move,rs_move,ts_move,trs_move함수는 동작이 완료될때 까지 다음 동작를 수

행하지 않는다. start_rs_move,start_trs_move와 rs_move,trs_move 함수는 현

재위치를 기준으로 주어진 dist 위치값만큼 상대위치 이동을 한다.

accel 인수는 가,감속 시간을 나타내며 단위는 4msec 이다. accel 인수값의 범

위는 1부터 25000까지 이다. 권장범위는 10 이상이다.

NOTE

pos, vel, accel등의 인수값들은 기설정한, Position-Limit, Velocity-Limit,

Accel-Limit의 값을 넘지 않아야 한다. 특히 accel의 인수값이 0인 경우는 속도명

령이 구형파로 나가기 때문에 시스템에 충격이 가해질수 있으므로 주의해야 한다.

ax인수값의 범위는 MMC보드의 제어축수에 따라 결정된다.

주 의

S-CURVE PROFILE 단축 이동

Error Return값

Page 197: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-5. 다축 이동

start_move_all = len으로 지정된 축수만큼 지정된 축들을 사다리꼴 속도Profile,

vel속도로 pos위치 만큼 움직인다

move_all = len으로 지정된 축수만큼 지정된 축들을 사다리꼴 속도Profile,

vel속도로 pos위치 만큼 움직이며, 동작이 완료될때까지 기다린다.

start_t_move_all = len으로 지정된 축수만큼 지정된 축들을 비대칭 사다리꼴

속도Profile, vel속도로 pos위치 만큼 움직인다

t_move_all = len으로 지정된 축 수 만큼 지정된 축들을 비대칭 사다리꼴 속도

Profile, vel속도로 pos위치 만큼 움직이며, 동작이 완료 될 때까지

기다린다.

wait_for_all = 지정된 축들의 동작이 완료될때 까지 기다린다.

#include "mmcdef.h"

int start_move_all(int len,int *axis, double *pos,double *velo,int *accel);

int move_all(int len, int *axis, double *pos, double *velo, int *accel);

int start_t_move_all(int len, int *axis, double *pos, double *velo,

int *accel, int *decel);

int t_move_all(int len, int *axis, double *pos, double *velo,

int *accel, int *decel);

int wait_for_all(int len, int *axis);

기 능

사 용 예

start_move_all(len,*axis,*pos,*vel,*accel)

move_all(len,*axis,*pos,*vel,*accel)

start_t_move_all(len,*axis,*pos,*vel,*accel,*decel)

t_move_all(len,*axis,*pos,*vel,*accel,*decel)

wait_for_all(len,*axis)

start_move_all, move_all,start_t_move_all, t_move_all 함수는 다축을 구동

시키는 함수로서 여러개의 지정된 축들이 동시동작을 수행한다.

accel 인수는 가,감속 시간을 나타내며 단위는 4msec 이다. accel 인수값의 범

위는 1부터 25000까지 이다. 권장범위는 10 이상이다.

함 수 명

NOTE

pos, vel, accel등의 인수값들은 기설정한, Position-Limit, Velocity-Limit,

Accel-Limit의 값을 넘지 않아야 한다. 특히 accel의 인수값이 0인 경우는 속도명

령이 구형파로 나가기 때문에 시스템에 충격이 가해질수 있으므로 주의해야 한다.

axis 인수값의 범위는 MMC보드의 제어축수에 따라 결정된다.

주 의

다축 이동

Page 198: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_AMP_FAULT(8)

예 제 #include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int axes[2]=0,1, accel[2]=10,10;

double pos[2]=10000.0, 20000.0,vel[2]=8000.0, 15000.0;

if( mmc_initx(1,&addr) ) return mmc_error;

set_amp_enable(0,TRUE); /* 0축 AMP Power ON */

set_amp_enable(1,TRUE); /* 1축 AMP Power ON */

move_all(2,axes,pos,vel,accel)

return mmc_error;

/* 지정된 2축이 동시에 이동을 시작하는 프로그램 */

다축 이동

Error Return값

Page 199: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

start_s_move_all = len으로 지정된 축수만큼 지정된 축들을 S_CURVE 속도

Profile,vel속도로 pos위치 만큼 움직인다

s_move_all = len으로 지정된 축수만큼 지정된 축들을 S_CURVE 속도Profile,

vel속도로 pos위치 만큼 움직이며, 동작이 완료될때까지 기다린다.

start_ts_move_all = len으로 지정된 축수만큼 지정된 축들을 비대칭 S_CURVE

속도 Profile,vel속도로 pos위치 만큼 움직인다

ts_move_all = len으로 지정된 축수만큼 지정된 축들을 비대칭 S_CURVE 속도

Profile, vel속도로 pos위치 만큼 움직이며, 동작이 완료될때까지

기다린다.

start_s_move_all(len,*axis,*pos,*vel,*accel)

s_move_all(len,*axis,*pos,*vel,*accel)

start_ts_move_all(len,*axis,*pos,*vel,*accel,*decel)

ts_move_all(len,*axis,*pos,*vel,*accel,*decel)

1-6. S_CURVE 다축 이동

#include "mmcdef.h"

int start_s_move_all(int len,int *ax, double *pos,double *velo,int *accel);

int s_move_all(int len, int *ax, double *pos, double *velo, int *accel);

int start_ts_move_all(int len, int *ax, double *pos, double *velo,

int *acc, int *dec);

int ts_move_all(int len, int *ax, double *pos, double *velo, int *acc,

int *dec);

start_s_move_all, s_move_all, start_ts_move_all, ts_move_all 함수는 다축을

구동시키는 함수로서 여러개의 지정된 축들이 동시동작을 수행한다.

accel 인수는 가,감속 시간을 나타내며 단위는 4msec 이다. accel 인수값의

범위는 1부터 25000까지 이다. 권장범위는 10 이상이다.

pos, vel, accel등의 인수값들은 기설정한, Position-Limit, Velocity-Limit,

Accel-Limit의 값을 넘지 않아야 한다. 특히 accel의 인수값이 0인 경우는 속도명

령이 구형파로 나가기 때문에 시스템에 충격이 가해질수 있으므로 주의해야 한다.

axis 인수값의 범위는 MMC보드의 제어축수에 따라 결정된다.

기 능

사 용 예

함 수 명

NOTE

주 의

S-CURVE 다축 이동

Page 200: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int axes[2]=0,1, accel[2]=10,10;

double pos[2]=10000.0, 20000.0,vel[2]=8000.0, 15000.0;

if( mmc_initx(1,&addr) ) return mmc_error;

set_amp_enable(0,TRUE); /* 0축 AMP Power ON */

set_amp_enable(1,TRUE); /* 1축 AMP Power ON */

s_move_all(2,axes,pos,vel,accel)

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_AMP_FAULT(8)

예 제

Error Return값

S-CURVE 다축 이동

Page 201: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-7. VELOCITY 이동

v_move(axis,vel,accel)

v_move_stop(axis)

v_move = 지정된 가속비율로 가속한후 지정속도로 일정하게 회전한다.

v_move_stop = 지정축의 v_move 동작을 정지한다.

#include "mmcdef.h"

int v_move(int axis, double velo, int accel);

int v_move_stop(int axis);

v_move는 축의 원점복귀(Homing) 동작에 적합한 함수이다. 속도이동을 정지시

킬 경우에는 v_move_stop 함수를 이용하가나, STOP_EVENT 또는 E_STOP_EVENT를

설정해주면 된다.

accel 인수는 가,감속 시간을 나타내며 단위는 4msec 이다. accel 인수값의 범

위는 1부터 25000까지 이다. 권장범위는 10 이상이다.

velo, accel등의 인수값들은 기설정한 Velocity-Limit, Accel-Limit의 값을 넘

지 않아야 한다. 특히 accel의 인수값이 0인 경우는 속도명령이 구형파로 나가

기 때문에 시스템에 충격이 가해질수 있으므로 주의해야 한다. axis 인수값의

범위는 MMC보드의 제어축수에 따라 결정된다.

v_move 함수로 이동시 set_positive_sw_limit,set_negative_sw_limit 함수에서

NO_EVENT로 설정시 무한회전이 가능하다.

v_move 함수사용시는 frames_clear(ax) 함수를 실행하여 MMC보드의 frame을

clear 시키거나, MMC보드의 frame에 수행해야될 명령이 없어야 한다.

만약 MMC보드의 frame에 수행해야될 명령이 남아 있을경우 v_move 함수는 수행

되지 않는다.

기 능

사 용 예

함 수 명

NOTE

주 의

VELOCITY 이동

Page 202: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제#include "mmcdef.h"

#include <stdio.h>

#include <conio.h>

int main()

double position;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

frames_clear(0); /* MMC보드 0축의 frame을 clear 시킴 */

set_amp_enable(0,TRUE); /* 0축 AMP Power ON */

v_move(0, 1000.0, 15); /* 0축을 1000 counts/sec까지 가속 */

while(!kbhit())

get_position(0,&position);

printf("Position:%8.0lf",position);

v_move_stop(0); /* 0축을 감속후 정지시킴 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_AMP_FAULT(8)

VELOCITY 이동

Error Return값

Page 203: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-8. 좌표축의 구성

map_axes(n_axes,*map_array)

map_axes = 직선,원호,원 등의 동작을 수행할 각 좌표계의 축을 정의한다.

#include "mmcdef.h"

int map_axes(int n_axes, int *map_array);

조합될 축수가 제어되고 있는 전체 축수를 넘지 않아야 된다.

map_axes()함수는 move_2,move_3,move_4,move_n,arc_2등의 Coordinated 동작함

수를 실행하기전에 반드시 먼저 수행하여 좌표축을 결정해야 한다. 예를들어

아래와 같이 map_axes함수가 실행되면 1축은 X좌표, 3축은 Y좌표,4축은 Z좌표

축으로 정의된다.

int ax[3] = 1,3,4;

map_axes(3,ax);

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int i, axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

axes[i]=i;

set_amp_enable(i,TRUE); /* AMP Power ON */

map_axes(3,axes); /* 0,1,2축을 X,Y,Z 좌표축으로 지정 */

set_move_speed(8000.0);/* coordinated 동작속도 지정 = 8000 counts/sec */

set_move_accel(15); /* coordinated 동작 가,감속 시간지정 = 15*10 msec */

move_3(0.0, 0.0, 0.0); /* 0.0의 절대위치로 각축을 이동 */

return mmc_error;

MMC_OK(0), MMC_INVALID_AXIS(3), MMC_ILLEGAL_PARAMETER(6)

기 능

사 용 예

주 의

함 수 명

NOTE

예 제

Error Return값

좌표축의 구성

Page 204: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

set_move_speed(speed)

set_move_accel(accel)

all_done(void)

1-9. COORDINATED 동작 변수

set_move_speed = 직선 동작시에 속도를 지정한다.

set_move_accel = 직선,원호,원 등의 동작시에 가,감속 시간을 지정한다.

all_done = 직선,원호,원 등의 동작이 완료되었는지 여부를 돌려줌

#include "mmcdef.h"

int set_move_speed(double speed);

int set_move_accel(int accel);

int all_done(void);

직선, 원호, 원등의 Coordinated 동작시에 set_move_speed,set_move_accel함수

에서 지정한 속도 및 가속으로 동작하기 때문에 Coordinated 동작함수를 실행

하기전에 반드시 수행하여야 한다. 그렇지 않을경우 정의되지 않은 임의의 값

이 사용되므로 시스템에 심각한 손상을 입을수 있다. 또한 set_move_accel에서

accel의 인수값이 0(zero)일경우 구형파의 속도파형이 출력되어 시스템에 충격

을 줄수 있다.

기 능

사 용 예

함 수 명

주 의

NOTEset_move_speed, set_move_accel 함수에서 speed, accel의 인수값은

set_vel_limit,set_accel_limit 함수에서 설정한 limit값보다 작아야한다.

all_done 함수는 map_axes함수로 지정한 축들의 동작이 완료되었을 경우

TRUE(1)을 돌려주고, 동작중 일때는 FALSE(0)를 돌려준다.

COORDINATED 동작 변수

Page 205: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

axes[i]=i;

set_amp_enable(i,TRUE); /* AMP Power ON */

map_axes(3, axes); /* 좌표축 지정 */

set_move_speed(3000.0); /* coordinated 동작속도 지정 = 3000 counts/sec*/

set_move_accel(20);

move_3(1000.0, 500.0, 3000.0); /* 0,1,2축을 X,Y,Z 좌표방향으로 이동 */

while(!all_done());

return mmc_error;

MMC_OK(0), , MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

COORDINATED 동작 변수

Error Return값

Page 206: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

move_2(x,y)

move_3(x,y,z)

move_4(x,y,z,w)

move_n(*x)

1-10. 다축 직선 이동

move_2 = 지정된 2축이 x,y좌표값 만큼 직선이동을 한다.

move_3 = 지정된 3축이 x,y,z좌표값 만큼 직선이동을 한다.

move_4 = 지정된 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

move_n = 지정된 n축이 주어진 좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

int move_2(double x, double y);

int move_3(double x, double y, double z);

int move_4(double x, double y, double z, double w);

int move_n(double *x);

각 함수의 좌표값들은 동작범위 내의 값을 입력해야 한다. 위의 함수를 사용하

기전에 반드시 map_axes,set_move_speed,set_move_acel 함수를 사용하여 직선

운동을 할 좌표축, 이동속도 및 가,감속시간 등을 지정해 놓아야 한다.

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

axes[i]=i;

set_amp_enable(i,TRUE); /* AMP Power ON */

map_axes(3, axes);

set_move_speed(3000.0);

set_move_accel(20);

move_3(1000.0, 500.0, 3000.0); /* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

move_2(15000.0, 10000.0); /* 0,1축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

주 의

함 수 명

Error Return값

예 제

다축 직선 이동

Page 207: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-11. S_CURVE 다축 직선 이동

smove_2(x,y)

smove_3(x,y,z)

smove_4(x,y,z,w)

smove_n(*x)

smove_2 = 지정된 2축이 x,y좌표값 만큼 직선이동을 한다.

smove_3 = 지정된 3축이 x,y,z좌표값 만큼 직선이동을 한다.

smove_4 = 지정된 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

smove_n = 지정된 n축이 주어진 좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

int smove_2(double x, double y);

int smove_3(double x, double y, double z);

int smove_4(double x, double y, double z, double w);

int smove_n(double *x);

move_2,move_3,move_4,move_n 등의 함수와 차이점은 S_CURVE 속도 Profile로

직선이동을 한다는 점이다. 각 함수의 좌표값들은 동작범위 내의 값을 입력해

야 한다. 위의 함수를 사용하기 전에 반드시 map_axes, set_move_speed,

set_move_acel 함수를 사용하여 직선운동을 할 좌표축, 이동속도 및 가,감속시

간 등을 지정해 놓아야 한다.

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

axes[i]=i;

set_amp_enable(i,TRUE); /* AMP Power ON */

map_axes(3, axes);

set_move_speed(3000.0);

set_move_accel(20);

smove_3(1000.0, 500.0, 3000.0);/* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

smove_2(15000.0, 10000.0); /* 0,1축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

함 수 명

예 제

NOTE

S-CURVE 다축 직선 이동

Error Return값

Page 208: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-12. 원 및 원호 이동

set_arc_division(degrees)

arc_2(x_center, y_center, angle)

arc_2ax(INT ax1, INT ax2, double x_center, double y_center,

double angle, double vel, INT acc)

set_arc_division = 원,원호이동 동작시에 원주속도를 지정한다.

arc_2 = 주어진 중심에서 지정된 각도만큼 원호을 그리며 동작을 수행한다.

arc_2ax = map_axes, set_move_accel, set_arc_division 함수의 사전

정의없이 함수의 인수로서 바로 사용할수 있다

#include "mmcdef.h"

int set_arc_division(double degrees);

int arc_2(double x_center, double y_center, double angle);

set_arc_division 설정시에 원의크기를 고려해야 한다, 원주길이는 원의 반경과

각도에 비례하므로 원의 크기가 클수록 set_arc_division에서 설정되는 degrees

인수값을 줄여야만 정확한 원 및 원호을 얻을수 있다. 또한 가속,감속시간은

set_move_accel 함수에서 설정한 값을 사용하므로 확인후 작업을 하는것이 안전하

다. 또한 원호운동을 하는 축은 반드시 동일보드 내에 있는 축이여야 한다.

예를들어 두장의 MMC보드를 사용하면서 arc_2함수를 수행하는축이 한축은 0‾7축

사이의 값을 가지고, 또 다른 한축은 8‾15축 사이의 값을 가질때 정상적인 원호,

원을 그리는 동작을 수행할 수 없다.

함 수 명

기 능

사 용 예

주 의

NOTE set_arc_division은 원주속도를 결정해주며 degrees인수값은 0보다 크고

1000.0보다 작아야 한다. degrees인수의 단위는 [degrees/sec]이다.

arc_2함수는 2차원 평면상에서 원호 및 원을 그릴수 있는 함수이다. 원호 및

원의 반경은 map_axes에서 지정한 축들의 현재위치에서 주어진 x,y중심까지의

거리가 된다. angle인수의 값이 +(positive)일경우에는 원을 그리는 방향이

CCW(반시계 방향)이고, -(negative)일경우에는 원을 그리는 방향이 CW(시계 방

향)이 된다.

원 및 원호 이동

Page 209: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUMBER];

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

axes[i] = i;

set_amp_enable(i,TRUE);

map_axes(2,axes); /* 좌표축 지정 0축(X좌표),1축(Y좌표) */

set_arc_division(8.0); /* 원주속도 = 8 degs/sec */

set_move_accel(20); /* 가,감속시간 지정 */

arc_2(100.0, 100.0, 180); /* CCW방향으로 180도 원호이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

예 제

Error Return값

원 및 원호 이동

Page 210: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-13. 정지동작

set_stop(axis)

set_stop_rate(axis,rate)

get_stop_rate(axis,*rate)

fset_stop_rate(axis,rate)

fget_stop_rate(axis,*rate)

set_stop = 지정된 축의 STOP_EVENT를 생성, 축의 이동을 멈춘다.

set_stop_rate = 지정된 축의 STOP_EVENT 수행시 감속시간을 지정한다.

get_stop_rate = 지정된 축의 STOP_EVENT 수행시 적용되는 감속시간을 읽는다.

fset_stop_rate = 지정된 축의 STOP_EVENT 수행시 감속시간을 지정하고,

Boot File에 저장한다.

fget_stop_rate = Boot File에서 지정된 축의 STOP_EVENT 수행시 적용되는

감속시간을 읽어들인다.

#include "mmcdef.h"

int set_stop(int axis);

int set_stop_rate(int axis, int rate);

int get_stop_rate(int axis, int *rate);

int fset_stop_rate(int axis, int rate);

int fget_stop_rate(int axis, int *rate);

axis 인수의 범위는 MMC보드의 제어축수에 따라 달라진다. rate인수의 값은

set_accel_limit함수로서 정한 값보다 작아야 한다. stop_rate를 지정할때 값

이 크면 그만큼 정지하는 거리가 늘어나게 되므로 시스템의 사양에 맞게 조절

이 되어야 한다.

set_stop 함수로서 STOP_EVENT를 지정하더라도, 다른요인에 의해 우선순위가

높은 EVENT 즉, E_STOP_EVENT,ABORT_EVENT등이 set_stop함수 실행전에 먼저 발

생이 되어있을 경우에는 STOP_EVENT지정은 무시된다.

함 수 명

기 능

사 용 예

주 의

NOTE

set_stop 함수 사용후에는 반드시 clear_status나 clear_stop 함수로서

STOP_EVENT 상황을 Clear 해주어야 한다. 그렇지 않은 경우 다음동작이 이루어지

지 않는다.

clear_stop, clear_status 함수는 반드시 정지동작이 완료된 후에 실행을 시켜야

한다. 또한 정지 시에 set_stop_rate에서 지정한 감속비율로 정지하기 때문에

STOP_EVENT발생 전에 set_stop_rate함수를 이용하여 감속비율을 지정해야 한다.

stop_rate의 Default값은 10 이다.

정지동작

Page 211: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

#include "mmcdef.h"

#include <conio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_stop_rate(0, 10); /* 감속시간 10*10msec로 지정 */

v_move(0, 1000.0, 15); /* 속도이동 동작시작 */

getch();

set_stop(0); /* STOP_EVENT 지정 */

while(!axis_done(0)); /* 0축 동작 완료시까지 기다림 */

clear_status(0); /* STOP_EVENT 해제 */

return mmc_error;

예 제

Error Return값

정지동작

Page 212: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

set_e_stop = 지정된 축의 E_STOP_EVENT를 생성, 축의 이동을 긴급히 멈춘다.

set_e_stop_rate = 지정된 축의 E_STOP_EVENT 수행시 감속시간을 지정한다.

get_e_stop_rate = 지정된 축의 E_STOP_EVENT 수행시 적용되는 감속시간을

읽는다.

fset_e_stop_rate = 지정된 축의 E_STOP_EVENT 수행시 감속시간을 지정하고,

Boot File에 저장한다.

fget_e_stop_rate = Boot File에서 지정된 축의 E_STOP_EVENT 수행시 적용되는

감속시간을 읽어들인다.

1-14. 긴급정지 동작

set_e_stop(axis)

set_e_stop_rate(axis,rate)

get_e_stop_rate(axis,*rate)

fset_e_stop_rate(axis,rate)

fget_e_stop_rate(axis,*rate)

#include "mmdef.h"

int set_e_stop(int axis);

int set_e_stop_rate(int axis, int rate);

int get_e_stop_rate(int axis, int *rate);

int fset_e_stop_rate(int axis, int rate);

int fget_e_stop_rate(int axis, int *rate);

axis 인수의 범위는 MMC보드의 제어축수에 따라 달라진다. rate인수의 값은

set_accel_limit 함수로서 정한 값보다 작아야 한다. e_stop_rate로 지정한 값

이 크면 긴급히 정지해야 하는 상황에서 빠른 정지동작이 이루어지지 않기때문

에 e_stop_rate는 시스템의 설계조건에 맞게 조절이 되어야 한다.

set_e_stop 함수로서 E_STOP_EVENT를 지정하더라도, 다른요인에 의해 우선순위

가 높은 EVENT 즉, ABORT_EVENT가 set_e_stop 함수 실행전에 먼저 발생이 되어

있을 경우 E_STOP_EVENT지정은 무시된다.

함 수 명

기 능

사 용 예

주 의

NOTE

set_e_stop은 Host에서 축의 동작을 급히 정지시키고자 할때 사용하는 함수이

다.set_e_stop 함수 사용 후에는 반드시 clear_status나 clear_stop함수로서

E_STOP_EVENT상황을 Clear해주어야 한다.

그렇지 않은 경우 다음동작이 이루어지지 않는다. clear_stop, clear_status

함수는 반드시 정지동작이 완료된후에 실행을 시켜야 한다. 또한 정지시에

set_e_stop_rate에서 지정한 감속비율로 정지하기때문에 E_STOP_EVENT발생전에

set_e_stop_rate함수를 이용하여 감속비율을 지정해야 한다.

e_stop_rate의 Default 값은 10 이다.

긴급 정지동작

Page 213: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

#include "mmcdef.h"

#include <conio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_e_stop_rate(0, 5); /* 감속시간 10*10msec로 지정 */

v_move(0, 1000.0, 15); /* 0축 속도이동 동작시작 */

getch();

set_e_stop(0); /* 0축 E_STOP_EVENT 지정 */

while(!axis_done(0)); /* 0축 동작 완료시까지 기다림 */

clear_status(0); /* 0축 E_STOP_EVENT 해제 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

긴급 정지동작

Error Return값

Page 214: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-15. 위치 변수

set_position(axis,position)

get_position(axis,*position)

set_command(axis,command)

get_command(axis,*command)

get_error(axis,*error)

set_position = 축의 실제위치 및 목표위치를 지정한다.

get_position = 축의 실제위치(현재위치)를 읽어 들인다.

set_command = 축의 목표위치를 지정한다.

get_command = 축의 목표위치를 읽어 들인다.

get_error = 축의 목표위치와 실제위치의 차이값인 위치오차를 읽어

들인다

#include "mmcdef.h"

int set_position(int axis, double position);

int get_position(int axis, double *position);

int set_command(int axis, double command);

int get_command(int axis, double *command);

int get_error(int axis, double *error);

set_position은 원점복귀(Homing) 동작 완료후 축의 목표위치와 실제위치를 일

치시키기 위해 주로 사용된다. get_error 함수는 동작중의 위치오차를 확인하

거나 정지시에 발생하는 위치오차를 확인할수 있기때문에 Gain Tunning시에 적

합하게 사용할 수 있다.

-set_position, set_command 함수를 동작 중에 사용시 축의 목표위치와 실제위치

가 달라지기 때문에 시스템이 폭주하거나 충격을 받을 수 있기 때문에

set_position, set_command 함수는 AMP Disable상태에서 실행을 하는 것이 안전하

다.

-set_position(ax, 0) 할 경우 command와 position이 모두 '0'으로 되나, '0'이

아닌 값으로 하게 될 경우 command는 지정한 값이 되지만, position은 지정값의 4

체배된 값이 표시된다. 서보가 입력대비 출력되는 엔코더 값이 4체배의 연산관계

를 가지지 않는 경우는 문제의 소지가 있으므로 "주의".

함 수 명

기 능

사 용 예

주 의

NOTE

위치 변수

Page 215: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

double pos;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_position(0, 0.0); /* 0축의 실제위치와 목표위치를 0.0으로 지정 */

start_move(0, 10000.0, 10000.0, 20); /* 0축 이동 */

while(!get_position(0.&pos) && !axis_done(0)) /* 0축 실제위치 읽음*/

printf("Current Position: %12.0lf \r", pos);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

위치 변수

Error Return값

Page 216: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-16. 동작 상태

in_sequence(axis)

in_motion(axis)

in_position(axis)

frames_left(axis)

motion_done(axis)

axis_done(axis)

in_sequence = 축의 이동명령이 실행중이면 TRUE(1), 완료시 FALSE(0)을 돌려준다.

in_motion = 축의 속도명령이 0이면 FALSE(0), 아니면 TRUE(1)을 돌려준다.

in_position = 축의 위치오차값이 in_position 범위내의 값일때 TRUE(1), 아니면

FALSE(0)를 돌려준다.

frames_left = MMC 보드의 비어있는 Frame 갯수를 돌려준다.

motion_done = !in_sequence && !in_motion일때 TRUE(1)을 돌려준다.

axis_done = motion_done && in_position 일때 TRUE(1)을 돌려준다.

#include "mmcdef.h"

int in_sequence(int axis);

int in_motion(int axis);

int in_position(int axis);

int frames_left(int axis);

int motion_done(int axis);

int axis_done(int axis);

in_sequence, in_motion 함수는 축이 이동 중인지 여부를 판별해주고,

in_position 함수는 위치결정 완료여부를 판별해주며, frames_left는 MMC보드에

서 실행대기중인 명령이 몇개 있는지를 판별하는데 사용된다. frames_left함수

가 돌려주는 값은 0에서 MAX_FRAME_NUM(100)사이의 값이며, MAX_FRAME_NUM(50)

일경우 실행대기중인 명령이 없다는 것이다.

motion_done, axis_done 함수는 위의 동작상태함수를 조합해 동작 완료여부를

판별하는데 사용된다.

함 수 명

기 능

사 용 예

NOTE

동작 상태

Page 217: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

double pos;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

start_move(0, 10000.0, 10000.0, 20); /* 0축 이동 */

while(!get_position(0.&pos) && !motion_done(0))

printf("Current Position: %12.0lf \r", pos);

return mmc_error;

사다리꼴 속도 Profile로 이동중 in_sequence, in_motion함수가 돌려주는 값은

아래의 표와 같다.

Profile in_sequence in_motion motion_done

준비 1 0 0

가속 1 1 0

등속 1 1 0

감속 1 1 0

완료 0 0 1

속 도

사다리꼴 속도 Profile

가 속 등 속 감 속시 간

준비 완료

동작 상태

Page 218: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-17. EVENT 상태

axis_state(axis)

axis_state = 축의 현재 EVENT 발생상태를 돌려준다.

#include "mmcdef.h"

int axis_state(int axis);

Event는 4가지 종류의 Event가 있으며, 각 Event의 발생조건 설정은 Host에서

함수를 통해 설정된다. MMC보드에서는 기설정된 Event 발생조건에 따라 이것이

충족되면 Event를 발생시키고, 설정조건에 따른 동작을 실시한다.

axis_state 함수는 MMC 보드에서 Event발생상태를 읽어와서 돌려주는 기능을

하는 함수로서 현재 축에 어떤 Event가 발생되고 있는지를 알수있다.

Event에는 우선순위가 존재하여 우선순위가 높은 Event가 발생되어 있으면 낮

은 우선순위의 Event는 무시된다.

각 Event별 #define에 정의된 값과 Event발생시 동작상태, 우선순위는 아래와

같다.

Event 종류 #define 값 동작상태 우선순위

NO_EVENT 0 EVENT 발생없이 정상동작 4

STOP_EVENT 1 stop_rate로 감속하면서 정지 3

E_STOP_EVENT 2 e_stop_rate로 감속하면서 정지 2

ABORT_EVENT 3 AMP Disable 상태 1

함 수 명

기 능

사 용 예

NOTE

EVENT 상태

Page 219: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제#include "mmcdef.h"

#include <stdio.h>

#include <dos.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

v_move(0,1000.0,10);

delay(1000);

set_stop(0);

while(!axis_done(0));

if(axis_state(0) == STOP_EVENT)

printf("A stop event occured on axis 0\");

clear_status(0);

return mmc_error;

EVENT 상태

Page 220: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-18. 축의 상태

axis_source(axis)

axis_source = MMC보드로 부터 축의 현재상태를 읽어들인다.

#include "mmcdef.h"

int axis_source(int axis);

함 수 명

기 능

사 용 예

NOTEaxis_source는 EVENT 발생후 EVENT의 발생원인을 찾아내는데도 사용된다.

axis_state 함수가 돌려주는 값이 1 이상 일때 axis_source함수를 이용하면 그원인

을 찾을수 있다. 축의 상태는 Bit별로 설정되며, Bit가 High(1)일때 Active된 상태

이다. 각 Bit에 따른 축의 상태는 아래와 같다.

번호 정의 BIT값 축의 상태

1 ST_NONE 0x0000 정상동작

2 ST_HOME_SWITCH 0x0001 원점(home) 센서 감지

3 ST_POS_LIMIT 0x0002 + 방향 Limit 센서 감지

4 ST_NEG_LIMIT 0x0004 - 방향 Limit 센서 감지

5 ST_AMP_FAULT 0x0008 AMP Fault 상태 발생

6 ST_A_LIMIT 0x0010 가,감속시간이 limit 보다 클때 발생

7 ST_V_LIMIT 0x0020 현재속도가 속도 limit보다 클때 발생

8 ST_X_NEG_LIMIT 0x0040 - Position limit를 벗어날때 발생

9 ST_X_POS_LIMIT 0x0080 + Position limit를 벗어날때 발생

10 ST_ERROR_LIMIT 0x0100 위치오차가 limit값보다 클때 발생

11 ST_PC_COMMAND 0x0200EVENT가 발생된 상태일때 발생

set_stop,set_e_stop,set_linear_all_stop

12 ST_OUT_OF_FRAMES 0x0400 Frame Buffer가 Full 상태일때 발생

13 ST_AMP_POWER_ONOFF 0x0800 AMP Disable 상태일때 발생

14 ST_ABS_COMM_ERROR 0x1000 ABS Encoder 통신 error시 발생

15 ST_INPOSITION_STATUS 0x2000 In Position Signal 입력 여부

16 ST_RUN_STOP_COMMAND 0x4000 RUN STOP Error

17 ST_COLLISION_STATE 0x8000 충돌 방지 Error

축의 상태

Page 221: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

#include "mmcdef.h"

#include <stdio.h>

#include <dos.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

v_move(0, 1000.0, 20);

delay(1000);

set_stop(0); /* STOP_EVENT 발생 */

while(!axis_done(0));

if(axis_source(0) & ST_PC_COMMAND)

printf("A event triggered");

clear_status(0);

return mmc_error;

예 제

주 의한번설정된 상태는 NO_EVENT로 설정된 조건에 의해서만 자동적으로 해제가 되

고 나머지 EVENT로 설정되어 있을경우에는 set_amp_enable, clear_status,

clear_stop 등의 함수를 사용하여 해제 시킬수가 있다. 단, ST_OUT_OF_FRAMES

의 경우는 해제되지 않는다.

예를들어 Home_Switch의 Active시에 적용될 Event를 NO_EVENT할경우에는

ST_HOME_SWITCH 상태는 Home_Switch의 Active여부에 따라 자동적으로 설정되거

나 해제가 되지만, NO_EVENT가 아닌 STOP_EVENT, E_STOP_EVENT,ABORT_EVENT중

의 하나로 할경우에는 반드시 set_amp_enable, clear_status, clear_stop 등의

함수를 사용해야만 해당 Bit값을 0으로 해제 시킬수가 있다.

축의 상태

Page 222: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-19. EVENT 해제

clear_status(axis)

clear_status = 발생된 EVENT를 해제하고, 다음명령부터 실행한다.

#include "mmcdef.h"

int clear_status(int axis);

EVENT 발생후 clear_status 함수를 사용하지 않으면 EVENT 상태는 계속 유지되

어 다음 명령을 수행하지 않는다. 그러므로 STOP_EVENT, E_STOP_EVENT,

ABORT_EVENT등이 발생한후에는 반드시 clear_status, clear_stop함수를 이용하

여 EVENT 상태를 해소해야 한다. ABORT_EVENT 발생시에는 AMP Disable 된 상태

이기 때문에 Event 해제후 반드시 set_amp_enable함수를 사용하여 AMP Enable

를 시킨다음 동작을 시켜야 한다.

clear_status, clear_stop 함수실행시 반드시 Error Code를 검사하여 정상적으

로 수행이 되었는지 여부를 검사하는것이 안전한 방법이다.

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

start_move(0,10000.0,3000.0,10);

set_stop(0); /* 0축 STOP_EVENT 발생 */

while(!motion_done(0)); /* 동작완료시 까지 기다림 */

if(clear_status(0)) /* EVENT 해제 */

printf("Could not clear the status\n");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_ON_MOTION(9)

함 수 명

기 능

사 용 예

주 의

예 제

Error Return값

EVENT 해제

Page 223: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-20. FRAME 제어

frames_clear(axis)

frames_clear = Host(PC)에서 MMC보드의 Frame Buffer를 Clear 시킨다.

#include "mmcdef.h"

int frames_clear(int axis);

frames_clear함수는 지정축의 Frame을 모두 Clear 시키기 때문에 실행을 위해

보관되어 있는 명령들이 모두 없어진다는데 유의해야 한다. 단, 현재 실행중인

명령은 frames_clear함수와 관계없이 계속 수행을 한다.

Frame이란 Host(PC)에서 MMC보드에 내린 명령을 보관하는 버퍼를 의미한다.

Frame의 크기는 축당 100개의 명령을 보관할 수 있다. 보관된 명령은 MMC보드

에서 순차적으로 실행을 한다. 따라서 Host에서는 명령만 내린후 다른일을 할

수 있기 때문에 Multi-Tasking 이나 또는 다른일을 수행할 수 있다.

frames_clear함수는 이와같이 실행을 위해 보관중인 해당축의 명령을 모두 취

소 시키고자 할때 사용된다.

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

start_move(0,100000.0, 10000.0, 10);

while(!motion_done(0)); /* 동작 완료 시 까지 기다림 */

frames_clear(0); /* MMC보드의 frame을 모두 clear 시킴 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_ON_MOTION(9)

함 수 명

기 능

사 용 예

주 의

NOTE

예 제

FRAME 제어

Error Return값

Page 224: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-21. SENSOR 상태

home_switch(axis)

pos_switch(axis)

neg_switch(axis)

amp_fault_switch(axis)

home_switch = 원점(home) 센서의 상태를 읽어들인다.

pos_switch = +방향 Limit 센서의 상태를 읽어들인다.

neg_switch = -방향 Limit 센서의 상태를 읽어들인다.

amp_fault_switch = AMP의 Fault 상태를 읽어들인다.

#include "mmcdef.h"

int home_switch(int axis);

int pos_switch(int axis);

int neg_switch(int axis);

int amp_fault_switch(int axis);

각 함수의 Return값이 TRUE(1)일때는 Switch가 Active된 상태이며, FALSE(0)일

때는 No Active된 상태이다. 각 Switch의 Active Level은 set_home_level,

set_ positive_level, set_negative_level, set_amp_fault_level 함수를 사용

하여 LOW(0) 또는 HIGH(1)로 설정할 수 있다.

함 수 명

기 능

사 용 예

주 의

NOTE

입력 Sensor들은 신호가 Latch되어 있지 않기 때문에 실제 제어기에서 일어나

고 있는 상황과는 다를수 있다. 예를들면 실제 시스템의 위치가 Home_Switch를

벗어나 있음에도 불구하고 Home_Event는 실행중인 현상이 생길수 있다.

SENSOR 상태

Page 225: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-22. I/O PORT 입,출력

set_io(port, value)

get_io(port,*value)

get_out_io(port,*value)

set_io = 32-bit의 I/O Data를 출력 Port를 통해 내보낸다.

get_io = 입력 Port의 32-bit Data를 읽어들인다.

get_out_io = 출력 Port의 상태를 읽어들인다.

#include "mmcdef.h"

int set_io(int port, long value);

int get_io(int port, long *value);

int get_out_io(int port, long *value);

함 수 명

기 능

사 용 예

NOTEset_io, get_io, get_out_io 함수에서 Port 인수의 값은 MMC보드의 장착 수에

따라 달라진다.MMC 보드의 장착 수와 Port 값의 관계는 아래와 같다.

MMC 보드 장착수 port값의 사용범위 입/출력 I/O 점수

1 0 32점

2 0 - 1 32점 * 2

3 0 - 2 32점 * 3

4 0 - 3 32점 * 4

MMC 보드에서 JP9 콘넥타는 입력용이고, JP10 콘넥타는 출력용이다. 각 콘넥타

의 핀사양은 아래와 같다.

PIN 번호 신호 PIN 번호 신호 PIN 번호 신호

1,2 +5V 16 I/O 11 31 I/O 22

3,4 GND 17 I/O 12 32 I/O 23

5 I/O 0 18 I/O 13 33 I/O 24

6 I/O 1 19 I/O 14 34 I/O 25

7 I/O 2 20 I/O 15 35 I/O 26

8 I/O 3 21,22 +5V 36 I/O 27

9 I/O 4 23,24 GND 37 I/O 28

10 I/O 5 25 I/O 16 38 I/O 29

11 I/O 6 26 I/O 17 39 I/O 30

12 I/O 7 27 I/O 18 40 I/O 31

13 I/O 8 28 I/O 19

14 I/O 9 29 I/O 20

15 I/O 10 30 I/O 21

I/O PORT 입,출력

Page 226: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

I/O bit에 대응하는 Value인수의 값은 아래와 같다.

I/O bit 번호 Value Hex I/O bit 번호 Value Hex

0 0x00000001 16 0x00010000

1 0x00000002 17 0x00020000

2 0x00000004 18 0x00040000

3 0x00000008 19 0x00080000

4 0x00000010 20 0x00100000

5 0x00000020 21 0x00200000

6 0x00000040 22 0x00400000

7 0x00000080 23 0x00800000

8 0x00000100 24 0x01000000

9 0x00000200 25 0x02000000

10 0x00000400 26 0x04000000

11 0x00000800 27 0x08000000

12 0x00001000 28 0x10000000

13 0x00002000 29 0x20000000

14 0x00004000 30 0x40000000

15 0x00008000 31 0x80000000

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

long val;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_io(0,0); /* 출력 I/O Port 0 에 0x00000000 Low data 출력 */

v_move(0, 1000.0, 20);

while(!get_io(0,&val)) /* 입력 I/O Port data를 read */

if(val & 1) break; /* 입력 I/O bit 0의 High 여부 검사 */

v_move_stop(0);

set_io(0,1); /* 출력 I/O Port 0에 0x00000001 High Data 출력 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_IO(5),MMC_ILLEGAL_PARAMETER(6)

예 제

I/O PORT 입,출력

Error Return값

Page 227: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-23. I/O BIT 제어

set_bit(bitNo)

reset_bit(bitNo)

set_bit = 지정 I/O Bit를 HIGH(1) 상태로 만든다.

reset_bit = 지정 I/O Bit를 LOW(0) 상태로 만든다.

#include "mmcdef.h"

int set_bit(int bitNo);

int reset_bit(int bitNo);

set_bit, reset_bit 함수에서 bitNo 인수의 값은 MMC보드의 장착수에 따라 달

라진다. MMC보드의 장착수와 bitNo 값의 관계는 아래와 같다.

MMC 보드 장착수 bitNo값의 범위

1 0 - 31

2 0 - 63 ( 0 - 31, 32 - 63)

3 0 - 95 ( 0 - 31, 32 - 63, 64 - 95)

4 0 - 127 ( 0 - 31, 32 - 63, 64 - 95, 96 - 127)

예를들어 MMC보드가 2개 장착되어 있을경우 set_io(32)를 실행할 경우 2번째

MMC보드의 I/O bit 0가 ON 상태로 된다.

#include "mmcdef.h"

#include <dos.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_io(0,0) /* 출력 I/O Port 0를 Low(0)으로 지정*/

set_bit(9) /* 출력 I/O Port bit 9를 ON */

mmcDelay(1000); /* delay 1000msec */

reset_bit(9); /* 출력 I/O Port bit 9를 OFF */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_IO(5),MMC_ILLEGAL_PARAMETER(6)

함 수 명

기 능

사 용 예

NOTE

예 제

I/O BIT 제어

Error Return값

Page 228: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-24. ANALOG 입력

get_analog(channel,*value)

get_analog = 지정된 ADC Channel의 12bit Data값을 읽는다.

#include "mmcdef.h"

int get_analog(int channel, int *value);

Analog 입력은 입력신호에 대해 Buffering을 하지않기 때문에 +10 volts 혹은

-10 volts을 절대 초과하지 않도록 하여야 한다. 만약 초과할경우에는 Hardward

부분의 IC가 파손될 위험이 크다. Analog 입력을 Feedback장치로 사용할 경우에

는 0 ‾ 3축에 4개의 채널을 연결해야 한다. 4 ‾ 7축은 ADC 입력을 받지 않는다.

본 함수의 실행은 MMC Option보드를 장착 해야만 가능하다. Analog 입력은 가

변저항으로서 입력범위를 조정할수 있으며, 최대 입력범위와 최소 입력범위는

아래와 같다.

Analog 입력범위 Data범위

+10V ‾ -10V (최대 입력범위) +2047 ‾ -2048

+3V ‾ -3V (최소 입력범위) +2047 ‾ -2048

Analog입력채널의 수는 0에서 3까지 4개의 채널이 있다. Analog 입력은 1msec

마다 Read하므로 get_analog함수로서 얻어지는 값은 1msec마다 Update된다.

#include "mmcdef.h"

#include <stdio.h>

int main()

int val;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

while( !kbhit() )

get_analog(0,&val); /* 채널 #0의 12bit data를 읽음 */

printf("Analog input channel 0 : %d\r", val);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_ANALOG(4)

함 수 명

기 능

사 용 예

주 의

NOTE

예 제

Error Return값

ANALOG 입력

Page 229: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-25. ANALOG 출력

함 수 명 set_dac_output(axis,volt)

get_dac_output(axis,*volt)

기 능

사 용 예

set_dac_output = 16bit Analog 출력전압을 내보낸다.

get_dac_output = 출력전압에 해당하는 16bit Data를 읽어들인다.

MMC-BDPV42 모델은 16bit, MMC-BDPV41/81 모델은 16bit 임.

#include "mmcdef.h"

int set_dac_output(int axis, int volt);

int get_dac_output(int axis, int *volt);

주 의

NOTEvolt 인수값의 범위는 보드의 모델에 따라 다르다.

* MMC-BDPV41/81 = +32767(10V) ‾ -32768(-10V)

* MMC-BDPV42 = +32767(10V) ‾ -32768(-10V)

Analog 출력전압은 일반적으로 MMC보드에서 PID제어결과를 출력하나,

set_dac_output함수를 사용함으로서 Host(PC)에서 Analog 출력전압을 직접제어

할수가 있다. set_dac_output 함수를 사용시 제어 알고리즘은 수행되지 않는다.

set_dac_output함수를 사용시 set_positive_sw_limit,set_negative_sw_limit 함

수로서 설정된 위치 상,하한값은 무시된다. 따라서 제어위치 범위에 관계없이

모타를 회전시키고자 할때 또는 Open-Loop 모타제어나, Force 제어, 기타

Analog 장치들을 동작시키는데 적합한 함수이다.

get_dac_output 함수는 DAC Port를 통해 출력되는 12/16bit의 Data를 읽어 들인

다.

set_dac_output 함수 사용시 반드시 controller_idle 함수를 먼저 사용해야 한다.

controller_idle 함수를 사용하지 않은 상태에서는 set_dac_output 함수가 동작하

지 않는다.

controller_run 함수를 실행하면 set_dac_output 함수는 무시되고, 정상적인 PID

제어로 돌아간다.

ANALOG 출력

Page 230: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <conio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,FALSE);

controller_idle(0); /* Disable PID Control */

set_dac_output(0, 2000);

getch();

controller_run(0); /* Enable PID Control */

set_amp_enable(0,TRUE);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

Error Return값

ANALOG 출력

Page 231: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-26. MOTION 제어

mmc_dwell(axis,duration)

mmcDealy(duration)

mmc_io_trigger(axis,bitNo,state)

mmc_dwell = 해당 축의 다음동작의 실행을 duration Data 만큼 지연한다.

mmcDelay = 프로그램의 실행을 Duration 시간만큼 지연시킨다.

mmc_io_trigger = I/O bitNo가 state로 지정된 상태로 될때까지 해당축의

다음 동작 실행을 지연한다.

#include "mmcdef.h"

int mmc_dwell(int axis, long duration);

int mmcDelay(long duration);

int mmc_io_trigger(int axis, int bitNo, int state);

mmc_dwell,mmcDelay 함수에서 duration인수의 값이 0 보다 작거나 같을때 함수

는 실행되지 않는다.

mmc_io_trigger함수에서 axis,bitNo의 인수값은 MMC보드의 장착수에 따라 맞게

지정이 되어야 한다.

함 수 명

기 능

사 용 예

주 의

NOTEmmc_dwell 함수에서 duration인수의 단위는 1msec 이다. MMC 보드의 입력용 콘

넥타인 JP9의 핀사양은 아래와 같다. (MMC-BDPV41/81 기준)

PIN 번호 신호 PIN 번호 신호 PIN 번호 신호

1,2 +5V 16 I/O 11 31 I/O 22

3,4 GND 17 I/O 12 32 I/O 23

5 I/O 0 18 I/O 13 33 I/O 24

6 I/O 1 19 I/O 14 34 I/O 25

7 I/O 2 20 I/O 15 35 I/O 26

8 I/O 3 21,22 +5V 36 I/O 27

9 I/O 4 23,24 GND 37 I/O 28

10 I/O 5 25 I/O 16 38 I/O 29

11 I/O 6 26 I/O 17 39 I/O 30

12 I/O 7 27 I/O 18 40 I/O 31

13 I/O 8 28 I/O 19

14 I/O 9 29 I/O 20

15 I/O 10 30 I/O 21

MOTION 제어

Page 232: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <conio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_io(0, 0); /* I/O Port 0를 low 상태로 만듬 */

mmc_io_trigger(0,0,TRUE);/* bit 0가 high상태가 될때 동작하도록 설정*/

mmc_dwell(0, 5000); /* 5초간 기다림 */

start_move(0, 4000.0, 5000.0, 15);

getch();

set_bit(0); /* bit 0를 high 상태로 만듬 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3),MMC_ILLEGAL_PARAMETER(6)

예 제

MOTION 제어

Error Return값

Page 233: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-27. MMC 보드 구성

mmc_axes(bdNum,*axes)

mmc_all_axes(void)

set_stepper(axis)

set_micro_stepper(axis)

set_servo(axis)

get_stepper(axis)

get_micro_stepper(axis)

fset_stepper(axis)

fset_micro_stepper(axis)

fset_servo(axis)

fget_stepper(axis)

fget_micro_stepper(axis)

함 수 명

기 능

사 용 예

mmc_axes = 해당 MMC 보드의 제어 축 수를 돌려준다.

mmc_all_axes = 전체 제어 축 수를 돌려준다.

set_stepper = 해당 축을 일반 Stepper나 Micro Stepper를 제어하는 축으로

지정한다.

set_micro_stepper = 해당 축을 위치형 Servo를 제어하는 축으로 지정한다.

set_servo = 해당 축을 속도형 Servo 모타를 제어하는 축으로 지정한다.

get_stepper = 해당 축이 일반 Stepper로 지정된 경우 TRUE(1)을 돌려준다.

get_micro_stepper = 해당 축이 Micro Stepper로 지정된 경우 TRUE(1)을 돌려준다.

fset_stepper = 해당 축을 Stepper 제어하는 축으로 지정하고,

Boot File에 저장한다.

fset_micro_stepper= 해당 축을 Micro Stepper나 위치형 Servo를 제어하는 축으로

지정하고, Boot File에 저장한다

fset_servo = 해당 축을 Servo 모타를 제어하는 축으로 지정하고,

Boot File에 저장한다.

fget_stepper = Boot File에 해당 축이 Stepper로 지정되어 있으면 TRUE(1)를

돌려준다.

fget_micro_stepper= Boot File에 해당 축이 Micro Stepper로 지정되어 있으면

TRUE(1)를 돌려준다.

#include "mmcdef.h"

int mmc_axes(int bdNum, int *axes);

int mmc_all_axes(void);

int set_stepper(int axis);

int set_micro_stepper(int axis);

int set_servo(int axis);

MMC 보드 구성

Page 234: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int stepper;

if(mmc_initx(1,&addr)) return mmc_error;

stepper = get_stepper(0);

if(stepper) printf("Axis 0 is configured for stepper operation");

else printf("Axis 0 is configured for servo operation");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

MMC보드 구성함수들은 축의 제어방법을 결정해주는 중요한 요소로서 제어대상

이 되는 Motor 및 AMP Drive에 맞게 설정이 되어야 한다. 설치되어 있는 Motor

및 AMP Drive와 맞지 않을경우 정상적인 제어가 수행되지 않아 시스템이 치명

적인 손상를 입을수 있다. bdNum 및 axis 인수의 경우 MMC 보드의 장착수에 따

라 달라지므로 제어기 사양에 맞게 사용되어야 한다.

예 제

주 의

NOTEget_stepper,get_micro_stepper함수와 fget_stepper,fget_micro_stepper 함수의

차이점은 get_stepper,get_micro_stepper는 현재 MMC보드에 적용 중인 상태를

읽어 오고, fget_stepper,fget_micro_stepper는 MMC보드와 관계없이 Boot File

에 저장되어 있는 내용을 읽어 온다. 모타 드라이버에 따른 축의 설정방법은 아

래와 같다.

위치형 Servo ===> set_micro_stepper(),fset_micro_stepper()

일반 Stepper,Micro Stepper ===> set_stepper(),fset_stepper()

속도형 Servo ===> set_servo()

위치형 Servo와 속도형 Servo의 구별은 입력에 따른 구별로서, Pulse열을 입력

으로 받으면 위치형 Servo이고, Analog 전압을 입력으로 받으면 속도형 Servo

로 구별 된다.

모든 Stepping Drive의 경우는 반드시 set_stepper로 설정하셔야

합니다.(Rom Version 1.32 이상일 경우)

int get_stepper(int axis);

int get_micro_stepper(int axis);

int fset_stepper(int axis);

int fset_micro_stepper(int axis);

int fset_servo(int axis);

int fget_stepper(int axis);

int fget_micro_stepper(int axis);

Error Return값

MMC 보드 구성

Page 235: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-28. 제어모드 구성

set_control(axis,control)

get_control(axis,*control)

fset_control(axis,control)

fget_control(axis,*control)

set_control = 지정축을 속도제어 모드 또는 Torque제어 모드로 지정한다.

get_control = 지정축이 속도/Torque제어 모드인지를 판별한다. Torque제어 모드

일경우 TRUE(1)을 돌려준다.

fset_control = 지정축을 속도/Torque제어 모드로 지정하고, Boot File에 저장한다.

fget_control = Boot File에서 지정축이 속도/Torque제어 모드인지를 판별하며,

Torque제어 모드일경우 TRUE(1)을 돌려준다.

#include "mmcdef.h"

int set_control(int axis, int control);

int get_control(int axis, int *control);

int fset_control(int axis, int control);

int fget_control(int axis, int *control);

속도/Torque제어 모드의 설정은 축의 제어방법을 결정해주는 중요한 요소로서 제

어대상이 되는 Motor 및 AMP Drive에 맞게 설정이 되어야 한다. 설치되어 있는

Motor 및 AMP Drive와 맞지 않을경우 정상적인 제어가 수행되지 않아 시스템이

치명적인 손상를 입을수 있다.

set_control, fset_control, get_control, fget_control 함수는 Step 모타를 사

용할때는 무시된다.

set_control, fset_control 함수는 지정축을 속도제어 모드(control인수=FALSE) 또

는 Torque제어 모드(control인수=TRUE)로 구성하는데 이용 되어진다.

get_control, fget_control 함수는 MMC보드, Boot File에서 지정축의 속도/Torque

제어 모드 여부를 읽어들인다.

Default 제어모드는 Torque 제어모드이다. 속도제어 모드선택시 속도 제어용 Gain

들은 무시된다.

함 수 명

기 능

주 의

NOTE

사 용 예

제어모드 구성

Page 236: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

int control;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

get_control(0,&control);

if(control == V_CONTROL)

printf("Axis 0 is configured for Velocity control mode");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

예 제

제어모드 구성

Error Return값

Page 237: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-29. 제어 LOOP 구성

함 수 명 set_closed_loop(axis,loop)

get_closed_loop(axis,*loop)

fset_closed_loop(axis,loop)

fget_closed_loop(axis,*loop)

기 능

사 용 예

set_closed_loop = 지정축을 Closed_Loop 또는 Open_Loop 제어축으로 지정한다.

get_cloesd_loop = 지정축이 Closed_Loop/Open_Loop 제어를 판별하는데

사용되며, Closed_Loop일경우 TRUE(1)을 돌려준다.

fset_closed_loop = 지정축을 Closed_Loop 또는 Open_Loop 제어축으로

지정하고,Boot File에 저장한다.

fget_cloesd_loop = Boot File에서 지정축이 Closed_Loop / Open_Loop 제어를

판별하며, Closed_Loop일경우 TRUE(1)을 돌려준다.

#include "mmcdef.h"

int set_closed_loop(int axis, int loop);

int get_closed_loop(int axis, int *loop);

int fset_closed_loop(int axis, int loop);

int fget_closed_loop(int axis, int *loop);

NOTEset_closed_loop, fset_closed_loop 함수는 지정축을 Closed_Loop(loop인수

=TRUE) 또는 Open_Loop(loop인수=FLASE)로 구성하는데 이용 되어진다.

Closed_Loop에서는 실제위치를 하나 이상의 Feedback 장치로 부터 읽어들인다.

Feedback 장치의 구성은 set_feedback(), fset_feedback() 함수로서 지정이 가

능하다.

get_closed_loop, fget_closed_loop 함수의 차이점은 get_closed_loop의 경우

MMC보드에 현재 적용중인 제어 Loop를 읽어오며, fget_closed_loop는 MMC 보드

와 관계없이 Boot File에 저장되어 있는 제어 Loop를 읽어온다.

Default Feedback 장치는 Encoder이다.

제어 LOOP 구성

Page 238: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

지정축을 Closed_Loop로 구성한경우 Feedback 장치의 사양이나 배선관계에 유

의해야 한다. Closed_Loop에서는 제어에 기본이 되는 실제위치를 Feedback장치

로 부터 읽어들이기 때문에 Feedback Data에 이상이 있을경우 시스템이 치명적

인 손상을 입을 수 있다.

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int loop;

if(mmc_initx(1,&addr)) return mmc_error;

get_closed_loop(0,&loop);

if(loop)

printf("Axis 0 is configured for closed_loop operation");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

주 의

예 제

제어 LOOP 구성

Error Return값

Page 239: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-30. FEEDBACK 구성

set_feedback(axis,device)

get_feedback(axis,*device)

fset_feedback(axis,device)

fget_feedback(axis,*device)

set_feedback = 해당 축의 Feedback 장치를 지정한다.

get_feedback = 해당 축이 사용하고 있는 Feedback 장치를 판별한다.

fset_feedback = 해당 축의 Feedback 장치를 지정하고, Boot File에 저장한다.

fget_feedback = Boot File에서 해당 축의 Feedback 장치를 판별한다.

#include "mmcdef.h"

int set_feedback(int axis, int device);

int get_feedback(int axis, int *device);

int fset_feedback(int axis, int device);

int fget_feedback(int axis, int *device);

함 수 명

기 능

사 용 예

NOTEset_feedback, fset_feedback함수의 device 인수가 사용가능한 Feedback장치들

은 아래와 같다.

FB_ENCODER 0 Encoder feedback장치

FB_UNIPOLAR 1 0 ‾ 10volt의 analog 입력을 사용하는 feedback장치

FB_BIPOLAR 2-10 ‾ 10volt의 analog 입력을 사용하는 feedback장치

FB_UNIPOLAR,FB_BIPOLAR를 Feedback장치로 사용할경우 위치 Feedback을 위해

ADC(Analog to Digital Converter)가 이용된다.

FB_UNIPOLAR Feedback 장치인 경우 0‾2047의 위치 Data를 가지며, FB_BIPOLAR를

Feedback장치로 사용할경우 -2048 ‾ +2047 사이의 위치 Data를 가진다.

FEEDBACK 구성

Page 240: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

int device;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

get_feedback(0,&device);

if(device == FB_ENCODER)

printf("Axis 0 uses an encoder for position feedback");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

예 제

주 의 FB_ENCODER로 지정한경우 Feedback 장치의 사양이나 배선관계에 유의해야 한

다. Closed_Loop에서는 제어에 기본이 되는 실제위치를 Feedback장치로 부터

읽어들이기 때문에 Feedback Data에 이상이 있을경우 시스템이 치명적인 손상

을 입을 수 있다.

FB_UNIPOLAR, FB_BIPOLAR로 지정한경우 Analog 입력은 입력신호에 대해

Buffering을 하지않기 때문에 +10 volts 혹은 -10 volts을 절대 초과하지 않도

록 하여야 한다. 초과할경우에는 Hardward 부분의 IC가 파손될 위험이 있다.

FEEDBACK 구성

Error Return값

Page 241: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-31. UNIPOLAR 구성

set_unipolar(axis,state)

get_unipolar(axis)

fset_unipolar(axis,state)

fget_unipolar(axis)

set_unipolar = 지정축의 Analog출력을 UNIPOLAR로 지정한다.

get_unipolar = 지정축이 UNIPOLAR Analog출력을 하면 TRUE(1)을 돌려준다.

fset_unipolar = 지정축의 Analog출력을 UNIPOLAR로 지정하고, Boot File에

저장한다.

fget_unipolar = Boot File에서 지정축이 UNIPOLAR Analog출력을 하면

TRUE(1)을 돌려준다.

#include "mmcdef.h"

int set_unipolar(int axis, int state);

int get_unipoalr(int axis);

int fset_unipolar(int axis, int state);

int fget_unipoalr(int axis);

set_unipolar, fset_unipolar 함수에서 state인수를 TRUE(1)로 하면 UNIPOLAR

로 지정이 되고, FALSE(0)로 하면 BIPOLAR로 지정이 된다. 축이 Bipolar로 구

성되면 Analog 출력이 -10 ‾ +10volt 의 범위를 가지게 되며 전압의 부호는

+,- 방향을 지시한다. 축이 Unipolar로 구성되면 Analog 출력이 0 ‾ +10volt

의 범위를 가진다.

get_unipolar, fget_unipolar 함수는 지정축의 Unipolar 구성 여부를 판별하는

데 사용되며 Unipolar일때 TRUE(1), Bipolar일때 FALSE(0)를 돌려준다.

get_unipolar, fget_unipolar 함수의 차이점은 get_unipolar 함수는 MMC보드에

적용중인 Analog 출력상태를 읽어오고, fget_unipolar 함수는 MMC보드와 관계

없이 Boot File에서 Analog 출력상태를 읽어온다.

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

if(get_unipolar(0))

printf("Axis 0 is configured for unipolar operation");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

함 수 명

기 능

사 용 예

NOTE

예 제

UNIPOLAR 구성

Error Return값

Page 242: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-32. STEP모드 구성

set_step_mode(axis,mode)

get_step_mode(axis,*mode)

fset_step_mode(axis,mode)

fget_step_mode(axis,*mode)

set_pulse_ratio(axis,pgratio)

get_pulse_ratio(axis,*pgratio)

set_step_mode = 지정축의 Pulse출력을 Two_Pulse(CW+CCW)모드(0).

또는 Sign + Pulse모드(1)로 할 것인지를 지정한다.

get_step_mode = 지정축의 Pulse 출력모드를 읽는다. Sign + Pulse 모드일 때

TRUE(1)을 돌려준다.

fset_step_mode = 지정축의 Pulse출력을 Two_Pulse(CW+CCW)모드(0). 또는 Sign

+ Pulse모드(1)로 할것인지를 지정하고, Boot File에 저장한다.

fget_step_mode = Boot File에서 지정축의 Pulse 출력모드를 읽는다.

Sign + Pulse모드일때 TRUE(1)을 돌려준다.

set_pulse_ratio = 지정축의 Pulse 분주비를 지정한다.

get_pulse_ratio = 지정축의 Pulse 분주비를 읽는다.

* pulse_ratio 함수는 ROM Version 1.32 이상에서는 적용되지 않는다.

#include "mmcdef.h"

int set_step_mode(int axis, int mode);

int get_step_mode(int axis, int *mode);

int fset_step_mode(int axis, int mode);

int fget_step_mode(int axis, int *mode);

int set_pulse_ratio(int axis, int pgratio);

int get_pulse_ratio(int axis, int *pgratio);

함 수 명

기 능

사 용 예

NOTEset_step_mode, fset_step_mode 함수는 지정축의 Pulse 출력모드를 Two_Pulse

방식(mode인수=FALSE) 또는 Sign+Pulse 방식(mode인수=TRUE)로 구성하는데 이용

된다. Default Pulse 출력모드는 CW+CCW 방식이다.

get_step_mode, fget_step_mode 함수는 MMC보드, Boot File에서 지정축의 Pulse

출력모드를 읽어들인다.

set_pulse_ratio() 함수는 ROM Version 1.32 이상에서는 적용되지 않는다.

STEP모드 구성

Page 243: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서#include "mmcdef.h"

#include <stdio.h>

int main()

int loop;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_stepper(0); /* 0축을 stepper로 지정 */

set_step_mode(0,FALSE); /* Two_Pulse방식의 출력모드 설정 */

set_pulse_ratio(0,8); /* 8 분주 설정 */

set_electric_gear(0,8.0); /* 분주비 만큼 Gear비 설정 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

예 제

주 의 set_step_mode, fset_step_mode 함수로 지정한 Pulse 출력모드에 맞게 모타 드

라이버의 결선을 해주어야 한다. 결선이 지정모드와 맞지 않을경우 Pulse 출력

이 제대로 되지않아 위치가 Shift 되거나, 제어가 되지 않는다.

set_stepper(), fset_stepper() 함수로서 일반 Stepper로 축을 구성하고,

set_pulse_ratio() 함수를 사용하여 분주비를 지정했을때 분주비로 지정한 만

큼 목표위치나 이동속도를 곱해서 사용해야 한다. 만약 분주비를 1 이상의 값

을 지정한 상태에서는 위치나 속도값은 분주비 만큼 못가게된다.

따라서 위와 같은 불편함을 없애기 위해서는 set_electric_gear() 함수를 사용

하여 분주비로 지정한값 만큼 전자기어비를 지정해주면 위치나 속도값을 분주

비에 관계없이 사용할 수 있다.

STEP모드 구성

Error Return값

Page 244: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-33. 전자 기어비 구성

set_electric_gear(axis,ratio)

get_electric_gear(axis,*ratio)

set_electric_gear = 지정축의 전자기어비를 지정하고, Boot File에 저장한

다.

get_electric_gear = 지정축의 전자기어비를 읽는다.

#include "mmcdef.h"

int set_electric_gear(int axis, double ratio);

int get_electric_gear(int axis, double *ratio);

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_electric_gear(0, (2048*4)/20)); /* 모타 1회전당 부하축 20mm 이동 */

set_electric_gear(1, (2048*4)/360)); /* 모타 1회전당 부하축 360°이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

함 수 명

기 능

사 용 예

NOTE

예 제

전자 기어비는 모타의 Shaft와 부하축 사이에 기구적으로 결합되는 감속기를

비율을 나타낸다. 전자 기어비의 계산을 예를들면 아래와 같다.

예) Ball_Screw 사용, Pitch = 20mm , 모타분해능 = 2048 pulse/rev 인경우

모타 1바퀴 이동시 Ball_Screw 20mm 이동함.

전자 기어비 = (2048 * 4) / 20 mm = 409.6

set_electric_gear(0,409.6);

MMC보드의 Encoder Count는 4체배 Count 임

위의 예는 원통죄표에서 각도로 환산될때에도 동일하게 적용된다.

Default 전자 기어비는 1.0 이다.

전자 기어비 구성

Error Return값

Page 245: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-34. Gain 변수

set_filter = 해당 축의 위치 PID & FF Gain값들을 지정한다.

get_filter = 해당 축의 위치 PID & FF Gain값들을 읽어들인다.

set_v_filter = 해당 축의 속도 PID & FF Gain값들을 지정한다.

get_v_filter = 해당 축의 속도 PID & FF Gain값들을 읽어들인다.

fset_filter = 해당 축의 위치 PID & FF Gain값들을 지정하고, Boot File에

저장한다.

fset_v_filter= 해당 축의 속도 PID & FF Gain값들을 지정하고, Boot File에

저장한다.

fget_filter = Boot File에서 해당 축의 위치 PID & FF Gain값을 읽어 들인다.

fget_v_filter= Boot File에서 해당 축의 속도 PID & FF Gain값을 읽어 들인다.

#include "mmcdef.h"

int set_filter(int axis, int coeff[GAIN_NUMBER])int get_filter(int axis, int coeff[GAIN_NUMBER])int set_v_filter(int axis, int coeff[GAIN_NUMBER])int get_v_filter(int axis, int coeff[GAIN_NUMBER])int fset_filter(int axis, int coeff[GAIN_NUMBER])int fset_v_filter(int axis, int coeff[GAIN_NUMBER])int fget_filter(int axis, int coeff[GAIN_NUMBER])int fget_v_filter(int axis, int coeff[GAIN_NUMBER])

함 수 명

기 능

사 용 예

set_filter(axis, *coeff)

get_filter(axis, *coeff)

set_v_filter(axis, *coeff)

get_v_filter(axis, *coeff)

fset_filter(axis, *coeff)

fset_v_filter(axis, *coeff)

fget_filter(axis, *coeff)

fget_v_filter(axis, *coeff)

GAIN 변수

Page 246: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

int coeff[GAIN_NUMBER], e=MMC_OK;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_p_integration(0, IN_ALWAYS);

set_v_integration(0, IN_ALWAYS);

get_filter(0, coeff); /* 0축의 위치게인값들을 읽음 */

while(!e)

coeff[GA_P]=100; /* 위치 비례게인값을 100으로 설정 */

set_filter(0, coeff); /* 위치 게인값 설정 */

move(0, 10000.0, 7000.0, 15);

coeff[GA_P]=150; /* 위치 비례게인값을 150으로 설정 */

set_filter(0, coeff); /* 위치 게인값 설정 */

e=move(0, 0.0, 7000.0, 15);

return e;

예 제

Gain값들은 제어의 전부라 할 정도로 중요한 요소이다. Gain값이 약할경우 제

어가 제대로 이루어지지 않으며, 클경우에는 Motor 혹은 시스템이 진동하거나

심한경우 부서지는 현상이 발생한다. 따라서 Gain값의 설정은 가능한한 SETUP

화면을 통해 그래프로 관찰하면서 작업하는것이 안전하다.

주 의

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

Servo 모타와 Closed_Loop Stepper는 동일한 PID 제어 알고리즘으로 제어된다.

coeff인수는 int 배열형태이며, 배열은 구조는 아래와 같다.

GA_P 0 비례게인 (Proportional Gain)

GA_I 1 적분게인 (Integral Gain)

GA_D 2 미분게인 (Derivative Gain)

GA_F 3 Feedforward 게인

GA_ILIMIT 4 오차합의 limit (Integration summing limit)

GAIN_NUMBER 5 게인의 갯수

NOTE

GAIN 변수

Error Return값

Page 247: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-35. 적분제어 모드

set_p_integration(axis, mode)

get_p_integration(axis, *mode)

set_v_integration(axis, mode)

get_v_integration(axis, *mode)

fset_p_integration(axis, mode)

fset_v_integration(axis, mode)

set_p_integration = 해당축의 위치 Loop 적분제어시 적분제어 모드를 지정한다.

get_p_integration = 해당축의 위치 Loop 적분제어시 적용중인 적분제어 모드를

읽는다.

set_v_integration = 해당축의 속도 Loop 적분제어시 적분제어 모드를 지정한다.

get_v_integration = 해당축의 속도 Loop 적분제어시 적용중인 적분제어 모드를

읽는다.

fset_p_integration = 해당축의 위치 Loop 적분제어시 적분제어 모드를 지정하고,

Boot File에 저장한다.

fset_v_integration = 해당축의 속도 Loop 적분제어시 적분제어 모드를 지정하고,

Boot File에 저장한다.

#include "mmcdef.h"

int set_p_integration(int axis, int mode)

int get_p_integration(int axis, int *mode)

int set_v_integration(int axis, int mode)

int set_v_integration(int axis, int *mode)

int fset_p_integration(int axis, int mode)

int fset_v_integration(int axis, int mode)

Integration 모드는 적분제어가 항상 적용되는 모드(IN_ALWAYS)와 정지시에만

적용되는 모드(IN_STANDING) 두가지의 모드가 있다. Default로 지정된 적분제

어 모드는 IN_ALWAYS 모드이다.

함 수 명

기 능

사 용 예

NOTE

적분제어 모드

Page 248: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

#include "mmcdef.h"

#include <stdio.h>

int main()

int coeff[GAIN_NUMBER], e=MMC_OK;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_p_integration(0, IN_ALWAYS);

set_v_integration(0, IN_ALWAYS);

get_filter(0, coeff); /* 0축의 위치게인값들을 읽음 */

while(!e)

coeff[GA_P]=100; /* 위치 비례게인값을 100으로 설정 */

set_filter(0, coeff); /* 위치 게인값 설정 */

move(0, 10000.0, 7000.0, 15);

coeff[GA_P]=150; /* 위치 비례게인값을 150으로 설정 */

set_filter(0, coeff); /* 위치 게인값 설정 */

e=move(0, 0.0, 7000.0, 15);

return e;

예 제

Error Return값

적분제어 모드

Page 249: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-36. SOFTWARE LIMITS

set_positive_sw_limit(axis,pos,action)

get_positive_sw_limit(axis,*pos,*action)

set_negative_sw_limit(axis,pos,action)

get_negative_sw_limit(axis,*pos,*action)

fset_positive_sw_limit(axis,pos,action)

fget_positive_sw_limit(axis,*pos,*action)

fset_negative_sw_limit(axis,pos,action)

fget_negative_sw_limit(axis,*pos,*action)

함 수 명

기 능

사 용 예

set_positive_sw_limit = +방향으로 Motor가 이동할 수 있는 Limit 위치값과

그 위치값에 도달했을때 적용될 EVENT를 지정한다.

get_positive_sw_limit = 지정된 축의 +방향 Limit 위치값과 그 위치값에

도달 했을때 적용될 EVENT를 읽어들인다.

set_negative_sw_limit = -방향으로 Motor가 이동할 수 있는 Limit 위치값과

그 위치값에 도달했을때 적용될 EVENT를 지정한다.

get_negative_sw_limit = 지정된 축의 -방향 Limit 위치값과 그 위치값에

도달 했을때 적용될 EVENT를 읽어들인다.

fset_positive_sw_limit = +방향으로 Motor가 이동할 수 있는 Limit 위치값과

적용될 EVENT를 지정하고, Boot File에 저장한다.

fget_positive_sw_limit = Boot File에서 축의 +방향 Limit 위치값과 그 위치

값에 도달했을때 적용될 EVENT를 읽어들인다.

fset_negative_sw_limit = -방향으로 Motor가 이동할 수 있는 Limit 위치값과

적용될 EVENT를 지정하고, Boot File에 저장한다.

fget_negative_sw_limit = Boot File에서 축의 -방향 Limit 위치값과 그 위치

값에 도달했을때 적용될 EVENT를 읽어들인다.

#include "mmcdef.h"

int set_positive_sw_limit(int axis, double pos, int action);

int get_positive_sw_limit(int axis, double *pos, int *action);

int set_negative_sw_limit(int axis, double pos, int action);

int get_negative_sw_limit(int axis, double *pos, int *action);

int fset_positive_sw_limit(int axis, double pos, int action);

int fget_positive_sw_limit(int axis, double *pos, int *action);

int fset_negative_sw_limit(int axis, double pos, int action);

int fget_negative_sw_limit(int axis, double *pos, int *action);

SOFTWARE LIMITS

Page 250: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

int axis;

if(mmc_initx(1,&addr)) return mmc_error;

for(axis=0; axis<mmc_axes(0); axis++)

set_positive_sw_limit(axis,100000.0, STOP_EVENT);

set_negative_sw_limit(axis,-100000.0, STOP_EVENT);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

주 의Software Limit 위치값은 기구적인 Limit값 보다는 작아야 한다. 기구적인

limit보다 클경우 시스템에 손상을 입힐 우려가 있다. Action에는 NO_EVENT,

STOP_EVENT, E_STOP_EVENT, ABORT_EVENT가 있다.

Limit로 설정할수 있는 최대값은 아래와 같다.

+방향 Limit === +2147483647 counts (MMC_POS_SW_LIMIT)

-방향 Limit === -2147483647 counts (MMC_NEG_SW_LIMIT)

SOFTWARE LIMITS

Error Return값

Page 251: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-37. SOFTWARE 속도 및 가,감속 LIMITS

set_accel_limit(axis,limit)

get_accel_limit(axis,*limit)

set_vel_limit(axis,limit)

get_vel_limit(axis,*limit)

set_accel_limit = 가,감속 구간값의 Limit를 지정한다.

get_accel_limit = 가,감속 구간의 Limit를 읽어들인다.

set_vel_limit = 축의 이동 최고속도를 지정한다.

get_vel_limit = 축의 이동 최고속도를 읽어들인다.

#include "mmcdef.h"

int set_accel_limit(int axis, int limit);

int get_accel_limit(int axis, int *limit);

int set_vel_limit(int axis, double limit);

int get_vel_limit(int axis, double *limit);

이동 최고속도는 모타 및 Drive의 사양에 따라 달라지므로 사양에 맞는 속도값

을 지정해야 한다. 설정할수있는 속도 Limit값은 5000000 counts이며, 가,감속

구간의 최대값은 25000이다. 이 이상의 값을 지정시 Error가 발생한다.

각 Limit값은 Host(PC)에서 사용되며 동작명령 함수 사용시 Limt 초과여부를

검사한다.

가,감속구간의 단위는 4msec 이며, 속도의 단위는 counts/sec, steps/sec 이다.

설정된 속도 및 가,감속 Limit값은 Boot Memory에 저장된다.

함 수 명

기 능

사 용 예

NOTE

주 의가,감속 Limit 값은 STOP_EVENT, E_STOP_EVENT 발생시 적용되는 감속비율보다

커야 한다.

SOFTWARE 속도 및 가,감속 LIMITS

Page 252: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_accel_limit(0, 30);

set_vel_limit(0, 100000.0);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

SOFTWARE LIMITS

Error Return값

Page 253: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-38. 위치 및 ERROR LIMIT

set_in_position(axis,in_pos)

get_in_position(axis,*in_pos)

set_error_limit(axis,limit,action)

get_error_limit(axis,*limit,*action)

fset_in_position(axis,in_pos)

fget_in_position(axis,*in_pos)

fset_error_limit(axis,limit,action)

fget_error_limit(axis,*limit,*action)

함 수 명

기 능

사 용 예

set_in_position = 축의 위치결정 완료(in_position)값을 지정한다.

get_in_position = 축의 위치결정 완료(in_position)값을 읽어 들인다.

set_error_limit = 축의 동작중 위치오차 Limit값을 지정하고, 위치오차가 Limit

보다 큰값일때 발생시킬 EVENT를 지정한다.

get_error_limit = 축의 위치오차 Limit값과 EVENT를 읽어 들인다.

fset_in_position = 축의 위치결정 완료(in_position)값을 지정하고, Boot File에

저장한다.

fget_in_position = Boot File에서 축의 위치결정 완료(in_position)값을 읽어

들인다.

fset_error_limit = 축의 동작중 위치오차 Limit값과, 위치오차가 Limit 보다

큰값일때 발생시킬 EVENT를 지정하고, Boot File에 저장한다.

fget_error_limit = Boot File에서 축의 위치오차 Limit값과 EVENT를 읽는다.

#include "mmcdef.h"

int set_in_position(int axis, double in_pos);

int get_in_position(int axis, double *in_pos);

int set_error_limit(int axis, double limit, int action);

int get_error_limit(int axis, double *limit, int *action);

int fset_in_position(int axis, double in_pos);

int fget_in_position(int axis, double *in_pos);

int fset_error_limit(int axis, double limit, int action);

int fget_error_limit(int axis, double *limit, int *action);

위치 및 ERROR LIMIT

Page 254: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

#include <stdio.h>

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_in_position(0, 5.0); /* in position 범위 = +/- 5 counts */

set_error_limit(0, 1000.0, ABORT_EVENT);

/* error limit = +/- 1000 counts */

start_move(0, 100000.0, 10000.0, 10);

while(!axis_done(0))

printf("In Position:%d\r",in_position(0));

if(axis_source(0) & ST_ERROR_LIMIT)

printf("ERROR limit exceed");

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

set_error_limit, fset_error_limit 함수로 Event를 설정할때는 ABORT_EVENT로

하는것이 좋다. 그 이유는 위치오차 error_limit가 발생한다는 것은 AMP,

Motor, MMC 보드 등이 어떤 문제가 발생되었을 확률이 높기 때문이다.

예 제

주 의

NOTEset_in_position, fset_in_position 함수의 pos인수값은 위치결정 완료값으로

축이 이동후 주어진 명령만큼 이동했는지의 여부를 검사하는데 사용되는 값이다.

정도가 높은 작업을 할경우 위치결정 완료값을 작게 사용하고, 정도 보다도 빠른

작업을 원할시에는 큰값의 위치결정 완료값을 사용하는 것이 유리하다.

set_error_limt, fset_error_limt 함수로서 설정되는 위치오차 Limit값은 축이

이동중에 발생되는 위치오차를 감지하는데 사용된다. Action인수는 위치오차

Limit 발생시 어떤 EVENT 발생시킬것인지를 설정하는 것으로 설정할 수 있는

Event는 NO_EVENT, STOP_EVENT, E_STOP_EVENT,ABORT_EVENT가 있다. Error Limit

로 설정할 수 있는 최대값은 35000 counts이다.

위치 및 ERROR LIMIT

Error Return값

Page 255: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-39. LIMIT SWITCH의 EVENT 구성

set_positive_limit(axis,action)

get_positive_limit(axis,*action)

set_negative_limit(axis,action)

get_negative_limit(axis,*action)

fset_positive_limit(axis,action)

fget_positive_limit(axis,*action)

fset_negative_limit(axis,action)

fget_negative_limit(axis,*action)

함 수 명

기 능

사 용 예

set_positive_limit = +방향 Limit Switch Active시에 동작할 EVENT를 지정한다.

get_positive_limit = +방향 Limit Switch Active시에 동작할 EVENT를 읽는다.

set_negative_limit = -방향 Limit Switch Active시에 동작할 EVENT를 지정한다.

get_negative_limit = -방향 Limit Switch Active시에 동작할 EVENT를 읽는다.

fset_positive_limit = +방향 Limit Switch Active시에 동작할 EVENT를 지정하고,

Boot File에 저장한다.

fget_positive_limit = Boot File에서 +방향 Limit Switch Active시에 동작할

EVENT를 읽어들인다.

fset_negative_limit = -방향 Limit Switch Active시에 동작할 EVENT를 지정하고,

Boot File에 저장한다.

fget_negative_limit = Boot File에서 -방향 Limit Switch Active시에 동작할

EVENT를 읽어들인다.

#include "mmcdef.h"

int set_positive_limit(int axis, int action);

int get_positive_limit(int axis, int *action);

int set_negative_limit(int axis, int action);

int get_negative_limit(int axis, int *action);

int fset_positive_limit(int axis, int action);

int fget_positive_limit(int axis, int *action);

int fset_negative_limit(int axis, int action);

int fget_negative_limit(int axis, int *action);

LIMIT SWITCH의 EVENT 구성

Page 256: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_positive_limit(0,ABORT_EVENT);

set_negative_limit(0,ABORT_EVENT);

set_positive_level(0, HIGH);

set_negative_level(0, HIGH);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

NOTEaction인수는 Limit Switch가 Active 상태일때 발생될 Event를 지정하는 것이다.

원점복귀(Homing) 동작중에는 Action을 NO_EVENT로 설정하고 원점복귀 동작을 수행

하는 것이 좋으며, 원점복귀 완료후 정상적으로 동작을 힐때는 ABORT_EVENT로 설정

하는것이 좋다. MMC 보드의 시스템 I/O중 Limit Switch와 관련된 JP8 콘넥타의 I/O

핀사양은 아래와 같다.

PIN 번호 신호 PIN 번호 신호 PIN 번호 신호

1 +5V 16 +5V 31 +5V

2 0축 +limit 17 3축 +limit 32 6축 +limit

3 0축 home 18 3축 home 33 6축 home

4 0축 -limit 19 3축 -limit 34 6축 -limit

5 GND 20 GND 35 GND

6 +5V 21 +5V 36 +5V

7 1축 +limit 22 4축 +limit 37 7축 +limit

8 1축 home 23 4축 home 38 7축 home

9 1축 -limit 24 4축 -limit 39 7축 -limit

10 GND 25 GND 40 GND

11 +5V 26 +5V

12 2축 +limit 27 5축 +limit

13 2축 home 28 5축 home

14 2축 -limit 29 5축 -limit

15 GND 30 GND

LIMIT SWITCH의 EVENT 구성

Error Return값

Page 257: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-40. LIMIT SWITCH의 LEVEL 구성

함 수 명 set_positive_level(axis,level)

get_positive_level(axis,*level)

set_negative_level(axis,level)

get_negative_level(axis,*level)

기 능

사 용 예

set_positive_level = +방향 Limit Switch의 Active상태를 HIGH(1) 또는 LOW(0)로

지정한다.

get_positive_level = +방향 Limit Switch의 Active 상태를 읽는다.

set_negative_level = -방향 Limit Switch의 Active상태를 HIGH(1) 또는 LOW(0)로

지정한다.

get_negative_level = -방향 Limit Switch의 Active 상태를 읽는다.

#include "mmcdef.h"

int set_positive_level(int axis, int level);

int get_positive_level(int axis, int *level);

int set_negative_level(int axis, int level);

int get_negative_level(int axis, int *level);

Limit Switch의 Active 상태는 Sensor의 종류에 따라 다르기때문에 Sensor의 사

양에 따라서 설정이 되어야 한다. 설정된 각 Limit Switch의 Active Level은

Boot Memory에 저장된다. MMC 보드의 시스템 I/O중 Limit Switch와 관련된 JP8

콘넥타의 I/O 핀사양은 아래와 같다.

PIN 번호 신호 PIN 번호 신호 PIN 번호 신호

1 +5V 16 +5V 31 +5V

2 0축 +limit 17 3축 +limit 32 6축 +limit

3 0축 home 18 3축 home 33 6축 home

4 0축 -limit 19 3축 -limit 34 6축 -limit

5 GND 20 GND 35 GND

6 +5V 21 +5V 36 +5V

7 1축 +limit 22 4축 +limit 37 7축 +limit

8 1축 home 23 4축 home 38 7축 home

9 1축 -limit 24 4축 -limit 39 7축 -limit

10 GND 25 GND 40 GND

11 +5V 26 +5V

12 2축 +limit 27 5축 +limit

13 2축 home 28 5축 home

14 2축 -limit 29 5축 -limit

15 GND 30 GND

NOTE

LIMIT SWITCH의 EVENT 구성

Page 258: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_positive_limit(0,ABORT_EVENT);

set_negative_limit(0,ABORT_EVENT);

set_positive_level(0, HIGH);

set_negative_level(0, HIGH);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

LIMIT SWITCH의 EVENT 구성

Error Return값

Page 259: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-41. HOME SENSOR의 구성

set_home(axis,action)

get_home(axis,*action)

fset_home(axis,action)

fget_home(axis,*action)

set_home_level(axis,level)

get_home_level(axis,*level)

set_home = Home Sensor를 만났을때 동작할 EVENT를 지정한다.

get_home = Home Sensor를 만났을때 동작할 EVENT를 읽는다.

fset_home = Home Sensor를 만났을때 동작할 EVENT를 지정하고, Boot File에

EVENT를 저장한다.

fget_home = Boot File에서 Home Sensor를 만났을때 동작할 EVENT를 읽는다.

set_home_level = Home Sensor의 Active Level 상태를 HIGH(1) 또는 LOW(0)로

지정한다.

get_home_level = Home Sensor의 Active Level 상태를 읽는다.

#include "mmcdef.h"

int set_home(int axis, int action);

int get_home(int axis, int *action);

int fset_home(int axis, int action);

int fget_home(int axis, int *action);

int set_home_level(int axis, int level);

int get_home_level(int axis, int *level);

함 수 명

기 능

사 용 예

HOME SENSOR의 구성

Page 260: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

int axis;

if(mmc_initx(1,&addr)) return mmc_error;

set_stop_rate(0,5); /* 감속구간 5 ( 5*10msec = 50msec) */

set_e_stop_rate(0,2); /* 감속구간 2 ( 2*10msec = 20msec) */

set_home(0,STOP_EVENT);

set_home_level(0, TRUE);

set_index_required(0,FALSE);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

PIN 번호 신호 PIN 번호 신호 PIN 번호 신호

1 +5V 16 +5V 31 +5V

2 0축 +limit 17 3축 +limit 32 6축 +limit

3 0축 home 18 3축 home 33 6축 home

4 0축 -limit 19 3축 -limit 34 6축 -limit

5 GND 20 GND 35 GND

6 +5V 21 +5V 36 +5V

7 1축 +limit 22 4축 +limit 37 7축 +limit

8 1축 home 23 4축 home 38 7축 home

9 1축 -limit 24 4축 -limit 39 7축 -limit

10 GND 25 GND 40 GND

11 +5V 26 +5V

12 2축 +limit 27 5축 +limit

13 2축 home 28 5축 home

14 2축 -limit 29 5축 -limit

15 GND 30 GND

Home Switch의 Active 상태는 Sensor의 종류에 따라 다르기때문에 Sensor의 사

양에 따라서 설정이 되어야 한다. 설정된 Home Switch의 Active Level은 Boot

Memory에 저장된다.

MMC 보드의 시스템 I/O중 Limit Switch와 관련된 JP8 콘넥타의 I/O 핀사양은

아래와 같다.

NOTE

HOME SENSOR의 구성

Error Return값

Page 261: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-42. ENCODER INDEX 구성

set_index_required(axis,indexRequired)

get_index_required(axis,*indexRequired)

fset_index_required(axis,indexRequired)

fget_index_required(axis,*indexRequired)

set_index_required = 원점복귀시에 Encoder의 C(원점)상 펄스 이용 여부를 설정한다

.get_index_required = 원점복귀시에 Encoder의 C(원점)상 펄스를 이용하는지 여부를

읽는다.

fset_index_required = 원점복귀시에 Encoder의 C(원점)상 펄스 이용 여부를

설정하고, Boot File에 저장한다.

fget_index_required = Boot File에서 원점복귀시에 Encoder의 C(원점)상 펄스를 이용

하는지 여부를 읽는다.

#include "mmcdef.h"

int set_index_required(int axis, int indexRequired);

int get_index_required(int axis, int *indexRequired);

int fset_index_required(int axis, int indexRequired);

int fget_index_required(int axis, int *indexRequired);

일반적으로 Rotary Encoder의경우 1회전당 한개의 Index Pulse를 가진다. 이

함수들은 원점복귀시에 주로 사용되며 Home Sensor와 Encoder의 Index

Pulse(원점상)을 원점복귀(home)시에 같이 사용함으로서 정확한 Homing 위치를

설정할 수 있다. indexRequired인수값을 TRUE(1)로 설정하면 원점복귀(Home)시

에Home sensor와 Encoder의 index pulse(원점상)을 동시에 검출하여 원점복귀

동작이 이루어지며, FALSE를 사용하면 Home sensor로만 원점복귀 동작이 이루

어진다. indexRequired인수값을 TRUE(1)로 설정하면 MMC보드에서는 Index

Pulse발생시 Interrupt가 발생되어 E_STOP_EVENT를 발생시켜 동작을 멈춤으로

서 Homing시에 정확성을 높여준다.

함 수 명

기 능

사 용 예

주 의

NOTE

원점복귀(home)가 완료되면 indexRequired인수값을 FALSE로하여 Index Pulse가

발생하더라도 MMC보드에서 Interrupt가 발생되지 않도록 해주어야 한다. 계속

TRUE상태를 유지하면 Index Pulse가 발생할때마다 Interrupt가 발생되어

E_STOP_EVENT가 생성되어 동작이 되지 않는다.

본함수는 모타를 회전시키는 이동명령과 같이 사용되어야 한다.

단순히 “set_index_required" 함수는 encoder의 원점펄스를 사용여부만

설정해주는 함수이며 이동과는 관계가 없다..

ENCODER INDEX 구성

Page 262: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_home(0,STOP_EVENT);

set_home_level(0, TRUE);

set_index_required(0,TRUE);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

예 제

ENCODER INDEX 구성

Error Return값

Page 263: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-43. AMP 제어

set_amp_enable(axis,state)

get_amp_enable(axis,*state)

set_amp_enable_level(axis,level)

get_amp_enable_level(axis,*level)

set_amp_enable = AMP Enable/Disable 모드를 지정한다.

get_amp_enable = AMP Enable/Disable 상태를 읽어들인다.

set_amp_enable_level = AMP Enable의 Active Level을 HIGH(1),LOW(0)로

지정한다.

get_amp_enable_level = AMP Enable의 Active Level을 읽어들인다.

#include "mmcdef.h"

int set_amp_enable(int axis, int state);

int get_amp_enable(int axis, int *state);

int set_amp_enable_level(int axis, int level);

int get_amp_enable_level(int axis, int *level);

set_amp_enable 함수는 AMP Enable(state=TRUE), 또는 Disable(state=FALSE)모

드로 설정하는데 사용된다. Enable 모드에서는 ABORT_EVENT를 해제하고 제어기

가 기지정된 제어 모드로 설정되어 PID제어가 실행된다. 그러므로 제어기와 시

스템을 최초 연결시에는 모타단독으로 SETUP 프로그램을 이용하여 Hardward를

충분히 시험한후 시스템에 연결하여 AMP를 Enable모드로 지정하는것이 시스템

의 보호측면과 사용자의 안정성 측면에서도 많은 효과를 얻을수 있다. Disable

모드 또는 controller_idle 함수가 실행되는 상태에서는 Idle 상태로 Analog출

력은 0volt 로 출력되며 PID 제어는 이루어지지 않는다.

set_amp_enable_level함수는 state 인수를 HIGH(1), LOW(0)값을 사용함 으로서

AMP Drive의 Enable Level을 High 또는 Low_Active 상태로 지정할 수 있다.

함 수 명

기 능

사 용 예

NOTE

AMP 제어

Page 264: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable_level(0,HIGH);/* 0축의 amp enable를 high_active로 만듬 */

set_amp_enable(0,FALSE); /* 0축 AMP Disable */

while( !motion_done(0));

set_amp_enable(0,TRUE); /* 0축 AMP Enable */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

예 제

AMP 제어

Error Return값

Page 265: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-44. AMP FAULT 구성

set_amp_fault(axis,action)

get_amp_fault(axis,*action)

fset_amp_fault(axis,action)

fget_amp_fault(axis,*action)

set_amp_fault = AMP Drive에 Fault 발생시 동작할 EVENT를 지정한다.

get_amp_fault = AMP Drive에 Fault 발생시 동작할 EVENT를 읽는다.

fset_amp_fault = AMP Drive에 Fault 발생시 동작할 EVENT를 지정하고, Boot

File에 저장한다.

fget_amp_fault = Boot File에서 AMP Fault 발생시 동작할 EVENT를 읽는다.

#include "mmcdef.h"

int set_amp_fault(int axis, int action);

int get_amp_fault(int axis, int *action);

int fset_amp_fault(int axis, int action);

int fget_amp_fault(int axis, int *action);

set_amp_fault에서 Event설정은 ABORT_EVENT를 설정하는것이 좋다. 그이유는

AMP에 Fault가 발생하면 이상동작을 일으킬 가능성이 높기때문이다. 또한 대부

분의 AMP Drive는 Fault발생시 AMP가 Disable상태가 되기때문이다.

set_amp_fault, fset_amp_fault 함수의 action인수는 Fault 발생시 적용될

Event를 설정하는데 사용되며 Event에는 NO_EVENT, STOP_EVENT, E_STOP_EVENT,

ABORT_EVENT가 있다.

get_amp_fault, fget_amp_fault 함수는 MMC보드와 Boot File에서 AMP Fault시

에 적용되는 Event를 읽어온다.

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

fset_amp_fault(0,ABORT_EVENT);

set_amp_fault_level(0, TRUE);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

함 수 명

기 능

사 용 예

주 의

NOTE

예 제

Error Return값

AMP FAULT 구성

Page 266: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Fault Active Level은 Motor Driver의 사양에 따라서 설정이 되어야 한다.

1-45. AMP FAULT LEVEL 구성

set_amp_fault_level(axis,level)

get_amp_fault_level(axis,*level)

set_amp_fault_level = AMP Drive의 Fault Level를 HIGH(1) 또는 LOW(0)로

지정한다.

get_amp_fault_level = AMP Drive의 Fault Active Level를 읽어들인다.

#include "mmcdef.h"

int set_amp_fault_level(int axis, int level);

int get_amp_fault_level(int axis, int *level);

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

fset_amp_fault(0,ABORT_EVENT);

set_amp_fault_level(0, TRUE);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

함 수 명

기 능

사 용 예

NOTE

예 제

AMP FAULT LEVEL 구성

Error Return값

Page 267: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-46. AMP FAULT 제어

amp_fault_reset(axis)

amp_fault_set(axis)

set_amp_reset_level(axis,state)

get_amp_reset_level(axis,*state)

amp_fault_reset = 지정축의 AMP Fault를 Clear 시킨다.

amp_fault_set = 지정축의 AMP Fault Port를 Enable 상태로 만든다.

set_amp_reset_level = AMP Drive의 Reset Level를 HIGH(1) 또는 LOW(0)로

지정한다.

get_amp_fault_level = AMP Driver의 Reset Active Level를 읽어 들인다.

#include "mmcdef.h"

int amp_fault_reset(int axis);

int amp_fault_set(int axis);

int set_amp_reset_level(int axis, int level);

int get_amp_reset_level(int axis, int *level);

amp_fault_reset 함수 실행후에 반드시 amp_fault_set를 해야한다. 그렇지 않

을경우 AMP Drive측에 계속 Reset 신호가 나가기 때문에 실제 AMP Driver에

Fault가 발생하더라도 MMC보드가 인식하지 못하는 상태가 된다.

함 수 명

기 능

사 용 예

주 의

NOTEamp_fault_reset, amp_fault_set 함수는 AMP Driver에 Fault 발생시에 Fault의

원인을 해소한뒤 AMP Drive를 다시 정상동작 시키기 위해 필요한 함수이다. 적

용순서는 amp_fault_reset 함수를 먼저 실행하고, 잠시 후에 amp_fault_set 함

수를 실행해야 한다.

AMP FAULT 제어

Page 268: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

int e;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE);

set_amp_reset_level(0,HIGH) /* 0축의 AMP reset active level = high */

e=move(0, 100000.0, 3000.0, 15);

if(e)

set_amp_enable(0,FALSE);

amp_fault_reset(0);

delay(10);

amp_fault_set(0);

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

예 제

AMP FAULT 제어

Error Return값

Page 269: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-47. I/O INTERRUPT 구성

io_interrupt_enable(bd_num,state)

io_interrupt_on_stop(axis,state)

io_interrupt_on_e_stop(axis,state)

fio_interrupt_enable(bd_num,state)

fio_interrupt_on_stop(axis,state)

fio_interrupt_on_e_stop(axis,state)

함 수 명

io_interrupt_enable = Board별로 I/O Interrupt를 Enable/Disable 시킨다.

io_interrupt_on_stop = I/O Interrupt 발생시 STOP_EVENT를 지정축에 발생시킬지

여부를 TRUE(1),FALSE(0)로 지정한다.

io_interrupt_on_e_stop = I/O Interrupt 발생시 E_STOP_EVENT를 지정축에 발생시

킬지 여부를 TRUE(1),FALSE(0)로 지정한다.

fio_interrupt_enable = Board별로 I/O Interrupt를 Enable/Disable 시키고,

Boot File에 저장한다.

fio_interrupt_on_stop = I/O Interrupt 발생시 STOP_EVENT를 지정축에 발생시킬

지 여부를 지정하고, Boot File에 저장한다.

fio_interrupt_on_e_stop = I/O Interrupt 발생시 E_STOP_EVENT를 지정축에 발생

시킬지 여부를 지정하고, Boot File에 저장한다.

기 능

#include "mmcdef.h"

int io_interrupt_enable(int bd_num, int state);

int io_interrupt_on_stop(int axis, int state);

int io_interrupt_on_e_stop(int axis, int state);

int fio_interrupt_enable(int bd_num, int state);

int fio_interrupt_on_stop(int axis, int state);

int fio_interrupt_on_e_stop(int axis, int state);

사 용 예

I/O Interrupt를 사용하고자 할때는 각보드의 사용자 I/O 입력 bit 0에 Data가 입

력되도록 연결되어야 한다. 따라서 I/O Interrupt 사용하는 보드는 사용자 I/O

입력 Bit 0을 다른용도로 사용하면 안된다.

I/O Interrupt를 발생시킬려면 먼저 io_interrupt_enable함수의 state인수를

TRUE(1)로 하여 Enable상태로 만든다음 io_interrupt_on_stop 함수나

io_interrupt_on_e_stop 함수로서 I/O Interrupt발생시 적용할 Event를 설정한다.

I/O Interrupt를 Disable시킬려면 io_interrupt_enable함수의 state인수를

FALSE(0)로 설정하면된다. Disable상태일 경우 I/O bit 0를 일반 I/O로 사용할수

있다.

NOTE

I/O INTERRUPT 구성

Page 270: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Interrupt Enable 상태에서 STOP_EVENT나 E_STOP_EVENT 사용시 먼저

set_stop_rare, set_e_stop_rate 함수로 먼저 감속비율을 지정한다음 사용해야

한다.

주 의

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

I/O Interrupt 발생조건

MMC보드 booting시 I/O의 초기상태는 입력 및 출력모두 HIGH 상태를 유지한다.

I/O Interrupt는 사용자입력(JP10) Bit 0의 상태가 HIGH에서 LOW로 바뀌는

Falling edge 상태에서 발생한다.

NOTE

Interrupt 발

I/O 입력

Bit0

HIGH

LOW

HIGH

사용자 I/O 입력회로 연결 방법

I/O INTERRUPT 구성

Error Return값

MMC 출력부 User 결선부분

외부SWITCHMMC

TTL출력

입력

COM

GND 24V

(외부전원)

Vcc

10KΩ

TLP120

3.3KΩ

330Ω

Page 271: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

#include "mmcdef.h"

int main()

int e;

long io_val;

double gp;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_stop_rate(0,5); /* 0축의 Stop rate 설정 */

io_interrupt_stop(0,TRUE); /* 0축 STOP_EVENT 설정 */

amp_fault_reset(0); /* 0축 AMP Alarm Reset */

delay(20); /* 실행대기 */

amp_fault_set(0); /* 0축 AMP Alarm Set */

set_amp_enable(0,TRUE); /* 0축 AMP Power ON */

while(1)

io_interrupt_enable(0,TRUE) /* #0보드의 Interrupt Enable */

start_move(0,100000.0, 10000.0, 20);

while(!axis_done(0))

get_position(0,&gp); printf("0AX = %10.2f \r",gp);

io_interrupt_enable(0,FALSE) /*#0보드의 Interrupt Disable */

if(axis_state(0))

clear_status(0);

while(1)

get_io(0,&io_val);

if(io_val & 0x00008000)

start_move(0,100000.0, 1000.0, 5);

while(!axis_done(0))

get_position(0,&gp);

printf("0AX = %10.2f \r",gp);

break;

start_move(0,0.0, 10000.0, 20);

while(!axis_done(0))

get_position(0,&gp); printf("0AX = %10.2f \r",gp);

io_interrupt_enable(0,FALSE) /* #0보드의 Interrupt Disable */

return mmc_error;

예 제

I/O INTERRUPT 구성

Page 272: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-48. I/O INTERRUPT를 이용한 EMERGENCY SWITCH 구성

io_interrupt_pcirq(bd_num,state)

io_interrupt_pcirq_eoi(bd_num)함 수 명

io_interrupt_pcirq = I/O Interrupt 발생시 PC(Host) 쪽으로 Interrupt를 발생

시킬지 여부를 TRUE(1),FALSE(0)로 지정한다.

io_interrupt_pcirq_eoi = PC Interrupt 발생시 end of interrupt 신호를

발생시킨다.

기 능

#include "mmcdef.h"

int io_interrupt_pcirq(int bd_num, int state);

int io_interrupt_pcirq_eoi(int bd_num);

사 용 예

I/O Interrupt를 사용하고자 할때는 각보드의 사용자 I/O 입력 bit 0에 신호가

입력되도록 연결되어야 한다. 따라서 I/O Interrupt 사용하는 보드는 사용자

I/O 입력 Bit 0을 다른용도로 사용하면 안된다.

PC Interrupt를 발생시킬려면 먼저 io_interrupt_enable함수의 state인수를

TRUE(1)로 하여 Enable상태로 만든다음 io_interrupt_pcirq함수의 state인수를

TRUE(1)로 설정해야 한다.

PC Interrupt를 Disable시킬려면 io_interrupt_pcirq함수의 state인수를 FALSE

(0)로 설정하면된다.

PC의 Interrupt 신호는 MMC보드의 JP1의 점퍼핀에 따라 달라진다(ISA 제품의 경

우). 따라서 사용전에 Interrupt 번호를 반드시 확인후 사용해야 한다.

NOTE

IRQ15

IRQ12

IRQ11

IRQ10 IRQ09

IRQ06

IRQ05

IRQ03

[ JP1의 점퍼핀 사양 ]

I/O INTERRUPT를 이용한 EMERGENCY SWITCH 구성

ISA

1

0

1

DIP2(IRQ)

ON

1 2 3 4 5 6 7 8

Page 273: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

프로그램 작성시 PC interrupt 수행루틴에서 맨처음에 io_interrupt_pcirq_eoi

를 반드시 수행해야 한다. PC interrupt가 발생된 상태에서

io_interrupt_pcirq_eoi를 수행하지 않고 MMC에서 제공하는 함수를 이용할경우

MMC_TIMEOUT_ERR(2) 즉 "DPRAM Communication Error"가 발생된다.

주 의

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

I/O Interrupt 발생조건

MMC보드 booting시 I/O의 초기상태는 입력 및 출력모두 HIGH 상태를 유지한다.

I/O Interrupt는 사용자입력(JP10) Bit 0의 상태가 HIGH에서 LOW로 바뀌는

Falling edge 상태에서 발생한다.

NOTE

Interrupt 발

I/O 입력

Bit0

HIGH

LOW

HIGH

사용자 I/O 입력회로 연결 방법

I/O INTERRUPT를 이용한 EMERGENCY SWITCH 구성

Error Return값

MMC 출력부 User 결선부분

외부SWITCHMMC

TTL출력

입력

COM

GND 24V

(외부전원)

Vcc

10KΩ

TLP120

3.3KΩ

330Ω

Page 274: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

#ifdef __cplusplus

#define __CPPARGS ...

#else

#define __CPPARGS

#endif

#include <dos.h>

#include "mmcdef.h"

void interrupt (*old_irq15_int) (__CPPARGS);

void interrupt far Emergency_Action(__CPPARGS);

#define IRQ15 0x77

INT INT_OCCUR=0;

INT main()

int e;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

old_irq15_int = _dos_getvect(IRQ15);

setvect(IRQ15, Emergency_Action); /* IRQ15번 vector 설정 */

outportb(0xa1, inportb(0xa1)&7F); /* IRQ15 Enable */

io_interrupt_pcirq(0,TRUE); /* #0보드에 PC Interrupt 설정 */

io_interrupt_enable(0,TRUE) /* #0보드의 Interrupt Enable */

while(!INT_OCCUR)

move(0,100000.0, 10000.0, 20);

move(0,0.0, 10000.0, 20);

setvect(IRQ15, old_irq15_int); /* IRQ15번 vector 재설정 */

outportb(0xa1, inportb(0xa1)&FF); /* IRQ15 Disable */

io_interrupt_enable(0,FALSE) /* #0보드의 Interrupt Disable */

return mmc_error;

void interrupt far Emergency_Action(__CPPARGS)

io_interrupt_pcirq_eoi(0); /* 반드시 실행을 해야됨 */

set_amp_enable(0.FALSE); /* 0축의 AMP Power OFF */

set_io(0,0); /* #0보드의 출력신호 초기화 */

outp(0xa0, 0x67); /* IRQ15 EOI */

outp(0x20, 0x20);

INT_OCCUR=1;

예 제

I/O INTERRUPT를 이용한 EMERGENCY SWITCH 구성

Page 275: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-48. 동기제어

set_sync_map_axes(master_ax,slave_ax)

set_sync_control(state)

get_sync_control(*state)

set_sync_gain(coeff)

get_sync_gain(*coeff)

get_sync_position(*pos_master,*pos_slave)

set_sync_map_axes = 동기제어할 Master축과 Slave축을 지정한다.

set_sync_control = 동기제어 여부를 TRUE(1), FALSE(0)로 지정한다.

get_sync_control = 동기제어 적용여부를 읽는다. state값이 TRUE(1)일때 동기

제어가 적용되고 있는 상태이다.

set_sync_gain = 동기제어시 적용할 보상 Gain값을 지정한다.

get_sync_gain = 동기제어시 적용되는 보상 Gain값을 읽는다.

get_sync_position = Master축과 Slave축의 실제위치(Actual Position)를 읽는다.

#include "mmcdef.h"

int set_sync_map_axes(int master_ax, int slave_ax);

int set_sync_control(int state);

int get_sync_control(int *state);

int set_sync_gain(int coeff);

int get_sync_gain(int *coeff);

int get_sync_position(double *pos_master, double *pos_slave);

동기제어란 그림1과 같이 독립된 두개의 축을 하나의 축처럼 제어하는 방식을

말한다. 동기제어는 그림2와 같은 구조를 가진 시스템을 제어할때는 필수적인

제어방법이라 할 수 있다. 그 이유는 X축이 Y1축과 Y2축에 고정이 되어 있기

때문에 Y1,Y2축을 독립적으로 움직이거나, 일반적인 PID제어 방법을 사용하면

Y1,Y2축간에 위치편차로 인해 시스템이 파손되거나 진동 및 소음 문제가 발생

하게 되어 제어가 불가능하게 된다.

따라서 그림2와 같은 시스템 구조에서는 Y1축과 Y2축이 어느정도 평행하게 동

기제어를 할 수 있느냐에 전체 시스템의 성능이 좌우되는 중요한 문제이다.

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6)

함 수 명

기 능

사 용 예

NOTE

동기제어

Error Return값

Page 276: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

주 의set_sync_map_axes함수에서 Master_ax와 Slave_ax는 아래의 조건을 반드시 만

족해야 한다.

즉, Master축을 1축으로 지정하고 Slave축을 0축으로 지정할경우 위의 조건을

만족하지 못하므로 set_sync_map_axes함수에서 Error가 발생한다.

동기제어시에 모든 동작은 Master축을 중심으로 일어나며, Slave축의 동작명령

및 전자기어비등은 무시된다.

set_sync_gain(coeff) 함수로 지정되는 동기제어의 보상 Gain값은 Slave축에

만 적용이 되며 Gain값이 클경우 진동 및 소음이 발생하므로 주의해야 한다.

Amp Driver #1

Amp Driver #2

모타

모타

속도명령

그림 1. 동기제어 방식

V

t

부하

X축 좌,우 이동

Y1,Y2축 상,하 이동

X축

Y1축 Y2축

그림 2. 동기제어 시스템

Master축 < Slave축

동기제어

Page 277: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

INT API axis_all_status(INT ax, pINT istatus, pLONG lstatus, pDOUBLE dstatus)

지정축의 상태를 한꺼번에 읽어오는 함수입니다.

각 인수에 들어가는 내용은 다음과 같습니다.

istatus[0] = axis_source 함수값

istatus[1] = in_sequence 함수값

istatus[2] = get_com_velocity 함수값

istatus[3] = get_act_velocity 함수값

istatus[4] = motion_done 함수값

istatus[5] = in_position 함수값

istatus[6] = axis_done 함수값

lstatus[0] = get_io 함수값

dstatus[0]= get_position 함수값

dstatus[1]= get_command 함수값

dstatus[2]= get_error 함수값

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-49. 지정 축의 전체 상태 읽어 오는 함수.

기 능

함 수 명

지정 축의 전체 상태 읽어 오는 함수

Page 278: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-50. INTERPOLATION 제어

함 수 명 set_interpolation(len,*ax,*delt_s,flag)

frames_interpolation(axis)

기 능

사 용 예

set_interpolation = 사용자가 Motion 관련 S/W를 자체 개발하여 시스템을 동작

시킬수 있도록 지원해주는 기능을 한다.

frames_interpolation = set_interpolation 함수를 사용할때 MMC보드에서 비어

있는 Interpolation Frame의 갯수를 돌려준다.

#include "mmcdef.h"

int set_interpolation(int len, int *ax, long *delt_s, int flag);

int frames_interpolation(axis);

NOTE set_interpolation함수의 기능은 사용자가 Motion과 관련된 S/W를 자체 Coding하

여 시스템을 동작시킬수 있도록 지원해주는 함수이다. 따라서 사용자는 Motion과

관련된 Trajectory 생성, Inverse-kinematics, Kinematics 해석을 통하여 수평다

관절 로봇이나, 수직다관절 로봇을 구동 시킬수 있다.

인수에 대한 사용법

len

len은 제어대상축수를 의미하며 MMC보드의 제어축수와 일치한다.

8축 MMC보드 => len = 8

4축 MMC보드 => len = 4

ax

제어대상 축의 번호를 배열구조로 setting한다.

8축 MMC보드 =>

int ax[8];

for(i=0; i<8; i++) ax[i]=i;

4축 MMC보드 =>

int ax[4];

for(i=0; i<4; i++) ax[i]=i;

INTERPOLATION 제어

Page 279: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

delt_s

delt_s는 매 sampling time (4msec)당 위치증가분 data를 setting한다.

MMC보드는 4msec의 sampling time으로 동작을 하기때문에 위치증가분

data의 전달은 4msec이전에 이루어져야 한다.

flag

flag인수는 속도 Profile의 시작과 끝을 알려주는데 사용된다. flag 인수

값의 사용예는 아래와 같다.

flag = 1 => 동작시작

flag = 2 => 동작 중

flag = 3 => 동작완료

위의 각 인수들을 사다리꼴 속도 Profile 관점에서 보면 아래의 그림 1과 같다.

SAMPLING TIME(4msec)

1 2 2 2 2 2 2 2 2 3

flag 인수값

1 구간면적(delt_s)

시간(t)

속도 (v)

그림 1. 사다리꼴 속도 Profile과 적용 인수값

MMC보드의 역활

set_interpolation함수 사용시 MMC보드에서는 단순히 매 sampling time(10msec)

마다 전달된 위치증가분 data(delt_s)값을 직선보간을 실시하여 사용자가 설정

한 제어방법에 따라 시스템을 제어하는 역활을 수행한다.

NOTE

INTERPOLATION 제어

Page 280: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

set_interpolation함수 사용시 모든 Motion은 개별동작이 아닌 동시출발, 동시완료

즉 동기 Motion이 되어야한다. 예를들어 두개의 축을 서로다른 거리를 이동할경우

움직이는 시간이 제일 긴 축을 기준으로 동작완료 시점을 맞추어야 한다.

frames_interpolation 함수는 실행 대기중인 위치증가분(delt_s) 데이타가 몇개

있는지를 판별하는데 사용된다. MMC보드에서는 위치증가분(delt_s) 데이타를

20개까지 저장할 수있다.

주 의

NOTE

0 0

V

V

v'

V

V

V

1축

1축

1축

2축

2축

2축

위치증가분 data(delt_s)

동작시작 동작완료

동작시작 동작완료

1안

2안

그림 2. 동기동작 방법

MMC보드에서는 위치증가분 data를 20개까지 저장할 수있다. 그 이상의 data를

계속 전달할경우 이전에 전달된 위치증가분 data는 없어지게 된다. 따라서 위치

증가분 data를 set_interpolation함수를 사용하여 MMC보드에 전달하기 전에

MMC보드에 저장되어 있는 위치증가분 data의 갯수를 frames_interpolation 함수

로 check한후에 전달하여야 한다. 이때 frames_interpolation 함수의 실행은

0축을 사용하여야 한다.

INTERPOLATION 제어

Page 281: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제 int loop=1,flag;

int ax[8]=0,1,2,3,4,5,6,7;

long delt_s[8];

while(loop)

if(frames_interpolation(0) > 10)

/* MMC보드에 있는 위치증가분 data의 갯수 확인 */

for(i=0; i<8; i++) /* 8축 실행 for loop */

Make_Delt_s(i); /* 위치증가분 data 계산 */

if(동작시작)

set_interpolation(8,ax,delt_s,1); /* Moving 시작 */

else if(동작완료)

set_interpolation(8,ax,delt_s,3); /* Moving 완료 */

loop=0;

else

set_interpolation(8,ax,delt_s,2); /* Moving 중 */

mmcDelay(3);

위의 예제 프로그램은 사용자가 개발하는 S/W에 참조용으로 이용할 수 있으며,

실제 위의 프로그램을 실행시 동작은 되지않음.

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

INTERPOLATION 제어

Error Return값

Page 282: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-51. CP(SPLINE) 제어

함 수 명 rect_move(ax1,ax2,*pntxy,vel,acc)

spl_move(len,ax1,ax2,ax3,*pntx, *pnty, *pntz,vel,acc)

기 능

사 용 예

rect_move = 주어진 사각형의 가로와 세로 길이를 이용하여 현재위치에서

상대이동을 하면서 CP Motion으로 사각형을 그린다.

spl_move = 현재위치에서 주어진 위치를 경유하면서 CP Motion으로

이동한다.

#include "mmcdef.h"

int rect_move(int ax1, int ax2, double *pntxy, double vel, int acc);

int spl_move(int len, int ax1, int ax2, int ax3, double *pntx,

double *pnty, double *pntz, double vel, int acc);

NOTE "rect_move" 함수와 "spl_move"함수의 차이점은 "rect_move"함수는 사각형을 CP

동작으로 그릴때 이용되며, "spl_move"함수는 사각형 뿐만아니라 주어진 위치를

경유하는 3차원의 어떤 모양의 CP 동작도 구현이 가능하다.

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

"spl_move"함수 사용시 주의사항

1) len인수 즉 위치데이타의 개수는 30개를 넘으면 안된다.

2) len인수의 값과 위치데이타의 개수는 반드시 일치하여야 한다.

주 의

CP(SPLINE) 제어

Error Return값

Page 283: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제 [예제1] "spl_move" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;double pnt0=50.0;

double pntx[4]=60.0,60.0,50.0,50.0;

double pnty[4]=50.0,55.0,55.0,50.0;

double pntz[4]=0.0,0.0,0.0,0.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0); /* 해당축의 전자기어비 설정*/

for(i=0; i<5; i++)

start_move(0, pnt0, 10000, 15);

start_move(1, 50.0, 10000, 15);

while(!axis_done(0) || !axis_done(1));

spl_move(4,0,1,2,pntx,pnty,pntz,1000.0,3);

/* 가로:10mm,세로:10mm의 사각형을*/

/* 연속동작으로 수행하면서 그린다. */

while(!axis_done(0) || !axis_done(1) || !axis_done(2));

pnt0 += 15.0;

pntx[0] += 15.0;

pntx[1] += 15.0;

pntx[2] += 15.0;

pntx[3] += 15.0;

return mmc_error;

CP(SPLINE) 제어

Page 284: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제 [예제2] "rect_move" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;double pnt0=50.0;

double rect_xy[2]=10.0,5.0,

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE) /* 0축의 AMP ON */

set_amp_enable(1,TRUE) /* 1축의 AMP ON */

set_position(0,0.0); /* 0축의 위치값 setting */

set_position(1,0.0); /* 1축의 위치값 setting */

set_electric_gear(0,2048/20.0); /* 0축의 전자기어비 설정 */

set_electric_gear(1,2048/20.0); /* 0축의 전자기어비 설정 */

map_axes(2,axes); /* CP Motion 적용 축 설정 */

set_move_speed(1000.0); /* CP Motion 속도설정 */

set_move_accel(10); /* CP Motion 가,감속 구간설정 */

for(i=0; i<5; i++)

start_move(0, pnt0, 10000, 15);

start_move(1, 50.0, 10000, 15);

while(!axis_done(0) || !axis_done(1));

rect_move(0,1,rect_xy,1000.0,10);

/* 가로:10mm,세로:5mm의 사각형을*/

/* 연속동작으로 수행하면서 그린다. */

while(!axis_done(0) || !axis_done(1));

pnt0 += 15.0;

return mmc_error;

10mm

5mm이동방향

[ 예제1,2에 사용된 사각형 구조 ]

5mm 5mm 5mm 5mm출발좌표

(50.0,50.0)

[ 예제 1,2의 결과 ]

X

Y

CP(SPLINE) 제어

Page 285: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-52. 자동 가,감속 CP제어

spl_line_move2(*pntxy,vel,acc);

spl_line_move3(*pntxyz,vel,acc);

spl_arc_move2(xc,yc,*pntxy,vel,acc,dir);

spl_arc_move3(xc,yc,*pntxyz,vel,acc,dir);

함 수 명

spl_line_move2 = 현재위치에서 주어진 2차원 평면상의 좌표점까지 자동가,감속

하면서 직선CP Motion으로 이동한다.

spl_line_move3 = 현재위치에서 주어진 3차원 공간상의 좌표점까지 자동가,감속

하면서 직선CP Motion으로 이동한다.

spl_arc_move2 = 현재위치에서 주어진 2차원 평면상의 좌표점까지 자동가,감속

하면서 원호CP Motion으로 이동한다.

spl_arc_move3 = 현재위치에서 주어진 3차원 공간상의 좌표점까지 자동가,감속

하면서 원호CP Motion으로 이동한다.

기 능

#include "mmcdef.h"

int spl_line_move2(double *pntxy, double vel, int acc)

int spl_line_move3(double *pntxyz, double vel, int acc)

int spl_arc_move2(double x_center, double y_center, double *pntxy,

double vel, int acc, int dir)

int spl_arc_move3(double x_center, double y_center, double *pntxyz,

double vel, int acc, int dir)

사 용 예

위의 4가지 함수는 CAD 도면에 의한 공작물의 가공이나 Dispenser를 이용한

Bonding 작업,도포작업등에 유용하게 사용할수 있는 함수이다.

spl_line_move2,spl_line_move3함수의 속도나,가감속은 set_move_speed함수 및

set_move_accel 함수에 의해 정해진다.

NOTE

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

함수 사용시 주의사항

▷ 가,감속 구간수는 1이상이고 30이하의 범위에 있어야 한다.

▷ 위의 함수사이에 다른 함수들이 사용되면 CP Motion은 이루어지지

않는다.

▷ spl_arc_move2,spl_arc_move3 함수에서 vel 및 acc 인수값에 0(zero)을

주면 set_move_speed와 set_move_accel에서 지정한 값이 적용된다.

▷ spl_arc_move2,spl_arc_move3 함수에서 dir의 인수값에 따라서 원호의 회전

방향이 달라진다. (CIR_CCW,CIR_CW는 기정의 되어있다)

CIR_CCW(반시계방향) = 1, CIR_CW(시계방향) = 0

주 의

자동 가,감속 CP제어

Error Return값

Page 286: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

예 제 [예제1의 작업대상]

출발좌표(50.0,55.0)

[ 예제 1의 결과 ]

X

Y

작업물의 측면도

작업물의 평면도

10mm

R

10mm5mm

10mm

5mm 5mm 5mm 5mm

[예제2의 작업대상]

125mm

R(20mm)

작업물의 평면도

[반시계방향의 원호보간]

150mm

R(20mm)

125mm

150mm작업물의 평면도

[시계방향의 원호보간]

PNT1 PNT2

PNT3

PNT4

PNT5PNT6

PNT7

PNT8

PNT9

[예제3의 작업대상]

자동 가,감속 CP제어

Page 287: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

예 제 [예제1] "spl_line_move3" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i, axes[3]=0,1,2;

long addr = 0xD8000000;double pnt0=50.0;

double pnt1[3]=50.0,50.0,0.0;

double pnt2[3]=60.0,50.0,5.0;

double pnt3[3]=60.0,60.0,5.0;

double pnt4[3]=50.0,60.0,0.0;

double pnt5[3]=50.0,55.0,0.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0);/* 해당축의 전자기어비 설정 */

map_axes(3,axes); /* CP Motion 적용 축 설정 */

set_move_speed(1000.0); /* CP Motion 속도설정 */

set_move_accel(3); /* CP Motion 가,감속 구간설정 */

start_move(2,-20.0, 10000, 15);/* Z축 UP */

while(!axis_done(2));

for(i=0; i<10; i++)

start_move(0, pnt0, 10000, 15);

start_move(1, 55.0, 10000, 15);

while(!axis_done(0) || !axis_done(1));

start_move(2, 0.0, 10000, 15); /* Z축 Down */

while(!axis_done(2));

spl_line_move3(pnt1, 1000.0, 3); /* CP Motion 시작 */

spl_line_move3(pnt2, 5000.0, 3);

spl_line_move3(pnt3, 9000.0, 5);

spl_line_move3(pnt4, 5000.0, 3);

spl_line_move3(pnt5, 5000.0, 3); /* CP Motion 끝 */

while(!all_done()); /* 가로:10mm,세로:10mm,높이:5mm의 */

/* 3차원의 사각형을 연속동작으로 */

/* 자동 가,감속하면서 그린다. */

start_move(2,-20.0, 10000, 15); /* Z축 UP */

while(!axis_done(2));

pnt0 += 15.0;

pnt1[0] += 15.0;

pnt2[1] += 15.0;

pnt3[2] += 15.0;

pnt4[3] += 15.0;

pnt5[4] += 15.0;

return mmc_error;

자동 가,감속 CP제어

Page 288: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

[예제2] "spl_line_move2,spl_arc_move2" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i, axes[2]=0,1;

long addr = 0xD8000000;double pnt1[2]=165.0,100.0;

double pnt2[2]=210.0,100.0;

double pnt3[2]=230.0,120.0;

double pnt4[2]=230.0,230.0;

double pnt5[2]=210.0,250.0;

double pnt6[2]=125.0,250.0;

double pnt7[2]=105.0,230.0;

double pnt8[2]=105.0,120.0;

double pnt9[2]=125.0,100.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0);/* 해당축의 전자기어비 설정 */

map_axes(2,axes); /* CP Motion 적용 축 설정 */

set_move_speed(1000.0); /* CP Motion 속도설정 */

set_move_accel(3); /* CP Motion 가,감속 구간설정 */

while(!mmc_error)

move_2(pnt1[0], pnt1[1]);

while(!axis_done(0) || !axis_done(1));

spl_line_move2(pnt2, 1000.0, 3) /* CP Motion 시작 */

spl_arc_move2(230.0,100.0,pnt3,0,0,CIR_CCW); /*반시계방향 회전 원호보간*/

spl_line_move2(pnt4, 1000.0, 3);

spl_arc_move2(230.0,250.0,pnt5,0,0,CIR_CCW);

spl_line_move2(pnt6, 2000.0, 4);

spl_arc_move2(105.0,250.0,pnt7,0,0,CIR_CCW);

spl_line_move2(pnt8, 1000.0, 3);

spl_arc_move2(105.0,100.0,pnt9,0,0,CIR_CCW);

spl_line_move2(pnt1, 1500.0, 3); /* CP Motion 끝 */

while(!all_done());

return mmc_error;

예 제

자동 가,감속 CP제어

Page 289: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

[예제3] "spl_line_move2,spl_arc_move2" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i, axes[2]=0,1;

long addr = 0xD8000000;double pnt1[2]=165.0,100.0;

double pnt2[2]=210.0,100.0;

double pnt3[2]=230.0,120.0;

double pnt4[2]=230.0,230.0;

double pnt5[2]=210.0,250.0;

double pnt6[2]=125.0,250.0;

double pnt7[2]=105.0,230.0;

double pnt8[2]=105.0,120.0;

double pnt9[2]=125.0,100.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0); /* 해당축의 전자기어비 설정 */

map_axes(2,axes); /* CP Motion 적용 축 설정 */

set_move_speed(1000.0); /* CP Motion 속도설정 */

set_move_accel(3); /* CP Motion 가,감속 구간설정 */

while(!mmc_error)

move_2(pnt1[0], pnt1[1]);

while(!axis_done(0) || !axis_done(1));

spl_line_move2(pnt2, 600.0, 3); /* CP Motion 시작 */

spl_arc_move2(230.0,100.0,pnt3,0,0,CIR_CW);

/* 시계방향회전 원호보간*/

spl_line_move2(pnt4, 1000.0, 3);

spl_arc_move2(230.0,250.0,pnt5,0,0,CIR_CW);

spl_line_move2(pnt6, 1000.0, 3);

spl_arc_move2(105.0,250.0,pnt7,0,0,CIR_CW);

spl_line_move2(pnt8, 700.0, 3);

spl_arc_move2(105.0,100.0,pnt9,0,0,CIR_CW);

spl_line_move2(pnt1, 850.0, 3); /* CP Motion 끝*/

while(!all_done());

return mmc_error;

예 제

자동 가,감속 CP제어

Page 290: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-53. 속도 모니터

함 수 명 get_com_velocity(axis)

get_act_velocity(axis)

기 능

사 용 예

get_com_velocity = 해당축의 동작중 속도명령값을 PULSE값으로 돌려준다.

get_act_velocity = 해당축의 동작중 실제속도값을 PULSE값으로 돌려준다.

#include "mmcdef.h"

int get_com_velocity(int axis);

int get_act_velocity(int axis);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

예 제 #include "mmcdef.h"

int main()

long addr = 0xD8000000;

int vel_com,vel_act;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE) /* 0축의 AMP ON */

set_amp_enable(1,TRUE) /* 1축의 AMP ON */

set_position(0,0.0); /* 0축의 위치값 setting */

set_position(1,0.0); /* 1축의 위치값 setting */

start_move(0, 10000.0, 10000, 15);

start_move(1, 5000.0, 10000, 15);

while(!axis_done(0) || !axis_done(1))

vel_com=get_com_velocity(0);

vel_act=get_act_velocity(0);

printf("0AX Velocity Difference[pulse/sec] = %d\n",(vel_com-vel_act));

return mmc_error;

속도 모니터

Error Return값

Page 291: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

1-54. IN-POSITION 신호

함 수 명 set_inposition_level(axis,level)

fset_inposition_level(axis,level)

get_inposition_level(axis,*level)

fget_inposition_level(axis,*level)

기 능

사 용 예

set_inposition_level = 지정축의 in-position 신호 level를 설정한다.

fset_inposition_level = 지정축의 in-position 신호 level를 설정하고,

Boot File에 저장한다.

get_inposition_level = 지정축의 in-position 신호 level를 읽는다.

fget_inposition_level = Boot File에서 지정축의 in-position 신호 level를

읽는다.

#include "mmcdef.h"

int set_inposition_level(int axis, int level);

int fset_inposition_level(int axis, int level);

int get_inposition_level(int axis, int *level);

int fget_inposition_level(int axis, int *level);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

예 제 #include "mmcdef.h"

int main()

long addr = 0xD8000000;

int vel_com,vel_act;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE) /* 0축의 AMP ON */

set_amp_enable(1,TRUE) /* 1축의 AMP ON */

set_inposition_level(0,LOW); /* 0축의 in_position level LOW로 설정 */

set_inposition_level(1,LOW); /* 1축의 in_position level LOW로 설정 */

set_position(0,0.0); /* 0축의 위치값 setting */

set_position(1,0.0); /* 1축의 위치값 setting */

start_move(0, 10000.0, 10000, 15);

start_move(1, 5000.0, 10000, 15);

while(!axis_done(0) || !axis_done(1))

vel_com=get_com_velocity(0);

vel_act=get_act_velocity(0);

printf("0AX Velocity Difference[pulse/sec] = %d\n",(vel_com-vel_act));

return mmc_error;

IN-POSITION 신호

Error Return값

Page 292: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

1-55. LATCH

함 수 명 arm_latch(bdNum, state)

get_latched_position(axis,*pos)

latch_status(bdNum)

latch(bdNum)

기 능

사 용 예

arm_latch = 해당보드의 latch 상태(En/Disable)를 지정하고, latch_status를

False로 만든다.

arm_latch 함수사용전 반드시 io_interrupt를 enable로 해야한다

get_latched_position = 지정축의 latch된 position을 돌려준다.

latch_status = Position latch 여부를 True/False로 돌려준다.

latch = 소프트웨어적으로 position을 latch 한다.

#include "mmcdef.h"

int arm_latch(int bdNum, int state);

int get_latched_position(int axis, double *pos);

int latch_status(int bdNum);

int latch(int bdNum);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

long addr = 0xD8000000;

double pos;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_position(0,0.0); /* 0축의 위치값 setting */

clear_status(0); /* clear event status */

frames_clear(0); /* 명령어 buffer clear */

set_amp_enable(0,TRUE); /* 0축의 AMP ON */

io_interrupt_enable(0,TRUE); /* #0 보드의 io 인터럽트 enable */

v_move(0,1000.0,10);

arm_latch(0,TRUE); /* clear latch_status */

while(!kbhit())

while(!latch_status(0));

get_latched_position(0,&pos);

arm_latch(0,TRUE); /* clear latch_status */

printf("%12.0lf\r",pos);

io_interrupt_enable(0,FALSE);/* #0 보드의 io 인터럽트 disable */

v_move_stop(0); /* 0축의 Velocity Move Stop */

return mmc_error;

예 제

LATCH

Error Return값

Page 293: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

I/O Interrupt 발생조건

MMC보드 booting시 I/O의 초기상태는 입력 및 출력모두 HIGH 상태를 유지한다.

I/O Interrupt는 사용자입력(JP10) Bit 0의 상태가 HIGH에서 LOW로 바뀌는

Falling edge 상태에서 발생한다.

NOTE

Interrupt 발생

I/O 입력 Bit0

HIGH

LOW

HIGH

사용자 I/O 입력회로 연결 방법

LATCH

MMC 출력부 User 결선부분

외부SWITCHMMC

TTL출력

입력

COM

GND 24V

(외부전원)

Vcc

10KΩ

TLP120

3.3KΩ

330Ω

Page 294: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

controller_idle = 지정축의 PID제어를 disable 상태로 만들고, analog 출력

전압은 0 volt로 출력한다.

controller_run = 지정축의 PID제어를 실시한다.

#include "mmcdef.h"

int main()

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,FALSE);

controller_idle(0) /* Disable PID Control */

set_dac_output(0,1024); /* 0축 +5V analog 전압출력 */

controller_run(0); /* Enable PID Control */

set_amp_enable(0,TRUE);

return mmc_error;

1-56. RUN/IDLE

함 수 명 controller_idle(axis)

controller_run(axis)

기 능

사 용 예 #include "mmcdef.h"

int controller_idle(int axis);

int controller_run(int axis);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

예 제

set_dac_output 즉 analog 전압을 출력하는 함수 사용시 반드시 controller_idle

함수를 먼저 사용해야 한다.

controller_idle를 사용하시 않은 상태에서는 set_dac_output 함수가 동작하지

않는다.

일반적인 상태의 속도형 제어 상태에서는 MMC에서 PID 제어를 통한 속도 지령이

Servo Drive로 출력이 되게 되어 있는데 이 때는 set_dac_output 함수의 목적인

일정한 지령의 출력은 이루어 질 수가 없다.

주 의

RUN/IDLE

Error Return값

Page 295: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

따라서 set_dac_output 함수 전 controller_idle 함수의 사용이 반드시 선결되어야

한다.

controller_run 함수를 실행하면 set_dac_output 함수는 무시되고, 정상적인 PID

제어로 돌아간다.

Page 296: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 108

1-57. MULTI 자동 가,감속 CP제어

set_spl_auto_off(bd_num, mode);

spl_line_move2ax(ax1,ax2,*pntxy,vel,acc);

spl_line_move3ax(ax1,ax2,ax3,*pntxyz,vel,acc);

spl_arc_move2ax(ax1,ax2,xc,yc,*pntxy,vel,acc,dir);

spl_arc_move3ax(ax1,ax2,ax3,xc,yc,*pntxyz,vel,acc,dir);

spl_line_movenax(INT len, pINT ax, pDOUBLE pnt, double vel,INT acc)

spl_arc_movenax(INT len, pINT ax, double x_center, double

y_center, DOUBLE pnt, double vel, INT acc, INT cdir)

함 수 명

set_spl_auto_off = 자동 가,감속 기능을 사용할지 여부를 설정한다.

spl_line_move2ax = 지정된 2축이 현재위치에서 주어진 2차원 평면상의 좌표점까지

자동 가,감속하면서 직선CP Motion으로 이동한다.

spl_line_move3ax = 지정된 3축이 현재위치에서 주어진 3차원 공간상의 좌표점까지

자동 가,감속하면서 직선CP Motion으로 이동한다.

spl_arc_move2ax = 지정된 2축이 현재위치에서 주어진 2차원 평면상의 좌표점까지

자동 가,감속하면서 원호CP Motion으로 이동한다.

spl_arc_move3ax = 지정된 3축이 현재위치에서 주어진 3차원 공간상의 좌표점까지

자동 가,감속하면서 원호CP Motion으로 이동한다.

spl_line_movenax,spl_arc_movenax = 다축 제어가 가능한 함수.

기 능

#include "mmcdef.h"

INT set_spl_auto_off(INT bd_num, INT mode);

INT spl_line_move2ax(INT ax1, INT ax2, double *pntxy, double vel, INT acc)

INT spl_line_move3ax(INT ax1, INT ax2, INT ax3, double *pntxyz, double vel,

INT acc)

INT spl_arc_move2ax(INT ax1, INT ax2, double x_center, double y_center,

double *pntxy, double vel, INT acc, INT dir)

INT spl_arc_move3ax(INT ax1,INT ax2,INT ax3,double x_center,double y_center,

double *pntxyz, double vel, INT acc, INT dir)

사 용 예

위의 4가지 함수는 CAD 도면에 의한 공작물의 가공이나 Dispenser를 이용한

Bonding 작업,도포작업등에 유용하게 사용할수 있는 함수이다.

spl_line_move2,spl_line_move3,spl_arc_move2,spl_arc_move3함수는 MMC보드를 한 장

만 장착 후 사용가능하나, spl_line_move2ax,spl_line_move3ax,

spl_arc_move2ax, spl_arc_move3ax 함수는 두 장 이상의 MMC보드를 장착한 후에도

사용 할 수 있다는 점이다.

spl_arc_move2ax,spl_arc_move3ax 함수에서 "vel" 인수와 "acc" 인수의 값을

0(zero)로 해주면 set_move_speed,set_move_accel에서 설정한 값으로 움직이거나,

spl_line_move2ax,spl_line_move3ax 함수에서 사용된 속도 및 가,감속 구간으로

동작한다. 따라서, 디스펜서 장비에서 디스펜서 되는 모양이 line과 arc의 조합으로

이루어진경우 "vel" 인수와 "acc" 인수값을 0(zero)으로 설정하면 동일한 속도를

움직이게 된다.

NOTE

MULTI 자동 가,감속 CP제어

Page 297: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 109

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)Error Return값

함수 사용시 주의사항

▷ 가,감속 구간수는 1이상이고 30이하의 범위에 있어야 한다.

▷ 위의 함수사이에 다른 Motion 함수들이 사용되면 CP Motion은 이루어지지

않는다.

▷ spl_arc_move2ax,spl_arc_move3ax 함수에서 vel 및 acc 인수값에

0(zero)을 주면 set_move_speed와 set_move_accel에서 지정한 값이 적용되거나,

spl_line_move2ax, spl_line_move3ax에서 사용된 속도 및 가,감속구간이

적용된다.

▷ spl_arc_move2ax,spl_arc_move3ax 함수에서 dir의 인수값에 따라서

원호의 회전방향이 달라진다. (CIR_CCW,CIR_CW는 기정의 되어있다)

CIR_CCW(반시계방향) = 1, CIR_CW(시계방향) = 0

▷ 본 함수는 두장이상의 MMC보드를 장착하야만 정상동작을 수행한다.

▷ 자동 가,감속 모드를 사용하지 않을경우[set_auto_spl_off함수에서 (mode=1)

로 설정한경우] 4각형을 그릴때 4개의 꼭지점에서 직각으로 이동하며,

자동 가,감속 모드를 사용하는 경우[set_auto_spl_off함수에서 (mode=0)

로 설정한경우] 4각형을 그릴때 4개의 꼭지점에서 주어진 가,감속만큼 곡률

이 자동형성된다.

주 의

MULTI 자동 가,감속 CP제어

Page 298: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 110

예 제 [예제1의 작업대상]

* 자동 가,감속 기능을 사용한 경우

출발좌표(50.0,55.0)

[ 예제 1의 결과 ]

X

Y

작업물의 측면도

작업물의 평면도

10mm

자동 가,감속으로

인한 곡률 형성

10mm5mm

10mm

5mm 5mm 5mm 5mm

[예제1에서 자동 가,감속 기능을 사용하지 않을경우]

출발좌표(50.0,55.0)

X

Y

작업물의 측면도

작업물의 평면도

10mm

10mm5mm

10mm

5mm 5mm 5mm 5mm

자동 가,감속으로

인한 곡률 형성 없음

MULTI 자동 가,감속 CP제어

Page 299: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 111

예 제 [예제2의 작업대상]

125mm

R(20mm)

작업물의 평면도

[반시계방향의 원호보간]

150mm

PNT1 PNT2

PNT3

PNT4

PNT5PNT6

PNT7

PNT8

PNT9

R(20mm)

125mm

150mm작업물의 평면도

[시계방향의 원호보간]

[예제3의 작업대상]

MULTI 자동 가,감속 CP제어

Page 300: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 112

예 제 [예제1] "spl_line_move3ax" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

double pnt0=50.0;

double pnt1[3]=50.0,50.0,0.0;

double pnt2[3]=60.0,50.0,5.0;

double pnt3[3]=60.0,60.0,5.0;

double pnt4[3]=50.0,60.0,0.0;

double pnt5[3]=50.0,55.0,0.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0); /* 해당축의 전자기어비 설정*/

start_move(2,-20.0, 10000, 15); /* Z축 UP */

while(!axis_done(2));

set_spl_auto_off(0,0); /* 0번째 보드 자동 가,감속 기능 ON */

for(i=0; i<10; i++)

start_move(0, pnt0, 10000, 15);

start_move(1, 55.0, 10000, 15);

while(!axis_done(0) || !axis_done(1));

start_move(2, 0.0, 10000, 15); /* Z축 Down */

while(!axis_done(2))

spl_line_move3ax(0,1,2,pnt1, 1000.0, 3);/* CP Motion 시작 */

spl_line_move3ax(0,1,2,pnt2, 5000.0, 3);

spl_line_move3ax(0,1,2,pnt3, 9000.0, 5);

spl_line_move3ax(0,1,2,pnt4, 5000.0, 3);

spl_line_move3ax(0,1,2,pnt5, 5000.0, 3);/* CP Motion 끝 */

while(!all_done()); /* 가로:10mm,세로:10mm,높이:5mm의 */

/* 3차원의 사각형을 연속동작으로 */

/* 자동 가,감속하면서 그린다. */

start_move(2,-20.0, 10000, 15); /* Z축 UP */

while(!axis_done(2));

pnt0 += 15.0;

pnt1[0] += 15.0;

pnt2[1] += 15.0;

pnt3[2] += 15.0;

pnt4[3] += 15.0;

pnt5[4] += 15.0;

return mmc_error;

MULTI 자동 가,감속 CP제어

Page 301: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 113

[예제2] "spl_line_move2ax,spl_arc_move2ax" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

double pnt1[2]=165.0,100.0;

double pnt2[2]=210.0,100.0;

double pnt3[2]=230.0,120.0;

double pnt4[2]=230.0,230.0;

double pnt5[2]=210.0,250.0;

double pnt6[2]=125.0,250.0;

double pnt7[2]=105.0,230.0;

double pnt8[2]=105.0,120.0;

double pnt9[2]=125.0,100.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0); /* 해당축의 전자기어비 설정 */

while(!mmc_error)

move_2ax(0,1,pnt1[0], pnt1[1],1000.0,5);

while(!axis_done(0) || !axis_done(1));

spl_line_move2ax(0,1,pnt2, 1000.0, 3); /* CP Motion 시작 */

spl_arc_move2ax(0,1,230.0,100.0,pnt3,1000.0,3,CIR_CCW);

/* 반시계방향 회전원호보간 */

spl_line_move2ax(0,1,pnt4, 1000.0, 3);

spl_arc_move2ax(0,1,230.0,250.0,pnt5,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt6, 2000.0, 4);

spl_arc_move2ax(0,1,105.0,250.0,pnt7,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt8, 1000.0, 3);

spl_arc_move2ax(0,1,105.0,100.0,pnt9,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt1, 1500.0, 3); /* CP Motion 끝 */

while(!all_done());

return mmc_error;

예 제

MULTI 자동 가,감속 CP제어

Page 302: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 114

[예제3] "spl_line_move2ax,spl_arc_move2ax" 함수를 이용한 예제

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

double pnt1[2]=165.0,100.0;

double pnt2[2]=210.0,100.0;

double pnt3[2]=230.0,120.0;

double pnt4[2]=230.0,230.0;

double pnt5[2]=210.0,250.0;

double pnt6[2]=125.0,250.0;

double pnt7[2]=105.0,230.0;

double pnt8[2]=105.0,120.0;

double pnt9[2]=125.0,100.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0); /* 해당축의 전자기어비 설정 */

while(!mmc_error)

move_2ax(0,1,pnt1[0], pnt1[1],1000.0,3);

while(!axis_done(0) || !axis_done(1));

spl_line_move2ax(0,1,pnt2, 600.0, 3); /* CP Motion 시작 */

spl_arc_move2ax(0,1,230.0,100.0,pnt3,1000.0,3,CIR_CW);

/* 시계방향 회전 원호보간 */

spl_line_move2ax(0,1,pnt4, 1000.0, 3);

spl_arc_move2ax(0,1,230.0,250.0,pnt5,1000.0,3,CIR_CW);

spl_line_move2ax(0,1,pnt6, 1000.0, 3);

spl_arc_move2ax(0,1,105.0,250.0,pnt7,1000.0,3,CIR_CW);

spl_line_move2ax(0,1,pnt8, 700.0, 3);

spl_arc_move2ax(0,1,105.0,100.0,pnt9,1000.0,3,CIR_CW);

spl_line_move2ax(0,1,pnt1, 850.0, 3); /* CP Motion 끝 */

while(!all_done());

return mmc_error;

예 제

MULTI 자동 가,감속 CP제어

Page 303: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 115

1-58. MULTI보드 다축 직선 이동

move_2ax(ax1,ax2,x,y,vel,acc)

move_3ax(ax1,ax2,ax3,x,y,z,vel,acc)

move_4ax(ax1,ax2,ax3,ax4,x,y,z,w,vel,acc)

move_nax(len,*axes,*pos,vel,acc)

move_2ax = 지정된 2축이 x,y좌표값 만큼 직선이동을 한다.

move_3ax = 지정된 3축이 x,y,z좌표값 만큼 직선이동을 한다.

move_4ax = 지정된 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

move_nax = 지정된 n축이 주어진 좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

INT move_2ax(INT ax1, INT ax2, double x, double y, double vel, INT acc);

INT move_3ax(INT ax1, INT ax2, INT ax3, double x, double y, double z,

double vel, INT acc);

INT move_4ax(INT ax1, INT ax2, INT ax3, double x, double y, double z,

double w, double vel, INT acc);

INT move_nax(INT len, INT *axes, double *pos, double vel, INT acc);

본 함수들은 두장 이상의 MMC보드를 사용할때 각 보드별로 직선운동이 필요할

때 적합한 합수이다.

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE);/* AMP Power ON */

move_3ax(0,1,2,1000.0, 500.0, 3000.0, 10000.0, 10);

/* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

move_2ax(0,1,2,15000.0, 10000.0, 10000.0, 20);

/* 0,1축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

주 의

함 수 명

예 제

Error Return값

MULTI보드 다축 직선 이동

Page 304: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 116

1-59. MULTI보드 S_CURVE 다축 직선 이동

smove_2ax(ax1,ax2,x,y,vel,acc)

smove_3ax(ax1,ax2,ax3,x,y,z,vel,acc)

smove_4ax(ax1,ax2,ax3,ax4,x,y,z,w,vel,acc)

smove_nax(len,*axes,*pos,vel,acc)

smove_2ax = 지정된 2축이 x,y좌표값 만큼 직선이동을 한다.

smove_3ax = 지정된 3축이 x,y,z좌표값 만큼 직선이동을 한다.

smove_4ax = 지정된 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

smove_nax = 지정된 n축이 주어진 좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

INT smove_2ax(INT ax1, INT ax2, double x, double y,

double vel, INT acc);

INT smove_3ax(INT ax1, INT ax2, INT ax3, double x, double y, double z,

double vel, INT acc);

INT smove_4ax(INT ax1, INT ax2, INT ax3, double x, double y, double z,

double w, double vel, INT acc);

INT smove_nax(INT len, INT *axes, double *pos, double vel, INT acc);

본 함수들은 두장 이상의 MMC보드를 사용할때 각 보드별로 직선운동이 필요할

때 적합한 합수이다.

move_xx로 시작하는 함수와의 차이점은 직선이동시에 각축의 속도 profile이

S_CURVE 형태로 만들어서 이동한다는 점이다.

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE);/* AMP Power ON */

smove_3ax(0,1,2,1000.0, 500.0, 3000.0, 10000.0, 10);

/* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

smove_2ax(0,1,2,15000.0, 10000.0, 10000.0, 20);

/* 0,1축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

주 의

함 수 명

예 제

MULTI보드 S-CURVE 다축 직선 이동

Error Return값

Page 305: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 117

INT API get_spline_comm_count( int num)

get_spline_comm_count = 지정된 축의 spline 동작중인 data의 번호를 읽어 냄.

spline motion시에 현재 동작중인 spline data의 번호를 읽어내는 함수로서

여러개의 data를 전송하여 spline motion을 할경우 현재 동작중인 spline motion의

data를 알수 있음으로서 동작중 일시정지시에 바로 다음의 data부터 동작을 할수

있다.

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-60. 현재 동작중인 Spline data 의 번호를 읽는 함수

기 능

함 수 명

주 의

SPLINE DATA 번호를 읽는 함수

Page 306: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 118

INT API set_servo_linear_flag(int ax, int flag)

INT API fset_servo_linear_flag(int ax, int flag)

INT API get_servo_linear_flag(int ax, pint flag)

INT API fget_servo_linear_flag(int ax, pint flag)

set_servo_linear_flag = servo linear flag 를 설정함.

fset_servo_linear_flag = servo linear flag 를 설정, boot Memory에 저장함.

get_servo_linear_flag = servo linear flag 상태를 읽어 옴.

fget_servo_linear_flag = boot memory 에 저장된 servo linear flag 상태를 읽어

옴.

직선동작을 할때 사용하는 AMP가 servo driver 인지 step driver인지를 설정하거나

읽어내는 함수입니다.

직선동작을 하는 motion에서 servo driver를 이용할경우 servo linear flag를 1로

설정 할 경우 더 정확한 직선동작을 구현해 낼수 있습니다.

초기 설정치는 servo linear flag가 0으로 설정되어 있습니다.

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-85. Servo Linear Flag 설정 함수

기 능

함 수 명

주 의

SERVO LINEAR FLAG 설정 함수

Page 307: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 119

1-61. ANALOG 출력 OFFSET설정

set_analog_offset = 해당축의 analog offset값을 설정한다.

"offset의 범위 : ±2048" (MMC-BDPV81/41 모델)

"offset의 범위 : ±32767" (MMC-BDPV42 모델)

fset_analog_offset = 해당축의 analog offset값을 설정하고 Boot File에 저장한다.

get_analog_offset = 해당축의 analog offset값을 읽는다.

fget_analog_offset = Boot File에서 해당축의 analog offset값을 읽는다.

#include "mmcdef.h"

INT main()

INT offset,get_offset;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

for(offset=0; offset<2048; offset++)

set_analog_offset(0,offset);

get_analog_offset(0,&get_offset);

return mmc_error;

함 수 명 set_analog_offset(ax,offset);

fset_analog_offset(ax,offset);

get_analog_offset(ax,*offset);

fget_analog_offset(ax,*offset);

기 능

사 용 예 #include "mmcdef.h"

INT set_analog_offset(INT ax, INT offset);

INT fset_analog_offset(INT ax, INT offset);

INT get_analog_offset(INT ax, INT *offset);

INT fget_analog_offset(INT ax, INT *offset);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

예 제

Error Return값

ANALOG 출력 OFFSET설정

Page 308: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 120

1-62. IN-POSITION 신호 사용여부

함 수 명 set_inposition_required(axis,req)

fset_inposition_required(axis,req)

get_inposition_required(axis,*req)

fget_inposition_required(axis,*req)

기 능

사 용 예

AMP에서 입력되는 In_Position 신호의 사용여부를 설정한다.

req인수의 값 => TRUE(1)로 설정하면 In_Position 신호를 사용하는것이고,

=> FALSE(0)으로 지정하면 In_Position 신호를 사용하지 않는다.

set_inposition_required = 지정축의 in-position 신호 사용여부를 설정한다.

fset_inposition_required = 지정축의 in-position 신호 사용여부를 설정하고,

Boot File에 저장한다.

get_inposition_level = 지정축의 in-position 신호 사용여부를 읽는다.

fget_inposition_level = Boot File에서 지정축의 in-position 신호 사용여부를

읽는다.

#include "mmcdef.h"

int set_inposition_required(int axis, int req);

int fset_inposition_required(int axis, int req);

int get_inposition_required(int axis, int *req);

int fget_inposition_required(int axis, int *req);

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

예 제 #include "mmcdef.h"

int main()

int vel_com,vel_act;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE) /* 0축의 AMP ON */

set_amp_enable(1,TRUE) /* 1축의 AMP ON */

set_inposition_required(0,FALSE);/* 0축의 in_position 신호는 사용안함 */

set_inposition_required(1,TRUE); /* 1축의 in_position 신호는 사용함 */

set_inposition_level(1,LOW); /* 1축의 in_position level LOW로 설정*/

set_position(0,0.0); /* 0축의 위치값 setting */

set_position(1,0.0); /* 1축의 위치값 setting */

start_move(0, 10000.0, 10000, 15);

start_move(1, 5000.0, 10000, 15);

while(!axis_done(0) || !axis_done(1))

vel_com=get_com_velocity(0);

vel_act=get_act_velocity(0);

printf("0AX Velocity Difference[pulse/sec] = %d\n",(vel_com-vel_act));

return mmc_error;

Error Return값

IN-POSITION 신호 사용여부

Page 309: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 121

1-63. 좌표방향 변경

set_coordinate_direction = 지정축의 좌표방향을 설정한다.

fset_coordinate_direction = 지정축의 좌표방향을 설정하고,Boot File에 저장한다.

get_coordinate_direction = 지정축의 좌표방향을 읽는다.

fget_coordinate_direction = Boot File에서 지정축의 좌표방향을 읽는다.

함 수 명 set_coordinate_direction(axis,cord_dir)

fset_coordinate_direction(axis,cord_dir)

get_coordinate_direction(axis,*cord_dir)

fget_coordinate_direction(axis,*cord_dir)

기 능

사 용 예 #include "mmcdef.h"

int set_coordinate_direction(int axis, int cord_dir);

int fset_coordinate_direction(int axis, int cord_dir);

int get_coordinate_direction(int axis, int *cord_dir);

int fget_coordinate_direction(int axis, int *cord_dir);

NOTE 좌표계의 방향을 설정할 수 있는 함수이다.

cord_dir인수의 값 => CORD_CW(0)로 설정하면 모타가 시계방향으로 회전시

Positive(+)좌표로 이동함,

=> CORD_CCW(1)로 설정하면 모타가 시계방향으로 회전시

Negative(-)좌표로 이동함,

좌표계 방향 +-

모타

CORD_CW(0)로 설정

좌표계 방향+ -

모타

CORD_CCW(1)로 설정

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)Error Return값

좌표방향 변경

Page 310: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 122

예 제 #include "mmcdef.h"

int main()

int vel_com,vel_act;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_amp_enable(0,TRUE) /* 0축의 AMP ON */

set_amp_enable(1,TRUE) /* 1축의 AMP ON */

set_coordinate_direction(0,CORD_CW); /* 0축의 좌표방향 CW로 설정 */

set_coordinate_direction(1,CORD_CCW);/* 1축의 좌표방향 CCW로설정 */

set_position(0,0.0); /* 0축의 위치값 setting */

set_position(1,0.0); /* 1축의 위치값 setting */

start_move(0, 10000.0, 10000, 15);

start_move(1, 5000.0, 10000, 15);

while(!axis_done(0) || !axis_done(1))

vel_com=get_com_velocity(1);

vel_act=get_act_velocity(1);

printf("1AX Velocity Difference[pulse/sec] = %d\n",(vel_com-vel_act));

return mmc_error;

좌표방양 변경

Page 311: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 123

1-64. ENCODER 입력방향 변경

함 수 명 set_encoder_direction(axis,enco_dir)

fset_encoder_direction(axis,enco_dir)

get_encoder_direction(axis,*enco_dir)

fget_encoder_direction(axis,*enco_dir)

기 능

사 용 예 #include "mmcdef.h"

int set_encoder_direction(int axis, int enco_dir);

int fset_encoder_direction(int axis, int enco_dir);

int get_encoder_direction(int axis, int *enco_dir);

int fget_encoder_direction(int axis, int *enco_dir);

NOTE Encoder 입력방향을 설정할 수 있는 함수이다.

enco_dir인수의 값 => ENCO_CW(0)로 설정하면 모타가 시계방향으로 회전시

Negative(-)값이 count됨 (get_position() 이용시).

=> CORD_CCW(1)로 설정하면 모타가 시계방향으로 회전시

Positive(+)값이 count됨.(get_position() 이용시)

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)

#include "mmcdef.h"

int main()

int vel_com,vel_act;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

set_encoder_direction(0,ENCO_CW);/* 0축의 Encoder 입력방향 CW로 설정 */

set_encoder_direction(1,ENCO_CCW);/*1축의 Encoder 입력방향 CCW로설정 */

return mmc_error;

예 제

Error Return값

set_encoder_direction = 지정축의 Encoder 입력방향을 설정한다.

fset_encoder_direction = 지정축의 Encoder 입력방향을 설정하고,

Boot File에 저장한다.

get_encoder_direction = 지정축의 Encoder 입력방향을 읽는다.

fget_encoder_direction = Boot File에서 지정축의 Encoder 입력방향을 읽는다.

ENCODER 입력방향 변경

Page 312: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 124

1-65. 축의 RUN/STOP

set_axis_runstop = 지정보드의 축별 동작여부를 설정한다.

get_axis_runstop = 지정보드의 축별 동작여부를 읽는다.

함 수 명 set_axis_runstop(bdNum,stateBit)

get_axis_runstop(bdNum,*stateBit)

기 능

사 용 예 #include "mmcdef.h"

int set_axis_runstop(int bdNum, int stateBit);

int get_axis_runstop(int bdNum, int stateBit);

NOTE 보드의 축별로 동작여부를 설정 할 수 있는 함수이다.

여러축을 동기동작으로 이동하거나, Spline Motion에서 spline축을 정지상태로

두고 여러개의 spline명령을 보드에 전달한후 동작상태로 재설정을 하면 프로그

램의 동작시간과 관계없이 유용하게 사용할수 있다.

stateBit인수의 값

set_axis_runstop(0,0x03)를 실행하면

0번째보드 0축과 1축의 동작과 관련된 명령어는 실행되지 않는다.

Bit 7

7축

Bit 6

6축

Bit 5

5축

Bit 4

4축

Bit 3

3축

Bit 2

2축

Bit 1

1축

Bit 0

0축

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_ILLEGAL_PARAMETER(6)Error Return값

축의 RUN/STOP

Page 313: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 125

"[예제2] "spl_line_move2ax,spl_arc_move2ax" 함수를 이용한 예제"의 응용

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

double pnt1[2]=165.0,100.0;

double pnt2[2]=210.0,100.0;

double pnt3[2]=230.0,120.0;

double pnt4[2]=230.0,230.0;

double pnt5[2]=210.0,250.0;

double pnt6[2]=125.0,250.0;

double pnt7[2]=105.0,230.0;

double pnt8[2]=105.0,120.0;

double pnt9[2]=125.0,100.0;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<2; i++)

set_amp_enable(i,TRUE) /* 해당축 AMP ON */

set_position(i,0.0); /* 해당축 위치값 setting */

set_electric_gear(i,2048/20.0);/* 해당축의 전자기어비 설정 */

while(!mmc_error)

move_2ax(0,1,pnt1[0], pnt1[1],1000.0,5);

while(!axis_done(0) || !axis_done(1));

set_axis_runstop(0,0x03); /* 0,1축 동작정지 */

spl_line_move2ax(0,1,pnt2, 1000.0, 3); /* CP Motion 시작 */

/* 반시계방향 회전 원호보간 */

spl_arc_move2ax(0,1,230.0,100.0,pnt3,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt4, 1000.0, 3);

spl_arc_move2ax(0,1,230.0,250.0,pnt5,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt6, 2000.0, 4);

spl_arc_move2ax(0,1,105.0,250.0,pnt7,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt8, 1000.0, 3);

spl_arc_move2ax(0,1,105.0,100.0,pnt9,1000.0,3,CIR_CCW);

spl_line_move2ax(0,1,pnt1, 1500.0, 3); /* CP Motion 끝 */

set_axis_runstop(0,0x00); /* 0,1축 동작시작*/

while(!all_done());

return mmc_error;

예 제

축의 RUN/STOP

Page 314: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 126

1-66. 단일보드 MULTI그룹 다축 직선 이동

move_2axgr(groupNum,ax1,ax2,x,y,vel,acc)

move_3axgr(groupNum,ax1,ax2,ax3,x,y,z,vel,acc)

move_4axgr(groupNum,ax1,ax2,ax3,ax4,x,y,z,w,vel,acc)

move_2axgr = 지정된 그룹의 2축이 x,y좌표값 만큼 직선이동을 한다.

move_3axgr = 지정된 그룹의 3축이 x,y,z좌표값 만큼 직선이동을 한다.

move_4axgr = 지정된 그룹의 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

INT move_2axgr(INT groupNum, INT ax1, INT ax2, double x, double y,

double vel, INT acc);

INT move_3axgr(INT groupNum, INT ax1, INT ax2, INT ax3, double x,

double y, double z, double vel, INT acc);

INT move_4axgr(INT groupNum, INT ax1, INT ax2, INT ax3, double x,

double y, double z, double w, double vel, INT acc);

본 함수들은 한장의 MMC보드를 사용하여 여러개의 직선운동이 필요할때 적합한

함수이다.

groupNum인수의 범위는 1 ‾ 4 까지이다.

각 그룹내에서 동일한 축을 사용하거나, 다른그룹에서 사용중인 축을 재지정

하면 이상동작을 일으킬수 있다.

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE);/* AMP Power ON */

move_3axgr(1,0,1,2,1000.0, 500.0, 3000.0, 10000.0, 10);

/* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

move_2axgr(2,3,4,15000.0, 10000.0, 10000.0, 20);

/* 3,4축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

주 의

함 수 명

예 제

Error Return값

단일보드 MULTI그룹 다축 직선 이동

Page 315: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 127

1-67. 단일보드 MULTI그룹 S_CURVE 다축 직선 이동

#include "mmcdef.h"

int main()

int i;

long addr = 0xD8000000;

if(mmc_initx(1,&addr)) return mmc_error;

for(i=0; i<3; i++)

set_amp_enable(i,TRUE);/* AMP Power ON */

smove_3axgr(1,0,1,2,1000.0, 500.0, 3000.0, 10000.0, 10);

/* 0,1,2축을 X,Y,Z 좌표방향으로 직선이동 */

smove_2axgr(2,3,4,15000.0, 10000.0, 10000.0, 20);

/* 3,4축을 X,Y 좌표방향으로 직선이동 */

return mmc_error;

smove_2axgr(groupNum,ax1,ax2,x,y,vel,acc)

smove_3axgr(groupNum,ax1,ax2,ax3,x,y,z,vel,acc)

smove_4axgr(groupNum,ax1,ax2,ax3,ax4,x,y,z,w,vel,acc)

smove_2axgr = 지정된 그룹의 2축이 x,y좌표값 만큼 직선이동을 한다.

smove_3axgr = 지정된 그룹의 3축이 x,y,z좌표값 만큼 직선이동을 한다.

smove_4axgr = 지정된 그룹의 4축이 x,y,z,w좌표값 만큼 직선이동을 한다.

#include "mmcdef.h"

INT smove_2axgr(INT groupNum, INT ax1, INT ax2, double x, double y,

double vel, INT acc);

INT smove_3axgr(INT groupNum, INT ax1, INT ax2, INT ax3, double x,

double y, double z, double vel, INT acc);

INT smove_4axgr(INT groupNum, INT ax1, INT ax2, INT ax3, double x,

double y, double z, double w, double vel, INT acc);

본 함수들은 한장의 MMC보드를 사용하여 여러개의 직선운동이 필요할때 적합한

함수이다.

groupNum인수의 범위는 1 ‾ 4 까지이다.

각 그룹내에서 동일한 축을 사용하거나, 다른그룹에서 사용중인 축을 재지정

하면 이상동작을 일으킬수 있다.

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)

기 능

사 용 예

주 의

함 수 명

예 제

Error Return값

단일보드 MULTI그룹 다축 직선 이동

Page 316: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 128

version_chk(INT bn, pINT ver)

1-68. ROM VERSION CHECK

각 보드별 ROM Version을 Check하는 함수이다.

-bn은 보드숫자를 나타내는 인수로서 범위는 0‾7임.

-ver인수로 return되는 값의 해석은 다음과같다

ver=101 => rom ver=1.01

기 능

주 의

함 수 명

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;Error Return값

ROM VERSION CHECK

Page 317: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 129

1-69. S/W VERSION CHECK 함수

현재 적용중인 mmc s/w library의 version을 check하는 함수임.

MMC_OK

기 능

함 수 명

Error Return값

mmcsw_version_chk(pINT ver)

S/W VERSION CHECK

Page 318: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 130

1-70. RPM 함수

get_command_rpm(INT ax, pINT rpm_val)

get_encoder_rpm(INT ax, pINT rpm_val)

get_command_rpm 지령치(command)의 모타 RPM을 읽어내는 함수임.

get_encoder_rpm 모타 드라이버에서 FEEDBACK되는 실제(ACTUAL)의 모타

RPM을 읽어내는 함수임.

MMC_OK(0)

기 능

함 수 명

Error Return값

RPM 관련 함수

Page 319: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 131

1-71. DRIVE RESOLUTION 설정

set_amp_resolution(INT ax, INT resolution)

fset_amp_resolution(INT ax, INT resolution)

get_amp_resolution(INT ax, pINT resolution)

fget_amp_resolution(INT ax, pINT resolution)

지정축의 amp drive의 resolution을 설정하거나/읽어내는 함수임.

resolution은 mmc에서 모타 1회전을 시킬때 필요한 pulse의 수를 의미한다.

resolution의 Default는 2500pulse/rev 이다.

위치형 servo drive 구동시 실제 적용모타와 다르게 resolution값을 설정하면

실제 모타의 rpm과 상기함수를 사용하여 측정한 rpm이 서로 다르게 된다.

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;

기 능

함 수 명

Error Return값

DRIVE RESOLUTION 설정

Page 320: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 132

1-72. ABSOLUTE ENCODER 관련 함수

set_abs_encoder_type(INT ax, INT type)

get_abs_encoder_type(INT ax, pINT type)

set_abs_encoder(INT ax)

절대치 모타(ABSOLUTE MOTOR)의 TYPE을 지정해주는 함수임.

TYPE 1 = 삼성 CSDJ, CSDJ+ SERVO DRIVE

TYPE 2 = YASKAWA SERVO DRIVE

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;

기 능

함 수 명

Error Return값

본함수는 반드시 "set_abs_encoder" 함수를 이용하여 absolute encoder값을

읽어내기 전에 지정을 해주어야 한다.

만약 지정이 되지않은 상태에서 "set_abs_encoder"란 함수 사용시 실제 모타

의 위치와 다른값이 feedback되어 모타 및 장비에 손상을 줄수 있으므로 주의

해야 한다.

주 의

ABSOLUTE ENCODER 관련 함수

Page 321: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 133

1-73. 충돌방지 기능 함수 - 1

set_collision_prevent_flag(INT bd_num, INT mode)

get_collision_prevent_flag(INT bd_num, pINT mode)

set_collision_prevent_flag = 충돌방지 기능의 사용여부를 설정하는 함수이

다.

get_collision_prevent_flag = 충돌방지 기능의 사용여부를 읽어들이는

함수이다.

mode=1 이면 지정보드에서 충돌방지 기능을 사용함

mode=0 이면 지정보드에서 충돌방지 기능을 사용하지 않음

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;

기 능

함 수 명

Error Return값

-본 함수사용전에 반드시 "set_collision_prevent"함수를 이용하여 충돌방지

기능의 master 축과 slave축 및 거리,조건등을 설정하여야 합니다.

-충돌 방지 기능 사용시 설정 조건이 만족되면 Master 축과 Slave 축에

E_STOP_EVENT 가 발생되며 axis_source 에 ST_Collision_State bit 가 On 된

다.

주 의

충돌방지 기능 함수

Page 322: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 134

1-74. 충돌방지 기능 함수 - 2

set_collision_prevent(INT max, INT sax, INT add_sub, INT non_equal,

double pos)

충돌방지 기능을 사용할 master/slave축 및 충돌방지 거리 및 조건(+,-,>,<)을

설정하는 함수임.

add_sub 0 : Master 축 현재위치 - Slave 축 현재위치

1 : Master 축 현재위치 + Slave 축 현재위치

non_equal 1 : 'Pos' > 'add_sub 의 결과치'

0 : 'Pos' < 'add_sub 의 결과치'

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;

기 능

함 수 명

Error Return값

충돌 방지 기능 함수

Page 323: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 135

1-75. 고속 ENCODER READ 함수

set_fast_read_encoder(INT ax, INT status)

get_fast_read_encoder(INT ax, pINT status)

특정축의 encoder feedback data 즉, 위치데이타를 빠르게 일어들일때 사용

한다.

본함수를 사용하지 않는축은 "set_control_timer"에서 설정한 주기로 위치

데이타가 변경된다.

default값은 4msec 주기로 위치데이타가 update된다.

set_fast_read_encoder함수로 설정된 축은 50μsec 주기로 위치데이타가

update된다.

MMC_ILLEGAL_PARAMETER;MMC_TIMEOUT_ERR,MMC_OK;

기 능

함 수 명

Error Return값

고속 ENCODER READ 함수

Page 324: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 136

1-76. SAMPLING RATE 변경

set_control_timer(INT bn, INT time)

fset_control_timer(INT bn, INT time)

get_control_timer(INT bn, pINT time)

fget_control_timer(INT bn, pINT time)

보드별 sampling rate를 변경할때 사용된다.

time=1 => 4msec sampling rate

time=2 => 2msec sampling rate

time=3 => 1msec sampling rate(단 4축보드에만 적용됨)

MMC_ILLEGAL_PARAMETER,MMC_OK;

기 능

함 수 명

Error Return값

SAMPLING RATE 관련 함수

Page 325: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 137

1-77. 그룹 스풀라인 이동

spl_movex(INT spl_num, INT ax1, INT ax2, INT ax3)

spl_move_data(INT spl_num, INT len, INT ax1, INT ax2,

INT ax3, pDOUBLE pnt1, pDOUBLE pnt2,

pDOUBLE pnt3, double vel, INT acc)

spl_movex함수는 지정3축이 spline motion으로 spl_move_data에서 지정한 위

치를 경유하면서 연속이동한다.

spl_num인수의 범위는 1 ‾ 20까지 이다.

spl_move_data는 spl_movex 함수를 이용하여 spline motion을 진행하

기전 미리 위치데이타를

지정하는데 사용된다.

20개의 서로다른 spline motion 위치데이타를 지정할수 있고, 한개의

spline motion 위치데이타

는 500개 데이터로 구성된다.

즉, spl_num인수의 범위는 1 ‾ 20까지 이다. len 1 ‾ 500

기 능

함 수 명

스풀라인 이동

Page 326: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 138

set_endless_rotationax(ax,status,resolution)

get_endless_rotationax(ax,*status)

set_endless_linearax(ax,status,resolution)

get_endless_linearax(ax,*status)

set_endless_range(ax,range)

get_endless_range(ax,*range)

1-78. 무한회전

set_endless_rotationax = 지정축을 회전운동하는 무한회전축으로 설정한다.

get_endless_rotationax = 지정축의 무한회전축 설정여부를 읽는다.

set_endless_linearax = 지정축을 직선운동하는 무한회전축으로 설정한다.

get_endless_linearax = 지정축의 무한회전축 설정여부를 읽는다.

set_endless_range = 무한회전축의 움직이는 영역을 설정한다.

get_endless_range = 무한회전축의 설정된 영역값을 읽는다.

#include "mmcdef.h"

INT set_endless_rotationax(INT ax, INT status, INT resolution);

INT get_endless_rotationax(INT ax, pINT status);

INT set_endless_linearax(INT ax, INT status, INT resolution);

INT get_endless_linearax(INT ax, pINT status);

INT set_endless_range(INT ax, double range);

INT get_endless_range(INT ax, pDOUBLE range);

본 함수들은 기구물의 1회전 또는 설정영역을 한쪽방향으로 무한운동을 하는

시스템에 적합한 함수이다.

"set_endless_rotationax","set_endless_linearax"함수에서

resolution은 모타의 1회전당 펄스수를 의미하며,

status는 무한회전축의 설정여부를 나타내며 TRUE(1)이면 무한회전축 설정

FALSE(0)는 무한회전축 설정해제가 된다.

무한회전에 관계된 함수는 위치형 servo나 Micro Stepping Driver를 사용

하여 OPEN_LOOP로 제어할때만 사용가능하다.

무한회전 축으로 설정시 get_position함수에서 올라오는 Encoder값은

모타 1바퀴내의 값이 올라온다.

(예) 모타 1회전 : 2048 pulse/rev 인경우

get_position을 하면 4체배된 값 즉 0 ‾ 8191 사이의 값만 올라온다.

기 능

사 용 예

주 의

함 수 명

MMC_OK(0), MMC_TIMEOUT_ERR(2), MMC_INVALID_AXIS(3)

MMC_ILLEGAL_PARAMETER(6), MMC_NO_MAP(7), MMC_AMP_FAULT(8)Error Return값

무한 회전 함수

Page 327: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 139

#include "mmcdef.h"

void main(void)

int i,e;

long addr = 0xD8000000;

long addr = 0xD8000000;

if(e=mmc_initx(1,&addr))

if(e==MMC_NON_EXIST) printf("MMC BOARD NOT EXIST");

else if(e==MMC_TIMEOUT_ERR) printf("DPRAM ERROR");

else printf("MMC ERROR");

return;

for(i=0; i<4; i++)

set_amp_enable(i,FALSE);

delay(10);

set_amp_enable(i,TRUE);

delay(30);

frames_clear(i);

clear_status(i);

set_endless_rotationax(0,1,2048); /* 0축 무한회전축 지정, 2048 pulse/rev */

set_endless_linearax(1,1,2048); /* 1축 무한회전축 지정, 2048 pulse/rev */

set_endless_rotationax(2,1,2048); /* 2축 무한회전축 지정, 2048 pulse/rev */

set_endless_linearax(3,1,2048); /* 3축 무한회전축 지정, 2048 pulse/rev */

set_endless_range(0,20480); /* 0축 무한회전 범위설정 */

set_endless_range(1,20480); /* 1축 무한회전 범위설정 */

set_endless_range(2,20480); /* 2축 무한회전 범위설정 */

set_endless_range(3,20480); /* 3축 무한회전 범위설정 */

while(!kbhit())

move_4ax(0,1,2,3,2048.0,2048.0,2048.0,2048.0,90000.0,10);

while(!axis_done(0) || !axis_done(1) || !axis_done(2) || !axis_done(3));

move_4ax(0,1,2,3,2048.0*5,2048.0*5,2048.0*5,2048.0*5,90000.0,10);

while(!axis_done(0) || !axis_done(1) || !axis_done(2) || !axis_done(3));

move_4ax(0,1,2,3,2048.0*9,2048.0*9,2048.0*9,2048.0*9,90000.0,10);

while(!axis_done(0) || !axis_done(1) || !axis_done(2) || !axis_done(3));

return;

상기 프로그램을 수행하면 +쪽 방향으로만 움직이면서 무한회전하게 된다.

예 제

무한 회전 함수

Page 328: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 140

INT API set_encoder_ratioa(INT ax, INT ratioa)

INT API fset_encoder_ratioa(INT ax, INT ratioa)

INT API get_encoder_ratioa(INT ax, pINT ratioa)

INT API fget_encoder_ratioa(INT ax, pINT ratioa)

INT API set_encoder_ratiob(INT ax, INT ratiob)

INT API fset_encoder_ratiob(INT ax, INT ratiob)

INT API get_encoder_ratiob(INT ax, pINT ratiob)

INT API fget_encoder_ratiob(INT ax, pINT ratiob)

set_encoder_ratioa = Encoder 분주비의 분자값을 설정한다.

fset_encoder_ratioa = Encoder 분주비의 분자값을 설정하여 Boot Memory에 저장.

get_encoder_ratioa = 설정된 Encoder 분주비의 분자값을 읽어온다.

fget_encoder_ratioa = Encoder 분주비의 분자값을 Boot Memory에서 읽어온다.

set_encoder_ratiob = Encoder 분주비의 분모값을 설정한다.

fset_encoder_ratiob = Encoder 분주비의 분모값을 설정하여 Boot Memory에 저장.

get_encoder_ratiob = 설정된 Encoder 분주비의 분모값을 읽어온다.

fget_encoder_ratiob = Encoder 분주비의 분모값을 Boot Memory에서 읽어온다.

AMP에서 feedback되는 encoder 신호의 비를 설정하거나 읽어내는 함수입니다.

set_encoder_ratioa로 설정된 값은 비율의 분자값에 설정되고, set_encoder_ratiob

로 설정된값은 비율의 분모값에 설정됩니다.

초기치는 ratioa = 1, ratiob=1입니다. 따라서 mmc보드는 기본적으로 encoder의

체배수가 4체배가 되므로 AMP에서 설정된 값의 4체배된값이 encoder 값으로 올라오

게 됩니다.

mmc 보드에서 인식하는 encoder값 =

예를들어 AMP에서 Feedback되는 encoder값을 그대로 받으실려면

set_encoder_ratioa(0,1);

set_encoder_ratiob(0,4); 로 설정하시면 mmc보드 내부에서 4체배되는 것을

없애고 순수하게 AMP에서 올라온 encoder 값을 받을수 있습니다.

1-79. Encoder 분주비 설정 함수

기 능

함 수 명

주 의

set_encoder_ratioa

set_encoder_ratiobX Encoder Feedback X 4체배

ENCODER 분주비 설정 함수

Page 329: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 141

INT API set_analog_limit(int ax, int limit)

INT API fset_analog_limit(int ax, int limit)

INT API get_analog_limit(int ax, pint limit)

INT API fget_analog_limit(int ax, pint limit)

set_analog_limit = 지정축의 출력 전압 범위를 설정한다.

set_analog_limit = 지정축의 출력 전압 범위를 설정, Boot Memory 에 저장한다.

get_analog_limit = 설정된 출력 전압 범위를 읽어 온다.

fget_analog_limit = Boot Memory 에 설정된 출력 전압 범위를 읽어 온다.

지정축의 출력전압의 범위를 설정하거나 읽어내는 함수입니다.

인수 limit의 범위 0 ‾ 32767 까지이며 절대치를 사용한다.

limit 인수의 값이 0일때는 출력 Analog 전압은 0volt이며, 32767일때 출력 Analog

전압은 ±10V Analog 전압이 출력됩니다.

본기능은 torque제어시에 유용하게 사용될수 있다.

지정축이 위치형으로 설정되어 있을경우에는 본함수는 사용되지 않습니다.

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-80. 출력전압 범위 설정 함수

기 능

함 수 명

주 의

출력전압 범위 설정 함수

Page 330: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 142

INT API set_position_lpf(int ax, int filter)

INT API fset_position_lpf(int ax, int filter)

INT API get_position_lpf(int ax, int filter)

INT API fget_position_lpf(int ax, int filter)

INT API set_velocity_lpf(int ax, int filter)

INT API fset_velocity_lpf(int ax, int filter)

INT API get_velocity_lpf(int ax, int filter)

INT API fget_velocity_lpf(int ax, int filter)

set_position_lpf = 속도지령의 Low Pass Filter를 설정한다.

fset_position_lpf = 속도지령의 Low Pass Filter를 설정, Boot Memory에 저장.

get_position_lpf = 설정된 Low Pass Filter 값을 읽어 온다.

fget_position_lpf = Boot Memory에 저장된 Low Pass Filter 값을 읽어 온다.

set_velocity_lpf = 토크지령의 Low Pass Filter를 설정한다.

fset_velocity_lpf = 토크지령의 Low Pass Filter를 설정, Boot Memory에 저장.

get_velocity_lpf = 설정된 Low Pass Filter 값을 읽어 온다.

fget_velocity_lpf = Boot Memory에 저장된 Low Pass Filter 값을 읽어 온다.

위치제어/속도제어 Loop에서 Analog 출력전압의 Low Pass Filter를 설정하거나

읽어내는 함수 입니다.

인수 filter의 단위는 Hz이며, 인수 filter의 값이 0일때는 low pass filter의

기능은 작용하지 않습니다.

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-81. 출력 전압의 LOW PASS Filter 설정 함수

기 능

함 수 명

주 의

Feedforward GainKpf,Kvf

PID GainKpp+Kpi+KpdKvp+Kvi+Kvd

Low PassFilter

NotchFilter

command

encoder feedback

+

-+

최종 Analog 출력

출력 전압 LOW PASS FILTER 설정 함수

Page 331: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 143

INT API set_position_notch_filter(int ax, int filter)

INT API fset_position_notch_filter(int ax, int filter)

INT API get_position_notch_filter(int ax, pint filter)

INT API fget_position_notch_filter(int ax, pint filter)

INT API set_velocity_notch_filter(int ax, int filter)

INT API fset_velocity_notch_filter(int ax, int filter)

INT API get_velocity_notch_filter(int ax, pint filter)

INT API fget_velocity_notch_filter(int ax, pint filter)

set_position_notch_filter = 속도지령의 notch Filter를 설정한다.

fset_position_notch_filter = 속도지령의 notch Filter를 설정, Boot Memory에

저장한다.

get_position_notch_filter = 설정된 notch Filter 값을 읽어 온다.

fget_position_notch_filter = Boot Memory에 저장된 notch Filter 값을 읽어온다.

set_velocity_notch_filter = 토크지령의 notch Filter를 설정한다.

fset_velocity_notch_filter = 토크지령의 notch Filter를 설정, Boot Memory에

저장한다.

get_velocity_notch_filter = 설정된 notch Filter 값을 읽어 온다.

fget_velocity_notch_filter = Boot Memory에 저장된 notch Filter 값을 읽어 온다.

위치제어/속도제어 Analog 출력전압의 Notch Filter를 설정하거나 읽어내는 함수

입니다.

인수 filter의 단위는 Hz이며, 인수 filter의 값이 0일때는 Notch filter의 기능은

작용하지 않습니다.

Notch Filter란 지정 Hz의 주파수 성분만 출력전압에서 삭제시키는 기능을 가지고

있습니다.

따라서 시스템의 공진주파수를 제거할때 유용하게 사용하실수 있습니다.

(주) 본 함수는 S/W VERSION 1.30 이상에서만 적용됩니다.

1-82. 출력 전압의 Notch Filter 설정 함수

기 능

함 수 명

주 의

출력 전압 NOTCH FILTER 설정 함수

Page 332: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 144

INT API set_auto_sensor_off(int ax, int off)

INT API fset_auto_sensor_off(int ax, int off)

INT API get_auto_sensor_off(int ax, int off)

INT API fget_auto_sensor_off(int ax, int off)

set_auto_sensor_off = auto_sensor_off 기능을 설정합니다.

fset_auto_sensor_off = auto_sensor_off 기능을 설정, Boot memory에 저장합니다.

get_auto_sensor_off = auto_sensor_off 기능을 설정 여부를 읽어 옵니다.

fget_auto_sensor_off = Boot Memory에서 auto_sensor_off 기능 설정 여부를 읽어

옵니다.

본함수는 동작중 +,- limit sensor 를 만났을때 event에 의해서 정지하고, 반대방향

으로 움직여서 +,- limit sensor를 벗어나면 자동으로 event를 clear 시키는 기능의

사용여부를 설정하거나일거내는 함수입니다.

즉, 인수 off = 1 이면 자동 mode 해제. +,- limit sensor를 벗어나도 event를

계속유지됨.

event의 해제는 clear_status함수로만 해제됩니다.

인수 off = 0 이면 자동 mode 설정. +,- limit sensor를 벗어나면 event 자동해지.

원점복귀시에 많이 사용되며, 초기상태는 인수 off=0 자동 mode 설정입니다.

(주) 본 함수는 S/W VERSION 1.30 이상에만 적용됩니다.

1-83. Sensor 자동 off 기능 설정 함수

기 능

함 수 명

주 의

SENSOR 자동 OFF 기능 설정 함수

Page 333: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 145

기 능

position_compare(index_sel, index_num, bitNo, ax1, ax2, latch, function,

out_mode, pos, time)

1-84. Position Compare 설정

Position Compare를 설정하는 함수이며, 각 인수별 기능은 다음과 같다.

1) index_sel : Position Compare시 한축의 Encoder값만을 이용할 것인지 두축을

이용할 것인지 여부를 설정하는 인수입니다.

"1" = Position Compare로 1축의 Encoder값만을 이용

"2" = Position Compare로 서로다른 2축의 Encoder값을 이용

2) index_num : Position Compare를 실시할 Index의 번호를 설정하는 인수이다.

인수의 범위는 1 ‾ 8까지 이며, 서로 다른 위치테이타를 한축의

Encoder값만을 이용할때는 8개까지, 두축의 Encoder값을 이용할

때는 축별 4개까지 설정 할 수 있습니다.

3) bitNo : 출력할 I/O Bit를 설정하는 인수입니다. 범위는 1‾32까지 입니다.

4) ax1 : Position compare로 사용할 첫번째 축을 설정하는 인수입니다.

5) ax2 : Position compare로 사용할 두번째 축을 설정하는 인수입니다.

index_sel 인수가 "1"로 되어있을경우 사용되지는 않는다.

6) latch : I/O 출력모드를 설정하는 인수입니다.

출력모드는 "Transparent Mode"와 "Latch"모드 두가지가 있습니다.

"Transparent Mode(0)"는 time인수에서 지정한 시간동안만 I/O 출력

을 ON 또는 OFF를 모드입니다.

"Latch Mode(1)"는 time인수와 관계없이 사용자가 접점을 ON 또는

OFF 시키거나 Position Compare 모드를 Disable 시킬때까지 I/O 출력

을 유지하는 모드입니다.

7) function : Position compare에 사용할 부등호를 설정하는 인수입니다.

부등호는 "=", "<", ">" 3가지의 부등호가 있습니다.

인수 1은 (=). 2는 (<), 3은 (>) 을 의미합니다.

"="(1) Encoder Feedback값 = Position Compare에 설정된 위치값

">"(2) Encoder Feedback값 < Position Compare에 설정된 위치값

"<"(3) Encoder Feedback값 > Position Compare에 설정된 위치값

8) out_mode : 지정 I/O의 출력모드를 설정하는 인수입니다.

인수의 범위는 0‾2 까지입니다.

"0" = 축별 ON/OFF 기능.

"1" = 두축 AND 기능. index_sel인수가 2일때만 적용됩니다.

"2" = 두축 OR 기능. index_sel인수가 2일때만 적용됩니다.

9) pos : Position Compare에 사용될 위치데이타를 설정하는 인수이다.

설정할수 있는 위치데이타는 양의 정수값만 사용할 수 있다.

10) time : Trans parent mode인 경우에만 적용되며, 최소설정시간은 40μsec

이며 최대설정시간은 5.38sec 입니다.

함 수 명

POSITION COMPARE

Page 334: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 146

사 용 예 #include "mmcwfp21.h"

int position_compare(int index_sel, int index_num, int bitNo, int ax1,

int ax2, int latch, int function, int out_mode, double pos, long time)

두축을 사용시 (index_sel=2)에는 각각의 축에 대해서는 4개씩 index_num이 할당되

어 있습니다.

첫번째 축에는 index_num이 1‾4, 두번째 축에는 5‾8 까지 할당되어 있습니다.

즉 index_num이 5 이상일 경우에는 두번째 축으로 인식되어 설정됩니다.

out_mode는 한축만을 사용시 (index_sel=1)에는 out_mode는 반드시 "0"으로 설정

해야만 합니다.

"0" 이외의 값을 설정시 I/O 출력이 이상동작을 일으킬수 있습니다.

MMC_OK(0), MMC_TIMEOUT_ERR(2),MMC_ILLEGAL_PARAMETER(6)

NOTE

Error Return값

#include "mmcwfp21.h"

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

position_compare(1,1,1,0,1,1,1,0,10000.0,1000000);

/* index_sel = 1 : 한축만 사용 */

/* index_num =1 : 첫번째 index 설정 */

/* bitNo = 1 : 사용자 I/O 1번 출력사용 */

/* ax1 = 0 : 0축을 첫번째 축으로 지정 */

/* ax2 = 1 : 1축을 두번째 축으로 지정 */

/* latch = 1 : I/O출력을 유지시키는 latch mode 설정 */

/* function = 1 : 부등호 "="을 설정 */

/* out_mode = 0 : 개별축 I/O 사용모드로 설정 */

for(i=0; i<3; i++)

set_amp_enable(i,TRUE); /* AMP Power ON */

position_compare_enable(0,1); /* 0번째 보드 position compare enable */

position_compare_index_clear(0,3); /* 두축 index 모두 clear */

start_move(0,100000.0,10000.0,30);

position_compare_enable(0,0); /* 0번째 보드 position compare disable */

return mmc_error;

예 제

POSITION COMPARE

Page 335: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수사용설명서

A - 147

기 능

position_compare_enable(bd_num, flag)

1-85. Position Compare Enable

Position Compare 동작을 할것인지 여부를 설정하는 함수입니다.

bd_num인수의 범위는 0‾7까지입니다.

flag 인수 = 0 이면 Position Compare 동작을 하지 않는 disable 상태가 되며,

flag 인수 = 1 이면 Position Compare 동작을 하는 enable 상태가 됩니다.

함 수 명

사 용 예 #include "mmcwfp21.h"

int position_compare_enable(int bd_num, int flag)

Position Compare 동작완료후 재동작을 하기전에는 disable 상태로 시스템을 구동해

야 합니다. 한번 설정된 Data는 MMC보드가 초기화 되기전까지는 계속 설정된 상태를

유지하기 때문에 enable이 된상태에서 설정조건이 맞으면 지정 I/O가 ON/OFF 되기 때

문입니다.

또한 I/O를 latch모드로 사용할경우 Position Compare Disable을 시키면 출력된 I/O

의 접점이 모두 OFF 상태가 됩니다.

MMC_OK(0), MMC_TIMEOUT_ERR(2),MMC_ILLEGAL_PARAMETER(6)

NOTE

Error Return값

POSITION COMPARE

Page 336: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

A - 148

기 능

1-86. Position Compare Index Clear

함 수 명

사 용 예 #include "mmcwfp21.h"

int position_compare_index_clear(int bd_num, int index_sel)

본 함수는 "position_compare_enable" 함수를 이용하여 Position Compare 동작을

Enable 시킬때는 항상 같이 사용해야 됩니다.

Position Compare 동작이 한번 완료후 다시 동작을 시킬때는 Index가 초기화 되어있

지 않으면 동작을 하지 않습니다.

MMC_OK(0), MMC_TIMEOUT_ERR(2),MMC_ILLEGAL_PARAMETER(6)

NOTE

Error Return값

position_compare_index_clear(bd_num, index_sel)

설정된 Position Compare의 Index를 초기화를 시키는 함수입니다.

bd_num인수의 범위는 0‾7까지입니다.

index_sel 인수 = 1 이면 Position Compare 함수에서 index_sel을 1로 설정한

부분이 초기화 됩니다.

index_sel 인수 = 2 이면 Position Compare 함수에서 index_sel을 2로 설정한

부분이 초기화 됩니다.

index_sel 인수 = 3 이면 Position Compare 함수에서 index_sel을 설정한 부분이

모두 초기화 됩니다.

#include "mmcwfp21.h"

int main()

long addr = 0xD8000000;

int axes[BD_AXIS_NUM];

if(mmc_initx(1,&addr)) return mmc_error;

position_compare(1,1,1,0,1,1,1,0,10000.0,1000000);

for(i=0; i<3; i++)

set_amp_enable(i,TRUE); /* AMP Power ON */

position_compare_enable(0,1); /* 0번째 보드 position compare enable */

position_compare_index_clear(0,3); /* 두축 index 모두 clear */

start_move(0,100000.0,10000.0,30);

position_compare_enable(0,0); /* 0번째 보드 position compare disable */

return mmc_error;

예 제

POSITION COMPARE

Page 337: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수설명서

12 - 1

12-2 함수 Index

AA

all_done(void).......................................................................A-16

amp_fault_reset(int axis)............................................................A-79

amp_fault_set(int axis)..............................................................A-79

amp_fault_switch(int axis)...........................................................A-36

arc_2(double x_center, double y_center, double angle)................................A-20

arm_latch(int bd_num, int state).....................................................A-104

axis_all_status(INT ax, pINT istatus, pLONG lstatus, pDOUBLE dstatus)................A-89

axis_done(int axis)..................................................................A-28

axis_source(int axis)................................................................A-32

axis_state(int axis).................................................................A-30

CC

clear_status(int axis)...............................................................A-34

clear_stop(int axis).................................................................A-34

control_idle(int axis)...............................................................A-106

control_run(int axis)................................................................A-106

EE

error_message(int code, char *dst)...................................................A-2

_error_message(int code).............................................................A-2

FF

fget_amp_fault(int axis, int *action)................................................A-77

fget_amp_resolution(INT ax, pINT resolution).........................................A-129

fget_analog_limit(int ax, pint limit)...............................................A-141

fget_auto_sensor_off(int ax, int off)................................................A-144

fget_closed_loop(int axis, int *loop)................................................A-49

fget_control(int axis, int *control).................................................A-47

fget_control_timer(INT bn, pINT time)................................................A-135

fget_coordinate_direction(axis,*cord_dir)............................................A-120

fget_e_stop_rate(int axis, int *rate)................................................A-24

fget_encoder_direction(axis,*enco_dir)...............................................A-122

fget_encoder_ratioa(INT ax, pINT ratioa).............................................A-140

fget_encoder_ratiob(INT ax, pINT ratiob).............................................A-140

fget_error_limit(int axis, double *limit, int *action)...............................A-65

fget_feedback(int axis, int *device).................................................A-51

fget_filter(int axis, int *coeff)....................................................A-57

fget_home(int axis, int *action).....................................................A-71

fget_inposition_level(int axis, double *in_pos)......................................A-103

fget_in_position(int axis, double *in_pos)...........................................A-65

all_done ⇔ fset_positive_limit

Page 338: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 2

FF

fget_index_required(int axis, int *indexRequired)...................................A-73

fget_micro_stepper(int axis)........................................................A-45

fget_negative_limit(int axis, int *action)..........................................A-67

fget_negasitive_sw_limit(int axis, double *pos, int *action)........................A-61

fget_position_lpf(int ax, int filter)...............................................A-141

fget_position_notch_filter(int ax, pint filter).....................................A-143

fget_positive_limit(int axis, int *action)..........................................A-67

fget_positive_sw_limit(int axis, double *pos, int *action)..........................A-61

fget_servo_linear_flag(int ax, pint flag)...........................................A-116

fget_step_mode(int axis, int *mode).................................................A-54

fget_stepper(int axis)..............................................................A-45

fget_stop_rate(int axis, int *rate).................................................A-22

fget_unipolar(int axis).............................................................A-53

fget_v_filter(int axis, int *coeff).................................................A-57

fget_velocity_lpf(int ax, int filter)...............................................A-142

fget_velocity_notch_filter(int ax, pint filter).....................................A-143

fio_interrupt_enable(int bd_num, int state).........................................A-81

fio_interrupt_on_stop(int axis, int state)..........................................A-81

fio_interrupt_on_e_stop(int axis, int state)........................................A-81

frames_clear(int axis)..............................................................A-35

frames_interpolation(int axis)......................................................A-90

frames_left(int axis)...............................................................A-28

fset_amp_fault(int axis, int action)................................................A-77

fset_amp_resolution(INT ax, INT resolution).........................................A-131

fset_analog_limit(int ax, int limit)...............................................A-141

fset_auto_sensor_off(int ax, int off)...............................................A-144

fset_closed_loop(int axis, int loop)................................................A-49

fset_control(int axis, int control).................................................A-47

fset_control_timer(INT bn, INT time)................................................A-136

fset_coordinate_direction(axis,cord_dir)............................................A-121

fset_encoder_direction(axis,enco_dir)...............................................A-123

fset_encoder_ratioa(INT ax, INT ratioa).............................................A-140

fset_encoder_ratiob(INT ax, INT ratiob).............................................A-140

fset_e_stop_rate(int axis, int rate)................................................A-24

fset_error_limit(int axis, double limit, int action)................................A-65

fset_feedback(int axis, int device).................................................A-51

fset_filter(int axis, int *coeff)...................................................A-57

fset_home(int axis, int action).....................................................A-71

fset_inposition_level(int axis, int level)..........................................A-103

fset_in_position(int axis, double in_pos)...........................................A-65

fset_index_required(int axis, int indexRequired)....................................A-73

fset_micro_stepper(int axis)........................................................A-45

fset_negative_limit(int axis, int action)...........................................A-67

fget_positive_sw_limit ⇔ fset_v_integration

Page 339: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수설명서

12 - 3

FF

fset_negative_sw_limit(int axis, double pos, int action).............................A-61

fset_p_integration(int axis, int mode)...............................................A-59

fset_position_lpf(int ax, int filter)................................................A-142

fset_position_notch_filter(int ax, int filter).......................................A-143

fset_positive_limit(int axis, int action)............................................A-67

fset_positive_sw_limit(int axis, double pos, int action).............................A-61

fset_servo(int axis).................................................................A-45

fset_servo_linear_flag(int ax, int flag).............................................A-116

fset_stepper(int axis)...............................................................A-45

fset_step_mode(int axis, int mode)...................................................A-54

fset_stop_rate(int axis, int rate)...................................................A-22

fset_unipolar(int axis, int state)...................................................A-53

fset_v_filter(int axis, int *coeff)..................................................A-57

fset_v_integration(int axis, int mode)...............................................A-59

fset_velocity_lpf(int ax, int filter)................................................A-142

fset_velocity_notch_filter(int ax, int filter).......................................A-143

GG

get_abs_encoder_type(INT ax, pINT type)..............................................A-132

get_accel_limit(int axis, int *limit)................................................A-63

get_act_velocity(int axis)...........................................................A-102

get_amp_enable(int axis, int *state).................................................A-75

get_amp_enable_level(int axis, int *level)...........................................A-75

get_amp_fault(int axis, int *action).................................................A-77

get_amp_fault_level(int axis, int *level)............................................A-78

get_amp_reset_level(int axis, int *level)............................................A-79

get_amp_resolution(INT ax, pINT resolution)..........................................A-131

get_analog(int channel, int *value)..................................................A-40

get_analog_limit(int ax, pint limit)................................................A-141

get_auto_sensor_off(int ax, int off).................................................A-144

get_axis_runstop(bdNum,*stateBit)....................................................A-124

get_closed_loop(int axis, int *loop).................................................A-49

get_collision_prevent_flag(INT bd_num, pINT mode)....................................A-133

get_command(int axis, double *command)...............................................A-26

get_command_rpm(INT ax, pINT rpm_val)................................................A-130

get_com_velocity(int axis)...........................................................A-102

get_control(int axis, int *control)..................................................A-47

get_control_timer(INT bn, pINT time).................................................A-136

get_coordinate_direction(axis,*cord_dir).............................................A-121

get_dac_output(int axis, int *volt)..................................................A-41

get_e_stop_rate(int axis, int *rate).................................................A-24

get_electric_gear(int axis, double *ratio)...........................................A-56

get_abs_encoder_type ⇔ get_position

Page 340: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 4

GG

get_encoder_direction(axis,*enco_dir)...............................................A-123

get_encoder_ratioa(INT ax, pINT ratioa).............................................A-140

get_encoder_ratiob(INT ax, pINT ratiob).............................................A-140

get_encoder_rpm(INT ax, pINT rpm_val)...............................................A-130

get_endless_linearax(ax,*status)....................................................A-138

get_endless_range(ax,*range)........................................................A-138

get_endless_rotationax(ax,*status)..................................................A-138

get_error(int axis, double *error)..................................................A-26

get_error_limit(int axis, double *limit, int *action)...............................A-65

get_fast_read_encoder(INT ax, pINT status)..........................................A-135

get_feedback(int axis, int *device).................................................A-51

get_filter(int axis, int *coeff)....................................................A-57

get_home(int axis, int *action).....................................................A-71

get_home_level(int axis, int *level)................................................A-71

get_in_position(int axis, double *in_pos)...........................................A-65

get_inposition_level(int axis, int *level)..........................................A-103

get_index_required(int axis, int *indexRequired)....................................A-73

get_io(int port, long *value).......................................................A-37

get_latched_position(int axis, double *pos).........................................A-104

get_micro_stepper(int axis).........................................................A-45

get_negative_level(int axis, int *level)............................................A-69

get_negative_limit(int axis, int *action)...........................................A-67

get_negasitive_sw_limit(int axis, double *pos, int *action).........................A-61

get_out_io(int port, long *value)...................................................A-37

get_p_integration(int axis, int mode)...............................................A-59

get_position(int axis, double *position)............................................A-26

get_position_lpf(int ax, int filter)................................................A-142

get_position_notch_filter(int ax, pint filter)......................................A-143

get_positive_level(int axis, int *level)............................................A-69

get_positive_limit(int axis, int *action)...........................................A-67

get_positive_sw_limit(int axis, double *pos, int *action)...........................A-61

get_pulse_ratio(int axis, int *pgratio).............................................A-56

get_servo_linear_flag(int ax, pint flag)............................................A-116

get_spline_comm_count( int num).....................................................A-115

get_step_mode(int axis, int *mode)..................................................A-54

get_stepper(int axis)...............................................................A-45

get_stop_rate(int axis, int *rate)..................................................A-22

get_sync_control(int *state)........................................................A-87

get_sync_gain(int *coeff)...........................................................A-87

get_sync_position(double *pos_m, double *pos_s).....................................A-87

get_unipolar(int axis)..............................................................A-53

get_v_filter(int axis, int *coeff)..................................................A-57

get_v_integration(int axis, int *mode)..............................................A-59

get_vel_limit(int axis, int *limit).................................................A-63

get_velocity_lpf(int ax, int filter)................................................A-142

get_velocity_notch_filter(int ax, pint filter)......................................A-143

get_positive_level ⇔ move

Page 341: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수설명서

12 - 5

HH

home_switch(int axis)................................................................A-36

II

in_motion(int axis)..................................................................A-28

II

in_position(int axis)................................................................A-28

in_sequence(int axis)................................................................A-28

io_interrupt_enable(int bd_num, int state)...........................................A-81

io_interrupt_on_e_stop(int axis, int state)..........................................A-81

io_interrupt_on_stop(int axis, int state)............................................A-81

io_interrupt_pcirq(int bd_num, int state)............................................A-84

io_interrupt_pcirq_eoi(int bd_num, int state)........................................A-84

LL

latch(int bd_num)....................................................................A-104

latch_status(int bd_num).............................................................A-104

MM

map_axes(int n_axes, int *map_array).................................................A-15

mmcDelay(long duration)..............................................................A-43

mmc_all_axes(void)...................................................................A-45

mmc_axes(int bdNum, int *axes).......................................................A-45

mmc_dwell(int axis, long duration)...................................................A-43

mmc_error............................................................................A-2

mmc_initx(totalbdnum,*Addr)..........................................................A-1

mmc_io_trigger(int axis, int butNo, int state).......................................A-43

motion_done(int axis)................................................................A-28

move(int ax, double pos, double velo, int accel).....................................A-5

move_2(double x, double y)...........................................................A-18

move_3(double x, double y, double z).................................................A-18

move_4(double x, double y, double z, double w).......................................A-18

move_2ax(int ax1, int ax2, double x, double y, double vel, int acc)..................A-115

move_2axgr(groupNum,ax1,ax2,x,y,vel,acc).............................................A-126

move_3ax(int ax1, int ax2, int ax3,double x, double y, double z,double vel, int acc).A-115

move_3axgr(groupNum,ax1,ax2,ax3,x,y,z,vel,acc).......................................A-126

move_4ax(int ax1, int ax2, int ax3, int ax4,

double x, double y, double z,double w, double vel, int acc).......................A-115

move_4axgr(groupNum,ax1,ax2,ax3,ax4,x,y,z,w,vel,acc).................................A-126

move_all(int len, int *ax, double *pos, double *velo, int *accel)....................A-9

move_n(double *x)....................................................................A-18

move_nax(int len, int *axes, double *pos, double vel ,int acc).......................A-115

mmcsw_version_chk(pINT ver)..........................................................A-129

move_2 ⇔ set_arc_division

Page 342: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 6

NN

neg_switch(int axis)................................................................A-36

PP

pos_switch(int axis)................................................................A-36

position_compare(index_sel, index_num, bitNo, ax1, ax2, latch, function,out_mode,

pos, time).........................................................A-145

position_compare_enable(bd_num, flag)...............................................A-147

position_compare_index_clear(bd_num, index_sel).....................................A-148

RR

r_move(int ax, double dist, double velo, int accel).................................A-5

rect_move(int ax1, int ax2, double *pntxy, double vel, int acc).....................A-94

reset_bit(int bitNo)................................................................A-39

rs_move(int ax, double dist, double velo, int accel)................................A-7

SS

s_move(int ax, double pos, double velo, int accel)..................................A-7

s_move_all(int len, int *ax, double *pos, double *vel, int *accel)..................A-11

set_abs_encoder_type(INT ax, INT type)..............................................A-132

set_accel_limit(int axis, int limit)................................................A-63

set_amp_enable(int axis, int state).................................................A-75

set_amp_enable_level(int axis, int level)...........................................A-75

set_amp_fault(int axis, int ction)..................................................A-77

set_amp_fault_level(int axis, int level)............................................A-78

set_amp_reset_level(int axis, int level)............................................A-79

set_amp_resolution(INT ax, INT resolution)..........................................A-131

set_analog_limit(int ax, int limit)................................................A-141

set_analog_offset(int ax, int offset)...............................................A-119

set_arc_division(double degrees)....................................................A-20

set_auto_sensor_off(int ax, int off)................................................A-144

set_axis_runstop(bdNum,stateBit)....................................................A-124

set_bit(int bitNo)..................................................................A-39

set_closed_loop(int axis, int loop).................................................A-49

set_collision_prevent(INT max, INT sax, INT add_sub, INT non_equal, double pos).....A-134

set_collision_prevent_flag(INT bd_num, INT mode)....................................A-133

set_command(int axis, double command)...............................................A-26

set_control(int axis, int control)..................................................A-47

set_control_timer(INT bn, INT time).................................................A-136

set_coordinate_direction(axis,cord_dir).............................................A-121

set_dac_output(int axis, int volt)..................................................A-41

set_dpram_addr(int bdNum, long Addr)................................................A-1

set_e_stop(int axis)................................................................A-24

set_axis_runstop ⇔ set_spl_auto_off

Page 343: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수설명서

12 - 7

SS

set_e_stop_rate(int axis, int rate)..................................................A-24

set_electric_gear(int axis, double ratio)............................................A-56

set_encoder_direction(axis,enco_dir).................................................A-123

set_encoder_ratioa(INT ax, INT ratioa)...............................................A-140

set_encoder_ratiob(INT ax, INT ratiob)...............................................A-140

set_endless_linearax(ax,status,resolution)...........................................A-138

set_endless_range(ax,range)..........................................................A-138

set_endless_rotationax(ax,status,resolution).........................................A-138

set_error_limit(int axis, double limit, int action)..................................A-65

set_fast_read_encoder(INT ax, INT status)............................................A-135

set_feedback(int axis, int device)...................................................A-51

set_filter(int axis, int *coeff).....................................................A-57

set_home(int axis, int action).......................................................A-71

set_home_level(int axis, int level)..................................................A-71

set_in_position(int axis, double in_pos).............................................A-65

set_index_required(int axis, int indexRequired)......................................A-73

set_inposition_level(int axis, int level)............................................A-103

set_interpolation(int len, int *ax,long *delt_s,int flag)............................A-90

set_io(int port, long value).........................................................A-37

set_micro_stepper(int axis)..........................................................A-45

set_move_accel(int accel)............................................................A-16

set_move_speed(double speed).........................................................A-16

set_negative_level(int axis, int level)..............................................A-69

set_negative_limit(int axis, int action).............................................A-67

set_negative_sw_limit(int axis, double pos, int action)..............................A-61

set_p_integration(int axis, int mode)................................................A-59

set_position(int axis, double position)..............................................A-26

set_position_lpf(int ax, int filter).................................................A-142

set_position_notch_filter(int ax, int filter)........................................A-143

set_positive_level(int axis, int level)..............................................A-69

set_positive_limit(int axis, int action).............................................A-67

set_positive_sw_limit(int axis, double pos, int action)..............................A-61

set_pulse_ratio(int axis, int pgratio)...............................................A-54

set_servo(int axis)..................................................................A-45

set_servo_linear_flag(int ax, int flag)..............................................A-116

set_spl_auto_off(int bd_num, int mode)...............................................A-108

set_step_mode(int axis, int mode)....................................................A-54

set_stepper(int axis)................................................................A-45

set_stop(int axis)...................................................................A-22

set_stop_rate(int axis, int rate)....................................................A-22

set_sync_map_axes(int master_ax, int slave_ax).......................................A-87

set_sync_control(int state)..........................................................A-87

set_sync_gain(int coeff).............................................................A-87

set_step_mode ⇔ smove_n

Page 344: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 8

SS

set_unipolar(int axis, int state)...................................................A-53

set_v_filter(int axis, int *coeff)..................................................A-57

set_v_integration(int axis, int mode)...............................................A-59

set_vel_limit(int axis, int limit)..................................................A-63

set_velocity_lpf(int ax, int filter)................................................A-142

set_velocity_notch_filter(int ax, int filter).......................................A-143

smove_2(double x, double y).........................................................A-19

smove_3(double x, double y, double z)...............................................A-19

smove_4(double x, double y, double z, double w).....................................A-19

smove_2ax(int ax1, int ax2,double x, double y, double vel, int acc).................A-116

smove_2axgr(groupNum,ax1,ax2,x,y,vel,acc)...........................................A-127

smove_3ax(int ax1, int ax2, int ax3,double x, double y,double z,

double vel, int acc).............................................................A-116

smove_3axgr(groupNum,ax1,ax2,ax3,x,y,z,vel,acc).....................................A-127

smove_4ax(int ax1, int ax2, int ax3, int ax4,double x, double y,

double z,double w, double vel, int acc)..........................................A-116

smove_4axgr(groupNum,ax1,ax2,ax3,ax4,x,y,z,w,vel,acc)...............................A-127

spl_arc_move2(double x_center, double y_center, double *pntxy,

double vel, int acc, int dir)....................................................A-98

spl_arc_move3(double x_cen, double y_cen, double *pntxyz,double vel,

int acc, int dir)................................................................A-98

spl_arc_move2ax(int ax1, int ax2, double x_center,double y_center,

double *pntxy,double vel, int acc, int dir)......................................A-108

spl_arc_move3ax(int ax1, int ax2, int ax3,double x_cen, double y_cen,

double *pntxyz,double vel, int acc, int dir).....................................A-108

spl_arc_movenax(INT len, pINT ax, double x_center, double

y_center, DOUBLE pnt, double vel, INT acc, INT cdir)............................A-108

spl_line_move2(double *pntxy, double vel, int acc)..................................A-97

spl_line_move3(double *pntxyz, double vel, int acc).................................A-97

spl_line_move2ax(int ax1, int ax2,double *pntxy, double vel, int acc)...............A-108

spl_line_move3ax(int ax1, int ax2, int ax3,double *pntxyz, double vel, int acc).....A-108

spl_line_movenax(INT len, pINT ax, pDOUBLE pnt, double vel,INT acc).................A-108

spl_move(int len, int ax1, int ax2, int ax3,double *pntx,double *pnty,

double *pntz,double vel, int acc)................................................A-94

spl_move_data(INT spl_num, INT len, INT ax1, INT ax2,INT ax3, pDOUBLE pnt1,

pDOUBLE pnt2,pDOUBLE pnt3, double vel, INT acc).................................A-137

spl_movex(INT spl_num, INT ax1, INT ax2, INT ax3)...................................A-137

smove_n(double *x)..................................................................A-19

smove_nax(int len, int *axes, double *pos, double vel, int acc).....................A-116

start_move(int ax, double pos, double velo, int accel)..............................A-5

start_move_all(int len, int *ax,double *pos, double *velo, int accel)...............A-9

start_r_move(int ax, double dist, double velo, int accel)...........................A-5

start_rs_move(int ax, double dist, double velo, int accel)..........................A-7

smove_nax ⇔ wait_for_all

Page 345: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter12

함수설명서

12 - 9

SS

start_s_move(int ax, double pos, double velo, int accel)............................A-7

start_s_move_all(int len, int *ax,double *pos, double *velo, int *accel)............A-11

start_t_move(int ax, double pos, double velo, int accel, int decel).................A-5

start_t_move_all(int len, int *ax, double *pos, double *vel,int *acc, int *dec).....A-9

start_tr_move(int ax, double dist, double velo, int accel, int decel)...............A-5

start_trs_move(int ax, double dist, double velo, int accel, int decel)..............A-7

start_ts_move(int ax, double pos, double velo, int accel, int decel)................A-7

start_ts_move_all(int len, int *ax, double *pos, double *vel,int *acc, int *dec)....A-11

start_tr_move(int ax, double dist, double velo, int accel, int decel)...............A-5

start_trs_move(int ax, double dist, double velo, int accel, int decel)..............A-7

start_ts_move(int ax, double pos, double velo, int accel, int decel)................A-7

start_ts_move_all(int len, int *ax, double *pos, double *vel,int *acc, int *dec)....A-11

TT

t_move(int ax, double pos, double velo, int accel, int decel).......................A-5

t_move_all(int len, int *ax, double *pos, double *vel,int *acc, int *dec)...........A-9

tr_move(int ax, double pos, double velo, int accel, int decel)......................A-5

trs_move(int ax, double pos, double velo, int accel, int decel).....................A-7

ts_move(int ax, double pos, double velo, int accel, int decel)......................A-7

ts_move_all(int len, int *ax, double *pos, double *vel,int *acc, int *dec)..........A-11

VV

v_move(int axis, double velo, int accel)............................................A-13

v_move_stop(int axis)...............................................................A-13

version_chk(INT bn, pINT ver).......................................................A-128

WW

wait_for_done(int ax)...............................................................A-5

wait_for_all(int len, int *ax)......................................................A-9

Page 346: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 10

MEMO

Page 347: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12 - 11

MEMO

Page 348: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

.Step 모타 제어 설정 프로그램(1) 13-1 page

-.Step 모타 제어 설정 프로그램(2) 13-2 page

-.Micro Stepper 제어 설정 프로그램 13-3 page

-.Encoder 타입 설정 프로그램 13-4 page

-.Closed Loop 제어시 PID 게인 설정 프로그램 13-6 page

-.축의 상태 Monitor & 초기화 프로그램 13-8 page

-.현재 위치 Monitor 프로그램 13-11page

-.실제 속도 Monitor 프로그램 13-12page

-.AD Converter 12bit 데이타를 읽는 프로그램 13-13page

-.원호 Coordinated 동작 프로그램 13-14page

-.직선 Coordinated 동작 프로그램 13-15page

-.Coordinated 동작 프로그램 13-16page

-.EVENT 설정 프로그램 13-18page

-.User IO Output 출력 프로그램 13-20page

-.IO 입력 비트 0 으로 인터럽트를 발생 프로그램 13-22page

-.Electronic Gearing 설정 프로그램 13-24page

-.홈센서 이동 프로그램 13-25page

-.Postive/Negative Limit의 Center 점으로 이동 프로그램 13-27page

-.Z상 Index Pulse를 이용한 Homing 13-29page

-.다축 제어 프로그램 13-31page

-.0축과 1축의 동기제어 프로그램 13-31page

제 13 장부록

SAMPLE PROGRAM

Page 349: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

1

/* Step 모타 제어 설정 프로그램(1) */

#include <stdio.h>

#include "mmcdef.h"

int Err(int err);

void Axisconfig(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Axisconfig();

printf(" axis is configured \n");

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Axisconfig(void)

int axes[] = 0;

set_stepper(axes[0]); /* 0축을 stepper 설정 */

set_step_mode(0, FALSE); /* TWO PULSE(CW+CCW) 방식 PULSE 출력 */

set_pulse_ratio(axes[0], 8);

set_electric_gear(axes[0], 8.0);

set_closed_loop(axes[0], FALSE); /* OPEN LOOP 제어 */

set_feedback(axes[0], FB_ENCODER); /* 엔코더 피드백 */

STEP 모타 제어 설정 프로그램(1)

Page 350: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

2

/* Config2.c */

/* Step 모타 제어 설정 프로그램(2) */

#include <stdio.h>

#include "mmcdef.h"

int Err(int err);

void Axisconfig(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Axisconfig();

printf(" axis is configured \n");

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Axisconfig(void)

int axes[] = 0;

set_stepper(axes[0]); /* 0축을 stepper 설정 */

set_step_mode(0, FALSE); /* TWO PULSE(CW+CCW) 방식 PULSE 출력 */

set_pulse_ratio(axes[0], 8);

set_electric_gear(axes[0], 8.0);

set_closed_loop(axes[0], FALSE); /* OPEN LOOP 제어 */

set_feedback(axes[0], FB_ENCODER); /* 엔코더 피드백 */

STEP 모타 제어 설정 프로그램(2)

Page 351: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

3

/* Config3.c */

/* Micro Stepper 제어 설정 프로그램 */

#include <stdio.h>

#include "mmcdef.h"

int Err(int err);

void Axisconfig(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Axisconfig();

printf("axis is configured\n");

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Axisconfig(void)

int axes[] = 0;

set_micro_stepper(axes[0]); /* micro stepper 설정 */

set_closed_loop(axes[0], FALSE); /* open loop 제어 */

set_feedback(axes[0], FB_ENCODER); /* 엔코더 피드백 */

MICRO STEPPER 제어 설정 프로그램

Page 352: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

4

/* Encoder.c */

/* Encoder 타입 설정 프로그램장치 사양과 배선에 주의하여야 하며, 아날로그 입력시 +/-10 volts 범위 이내여야 한다 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void select_feedback(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

select_feedback();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void select_feedback(void)

int done, key;

printf(" e = encoder feedback\n u = unipolar analog feedback\n

b = bipolar analog feedback\n ESC = exit \n\n");

for(done = 0; !done;)

if (kbhit())

key = getch();

switch (key)

case 'e':

printf(" 0 : encoder feedback control. \r");

set_feedback(0,FB_ENCODER); /* encoder feedback */

break;

case 'u':

printf(" 0 : unipolar analog feedback control. \r");

set_feedback(0,FB_UNIPOLAR); /* 0 ‾ 10 volt ananlog feedback */

break;

ENCODER 타입 설정 프로그램

Page 353: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

5

case 'b':

printf(" 0 : bipolar analog feedback control. \r");

set_feedback(0,FB_BIPOLAR); /* -10 ‾ +10 volt ananlog feedback */

break;

case 0x1B:

done= 1;

break;

default:

break;

display();

void display(void)

double com,pos;

int chan;

get_command(0, &com);

get_position(0, &pos);

get_analog(0, &chan); /* AD 채널에 연결된 아날로그 피드백 값을 읽는다. */

printf(" command:%8.2lf, position:%8.2lf, analog channel 0: %5d \r", com, pos, chan);

ENCODER 타입 설정 프로그램

Page 354: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

6

/* Pid.c */

/* Closed Loop 제어시 PID 게인 설정 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void pid(void);

void pid_move(void);

void display(int gain_p);

int coeff[GAIN_NUMBER];

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

set_amp_enable(0, TRUE);

pid();

pid_move();

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void pid(void)

set_servo(0);

set_control(0, V_CONTROL); /* 속도 제어 */

set_closed_loop(0,TRUE); /* closed loop 제어 */

set_p_integration(0, IN_ALWAYS); /* 위치 loop제어시 항상 적분제어 */

set_v_integration(0, IN_ALWAYS); /* 속도 loop제어시 항상 적분제어 */

get_filter(0, coeff); /* 0 축의 위치 게인을 읽음 */

void pid_move(void)

while(!mmc_error|| !kbhit())

coeff[GA_P]= 100; /* 위치 비례 게인을 100으로 설정 */

set_filter(0, coeff);

start_move(0, 50000.0, 50000.0, 20);

while(!motion_done(0)) display(coeff[GA_P]);

coeff[GA_P]= 150; /* 위치 비례 게인을 100으로 설정 */

CLOSED LOOP 제어시 PID 게인 설정 프로그램

Page 355: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

7

set_filter(0, coeff);

start_move(0, 0.0, 50000.0, 20);

while(!motion_done(0)) display(coeff[GA_P]);

void display(int gain_p)

double err;

get_error(0, &err);

get_filter(0, &gain_p );

printf("err: %8.2lf gain_p:%3d\r", err, gain_p);

CLOSED LOOP 제어시 PID 게인 설정 프로그램

Page 356: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

8

/* Ax_info.c */

/* 축의 상태 Monitor & 초기화 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include "mmcdef.h"

int Err(int err);

void send_com(void);

void display(void);

int axes = 0;

char *states[] = "NO_EVENT",

"STOP_EVENT",

"E_STOP_EVENT",

"ABORT_EVENT" /* AMP disable */

;

char *sources[] = "ST_NONE", /* 0x000 정상동작 */

"ST_HOME_SWITCH", /* 0x001 홈센서 감지 */

"ST_POS_LIMIT", /* 0x002 + limit 감지 */

"ST_NEG_LIMIT", /* 0x004 - limit 감지 */

"ST_AMP_FAULT", /* 0x008 amp fault */

"ST_A_LIMIT", /* 0x010 가감속 limit over */

"ST_V_LIMIT", /* 0x020 속도 limit over */

"ST_X_NEG_LIMIT", /* 0x040 + position limit 벗어남 */

"ST_X_POS_LIMIT", /* 0x080 - position limit 벗어남 */

"ST_ERROR_LIMIT", /* 0x100 위치오차 limit 초과 */

"ST_PC_COMMAND", /* 0x200 이벤트 발생상태 */

"ST_OUT_OF_FRAMES", /* 0x400 frame buffer 가 full */

"ST_AMP_POWER_ONOFF" /* 0x800 amp disable 상태 */

;

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

send_com();

display();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

축의 상태 MONITOR & 초기화 프로그램

Page 357: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

9

void send_com(void) /* 0‾3 축 선택 명령 */

int i, done= FALSE;

set_amp_enable(0, TRUE);

printf(" <ESC> = exit, select(0‾3), m = move,h = goto 0, s = stop event, c = clear\n");

while(!done)

if (kbhit())

switch(getch())

case 0x1B:

done = TRUE;

break;

case '0': /* 0축 선택 */

axes = 0;

break;

case '1': /* 1축 선택 */

axes = 1;

break;

case '2': /* 2축 선택 */

axes = 2;

break;

case '3': /* 3축 선택 */

axes = 3;

break;

case 'm':

set_amp_enable(axes, TRUE);

start_move(axes, 50000.0,30000.0,20);

break;

case 'h':

set_amp_enable(axes, TRUE);

start_move(axes, 0.0,30000.0,20);

break;

case 's':

set_stop(axes); /* stop event 지정 */

break;

case 'c':

for(i=0; i<8; i++)

clear_status(i);

frames_clear(i);

amp_fault_reset(i);

set_amp_enable(i, FALSE);

break;

default:

break;

display();

return ;

축의 상태 MONITOR & 초기화 프로그램

Page 358: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

10

void display(void) /* 축 상태 표시 */

int state, source,i;

char state_str[15], source_str[20];

state = axis_state(axes); /* event 번호 저장 */

source = axis_source(axes); /* 축 상태 번호 저장 */

strcpy(state_str, states[state]); /* event 내용 저장 */

for (i=0 ; i<12; i++) /* 축 상태 내용 저장 */

if (source == 0) strcpy(source_str, sources[0]);

if (source & (1<<i)) strcpy(source_str, sources[i+1]);

printf(" %d axis_state:%10s , axis_source:%20s source:%d \r"

, axes,state_str, source_str, source);

축의 상태 MONITOR & 초기화 프로그램

Page 359: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

11

/* Position.c */

/* 현재 위치 Monitor 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void send_com(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

send_com();

display();

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void send_com(void)

set_amp_enable(0,FALSE);

set_position(0, 0.0);

frames_clear(0);

set_amp_enable(0,TRUE);

v_move(0, 10000.0, 20);

void display(void)

double pos;

while(!kbhit())

get_position(0, &pos);

printf(" POSITION: %8.0lf\r", pos); /* 4체배된 마이너스 값 */

v_move_stop(0);

현재 위치 MONITOR 프로그램

Page 360: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

12

/* Velocity.c */

/* 실제 속도 Monitor 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void Actual_v(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Actual_v();

set_amp_enable(0,FALSE);

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Actual_v(void)

set_amp_enable(0,FALSE);

set_position(0, 0.0);

set_amp_enable(0,TRUE);

start_move(0, 100000.0 ,20000.0, 15);

clrscr();

while(!axis_done(0))

printf("command v: %d actual v: %d difference:%d [pulse/sec]\r",

get_com_velocity(0), get_act_velocity(0),

(get_com_velocity(0) - get_act_velocity(0)) );

실제 속도 MONITOR 프로그램

Page 361: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

13

/* Ad_con.c */

/* AD Converter 12bit 데이타를 읽는 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

int read_ad(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

display();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

int read_ad(void)

int val;

get_analog(0, &val); /* 12bit data (+2047 ‾ -2048) */

return val;

void display(void)

int val1;

double val2;

while(!kbhit())

val1 = read_ad();

val2 = read_ad() * 10/2047; /* 가변저항으로 최대입력범위 조정시 +10 ‾ -10 */

printf(" analog input channel_0 : %d = %5.2lf[V] \r", val1, val2);

AD CONVERTER 12BIT 데이터를 읽는 프로그램

Page 362: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

14

/* Coord_c.c */

/* 원호 Coordinated 동작 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void Coord_cir(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Coord_cir();

display();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Coord_cir(void) /* circular coordinated motion */

int axes[2]=0, 1,i;

map_axes(2, axes); /* 0, 1 축 정의 */

for(i=0 ; i<2 ;i++)

set_amp_enable(i, FALSE);

set_position(i, 0.0);

set_amp_enable(i, TRUE);

map_axes(2, axes);

set_arc_division(100.0);

set_move_accel(20);

arc_2(8000.0, 8000.0, 360);

void display(void)

double x, y;

while(!kbhit())

get_command(0, &x);

get_command(1, &y);

printf(" x: %12.4lf y: %12.4lf\r", x, y);

원호 COORDINATED 동작 프로그램

Page 363: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

15

/* Coord_l.c */

/* 직선 Coordinated 동작 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void Coord_lin(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

Coord_lin();

display();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Coord_lin(void) /* linear coordinated motion */

int axes[2]=0, 1, i;

map_axes(2,axes); /* 0, 1 축 정의 */

for(i=0 ; i<2 ;i++)

set_amp_enable(i,FALSE);

set_position(i, 0.0);

set_amp_enable(i,TRUE);

set_move_speed(10000.0);

set_move_accel(20);

move_2(10000.0, 10000.0);

void display(void)

double x,y;

clrscr();

while(!kbhit())

get_command(0,&x);

get_command(1,&y);

printf("x: %12.4lf y: %12.4lf\r",x,y);

직선 COORDINATED 동작 프로그램

Page 364: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

16

/* Coordi.c */

/* Coordinated 동작 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void Coord_lin(double x, double y);

void Coord_cir(double x, double y, double d);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

int i;

Err(err); /* 에러 상태 확인 */

for(i=0 ; i<2 ;i++)

set_position(i, 0.0);

set_amp_enable(i,TRUE);

while(!kbhit())

Coord_lin(20000.0, 0.0); /* (20000, 0) 으로 직선 이동 */

while(!all_done()) display();

Coord_cir(20000.0, 10000.0, 180); /* (20000, 20000)로 원형 이동 */

while(!all_done()) display();

Coord_lin(0.0, 20000.0); /* (0, 20000) 으로 직선 이동 */

while(!all_done()) display();

Coord_cir(0.0, 10000.0, -180); /* (0, 0)으로 원형 이동 */

while(!all_done()) display();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void Coord_lin(double x, double y) /* linear coordinated motion */

int axes[2]=0, 1;

map_axes(2, axes);

set_move_speed(10000.0);

COORDINATED 동작 프로그램

Page 365: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

17

set_move_accel(20);

move_2(x, y);

void Coord_cir(double x, double y, double d) /* circular coordinated motion */

int axes[2]=0, 1,i;

map_axes(2, axes);

set_arc_division(50.0);

set_move_accel(20);

arc_2(x, y, d);

void display(void)

double x, y;

get_command(0, &x);

get_command(1, &y);

printf(" x: %12.4lf y: %12.4lf \r", x, y);

COORDINATED 동작 프로그램

Page 366: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

18

/* Event.c */

/* EVENT 설정 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void limit_set(void);

void send_com(void);

void recover(int dir);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

limit_set();

send_com();

return 0;

int Err(int err)

if(err)

printf(" MMC Initial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void limit_set(void)

set_positive_sw_limit(0, 50000.0, STOP_EVENT); /* stop event 지정 */

set_negative_sw_limit(0, -50000.0, E_STOP_EVENT); /* E_stop event 지정 */

set_stop_rate(0, 20); /* stop 감속 시간 설정 */

set_e_stop_rate(0, 10); /* E_stop 감속 시간 설정 */

void send_com(void)

int event, dir;

set_position(0, 0.0);

set_amp_enable(0, TRUE);

frames_clear(0);

v_move(0, 30000.0, 20);

printf("press any key for exit\n");

while(!kbhit())

display();

event = axis_state(0);

EVENT 설정 프로그램

Page 367: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

19

switch (event)

case STOP_EVENT: /* stop event 발생 */

dir= -1;

recover(dir);

break;

case E_STOP_EVENT: /* e stop event 발생 */

dir= 1;

recover(dir);

default:

break;

clear_status(0);

v_move_stop(0);

start_move(0, 0.0, 30000.0, 20);

void display(void)

double pos;

get_position(0, &pos);

printf(" -limit:-50000, position: %8.2lf, +limit: 50000 \r", -pos/4);

void recover(int dir)

while(!motion_done) display();

set_positive_sw_limit(0, 50000.0, NO_EVENT);

set_negative_sw_limit(0, -50000.0, NO_EVENT);

clear_status(0); /* event 에서 벗어남 */

frames_clear(0);

v_move(0, 30000.0*dir, 20); /* 반대로 진행 */

set_positive_sw_limit(0, 50000.0, STOP_EVENT);

set_negative_sw_limit(0, -50000.0, E_STOP_EVENT);

EVENT 설정 프로그램

Page 368: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

20

/* I_o.c */

/* User IO Output 출력 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void send_com(void);

void io(double pos, double step, double begin);

void display(double pos);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

set_position(0,0.0);

set_amp_enable(0,TRUE);

send_com();

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void send_com(void)

double pos, begin, end, width, step;

begin =0.0;

end = begin + 50000.0;

width= end - begin;

step= width/32; /* 구간을 32점으로 나눔 (out 32점) */

while(!kbhit())

start_move(0,end, 50000.0, 20);

while(!motion_done(0))

get_position(0, &pos); /* 각 구간의 위치를 읽는다. */

io(pos, step, begin); /* 구간마다 output에 데이타를 보냄 */

display(pos);

start_move(0,begin, 50000.0, 20);

while(!motion_done(0))

get_position(0, &pos);

USER IO OUTPUT 출력 프로그램

Page 369: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

21

io(pos,step, begin);

display(pos);

void io(double pos, double step, double begin)

int n;

pos = -pos/4;

for(n=1; n<33; n++)

if(pos < (begin+step*n))

set_io(0, (0xffffffff<<n-1));

return;

void display(double pos)

long value;

get_out_io(0, &value);

printf("position: %8.2lf IO:%8.2x \r", pos, value);

USER IO OUTPUT 출력 프로그램

Page 370: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

22

/* Io_int.c */

/* IO 입력 비트 0 으로 인터럽트를 발생 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void config_int(void);

void send_com(long val);

void display(void);

int main()

long val;

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

set_amp_enable(0, TRUE);

config_int(); /* 인터럽트 발생 enable */

while(!kbhit())

get_io(0, &val);

send_com(val);

io_interrupt_enable(0, FALSE);

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void config_int()

set_stop_rate(0, 10);

io_interrupt_on_stop(0, TRUE);

io_interrupt_enable(0, TRUE);

void send_com(long val)

switch (val)

case ‾0x00000002: /* 2번 bit 입력시 100000으로 이동 */

start_move(0, 100000.0, 50000.0, 20);

while(!axis_done(0))

display();

IO입력 비트 0으로 인트럽트를 발생 프로그램

Page 371: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

23

break;

case ‾0x00000004: /* 3번 bit 입력시 0으로 이동 */

start_move(0, 0.0, 50000.0, 20);

while(!axis_done(0))

display();

break;

case ‾0x00000001: /* 인터럽트 발생시 종료 */

printf("interrupted\n");

while(!axis_done(0));

io_interrupt_enable(0, FALSE);

clear_status(0);

start_move(0, 0.0, 10000.0, 20);

while(!axis_done(0))

display();

exit(1);

break;

default:

break;

void display(void)

double pos;

get_position(0, &pos);

printf("position: %8.2lf \r", pos);

IO입력 비트 0으로 인트럽트를 발생 프로그램

Page 372: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

24

/* Gearing.c */

/* Electronic Gearing 설정 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void send_com(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

set_electric_gear(0, 8.0); /* 0 축과 1축이 1:4 로 회전 */

set_electric_gear(1, 32.0);

send_com();

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void send_com(void)

int i;

for(i=0 ; i<2 ; i++)

set_amp_enable(i,TRUE);

start_move(i, 5000.0, 3000.0, 20);

while(!kbhit())

display();

void display(void)

double m_pos, s_pos;

get_position(0, &m_pos);

get_position(1, &s_pos);

printf("position1: %8.2lf, position2: %8.2lf\r", m_pos, s_pos);

ELECTRONIC GEARING 설정 프로그램

Page 373: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

25

/* Homing.c */

/* 홈센서 이동 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void limit_set(void);

void home_event(int dir);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

int dir = 1;

Err(err); /* 에러 상태 확인 */

limit_set(); /* event 설정 */

set_amp_enable(0, TRUE);

printf("quickly searching for home sensor\n");

frames_clear(0);

v_move(0, 50000.0, 10);

while(!motion_done(0))

display();

if(axis_state(0) == 2) /* +/- limit 접근시 역회전 */

set_positive_limit(0, NO_EVENT);

set_negative_limit(0, NO_EVENT);

clear_status(0);

dir = -1;

v_move(0, -50000.0, 10);

while(!motion_done(0))

display();

home_event(dir); /* 홈센서 접근시 */

set_amp_enable(0, FALSE);

set_position(0, 0.0);

printf("\n Axis is home!");

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err : %s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void limit_set(void) /* stop event 설정 */

홈센서 이동 프로그램

Page 374: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

26

set_positive_limit(0, E_STOP_EVENT);

set_positive_level(0, HIGH);

set_negative_limit(0, E_STOP_EVENT);

set_negative_level(0, HIGH);

set_e_stop_rate(0, 10);

set_home(0, STOP_EVENT);

set_home_level(0, HIGH);

set_stop_rate(0, 20);

void home_event(int dir) /* 홈센서 접근시 느린속도로 다시 접근 */

set_home(0, NO_EVENT);

clear_status(0);

printf("slowly searching for home sensor\n");

start_r_move(0, -20000.0*dir, 20000.0, 20);

while(!motion_done(0))

display();

set_home(0,STOP_EVENT); /* 느리게 다시 접근 */

set_stop_rate(0, 10);

frames_clear(0);

v_move(0,1000.0*dir, 50);

while(!motion_done(0))

display();

set_home(0, NO_EVENT);

clear_status(0);

void display(void)

double pos;

get_position(0, &pos);

printf("position: %8.2lf \r", pos);

홈센서 이동 프로그램

Page 375: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

27

/* Homing_m.c */

/* Postive/Negative Limit의 Center 점으로 이동 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void limit_set(void);

void find_neg_limit(double* neg_limit);

void find_pos_limit(double* pos_limit);

void homing(double home);

void display(void);

int main()

long addr = 0xD8000000;

double neg_limit, pos_limit;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

limit_set(); /* event 설정 */

find_neg_limit(&neg_limit);

printf("\n neg: %lf\n ", neg_limit);

find_pos_limit(&pos_limit);

printf("\n pos: %lf\n ", pos_limit);

homing((-neg_limit/4-pos_limit/4)/2); /* 중간점 계산 */

clear_status(0);

set_amp_enable(0, FALSE);

set_position(0, 0.0);

printf("\n Axis is home!");

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void limit_set(void) /* stop event 설정 */

set_negative_limit(0, STOP_EVENT);

set_negative_level(0, HIGH);

set_positive_limit(0, STOP_EVENT);

set_positive_level(0, HIGH);

set_stop_rate(0, 20);

void find_neg_limit(double* neg_limit) /* -limit 위치 저장 */

POSITIVE/NEGATIVE LIMIT의 CENTER 점으로 이동 프로그램

Page 376: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

28

frames_clear(0);

v_move(0, -30000.0, 20);

while(!motion_done(0))

display();

get_position(0, neg_limit);

set_negative_limit(0, NO_EVENT);

clear_status(0);

void find_pos_limit(double* pos_limit) /* +limit 위치 저장 */

frames_clear(0);

v_move(0, 30000.0, 20);

while(!motion_done(0))

display();

get_position(0, pos_limit);

set_positive_limit(0, NO_EVENT);

clear_status(0);

void homing(double home) /* 중심으로 이동 */

start_move(0, home, 30000.0, 20);

while(!motion_done(0))

display();

void display(void)

double pos;

get_position(0, &pos);

printf("position: %8.2lf \r", pos);

POSITIVE/NEGATIVE LIMIT의 CENTER 점으로 이동 프로그램

Page 377: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

29

/* Homing_z.c */

/* Z상 Index Pulse를 이용한 Homing */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void home_set(void);

void send_com(void);

void display(void);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

home_set(); /* event 설정 */

set_amp_enable(0, TRUE);

send_com();

set_amp_enable(0, FALSE);

set_position(0, 0.0);

printf("\n Axis is home!");

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void home_set(void) /* home event 설정 */

set_home(0, STOP_EVENT);

set_home_level(0, HIGH);

set_stop_rate(0, 20);

void send_com(void)

printf("searching for home sensor\n"); /* 홈센서로 이동 */

set_index_required(0, FALSE);

frames_clear(0);

v_move(0, 30000.0, 20);

while(!motion_done(0))

display();

set_home(0, NO_EVENT);

clear_status(0);

Z상 INDEX PULSE를 이용한 HOMING

Page 378: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

30

printf("home sensor with using index pulse\n");

set_index_required(0, TRUE); /* Z상 이용 */

start_r_move(0, -50000.0, 50000.0, 20);

while(!motion_done(0))

display();

set_home(0, STOP_EVENT);

frames_clear(0);

v_move(0, 30000.0, 20); /* 홈으로 이동 */

while(!motion_done(0))

display();

clear_status(0);

void display(void)

double pos;

get_position(0, &pos);

printf(" position: %8.2lf \r", pos);

Z상 INDEX PULSE를 이용한 HOMING

Page 379: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

31

/* Sync_mo.c */

/* 다축 제어 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void multi_move(int n_ax, int mask, int* map); /* 다축이동 */

int moving(int n_ax, int* map);

int seq_done(int n_ax, int mask, int* map);

void display(int n_ax, int* map);

double pos[] = 50000.0, 60000.0, 80000.0, 90000.0,

vel[] = 20000.0, 20000.0, 20000.0, 20000.0;

int accel[]=20, 20, 20, 20;

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

int n_ax, axis_mask; /* 제어할 축수, 제어 대상 */

int axes[]=0,1,2,3; /* 4개 축 입력 정의 */

Err(err); /* 에러 상태 확인 */

n_ax = (sizeof(axes)/sizeof(int)); /* 제어 축수 4축 */

axis_mask = 3; /* 제어대상 0,1 축 --- 0011 */

multi_move(n_ax, axis_mask, axes);

while(!seq_done(n_ax, axis_mask, axes));

axis_mask = 1; /* 제어대상 0 축 ---0001 */

pos[0]=110000.0;

multi_move(n_ax, axis_mask, axes);

while(!seq_done(n_ax, axis_mask, axes));

axis_mask = 3; /* 제어대상 0,1 축 --- 0011 */

pos[0]=0.0; pos[1]=0.0;

multi_move(n_ax, axis_mask, axes);

while(!seq_done(n_ax, axis_mask, axes));

return 0;

int Err(int err)

if(err)

printf("MMC Iitial err :%s(%d)\n",_error_message(err),err);

exit(1);

return mmc_error;

void multi_move(int n_ax, int mask, int* map)

다축 제어 프로그램

Page 380: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

32

int axis, i;

for(i=0; i<n_ax ;i++)

set_amp_enable(i, TRUE);

axis = map[i];

if(mask & (1<<axis)) /* 제어 대상에 명령 */

start_s_move(axis, pos[i], vel[i], accel[i]);

else

mmc_dwell(axis, 0.0);

while(moving(n_ax, map))

display(n_ax, map);

return ;

int moving(int n_ax, int* map) /* 축 동작중 */

int i;

for(i=0 ; i< n_ax; i++)

if(in_motion(map[i]))

return 1;

return 0;

int seq_done(int n_ax, int mask, int* map) /* 제어 축이 모두 완료 */

int i, axis;

for(i=0; i<n_ax; i++)

axis=map[i];

if ( (‾mask & (1<<axis)) && (!motion_done(axis)) )

return 0;

return 1;

void display(int n_ax, int* map)

int i;

double com;

for(i=0; i<n_ax; i++)

get_command(map[i], &com);

printf("%d axis : %10.0lf", map[i], com);

printf("\r");

다축 제어 프로그램

Page 381: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

Chapter13

SAMPLEPROGRAM

33

/* Sync_con.c */

/* 0축과 1축의 동기 제어 프로그램 */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "mmcdef.h"

int Err(int err);

void send_com(int m, int s);

void display(double m_pos, double s_pos);

int main()

long addr = 0xD8000000;

int err = mmc_initx(1,&addr); /* 보드 초기화 */

Err(err); /* 에러 상태 확인 */

set_amp_enable(0,TRUE);

set_amp_enable(1,TRUE);

send_com(0, 1);

return 0;

int Err(int err)

if(err)

printf(" MMC Iitial err :%s(%d)\n", _error_message(err), err);

exit(1);

return mmc_error;

void send_com(int m, int s)

int s_gain;

double m_pos, s_pos;

set_sync_map_axes(m, s); /* 0축과 1축을 동기 제어 */

set_sync_control(TRUE);

frames_clear(m);

v_move(m, 100000.0, 20);

while(!kbhit())

get_sync_position(&m_pos, &s_pos);

display(m_pos, s_pos);

get_sync_gain(&s_gain);

if(m_pos<s_pos) /* 4체배 마이너스 값 */

set_sync_gain(++s_gain); /* slave 축에 보상게인 */

else

set_sync_gain(--s_gain);

v_move_stop(m);

set_sync_control(FALSE);

0축과 1축의 동기 제어 프로그램

Page 382: [ otionControllerSeries MULTIMOTIONCONTROLLER · 2005-09-23 · [otionControllerSeries MULTIMOTIONCONTROLLER 사용자설명서(VER1.4) 2003년07월15일작성 Rockwell Samsung Automation

34

void display(double m_pos, double s_pos)

printf("Master position:%8.2lf, Slave position:%8.2lf \r", m_pos, s_pos);

0축과 1축의 동기 제어 프로그램