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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Phoenix Contact ILC 350 PN Zykluszeit

  1. #1
    Registriert seit
    22.11.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen,

    momentan arbeite ich an meiner BA mit dieser SPS, bei der ich die Zykluszeit herraus bekommen soll, sozusagen die Zeit für einen Durchlaf der Berechnungen... wisst ihr ja selber
    In der Hilfe hab ich etwas interessantes gelesen. Es gibt eine Liste mit vordefinierten Systemvariablen bei der auch die Zykluszeit grundlegend erfasst und aufgezeichnet wird.
    Leider war der Link zu dieser Liste "Bitte hier klicken..." tot. Quasi nicht vorhanden. Wie komme ich an diese Liste?
    Ich wäre euch sehr dankbar wenn ihr mir helfen könntet.

    Oder hat jemand eine andere Idee zur beschaffung dieser Zeit???

    Danke im Vorraus

    Bernd87
    Zitieren Zitieren Phoenix Contact ILC 350 PN Zykluszeit  

  2. #2
    Bernd87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    so.... nach reichlich Vorschung ist es mir gelungen meine Probleme selber zu lösen.

    innerhalb der PC WORX-Hilfe EINFACH nach "PLC_TASK_xy" suchen und voila....is das richtig geschrieben??... erscheint eine liste solcher Variablen.

    danke an mich selbst...

    Aber trotzdem danke das ihr mein thema so zahlreich beachtet habt.

  3. #3
    Registriert seit
    29.07.2008
    Beiträge
    143
    Danke
    4
    Erhielt 27 Danke für 21 Beiträge

    Standard

    Hallo

    unter den Systemvariablen findest du TICK_COUNTS o.ä.

    dies ist eine laufende Zahl die mit jeder ms (bei ILC3xx) hochgezählt wird.

    Wenn du am Anfang sowie am Ende deiner Berechnungstask den Wert speicherst und anschließend die Differenz ermittelt, hast du somit die vergangene Zeit.

    Bitte beachte das dies leider eine DINT ist und somit einen Wechsel von positiver nach negativer Zahl hat

    alternativ gibt es eine Struktur über jede Task, auch hier findest du Zeitwerte über die jewelige Task

  4. #4
    Registriert seit
    10.08.2011
    Beiträge
    24
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    noch eine wichtige Information - wahrscheinlich kannst du anhand des Systemticks keine gute Zeit herausfinden.
    Die Berechnung wird viel schneller abgearbeitet werden als ein System Tick ist.

    WICHTIG: Ein SystemTick ist keine Zeiteinheit - die bekommt man nur heraus wenn man im InfoDialog nachschaut - den InfoDialog findest du wenn du den DebugDialog öffnest mit dem man START/STOP durchführt udn dort auf INFO drückst.

    Solltest du herausfinden das die Berechnung innerhalb eines Systemticks stattfindet, solltest du folgendermaßen vorgehen:
    Ruf den Code einfach 100 oder 1000 mal auf, berechne den System Tick (Variable: PLC_SYS_TCK_CNT) und teile die Systemticks einfach durch die Anzahl der Aufrufe. Damit könntest du ein brauchbares und messbares Ergebnis erhalten.

    Bedeutet:
    Systemtick ist auf 4ms eingestellt - siehe InfoDialog
    Die Berechnung wurde 100 mal ausgeführt (Wichtig - innerhalb der Task als Schleife aufrufen)
    PLC_SYS_TCK_CNT wurde in der Zeit der Berechnung um 4 inkrementiert.

    Also 4 x 4ms = 16ms _____ 16ms/100 Berechnungen= 0,16ms/Berechnung

    Ich hoffe ich konnte Dir auch ein wenig weiterhelfen.

    Gruß,
    Kollo.

  5. #5
    Bernd87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    [QUOTE=Kollo;354967]Hallo,


    Solltest du herausfinden das die Berechnung innerhalb eines Systemticks stattfindet, solltest du folgendermaßen vorgehen:
    Ruf den Code einfach 100 oder 1000 mal auf, berechne den System Tick (Variable: PLC_SYS_TCK_CNT) und teile die Systemticks einfach durch die Anzahl der Aufrufe. Damit könntest du ein brauchbares und messbares Ergebnis erhalten.

    Bedeutet:
    Systemtick ist auf 4ms eingestellt - siehe InfoDialog
    Die Berechnung wurde 100 mal ausgeführt (Wichtig - innerhalb der Task als Schleife aufrufen)
    PLC_SYS_TCK_CNT wurde in der Zeit der Berechnung um 4 inkrementiert.

    Also 4 x 4ms = 16ms _____ 16ms/100 Berechnungen= 0,16ms/Berechnung


    Ist es aber nicht so dass je Berechnung/Erhöhung ein Zyklus vergeht wenn ich ein Zähler verrwende?

    Das heißt:
    4ms (je Systemtick) + 4ms (Inkremetierung) = 8ms (für die erhöhung des Zählers um eins)

    ...mal 100, um 100 Durchläufe/Zyklen zu zählen.
    Macht 800ms für die Zählung, vorrausgesätzt jeder Schritt benötigt ca. 8ms??

    Oder bin ich jetzt völlig falsch?
    ...kommt ja auch darauf an welche leistung die CPU, bzw welchen Umfang das zu bearbeitende Programm hat.

    lasse mich gern eines besseren belähren!!!

    MfG Bernd87

  6. #6
    Registriert seit
    10.08.2011
    Beiträge
    24
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Bernd,

    ja ich glaube ich habe mich nicht deutlich genug ausgedrückt.
    Du musst deine Berechnung innerhalb einer Task aufrufen - in einer Schleife.

    Das heisst, du musst sicherstellen das du nicht eine Berechnung pro Zyklus machst - sondern alle 100 Berechnungen in einem Zyklus.

    Wie groß die Taskzykluszeit dabei eingestellt ist - ist völlig unentscheident!
    Es kommt einzig und allein darauf an wie viele PLC System Ticks für deine Berechnungen vergehen. Im Prinzip kannst du das sogar in einer Task durchführen die alle 10 Sekunden aufgerufen wird. Ich würde dir sogar eine relativ große Zeitschlagen um dem Watchdog aus dem Weg zu gehen - also irgendwas bis zu 100ms.

    Am einfachsten geht das in ST wenn du eine FOR Schleife nutzt und nicht mit einer Variablen die in jedem Zyclus um eins incrementiert.

    Gruß,
    Kollo.

  7. #7
    Bernd87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vlt. hab ich mich ja auch nicht korrekt ausgedrückt.
    Ich benötige die Zykluszeit eines vollständigen Durchlaufs der Berechnung aller Funktionsblöcke,
    soll heißen, die Zeit zwischen des Initialisierungsschritts des "OB1" bis zur nächten Initialisierung.

  8. #8
    Registriert seit
    10.08.2011
    Beiträge
    24
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Bernd,

    du möchtest also die Dauer deines kompletten Programms wissen.
    Wenn ich das richtig sehe kommst du aus der Siemens Welt. Oder?

    Pronzipiell ist das beim ILC etwas anders, da du dort die Programme zyklisch aufrufst, also Beispielsweise einer 10ms Task zuweist.
    Innerhalb dieser Zeit wird dann dein komplettes Programm abgearbeitet.
    Die Abarbeitung ist schlichtweg anders als bei einer Siemens SPS, dort wird nach der abarbeitung eines Programms sofort wieder begonnen - bei einem ILC wird das erst wieder nach der eingestellten Taskzeit passieren.


    Wie lange es wirklich dauert kann man in den TASK_INFO Strukturen sehen.
    (Die Angabe erfolgt dort auch in den sogenannten SystemTicks)

    Wozu benötigst du die Abarbeitunsgzeit denn?
    Möchtest du wissen wie stark deine SPS Ausgelastet ist?
    Das sieht man auch in dem Info Dialog - dort ist die CPU Auslastung in % angegeben.



    PS: Nichts desto trotz - wenn du nur ein Programm hast, kannst du meine Methode darin anwenden - so bekommst du die Zeit am genauesten heraus die dein Programm zur abarbeitung benötigt.

    Gruß,
    Kollo.

  9. #9
    Bernd87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Kollo

    ...ja ich komme sozusagen aus der Siemens-Welt. Habe das quasi daran gelernt. (deshalb dieser bezug)

    Zitat Zitat von Kollo Beitrag anzeigen
    Wie lange es wirklich dauert kann man in den TASK_INFO Strukturen sehen.
    (Die Angabe erfolgt dort auch in den sogenannten SystemTicks)
    Taskzeit = Default-Taks (in TASK_INFO)??
    ...oder beziehe ich diese Zeit anderweitig?

    Zitat Zitat von Kollo Beitrag anzeigen
    Wozu benötigst du die Abarbeitunsgzeit denn?

    Ich sitze an einem Reengineeringeiner/Erweiterung einer virtuellen Biogasanlage (Simulation und Steuerung auf jeweils einer SPS) und versuche ein HITL-System zu realisieren.
    Dieses läuft schon in einer ca. 60-fachen Raffung der Zeit.
    Es müsste eigentlich das 100-Fache sein da für eine selbstgebaute Uhr ein Takt von 10ms vorgegeben wird.
    Wenn in diesem Bezug 1000ms die Realzeit wiederspiegeln.

    Das kann ja eigentlich nur passieren wenn entweder die "Taskzeit" für die 10ms Schritweite nicht ausreichen oder die Uhr eine eigene Laufzeit/Verzögerung erzeugt.


    Zitat Zitat von Kollo Beitrag anzeigen
    PS: Nichts desto trotz - wenn du nur ein Programm hast, kannst du meine Methode darin anwenden - so bekommst du die Zeit am genauesten heraus die dein Programm zur abarbeitung benötigt.
    Ein Programm bezieht sich hier auf vollständige Programm oder nur auf einen Funktionsblock, selbsterstellt bzw. vorgegeben. Bei mir sind es doch eine ganze Menge Blöcke

    Gruß,
    Bernd

  10. #10
    Registriert seit
    10.08.2011
    Beiträge
    24
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Bernd87 Beitrag anzeigen
    Taskzeit = Default-Taks (in TASK_INFO)??
    ...oder beziehe ich diese Zeit anderweitig?

    Das kann ja eigentlich nur passieren wenn entweder die "Taskzeit" für die 10ms Schritweite nicht ausreichen oder die Uhr eine eigene Laufzeit/Verzögerung erzeugt.

    Hi Bernd,

    ne - die TASK_INFO ist die Struktur in den globalen Variablen. in der Struktur findest du MIN_DURATION_MAX_DURATION und sowas an der du die Abarbeitunsgzeiten in SystemTicks ablesen kannst.

    An Deiner Stelle würde ich nicht die Defauklt Task nehmen, sondern dann eine 10ms Task Cyclic anlegen. (Der WatchDog muss dann auch 10ms oder kleiner sein).

    So stellst du sicher das deine Berechnungen alle 10 ms abgearbeitet werden und der WD überprüft das genau das auch innerhalb der 10ms passiert.

    Wäre das nicht deine Lösung?

    Gruß,
    Kollo.

Ähnliche Themen

  1. Phoenix Contact ILC 150 ETH FTP Upload
    Von cag im Forum PHOENIX CONTACT
    Antworten: 7
    Letzter Beitrag: 10.11.2011, 19:14
  2. Phoenix Contact ILC 350 PN
    Von snowbda im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 17.04.2011, 22:32
  3. Phoenix Contact ILC 170 ETH 2TX
    Von plangner im Forum PHOENIX CONTACT
    Antworten: 2
    Letzter Beitrag: 24.03.2011, 10:55
  4. Phoenix Contact ILC 130
    Von Haytech im Forum PHOENIX CONTACT
    Antworten: 2
    Letzter Beitrag: 22.02.2011, 16:14
  5. Phoenix Contact ILC170 ETH 2TX
    Von HeXoR im Forum PHOENIX CONTACT
    Antworten: 6
    Letzter Beitrag: 18.01.2011, 11:51

Lesezeichen

Berechtigungen

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