Actions

Moduł Modbus 16 Relays (PL)

From Modig.pl Wiki

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 x0F pozwala sterować stanem wielu wyjść jednocześnie, zarówno załącza jak i wyłącza określone wyjścia.

Ramka danych z komendą x0F 01 0F 00 01 00 03 02 00 05 27 76
Numer bajtu Wartość (hex) Znaczenie
1 x01 Adres urządzenia docelowego
2 x0F Komenda “Write Multiple Coils” - sterowanie wieloma wyjściami
3…4 x0001 Numer wyjścia, od którego rozpocznie się sterowane:

0 - żadne z wyjść nie będzie sterowane, 1 - od wyjścia 1 (pierwszego), 16 - od wyjścia 16 (ostatniego)

5…6 x0003 Liczba wyjść, które będą sterowane:

0 - żadne z wyjść nie będzie sterowane 1 - jedno wyjście, 16 - do wysterowania 16 wyjść

7 x02 Liczba bajtów danych zawierających sekwencję sterującą - musi wynosić 2
8…9 x0005 Sekwencja sterująca, LSB -> wyjście nr 1.

Bity o wartości 0 powodują wyłączenie wyjść, bity o wartości 1 powodują załączenie wyjść. x0005 = 00000000 00000101 - załączone wyjścia 1 i 3

10...11 x27 76 Suma kontrolna CRC16
Odpowiedź Urządzenie, które odczyta i wykona polecenie wyśle w odpowiedzi następującą ramkę: 01 0F 00 01 00 03 44 0A
1 x01 Adres urządzenia, które odpowiada
2 x0F Komenda “Write Multiple Coils” - sterowanie wyjściami
3...4 x0001 Numer wyjścia, od którego rozpoczęto sterowane
5...6 x0003 Liczba wyjść, które rzeczywiście były sterowane
7...8 x440A Suma kontrolna CRC16


Jeśli liczba wyjść do ustawienia przekracza liczbę wyjść zawartych w urządzeniu (po uwzględnieniu numeru wyjścia, od którego rozpocznie się sterowanie), to polecenie zostanie wykonane prawidłowo dla wyjść istniejących. W odpowiedzi zostanie zwrócona liczba wyjść rzeczywiście wysterowanych.

Podobne polecenia:

  • A5 0F 00 08 00 04 02 00 07 6D 9D - polecenie x0F do urządzenia o adresie 165 (xA5), steruje 3 (x0003) wyjściami od wyjścia nr. 8 (x0008), sekwencja sterująca to :x0007 (00000000 00000111) czyli załączy wyjścia 8, 9, 10 oraz wyłączy wyjście 11.
Odpowiedź: A5 0F 00 08 00 04 CC EE
  • 14 0F 00 0F 00 05 02 00 00 14 43 - polecenie x0F do urządzenia o adresie 20 (x14), steruje 5 (x0005) wyjściami od wyjścia nr. 15 (x000F), sekwencja sterująca to :x0000 (00000000 00000000) czyli wyłączy wyjścia 15 i 16.
Odpowiedź: 14 0F 00 0F 00 02 E6 CC (wysterowane 2 wyjścia, a nie 5)
  • 29 0F 00 01 00 10 02 FF FF 1C 40 - polecenie x0F do urządzenia o adresie 41 (x29), steruje 16 (x0010) wyjściami od wyjścia nr. 1 (x0001), sekwencja sterująca to xFFFF (11111111 11111111) czyli włączy wszystkie wyjścia od 1 do 16.
Odpowiedź: 29 0F 00 01 00 10 03 EF



Komenda “Read Coils” - x01


Komenda x01 pozwala odczytać stan wyjścia lub wyjść.

Ramka danych z komendą x01 01 01 00 02 00 04 9C 09
Numer bajtu Wartość (hex) Znaczenie
1 x01 Adres urządzenia docelowego
2 x01 Komenda “Read Coils” - odczyt stanu wyjść
3…4 x0002 Numer wyjścia, od którego rozpocznie się odczyt stanów wyjść:

2 - odczyt od wyjścia nr 2

5…6 x0004 Wartość określająca ile wyjść będzie odczytanych:

4 - odczytanie 4 wyjść, czyli: 2, 3, 4 i 5

7…8 x0DC5 Suma kontrolna CRC16
Odpowiedź Urządzenie, które odczyta i wykona polecenie wyśle w odpowiedzi następującą ramkę:
01 01 02 00 0C B9 F9
1 x01 Adres urządzenia, które odpowiada
2 x01 Komenda “Read Coils” - odczyt stanu wyjść
3 x02 Liczba bajtów danych, które zawierają odpowiedź - 2
4…5 x000C Stan wyjść: 2 - OFF (0), 3 - OFF (0), 4 - ON (1), 5 - ON (1)

Binarnie: 00000000 00001100

6…7 xB9F9 Suma kontrolna CRC16


Podobne polecenia:

  • A5 01 00 08 00 06 6A 7C - polecenie x01 do urządzenia o adresie 165 (xA5), odczyt stanu 6 (x0006) wyjść, zaczynając od wyjścia 8 (x0008).
Odpowiedź: A5 01 02 00 02 49 E4 - załączone tylko wyjście nr. 9 (x0002)
  • 14 01 00 10 00 01 CE CA - polecenie x01 do urządzenia o adresie 20 (x14), odczyt stanu jednego (x0001) wyjścia, zaczynając od wyjścia 16 (x0010).
Odpowiedź: 14 01 02 00 00 B4 3F - wyjście wyłączone (x0000)
  • 29 01 00 20 01 00 BA 06 - polecenie x01 do urządzenia o adresie 41 (x29), odczyt stanu 16 (x0010) wyjść, zaczynając od wyjścia 32 (x0020).
Odpowiedź: brak odpowiedzi - nie można odczytać stanu od wyjścia 32

Jeśli liczba wyjść do odczytania przekracza liczbę wyjść zawartych w urządzeniu (po uwzględnieniu numeru wyjścia, od którego rozpocznie się odczyt stanów), to w odpowiedzi wyjścia nieistniejące będa miały zawsze stan OFF (0).


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