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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Thema Step7 und Echtzeit

  1. #11
    thwe ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.10.2008
    Beiträge
    10
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    die auslegung ist aber auch falsch, denn eine endlosschleife tritt ja nicht auf!

    schleifen sind möglich und können berechnet werden.
    es kann also eine maximale ausführdauer bestimmt werden.
    Endlosschleifen sind nicht möglich? Also in Pseudocode würde mir spontan sowas einfallen:

    BEGIN zyklus:

    LABEL: loop
    READ Input e0.0
    IF e0.0 != 42
    GOTO loop

    END zyklus

    Falls am Eingang e0.0 nie eine 42 anliegt, so hat man doch eine klassische Endlosschleife. Nach meinem bisherigen (rein auf Büchern basierendem) Verständnis von Step7 würde sich bei Überschreiten der Zykluszeit der Zykluswatchdog melden und die SPS in STOP-State versetzen. Liege ich damit erstmal korrekt, oder sind derartige Ausdrücke garnicht möglich?

    Das ist zwar ein wirklich sinnloses Beispiel, aber es drück denke ich genau das Problem aus, was ich bei der Sache sehe. Eine Schleife, die nicht auf das Ende einer (verhersagbaren) Berechnung wartet, sondern auf ein spezielles (zufälliges) Eingangssignal.

    Echtzeit soll wirklich nur bedeuten, dass ich vor Ablauf des Zyklus weiß, wann dieser enden wird. Wie schnell die reale Berechnung dabei ist, ist eigentlich egal. Echtzeit kann durchaus echt Zeit kosten... Nicht alles ist Echtzeit, sondern nur die Prozesse, deren (maximale) Laufzeit ich auch 100% verhersagen kann.

    Danke für die vielen Beiträge. Ich kann mich leider zur Zeit mit SPS und deren Programmierung nur auf dem Papier beschäftigen (daher auch nur Pseudocode), von daher freue ich mich über reale Erfahrungsberichte und Anregungen umso mehr.

  2. #12
    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 thwe Beitrag anzeigen
    BEGIN zyklus:

    LABEL: loop
    READ Input e0.0
    IF e0.0 != 42
    GOTO loop

    END zyklus
    ein solcher code macht in einem zyklisch abgearbeiteten programm keinen sinn und wird dir deshalb wohl nie in einer SPS begegnen (mal abgesehen davon, dass ein bit nur true oder false sein kann )

    schleifen werden vorwiegend für algorithmen verwendet, die innerhalb eines zyklusses abgearbeitet sein müssen, wie z.b. sortierungen oder fifo-register.

    dein code würde im ersten zyklus in dem die bedingung nicht erfüllt ist, die zykluszeit überschreiten, da das prozessabbild nur vor beginn eines zyklusses aktualisiert wird und einen ganzen programmablauf gültig ist.

    eine möglichkeit wäre die verwendung von azyklisch gelesenen eingängen, aber ... hmmm, das macht doch keiner
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Also Echtzeitfähigkeit muß ja nicht zwangsläufig bedeuten, daß dein Programm, welches du schreibst auch wirklich echtzeitfähig ist. Wenn du in einem Betriebssystem, welches echtzeitfähig ist, ein Programm schreibst, daß sich in einer Endlosschleife dreht, dann reagiert diese Teil des BS auch nicht mehr, ist also nicht echtzeitfähig, der Rest aber schon. Ich weiß ja nicht, wie Siemens die Echtzeitfähigkeit genau begründet, aber da das Hauptprogramm der SPS ja faktisch nur aus einem Task besteht, kann man diesen per Programm natürlich unberechenbar machen. allerdings hat die SPS ja noch Weckalarme etc. Diese Teile laufen in ihrem Zeitschema normal weiter.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #14
    Registriert seit
    11.10.2006
    Ort
    Verden (Aller)
    Beiträge
    532
    Danke
    31
    Erhielt 58 Danke für 49 Beiträge

    Standard

    Öhm....Echtzeitfähig bedeutet doch meines Wissens die Sicherstellung einer Reaktion innerhalb einer bestimmten Zeit. Eben nicht wie Windoof, was wenn es abstürzt, oder der gerfragte Task, gar micht mehr reagiert. Bei einer SPS wird das sichergestellt, indem ich eine Zykluszeitüberwachung habe und bei bestimmten Steuerungen (400er) eine Mindestzykluszeit einstellen kann. Wenn mein Programm also zwischen 8 und 14 ms braucht, stelle ich eine Mindestzykluszeit von 18ms ein und kann sicher sein, innerhalb von 54 ms gibt es eine Reaktion (von wegen PAE lesen, PAA schreiben und den Latenzen). Die Zykluszeitüberwachung stelle ich dann auf 50ms, dann gibt es eine Reaktion, sollte diese Zeit überschritten werden.
    Genau deshalb gibt es ja immer noch SPSen, obwohl die schon seit 15 Jahren totgeredet werden. Klar gibt es auch schon lange Soft-SPSen, die das auch können, weil sie auf einem Echtzeitkernel laufen, also einem Betriebssystemteil, der sich ähnlich verhält wie eine SPS. Aber das macht er in einem HÜ-PC, der macht das keine 15 Jahre ohne Mucken, wie das eine SPS macht.
    "Ein lahmer Drecksplanet ist das, ich habe nicht das geringste Mitleid" (Prostetnik Vogon Jeltz)

  5. #15
    Registriert seit
    16.08.2007
    Ort
    Nürnberg/Herzogenaurach
    Beiträge
    90
    Danke
    3
    Erhielt 4 Danke für 4 Beiträge

    Standard

    da trifft irgendwie theorie und wirklichkeit aufeinander. in der theorie mag eine SPS nicht garantiert echtzeitfähig sein, in der Realität gibt es aber wohl keinen erfahrenen SPS-Programmierer, der eine solche schleife im zeitkritischen teil programmieren würde.
    evt. muß man das ganze auch andersrum betrachten:
    ein prozess verlangt eine bestimmte reaktionszeit. wenn der prozess durch ein zyklisches programm gesteuert wird, ergibt sich daraus die max. zykluszeit (abtast-theorem beachten!). kann das programm die max. zykluszeit nicht einhalten, kommt es i.d.R. zum zykluszeit-fehler und zum cpu-stop. der stop-zustand gehört aber zu dieser betrachtung dazu. der stop-zustand stellt einen sicheren zustand dar, da definiert alle ausgänge abgeschaltet werden. damit wird der prozess angehalten (sofern dies möglich ist). dadurch erfolgt wiederum eine reaktion in einer definierten zeit und somit sind die echtzeit-kriterien erfüllt!

  6. #16
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Mit Cyclic Interrupts hat S7 auch deterministische "tasks".
    Bis 315 nur 1 task (OB35).
    Ab 317 4 tasks (OB32..OB35)

    Andere SPS hersteller haben auch nicht beliebig viele tasks.
    Z.b. CompactLogix 4-8 tasks.
    ControlLogix 100 tasks.
    TwinCat 4 tasks.
    Jesper M. Pedersen

  7. #17
    thwe ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.10.2008
    Beiträge
    10
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von vipianer Beitrag anzeigen
    kann das programm die max. zykluszeit nicht einhalten, kommt es i.d.R. zum zykluszeit-fehler und zum cpu-stop. der stop-zustand gehört aber zu dieser betrachtung dazu. der stop-zustand stellt einen sicheren zustand dar, da definiert alle ausgänge abgeschaltet werden. damit wird der prozess angehalten (sofern dies möglich ist). dadurch erfolgt wiederum eine reaktion in einer definierten zeit und somit sind die echtzeit-kriterien erfüllt!
    Da der Prozess aber seine eigentliche Aufgabe nicht (in der vorgegebenen Zeit) erfuellen konnte, kann man nicht wirklich von einer Echtzeitausfuehrung sprechen. Sonst koennte man jede Sprache per Zeitscheiben echtzeitfaehig machen.
    Ok, fuer die Praxis ist ja eigentlich auch nur interessant, dass in solch einem Fehlerfall eine kontrollierte Reaktion erfolgen kann. Fuer eine theoretische Betrachtung reicht mir das jedoch leider nicht aus. Das ist ledigleich ein (praxisrelevantes) Aufweichen der Echtzeitbedingung aber keine harte Echtzeit wie bei einer typischen Zustandsmaschiene mehr. (Das betrifft ebenso EZ-Betriebssysteme...)

    Ich hatte gestern die Moeglichkeit mir bei ZF Brandenburg einen Getriebepruefstand mit SPS-Steuerung anzuschaun und ein paar Fragen zu klaeren. Dort hat man mich auch mit grossen Augen angeschaut, als ich von der besagten Endlosschleife gesprochen hab. "Wer wurede sowas machen?" - "Keiner!"
    Nach ein wenig Diskusion (und Verteidigung wie toll ihre SPS alle laufen ) wurde ihren dann so langsam der eigentliche Hintergrund meiner Frage klar - Anschauen, mit welchen Techniken unkontrollierter Zeitbedarf (Extremfall Endlosschleifen) bei EZ-Maschinensteuerungen verhindert oder abgefangen werden um diese dann in (per Compiler) pruefbare Regeln fuer EZ-Sprachen umzuformen.

    Bei praxisrelevanten Anwendungen scheint dies vergleichsweise leicht, da die Steuerungsaufgaben ueberschaubar und die Eingangsdaten bekannt sind (abgeschlossenes System). Im Bereich hoeherer Programmiersprachen und Betriebssysteme aber schon wieder nicht mehr, da eben alles mehr oder weniger nutzerbedingt unvorhersehbar auftreten kann (Interrupts, Speicheranforderung, ...).

    Meine bisherige Vermutung lauft darauf hinaus, dass EZ nur in Form klassischer Zustandsmaschienen realisierbar ist. Generell zulaessig sind dann nur Schritte und Vorwaertsspruenge.
    Mein Plan ist also eine Schrittweise Aufweichung bestehender Sprachkonstrukte, unter welchen Rahmenbedingungen der Zeitbedarf vorhersagbar bleibt. (Zum Beispiel koennten Rueckwaertsspruenge nur erlaubt sein, falls alle Eingangsbelegungen und Zuweisungen innerhalb der Schleife schon vor Abarbeitung bekannt sind.)

  8. #18
    Registriert seit
    16.08.2007
    Ort
    Nürnberg/Herzogenaurach
    Beiträge
    90
    Danke
    3
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von thwe Beitrag anzeigen
    Meine bisherige Vermutung lauft darauf hinaus, dass EZ nur in Form klassischer Zustandsmaschienen realisierbar ist. Generell zulaessig sind dann nur Schritte und Vorwaertsspruenge.
    Mein Plan ist also eine Schrittweise Aufweichung bestehender Sprachkonstrukte, unter welchen Rahmenbedingungen der Zeitbedarf vorhersagbar bleibt. (Zum Beispiel koennten Rueckwaertsspruenge nur erlaubt sein, falls alle Eingangsbelegungen und Zuweisungen innerhalb der Schleife schon vor Abarbeitung bekannt sind.)
    kennst du S7-GRAPH. Damit werden in graphischer Form Schrittketten programmieren. Diese erfüllen alle Bedingungen, die du für EZ formulierst. Es ist dann nur eine Vorschrift für den SPS-Programmierer notwendig, NUR mit S7-GRAPH zu programmieren

  9. #19
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Echtzeitfähigkeit bedeutet doch, dass Dein System in einer Zeit x reagieren kann. Programmieren mußt Du solche Geschichten doch sowieso selber. Die S7 garantiert Dir aber, (wie andere SPS-en wohl auch), dass Dein Programm aber z.B. nicht durch irgendwelche BS eigenen Prozesse unterbrochen wird.
    Angenommen Du hast einen modernen PC und programmierst auf diesen eine einzige Schleife, von mir aus auch noch in Assembler. Die wird pro Sekunde wahrscheinlich ein paar Millionen mal durchlaufen. In dieser Schleife fragst Du einen Eingang ab, den Du nur 1 mal pro Sekunde benötigst. Also wäre das für diese Anwendung erstmal Echtzeit. Jetzt geht Dein BS (z.B. XP) hin, und greift auf die Festplatte zu. Während dieser Zeit friert XP alle anderen Prozesse ein. Und schon wars das mit der Echtzeit, weil XP vielleicht zwei Sekunden lang sämtliche Prozesse belegt. Somit könnte zwar Dein Programm die Echtzeit garantieren, das BS aber nicht.

    So etwas kann Dir bei der S7 nicht passieren.

  10. #20
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @thwe:
    Bei deiner Betrachtung solltest du auch berücksichtigen, dass wenn die SPS zu Mess-Aufgaben (wie in deinem Beispiel) herangezogen wird man sehr wohl eine "echte" EZ-Fähigkeit duch Anwendung der Zeit-INT-OB's erreichen kann. Ich realisiere dann die Messwert-Aufnahme in dem Zeit-OB (der dann in dem von dir vorgegebenen Zeitraster aufgerufen wird) und kann mich auf die Zuordnung der Werte schon verlassen.

    Bei der Betrachtung von Maschinen-Reaktionen ist EZ-Fähigkeit i.d.R. nicht so wichtig bzw. wird durch geeignete Sub-Hardware und/oder -Technik erreicht ...

    Gruß
    LL

Ähnliche Themen

  1. Pumpensteuerung mit Echtzeit
    Von Markus1973 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 24.06.2008, 11:44
  2. Wago 750-842 Echtzeit programmieren ???
    Von Anonymous im Forum Feldbusse
    Antworten: 7
    Letzter Beitrag: 22.04.2006, 10:04
  3. Echtzeit
    Von Anonymous im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 10.11.2005, 14:21
  4. Echtzeit mit S7-300 ????
    Von Integer im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 05.11.2003, 10:53

Stichworte

Lesezeichen

Berechtigungen

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