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

Ergebnis 1 bis 6 von 6

Thema: rollierende Anzeige von Betriebszuständen auf OP3

  1. #1
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Liebe Gemeinde,

    ich möchte auf einem Display rollierend die Betriebszustände und Fehlermeldungen ausgeben. Dafür habe ich mir einen DB gebastelt.
    z.B.:
    db1.dbx0.0 => Motorschutz Lüfter x ausgelöst
    db1.dbx0.1 => Motorschutz Lüfter y ausgelöst
    db1.dbx0.2 => Pneumatik- Ausfall
    db1.dbx0.3 => Fehler 4
    ...
    db1.dbx1.0 => Automatik- Betrieb
    db1.dbx1.1 => manueller Betrieb
    ...
    db1.dbx?.? => Betriebszustandsmeldung x

    Hat jemand eine Idee, wie man die Bits, die Signal= high sind, der Reihe nach anzeigen kann ?

    mfg
    Zitieren Zitieren rollierende Anzeige von Betriebszuständen auf OP3  

  2. #2
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo mega_ohm,

    Du könntest eine Textliste im OP anlegen, worin die Meldungen stehen.
    Als nächstes eine Variable, die auf ein DBW in einem DB verweist.
    Ein Ausgabefeld mit Darstellung Textsymbol.

    In der SPS nimmst Du eine Schleife über alle Bits. Wenn ein Bit = 1 dann Bitnummer in die Variable fürs OP eintragen und Zeit ablaufen lassen, wie lang die Meldung anstehen soll.

    Grüße
    Gebs

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

    mega_ohm (09.10.2009)

  4. #3
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo mega_ohm,



    Du könntest eine Textliste im OP anlegen, worin die Meldungen stehen.
    Das hatte ich ich gemacht.
    Als nächstes eine Variable, die auf ein DBW in einem DB verweist.
    Ein Ausgabefeld mit Darstellung Textsymbol.

    Hast Du dazu bitte mal ein Beispiel ?
    Wie sieht denn die Variable, die "auf ein DBW in einem DB verweist", aus ???
    Nicht wie ein Pointer ( ? )... oder doch ?
    Mir kommt die Beschreibung aus uralten C++ - Zeiten so komisch ( wie ein Zeiger auf ein Array ) vor.
    In der SPS nimmst Du eine Schleife über alle Bits. Wenn ein Bit = 1 dann Bitnummer in die Variable fürs OP eintragen und Zeit ablaufen lassen, wie lang die Meldung anstehen soll.
    Weil ich grad schonmal nach Beispielen frage... hast Du dafür auch noch eins ? ( für die Schleife )

    Wie ich das dem OP3 alles begreifbar machen will... dafür habe ich schon fast einen Plan.
    Aber ich würde gern mal lern-sehen, wie in Step7 eine Schleife "aussieht". Ich habe die immer so gebastelt, wie ich es aus ASM-,Pascal- Zeiten kenne... und da ich in Step7 noch nix gefunden habe, was "If- Then" oder "Do- While" entspricht... sehen bei mir die Schleifen eher aus, wie kurz nach der Erfindung von BASIC ( auf'm c64)

    mfg

  5. #4
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo mega_ohm,

    für die Parametrierung am OP hab' ich ein paar Bitmaps erstellt.

    Für die Schleife:
    Code:
    U T1 // Zeit für Meldung läuft
    SPB ENDE 
    
    //Prüfung der Bits
    L DB1.DBW 0 // Fehlermeldungen
    L 0
    ==I // Keine Meldung vorhanden
    SPB OK
    L MW 0 // Bit-Nummer der letzten Meldung
    L DB1.DBW 0 // Fehlermeldung
    SLW // schon bearbeitete Meldungen rausschieben
    T MW 2 // Hier sind die unbearbeiteten Meldungen
    Loop: NOP 0 // Beginn Schleife
    L MW 0 // Bit-Nummer
    + 1 
    T MW 0 // Um 1 erhöhen
    L MW 2 // Fehlerwort
    SRW 1 // rechtes Bit rausschieben
    SPP Neu // ist geschobenes Bit = 1 dann Fehler ausgeben
    T MW 2 // Fehlerwort
    L MW 0
    L 16
    >I  // Alle Bit bearbeitet?
    SPBN Loop // nein, dann nächstes Bit
    L 0 // Bit-Nummer zurücksetzen  
    T MW 0
    Neu: L MW 0 // Fehler-Nummer übergeben
    T DB1.DBW X // Datenwort, das in der Variable im OP angegeben ist.
    
    ENDE: NOP 0
    
    L MW 0  // Bit-Nummer
    L 0
    <>I
    L S5T#5s  // Zeit die die Meldung anstehen soll
    SV T1  // Timer starten
    Ich hoffe es passt so, ich hab's nicht getestet.
    Grüße
    Gebs
    Angehängte Dateien Angehängte Dateien
    Geändert von Gebs (09.10.2009 um 15:17 Uhr)

  6. Folgender Benutzer sagt Danke zu Gebs für den nützlichen Beitrag:

    mega_ohm (11.10.2009)

  7. #5
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo mega_ohm,

    für die Parametrierung am OP hab' ich ein paar Bitmaps erstellt.

    Für die Schleife:
    Code:
    ...
    Ich hoffe es passt so, ich hab's nicht getestet.
    Grüße
    Gebs
    Es hat gepaßt... ganz vielen Dank dafür.

    Aber ich bin gierig
    Passen reicht mir nicht

    Ich habe mich jetzt doch entschlossen, mir mal die Pointer- "Geschichte" näher anzuschauen...

    In DB2.DBD 0 werden alle "Meldungen" definiert...

    Meine Idee ist: ( es sind nur erst mal so die Grundüberlegungen, was Konkretes habe ich noch nicht ! )
    - den DB2.DBD0 zu lesen.... // da werden alle Meldungen hinein geschrieben
    - mittels eines Schleifenzählers das entsprechende Bit ( über einen Pointer) für eine bestimmte Zeit zu erhalten[anzuzeigen], danach nächstes Bit dieses DB2 lesen...
    Wenn alle Bits "durch" sind... wieder neu anfangen.

    Mal sehen, ob / wie ich Das gelöst bekomme...

    Deine Schleife etc. hat mich in meiner Idee weiter gebracht...

    Mfg

  8. #6
    mega_ohm ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    496
    Danke
    217
    Erhielt 25 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab's mit Hilfe von #1 über Pointer gelöst... geht einwandfrei.

    Trotzdem nochmal vielen Dank für Deine Mühe... ich bin erst, nachdem ich Dein Beispiel geprüft hatte, auf die Idee mit den Pointern gekommen.
    Dein Bsp. zeigte einmal nacheinander die "Meldungen" an und war danach fertig. Ich möchte aber permanent die Meldungen rollierend anzeigen => letzte Meldung = fertig, wieder mit der 1. anstehenden Meldung beginnen.

    mfg
    Geändert von mega_ohm (13.10.2009 um 06:12 Uhr)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.04.2010, 06:00
  2. Anzeige FUP-AWL
    Von manas im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2007, 11:07
  3. S7-300 rollierende Fehlertabelle anlegen
    Von PCE-5Smp im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 12.08.2007, 11:08
  4. Cpu 315 Anzeige SF
    Von fritz67 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.03.2007, 20:36
  5. LED Anzeige
    Von Dirk LXXVI im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 10.08.2006, 22:01

Lesezeichen

Berechtigungen

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