@@ -0,0 +1,118 @@
(*
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : <EFBFBD> ¿ <EFBFBD> <EFBFBD> <EFBFBD>
ʱ <EFBFBD> <EFBFBD> : 2025.08 . 8
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> :
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ľ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȫ <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 2022 <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> ơ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> MT <EFBFBD> <EFBFBD> ú̿ <EFBFBD> <EFBFBD> ҵ <EFBFBD> <EFBFBD> ǿ <EFBFBD> Ʊ <EFBFBD> ;
ȱ <EFBFBD> <EFBFBD> : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> 451 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> µ <EFBFBD> ѹ <EFBFBD> <EFBFBD> MT / T 114 -2005 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ø <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 翪 <EFBFBD> ء <EFBFBD> <EFBFBD> <EFBFBD> 5.5 . 3 <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ﵽ <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> 90 %, ʣ <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> С <EFBFBD> <EFBFBD> 5 % ʱ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3 <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> Ϊ ȱ <EFBFBD> <EFBFBD>
<EFBFBD> ƽ <EFBFBD> <EFBFBD> : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> 437 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> Ϲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> й ع 涨 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> GB / T 15543 -2008 <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ <EFBFBD> д <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ ֮ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> = (I_max <EFBFBD> C I_min ) / I_max <EFBFBD> <EFBFBD> 100 %
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 8 % <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 2 s ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> ƽ <EFBFBD> ⡱ <EFBFBD> <EFBFBD> <EFBFBD> ϣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> բ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Ƿ ѹ : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> 451 <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ ֵ < 85 % <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 5 <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> ѹ: <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̡ <EFBFBD> <EFBFBD> <EFBFBD> 452 <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ ֵ > 115 % <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 5 <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> ѹ <EFBFBD> ݽ <EFBFBD> / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> / <EFBFBD> <EFBFBD> ʱ <EFBFBD> ж <EFBFBD> : <EFBFBD> <EFBFBD> <EFBFBD> ҿ <EFBFBD> ɽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֡ <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ¹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵ ͳ ͨ <EFBFBD> ü <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3.2 <EFBFBD> <EFBFBD>
<EFBFBD> <EFBFBD> ѹ <EFBFBD> ݽ <EFBFBD> : <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> ͵ <EFBFBD> ԭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> 5 %, <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 20 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ~ 3 <EFBFBD> <EFBFBD> ֮ <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> ԭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> 5 %, <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 20 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ~ 3 <EFBFBD> <EFBFBD> ֮ <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> ʱ <EFBFBD> ж <EFBFBD> : <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> ͵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> 5 % <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 20 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ~ 3 <EFBFBD> <EFBFBD> ֮ <EFBFBD> <EFBFBD> ;
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʵ ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD>
* )
FUNCTION_BLOCK fbValProtection
PL_TON [1 ]( IN :=
(Phase . Filtered5_U <= (0.05 * Rated )) AND
(Phase . Filtered5_V >= (0.9 * Rated )) AND
(Phase . Filtered5_W >= (0.9 * Rated ))
, PT := T # 3S );
PL_TON [2 ]( IN :=
(Phase . Filtered5_U >= (0.9 * Rated )) AND
(Phase . Filtered5_V <= (0.05 * Rated )) AND
(Phase . Filtered5_W >= (0.9 * Rated ))
, PT := T # 3S );
PL_TON [3 ]( IN :=
(Phase . Filtered5_U >= (0.9 * Rated )) AND
(Phase . Filtered5_V >= (0.9 * Rated )) AND
(Phase . Filtered5_W <= (0.05 * Rated ))
, PT := T # 3S );
IF PL_TON [1 ]. Q THEN
isPhaseLoss := TRUE ;
PhaseLoss := 1 ; (* U <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_U := TRUE ; (* U <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_V := FALSE ;
isPhaseLoss_W := FALSE ;
ELSIF PL_TON [2 ]. Q THEN
isPhaseLoss := TRUE ;
PhaseLoss := 2 ; (* V <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_U := FALSE ;
isPhaseLoss_V := TRUE ; (* V <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_W := FALSE ;
ELSIF PL_TON [3 ]. Q THEN
isPhaseLoss := TRUE ;
PhaseLoss := 3 ; (* W <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_U := FALSE ;
isPhaseLoss_V := FALSE ;
isPhaseLoss_W := TRUE ; (* W <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
ELSE
isPhaseLoss := FALSE ;
PhaseLoss := 0 ; (* <EFBFBD> <EFBFBD> ȱ <EFBFBD> <EFBFBD> * )
isPhaseLoss_U := FALSE ;
isPhaseLoss_V := FALSE ;
isPhaseLoss_W := FALSE ;
END_IF ;
IF Phase . AverageeValue > 0 AND NOT isPhaseLoss THEN
Imb_TON ( IN := ((Phase . MaxValue - Phase . MinValue ) / Phase . MaxValue * 100 >= 8 ) AND (NOT isPhaseLoss ) , PT := T # 4S );
IF Imb_TON . Q THEN
isImbalance := TRUE ;
IF Phase . MinValue = Phase . U THEN
Imbalance := 1 ; (* U <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
isImbalance_U := TRUE ; (* U <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
isImbalance_V := FALSE ;
isImbalance_W := FALSE ;
ELSIF Phase . MinValue = Phase . V THEN
Imbalance := 2 ; (* V <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
isImbalance_U := FALSE ;
isImbalance_V := TRUE ; (* V <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
isImbalance_W := FALSE ;
ELSIF Phase . MinValue = Phase . W THEN
Imbalance := 3 ; (* W <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
isImbalance_U := FALSE ;
isImbalance_V := FALSE ;
isImbalance_W := TRUE ; (* W <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <EFBFBD> * )
END_IF ;
ELSE
isImbalance := FALSE ; (* ƽ <EFBFBD> <EFBFBD> * )
Imbalance := 0 ; (* ƽ <EFBFBD> <EFBFBD> * )
isImbalance_U := FALSE ;
isImbalance_V := FALSE ;
isImbalance_W := FALSE ;
END_IF ;
IF isImbalance OR isPhaseLoss THEN RETURN ; END_IF ;
END_IF ;
UO_TON [1 ](IN := Phase . AverageeValue < (Rated * UnderProtection / 100 ) AND NOT isPhaseLoss AND NOT isImbalance , PT := T # 5S ); (* Ƿ ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ * )
UO_TON [2 ](IN := Phase . AverageeValue > (Rated * OverProtection / 100 ) AND NOT isPhaseLoss AND NOT isImbalance , PT := T # 5S ); (* <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ * )
isUnderVolage := UO_TON [1 ]. Q ; (* Ƿ ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> * )
isOverVoltage := UO_TON [2 ]. Q ; (* <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> * )
isVoltageInterrupt := Phase . MinValue < (0.05 * Rated ) AND NOT isPhaseLoss AND NOT isImbalance ; (* <EFBFBD> <EFBFBD> ʱ <EFBFBD> ж ϱ <EFBFBD> <EFBFBD> <EFBFBD> * )
isVoltageDip := ((Old_Val [1 ] - Phase . U > 0.05 ) OR (Old_Val [2 ] - Phase . V > 0.05 ) OR (Old_Val [3 ] - Phase . W > 0.05 )) AND NOT isPhaseLoss AND NOT isImbalance ; ; (* <EFBFBD> <EFBFBD> ѹ <EFBFBD> ݽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> * )
isVoltageSwell := ((Phase . U - Old_Val [1 ] > 0.05 ) OR (Phase . V - Old_Val [2 ] > 0.05 ) OR (Phase . W - Old_Val [3 ] > 0.05 )) AND NOT isPhaseLoss AND NOT isImbalance ; ; (* <EFBFBD> <EFBFBD> ѹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> * )
Old_Val [1 ] := Phase . U ; (* <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> һ <EFBFBD> ε <EFBFBD> U <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹֵ * )
Old_Val [2 ] := Phase . V ; (* <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> һ <EFBFBD> ε <EFBFBD> V <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹֵ * )
Old_Val [3 ] := Phase . W ; (* <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> һ <EFBFBD> ε <EFBFBD> W <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹֵ * )
END_FUNCTION_BLOCK