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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Pointer als IN (FC/FB) wieder übergeben als Pointer

  1. #1
    Registriert seit
    05.11.2011
    Beiträge
    75
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich habe schon einige Threads hierzu gefunden, aber offenbar keinen der zu meinem Problem passt?!

    Ich nutze den FC86 (TBL_FIND bzw. Table Find), welcher als IN einen Pointer (Datentyp Pointer) benötigt. Dieser FC86 befindet sich wiederum in einem FC oder FB.

    Mein Vorhaben ist es nun, dem übergeordneten FC/FB als IN den Pointer zu übergeben, welcher dann innerhalb dieses FC/FB an den FC86 übergeben wird.
    Hierzu muss man dem was ich gelesen habe nach erstmal den Pointer in eine TEMP-Variable bekommen und über das Adressregister einen neuen Pointer für den FC86 zusammen stellen - die direkte Verwendung des IN-Pointers vom übergeordneten FC/FB geht ja nicht.


    Ich habe in den anderen Threads gelesen, wie man den Pointer (Datentyp Pointer) oder einen ANY-Pointer (Datentyp ANY) zerpflückt, aber nicht wie ich daraus wieder einen Pointer mache, welchen ich dem IN (Datentyp Pointer) des FC86 übergeben kann.



    PS: Der übergeordnete FC/FB könnte statt einem Pointer-IN (Datentyp Pointer) auch mehrere Eingänge (z.B. INT) haben, über die man die notwendigen Angaben übergibt.

    PPS: Wer den FC86 nicht kennt: Er benötigt nur einen Pointer zum Startpunkt, keinen Bereich ... also z.B. P#DB1.DBX0.0
    Zitieren Zitieren Pointer als IN (FC/FB) wieder übergeben als Pointer  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    In der FAQ gibt es einen recht guten Beitrag, ich glaube von Volker, der zeigt, wie man einen Any zusammenbaut.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Any ist aber was anderes als ein Pointer. Denn ein Pointer ist nur ein Parametertyp. Ich kann also nicht in den Temp-Variablen einen Pointer-Datentyp anlegen. Man kann natürlich eine 6-Byte Struktur dort beschalten, wenn ich diese jedoch an den entsprechenden Parameter des FC-Aufrufs schreibe, zeigt der Pointer auf die Struktur in den Temp-Daten.

    Ich wüsste keine Lösung für dein Vorhaben wenn der aufzurufende FC einen Parameter vom Typ Pointer verlangt. Beim Parameter Any sieht das anders aus.

    Aber vielleicht gibts da ja doch einen Trick. Wo ist 4lagig eigentlich?

  4. #4
    Registriert seit
    05.11.2011
    Beiträge
    75
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Genau das is der Punkt... es muss ein Typ POINTER sein, kein ANY.

    Beschrieben wird aber bisher immer nur der Aufbau vom ANY-Pointer (TYP ANY). Ich muss aber einen TYP POINTER zusammen bauen...


    Über ein Struct im TEMP hab ichs gerade probiert, aber entweder gehts tatsächlich so nicht oder ich mache etwas falsch

  5. #5
    Registriert seit
    05.11.2011
    Beiträge
    75
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    In der Onlinehilfe zum FC86 steht "* Pointer im Doppelwortformat bei der bereichsübergreifenden, registerindirekten Adressierung" ... aber wenn ich nur ein DWORD an den FC86 anlege, klappts auch nicht. Entweder meldet der FC86 dass er keine Übereinstimmung findet (obwohl eine da ist) oder er meldet keinen Fehler, aber auch einfalsches Ergebnis ... oder er meldet schnell abwechselnd kein Ergebnis bzw. keine Übereinstimmung

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Der Pointer zeigt immer auf die Variable die du am Funktionsaufruf angibst, und nie dahin wo der Inhalt der Variable (wenn es ein Pointer sein soll) hinzeigt.
    Wenn du also eine Variable in Temp-Bereich anlegst und die am FC angibst, zeigt der Pointer auf die Variable im Temp-Bereich.
    Bei einem FB könntest du den Pointer als In/Out an eine weitere Funktion weiterleiten (zumindest meckert der Editor dann nicht). Das funktioniert aber trotzdem nicht, weil der Zeiger auf die Adresse der FB Instanz zeigt, und nicht auf den Aktualwert der außen angeschaltet wurde.

  7. #7
    Registriert seit
    05.11.2011
    Beiträge
    75
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Kann ich denn irgendwie den Pointer so in dem FC/FB zusammen bauen, dass er am FC86 richtig angenommen wird?
    Kann auch in SCL sein, da brauch ich dann aber wohl mehr Hilfe - hab da noch nicht viel mit gemacht...

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von saarlaender Beitrag anzeigen
    Kann ich denn irgendwie den Pointer so in dem FC/FB zusammen bauen, dass er am FC86 richtig angenommen wird?
    Kann auch in SCL sein, da brauch ich dann aber wohl mehr Hilfe - hab da noch nicht viel mit gemacht...
    Meiner Meinung nach geht es nicht, aber vielleicht kommt ja noch was.
    Und was in AWL schon nicht geht, das geht in SCL erstrecht nicht.

    Aber wenn du SCL zur Verfügung hast ist es doch einfach sich einen Ersatz für diesen Baustein zu schreiben. Oder kannst du nicht mehr umstellen?

  9. #9
    Registriert seit
    05.11.2011
    Beiträge
    75
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Der FC86 ist geschützt, keine Ahnung wie der funktioniert ... und da ich kaum SCL kann, könnte ich den niemals nachbauen ^^


    Wenn sich keine Möglichkeit mehr findet, kennt evt. jemand eine andere Funktion die das gleiche Ergebnis bringt...


    EDIT: Mache für die Suche nach einer geeigneten Funktion mal einen neuen Thread auf ^^

  10. #10
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann ist doch jetzt der beste Zeitpunkt um bei SCL einzusteigen.
    Was in AWL Raketentechnik ist, ist in SCL ein Dreizeiler.

Ähnliche Themen

  1. ANY Pointer als In Parameter...
    Von haraldign im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.02.2016, 13:35
  2. Pointer an FC als IN
    Von Django2020 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 21.05.2012, 19:33
  3. ANY Pointer als RECORD
    Von akus0n im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.09.2010, 09:00
  4. Pointer als IN/Out an FC
    Von mitchih im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.10.2008, 09:21
  5. Pointer als IN im FC verarbeiten
    Von Hewlett_de im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 03.07.2006, 22:00

Lesezeichen

Berechtigungen

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