| System SZARP - dokumentacja techniczna: SZARP v.3.1 | ||
|---|---|---|
| Poprzedni | Rozdział 7. Obsługiwane urządzenia | Następny |
Zgodność ze specyfikacją: 4 .
Obsługiwane urządzenia: Sterownik do demona borutadmn, obsługujący protokół Modbus, powszechnie używany przez różnego rodzaju urządzenia pomiarowe, sterowniki PLC czy systemy SCADA.
Protokół komunikacji: Modbus RTU lub ASCII na łączu szeregowym (tryb master i slave), Modbus TCP przez połączenie sieciowe (tryb client i server)
Konfiguracja: Sterownik jest konfigurowany w pliku params.xml, w podelemencie unit elementu device. Opis dodatkowych atrybutów XML znajduje się w przykładzie poniżej.
Przykładowa konfiguracja:
<device
xmlns:extra="http://www.praterm.com.pl/SZARP/ipk-extra"
daemon="/opt/szarp/bin/borutadmn"
path="/dev/null"
ignorowany, zaleca się ustawienie /dev/null
speed="9600"
ignorowany
>
<unit
id="1"
identyfikator Modbus nasz lub strony przeciwnej (zależnie od trybu server/client); jeżeli
jest literą lub pojedynczą cyfrą to interpretowany jest jako znak ASCII (czyli 'A' to 65,
'1' to 49), wpp. interpretowany jest jako liczba (czyli '01' to 1); zaleca się używanie
zamiast niego jednoznacznego atrybutu extra:od
extra:id="1"
identyfikator Modbus jednostki, nadpisuje atrybut 'id', zawsze interpretowany jako liczba
type="1"
ignorowany, powinno być "1"
subtype="1"
ignorowany, powinno być "1"
bufsize="1"
wielkość bufora uśredniania, 1 lub więcej
extra:proto="modbus"
nazwa protokołu, używana przez Borutę do ustalenia używanego sterownika, dla
tego sterownika musi być "modbus"
extra:mode="client"
tryb pracy jednostki, "client" lub "server"; client oznacza stronę aktywną (master
dla Modbus RTU, klient dla Modbus TCP); server oznacza stronę pasywną (slave dla
Modbus RTU, serwer dla Modbus TCP)
extra:medium="serial"
medium transmisyjne, "serial" dla Modbus TCP, "tcp" dla Modbus TCP
extra:tcp-address="172.18.2.2"
adres IP do którego się podłączamy, wymagany dla trybu "client" i medium "tcp"
extra:tcp-port="23"
port IP na który się łączymy (mode "client") lub na którym nasłuchujemy (mode "server"),
wymagany dla medium "tcp",
extra:path="/dev/ttyS0"
ścieżka do portu szeregowego dla medium "serial"
extra:speed="19200"
opcjonalna prędkość portu szeregowego w bps dla medium "serial", domyślna to 9600,
inne możliwe wartości to 300, 600, 1200, 2400, 4800, 19200, 38400; ustawienie innej
wartości spowoduje przyjęcie prędkości 9600
extra:parity="even"
opcjonalna parzystość portu dla medium "serial", możliwe wartości to "none" (domyślna),
"odd" i "even"
extra:stopbits="1"
opcjonalna liczba bitów stopu dla medium "serial", 1 (domyślnie) lub 2
extra:FloatOrder="msblsb"
kolejność słów dla wartości zajmujących 2 rejestry (typu "long" lub "float"), domyślna
to "msblsb" (najpierw bardziej znaczące słowo), inna możliwość to "lsbmsb" (najpierw
mniej znaczące słowo); może być nadpisana dla konkretnego parametru
extra:nodata-timeout="60"
czas w sekundach po którym wygasa wartość parametru w przypadku braku komunikacji, domyślnie
to 0 (brak wygasania)
extra:nodata-value="-1"
wartość wysyłana gdy wartość parametru SZARP nie jest dostępna, domyślnie 0
>
<param
elementy param oznaczają wartośći przesyłane/odczytywane z urządzenia do systemu SZARP
name="Name:Of:Parameter"
...
extra:address="0x12"
wymagany, podany dziesiątkowo lub szesnastkowo bezpośredni adres Modbus pierwszego rejestru
zawierającego wartość parametru, od 0 do 65535
extra:register_type="holding_register"
typ rejestru Modbus - "holding_register" (domyślne) lub "input_register", decyduje która funkcja
Modbus jest wykorzystywana do czytania wartości rejestru - (0x03 - ReadHoldingRegister or
0x04 - ReadInputRegister); dla trybu "server" nie ma to znaczenia - akceptowane są obie funkcje
zapisujące - zarówno x06 (WriteSingleRegister) jak i 0x10 (WriteMultipleRegisters)
extra:val_type="integer"
wymagany, typ kodowania wartość - jeden z "integer", "bcd" (niewspierany dla elementów 'send'),
"long" lub "float"; wartości typu "integer" i "bcd" zajmują 1 rejestr, "long" i "float" zajmują
dwa kolejne rejestry
extra:FloatOrder="lsbmsb"
nadpisuje wartość atrybutu FloatOrder jednostki dla konkretnego parametru
extra:val_op="MSW"
opcjonalny operator pozwalający na konwersję wartości typu float i long na wartości
parametrów SZARP; domyślnie wartośći te zamieniane są na 16-bitową reprezentację wartośći
w systemie SZARP bezpośrednio, jedynie z uwzględnieniem precyzji parametru w SZARP; możliwe
jest jednak przepisanie tych wartości do dwóch parametrów SZARP (tak zwane parametry
'kombinowane') co pozwala na nietracenie precyzji i/lub uwzględnienie większego zakresu;
w tym celu należy skonfigurować 2 parametry SZARP z takimi samymi parametrami dotyczącymi
adresu i typu, przy czym jeden z nich powinien mieć val_op ustawiony na "MSW", a drugi na
"LSW" - przyjmą wartość odpowiednio bardziej i mniej znaczącego słowa wartości parametru
Modbus
...
/>
...
<send
elementy send oznaczają wartości przesyłane/czytane z systemu SZARP do urządzenia
param="Name:Of:Parameter"
nazwa parametru, którego wartość mamy przesyłać
extra:address="0x12"
adres Modbus docelowego rejestru
extra:register_type="holding_register"
jak dla elementu "param", ale ma znaczenie tylko dla trybu "server", dla trybu
"klient" używana jest zawsze funkcja 0x10 (WriteMultipleRegisters)
extra:val_type="integer"
extra:FloatOrder="lsbmsb"
extra:val_op="MSW"
analogicznie jak dla elementu param
...
</unit>
</device>
| Poprzedni | Spis treści | Następny |
| Sterownik boruta_modbus | Początek rozdziału | Sterownik boruta_wmtp |