Motion Control 제어 및 전력 전자 센터 PMAC ( Programmable Multi-Axis Controller) 창원대학교 전기공학과 제어 및 전력전자연구실
FPD Inspection / Manipulation 로보트 (robotics) 공작기계 (machine tools) 인쇄기 (printing) 종이 및 목재 가공기 (paper and lumber processing) 팩킹기 (packaging) 조립라인 (assembly lines) material handling 카메라 제어 (camera control) 실리콘 웨이퍼 가공기 (silicon wafer processing) 자동 용접기 (automatic welding) 레이저 가공기 (laser cutting) 적용분야 제어 및 전력 전자 센터
실습장비 ( 시스템 ) ○ 시스템 구성 PMAC 모듈 AC 서보모터 + Amp 4 조 PC 제어 및 전력 전자 센터
실습장비 (PMAC) ○ CEM 104 PLUS(PMAC 모듈 ) 고속 고정밀 모션 콘트롤러 8 축 아날로그 (+/-10V) 출력 서보 ( 토크 및 속도모드 ) 제어 및 스텝핑 모터 제어가능 제어 및 전력 전자 센터
PMAC 기능 모션 프로그램 실행 한번에 한 개의 이송 (move), 이송 이전에 모든 계산 수행 PMAC 은 항상 다음 이송명령을 선독 (Looking ahead) 하여 혼합이송 (Blending Move) 을 한다. PLC 프로그램 실행 빠른 속도의 연속 스캔 모션에 비동기인 모든 작업에 유익 제어 및 전력 전자 센터
PMAC 기능 ( 계속 ) 서보 루프 갱신 (Servo Loop Update) 사용자에게 보이지 않는 자동작업 모션 발생기에 의해 발생된 방정식에 의해 지령 위치를 증감하고, 지 령 Command 를 발생하기 위해 서보 루프를 close 하는 동작으로 구성 된다. Commutation Update 자동 수행 ( 통상 약 9KHz) 회전자의 자기장 방향을 측정 하 ( 거나 ) 고 산정하여 모터상간의 명령 을 분배한다. 제어 및 전력 전자 센터
PMAC Executive Program : Pewin Pro Suite (Windows version) 제어 및 전력 전자 센터 ○ PMAC 의 셋업 (setup), 디버그 (debug) 및 진단 (diagnose) 을 위한 필수적인 프로그램 ○ The Executive program 을 통해 PMAC 이 가진 필요한 모든 내용 을 억세스한다. PMAC 에 온라인 명령사용 위치 (positions), 속도 (velocities), 및 추종에러 (following errors) 표시 모터, 좌표계 및 모든 상태정보를 표시 모든 PMAC 변수의 표시, 변경 및 조회 가능 모든 PMAC 정보의 백업 (backup) 및 환원 (restore) 등등.
Pewin Pro Suite : 실행 화면 제어 및 전력 전자 센터
Pewin Pro Suite : 실행 ( 계속 ) 제어 및 전력 전자 센터 ○ Setting ① CFG-file Download :File - download files ② 사용하지 않는 축 제거 :Configure - Coordinate System ( 모든 축을 제거한다.) ○ 모션 프로그램 실행 ① 다운로드 ② >>Bx ( 버퍼지정 ) ③ >>R ( 실행 )
좌표계 (COORDINATE SYSTEMS ) 제어 및 전력 전자 센터 · 모든 모션프로그램은 좌표계에서 실행된다. · 서로 연관성이 있는 모터들을 같은 좌표계에 설정. · 각각의 좌표계에 모션 프로그램을 실행 시킬 수 있다. 예제 ) &1; Coordinate system 1 #1->100X; 1 unit of X is 100 counts of motor 1 #3->100Z
PMAC 명령어 (COMMAND SET) 1. 온라인 명령어 (On-line Commands) ( 명령지령 즉시 실행되며, 저장 않됨 ) - 적용되는 범위에 따라.. A. 전체 좌표계 (Global) B. 좌표계 (Coordinate System Specific (&n …)) C. 모터 (Motor Specific (#n…)) 모드설정 (Mode setting), 이송명령 (move commands), 조회 (queries), 변수 설정 (variable setting), 버퍼제어 (buffer control) 제어 및 전력 전자 센터
PMAC 명령어 (COMMAND SET) 2. 버퍼 명령어 (Buffer command ) ( 명령에 의해 실행될 수 있도록 버퍼에 저장 ) A. 모션 프로그램 (Motion Program) 이송 (Moves), 모드 (modes), 산술 (math), 로직 (logic), commands, 메시지 (messages) B. PLC Program 산술 (Math), 논리 (logic), commands, 메시지 (messages) * 버퍼형식 명령어는 “OPEN” 으로부터 실행된다. 제어 및 전력 전자 센터
13 Global Status Commands ???- Report status bits (in hex ASCII) # - Report addressed motor & - Report addressed coordinate system SIZE - Report available buffer space - Report all motor status words - Report all coordinate system status words - Report all data gathering address contents (in binary) - Report all motor following errors - Report global status word - Report all motor positions - Report all motor velocities 제어 및 전력 전자 센터
14 Status Commands Motor Status Commands P- Report position (in counts V- Report velocity (in counts/servo cycle) F - Report following error (in counts) ? - Report status bits (in hex ASCII) Coordinate System Status Commands %- Report feedrate override value ??- Report status bits (in hex ASCII) PC- Report program counter PR - Report program remaining in rotary buffer #n- >- Report axis definition of motor n 제어 및 전력 전자 센터
15 PMAC Stop Commands J/-“Jog Stop”: Bring motor to closed-loop, zero velocity from moving, open-loop, or killed. Decelerates according to Ix19-Ix21 A-“Abort”: Bring all motors in coordinate system to closed- loop zero velocity from moving, open-loop, or killed. Stops execution of motion program. Motors decelerate according to Ix15. ( for all C.S.) Q-“Quit”: Stop calculating motion program; finish already calculated moves ( for all C.S.) /-Stop program at end of executing move (I13>0 mode only) 제어 및 전력 전자 센터
16 PMAC Stop Commands (continued) H-“Hold”: Feedhold for coordinate system. Equivalent to “%0” but uses Ix95 for deceleration, and starts again with R. ( for all C.S.) \-Feedhold that permits jogging in hold mode (I13>0 mode only) K-“Kill”: Open loop, zero command, disable amp for motor ( for all motors) 제어 및 전력 전자 센터
PMAC 변수 (Variables) 초기화 및 셋업용 변수 (Initialization and setup variables) 정해진 의미를 가짐 변수용도 ( 번호 ) 에 따라 카드전체, 특정 모터, 좌표계 및 엔코더에 영향을 미친다. 1. I-Variables (1024 / 8192), 시스템 변수 일반적인 사용자 사용 변수 (General purpose user variables) 48-bit floating point format 전체 영역 억세스 (Global (whole card) access) 2. P-Variables (1024 / 8192) 제어 및 전력 전자 센터
PMAC 변수 (Variables) ( 계속 ) 일반적인 사용자 사용 변수 (General purpose user variables) 48-bit floating point format 좌표계에 따라 결정 (Specific to a coordinate system) 3. Q-Variables (1024 / 8192) 4. M-Variables (1024 / 8192) 카드의 메모리 및 I/O 를 억세스 사용자 정의 (address, offset, and bit width) 형식 : Unsigned, 2’s compliment, BCD, floating point formats 사용가능 제어 및 전력 전자 센터
조그 운전 (JOGGING MOTORS) ○ 조깅은 가장 간단한 형태의 Closed Loop 제어 ○ 조깅 운전는 On-Line 명령에 의해 제어 ○ 조깅은 간단한 위치제어나 스핀들과 같이 일정한 속도로 계속 움직이 는 운동에 사용될 수 있다. ○ What to learn: 조그운전 방법 (How to Jog Motors) 조그속도 변경방법 (How to change the jog speed) 조그 가속도 변경방법 ( How to change the jog acceleration) 제어 및 전력 전자 센터
온라인 조그 명령어 (On-line Jog commands) J+ - “+” 방향으로 연속적인 조그운전 (Jog positive indefinitely) J- - “-” 방향으로 연속적인 조그운전 (Jog negative indefinitely) J/ - 조그이송 정지 또는 Closed Loop (Jog stop (or close loop) J= - 이전 프로그램 위치로 복귀지령 (Jog back to prejog (last programmed) position) J={constant} - 지정된 위치로 조그이송 ( 단위 : counts) (Jog to specified position (in counts)) J^{constant} - 현재의 실제 위치로 부터 지정된 거리이송 (Jog to specified distance from present actual position) J:{constant} - 현재 지령 위치로부터 지정된 거리 이송 (Jog specified distance from present commanded position) 제어 및 전력 전자 센터
온라인 조그명령 예제 (On-line Jog Commands Examples) #1J+ - 모터 1 “+” 방향으로 조깅 (Jog Motor #1 in positive direction) #1J=1000 #2j+ - 모터 1 을 1000 카운트 위치로 이동, 모터 2 를 “+” 방향 회전 동시 지령 ( Jog Motor #1 to position 1000 and jog motor #2 in a positive direction ) I122=30 - 모터 1 의 조그 속도를 30counts/msec 로 설정 ( Set motor #1 jog speed to 30 counts/msec ) I220=50 - 모터 2 의 조그 가속시간을 50 msec 로 설정 ( Set motor #2 jog acceleration time at 50 msec ) Note: 모터가 정의된 좌표계에서 모션 프로그램을 중일때는 조그 운전을 할수 없다. (Motor cannot be JOGGED when it is defined in a coordinate system that is running a motion program.) 제어 및 전력 전자 센터
원점 복귀 (HOMING MOTORS) 온라인 명령에 의한 원점복귀 방법 원점이송 속도 및 방향 변경방법 원점복귀 조건 설정방법 ( How to set the home trigger.) 원점 이송은 모션 프로그램 또는 온라인 명령으로 실행 원점복귀 방법 ( 트리거 조건 ) 은 유저가 선택 전원 공급시 또는 리셋한 경우에는 기계의 원점설정을 위해 원점복귀가 필요 What to Learn: 제어 및 전력 전자 센터
온라인 원점이송 명령어 (On-line Homing Commands) HM - 원점이송 명령 (Do home search move) HMZ - 현재 지령된 위치를 원점으로 설정한다 (Present command position is set to home) 온라인 명령 예제 (On-line Examples): #1HM - 모터 1 원점 이송 (Do a home search move for motor #1) #1HM #2HM #3HM - 모터 1/2/3 동시 원점복귀 (Start moves at the same time) note: 모터가 정의된 좌표계에서 모션 프로그램을 실행중 일때는 원점 복귀 온라인 명령어는 사용할 수 없다. 제어 및 전력 전자 센터
24 모션 프로그램은 위치결정 및 윤곽이송을 위해 모터를 제어하고 조정하는 역할을 한다 모션 프로그램은 PMAC 적용에서 가장 중요한 내용임. (Motion programs are the heart of most PMAC applications) What to Learn: 모션 프로그램 ? 모션 프로그램 작성방법 모션 프로그램 실행방법 모션 프로그램 (MOTION PROGRAMS) 제어 및 전력 전자 센터
25 PMAC 프로그램은 한번에 한 블럭실행, 모든 계산은 이송이전에 수행된다. 좌표계에서 실행됨. 한 프로그램은 복수개의 좌표계에서 동시에 실행될 수 있다. 한 개의 좌표계에서는 한 개의 프로그램만이 실행가능. 제어 및 전력 전자 센터 모션 프로그램 ( 계속 )
26 프로그램 실행 절차 : 온라인 명령어를 통해 원하는 좌표계를 선택한다 : &n 온라인 명령어를 통해 실행하려는 프로그램을 좌표계에 인식 시킨다 : Bn 실행 명령을 입력한다 : R or 프로그램 정지 : 온라인 명령어를 통해 원하는 좌표계를 선택한다 : &n 정지명령을 입력한다 : Q, S, A, or,,, 제어 및 전력 전자 센터 모션 프로그램 ( 계속 )
27 n 논리 제어 문장 (Logic Control Statements) N, O, GOTO, GOSUB, CALL, RETURN G, M, T, D (special CALL statements) IF, ELSE, ENDIF, WHILE, ENDWHILE n 기타 문장 (Miscellaneous Statements) COMMAND, SEND, DISPLAY ENABLE PLC, DISABLE PLC PMAC 모션프로그램 문장 (Statements) 제어 및 전력 전자 센터
28 n Logic Operators &(bit by bit AND) |(bit by bit OR) ^(bit by bit Exclusive OR) n Comparators = (equal to) !=(not equal to) >(greater than) !>(not greater than; less than or equal to) <(less than) Functions SIN, COS, TAN, ASIN, ACOS, ATAN, ATAN2, SQRT, LN, EXP, ABS, INT UMAC Logic Operators used in Motion Programs and PLCs 제어 및 전력 전자 센터
29 ********************* Set-up and Definitions ********************* CLOSE END GAT DEL GAT; Erase any defined gather buffer &1; Coordinate System 1 #1->1000X; Assign motor 1 to the X-axis - 1 program unit ; of X is 1 encoder count of motor #1 #2->1000Y; Assign motor 2 to the Y-axis - 1 program unit ; of Y is 1 encoder count of motor #2 CLOSE; Make sure all buffers are closed ********************* Motion Program Text ************************* OPEN PROG 1; Open buffer for program entry, Program #2 CLEAR; Erase existing contents of buffer LINEAR; Blended linear interpolation move mode ABS(X,Y); Absolute mode - moves specified by position INC(R) TA500; Set 1/2 sec (500 msec) acceleration time TS0; Set no S-curve acceleration time F1500; Set feedrate (speed) of 5000 units(cts)/sec X250; Move X-axis to position Y200; Move Y-axis to position DWELL500; Stay in position for 1/2 sec (500 msec) CIRCLE2; Circular Interpolation f1000 X 15 Y 10 I -10; to X,Y. CCW. With radius of 10 CLOSE; Close buffer - end of program Example : A Simple Move
30 Example : A Simple Move To run this program: &1 B1 R; Coord. System 1, point to Beginning ;of Program 1, Run
참고
32 This example shows how to program a simple move on the program specifies how to do the move, then commands the move. ********************* Set-up and Definitions ********************* DEL GAT; Erase any defined gather buffer &1; Coordinate System 1 CLOSE; Make sure all buffers are closed #1->X; Assign motor 1 to the X-axis - 1 program unit ; of X is 1 encoder count of motor #1 ********************* Motion Program Text ************************* OPEN PROG 1; Open buffer for program entry, Program #1 CLEAR; Erase existing contents of buffer LINEAR; Blended linear interpolation move mode ABS; Absolute mode - moves specified by position TA500; Set 1/2 sec (500 msec) acceleration time TS0; Set no S-curve acceleration time F5000; Set feedrate (speed) of 5000 units(cts)/sec X10000; Move X-axis to position DWELL500; Stay in position for 1/2 sec (500 msec) X0; Move X-axis to position 0 CLOSE; Close buffer - end of program To run this program: &1 B1 R; Coord. System 1, point to Beginning of Program 1, Run Example 1: A Simple Move
33 Example 1: A Simple Move
34 “Data Gathering” 이라고 불리는 내장된 데이타 수집 기능 보유 What to Learn: 수집할 수 있는 데이타 데이타 Gathering 방법 데이타 Gathering 하는 경우 데이타 수집 (DATA GATHERING)
35 This example shows how to program a simple move on the program specifies how to do the move, then commands the move. ********************* Set-up and Definitions ********************* DEL GAT; Erase any defined gather buffer &1; Coordinate System 1 CLOSE; Make sure all buffers are closed #1->X; Assign motor 1 to the X-axis - 1 program unit ; of X is 1 encoder count of motor #1 ********************* Motion Program Text ************************* OPEN PROG 1; Open buffer for program entry, Program #1 CLEAR; Erase existing contents of buffer LINEAR; Blended linear interpolation move mode ABS; Absolute mode - moves specified by position TA500; Set 1/2 sec (500 msec) acceleration time TS0; Set no S-curve acceleration time F5000; Set feedrate (speed) of 5000 units(cts)/sec X10000; Move X-axis to position DWELL500; Stay in position for 1/2 sec (500 msec) X0; Move X-axis to position 0 DWELL0; Stop program lookahead CMD"ENDG"; Send On-line command to stop data gathering CLOSE; Close buffer - end of program To run this program and gather data: DEF GAT GAT &1 B1 R; GATHER, CS. 1, point to Beginning of Program 1, Run Example 2: A Simple Move with Data Gathering
36 Example 2: A Simple Move with Data Gathering
37 드웰 과 디레이 (DWELL vs. DELAY) DWELL u 항상 일정한 시간 단위를 이용한다 (I10) u 앞서는 감속시간을 포함하지 않는다 u 다음 이송명령의 계산은 DWELL 시간이 끝나기 전까지 수행되지 않음 (add I11 time)
38 DELAY 가변 시간단위를 이용한다 (% value) 전 감속시간을 포함한다 최소시간은 현재의 TA 시간이다 다음 이송시간은 DELAY 시작때 부터 계산된다 드웰 과 디레이 (DWELL vs. DELAY)
39 Example 3: A More Complex Move This example introduces incremental and time-specification of moves, looping logic, using variables, scaling of axes, and simple arithmetic. Note that logical and mathematical operations do not delay moves. ;******************** Set-up and Definitions ******************** &2; Coordinate system 2 CLOSE; Make sure all buffers are closed #5->1000X; 1 unit (cm) of X is 1000 counts of motor 5 ;******************** Motion Program Text *********************** OPEN PROG 2; Open buffer for entry, Program #2 CLEAR; Erase existing contents of buffer LINEAR; Blended linear interpolation move mode INC; Incremental mode - moves specified by distance TA500; 1/2 sec (500 msec) acceleration time TS250; 1/4 sec in each half of S-curve TM2000; 2 sec move time (to start of decel) P1=0; Initialize a loop counter variable WHILE (P1<10); Loop until condition is false (10 times) X10; Move X-axis 10 cm (=10,000 cts) positive DWELL500; Hold position for 1/2 sec X-10; Move X-axis back 10 cm negative DWELL500; Hold position for 1/2 sec P1=P1+1; Increment loop counter ENDWHILE; End of loop CLOSE; Close buffer - end of program To run this program: &2 B2 R; Coordinate System 2, point to Beginning of Program 2, Run
40 Example 3: A More Complex Move
41 POS Time Commanded Position POS 1/2 to 1/4 motor rev 1/2 to 1/4 motor rev Time POS 1/2 to 1/4 motor rev Time Position Offset Cause: Friction or Constant Force Fix: Increase K (Ix33) Overshoot and Oscillation Cause: too little Damping or too much proportional gain Fix: Increase K (Ix31) Decrease K (Ix30) P d i Step Move 제어 및 전력 전자 센터