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

Ergebnis 1 bis 10 von 10

Thema: Nicht funktionierender Zähler

  1. #1
    Registriert seit
    07.02.2012
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich programmiere an einem Programm im Strukturierten Text und habe ein skurriles Problem.

    Ich habe in der grossen Programmschleife:

    Code:
    anzahl:= 2;
    ia:= ia+1;
    
        IF ia > anzahl THEN
            ia:= 1;
        END_IF;
    Wenn ia Drei erreicht, dann soll ia wieder auf Eins gesetzt werden. Nix Besonderes, ich denke das hat jeder von euch schonmal gemacht.

    Mein Problem ist, das im zyklischen Regelbetrieb der Wert zwischen 1 und 2 springt. 3 wird nur erreicht wird wenn ich im Debugger manuell von Zeile zu Zeile springe! Mache ich das zu schnell, dann springt der Wert wieder nur zwischen 1 und 2.

    Erst dachte ich, das Alles so schnell geschieht, dass man Nichts erkennen kann. Aber selbst der Trend zeigt mir das Gleiche an:

    2und3.jpg








    Die Drei wird lediglich ganz am Ende erreicht. Dort hatte ich das Programm langsam manuell zeilenweise laufen lassen.

    Ich habe absolut keine Ahnung welches "Feature" meiner ABB 800F (Emulator, Control Builder) das herbeiführen kann.
    Geändert von T800 (14.03.2013 um 13:53 Uhr) Grund: Kleinigkeiten
    Zitieren Zitieren Nicht funktionierender Zähler  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Die Frage ist eher, wann der Wert gelesen wird, und inwiefern sich das im Testmodus ändert.

    Dein Wert ist ja nur 3 für ~ 2 Programmzeilen, insofern landet der Wert nie beim
    Zyklusende und ist somit auch nicht durch normale Kommunikation abfragbar.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

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

    ducati (14.03.2013)

  4. #3
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von T800 Beitrag anzeigen
    habe ein skurriles Problem.
    Mein Problem ist, das im zyklischen Regelbetrieb der Wert zwischen 1 und 2 springt. 3 wird nur erreicht wird wenn ich im Debugger manuell von Zeile zu Zeile springe!
    Ich sehe das "skurrile Problem" nicht. Genauso hast Du Dein Programm geschrieben, und das macht es ja auch...

    Gruß.

  5. #4
    T800 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2012
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, Danke für eure Antworten. Das Problem ist gelöst. War aber nicht ganz einfach.

    Hier eine Beschreibung für die Nachwelt:

    1. Bei mir war Alles richtig programmiert.

    2. Die Trenddarstellung ist wohl zu langsam um es in Realtime darzustellen.

    3. Die Eingangswerte werden nur einmal jede Sekunden aktualisiert (anstatt meiner Zykluszeit). Stand auch in der Doku.

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

    Standard

    Nein ... das hat nicht mit deiner Anzeige/Trenddarstellung zu tun ... Es ist so, wie schon von MSB genannt :

    Zitat Zitat von MSB Beitrag anzeigen
    Dein Wert ist ja nur 3 für ~ 2 Programmzeilen, insofern landet der Wert nie beim
    Zyklusende und ist somit auch nicht durch normale Kommunikation abfragbar.
    ... da kommt deine Anzeige niemals dazwischen ...

    Gruß
    Larry

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

    Standard

    Ich verstehe jetzt nicht richtig. Der Wert ia soll garnicht ausgegeben werden. Es ist eine lokale Variable. Das Problem war das der Wert scheinbar lokal nicht die Drei erreicht. Tut sie aber, sie wird nur nicht schnell genug angezeigt. Wenn ich die Werte in ein Feld speicher, dann wird die Drei wie gewollt erreicht.

    Aber selbst wenn ich den Wert hätte ausgeben wollen, so erklärt dies nicht, weshalb in der Trenddarstellung die Drei mit einem langsamen manuellen Durchlauf erreicht wird.

    Trotzdem Dank für deinen Hinweis.

  8. #7
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Dein ia ist für geschätzte 0,1 µs eine 3. wo und wie willst Du das sehen, ausser bei zeilenweiser Programmabarbeitung im Debugger?

  9. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ich weiß nicht, wie das bei ABB ist, aber bei Siemens geht die Steuerung beim Debuggen in Stop und geht dann beim Weiterschalten immer zum nächsten Haltepunkt. Also ist der Wert dann durchaus so lange lesbar, wie man an diesem Haltepunkt steht. Wenn du den nun günstig gelegt hast, siehst du die 3 beim Debuggen, im Normalablauf, siehst du die nie, denn die wird nach 2 Programmzeilen sofort wieder durch eine 1 überschrieben, was ja offensichtlich so gewollt ist.
    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

  10. #9
    T800 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2012
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Jetzt verstehe ich. Ihr meint, dass auch der Debugger nicht genügend Zeit hatte meine "Drei" darzustellen.

    ok, verstehe. Mein Fehler.

    Ursprünglich bin ich darauf gekommen, weil mein Debugger bei der Ausgabe immer zwei gleiche Werte ausgab. Ich dachte nun, dass der Index falsch sein müsste (war aber nur die sekündliche Aktualisierung bei einer Zykluszeit von 0,5 s). Ich schaute also auf die Trenddarstellung und "sah" den Fehler- und kam hierher zum Forum.

    Nochmals Danke für Eure Geduld.

  11. #10
    Registriert seit
    09.10.2012
    Beiträge
    54
    Danke
    19
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja genau so ist es...
    Wenn du vor deiner If - Abfrage noch mit ia arbeitest, dann hast du die Möglichkeit mit ia = 3 zu Arbeiten. Nach deiner If - Abfrage wird in ia nie 3 stehen.
    Es ist nicht leicht über einen Witz zu lachen,...
    wenn man gerade über einen anderen Witz lacht...

Ähnliche Themen

  1. Eigener Zähler geht nicht...
    Von Maggi im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 11.12.2012, 07:44
  2. Antworten: 0
    Letzter Beitrag: 25.05.2012, 20:46
  3. DB Zähler funktioniert nicht
    Von User1974 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.10.2010, 09:51
  4. Zähler zählt nicht ?
    Von Deep Blue im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.04.2008, 19:47
  5. Kann Zähler nicht bei Sprungbefehl setzen
    Von Tigerkroete im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.07.2006, 14:07

Stichworte

Lesezeichen

Berechtigungen

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