NT18B07 Modbus-Registermap und Arduino-Tutorial: 7-Kanal-RS485-NTC-Temperaturoberwachung

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:

  1. Bestätigen Sie die Slave-Adresse und die Baudrate.

  2. Überprüfen Sie die RS485-A/B-Verkabelung und die Transceiver-Richtungskontrolle.

  3. Prüfen Sie, ob der Master die korrekte Halterregisterfunktion verwendet.

  4. Bestätigen Sie, ob die Software nullbasierte oder einbasierte Registeradressen erwartet.

  5. Wenden Sie die korrekte Vorzeichenwertkonvertierung und Temperaturskalierung an.

  6. Untersuchen Sie die Sensorverbindungen, wenn ein Sensorfehlerwert zurückgegeben wird.

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

Zurück zum Blog

Hinterlasse einen Kommentar