NT18B07 Modbus-Registermap und Arduino-Tutorial: 7-Kanal-RS485-NTC-Temperaturoberwachung
Teilen
NT18B07 Modbus-Registerkarte und Arduino-Tutorial: 7-Kanal-RS485-NTC-Temperaturüberwachung
Einführung
Sie suchen ein RS485-Temperaturerfassungsmodul, das mit Arduino, SPS oder anderen Modbus-RTU-Controllern kommunizieren kann?
Das Eletechsup NT18B07 ist ein 7-Kanal-NTC-Temperaturerfassungsmodul, das entwickelt wurde, um Temperaturmessungen zu erfassen und die Ergebnisse über eine RS485-Schnittstelle mittels Modbus RTU zu übertragen.
Für Entwickler, die industrielle Überwachungsgeräte, Umwelt-Datenlogger oder mehrpunktige Temperaturmesssysteme bauen, ist das Verständnis der Modbus-Registerkarte ein wesentlicher erster Schritt.
Dieser Leitfaden stellt die Kommunikations-Einstellungen des NT18B07, die Temperaturregister, die Datenkonvertierung und einen grundlegenden Ansatz zur Arduino-Integration vor.
1. NT18B07 Modbus-RTU-Kommunikationsparameter
Das Modul verwendet Modbus RTU über RS485. Seine dokumentierten Standard-Kommunikationsparameter sind:
| Parameter | Standardeinstellung |
|---|---|
| Kommunikationsschnittstelle | RS485 |
| Protokoll | Modbus RTU |
| Slave-Adresse | 1 |
| Baudrate | 9600 bps |
| Datenbits | 8 |
| Parität | Keine |
| Stoppbits | 1 |
| Temperaturkanäle | 7 |
| Temperaturregistereinheit | 0,1°C |
| Versorgungsspannung | DC 6–24V |
Diese Einstellungen bieten einen Ausgangspunkt für die Kommunikation mit kompatiblen Modbus-Master-Geräten. Bestätigen Sie die tatsächliche Hardware-Revision und das zugehörige Handbuch, bevor Sie ein System in Betrieb nehmen.
2. NT18B07 Temperaturregisterkarte
Die sieben Temperaturkanäle sind über aufeinanderfolgende Halterregister verfügbar.
| Kanal | Registeradresse | Temperatureinheit |
|---|---|---|
| CH1 | 0x0000 | 0,1°C |
| CH2 | 0x0001 | 0,1°C |
| CH3 | 0x0002 | 0,1°C |
| CH4 | 0x0003 | 0,1°C |
| CH5 | 0x0004 | 0,1°C |
| CH6 | 0x0005 | 0,1°C |
| CH7 | 0x0006 | 0,1°C |
Jeder Temperaturmesswert belegt ein 16-Bit-Register.
Beispielsweise entspricht ein Rohwert des Registers 253 dem Wert 25,3°C. Negative Temperaturen müssen als Vorzeichen-16-Bit-Werte dekodiert werden. Ein gemeldeter Sensorfehlerwert muss ebenfalls separat behandelt und nicht als tatsächliche Temperatur angezeigt werden.
Einige Modbus-Software verwendet einbasierte Registerreferenzen anstelle von hexadezimalen Offsets, die bei Null beginnen. Überprüfen Sie die Adressierungskonvention Ihrer Master-Software bei der Konfiguration der Registerkarte.
3. NT18B07 mit Arduino auslesen
Ein Arduino kann über einen kompatiblen RS485-Transceiver, wie z. B. eine geeignete Schnittstelle auf MAX485-Basis, und eine Modbus-RTU-Bibliothek mit dem NT18B07 kommunizieren.
Die allgemeine Anschlussanordnung ist:
-
NT18B07 RS485 A und B → RS485-Transceiver A und B
-
Transceiver RO → Arduino RX
-
Arduino TX → Transceiver DI
-
Transceiver DE und RE → ein geeigneter Arduino-Richtungskontroll-Pin
-
NT18B07-Stromeingang → eine geregelte Gleichstromversorgung innerhalb des angegebenen Spannungsbereichs
-
Arduino- und Transceiver-Logik-Masse → je nach Schnittstellendesign verbunden
Überprüfen Sie die Spannungsfähigkeit und die Verdrahtungsanforderungen des Transceivers, bevor Sie den Stromkreis einschalten.
Beispiel-Arduino-Code
Das folgende Beispiel verwendet die weitverbreitete ModbusMaster-Bibliothek und SoftwareSerial. Es veranschaulicht das Auslesen von sieben aufeinanderfolgenden Halterregistern mit der Standard-Slave-Adresse.
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#define RS485_DIR 4
SoftwareSerial rs485(2, 3); // RX, TX
ModbusMaster node;
void preTransmission() {
digitalWrite(RS485_DIR, HIGH);
}
void postTransmission() {
digitalWrite(RS485_DIR, LOW);
}
void setup() {
pinMode(RS485_DIR, OUTPUT);
digitalWrite(RS485_DIR, LOW);
Serial.begin(9600);
rs485.begin(9600);
node.begin(1, rs485);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
uint8_t result = node.readHoldingRegisters(0x0000, 7);
if (result == node.ku8MBSuccess) {
for (uint8_t i = 0; i < 7; i++) {
uint16_t raw = node.getResponseBuffer(i);
// Prüfen Sie zuerst den dokumentierten Sensorfehlercode.
if (raw == 0xF555) {
Serial.print("CH");
Serial.print(i + 1);
Serial.println(": Sensor error");
continue;
}
int16_t signedRaw = (int16_t)raw;
float temperatureC = signedRaw / 10.0f;
Serial.print("CH");
Serial.print(i + 1);
Serial.print(": ");
Serial.print(temperatureC, 1);
Serial.println(" C");
}
} else {
Serial.print("Modbus error: 0x");
Serial.println(result, HEX);
}
delay(2000);
}
Wichtig: Dies ist ein Integrationsbeispiel und keine Garantie für den Betrieb auf jedem Arduino-Board oder RS485-Adapter. Überprüfen Sie die Fehlerwertkonvention, die Registerkarte und das Sensorverhalten des Moduls anhand des entsprechenden Handbuchs. Die RS485-Richtungskontrolllogik und die serielle Implementierung müssen möglicherweise auch für Ihre Hardware angepasst werden.
4. Weitere Integrationsmöglichkeiten
Das NT18B07 kann für verschiedene Arten von Anwendungen in Betracht gezogen werden, die eine mehrpunktige Temperaturerfassung erfordern.
Arduino und DIY-Elektronik: Bauen Sie Prototypen zur Temperaturüberwachung, Datenlogger und eingebettete Steuerungssysteme.
SPS und industrielle Automatisierung: Lesen Sie Temperaturregister über eine kompatible Modbus-RTU-Master-Schnittstelle aus.
Home Assistant und IoT-Gateways: Leiten Sie die erfassten Messwerte über eine geeignete RS485-Schnittstelle und Softwarekonfiguration an eine kompatible Automatisierungsplattform weiter.
Umweltüberwachung: Erfassen Sie Messwerte von mehreren NTC-Sonden, die an verschiedenen Messpunkten installiert sind.
Das Modul stellt die Schnittstelle zur Temperaturerfassung bereit; Visualisierung, Datenspeicherung, Warnmeldungen und Steuerlogik werden vom Host-System implementiert.
5. Behebung gängiger Modbus-Probleme
Wenn das NT18B07 keine gültigen Messwerte zurückgibt, überprüfen Sie folgende Punkte:
-
Bestätigen Sie die Slave-Adresse und die Baudrate.
-
Überprüfen Sie die RS485-A/B-Verkabelung und die Transceiver-Richtungskontrolle.
-
Prüfen Sie, ob der Master die korrekte Halterregisterfunktion verwendet.
-
Bestätigen Sie, ob die Software nullbasierte oder einbasierte Registeradressen erwartet.
-
Wenden Sie die korrekte Vorzeichenwertkonvertierung und Temperaturskalierung an.
-
Untersuchen Sie die Sensorverbindungen, wenn ein Sensorfehlerwert zurückgegeben wird.
-
Überprüfen Sie gegebenenfalls Erdung, Kabelqualität, Terminierung und Vorspannung.
Es ist oft hilfreich, zunächst ein Register zu testen und dann auf alle sieben Kanäle auszuweiten, um Konfigurationsprobleme einzugrenzen.
Fazit
Das Eletechsup NT18B07 bietet eine praktische Lösung für Entwickler, die eine 7-Kanal-NTC-Temperaturerfassung über RS485 mittels Modbus RTU benötigen.
Durch das Verständnis seiner Registerkarte und Kommunikationsparameter können Ingenieure die Integration mit Arduino, SPS, industriellen Gateways und kompatiblen Überwachungsplattformen bewerten.
Für Produktspezifikationen und weitere Informationen besuchen Sie Eletechsup.
Technische Referenz: lamaPLC NT18B07 Dokumentation