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

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

Thema: Pointer Adressieren auf FC Eingangsstruktur (Adressregister eines FCs)

  1. #1
    Registriert seit
    23.10.2008
    Ort
    Vreden
    Beiträge
    33
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an Alle,

    Ich habe volgendes Problem: Ich will in einer Function den Inhalt einer Eingangsstruktur mit 8 Bits als Byte erhalten. Ich dacht dann an einen Pointer auf diese Struktur in etwa so:

    L P##IN_Struct_mit_8Bits
    LAR1
    L B [AR1,P#0.0]
    T MB 100

    Das Funktioniert aber nicht.
    Ich habe bemerkt dass die Eingänge eines FC in der Function nicht als Localvariablen zu Verfügung stehen sondern irgendwie als Pointer auf Localvariablen der Aufrufenden Funktion. Wie kann man diese Vernünftig adressieren?
    Hat da jemand eine Lösung?
    TIA
    uhu was? Nix wisse...
    Zitieren Zitieren Pointer Adressieren auf FC Eingangsstruktur (Adressregister eines FCs)  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    schon:

    Code:
    *
           L          P##IN_Struct_mit_8Bits.Bit0
           LAR1
    versucht?


    Zitat Zitat von KingKai78 Beitrag anzeigen
    TIA
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Hallo,

    um die Anfangsadresse deiner Struct im Adressregister 1 zu kriegen reicht ein

    u "struct"."bit1"

    im FC aus.

    Danach kannst du indirekt weitermachen.

    Gruß Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von SPSKILLER Beitrag anzeigen
    Hallo,

    um die Anfangsadresse deiner Struct im Adressregister 1 zu kriegen reicht ein

    u "struct"."bit1"

    im FC aus.

    Danach kannst du indirekt weitermachen.

    Gruß Micha
    Öh, wie meinst du das?

    Die Veersion von 4L finde ich das wesentlich einleuchtender und die stimmt auch auf jeden Fall.
    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

  5. #5
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Wenn du z.B. in einem FC als IN ne Struct hast, die "Test" heisst und mit nem Bit (Name z.B. "b1") beginnt, dann reicht es aus
    Code:
    u Test.b1
    clr
    zu schrieben.
    AR1 ist dann mit der Startadresse der Struct geladen.

    So hab ich das gemeint.

    Gruß Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  6. #6
    Registriert seit
    23.10.2008
    Ort
    Vreden
    Beiträge
    33
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Idee

    Also das funst alles nicht denn die IN-Variablen als !!Struktur!! werden ihrerseits als Pointer behandelt und zwar wird der Datenbereich der in der Aufrufenden Funktion am Eingang gelegten Variablen angeben. Liegt da ein DB dann ists vom Typ n DB, Liegt da eine Temporäre Variable dran dann ists vom Typ V (Localdaten der Vorhärigen Funktion).
    Also muss ich den Ponter lesen und meinen neuen Pointer entsprechend stellen.
    Ich habe es so gemacht:


    L P##IN_Struct_mit_8Bits
    LAR1
    +AR1 P#2.0
    L D [AR1,P#0.0]
    LAR1
    L B [AR1,P#0.0]
    T #TEMP_
    8Bits

    Diese Lösung funktioniert aber nur wenn es sich um Lokaldaten handelt die an der Eingangstruktur gelegt werden. Wenn z.B. ein DB oder Localdaten angelegt werden sieht es dann so aus:

    L P##IN_Struct_mit_8Bits
    LAR1
    T #D_Temp1
    +AR1 P#2.0
    L D [AR1,P#0.0]
    LAR1
    SRD 24
    L B#16#84
    <>I
    SPB next
    L #D_Temp1
    LAR1
    L W [AR1,P#0.0]
    T #DBNR
    AUF DB [#DBNR]
    next: L B [AR1,P#0.0]
    T
    #TEMP_8Bits




    uhu was? Nix wisse...
    Zitieren Zitieren Alles Falsch  

  7. #7
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Zitat Zitat von SPSKILLER Beitrag anzeigen
    Wenn du z.B. in einem FC als IN ne Struct hast, die "Test" heisst und mit nem Bit (Name z.B. "b1") beginnt, dann reicht es aus
    Code:
    u Test.b1
    clr
    zu schrieben.
    AR1 ist dann mit der Startadresse der Struct geladen.

    So hab ich das gemeint.

    Gruß Micha
    was passiert denn, wenn du das so machst?
    Nach dem clr sollte dann die nächste Zeile

    L B [AR1,p#0.0]

    dein Byte auslesen!
    Wo soll der Fehler sein?

    Ich verwende das oft so.

    Funktioniert bei mir auch wenn ich DB-Struckturen an den FC verschalte...
    "arbeite klug, nicht hart" - deutsches Sprichwort

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ja, stimmt, du hast geschrieben Eingangsstruct. Das du da also ein Struct anlegst, hab ich nicht so richtig rausgelesen. Dann muß du natürlich den übergebenen Pointer in seine Bestandteile zerlegen. Das ist dann wie die Übergabe einiger Datentypen an FB. Müßte aber etliches hier im Forum rumschwirren.
    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

  9. #9
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Was ist an meiner Version falsch?
    Habe ich das falsch verstanden?
    "arbeite klug, nicht hart" - deutsches Sprichwort

  10. Folgender Benutzer sagt Danke zu SPSKILLER für den nützlichen Beitrag:

    JoopB (23.10.2008)

  11. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @KingKai78
    Hier finde ich das ein wenig übersichtlicher, als in deinem Codebeispiel:
    http://www.sps-forum.de/showthread.p...ght=Pointer+FB
    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

Ähnliche Themen

  1. Pointer indirekt zu adressieren
    Von Erich04 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.05.2011, 07:54
  2. Adressregister u Pointer in FB
    Von Gerri im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 30.09.2009, 18:17
  3. Pointer - Adressregister auslesen
    Von Hope im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 04.06.2009, 08:16
  4. Adressregister und Pointer
    Von jan820813 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.03.2008, 18:54
  5. DB-Pointer indirekt Adressieren
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.03.2004, 16:59

Stichworte

Lesezeichen

Berechtigungen

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