PID 처리 명령어
이 구현을 사용하면 PID_DUT_31 구조를 통해 F355_PID 명령에 액세스할 수 있습니다.
입력
FALSE: MV 수동 설정 가능
TRUE: 자동 PID 제어 MV
출력
파라미터의 자세한 내용은 PID_DUT_31을 참조해 주십시오.
프로그램이 초기화된 경우 또는 Automatic 값이 FALSE인 경우에 MV 값을 외부적으로 할당할 수 있습니다.
LowerLimit 및 UpperLimit를 넘는 최대 해상도와 최저 데드 타임을 얻으려면 이러한 값이 0~10000 전체 범위를 다뤄야 합니다(가능한 경우).
파라미터 설정이 허용 범위를 벗어나는 경우
파라미터 설정이 허용 범위를 벗어나는 경우
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR_EXTERNAL
Set_Value_SP: INT:=0;
(*A/D CH0*)
Process_Value_PV: INT:=0;
(*A/D CH1*)
Output_Value_MV: INT:=0;
(*D/A*)
END_VAR
VAR
PID_Parameter: PID_DUT;
(*PID Parameters*)
PID_Control: PID_FB_DUT;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
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,,PID_Parameter.SP,11,2,13,4,);
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,,PID_Parameter.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 := 5 ;
NETWORK_BODY
B(B_FB,PID_FB_DUT!,PID_Control,10,1,18,5,,?BAutomatic?BPidDut?APidDut);
B(B_VARIN,,TRUE,8,2,10,4,);
B(B_VARIN,,PID_Parameter,8,3,10,5,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_VARIN,,PID_Parameter.MV,10,2,12,4,);
B(B_VAROUT,,Output_Value_MV,12,2,14,4,);
B(B_COMMENT,,Write manipulated value to the output,3,1,22,2,);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
PID_Parameter.SP := Set_Value_SP;
PID_Parameter.PV := Process_Value_PV;
PID_Control( Automatic:= TRUE,
PidDut:= PID_Parameter);
Output_Value_MV := PID_Parameter.MV;