Modbushjälparen
Letar du efter en Modbus-lista?
Med modbushjälparen får du smidigt en tabell över valfri moduls modbusregister.
SIOX Modbus
Med hjälp av Modbus kan man få tillgång till information om SIOX-systemet från överordnade system. Man kan även skicka kommandon, exempelvis att motionera spjället på en modul.
Vår modbushjälpare presenterar de viktigaste Modbus-värdena. Den här sidan innehåller generell bakgrundsinformation och en del detaljer om hur SIOX Modbus fungerar.
Styrning med Netlink
För SX:NETLINK behöver styrning ske från ett överordnat system med hjälp av Modbus. Systemet behöver:
- Läsa ut statusregistret från spjällmoduler
- Skriva till kommandoregistret på alla spjällmoduler
Detta behöver göras regelbundet, helst så ofta som möjligt. Denna slingtid ska vara väl inom den satta watchdogtiden för modulerna som typiskt är 30 sekunder.
Uppkoppling till Modbus
Du kan ansluta till din SIOX-slinga med hjälp någon av våra Modbus-gateways:
- SX:ACCESS
- SX:NETLINK
Om du använder vår centralenhet SX:ACCESS får du också information om exempelvis brandcellsstatus direkt från centralenheten.
När du kopplar upp dig via Modbus TCP så anger du IP-addressen för Modbus-gatewayen. Från fabrik är det 192.168.0.234
men det går att konfigurera. TCP-porten är 502, vilket är standard för Modbus.
Slav-ID/Enhets-ID
Alla enheter på SIOX-bussen har en SIOX-address (både moduler och den centrala enheten). Exempelvis kan en spjällmodul ha SIOX-address 00:12.
I andra Modbus-system räcker IP-addressen för att kommunicera med en enhet, men eftersom den centrala enheten agerar som en gateway kommer man åt de enskilda SIOX-modulerna genom att ange ett Modbus slav-ID. För att se information om en specifik SIOX-enhet behöver du ange ett slav-ID som matchar SIOX-addressen.
Om du har en ACCESS så har den som standard SIOX-address 00:60, vilket motsvarar Modbus slav-ID 60.
SIOX | Slav-ID | SIOX | Slav-ID | SIOX | Slav-ID | SIOX | Slav-ID |
---|---|---|---|---|---|---|---|
00:01 | 1 | 61:01 | 65 | 62:01 | 129 | 63:01 | 193 |
00:02 | 2 | 61:02 | 66 | 62:02 | 130 | 63:02 | 194 |
00:03 | 3 | 61:03 | 67 | 62:03 | 131 | 63:03 | 195 |
... | ... | ... | ... | ||||
00:60 | 60 | 61:60 | 124 | 62:60 | 188 | ||
00:61 | 61 | 61:61 | 125 | 62:61 | 189 | ||
00:62 | 62 | 61:62 | 126 | 62:62 | 190 | ||
00:63 | 63 | 61:63 | 127 | 62:63 | 191 |
Modbus-register
Varje SIOX-enhet har en stor uppsättning SIOX-parametrar. Varje parameter har ett parameternummer, och olika enheter använder olika uppsättningar parametrar. En enhets parametrar kan utläsas från manualen för enheten.
Modbus-register-addresser kan matchas direkt mot SIOX-parametrar: parameter 0000
kan nås via Modbus-register-address 0
, parameter 0001
via register 1
, osv. (0-bas)
I Modbus gör man skillnad på "Physical Input Register," "Internal/Holding Register" och "Physical Output Register" (med olika funktionskoder) men i SIOX gör vi inte skillnad mellan dessa. Du kan använda valfri register-funktionskod, vi kommer behandla det på samma sätt.
Coils
I Modbus så finns det "coils" (coil=spole). Det är vad som i datorvärden kallas för bit. Det är ett värde som kan vara på eller av. Exempelvis "är spjället öppet?" eller "är spjällmodulen i nattläge".
I SIOX är varje parameter ett 16-bitars värde. Vi har därför valt att ge tillgång till bittarna direkt: varje SIOX-register delas in i 16 coils som man kan läsa eller skriva till individuellt. Alternativet till detta är att läsa ut ett helt register och arbeta med bittarna i PLC-systemet.
SIOX-parameter 0000
kan nås via coil 0
-15
, 0001
via coil 16
-31
, osv. (0-bas)
I Modbus finns även här en separation mellan "Coils" och "Internal Bits" men det behandlas samma på SIOX.
1-bas och 0-bas
Vad för nummer har det första Modbus-registret? I exemplen ovan har vi börjat på 0
, och det kallas 0-bas, och det är det vi använder normalt på SIOX. I Modbus-världen är det dock mindre enhetligt. 1-bas har varit vanligt historiskt (att det första registret är 1
). Men även 0-bas används av flera Modbus-program. Detta leder till risk för förvirring.
Det är värt att nämna att detta är bara en fråga om notation, inte en teknisk begränsning. Oavsett om 0-bas eller 1-bas används kan man komma åt alla register lika bra. Det är bara frågan om hur olika program numererar registren.
I Modbushjälparen kan du ange om du vill se register- och coiladdresser i 1-bas eller 0-bas. Matcha det mot vad din Modbus-klient använder.
EEPROM
I de "vanliga" SIOX-parametrarna som beskrivits hittils så lagras värden temporärt (i RAM); de återställs vid omstart. Det är inte ett problem för statusregister eller kommandoregister, men konfigurationsvärden ska lagras mer permanent. Det är saker som SIOX-address, gränsvärden, osv. Dessa parametrar ligger i "EEPROM".
Det normala sättet att sätta dessa värden är med SIOX Smoke Manager.
Det är möjligt att ändra EEPROM-parametrar med Modbus, men det är sällan det behövs (eller rekomenderas). Eftersom EEPROM-minnen endast tolererar ett begänsat antal skriv-cykler (ca 1 miljon) bör skrivning inte ske för ofta. Specifika EEPROM-parametrars Modbus-register-addresser står beskrivna i respektiva enheters manualer.
Felhantering
Om fel uppstår så skickas en Modbus-felkod. Den viktigaste är kod 11: att en SIOX-modul inte svarar. Normalt indikerar detta att det inte finns en enhet med den addressen på slingan. En annan orsak är störningar på SIOX-bussen som är lite ovanligare tack vare automatiska omsändingar vid fel på SIOX-bussen.
Om din Modbus-klient inte reagerar på felkoder och du använder NETLINK så kan du konfigurera den att inte svara om fel uppstår. Klienten kommer då reagera på det på samma sätt som en "timeout".
Watchdog
Det är viktigt att sätta watchdog på spjällmodulerna. Användare som har system som använder NETLINK ska vara speciellt uppmärksamma; varje modul behöver ha en watchdogtid satt. Om ingen kommunikation sker till en modul under (exempelvis) 30 sekunder så hamnar den automatiskt i brandläge. På så sätt blir exempelvis ett kabelbrott "fail-safe".