Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Podstawowe pytanie z programowaniem PLC

sasa1111 24 Sep 2011 11:11 6568 21
  • #1
    sasa1111
    Level 9  
    Raczkuje z programowaniem PLC dlatego pytam jak najlepiej napisać program w S7 dla przycisku START aby wykluczyć drgania własne przycisku. Czy program poniżej jest wystarczający? czy byście go zmodyfikowali? Poniższy program nie zadziałał :( ktoś ma jakiś pomysł.

    A I0.0 // start z pushbutton
    L S5T#8s
    SF T2
    A (
    O T2
    O I0.1 // start z panela
    )
    = M 300.1
    = "start"
  • #2
    marihires
    Level 30  
    Witam.
    Wystarczy dodać chwilowe opóźnienie załączania na Timerze TON.

    Code:
    LD     SM0.0
    
    LPS
    A      I0.1
    TON    T100, 50
    LPP
    A      T100
    =      M0.1

    Podstawowe pytanie z programowaniem PLC
    Pozdrawiam.
  • #3
    2010712
    Level 17  
    Twój program będzie działał tylko wtedy, gdy będziesz trzymał przycisk START, Spróbuj użyć przerzutnika RS.


    pzdr
  • #4
    marihires
    Level 30  
    Start/Stop wyzwalanego zboczem narastającym z eliminacją drgań styków i wyzwalającego wyjście Q0.0.
    Podstawowe pytanie z programowaniem PLC
  • #5
    2010712
    Level 17  
    Nie ma potrzeby komplikowania programu przez zbocza tym bardziej przez czasówki jesli można użyć przerzutnika RS.


    pzdr
  • #6
    sasa1111
    Level 9  
    2010712 wrote:
    Nie ma potrzeby komplikowania programu przez zbocza tym bardziej przez czasówki jesli można użyć przerzutnika RS.


    pzdr


    A więcej szczegółów mógłbyś podać z tym przerzutnikiem RS
  • #7
    Rogalica
    Level 13  
    marihires Twój program zadziałał mi ale dopiero jak drugi timer zmieniłem na jakiś inny, w Twoim przypadku nic się nie działo.
    2010712 - chodzi o zwykłe użycie przerzutnika RS?
    Podstawowe pytanie z programowaniem PLC

    Mam jeszcze jedno pytanie, czemu na początku programu dodajecie SM0.0, czyli styk zawsze zamknięty?
    Pozdrawiam
  • #8
    2010712
    Level 17  
    Tak dokładnie chodzi o najzwyklejszy przerzutnik RS. Taki jak powyżej


    pzdr
  • #9
    gacore
    Automation specialist
    Czy w S7 nie ma możliwości włączenia dla danego wejścia sprzętowego filtrowania np. na poziomie 100ms ?
    W innych sterownikach PLC jest takie rozwiązanie i nie ma potrzeby dla tak trywialnego zadania stosowac dodatkowych programowych zabiegów.
  • #10
    marihires
    Level 30  
    Jest taka możliwość ale nie na takim poziomie:
    Podstawowe pytanie z programowaniem PLC
    A co do stosowania przerzutnika RS dla S7 mam mieszane uczucia.
    Panowie to jest SIEMENS tu różne dziwne rzeczy dzieją się bez powodu.
  • #11
    Rariusz
    Automation specialist
    Witam

    Quote:

    Panowie to jest SIEMENS tu różne dziwne rzeczy dzieją się bez powodu.


    Np. jakie?


    Pozdrawiam
  • #12
    2010712
    Level 17  
    Dokładnie proszę podaj jakieś dziwne przykłady? z przerzutnikami nie spotkałem żadnych.
  • #13
    sasa1111
    Level 9  
    2010712 wrote:
    Tak dokładnie chodzi o najzwyklejszy przerzutnik RS. Taki jak powyżej


    pzdr


    A mógbyś podac przyklad takiego zastosowania w STL.
  • #14
    Rogalica
    Level 13  
    A nie możesz kodu w ladderze przerysować i później zmienić język na STL?
    Pozdrawiam
  • #15
    315-2DP
    Level 17  
    sasa1111 wrote:
    Raczkuje z programowaniem PLC dlatego pytam jak najlepiej napisać program w S7 dla przycisku START aby wykluczyć drgania własne przycisku.


    S7-300 to nie jest uC. Standardowe moduły DI mają już w sobie ok. 15 ms opóźnienia na wejściu. Sprawdziłeś, czy rzeczywiście te styki Ci drgają?
  • #16
    pcichomski
    Level 16  
    Też uważam że tylko jakieś nadzwyczajne zastosowanie wymaga filtrowania drgań styku na I. Większość standardowych urządzeń podłączanych do wyjścia (stycznik, zawór, tym bardziej lampka) nie zauważy kilku drgań na Q. Chyba że wyjście jest tranzystorowe i np. napędza jakiś zewnętrzny licznik, układ krokowy itp.

    Jeśli już musisz filtrować to czas 8 sek jest chyba stanowczo za długi (chyba że potrzebujesz opóźnić wyjście o tak długi czas)- wystarczy 200-500 ms.
  • #17
    sasa1111
    Level 9  
    315-2DP wrote:
    sasa1111 wrote:
    Raczkuje z programowaniem PLC dlatego pytam jak najlepiej napisać program w S7 dla przycisku START aby wykluczyć drgania własne przycisku.


    S7-300 to nie jest uC. Standardowe moduły DI mają już w sobie ok. 15 ms opóźnienia na wejściu. Sprawdziłeś, czy rzeczywiście te styki Ci drgają?


    Dzisiaj sprawdziłem bez opóźnień i wszystko zadziałało bez problemów.

    Co do pytania pcichomski to potrzebowałem opóźnienia ze względu na start maszyny. W praktyce wygląda to tak że przycisk należy trzymać 8s. Dlatego jeśli styk popuści to następuje zatrzymanie sekwencji startu maszyny (bardzo niepożądane). Dlatego tak ważna jest stabilność styków.
  • #18
    GeraliRiv
    Level 10  
    Witam,

    Odbiegnę nieco od tematu. Nie mam pojęcia jak w języku ST zrealizować opóźnienie czasowe, generalnie problem tyczy się składni.
    Korzystam z oprogramowania Shneider Electrics Unity Pro XL oraz sterownika Modicon M340.
    W helpie nie znalazłem niczego przydatnego niestety...
    Konkretnie chciałbym zrealizować opóźnienie czasowe rzędu 100ms po każdej pojedyńczej dekrementacji wartości X w pętli WHILE lub innej.

    Czy jest to możliwe bez tworzenia i wykorzystywania bloku funkcyjnego TIMER'a ??

    Z góry dziękuję za wszelkie wsparcie :)
  • #19
    kemot55
    Level 31  
    Rozumiem, że chcesz programować sterownik przy pomocy języka strukturalnego i zgodnie z IEC61131?
    Praktycznie w tym języku są realizowane wszystkie instrukcje sterownika. Wobec tego trzeba sprawdzić jak nazywają się parametry wywołania. Nie znam tego sterownika, który używasz za to korzystam z ST. Ja wywołuję licznik czasu w ten sposób (generator pojedynczego impulsu co 50ms):
    Code:

    Timer.IN:=NOT M0;
    Timer.PT:=T#50MS;
    Timer();
    M0:=Timer.Q;

    gdzie Timer jest instancją obiektu typu czasowego (czyli przypisanie adresu konkretnego licznika czasu realizuje kompilator) a M0 znacznikiem flagowym.
    Może coś to pomoże.
  • #20
    GeraliRiv
    Level 10  
    kemot55 wrote:
    Rozumiem, że chcesz programować sterownik przy pomocy języka strukturalnego i zgodnie z IEC61131?

    Zgadza się wszystko ma być zgodnie z normą IEC61131, niestety podany przez Ciebie fragment kodu który na pierwszy rzut oka wygląda ok powoduję błędy w kompilacji, nie mam pojęcia dlaczego. Podobnie jest z deklaracją zmiennych, przy wpisaniu VAR....END_VAR kompilator sygnalizuję mi błąd składni (E1002 Syntax Error) co jest dla mnie nie zrozumiałe, i jednocześnie moje doświadczenie w temacie jest nie wystarczające aby ten problem jakoś rozwiązać. Z tej racji zastanawiam się nad wykorzystaniem języka LD do napisania tej pętli. Wszelkie wskazówki odnośnie opóźnienia w LD lub wciąż aktualnego ST mile widziane :)
  • #21
    kemot55
    Level 31  
    Rozumiem, że zmienną Time zdeklarowałeś (przypisałeś do jakiegoś fizycznego licznika czasu) (ponieważ napisałeś, że nie możesz tego zrobić przy pomocy definicji "VAR" - pewnie masz coś takiego jak HEADER dla każdego bloku)?
    Ja deklaruje zmienne lokalnie lub najczęściej globalnie (bo i tak oprogramowanie zgłasza błąd przy dublowaniu identyfikatorów lokalnych i globalnych).
    Niestety norma normą a producenci sterowników implementują swój własny, niepowtarzany język ST. Trzeba koniecznie znaleźć dokument opisujący język dla danego sterownika. Wszystko wygląda podobnie a jednak nie ma ochoty na kompilację.
    Zobacz to:Opis ST Modicon
    Może coś pomoże.
  • #22
    GeraliRiv
    Level 10  
    Kemot55 wielkie dzięki za pomoc i udostępnione materiały :) Problem rozwiązałem w sposób inny niż zamierzałem ale wynik jest pozytywny :)