Uitlezen modbus RS-485 in settings Gateway Impulse C07W
1
.
Vereisten
Om settings te bewerken heeft u het gebruikersrecht “GatewaySettings” nodig.
2
.
Settings begrijpen
De settings worden steeds in JSON-formaat verwerkt door het systeem, voor ze naar de gateway worden verstuurd.
Deze JSON settings zijn opgedeeld in 2 delen:
SlaveDefinitions
In “slaveDefinitions” bepaal je wat je zal uitlezen. Per “Slave” zijn er een aantal instellingen:
- address: dit is het slave id van de modbus slave die je wilt uitlezen.
- type: om zelf te kiezen welke register je wilt uitlezen geef je hier “generic-rtu” in.
- baudrate: de transmissiesnelheid uitgedrukt in bits per seconde. Stel hier dezelfde baudrate in als op de modbus slave.
- bus: dit is de plek waar de RTU expansiekaart is ingestoken. Als deze op expansie 1 zit kies je voor 102. Als deze op expansie 2 zit kies je voor 101.
- serialconfig:
gebruik deze notatie om geavanceerde seriële communicatie-parameters in te
stellen, zoals het aantal data-bits, stop-bits en parity-bits, en welk
handshake protocol moet worden gebruikt.
baudrate: de transmissiesnelheid uitgedrukt in bits per seconde.
databits: het aantal gebruikte bits per karakter.
Voor parity, stopbits en handshake gebruik je de volgende ENUM waardes:
parity: - 0 (None): Geen pariteits-controle.
- 1 (Odd): Het totaal aantal data-bits is steeds een oneven nummer.
- 2 (Even): Het totaal aantal data-bits is steeds een even nummer.
- 3 (Mark): De pariteits-bit is altijd 1.
- 4 (Space): De pariteits-bit is altijd 0.
stopbits:
- 0 (One): Eén stop-bit wordt gebruikt.
- 1 (OnePointFive): Eén-en-een-halve stop-bits worden gebruikt.
- 2 (Two): Twee stop-bits worden gebruikt.
handshake:
- 0 (None): Geen handshake protocol wordt toegepast.
- 1 (RequestToSend/ClearToSend): RTS/CTS flow-control.
- 2 (XOn/XOff): Softwarematige flow-control.
Voorbeeld van een SlaveDefinitions blok:
"slaveDefinitions": [
{
"name": "modbus.rtu",
"slaves": [
{
"address": 3,
"type": "generic-rtu",
"busdefinitiontype": 100,
"baudrate": 9600,
"bus": "101"
},
{
"address": 4,
"type": "generic-rtu",
"busdefinitiontype": 100,
"bus": "101",
"serialconfig": {
"baudrate": 19200,
"parity": 0,
"stopbits": 2,
"handshake": 0,
"databits": 8
}
}
]
}
]
SlaveSettings
Voor iedere slave die je in SlaveDefinitions hebt gedefinieerd, kunt u in SlaveSettings bepalen welke registers je effectief wilt uitlezen.
Allereerst start je in SlaveSettings met het bepalen van de naam, steeds in het volgende formaat:
modbus.rtu.mb_uart{bus_id}.{slave_id}
· bus_id: het laatste cijfer van de bus die je in de SlaveDefinitions hebt genoteerd. Voor bus 101 is dat 1 en voor bus 102 is dat 2.
· slave_id: het slave id dat je in SlaveDefinitions hebt genoteerd.
Bijvoorbeeld: modbus.rtu.mb_uart1.3 (Bus 101, dus gebruiken we 1. Slave id = 3).
Verder bepaal je in MeasurementPaths welke modbus registers je wilt uitlezen.
- measurementPath: dit is de naam van het pad waar de data op wordt gezet.
- functionCode:
- 1: Read Coil Status
- 2: Read Input Status
- 3: Read Holding Register
- 4: Read Input Register
- 5: Force Single Coil
- 6: Preset Single Register
- 15: Force Multiple Coils
- 16: Preset Multiple Registers
- startAddress: vul hier het modbus adres in dat je wilt uitlezen.
- dataType:
- 1: Int16
- 2: Int32
- 3: Int64
- 11: UInt16
- 12: UInt32
- 13: UInt64
- 21: Float
- 22: Double
- 30: Bool
- minValue (optioneel): indien er een minimum value is ingevuld wordt deze niet doorgestuurd als de uitgelezen waarde onder deze waarde zit.
- maxValue (optioneel): indien er een maximum value is ingevuld wordt deze niet doorgestuurd als de uitgelezen waarde boven deze waarde zit.
- firstBit (optioneel): wanneer u van een register één of meerdere bits wilt uitlezen, vult u hier de eerste bit in.
- lastBit (optioneel): wanneer u van een register één of meerdere bits wilt uitlezen, vult u hier de laatste bit in.
Je wilt bit X uitlezen: “0000 0X00”. In dit geval gebruik je “FirstBit”: 2 en “LastBit”: 2.
Je wilt bits XX uitlezen: “XX00 0000”. In dit geval gebruik je “FirstBit”: 6 en “LastBit”: 7.
Kies als datatype voor Int16 (type 1 in de gateway settings).
Voorbeeld van een SlaveSettings blok:
"slaveSettings": [
{
"name": "modbus.rtu.mb_uart1.3",
"settings": {
"measurementPaths": [
{
"measurementPath": "voltage.uv",
"functionCode": 4,
"startAddress": 0,
"dataType": 1,
"factor": 1,
"minValue": 0,
"maxValue": 500
}
]
}
},
{
"name": "modbus.rtu.mb_uart1.4",
"settings": {
"measurementPaths": [
{
"measurementPath": "alarm_1,
"functionCode": 3,
"startAddress": 1,
"dataType": 1,
"factor": 1,
"minValue": 0,
"maxValue": 1,
"firstBit": 7,
"lastBit": 7
}
]
}
}
]
3
.
Voorbeeld van een complete settings definitie:
{
"slaveDefinitions": [
{
"name": "modbus.rtu",
"slaves": [
{
"address": 3,
"type": "generic-rtu",
"busdefinitiontype": 100,
"baudrate": 9600,
"bus": "101"
},
{
"address": 4,
"type": "generic-rtu",
"busdefinitiontype": 100,
"baudrate": 9600,
"bus": "101"
}
]
}
],
"slaveSettings": [
{
"name": "modbus.rtu.mb_uart1.3",
"settings": {
"measurementPaths": [
{
"measurementPath": "voltage.uv",
"functionCode": 4,
"startAddress": 0,
"dataType": 1,
"factor": 1,
"minValue": 0,
"maxValue": 500
}
]
}
},
{
"name": "modbus.rtu.mb_uart1.4",
"settings": {
"measurementPaths": [
{
"measurementPath": "alarm_1,
"functionCode": 3,
"startAddress": 1,
"dataType": 1,
"factor": 1,
"minValue": 0,
"maxValue": 1,
"firstBit": 7,
"lastBit": 7
}
]
}
}
]
}