Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

S7-200 CPU 224 algorytm - kontrolka prawidłowości procesu

teedd 12 Oct 2009 13:44 1482 5
SterControl
  • #1
    teedd
    Level 18  
    Witam.
    Raczkuję w temacie sterowników Simatic i stąd moja prośba o pomoc.
    Nie wiem w jaki sposób zrobić kontrolę prawidłowości przebiegu pewnego procesu.
    Są 3 czujniki - Cz1, Cz2 i Cz3.
    Po starcie procesu ma zadziałać Cz1 (impuls), potem Cz2 (impuls), potem Cz3 (impuls), potem Cz1 (impuls) ...... itd. w kółko.
    Odstępstwo od kolejności ma być zasygnalizowane błędem i zatrzymaniem procesu.
    Dzięki za ew. pomoc.
    Pozdrowienia - teedd
  • SterControl
  • Helpful post
    #2
    micard
    Level 14  
    Cześć

    Wygląda to w sposób taki, że przwidłowymi sytuacjami są przejścia (pojawienia sie kolejno po sobie) impulsów z Cz1->Cz2; Cz2->Cz3; Cz3->Cz1, natomiast wadliwe są sekwencje Cz1->Cz3; Cz2->Cz1; Cz3->Cz2.

    Proponuję układ w któym pojawienie się impulsu danego czujnika powoduje ustawienie związanej z nim zmiennej oraz zresetowanie zmiennej czujnika, z którego impuls powinien był się pojawić wcześniej np:

    |--|I1|-+--(Set Cz1)-----|
    |..........|........................|
    |.........+--(Reset Cz3)--|

    Do tego po takim układzie powinna się pojawić linia sprawdzająca czy nie nastąpił błąd:

    |--|Cz1|----|Cz2|--( Set Alaram)--|

    Takie trzy sekcja dla każdego przejścia powinny załatwićsrpawę wykrycia błędnego procesu, natomiast na końcu należy umieścić linię obsługującą alarm:

    |--|Alarm|----(set Autodestrukcja_linii_produkcyjnej)--|


    Pozdrawiam,

    Michał
  • SterControl
  • #3
    teedd
    Level 18  
    Dzięki za odpowiedź. Zaraz spróbuję tak zrobić i dam znać o efektach - mam nadzieję pozytywnych :)
    teedd

    hmmm.... to nie jest takie proste. Pamiętanie stanów i kasowanie zrobiłem na przerzutnikach RS.
    Czy jest możliwe, aby w zależności od stanu np. wejścia Ix.y było przejście przez jakiś Network lub nie? Coś w stylu if.... then ....
    teedd
  • #4
    micard
    Level 14  
    jak najbardziej - po prostu wpinasz w szereg switch'a danego wejścia:

    |.....I0.1
    |----| |------{ network1 } --|
    |.....I0.1
    |----|/|-------{ network2}---|
    co jest w programowaniu proceduralnym odpowiednikiem:

    if (I0.1) then {network1} else {network2}
  • #5
    teedd
    Level 18  
    Super - dzięki za odpowiedź :) Właśnie o to mi chodziło.
    Wieczorem sprawdzę.
    Pozdrowienia - teedd
  • #6
    teedd
    Level 18  
    Witam.
    Nie wiem jak to tu wsadzić, aby było dobrze :(
    Mój problem pewnie jest trywialny - ale nie umiem jeszcze złapac tego byka za rogi.
    Step 7-Micro/Win 32 v3.2.4.27
    Do nauki korzystam z książki Siemens Simatic S7-200 Podręcznik wydanie 1.

    Załóżmy, że chcemy wykonać Network 4, gdy I0.0 jest włączone (M0.0 jest ustawione)

    ORGANIZATION_BLOCK MAIN:OB1
    TITLE=PROGRAM COMMENTS
    BEGIN
    Network 1 //  Network Title
    //  Network Comment
    LD     I0.0
    =      M0.0
    Network 2 
    LD     I0.1
    =      M0.1
    Network 3 
    LD     I0.2
    =      M0.2
    
    Network 4 
    LD     M0.0
    LD     M2.1
    NOT
    LPS
    A      M1.0
    =      M1.0
    LPP
    ALD
    O      M1.0
    =      M1.0
    =      M2.0
    Network 5 
    LD     M0.1
    LD     M2.2
    NOT
    LPS
    A      M1.1
    =      M1.1
    LPP
    ALD
    O      M1.1
    =      M1.1
    =      M2.1
    Network 6 
    LD     M0.2
    LD     M2.0
    NOT
    LPS
    A      M1.2
    =      M1.2
    LPP
    ALD
    O      M1.2
    =      M1.2
    =      M2.2
    Network 7 
    LD     M2.0
    =      Q0.0
    Network 8 
    LD     M2.1
    =      Q0.1
    Network 9 
    LD     M2.2
    =      Q0.2
    END_ORGANIZATION_BLOCK
    SUBROUTINE_BLOCK SBR_0:SBR0
    TITLE=SUBROUTINE COMMENTS
    BEGIN
    Network 1 //  Network Title
    //  Network Comment
    END_SUBROUTINE_BLOCK
    INTERRUPT_BLOCK INT_0:INT0
    TITLE=INTERRUPT ROUTINE COMMENTS
    BEGIN
    Network 1 //  Network Title
    //  Network Comment
    END_INTERRUPT_BLOCK
    


    Pozdrowienia - teedd