F355_PID_DUT

PID 처리 명령어

PID 처리 명령은 측정 값(예: 온도)과 사전 결정된 출력 값(예: 20°C)를 제공하는 프로세스(예: 히터)를 통제하는데 사용됩니다.

파라미터

입력

s (PID_DUT_31)

파라미터의 자세한 내용은 PID_DUT_31을 참조해 주십시오.

주석

  • F 명령을 사용하는 대신 해당 FP7 명령을 사용하는 것이 좋습니다.FP_PID_BASIC

  • 이 명령은 파라미터가 s 입력에서 입력된 요소 30개를 사용하여 ARRAY 형태로 데이터 테이블에서 결정되는 PID 알고리즘을 계산합니다.

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)

파라미터 설정이 허용 범위를 벗어나는 경우

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)

파라미터 설정이 허용 범위를 벗어나는 경우

글로벌 변수

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

POU 헤더

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

	VAR_EXTERNAL
		EnableAutoTuning: BOOL:=FALSE;
			(*Switch Auto Tuning On *)
		Set_Value_SP: WORD:=0;
			(*A/D CH0*)
		Process_Value_PV: WORD:=0;
			(*A/D CH1*)
		Output_Value_MV: WORD:=0;
			(*D/A*)
	END_VAR
	VAR 
		PidParameters: PID_DUT_31;
			(*PID Parameters*)
	END_VAR

PID_DUT_31 데이터 형식의 PidParameters 변수를 초기화하면 MV 상한값은 4000으로 설정됩니다. 처음에는 비례 게인 Kp80(8)으로, TiTd200(20s)으로, 샘플링 시간 Ts100(1s)으로 설정됩니다.

POU 본문

EnableAutoTuning 변수가 FALSE에서 TRUE로 전환되면 표준 명령 MOVE16#8000 값을 DUT PidParameters의 멤버 Control에 복사합니다(예: F355_PID_DUT 함수에서 제어 모드 자동 조정이 활성화됨).

Set_Value_SPProcess_Value_PV 변수는 DUT PidParameters의 멤버 SPPV에 할당되고, A/D 컨버터 채널 01에서 해당 값을 수신합니다.

F355_PID_DUT에는 전원 레일에 직접 연결된 EN 출력이 있으므로, PLC가 RUN 모드이면 함수가 실행됩니다. DUT PidParameters의 멤버 MV에 의해 저장된 계산된 컨트롤러 출력은 Output_Value_MV 변수에 할당됩니다. 이 값은 D/A 컨버터를 통해 PLC에서 시스템 출력으로 반환됩니다.

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_F,E_MOVE,,10,2,17,6,,?DEN?Da_Num?AENO?C);
B(B_VAROUT,,PidParameters.Control,17,4,19,6,);
B(B_VARIN,,16#8000,8,4,10,6,);
B(B_CONTACT,,EnableAutoTuning,5,3,7,5,R);
B(B_COMMENT,,Enable Auto Tuning,2,1,12,2,);
L(1,4,5,4);
L(7,4,10,4);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_VARIN,,Set_Value_SP,9,2,11,4,);
B(B_VAROUT,,PidParameters.SP,11,2,13,4,);
B(B_COMMENT,,Fill the DUT PID_DUT_31 with the corresponding values,2,1,24,2,);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 2 ;
        NETWORK_BODY
B(B_VARIN,,Process_Value_PV,9,0,11,2,);
B(B_VAROUT,,PidParameters.PV,11,0,13,2,);
L(1,0,1,2);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters,8,5,10,7,);
B(B_F,F355_PID_DUT!,Instance,10,3,18,7,,?DEN?D@'s'?AENO);
B(B_COMMENT,,Carry out the PID arithmetic,2,1,21,2,);
L(1,5,10,5);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters.MV,9,2,11,4,);
B(B_VAROUT,,Output_Value_MV,11,2,13,4,);
B(B_COMMENT,,Write manipulated value to the output,2,1,21,2,);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

(* Auto Tuning: *)
if DF(EnableAutoTuning) then
    PidParameters.Control:=16#8000;
end_if;
(* Fill the DUT PidParameters with the corresponding input values: *)
PidParameters.SP:=Set_Value_SP;
PidParameters.PV:=Process_Value_PV;
(* Carry out the PID arithmetic: *)
F355_PID_DUT(PidParameters);
(* Write the manipulated value to the output: *)
Output_Value_MV:=PidParameters.MV;

IL 본문

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