사다리꼴 제어
이 명령은 지정한 DUT의 파라미터에 따라 자동으로 사다리꼴 제어를 수행합니다. 이 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 지정된 채널에서 펄스가 출력됩니다.
입력
데이터 테이블이 포함된 영역의 시작 어드레스
펄스 출력: 0 또는 1
다음과 같은 사전 정의된 DUT 사용: 2022-06-29F168_PulseOutput_Trapezoidal_DUT
제어 코드
초기 및 최종 속도
타겟 속도
가속/감속 시간
목표값
펄스 정지(고정)
펄스 출력 주파수는 지정된 가속/감속 시간에 따라 변경됩니다. 목표 및 초기 속도 간의 차이점은 램프 기울기를 결정합니다.
펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.
프로그램이 RUN 모드에서 편집되면 펄스 출력이 정지하지만 프로그램 변경 후 다시 시작되어 다운로드됩니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
회전이 한 방향으로만 실행되는 경우, 내부 경과 값의 상한값이 초과하면 펄스 출력이 정지합니다. 보호 조치로서, 이 명령을 실행하기 전에 경과 값을 0으로 다시 설정합니다. 경과 값의 데이터 범위가 부호가 있는 32비트 값이므로, FP0R이 FP0 호환 모드에서 사용되면 펄스 출력이 정지되지 않습니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
FP0 호환 모드에서 FP0R을 실행하려면 FP0 프로그램을 FP0R에 다운로드하면 됩니다. 다음 제한 사항을 참조해 주십시오.
FP0R은 경과 값과 목표 값에 대해 부호가 있는 32비트 데이터를 지원하고, FP0은 부호가 있는 24비트 데이터를 지원합니다. FP0 호환 모드에서 데이터가 FP0 범위를 초과하더라도 계산과 펄스 출력은 계속 실행됩니다.
듀티는 명령 설정에 관계없이 항상 25%입니다. 펄스 출력 방법 "펄스/방향"을 사용하면 방향 신호가 출력된 후에 펄스는 약 300ms로 출력됩니다. 모터 드라이버 특성도 동시에 고려해야 합니다.
FP0R은 "계산 없음" 설정을 지원하지 않습니다. 대신 FP0 펄스 출력 명령으로 수행되는 증분 계산은 "계산 없음"으로 설정됩니다.
최대 펄스 출력 주파수는 10000Hz입니다.
펄스 출력 명령이 보통 출력으로 사용 중인 출력을 사용하지 않는지 확인합니다.
PLC 기종(C10, C14, C16, C32 및 T32)이 정확히 일치하면 FP0 프로그램이 FP0 호환 모드에서만 실행될 수 있습니다. F32 형식 FP0R에서는 FP0 호환 모드를 사용할 수 없습니다.
채널 및 펄스 출력 번호
채널 번호 | 펄스 출력 | 펄스 출력 방법 |
0 |
Y0 |
펄스 |
Y2 |
방향 | |
1 |
Y1 |
펄스 |
Y3 |
방향 |
사용한 메모리 영역의 시스템 변수. 괄호 안의 값은 FP0 T32에 유효합니다.
설명 |
시스템 변수 |
|
---|---|---|
펄스 출력: 채널의 제어 플래그 |
0 |
sys_bIsPulseChannel0Active |
1 |
sys_bIsPulseChannel1Active |
|
펄스 출력: 채널의 경과 값 |
0 |
sys_diPulseChannel0ElapsedValue |
1 |
sys_diPulseChannel1ElapsedValue |
|
펄스 출력: 채널의 목표 값 |
0 |
sys_diPulseChannel0TargetValue |
1 |
sys_diPulseChannel1TargetValue |
|
고속카운터 또는 펄스 출력 제어코드 |
sys_wHscOrPulseControlCode |
초기 속도 < 40인 경우
초기 속도 > 최대 속도인 경우
초기 속도 < 40인 경우
초기 속도 > 최대 속도인 경우
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
DUT F168_PulseOutput_Trapezoidal_DUT는 FP Library에서 사전 정의됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
dutTrapez: F168_PulseOutput_Trapezoidal_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 1000,
iTargetSpeed := 7000,
iAccelerationAndDecelerationTime := 300,
diTargetValue := 10000;
END_VAR
VAR_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
(*at X0*)
END_VAR
VAR
@'': @'';
@'': @'';
END_VAR
X0_bMotorSwitch가 TRUE로 설정되면 함수가 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,11,3,13,5,);
B(B_VARIN,,0,11,4,13,6,);
B(B_F,F168_PulseOutput_Trapezoidal!,Instance,13,1,28,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,13,3);
L(1,3,4,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
F168_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
n_iPulseOutputChannel :=0);
END_IF;