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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: Funktion wird nicht in einem Zyklus durchlaufen

  1. #11
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Anderer Vorschlag: Baue einen FIFO-Buffer auf. Füge die Daten unkontrolliert hinternanderweg dort hinein. Suche dann deinen Protokollstring, werte den aus und lösche alles, was Du nicht mehr brauchst. Das Problem würde ich dann so lösen, wenn man beim Empfang nicht weis wie lang das Protokoll ist.

  2. #12
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hatte auch schon die Idee mir alles in einen Buffer zu schreiben, bis ich die letzten Daten empfangen habe, dabei besteht aber immer noch das gleiche Problem, dass ich nicht weis, wann er die letzten Daten empfangen hat, oder?

  3. #13
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Hatte auch schon die Idee mir alles in einen Buffer zu schreiben, bis ich die letzten Daten empfangen habe, dabei besteht aber immer noch das gleiche Problem, dass ich nicht weis, wann er die letzten Daten empfangen hat, oder?
    Jeder Datensatz hat eine Endkennung. Die suchen und schon weißt du wann Ende ist.
    Oder am Anfang steht drin, wie lang der Satz und auch dann weißt du wieviel du auswerten musst.
    Den Aufbau des Telegramms musst du schon wissen.


    bike

  4. #14
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ich kenne den Aufbau des Telegramms, es handelt sich aber um Messwerte und wenn das Messgerät 1s aufzeichnet bekomme ich ca. 600 Byte und wenn 3 s Sekunden aufzeichnet eben 1800 Byte.
    Habe gerade etwas gesehen, das der P_RCV nur 128 Byte pro Zyklus überträgt stimmt das?
    Muss man also wenn man 600 Daten empfängt 5 Zyklen warten bis diese da sind?
    Ps. wenn ich über die 1024 Komme muss ich dann die Konfiguration so einstellen, dass der Lesepuffer nicht überschrieben wird?
    Komme leider echt nicht weiter ((

  5. #15
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Ich kenne den Aufbau des Telegramms, es handelt sich aber um Messwerte und wenn das Messgerät 1s aufzeichnet bekomme ich ca. 600 Byte und wenn 3 s Sekunden aufzeichnet eben 1800 Byte.
    Habe gerade etwas gesehen, das der P_RCV nur 128 Byte pro Zyklus überträgt stimmt das?
    Muss man also wenn man 600 Daten empfängt 5 Zyklen warten bis diese da sind?
    Ps. wenn ich über die 1024 Komme muss ich dann die Konfiguration so einstellen, dass der Lesepuffer nicht überschrieben wird?
    Komme leider echt nicht weiter ((
    Der Baustein meldet doch, wenn er fertig ist.
    Du kennst die Endkennung des Messwertes.
    Dann den Datenbereich nach dem Anfang und dem Ende des Messwert durchsuchen.
    Wenn mehr Daten da sind, dann in mehren Schritten die Daten nacheinander in ein Datenfeld schreiben.
    Sorry, ich verstehe dein Problem nicht.

    Du solltest bevor du programmieren beginnst, dir zuerst die Unterlagen durchlesen.
    Wenn du die Informationen hast, kannst dir ein Konzept erstellen, wie du die Aufgabe lösen willst und erst dann anfangen zu codieren.
    Diese Reihenfolge passt, nach dem das ich gelesen habe, nicht.


    bike

  6. #16
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Das Problem ist ja, dass er fertig meldet und dies wahrscheinlich noch nicht ist. Denn wenn er fertig meldet habe ich noch lange nicht alle Daten im Lesepuffer.
    Und wenn ich mehr als 1024 Bytes empfange, werden die ersten Bytes wieder überschrieben und somit kann ich den Anfang nicht finden.

    Zu deiner Frage des Problems:
    Mir ist nirgendwo ersichtlich, wie der P_RCV die Daten in das angegebene Feld sichert. Sind jetzt 1024 Bytes schon da, wenn er NDR meldet, oder werden immer nur 128 Bytes pro zyklus in den angegebenen Speicher geladen?
    Und du sagt wenn mehr daten da sind in mehreren Schritten in ein Datenfeld schreiben. .... In mehreren Zyklen? und wieviele daten kann ich auf einmal schreiben? also wieviel kommen denn auf einmal an???

  7. #17
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Was würde denn passieren, wenn die Konfiguration so eingestellt ist, dass 25 Puffer bestehen und nichts überschrieben wird. Wenn ich dann den Empfang frei gebe und es würden 2000Bytes vom Partner gesendet werden. erscheint dann das NDR Bit erst wenn alle 2000 Bytes im Speicher sind, oder schon nach den ersten 1024?
    Wenn schon nach den ersten 1024, was würde dann passieren, wenn ich diese wegspeichere und die freigabe zum empfangen weg nehme und wieder setze (Also um das nächste Paket zu bekommen? geht das, oder bekommt er dann probleme, weil ich die freigabe weggenommen habe? Oder wie holt man sonst das nächste Paket aus dem Speicher? Bitte bitte helft mir

  8. #18
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Mit solch "großen" Datenpaketen habe ich leider keine Erfahrung. Aber um das Verhalten zu begreifen würde ich mir eine Testumgebung aufbauen. Man kann z.B. mit Hilfe vom Hyperterminal (Start->Alle Programme-->Zubehör-->Kommunikation-->Hyper Terminal) eine 2000 Byte große Textdatei über die COM-Schnittstelle senden. Baue Dir einfach eine Textdatei mit der Zeichenfolge 012345678901234567890... usw. zusammen. Dann kannst Du prüfen, was im DB ankommt und wie das Verhalten vom CP ist.

    Wo willst Du in der Konfiguration 25 Puffer einstellen?

  9. #19
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Das Problem ist ja, dass er fertig meldet und dies wahrscheinlich noch nicht ist. Denn wenn er fertig meldet habe ich noch lange nicht alle Daten im Lesepuffer.
    Und wennich mehr als 1024 Bytes empfange, werden die ersten Bytes wieder überschrieben und somit kann ich den Anfang nicht finden.

    Zu deiner Frage des Problems:
    Mir ist nirgendwo ersichtlich, wie der P_RCV die Daten in das angegebene Feld sichert. Sind jetzt 1024 Bytes schon da, wenn er NDR meldet, oder werden immer nur 128 Bytes pro zyklus in den angegebenen Speicher geladen?
    Und du sagt wenn mehr daten da sind in mehreren Schritten in ein Datenfeld schreiben. .... In mehreren Zyklen? und wieviele daten kann ich auf einmal schreiben? also wieviel kommen denn auf einmal an???
    Nach dem erstem NDR die empfangenen Daten aus dem Empfangsdatenbereich in einen anderen Speicherbereich sichern, abwarten bis zum nächsten NDR, wieder sichern in einen weiteren freien Speichbereich (oder vielleicht direkt hinter dem ersten), usw.
    Damit hast Du die Empfangsdaten in der richtigen Reihenfolge in diesem freien Speicherbereich liegen.
    Dann kannst du die empfangenen Daten auf Anfang und Ende prüfen und auch auswerten, ein Überschreiben findet dann nicht statt.
    kind regards
    SoftMachine

  10. #20
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also im Moment ist es so, dass ich nach dem Empfang von 1030 Zeichen nur noch 6 im Puffer stehen habe. du meinst also es kommen dort 2 NDR Signale? eins wenn 1024 Bytes gesendet wurden und dann noch eins?
    Dem ist aber leider nicht so, ich empfange nur einmal ein NDR
    Geändert von Bensen83 (16.04.2012 um 07:38 Uhr)
    Zitieren Zitieren Ok  

Ähnliche Themen

  1. Wann wird ein Merker im SPS Zyklus gesetzt
    Von Olbrich1983 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 03.04.2014, 11:42
  2. Antworten: 5
    Letzter Beitrag: 18.08.2009, 14:11
  3. Funktion in einem FC nicht klar
    Von roman79 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.02.2009, 10:03
  4. DB beschreiben in einem Zyklus
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2005, 14:04
  5. Archiv Funktion bei einem TP170B
    Von gonzom im Forum HMI
    Antworten: 3
    Letzter Beitrag: 25.03.2004, 11:04

Lesezeichen

Berechtigungen

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