Flankenerkennung

Airen

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo:)
kann mir jemand bei dem folgenden Programm-Stück helfen:

UN E 1.0
FP M 2.0
U E 1.1
S A 4.1

Mich verwirrt der Anfang mit UN E 1.0:confused::confused:
Der Ausgang A4.1 soll gesetzt werden, wenn E1.0 nicht gesetzt und E1.1 gesetzt ist. Wie kann ich den nicht gesetzten Eingang E1.0 mit der positiven Flanke verstehen?

Besten Dank für die Hilfe
Airen
 
Wenn der Eingang E1.0 False wird, wird eine Flanke erzeugt. Wenn nun in just in diesem Moment der Eingang E1.1 auch zufällig noch True ist dann wird der Ausgang A4.1 gesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
besten dank..wenn ich's richtig verstanden habe gilt:

UN E1.0
FP M2.0

ist das gleiche wie:

U E1.0
FN M2.0

Mich wundert nur wie der Ausdruck:
UN E1.0
FP M2.0
überhaupt möglich sein soll..sieht doch wie 'n Widerspruch aus eine positive Flanke zu erwarten, wenn UN E1.0 gilt.

Kommt aus einer Prüfung..danke nochmals
Airen
 
FP überprüft ob vom vorigen VKE zustand 0 auf 1 gewechselt wird
das VKE von UN E1.0 ist bei E1.0 True auf false, und bei E1.0 False auf true

kurz gesagt: bei FP wird das VKE hergenommen, nicht der status des vorangehenden eingangs, es kann auch eine ganze spaghettiverknüpfung direkt auf flanke geprüft werden, ohne zwischenspeichern auf einem merker.
 
Mich wundert nur wie der Ausdruck:
UN E1.0
FP M2.0
überhaupt möglich sein soll..sieht doch wie 'n Widerspruch aus eine positive Flanke zu erwarten, wenn UN E1.0 gilt.

Kommt aus einer Prüfung..
In manchen Programmiersprachen gibt es nur einen Flanken-Erkennungs-Befehl (z.B. Saia PG5).
Ob der Befehl dann die steigende oder fallende Flanke des Signals detektieren soll, muß man dann
darüber steuern, ob man das Signal normal oder negiert abfragt.

Damit Lehraufgaben/Prüfungsaufgaben unabhängig von der verlangten Lösungssprache sind,
werden die dann wohl so gestellt, daß sie mit nur dem einen Flanken-Befehl lösbar sind.

Und manche Programmier-Probleme sind auch einfacher mit negativer Logik lösbar, sowas kommt
also durchaus öfter vor.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann mich mit den FN- bzw. FP- Merkern überhaupt nicht anfreunden.

Ich löse die Flankenmerker auf die "klassische" Art.
Code:
u E 0.0 // Als Beispiel ein DI
un M0.0 // und der Flankenmerker (pos. Flanke)
// ... Programm
// ... Programm
 
// Letztes Netzwerk
// Flankenmerker setzen
u E0.0 // der Eingang
= M0.0 // setzt einen Merker
Wo ist der Vorteil ?

Ich habe einen Flankenmerker, den ich als pos. Flanke UND auch als neg.
Flanke auswerten kann:
für die Neg. Flankenauswertung würde es dann so aussehen:
Code:
un E 0.0 // Als Beispiel ein DI
u M0.0 // und der Flankenmerker (neg. Flanke)
Ich brauche 1 (Flanken)-Merker ...und kann den beliebig oft innerhalb eines Zyklus "verbraten".


Hier der Nachtrag:
Diese Methode hat den Vorteil, daß sie mit unterschiedlichen Steuerungen funktioniert:
- s5
- s7-2xx (MicroWin)
- s7-3xx bzw. s7-4xx (Step7)
- Logo!
- KM-easy


Mit freundlichen Grüßen
____________________________________________________________

Ich wünsche allen Foren- Usern "Frohe Ostern"...
(wer Ostern die Eier sucht, hat Weihnachten die Bescherung ) :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich löse die Flankenmerker auf die "klassische" Art.
Code:
u E 0.0 // Als Beispiel ein DI
un M0.0 // und der Flankenmerker (pos. Flanke)
// ... Programm
// ... Programm
 
// Letztes Netzwerk
// Flankenmerker setzen
u E0.0 // der Eingang
= M0.0 // setzt einen Merker

Ich brauche 1 (Flanken)-Merker ...und kann den beliebig oft innerhalb eines Zyklus "verbraten".


Du brauchst genau so viele FMs wie mit "FP" oder "FN".
Dein M 0.0 gilt ja nur für dieses eine Teilprogramm...
Brauchst du ein weiteres so benötigst du einen weiteren M 0.x
oder sehe ich das falsch??

grüsse
Simon
 
Du brauchst genau so viele FMs wie mit "FP" oder "FN".
Dein M 0.0 gilt ja nur für dieses eine Teilprogramm...
Brauchst du ein weiteres so benötigst du einen weiteren M 0.x
oder sehe ich das falsch??
Ja, das siehst Du falsch.
Mit dem Code von mega_ohm kann man beliebig oft im Programm das Signal E0.0 auf positive oder negative Flanke
abfragen und braucht dabei nur diesen einen Hilfsmerker M0.0.
FP und FN brauchen jeder einen eigenen Hilfsmerker, weil diese Befehle zusätzlich zur Flankenanzeige gleich den
aktuellen Zustand des Signals in den Hilfsmerker speichern.

Vielleicht wird es so deutlicher:
E0.0 = Signal Zustand jetzt
M0.0 = Merker Zustand des Signals im Zyklus vorher
Code:
U   E0.0    // Signal jetzt 1
UN  M0.0    // und vorher 0 -> pos. Flanke
// ... Programm

UN  E0.0    // Signal jetzt 0
U   M0.0    // und vorher 1 -> neg. Flanke
// ... Programm

U   E0.0    // Signal jetzt 1
UN  M0.0    // und vorher 0 -> pos. Flanke
// ... Programm

UN  E0.0    // Signal jetzt 0
U   M0.0    // und vorher 1 -> neg. Flanke
// ... Programm
 
// Letztes Netzwerk
U   E0.0    // Zustand jetzt
=   M0.0    // für nächsten Zyklus merken
Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das stimmt wenn du immer mit dem selben Eingang arbeitest.
Doch weiß ich nicht ob es sinnvoll ist so zu programmieren, da es so wie hier bestimmt einige gibt, die es nicht bzw nicht richtig verstehen.
Na meiner Meinung sollte man doch die Funktionen nutzen die einem die Entwicklungsumgebung zur Verfügung stellen.

bike


P.S: Ich kann mich erinnern wie oft zu S5 Zeit nach einer Flanke geschrieen wurde. (öfter noch als bei manchem Fußballspiel).
 
Ja, das siehst Du falsch.
Mit dem Code von mega_ohm kann man beliebig oft im Programm das Signal E0.0 auf positive oder negative Flanke
abfragen und braucht dabei nur diesen einen Hilfsmerker M0.0.
FP und FN brauchen jeder einen eigenen Hilfsmerker, weil diese Befehle zusätzlich zur Flankenanzeige gleich den
aktuellen Zustand des Signals in den Hilfsmerker speichern.

Code:
// Letztes Netzwerk
U   E0.0    // Zustand jetzt
=   M0.0    // für nächsten Zyklus merken
Allerdings müssen immer beide Signale abgefragt werden. (E0.0 & M0.0)
Zweitens passt folgendes nicht zusammen:
beliebig oft im Programm verwenden und Zustand im letzten Netzwerk schreiben.
Oder wird das im OB1 gemacht? ;)
Dann doch lieber zwei Merker und ich habe von einem Signal eine Flanke die wirklich im ganzen Programm gültig ist.
Code:
U  E0.0  // Signal
FP M0.0  // Flanken Hilfsmerker
=  M0.1  // Flankenmerker für das komplette Programm (ein Zyklus High)
 
Allerdings müssen immer beide Signale abgefragt werden. (E0.0 & M0.0)
Zweitens passt folgendes nicht zusammen:
beliebig oft im Programm verwenden und Zustand im letzten Netzwerk schreiben.
Oder wird das im OB1 gemacht? ;)
Dann doch lieber zwei Merker und ich habe von einem Signal eine Flanke die wirklich im ganzen Programm gültig ist.
Code:
U  E0.0  // Signal
FP M0.0  // Flanken Hilfsmerker
=  M0.1  // Flankenmerker für das komplette Programm (ein Zyklus High)
*ACK*

und wie BIKE schon erwähnte, immer den selben Eingang...


Dann mal an alle Programmierer:
Bitte schreibt die Programme so dass sie auch für einen Instandhalter (ich zb)
einfach erkenn/lesbar sind. DANKE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Mega_Ohm:
Du solltest aber berücksichtigen, dass der FP und der FN-Befehl letztlich nichts anderes machen.
Das habe ich ja nicht angezweifelt. Aber es ist ein spezieller Befehlssatz von s7.

Nur gibt es eben bei KM-easy z.b. keinen FP- oder FN-Befehl.
Und man benötigt für mein aufgezeigtes Beispiel nur 1 Merker für pos. bzw. neg. Flankenabfrage... während man für jeden FP- bzw. FN- Befehl einen neuen Merker benötigt oder (wenn man diese Funktion mehrmals in einem Programm benutzt) mindestens einen 2. Merker.
Code:
U E0.0 
FP M0.0
= M0.1 // Merker für die pos. Flanke
 
U E0.0
FN M0.2
= M0.3 / Merker  für die neg. Flanke

Beim "klassischen" System belege ich einen Merker, den ich dann beliebig
als pos. oder neg. Flanke abfragen kann... und es funktioniert in vielen anderen Programmiersprachen genauso.

Es ist egal, ob ich mein Programm von Haus aus so klar strukturiert habe, daß ich einen Flankenmerker tatsächlich nur ein einzigstes Mal benötige (und nur als pos. oder neg. Flanke)... ich brauche einen Merker, den ich nicht mehr anders verwenden kann.
Ich benötige auch einen Merker und 2 Zeilen mehr... und kann mit dem Merker pos. oder neg. Flanken basteln, solange ich Lust dazu habe. :)

Mfg
 
Zuletzt bearbeitet:
mindestens 3 von 5 haben eine interne flankenauswertung, bei easy bin ich mir nicht sicher ... aber die hat mindestens die funktion stromstoßrelais...
Für die Funktion bei KM-easy "Stromstoß-Relais" wird immer eine pos. Flanke benötigt, die dann von 0 => 1 oder 1 => 0 "schaltet".

Bei der sehr eingeschränkten KOP-Programmierung kann diese Funktion viel SR- Mimik vereinfachen.
( es sind max. 3 UND- Verknüpfungen möglich, danach muß eine "Spule" [ z.B. ein Merker] gesetzt werden. Selbst bei "nur etwas" anspruchsvollerer Programmierung hat man sehr schnell alle Textmerker und "erweiterten Ausgänge" als Merker mitverbraten.
Die KM-easy ist Gold wert, wenn man mehrere Zeitrelais benötigt. Dann ist sie im Preis unschlagbar und Verdrahtungsaufwand spart man auch noch.

Ich verstehe aber den Zusammenhang zu Flankenmerkern nicht so ganz.
 
Allerdings müssen immer beide Signale abgefragt werden. (E0.0 & M0.0)
Das ist tatsächlich wahr.
Aber, wenn man immer diese Struktur einhält ( z.B. immer den DI und direkt folgend dessen FM [Flankenmerker], dann liest sich das wie in einem Buch... es wird eine (optisch empfundene ) Einheit.
Zweitens passt folgendes nicht zusammen:
beliebig oft im Programm verwenden und Zustand im letzten Netzwerk schreiben.
Oder wird das im OB1 gemacht? ;)
Dann doch lieber zwei Merker und ich habe von einem Signal eine Flanke die wirklich im ganzen Programm gültig ist.
Es wird in FC's, FB's gemacht... niemals im OB1 !

Warum soll das nicht zusammen passen ?
(Fakt ist, es funktioniert IMMER !)
Aber ich bin auf Deine Begründung sehr gespannt, lasse mich gern eines Besseren belehren.
 
Zurück
Oben