Step 7 S7 Timer Problem

jule

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,

ich hab mal wieder ein Problem, bei dem ich absolut nicht weiß, wo mein Fehler liegt. Ich hoffe ihr könnt mir helfen.

Ich habe die Aufgabe bekommen, einen Energiezähler mit zufälligen Werten zu versorgen. Einen Zufallsgenerator habe ich mir bereits erstellt, dieser funktioniert auch. Da dieser Energiezähler aber nur aller 15min die Daten einliest, möchte ich den Zufallsgenerator auch nur aller 15 min einmal durchlaufen lassen. Also setzte ich, nachdem der Wert in einem DB geschrieben wurde, einen Merker, der einen Timer startet (zum testen stehen noch 5s drin).

Doch irgendwie habe ich ein Problem mit den Timer...Dieser läuft nicht einmal los. In der Variablentabelle bleibt der Timer bei 0 und der Zufallsgenerator läuft einmal durch und danach nicht mehr, weil der Merker nicht zurückgesetzt wird.
Ich sitze nun schon seit ein paar Stunden an diesem Problem und bekomme es einfach nicht gelöst... Vielleicht seht ihr ja meinen Fehler?

Simulationsdaten-FC:
UN M 77.0
SPBN nix
CALL "Zufallsgenerator"
t_Obergrenze :=5.300000e+000
t_Untergrenze:=4.300000e+000
Zufallszahl :=#zufallszahl


N005: NOP 0
L #zufallszahl
T "ZufallsDB".Zufallszahl
S M 77.0

nix: NOP 0

U M 77.0
L S5T#5S
SS T 7
U T 7
R M 77.0

 
Das Fehler ist die zu seltene Benutzung der F1-Taste.
Markier mal den SS und drücke dann F1, vielleicht kommst Du dann von selbst drauf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Fehler ist die zu seltene Benutzung der F1-Taste.
Markier mal den SS und drücke dann F1, vielleicht kommst Du dann von selbst drauf.

Ich glaube den Fehler kann ich ausschließen, denn das erste, was ich bei solchen Fehlern mache, ist tatsächlich die F1 Taste zu nutzen, um den möglichen Fehler einzugrenzen...Leider bringt mich die Hilfe nicht wirklich weiter... anscheinend habe ich einen Denkfehler... Immerhin hatte ich es auch so programmiert, wie im Beispiel angegeben, und trotzdem funktionierte es nicht... das einzige, was ich mir vorstellen könnte, wäre der Punkt bzgl. des VKEs, doch dieses wird doch zuvor gesetzt und es findet doch eine Änderung statt?

Vielleicht kannst du mir ja direkt auf die Sprünge helfen?
 
SS ist eine SPEICHERNDE Zeit. Diese MUSS explizit zurückgesetzt werden.

Für Dich wäre glaube ich ein SE besser gewesen...
 
Zugegeben, das Diagramm in der AWL-Hilfe ist wirklich schlecht. In der KOP/FUP-Hilfe ist es deutlich besser erkannbar. :???:
Sobald bei einer speichernden Einschaltverzögerung die Zeit abgelaufen ist, bleibt sie auf TRUE und kann erst wieder gestartet werden, nachdem sie über R Txx explizit zurückgesetzt wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da wo Dein Timer bearbeitet wird ist M77.0 immer 1, der Timer braucht aber eine steigende Flanke zum Start.
Warum SS wenn Du den Timer wie SE benutzt? Ich würde SE nehmen.
Code:
U M 77.0
L S5T#5S
[COLOR="#FF0000"]SE[/COLOR] T 7
U T 7
R M 77.0

UN M 77.0
SPBN nix
CALL "Zufallsgenerator"
 t_Obergrenze :=5.300000e+000
 t_Untergrenze:=4.300000e+000
 Zufallszahl :=#zufallszahl

[... ?]

N005: NOP 0
L #zufallszahl 
T "ZufallsDB".Zufallszahl
[COLOR="#FF0000"]SET    //vorsichtshalber, hier ist nicht klar ob VKE=1 ist[/COLOR]
S M 77.0

nix: NOP 0

[COLOR="#FF0000"]//hier ist M77.0 IMMER 1, deshalb den Code mit dem Timer vor das S M77.0 verschieben[/COLOR]

Harald
 
SS ist eine SPEICHERNDE Zeit. Diese MUSS explizit zurückgesetzt werden.

Für Dich wäre glaube ich ein SE besser gewesen...

Um ehrlich zu sein: ich habe beides probiert, SE und SS. Funktioniert bei beiden nicht... Habe es vorher die ganze Zeit nur mit SE probiert und dann, weil ich dann überhaupt nicht mehr wusste woran es liegen könnte, den SS mal probiert. Der funktionierte genauso wenig wie der SE.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke PN/DP! Jetzt zählt er wenigstens einmal runter! Ich hatte irgendwann den Timer auch vor den Call gesetzt, weil ich diese Befürchtung hatte. Aber da hatte es nciht funktioniert...da war bestimmt noch irgendwo der Wurm drin...

Aber jetzt tut er folgendes:
Zufallsgenerator läuft einmal durch, Timer zählt runter, danach läuft der Zufallsg. wieder einmal durch, danach passiert nichts mehr... Habe auch M-Ott's Ratschlag, den Timer zu resetten, auch zu Herzen genommen und genau dies gemacht. Trotzdem zählt der Timer nur einmal herunter...
 
Poste mal den aktuellen Code!


der ist eigentlich genauso wie Haralds Code, nur dass ich den Timer noch zurückgesetzt habe... Würde ich das weglassen, wird M77.0 sofort zurückgesetzt und somit liefert der Zufallsgenerator pro Zyklus einen Wert....
U M 77.0
L S5T#5S
SE T 7
U T 7
R M 77.0
UN M 77.0
SPBN nix
CALL "Zufallsgenerator"
t_Obergrenze :=5.300000e+000
t_Untergrenze:=4.300000e+000
Zufallszahl :=#zufallszahl
L #zufallszahl
T "ZufallsDB".Zufallszahl
SET //vorsichtshalber, hier ist nicht klar ob VKE=1 ist
S M 77.0
R T 7

nix: NOP 0


Harald freut sich bestimmt auch über Dank per Danke-Button. ;)

:D na dann habe ich das mal gemacht ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hier müsste auf jeden Fall einen ständig wiederkehrenden Impuls erzeugen, probier das mal aus:
Code:
[COLOR=#ff0000]UN M 77.0[/COLOR]
L S5T#5S
SE T 7
U T 7
[COLOR=#ff0000]= M 77.0
[/COLOR]UN M 77.0
SPBN nix
CALL "Zufallsgenerator"
t_Obergrenze :=5.300000e+000
t_Untergrenze:=4.300000e+000
Zufallszahl :=#zufallszahl
L #zufallszahl
T "ZufallsDB".Zufallszahl
nix: NOP 0

P.s.:
Code:
Code in
Code-Tags
(#-Icon)
ist deutlich
besser les-
bar! Danke!
 
Noch ein kleiner Fehler! Es müsste heißen:
Code:
[COLOR=#ff0000]UN M 77.0[/COLOR]
L S5T#5S
SE T 7
U T 7
[COLOR=#ff0000]= M 77.0
[/COLOR][COLOR=#ff0000]U M 77.0[/COLOR]
SPBN nix
CALL "Zufallsgenerator"
t_Obergrenze :=5.300000e+000
t_Untergrenze:=4.300000e+000
Zufallszahl :=#zufallszahl
L #zufallszahl
T "ZufallsDB".Zufallszahl
nix: NOP 0
 
Zum Code von Jule. Das wird nicht gut hinhauen. Du solltest dir den Signalfluss von M77.0 anschauen.

Der Timer wird niemals einen Übergang von 1 auf 0 mitbekommen. Deswegen geht's auch nur so halbwegs wenn du den Timer manuell rücksetzst.

M-Otts Ansätze sind natürlich etwas einfacher.

Via Mobile.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Gaaanz tief in die Trickkiste greife... versuche mal dies:
Code:
U M 77.0
L S5T#5S
SE T 7

U T 7
FR T7
R M 77.0

UN M 77.0
SPBN nix

CALL "Zufallsgenerator"
 t_Obergrenze :=5.300000e+000
 t_Untergrenze:=4.300000e+000
 Zufallszahl :=#zufallszahl

L #zufallszahl
T "ZufallsDB".Zufallszahl

SET //vorsichtshalber, hier ist nicht klar ob VKE=1 ist
S M 77.0
R T 7

nix: NOP 0

Harald
 
Super vielen vielen Dank Michael & Harald! Funktioniert beides! Ich werds mal ein wenig austesten, sollten Fehler auftreten (Bitte nicht!), sag ich euch bescheid ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Simulationsdaten-FC:
UN M 77.0
SPBN nix
...
Ich persönlich finde diese doppelten Verneinungen einfach nur schrecklich. :shock:
Die beiden Negationen kann man doch auch gegeneinander wegkürzen und schon muss man beim Lesen des Codes nicht mehr dreimal um die Ecke denken.
 
Harald freut sich bestimmt auch über Dank per Danke-Button. ;)
:D na dann habe ich das mal gemacht ;)
Naja - den Grund warum der Timer nicht funktionierte habe ich zwar richtig benannt :cool: mein quick-n-dirty Änderungsvorschlag hatte aber genau den gleichen Mangel :oops: daß beim Aufruf des Timers (SE) das VKE immer 1 ist. Ein Dank für eine nicht funktionierende Korrektur war nicht notwendig.

Harald
 
Zurück
Oben