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

Ergebnis 1 bis 2 von 2

Thema: HIlfe gesuchte: Array mit Variablen aufrufen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe vor ein paar Jahren mal beruflich mit S7 gearbeitet und befasse mich seit ein paar Tagen wieder mit dem Thema, da ich für einen bekannten ein kleine Programmierung machen soll.
    Am Anfang dachte ich dass es ja ganz simple ist was er will. Doch nun hänge ich an einem Punkt fest wo ich absolut nicht weiter weiß.
    Es ist doch schon zulange her dass ich mich richtig mit der Thematik befasst habe.
    Hier nun die Anforderung des Programmes:
    es gibt einen Motor der mit verschiedenen Zeiten in einer vordefinierten Reihenfolge an und abgeschaltet wird.
    z. B. 5s an, 3s aus, 10s an, 15s aus, usw...
    Ich dachte mir das ganze so:
    Ich lege einen DB (Typ S5Time)an mit dem Array Motor_AN und Motor_AUS wo ich die entsprechenden Zeiten in Reihenfolge ablege.
    Dann nehme ich eine Einschalt- (S_Severz) und Ausschaltverzögerung (S_Averz) in Reihe und zähle nach jedem Durchgang einen Zähler (Z1) um 1 nach oben.
    Diesen Zähler verwende ich dann zum Aufruf des Arrays direkt am TW der EV bzw. AV.
    Und hier dachte ich dass ich das einfach so verwenden kann: DBx.Motor_AN[Z1]
    Nur leider hat das ganze nicht hin.

    Wo ist der Fehler bei dem ganzen?
    ich vermute mal an der Verendung der Variablen, oder?

    Grüße Steffen
    Zitieren Zitieren HIlfe gesuchte: Array mit Variablen aufrufen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In SCL würde das funktionieren, daß man den Zählerstand direkt als variablen Array-Index benutzt.
    In AWL kann man nicht mit variablen Array-Indizes arbeiten, da muß man indirekte Adressierung benutzen.
    In FUP und KOP sind variable Array-Indizes und indirekte Adressierung gar nicht möglich. (man könnte höchstens ANY-Pointer für SFC20 basteln)

    Wenn es nicht viele verschiedene Zeiten sind dann kann man mit einer Schrittkette oder Fallunterscheidung arbeiten:
    - wenn Zähler = 1 dann kopiere 5s und 3s nach Arbeitsvariablen
    - wenn Zähler = 2 dann kopiere 10s und 15s nach Arbeitsvariablen
    - wenn Zähler = 3 dann ...
    - ...


    Beispiel indirekte Adressierung in AWL:
    Code:
    // Der "DBx"
    ...
    Zeiten ARRAY [0..9] OF STRUCT
     Motor_AN  : S5TIME ;
     Motor_AUS : S5TIME ;
    END STRUCT
    
    //----------------------
    
    L    #index            // Zählerstand 0..9
    SLD  5                 // * 8 (--> Byte-Adresse.0) * 4 (sizeof Struct Zeiten)
    L    P#DBX0.0          // Anfangsadresse des Struct "Zeiten" im "DBx" hier einsetzen
    +D
    LAR1                   // AR1 enthält nun Pointer auf Zeiten[#index]
    
    Auf  "DBx"
    L    DBW [AR1, P#0.0]  // Zeiten[#index].Motor_AN
    T    #T_EVerz
    L    DBW [AR1, P#2.0]  // Zeiten[#index].Motor_AUS
    T    #T_AVerz
    Achtung: falls Du einen S7-Zähler benutzt, dann mußt Du den Zählerstand "binär codiert" für die Adressberechnung verwenden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Step 7 Stat_Ton mit ANY aufrufen oder FB mit ANY aufrufen
    Von Fanta-Er im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 12.01.2014, 11:42
  2. Variablen 1-48 von Buttons in Array schreiben und wieder ausgeben
    Von suntmaster im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 07.08.2012, 14:17
  3. 2D-Array in Step7 mit Variablen ansprechen
    Von jank-automation im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.08.2008, 08:32
  4. Zugriff auf einen UDT / Array mit Variablen?
    Von MSP im Forum Programmierstrategien
    Antworten: 68
    Letzter Beitrag: 13.06.2008, 21:03
  5. Array mit Variablen adressieren
    Von Jens im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 13.12.2006, 20:57

Lesezeichen

Berechtigungen

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