S7-1211C <-> Modbus TCP <-> M258

AndiReas

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe SPSler-Gemeinde,

erst einmal eine Grundsätzliche Frage. Kann man über Modbus TCP Bit-Variablen Bitweise übertragen? Ich meine Ja. Bekomme es aber einfach nicht zustande.
Hier mal die Relevanten Screenshots:
Anhang anzeigen 53157Anhang anzeigen 53158Anhang anzeigen 53159
Jetzt mal zur Umgebung:
Ich muss Variablen Bit-Befehle und Real Messwerte von einem PN/PN-Koppler über die 1200er zur M258 von Schneider Electric hin und her senden.
Die 1200er dient mir als Übersetzter von PN zu Modbus. Die Messwerte kann ich mittlerweile zuverlässig übertragen. Danach sollte eigentlich ein Bit als Bestätigung weiter geleitet werden.
Für eine Bit Übertragung sollte es doch reichen, wenn ich dem FB unter MODE sage "schreibe"(1) und ihm dann unter DATA_ADDR eine Ein~ bzw. Zweistellige Adresse zuweise.
Er baut dann auch eine Verbindung auf wechselt aber im STATUS immer zwischen 16#7005(gesendet) und 16#7006(empfangen) und sporadisch mischt sich noch eine 16#8381(Funktionscode wird nicht unterstützt) rein.
Schreibe ich allerdings die Bits in ein WORD, kann ich diese übertragen. Dies will ich aber vermeiden, da es nicht in meinen Ablauf passt.
Ich habe das Forum und auch das von Siemens durchforscht aber keine Info gefunden die mir hierbei geholfen hätte.
So langsam bezweifle ich, das es möglich ist einzelne Bits über Modbus zu übertragen. Daher auch meine anfängliche Frage.
Als Remote-Adresse habe ich die 43, 3, 1 oder 10043(ich weiß ist nur zum lesen) verwendet aber immer das selbe Bild.
Mit der UNIT_ID habe ich auch experimentiert, ohne Erfolg.

Sollte es möglich sein ein Bit zu übertragen, wäre ich um entsprechende Hilfe dankbar, sonst muss ich den Umweg über ein WORD gehen.

Vielen Dank im Voraus.

MfG

Andi

Edit: Bild neu angehängt
 

Anhänge

  • SCLCode.jpg
    SCLCode.jpg
    53,5 KB · Aufrufe: 18
  • Verbindungsvariablen.png
    Verbindungsvariablen.png
    62,8 KB · Aufrufe: 19
  • MB_Client_DB.jpg
    MB_Client_DB.jpg
    96,2 KB · Aufrufe: 21
Zuletzt bearbeitet:
Deine Anhänge am Beitrag sind irgendwie kaputt. Kannst Du die bitte nochmal hochladen und anhängen?

Wenn Du zum selben Teilnehmer bereits eine funktionierende Modbus-Kommunikation hast, dann kann es ja nur noch am Funktionscode und den Bit-Adressen liegen (Parameter MB_MODE, MB_DATA_ADDR und MB_DATA_LEN). Ergibt die Kombination vielleicht Schreiben auf Eingangs- oder Ausgangs-Bits und der Partner mag das nicht?

Die Bit-lese/schreib-Aufträge sind mit den Register-lese/schreib-Aufträgen verriegelt, so daß immer nur 1 Kommunikationsauftrag an den Modbus-Partner aktiv ist?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zum Testen habe ich nur die Bit-Schreibe Funktion aus dem Programm genommen und separat aktiviert. Mit dem selben Ergebnis. Verbinden kann er(Connected=1) und er versucht auch zu schreiben habe ich das Gefühl, aber er kann es irgendwie nicht.
An den Parameter habe ich auch schon rum gespielt, hat aber nichts gebracht.
 
Status = 16#7004 | Verbindung hergestellt und überwacht. Keine Auftragsbearbeitung aktiv.

MB_DATA_ADDR = 3 ---> Schreiben zur Bit-Adresse 2: Kommt in dem Gerät an Bit-Adresse 2 nichts an? Sendest Du auch mal FALSE (0)?

Probiere evtl. mal MB_MODE = 2 und MB_MODE = 115

Wenn Du einen Modbus Test Client hast, dann kannst Du mal damit versuchen, ob der Bit-schreib-Auftrag generell vom Modbus-Gerät akzeptiert und ausgeführt wird.

Harald
 
Status = 16#7004 | Verbindung hergestellt und überwacht. Keine Auftragsbearbeitung aktiv.

Das Bild mit dem Status erfolgte im nicht aktiven Zustand (Req=0), wenn Req=1 dann springt er zwischen 7005 und 7006 hin und her.

MB_DATA_ADDR = 3 ---> Schreiben zur Bit-Adresse 2: Kommt in dem Gerät an Bit-Adresse 2 nichts an? Sendest Du auch mal FALSE (0)?

Probiere evtl. mal MB_MODE = 2 und MB_MODE = 115

Die verschiedenen Modes habe ich auch schon ausprobiert mit unterschiedlichem Ergebnis aber immer unbrauchbar.
Habe auch schon verschiedene Adressen ausprobiert, mit dem selben Ergebnis. Es kommt nichts an ob 1 oder 0.

Nur um mein Verständnis der Adressvergabe abzugleichen. Die Remote Adresse entspricht folgendem Bild oder?:
1 bzw. 10001 -> 0.0 (im Server bei Bit) und 40001 -> MW0 (bei WORD)
10 bzw. 10010 -> 1.1 und 40010 -> MW9
993 bzw. 10993 -> 124.0
usw.


Wenn Du einen Modbus Test Client hast, dann kannst Du mal damit versuchen, ob der Bit-schreib-Auftrag generell vom Modbus-Gerät akzeptiert und ausgeführt wird.

Harald

Mein Aufbau sieht momentan so aus. An der S7-1211 häng ich mit meinem PG und die M258 beschreib/beobachte ich mit meinem Desktop PC. Andere Modbus Komponenten habe ich nicht.
Die beiden Steuerungen hängen in einem Schaltschrank und sind über einem Switch miteinander verbunden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Er baut dann auch eine Verbindung auf wechselt aber im STATUS immer zwischen 16#7005(gesendet) und 16#7006(empfangen) und sporadisch mischt sich noch eine 16#8381(Funktionscode wird nicht unterstützt) rein.
Schreibe ich allerdings die Bits in ein WORD, kann ich diese übertragen.
Beobachtest Du mit "unbewaffnetem Auge" oder speicherst Du den Statuswert bei DONE und bei ERROR? (und hänge mal testweise Zähler an DONE und ERROR) Kommt vielleicht immer der Fehler-Status 16#8381 (Funktionscode wird nicht unterstützt)?
Schau mal in das Handbuch Deines M258, welche Modbus Funktionen dessen Modbus Server unterstützt. Vielleicht gehen nur Register (Words).

Wie die M258-Variablen/Merker-Adressen auf seinen Modbus Server gemappt sind, weiß ich nicht, da kann ich nicht helfen.

Um auszuschließen, daß man einen Fehler in der eigenen Programmierung mit dem MB_CLIENT macht, kann man testweise mit einem Modbus Client Modbus Anfragen an den Partner Modbus Server senden. Auf die Schnelle nehme ich da oft den kostenlosen Modbus Diagnose Test Client von Janitza

Harald
 
Danke Harald,

beim studieren des Handbuchs und folgendem Testen, wurde mir klar, dass man nur die Physischen Digital Ein-/Ausgängen ansteuern kann. Alle sonstigen Bits können nur über Register/Wörter verschickt werden.
Habe es jetzt entsprechend angepasst und es geht jetzt. Bin noch frisch in der SPS Welt und wohl etwas Naiv an das ganze rangegangen.

Nochmal vielen Dank.

MfG
Andi
 
Zurück
Oben