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

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

Thema: Indir. symbolische Adressierung

  1. #1
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS Gemeinde,

    Ich habe das folgende Problem. Ich habe einen FB, dem ein ANY-Pointer übergeben wird. Der Pointer zeigt auf ein UDT, der sich in einem Datenbaustein befindet.

    Nun möchte ich in meinem FB auf Variablen des UDT's symbolisch zugreifen. Also z.B: myUDT.Var1

    In AWL kann ich immer nur absolut auf die UDT-Struktur zugreifen, was heißt ich muss vorher wissen, wie der Datenbaustein heißt. Indirekt geht es wiederum nicht symbolisch, was heißt ich muss die Adressen der Variablen im DB kennen und dementsprechend meinen Pointer anpassen.

    Nun habe ich bisher noch keine Erfahrung mit SCL gemacht. Ist in SCL eine indirekte symbolische Adressierung möglich?
    Zitieren Zitieren Indir. symbolische Adressierung  

  2. #2
    Registriert seit
    23.10.2008
    Ort
    Rhein-Main-Gebiet
    Beiträge
    25
    Danke
    9
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Hallo,
    aus dem Any-Pointer kannst Du alle relevanten Informationen rausholen um indirekt zu adressieren. Du musst aber die offsetwerte der enizelnen Variablen deiner UDT Kennen.

    Willst du Symbolisch adressieren, kannst Du den selben UDT in Temp hinterlegen, mit SFC 20 die Daten holen, bearbeiten und zurückspielen. Es geht aber nur über Umwegen und ist komplizeirt.

    Empfehlung:
    Kein Any sondern den UDT als Eingangsvariable (oder IN_OUT) deklarieren und beim Aufruf Dein DBx.[name des UDT] durchreichen.

    Gruß: Geza
    Geändert von geza (16.09.2010 um 16:35 Uhr)

  3. Folgender Benutzer sagt Danke zu geza für den nützlichen Beitrag:

    Beckx-net (16.09.2010)

  4. #3
    Beckx-net ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Lächeln

    Hey Geza
    Ich habe auch schon mit der Übergabe von UDTs rumgespielt. Dummerweise muss man immer den UDT absolut angeben. Somit darf dieser später nie umbenannt werden.

    Meine Lösung sieht so aus, dass ich die Struktur des UDT's nocheinmal im Temp-Bereich des FBs schreibe. Und dann mit dem sfc20 den Inhalt kopiere.

    Danke für deine Anregung, war sehr hilfreich

    THX

  5. #4
    Registriert seit
    23.10.2008
    Ort
    Rhein-Main-Gebiet
    Beiträge
    25
    Danke
    9
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Beckx-net Beitrag anzeigen
    Ich habe auch schon mit der Übergabe von UDTs rumgespielt. Dummerweise muss man immer den UDT absolut angeben.
    Hallo,
    wie meinst Du das. Villeicht Symbolisch wie der Name im DB steht, oder? Umbenennen kann man trotzdem, muß man aber die Aufrufe aktualisieren.

    Gruß: Geza

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von Beckx-net Beitrag anzeigen
    Nun habe ich bisher noch keine Erfahrung mit SCL gemacht. Ist in SCL eine indirekte symbolische Adressierung möglich?
    Nein ... das ist ja auch schon ein Widerspruch in sich. Entweder indirekt oder symbolisch. SCL mag am Liebsten symbolisch und das geht nur wenn Quelle oder Ziel bekannt. Dann kann man hier auch viel an Zugriffen ausschöpfen.

    Zu dem, wozu dir geza schon geschrieben hat :
    Wenn du dir in deinem Arbeitsbaustein den UDT (z.B. im TEMP-Bereich) abbildest, so hast du dabei das gleiche Problem, wie bei der direkten Übergabe als IN-Parameter : änderst du die Struktur des UDT, so mußt du auch den Arbeitsbaustein aktualisieren - so oder so ...
    Ich würde hier auf jeden Fall zum 2mal-Nachdenken und zu gehöriger (Selbst-)Disziplin raten - sicherlich kann man immer alles irgendwie machen - aber muß man das auch immer tun ...?

    Gruß
    Larry

  7. #6
    Beckx-net ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Wenn ich in meinem FB als Input-Variable einen UDT auswähle, dann muss ich immer mit angeben, wie dieser heißt zb. UDT1 (oder symbolische Bezeichnung).

    Die Struktur an sich ändert sich nicht! Es ist allerdings möglich, das sich die Bezeichnung des UDT's ändert und somit muss auch der FB geändert werden, weil sonst die Referenz nicht stimmt.

    Diese Problematik versuche ich so weit wie möglich zu umgehen.

    Wie sieht es denn in SCL aus? Kann man dort einen DB übergeben und symbolisch auf dessen Inhalte zugreifen? Ich habe bislang nur CoDeSys Steuerungen in structured Text programmiert. Dort kann man eine Structur-Instanz als Pointer übergeben. Auf den Inhalt kann anschließend symbolisch zugreifen.

    Aber du hast schon recht, es gibt viele Wege

  8. #7
    Registriert seit
    23.10.2008
    Ort
    Rhein-Main-Gebiet
    Beiträge
    25
    Danke
    9
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Die Struktur an sich ändert sich nicht! Es ist allerdings möglich, das sich die Bezeichnung des UDT's ändert und somit muss auch der FB geändert werden, weil sonst die Referenz nicht stimmt.
    Wieso sollte man den Namen ändern? Wenn ich ein UDT einmal benannt habe, bleibt es dabei. Wie schon Larry geschrieben hat:
    Ich würde hier auf jeden Fall zum 2mal-Nachdenken und zu gehöriger (Selbst-)Disziplin raten
    Abgesehen davon, es kann alles automatisch aktualisiert werden. Je nach dem, ob sich die UDT Nummer oder der symbolische Name ändert, wählt man die entsprechende Priorität und lässt man alles neu übersetzen.

    Gruß: Geza

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... wie auch immer ... es gibt in SCL da jedenfalls auch keinen Weg, das zu umgehen. SCL arbeitet (besonders gerne) mit Allem, wovon es den Aufbau kennt.

    Vielleicht ist es aber auch nur ein Problem der Methodik ...
    Was willst du denn genau machen ? Vielleicht läßt sich das Pferd ja auch anders aufzäumen ...

    Gruß
    Larry

  10. #9
    Beckx-net ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Gibt es denn in SCL die Möglichkeit einen Pointer auf ein Element einer Struktur zu legen und zwar symbolisch?

    In AWL scheint dies ja nicht der Fall zu sein (siehe Link)
    http://sps-forum.de/showthread.php?t...inter+struktur

    Also in etwa so
    LAR1 P##MeineStrucktur.Element1
    L B[AR1, P#0.0]
    ....

    Was das Problem mit dem UDT angeht, ich habe mich für die Lösung mit der Übergabe eines UDT's entschieden.

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du kannst in SCL nicht mit Pointern arbeiten - du kannst dir aber z.B. eine AT-Sicht auf ein bekanntest Element machen um es anders zu interpretieren.

    Ich wiederhole aber noch einmal die Frage :
    Vielleicht ist es aber auch nur ein Problem der Methodik ...
    Was willst du denn genau machen ? Vielleicht läßt sich das Pferd ja auch anders aufzäumen ...
    Gruß
    Larry

Ähnliche Themen

  1. Symbolische indirekte Adressierung
    Von Isha im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 18.06.2010, 13:10
  2. symbolische Adressierung in AWL
    Von wiede im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 09.02.2008, 15:36
  3. Indir.DP Übetragung zwischen SPSen
    Von vladi im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 02.02.2008, 15:39
  4. Antworten: 3
    Letzter Beitrag: 28.09.2005, 15:46
  5. Antworten: 1
    Letzter Beitrag: 10.09.2005, 11:15

Lesezeichen

Berechtigungen

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