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

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

Thema: ANY-Pointer auf temporären Struct im FB

  1. #11
    Registriert seit
    14.10.2008
    Beiträge
    44
    Danke
    8
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von volker Beitrag anzeigen
    da du die ganze zeit vom temporären bereich geschrieben hast, bin ich davon ausgegangen das du im deklarationsbereich temp meinst.
    so wie es jetzt aussieht, meintest du aber den stat - bereich.
    Nein ich meine schon den Temp-Bereich.

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    @Volker:
    das war schon so korrekt - ich hatte da nicht richtig aufgepasst. Für den SFC20 sind die Lokaldaten (TEMP) des aufrufenden Bausteins natürlich die vorherigen Lokaldaten (Kennung 87 und nicht 86) - siehe Beitrag von Gebs ...

    @Christian:
    du kannst deshalb trotzdem den Codevorschlag von mir übernehmen (nur eben mit der richtigen Kennung : 87 !!!). Der Vorteil des symbolischen Pointers (L p##Motordaten) gegenüber der absoluten Adressierung bei dir (L 20 und dann SLD 3) ist der, dass sich hier der Pointer automatiosch anpasst, wenn du deinen TEMP-Bereich mal veränderst.

    und noch etwas :
    der Zielbereich vom Blockmove muß natürlich genauso groß (oder größer) sein, wie die Menge der Daten, die du kopieren willst. Der eine der beiden Fehler, die du hattest besagte nämlich, dass dein Zielbereich nicht ausreichend groß genug war ...

    Gruß
    LL

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    ChristianPaier (15.07.2009)

  4. #13
    Registriert seit
    14.10.2008
    Beiträge
    44
    Danke
    8
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    @Christian:
    Der Vorteil des symbolischen Pointers (L p##Motordaten) gegenüber der absoluten Adressierung bei dir (L 20 und dann SLD 3) ist der, dass sich hier der Pointer automatiosch anpasst, wenn du deinen TEMP-Bereich mal veränderst.
    So war es ja auch von Anfang an gedacht. Aber da ich mich seit heute morgen erst mit Pointern befasse war mir das noch ein wenig zu heiss. Da es mit der absoluten Adressierung aber jetzt schon funktioniert mache ich mich jezt mal dran es indirekt aufzubauen.

    Noch was... Ich möchte für den Quellzeiger dem Baustein direkt einen Pointer übergeben, aber ich bin mir nicht sicher ob das geht oder ob es an der schreibweise liegt.
    p#db10.dbb0 (geht so mal nicht)
    Geändert von ChristianPaier (15.07.2009 um 13:31 Uhr)

  5. #14
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    leider kann man an die sfc20 keinen anyzeiger aus dem in-bereich legen
    du kannst das aber umtransferieren in den temp-bereich.
    z.b. so
    obs eleganter geht weiss ich im mom nicht
    Code:
          L     P##any_in  //in-parameter vom typ any
          LAR2  
          L     B [AR2,P#1.0]               // TYP in AKKU1-L laden (2=bytes)
          L     W [AR2,P#2.0]               // Anzahl Elemente        
          T     #laenge                // Laenge Bereich in Bytes
     
     
    l _p##any_temp
    lar1
    l d [ar2,p#0.0]
    t d [ar1,p#0.0]
    l d [ar2,p#4.0]
    t d [ar1,p#4.0]
    l w [ar2,p#8.0]
    t w [ar1,p#8.0]
    Code:
          L     P##date_time  //in-parameter vom typ date_and_time
          LAR1  
          L     W [AR1,P#0.0]               //DB-Nr. der Eingangsvariablen oder Null
          T     #DB_NR
          AUF   DB [#DB_NR]                 //Aufschlagen über das DB-Register
          L     D [AR1,P#2.0]               //Bereichszeiger auf die Variable
          LAR1                              //AR1 plus DB-Register zeigen auf Variable
    Geändert von volker (15.07.2009 um 15:01 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    ChristianPaier (15.07.2009)

  7. #15
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.735
    Danke
    321
    Erhielt 1.523 Danke für 1.283 Beiträge

    Standard

    Also ich finde ja obige Ausführungen zu den Any-Pointern durchaus interessant,
    aber wäre für diesen Anwendungsfall ein IN/OUT Parameter als UDT nicht bedeutend einfacher?

    Abgesehen davon auch noch bedeutend übersichtlicher ...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  8. #16
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    mal ne frage nebenbei
    wie sieht die syntax am fc/fb aus wenn ich einen udt übergeben möchte?
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    @Volker:
    so wie ich die Frage von dir verstanden habe : Die Beschaltung am FC / FB ist in etwa identisch, als wenn du einen String (z.B.) übergeben würdest. Hattest du das gemeint ?

  10. #18
    Registriert seit
    14.10.2008
    Beiträge
    44
    Danke
    8
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    aber wäre für diesen Anwendungsfall ein IN/OUT Parameter als UDT nicht bedeutend einfacher?

    Abgesehen davon auch noch bedeutend übersichtlicher ...
    Kann ich mir nicht vorstellen, die Motordaten liegen ja alle in einem zentralen Db der aus ca. 50 einzelnen Motor-udt's besteht. Die Visualisierung der Anlage wird von einen Fremdfirma mit diesem DB gemacht.

    Da heisst mein Multi-Instanz Motor-FB muss auch in der Lage sein sich irgendwo aus diesem Datenbaustein die richtigen Daten für den jeweiligen Motor raus zu suchen, diese zu editieren und wieder zurück zu schreiben.

    Ich weiß nicht ganz wie du das mit deinem Vorschlag meinst.

  11. #19
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ok hat sich erledigt
    irgendwie wollte er z.b. db2.udt_1 nicht schlucken.
    nachdem ich mal den editor geschlossen habe und neu geöffnet gings
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  12. #20
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.735
    Danke
    321
    Erhielt 1.523 Danke für 1.283 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von ChristianPaier Beitrag anzeigen
    Kann ich mir nicht vorstellen, die Motordaten liegen ja alle in einem zentralen Db der aus ca. 50 einzelnen Motor-udt's besteht. Die Visualisierung der Anlage wird von einen Fremdfirma mit diesem DB gemacht.

    Da heisst mein Multi-Instanz Motor-FB muss auch in der Lage sein sich irgendwo aus diesem Datenbaustein die richtigen Daten für den jeweiligen Motor raus zu suchen, diese zu editieren und wieder zurück zu schreiben.

    Ich weiß nicht ganz wie du das mit deinem Vorschlag meinst.
    Also ich sach mal so:
    Du hast einen Motor-FB, diesen rufst du als Multiinstanz in einen weiteren FB 50 mal auf

    Also so:
    Call Motor_1
    IN OUT dese Motors1

    Call Motor_2
    IN OUT dese Motors2

    ...

    Als IN/OUT Parameter deines Motor-FB's hast du nun einen weiteren Parameter IN/OUT z.B. Visu vom TYP MotorUDT

    Innerhalt deines Motor-FB schreibst du dann:
    U BA_Hand
    = Visu.BA_Hand

    oder
    L Motorstrom
    T Visu.Motorstrom_Aktuell

    L Visu.Sollwert
    T Sollwert

    Ich hoffe das Prinzip wäre klar ...

    Obiges ist natürlich nur ein Beispiel, keine Ahnung was letzten Endes in deinem Motor-UDT steht ...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  13. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    ChristianPaier (15.07.2009)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 08.04.2011, 14:36
  2. Struct vergleich mit pointer und sizeof
    Von hago10 im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 31.01.2011, 18:22
  3. SCL: Pointer auf Struct in DB
    Von DunderHEAD im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 13.08.2010, 10:05
  4. Twincat POINTER STRUCT
    Von Basstarono im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 21.07.2008, 11:30
  5. pointer über temp struct...
    Von Jochen Kühner im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.09.2006, 10:23

Lesezeichen

Berechtigungen

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