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

Ergebnis 1 bis 10 von 10

Thema: indirekte Adressierung

  1. #1
    Registriert seit
    18.02.2009
    Beiträge
    16
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Könnt ihr mir weiterhelfen, wenn ich 2 Werte speichern möchte. Zum Beispiel ein Regal mit 16 Fächern und Pakete, die ich zuweisen muss.
    Kann ich das mit Strukturen und Arrays machen? Kann jemand vielleicht ein Beispiel schicken, oder einen Link zur Hilfestellung. In dem Handbuch habe ich nichts passendes gefunden!

    Vielen Dank im vorraus!
    Zitieren Zitieren indirekte Adressierung  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von Christian84 Beitrag anzeigen
    ...
    Kann jemand vielleicht ein Beispiel schicken, oder einen Link zur Hilfestellung. In dem Handbuch habe ich nichts passendes gefunden!
    ...
    Array ist doch schon mal spitze. Für ein Regal bietet sich meistens ein zweidimensionales Array an.

    z.B.
    Code:
    VAR
      Regal : Array [0..3, 0..3] OF INT;
    END_VAR
    Jetzt hat man ein Array mit 4x4 Feldern. Das man so ansprechen kann:

    Code:
    (* schreibend *)
    Regal[x,y] := 100;
    
    (* oder lesend *)
    IF Regal[x,y] = 100 THEN
      ; (* mach was *)
    ELSE
      ; (* mach was anderes *)
    END_IF
    Wobei x und y entweder feste Zahlen sein können oder eben Integervariablen.

    ----

    Nächstes Stichwort das Du gebracht hast: Strukturen. Auch sehr schön ;o)

    Nun kann es nun mal sein das ein Paket mehr Informationen hat als in einen Standard Dateityp (wie z.B. Integer passt).

    Also baut man sich seinen Eigenen Dateitypen Paket:

    Code:
    TYPE Paket_Type :
    STRUCT
        Nummer :INT;
        Kunde  :STRING;
        Wert   :INT;
        Datum  :DATE_AND_TIME;
    END_STRUCT
    END_TYPE
    Wenn man dann das Regal mit Paketen befüllt:


    Code:
    VAR
      Regal : Array [0..3, 0..3] OF Paket_Type;
    END_VAR
    Kann man das schön strukturiert abfragen:

    Code:
    FOR x := 0 TO 3 DO
        FOR y := 0 TO 3 DO
            IF Regal[x, y].Kunde = 'Toni' THEN
          Regal[x, y].Wert := 110;
            ELSE
          Regal[x, y].Wert := 100;
            END_IF
        END_FOR
    END_FOR
    If you open your Mind too much, your Brain will fall out.

  3. #3
    Christian84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Beiträge
    16
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Danke für die Hilfe, aber ich hab noch ne Frage! Die Struktur trage ich im Datentyp ein und wo trage ich den Array ein? Erstelle ich einen FB? Hab mich in der Hinsicht noch nicht mit TwinCat weiter beschäftigt.

  4. #4
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Wo Du das Array anlegst hängt davon ab wie Du darauf Zugreifen möchtest, global oder lokal? Müssen die Daten Remanent sein oder nicht? Gibt es das Regal einmal oder hast Du mehrere gleicher oder ähnlicher Regale?

    Wenn Du aus mehreren PRGs (Programmen) darauf zugreifen musst, würde es Sinn machen das Array einfach unter den Globalenvariablen zu deklarieren. Wenn Du ein Verwaltungsprogramm schreibst reicht es Lokal im Kopf des PRGs das Array zu definieren.

    Wenn es mehrere Regale gibt kann es sinn machen dann einen FB zu bauen. Dann kommt aber die Frage wo Deklariert man die Instanzen des FBs Lokal in einem Programm oder global.
    If you open your Mind too much, your Brain will fall out.

  5. #5
    Registriert seit
    09.01.2008
    Beiträge
    85
    Danke
    5
    Erhielt 13 Danke für 12 Beiträge

    Standard

    Hey zotos,

    besser kann man es nicht erklären! Gefällt mir sehr gut!

    Grus Ben

  6. #6
    Christian84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Beiträge
    16
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Heut wollte ich das Beispiel von zotos mal ausprobieren, aber leider hatte ich keinen Erfolg. Zum Beispiel wollte das Prog immer einen Operanden und ich weiß nicht so recht, was das prog von mir will? Fehler 4022!
    Ich arbeite mit meinen Notebook und greife auf eine CX1010 zu. Ich hatte ein Beispielsprogramm von S7 (Fächer mit Pakete), womit die Daten mit Datenbaustein gespeichert werden. Nun soll ich in einem Projekt mit der Beckhoff-SPS im Rahmen meiner schulischen Weiterbildung arbeiten.
    Mein Problem in meinem Projekt ist, dass ich anhand der einzugebenden Peronalnr. eine eingestellte Arbeitshoehe zugewiesen werden muss. Diese soll über einen Taster gespeichert werden. Beim erneuten Aufruf des Benutzers sollte die Arbeitshoehe in Position fahren.
    Kann mir jemand einen Ansatz dazu geben, wie ich das weiter programmieren soll? Ich wollte das mit Arrays und Strukturen machen, hab aber noch keinen Erfolg gehabt.

    Gruß Christian

  7. #7
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ich hab Dir mal eine kleine Hilfestellung programmiert.

    Bin aber zufaul das in ein Beckhoff Projekt zu wandeln also musst Du die EXP Datei im Anhang selbst in ein Beckhoff Projekt importieren.

    Besteht aus einem PRG Lift, einer Visu PLC_VISU und einem Datentyp DATABASE_TYPE.

    Das Programm LIFT musst Du dann noch in MAIN aufrufen.
    Angehängte Dateien Angehängte Dateien
    If you open your Mind too much, your Brain will fall out.

  8. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    Christian84 (19.02.2009)

  9. #8
    Christian84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Beiträge
    16
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    @zotos
    vielen Dank, das Prog ist genial. Jetzt seh ich auch meinen Fehler. Ich musste ihm eine Schleife packen und das wusste ich nicht. Danke nochmals für deine Mühe.

  10. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Genial ist anders.

    Mir ist da noch ein Bug aufgefallen (mal davon abgesehen das man damit auch in den Keller und übers Dach hinaus fahren kann).

    Beim Suchen nach einem Freien Speicherplatz muss die Forschleife mit einem Exit abgebrochen werden sonst überschreibt man alle freien Plätze.

    Code:
    ...
    STATUS := 'Postion saved';
    EXIT;
    ...
    If you open your Mind too much, your Brain will fall out.

  11. #10
    Christian84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Beiträge
    16
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mit der Positionierung der Arbeitshoehe habe ich eine analoge Eingangsbaugruppe und den FB entwickelt. Funktioniert auch soweit.
    Den FB musst du nur noch in Main aufrufen und los gehts.
    Habe auch einen Arbeitsbereich eingestellt.
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. Indirekte Adressierung in AWL
    Von Bensen83 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 31.01.2015, 15:58
  2. indirekte Adressierung
    Von Sash7770 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2008, 12:47
  3. indirekte Adressierung
    Von Linowitch im Forum HMI
    Antworten: 13
    Letzter Beitrag: 06.12.2008, 19:43
  4. Indirekte Adressierung
    Von thomasgull im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.01.2008, 14:49
  5. Indirekte Adressierung von SFC 20
    Von andre im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2005, 09:44

Lesezeichen

Berechtigungen

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