martin-001
Level-1
- Beiträge
- 10
- Reaktionspunkte
- 0
//Jemand drückt den Knopf
SET
U E 0.0
UN DB1.DBX 0.0 //Merker Messung läuft in irgndnem remanenten Speicherbereich
FP DB1.DBX 0.1 //Flankenmerker steigende Flanke
SPBN nw1a
CALL "TIME_TCK" //TIME-Temp (Millisekunden seit dem letzten Neustart der Maschine)
RET_VAL:=#Startzeit1
S DB1.DBX 0.0 //Merker Messung läuft in irgndnem remanenten Speicherbereich
//Und lässt ihn nach einer gewissen Zeit wieder los
nw1a: SET
U E 0.0
U DB1.DBX 0.0 //Merker Messung läuft in irgndnem remanenten Speicherbereich
FN DB1.DBX 0.2 //Flankenmerker fallende Flanke
SPBN End1
CALL "TIME_TCK" //TIME-Temp (Millisekunden seit dem letzten Neustart der Maschine)
RET_VAL:=#Endzeit1
R DB1.DBX 0.0 //Merker Messung läuft in irgndnem remanenten Speicherbereich
//Ermitteln der Zeidifferenz zwischen Knopf drücken und Knopf loslassen
L #Endzeit1
L #Startzeit1
-D
T #Drueckdauer //Millisekunden, die der Taster gedrueckt wurde
//Auswerten der Zeidifferenz zwischen Knopf drücken und Knopf loslassen
//Wert verwerfen, wenn negativ (wenn SPS dauerhaft am Netz, dann alle 50 Tage Registerüberlauf)
L #Drueckdauer
L 0
<=D
SPB End1
//Wenn weniger als 1 sekunde gedrückt
L #Drueckdauer
L 1000
<=D
SPBN nw1b
//Behandlung A
//Wenn zwischen 1 sek und 3 sekunden gedrückt
nw1b: SET
U(
L #Drueckdauer
L 1000
>=D
)
U(
L #Drueckdauer
L 3000
<=D
)
SPBN nw1c
//Behandlung B
//Wenn zwischen 3 sek und 5 sekunden gedrückt
nw1c: SET
U(
L #Drueckdauer
L 3000
>=D
)
U(
L #Drueckdauer
L 5000
<=D
)
SPBN nw1d
//Behandlung C
nw1d: NOP 0 //und so weiter
//ende der Behandlung des ersten Tasters. ggf. folgt hier die Behandlung von Taster 2 o.ä.
End1: BEA
Hallo
@move
...Dein Programm kann so nicht laufen:
1. T21wird nicht zurückgesetzt (ok die Lösung Taster M30.0 negiert auf R)
2. Rücksetzen von T20 würde nur funktionieren wenn t21 schaltet und das soll er nur wenn ich Dauerlicht haben möchte.
3. M30.2 setzt sich selbst zurück ich drücke den Taster M30.0 länger als 3sek. habe dann gleich zeitig eine S und R Befehl an M30.2
jau das war leider nichts
Ich weiß es ist knifflig -->>aber lösbar.
Gruß Martin
... ich bin mal über eure Lösungsansätze gespannt.
jau das war leider nichts
Ich weiß es ist knifflig -->>aber lösbar.
waren die von dir kritisierten sachen nicht eher Details statt ausschlusskriterien? ausgänge, die sich nict selbst zurücksetzen etc...?Natürlich habe ich gehofft Vorschläge oder Teillösungen zu bekommen.
Wenn aber Lösungsvorschläge kommen die nicht funktionieren können und ich das anspreche wird das zu einer Quizveranstaltung?? ... kann ich leider nicht nachvollziehen!
Ich glaub, an konstruktiven vorschlägen seitens Ralles mangelts im forum ganz sicher nichtAber vielleicht kannst Du ja mal selbst einen konstruktiven Vorschlag bringen?
@mangokind
Beim Taster habe ich die Flanke ausgewertet und bei dem Schalter die Änderung von false auf true oder von true auf false.
Den Ausgang habe ich versucht ähnlich zu schreiben: der Ausgangswert Bool soll einfach invertiert werden.
SET
U M0.0 //Bedingung fuers invertieren
SPBN M001
//invertieren
[COLOR=red]UN A0.0[/COLOR]
[COLOR=red]= A0.0[/COLOR]
M001: nop 0
@all
Ich wollte hier niemanden zu nahe treten oder dämlich kommen.
Sorry wenn hier der Eindruck entstanden ist.
Ich habe erhofft das es hier Mitglieder gibt die sich einer (für mich kniffligen Aufgabe) oder wie Ralle es beschreibt: Programmierwettbewerb stellen/beteiligen.
Frei nach dem Motto: Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!
Aus diesem Grund belassen wir dieses Thema an dieser Stelle!
Ich werd mir die Lösung wie immer selbst erarbeiten. Ist halt nur ein Zeitfaktor.
@Ralle bitte diesen Tread und meinen Account löschen
danke
Gruß Martin
@ Move
T21
Wechselt der Signalzustand an Eingang S von "1" auf "0", während die Zeit läuft, wird sie angehalten.
d.h. von den 3sek bleibt nur ein teil stehen.
Sobald nun wieder an Eingang S von "0" auf "1" wechselt läuft die restzeit ab.
Ich benötige aber 3sek..
Funktion M30.2
Taster + Einschaltverzögerung = S M30.2
Taster und M30.2 = R M30.2
d.h. nach Ablauf der Einschaltverzögerung liegt eine 1 an S+R von M30.2
sorry aber das funktioniert so nicht.
Gruß Martin
@T21@ Move
T21
Wechselt der Signalzustand an Eingang S von "1" auf "0", während die Zeit läuft, wird sie angehalten.
d.h. von den 3sek bleibt nur ein teil stehen.
Sobald nun wieder an Eingang S von "0" auf "1" wechselt läuft die restzeit ab.
Ich benötige aber 3sek..
Funktion M30.2
Taster + Einschaltverzögerung = S M30.2
Taster und M30.2 = R M30.2
d.h. nach Ablauf der Einschaltverzögerung liegt eine 1 an S+R von M30.2
sorry aber das funktioniert so nicht.
Gruß Martin
@ralle
ja ich habe das auch ausprobiert!
wir können ja die einzelnnen Singnalzustände genau abarbeiten...
... dann wirst auch Du sehen das das so nicht funktioniert.
Gruß
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?