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

Seite 7 von 8 ErsteErste ... 5678 LetzteLetzte
Ergebnis 61 bis 70 von 77

Thema: Auswahlkriterium Betriebsstunden

  1. #61
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Zottel
    Zitat Zitat von rs-plc-aa

    Hallo,

    da bin ich gerade dabei...

    Ich hab dann mal



    gegen

    Code:
          L     0
          L     "Module_soll"
          ==I   
          SPB   nene                        // ... oder auch nicht ...
    ...
    So ist es richtiger. War das andere von mir?
    Ja... (Hätte theoretisch auch funktionieren müssen nur praktisch halt nicht)



    Wohl deshalb weil im 7 Byte des IndexDB die Nummer 4 stand. Das kann ich aber nur aus dem Ergebnis schließen.
    Nummer =6 bedeutet: 7.Eintrag im IndexDB = DBB6
    Nummer =0 bedeutet: 1.Eintrag im IndexDB = DBB0
    Die Byte-Nummer (hier 6) ist mit 8 zu multiplizieren. Das ist einfach eine Vorraussetzung damit der Befehl
    Code:
         L     DBB [LD 12]
    funktioniert.
    Es haben ja schon Leute versucht, "pointer" zu erklären.
    Hiermit schon gut genug erklärt...


    1. Step7 auch noch "typisierte" Pointer kennt, z.B. P#DB20.DBX0.0, P#E60.0, die eine Information über den Speicherbereich beinhalten.
    Ich kannte bisher nur die...

    Fazit: der Befehl
    Code:
         L     DBB [LD 12]
    braucht immer die 8-fache Bytenummer, was zufällig auch die Bit-Nummer ist. Das ist weder vernünftig, noch dem Wesen nach durch den Begriff "Pointer" zu erklären, sondern schlicht eine "Schrulle" der Siemens-Entwickler, mit der man jetzt leben muß.
    man muß es eben nur wissen...

    Kan der Simulator Einzelschritt?
    Ja - werde ich jetzt noch ausprobieren...


    Um hier alles gleichzeitig im Auge zu haben sollte man eine Kinoleinwand als Monitor haben...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  2. #62
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Es haben ja schon Leute versucht, "pointer" zu erklären. Eigentlich finde ich das keine gute Erklärung, weil:
    1. Step7 auch noch "typisierte" Pointer kennt, z.B. P#DB20.DBX0.0, P#E60.0, die eine Information über den Speicherbereich beinhalten.
    2. Die hier verwendeten Adressen im Gegensatz zu pointern anderer Programmiersprachen stehen: Im Gegenstatz zu Pascal ist Rechnen mit "pointern" erlaubt. Im Gegenstatz zu C wird bei den Berechnungen aber eben nicht die Größe des Zielobjekts automatisch berücksichtigt.
    Ich wollte eigentlich gar nicht groß den Begriff "Pointer" erklären, viel mehr ein bischen Licht darauf werfen, weswegen es nötig ist um 8 zu multiplizieren. Das ganze ist ganz gut in Berger erklärt und wenn man das Diagramm auf Seite 338 vor Augen hat, wo die Struktur der Zeiger dargestellt wird, dann kann man klar sehen weswegen es einfacher zu verstehen ist wenn man SLD 3 benutzt (was natürlich funktional dasselbe ist).

  3. #63
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Kenne leider den Berger nicht.
    Kannst Du die Struktur mal eben widergeben?

  4. #64
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von RMA
    Ich wollte eigentlich gar nicht groß den Begriff "Pointer" erklären, viel mehr ein bischen Licht darauf werfen, weswegen es nötig ist um 8 zu multiplizieren. Das ganze ist ganz gut in Berger erklärt und wenn man das Diagramm auf Seite 338 vor Augen hat, wo die Struktur der Zeiger dargestellt wird, dann kann man klar sehen weswegen es einfacher zu verstehen ist wenn man SLD 3 benutzt (was natürlich funktional dasselbe ist).
    Da hab ich doch gleich mal den Berger (3. Auflage, 2002 ) aufgeschlagen...

    Da kommt bei mir aber auf S. 338 etwas von Alarmbehandlung.


    Wie heißt denn das Kapitel genau ?
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  5. #65
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von Zottel
    Kenne leider den Berger nicht.
    Kannst Du die Struktur mal eben widergeben?
    Wenn RMA so freundlich ist und das Kapitel beschreibt, schmeiße ich es auf den Scanner und poste es dann....
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  6. #66
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Oops, war gerade auf dem Weg zurück zu sagen im KOP / FUP Buch, Kap. 24 - Ergänzung zur grafischen Programmierung.

    Das AWL Buch hab' ich leider nicht, aber vielleicht findest Du es im Stichwortverzeichniss unter "Zeiger" (mindestens, so ist es im KOP / FUP Buch zu finden).

  7. #67
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Zottel
    Kenne leider den Berger nicht.
    Kannst Du die Struktur mal eben widergeben?
    Ach ja, fand sich ja wahrscheinlich schon im Thread:
    Byte.Bit, wobei die hinteren drei Bits für die Bitnummer reseviert sind.
    SLD 3 heißt dann "schiebe die Bytenummer in die Bits fürs Byte".

    Es ist jedoch recht sinnlos, den Index von L DBB[x] so zu codieren, ohne auch den Zugriff auf ein Byte ab einer beliebigen Bitposition zu implementieren.

  8. #68
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Hier ist die Seite, hoffentlich ist es gut lesbar.
    Angehängte Grafiken Angehängte Grafiken

  9. #69
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Hallo,

    jetzt habe ich es glaube ich schon kapiert...

    Ich füge hier mal einen Auschnitt vom Code an an dem ich das nun "extra ausführlich" kommentiert habe.

    Wenn die Kommentare stimmen dann müsste ich das kapiert haben.

    Code:
          L     #indexDB                    // Index DB Nr. zuweisen
          T     #idbn
    
          AUF   DB [#idbn]                  // IndexDB aufschlagen
          L     #Nummer                     // Offset laden (DBB in dem das gewünschte Modul steht)
          L     8                           // 8-bit-Einträge 
          *I    
          T     LD    12                    // Inhalt in Temp index kopieren
          L     DBB [LD 12]                 // Modul-Nummer des gewählten DBB aus dem Index lesen
    
          SPL   tbig                        // wenn Nummer größer als Anzahl Sprungziele ist
          SPA   BM00                        // Sprung nach BM00 wenn Modul-Nummer = 0 war => real #1
          SPA   BM01                        // ...wenn = 1 war => real #2
          SPA   BM02                        // ...wenn = 2 war => real #3
          SPA   BM03                        // ...wenn = 3 war => real #4
          SPA   BM04                        // ...wenn = 4 war => real #5
          SPA   BM05                        // ...wenn = 5 war => real #6
          SPA   BM06                        // ...wenn = 6 war => real #7
    
    tbig: NOP   0
    // hier kann eine Störmeldung o.Ä. erzeugt werden...
          SPA   ende
    
    BM00: NOP   0
          UN    "M1_Bereit"                 // betriebsbereit BM0 
          BEB                               // Ende ohne reduzierte Anzahl, kann BM nicht einschalten 
          S     "Modul1_Ein"                // Modul 1 einschalten 
          SPA   END1                        // Ende mit reduzierter Anzahl 
    
    ..........
    
    END1: NOP   0           
          L     #Anzahl  
          DEC   1
          T     #Anzahl  // wenn das Modul bereit war und eingeschaltet wurde wird die Anzahl der benötigten um 1 verringert
    
          BE
    Das ganze ist ja nun auch ziemlich komplett.

    Angenommen es wird ein Modul eingeschaltet das aber daraufhin nicht gestartet werden kann...

    Das einzige was es dann tun muß ist das Bit "Betriebsbereit" zurücksetzen, dann wird beim nächsten durchlauf erkannt daß es nicht mehr verfügbar ist und automatisch das nächst höhere (Stunden) genommen - genial.



    Eine Sache überlege ich aber gerade noch:

    Um zu vermeiden daß ein eingeschaltetes das gerade einwandfrei läuft abgewählt wird - nur weil es ein anderes (das gerade steht) gerade mit den Stunden überholt hat könnte man noch eine Verriegelung einbauen.

    Diese muß dann aber an der Stelle platziert werden bevor alle ausgeschaltet werden.


    Ich dachte da mal an folgendes:

    Wenn ich mir merke wieviele Module vorher liefen, und dann vergleiche mit der Anzahl was nun laufen soll, und feststelle daß es gleich viele sind -> nichts machen....


    Somit wäre zumindest gewährleistet daß wenn gerade 4 Stück laufen sollen - es die selben 4 bleiben - egal was die Stunden sagen.


    Wenn dann eine Änderung eintritt wird´s schon schwieriger...

    Wenn es weniger sein sollen als vorher wird ja das mit den meisten Stunden weggelassen - dabei kann aber auch schon passieren daß eines das bisher stand auch wieder weniger hat als eines das bisher lief - also Tausch.

    Umgekehrt genauso.



    Aber zumindest wenn sich nix ändert sollte man auch nix ändern - das geht ja... - oder etwa nicht ?

    ... da fällt mir doch während ich hier schreibe noch der worst case ein...


    Ich zitiere mich mal:

    Angenommen es wird ein Modul eingeschaltet das aber daraufhin nicht gestartet werden kann...

    Das einzige was es dann tun muß ist das Bit "Betriebsbereit" zurücksetzen, dann wird beim nächsten durchlauf erkannt daß es nicht mehr verfügbar ist und automatisch das nächst höhere (Stunden) genommen - genial.
    geht dann aber auch nicht - weil dann davon ausgegangen wird daß das bloße Einschalten ausreichte - aber der Fall daß das Einschalten quasi umsonst war wird dann gar nicht berücksichtigt...


    Ich glaube es sollte so bleiben - dann kann eigentlich nix (oder am wenigsten) schief gehen.
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  10. #70
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Müßte jetzt selbst diesen Thread gründlichst lesen, um alles wieder ins Bewußtsein zu holen...
    Aber, wenn ich es richtig weiß, war meine Vorstellung:
    1. Die Zahl der benötigten BMs ermitteln.
    2. Nur wenn sich diese geändert hat, neu sortieren und neu schalten.

    Soweit wäre es egal wenn ein E kommt, einer geht und die Zahl gleich bleibt.

    Aber 2 Fälle sind doof:

    1. Ein E geht, eine Sekunde später kommt wieder einer, es wird 2x sortiert und geschaltet.

    2. Es bleiben über sehr lange Zeit drei Eingänge anstehen; aus Gründen der Gerechtigkeit sollen aber mal andere BMs drankommen.

    Fall 1 Läßt sich durch einen Zeitverzoegerung lösen: Wenn die neue Zahl der benötigten BMs ungleich der alten Anzahl ist, eine Zeit starten, erst bei Ablauf der Zeit neu sortieren, schalten und benötigte Anzahl als alte speichern.

    Fall 2 ließe sich lösen, indem auch bei unveränderter Anzahl der BMs nach Ablauf einer Zeit X die BMs sortiert und geschaltet werden.
    Angenommen es wird ein Modul eingeschaltet das aber daraufhin nicht gestartet werden kann...
    Das einzige was es dann tun muß ist das Bit "Betriebsbereit" zurücksetzen, dann wird beim nächsten durchlauf erkannt daß es nicht mehr verfügbar ist und automatisch das nächst höhere (Stunden) genommen - genial.
    Das mit der Bereitschaft: So wie der Code bis jetzt ist, wird vor Einschalten des BMs die Bereitschaft überprüft. Daß das Einschalten selbst schiefgeht, ist eigentlich durch die allgemeinere Bedingung "Betriebsbereitschaft eines eingeschalteten BMs fällt weg" mit zu erledigen. Diese wird bis jetzt nicht behandelt.


    Am Einfachsten dürfte es sein, dann ein Sortieren und Neuverteilen zu erzwingen. Dabei wird dann das nicht bereite BM übergangen.
    [/quote]

Ähnliche Themen

  1. Display für S7-300 (Betriebsstunden etc.)
    Von superkato im Forum HMI
    Antworten: 8
    Letzter Beitrag: 25.11.2010, 17:18
  2. Betriebsstunden Umschaltung zweier Pumpen
    Von rene im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 06.09.2007, 14:52
  3. betriebsstunden speichern
    Von Merlin115 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.11.2006, 10:42
  4. Maschienenstart nach Betriebsstunden
    Von mst im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.11.2005, 20:37
  5. Betriebsstunden erfassen und auswerten
    Von Anonymous im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 11.08.2005, 08:35

Lesezeichen

Berechtigungen

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