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

Ergebnis 1 bis 5 von 5

Thema: ANY Pointer als RECORD

  1. #1
    Registriert seit
    07.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ähnlich wie beim SFC14 und 15 möchte ich einen FB erstellen, der in einen bestimmten Bereich "RECORDEN" soll.

    Hierzu habe ich als IN Parameter:

    fault_pew (Typ INT)
    fault_record (Typ ANY)

    Die zu verarbeiteten Daten werden über fault_pew im FB benutzt und sollen dann über den SFC 20 "BLKMOV" in einen am fault_record angegeben Bereich geschrieben werden, der immer 10 Byte groß ist (z.B. fault_record ist mit P#DB100.DBX50.0 BYTE 10 beschaltet)

    Wie kriege ich es hin, dass ich die Daten mit Hilfe des Ausgangs DSTBLK am SFC 20 an den am fault_record vorgegeben Bereich senden kann?

    Hab mir bereits viel über die Any(Pointer) Geschichte hier durchgelesen, finde aber nicht wirklich einen passenden Einstieg auf Anhieb.

    Ich hoffe, dass mir jemand helfen kann Danke
    Zitieren Zitieren ANY Pointer als RECORD  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von akus0n Beitrag anzeigen
    Hab mir bereits viel über die Any(Pointer) Geschichte hier durchgelesen, finde aber nicht wirklich einen passenden Einstieg auf Anhieb.
    Schade, denn die Beschreibungen zu dem Thema (und dazu gibt es außer dem wirklich tollen Beitrag in der FAQ etliche, die zum Teil eine ähnliche Sache, wie deine beschreiben) sind wirklich gut.

    Was verstehst du denn konkret nicht ?

    Gruß
    Larry

  3. #3
    Registriert seit
    20.09.2010
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo akus0n,

    Zitat Zitat von akus0n Beitrag anzeigen
    Wie kriege ich es hin, dass ich die Daten mit Hilfe des Ausgangs DSTBLK am SFC 20 an den am fault_record vorgegeben Bereich senden kann?
    das Hauptproblem ist wohl, dass der übergebene Any-Pointer gar nicht ans den SFC20 als DSTBLK geschrieben werden kann. Ich kopieren mir den Any-Pointer zu diesem Zweck immer erst in einen lokalen Pointer im Temp-Bereich:
    Code:
    VAR_INPUT
      fault_record : ANY ;    
    END_VAR
    VAR_TEMP
      ptr : ANY ;    
      ar2_save : DWORD ;    
    END_VAR
    
    NETWORK
    TITLE =Any-Pointer in temp-Bereich basteln
    
    //ar2 muss unbedingt gerettet werden, wenn Multinstanzen im Spiel sind
          TAR2  ; 
          T     #ar2_save; 
    
    // anypointer umkopieren
          L     P##fault_record; 
          LAR1  ; 
          L     P##ptr; 
          LAR2  ; 
          L     D [AR1,P#0.0]; 
          T     D [AR2,P#0.0]; 
          L     D [AR1,P#4.0]; 
          T     D [AR2,P#4.0]; 
          L     W [AR1,P#8.0]; 
          T     W [AR2,P#8.0]; 
    
    //ar2 wiederherstellen      
          L     #ar2_save; 
          LAR2  ;
    Den lokalen Pointer ptr kannst Du nun an den Ausgang DSTBLK des SFC 20 schreiben.

    Gruß
    apollo13

  4. #4
    akus0n ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    erst einmal Danke für die schnelle Hilfe

    Habe den FB von mir jetzt nach apollo13's Idee angepasst, funktioniert auch soweit, ABER nur wenn ich meinen FB nicht als Multiinstanz calle sondern jedem meiner FBs eine extra DB zuordne..

    Woran kann das liegen?

    Mein Aufbau des Programms sieht wie folgt aus:

    FB20 (mein FB) wird 4 mal im FB30 gecallt, FB30 wird im OB1 gecallt.

    Wenn FB20 jeweils einen eigenen DB hat funktioniert es wunderwar, sobald ich meinen 4x FB20 verschiedene Multiinstanzen zuordne funktioniert es nicht mehr.

  5. #5
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du mußt den Offset vom Adressregister dazuzählen. Wenn du Multiinstanz bei der Suche eingibst, wirst du die Lösung finden.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

Ähnliche Themen

  1. Pointer und Co
    Von mkd im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.07.2008, 14:30
  2. SCL: Pointer
    Von dinner4one im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.07.2008, 18:07
  3. Pointer in SCL ?
    Von AndreK im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.04.2008, 21:24
  4. DB und Pointer
    Von PhilippL im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2007, 07:02
  5. VKE und Pointer im FC...
    Von halorenzen im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.07.2004, 13:16

Lesezeichen

Berechtigungen

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