F171_PulseOutput_Trapezoidal

사다리꼴 제어

이 명령은 지정한 DUT의 파라미터에 따라 자동으로 사다리꼴 제어를 수행합니다. 이 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 지정된 채널에서 펄스가 출력됩니다.

입력

s_dutDataTable(DUT)

데이터 테이블이 포함된 영역의 시작 어드레스

  • FP-S, FP-X:

    F171_PulseOutput_Trapezoidal_DUT

  • FP0R:

    F171_PulseOutput_Trapezoidal_Type0_DUT

    F171_PulseOutput_Trapezoidal_Type1_DUT

n_iPulseOutputChannel(10진수 정수)

펄스 출력 채널:

FP-XH C30 T/P: 0~3

FP-XH C60 T/P: 0~5

FP-S0, 2

FP-X R0, 1

FP-XC14T0, 1, 2

FP-X C30T/C60T0, 1, 2, 3

FP0R0, 1, 2, 3

FP-Sigma, FP-X 설명

다음과 같은 사전 정의된 DUT 사용: F171_PulseOutput_Trapezoidal_DUT.

DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.

  • 제어 코드
  • 초기 및 최종 속도
  • 타겟 속도
  • 가속/감속 시간
  • 목표값
  • 펄스 정지
펄스 출력 특정
  1. 초기 및 최종 속도

  2. 타겟 속도

  3. 가속/감속 시간

  4. 목표값

  5. 펄스 출력 제어 플래그

  6. 실행 조건

펄스 출력 주파수는 지정된 가속/감속 시간에 따라 변경됩니다.목표 및 초기 속도 간의 차이점은 램프 기울기를 결정합니다.

  • 주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
  • FP-X: 펄스 출력 명령이 실행되고 펄스가 출력 중이면 해당 채널의 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.

  • FPS: 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.

  • FPS: 원 보간 제어 명령 F176_PulseOutput_Center를 실행하면 원 보간 제어 플래그(sys_bIsCircularInterpolationActive)가 TRUE로 설정됩니다. 이 플래그 상태는 목표 값에 도달할 때까지 유지됩니다(실행 조건이 TRUE가 아니더라도). 이 시간 동안에는 다른 펄스 출력 명령을 실행할 수 없습니다.

  • 프로그램이 RUN 모드에서 편집되면 펄스 출력이 정지하지만 프로그램 변경 후 다시 시작되어 다운로드됩니다.
  • FPS: 펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.

  • FP-X: 시스템 레지스터에서 원하는 채널의 "펄스 출력"을 설정합니다.

  • 위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.

  • 고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.

FP0R 설명

다음과 같은 사전 정의된 DUT 사용: F171_PulseOutput_Trapezoidal_Type0_DUT(최대 속도 = 최초 목표 속도) 또는 F171_PulseOutput_Trapezoidal_Type1_DUT(최대 속도 = 50kHz).

펄스 출력 중에 목표 시간을 변경할 수 있습니다.

두 제어 모드를 사용할 수 있습니다.

  • 형식 0: 최초로 지정된 목표 시간 범위 내에서 속도를 변경할 수 있습니다.

  • 형식 1: 최대 속도(50kHz) 범위 내에서 속도를 변경할 수 있습니다.

DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.

  • 제어 코드
  • 초기 및 최종 속도
  • 타겟 속도
  • 가속 시간
  • 감속 시간
  • 목표값

펄스 출력 특정

  1. 초기 및 최종 속도

  2. 타겟 속도

  3. 가속 시간

  4. 감속 시간

  5. 목표값

  6. 펄스 출력 제어 플래그

  7. 실행 조건

  8. 감속 정지 요청

  • 형식 0:

    타겟 속도와 초기 속도 간의 차이는 가속 램프 기울기로 판별됩니다.타겟 속도와 최종 속도 간의 차이는 감속 램프 기울기로 판별됩니다.

  • 형식 1:

    최대 속도 50kHz와 초기 속도 간의 차이는 가속 램프 기울기로 판별됩니다.최대 속도 50kHz와 최종 속도 간의 차이는 감속 램프 기울기로 판별됩니다.

펄스는 듀티 25%를 사용하여 출력됩니다.펄스 출력 방법 "펄스/방향"을 사용하면 방향 신호가 출력된 후에 펄스는 약 300ms로 출력됩니다. 모터 드라이버 특성도 동시에 고려해야 합니다.

감속 정지

감속 정지를 수행하려면 펄스 출력 제어 코드를 저장하는 데이터 레지스터의 비트 5FALSE 에서 TRUE로 설정합니다(예: MOVE(16#120, sys_wHscOrPulseControlCode);).가속 중에 감속 정지가 요청되면 목표 속도에서 동일한 감속 경사로 감속이 수행됩니다.

펄스 출력 중에 목표 속도 변경

형식 1: 최대 속도(50kHz) 범위 내에서 속도를 변경할 수 있습니다.

  1. 타겟 속도

  2. 목표 속도 1차 변경

  3. 목표 속도 2차 변경

  4. 가속 시간

  5. 가속

  6. 감속

  7. 감속 시간

  8. 펄스 출력 제어 플래그

  9. 실행 조건

속도를 변경하려면 실행 조건을 TRUE로 전환합니다.

  • 형식 0:

    시작 시의 목표 속도보다 큰 값이 지정되면 시작 시의 목표 속도로 보정됩니다.

  • 형식 1:

    목표 속도가 50kHz보다 큰 값으로 설정되면 50kHz로 보정됩니다.

경과 값이 가속 중에 가속 금지 영역 시작 위치(예: sys_diPulseChannel0AccelerationForbiddenAreaStartingPosition)를 교차하면 가속을 수행할 수 없습니다.

  • 감속 속도는 보정된 최종 속도 이하일 수 없습니다.

  • 이 명령을 사용하여 프로그램 온라인 편집을 시작하자마자(즉, RUN 모드에서) 펄스 출력이 정지합니다.

  • 주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.

  • 펄스 출력 명령이 실행되고 펄스가 출력 중이면 해당 채널의 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
  • 감속 정지가 요청되면 이 명령을 시작할 수 없습니다.
  • 동작 정지 후 다시 시작하려면 실행 조건을 FALSE로 전환한 후 다시 TRUE로 전환해 주십시오.
  • 위치결정 파라미터가 변경되지 않으면 명령 실행은 두 번째 시작 시간보다 빠릅니다. 출력 동작(펄스 출력 또는 계산만) 설정을 변경해도 이 동작은 영향을 받지 않습니다.
  • 위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.

  • 고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.

POU 헤더

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

	VAR
		bMotorSwitch: BOOL:=FALSE;
		dutTrapez: F171_PulseOutput_Trapezoidal_DUT:=dwControlCode := 16#1100;
			(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 1=Frequency range 48Hz-100kHz
Digit 1: 0=Relative value control
Digit 0: 0=CW/CCW*)
	END_VAR
	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		diInitialSpeed: DINT:=100;
		diTargetSpeed: DINT:=2000;
		diAccelerationTime: DINT:=300;
		diTargetValue: DINT:=10000;
		@'': @'';
	END_VAR

LD 본문

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,,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,,dutTrapez.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutTrapez.diAccelerationAndDecelerationTime,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,,dutTrapez.diTargetValue,23,14,25,16,);
B(B_VARIN,,diTargetValue,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.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 := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,14,3,16,5,);
B(B_VARIN,,0,14,4,16,6,);
B(B_F,F171_PulseOutput_Trapezoidal!,Instance,16,1,31,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,16,3);
L(1,3,4,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF DF(bMotorSwitch) then
  dutTrapez.diInitialAndFinalSpeed:=diInitialSpeed;
  dutTrapez.diTargetSpeed:=diTargetSpeed;
  dutTrapez.diAccelerationDecelerationTime:=diAccelerationTime;
  dutTrapez.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
IF DF(bMotorSwitch) then
  F171_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
        n_iPulseOutputChannel :=0);
END_IF;

최종 수정일: 2023-03-16이 페이지에 대한 피드백Panasonic 직통 전화