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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 46

Thema: Positionen speichern

  1. #1
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin zusammen,

    ich hab hier ein Gebäckformer mit einer Walze. Auf dieser Walze
    sind Schaltnocken angebracht, die mit einem Ini erkannt werden
    und anschließend ein Verrigelungszylinder in eine Nut fährt um den Stempel mit zunehmen.
    Jetzt ist das Problem, wenn die Walze zu langsam dreht,
    fährt der Verriegelungszylinder manchmal schon vor der Nut aus.(Ist mechanisch nicht anders lösbar)
    Das ganze möchte der Kunde nun mit einem SSI Absolutwertgeber (Kübler Typ 8.5883) automatisieren.
    Ich will beim Maschinen Neustart die Walze einmal 360 Grad abfahren und bei
    jeder Flanke des Inis die Position speichern.
    Aber wie mache ich das speichern, wenn die Walze sich verändert (mehr oder weniger Positionen)?
    Ich weiß nicht wieviele Positionen ich speichern soll? Kann man das variabel machen?
    Wie löses ich am besten das speichern?
    Für jede Position ein Merker setzen? Was ist wenn die eine Walze 10 Positionen hat und die andere 40?
    Es sollte schon variabel sein, ohne dieses über das TP eingeben zu müssen.
    Das einzige was man am TP eingibt ist, ob die Walze sich verändert hat (nach Not-Aus oder Neustart)

    Vielen Dank schon mal

    Schöne Grüße von der Ostsee

    Nordischerjung
    Zitieren Zitieren Positionen speichern  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    leg einen datenbaustein mit maximaler länge an, das sollte zum speichern der positionen reichen, außer da werden krümel gebacken

    zusätzlich zum speichern der positionen, diese zählen und an den anfang des DBs setzen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    Also ich würde dann einen Positions DB anlegen mit z.B. 360 Positionen
    Ich denke ein Array wäre hier ideal.

    Dann würde ich über einen Schleifenzähler die Positionen jeweils in einem DB ablegen.

    Nach dem Durchlauf des Messzyklus setzt du die verbliebenen Positionen auf null. Hat die Walze 40 Positionen löscht du dann ab 41-360
    Dann hast du die Positionen in deinem DB und kannst damit arbeiten.

    Wäre jetzt das was mir so auf anhieb einfällt
    Oder habe ich das falsch verstanden

  4. #4
    Avatar von Nordischerjung
    Nordischerjung ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    leg einen datenbaustein mit maximaler länge an, das sollte zum speichern der positionen reichen, außer da werden krümel gebacken

    zusätzlich zum speichern der positionen, diese zählen und an den anfang des DBs setzen
    verstehe ich dich nicht, oder ist dein Satz nicht vollständig?

    Was soll ich an den Anfang setzen?

    Zitat Zitat von mitchih Beitrag anzeigen
    Also ich würde dann einen Positions DB anlegen mit z.B. 360 Positionen
    Ich denke ein Array wäre hier ideal.

    Dann würde ich über einen Schleifenzähler die Positionen jeweils in einem DB ablegen.

    Nach dem Durchlauf des Messzyklus setzt du die verbliebenen Positionen auf null. Hat die Walze 40 Positionen löscht du dann ab 41-360
    Dann hast du die Positionen in deinem DB und kannst damit arbeiten.
    Und wie mache ich das mit dem ANY? Muss das mit einem Pointer gemacht werden? (Das schreiben und lesen) Wie lösche ich den rest?
    Habe dieses noch nie gemacht

  5. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Nordischerjung Beitrag anzeigen
    verstehe ich dich nicht, oder ist dein Satz nicht vollständig?

    Was soll ich an den Anfang setzen?
    die anzahl der positionen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Registriert seit
    04.01.2008
    Ort
    Wien
    Beiträge
    772
    Danke
    136
    Erhielt 39 Danke für 35 Beiträge

    Standard

    wenn du das erste mal die 360 grad exakt fährst dann nimm das mit einem Zähler auf und speichere den Wert Dezimal in einem DB.
    Im Betrieb zählst du die Impulse (Aktualwert) und weißt so wo die Walze sich befindet. Wenn Impulse (Aktualwert) >= DB Wert sind dann setze Impulse wieder zurück.
    Falls ichs nicht falsch verstanden habe
    irgendetwas ist ja immer...
    ING. Gerald Miedler

  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

    ... da hast du dir ja etwas vorgenommen ...

    Wichtig bei dieser Aufgabe ist. strukturiert vorzugehen. Erstmal mußt du wissen, wann du einmal rum bist. Dann mußt du einen Start-Punkt (Referenzpunkt) für die Initialisierungsfahrt haben.

    Dein Programm muß (nach meiner Meinung) also so aussehen :
    Deinen Datenbaustein komplett löschen.
    Fahre Walze bis zur steigenden Flanke des Referenzpunktes.
    Dort Istposition einlesen und weiterfahren.
    Bei jedem nun kommenden Nocken den Nockenzähler um 1 erhöhen und diesen zur Adressierung der DBD's (für die Positionen im DB) verwenden und dort die aktuelle Position abspeichern.
    Das Ganze so lange wiederholen, bis du wieder den Referenzpunkt erkennst. Nun die Endposition einlesen und die Initialfahrt beenden.

    Nun hast du einen DB mit den Angaben, die du benötigst.
    Der DB muß natürlich (wie schon vorher geschrieben) so groß sein, dass die maximale Anzahl von vorkommenden Werten gespeichert werden kann.

    Ich würde das Ganze übrigens nicht mit einem Absolutwertgeber sondern mit einem Inkrementalgeber aufziehen. Absolutwertgeber macht nur dann Sinn, wenn eine Umdrehung des Gebers immer genau einer Umdrehung der Walze entspricht. Ist das anders (Geber nicht direkt auf der Welle) dann hast du nur unnötig Probleme.

    Als nächstes brauchst dann nun eine Routine, die die ständig nachsieht, ob du im Bereich eines der gespeicherten Nocken bist um die entsprechende Reaktion auszulösen.

    Ich würde dir empfehlen, diese Aufgabe mittels SCL zu lösen ... das macht vieles einfacher ...

    Gruß
    LL

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Nordischerjung (09.10.2008)

  9. #8
    Avatar von Nordischerjung
    Nordischerjung ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Zitat Zitat von Larry Laffer
    Ich würde das Ganze übrigens nicht mit einem Absolutwertgeber sondern mit einem Inkrementalgeber aufziehen. Absolutwertgeber macht nur dann Sinn, wenn eine Umdrehung des Gebers immer genau einer Umdrehung der Walze entspricht. Ist das anders (Geber nicht direkt auf der Welle) dann hast du nur unnötig Probleme.
    1. Absolutwertgeber kommt vom Kunden.
    2. Der Geber sitz genau auf der Welle der Walze, somit 1:1

    Zitat Zitat von Larry Laffer
    Ich würde dir empfehlen, diese Aufgabe mittels SCL zu lösen ... das macht vieles einfacher ...
    Hab ich leider noch nicht so die Erfahrung und Ahnung. (Ausser Boschsteuerung ins SCL) Und das war nicht so aufwendig.

    Habe aber heute noch erfahren, dass 16 Positionen das absolute Maximum sind. Was die Sache etwas einfacher macht.

    Wie kann man es denn einfach lösen?

    Kann es so in etwa funktionieren oder geht es einfacher?


    Code:
    U #Ini       //Initiator in Position
    FP #HM    //Hilfsmerker Flanke
    = #Flankenmerker
    
    U  #Flankenmerker
    UN #POS1    //Merker Position 1 gespeichert
    SPBN POS1
    
    L #IST_POS    //Aktuelle Position
    T DB1.POS1   //DB1.DBW0
    
    SET
    S #POS1
    
    POS1: NOP 1
    
    U  #Flankenmerker
    U #POS1
    UN #POS2    //Merker Position 2 gespeichert
    SPBN POS2
    
    L #IST_POS    //Aktuelle Position
    T DB1.POS2   //DB1.DBW2
    
    SET
    S #POS2
    
    POS2: NOP 1
    usw, usf

  10. #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 wie du es dargestellt hast, läßt es sich auf jeden Fall machen ...
    Ich würde aber mit einer Schleife arbeiten.
    Begründung :
    Für das Ablegen der Werte würdest du dir mit einer Schleife "nur" Code einsparen.
    Es kommt aber dann später noch eine Routine, in der du nachschauen mußt, ob du dich im Bereich einer der gespeicherten Positionen befindest. Das geht am einfachsten in dem du die Liste der Positionen "scannst" und nachsiehst, ob eine davon zu deiner Ist-Position paßt ...

    Grundsätzliches Wissen zur Schleifen-Programmierung findest du in der Rubrik FAQ vom Forum ...

    Gruß
    LL

  11. #10
    Avatar von Nordischerjung
    Nordischerjung ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke erstmal,
    zu schleifen habe ich irgendwie nichts gefunden,
    was mich weiter bringen könnte.

    Noch zusätzlich eine Frage, wie kann ich einfach alle
    Werte eines DB auf den gleichen Wert setzen?
    Oder muss ich
    Code:
    L 0
    T DB1.DBD0 
    T DB1.DBD4
    T DB1.DBD8
    ... usw

Ähnliche Themen

  1. Positionen für Anbau-Schränke
    Von Larry Laffer im Forum Schaltschrankbau
    Antworten: 4
    Letzter Beitrag: 29.06.2011, 19:35
  2. Datentyp der Positionen am Synamics
    Von Gerri im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 06.10.2009, 13:15
  3. 60 verschiedene Programme mit 10 Positionen
    Von MK_Auto im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 03.03.2008, 15:38
  4. Antworten: 13
    Letzter Beitrag: 27.02.2008, 16:47
  5. mehrere verschiedene Positionen mit 3 Zählern ??
    Von Fabian_GmbH im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.06.2005, 16:56

Lesezeichen

Berechtigungen

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