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

VersaMax Micro Modbus RTU komunikacja z regulatorem temperatury SRT-77

malenz 13 Oct 2017 12:35 1518 4
  • #1
    malenz
    Level 10  
    Witam, potrzebuje nakierowania w szafie sterowniczej mam VersaMax Micro CPU IC200UDD040. Wstawiłem mu moduł komunikacji RS 485 IC200USB002, mam tam także regulator temperatury SRT=77 firmy simex. Chcę połączyć się poprzez komunikację RS 485 z tym regulatorem i żądać informacji o wartości wskazania temperatury. Błądzę w tym temacie.

    1. Regulator
    Zaciski 18-GND
    19- DATA-
    20- DATA+
    czyli komunikacja pół dupleks
    2. Moduł komunikacji IC200USB002
    Przygotować do 2 przewodowej komunikacji Tx(+) z Rx(+), Tx(-) z Rx(-),
    TxRx(+) z DATA+ i analogicznie z (-). SG- GND modułu z GND regulatora.
    RT -Terminal resistor podłączyć do TxRx ???

    I teraz port drugi ustawiam na RS485 Port Mode RTU, Port type Master, Duplex Mode 2- wire, reszta nastaw bez zmian. Chociaż z tego co czytałem to mogę to ustawić programowo.

    Wg instrukcji urządzenie obsługuje protokół MODBUS RTU, parametry urządzenia jak i wartość pomiarowa dostępne są jako rejestry typu HOLDING. Do odczytu rejestru/ów używać należy funkcji 3h, do zapisu 6h lub 10h. Maksymalnie 16 rejestrów w ramce.



    Ramka zapytania o wartość wyświetlaną przez urządzenie SRT-77 o adresie 1:


    | ADDR -01 | FUNC -03 | REG H,L -00 01 | COUNT H,L -00 01 | CRC L,H -D5 CA |

    Odpowiedź
    | ADDR -01 | FUNC -03 | BYTE C -02 | DATA H,L -00 FF | CRC L,H -F8 04 |

    Kłopot u mnie w tym, że nie mam na tyle wiedzy aby napisać program w PMEdition. Wiem, że stosuje się block move, do przesłania 8 rejestrów do określonej zmiennej bądź rejestru, comm req jako blok który wysyła do określonego urządzenia żądanie. Potrzebuje jakiegoś schematu działania, wzoru z wytłumaczeniem co po sobie ma następować. Czyli najpierw za pomocą block move ustawiam parametry
    IN1 do IN16
    Pierwszy blk move word
    Word 1 - 16 bo wymaga tego Modbus RTU i ilość danych w ramce
    Word 2- 0 bo wymaga tego protokół
    Word 3- 8 bo Registers (%R)
    Word 4 - tutaj nie wiem adres słowa statusu - 1
    Word 5 - 0 nie wykorzystany
    Word 6 - 0 nie wykorzystany
    Word 7 - 65520 ustawienie portu dla Modbus RTU
    Drugi blk move int
    Word 8 - 3 bo protokół Modbus RTU
    Word 9 - 1 dla Modbus RTU jako Master
    Word 10 - 5 Prędkość połączenia 9600
    Word 11- 1 parzystość
    Word 12 - 1 kontrola przepływu
    Word 13 - 0 zwłoka ignorowana
    Word 14- tego nie kapuje
    move int
    Word 15 - 1 8 bitów
    Word 16- tego nie rozumiem bit stopu

    i dalej już nie wiem comm req jest potrzebny jak wysłać ramkę z żądaniem i jak odebrać dane, w jakim rejestrze będą przechowywane itd. Pomóżcie chce to zrozumieć
  • #3
    malenz
    Level 10  
    Troszkę materiałów mam teraz do przerobienia czas na analizę jak nie dam radę to będę dalej was męczyć. Chyba że nie chcecie.
  • #4
    malenz
    Level 10  
    VersaMax Micro Modbus RTU komunikacja z regulatorem temperatury SRT-77

    Nie wiem jak przesłać tę ramkę, chodzi o punkt 1.

    Zapisałem to w takiej postaci i pytanie czy to ma sens

    VersaMax Micro Modbus RTU komunikacja z regulatorem temperatury SRT-77





    Gdy wysyłam ramkę do slava to otrzymuje do zmiennej 200 informacje zwrotna (+520)
    ILLEGAL_DATA_ADDRESS 0208h The Modbus slave detected a data address it does not support.
  • #5
    malenz
    Level 10  
    Temat zamykam, znalazłem rozwiązanie po sporych problemach doszedłem do tego, że z jakichś dziwnych przyczyn wysyłając żądanie do rejestru 01 w urządzeniu slave był offset -1, więc tak naprawdę odwoływałem się do rejestru 0, przez co otrzymywałem błąd komunikacji.