F170_PulseOutput_PWM

PWM 출력

이 명령은 지정된 DUT에 따라 펄스 폭 변조 출력 신호를 전달합니다. 지정된 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 이 채널에서 펄스가 출력됩니다.

파라미터

입력

s_dutDataTable (F170_PulseOutput_PWM_DUT)

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

n_iPulseOutputChannel (INT)

펄스 출력: 0 또는 1

주석

  • 다음과 같은 사전 정의된 DUT 사용: 2022-06-29F170_PulseOutput_PWM_DUT

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

    • 대략적인 주파수

    • 듀티(펄스 기간 및 주기)

      구형파의 펄스 지속 시간과 주기 간의 비율 차이입니다. 펄스 지속 시간이 1ms이고 펄스 주기가 4ms인 펄스 열의 경우, 듀티는 0,25 또는 25%입니다.

일반 프로그래밍 정보

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

  • 펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.

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

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

  • 최소 또는 최대 듀티와 가까운 점에서는 출력이 지연되고 듀티가 지정된 값과 다를 수 있습니다.

  • 듀티는 스캔할 때마다 변경될 수 있습니다. 변경 사항은 다음 펄스 출력에 유효합니다. 주파수 설정은 명령 실행 시작 시에만 유효합니다.

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

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

FP0R의 FP0 호환 모드 사용

FP0 호환 모드에서 FP0R을 실행하려면 FP0 프로그램을 FP0R에 다운로드하면 됩니다.

FP0, FP-e의 출력 및 시스템 변수

채널 및 펄스 출력 번호

채널 번호 펄스 출력 펄스 출력 방법

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

글로벌 변수

글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.

DUT

DUT F170_PulseOutput_PWM_DUTFP Library에서 사전 정의됩니다.

POU 헤더

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

	VAR_EXTERNAL
		X6_bEnablePWM: BOOL:=FALSE;
	END_VAR
	VAR 
		dutPWMControl: F170_PulseOutput_PWM_DUT;
			(*iFrequencyValue := 1: f=2.0Hz, T=502.5ms;*)
		iPulseWidthModulationDuty: INT:=500;
			(*500=50% duty*)
		@'': @'';
	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 := 5 ;
        NETWORK_BODY
B(B_F,E_MOVE!,Instance,15,1,21,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,13,3,15,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,21,3,23,5,);
B(B_CONTACT,,X6_bEnablePWM,4,2,6,4,);
L(6,3,15,3);
L(1,3,4,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,X6_bEnablePWM,4,2,6,4,);
B(B_F,F170_PulseOutput_PWM!,Instance,13,1,26,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,11,3,13,5,);
B(B_VARIN,,2,11,4,13,6,);
L(1,3,4,3);
L(6,3,13,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF (X6_bEnablePWM) then
    dutPWMControl.iPulseWidthModulationDuty:=iPulseWidthModulationDuty;
END_IF;
IF (X6_bEnablePWM) then
    F170_PulseOutput_PWM(s_dutDataTable := dutPWMControl, 
    n_iPulseOutputChannel := 2);
END_IF;

IL 본문

최종 수정일: 2022-06-29이 페이지에 대한 피드백Panasonic 직통 전화