CSCP — CloudScale Communication Protocol
CSCP-Befehlsreferenz für Neutron: Nachrichtenstruktur, Wägung, Konfiguration, Zählung, Kontrollwägung und digitale E/A.
NEUTRON · MITTEILUNGSPROTOKOLL
Neutron Modbus RTU/TCP-Referenz für SPS-, SCADA- und HMI-Integration: Verbindung, Adressierung, Register, Kalibrierung und automatische Kontrollwaagenregelung.
Fassung | Datum | Beschreibung der Änderung |
|---|---|---|
| Juni 2026 | Erste manuelle Version von Neutron Modbus. |
CloudScale Neutron NS und Neutron NT bieten eine Modbus-Schnittstelle zum Auslesen von Wägedaten, Statusinformationen, digitalen I/O und Kalibrierdaten sowie zum Ausführen ausgewählter Waagenbefehle. Die Schnittstelle ist für die Integration in SPS, SCADA, HMI, MES und individuelle Software vorgesehen.
Neutron unterstützt folgende Modbus-Transportvarianten:
Modbus RTU über die RS-232 oder RS-485 Schnittstelle. Die Standard-Modbus-Slave / Unit-ID ist 1.
Modbus TCP über Wi-Fi oder Ethernet. Der Standard-TCP-Port ist 502.
Die verfügbaren Funktionen und Registerbereiche sind die gleiche logische Schnittstelle für Modbus TCP und Modbus RTU, mit der Ausnahme, dass TCP nur dann einen Unit Identifier verwendet, wenn dies vom Client oder Gateway verlangt wird.
Wichtig: Kommunikationsparameter wie serielle Porteinstellungen und Netzwerkeinstellungen müssen in Neutron konfiguriert werden, bevor der Modbus-Master angeschlossen wird. Das Gerät verwendet die Modbus-Adresse, die durch den Parameter MBA konfiguriert wurde.
Modbus TCP ist über die Netzanbindung des Neutrons verfügbar. Verwenden Sie die dem Gerät zugewiesene IP-Adresse und den TCP-Port 502. Die TCP-Kommunikation erfordert keine serielle Leitungskonfiguration.
Um Modbus TCP zu verwenden, wählen Sie Modbus TCP unter den Waagen-Kommunikationsschnittstellen (Parameter SCI). Modbus TCP kann zusammen mit anderen Schnittstellen verwendet werden. Beispielsweise können Sie weiterhin RS-232 für die Kommunikation mit einem Computer über das CSCP-Protokoll nutzen.
Konfiguration | Ergebnis |
|---|---|
GGB = 10 | Aktiviert nur Modbus TCP. |
SCI = 5,10 | Ermöglicht die normale Waagenkommunikation über RS-232 zusammen mit Modbus TCP. |
SCI = 6,10 | Ermöglicht die normale Waagenkommunikation über RS-485 zusammen mit Modbus TCP. |
| Setzt Modbus Slave / Unit-Adresse. Standard: 1. |
TCP-Port | |
Wenn mehrere SCI-Werte angezeigt werden, konfigurieren Sie die Schnittstellen entsprechend der ausgewählten Neutronenkommunikationskonfiguration. Nachdem Sie Konfigurationsänderungen angewendet haben, starten Sie die Kommunikation oder das Gerät neu, wenn dies im Konfigurationsmenü erforderlich ist.
Position | Beispiel |
|---|---|
Modbus-Master | |
Transport | Ethernet oder Wi-Fi TCP/IP |
Zieladresse | Neutronen-IP-Adresse |
Service-Port | |
Einheitenkennung | MBZ-Wert; Standard 1 |
Für eine stabile Industrieinstallation wird Ethernet immer dann empfohlen, wenn ein drahtgebundenes Netzwerk verfügbar ist. Wi-Fi fügt netzwerkabhängige Latenz hinzu und sollte in der Anwendungsumgebung bewertet werden.
Modbus RTU kann über RS-232 oder RS-485 verwendet werden. Die seriellen Kommunikationseinstellungen des Modbus-Masters müssen mit den in Neutron konfigurierten seriellen Schnittstelleneinstellungen übereinstimmen. Die Modbus-Slave-ID wird von MBA eingestellt und ist standardmäßig auf 1.
Um Modbus RTU zu verwenden, müssen Sie entweder Modbus RS-232 oder Modbus RS-485 unter skaliertem Kommunikationsschnittstellen (Parameter SCI) auswählen.
Schnittstelle | Typisches Verdrahtungsprinzip | Wichtiger Hinweis |
|---|---|---|
RS-232 | Verbinden Sie TX, RX und GND zwischen Neutron und dem Modbus Master. TX / RX muss möglicherweise gekreuzt werden, je nachdem, ob die angeschlossenen Ports DTE oder DCE sind. | Verwenden Sie kurze Punkt-zu-Punkt-Verbindungen und eine gemeinsame Signalmasse. |
RS-485 | Verbinden Sie A mit A und B mit B entsprechend der von beiden Geräten verwendeten Terminalmarkierung; Verbinden Sie die Signalreferenz / GND, wenn dies von der Installation erforderlich ist. | Verwenden Sie eine Daisy-Chain-Topologie. Verwenden Sie keine Sternverdrahtung. Leitungsabschluss nur an den beiden physischen Enden anwenden, wo dies erforderlich ist. |
Befolgen Sie immer die Markierung des Neutronenanschlusses und das mit dem Gerät gelieferte Schaltbild. Hersteller kennzeichnen RS-485 Polarität nicht immer auf die gleiche Weise; wenn keine Kommunikation hergestellt wird, überprüfen Sie die A/B Polarität und die Master-Konfiguration.
Dieses Handbuch verwendet die herkömmliche Modbus-Referenznotation (z. B. 40101). Viele Modbus-Client-Tools verwenden Null-basierte Startadressen. In solchen Werkzeugen entfernen Sie die führende Registerbereichsziffer und subtrahieren 1 von der Referenzadresse.
Bezugsnummer | Nullbasierte Startadresse | Beispiel |
|---|---|---|
| | Bestandsregister 40001 |
| | Bestandsregister 40101 |
| | Bestandsregister 40232 |
| | Bestandsregister 40380 |
Bestätigen Sie die Adressierungskonvention des Modbus-Masters vor der Inbetriebnahme. Ein Offsetfehler eines Registers ist der häufigste Grund für falsche Dateninterpretation.
Brutto-, Netto- und Tarawerte sind signierte 32-Bit-Ganzzahlen, die in zwei aufeinanderfolgenden 16-Bit-Registern gespeichert sind.
Das hohe Wort wird zuerst übertragen (Big-Endian-Registerreihenfolge).
Die Dezimalposition wird im Ausgabe-/Statuskonfigurationsregister, Bits 14..13, gemeldet.
Hochauflösende Brutto- und Nettoregister 40109-40112 verwenden zwei zusätzliche Dezimalstellen, wenn der hochauflösende Wert verfügbar ist.
Beispiel: Wenn das Dezimalstellenfeld 2 Dezimalstellen anzeigt, stellt der signierte 32-Bit-Wert 12345 123,45 in der aktiven Einheit dar. Die Einheit steht im Register 40113 zur Verfügung und ist auch im Ausgabe-/Status-Konfigurationsregister codiert.
Funktion | Name | Verwendung in Neutronen |
|---|---|---|
| Lesen Sie Coils | Lesen Sie digitale Ausgabezustände (Coils 1..6 Karte zu DO1..DO6). |
| Lesen Sie Bestandsregister | Lesen Sie beschreibbare und befehlsbezogene Register. |
| Lesen Sie Input Registers | Lesen Sie Prozessdaten, Gewichte und Statusregister. |
| Schreibe Single Coil | Legen Sie einen digitalen Ausgang fest, bei dem die Ausgabefunktion deaktiviert ist. |
| Schreiben Single Register | Schreiben Sie ein Bestandsregister, einschließlich befehlsbezogener Felder. |
| Mehrere Spulen schreiben | Legen Sie mehrere digitale Ausgänge fest, bei denen Funktionen deaktiviert sind. |
| Mehrere Register schreiben | Schreiben Sie Befehl, Parameter und Kalibrierdaten als Block. |
Schreiboperationen in Ausgänge, die von einer konfigurierten Ausgabefunktion gesteuert werden, werden abgelehnt. Typische funktionsgesteuerte Ausgänge umfassen Toleranz- und Dosierausgänge.
Input/Holding-Bezug | Beschreibung | Datenart/Anmerkungen |
|---|---|---|
| Bruttogewicht | Unterzeichnet INT32, Big-Endian Register Order. |
| Nettogewicht | Unterzeichnet INT32, Big-Endian Register Order. |
| Waagenstatus | Bitfeld, siehe Abschnitt 6.3. |
| Befehlsstatus | Befehlsverarbeitungszustand. |
| Ausgabe-/Statuskonfiguration | Bitfeld: Ausgänge, Einheit und Dezimalposition. |
Die Hauptkarte ermöglicht es einfachen Mastern, Netto- oder Bruttogewichts- und Schlüsselstatusdaten mit einem kleinen zusammenhängenden Registerbereich zu erhalten.
Haltungsregister | Beschreibung | Datenart/Anmerkungen |
|---|---|---|
| Bruttogewicht | Unterzeichnet INT32. |
| Nettogewicht | Unterzeichnet INT32. |
| Leergewicht | Unterzeichnet INT32. |
| Waagenstatus | Bitfeld, siehe Abschnitt 6.3. |
| Ausgabe-/Statuskonfiguration | Bitfeld, siehe Abschnitt 6.3. |
| Hochauflösendes Brutto | Signiert INT32; zwei zusätzliche Dezimalstellen, sofern verfügbar. |
| Net High-Resolution | Signiert INT32; zwei zusätzliche Dezimalstellen, sofern verfügbar. |
| Einheit | 0 = g; 1 = kg; 2 = t; 3 = lb. |
| Digitale Eingabemaske | Bits 0..5 = DI1..DI6. |
| Digitale Ausgabemaske | Bits 0..5 = DO1..DO6. |
| Maske der Ausgabefunktion | Ein gesetztes Bit bedeutet, dass der zugehörige Ausgang funktionsgesteuert ist. |
| ADC-Punkte | Roh-ADC-Wert. |
| Millivolt | Wägezellensignal in mV. |
| Befehlsstatus | Befehlsverarbeitungszustand. |
| Kommando | Schreibe hier den Befehlscode. |
| Befehlsparameter 1 | Optionaler Parameter für den Befehl in 40232. |
Bit | Bedeutung (wenn Bitwert = 1) |
|---|---|
| Nettogewicht ist negativ. |
| Bruttogewicht ist negativ. |
| Das Gewicht ist stabil. |
| Unterlastzustand. |
| Überlastzustand. |
| Tare ist aktiv. |
| Preset / manuelles Tare ist aktiv. |
| Das Bruttogewicht ist Null. |
| Der Digitaleingang 1 ist aktiv. |
| Der Digitaleingang 2 ist aktiv. |
| Scale / ADC-Fehler ist aktiv. |
Bit(s) | Bedeutung |
|---|---|
| Status der digitalen Ausgabe: DO1..DO6. |
| Code der aktiven Einheit: 0 = g; 1 = kg; 2 = t; 3 = lb. |
| Waagen-/Wägezellenfehler. |
| Dezimalstellencode für Standardgewichtswerte. |
Verwenden Sie für Anwendungen, die alle Ausgabezustände erfordern, das Register 40115. Verwenden Sie das Register 40116, um zu bestimmen, welche Ausgänge derzeit von der aktiven Funktion reserviert sind.
Schreiben Sie einen Befehlscode in das Halteregister 40232. Schreiben Sie den optionalen Parameter auf 40233, bevor Sie den Befehl ausgeben. Der Befehlsstatus kann ab 40231 gelesen werden. Der Befehlscode 0 löscht den Wiederholungsschutz und ermöglicht die erneute Ausführung des gleichen Befehls.
Befehlscode | Parameter 40233 | Aktion |
|---|---|---|
| | Kein Befehl; Wiederholungswache zurücksetzen. |
| | Null nach Stabilitätsprüfung. |
| | Null sofort. |
| | Tara nach der Stabilitätsprüfung. |
| | Tare sofort. |
| | Leergewicht. |
| Ausgabebitmaske | Stellen Sie die digitalen Ausgänge entsprechend der Bitmaske ein. |
Shortcut: Das Schreiben des Befehlscodes in das Halteregister 40001 führt auch den Befehl aus. Für eine vorhersagbare Integration werden die erweiterten Befehlsregister 40232 und 40233 empfohlen, insbesondere wenn ein Parameter benötigt wird.
Spulen 1..6 entsprechen DO1..DO6.
Verwenden Sie die Funktionen 01, 05 und 15, um Spulen zu lesen oder zu schreiben.
Eine Ausgabe kann nur über Modbus geändert werden, wenn die Ausgabefunktion deaktiviert ist.
Wenn eine Ausgabe durch eine Toleranz-, Dosier- oder andere aktive Funktion gesteuert wird, weist das Gerät Modbus-Schreiben in diese Ausgabe zurück.
Beispiel: Um DO1 und DO3 mit dem Befehlscode 25 zu aktivieren, schreiben Sie eine Bitmaske von binär 000101 (Dezimalzahl 5) bis 40233 und schreiben Sie dann 25 bis 40232. Überprüfen Sie das Ergebnis durch das Register 40115 oder die Spulen 1..6.
Die Kalibrierung erfolgt über Register. Erfolgreiche Kalibrierdaten werden zum Flash-Speicher gespeichert. Wenn die Kalibrierung fehlschlägt, werden die geänderten Daten nicht gespeichert.
Betriebsnummer | Nullbasierter Start | Beschreibung |
|---|---|---|
| | Kalibrierstatusbitfeld. |
| | Skalierenkanal. |
| | Anzahl der für die Kalibriergewichte verwendeten Dezimalstellen. |
| | Anzahl der gültigen Kalibrierpunkte. |
| | Null ADC-Punkt, signiert INT32. |
Kalibrierstatusbit | Bedeutung |
|---|---|
| Nullpunkt existiert. |
| Der erste Kalibriergewichtspunkt existiert. |
| Scale hat die minimal gültige Kalibrierung. |
| Scale / ADC-Fehler ist aktiv. |
Punkt 1 beginnt bei 40310 (Null-basierter Start 309). Jeder Kalibrierpunkt verwendet acht Register. Das Startregister für Punkt N ist 40310 + ((N - 1) x 8).
Offset im Punktblock | Beschreibung |
|---|---|
| Gültig: 0 = ungültig; 1 = gültig. |
| Kalibriergewicht, signiert INT32. |
| ADC-Punkt, unterzeichnet INT32. |
| Faktor x100, signiert INT32. |
| Vorbehalten. |
Beispiele: Punkt 1 = 40310-40317; Punkt 2 = 40318-40325; Punkt 3 = 40326-40333; Punkt 8 = 40366-40373.
Betriebsnummer | Nullbasierter Start | Beschreibung |
|---|---|---|
| | Kommando. |
| | Nummer des Punktes. |
| | Kalibriergewicht, signiert INT32. |
| | Flaggen. |
| | Auslöser. |
| | Befehlsergebnis. |
| | Zuletzt ausgeführter Befehl. |
Kommando | Beschreibung |
|---|---|
| Null kalibrieren. |
| Gewichtspunkt kalibrieren. |
| Kalibrierpunkt löschen. |
| Nullpunkt streichen. |
| Löschen Sie alle Kalibrierungen. |
| Waage neu laden / initialisieren. |
Flagsregister 40384: Bit 0 steuert, ob Stabilität erforderlich ist. Ein Wert von 0 wird sofort ausgeführt; ein Wert von 1 erfordert einen stabilen ADC-Durchschnitt. Alle anderen Flagbits sind reserviert.
Ergebnis 40386 | Bedeutung |
|---|---|
| OK. |
| Falscher Befehl. |
| Schlechte Daten. |
| Nicht erlaubt. |
| Nicht unterstütztes Kommando. |
| Kalibrierung fehlgeschlagen. |
Die Firmware verarbeitet die Kalibrierung nur, wenn das Triggerregister 40385 auf einen Wert ungleich Null wechselt. Verwenden Sie für jeden Kalibrierbefehl die folgende Reihenfolge:
Schreibbefehl und alle erforderlichen Parameter.
Schreibe 40385 = 1, um die Operation auszuführen.
Warten Sie auf die Vollendung des Befehls und lesen Sie 40386.
Schreibe 40385 = 0, um den Trigger zurückzusetzen.
Schreiben Sie für den nächsten Befehl Parameter und ändern Sie 40385 erneut auf 1.
Kommando | Null kalibrieren |
|---|---|
Zweck | Schreiben Sie mehrere Register ab Null-basierte Adresse 379. |
Antworten | |
| Befehl: Kalibrieren Sie Null. |
| Punktnummer nicht verwendet. |
| Kalibriergewicht nicht verwendet. |
| Erfordern einen stabilen ADC-Durchschnitt. |
| Auslösebetrieb. |
Lesen Sie 40386 | Erwartetes Ergebnis: 0 (OK). |
Kommando | Kalibrierpunkt 1 mit 10.000 kg |
|---|---|
Zweck | Für 40302 = 3, skalieren Sie das Kalibriergewicht um 1000. |
Antworten | |
| Befehl: Gewichtspunkt kalibrieren. |
| Punkt Nummer 1. |
| 10.000 kg x 1000. |
| Erfordern einen stabilen ADC-Durchschnitt. |
| Auslösebetrieb. |
Lesen Sie 40386 | Erwartetes Ergebnis: 0 (OK). |
Kommando | Streichung von Nummer 1 |
|---|---|
Zweck | Entfernen Sie den ersten Kalibrierpunkt. |
Antworten | |
| Befehl: Kalibrierpunkt löschen. |
| Punkt Nummer 1. |
| Auslösebetrieb. |
Kommando | Alle Kalibrierungen löschen |
|---|---|
Zweck | Entfernen Sie alle gespeicherten Kalibrierdaten. |
Antworten | |
| Befehl: Löschen Sie alle Kalibrierungen. |
| Auslösebetrieb. |
Konfigurieren Sie SCI für die erforderliche Schnittstellenkombination und setzen Sie MBA auf die erforderliche Modbus Slave / Unit ID.
Bestätigen Sie für Modbus TCP die IP-Adresse und verbinden Sie sich mit dem TCP-Port 502. Für Modbus RTU, übereinstimmen serielle Parameter und überprüfen Sie die Verdrahtung.
Lesen Sie ein bekanntes Register wie 40113 (Einheit) oder 40107 (Waagenstatus), um die Adressierung zu prüfen.
Lesen Sie 40101-40106 und decodieren Sie die signierten 32-Bit-Brutto-, Netto- und Tarawerte mit der gemeldeten Dezimalposition.
Prüfen Sie Waagenstatus sowie digitale Ein- und Ausgänge, bevor Sie Steuerungsfunktionen aktivieren.
Verwenden Sie Befehlsregister und Kalibrierfunktionen erst, nachdem Sie sich vergewissert haben, dass der richtige Waagenkanal und der passende Anwendungszustand aktiv sind.
Symptom | Wahrscheinliche Ursache | Aktion |
|---|---|---|
Keine Modbus Antwort | Scale Communication Interface (SCI) ist nicht für die ausgewählte Schnittstelle konfiguriert; falsche IP/Port- oder serielle Einstellungen; falsche Verdrahtung. | Überprüfen Sie SCI, TCP-Port 502, MBA, Netzwerkerreichbarkeit, serielle Parameter und physische Verdrahtung. |
Werte erscheinen verschoben oder ungültig | Client verwendet eine falsche Referenz / Null-basierte Registerkonvertierung; 32-Bit-Wörter in falscher Reihenfolge dekodiert. | Überprüfen Sie die Client-Adressierungskonvention und verwenden Sie signierte INT32 mit Big-Endian-Registerbestellung. |
Gewicht hat falsche Dezimalposition | Client ignoriert die Dezimalpositionskonfiguration oder das hochauflösende Format. | Lesen Sie 40108 und wenden Sie die Bits 14..13 an; verwenden Sie nur bei Bedarf hochauflösende Register. |
Output kann nicht geschrieben werden | Die Ausgabe wird durch eine zugewiesene Funktion gesteuert. | Lesen Sie 40116 und deaktivieren Sie die entsprechende Ausgabefunktion, bevor Sie die Ausgabe über Modbus steuern. |
Derselbe Befehl wird nicht erneut ausgeführt | Der Repeat Guard wurde nicht zurückgesetzt. | Schreibe den Befehl 0 bis 40232 und gib den Befehl dann erneut aus. |
Kalibrierbefehl hat keine Wirkung | Der Trigger wechselte nicht zu Nicht-Null oder wurde nach einem vorherigen Befehl nicht zurückgesetzt. | Setzen Sie alle Parameter, ändern Sie 40385 auf 1, lesen Sie 40386, dann schreiben Sie 40385 zurück auf 0. |
Sicherheitshinweis: Kalibrierung, Nulleinstellung, Tarierung und Ausgabesteuerung können sich auf das Wägeergebnis und die angeschlossenen Maschinen auswirken. Anwendung der Zugriffskontrolle, Validierung von Befehlen in der Host-Anwendung und Sicherstellung, dass alle Operationen den geltenden messtechnischen und Maschinensicherheitsanforderungen entsprechen.
Dieses Kapitel beschreibt die grundlegende CHECKWEIGHER-Schnittstelle, Register Map Version 1. Es unterstützt den Leseprozessstatus und das letzte abgeschlossene Ergebnis, die Auswahl eines vorhandenen Rezepts, die Konfiguration von Autostart und START / STOP / STOP NOW / RESET. Rezeptbearbeitung, Filterkonfiguration, Anwendungsauswahl, E/A-Zuweisung und detailliertes Debug-Streaming sind nicht enthalten. Konfigurieren Sie diese mit der normalen Setup-Schnittstelle, bevor Sie diesen Block verwenden.
Die Karte ist auf Modbus TCP identisch und aktivierte Modbus RTU-Schnittstellen. Verwenden Sie einen steuernden Client / Master; zusätzliche Leser können die Daten überwachen. Es gibt eine gemeinsame Befehls-Mailbox für alle Transporte, nicht eine Mailbox pro Client. Verwenden Sie keine Broadcast-Anfragen für diese Schnittstelle. Lesen Sie vor dem Steuern den Block und bestätigen Sie die Gültigkeit von application=4 (CHECKWEIGHER), channel und snapshot.
Die folgenden Adressen sind Null-basierte PDU-Adressen. Für Clients mit 4xxxx Notation, Referenz = 40001 + Adresse: Adresse 400 ist 40401 und Adresse 480 ist 40481. Verwenden Sie die Funktion 03 (oder 04) zum Lesen. Schreiben Sie Befehle nur mit Funktion 16 (0x10), beginnend bei 480 und schreiben Sie genau acht Register. Funktion 06 und Teilschreiben werden abgelehnt. Ergebnis-/Status-Register sind schreibgeschützt. Die Lücke zwischen den Lese- und Schreibblöcken ist nicht lesbar.
Lesen Sie Adresse 400, Zählung 48, um Status, Befehlsbestätigung und das letzte Ergebnis in einer Anforderung zu erhalten. Alternativ lesen Sie 400/count 24 für den Status oder 424/count 24 für das Ergebnis. Alle 32-Bit-Werte verwenden zuerst das hohe Wort; jedes Register verwendet den Standard Modbus High-Byte-erste Ordnung. Teilen Sie einen 32-Bit-Wert nicht auf separate Anforderungen.
PDU/Referenz | Wörter | Name/Typ | Beschreibung |
|---|---|---|---|
| | MAP_VERSION / UINT16 | 1 für diese Karte. |
| | BOOT_ID/UINT32 | Nicht null zufällige Sitzungstoken, die beim Booten des Geräts generiert werden. Echo in jedem Schreiben; nicht über den Neustart beibehalten. Dies ist kein Sicherheitsnachweis. |
| | CHANAL/UINT16 | aktueller Wägekanal. |
| | ANWENDUNG / UINT16 | Muss 4 für die Kontrolle sein. |
| | STAAT / UINT16 | 0 IDLE; 1 START_CHECK; 2 RUN; 3 DRAINING; 4 PAUSED; 5 STOPPED; 6 ERROR; 7 CONS_LOST. |
| | ACTIVE_ID/UINT16 | Ausgewähltes Rezept; kann von der RESULT_ID des vorherigen Produkts abweichen. |
| | AUTOSTART / UINT16 | Persistent CWAUTO: 0 deaktiviert, 1 aktiviert. |
| | PROCESS_ERROR / UINT16 | Aktueller Blockierprozessfehler; 0 keine. |
| | BELT/UINT16 | Logische Gürtelanforderung, 0/1; keine Motorrückmeldung. |
| | CONS / INT16 | -1 (0xFFFF) nicht zugewiesen; 0 inaktiv; 1 aktiv. |
| | PQ/UINT16 | Ausstehende Produkte. |
| | EQ/UINT16 | Ausstehende/aktive Ausgabeereignisse. |
| | AUTO_STATE / UINT16 | Autostart-Ergebnis: siehe 10.5. |
| | AUTO_ERROR / UINT16 | Fehler des Boot-Autostarts; 0 keine. |
| | SNAPSHOT_VALID/UINT16 | 1 nutzbarer Snapshot; 0 nicht verfügbar. Überprüfen Sie auch die ANWENDUNG vor der Kontrolle. |
| | REQUEST_ID/UINT32 | Letzte akzeptierte Anfrage; ändert sich sofort bei der Annahme. |
| | ACK_ID/UINT32 | Die letzte abgeschlossene Anfrage. 0 bedeutet keine seit dem Booten. |
| | COMMAND_STATE / UINT16 | 0 IDLE; 1 BUSY; 2 DONE; 3 FEHLER. |
| | COMMAND_ERROR / UINT16 | Anwendungsfehler der abgeschlossenen Anfrage; siehe 10.4. |
| | APPLIED_MASK / UINT16 | Bit 0 Rezeptauswahl angewendet; Bit 1 Autostart angewendet. Kann ungleich Null sein, wenn START fehlschlägt. |
| | LAST_COMMAND / UINT16 | Befehlscode der letzten akzeptierten Anfrage. |
| | RESULT_SEQ / UINT32 | Sequenz des letzten fertigen Produkts; vergleichen Sie zusammen mit BOOT_ID. |
| | ERGEBNIS_ID/UINT16 | Rezept für dieses Ergebnis verwendet. |
| | RESULT_FLAGS / UINT16 | Bit 0 result existiert; Bit 1 Masse gültig/repräsentierbar; Bit 2 Grenzen darstellbar; Bit 3 numerischer Umwandlungsüberlauf/ungültig. |
| | BEGRIFFSBESTIMMUNGEN / UINT16 | Dezimalstellen für W, LO und HI dieses Ergebnisses. |
| | EINHEIT / UINT16 | 0 g; 1 kg; 2 t; 3 lb; 4 oz; 5 N; 65535 andere/unbekannt. Gehen Sie nicht von g für unbekannte Einheiten aus. |
| | W/INT32 | Nettomasse einschließlich Tara; durch 10^DECIMALS dividieren. Verwenden Sie nur, wenn RESULT_FLAGS bit 1 gesetzt ist. |
| | LO/INT32 | Untere Toleranzgrenze; nur mit Flags Bit 2 verwenden. |
| | HI/INT32 | Obere Toleranzgrenze; nur mit Flags Bit 2 verwenden. |
| | WS/UINT16 | Massenklassifizierung: 0 LOW; 1 OK; 2 HIGH; 3 FEHLER. |
| | LTS/UINT16 | Länge: 0 OK; 1 LÄNGE_LOW; 2 LÄNGE_HIGH; 3 DISABLED. |
| | ERGEBNIS / UINT16 | 0 LOW; 1 OK; 2 HIGH; 3 ERROR; 4 OVERLAP; 5 ABORTED; 6 ABORTED_CONS. |
| | PRODUKT_ERROR / UINT16 | Fehler dieses Produkts; getrennt von PROCESS_ERROR. |
| | NS/UINT16 | Akzeptierte Proben des letzten abgeschlossenen Ergebnisses vor dem Zuschneiden; nicht die aktuelle Produktprobe. |
| | TD/UINT32 | Nachweiszeit in Millisekunden seit dem Booten; Wraps nach ca. 49,7 Tagen. |
| | ET/UINT32 | Millisekunden vom Nachweis bis zum Ergebnis. |
| | LT/UINT32 | Produktsensor EIN Dauer in Millisekunden; 0 im Masse-Trigger-Modus. |
| | RESERVIERT / UINT16 | 0; Ignorieren für Version 1. |
Status und das letzte Ergebnis werden unter die Prozesssperre kopiert. Jede Antwort enthält einen konsistenten Snapshot; bei einer nachfolgenden Anfrage werden möglicherweise neuere Daten angezeigt. RESULT_SEQ, RESULT_ID, DECIMALS und UNIT gehören zum gespeicherten Ergebnis, nicht zum aktuell ausgewählten Rezept. Vor dem ersten Ergebnis ist Flags Bit 0 klar: Interpretieren Sie die Null-gefüllten Ergebnisfelder nicht als echtes Null-Gewichtsprodukt. Lesen verbraucht oder löscht niemals ein Ergebnis.
Beispiel: W high=0x0000, low=0x07D1 ergibt die vorzeichenbehaftete Ganzzahl 2001. Mit DECIMALS=1 und UNIT=0 beträgt die Masse 200.1 g. Negative Werte verwenden das 32-Bit-Zweierkomplement. Liegt die Konvertierung außerhalb des INT32-Bereichs oder ist der Waagenwert nicht darstellbar, wird das zugehörige Gültigkeitsbit gelöscht. Die zugehörigen numerischen Register sind null und Flagbit 3 wird gesetzt. Das ursprüngliche Produktergebnis bleibt unverändert.
Anschrift/Referenz | Name | Wert |
|---|---|---|
| | Nur 0 Einstellungen; 1 START; 2 STOP DRAIN; 3 STOP NOW; 4 RESET. |
| CHANGE_MASK | Bit 0: Wählen Sie RECIPE_ID. Bit 1: Set AUTOSTART. Andere Bits müssen 0 sein. |
| RECIPE_ID | 1–500, wenn das Maskenbit 0 gesetzt ist. Schreibe ansonsten 0. Rezept muss bereits vorhanden sein. |
| | 0 oder 1, wenn das Maskenbit 1 gesetzt ist. Schreibe ansonsten 0. |
| REQUEST_ID | |
| BOOT_ID | |
Für COMMAND 2, 3 oder 4 müssen CHANGE_MASK, RECIPE_ID und AUTOSTART alle 0 sein. Einstellungen können mit COMMAND 0 oder 1 kombiniert werden. Rezeptauswahl und Autostart-Änderungen erfordern einen gestoppten, entwässerten Prozess. START ohne Rezeptwechselbit startet das aktuell ausgewählte Rezept. Anwendungsauswahl und Rezepturerstellung bleiben außerhalb des Modbus-Bereichs.
Der vollständige Frame wird validiert, bevor er akzeptiert wird. Es treten keine partiellen Control-Block-Schreiben in Kraft. Eine normale function-16-Antwort bedeutet, dass die Anfrage in die Mailbox akzeptiert wurde, nicht dass START erfolgreich war. Die Ausführung erfolgt aus der vorhandenen Hauptschleife. Umfrage, bis ACK_ID der eingereichten ID entspricht und COMMAND_STATE DONE oder ERROR ist. BUSY kann zu kurz sein, um es zu beobachten; erfordern Sie es niemals, bevor Sie DONE akzeptieren.
Halten Sie eine Anfrage offen. Wenn die Schreibzeit abgelaufen ist, lesen Sie erneut BOOT_ID, REQUEST_ID und ACK_ID. Wenn das Boot-Token unverändert ist, übertragen Sie bei Bedarf genau die gleichen acht Wörter erneut. Eine Wiederholung der zuletzt angenommenen Anfrage mit identischen Daten wird quittiert, ohne sie erneut auszuführen, unabhängig davon, ob sie anhängig oder abgeschlossen ist. Die gleiche ID mit geänderten Daten, übersprungenen / alten IDs, einem anderen Boot-Token oder einer anderen Anforderung, während BUSY abgelehnt wird. Nach einem Neustart mit dem neuen Token und dem aktuellen Prozesszustand neu synchronisieren; Wiedergabe eines alten START nicht automatisch.
Nur die letzte Anforderung wird für die doppelte Erkennung beibehalten; es gibt kein persistentes Befehlsjournal. Ein Netzwerkneustart ohne Geräteneustart löscht das Postfach nicht. Dieses Protokoll geht von einer kontrollierenden SPS aus; es vermittelt keine konkurrierenden Autoren. Das Boot-Token und der Anforderungszähler verhindern versehentliche Wiederholungen und keinen unbefugten Zugriff.
Rezeptauswahl wird zuerst angewendet, Autostart als zweites und der Befehl zuletzt. Syntax, ID-Bereich und Rezeptgültigkeit werden vor dem Einstellen von Änderungen überprüft. Flash-Fehler können immer noch eine frühere Einstellung angewendet lassen. APPLIED_MASK meldet genau, welche angeforderten Einstellungen erfolgreich waren. Beispielsweise können Rezept 25 und AUTOSTART=1 gespeichert werden, während START abgelehnt wird, weil CONS inaktiv ist: COMMAND_STATE=ERROR, COMMAND_ERROR=11, APPLIED_MASK=3. Einstellungen werden nicht zurückgerollt. Lesen Sie ACTIVE_ID und AUTOSTART zurück, bevor Sie sich entscheiden, was Sie erneut versuchen möchten.
Die folgenden Fehlercodes gehören zu COMMAND_ERROR und dürfen nicht mit Prozess-/Produktfehlerfeldern verwechselt werden. Ein abgelehnter Transport-Level-Schreiben ändert weder das Postfach noch die ACK_ID. Illegale Adressen, schreibgeschützte Schreibvorgänge, partielle Schreibvorgänge und nicht unterstützte Blockbereiche geben Modbus-Ausnahme 02 zurück. Ein korrekt adressiertes Acht-Wort-Kontrollschreiben mit ungültigen Daten, Token, Sequenz oder Postfachzustand gibt Ausnahme 03 zurück.
Code | Bedeutung |
|---|---|
| Erfolg. |
| Ausgewähltes Rezept fehlt oder ist ungültig. |
| START weigerte sich: Gewicht außerhalb der erlaubten Reichweite. |
| Erforderlicher Speicher nicht verfügbar. |
| Configured CONS ist inaktiv. |
| Die Einheit der Rezeptur stimmt nicht mit der Waage überein. |
| Sensorkonfiguration/Zustand verhindert den Betrieb. |
| Falsche Anwendung, laufender Prozess, anstehende Störung oder eine konkurrierende Waagenoperation. |
| Ungültige Anfrage Argumente oder Messsystem nicht bereit. |
| Einstellungen / Datenbank lesen oder schreiben Fehler. |
STOP DRAIN nimmt keine neuen Produkte an und beendet die Bearbeitung bereits angenommener Produkte und ihrer Ausgabeereignisse. Die Bestätigung DONE bedeutet, dass der Stopp angefordert wurde; STATE=5 bestätigt dessen Abschluss. STOP NOW bricht offene Produkte und Ereignisse ab und deaktiviert die Prozessausgänge. Bei einer blockierenden Störung ersetzt STOP kein RESET. RESET prüft die Waage und die Voraussetzungen erneut und startet das Band nicht. Besteht die Ursache weiterhin, schlägt RESET fehl. Für alle Befehle gelten die üblichen Verriegelungen der Kontrollwaage. Ein Ergebnis ist ein Messergebnis und keine Bestätigung dafür, dass eine physische Ausschleusevorrichtung betätigt wurde.
AUTOSTART ist die persistente CWAUTO-Einstellung, standardmäßig 0. Das Aktivieren startet nicht sofort; Kombinieren mit COMMAND=1 für einen sofortigen START. Beim nächsten Gerätestart muss die Anwendung CHECKWEIGHER ausgewählt, initial zeroing aktiviert und erfolgreich und ein gültiges letztes aktives permanentes Rezept verfügbar sein. Es gelten weiterhin normale START-Checks. Ein fehlgeschlagener Boot-Versuch wird nicht wiederholt, wenn sich eine Eingabe später ändert. Manuelles STOP, PAUSE oder Fehler lösen keinen automatischen Neustart aus. Unveränderte Werte führen nicht dazu, dass weitere Einstellungen geschrieben werden.
AUTO_STATE: 0 DISABLED; 1 WAIT_ZERO; 2 ZERO_DISABLED; 3 ZERO_FAILED; 4 NO_PRODUCT; 5 STARTED; 6 START_FAILED; 7 CANCELLED; 8 INACTIVE; 9 INIT_FAILED. AUTO_ERROR ist der abgelehnte Boot-START-Code. Dies ist das Ergebnis des Bootversuchs; STATE und PROCESS_ERROR beschreiben den aktuellen Prozess.
Beispiel 1 — alles lesen: Funktion 03, PDU start=400, count=48 (Referenz 40401). Überprüfen Sie MAP_VERSION=1, APPLICATION=4 und SNAPSHOT_VALID=1. Speichern Sie BOOT_ID und ACK_ID. Es ist kein Befehl zum Lesen von Daten erforderlich.
Beispiel 2 — wählen sie rezept 25, aktivieren sie autostart und start in einem schreiben. Angenommen, BOOT_ID=0x12345678 und ACK_ID=0. Schreibfunktion 16, PDU start=480, count=8 mit Dezimalwörtern: [1, 3, 25, 1, 0, 1, 4660, 22136]. Die Boot-Wörter sind illustrativ: Kopieren Sie sie immer vom Gerät. Warten Sie auf ACK_ID=1 und COMMAND_STATE=2, dann überprüfen Sie STATE=2 (RUN). Wenn COMMAND_STATE=3 ist, prüfen Sie COMMAND_ERROR und APPLIED_MASK.
Beispiel 3 — STOP DRAIN. Unter der Annahme, dass der vorherige Antrag abgeschlossen ist, übermitteln Sie [2, 0, 0, 0, 0, 2, 4660, 22136]. Warten Sie auf ACK_ID=2. DONE bestätigt die Akzeptanz; weiterhin Polling bis STATE=5 (STOPPED). Ausstehende Produkte können während des DRAININGs immer noch Ergebnisse erzielen.
Beispiel 4 — nur das Rezept ändern, einmal gestoppt: [0, 1, 26, 0, 0, 3, 4660, 22136]. Dies lässt den Autostart unverändert und startet nicht. Beginnen Sie später mit [1, 0, 0, 0, 0, 4, 4660, 22136].
Beispiel 5 — einen korrigierten Fehler zurücksetzen: COMMAND=4 mit Maske/Rezept/Autostart=0, Next Request ID und aktueller BOOT_ID. Warten Sie auf eine erfolgreiche Bestätigung; geben Sie bei Bedarf einen separaten START aus. Senden Sie RESET nicht wiederholt, ohne den Fehler zu diagnostizieren.
Empfohlene zyklische SPS-Logik (strukturierter Text-Pseudocode; Modbus-Blocknamen an Ihre SPS anpassen):
ReadHoldingRegisters(Start := 400, Count := 48, Data := Rx);
BootId := JoinUInt32(Rx[1], Rx[2]);
AckId := JoinUInt32(Rx[18], Rx[19]);
IF BootId <> SavedBootId THEN
SavedBootId := BootId; HaveSeenResult := FALSE;
(* Resynchronise command handling; do not replay old START. *)
END_IF;
IF (Rx[15] = 1) AND ((Rx[27] AND 1) <> 0) THEN
Seq := JoinUInt32(Rx[24], Rx[25]);
IF NOT HaveSeenResult OR (Seq <> SavedSeq) THEN
SavedSeq := Seq; HaveSeenResult := TRUE;
IF ((Rx[27] AND 2) <> 0) AND (Rx[29] <> 65535) THEN
Mass := SignedInt32(Rx[30], Rx[31]) / Power10(Rx[28]);
END_IF;
Samples := Rx[40]; ProductResult := Rx[38];
(* Process this snapshot once, including invalid/rejected products. *)
END_IF;
END_IF;NS bezieht sich auf das letzte fertige Produkt und ist unverändert, bis ein neues Ergebnis eintrifft. Ein Last-Result-Registerblock ist keine Warteschlange: Wenn zwei Produkte zwischen den Umfragen enden, ist das Zwischenergebnis durch diese Grundkarte nicht abrufbar. SEQ-Änderungen überwachen und ein Umfrageintervall unterhalb des kürzesten Produktintervalls auswählen. Entscheiden Sie nach dem erneuten Verbinden, ob das erste verfügbare Ergebnis als wiederhergestellter Snapshot aufgezeichnet oder nur als Ausgangsbasis verwendet werden soll. Diese Schnittstelle garantiert nicht einen Audit-Trail für jedes Produkt.
Überprüfen Sie beide Adresskonventionen, Wortreihenfolge und bekannte positive / negative Massen; Lesen Sie alle 48 Wörter und beide 24-Wort-Unterblöcke.
Überprüfen Sie die No-Result-Flags vor dem ersten Produkt, dann ein OK, LOW und ein ungültiges Produkt; bestätigen Sie die Ergebnis-ID / den Aufenthalt der Einheit an das gespeicherte Ergebnis, nachdem sich die Rezeptauswahl geändert hat.
Wiederholen Sie ein identisches akzeptiertes Schreiben vor / nach Abschluss: Es muss einmal ausgeführt werden. Versuchen Sie eine geänderte Nutzlast mit der gleichen ID, einer übersprungenen ID, einem Teilschreiben und einem schreibgeschützten Schreiben: Jede muss abgelehnt werden, ohne die akzeptierten Einstellungen zu ändern.
Testen Sie START mit inaktivem CONS und prüfen Sie APPLIED_MASK; testen Sie STOP DRAIN bis STOPPED, STOP NOW, fault RESET und einen nachfolgenden START.
Trennen/Wiederverbinden und Neustarten des Geräts. Überprüfen Sie die Resynchronisierung der Anforderung und ob ein altes Boot-Token abgelehnt wurde. Testen Sie aktivierten/deaktivierten Autostart mit erfolgreicher und fehlgeschlagener anfänglicher Nullierung.
Wiederholen Sie die eigentliche SPS und beide konfigurierten TCP/RTU-Transporte. Bestätigen Sie, dass die zyklische Kommunikation das Wägen oder Ausgabe-Timing nicht verhindert.
Die Registertabellen verwenden einseitige 4xxxx-Referenzen. Für die Referenz 40101 ist die Null-basierte PDU-Adresse 100. Verwenden Sie die von Ihrem Modbus-Client geforderte Adressierungskonvention.
Hochauflösende Brutto- und Nettogewichte in Registern 40109-40112 verwenden, wenn verfügbar, zwei zusätzliche Dezimalstellen. Dekodieren Sie sie als signierte 32-Bit-Werte und berücksichtigen Sie die Dezimalpositionskonfiguration.
Nein. Es hält das letzte abgeschlossene Produktergebnis und bleibt unverändert, bis ein neues Ergebnis eintrifft. Überwachen Sie SEQ und wählen Sie ein Abfrageintervall, das kürzer ist als das kürzeste Produktintervall. Zwischenergebnisse können nicht aus dieser Basiskarte abgerufen werden.
Resynchronisieren Sie die Befehlsverarbeitung, wenn sich BOOT_ID ändert. Lesen Sie die aktuelle BOOT_ID und ACK_ID, wiederholen Sie keinen alten START und folgen Sie der in den SPS-Beispielen beschriebenen Befehlspostfachsequenz und -überprüfungen.
CSCP-Befehlsreferenz für Neutron: Nachrichtenstruktur, Wägung, Konfiguration, Zählung, Kontrollwägung und digitale E/A.
OPC UA-Integration für Neutron: sichere Verbindungen, Live-Wägedaten, stabile Erfassung und SPS/SCADA-Integration.
Benötigen Sie Hilfe bei Software, Konnektivität oder der Verwendung einer Lösung? Beschreiben Sie das Problem, damit wir beim nächsten Schritt helfen können.