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

Programowanie PLC w ST (Structured Text)

Object Storage Arubacloud
+1 głos
37,446 wizyt
pytanie zadane 27 kwietnia 2015 w Inne języki przez sajmon_szy Nowicjusz (170 p.)
edycja 27 kwietnia 2015 przez sajmon_szy
Cześć!

Programuje ktoś z Was PLC-ki w ST?
Rozpoczynam naukę i napotkałem problem. Piszę program obsługujący bramę wzjadową (przesuwną). Jak na razie uzyskałem efekt, że po kliknięciu w przycisk brama otwiera się, a po ponownym kliknięciu - zamyka się. Jednak w rzeczywistości działa to troszkę inaczej, a mianowicie - po kliknięciu brama otwiera się, po ponownym klikcięcu brama zatrzymuje się, kolejne klikcięcie - brama zamyka się, kolejne- zatrzymuje , i od początku. Jest tu trochę więcej opcji okodowanych rzecz jasna, ale z powyższym mam problem. Wszystko napisane przy pomocy zmiennych BOOL, ruch bramy REAL. Zastosowano multum warunków IF. Nie wiem jaki typ zmiennej dać który obsłuży mój problem.
Programowanie w ST jest całkiem podobne do c++, więc powinniście mieć na to jakiś sposób. A na samą logikę to już na pewno :-).

Pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 5 maja 2015 przez kudlatyzbik Nowicjusz (200 p.)
Musisz podać troszke więcej szczegułów.

Może fragment kodu , który sprawia Ci problem.

Musi to być w ST? Na początek sugerowałbym drabinkowy. Bedzie łatwiej.
0 głosów
odpowiedź 9 maja 2015 przez andrzey13 Nowicjusz (140 p.)

Cześć.

W pierwszych słowach pragnę Ci podziękować za poruszenie tematu programowania sterowników PLC.

Osobiście poleciłbym Ci język FBD (Function Block Diagram) zamiast ST, czyli w skrócie bloczki. Dlaczego?

Ludzie są głównie wzrokowcami, zatem obraz kilku bloczków jest łatwiej przyswoić i przeanalizować niż obraz kodu tekstowego napisanego w kilku linijkach. Ponadto w ST musisz pamiętaćo deklaracjach, połączeniach, funkcjach, itp., natomist FBD realizuje część kodu za Ciebie.

Z Twojego opisu wynika, że system ma realizować 4 stany (otwieranie, stop_otwieranie, zamykanie, stop_zamykanie) po każdorazowym kliknięciu.

Można użyć np. licznika od 0 do 3. Wejście licznika poprzedzone bloczkiem wykrywającym zbocze narastające, czyli po każdym kliknięciu licznik zwiększa wartość o 1 do wartości 3. Na wejście resetujące licznik podaj zależność, gdy wyjście licznika równe_większe 4. W ten sposób licznik zacznie od 0.

Poniżej prezentuje prosty sytem napisany w FBD w środowisku CoDeSys 2.3.

Pozdrawiam, Andrzej

komentarz 18 maja 2015 przez sajmon_szy Nowicjusz (170 p.)

Witam,

Przepraszam, że dopiero odpowiadam, ale po kilku dniach sprawdzania forum zrezygnowałem z uzyskania odpowiedzi. Jak widać był to błąd. Poniżej załączam aktualny kod programu.

Na chwilę obecną zajmuję się językiem ST, gdyż jest dla mnie bardziej zrozumiały i przyjazny niż FBD (może dlatego, że wcześniej dziubałem trochę do C++), chociaż jak sądzę nie ominie mnie zaprzyjaźnienie się z tym językiem.

Moje pytanie nadal aktualne.

Zmienne:

Kod:

// Zerowanie zmiennych wychodzących poza zakres <0,1>
	IF Ruch_bramy > 10 
		THEN
			Ruch_bramy:=10;
	END_IF
	
	IF Ruch_bramy < 0
		THEN
			Ruch_bramy:=0;
	END_IF
	
// Ustawienie aktywnej krańcówki1 przy bramie zamkniętej	
	IF Ruch_bramy = 0
		THEN
			Krancowka1:= TRUE;
		ELSE
			Krancowka1:= FALSE;
	END_IF
	
	
(* Imitacja przycisku i ruch bramy (otwieranie) ze stałą inkrementacją, oraz zapalaie lampki sygnalizującej otwieranie bramy.
Dodatkowo wprowadzono warunek który zatrzymuje otwieranie bramy gdy czujnik swietlny lub czujnik przeciazenia zostanie aktywowany. W stanie otwierania bramy-
aktywacja czujnika świetlnego nie spowoduje jej zatrzymania (brama nadal będzie się otwierać). Podczas zamykania - tak *)	
				
	IF Czujnik_oporu = FALSE
		THEN
			IF 	PrzyciskOpenClose = TRUE AND Ruch_bramy < 10 
				THEN
					Ruch_bramy:=Ruch_bramy + 0.01;
					Otwieranie:= TRUE;
					STOP:=FALSE;
				ELSE
					Otwieranie:= FALSE;
			END_IF
		ELSE
			Otwieranie:=FALSE;
			STOP:=TRUE;
	END_IF

	
// Ustawienie aktywnej krańcówki1 przy bramie otwartej	 
	IF Ruch_bramy >= 10
		THEN
		Krancowka2:= TRUE;
	ELSE
		Krancowka2:= FALSE;
	END_IF; 
	 
	
(* Imitacja przycisku i ruch bramy (zamykanie) ze stałą inkrementacją, oraz zapalaie lampki sygnalizującej zamykanie bramy.
	Dodatkowo wprowadzono warunek który zatrzymuje otwieranie bramy gdy czujnik swietlny lub czujnik przeciazenia zostanie aktywowany. *)

	IF Czujnik_swietlny = FALSE AND Czujnik_oporu = FALSE AND Furtka= FALSE
		THEN
			IF PrzyciskOpenClose = FALSE AND Ruch_bramy > 0 AND Ruch_bramy <= 10
				THEN	
					Ruch_bramy:=Ruch_bramy - 0.01;
					Zamykanie:= TRUE;
					STOP:=FALSE;
				ELSE
					Zamykanie:= FALSE;
			END_IF
		ELSE
			Zamykanie:= FALSE;
			STOP:=TRUE;
	END_IF


(*Funkcja furtki (ang. wicket) *)
		
	IF Furtka = TRUE
		THEN
			Ruch_bramy:=Ruch_bramy + 0.01;
		IF Ruch_bramy >= 2 
			THEN 
				Ruch_bramy:=2;
				CounterON:= TRUE; 
				TON_01( IN:=CounterON, PT:=T#5s );
				Powrot_bramy:= TON_01.Q;
					IF Powrot_bramy = TRUE
						THEN 
							Furtka:=FALSE;
					END_IF
		END_IF
		
	END_IF 
	
	
END_PROGRAM

 

Podobne pytania

0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 18 lipca 2019 w Inne języki przez Tholin Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 284 wizyt
pytanie zadane 24 lutego 2021 w Offtop przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
0 odpowiedzi 199 wizyt

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...