FP_SCALE

불연속 값의 선형 보간 수행

이 FP 명령은 인접 참조점 Pw(xw, yw)Pw+1(xw+1, yw+1)을 토대로 선형 보간을 수행하여 x 위치에서 y 값을 렌더링합니다. 이 예에서 wx 값이 s1_x 입력 변수보다 작은 가장 가까운 참조점입니다. 즉, 펑션은 일련의 개별 참조점을 연결하고 s1_x 입력값을 토대로 d_y 출력값을 렌더링합니다.

파라미터

입력

s1_x

입력값

  • 16비트 PLC 기종에서: (INT, DINT, REAL)

  • 32비트 PLC 기종에서: (INT, DINT, UINT, UDINT, REAL, LREAL)

s2_xyData (사용자 정의된 DUT: INT, UINT, WORD(ANY16))

사용자 정의된 DUT의 첫 번째 요소를 적용합니다(즉, 이 입력에 대한 xy 값의 번호). 아래 DUT 구조 설명을 참조해 주십시오.

출력

d_y

결과

  • 16비트 PLC 기종에서: (INT, DINT, REAL)

  • 32비트 PLC 기종에서: (INT, DINT, UINT, UDINT, REAL, LREAL)

주석

용도 예:

  • 측정값 선형화(예: 비 선형 센서 사용)

  • 외부 온도 x와 관련된 히터 흐름 온도 y 렌더링

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.

  • 참조점의 수가 2~256의 범위를 벗어나는 경우.

  • s2_xyData가 범위를 벗어나는 경우

  • 참조점 x 값이 오름차순이 아닌 경우

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.

  • 참조점의 수가 2~256의 범위를 벗어나는 경우.

  • s2_xyData가 범위를 벗어나는 경우

  • 참조점 x 값이 오름차순이 아닌 경우

출력값 y 제한:

  • x 입력값이 첫 번째 참조점의 x 좌표보다 작은 경우(P1: x< x1), 출력 y 는 첫 번째 참조점 y 좌표로 설정됩니다(출력 y = y1, 그래프 왼쪽 상단 구석의 가로 점선).

  • x 입력값이 마지막 참조점의 x 좌표보다 큰 경우(P8: x > x8), 출력 y 는 마지막 참조점 y 좌표로 설정됩니다(출력 y = y8, 그래프 왼쪽 오른쪽 구석의 가로 점선).

xy 값 쌍의 DUT(참조점 P1, P2, ...):

참조점(P1, P2, ...)은 참조점 수와 xy 값 쌍(숫자, x1, x2, ..., y1, y2, ...)이 포함된 DUT 형식 변수를 통해 펑션에 복사됩니다.

사용자 정의된 DUT 구조:

  1. 요소: 참조점 z 수(INT). 참조점 수(xy 값 쌍)을 2~100 사이에서 설정할 수 있습니다. 그래프에서는 참조점 8개(P1~P8)이 사용됩니다.
  2. 요소: 데이터 형식 ARRAY[1..z] OF INT의 값(16비트 PLC 기종에서: INT, DINT, REAL, 32비트 PLC 기종에서: (INT, DINT, UINT, UDINT, REAL)) 또는 ARRAY[0..z-1] of INT (16비트 PLC 기종에서: INT, DINT, REAL, 32비트 PLC 기종에서: x 값이 포함된 (INT, DINT, UINT, UDINT, REAL)). 여기서 z는 참조점 수의 위치 마커를 나타냅니다(엔트리 1 참조).

  3. 요소: 데이터 형식 ARRAY[1..z] OF INT의 값(16비트 PLC 기종에서: INT, DINT, REAL, 32비트 PLC 기종에서: (INT, DINT, UINT, UDINT, REAL)) 또는 ARRAY[0..z-1] of INT (16비트 PLC 기종에서: INT, DINT, REAL, 32비트 PLC 기종에서: y 값이 포함된 (INT, DINT, UINT, UDINT, REAL)). 여기서 z는 참조점 수의 위치 마커를 나타냅니다(엔트리 1 참조).

주석

FP_SCALE은 다음 데이터 형식을 지원합니다.

  • 16비트 PLC 기종에서(FP-Sigma, FP-X): INT, DINT, REAL

  • 32비트 PLC 기종에서(FP7): INT, DINT, REAL, UINT, UDINT

관련 항목

해당 F 명령: 2022-09-19F282_SCAL, F283_DSCAL, F354_FSCAL

시스템 명령

명령 창

메모리 영역

데이터 형식

DUT

구조체(DUT)를 사용하여 다른 데이터 형식으로 구성된 구조체를 정의할 수 있습니다. DUT는 먼저 DUT 풀에서 정의된 후 POU 헤더의 전역 변수 목록에서 표준 데이터 형식(BOOL, INT 등)으로 처리됩니다.

POU 헤더

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

VAR
		bStart: BOOL:=FALSE;
		iInput: INT:=50;
		xy_data: xy_data_dut;
		iScaledOutput: INT:=0;
		@'': @'';
	END_VAR

POU 본문

변수 bStartTRUE로 설정되면 펑션이 실행됩니다.

LD 본문

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,,bStart,4,2,6,4,);
B(B_F,FP_SCALE!,,17,1,25,6,,?DEN?Ds1_x?Ds2_xyData?AENO?Cd_y);
B(B_VARIN,,iInput,15,3,17,5,);
B(B_VAROUT,,iScaledOutput,25,3,27,5,);
B(B_VARIN,,xy_data.iNumberOfValues,15,4,17,6,);
L(1,0,1,6);
L(1,3,4,3);
L(6,3,17,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF (bStart) then
    FP_SCALE(s1_x := iInput, 
             s2_xyData := xy_data.iNumberOfValues, 
             d_y => iScaledOutput);
END_IF;

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