0 THEN ReceiveMessage := Left(Com.ReceiveMessage, FindPosition); Com.ReceiveMessage := DELETE(Com.ReceiveMessage, FindPosition,1); JMP Lable1; END_IF Lable1: IF FIND(ReceiveMessage, SCHUSTER_LOG[0]) = 0 AND ReceiveMessage <> '' THEN MEMMOVE(ADR(SCHUSTER_LOG[1]), ADR(SCHUSTER_LOG[0]), SIZEOF(SCHUSTER_LOG)- SIZEOF(SCHUSTER_LOG[0])); SCHUSTER_LOG[0] := ReceiveMessage; END_IF FindPosition := find(SCHUSTER_LOG[0], NewLine); IF FindPosition > 0 AND SCHUSTER_LOG[0] <> NewLine THEN SCHUSTER_LOG[0] := LEFT(SCHUSTER_LOG[0], FindPosition-1); END_IF IF OldSendMessage <> Com.SendMessage THEN OldSendMessage := Com.SendMessage; ReceiveMessage := ''; MEMMOVE(ADR(SCHUSTER_LOG[1]), ADR(SCHUSTER_LOG[0]), SIZEOF(SCHUSTER_LOG)- SIZEOF(SCHUSTER_LOG[0])); SCHUSTER_LOG[0] := Com.SendMessage; END_IF IF bInStartRead THEN StartRead(iStation); END_IF IF bInReadParameter THEN ReadParameter(); END_IF ReadInput(); Visu();]]> I_Limit THEN ResultNotOk := TRUE; CheckResult := TRUE; RETURN; END_IF END_IF END_IF END_FOR FOR i := 0 TO 50 DO IF SCHUSTER_TrendV[i] = 0 AND SCHUSTER_TrendI[i] = 0 THEN ResultNotOk := TRUE; CheckResult := TRUE; RETURN; ELSE IF SCHUSTER_TrendV[i] >= V_Limit THEN IF SCHUSTER_TrendI[i] > I_Limit THEN CheckResult := TRUE; RETURN; END_IF END_IF END_IF END_FOR ]]> 0 THEN TempString := ReceiveMessage; TempString := DELETE(TempString, 2, 1); FOR index := 1 TO 9 DO TempPos := Find(TempString, ','); TempText := Left(TempString, TempPos -1); TempString := DELETE(TempString, TempPos, 1); CASE index OF 1: HV_I.Index := STRING_TO_UINT(TempText); 2: HV_I.Ereignis := STRING_TO_USINT(TempText); IF HV_I.Ereignis <> 2 THEN EXIT; END_IF 3: HV_I.Betriebsart := STRING_TO_USINT(TempText); 4: HV_I.Messrate := STRING_TO_USINT(TempText); 5: HV_I.Rampe := STRING_TO_USINT(TempText); 6: HV_I.Spannungsgrenzwert := STRING_TO_UDINT(TempText); 7: HV_I.Stromgrenzwert := STRING_TO_LREAL(TempText)/100; 8: HV_I.Spannungsmesswert := STRING_TO_UDINT(TempText); 9: HV_I.Strommesswert := STRING_TO_LREAL(TempText)/100; END_CASE END_FOR END_IF IF HV_I.Index <> OldIndex THEN OldIndex := HV_I.Index; MEMMOVE(ADR(SCHUSTER_TrendV[1]), ADR(SCHUSTER_TrendV) ,SIZEOF(LREAL)*50); SCHUSTER_TrendV[0] := HV_I.Spannungsmesswert; MEMMOVE(ADR(SCHUSTER_TrendI[1]), ADR(SCHUSTER_TrendI) ,SIZEOF(LREAL)*50); SCHUSTER_TrendI[0] := HV_I.Strommesswert; END_IF]]> 0 THEN TempString := ReceiveMessage; TempString := DELETE(TempString, 2, 1); FOR index := 1 TO 6 DO TempPos := Find(TempString, ','); TempText := Left(TempString, TempPos -1); TempString := DELETE(TempString, TempPos, 1); CASE index OF 1: gMessrate := STRING_TO_USINT(TempText); sMessrate := gMessrate; 2: gRampe := STRING_TO_USINT(TempText); sRampe := gRampe; 3: gVR := STRING_TO_UDINT(TempText); sVR := gVR; 4: gIR := STRING_TO_LREAL(TempText)/100; sIR := gIR; 5: gVD := STRING_TO_UDINT(TempText); sVD := gVD; 6: gID := STRING_TO_LREAL(TempText)/100; sID := gID; END_CASE END_FOR Step := 20; END_IF 20: bInReadParameter := FALSE; ReadParameter := TRUE; Step := 0; END_CASE]]> Com.SendMessage );]]> 0 THEN Step := 10; END_IF LastHV: IF find(ReceiveMessage , 'M1;') > 0 THEN Step := 10; END_IF END_CASE 10: Com.SendMessage := 'K1;'; DelayTimer(IN := FALSE); Step := Step +1; 11: DelayTimer(IN := TRUE, PT :=T#1S); IF DelayTimer.Q THEN Step := 10; END_IF IF find(ReceiveMessage, 'K1;') > 0 THEN Step := 20; END_IF 20: Com.SendMessage := SEL(R_Dir, 'S0;', 'S1;'); HV_I.Ereignis := 0; Step := 30; 30: CASE HV_I.Ereignis OF 3: bInStartRead := FALSE; StartRead := TRUE; Step := 0; END_CASE END_CASE]]> sVD THEN BiggerV := sVR; ELSE BiggerV := sVD; END_IF CASE BiggerV OF 0..80: EndV := 100; 81..180: EndV := 200; 181..480: EndV := 500; 481..980: EndV := 1000; 981..1980: EndV := 2000; 1981..4980: EndV := 5000; 4981..9980: EndV := 10000; 9981..19980: EndV := 20000; 19981..49980: EndV := 50000; 49981..99980: EndV := 100000; ELSE EndV := 200000; END_CASE ServiceScaleEndV := EndV; ServiceScaleMainV := EndV /4; ServiceSubscaleV := EndV /20; IF sIR > sID THEN BiggerI := LREAL_TO_UDINT(sIR); ELSE BiggerI := LREAL_TO_UDINT(sID); END_IF CASE BiggerI OF 0..19: EndI := 20; 20..39: EndI := 40; 40..79: EndI := 80; 80..99: EndI := 100; 100..119: EndI := 120; 120..159: EndI := 160; ELSE EndI := 200; END_CASE ServiceScaleEndI := EndI; ServiceScaleMainI := EndI /4; ServiceSubscaleI := EndI /20; ]]>