-
1. Data: 2010-09-27 09:28:17
Temat: PLC - hazardy w jezyku drabinkowy
Od: "J.F." <j...@p...onet.pl>
Ponoc jezyk drabinkowy doczekal sie normy, a ja czytam sobie
materialy od unitronicsa .. i paru rzeczy zapomnieli napisac :-)
Poszczegolne "linie" sa wykonywane kolejno ? jest to zagwarantowane
?
A i tak widze mozliwy hazard w jednej "linii", np
--|B1|--*---(S2)----(R1)---
|
|
---(S3)---(S4)--(S5)---
jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy
bit1,
Czyli bit1 mignie tylko chwile. Ustawia sie bity 3, 4, 5, czy nie
zdaza ?
Bardziej mnie interesuja inne bloki funkcyjne, gdzie jest wejscie
EN i wyjscie(?) ENO, domyslam sie ze sluzy wlasnie do ustalenia
kolejnosci .. ale zapomnieli tego napisac :-)
--
J.
-
2. Data: 2010-09-27 10:56:19
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: Miłosz Skowyra <m...@w...epf.pl>
W dniu 2010-09-27 10:28, J.F. pisze:
>
> Ponoc jezyk drabinkowy doczekal sie normy, a ja czytam sobie materialy
> od unitronicsa .. i paru rzeczy zapomnieli napisac :-)
>
> Poszczegolne "linie" sa wykonywane kolejno ? jest to zagwarantowane ?
>
> A i tak widze mozliwy hazard w jednej "linii", np
>
> --|B1|--*---(S2)----(R1)---
> |
> |
> ---(S3)---(S4)--(S5)---
> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy bit1,
> Czyli bit1 mignie tylko chwile. Ustawia sie bity 3, 4, 5, czy nie zdaza ?
Tak bardzo skrótowo i ogólnie...
Wyobraź sobie że operujesz na pamięci nie na wejściach i wyjściach.
Znane mi PLCki mają niejako 3 fazy obróbki danych (które składają się na
jeden cykl wykonawczy).
1 - Zeskanowanie stanu wejść do pamięci
2 - Obróbka danych w pamięci na podstawie drabinki (od góry w dół, od
lewa do prawa)
3 - Ustawienie wyjść na podstawie pamięci.
Czyli to co ustawisz w danym cyklu na wyjściu pojawi się dopiero w
następnym cyklu jeśli odczytasz to na wejściu...
Dla Twojego przykładu (o ile B1 będzie zanegowane czyli -|\B1|-) to
będzie tak że w pierwszym cyklu:
Jeżeli B1 = 0 to ustawi S2 = 1 R1 = 1
w kolejnej drabince ustawi S3 = 1 S4 = 1 S5 = 1
Wypchnie dane na wyjście.
W kolejnym cyklu:
Ponieważ B1 = 1 to S2 = 0, R1 = 0
S3 = 0 S4 = 0 S5 = 0
Wypchnie dane na wyjście
W kolejnym cyklu powtórzy od początku i będzie tak machał z
częstotliwością wykonywania cykli.
Poza tym wydaje mi się że wyjścia nie powinny być łączone szeregowo
tylko równolegle, przynajmniej zawsze tak robiłem.
Trochę dawno temu miałem kontakt z drabinkami i PLC ale na 80% wydaje mi
się że napisałem dobrze. Niech mnie ktoś potwierdzi lub poprawi.
Poza tym pamiętam że na stronie Alan i Bradley mieli całe oprogramowanie
z symulatorem parę lat temu.
--
Pozdrawiam Miłosz.
-
3. Data: 2010-09-27 12:37:07
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: Mario <m...@p...onet.pl>
W dniu 2010-09-27 12:56, Miłosz Skowyra pisze:
> W dniu 2010-09-27 10:28, J.F. pisze:
>>
>> Ponoc jezyk drabinkowy doczekal sie normy, a ja czytam sobie materialy
>> od unitronicsa .. i paru rzeczy zapomnieli napisac :-)
>>
>> Poszczegolne "linie" sa wykonywane kolejno ? jest to zagwarantowane ?
>>
>> A i tak widze mozliwy hazard w jednej "linii", np
>>
>> --|B1|--*---(S2)----(R1)---
>> |
>> |
>> ---(S3)---(S4)--(S5)---
>> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy bit1,
>> Czyli bit1 mignie tylko chwile. Ustawia sie bity 3, 4, 5, czy nie zdaza ?
>
>
> Tak bardzo skrótowo i ogólnie...
> Wyobraź sobie że operujesz na pamięci nie na wejściach i wyjściach.
> Znane mi PLCki mają niejako 3 fazy obróbki danych (które składają się na
> jeden cykl wykonawczy).
> 1 - Zeskanowanie stanu wejść do pamięci
> 2 - Obróbka danych w pamięci na podstawie drabinki (od góry w dół, od
> lewa do prawa)
> 3 - Ustawienie wyjść na podstawie pamięci.
W sumie to on chyba ma na myśli komórki pamięci/markery a nie I/O. Na
komórkach możesz działać i zmienia ci natychmiast (?). Swoją drogą po co
pisać tak żeby prosić się o kłopoty. Mógł przecież stanem bitu 1
poustawiać wszystkie inne a dopiero później go skasować.
--
Pozdrawiam
MD
-
4. Data: 2010-09-27 12:59:53
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Miłosz Skowyra" <m...@w...epf.pl> napisał
>W dniu 2010-09-27 10:28, J.F. pisze:
>> A i tak widze mozliwy hazard w jednej "linii", np
>> --|B1|--*---(S2)----(R1)---
>> |
>> |
>> ---(S3)---(S4)--(S5)---
>> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy
>> bit1,
>> Czyli bit1 mignie tylko chwile. Ustawia sie bity 3, 4, 5, czy
>> nie zdaza ?
>
> Tak bardzo skrótowo i ogólnie...
> Wyobraź sobie że operujesz na pamięci nie na wejściach i
> wyjściach.
Akurat mialem na mysli wlasnie operowanie na pamieci [MB]
S i R - set i reset
> Dla Twojego przykładu (o ile B1 będzie zanegowane czyli -|\B1|-)
> to
Nie, ma wlasnie byc niezanegowane. Jesli bit 1 jest ustawiony - to
go skasuj.
Ale zrob tez cos wiecej.
Ustawianie jest w innym miejscu.
Choc oczywiscie moglbym zrobic buzzer
--|\B1|--*---(S2)----(B1)---
i tez sie pytac co wtedy :-)
> Poza tym wydaje mi się że wyjścia nie powinny być łączone
> szeregowo tylko równolegle, przynajmniej zawsze tak robiłem.
Rozsadnie - ale w przykladach maja szeregowo.
Poza tym wlasciwie to pytanie pozostaje - polacze powiedzmy
--|B1|--*---(S2)--
*--(S3)---
*--(R1)---
*--(S4)---
i co z tego wyjdzie ?
Wlasciwie to mnie interesuja funkcyjne, gdzie jest niby jakies
wejscie/wyjscie sterujace.
> Poza tym pamiętam że na stronie Alan i Bradley mieli całe
> oprogramowanie z symulatorem parę lat temu.
Bardziej mnie interesuje co norma na to, bo jesli nic ... no to
chyba najlepiej unikac hazardow podwojnie :-)
J.
-
5. Data: 2010-09-27 13:50:03
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: Miłosz Skowyra <m...@w...epf.pl>
W dniu 2010-09-27 13:59, J.F. pisze:
[...]
> Bardziej mnie interesuje co norma na to, bo jesli nic ... no to chyba
> najlepiej unikac hazardow podwojnie :-)
Niestety... dalej nie pomogę. Pamięć nie ta ;(
--
Pozdrawiam Miłosz.
-
6. Data: 2010-09-27 15:05:13
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: "Desoft" <N...@i...pl>
> Poszczegolne "linie" sa wykonywane kolejno ? jest to zagwarantowane ?
Nie, jest to wymuszone. Sterownik nie jest w stanie uruchomić tylu wątków
jednocześnie, aby przetworzyć każdy szczebel LD w tym samym czasie.
Dlatego robi to sekwenycjnie.
>
> A i tak widze mozliwy hazard w jednej "linii", np
>
> --|B1|--*---(S2)----(R1)---
> |
> |
> ---(S3)---(S4)--(S5)---
>
Co nazywasz hazardem? nie widzę tutaj stanów niedozwolonych.
--| Not S1 |--(Q1)--
Czy tutaj jest hazard?
Brzęczący przekaźnik nie jest hazardem, a raczej dobrym odwzorowaniem
rzeczywistości: identycznie zachowa się prawdziwy przekaźnik.
> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy bit1,
Tak, dokładnie.
> Czyli bit1 mignie tylko chwile.
Nie, bit1 zgaśnie dopiero w następnym cyklu
>Ustawia sie bity 3, 4, 5, czy nie zdaza ?
Zdążą.
Wszystkie wejścia czytane są przed rozpoczęciem cyklu, Dane wejściowe danej
linii nie są aktualizowane w czasie wyliczania tej linii. Dane wyjściowe
aktualizowane są po zakończeniu cyklu.
Jeżeli w pascalu napiszesz a := not a to program się zawiesi?
przecież po wykonaniu linii a, jest not a, więc wejściowe a nie jest a tylko
not a, ale wcześniej było a, czyli teraz powinno być a czy not a ? :-)))))
--
Desoft
-
7. Data: 2010-09-27 15:08:06
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: Andrzej <w...@w...pl>
W dniu 2010-09-27 14:59, J.F. pisze:
> Użytkownik "Miłosz Skowyra" <m...@w...epf.pl> napisał
>> W dniu 2010-09-27 10:28, J.F. pisze:
>>> A i tak widze mozliwy hazard w jednej "linii", np
>>> --|B1|--*---(S2)----(R1)---
>>> |
>>> |
>>> ---(S3)---(S4)--(S5)---
>>> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy bit1,
>>> Czyli bit1 mignie tylko chwile. Ustawia sie bity 3, 4, 5, czy nie
>>> zdaza ?
>>
>> Tak bardzo skrótowo i ogólnie...
>> Wyobraź sobie że operujesz na pamięci nie na wejściach i wyjściach.
>
> Akurat mialem na mysli wlasnie operowanie na pamieci [MB]
> S i R - set i reset
>
>> Dla Twojego przykładu (o ile B1 będzie zanegowane czyli -|\B1|-) to
>
> Nie, ma wlasnie byc niezanegowane. Jesli bit 1 jest ustawiony - to go
> skasuj.
> Ale zrob tez cos wiecej.
>
> Ustawianie jest w innym miejscu.
>
> Choc oczywiscie moglbym zrobic buzzer
> --|\B1|--*---(S2)----(B1)---
>
> i tez sie pytac co wtedy :-)
>
>> Poza tym wydaje mi się że wyjścia nie powinny być łączone szeregowo
>> tylko równolegle, przynajmniej zawsze tak robiłem.
>
> Rozsadnie - ale w przykladach maja szeregowo.
> Poza tym wlasciwie to pytanie pozostaje - polacze powiedzmy
> --|B1|--*---(S2)--
> *--(S3)---
> *--(R1)---
> *--(S4)---
>
> i co z tego wyjdzie ?
>
> Wlasciwie to mnie interesuja funkcyjne, gdzie jest niby jakies
> wejscie/wyjscie sterujace.
>
>> Poza tym pamiętam że na stronie Alan i Bradley mieli całe
>> oprogramowanie z symulatorem parę lat temu.
>
> Bardziej mnie interesuje co norma na to, bo jesli nic ... no to chyba
> najlepiej unikac hazardow podwojnie :-)
>
> J.
>
Normą jest, że jak program wejdzie do gałęzi to wykonuje ją do końca,
nawet jak w niej zmienisz stan bitu zezwalającego.
Po prostu, jak już wejdzie to stan bitu inicjującego nie ma w tym
przebiegu znaczenia.
Twój reset wpłynie na wykonanie programu dopiero w następnym cyklu.
Chyba że zrobisz coś takiego :
-|B1|--*--S2
*--S3
*--R1
*--|B1|--S8
*--S4
tu s8 nie zostanie nigdy ustawiony, ale S4 jak najbardziej.
Pozdrawiam
A
-
8. Data: 2010-09-27 15:14:40
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: "Desoft" <N...@i...pl>
> Choc oczywiscie moglbym zrobic buzzer
> --|\B1|--*---(S2)----(B1)---
>
> i tez sie pytac co wtedy :-)
Jeżeli wyjdzie buzzer to chyba nic? przecież chciałeś zrobić buzzer.
Chyba Need ma taką opcję edytora, że można przełączać się pomiędzy dwiema
opcjami języka LD.
Jedna jest taka standardowa - pionowa, z tymi wszystkimi znaczkami. Druga
pozioma. Zamiast -( )- jest cewka przekaźnika, zamiast --| |-- jest
rysunek zwykłego styku, itd.
Programowanie nie jest programowaniem, tylko rysowaniem schematu.
Tylko przekręcając monitor o 90* zobaczymy LD.
--
Desoft
--
Desoft
-
9. Data: 2010-09-27 15:15:00
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: Mario <m...@p...onet.pl>
W dniu 2010-09-27 17:05, Desoft pisze:
>> Poszczegolne "linie" sa wykonywane kolejno ? jest to zagwarantowane ?
>
> Nie, jest to wymuszone. Sterownik nie jest w stanie uruchomić tylu
> wątków jednocześnie, aby przetworzyć każdy szczebel LD w tym samym czasie.
> Dlatego robi to sekwenycjnie.
>
>>
>> A i tak widze mozliwy hazard w jednej "linii", np
>>
>> --|B1|--*---(S2)----(R1)---
>> |
>> |
>> ---(S3)---(S4)--(S5)---
>>
>
> Co nazywasz hazardem? nie widzę tutaj stanów niedozwolonych.
>
> --| Not S1 |--(Q1)--
> Czy tutaj jest hazard?
> Brzęczący przekaźnik nie jest hazardem, a raczej dobrym odwzorowaniem
> rzeczywistości: identycznie zachowa się prawdziwy przekaźnik.
>
>> jak bit1 jest ustawiony, to zalaczamy bit2, potem (?) resetujemy bit1,
>
> Tak, dokładnie.
>
>> Czyli bit1 mignie tylko chwile.
>
> Nie, bit1 zgaśnie dopiero w następnym cyklu
>
>> Ustawia sie bity 3, 4, 5, czy nie zdaza ?
>
> Zdążą.
> Wszystkie wejścia czytane są przed rozpoczęciem cyklu, Dane wejściowe
> danej linii nie są aktualizowane w czasie wyliczania tej linii. Dane
> wyjściowe aktualizowane są po zakończeniu cyklu.
OIDP to porty we są czytane na początku skanu a Out są zapisywane na
jego koniec. Markery czy komórki pamięci są aktualizowane na bieżąco.
--
Pozdrawiam
MD
-
10. Data: 2010-09-27 15:32:16
Temat: Re: PLC - hazardy w jezyku drabinkowy
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Desoft" <N...@i...pl> napisał w wiadomości
news:i7qbr9$d9j$1@news.onet.pl...
>> Poszczegolne "linie" sa wykonywane kolejno ? jest to
>> zagwarantowane ?
> Nie, jest to wymuszone. Sterownik nie jest w stanie uruchomić
> tylu wątków jednocześnie, aby przetworzyć każdy szczebel LD w tym
> samym czasie.
> Dlatego robi to sekwenycjnie.
Ja sie pytam czy to jest zagwarantowane :-)
Czy obliczenia beda w kolejnosci numeracji "linii" programu, czy w
dowolnej,
czy sterownik moze miec dwa procesory/rdzenie i wykonac dwie naraz
czy nie,
no i najciekawsze - jak to wyglada dla jednej "linii" "programu".
>> A i tak widze mozliwy hazard w jednej "linii", np
>>
>> --|B1|--*---(S2)----(R1)---
>> |
>> |
>> ---(S3)---(S4)--(S5)---
>>
> Co nazywasz hazardem? nie widzę tutaj stanów niedozwolonych.
>> Czyli bit1 mignie tylko chwile.
> Nie, bit1 zgaśnie dopiero w następnym cyklu
>>Ustawia sie bity 3, 4, 5, czy nie zdaza ?
> Zdążą.
> Wszystkie wejścia czytane są przed rozpoczęciem cyklu, Dane
> wejściowe danej linii nie są aktualizowane w czasie wyliczania
> tej linii. Dane wyjściowe aktualizowane są po zakończeniu cyklu.
No dobra, to by wyjasnialo wiele niejasnosci.
Czyli wszystkie "linie" sa obliczane niejako rownoczesnie ?
i np prosty zapis
-|1|-(2)-
-|2|-(3)-
-|3|-(4)-
to jest rejestr przesuwajacy o jeden bit na cykl ?
> Jeżeli w pascalu napiszesz a := not a to program się zawiesi?
> przecież po wykonaniu linii a, jest not a, więc wejściowe a nie
> jest a tylko not a, ale wcześniej było a, czyli teraz powinno być
> a czy not a ? :-)))))
Pascal to prosty jezyk, powiedz co wyjdzie w C z
a=5 ; b=a++ - a-- ; :-)
a wykorzystujac obiekty .. no, jestem ciekaw czy udaloby sie
doprowadzic do zawieszania pierwszego przykladu :-)
Stop, zaraz wrocmy do laddera - nawet jest przyklad jak realizowac
petle, umieszczamy etykiete np w linii siodmej programu, a w linii
np dziewiatej dajemy do niej skok. I wedle opisu będa sie
wykonywaly linie 7,8,9,7,8,9,7,8,9,.. az warunek nie dopusci do
skoku.
Czyli obliczane jest jednak na biezaco.
Pomysl Unitronicsa, czy wszystko zgodnie z norma ?
J.