You are on page 1of 8

Piotr Cienkowski

Łukasz Żołek
PLC – laboratorium

Projekt 2

Tu wpisać polecenie!!!!

Kod źródłowy programu dołączyliśmy na końcu sprawozdania.

Program steruje sygnalizacją świetlną na dwóch skrzyżowaniach oraz sygnalizacją dla


przejścia dla pieszych znajdującego się pomiędzy skrzyżowaniami. Sterowanie sygnalizacją
świetlną podzieliliśmy na 9 stanów (trybów), w jakich mogą znajdować się światła. Poniższa
tabela przedstawia znaczenie poszczególnych trybów:

Skrzyżowanie 1 Przejście dla Skrzyżowanie 2


Tryb pieszych Q0 Q1 Q2 Q3 Q4
Diody Q0.0 i Q0.1 Dioda Q0.2 Diody Q0.3 i Q0.4
1. zielone czerwone zielone ○ ● ● ○ ●
2. pomarańczowe czerwone zielone ☼ ● ● ○ ●
3. czerwone czerwone zielone ● ○ ● ○ ●
4. czerwone zielone zielone ● ○ ○ ○ ●
5. czerwone zielone pomarańczowe ● ○ ○ ☼ ●
6. czerwone zielone czerwone ● ○ ○ ● ○
7. czerw. + pomarań. miga zielone czerwone ● ☼ ☼ ● ○
8. zielone czerwone czerwone ○ ● ● ● ○
9. zielone czerwone czerw. + pomarań. ○ ● ● ● ☼
☼ - dioda migająca ● – dioda zgaszona ○ – dioda zapalona

Na początku programu sprawdzamy każdy bit markera zerowego. Każdy bit


począwszy od M0.0 odpowiada jednemu z możliwych trybów. Podczas pierwszego
uruchomienia programu cały marker ma wartość zero. Z tego powodu nie jest wybrany żaden
z trybów, dlatego za wszystkimi testami przypisujemy bitowi zerowemu M0.0 markera
trybów wartość 1, a następnie wykonujemy program powtórnie. Tym razem zostaje
rozpoznany tryb 1 jako aktualny. Od tego momentu program będzie działał stopniowo
wykonując każdy z trybów (po 9. znów zacznie od 1.).

Tryb1:
Jest to tryb, w którym światła świecą się światłem ciągłym. Na samym początku tego
trybu ustawiamy bit markera M0 odpowiadający temu trybowi (M0.0=1). Następnie
budujemy generator impulsów złożony z timerów. Generator ten generuje impuls
sygnalizujący przejście do następnego trybu. Czas, po którym ma się pokazać impuls jest
ustawiany w pierwszym timerze. Dla tego trybu wybraliśmy czas 10 sekund. Kolejna
komenda to wysłanie na wyjście sterownika odpowiedniej wartości liczbowej co jest
jednoznaczne z zapaleniem odpowiednich diod.
Tryb 1 jest jedynym trybem umożliwiającym ingerencję użytkownika w czas działania
sygnalizacji świetlnej. Jest to zasymulowanie przycisku znajdującego się przy sygnalizacji
przy przejściu dla pieszych. Zasada działania jest bardzo prosta. Umieściliśmy kolejny tirem
w kodzie programu uruchamiany przyciskiem I0.0. Timer jest ustawiony na 5 sekund. Po tym
czasie ustawiany jest mit M5.0, a następnie sprawdzany jest stan markera bajtowego MB5.0.
Jeśli jest on różny od zera to przechodzimy do trybu drugiego.
W tym trybie przejście do następnego trybu jest możliwe na dwa sposoby, albo gdy
pojawi się impuls z generatora impulsów (przejście do trybu 2 po 10 sekundach) lub po
wciśnięciu przycisku I0.0 przy przejściu dla pieszych (po czasie 5 sekund od naciśnięcia).
Ostatnią komendą przed przejściem do następnego trybu jest wyzerowanie bitu
odpowiadającego za wybór trybów.

Tryb 2:
Tryb ten jak każdy inny rozpoczyna się uaktualnieniem bitów Markera trybów.
Ponieważ dostęp do tego trybu jest możliwy także poprzez skok od przycisku przy przejściu
dla pieszych, musimy na początku zadbać o to, żeby wyzerować bit od nieaktualnego już
trybu pierwszego, a następnie ustawić bis M0.l odpowiadający trybowi drugiemu. Następnie
budujemy generator impulsów tak jak w trybie pierwszym. Pojawienie się impulsu będzie
oznaczało przejście do kolejnego trybu. Budowanie takich generatorów dla każdego trybu
gwarantuje nam swobodny wybór czasu dla poszczególnych trybów.
Na wyjście sterownika wysyłany jest odpowiedni stan do zapalenia statycznych diod,
a mruganie zrealizowaliśmy przypisując stan mrugającej diodzie z wewnętrznego generatora
sterownika (marker M34,15). Przy przejściu do kolejnego stanu kasowany jest stan z markera
trybów odpowiadający trybowi drugiemu.

Tryby kolejne:
Wszystkie tryby możemy podzielić na dwie grupy: z migającymi diodami oraz z
diodami świecącymi się statycznie. Zależnie od tego kolejne tryby będą kopią trybu 1 lub
trybu 2. W kolejnych trybach nie będzie już reakcji na wciśnięty przycisk przy przejściu dla
pieszych. Jest to zgodne z rzeczywistością, ponieważ przycisk nie działa, gdy piesi mają
zielone światło, a także nie zadziała od razu, po pojawieniu się światła czerwonego dla
pieszych. Napisanie kolejnych trybów dało nam bardzo prosty dostęp do czasów ich trwania.
Każdy tryb kończy się wyzerowaniem swojego bitu w markerze trybów, a każdy następny
zaczyna się ustawieniem odpowiedniego bitu w tym markerze.

Listing programu wraz z komentarzami:


" Printout of file c:cienek2.q3 From 27. 1. 6"

00000 TEST " ;W tym bloku jest sprawdzany aktualny tryb


001 L M 0.0 ;bit M0.0 odpowiada trybowi 1
002 AK 1
003 = M 1.0
004 L MB1.0
005 BNZ TRYB1 ;gdy MB1.0 jest różne od zera to wykonywany
;jest tryb 1 (skok do bloku TRYB1)
006 L M 0.1 ;bit M0.1 odpowiada trybowi 2
007 AK 1
008 = M 1.0
009 L MB1.0
010 BNZ TRYB2
011 L M 0.2 ;bit M0.2 odpowiada trybowi 3
012 AK 1
013 = M 1.0
014 L MB1.0
015 BNZ TRYB3
016 L M 0.3 ;bit M0.3 odpowiada trybowi 4
017 AK 1
018 = M 1.0
019 L MB1.0
020 BNZ TRYB4
021 L M 0.4 ;bit M0.4 odpowiada trybowi 5
022 AK 1
023 = M 1.0
024 L MB1.0
025 BNZ TRYB5
026 L M 0.5 ;bit M0.5 odpowiada trybowi 6
027 AK 1
028 = M 1.0
029 L MB1.0
030 BNZ TRYB6
031 L M 0.6 ;bit M0.6 odpowiada trybowi 7
032 AK 1
033 = M 1.0
034 L MB1.0
035 BNZ TRYB7
036 L M 0.7 ;bit M0.7 odpowiada trybowi 8
037 AK 1
038 = M 1.0
039 L MB1.0
040 BNZ TRYB8
041 L M 0.8 ;bit M0.8 odpowiada trybowi 9
042 AK 1
043 = M 1.0
044 L MB1.0
045 BNZ TRYB9
046 LK 1 ;ustawienie trybu 1 jako aktywne
047 = M 0.0 ;polecenia wykonywane są tylko przy 1
048 JP KONIEC ;uruchomieniu programu
049
00001 TRYB1 "
001 LK 1
002 = M 0.0
003 TR1
004 [ ] S: N M 2.0
005 [ ] STOP: M 0.1
006 [w] I: KW 100 ;czas 0,1s*100=10sekund
007 [ ] EQ: M 2.1
008 TR2
009 [ ] S: M 2.1
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.0
013 L KB 9
014 = QB0.0 ;zapalenie odpowiednich diod
015
016 TR20 ;timer reakcji na przycisk
017 [ ] S: I 0.0
018 [ ] STOP:
019 [w] I: KW 50
020 [ ] EQ: M 5.0
021 L MB5.0
022 BNZ TRYB2
023
024 L M 2.0 ;sprawdzenie czy jest już impuls przejścia do
;kolejnego trybu
025 AK 1
026 = M 3.0
027 L MB3.0
028 BZ KONIEC ;kolejne wykonanie programu w aktualnym trybie
029 LK 0 ;skasowanie wskaźnika trybu
030 = M 0.0
00002 TRYB2 " ;blok trybu drugiego
001 LK 0 ;ustawienie wskaźników na tryb drugi
002 = M 0.0
003 LK 1
004 = M 0.1
005 LK 0
006 = M 5.0
007 TR3
008 [ ] S: N M 2.2
009 [ ] STOP:
010 [w] I: KW 30 ;czas działania trybu 0,1s*30=3sekundy
011 [ ] EQ: M 2.3
012 TR4
013 [ ] S: M 2.3
014 [ ] STOP:
015 [w] I: KW 1
016 [ ] EQ: M 2.2
017 LK 1
018 = Q 0.3
019 L M 34.15 ;realizacja mrugania diod.
020 = Q 0.0
021 L M 2.2
022 = M 3.0
023 L MB3.0
024 BZ KONIEC
025 LK 0
026 = M 0.1
00003 TRYB3 "
001 LK 1
002 = M 0.2
003 TR5
004 [ ] S: N M 2.4
005 [ ] STOP:
006 [w] I: KW 50
007 [ ] EQ: M 2.5
008 TR6
009 [ ] S: M 2.5
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.4
013 L KB 10
014 = QB0.0
015 L M 2.4
016 AK 1
017 = M 3.0
018 L MB3.0
019 BZ KONIEC
020 LK 0
021 = M 0.2
022
00004 TRYB4 "
001 LK 1
002 = M 0.3
003 TR7
004 [ ] S: N M 2.6
005 [ ] STOP:
006 [w] I: KW 20
007 [ ] EQ: M 2.7
008 TR8
009 [ ] S: M 2.7
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.6
013 L KB 14
014 = QB0.0
015 L M 2.6
016 AK 1
017 = M 3.0
018 L MB3.0
019 BZ KONIEC
020 LK 0
021 = M 0.3
00005 TRYB5 "
001 LK 1
002 = M 0.4
003 TR9
004 [ ] S: N M 2.7
005 [ ] STOP:
006 [w] I: KW 30
007 [ ] EQ: M 2.8
008 TR10
009 [ ] S: M 2.8
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.7
013 LK 1
014 = Q 0.1
015 LK 1
016 = Q 0.2
017 L M 34.15
018 = Q 0.3
019 L M 2.7
020 = M 3.0
021 L MB3.0
022 BZ KONIEC
023 LK 0
024 = M 0.4
025
00006 TRYB6 "
001 LK 1
002 = M 0.5
003 TR11
004 [ ] S: N M 2.7
005 [ ] STOP:
006 [w] I: KW 100
007 [ ] EQ: M 2.8
008 TR12
009 [ ] S: M 2.8
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.7
013 L KB 22
014 = QB0.0
015 L M 2.7
016 AK 1
017 = M 3.0
018 L MB3.0
019 BZ KONIEC
020 LK 0
021 = M 0.5
022
00007 TRYB7 "
001 LK 1
002 = M 0.6
003 TR13
004 [ ] S: N M 2.9
005 [ ] STOP:
006 [w] I: KW 30
007 [ ] EQ: M 2.10
008 TR14
009 [ ] S: M 2.10
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.9
013 LK 1
014 = Q 0.4
015 L M 34.15
016 = Q 0.1
017 L M 34.15
018 = Q 0.2
019 L M 2.9
020 = M 3.0
021 L MB3.0
022 BZ KONIEC
023 LK 0
024 = M 0.6
025
00008 TRYB8 "
001 LK 1
002 = M 0.7
003 TR15
004 [ ] S: N M 2.11
005 [ ] STOP:
006 [w] I: KW 20
007 [ ] EQ: M 2.12
008 TR16
009 [ ] S: M 2.12
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.11
013 L KB 17
014 = QB0.0
015 L M 2.11
016 = M 3.0
017 L MB3.0
018 BZ KONIEC
019 LK 0
020 = M 0.7
021
00009 TRYB9 "
001 LK 1
002 = M 0.8
003 TR17
004 [ ] S: N M 2.13
005 [ ] STOP:
006 [w] I: KW 30
007 [ ] EQ: M 2.14
008 TR18
009 [ ] S: M 2.14
010 [ ] STOP:
011 [w] I: KW 1
012 [ ] EQ: M 2.13
013 L M 34.15
014 = Q 0.4
015 L M 2.13
016 AK 1
017 = M 3.0
018 L MB3.0
019 BZ KONIEC
020 LK 0
021 = M 0.8
022 LK 1
023 = M 0.0
00010 KONIEC "
001 EP
002
003
004

You might also like