7. Feldbusschnittstelle
7.1 Modbus-TCP
7.1.1 Allgemeine Informationen zum Betrieb mit Modbus-TCP
Der BactoSense kann über das Modbus-Transmission-Control-Protocol (TCP) betrieben werden. Es müssen folgende Voraussetzungen erfüllt sein:
- Der Computer und/oder das Verwaltungs-/Kontrollsystem muss zu Modbus-TCP kompatibel sein.
- Der Computer und/oder das Verwaltungs-/Kontrollsystem muss über Software verfügen, die vom BactoSense gelieferten Daten korrekt verarbeiten kann.
- Der Modbus-TCP-Dienst des BactoSense muss unter Startbildschirm → Einstellungen → Einstellungen → Systemdienste aktiviert sein.
- Der BactoSense muss mit dem Bussystem verbunden sein.
- Um mit Modbus-TCP arbeiten zu können, müssen die Netzwerkeinstellungen korrekt sein.
Zusätzliche Informationen
- Die Modbus-TCP-Schnittstelle ist standardmäßig in den BactoSense integriert.
- Der Ethernet-Port befindet sich auf der rechten Seite des Geräts.
- Die für die Programmierung erforderliche Adresstabelle kann separat unter Adressenliste auf Modbus-TCP gefunden werden.
- Alle Register sind Big-Endian-codiert.
- Die Modbus-TCP-Kommunikation läuft über den Port 502.
- Die Fehlercodeliste kann unter Unkritische Fehler bzw. unter Kritische Fehler gefunden werden.
- Modbus TCP kann zur Zeitsynchronisierung verwendet werden. Folgen Sie den Anweisungen unter NTP-Server einstellen und wählen Sie Modbus-TCP als Synchronisierungsquelle.
7.1.2 Adressenliste auf Modbus-TCP:
Die folgenden Werte können mit Modbus-Funktion 3 oder 4 gelesen und mit Modbus- Funktion 16 geschrieben werden.
REGISTERNR. | ADRESSE (OFFSET) | DATENTYP | FUNKTION | WERTE |
|---|---|---|---|---|
300201 400201 | 0x00C8 | Vorzeichenlose Integer-Bits 0-15 | Digitale Eingänge. Wird ignoriert, wenn auf der Einstellungsseite der digitalen Eingänge nicht „Modbus TCP“ als Quelle ausgewählt ist. | Bit 0: Eingang 1; Bit 1: Eingang 2; Bit 2: Eingang 3; Bit 3: Eingang 4. Die korrekte Zuordnung der Bits zu den Eingängen ist unter Konfiguration digitaler Eingänge und PLC-Modus, insbesondere in Tabelle 6-2 und Abbildung 6-5, beschrieben. Eingang 1111 = 15 bedeutet Abbruch. |
300202 400202 | 0x00C9 | Vorzeichenlose Integer-Bits 0-15 | Betriebssteuerung | Bit 0: Ausschalten; Bit 1: Neustart |
300203 400203 | 0x00CA | Uint16 | Watchdog | Schreiben Sie den Sollwert in Sekunden, um den Countdown zu aktivieren oder zurückzusetzen. Nach dem Schreiben wird der Wert jede Sekunde um 1 verringert. Während des Countdowns liefert ein Lesezugriff auf das Register den Sollwert zurück. Erreicht der Countdown 0, werden laufende Protokolle abgebrochen. Ein Lesezugriff liefert dann 0 zurück. Schreiben Sie 0, um den Countdown zu deaktivieren. |
300204 400204 | 0x00CB | Uint16 | Testregister | Schreiben Sie 1, um auf der Seite zur DI-Quelle der Benutzeroberfläche eine Meldung anzuzeigen. Wird beim Start auf 0 zurückgesetzt. |
300211 400211 | 0x00D2 | UInt16: Jahr | Datum und Uhrzeit lesen/setzen. Die Zeit wird geändert, sobald der Schreibvorgang abgeschlossen ist. Nur die Felder mit beschriebenen Registern werden geändert: Wird nur der Monat geschrieben, wird nur der Monat aktualisiert. | [0,9999] |
300212 400212 | 0x00D3 | UInt16: Monat | [1,12] | |
300213 400213 | 0x00D4 | UInt16: Tag | [0,31] | |
300214 400214 | 0x00D5 | UInt16: Stunde | [0,24] | |
300215 400215 | 0x00D6 | UInt16: Minute | [0,59] | |
300216 400216 | 0x00D7 | UInt16: Sekunde | [0,59] | |
Die folgenden Werte können mit Modbus-Funktion 3 oder 4 gelesen werden. | ||||
300001 400001 | 0x0000 | UInt16 (einzelne Bits) | Digitale Ausgänge | Bit 0: Ausgang 1; Bit 1: Ausgang 2; Bit 2: Ausgang 3; Bit 3: Ausgang 4. Die korrekte Zuordnung der Bits zu den Ausgängen ist unter Konfiguration der digitalen Ausgänge beschrieben. Alternativ verwenden Sie die unter Testen der digitalen und analogen Ausgänge beschriebene Testoberfläche für die Ausgänge. |
300002 400002 | 0x0001 | UInt16 (einzelne Bits) | Gerätestatus: 0 = Nein, 1 = Ja | Bit 0: Prozess läuft; Bit 1: Kritischer Fehler; Bit 2: Unkritischer Fehler; Bit 3: PLC-Modus aktiv; Bit 4: Schnellheizung (im Wintermodus); Bit 5: Hintergrundheizung (Wintermodus); Bit 6: Probenahmegerät in Verwendung |
300003 400003 | 0x0002 | UInt16 (einzelne Bits) | Alarmstatus, d. h. während der letzten Messung ausgelöste Alarme. | Bit 0: Alarm 1; Bit 1: Alarm 2; Bit 2: Alarm 3 … |
300004 400004 | 0x0003 | UInt32 MSB (einzelne Bits) | Warnungsstatus, d. h. während der letzten Messung aufgetretene Warnungen. | Bit 0: Warnung W01; Bit 1: Warnung W02 ... Bit 31: Warnung W32 |
300005 400005 | 0x0004 | UInt32 LSB (einzelne Bits) | ||
300006 400006 | 0x0005 | UInt16 | Fehlercode | Siehe Fehlercodeliste. Hinweis: E00 (unbehandelter Softwarefehler) wird als 999 ausgegeben, um Verwechslungen mit „kein Fehler“ zu vermeiden. Unkritische Fehlercodes bleiben bestehen, bis sie durch ein erfolgreiches Protokoll automatisch oder manuell gelöscht werden. |
300007 400007 | 0x0006 | UInt16 | Heartbeat | Sekunden der Uhr. Der Wert ändert sich jede Sekunde. Verwenden Sie ihn, um das Antwortverhalten des Systems zu überwachen. |
300008 400008 | 0x0007 | UInt16 | Messphase | BEREIT 0; INITIALISIEREN 1; HEIZEN 2; BEFÜLLEN 3; ANSAUGEN 4; MISCHEN 5; INKUBIEREN 6; ANALYSIEREN 7; REINIGEN 8; SPÜLEN 9; VERARBEITEN 10; VALIDIEREN 11; BEWEGEN 12; AUSWERFEN 13; EXPORTIEREN 14; UMBENENNEN 15; LÖSCHEN 16; SPEICHERN 17; SELBSTTEST 18; ABGEBROCHEN 19; UNBEKANNT 98; FEHLER 99 |
300011 400011 | 0x000A | UInt16 | Messfortschritt | [0, 100] 0 .. 100 % |
300012 400012 | 0x000B | Float 32 MSB | Temperatur der I/O-Platine | Celsius |
300013 400013 | 0x000C | Float 32 LSB | ||
300014 400014 | 0x000D | UInt16 | Feuchtigkeit an der I/O-Platine | [0, 100] 0 .. 100 % |
300015 400015 | 0x000E | UInt16: Jahr | Datum und Uhrzeit der letzten Probenahme | |
300016 400016 | 0x000F | UInt16: Monat | ||
300017 400017 | 0x0010 | UInt16: Tag | ||
300018 400018 | 0x0011 | UInt16: Stunde | ||
300019 400019 | 0x0012 | UInt16: Minute | ||
300020 400020 | 0x0013 | UInt16: Sekunde | ||
300021 400021 | 0x0014 | UInt16 | Kartuschenfüllstand in Prozent | [0, 100] 0 .. 100 % |
300022 400022 | 0x0015 | UInt32 MSB | Seriennummer der Kartusche | |
300023 400023 | 0x0016 | UInt32 LSB | ||
300024 400024 | 0x0017 | UInt32 MSB | Seriennummer der Befüllung | |
300025 400025 | 0x0018 | UInt32 LSB | ||
300026 400026 | 0x0019 | Uint16 | Kartuschentyp | 1 = TCC 1002 = ICC 1030 = ACC |
300027 400027 | 0x001A | UInt16: Jahr | Ablaufdatum der Kartusche | UTC-Datum |
300028 400028 | 0x001B | UInt16: Monat | ||
300029 400029 | 0x001c | UInt16: Tag | ||
300031 400031 | 0x001E | UInt32 MSB | Seriennummer des Geräts | |
300032 400032 | 0x001F | UInt32 LSB | ||
300033 400033 | 0x0020 | String-Zeichen 1-2 | Softwareversion | Bei weniger als 16 Zeichen wird der String mit Nullzeichen aufgefüllt. Beispiel: '1.4.0-BS\0\0\0\0...' |
300034 400034 | 0x0021 | String-Zeichen 3-4 | ||
300035 400035 | 0x0022 | String-Zeichen 5-6 | ||
300036 400036 | 0x0023 | String-Zeichen 7-8 | ||
300037 400037 | 0x0024 | String-Zeichen 9-10 | ||
300038 400038 | 0x0025 | String-Zeichen 11-12 | ||
300039 400039 | 0x0026 | String-Zeichen 13-14 | ||
300040 400040 | 0x0027 | String-Zeichen 15-16 | ||
300041 400041 | 0x0028 | UInt16 | Verbleibender Speicherplatz | Ungefähre Anzahl weiterer Messungen, bis der Datenträger voll ist |
300042 400042 | 0x0029 | UInt16 | Verbleibende Ventillebensdauer | [0, 100], Prozentsatz der bis zur Wartung verbleibenden Bewegungen. |
300043 400043 | 0x002A | UInt16 | Verbleibende Kolbenlebensdauer | [0, 100], Prozentsatz der bis zur Wartung verbleibenden Bewegungen. |
300044 400044 | 0x002B | UInt16: Jahr | Nächster Wartungstermin | UTC-Datum |
300045 400045 | 0x002C | UInt16: Monat | ||
300046 400046 | 0x002D | UInt16: Tag | ||
300101 400101 | 0x0064 | UInt32 MSB | TCC | Wird nach einem Reinigungsprotokoll oder beim Neustart auf null zurückgesetzt. |
300102 400102 | 0x0065 | UInt32 LSB | ||
300103 400103 | 0x0066 | UInt32 MSB | ICC | Immer 0, wenn die Kartusche keinen ICC-Wert liefert. |
300104 400104 | 0x0067 | UInt32 LSB | ||
300105 400105 | 0x0068 | UInt32 MSB | Gate+ | Immer 0, wenn die Kartusche keinen Gate+-Wert liefert. |
300106 400106 | 0x0069 | UInt32 LSB | ||
300107 400107 | 0x006A | UInt32 MSB | HNAC | |
300108 400108 | 0x006B | UInt32 LSB | ||
300109 400109 | 0x006C | UInt32 MSB | LNAC | |
300110 400110 | 0x006D | UInt32 LSB | ||
300111 400111 | 0x006E | Float 32 MSB | HNAP | |
300112 400112 | 0x006F | Float 32 LSB | ||
300113 400113 | 0x0070 | UInt32 MSB | ACC | Immer 0, wenn keine ACC-Kartusche verwendet wird. |
300114 400114 | 0x0071 | UInt32 LSB | ||
300115 400115 | 0x0072 | UInt32 MSB | HACC | Immer 0, wenn keine ACC-Kartusche verwendet wird. |
300116 400116 | 0x0073 | UInt32 LSB | ||
300117 400117 | 0x0074 | UInt32 MSB | LACC | Immer 0, wenn keine ACC-Kartusche verwendet wird. |
300118 400118 | 0x0075 | UInt32 LSB | ||
300119 400119 | 0x0076 | Float 32 MSB | HACP | Immer 0, wenn keine ACC-Kartusche verwendet wird. |
300120 400120 | 0x0077 | Float 32 LSB | ||
300121 400121 | 0x0078 | UInt32 MSB | Live-TCC | Wie TCC, der Wert wird jedoch während einer Messung in Echtzeit aktualisiert. Wird am Ende der Messung auf null zurückgesetzt. |
300122 400122 | 0x0079 | UInt32 LSB | ||
300123 400123 | 0x007A | UInt32 MSB | Live-ICC | siehe oben. |
300124 400124 | 0x007B | UInt32 LSB | ||
300125 400125 | 0x007C | UInt32 MSB | Live-Gate+ | siehe oben. |
300126 400126 | 0x007D | UInt32 LSB | ||
300127 400127 | 0x007E | UInt32 MSB | Live-HNAC | siehe oben. |
300128 400128 | 0x007F | UInt32 LSB | ||
300129 400129 | 0x0080 | UInt32 MSB | Live-LNAC | siehe oben. |
300130 400130 | 0x0081 | UInt32 LSB | ||
300131 400131 | 0x0082 | Float 32 MSB | Live-HNAP | siehe oben. |
300132 400132 | 0x0083 | Float 32 LSB | ||
300135 400135 | 0x0086 | UInt32 MSB | Live-ACC | siehe oben. |
300136 400136 | 0x0087 | UInt32 LSB | ||
300137 400137 | 0x0088 | UInt32 MSB | Live-HACC | siehe oben. |
300138 400138 | 0x0089 | UInt32 LSB | ||
300139 400139 | 0x008A | UInt32 MSB | Live-LACC | siehe oben. |
300140 400140 | 0x008B | UInt32 LSB | ||
300141 400141 | 0x008C | Float 32 MSB | Live-HACP | siehe oben. |
300142 400142 | 0x008D | Float 32 LSB | ||
300151 400151 | 0x0096 | UInt16: Jahr | Datum und Uhrzeit des letzten abrupten Ausschaltens. | |
300152 400152 | 0x0097 | UInt16: Monat | ||
300153 400153 | 0x0098 | UInt16: Tag | ||
300154 400154 | 0x0099 | UInt16: Stunde | ||
300155 400155 | 0x009A | UInt16: Minute | ||
300156 400156 | 0x009B | UInt16: Sekunde | ||
300157 400157 | 0x009C | UInt16 | Ausschaltzeit | In Sekunden |
300165 400165 | 0x00A4 | UInt16: Jahr | Datum und Uhrzeit des letzten Protokollstarts. | |
300166 400166 | 0x00A5 | UInt16: Monat | ||
300167 400167 | 0x00A6 | UInt16: Tag | ||
300168 400168 | 0x00A7 | UInt16: Stunde | ||
300169 400169 | 0x00A8 | UInt16: Minute | ||
300170 400170 | 0x00A9 | UInt16: Sekunde | ||
300171 400171 | 0x00AA | UInt16 | Aktuelle Messleitung des BactoSwitch | Von 1 bis 4 |
300172 400172 | 0x00AB | UInt16 | Nächste Messleitung des BactoSwitch | Von 1 bis 4 |
300173 400173 | 0x00AC | UInt16 | Durchfluss des BactoSwitch | mL/min |
300174 400174 | 0x00AD | UInt16 | BactoSwitch-Status | 0 bedeutet kein Fehler. |
300175 400175 | 0x00AE | UInt16 | BactoSwitch-Verbindung | 0 = nicht verbunden, 1 = erfolgreich verbunden |
300176 400176 | 0x00AF | UInt16 | Ventilzustand des BactoSwitch | Bitmaske: 0x01 = Ventil von Leitung 1 usw.; Integer 15 = alle offen |