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

Seite 5 von 8 ErsteErste ... 34567 ... LetzteLetzte
Ergebnis 41 bis 50 von 74

Thema: CP 340 - Messwerte empfangen

  1. #41
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Oh mann!

    Da hab ich mich jetzt wohl zu früh gefreut oder wie?

    Mein (haupt-) Problem hast du aber ja schon erkannt:

    Der Kunde hat bereits jahrelang eine solche Kopplung laufen die eben mit dem CP340 so gemacht wurde und ich soll jetzt kommen und sagen daß das Kacke ist. Der wird natürlich sagen: "Da funktioniert es doch auch, warum also bei Ihnen nicht"?

    Es wäre, wie ich das so sehe, generell möglich mit Folgetelegrammen zu operieren - bzw. durch entsprechende Verriegelungen der S/R FB´s mit jeweils anderen Parametern zu Arbeiten. Diese Arbeit wollte ich mir natürlich zunächst ersparen.

    Momentaner Stand:

    Ein DB welcher die 10byte mit den Sendedaten beinhaltet wird an den P_SEND übergeben. Dessen Enable-Bit wird vom Done-Bit des P_RCV zurückgesetzt und im nächsten Zyklus wieder automatisch gesetzt. Durch diesen Flankenwechsel geht das Spiel von neuem los. Das Enable-Bit des P_RCV bleibt statisch True.
    Die so empfangenen Daten werden in einen separaten DB mit 4byte "Kopf" und einem ausreichend großen Array für die Nutzdaten reingeschrieben.
    Die bislang empfangenen Nutzdaten sahen bis jetzt zumindest sehr vielversprechend aus - daher glaubte ich quasi schon am Ziel zu sein.
    Das einzige was jetzt noch fehlt ist der endgültige Abgleich zwischen Quelle und Ziel um wirklich auf nummer sicher gehen zu können. Ein paar "markante Einzelwerte" konnte ich bereits als "richtig empfangen" zuordnen, daher war ich eben noch guter Hoffnung.

    Falls das jetzt je so geht lasse ich das auch so - eben weil ich jetzt keinen Ärger will und es wohl die "letzte Kopplung dieser Art" sein wird (bei diesem Kunden zumindest...). Wenn ich das wo anders mal brauchen sollte kläre ich das natürlich ab daß ein CP341 zum Einsatz kommen MUSS.

    Wenn nicht muss ich irgendwie belegen können daß die alte Kopplung auch schon fehlerhaft ist, aber die kam ja nicht von mir.

    Schwierig, schwierig...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  2. #42
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Stell doch mal Dein 10-Byte-Befehlstelegramm hier rein,
    und gib an, auf welche Daten-Nummern in B&R Du zugreifen
    musst. Vielleicht hat sich dann alles ganz schnell erledigt.

  3. #43
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von argv_user Beitrag anzeigen
    Stell doch mal Dein 10-Byte-Befehlstelegramm hier rein,
    und gib an, auf welche Daten-Nummern in B&R Du zugreifen
    musst. Vielleicht hat sich dann alles ganz schnell erledigt.
    Das funktioniert ja schon...

    Es geht jetzt ja nur noch um die max. Länge die mit einem Mal übertragen werden kann.
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  4. #44
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Lt. RK512 sind das max. 128Bytes, habe ich ja weiter oben
    schon geschrieben. Allerdings gibt es in dem 10-Byte-Befehlstelegramm
    auch einen Offset; der ist in Deinem Fall wohl 0.
    Diesen Wert kannst Du erhöhen; musst aber beachten, dass er
    max. 255 sein kann.
    Und da lauert die nächste Falle: es hängt vom Datentyp auf den
    zugegriffen wird ab, ob der Offset als Byte oder als Word gerechnet wird.
    Gilt auch für die Anzahl.
    (Nur deshalb wollte ich Deine Befehlssequenz sehen).

    Nachtrag: die 128 Bytes verstehen sich ohne Folgetelegramme;
    aber die willst Du ja gerade vermeinden!
    Geändert von argv_user (21.01.2008 um 14:21 Uhr)

  5. #45
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Als Anmerkung beim Telegrammkopf steht:

    Die RK512-Adressierung beschreibt Datenquelle und -ziel mit Wortgrenzen. Die Umrechnung auf Byteadressen in SIMATIC S7 erfolgt automatisch.
    D.h. ich gebe im Byte5 die DB Nr. an und im Byte6 die Wort(DW)-Nr. an.
    Hier habe ich momentan 0, richtig...

    Ich habe den Telegrammkopf Byte für Byte im DB deklariert, ausser die letzten 2 - da habe ich ein Wort mit FFFF genommen (kein Koppelmerker).

    Mein Aufbau:

    01: B#16#0
    02: B#16#0
    03: B#16#45h // Fetch-Auftrag
    04: B#16#44h // Quelltyp = DB
    05: B#16#D //QuellDB = DB13
    06: B#16#0 //QuellDBW=0
    07: B#16#0 // Länge in Byte = 0 weil in 08 in Wort angegeben!
    08: B#16#96h // Länge in Worten = 150 (geht aber nicht)
    09: W#16#FFFF // Kein Koppelmerker

    Ich werde es nun wohl so machen müssen:

    Um die Länge nicht zu überschreiten brauche ich einen koordinierten Sende-/Empfangsablauf -> Ich hänge also für jeden Teil (max64Wort) einen Telegrammkopf hinten an den Kopf-DB. Je nach dem welcher Teil gerade dran ist schicke ich einen der "Köpfe".
    In meinem Ziel-DB richte ich analog dazu weitere Empfangsfächer ein, da ja jedes mal ein Header mit übertragen wird - also einen neuen Header plus ein neues (Teil-)Array.

    Jetzt muss ich nur noch dafür sorgen daß bei der Koordination nichts schief geht -> Die P_Send/P_RCV Bausteine dürfen ja nur einmal da sein ebenfalls der IDB (bezogen pro CP). Deshalb muss ich sie "einfach" abwechselnd mit anderen Telegrammköpfen und den passenden Zielbereichen aufrufen.

    Hierzu sind natürlich Anregungen erwünscht, bin aber quasi schon dran...

    Edit: Noch mal wegen der Byte/Wort Deklaration -> Oder ist das so gemeint daß wenn im Kopf das Byte07 ODER 08 verwendet wird auch im Byte06 das auf Byte/Wort angepasst sein muss ?
    Geändert von rs-plc-aa (21.01.2008 um 14:53 Uhr) Grund: Ergänzung.
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  6. #46
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Aha, DB-Zugriff also!
    Nun, der ist immer wortweise; d.h. auch die Länge ist in Worten.
    Mehr als 64 Worte benötigen die Folgetelegramme, aber bis 64
    Worte geht es ohne!

    Byte 7 ist das Highbyte, 8 das Lowbyte der Länge, gerechnet in
    Worten.

    Aber in Byte 6 gibst Du den Bereichsanfang ein.
    Ebenfalls in Worten. Auf Byte 298 & Byte 299 des DB greifst Du direkt
    zu, indem Du Byte 6 auf 149 setzt und als Länge 1 angibst.

    Ich hoffe das hilft Dir weiter.

  7. #47
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Ja, tut es...

    Nur noch mal langsam zum Mitschreiben:

    Ich will aus ein und dem selben DB ab DBW0 insgesamt 300 byte holen.

    Ich würde es dann in 3*100 aufteilen wollen.

    Jetzt immer auf die Bytenummer des Telegrammkopfs bezogen:

    Teil 1 ist also:
    06: B#16#0
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW0)

    Teil 2:
    06: B#16#32h // ab Wort 50 (= Byte100)
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW50)

    Teil 3:
    06: B#16#64h // ab Wort 100 (= Byte200)
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW100)

    Ich dachte bisher dass die Bytes 07 und 08 wahlweise anzugeben sind - also entweder in Bytes oder in Worten - oder ist das falsch?
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  8. #48
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Ja, tut es...

    Nur noch mal langsam zum Mitschreiben:

    Ich will aus ein und dem selben DB ab DBW0 insgesamt 300 byte holen.

    Ich würde es dann in 3*100 aufteilen wollen.

    Jetzt immer auf die Bytenummer des Telegrammkopfs bezogen:

    Teil 1 ist also:
    06: B#16#0
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW0)

    Teil 2:
    06: B#16#32h // ab Wort 50 (= Byte100)
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW50)

    Teil 3:
    06: B#16#64h // ab Wort 100 (= Byte200)
    07: B#16#0
    08: B#16#32h // 50 Worte (ab DW100)

    Ich dachte bisher dass die Bytes 07 und 08 wahlweise anzugeben sind - also entweder in Bytes oder in Worten - oder ist das falsch?

    Das mit dem wahlweise ist falsch, denn Byte 7 und 8 bilden einen Wortwert.
    Die drei Teile 1,2 und 3 sollten so richtig sein.

  9. #49
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Danke.

    Ich bin etwas irritiert von der Formulierung im Handbuch. Da steht:
    07: Länge High-Byte Länge der zu übertragenden Daten je nach Typ in Byte oder
    08: Länge Low-Byte Wörtern
    (genau so steht´s da...)

    Für Teil1 muss aber schon beim Beginn die 0 angegeben werden - oder die 1? (ich meine aber schon 0)
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  10. #50
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Byte 7 und 8 definieren die Anzahl der zu übertragenden Datenworte,
    wenn es um DB geht, aber Datenbytes wenn es zB um Merker geht.

    Dh. die Vielfachheit hängt nur vom Datentyp ab.

    Byte 7 = 1 heißt Anzahl >= 256

  11. Folgender Benutzer sagt Danke zu argv_user für den nützlichen Beitrag:

    rs-plc-aa (21.01.2008)

Ähnliche Themen

  1. PDO empfangen?
    Von fdisk im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 21.09.2011, 12:17
  2. Messwerte in ein Datenbaustein
    Von baui im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.06.2009, 10:44
  3. Messwerte in Texttabelle
    Von steven im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.10.2007, 15:36
  4. SMS Empfangen S7-200
    Von xpert im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 08.12.2005, 10:22
  5. messwerte in db
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.09.2005, 14:17

Lesezeichen

Berechtigungen

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