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

Ergebnis 1 bis 4 von 4

Thema: zeitgenaues Handling der Weckalarme

  1. #1
    Registriert seit
    20.07.2012
    Beiträge
    33
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte bei meinem Programm taktgenau Sollwerte für einen Analogsausgang bereitstellen und die Zeitspanne soll dafür genau eingehalten werden. Zum Einsatz kommt eine CPU 1513F, die über Profinet mit einer ET200S (IM151-3) kommuniziert woran sich die Analogausgangsbaugruppe befindet.

    Kurz zur Erklärung des Programms und der gewünschten Funktion:

    In einem DB befinden sich mehrere gespeicherte Sollwerte für den Analogausgang. Als Beispiel ist dort eine Ausgabe der Werte von 3V bis 5V gegeben. Die 5V sollen dabei nach z.B. 100ms erreicht werden. In dem Array werden dann von 0 bis 100 immer 0,02 aufaddiert -> sprich: Data[0] = 3V, Data[1] = 3,02V, Data[2]= 3,04V ... Data[100] = 5V. Ich habe mich dabei für eine Steuerung via Weckalarm entschieden. Hierbei soll z.B. alle 10 ms ein neuer Wert an die Analogausgangsbaugruppe gesendet werden. Wird ein entsprechender Taster gedrückt so soll dann von 0 bis 100 ms jede 10te ms ein neuer Wert vorgegeben werden.

    Der Programmcode dazu sieht aktuell wie folgt aus:

    Code:
    IF #Taster_gedrueckt = TRUE THEN
        #i := 0;
        #Schritt_Übergabe := 1;
        #Taster_gedrueckt := FALSE;
    END_IF;
    
    CASE #Schritt_Übergabe OF
        1:
            IF #i < 100ms THEN
    
                #Analogausgang := Data[#i];    
                #i := #i + 10;
            ELSE
                #Schritt_Übergabe := 2;
            END_IF;
        2:
            #Analogausgang := 0;
            #Schritt_Übergabe := 3;
    END_CASE;
    Das Problem, was hierbei auftritt ist, dass die Zeit von 100 ms nicht genau eingehalten wird. Die Zeitspanne an sich ist undefinierbar und ist entweder länger oder kürzer als 100ms. Lässt sich der Weckalarm mit den SFCs EN_IRT und DIS_IRT so steuern, dass die 100ms genau eingehalten werden? Wenn ja, wie mache ich das genau? Der Weckalarm ist auf 10000 us eingestellt. Vermutlich liegt es an dem undefinierten Zeitpunkt des Tastendrucks und der damit verbundenen undefinierbaren Resttaktzeit bis der Weckalarm erneut aufgerufen wird.
    Ich stehe mir da gerade mal echt auf dem Schlauch, was das angeht und hoffe mir kann jemand dabei helfen...
    Zitieren Zitieren zeitgenaues Handling der Weckalarme  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Hallo,
    das von dir gesehene Problem kann m.E. nicht auftauchen, da du den Taster ja nur für den Start nimmst. Der Abbruch erfolgt ja in deinem Baustein selbst.
    Was passiert denn ganz genau ?
    Und ... wie kommt die Variable #Analogausgang auf den tatsächlichen Analog_Out ? Passiert das per Perepherie-Zuweisung auch in diesem Baustein (so sollte es sein) oder vielleicht im zyklischen Programm ?

    Gruß
    Larry

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Woran machst Du fest, daß die 100ms "nicht genau" eingehalten werden? Wie groß ungenau?
    Wie genau soll Deine Zeit eingehalten werden? Wie spät nach dem Start-Event soll der erste Wert der Sequenz ausgegeben werden?
    Ein Weckalarm hält das eingestellte Zeitraster eigentlich sehr genau ein.

    Dein Code sieht nicht so aus, als ob er in einem Weckalarm wäre bzw. als ob das Dein wirklicher Code wäre. Wie wird der Code aufgerufen? Wo und wie sind die Variablen deklariert? Wie gelangt der Wert von #Analogausgang zum Baugruppen-Analogausgang (Peripherie)?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Registriert seit
    20.07.2012
    Beiträge
    33
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ah, okay. Ich muss wohl doch noch etwas weiter ausholen - ich hatte bei der Programmbearbeitung doch noch einen signifikanten Teil nicht erwähnt, weil ich dachte dass dies nicht relevant ist.
    Also der hier verwendete Weckalarm (OB 31) ruft einen Funktionsbaustein auf in dem sich der oben erwähnte SCL-Code befindet. Im Prinzip wird in dem SCL-Code der Sollwert in ein bestimmtes Byte eines Datenbausteins geschrieben. Das Problem dabei ist, dass dies mit der SFC 15 an einen über Profinet verbundenen Inverter gesendet wird. Neben den neuen Sollwerten alle 10 ms erhält der Inverter mit dem ersten Sollwert auch ein Startsignal. Die SFC15 befindet sich allerdings im zyklischen Programmablauf in einer FC, die vom OB1 aufgerufen wird.
    Hieran wird dann scheinbar die nicht definierte Zeitspanne liegen.

    Ich messe zum Einen den Sollwert, der an den Inverter gesendet wird, indem ich diesen auch einem Analogausgang zuweise und zum Anderen den Istwert, den der Inverter ausgibt. Beide Werte sind an Oszilloskop angeschlossen. Der Istwert ist dabei der Ausgangsstrom des Inverters, der sich entsprechend der verschiedenen Sollwerte verändert. Die Zeit an sich ist dabei undefiniert es kann sein, dass der Inverter für 80 ms einen Strom liefert oder aber auch für 130 ms.

    So wird das Problem dann vermutlich in dem Datenaustausch mit dem Inverter innerhalb des OB1 liegen, dass der SFC15 im zyklischen Programmablauf aufgerufen wird. Würde ich die SFC 15 auch im Weckalarm aufrufen so sollte das Problem wohl behoben sein, oder?

Ähnliche Themen

  1. Step 7 2-D Handling - Hardeware
    Von Pico1184 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 15.09.2013, 21:37
  2. Antworten: 4
    Letzter Beitrag: 29.06.2011, 10:56
  3. Weckalarme im zusammen hang mit dem ob 35
    Von grizu im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 14.09.2009, 21:14
  4. Weckalarme in Aufrufstruktur
    Von chivas im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 29.03.2007, 20:44
  5. Weckalarme
    Von capri-fan im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.02.2006, 10:08

Lesezeichen

Berechtigungen

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