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

Ergebnis 1 bis 8 von 8

Thema: Eigener FB+ SFC14 + ANY-Pointer (AWL)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen,
    ich würde gerne in einem FB mithilfe des SFC14 Daten einlesen. Von welchem Slave/Adressbereich eingelesen werden soll, soll von Außen über den von mir Programmierten FB möglich sein. Dies würde ich gerne über einen ANY-Pointer realisieren den ich an den FB hänge.
    Doch wenn ich den FB-IN Anypointer direkt an den SFC14 klemme, wird dies nicht akzeptiert. (VAR_INPUT passt nicht zu VAR_OUTPUT). Und man kann keine OUT_VAR als ANY-Pointer definieren.

    Also dachte ich mir, dass ich den IN-Pointer vorher in eine statische interne Variable kopiere.
    Code:
     
          L     P##InPointer
          LAR1  
    
          L     P##myPointer
          LAR2  
    
          L     LD [AR1,P#0.0]
          T     LD [AR2,P#0.0]
    
          L     LW [AR1,P#4.0]
          T     LW [AR2,P#4.0]
    
          L     LD [AR1,P#6.0]
          T     LD [AR2,P#6.0]
    Doch das funktioniert auch nicht. SFC gibt den Fehler 8325 aus.


    Wie kann ich mein Vorhaben trotzdem realisieren.

    Würde mich über eure Hilfe sehr freuen.

    Beste Grüße
    FinalMistery
    Geändert von FinalMistery (16.12.2011 um 09:52 Uhr)
    Zitieren Zitieren FB extern beschalten mit ANYPointer  

  2. #2
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo FinalMistery,

    wenn Du den IN-Any auf einen Temp-Any kopierst und diesen dann an den SFC hängst,
    sollte es funktionieren.

    Grüße
    Gebs

  3. #3
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    wenn Du den IN-Any auf einen Temp-Any kopierst und diesen dann an den SFC hängst,
    sollte es funktionieren.
    habe ich beim kopieren einen Fehler gemacht? Oder gibt es eine "schönere" Lösung den ANY zu kopieren

  4. #4
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Vielleicht versuchst du es mal so :
    Code:
    TAR2 #SaveAR2
    
         LAR1     P##InPointer
         LAR2     P##myPointer
    
          L     DID [AR1,P#0.0]
          T     LD [AR2,P#0.0]
    
          L     DIW [AR1,P#4.0]
          T     LW [AR2,P#4.0]
    
          L     DID [AR1,P#6.0]
          T     LD [AR2,P#6.0]
    
    LAR2 #SaveAR2
    Hierbei ist saveAR2 ein DWORD, das auch im Temp-Vereich deklariert ist.
    Beachte aber bitte, dass der Baustein so nicht Multi-Instanz-fähig ist !!! Wegen der AR2-Verwendung und nicht-Berücksichtigung bei der AR1-Pointer-Bildung.

  5. #5
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Lupo Beitrag anzeigen
    Beachte aber bitte, dass der Baustein so nicht Multi-Instanz-fähig ist !!! Wegen der AR2-Verwendung und nicht-Berücksichtigung bei der AR1-Pointer-Bildung.
    mist... an die Multi-Instanzfähigkeit habe ich ja garnicht gedacht. Das muss der Baustein auf jeden Fall bleiben.

    Wie kann ich den ANY-Pointer dann noch kopieren?

    Kann mir da jemand weiterhelfen? Wäre echt klasse!!

  6. #6
    Registriert seit
    15.12.2007
    Beiträge
    712
    Danke
    84
    Erhielt 105 Danke für 94 Beiträge

    Standard

    Also ich lege mir hier im STAT-Bereich einen STRUCT an das genauso groß ist wie die auszulesenden Daten.
    Diesen Struct lege ich dann symbolisch an den SFC14. Und das ganze funzt auch in einer Multiinstanz.
    Die Daten die brauche (z.B. Drehzahl und Strom aus einem FU) wandel ich in dem FB dann entsprechend um wie ich sie brauche
    und kopiere Sie auf OUT-Parameter des FB's

  7. #7
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    die Größe des auszulesenden Bereichs soll aber auch variabel sein. Also das ich verschieden große Adressbereiche dem Slave zuteilen kann über die HWconfig.

    Sonst aber danke für die Idee. Vielleicht kann man das ja mal an einem anderen Ort gebrauchen.

  8. #8
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du brauchst dir doch nur eine Lösung auszudenken, die ohne AR2 auskommt für das Verschieben. Das könnte so aussehen :
    Code:
         LAR1     P##InPointer
         TAR2
         +AR1
    
          L     DID [AR1,P#0.0]
          T     myTemp1DBD
          L     DIW [AR1,P#4.0]
          T     myTemp2DBW
          L     DID [AR1,P#6.0]
          T     myTemp3DBD
    
         LAR1     P##myPointer
    
          L     myTemp1DBD 
          T     LD [AR1,P#0.0]
    
          L     myTemp2DBW 
          T     LW [AR1,P#4.0]
    
          L     myTemp3DBD
          T     LD [AR1,P#6.0]
    Ist aber ungestestet !

Ähnliche Themen

  1. Eigener AMS/ADS Client
    Von Neals im Forum CODESYS und IEC61131
    Antworten: 29
    Letzter Beitrag: 15.01.2016, 20:46
  2. SINUMERIK 840D eigener Text-Editor
    Von bit_schubser im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 21.04.2010, 16:47
  3. eigener Hilfetext in STEP7 Bibliothek
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.05.2007, 12:33
  4. Eigener Bereich Antriebstechnik
    Von Maxl im Forum Stammtisch
    Antworten: 8
    Letzter Beitrag: 17.02.2006, 01:55
  5. Erstellen eigener log. Bausteine
    Von Manticor im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 11.07.2004, 11:09

Lesezeichen

Berechtigungen

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