Cześć,
Jest to mój pierwszy post wiec serdecznie witam wszystkich.
Ponieważ język ST w sterownikach PLC jest podobne do C++.
z miła chęcią przyjmę świrze spojrzenie programisto wysokopoziomowych na mój cod.
Opis zagadnienia:
Maszyna porusza się pomiędzy punktem A i B,
Przejazd z punktu do punktu to 1 przejście.
np w jednym cyklu maszyna ma mieć:
2 przejścia czyli: A do B do A
3 przejścia: A do B do A do B
Maszyna ma zadana ilość przejść. i t robi się problem jak mamy nieparzysta liczbę przejść.
Aby nie tracić czasu nie che zawsze startować z punktu A w następnym cyklu maszyny jeżeli zaskoczyła cykl w pozycji B:
IF ProcessStep= 1 & StartMoving THEN
passes:=0;
ProcessStep:= 10;
END_IF;
IF passes > CurrentPasses THEN
IF ProcessStep= 10 & (CurrentPosition = position_A) THEN
TargetPosition:=position_B;
ProcessStep := 20;
ELSE
ProcessStep:= 11;
END_IF;
IF ProcessStep= 20 & TargetPosition = position_B THEN
StartMotor := TRUE;
IF MotorStatus = TRUE THEN
StartMotor := FALSE;
ProcessStep:= 21;
END_IF;
END_IF;
IF ProcessStep= 21 & CurrentPosition = TargetPosition & MotorDoon THEN
CurrentPasses := passes +1;
END_IF;
IF ProcessStep= 11 & CurrentPosition = position_B THEN
TargetPosition:=position_A;
ProcessStep := 12;
ELSE
ProcessStep:= 10;
END_IF;
IF ProcessStep= 12 & TargetPosition = position_B THEN
StartMotor := TRUE;
IF MotorStatus = TRUE THEN
StartMotor := FALSE;
ProcessStep:= 13;
END_IF;
END_IF;
IF ProcessStep= 13 & CurrentPosition = TargetPosition & MotorDoon THEN
CurrentPasses := passes +1;
END_IF;
END_IF;
IF passes = CurrentPasses THEN
StartMoving := FALSE;
ProcessStep= 1;
END_IF;