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으로 설정됩니다. 처음에는 비례 게인 Kp는 80(8)으로, Ti와 Td는 200(20s)으로, 샘플링 시간 Ts는 100(1s)으로 설정됩니다.

POU 본문

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

Set_Value_SP 및 Process_Value_PV 변수는 DUT PidParameters의 멤버 SP와 PV에 할당되고, A/D 컨버터 채널 0과 1에서 해당 값을 수신합니다.

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 직통 전화