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

Versa MAX - Modbus Master

ienecode 09 Feb 2016 14:11 1500 13
  • #1
    ienecode
    Level 21  
    Witam,

    Czy ktoś z forumowiczów wykorzystuje obydwa porty szeregowe
    COM1 i COM2 w sterowniku GE Fanuc Versa Max jako Master Modbus ?
    Czy są jakieś problemy z COM1?
  • #2
    Markos80

    Automation specialist
    Jest to możliwe, ale mało praktyczne. Mogą pojawić się problemy z podłączeniem PME na takim porcie.
    Teoretycznie powinien się przełączać na SNP automatycznie, ale nie zawsze się tak dzieje, często trzeba to robić przy zatrzymanym sterowniku, więc diagnostyka programu jest utrudniona.
    Damian7546 wrote:
    Czy są jakieś problemy z COM1?
    Raczej nie ma.
    Jaki masz firmware, CPU i co chcesz konkretniej osiągnąć?
  • #3
    ienecode
    Level 21  
    W konfiguracji po oklikaniu Slot 0 mam ustawienia dla obydwu portów COM (SNP,Slave,19200,Odd,1,Long,0) z tym że to nie gra roli jeśli zrobiony jest programowo Modbus Master.

    Markos80 wrote:
    Jaki masz firmware, CPU i co chcesz konkretniej osiągnąć?


    Cel już kiedyś osiągnięto.
    Były dwa urządzenia które czytał sterownik po modbusie. Jedno jest dalej czytane przez port COM2, natomiast na COM1 od roku jest problem.
    Sterownik tak jakby wogóle nie pytał urządzenia (sprawdzałem komputerem i modbustesterm i urzadzenie czytane poprawnie odpowiada).

    Na sterowniku wogóle nie miga dioda przy COM1.
    Natomiast w programie Blok DSW zwraca wartość raz 0 a raz 524,
    przy czym w COM2 gdzie jest poprawna transmisja zwaraca raz 0 a raz 1.

    Nie za bardzo wiem jak to ugryźć...
  • #4
    Markos80

    Automation specialist
    Z jakiej funkcji dostajesz wartość 524 (16#020C)?
    W GFK2220 Modbus RTU Master Communications ten błąd pojawia się przy okazji otwierania portu:
    - na str. 15 - Word 12 – Flow Control: 2 = SOFTWARE is invalid; a Parameter Error (020Ch) is
    returned to the status location specified in the Initialize Port COMMREQ.
    - na str. 17 - Modbus RTU Master Mode is not supported on the specified port. A value specifying the protocol, data rate, parity, flow control, etc. is outside its valid range.

    Pytanie czy były wprowadzane jakieś zmiany w programie, wymieniane CPU, itp?
  • #5
    ienecode
    Level 21  
    Markos80 wrote:
    Pytanie czy były wprowadzane jakieś zmiany w programie, wymieniane CPU, itp?

    Żadnych zmian nie było wprowadzanych. Z tego co wiem to od początku był jakiś problem z tym bo przestawało działać.. Tylko twórca tego jakoś to ruszał.

    Markos80 wrote:
    Z jakiej funkcji dostajesz wartość 524 (16#020C)?

    Wiem tylko tyle:
    Versa MAX - Modbus Master

    Wogóle w przykładach GE jakoś prościej jest zrobiony Modbus Master i nie do końca się ma do tego co ja mam.
  • #6
    Markos80

    Automation specialist
    Z tego fragmentu nie wynika zbyt wiele. Zakładam, że DSW_CO... jest zapisane w wywołaniu funkcji COMM_REQ. Musisz zobaczyć co jest podane w strukturze danych do niej.
  • #7
    ienecode
    Level 21  
    Jest to DSW_COM1MOD[00],

    Versa MAX - Modbus Master

    Gdy próbuję znaleźć w target ta strukturę to jest tylko tyle:

    Versa MAX - Modbus Master

    I tylko w pierwszym elemencie tej struktury [00] jest pojawiające się 0 lub 524.

    I tylko w tym bloku jest to ustawiane:
    Versa MAX - Modbus Master
  • #8
    Markos80

    Automation specialist
    Musisz znaleźć wywołanie funkcji COMM_REQ i do niej jest podana struktura z komendą i danymi (te dane trzeba zweryfikować).
    Zobacz do dokumentacji, np.: str. 14 inicjalizacja portu, w słowie 4 podajesz adres, w którym status ma być zapisany (w Twoim przypadku powinno być 1901, bo zmienna ma adres 1902, a podaje się o 1 mniejszy).
  • #9
    ienecode
    Level 21  
    To jest całość obsługi COMa 1


    Teraz wyczyściłem pamięć sterownika.
    I wgrałem program jeszcze raz. Sterownik pyta i urządzenie odpowiada.
    Z tym że jest teraz błąd 516 - 0x204 czyli wynika z dokumentacji że się ramka nie zgadza ? Tylko czemu kiedyś to działało.
  • #10
    Markos80

    Automation specialist
    Framing error może wystąpić, gdy fizyczne połączenie nie jest do końca prawidłowe. Coś nie tak z kablem albo terminacją linii.
    Próbowałeś podsłuchać linię, żeby zobaczyć ramki w obie strony?
  • #11
    ienecode
    Level 21  
    Markos80 wrote:
    Próbowałeś podsłuchać linię, żeby zobaczyć ramki w obie strony?

    w jaki sposób i za pomocą jakiego narzedzia mogę to zrobić ?
  • #12
    ienecode
    Level 21  
    A jeśli po restarcie sterownika w tabeli błędów jest błąd:

    Comm req not processed due to PLC memory limitations

    To znaczy że dwa Modbusy próbują się zainicjować naraz?
    Jak sobie z tym poradzić?
  • #13
    Markos80

    Automation specialist
    Damian7546 wrote:
    w jaki sposób i za pomocą jakiego narzedzia mogę to zrobić ?
    Poszukaj o podsłuchiwaniu portu RS232. Może być dowolny program do obsługi portu w PC: Putty, HyperTerminal, Ninja, jakiś RS232 sniffer.
    W sumie jeśli testowałeś urządzenie pod względem modbus to może wystarczy podsłuchać PLC. Najbardziej będzie się rozchodzić o parzystość i bity stopu lub fizyczną jakość połączenia.

    Za dokumentacją GFK-2220:
    Quote:
    3.5 Queue Limitation for Modbus RTU Master COMMREQs
    A COMMREQ is pending between the time the COMMREQ function block executes in the PLC application
    and the time the port writes to the COMMREQ status location. Each port that is configured for Modbus
    RTU Master will accept no more than 2 pending COMMREQs at one time.
    If the maximum number of COMMREQs is pending and the PLC application attempts to send another to
    the port, a fault will be posted to the PLC fault table:
    COMMREQ not processed due to PLC memory limitations.
    Note: When two or more COMMREQs are pending at once, each one needs a unique status location.


    Trzeba przeanalizować dokładnie program czy sekwencja wywoływania COMM_REQ jest na pewno poprawna i czy się nie zazębiają. Teoretycznie można puścić dwa na każdy port, ale w praktyce różnie to bywa. Dużo zależy od wersji i firmware CPU. Musiałbyś przeczytać w ich opisie czy nie ma jakichś znanych problemów.
    Dobrym pomysłem jest opóźnienie inicjalizacji portów w stosunku do pierwszego skanu sterownika.
  • #14
    ienecode
    Level 21  
    Napisałem modbusa na innym sterowniku i wszystko działa dobrze. Myśle że to uszkodozny port com.