deklarierung eines any pointers

viech

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo !

Ich arbeite mit der Software von MHJ WinSPS V3 und hätte ein paar Fragen zu den ANY Pointern. Den Beitrag von Volker habe ich gelesen und verstehe auch wie ein Any Pointer zussammengesetzt ist. Mein Problem:
Wenn ich an einen FC als eingangsprameter einen Any geben will
wie und wo muss ich den deklarieren? Im Bausteinkopf habe ich eine "IN-Variable" des Type ANY angelegt nur wie kann ich auf die einzelnen Byts meiner IN-Variable zugreifen ab die IN Variablen werden doch auch als Temporäre daten geschpeichert? oder?

Danke im Vorraus


MFG

Christoph
 
Hier mal ein kurzes Programmbeispiel:

Code:
FUNCTION FC 200 : VOID
TITLE =ANY-Zeiger
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : 'ANY'
VERSION : 1.0
 
VAR_INPUT
  ANY_ZEIGER : ANY ;    
END_VAR
VAR_TEMP
  SYNTAX_ID : BYTE ;    
  DATENTYP : BYTE ; 
  ANZAHL : WORD ;   
  DB_NUMMER : WORD ;    
  BEREICHSZEIGER : DWORD ;  
END_VAR
BEGIN
NETWORK
TITLE =ANY-Zeiger
 
      L     P##ANY_ZEIGER; // ANY-Zeiger
      LAR1  ; 
 
      L     B [AR1,P#0.0]; // Syntax-ID
      T     #SYNTAX_ID; 
 
      L     B [AR1,P#1.0]; // Datentyp
      T     #DATENTYP; 
 
      L     W [AR1,P#2.0]; // Anzahl
      T     #ANZAHL; 
 
      L     W [AR1,P#4.0]; // DB-Nummer
      T     #DB_NUMMER; 
 
      L     D [AR1,P#6.0]; // Bereichszeiger
      T     #BEREICHSZEIGER; 
 
 
      AUF   DB [#DB_NUMMER]; // DB-Nummer
 
      L     #BEREICHSZEIGER; // Bereichszeiger
      LAR1  ; 
 
END_FUNCTION

Gruß Kai
 

Anhänge

  • OB1.pdf
    3,2 KB · Aufrufe: 24
  • FC200.pdf
    2,8 KB · Aufrufe: 23
  • DB200.pdf
    3 KB · Aufrufe: 22
  • FC200 ONLINE DEZ.jpg
    FC200 ONLINE DEZ.jpg
    315,2 KB · Aufrufe: 39
  • FC200 ONLINE HEX.jpg
    FC200 ONLINE HEX.jpg
    313,3 KB · Aufrufe: 30
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank

Hallo Kai!

Hat funktioniert! Ich danke dier sehr, schon ein weilchen das ich mich mit diesem Thema rumschlage!
Da ich nicht mit der Siemenssoftware arbeite dachte ich das geht bei Win SPS nicht mal, da er mier den Behfel L##Pany immer einen Fehler meldete aber jetzt hats geklapt. Vielen dank nochmal!
P.S bei FBs ist die selbe vorgehensweise ?


mfg
Christoph
 
Da ich nicht mit der Siemenssoftware arbeite dachte ich das geht bei Win SPS nicht mal, da er mier den Behfel L##Pany immer einen Fehler meldete aber jetzt hats geklapt.

Ich weiß ja nicht, was Du genau für eine Anweisung eingegeben hast, aber bei einem FC ist folgende Anweisung ungültig:

LAR1 P##ANY_ZEIGER

Bei der Eingabe der Anweisung, sowie bei dem Versuch, den FC abzuspeichern, bekommt man eine Fehlermeldung.

Bei einem FC muss man immer folgende Anweisung eingeben:

L P##ANY_ZEIGER
LAR1

bei FBs ist die selbe vorgehensweise ?

Ja, mein Programmcode funktioniert auch bei einem FB.

Gruß Kai
 
danke nochmals!

Im FB kann man aber LAR1 p##any eingebnen?
Und warum ist das so? das im FC ein anderer Befehl genutzt wird wie im fb?

MFG
Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im FB kann man aber LAR1 p##any eingebnen?
Und warum ist das so? das im FC ein anderer Befehl genutzt wird wie im fb?

MFG
Christoph

Das ist ein gut gehütetes Siemensgeheimnis. Deshalb wirst du wohl keine Antwort darauf bekommen. :ROFLMAO:
 
Und hier ein Zitat aus der Siemens-FAQ:

3. Der Unterschied zwischen einem FB und einer FC besteht darin, dass Sie mit der Anweisung "LAR1 P##Variablenname"
  • in einer FC nur auf die TEMP-Variablen (Lokaldatenstack) zugreifen können,
  • in FBs können Sie zusätzlich auch auf die IN-, OUT-, INOUT- und STAT-Variablen zugreifen.
Gruß Kai
 
Zurück
Oben