probleme mit schaltuhr (-> antonio)

linuxluder

Level-1
Beiträge
171
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
hi antonio,

für einem halben jahr hast du mir hier
http://www.sps-forum.de/showthread.php?t=10717
bei der realisation einer "schaltuhr" geholfen.
es funktioniert alles so weit.
mit
L DB91.DBD 8
L TOD#13:0:0.0
>=D
= M 20.5
L DB91.DBD 8
L TOD#14:0:0.0
<=D
= M 20.6

U M 20.5
U M 20.6
= M 20.7
U M 20.7
FP M 21.0
= M 21.1
U M 20.7
FN M 21.2
= M 21.3
U M 21.1
S M 22.0
U M 21.3
S M 22.0
U M 22.0
L S5T#3S
SE T 6
U T 6
R M 22.0
U M 22.0
UN T 6
= M 25.0
U M 25.0
= M 27.1

kann ich gut meine schaltpunkte verwalten. vielleicht zu leihenhaft programmiert, aber es geht, bis auf folgendes:

Sind die Ein- und Ausschaltzeit an verschiedenen Tagen, dann scheiterts.
Kannst du mit bitte helfen. Ich möchte das Zeitfenster z.B. täglich von 23 Uhr bis 6 Uhr.

Vielen herzlichen Dank im Voraus,

Jo
 
Ja könnte sein...
Statt auf grösser gleich solltest du dann auf gleich vergleichen....
Hat nur den Nachteil, dass du deine Merker dann Setzen musst.
Damit dies aber auch Funktioniert würde ich die Millisekunden "wegschieben", dann müsste es auch passen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich nehme mal an, dass "DB91.DBD 8" die gewandelte Systemzeit ist ...
Dann wäre jedenfalls auch eine Möglichkeit :
Code:
      L     DB91.DBD    8
      L     TOD#23:0:0.0
      >=D   
      =     M     20.4

       L     DB91.DBD    8
       L     TOD#23:59:59.999
       <=D   
       =     M     20.5

       L     DB91.DBD    8
       L     TOD#0:0:0.0
       >=D   
       =     M     20.6

        L     DB91.DBD    8
        L     TOD#6:0:0.0
        <=D   
        =     M     20.7

        U M20.4
        U M20.5
        O
        U M20.6
        U M20.7
        = M im Zeit-Fenster
 
to larry

hi,

danke nochmals. das mit 23.59.59 usw. ist mir klar.
aber wenn du den weiteren code von meinem posting anschaust, dann erkennst du, dass ich bei starten (m20.5) einen timer starte und beim beenden(m20.6) des zeitfensters. das kriege ich jetzt leider nicht mehr hin.
kannst du mir da nochmal helfen.?

danke jo

ps.: ich bin ein "absoluter" anfänger, mache das ausschließlich für meine privaten zwecke
 
Mit der Lösung von Larry Laffer sollte folgender Programmcode funktionieren:

Code:
// Neuer Programmcode von Larry Laffer
 
      L     DB91.DBD    8
      L     TOD#23:0:0.0
      >=D   
      =     M     40.0
 
      L     DB91.DBD    8
      L     TOD#23:59:59.999
      <=D   
      =     M     40.1
 
      L     DB91.DBD    8
      L     TOD#0:0:0.0
      >=D   
      =     M     40.2
 
      L     DB91.DBD    8
      L     TOD#6:0:0.0
      <=D   
      =     M     40.3
 
      U     M     40.0
      U     M     40.1
      O     
      U     M     40.2
      U     M     40.3
      =     M     20.7
 
// Alter Programmcode von linuxluder
 
      U     M     20.7
      FP    M     21.0
      =     M     21.1
 
      U     M     20.7
      FN    M     21.2
      =     M     21.3
 
      U     M     21.1
      S     M     22.0
 
      U     M     21.3
      S     M     22.0
 
      U     M     22.0
      L     S5T#3S
      SE    T      6
      U     T      6
      R     M     22.0
 
      U     M     22.0
      UN    T      6
      =     M     25.0
 
      U     M     25.0
      =     M     27.1

Gruß Kai
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Folgender Programmcode sollte auch funktionieren:

Code:
// Programmcode Larry Laffer
 
      L     DB91.DBD    8
      L     TOD#23:0:0.0
      >=D   
      =     M     40.0
 
      L     DB91.DBD    8
      L     TOD#23:59:59.999
      <=D   
      =     M     40.1
 
      L     DB91.DBD    8
      L     TOD#0:0:0.0
      >=D   
      =     M     40.2
 
      L     DB91.DBD    8
      L     TOD#6:0:0.0
      <=D   
      =     M     40.3
 
      U     M     40.0
      U     M     40.1
      O     
      U     M     40.2
      U     M     40.3
      =     M     20.7
 
// Programmcode Kai
 
      U     M     20.7
      FP    M     21.0
      =     M     21.1
 
      U     M     20.7
      FN    M     21.2
      =     M     21.3
 
      O     M     21.1
      O     M     21.3
      L     S5T#3S
      SV    T      6
      U     T      6
      =     M     25.0
 
      U     M     25.0
      =     M     27.1

Gruß Kai
 
Hi,
da mein Vorschlag bereits eine (kontinuierliche) Fenster-Überwachung macht, ist mir die Geschichte mit der Flankenbildung und dem Timer vom Sinn her nicht mehr so ganz klar ...
 
to larry

hi larry,

dein vorschlag ist ja absolut ok.
meine prblem ist halt eben noch folgendes gewesen.
ich möchte eben beim eintritt das zeitfenster und beim austritt aus dem zeitfenster jeweils einen bestimmten ausgang oder merker für 3 sekunden gesetzt haben.

danke, jo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nochmal

hi,

kann mir bitte jemand noch mal genau erklären was ..

U M 20.7
FP M 21.0
= M 21.1

bewirkt. gehts da um den flankenwechsel von m 20.7 oder von 21.0 ???

ich habe das "irgendwo" mal abgeschrieben. ;-)

danke, jo
 
Code:
U M 20.7
FP M 21.0
= M 21.1

Es wird die Flanke von M20.7 gebildet. Der M21.1 ist für einen Zyklus der SPS aktiv. Der M21.0 speichert (quasi als Hilfsmerker) den letzten Zustand des M20.7

Beispiel für die Impulsbildung gemäß meines Vorschlags:
Code:
U M20.4   // Einschalt-Impuls
L s5t#3s
SE T 101
 
U M20.7  // Ausschalt-Impuls
L s5t#3s
SA T 102
 
U M20.4
UN T 101
= M Impuls Ein
 
U T102
= M Impuls Aus

Viel Spass ...
 
ich schaffs nicht

hi,

hier nochmal was ich habe.
beim eintreten ins zeitfenster soll für 3s ein taktegeber einen summer aktivieren, und beim austritt aus dem zeitfenster wiederum. so wie ich es habe gehts aber irgendwie nicht sauber. springe über die 0:0:0.0 uhr läuft der summer ständig.

bitte helft mir nochmal. ich finde meine(n) Fehler nicht

Code:
      L     DB91.DBD    8
      L     TOD#23:59:30.0
      >=D   
      =     M     20.0
 
      L     DB91.DBD    8
      L     TOD#23:59:59.999
      <=D   
      =     M     20.1
 
      L     DB91.DBD    8
      L     TOD#0:0:0.0
      >=D   
      =     M     20.2
 
 
      L     DB91.DBD    8
      L     TOD#0:0:30.0
      <=D   
      =     M     20.3
 
      U     M     20.0
      U     M     20.1
      O     
      U     M     20.2
      U     M     20.3
      =     M     20.7   //Merker für Zeitfenster
 
      U     M     20.0
      L     S5T#3S
      SE    T    101
 
      U     M     20.3
      L     S5T#3S
      SA    T    102
 
      U     M     20.0
      UN    T    101
      =     M     27.1
 
      U     M     20.3                            //hatte bei dir gefehlt ?!
      U     T    102
      =     M     27.2
 
 
      L     S5T#100MS   //Takter
      U(    
      O     M     27.1
      O     M     27.2
      )     
      UN    T     11
      SI    T     10
      UN    M     27.0                            // dieser Merker ist nür für den Taktgeber, oder ???
      SI    T     11
      U     T     10
      =     M     27.0
      U     M     27.0
      =     A      1.0                            //summer


Ach ja: Nebenbei noch ne Frage: Falls die beiden Zeiten doch am gleichen Tag sind, dann muss man die abfrage der schaltpunkte anders gestalten oder?


DANKE, vielen DANK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
S7 Zeit

Hi,
nur so als Denkanstoss:
Die Zeit in der SPS, die man mittels Systembausteine rausliest, ist eigentlich eine Long Integer, und da zählt die SPS die Zeit in ms ab
00 Uhr :00 Min:00 sek. D.h., da steht um Mitternacht eine Null drin. Wenn
du Vergleiche machst, denke daran.
L "SPS_Uhrzeit"
L "15:30:00"
< D
= M30.0 // hier ist der M30.0 = TRUE von 00:00:00 Uhr bis 15:30 halt!

Gruss: Vladi
 
Nachtrag:

In meinem Programmcode ist der Merker M20.7 für das gesamte Zeitfenster ein, und die Merker M25.0 und M27.1 sind beim Eintritt in das Zeitfenster und beim Austritt aus dem Zeitfenster für 3s ein.

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
erstmal zu Frage 2 :
Falls die beiden Zeiten doch am gleichen Tag sind, dann muss man die abfrage der schaltpunkte anders gestalten oder?

Ich habe mir dafür eine Funktion geschrieben. Dort frage ich zunächst ab, ob Zeitpunkt_2 kleiner als Zeitpunkt_1 ist. Wenn ja, dann mache ich den Vergleich, den du schon kennst. Ansonsten frage ich einfach nur ganz normal ab, ob sich die aktuelle Zeit zwischen Zeitpunkt_1 und Zeitpunkt_2 bewegt.
Code:
L Uhrzeit
L Zeitpunkt_1
>=D
= M20.0

L Uhrzeit
L Zeitpunkt_2
<D
= M20.1

U M20.0
U M20.1
= Schaltausgang

Nun zu dem anderen Problem :
Das was ich in Verbindung mit T102 verzapft habe ist natürlich vollkommener Quatsch und geht so nicht. Ich weiß nicht, was mich dsa geritten hat. Ist also klar, dass du es nicht in den Griff bekommst ...:rolleyes:

Es muss natürlich heissen :
Code:
U M20.6
UN M20.7
L s5t#3s
SE T102

U M20.6
UN M20.7
UN T102
= Impuls aus

Den Summer brauchst du dann eigentlich nur durch verodern ansteuern :
Code:
U M Impuls Ein
O M Impuls Aus
= A Summer

Probier das mal. Ich denke das funktioniert ...;)
 
... und da ich (mal wieder) mit Kai zeitgleich die Sache angepackt habe ...
Die Variante von Kai funktioniert ganz sicher auch ... ich habe mich halt jetzt auf mein Werk bezogen ...
 
vielen dank kai,

ich habe mich da wohl vertippt. es klappt sehr gut.
falls du mal zeit hast, dann könntest du mir bitte das erklären

Code:
U     M     20.7
      FP    M     21.0
      =     M     21.1
 
      U     M     20.7
      FN    M     21.2
      =     M     21.3

irgendwie kapiere ich das nicht so ganz mit fp und fn

danke, griß jo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na, wenn Kai nicht antwortet, dann mach ich es mal ...

FP schaltet den Merker, wenn sich das Eingangssignal von 0 nach 1 ändert.
FN schaltet den Merker, wenn sich das Eingangssignal von 1 nach 0 ändert.

"Merker" ist in deinem Beispiel M21.1 oder M 21.3 , Eingangssignal M 20.7.
Der an FP bzw. FN angetragene Merker ist nur ein Hilfsmerker ...
 
verzweiflung ;-)

hi,

es klappt eigentlichalles was ich jetzt brauche, doch leider nur wenn der pc (= mein pg) mit der sps verbunden ist. sobald ich offline bin, tut isch nichts. kann das sein?!?!

danke jo
 
Zurück
Oben