Lesen des Modbus RS-485 in den Einstellungen Gateway Impulse C07W
1
.
Anforderungen
Um Einstellungen zu bearbeiten, brauchen Sie das Benutzerrecht "GatewaySettings" .
2
.
Verstehen der Einstellungen
Die Einstellungen werden vom System immer im JSON-Format verarbeitet, bevor sie an das Gateway gesendet werden.
Diese JSON-Einstellungen sind in 2 Teile unterteilt:
SlaveDefinitions
In "slaveDefinitions" legen Sie fest, was Sie auslesen wollen. Unter "Slave" gibt es eine Reihe von Einstellungen:
- Adress: dies ist die Slave-ID des Modbus-Slaves, den man auslesen möchte.
- type:um selbst zu wählen, welches Register gelesen werden soll, geben Sie hier ein "generic-rtu" ein.
- baud rate: die Übertragungsrate, ausgedrückt in Bits pro Sekunde. Stellen Sie die gleiche Baudrate wie beim Modbus-Slave ein.
- Bus: hier wird die RTU-Erweiterungskarte eingesteckt. Wenn sie sich auf Erweiterung 1 befindet, wählen Sie 102. Wenn sie sich auf Erweiterung 2 befindet, wählen Sie 101.
- serialconfig:verwende Sie diese Notation, um erweiterte serielle Kommunikationsparameter zu setzen, wie z.B. die
Anzahl der Datenbits, Stopbits und Paritätsbits, und welches Handshake-Protokoll verwendet werden soll.
Baudrate: die Übertragungsrate, ausgedrückt in Bits pro Sekunde.
Datenbits: die Anzahl der Bits, die pro Zeichen verwendet werden.
Für Parität, Stoppbits und handshake werden folgende ENUM-Werte verwendet:
Parität: - 0 (None): Keine Paritätsprüfung.
- 1 (Odd): Die Gesamtzahl der Datenbits ist immer eine ungerade Zahl.
- 2 (Even): Die Gesamtzahl der Datenbits ist immer eine gerade Zahl.
- 3 (Mark): Das Paritätsbit ist immer 1.
- 4 (Space): Das Paritätsbit ist immer 0.
Stop-Bits:
- 0 (One): Es wird ein Stoppbit verwendet.
- 1 (OnePointFive): Eineinhalb stoppbits werden verwendet.
- 2 (Zwei): Es werden zwei Stoppbits verwendet.
handshake:
- 0 (None): Es wird kein Handshake-Protokoll angewendet.
- 1 (RequestToSend/ClearToSend): RTS/CTS flow-control.
- 2 (XOn/XOff): Softwarebasierte flow-control.
Beispiel für einen SlaveDefinitions-Block:
"slaveDefinitions": [
{
"name": "modbus.rtu",
"slaves": [
{
"address": 3,
"type": "generic-rtu",
"busdefinitiontype": 100,
"baud rate": 9600,
"bus": "101"
},
{
"address": 4,
"type": "generic-rtu",
"busdefinitiontype": 100,
"bus": "101",
"serialconfig": {
"baud rate": 19200,
"parity": 0,
"stop bits": 2,
"handshake": 0,
"data bits": 8
}
}
]
}
]
SlaveSettings
Für jeden Slave, den Sie in SlaveDefinitions definiert haben, können Sie in SlaveSettings festlegen, welche Register tatsächlich ausgelesen werden sollen.
In SlaveSettings beginnt man zunächst mit der Definition des Namen, immer in folgendem Format:
modbus.rtu.mb_uart{bus_id}.{slave_id}
- bus_id: die letzte Ziffer des Busses, die Sie in den SlaveDefinitions notiert haben. Für Bus 101 ist sie 1 und für Bus 102 ist es die 2.
- slave_id: die Slave-ID, die Sie in SlaveDefinitions notiert haben.
Zum Beispiel: modbus.rtu.mb_uart1.3 (Bus 101, also verwenden wir 1. Slave id = 3).
Außerdem legen Sie in MeasurementPaths fest, welche Modbus-Register Sie auslesen wollen.
- measurementPath: dies ist der Name des Pfades, in dem die Daten gespeichert werden.
- 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
- StartAdresse:tragen Sie hier die Modbusadresse ein, die Sie auslesen möchten.
- dataType:
- 1: Int16
- 2: Int32
- 3: Int64
- 11: UInt16
- 12: UInt32
- 13: UInt64
- 21: Float
- 22: Double
- 30: Bool
- minValue (optional): wenn ein Mindestwert eingegeben wird, wird er nicht weitergeleitet, wenn der gelesene Wert unter diesem Wert liegt.
- maxValue (optional): Wenn ein maximaler wert angegeben wird, wird er nicht weitergeleitet, wenn der gelesene Wert über diesem Wert liegt.
- firstBit (optional): Wenn Sie ein oder mehrere Bits eines Registers lesen wollen geben Sie hier das erste Bit ein.
- lastBit (optional): Wenn Sie ein oder mehrere Bits eines Registers lesen wollen, geben Sie hier das letzte Bit ein.
Sie wollen Bit X lesen: "0000 0X00". In diesem Fall verwenden Sie "FirstBit": 2 und "LastBit": 2.
Sie wollen die Bits XX auslesen: "XX00 0000". In diesem Fall verwenden Sie "FirstBit": 6 und "LetztesBit": 7.
Wählen Sie als Datentyp Int16 (Typ 1 in den Gateway-Einstellungen).
Beispiel für einen SlaveSettings-Block:
"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
.
Beispiel für eine vollständige Einstellungsdefinition:
{
"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
}
]
}
}
]
}