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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Statusbits auswerten?

  1. #11
    McNugget ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Cerberus.

    Die erste Anweisung passt schon sehr gut auf meine Anforderung. Aber auch

    Dein Ansatz ist interessant, dass man also quasi für 1s eine Meldung bekommt, dass was mit den Sensoren ist/war.

    Aber wie habe ich das zu verstehen:

    "im Strukturierten Text die Timer nicht in einer If Bedingung laufen lassen."

    Warum darf man das nicht? (geht nur um mein Verständnis)

    Gruss

    McNugget

  2. #12
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Grundsätzlich kannst du deine Timer schon in einer If-Schleife ablaufen lassen. Habe ich in der zweiten Variante ja auch getan. Aber dann musst du sicherstellen, dass auch in die If-Schleife verzweigt wird solange der Timer läuft.
    Gerade wenn du irgendwelche Eingänge als Bedingung der If-Schleife hast, besteht die Gefahr, dass dein Timer zum Beispiel bereits eine halbe Sekunde läuft und sich dann plötzlich die Eingänge ändern. Dann wird nicht mehr die If-Schleife durchlaufen und dein Timer bleibt stehen. Du wunderst dich wieso und kannst evtl. keinen Fehler erkennen. Blöder Fehler. Einer der Sorte, nach dem man tagelang ohne Erfolg sucht.
    A programmer is just a tool which converts caffeine into code.

  3. Folgender Benutzer sagt Danke zu Cerberus für den nützlichen Beitrag:

    McNugget (08.10.2008)

  4. #13
    McNugget ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Aber das wäre doch das, was ich will. Nur wenn der Fehler länger als 1s ansteht, will ich auch die Meldung erhalten.
    Ansonsten soll der Timer sich wieder löschen.

    Das Problem, das hierbei besteht, ist natürlich, dass ich, wenn der Senseor in der Nähe des Fehlerbereiches "pendelt" keine Meldung bekomme.

    Andererseits bekomme ich nicht mit, wenn der Sensor lamngsam "stirbt".

    Die zweite Variante von Dir (Cerberus) könnte ich also in Verbindung mit einem Zähler verwenden, um zu überprüfen, ob der Sensor mehr als x-mal in einer Minute "Ausreisser" hatte.

    Damit liesse sich eine Warnmeldung: "Sensor überprüfen" auslösen, oder?

    Zur vorbeugenden Wartung quasi?

    Gruss

    McNugget

  5. #14
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von McNugget Beitrag anzeigen
    Aber das wäre doch das, was ich will. Nur wenn der Fehler länger als 1s ansteht, will ich auch die Meldung erhalten.
    Ansonsten soll der Timer sich wieder löschen.
    Genau den Fall deckt die erste Variante ab, richtig!


    Zitat Zitat von McNugget Beitrag anzeigen
    Die zweite Variante von Dir (Cerberus) könnte ich also in Verbindung mit einem Zähler verwenden, um zu überprüfen, ob der Sensor mehr als x-mal in einer Minute "Ausreisser" hatte.

    Damit liesse sich eine Warnmeldung: "Sensor überprüfen" auslösen, oder?
    Ja könntest du! Dazu müsstest du nur in der letzten If-Schleife (mit der Bedingung "Verz.Q") deine Zählvariable hochzählen und in einer neuen Schleife abfragen, ob deine Zählvariable schon den Wert x hat. In dieser könntest du dann deine Warnung ausgeben.
    A programmer is just a tool which converts caffeine into code.

  6. #15
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Zitat Zitat von McNugget Beitrag anzeigen

    "im Strukturierten Text die Timer nicht in einer If Bedingung laufen lassen."

    Warum darf man das nicht? (geht nur um mein Verständnis)


    McNugget
    Weil der Timer nur dann auswertet, wenn der FB ausgeführt wird. Das bedeutet, dass du eine Änderung des Ausgangsignals bekommst, wenn der FB so betrieben wird:

    Code:
    timer(<evtl. parameter>);
    Wenn du den hingegen so ansprichst

    Code:
    timer.IN := TRUE;
    wird der Code im FB nicht ausgeführt. Ich ziehe es der Übersichtlichkeit wegen vor, solche FBs immer auszuführen, daher nicht in einer IF-Anweisung zu verstecken. Du brauchst natürlich auch ein paar CPU-Zyklen mehr, aber auf einem PC fällt das kaum auf. Beispiel:

    Code:
    VAR
      timer : TON;
    EN_VAR
    
    timer(PT:=T#1s);
    
    IF <Bedingung> THEN
     timer.IN := TRUE; 
    ELSE 
     timer.IN := ,,,,
    END_IF;

  7. #16
    Registriert seit
    13.01.2005
    Ort
    Allgäu
    Beiträge
    146
    Danke
    4
    Erhielt 23 Danke für 18 Beiträge

    Standard

    Hallo,

    ich hatte eben auch mal einen Timer in der If Bedingung drin. Hat das erste mal auch super funktioniert. Aber wenn ich zum zweiten mal in die If Bedingung gekommen bin war der Timer schon abgelaufen (Keine Änderung am Timer Eingang).


    Also entweder Timer wieder sauber löschen oder eben erst gar nicht in der If Bedingung laufen lassen, sonder einfach nur die Startbedingung für den Timer schreiben.

    Gruß
    Silke

  8. #17
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von M_o_t Beitrag anzeigen
    Hallo,

    ich hatte eben auch mal einen Timer in der If Bedingung drin. Hat das erste mal auch super funktioniert. Aber wenn ich zum zweiten mal in die If Bedingung gekommen bin war der Timer schon abgelaufen (Keine Änderung am Timer Eingang).
    Lag wahrscheinlich daran, dass der Timer nicht zurückgesetzt wurde.
    A programmer is just a tool which converts caffeine into code.

  9. #18
    Registriert seit
    17.01.2006
    Ort
    Hildesheim
    Beiträge
    5
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Blinzeln

    Zitat Zitat von McNugget Beitrag anzeigen
    Hallo allerseits.

    Ich setze an einem Wago 750-841 Controller analoge Eingangsklemmen 4-20 mA (750-455)ein.

    McNugget

    Hi,

    ich verwende zwar meist die 750-492, die Auswertung ist aber gleich...

    Meine Lösung:

    FUNCTION Skaliere_492_INT2 :INT
    VAR_INPUT
    wEingang :WORD;
    iMin :INT ;
    iMax :INT ;
    END_VAR
    VAR_IN_OUT
    xKurzschluss :BOOL;
    xDrahtbruch :BOOL;
    END_VAR

    CODE>>
    xKurzschluss := wEingang.0 AND NOT wEingang.1;
    xDrahtbruch := wEingang.0 AND wEingang.1;

    Wert := WORD_TO_REAL ( SHR(wEingang , 2) );
    Weite := iMax - iMin ;

    Skaliere_492_INT2 := REAL_TO_INT(iMin + (Wert * Weite / REAL#8192));


    Auch ich habe/hatte extreme Probleme mit springenden Werten aus der Busklemme. Bei mir lag es am Schaltnetzteil - nur mit massig Ferrigringen um die Ausgangsleitungen und X-Kondensator zwischen 0Volt und Erde ist der Wert stabil gewesen...
    War das erste Mal, seit ich mit CoDeSys und Wago zutun hatte, das ich mir meine S7-Baugruppen zurück gewünscht hatte


    mfg
    Andy

  10. Folgender Benutzer sagt Danke zu Andy :-) für den nützlichen Beitrag:

    McNugget (27.10.2008)

  11. #19
    McNugget ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Vielen Dank, Andy.


    Zitat Zitat von Andy :-) Beitrag anzeigen

    Auch ich habe/hatte extreme Probleme mit springenden Werten aus der Busklemme. Bei mir lag es am Schaltnetzteil - nur mit massig Ferrigringen um die Ausgangsleitungen und X-Kondensator zwischen 0Volt und Erde ist der Wert stabil gewesen...

    Bedeutet das, dass wenn ich ein besseres Netzteil einsetze, diese "Schwingerei" aufhört/weniger wird???

    Aktuell setze ich das WAGO-Hutschienen-Netzteil (aus dem Starter-Set) ein.

    Welches Netztwil würde sich denn empfehlen?? Murrelektronik??

    Du meinst Ferritringe um die Netzteil-Ausgangsleitungen, oder?
    Was für Kondensatoren hast Du konkret eingesetzt?

    Meine Messleitungen sind geschirmt.

    Gruss

    McNugget

  12. #20
    Registriert seit
    17.01.2006
    Ort
    Hildesheim
    Beiträge
    5
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Mc Nugget,

    das Wago-Netzteil soll die Schwinger (wie meines auch >> Meanwell) nur unter geringer Belastung (<30%) haben. naja - konnte ich bis jetzt noch nicht testen.
    Im Akku-Betrieb (unsere Anlagen haben eine Notstromversorgung) sind die Messwerte über die Klemmen sauber...

    Die Ferritringe habe ich Ausgangsseitig 2x durchgezogen. X-Kondensatoren 470 mF von Conrad zwischen 0 und Erde kurz vor der Steuerung...
    Meine Leitungen sind auch alle einseitig geschirmt. Ich vermute eher, das die Eingangsfilter an den Stromklemmen von Wago zu klein oder falsch dimensioniert sind.

    Bin noch an einer abschliessenden Lösung dran, zumal eine für uns wichtige ISO für Spannungsversorgungen ende des Jahres ausläuft und dann härtere Anforderungen an die Quallität des Netzteiles gestellt werden.


    mfg
    Andy

Ähnliche Themen

  1. Tasterbefehle auswerten
    Von EAT3 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.05.2011, 22:07
  2. DB auswerten
    Von Rauchegger im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.10.2010, 22:45
  3. CPU Zeit auswerten
    Von HWPascal im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 05.03.2009, 23:20
  4. Analogeingang auswerten
    Von mstraus0 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.02.2009, 10:08
  5. Timer im ob 35 auswerten
    Von Ralf_Step im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 16.01.2009, 08:49

Lesezeichen

Berechtigungen

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