Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Problem mit Modbus bei Write Coil

  1. #1
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    folgendes Szenario:
    ILC 150 ETH ist Modbus-Server. Dieder ist per TCP verbunden mit meinem PC, der der Client ist. Verbindung steht und beiden schicken sich gegenseitig die Pakete zu.

    Nun möchte ich einen Ausgang setzen mit Write Coil. Also schicke ich ein Request an das ILC (0x00 00 00 00 00 06 FF 05 00 A0 FF 00). Diesen führt er aus und setzt den Ausgang. Er schickt auch wieder eine Response zurück.
    Nach dem eingestellten TimeOut (T#10s) geht aber der Baustein MODBUS_TCP_Server_V1_30 auf Error mit dem Code C020.

    Code:
    Es  wurde ein schreibender Dienst ausgeführt und nicht innerhalb der im Parameter TimeOut angegebenen Zeit ein erneutes  schreibendes Telegramm empfangen.  Zum  Deaktivieren dieser Funktionalität muss am Parameter TimeOut der Wert T#0s angegeben werden
    Mit Wireshark kann ich aber feststellen, dass ein 4-Wege-Handshake zustande kommt.
    Woran kann das noch liegen, dass ein fehler entsteht?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).
    Zitieren Zitieren Problem mit Modbus bei Write Coil  

  2. #2
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Hi,
    kenne eigentlich keine von deinen Komponenten,
    aber wenn ich mir die Fehlermeldung durchlese wird eh klar

    Es gibt eine Sicherheitsfunktion bei Schreibbefehlen (ev. für Verbindungsabbruch nach setzen eines Ausgangs oder ähnlich) dass innerhalb einer bestimmten Zeit wieder ein Schreibbefehl kommen muss. Ist dass nicht gewünscht, T=0 setzen ???

  3. #3
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Zitat Zitat von Mobi Beitrag anzeigen
    Hallo,

    folgendes Szenario:
    ILC 150 ETH ist Modbus-Server. Dieder ist per TCP verbunden mit meinem PC, der der Client ist. Verbindung steht und beiden schicken sich gegenseitig die Pakete zu.

    Nun möchte ich einen Ausgang setzen mit Write Coil. Also schicke ich ein Request an das ILC (0x00 00 00 00 00 06 FF 05 00 A0 FF 00). Diesen führt er aus und setzt den Ausgang. Er schickt auch wieder eine Response zurück.
    Nach dem eingestellten TimeOut (T#10s) geht aber der Baustein MODBUS_TCP_Server_V1_30 auf Error mit dem Code C020.

    Code:
    Es  wurde ein schreibender Dienst ausgeführt und nicht innerhalb der im Parameter TimeOut angegebenen Zeit ein erneutes  schreibendes Telegramm empfangen.  Zum  Deaktivieren dieser Funktionalität muss am Parameter TimeOut der Wert T#0s angegeben werden
    Mit Wireshark kann ich aber feststellen, dass ein 4-Wege-Handshake zustande kommt.
    Woran kann das noch liegen, dass ein fehler entsteht?
    Will die Kiste eventuell zwei Mal das Gleiche Telegramm ? Innerhalb von 10s ? Stell doch mal den Timeout auf T#0 !
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  4. #4
    Registriert seit
    19.01.2010
    Ort
    Graz / Austria
    Beiträge
    100
    Danke
    6
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Zitat Zitat von Mobi Beitrag anzeigen
    Code:
    Es  wurde ein schreibender Dienst ausgeführt und nicht innerhalb der im Parameter TimeOut angegebenen Zeit ein erneutes  schreibendes Telegramm empfangen.  Zum  Deaktivieren dieser Funktionalität muss am Parameter TimeOut der Wert T#0s angegeben werden
    Ich kenne deine Hardware zwar auch nicht, aber die Fehlermeldung sagt eigentlich eh schon alles aus.
    Du musst immer wieder innerhalb der eingestellten Timeoutzeit ein schreibendes Diagramm senden, damit der Slave nicht auf einen Fehler geht.

    Auf Modbus über RS485/422 reicht in der Regel auch ein Lese- Zugriff aus um den Timeout wieder aufzuziehen, aber da ja auf Modbus TCP/IP auch mehrere Master zugleich lesen könnten, ist dies eine Sicherheitsfunktion das nur schreibende Diagramme für den Timeout ausgewertet werden.

  5. #5
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Hab jetzt den TimeOut rausgenommen. Läuft prima. Danke Jungs. Dachte es geht auch mit.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  6. #6
    Registriert seit
    19.01.2010
    Ort
    Graz / Austria
    Beiträge
    100
    Danke
    6
    Erhielt 10 Danke für 8 Beiträge

    Ausrufezeichen

    Zitat Zitat von Mobi Beitrag anzeigen
    Hab jetzt den TimeOut rausgenommen.
    Bitte denke daran, dass so alle Ausgänge gesetzt bleiben, wenn der Master (PC) ausfällt.
    Wenn du nur ein paar Anzeigen damit ansteuerst wird es kein Problem sein, bei einer Antriebstechnik eventuell schon.

  7. #7
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Schon logisch. Einmal gesetzt ist immer gesetzt, es sei denn man setzt sie wieder zurück im Programm oder per Modbus.
    Dafür muss man dann halt eine Errorhandling programmieren.
    Was hat das jetzt mit dem TimeOut zutun?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  8. #8
    Registriert seit
    19.01.2010
    Ort
    Graz / Austria
    Beiträge
    100
    Danke
    6
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Zitat Zitat von Mobi Beitrag anzeigen
    Dafür muss man dann halt eine Errorhandling programmieren.
    Was hat das jetzt mit dem TimeOut zutun?
    Ein "dummes" Modbus IO Modul würde bei diesem Fehler einfach alle Ausgänge zurücksetzten.
    Ich sehe allerdings gerade, dass dies eine SPS und nicht nur ein einfach konfigurierbares Modbus IO Modul ist.
    Hier kannst du natürlich auch selbst ein Errorhandling (z.B. Zähler welcher immer erhöht wird, Bit toggeln...) ausprogrammieren wenn du möchtest. - Im Prinzip ist dieser Timout Fehler genau dieses Errorhandling, bwz. das wie du diesen Timeout Fehler dann im Programm auswertest.

  9. #9
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Gut ich könnte auch wenn genau der Fehler immer kommt mit einem Vergleich, einfach dann den Fehler quittieren. Aber im Moment brauche ich den TimeOut nicht. Ich sende ja nicht dauernd Telegramme.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ähnliche Themen

  1. Problem CP-341-> Modbus Slave mit Zxx_21_04
    Von Wagginator im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 27.06.2011, 10:09
  2. write in c#
    Von QBert im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 20.04.2011, 09:29
  3. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14
  4. Das Fetch/Write Protocol
    Von Alexandr im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.01.2010, 01:22
  5. Fetch/Write mit SPS !
    Von Assemble im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 03.06.2008, 22:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •