tangbingchen
級別: 探索解密
|
*************************************************************************************) REGION #A18 := #IN >= 32767; #A19 := #IN <= -32768; #A22 := #A18 OR #A19; END_REGION REGION #A17 := LIMIT(MN := 0, IN := #IN, MX := 27648); IF #A22 THEN #A17 := 0; END_IF; END_REGION REGION IF #SQUA THEN #A17 := REAL_TO_INT((SQRT(INT_TO_REAL(#A17) / 27648.0)) * 27648.0); ELSE #A17 := #A17; END_IF; END_REGION REGION IF NOT #SsrTy THEN #A15 := (INT_TO_REAL(#A17)) / 27648.0 * (#HiScl - #LoScl) + #LoScl; ELSE #A15 := (INT_TO_REAL(#A17)) / 10.0; END_IF; //revise #A16 := #A15 * #RvsMul + #RvsAdd; IF #A16 < #MinVal THEN #A11 := 0.0; ELSE #A11 := #A16; END_IF; END_REGION REGION IF #HwSCW.HwSCW.%X0 THEN #A11 := #HwSCW.SimVal; ELSE #HwSCW.SimVal := #A11; END_IF; #Q := #A11; #HwSCW.Q := #A11; #HwSCW.Fill := (#A11 / #HiScl - #LoScl) * 100.0; END_REGION REGION REGION #A14 := 0; #A13[0] := 0.0; #A13[1] := 0.0; #A13[2] := 0.0; #A13[3] := 0.0; #A13[4] := 0.0; #A13[5] := 0.0; IF #AlmTy.%X5 THEN #A13[#A14] := #HwSCW.Setting.AHH; #A14 := #A14 + 1; END_IF; IF #AlmTy.%X4 THEN #A13[#A14] := #HwSCW.Setting.AH; #A14 := #A14 + 1; END_IF; IF #AlmTy.%X3 THEN #A13[#A14] := #HwSCW.Setting.SH; #A14 := #A14 + 1; END_IF; IF #AlmTy.%X2 THEN #A13[#A14] := #HwSCW.Setting.SL; #A14 := #A14 + 1; END_IF; IF #AlmTy.%X1 THEN #A13[#A14] := #HwSCW.Setting.AL; #A14 := #A14 + 1; END_IF; IF #AlmTy.%X0 THEN #A13[#A14] := #HwSCW.Setting.ALL; #A14 := #A14 + 1; END_IF; IF ABS(#A13[0]) >= ABS(#A13[1]) AND ABS(#A13[1]) >= ABS(#A13[2]) AND ABS(#A13[2]) >= ABS(#A13[3]) AND ABS(#A13[3]) >= ABS(#A13[4]) AND ABS(#A13[4]) >= ABS(#A13[5]) THEN #A23 := 0; ELSE #A23 := 1; END_IF; END_REGION IF #Polarity THEN //0:positive/1:negative //H #A12.%X1 := ABS(#A11) >= ABS(#HwSCW.Setting.AH) AND #AlmTy.%X4 AND #Feature.HAlmEnable; //SH #A12.%X2 := ABS(#A11) > ABS(#HwSCW.Setting.SH) AND #AlmTy.%X3 AND (NOT #A12.%X0) AND #Feature.HAlmEnable; //SL #A12.%X3 := ABS(#A11) < ABS(#HwSCW.Setting.SL) AND #AlmTy.%X2 AND (NOT #A12.%X5) AND #Feature.LAlmEnable; //L #A12.%X4 := ABS(#A11) <= ABS(#HwSCW.Setting.AL) AND #AlmTy.%X1 AND #Feature.LAlmEnable; //HH #A20 := ABS(#A11) >= ABS(#HwSCW.Setting.AHH) AND #AlmTy.%X5 AND #Feature.HAlmEnable; //LL #A21 := ABS(#A11) <= ABS(#HwSCW.Setting.ALL) AND #AlmTy.%X0 AND #Feature.LAlmEnable; ELSE //H #A12.%X1 := #A11 >= #HwSCW.Setting.AH AND #AlmTy.%X4 AND #Feature.HAlmEnable; //SH #A12.%X2 := #A11 > #HwSCW.Setting.SH AND #AlmTy.%X3 AND (NOT #A12.%X0) AND #Feature.HAlmEnable; //SL #A12.%X3 := #A11 < #HwSCW.Setting.SL AND #AlmTy.%X2 AND (NOT #A12.%X5) AND #Feature.LAlmEnable; //L #A12.%X4 := #A11 <= #HwSCW.Setting.AL AND #AlmTy.%X1 AND #Feature.LAlmEnable; //HH #A20 := #A11 >= #HwSCW.Setting.AHH AND #AlmTy.%X5 AND #Feature.HAlmEnable; //LL #A21 := #A11 <= #HwSCW.Setting.ALL AND #AlmTy.%X0 AND #Feature.LAlmEnable; END_IF; //HH #A01(IN := #A20, PT := #DlyTime.HH ); IF #A01.Q THEN #A12.%X0 := 1; END_IF; //LL #A02(IN := #A21, PT := #DlyTime.LL ); IF #A02.Q THEN #A12.%X5 := 1; END_IF; //Fault #A03(IN := #A22, PT := #DlyTime.Flt ); IF #A03.Q THEN #A12.%X6 := 1; END_IF; END_REGION REGION IF (#A12.%X0 OR #A12.%X5 OR #A12.%X6) AND (#Ack OR #HwSCW.HwSCW.%X31) THEN #A10 := 1; END_IF; IF #A10 THEN IF NOT #A01.Q THEN #A12.%X0 := 0; END_IF; IF NOT #A02.Q THEN #A12.%X5 := 0; END_IF; IF NOT #A03.Q THEN #A12.%X6 := 0; END_IF; END_IF; IF #A12.%X0 = 0 AND #A12.%X5 = 0 AND #A12.%X6 = 0 THEN #A10 := 0; END_IF; END_REGION REGION #QOK := (NOT #A12.%X0) AND (NOT #A12.%X1) AND (NOT #A12.%X4) AND (NOT #A12.%X5) AND (NOT #A12.%X6) AND (NOT #A23); END_REGION REGION #QAHH := #A12.%X0; #QAH := #A12.%X1; #QSH := #A12.%X2; #QSL := #A12.%X3; #QAL := #A12.%X4; #QALL := #A12.%X5; #QFlt := #A12.%X6; #QHiScl := #HiScl; #QLoScl := #LoScl; #HwSCW.QHiScl := #QHiScl; #HwSCW.QLoScl := #QLoScl; END_REGION REGION #A04(SIG := #QFlt AND NOT #HwSCW.HwSCW.%X15); #A05(SIG := #QAHH AND NOT #HwSCW.HwSCW.%X15); #A06(SIG := #QALL AND NOT #HwSCW.HwSCW.%X15); #A07(SIG := #QAH AND NOT #HwSCW.HwSCW.%X15); #A08(SIG := #QAL AND NOT #HwSCW.HwSCW.%X15); #A09(SIG := #A23 AND NOT #HwSCW.HwSCW.%X15); END_REGION REGION #HwSCW.HwSCW.%X1 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X5; #HwSCW.HwSCW.%X2 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X4; #HwSCW.HwSCW.%X3 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X3; #HwSCW.HwSCW.%X4 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X2; #HwSCW.HwSCW.%X5 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X1; #HwSCW.HwSCW.%X6 := #HwSCW.HwSCW.%X7 AND #AlmTy.%X0; #HwSCW.HwSCW.%X16 := #A12.%X0; #HwSCW.HwSCW.%X17 := #A12.%X1; #HwSCW.HwSCW.%X18 := #A12.%X2; #HwSCW.HwSCW.%X19 := #A12.%X3; #HwSCW.HwSCW.%X20 := #A12.%X4; #HwSCW.HwSCW.%X21 := #A12.%X5; #HwSCW.HwSCW.%X22 := #A12.%X0 AND NOT #A10; #HwSCW.HwSCW.%X23 := #A12.%X5 AND NOT #A10; #HwSCW.HwSCW.%X24 := #A12.%X6; #HwSCW.HwSCW.%X25 := #A12.%X6 AND NOT #A10; #HwSCW.HwSCW.%X26 := #QOK; #HwSCW.HwSCW.%X8 := #AlmTy.%X5; //AHH #HwSCW.HwSCW.%X9 := #AlmTy.%X4; //AH #HwSCW.HwSCW.%X10 := #AlmTy.%X3; //SH #HwSCW.HwSCW.%X11 := #AlmTy.%X2; //SL #HwSCW.HwSCW.%X12 := #AlmTy.%X1; //AL #HwSCW.HwSCW.%X13 := #AlmTy.%X0; //ALL #HwSCW.HwSCW.%X28 := #A18; //overflow #HwSCW.HwSCW.%X29 := #A19; //break line #HwSCW.HwSCW.%X30 := #A23; #HwSCW.HwSCW.%X31 := FALSE; //Ack command from hmi END_REGION |
---|---|
|