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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 40

Thema: Schieberegister in SCL?

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Ihr,

    Ich stehe schon vor dem nächsten Problemchen. Und zwar möchte ich mir gerne ein Schieberegister basteln, das mit jedem TAKT (= Impulsoperand) von 0 an um die Zahl 1 erhöht wird bis 13 und dann wieder von vorne beginnt.

    Also Ausgangswert = 0 und beim ersten TAKT soll in INDEX 1 stehen, dann 2, usw.

    Bei dem Wert 13 soll dann ein Ausgang angesteuert werden...


    Meine Überlegung war, das Ganze mit einer For-Schleife zu machen:


    Code:
     
    // Schieberegister
     
    IF TAKT THEN
      FOR INDEX := 0 TO 13 BY 1 DO
      END_FOR;
    END_IF;
     
     
    // Abfrage im Programm
     
    IF SchiebeRegister [INDEX] = 13 THEN
      Ausgang := 1;
    END_IF;
    Würde das so klappen?
    LG
    spirit
    Zitieren Zitieren Schieberegister in SCL?  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Da zwischen DO und END_FOR nichts steht wird das so mit Sicherheit nicht klappen.

    IF TAKT THEN
    INDEX := INDEX + 1 ;
    END_IF;

    Deine Ausgangszuweisung könnte so passen, wobei "Ausgang" dann aber auch 1 bleibt, nachdem "INDEX" mal 1 war.

    Falls du etwas anderes meinst musst du dich klarer ausdrücken.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.569
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Und nicht zu vergessen:

    Code:
    IF TAKT THEN
    IF INDEX < 13 THEN
    INDEX := INDEX +1;
    ELSE
    INDEX := 0;
    END_IF;
    END_IF;
    Geändert von Tigerente1974 (08.08.2013 um 12:04 Uhr) Grund: Korrektur
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Bei dem Wert 13 soll dann ein Ausgang angesteuert werden...
    Code:
    ...
    // Abfrage im Programm
     
    IF SchiebeRegister [INDEX] = 13 THEN
      Ausgang := 1;
    END_IF;
    Zitat Zitat von MSB Beitrag anzeigen
    Deine Ausgangszuweisung könnte so passen,
    Glaub' ich eher nicht, weil der Index 13 wird und nicht das Schieberegister[13] = 13 ist! Das kann einen ganz anderen Wert haben.

  5. #5
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Als SCL-Laie würde ich das z.B. so umsetzen:
    Code:
    IF TAKT THEN
        INDEX := INDEX +1;
        CASE INDEX OF
            13:    Ausgang := 1;
            14:    Index := 0;
                   Ausgang := 0;    // wenn gewünscht
        END_CASE;
    END_IF;
    Geändert von hucki (08.08.2013 um 12:31 Uhr) Grund: Wieder schick gemacht, denn das Forum hat wieder mal Leerzeichen gelöscht :(

  6. #6
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.569
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    In meiner Glaskugel schimmert da ein Rundtisch mit mehreren Bearbeitungsstationen.

    Vielleicht erzählst Du etwas mehr über den Anwendungsfall. Das ist vermutlich zielführender, als hier Häppchen mit etwas Code reinzuschmeißen.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... wenn du mit dem Rundschalttisch Recht haben solltest (ich könnte mir das auch vorstellen) dann wäre dieser Index-inkrementierer komplett am Ziel vorbei. Dann wäre etwas, das wir bei unseren Anlagen "Schiebespeicher" nennen der richtige Ansatz. Hier würde dann im einfachsten Fall ein Array_of_Byte geschoben, wo jeder Drehtisch-Platz sein eigens Byte für den Bearbeitungsstatus an der Stelle hat ...

    Gruß
    Larry

  8. #8
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Ok, ich versuche das Ganze mal etwas zu beschreiben...

    Im Grunde handelt es sich um drei hintereinander liegende Bearbeitungsstationen.

    Station 1 wird über die Schrittkette 1 versorgt und arbeitet weitgehend losgelöst von den anderen beiden Stationen.

    Immer wenn an Station 2 ein Teil erkannt wird, dann soll über den Impulsoperand TAKT das Schieberegister aktiviert und um 1 erhöht werden. Ist die Zahl 13 erreicht, so soll anschließend beim nächsten TAKT wieder von 1 an erhöht werden.

    An Station 3 soll, wenn das Schieberegister auf 13 steht, ein Zylinder ausgefahren werden.

    Die drei Schrittketten sollen in einem FB programmiert werden. Das Schieberegister wird dann vor Schrittkette 2 eingefügt.


    Jetzt bin ich einfach unsicher, wie ich das Schieberegister zu programmieren habe?

    Habe dazu nur Folgendes gefunden:

    VAR
    INDEX : INT;
    SchiebeRegister : ARRAY [1..13] of INT;
    END_VAR;

    Nun müsste halt der Code so werden, dass mit jedem TAKT (pos. Flanke) das Register um 1 erhöht wird, so dass dann in der SK3 bei der Zahl 13 darauf reagiert werden kann.

    Lieben Dank!

    PS: Ja Larry, genau so etwas hätte es eigentlich werden sollen... also ein Register, das ein Bit mit jedem TAKT um eine Stelle weiterschiebt. In FUP auch als "SHL" bezeichnet...
    Geändert von spirit (08.08.2013 um 13:35 Uhr)
    LG
    spirit

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... so würde ich das generell nicht machen (sondern so, wie von mir schon beschrieben). Denk mal darüber nach.

    Station 1 tut ein Teil auf den Tisch wenn der Schiebespeicher[1] frei ist. Ist das Teil drauf setzt du das erste Bit (Bit0) des Schiebespeichers[1].
    Station 2 kann arbeiten wenn im Schiebespeicher[2] nur Bit0 gesetzt ist. Hat sie gearbeitet dann setzt du das Bit 1des Schiebespeichers[2].
    Station 3 kann arbeiten wenn im Schiebespeicher[3] nur Bit0+1 gesetzt sind. Hat sie gearbeitet dann setzt du das Bit 2des Schiebespeichers[3].
    usw.

    Gruß
    Larry

  10. #10
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja ok Larry,

    aber ich könnte doch auch mittels der Teileerkennung an Station 2 (über TAKT) den Schiebespeicher aktivieren und das erste Bit (Bit0) setzen. Mit jedem TAKT (jeder neuen Teileerkennung) wird dieses Bit dann um eine Stelle nach links geschoben und wenn es 13x geschoben wurde, dann kann in Station 3 der Zylinder aktiv werden.

    Na, was meinst du?

    In FUP würde ich das mit "schiebe links" machen.
    LG
    spirit

Ähnliche Themen

  1. Schieberegister per SCL?
    Von SEAL im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.04.2013, 11:41
  2. Schieberegister im FC
    Von Stefan1982 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.11.2010, 16:58
  3. Schieberegister
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 30.01.2006, 08:47
  4. Schieberegister
    Von andreHST im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.09.2005, 10:57
  5. Schieberegister
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 27.05.2005, 09:11

Lesezeichen

Berechtigungen

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