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

Ergebnis 1 bis 8 von 8

Thema: S7 DP Slave Daten über SFC 14 bzw. 15 an Any Pointer übergeben

  1. #1
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi arbeite gerade an einem FB in dem von einem DP Slave über SFC 14 bzw. 15 jeweils 10 Byte Daten gelesen und geschrieben werden sollen!

    Bin mir mit der Byteoffset nicht sicher.

    Ist der Rest so OK?

    //konsistent vom PAE einlesen(SFC 14)

    CALL "DPRD_DAT" // Aufruf zur konsistenten Datenübertragung
    LADDR :=#InputAdr // Eingangs-Byteaddresse

    RET_VAL:=#Error
    RECORD :=#InputData // Zeiger auf Ziel



    LAR1 P##InputData // Adr. des Any-Pointer in AR1
    T W [AR1,P#2.0] // Wiederholungsfaktor (10 Byte)


    L W#16#1002 // Kennung Typ Any / Datentyp Byte
    T W [AR1,P#0.0] // in Zielpointer eintragen

    L DINO // Instanzdatenbausteinnummer (DIB) laden
    T W [AR1,P#4.0] // und in Zielpointer eintragen

    TAR2 // Basisadresse im Instanz-DB in den Akku holen
    L DW#16#???? // Byteoffset ausmaskieren
    UD
    L P##Ablage // Adresse Zieldatenbereich laden
    +D // Byteoffset addieren

    T D [AR1,P#6.0] // Pointer auf Zieldatenbereich im Any-P eintragen

    Ich will vom SFC 14 die Daten (10Byte 2 Byte Status und 8 Byte Nutzdaten) in die Ablage kopieren,
    wobei ich Input Data im FB als Any Pointer angelegt habe.Ablage ist ein Array
    Leider scheint im oberen Programmteil etwas nicht OK zu sein, die Datenbytes erscheinen leider nicht in meinem Programm !
    Die 2 Bytes Status bzw. Control muss ich dann noch auflösen!
    Byte 1, da benoötige ich die einzelnen Bits
    Byte 2 sind die Sende bzw. Empfangsdatenlänge
    Geändert von TheBadFrog (11.04.2010 um 22:07 Uhr)
    Zitieren Zitieren S7 DP Slave Daten über SFC 14 bzw. 15 an Any Pointer übergeben  

  2. #2
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    hi,

    ich glaub du machst das viel zu kompliziert.
    Wofür soll der ANY-Pointer denn genau sein. Überflüssig.

    Normalerweise kannst du dein Array direkt an die SFC ranhängen.

    Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  3. #3
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi ja du hast schon Recht, aber Vorgabe ist folgendes..........

    Der FB wickelt die Kommunikation zu einer seriellen Schnittstelle ab.
    Sende DB, Empfangs DB (wo der Anwender die Daten später zum versenden ablegt, bzw abholt sollen von außen anparametrierbar sein.
    Genauso die Bytelänge und Hardwareadresse des SFC´s (geht schon)!
    Beim Empfang werden alle Datenbytes in einen Ringpuffer gepackt, beim Senden werden diese vom Anwender/Programm in einen DB(Array) gepackt und von dort werden sie von der Scheibe "Häppchen" für "Häppchen" verschickt!
    Du würdest also im FB die Daten gleich in ein Array packen?
    Beim Senden wie beim Empfangen muss ich aus dem (Byte 1) Control bzw. status Bytes die nötigen "Handshake bits auswerten und und aus dem Byte 2 die Empfangslänge bzw. Sendelänge des Moduls)
    Da die E/A Breite nur 8 Byte sind muss ich auf beiden Wegen (über eine Schleife die Empfangen Daten/bzw. zu Senden Daten zusammenbauen. bzw. häppchenweise verschicken........

    Bei mir wären die Daten nun vom SFC über den Any Pointer ins AR1 von dort in die Ablage(Array) und dann von da je nach Datenlänge (eines einzelnen Telegrammes ab Byte 2 (Nutzdaten fangen da an) in den Empfangs DB als Ringpuffer..........mit Schreibzeiger.......

    Habe mir auch schon überlegt vom SFC die Daten in ein UDT zu speichern, könnte dann symbolisch drauf zugreifen.

  4. #4
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    ok. das mit dem variablen Speicher habe ich so nicht rausgelesen.
    Muss ich erst mal drüber nachdenken...
    "arbeite klug, nicht hart" - deutsches Sprichwort

  5. #5
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    je mehr ich drüber nachdenke, um so unklarer wird mir das Ganze.

    Ich habe noch nie einen Profibusslave gehabt, der seinen Datenbereich ändert.
    Das geht doch gar nicht.
    Oder soll die Parametrierung von Projekt zu Projekt geändert werden können?
    "arbeite klug, nicht hart" - deutsches Sprichwort

  6. #6
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja, es wird wohl noch weitere HW entwickelt...........

    Aber momentan arbeite ich an deiner Idee.........
    Habe am SFC 14 nun eine Temp variable angelegt...........
    die besteht aus den Bits des 1. Statusbytes und einem Array das die Längenangabe der empfangenBytes angibt und dem Nutzdatenarray......

    Überlege mir gerade einen Ablauf der die Anzahl der empfangenen Bytes aus dem Byte 2 entnimmt, die Daten über eine Schleife in einen DB ukopiert und dann ein Handshakebit ausgibt.......(Daten übernommen, Modul kann neue Daten senden..........)

  7. #7
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    das Problem ist doch, das du deine Ablage (Array oder UDT oder was auch immer) nicht dynamisch erweitern kannst.

    Ansonsten ist im Anhang mal ein Beispiel wie ich das mache.
    Es ist aber fix auf einen FU PPO5 zugeschnitten.
    Da ist nix variabel.

    In der Quelle habe ich Code gelöscht, aber es sollte klar sein, wie ich Daten auslese und danach darauf zugreife bzw. das Sende-Array beschreibe und dann abschicke.

    Micha
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    "arbeite klug, nicht hart" - deutsches Sprichwort

  8. #8
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS Killer,

    schau mir das mal in Ruhe an.

    Schon mal vielen Dank

    Gruß TheBadFrog

Ähnliche Themen

  1. Adresse an Pointer übergeben
    Von schuld im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.11.2010, 12:42
  2. Antworten: 4
    Letzter Beitrag: 06.05.2010, 12:24
  3. Antworten: 7
    Letzter Beitrag: 03.04.2008, 21:32
  4. Pointer an FB übergeben, aber wie?
    Von Aendes im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.03.2008, 11:59
  5. Pointer an FB übergeben
    Von xhasx im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 26.07.2007, 22:40

Lesezeichen

Berechtigungen

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