Elektroda.pl
Elektroda.pl
X
SterControl
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Step 7 i prosty program z licznikiem

MAJSTER XXL 26 Lis 2011 21:19 3748 18
  • #1 26 Lis 2011 21:19
    MAJSTER XXL
    Poziom 29  

    Załączam krótki program z licznikiem. Nie za bardzo rozumiem dlaczego po wpisaniu z panela HMI zmiennej MW0 równej np. 1,2,4,8,16,32,128 załączają mi się fizycznie wyjścia kolejno Q1.0 do Q1.7.
    Druga sprawa to interpretacja liczb, mam ustawioną reprezentację decymalną na wejściu PV oraz na wyjściach CV a mimo to po "setowaniu" liczby 16 na wyjściu CV mam liczbę 32784.
    Step 7 i prosty program z licznikiem

    0 18
  • SterControl
  • #2 26 Lis 2011 22:53
    acid12
    Poziom 21  

    networki od 2 do 18 wykorzystują poszczegolne bity markera MW0 do ustawiania wyjść, wiec normalne ze jak do niego cokolwiek wpiszesz to ustawiaja Ci się wyjścia

    0
  • #3 27 Lis 2011 10:11
    MAJSTER XXL
    Poziom 29  

    Zmieniłem marker z MW0 na MW10 z możliwym zakresem do wpisania z HMI od 0-999. Ale i tak się to gryzie, bo np. zadanie z panela liczby 455 powoduje przejście CPU w tryb STOP. Pytanie jak powinien wyglądać marker pod wejście PV licznika? I dlaczego na wyjściu setowana liczba jest inna od wejściowej? Nie jestem biegły w programowaniu, dlatego pytam.

    0
  • #4 27 Lis 2011 12:30
    roks
    Specjalista Automatyk

    Witam

    Najprawdopodobniej na wejście dajesz zmienną typu INTEGER a na wyjściu masz UNSIGNED INTEGER ( lub odwrotnie )

    pozdrowienia

    0
  • SterControl
  • #5 27 Lis 2011 12:57
    acid12
    Poziom 21  

    zobacz co masz w buforze diagnostycznym CPU po przejsciu w STOP

    0
  • #6 27 Lis 2011 13:46
    MAJSTER XXL
    Poziom 29  

    W buforze mam:

    Event 1 of 106: Event ID 16# 4562
    STOP caused by programming error (OB not loaded or not possible, or no FRB)
    Breakpoint in user program: Cyclic program (OB1)
    Priority class: 1
    OB number: 1
    Module address: 14
    Previous operating mode: RUN
    Requested operating mode: STOP (internal)
    Internal error, Incoming event
    02:46:19.309 PM 11/27/2011


    Event 2 of 106: Event ID 16# 2521
    BCD conversion error
    Affected register: accumulator 1
    Requested OB: Programming error OB (OB121)
    OB not found, or disabled, or cannot be started in the in the current operating mode
    Internal error, Incoming event
    02:46:19.306 PM 11/27/2011


    Powyżej trochę niedokładnie napisałem, miało być, że po kliknięciu na "Set" CPU przechodzi w Stop. Odnośnie typu danych zadawanych z HMI na wejście PV mam tryb "default" z poniższej możliwej tabeli. Jaki typ wybrać?
    Step 7 i prosty program z licznikiem

    0
  • #7 27 Lis 2011 14:02
    roks
    Specjalista Automatyk

    Spróbuj w panelu wybrać UINT

    0
  • #9 27 Lis 2011 14:27
    MAJSTER XXL
    Poziom 29  

    Zmieniłem w panelu HMI typ danych dla MW10 na UInt, skasowałem wszystkie networki oprócz tego licznika.
    Na przykład:
    - wpisuję 0 i robię set i jest jak poniżej:
    Step 7 i prosty program z licznikiem
    - wpisuję 1 i robię set, załącza mi się wyjście Q0.0 i jest jak poniżej:
    Step 7 i prosty program z licznikiem
    - wpisuję od 10 wzwyż i robię set i jest Stop CPU.
    Jak zrobić, żeby móc wpisywać dane od 0-999?

    edit.
    Po zmianie typu danych na Int jest to samo.
    Co ciekawe, zadając set liczby 20 CPU pracuje dalej.

    0
  • #10 27 Lis 2011 14:59
    roks
    Specjalista Automatyk

    Spróbuj w sterowniku przed wartością zadaną PV wpisać "#" lub "C#"

    później sprawdzę dokładnie

    0
  • #11 27 Lis 2011 15:04
    MAJSTER XXL
    Poziom 29  

    Wpisanie tylko # albo C# powoduje zaczerwienienie tego opisu i nie da się tak zapisać programu.
    Może jeden network wcześniej zastosować jakiś konwerter?

    0
  • Pomocny post
    #12 27 Lis 2011 15:13
    roks
    Specjalista Automatyk

    Jaki masz panel ?
    Sprawdź czy format liczby w panelu nie jest hex.

    jeżeli jest to dla

    liczb : 255 , 16 nie będzie działać
    a dla : 18, 37 będzie

    pozdrowienia

    PS. sterownik zachowuje się tak jakby dostawał liczby hex ( szesnastkowe ) zamiast dziesiętnych

    0
  • #13 27 Lis 2011 16:42
    MAJSTER XXL
    Poziom 29  

    Panel jest firmy CTC Parker.
    Jedno jest pewne, wpisuję na panelu dowolna liczbę całkowitą od 0-999 i po kliknięciu OK w panelu liczba ta pojawia się na wejściu PV- tu jest dobrze. Typ danych dla MW10 w panelu mam obecnie na Int.
    Dla liczb:
    16 CPU działa, na wyjściu po secie jest postać 32784,
    18 CPU działa, na wyjściu po secie jest postać 32786,
    37 CPU działa, na wyjściu po secie jest postać 32805,
    255 CPU przechodzi w Stop

    Jak to zinterpretować?
    Aktualnie mam tylko jeden network:

    0
  • #14 27 Lis 2011 20:38
    roks
    Specjalista Automatyk

    Witam

    Sorki za to 37 faktycznie będzie działać .
    W takim razie mamy dwa problemy

    1. panel przesyła dane do sterownika w formacie szesnastkowym a sterownik wymaga w dziesiętnym .
    dziesiętnie 16 to w hex 10 działa
    dziesiętnie 18 to w hex 12 działa
    dziesiętnie 37 to w hex 25 działa
    dziesiętnie 255 to w hex FF nie działa - licznik dostaje niedozwolone znaki ( stąd błąd konwersji )
    Powyższe tłumaczy zatrzymywanie się sterownika
    2. wygląda na to że panel przesyła młodszy bajt z worda a starszy jest wypełniony ( starszy bajt = 255 + młodszy bajt z panela)
    Wyjście sterownika to uint

    to jeszcze sprawdzę , dam znać później

    pozdrowienia

    Jaki dokładnie typ panela

    Dodano po 58 [minuty]:

    Witam

    W zależności od dokładnego typu jednostki centralnej ( wersji ) i panela istnieje możliwość że panel nie ma drivera do sterownika . Sam protokół będzie działać ale mogą wystąpić problemy generalne np. z poprawnym adresowaniem.

    Sprawdź dokładne typy , firmware , wersje driverów itp

    pozdrowienia

    Dodano po 2 [godziny] 25 [minuty]:

    Witam

    Spróbuj jeszcze jednego :

    W sterowniku odczytaj na "czysto" ( bez licznika ) MW10 coś w stylu
    LD MW10
    ST MW16
    i wpisz np 18 potem 255 w panelu , zapisz co się pokaże w MW14, MW16 i MW18

    pozdrowienia

    0
  • Pomocny post
    #15 27 Lis 2011 20:54
    acid12
    Poziom 21  

    poprawie jeszcze za kolegą roks, że w Siemensie zamiast komend LD, ST; używamy L oraz T, a jak kolega majster xxl używa graficznych trybów to należy użyć bloczku MOVE.
    Ewidentnie mamy tu problem z konwersją, ot co zgłasza CPU żądając bloku OB121.

    Dokładnie zrób takie testy jak kolega roks proponuje, bez licznika narazie, sprawdz jaką liczbę dostajesz od panelu, czy poprawny format, najlepiej ustaw w obu urzadzeniach typ na INT.
    Później wpisz na sztywno do markera liczbe np 10, 20, 100, 255 (nie z HMI tylko wprost z PLC) i wyslij na PV do licznika, czy błąd się powtórzy

    0
  • #16 27 Lis 2011 21:07
    MAJSTER XXL
    Poziom 29  

    Dodam, że całą komunikację między PC, CPU i HMI mam po ethernecie.
    Zrobiłem teraz tak, że wpisałem bez HMI na sztywno liczbę 255 na wejście PV i dałem set, efekt dobry- CPU działa.
    Step 7 i prosty program z licznikiem

    Później zobaczę dalsze rady

    edit.
    Zrobiłem funkcję move, góra jest dla zadanej 9 z panela, dół dla zadanej 10.
    W obu urządzeniach typ danych to INT.
    Step 7 i prosty program z licznikiem

    0
  • #17 28 Lis 2011 19:21
    MAJSTER XXL
    Poziom 29  

    Ma ktoś pomysł jak to można ugryźć aby konwersja była prawidłowa?

    0
  • Pomocny post
    #18 28 Lis 2011 22:18
    ThoronDC
    Poziom 14  

    Witam

    Do liczników musisz załadować wartość BCD nie int!
    W STL

    Kod: stl
    Zaloguj się, aby zobaczyć kod


    W LAD użyj bloczku I_BCD
    i tyle.

    0
  • #19 29 Lis 2011 16:23
    MAJSTER XXL
    Poziom 29  

    Miałeś rację, wystarczył ten blok. Nie wiem dlaczego, ale ubzdurałem sobie, że potrzebuję konwerter Int na Decimal.
    Zrobiłem próbę z odczytem liczby z licznika na panelu HMI, potrzebny był konwerter w drugą stronę. Wszystko działa.

    0
  Szukaj w 5mln produktów