• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PLC ST sekwencja początkujący

Cloud VPS
0 głosów
244 wizyt
pytanie zadane 18 lipca 2019 w Inne języki przez Tholin Nowicjusz (160 p.)

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;

 

 

1 odpowiedź

0 głosów
odpowiedź 14 czerwca 2021 przez Tholin Nowicjusz (160 p.)

Podobne pytania

0 głosów
1 odpowiedź 257 wizyt
0 głosów
1 odpowiedź 337 wizyt
0 głosów
1 odpowiedź 1,138 wizyt
pytanie zadane 19 kwietnia 2018 w C# przez Oskar Szkurłat Bywalec (2,780 p.)

93,488 zapytań

142,422 odpowiedzi

322,772 komentarzy

62,906 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...