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

Ergebnis 1 bis 7 von 7

Thema: CP340. DB-Überlauf (zu viele Zeichen abfangen ?)

  1. #1
    Registriert seit
    02.08.2006
    Beiträge
    150
    Danke
    47
    Erhielt 5 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe ein ASCII-Telegramm auf der CP340 (6ES7 340-1BH00-0AE0) laufen.
    Dabei ist diese auf:
    "Nach Ablauf der Zeichenverzugszeit 10msec."
    eingestellt.
    Eigentlich funktioniert das ganze wunderbar, wenn nicht ab und zu (aus welchen Gründen auch immer) zu viele Zeichen empfangen werden und dadurch der Empfangs-DB von der Grösse her nicht mehr reicht.

    Es sind immer 23 Zeichen zu empfangen. Deswegen habe ich den DB auch auf 23 Zeichen angelegt. In der Zwischenzeit habe ich ihn mal auf 200 Zeiche erhöht. Damit ist das Problem verschwunden, jedoch würde ich gerne wissen, wie ich solch einen Überlauf abfangen kann.
    Lief der Empfangs-DB über, so ging die CPU in STOP und die ganze Anlage stand still. Aus- und wieder Einschalten beseitigte dann das Problem.

    Ich habe im Moment keinen Ansatz.
    Kann mir hier jemand weiterhelfen.

    noeppkes ...
    Zitieren Zitieren CP340. DB-Überlauf (zu viele Zeichen abfangen ?)  

  2. #2
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    1. Sollte der Empfangspuffer nie gleich der theoretischen Empfangsgöße sein.
    2. Lässt sich das mit einem Fehler OB beheben
    3. Was oder wer sendet denn die Daten ?
    4. Wenn die Anlage aus ist, oder die CPU in Stop werden keine Daten empfangen. diese bleiben eventuell im Puffer des Sendegerätes stehen. Wenn du nun nur über Zeichenverzugszeit arbeitest werden nach dem Hochlauf der CPU alle Daten gesendet.

    5. Kann es sein das du den Receivebaustein nur einschaltest wenn Du denkst es müßen Daten kommen ?

  3. #3
    noeppkes ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    150
    Danke
    47
    Erhielt 5 Danke für 2 Beiträge

    Standard

    Zitat Zitat von jabba Beitrag anzeigen
    1. Sollte der Empfangspuffer nie gleich der theoretischen Empfangsgöße sein.
    --> O.K. Das dachte ich mir schon.

    2. Lässt sich das mit einem Fehler OB beheben.
    -->O.K. Welcher denn ?

    3. Was oder wer sendet denn die Daten ?
    --> Microcontroller. Nur auf "Anfrage" hin von der SPS

    4. Wenn die Anlage aus ist, oder die CPU in Stop werden keine Daten empfangen. diese bleiben eventuell im Puffer des Sendegerätes stehen. Wenn du nun nur über Zeichenverzugszeit arbeitest werden nach dem Hochlauf der CPU alle Daten gesendet.
    -->Daten werden nur an die SPS gesendet, wenn diese auch explizit von der SPS an den Microcontroller "angefragt" werden. (Master / Slave-Betrieb über RS485). SPS = Master, Microcontroller = Slave mit entsprechender Adresse.

    5. Kann es sein das du den Receivebaustein nur einschaltest wenn Du denkst es müßen Daten kommen ?
    --> Nein. Er ist immer eingeschaltet.
    Im Prinzip möchte ich nichts anderes als erkennen, wenn solch ein Fehler auftritt und einfach den CP340 wieder "freimachen", d.h. Empfangspuffer löschen.
    Die SPS frägt dann nach der TimeOut-Zeit den / die Microcontroller neu an. Das unbedingte empfangen des Telegrammes ist nicht so wichtig. Es geht hier um Raumtemperaturen, welche sowieso ständig abgefragt werden. Darum ist es egal, wenn mal eine oder zwei Telegramme verloren gehen.
    Ich möchte eben nur nicht, dass die CPU ab und zu in den STOP rennt. Dann steht eben alles.

    noeppkes ...

  4. #4
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Der OB müßte der OB121, ansonsten wenn die CPU in Stopp gegangen ist im Diagnosepuffer nachsehen, da steht der OB mit nummer drin
    zB. Angeforderter OB : Programmierfehler -OB (OB 121)

    Was ist das denn für ein Gerät (Typ) mich interessiert warum du über Zeichenverzugszeit geht, das ist der schlechteste Weg.
    Wie Lauten denn eine Antwort ?
    Normalerweise vieleicht so
    12.45C+CR+LF
    Schau mal in den Empfangspuffer ob hinter der Temperatur nicht ein Hex 0A oder Hex 0D ankommt, und ändere das als Empfangsendeerkennung.

    Der Empfangsbaustein muss beim Senden abgeschaltet werden.
    EN_R=False

  5. #5
    noeppkes ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    150
    Danke
    47
    Erhielt 5 Danke für 2 Beiträge

    Standard

    Zitat Zitat von jabba Beitrag anzeigen
    Der OB müßte der OB121, ansonsten wenn die CPU in Stopp gegangen ist im Diagnosepuffer nachsehen, da steht der OB mit nummer drin
    zB. Angeforderter OB : Programmierfehler -OB (OB 121)

    Was ist das denn für ein Gerät (Typ) mich interessiert warum du über Zeichenverzugszeit geht, das ist der schlechteste Weg.
    Wie Lauten denn eine Antwort ?
    Normalerweise vieleicht so
    12.45C+CR+LF
    Schau mal in den Empfangspuffer ob hinter der Temperatur nicht ein Hex 0A oder Hex 0D ankommt, und ändere das als Empfangsendeerkennung.
    In der Tat. Den Microcontroller habe ich selbst programmiert. D.h. das Endezeichen kann ich frei definieren. Es ist aber schon CR + LF.
    Ich weiss wohl, dass ich auch über das Ende-Zeichen gehen kann, jedoch kann es auch mal sein, dass dieses nicht richtig verstanden wird und somit der Empfangspuffer dann auch über läuft, weil dann 2 Telegramm oder mehr in den Empfangspuffer kommen könnten. Da schien es mir am sichersten zu sein, ich gehe über die Zeichenverzugszeit. die ist in jedem Fall immer da.


    Der Empfangsbaustein muss beim Senden abgeschaltet werden.
    EN_R=False
    O.K. Das wusste ich nicht. Warum muss ich den diesen abschalten. Meiner ist immer aktiv !

    noeppkes ...

  6. #6
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Das abschalten ist von Siemens so beschrieben. Die FB's "Senden" und "Empfangen" kommunizieren ja über die E/A Ebene mit der Baugruppe. Diese würden sich dann gegenseitig stören.

    Ich würde auf jeden Fall ein Zeichen als Endeerkennung eintragen. Die Zeichenverzugszeit bleibt ja trotzdem aktiv !
    Das heisst wenn ein korrekter Satz empfangen wird kommt ein NDR, oder wenn die Zeichenverzugszeit abgelaufen ist. Sollten jetzt 100 Telegramme in Folge kommen die deinen Puffer zum überlaufen bringen könnten, käme durch das Endezeichen 100* ein NDR und nicht wie jetzt 1* mit Überlauf.

  7. Folgender Benutzer sagt Danke zu jabba für den nützlichen Beitrag:

    noeppkes (05.02.2010)

  8. #7
    noeppkes ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    150
    Danke
    47
    Erhielt 5 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo jabba,

    vielen Dank für die ausführliche Erläuterung.
    Das hat mir sehr geholfen.

    noeppkes ...

Ähnliche Themen

  1. Abfangen von falscher Eingabe
    Von Beckx-net im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 02.12.2017, 20:31
  2. CP340 ASCII Zeichen senden und empfangen
    Von Technikfreak im Forum Simatic
    Antworten: 44
    Letzter Beitrag: 25.09.2015, 17:15
  3. Mobotix-Kamera-Stream abfangen
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 24.09.2011, 20:29
  4. Gebersprung abfangen
    Von tisler im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 13.07.2010, 12:49
  5. Analog In Baugruppe Fehler abfangen
    Von LukeSkywalker im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 10.07.2009, 07:38

Lesezeichen

Berechtigungen

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