Actions

Moduł Modbus 16 Relays (PL): Difference between revisions

From Modig.pl Wiki

Line 328: Line 328:
<hr>
<hr>
===== Komenda “Write Single Coil” - x05 =====
===== Komenda “Write Single Coil” - x05 =====
<br>
Komenda x05 pozwala sterować stanem wyjścia lub wyjść.
Komenda x05 pozwala sterować stanem wyjścia lub wyjść.
<br>
<br>

Revision as of 09:44, 19 March 2026

Modig Modbus 16 Relays
Karta 16 przekaźników sterowanych poprzez RS485 i Modbus

Opis

Moduł Modig Modbus 16R jest wyposażony w 16 przekaźników elektromagnetycznych SPDT, które są sterowane za pomocą poleceń w standardzie Modbus przesyłanych interfejsem RS485. Interfejs sterujący jest wyposażony w separację galwaniczną i zabezpieczenia przeciwprzepięciowe, dzięki czemu działa stabilnie nawet w instalacjach narażonych na silne zakłócenia. Parametry komunikacji i funkcjonowania modułu można elastycznie konfigurować i dostosować do wymagań różnych aplikacji

File:Foto




Podstawowe cechy i parametry

  • 16 wyjść przekaźnikowych - styki NC/NO, 10 A, 250 V AC/ 30 V DC
  • interfejs RS485 z separacją galwaniczną i zabezpieczeniami przeciwprzepięciowymi
  • konfigurowane parametry komunikacji:
    • baud rate: 1200…1000000;
    • parity: none/even/odd;
    • stop bits: 1/1,5/2
  • zasilanie 5 V (4,9…5,3) o wydajności min. 1,5 A
  • zasilanie poprzez złącze USB-C lub złącze cylindryczne DC 2.1/5.5 lub złącze Phoenix MC 3,81 mm
  • sterowanie i konfigurowanie ustawień za pomocą poleceń Modbus
  • pomiar wartości napięcia zasilającego i temperatury modułu
  • wymiary: 200x110x60
  • montaż na szynę DIN-35



Złącza przekaźników

Styki przekaźników są wyprowadzone na złącza śrubowe z rastrem 5,08 mm. Każde z 16 wyjść oferuje styki normalnie zwarte (NC) oraz normalnie otwarte (NO). Gdy dane wyjście zostanie włączone, to styk NO zostanie połączony ze stykiem wspólnym (COM) natomiast styk NC zostanie odłączony od COM. Stan aktywny dla danego wyjścia jest sygnalizowany świeceniem diody LED umieszczonej przy zaciskach tego złącza. Sposób rozmieszczenia poszczególnych wyprowadzeń został pokazany na rysunku.


Przykładowy obwód sterowany za pomocą Modig Modbus 16 Relays pokazano na rysunku.


Interfejs RS485

Interfejs RS485 jest wyprowadzony w postaci złącza typu Phoenix Contact MC 3,81 mm z 4 stykami. W zależności od instalacji mogą być używane tylko linie A+ i B- lub wszystkie T, A+, B- ,G. Ich funkcje zostały opisane w tabeli.


Oznaczenie Funkcja
120 Ω / T Aktywowanie wewnętrznego rezystora terminującego 120 Ω. Rezystor jest aktywny, gdy styk T jest połączony ze stykiem A+, np. za pomocą zworki zamontowanej bezpośrednio we wtyczce.
A+ Linia A magistrali RS485 (potencjał dodatni)
B- Linia B magistrali RS485 (potencjał ujemny)
GND / G Masa GND magistrali RS485.


Interfejs RS485 jest odseparowany galwanicznie od pozostałych komponentów i wyposażony w elementy przeciwprzepięciowe dzięki czemu działa stabilnie nawet w instalacjach narażonych na silne zakłócenia.

Parametry komunikacji RS485 są konfigurowane za pomocą poleceń Modbus, domyślne ustawienia to: 19200, 8, none, 1.

Moduł Modig Modbus 16R może być dołączony do magistrali RS485, która łączy maksymalnie 64 urządzenia (wliczając moduł). Każde urządzenie powinno być dołączone w taki sposób, aby nie powstawały rozgałęzienia magistrali - ewentualne połączenia powinny być jak najkrótsze. Na obu końcach magistrali zalecane jest dołączenie rezystorów terminujących 120 Ω. Modig Modbus 16R ma zintegrowany taki rezystor, ale żeby był aktywny należy połączyć ze sobą styk A+ oraz T we wtyczce.

Na rysunku pokazano uproszczony schemat magistrali RS485, z jednej strony zakończonej rezystorem terminującym 120 Ω, a z drugiej strony rezystorem terminującym zintegrowanym w module. Ponadto pokazano właściwe, oraz błędne podłączenie urządzeń do magistrali.


Zasilanie

Moduł Modig Modbus 16R jest wyposażony w 3 różne złącza zasilania, połączone równolegle. Należy wybrać tylko jedno z nich i dołączyć zasilanie o napięciu 4,9…5,3 V, wydajności min. 1,5 A i o właściwej polaryzacji.

Złącze Funkcja
USB-C (J3) Standardowe gniazdo USB-C, pełni tylko funkcję złącza zasilania
2.1/5.5 (J2) Gniazdo cylindryczne 2.1/5.5 kompatybilne z zasilaczami typu “kostka”. Uwaga na polaryzację - plus w środku.
MC 3,81 mm (J1) Złącze z wtyczką do przyłączenia przewodów. Uwaga na polaryzację - plus od strony przekaźników.

Kontrolki sygnalizacyjne

Na płytce Modig Modbus 16R znajdują się dwie kontrolki LED, które informują o działaniu urządzenia.

Kontrolka Funkcja
STA Świecenie diody z krótkim cyklicznym wygaszeniem oznacza poprawne działanie urządzenia
BUS Miganie diody LED oznacza odbieranie danych z magistrali RS485 i poleceń Modbus




Przywracanie ustawień

Na płytce modułu KAmod Modbus 16R znajduje się mikroprzycisk SET. Jego przyciśnięcie i przytrzymanie przez czas ok 5 s. spowoduje przywrócenie wszystkich ustawień (wartości rejestrów konfiguracyjnych) do wartości domyślnych. Funkcja będzie przydatna w sytuacji, kiedy poprzez błędne ustawienie parametrów nie ma możliwości wysyłania poleceń Modbus do modułu. Przywrócenie ustawień domyślnych ustawi parametry komunikacji RS485 na: 19200, 8, none, 1.



Rejestry konfiguracyjne (Holding Registers)

Wszystkie parametry urządzenia są definiowane poprzez wartości rejestrów konfiguracyjnych tzw. Holding Registers. Rejestry można odczytywać i zapisywać poprzez polecenia Modbus i w ten sposób można zmieniać działanie urządzenia. Lista rejestrów oraz ich funkcje zostały opisane w tabeli.

Numer rejestru (hex) Nazwa Opis Wartość domyślna/

zakres wartości

x4000 Adress Określa adres modułu przy sterowaniu poleceniami Modbus 1 (x0000)

1…255

x4002 Coils Zawiera wartość określającą liczbę wyjść (Coils) dostępnych w module.
Wartość tylko do odczytu
16 (x0010)
x4004 Inputs Zawiera wartość określającą liczbę wejść (Discrete inputs) dostępnych w module.

Wartość tylko do odczytu

0 (x0000)
x4006 Baud Określa szybkość komunikacji RS485 (baud).
Wartość bez 2 ostatnich zer np.

1200 = 12 = x000C; 2400 = 24 = x0018
4800 = 48 = x0030; 9600 = 96 = x0060
19200 = 192 = x00C0; 57600 = 576 = x0240
115200 = 1152 = x0480;
256000 = 2560 = x0A00

192 (x00C0)

12…10000

x4008 Parity Określa parzystość (parity) przy komunikacji RS485.
0 - none; 1 - even; 2 - odd
0 (x0000)

0…2

x400A Stop Określa bity stopu (stop bits) przy komunikacji RS485.

1 - 1 bit stopu; 2 - dwa bity stopu

1 (x0001)

1…2

x400C Broadcast Definiuje, czy urządzenie realizuje polecenia z adresem rozgłoszeniowym o wartości 0 (x00) - broadcast. 0 - nie, 1 - tak 1 (x0001)

0…1

x400E CRC Definiuje, czy urządzenie sprawdza sumę kontrolną w poleceniach Modbus. 0 - nie, 1 - tak 0 (x0000)

0…1

x4010 Response Zezwala na wysyłanie odpowiedzi na polecenia Modbus.

0 - nie wysyła żadnych odpowiedzi,
1 - wysyła odpowiedzi na komendy Modbus

1 (x0001)

0…1

x4012 IO Offset Określa, od jakiej wartości liczone są wejścia (inputs) i wyjścia (coils)

0 - wejścia/wyjścia zaczynają się od 0 (0…15)
1 - wejścia/wyjścia zaczynają się od 1 (1…16)

1 (x0001)

0…1

x4014

oraz x8000

Version Zawiera wersję oprogramowania firmware.

wartość 10 - oznacza 1.0 itd.
Wartość tylko do odczytu

10 (x00A0)
x2000 ExBaud Umożliwia ustawienie parametrów komunikacji, jedną z predefiniowanych wartości.

Młodszy bajt odpowiada prędkości baud:
0 - 4800, 1 - 9600, 2 - 19200, 3 - 38400
4 - 57600, 5 - 115200, 6 - 12800, 7 - 256000
8 - inna wartość
Starszy bajt określa parzystość:
0 - none, 1 - even, 2 - odd

x0002

x0000…x0208



Rejestry wejść pomiarowych (Input Registers)

Urządzenie jest wyposażone w obwody pomiaru napięcia zasilającego oraz temperatury, które pozwalają kontrolować warunki pracy modułu i uniknąć awarii. Wyniki pomiarów są dostępne w rejestrach wejść pomiarowych tzw. Input Registers. Rejestry pomiarowe można odczytywać poprzez polecenia Modbus.

Numer rejestru (hex) Nazwa Opis Zakres wartości
x3000 Voltage Pomiar wartości napięcia zasilającego. Wartość 495 = 4,95 V itd. 330…550
x3002 Temp Pomiar temperatury modułu. Wartość temperatury 24 (x0018), co oznacza 24 stopnie C.

Zakres temperatury: -20…-1 jest zapisywany jako xFF14…xFF01
Zakres temperatury: 0…70 jest zapisywany jako x0000…x0046

-20…-1 *C =

xFF14…xFF01 0…70 *C= x0000…0046



Komendy sterujące w standardzie Modbus

Każde polecenie w standarcie Modbus ma postać ramki danych, której strukturę pokazuje rysunek:

Kolejne ramki muszą być oddzielone przerwą o czasie co najmniej 3,5 znaku (czas potrzebny na przesłanie pełnego znaku ASCII), natomiast przerwa pomiędzy przesłaniem jednego znaku, a rozpoczęciem transmisji kolejnego, w tej samej ramce, nie może przekroczyć 1,5 znaku. Takie reguły są stosowane dla prędkości komunikacji (baud rate) do 19200.

Jeśli prędkość komunikacji jest ustawiona powyżej 19200, to minimalna przerwa pomiędzy ramkami ma stałą wartość, równą 1,75 ms. Natomiast przerwa pomiędzy kolejnymi znakami tej samej ramki nie może przekroczyć 0,75 ms.

Każde urządzenie dołączone do magistrali Modbus musi mieć przypisany niepowtarzalny adres. Pole adresu znajduje się w każdej przesyłanej ramce, ma rozmiar 1 bajta i może mieć wartość z zakresu 1…255. Adres o wartości 0 jest tzw. adresem rozgłoszeniowym (broadcast) i umożliwia skierowanie polecenia do wszystkich urządzeń dołączonych do magistrali. W niektórych systemach nie zaleca się ustawiania adresów powyżej wartości 247.

Wyjścia i wejścia standardowo są numerowane od liczby 1. Wtedy pierwsze wyjście, to wyjście o numerze 1 (x01), a ostatnie ma numer 16 (0x10). Opisy komend i przykłady poleceń dotyczą właśnie takiego wariantu. Jednak urządzenie może być skonfigurowane w taki sposób, aby wyjścia i wejścia były numerowane od liczby 0. Wtedy pierwsze wyjście, to wyjście o numerze 0 (x00), a ostatnie ma numer 15 (0x0F). Jeśli numer wyjścia, do którego odnosi się polecenie sterujące/odczytujące, przekracza liczbę wyjść zawartych w urządzeniu (15 lub 16, w zależności od konfiguracji), to polecenie nie zostanie wykonane i pozostanie bez odpowiedzi.

W standardzie Modbus występuje kilka standardowych komend. Każda z nich oraz przykładowe polecenia i odpowiedzi urządzenia zostały opisane w dalszej części instrukcji.


Wykaz obsługiwanych komend Modbus

Nazwa komendy Kod komendy Funkcja
Write Single Coil x05 Pozwala sterować stanem wyjścia lub wyjść
Write Multiple Coils x0F Pozwala sterować stanem wielu wyjść jednocześnie, zarówno załącza jak i wyłącza określone wyjścia.
Read Coils x01 Pozwala odczytać stan wyjścia lub wyjść
Read Discrete Inputs x02 Pozwala odczytać stan wejść. Ponieważ urządzenie Modig Modbus 16R nie ma wejść do odczytu stanów w odpowiedzi na to polecenie odczytuje stan wyjść, podobnie jak komenda “Read Coils” - x01.
Read Input Registers x04 Pozwala odczytać wartości z rejestrów wejść pomiarowych
Read Holding Registers x03 Pozwala odczytać wartości z rejestrów konfiguracyjnych
Write Single Holding Register x06 Pozwala ustawić wartość w rejestrze konfiguracyjnym
Write Multiple Holding Registers x10 Pozwala ustawić wartości kilku rejestrów konfiguracyjnych



Komenda “Write Single Coil” - x05


Komenda x05 pozwala sterować stanem wyjścia lub wyjść.

Ramka danych z komendą x05 01 05 00 00 FF 00 8C 3A
Numer bajtu Wartość (hex) Znaczenie
1 x01 Adres urządzenia docelowego
2 x05 Komenda “Write Single Coil” - sterowanie jednym wyjściem
3…4 x0000 Numer wyjścia, które będzie sterowane:

0 - żadne z wyjść, 1 - wyjście 1 (pierwsze), 16 - wyjście 16 (ostatnie) x00FF - steruje wszystkimi wyjściami - od 1 do 16

5…6 xFF00 Wartość określająca zadanie do wykonania:

x0000 - wyłącz (ON), xFF00 - włącz (OFF), x5500 - zmień stan na przeciwny (TOGGLE) ON->OFF / OFF->ON

7…8 x8C3A Suma kontrolna CRC16
Odpowiedź Urządzenie, które odczyta i wykona polecenie wyśle w odpowiedzi identyczną ramkę: 01 05 00 00 FF 00 8C 3A


Podobne polecenia:

  • A5 05 00 08 55 00 6A 7C - polecenie x05 do urządzenia o adresie 165 (xA5), wyjście nr. 8 (x0008) zmieni stan na przeciwny (x5500)
Odpowiedź: A5 05 00 08 55 00 6A 7C
  • 14 05 00 10 00 00 CE CA - polecenie x05 do urządzenia o adresie 20 (x14), wyjście nr. 16 (x0010) zostanie wyłączone - OFF (x0000)
Odpowiedź: 14 05 00 10 00 00 CE CA
  • 29 05 00 FF FF 00 BA 22 - polecenie x05 do urządzenia o adresie 41 (x29), wszystkie wyjścia (x00FF) zostaną włączone - ON (xFF00)
Odpowiedź: 29 05 00 FF FF 00 BA 22



Komenda “Write Multiple Coils” - x0F

Komenda “Read Coils” - x01

Komenda “Read Discrete Inputs” - x02

Komenda “Read Input Registers” - x04

Komenda “Read Holding Registers” - x03

Komenda “Write Single Holding Register” - x06

Komenda “Write Multiple Holding Registers” - x10