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.

SIOX Modbus-implementation är mycket heltäckande - varenda SIOX-parameter är tillgänglig via Modbus. 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.

För SX:NETLINK behöver styrning ske från ett överordnat system med hjälp av Modbus. Systemet behöver:

  1. Hämta status från spjällmoduler
  2. Skriva till kommandoregistret på alla spjällmoduler

Detta behöver göras regelbundet, exempelvis var 30:e sekund, helst så ofta som möjligt. Denna slingtid ska vara väl inom den satta watchdogtiden för modulerna.

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.

SIOXSlav-IDSIOXSlav-IDSIOXSlav-IDSIOXSlav-ID
00:01161:016562:0112963:01193
00:02261:026662:0213063:02194
00:03361:036762:0313163:03195
... ... ... ...
00:606061:6012462:60188
00:616161:6112562:61189
00:626261:6212662:62190
00:636361:6312762:63191

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".