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

Ergebnis 1 bis 10 von 10

Thema: Impulse

  1. #1
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich steh im Moment etwas auf dem Schlauch. Ich brauche alle 250ms einen Impulse, den kriege ich auch ohne Problem hin, aber:

    0000ms: Merker 1
    0250ms: Merker 2
    0500ms: Merker 3
    0750ms: Merker 4
    1000ms: Merker 1
    1250ms: Merker 2
    1500ms: Merker 3
    1750ms: Merker 4
    usw...

    Wie setze ich das am Besten um?

    Danke!
    Zitieren Zitieren Impulse  

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

    Standard

    Hallo,
    du könntest z.B. einen Zähler mitlaufen lassen (der von dem Timer-Impuls getriggert wird) und dann entsprechend (über einen Vergleich) den passenden Merker zuweisen.
    Ist der Zähler > 4 dann setzt du ihn wieder auf 1 (z.B.).

    Gruß
    Larry

  3. #3
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Hängt eni wenig davon ab wie der Impuls gebildet wird...

    Ich würde aus dem Puls eine Flanke machen und mit der weiterarbeiten -

    Code:
    UN Flanke
    SPB NiLO
    L Merkerwort
    SLW 1
    T merkerwort
    
    UN Merker 1
    UN Merker 2
    UN Merker 3
    UN Merker 4
    S Merker 1
    
    NiLo: Nop 0
    Das Grauen lauert in der Zwischenablage !!

  4. #4
    Registriert seit
    27.03.2012
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich hab eine einfache Lösung gefunden Der Zählwert einer Einschaltverzögerung wird einfach mit dem gewünschten Zeitwert verglichen

  5. #5
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Zitat Zitat von MrChiliCheese Beitrag anzeigen
    Ich hab eine einfache Lösung gefunden Der Zählwert einer Einschaltverzögerung wird einfach mit dem gewünschten Zeitwert verglichen
    Was ist denn daran einfach?
    Da musst du ja die Zeitwerte aufaddieren oder deinen Zählwert dividieren.

    Also der Vorschlag von oben mit dem Zählen des Impulses ist einfacher.
    Wenn du willst dann kannst es noch über ein Schieberegister machen. Würde noch einfacher sein.

    Edit: dtsclipper hat es oben schon vorgemacht.
    Geändert von godi (26.06.2013 um 14:49 Uhr)

  6. #6
    Registriert seit
    05.10.2005
    Beiträge
    188
    Danke
    31
    Erhielt 16 Danke für 14 Beiträge

    Standard

    Einfachste weg:
    sind 250ms+Zyklus (wenn er nicht stört)

    set
    = ton_stat.in

    u ton_stat.Q
    FP Flanke_Stat
    SPBN NiLO
    L Merkerwort
    SLW 1
    T merkerwort

    UN Merker 1
    UN Merker 2
    UN Merker 3
    UN Merker 4
    S Merker 1

    clr
    = ton_stat.IN
    NiLo: Nop 0

    call ton_stat
    in:=
    PT:=T#250ms
    Q:=
    ET:=

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

    Standard

    Oder OB35, dann braucht er weder Timer, noch Flanke, noch Sprung - sondern nur diesen Ausschnitt (und zeitlich passender wird's auch noch):
    Zitat Zitat von dtsclipper Beitrag anzeigen
    Code:
    L    #Merkerwort
    SLW  1
    T    #Merkerwort
    
    UN   #Merker 1
    UN   #Merker 2
    UN   #Merker 3
    UN   #Merker 4
    S    #Merker 1

    @Fanta-Er,
    150 Beiträge und noch nicht den CODE-Button gefunden?

  8. #8
    Registriert seit
    05.10.2005
    Beiträge
    188
    Danke
    31
    Erhielt 16 Danke für 14 Beiträge

    Standard

    naja... bei telefonieren mit mama nebenbei geschrieben gelobe besserung
    Code:
    verstanden =true

  9. #9
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Das ist bei weitem kein einfaches Problem !
    Die OB1 Zykluszeit interferiert mit dem Timer (re-)start Perioden ... also wenn die 4 Merker ganz genau Taktmerker-artig sich genau nach 250ms abwechseln sollen ... wüsste ich nicht wie es auf jedem Fall gehen würde ...

    PS: Stell dir vor du hast unregelmäßige OB1 Zykluszeiten (oder regelmäßig aber prim zu 250ms) , was passiert dann ? Die/der Timer wird/werden nicht unabhängig von OB1-zeit gestartet/gelesen ... usw


    ?ist OB35 immer eine Lösung?
    Geändert von 00alex (01.07.2013 um 04:10 Uhr)

  10. #10
    Registriert seit
    05.10.2005
    Beiträge
    188
    Danke
    31
    Erhielt 16 Danke für 14 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    die zeitabweichung ist beim messen und auch bei rampenfunktionen immer ein problem. es gibt IMMER zeiteinflüsse. es kommt auf die aufgabe(anwendung) und der hardware an.
    um ganz genau arbeiten zu können reicht der ob35 noch nicht einmal aus.

    in meinem beispiel ist es richtig, dass die zykluszeit einen einfluss auf die zeit hat. bei einer vollen 312er cpu mit vielen a-zyklischen aufrufen wird die zeit relativ weit schwanken.
    zykluszeit zwischen 40-150ms
    extrem beispiel bei 150ms => Letzte zeitauslesen des timers bei 249ms, im nächtsten zyklus true = 250+149 = 399ms. 399 + 399 + 399 + 399 = 1596ms soll = 1sec
    beste beispiel bei 50ms => Letzte zeitauslesen des timers bei 200ms, im nächtsten zyklus true = 250ms. 250 + 250 + 250 + 250 = 1000ms soll = 1sec. höchste differenz beim letzten merker 596ms.
    stört es bei verschieden blinktakten für lampen? nö. stört es bei berechnungen einer rampe? aber gewaltig.

    pc477
    mindestzykluszeit auf 10ms und programm läuft in diesen rahmen
    beispiel bei ungüstigen fall 10ms => Letzte zeitauslesen des timers bei 249ms, im nächtsten zyklus true = 250+ 9 = 259ms. 259 + 259 + 259 + 259 = 1036ms soll = 1sec
    beispiel bei güstigen fall 10ms => Letzte zeitauslesen des timers bei 240ms, im nächtsten zyklus true = 250ms. 250 + 250 + 250 + 250 = 1000ms soll = 1sec. höchste differenz beim letzten merker 36ms.

    das große problem ist dabei, dass du ja irgendetwas vergleichen/berechnen willst (analogwert, peripheriegeräte usw.). hier hast den bus ( z.b. rückwandbus ca. 187kbs/s, pn <10ms usw.) und auch die aktualisierung der einzelnen geräte. die meisten analogbaugruppen habe z.b. eine interne aktualisierung von >40ms. die dürftest du hier auch mit einrechenen.

    wenn jetzt zu viel in den ob35 gepackts wird, schnellt deine zykluszeit nach oben. du musst nähmlich alle relevanten werte dort programmieren. es kommt immer darauf an was ich machen will. so sehe ich es. keiner weis was der te machen will. in der praxis sind die schwankungen kleiner und somit ist die reproduzierbarkeit der messungen/berechnungen besser. du kanst nicht immer die 249ms treffen (2x150ms >250ms).
    Geändert von Fanta-Er (01.07.2013 um 06:45 Uhr)

Ähnliche Themen

  1. Leistungsberechnung über Impulse
    Von doretan im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 27.06.2011, 21:44
  2. Impulse Verarbeiten
    Von fi1988 im Forum Simatic
    Antworten: 46
    Letzter Beitrag: 27.03.2008, 19:59
  3. Impulse weiterverarbeiten?
    Von tino2512 im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 29.08.2006, 08:20
  4. Impulse Zählen
    Von Much2k im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 17.10.2005, 15:01
  5. Impulse
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.08.2003, 16:57

Lesezeichen

Berechtigungen

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