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

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

Thema: Übergabe von Parametern

  1. #1
    Registriert seit
    09.04.2007
    Beiträge
    40
    Danke
    23
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich habe eine Frage zu Any-pointern.
    Ich muss eine Funktion entwerfen, die "auf Knopfdruck" nach Eingabe
    von Adresse, Datenbausteinnummer und Datentyp (auf einem Display)
    einen Wert aus einem Datenbaustein ausliest. Dieser Wert soll angezeigt werden und veränderbar sein.

    In einem anderen Post habe ich bezüglich Zeiger auf einen Bereich in einem Datenbaustein folgendes gesehen:

    L B#16#10 //10h für s7
    T LB 0
    L B#16#02 //Typ BYTE
    T LB 1
    L 8 //Anzahl (Wiederholungsfaktor)
    T LW 2
    L 33 //Datenbaustein
    T LW 4
    L 14 //Anfangsadresse
    SLD 3 //Pointer bauen
    T LD 6
    L B#16#84 //Speicherbereich (hier DB)
    T LB 6

    Kann ich dieses Beispiel so ändern, dass ich anstelle der Datenbausteinnummer
    einen Eingang angebe, an welchem ich dann eine beliebige Nummer eingeben kann?
    Oder bin ich als blutiger Anfänger jetzt auf dem völlig falschen Pfad?

    Danke schonmal!
    Gruß
    Zitieren Zitieren Übergabe von Parametern  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Das geht schon, lies am Besten mal das hier, ist prima aufbereitet von Volker:

    http://www.sps-forum.de/showthread.php?t=12923
    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
    22.11.2006
    Beiträge
    186
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard

    Ist es immer der selbe Datenbaustein? wenn ja, kann man da auch mit Multiplex trixen. Ist dann wahrscheinlich weniger aufwand
    Ciao

    Antonio
    ________________________________
    nicht in Problemen, sondern in Lösungen denken

  4. #4
    Registriert seit
    09.04.2007
    Beiträge
    40
    Danke
    23
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Danke für die Antworten..
    Es ist nicht immer derselbe Datenbaustein, deshalb fällt das mit Multiplex wohl weg. Wenn ich es nach der oben genannten Variante mache, bekomme ich also den Wert an der gewünschten Stelle angezeigt. Wie schaffe ich es dann, diesen zu verändern?

    Gruß

  5. #5
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    so wie ich das sehe brauchst du gar keinen any-zeiger sondern kommst mit einem pointer aus.
    oder musst du daten lesen/schreiben die länger als ein dword sind?

    hast du dir den oben erwähnten beitrag angesehen?
    und beherzigt was dort auch steht ?
    Schaut euch dazu vorher dieses Thema an ......
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #6
    Registriert seit
    09.04.2007
    Beiträge
    40
    Danke
    23
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo!
    Habe mir deinen Thread gut durchgelesen.. Ist wirklich sehr hilfreich, danke.
    Ich dachte ich müsste den any-zeiger benutzen, da ich auch den Datentyp auf dem Display angeben muss (byte oder word)?
    Habe leider wenig Hintergrundwissen und bis jetzt nur in Theorie Büchern gelesen.. Mit dem Programmieren selbst habe ich, bis auf ein paar einfache Aufgaben, kaum Erfahrung. Bin deshalb glücklich über Hilfe zu einem Ansatz!

    Gruß

  7. #7
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    du hast recht. wenn du die länge des typs ändern willst benutzt du am besten den any zeiger.

    ich weiss ja nicht genau wofür du das brauchst, aber ich habe da was was der sache mindestens ganz nahe kommt.
    Code:
    Status / Steuern Variabel für HMI-Geräte, die diese Funktion im Gerät nicht 
    integriert haben. (z.B. Siemens OP170)
    
    Status  von: E, A, M, D, T, Z
    Steuern von: A, M, D
    
    Steuern ist nur möglich, wenn Status gestoppt.
    Steuern von Zeiten und Zählern ist nicht möglich.
    
    Es werden alle angezeigten Variablen gesteuert.
    Wenn eine Variable nicht gesteuert werden soll,
    das Auswahlfeld Variablentyp auf '---' setzen.
    
    (c) Februar 2007 by V.Lischnewski, www.Lischis-Home.de
    findest du auf meiner hp unter sps/protool/op170_status.zip
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #8
    Registriert seit
    09.04.2007
    Beiträge
    40
    Danke
    23
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Vielen Dank für die Antworten.

    Habe noch ein paar grundsätzliche Fragen, die ihr mir sicherlich leicht beantworten könnt:
    1. Ich finde in meinen Unterlagen zum Bau des Any-Pointers keine Information über die Angaben "LB" bzw. "LW" und "LD". Was bedeutet das?


    2. Wie kann ich eine Fallunterscheidung im Bau eines Any-Pointers integrieren. Ich muss unterscheiden ob eine Byte- oder Wordeingabe erfolgt.
    (Wenn ich an einem festgelegten Eingang z.B. W für Word oder B für Byte eingebe, muss ich erreichen, dass der Any Pointer B#16#02 oder B#16#04 bei der Angabe des Datentyps annimmt.)

    3. Ist die Anzahl (Wiederholungsfaktor) bei Byte immer 8 und bei Word immer 4 ?


    Grüße
    Zitieren Zitieren noch ein paar Fragen  

  9. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Zitat Zitat von Thomas86 Beitrag anzeigen
    1. Ich finde in meinen Unterlagen zum Bau des Any-Pointers keine Information über die Angaben "LB" bzw. "LW" und "LD". Was bedeutet das?
    LB = Lokalbyte
    LW = Lokalwort
    LD = Lokaldoppelwort

    Das bezieht ich auf die Temp-Variablen eines FB/FC. Du kannst hiermit direkt auf die Temp-Daten eines Bausteins zugreifen, auch ohne Rücksicht auf die im Tempbereich angelegte Variablenstrucktur, bzw. ebend auch über Any-Zeiger.

    Zitat Zitat von Thomas86 Beitrag anzeigen
    2. Wie kann ich eine Fallunterscheidung im Bau eines Any-Pointers integrieren. Ich muss unterscheiden ob eine Byte- oder Wordeingabe erfolgt.
    (Wenn ich an einem festgelegten Eingang z.B. W für Word oder B für Byte eingebe, muss ich erreichen, dass der Any Pointer B#16#02 oder B#16#04 bei der Angabe des Datentyps annimmt.)
    Ok, ich hab mal 3 Eingänge genommen, weil ich einfach nur mit 3 Boolean-Variablen arbeiten wollte. Das sah dann so aus:

    Code:
          U     #In_Byte
          SPB   B1
    
          U     #In_Word
          SPB   W1
    
          U     #In_DWord
          SPB   D1
    
          SPA   ERRO
    Es geht natürlich auch über einen Eingang und du arbeitest dann mit Vergleichern und springst zu den Marken B1, W1, D1. Dort lädst du dann den entsprechenden Code für den Any-Zeiger.

    Zitat Zitat von Thomas86 Beitrag anzeigen
    3. Ist die Anzahl (Wiederholungsfaktor) bei Byte immer 8 und bei Word immer 4 ?
    Der Wiederholungsfaktor bezieht sich auf den von dir in Punkt 2 gewählten Datentyp und hängt von der Länge der Daten ab, auf die der Zeiger verweisen soll. Im Beispiel in der FAQ werden dann 8 Byte Daten vom SFC20 umkopiert.

    Code:
      CALL  SFC   20
           SRCBLK :=#myZeiger
           RET_VAL:=MW200
           DSTBLK :=P#DB10.DBX 4.0 BYTE 8
    Aber klar, 8 Byte sind 4 Worte, wenn also ein Any-Zeiger 8 Byte adressiert und ein anderer Worte adressiert, müssen es 4 Worte sein, damit es paßt.
    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

  10. #10
    Registriert seit
    28.06.2006
    Ort
    Königreich Neuseeland
    Beiträge
    2.027
    Danke
    133
    Erhielt 96 Danke für 76 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    Aber klar, 8 Byte sind 4 Worte, wenn also ein Any-Zeiger 8 Byte adressiert und ein anderer Worte adressiert, müssen es 4 Worte sein, damit es paßt.
    Du kannst antürlich auch 10, 20 oder 30 Byte / Worte adressieren, oder 128 bool, das geht auch.

Ähnliche Themen

  1. Konfiguration von Parametern...
    Von Tommi im Forum Stammtisch
    Antworten: 3
    Letzter Beitrag: 12.12.2010, 12:22
  2. Online Änderung von Parametern im CFC
    Von Benjamin im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 27.07.2010, 11:20
  3. Variabler FC-Aufruf mit Parametern
    Von Mangokind im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 19.03.2009, 08:44
  4. Programmieren mit Lokalvariablen und Parametern
    Von Earny im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 20.10.2008, 20:06
  5. HEX String aus Integer Parametern
    Von Florian30 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 13.10.2006, 11:29

Lesezeichen

Berechtigungen

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