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

Ergebnis 1 bis 6 von 6

Thema: Standardbausteine für Step5

  1. #1
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich bin auf der Suche nach einigen Standardbausteinen für ein Step 5 projekt.

    Folgendes soll gemacht werden:

    Anzeige der Störnummer über die Anzahl der Blinktakte einer Lampe:

    1x Blinken = Störung 1
    1x Blinken = Störung 2
    usw...


    Zusätzlich sollen die Störungen in einem Schieberegister weggespeichert werden, um zu sehen welche Störungen als letztes vorhanden waren.

    Hat jemand soetwas zufällig noch??
    Dann brauche ich nicht das RAd neu erfinden.
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!
    Zitieren Zitieren Standardbausteine für Step5  

  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 mitchih,

    ich glaube einen Standard-Baustein für Deine Aufgabe gibt es nicht. Aber es ist nicht so schwer,
    hier eben einen neuen Baustein zu schreiben. Nur mal so auf die schnelle:
    Code:
    FB 1                                  BIB=
    
    NETZWERK   1            
         NAME :STOER                              ;
    
    0005      :A   DB 1                           ;Arbeits-DB fuer Stoerauswertung
    0006      :UN  D 0.0                          ;Liegt eine neue Stoerung an?
    0008      :SPB =KNST                          ;Nein, dann weiter
    0009      :L   DW 1                           ;Nummer der neuen Stoerung
    000A      :T   DW 2                           ;Zaehler fuers Blinken
    000B      :                                   ;
    000C      :L   DH 000E EC01                   ;Adresse DB1
    000F      :LIR   1                            ;Absolute Adresse DB1 in Akku1
    0010      :SLD   4                            ;Auf 20-Bit erweitern
    0011      :ADD DH 0000 0013                   ;Quelle ist in DW 19
    0014      :TAK                                ;Absolute Adresse zurueckholen
    0015      :ADD DH 0000 0014                   ;Ziel ist in DW 20
    0018      :TNW   1                            ;DW 19 nach DW 20 kopieren
    0019      :TNW   1                            ;DW 18 nach DW 19 kopieren
    001A      :TNW   1                            ;DW 17 nach DW 18 kopieren
    001B      :TNW   1                            ;DW 16 nach DW 17 kopieren
    001C      :TNW   1                            ;DW 15 nach DW 16 kopieren
    001D      :TNW   1                            ;DW 14 nach DW 15 kopieren
    001E      :TNW   1                            ;DW 13 nach DW 14 kopieren
    001F      :TNW   1                            ;DW 12 nach DW 13 kopieren
    0020      :TNW   1                            ;DW 11 nach DW 12 kopieren
    0021      :TNW   1                            ;DW 10 nach DW 11 kopieren
    0022      :                                   ;
    0023      :L   DW 1                           ;Aktuelle Stoerung
    0024      :T   DW 10                          ;ins DW 10 kopieren
    0025      :RU  D 0.0                          ;Neue Stoerung loeschen
    0027      :                                   ;
    0028 KNST :                                   ;
    0029      :U   D 0.1                          ;Blinken EIN
    002B      :SPB =WEIT                          ;
    002C      :                                   ;
    002D      :L   DW 2                           ;Zaehler Blinken
    002E      :L   KB 0                           ;
    002F      :!=F                                ;runtergezaehlt ?
    0030      :SPB =WEIT                          ;
    0031      :                                   ;
    0032      :L   DW 2                           ;Zaehler Blinken
    0033      :D     1                            ;minus 1
    0034      :T   DW 2                           ;
    0035      :                                   ;
    0036      :SU  D 0.1                          ;Blinken EIN
    0038      :SPA =NEXT                          ;
    0039      :                                   ;
    003A WEIT :                                   ;
    003B      :RU  D 0.1                          ;Blinken AUS
    003D NEXT :BE                                 ;
    Wenn Du bei einer neuen Stoerung D 0.0 setzt und im DW 1 die Nummer der Störung versorgst,
    sollte es funktionieren.
    Im DW 10 steht dann die neueste Störung und bis DW 20 ist dann das Schieberegister.

    Grüße
    Gebs

  3. #3
    mitchih ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo mitchih,

    ich glaube einen Standard-Baustein für Deine Aufgabe gibt es nicht. Aber es ist nicht so schwer,
    hier eben einen neuen Baustein zu schreiben. Nur mal so auf die schnelle:
    Code:
    FB 1                                  BIB=
    
    NETZWERK   1            
         NAME :STOER                              ;
    
    0005      :A   DB 1                           ;Arbeits-DB fuer Stoerauswertung
    0006      :UN  D 0.0                          ;Liegt eine neue Stoerung an?
    0008      :SPB =KNST                          ;Nein, dann weiter
    0009      :L   DW 1                           ;Nummer der neuen Stoerung
    000A      :T   DW 2                           ;Zaehler fuers Blinken
    000B      :                                   ;
    000C      :L   DH 000E EC01                   ;Adresse DB1
    000F      :LIR   1                            ;Absolute Adresse DB1 in Akku1
    0010      :SLD   4                            ;Auf 20-Bit erweitern
    0011      :ADD DH 0000 0013                   ;Quelle ist in DW 19
    0014      :TAK                                ;Absolute Adresse zurueckholen
    0015      :ADD DH 0000 0014                   ;Ziel ist in DW 20
    0018      :TNW   1                            ;DW 19 nach DW 20 kopieren
    0019      :TNW   1                            ;DW 18 nach DW 19 kopieren
    001A      :TNW   1                            ;DW 17 nach DW 18 kopieren
    001B      :TNW   1                            ;DW 16 nach DW 17 kopieren
    001C      :TNW   1                            ;DW 15 nach DW 16 kopieren
    001D      :TNW   1                            ;DW 14 nach DW 15 kopieren
    001E      :TNW   1                            ;DW 13 nach DW 14 kopieren
    001F      :TNW   1                            ;DW 12 nach DW 13 kopieren
    0020      :TNW   1                            ;DW 11 nach DW 12 kopieren
    0021      :TNW   1                            ;DW 10 nach DW 11 kopieren
    0022      :                                   ;
    0023      :L   DW 1                           ;Aktuelle Stoerung
    0024      :T   DW 10                          ;ins DW 10 kopieren
    0025      :RU  D 0.0                          ;Neue Stoerung loeschen
    0027      :                                   ;
    0028 KNST :                                   ;
    0029      :U   D 0.1                          ;Blinken EIN
    002B      :SPB =WEIT                          ;
    002C      :                                   ;
    002D      :L   DW 2                           ;Zaehler Blinken
    002E      :L   KB 0                           ;
    002F      :!=F                                ;runtergezaehlt ?
    0030      :SPB =WEIT                          ;
    0031      :                                   ;
    0032      :L   DW 2                           ;Zaehler Blinken
    0033      :D     1                            ;minus 1
    0034      :T   DW 2                           ;
    0035      :                                   ;
    0036      :SU  D 0.1                          ;Blinken EIN
    0038      :SPA =NEXT                          ;
    0039      :                                   ;
    003A WEIT :                                   ;
    003B      :RU  D 0.1                          ;Blinken AUS
    003D NEXT :BE                                 ;
    Wenn Du bei einer neuen Stoerung D 0.0 setzt und im DW 1 die Nummer der Störung versorgst,
    sollte es funktionieren.
    Im DW 10 steht dann die neueste Störung und bis DW 20 ist dann das Schieberegister.

    Grüße
    Gebs
    Vielen Dank. Habe noch ein paar Fragen bzgl des Codes, denn ich möchte nicht einfach einen Baustein einspielen ohne zu wissen was er genau macht und wie er funktioniert. Leider ist es wie gesagt schon lange her das ich derart tief in die S5 gucken musste. Wird mal wieder Zeit Sonst vergesse ich noch alles

    000C :L DH 000E EC01 ;Adresse DB1

    Warum nimmt man dort nicht A DB1??? Ich meine zu wissen das so ein DB aufgeschlagen wird, bzw. woher bekommt man die Adressen??

    000F :LIR 1 ;Absolute Adresse DB1 in Akku1

    muss es nicht LIR 0 heißen??? für Akku 1 und LIR 2 für AKKU 2??

    Was bedeutet der Befehl TNW ich kann Ihn im Tabellenheft nicht finden.
    was hat es mit dem auf 20 Bit erweitern auf Sich ist das wegen der indirekten Adressierung ähnlich wie bei Step 7 ??
    Der Baustein soll in 2 Typen CPU`s eingesetzt werden_:
    1. CPU 102 AG100U
    2. CPU 928B 135U
    kann ich in der CPU 102 auch selber Funktionsbausteine schreiben?? Im Tabllenheft finde ich nämlich keine Auführungszeiten für die Befehle??

    Vielen Dank für eure Hilfe
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  4. #4
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Ausrufezeichen

    Hallo,

    Zitat Zitat von mitchih
    000C :L DH 000E EC01 ;Adresse DB1

    Warum nimmt man dort nicht A DB1??? Ich meine zu wissen das so ein DB aufgeschlagen wird, bzw. woher bekommt man die Adressen??
    Vergesse den Code von Gebs, der funktioniert nur auf S5-CPUs mit 20 Bit Adressbreiten und ausserdem wird im Codebeispiel eigentlich der Adresszähler zwischen den TNW nicht erhöht. Da fehlt jeglicher Sinn, unzählige TNW 1 aneinander zu reihen, ohne die absoluten Adressen in den Akkus 1 und 2 zu dekrementieren. Einfach Unsinn, der Code. Für TNW ermittelt man aus BS34 erstmal die Basisadresse des DB im AG-Speicher und addiert darauf den Offset auf den gewünschten Datenbereich im DB.

    Zitat Zitat von mitchih
    ]Was bedeutet der Befehl TNW ich kann Ihn im Tabellenheft nicht finden.
    TNW = Transferiere wortweise über absolute Speicheradressen. Und im Tabellenheft der CPU 102 wirst Du das auch niemals finden, die 102 kennt diesen Befehl nicht ..

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Alles Unsinn  

  5. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von mitchih Beitrag anzeigen
    Der Baustein soll in 2 Typen CPU`s eingesetzt werden_:
    1. CPU 102 AG100U
    2. CPU 928B 135U
    kann ich in der CPU 102 auch selber Funktionsbausteine schreiben?? Im Tabllenheft finde ich nämlich keine Auführungszeiten für die Befehle??
    Gerätehandbuch S5-100U - Kapitel 7.3.4 Funktionsbausteine (FB), Seite 7-11:

    Ab der CPU 102 lassen sich Funktionsbausteine mit einem erweiterten Operationsvorrat vom Anwender programmieren. Aber erst ab der CPU 103 lassen sich Funktionsbausteine parametrieren und können beim Bausteinaufruf Aktualparameter übergeben werden.

    ID1091978 Automatisierungsgerät S5-100U Gerätehandbuch

    Gruß Kai

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Question_mark Beitrag anzeigen
    der funktioniert nur auf S5-CPUs mit 20 Bit Adressbreiten
    stimmt

    und ausserdem wird im Codebeispiel eigentlich der Adresszähler zwischen den TNW nicht erhöht. Da fehlt jeglicher Sinn, unzählige TNW 1 aneinander zu reihen, ohne die absoluten Adressen in den Akkus 1 und 2 zu dekrementieren.
    durch das TNW werden die AKKUs 1 und 2 automatisch dekrementiert. Nimm Dir mal 'ne 948er und probiere es aus!

    BS34 erstmal die Basisadresse des DB im AG-Speicher
    Das funktioniert aber auch nicht auf allen CPUs. Bei einigen ist das BS34 der Koppelmerkerbereich.
    Bei der S5 muss man leider für (fast) jede CPU einen eigenen Code schreiben. Ich hab' halt
    Code für den von mir am meisten eingesetzten CPU-Typ geschrieben, da ich ja nicht wusste, welche CPU
    mitchih einsetzt.

    Grüße
    Gebs
    Geändert von Gebs (25.02.2009 um 08:51 Uhr)

Ähnliche Themen

  1. step5 V6.6
    Von sahering im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.12.2009, 14:32
  2. F-Standardbausteine
    Von mitchih im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.01.2009, 13:03
  3. Step5 und HMI
    Von Holle6 im Forum HMI
    Antworten: 4
    Letzter Beitrag: 05.04.2006, 19:31
  4. Step5 und HMI
    Von Holle6 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.04.2006, 18:00
  5. Step5 V7.17 und XP
    Von Ralle im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 10.04.2005, 21:02

Lesezeichen

Berechtigungen

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