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

Ergebnis 1 bis 6 von 6

Thema: Komplettes Array setzen/rücksetzen

  1. #1
    Registriert seit
    26.05.2015
    Beiträge
    15
    Danke
    0
    Erhielt 7 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    Da mir nichts mehr einfällt und ich auch nichts zufriedenstellendes gefunden habe, habe ich mich nach langem mal hier angemeldet, da nur mitlesen auf Dauer schwierig wird :P.
    So jetzt aber zu meinem Problem:
    Ich fange alle Meldungen die ich von der CPU an mein HMI übergeben will in einem DB in einem Array of BOOL ab. An verschiedenen Stellen, z.B. externe Quittierung o.ä., Sollen mehrere, bzw. ALLE angelegten Variablen zurückgesetzt werden. Da ich allerdings mit ca. 100 Meldungen arbeite, wäre es ziemlich aufwendig diese alle einzeln zurückzusetzen.
    Momentan löse ich diese Aufgabe über ein zweites, identisches Array welches ich mit 0 initialisiere und dann einfach in mein Arbeits DB reinkopiere, wenn ich dieses "rücksetzen" will.
    So habe ich zwar nur wenig AWL Code (gut ) aber dafür ein zweites Array mit über 100 Bits was quasi "unnütz" Speicher verbraucht.

    Kennt hier einer einen eleganten Weg dies zu lösen oder gibt es für so etwas vielleicht sogar eine eigene Funktion? ( Bin noch recht neu in SPS-Programmierung)

    P.S. zur Ausstattung: Ich programmiere die WinAC RT für einen IPC 277d mit dem TIA v13 sp1 upd1

    Schonmal Danke im voraus.

    Gruß Phil
    Geändert von 404 Name not found (23.06.2015 um 14:58 Uhr)
    Zitieren Zitieren Komplettes Array setzen/rücksetzen  

  2. #2
    Registriert seit
    06.06.2015
    Beiträge
    35
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Man kann das schon mit Schleife machen, aber mal ehrlich: Deine Lösung ist okay. 100 bit kosten heute nicht mehr sooo viel.

  3. #3
    Registriert seit
    03.12.2008
    Beiträge
    654
    Danke
    160
    Erhielt 185 Danke für 113 Beiträge

    Standard

    Hallo
    Also in Step7 classic mache ich das so

    Code:
    U  "Quittierimpuls"
    SPBN  QUIT
    L  0
    T  DBxy.DBD0
    T  DBxy.DBD4
    T  DBxy.DBD8
    ....
    QUIT:  CLR

  4. #4
    Registriert seit
    15.03.2013
    Beiträge
    187
    Danke
    6
    Erhielt 35 Danke für 30 Beiträge

    Standard

    In dem Fall lohnt es sich kaum, aber für solche Aufgaben gibt's die Anweisung FILL oder FILL_BLK.

    Hier ein AWL-Beispiel für FILL aus der Online - Hilfe:
    AWL Erläuterung
    CALL FILL // Die Anweisung "Bereich befüllen" wird aufgerufen.
    ANY // Datentyp der Anweisung
    BVAL := P#M14.0 WORD 4 // Der Bereich von MW14 bis MW20 wird kopiert.
    RET_VAL := "Tag_ErrorCode" // Fehlerinformationen
    BLK := P#M100.0 WORD 10 // Der Speicherbereich von MW100 bis MW118 wird mit dem Inhalt der 4 Wörter
    befüllt, die im Speicherbereich am Parameter BVAL enthalten sind.
    Geändert von Mediator (23.06.2015 um 16:39 Uhr)

  5. #5
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Hallo Phil,

    100 Bit sollten keiner Steuerung zuviel sein. Deine Lösung ist OK und auch das ablöschen mit Doppelworten ist recht verbreitet.

    Wenn es ganz elegant sein soll, dann spendierst du jeder Funktion die eine Störung setzen kann, auch einen Reset-Eingang. Dieser kann gemeinsam für alle Störungen, oder nur Gruppenweise zusammengefasst werden. Das hat den Vorteil, dass alles was gesetzt werden kann, auch nach dem Störereignis quittiert werden kann. Vorausgesetzt, der Reset-Eingang wurde beschalten.
    Ein Nebeneffekt ist, dass die Störung/Meldung auch einfach selbstquittierend gemacht werden kann, indem du an den Reset einfach "True" anlegst...

    AWL und Schleifen meide ich, wenn irgend möglich.

    Gruß
    Chräshe

  6. #6
    Registriert seit
    26.05.2015
    Beiträge
    15
    Danke
    0
    Erhielt 7 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Erstmal danke an alle für die Antworten . Ich denke ich werde wohl vorrübergehend bei meiner Lösung bleiben, bzw. wenn ich mal Zeit finde CHräshes Lösungsweg versuchen. Das mit den Doppelworten habe ich in Step7 auch immer verwendet, wird aber im TIA immer als Warnugn hinterlegt (Ja Warnung ist nicht gleich Fehler und es funktioniert ja auch, is aber trotzdem nicht so schön).


    Habe noch eine Funktion Reset gefunden

    CALL RESET
    S_BIT :="DB_Störungen".Meldungen.Meldung[0] //DB in dem die Meldungen abgelegt sind
    N :=128

    Wäre vllt noch eine Alternative um alles zurückzusetzen, aber natürlich nichts wenn das nur Bereichsweise geschehen soll. Was haltet ihr von der Funktion?

    Gruß
    Phil
    Geändert von 404 Name not found (24.06.2015 um 08:32 Uhr)

Ähnliche Themen

  1. Step 5 Ausgänge setzen/rücksetzen
    Von hoffi im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.01.2014, 12:22
  2. mit einem Zeiger auf ein komplettes ARRAY zeigen???
    Von fk- princess im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 25.09.2012, 11:49
  3. Ausgang setzen und rücksetzen
    Von Andreas k im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 26.07.2010, 16:39
  4. WINCC V6.2 Bit setzen/rücksetzen
    Von HarbichC im Forum HMI
    Antworten: 19
    Letzter Beitrag: 03.05.2010, 10:12
  5. Schütz mit Setzen Rücksetzen
    Von mitchih im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 15.03.2010, 16:07

Lesezeichen

Berechtigungen

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