홈 복귀
입력
데이터 테이블이 포함된 영역의 시작 어드레스
펄스 출력 채널:
FP-S: 0,2
FP-X R: 0,1
FP-XC14T: 0,1,2
FP-X C30T/C60T: 0,1,2,3
드라이브 시스템 전원이 켜진 후 내부 위치 값(경과 값)과 축의 기계적 위치 간의 차이가 있습니다. 사전에 이 차이를 결정할 수 없습니다. 내부 값은 축의 실제 위치 값과 동기화되어야 합니다. 위치 값이 알려진 참조점(원점)에서 등록된 상태에서 이는 원점복귀의 수단으로 완료됩니다.원점 복귀 명령 실행 중에 펄스는 원점 입력이 활성화될 때까지 계석 출력됩니다. I/O 할당은 사용한 채널에서 결정됩니다.홈 위치에 가까워지면 이동을 감속하려면 원점근방 입력을 지정하고 펄스 출력 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 특수 데이터 레지스터의 비트 4를 TRUE로 설정하고 다시 FALSE로 설정합니다.원점 복귀가 완료되면 편차 카운터 클리어 출력을 TRUE로 설정할 수 있습니다.원점 복귀 중의 경과 값 영역 값은 현재 값과 다릅니다. 복귀가 완료되면 경과 값은 0으로 변경됩니다.
두 가지 다른 작동 모드 중 하나를 선택합니다.
형식 1: 원점근방 입력 유무, 선언 유무 또는 선언 완료 여부와 관계없이 원점입력이 효과적입니다.
원점근방 입력 없음:
원점근방 입력 있음:
형식 2: 선언(원점근방 입력으로 시작)이 완료된 후에만 원점입력이 효과적입니다.
다음과 같은 사전 정의된 DUT 사용: 2023-03-16
F171_PulseOutput_Home_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
초기 및 최종 속도
타겟 속도
가속/감속 시간
편차 카운트 클리어 신호
펄스 출력 특정
펄스 출력 주파수는 지정된 가속/감속 시간에 따라 변경됩니다.
목표 및 초기 속도 간의 차이점은 램프 기울기를 결정합니다.
일반 프로그래밍 정보
원점 입력이 발생하더라도 이 명령을 실행하면 펄스 출력이 시작됩니다.
가속 진행 중에 원점근방 입력이 활성화되면 감속이 시작됩니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
편차 카운터 클리어 신호는 PLC 기종별로 전용 출력 번호에 할당됩니다.
프로그램이 RUN 모드에서 편집되면 펄스 출력이 정지하지만 프로그램 변경 후 다시 시작되어 다운로드됩니다.
FP-X: 펄스 출력 명령이 실행되고 펄스가 출력 중이면 해당 채널의 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
FPS: 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
FPS: 펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.
FP-X: 시스템 레지스터에서 원하는 채널의 "펄스 출력"을 설정합니다.
FPS: 원 보간 제어 명령 F176_PulseOutput_Center를 실행하면 원 보간 제어 플래그(sys_bIsCircularInterpolationActive)가 TRUE로 설정됩니다. 이 플래그 상태는 목표 값에 도달할 때까지 유지됩니다(실행 조건이 TRUE가 아니더라도). 이 시간 동안에는 다른 펄스 출력 명령을 실행할 수 없습니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
채널 번호 |
편차 카운터 클리어 출력 |
원점입력 |
0 | Y2 | X2 |
2 | Y5 | X5 |
펄스 I/O 카세트(AFPX-PLS)가 설치된 경우에만 펄스 출력 함수를 사용할 수 있습니다.
채널 번호 |
편차 카운터 클리어 출력 |
원점입력 |
0 | ||
(카세트 장착부 1) | Y102 | X102 |
1 | ||
(카세트 장착부 2) | ||
(C30/60R만 해당) | Y202 | X202 |
채널 번호 |
편차 카운터 클리어 출력 |
원점입력 |
0 | Y4 또는 Y8 | X4 |
1 | Y5 또는 Y9 | X5 |
2 | – | X6 |
3(C30/60R만 해당) | – | X7 |
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
DUT F171_PulseOutput_Home_DUT는 FP Library에서 사전 정의됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
(*at X0*)
END_VAR
VAR
dutHome: F171_PulseOutput_Home_DUT:=dwControlCode := 16#1125;
(*Control code:
Digit 3: 1= Duty ratio 25%
Digit 2: 1= Frequency range 48Hz-100kHz
Digit 1: 2 =Operation mode type 1
Ditig 0: 5= CCW + deviation counter clear signal*)
diInitialSpeed: DINT:=100;
diTargetSpeed: DINT:=2000;
diAccelerationTime: DINT:=300;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 16 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHome.diAccelerationDecelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diDeviationCounterClearSignalOutputTime,23,14,25,16,);
B(B_VARIN,,10,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diInitialAndFinalSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
L(7,2,7,6);
L(7,6,7,10);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,10,7,14);
L(7,14,17,14);
L(1,0,1,16);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,6,3,8,5,R);
B(B_VARIN,,dutHome,15,4,17,6,);
B(B_VARIN,,0,15,5,17,7,);
B(B_F,F171_PulseOutput_Home!,Instance,17,2,30,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_COMMENT,,Example for home position return,1,1,18,2,);
L(1,4,6,4);
L(8,4,17,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
dutHome.diInitialAndFinalSpeed:=diInitialSpeed;
dutHome.diTargetSpeed:=diTargetSpeed;
dutHome.diAccelerationDecelerationTime:=diAccelerationTime;
dutHome.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
F171_PulseOutput_Home(s_dutDataTable := dutHome,
n_iPulseOutputChannel :=0);
END_IF;