Eigener FB+ SFC14 + ANY-Pointer (AWL)

FinalMistery

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
FB extern beschalten mit ANYPointer

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
 
Zuletzt bearbeitet:
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
 
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.
 
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!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
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 !
 
Zurück
Oben