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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: wie soll das funktionieren?

  1. #1
    Praktikant ohne Ahnung! Gast

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ihr Experten, ich brauch mal wieder ein Vorschlag von euch! Ich soll ein Lauflicht machen das im OB100 stehen soll. D.h. wenn ich es anschalte dann soll einmal komplet durchlaufen und wieder zurück und wieder hin und wieder zurück und…. Also eine Endlosschleife!

    Steuerung: Simatic S7 CPU 315-2 DP
    Bestell Nr. 6ES7-315-2AF03-0AB0 / V 1.2
    Typ: MPI Adresse: 31

    An der Steuerung hängen 36 Gateway´s , jeder Ausgang soll kurz aufleuchten und dann aus gehen und dann soll der Nächste an gehen und aus gehen dann….

    Also es tut mir leid wenn ich zu doof bin, aber falls noch fragen offen sind, bitte stelle.

    Mit freundlichen Grüßen
    Malte

    Für Fehler und Schrift, haftet der Stift!!!
    Zitieren Zitieren Gelöst: wie soll das funktionieren?  

  2. "
    Zitat Zitat von Praktikant ohne Ahnung!
    Also ihr Experten, ich brauch mal wieder ein Vorschlag von euch! Ich soll ein Lauflicht machen das im OB100 stehen soll.
    Wer ist auf die Idee gekommen, daß es im OB100 stehen soll? Ein durchgeknallter Pauker? Programme stehen gewöhnlich im OB1. Der wird sowieso schon in einer "Endlosschleife" nach Beendigung erneut ausgeführt. Der OB100 wird einmalig beim Anlauf ausgeführt. Eine Endlosschleife müßte man darin selbst ausdrücklich programmieren. Wenn man das täte, gibt es eine Chance, daß die SPS das "merkt" und in Stop geht. Aber das weiß icht nicht, einfach mal probieren.

    Für ein Lauflicht-Programm gibt es folgende Ansätze:
    1) Du programmierst eine Schrittkette nach dem Prinzip: Wenn kein Licht an und Takt, dann Licht 1 an. Wenn kein Licht 1 an und Takt, dann Licht 2 an, Licht 1 aus.
    2) Du programmierst wiederum eine Schrittkette: Wenn kein Schrittmerker an und Takt, dann Schrittmerker 1 an. Wenn kein Schrittmerker 1 an und Takt, dann Schrittmerker 2 an, Schrittmerker 1 aus.
    3) Du schaltest mit dem Takt einen Zähler weiter. Entsprechend dem Zählerstand(n) nimmst du den n-ten Eintrag einer Tabelle, die Muster für die Ausgänge enthält.
    Lösung 1 ist furchtbar unflexibel: Wenn jemand ein anderes Muster als 1 Licht pro Schritt verlangt, programmierst du von vorne. Lösung 2 ist etwas besser. Die Zuordnung der Lichter erfolgt separat
    Code:
    U SCHRITT1
    O SCHRITT45
    = LICHT6
    macht Licht 6 in Schritten 1 und 45 an.
    Code:
    U SCHRITT1
    = LICHT1
    ...
    U SCHRITT36
    = LICHT36
    Entspricht dann Lösung 1

    Lösung 3 ist schwieriger zu programmieren, aber dafür lassen sich beliebige Muster allein durch Ändern der Tabelle erzeugen.
    An der Steuerung hängen 36 Gateway´s ,
    Sorry, aber was soll das sein?
    Für Fehler und Schrift, haftet der Stift!!!
    Aber für das überflüssige Komma haftest DU!!!!!!!!"


  3. #2
    Registriert seit
    26.07.2004
    Beiträge
    87
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    der OB100 ist ein Anlauf OB. Der soweit ich weiss nur einaml durchlaufen wird. Es wird dir also nicht möglich sein das Lauflicht darin zu erstellen. Du kannst hier aber die notwendigen Vorbereitungen treffen. z.B einen Startmerker Anstossen und eine Zählvariable Initialisieren.

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

    Standard

    Zitat Zitat von Praktikant ohne Ahnung!
    Also ihr Experten, ich brauch mal wieder ein Vorschlag von euch! Ich soll ein Lauflicht machen das im OB100 stehen soll.
    Wer ist auf die Idee gekommen, daß es im OB100 stehen soll? Ein durchgeknallter Pauker? Programme stehen gewöhnlich im OB1. Der wird sowieso schon in einer "Endlosschleife" nach Beendigung erneut ausgeführt. Der OB100 wird einmalig beim Anlauf ausgeführt. Eine Endlosschleife müßte man darin selbst ausdrücklich programmieren. Wenn man das täte, gibt es eine Chance, daß die SPS das "merkt" und in Stop geht. Aber das weiß icht nicht, einfach mal probieren.

    Für ein Lauflicht-Programm gibt es folgende Ansätze:
    1) Du programmierst eine Schrittkette nach dem Prinzip: Wenn kein Licht an und Takt, dann Licht 1 an. Wenn kein Licht 1 an und Takt, dann Licht 2 an, Licht 1 aus.
    2) Du programmierst wiederum eine Schrittkette: Wenn kein Schrittmerker an und Takt, dann Schrittmerker 1 an. Wenn kein Schrittmerker 1 an und Takt, dann Schrittmerker 2 an, Schrittmerker 1 aus.
    3) Du schaltest mit dem Takt einen Zähler weiter. Entsprechend dem Zählerstand(n) nimmst du den n-ten Eintrag einer Tabelle, die Muster für die Ausgänge enthält.
    Lösung 1 ist furchtbar unflexibel: Wenn jemand ein anderes Muster als 1 Licht pro Schritt verlangt, programmierst du von vorne. Lösung 2 ist etwas besser. Die Zuordnung der Lichter erfolgt separat
    Code:
    U SCHRITT1
    O SCHRITT45
    = LICHT6
    macht Licht 6 in Schritten 1 und 45 an.
    Code:
    U SCHRITT1
    = LICHT1
    ...
    U SCHRITT36
    = LICHT36
    Entspricht dann Lösung 1

    Lösung 3 ist schwieriger zu programmieren, aber dafür lassen sich beliebige Muster allein durch Ändern der Tabelle erzeugen.
    An der Steuerung hängen 36 Gateway´s ,
    Sorry, aber was soll das sein?
    Für Fehler und Schrift, haftet der Stift!!!
    Aber für das überflüssige Komma haftest DU!!!!!!!!

  5. #4
    Praktikant ohne Ahnung! Gast

    Unglücklich

    naja, ich habe wenig ahnung dafon! es wurde mir nur gesagt dass ich mit dem OB100 arbeiten soll. es soll eine Endlosschleife sein wo die ausgänge der reihe nach ein und als gehen! wenn es am ende angekommen is soll es Rückwärtz zurück laufen! könnt Ihr mir nicht ein grundvorschlag geben...?

  6. #5
    Praktikant ohne Ahnung! Gast

    Standard

    ICH ZIEHE MEIN BETRAG von 09:51 zurück da ich die antwort von "Zottel" nicht mitbekommen habe!

    SRY

  7. #6
    Praktikant ohne Ahnung! Gast

    Standard

    [QUOTE=Zottel]Wer ist auf die Idee gekommen, daß es im OB100 stehen soll? Ein durchgeknallter Pauker?

    *:-X*

    ich habe mir dein text mehrmals gut durchgelesen! doch ich bin ein praktikant, habe nur etwas ahnung von Visual Basic programierung, und soll ohne nennenswerte kentnisse SPS programieren! wie wird "SCHRITT1" in AWL Übersetzt?

  8. #7
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    am einfachsten geht das imho mit einem schiebregister.

    Code:
          UN    M      1.0
          L     S5T#500MS
          SE    T      1
          NOP   0
          NOP   0
          NOP   0
          U     T      1
          =     M      1.0 //taktmerker
    Code:
          UN    M      1.0                  //flanke
          SPB   ende
    // links schieben
          U     M      1.1                  //linkslauf beendet
          SPB   m001
          L     MD    10
          SLD   1                           //1 nach links schieben
          T     MD    10
          L     MD    10
          L     0
          ==D                               //prüfen ob register laüft
          =     M     13.0                  //wenn nein erstes bit setzen
          U     M     10.7                  //letztes bit erreicht
          S     M      1.1
          SPB   ende                        //sprung zum ende da letztes bit
    // rechts schieben
    m001: NOP   0
          UN    M      1.1
          SPB   m002
          U     M     13.0                  //erstes bit erreicht
          R     M      1.1
          L     MD    10
          SRD   1
          T     MD    10
    m002: NOP   0
    ende: NOP   0
          L     MD    10
          T     AD     0                    //in deinen ausgang transferieren
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #8
    Praktikant ohne Ahnung! Gast

    Standard

    laos mal so eine ganz dumme Frage...

    kommt der erste code in OB100 und der zweite code in OB1???

    ...ich stell mich nicht an ich bin wirklich so blöd!

  10. #9
    Registriert seit
    09.08.2004
    Ort
    Münsterland
    Beiträge
    232
    Danke
    21
    Erhielt 13 Danke für 10 Beiträge

    Standard

    U M 1.2 // Taktmerker - Impuls
    SPBN m100

    L MW 120 // Zähler
    L 36
    >=I
    S M 99.7 // Umkehrbit

    L MW 120
    L 1
    <=I
    R M 99.7

    U M 99.7
    SPBN m101

    L MW 120
    L 1
    -I
    T MW 120
    SPA m100

    m101: L MW 120
    L 1
    +I
    T MW 120

    m100: NOP 0

    L MW 120
    L 1
    ==I
    = A 100.0

    L MW 120
    L 2
    ==I
    = A 100.1


    Ist Geschmackssache ... Kannst natürlich auch die Bits schieben ... dann ist halt bei 32 Ende oder es wird etwas aufwändiger

    So kannste die Ausgänge aber frei zuordnen ...

    Gruß stricky
    Zitieren Zitieren alles in den OB1 .... ;-)  

  11. #10
    Registriert seit
    15.11.2005
    Beiträge
    89
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Gesetz dem Fall dass alle Ausgänge in aufsteigender Reihenfolge liegen, hier mein Vorschlag zum Ansteuerung frei wählbarer Anzahl an Lauflichtern und Startadresse des 1.Lauflichtausganges (falls es überhaupt noch interessiert):

    Code:
    //max.Anzahl der Lauflichtausgänge vorgeben
          L     36
          T     #Max_Anz_Lauflichter
    
    //Prüfe, ob Initialisierung erforderlich
          U     "HM_Lauflicht_Start"        //diesen Merker in OB100 setzen
          SPBN  INIT
    //Initialisiere Ausgangszeiger
          L     P#A 20.0                    //Startdadresse der Lauflichtausgänge (hier A20.0)
          T     #tmp_A_ptr_ON
    //Initialisiere Ausgangszähler
          L     1
          T     #tmp_A_cnt_ON
    
    //Hilfsmerker 'Lauflicht rückwärts' rücksetzen
          CLR   
          =     "HM_Lauflicht_Rück"
    
    //Hilfsmerker 'Initialisierung' rücksetzen
          CLR   
          =     "HM_Lauflicht_Start"
    INIT: NOP   0
    
    
    
    //Ausgänge löschen
          UN    T      1
          SPBN  RST
    //Initialisiere Ausgangszeiger
          L     P#A 20.0                    //Startdadresse der Lauflichtausgänge
          T     #tmp_A_ptr_OFF
    //Initialisiere Ausgangszähler
          L     1
          T     #tmp_A_cnt_OFF
    //Alle Lauflichtausgänge rücksetzen (Schleife)
    AGAI: CLR   
          =     A [#tmp_A_ptr_OFF]
    
          L     #tmp_A_cnt_OFF
          L     #Max_Anz_Lauflichter
          <I    
          SPBN  NCLR
    //Zähler Ausgangsnummer erhöhen
          L     #tmp_A_cnt_OFF
          L     1
          +I    
          T     #tmp_A_cnt_OFF
    //Pointer für Ausgang erhöhen
          L     #tmp_A_ptr_OFF
          L     1
          +D    
          T     #tmp_A_ptr_OFF
          SPA   AGAI                        //zwingender Sprung bis alle Ausgänge abgelöscht sind
    NCLR: NOP   0
    RST:  NOP   0
    
    
    //Hilfsmerker 'Lauflicht rückwärts' setzen
          L     #tmp_A_cnt_ON
          L     #Max_Anz_Lauflichter
          >=I   
          S     "HM_Lauflicht_Rück"
    
    //Hilfsmerker 'Lauflicht rückwärts' löschen
          L     #tmp_A_cnt_ON
          L     1
          <=I   
          R     "HM_Lauflicht_Rück"
    
    
    //Lauflicht vorwärts ansteuern
          L     #tmp_A_cnt_ON
          L     #Max_Anz_Lauflichter
          <I    
          UN    T      1
          UN    "HM_Lauflicht_Rück"
          SPBN  VCNT
    
    //Lauflichtausgang EIN
          SET   
          =     A [#tmp_A_ptr_ON]
    
    //Zähler Ausgangsnummer erhöhen
          L     #tmp_A_cnt_ON
          L     1
          +I    
          T     #tmp_A_cnt_ON
    //Pointer für Ausgang erhöhen
          L     #tmp_A_ptr_ON
          L     P#0.1
          +D    
          T     #tmp_A_ptr_ON
    
    //Einschaltdauer je Lauflichtausgang starten
          L     S5T#500MS
          CLR   
          SV    T      1
          SET   
          SV    T      1
    VCNT: NOP   0
    
    //Lauflicht rückwärts ansteuern
          L     #tmp_A_cnt_ON
          L     1
          >I    
          UN    T      1
          U     "HM_Lauflicht_Rück"
          SPBN  RCNT
    //Lauflichtausgang EIN
          SET   
          =     A [#tmp_A_ptr_ON]
    
    //Zähler Ausgangsnummer verringern
          L     #tmp_A_cnt_ON
          L     1
          -I    
          T     #tmp_A_cnt_ON
    //Pointer für Ausgang verringern
          L     #tmp_A_ptr_ON
          L     P#0.1
          -D    
          T     #tmp_A_ptr_ON
    //Einschaltdauer je Lauflichtausgang starten
          L     S5T#500MS
          CLR   
          SV    T      1
          SET   
          SV    T      1
    RCNT: NOP   0
    _________________________________________
    Solls funktionieren, oder darfs auch Siemens sein?

Ähnliche Themen

  1. DI funktionieren nicht
    Von Power_Pete im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 06.01.2010, 12:22
  2. Multiinstanzen funktionieren nicht!
    Von slma im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 17.07.2007, 02:09
  3. Flanken funktionieren nicht
    Von MatMer im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.10.2005, 23:52
  4. Wie funktionieren schnelle Zähler?
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 19.07.2005, 15:06
  5. Applet auf CP 343-1 IT funktionieren nicht
    Von plc_tippser im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 23.05.2005, 09:00

Lesezeichen

Berechtigungen

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