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

Ergebnis 1 bis 3 von 3

Thema: Kommunikation mit CP240

  1. #1
    Registriert seit
    24.07.2007
    Ort
    Hilden
    Beiträge
    20
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich möchte ein externes Telegramm auslesen und in ein separaten DB (UDF basiert) speichern.

    Das empfangene Telegramm besteht aus mehreren Einzeltelegrammen. (Kopf / Füllen / Stabilisieren / Messen / Entlüften /Ende)
    Jedes Telegramm hat als ersten Byte das s.g. Startbyte mit der Kennung 013 (0Dh). Das zweite Byte gibt die Länge der Datenbyte an. Im dritten Byte steht die Telegrammnummer welche die Inhalt klassifiziert. Die letzen beiden Bytes sind Prüfsummen. Zwischen der Telegrammnummer und den beiden Prüfsummen-Byte, stehen die Daten die auswertbar sind.

    Meine Idee ist nun z.B., das eine Routine das Byte mit dem Inhalt 013 (0Dh), das vorgegebene zweite Byte (z.B. 004 (04h)) und das dritte Byte (z.B. 139 (8Bh)) als Kombination sucht. Wenn diese Kombination (013 (0Dh) 004 (04h) 139 (8Bh)) gegeben bzw. gefunden ist, soll das vierte bis sechste Byte (z.B. 000 (00h) 005 (05h) 000 (00h)) in einem separaten DB gespeichert werden.

    Der separate DB soll das ersten Ergebnis ( z.B. 000 (00h) 005 (05h) 000 (00h)) gespeichern. Im Klartext lautet mein Beispiel „005 Pa“ als Messergebnis.
    Sollte ein weiteres Ergebnis kommen ( z.B. 000 (00h) 006 (06h) 000 (00h)), dann soll dieses vor das zuletzt empfangene Ergebnis geschrieben werden.
    Wenn die maximale Anzahl (z.B. 100 Ergebnisse) erreicht wurde, soll das älteste Ergebnis gelöscht werden und somit Platz für das neue Ergebnis geben. Somit kann ein definierter Platzbedarf vorgesehen werden und die Auswertung via HMI ist in Tabellenform leichter.
    Die Ergänzung durch weitere Bytes ist natürlich denkbar und vorteilhaft. Hierbei denke ich an den Zeitstempel der im Ergebniskopf steht. Ein Array bestehend aus den u.a. und rot und fett markierten Bytes. Die grün und unterstrichen markierten Bytes sind Anzeigeformen, d.h. Kommastelen.

    013 012 135 001 000 000 001 000 022 007 009 020 021 011 030 024 188 (Datum+Uhrzeit)
    013 004 136 000 000 005 036 016 037 (Druckangabe)
    013 004 137 000 000 005 036 208 024 (Druckangabe)
    013 004 139 000 005 000 003 091 050 (Messergebnis plus Maßeinheit)
    013 004 140 000 000 005 036 208 212 (Druckangabe)
    013 000 143 167 161 (Ende)

    Das letzte Telegramm „013 (0Dh) 000 (00h) 143 (8Fh) 167 (A7h) 161 (A1h)“ ist beim Empfang der Ergebnisse immer gleich, daher könnte es als Signalmerker dienen.
    Leider erhalte ich einen STOP-Zustand in meiner Anlage.


    Kann einer sich die Anlage mal anschauen?
    Angehängte Dateien Angehängte Dateien
    Gruß

    Carsten
    Zitieren Zitieren Kommunikation mit CP240  

  2. #2
    Avatar von CBRA
    CBRA ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2007
    Ort
    Hilden
    Beiträge
    20
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    ich habe folgendes Problem auf dem Tisch.

    Ich möchte die eingehenden Daten eines DB 11 sortiert abspeichern. Dabei ist das erste Byte (DATA_0) eines Einzeltelegramm 013 (0Dh). Im Byte DATA_2 steht die Telegrammnummer und die Länge der der nach dem Byte Telegrammnummer gesendet werden, steht im Byte DATA_1.
    Eingehende Daten werden durch Eingang E 3.7 und einem Merker 555.0 (Beispiel) angezeigt. Nachfolgend habe ich ein Beispieltelegramm aufgeschrieben. Die in Klammer stehenden Bezeichnungen sind Klartexte und Erläuterungen.

    013 012 135 001 (Prog-Nr.) 000 000 001 (Bewertung) 000 (Testart) 022 (Tag) 007 (Monat) 009 (Jahr) 020 (Jahrhundert) 021 (Stunde) 011 (Minute) 030 (Sekunde) 024 188
    013 004 136 000 (1. Teil Wert) 000 (2. Teil Wert) 005 (Einheit) 036 (Kommastelle) 016 037
    013 004 137 000 (1. Teil Wert) 000 (2. Teil Wert) 005 (Einheit) 036 (Kommastelle) 208 024
    013 004 139 000 (1. Teil Wert) 005 (2. Teil Wert) 000 (Einheit) 003 (Kommastelle) 091 050
    013 004 140 000 (1. Teil Wert)000 (2. Teil Wert) 005 (Einheit) 036 (Kommastelle) 208 212
    013 000 143 167 161 (Ende des Telegramm)

    Nun möchte ich die Daten aus den DB11 in einem DB135, DB136, DB137, DB138 und DB140 speichern. Wenn jeder der Speicher DB's die Anzahl 100 Messungen (als Beispiel) erreicht hat, soll im DBB oder DM 0 begonnen werden. Das nennt man FIFO-Prinzip, habe ich gelesen.

    Was muss ich einstellen, damit ein Suchbefehl die richtige Kombination aus Star-, Längen- und Telegrammbyte findet? Was und wo muss was eingerichtet werden, damit die Einzeltelegramme in separate vorbereitete Telegramme gespeichert werden. Es kann sein, dass zusätzliche Telegramme gesendet und nachträglich ausgewertet werden müssen.

    Mein Wissen über Lade- und Transferbefehle bzw. Pointer ist begrenzt, darum mein HILFERUF an euch.
    Angehängte Dateien Angehängte Dateien
    Gruß

    Carsten
    Zitieren Zitieren Sortieren und speichern von Daten  

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Einmal Einstellen reicht im Allgemeinen, ich hab die Threads mal zusammengeschmissen. Das Thema ist rel. komplex, es wird das Beste sein, du fängst erstmal an und stellst dann konkretere Fragen. Zuerst solltest du mal in die FAQ des Forums schauen, da gibt es zumindest Beiträge zum Thema FIFO und indirekte Adressierung.

    Anregungen zum Durchsuchen eine DB z.Bsp. hier:

    http://www.sps-forum.de/showthread.p...ight=vergleich

    und hier im Beitrag #30 hatte ich mal Code eingestellt, der schon eine bestimmte Bytefolge aus einem DB raussucht:

    http://www.sps-forum.de/showthread.p...ight=vergleich

    Allerdings werden dort Strings verwendet, die haben noch 2 Byte Kopf. Der Code muß also modifiziert werden, ist auch für S7-300/400. Hast du eine S7-200?
    Geändert von Ralle (25.07.2009 um 04:00 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Kommunikation mit CP240
    Von CBRA im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 17.07.2009, 20:40
  2. DP-Kommunikation 315 <--> 414
    Von Reto im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 11.06.2009, 22:07
  3. Kommunikation CPU - CPU
    Von klauserl im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 01.05.2007, 12:12
  4. S7 Kommunikation mit PC
    Von xpert im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.04.2006, 11:44
  5. MPI Kommunikation
    Von jas im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.04.2006, 09:50

Lesezeichen

Berechtigungen

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