# Flankenerkennung



## Airen (2 April 2010)

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
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


----------



## zotos (2 April 2010)

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.


----------



## Gerhard K (2 April 2010)

wenn der eingang von 1 auf 0 wechselt und E1.1 true ist, nur dann wird dein A4.1 auf 1 gesetzt.


----------



## Gerhard K (2 April 2010)

zotos war schneller :-D


----------



## libra1780 (2 April 2010)

Ginge auch so

U E 1.0
FN M 2.0
U  E 1.1
S  A 4.1

flanke negativ.. sieht gleich auf dem ersten blick logisch aus


----------



## Airen (2 April 2010)

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


----------



## libra1780 (2 April 2010)

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.


----------



## PN/DP (2 April 2010)

Airen schrieb:


> 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.
> ...


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


----------



## mega_ohm (3 April 2010)

Ich kann mich mit den *FN*- bzw. *FP*- Merkern überhaupt nicht anfreunden.

Ich löse die Flankenmerker auf die "klassische" Art.

```
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:

```
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 )


----------



## Larry Laffer (3 April 2010)

@Mega_Ohm:
Du solltest aber berücksichtigen, dass der FP und der FN-Befehl letztlich nichts anderes machen.


----------



## vierlagig (3 April 2010)

mega_ohm schrieb:


> - s5
> - s7-2xx (MicroWin)
> - s7-3xx bzw. s7-4xx (Step7)
> - Logo!
> - KM-easy



mindestens 3 von 5 haben eine interne flankenauswertung, bei easy bin ich mir nicht sicher ... aber die hat mindestens die funktion stromstoßrelais...


----------



## simon.s (3 April 2010)

> Ich löse die Flankenmerker auf die "klassische" Art.
> 
> ```
> u E 0.0 // Als Beispiel ein DI
> ...




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


----------



## lubof (3 April 2010)

vierlagig schrieb:


> mindestens 3 von 5 haben eine interne flankenauswertung, bei easy bin ich mir nicht sicher ... aber die hat mindestens die funktion stromstoßrelais...


 

ja auch die easy kann die flankenauswertung


----------



## PN/DP (3 April 2010)

simon.s schrieb:


> 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

```
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


----------



## bike (3 April 2010)

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).


----------



## Paule (3 April 2010)

PN/DP schrieb:


> 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
> ...


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.

```
U  E0.0  // Signal
FP M0.0  // Flanken Hilfsmerker
=  M0.1  // Flankenmerker für das komplette Programm (ein Zyklus High)
```


----------



## simon.s (3 April 2010)

Paule schrieb:


> 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?
> ...


*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


----------



## mega_ohm (4 April 2010)

Larry Laffer schrieb:


> @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.

```
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


----------



## mega_ohm (4 April 2010)

vierlagig schrieb:


> 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.


----------



## mega_ohm (4 April 2010)

Paule schrieb:


> 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.


----------



## mega_ohm (4 April 2010)

PN/DP schrieb:


> 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
> ...


Naja... 
Eigentlich hat der M0.0 (der Flankenmerker) auch den "Zustand"= JETZT.
Dadurch, daß ein Programm zyklisch "abgearbeitet" wird, der Merker aber erst nach seiner Abfrage gesetzt wird, funktioniert das Ganze wie beschrieben.


----------



## mega_ohm (4 April 2010)

Viel wichtiger, als sich über so'nen Kleinkram zu streiten (ob nun FP-/FN oder ein Merker direkt gesetzt wird) ist eine gute Dokumentation (aussagekräftige Kommentare).
Die Programmier-Tools werden mit den Jahren immer ausgeklügelter... sind aber meist abwärtskompatibel. Wenn nach 15 Jahren mal ein Programm daher kommt, welchem man überhaupt nicht mehr folgen kann... und man hat es dann noch selbst geschrieben....
Dann bleibt nur der Spruch:
"Hat's geschrieben, kann's nicht lesen... ein dummer Esel gewesen."


----------



## bike (4 April 2010)

mega_ohm schrieb:


> *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




Es ist in der heutigen Zeit wo solch wenige Merker verfügbar sind enorm wichtig Merker zu sparen. 

Und ist es notwendig mehrmals Flanken zu basteln? Also einmal an einer Stelle Signale die global gültig sind zu bilden macht Sinn, so dass ein Außenstehender sich zurecht findet, Fehler finden und ggF. ändern kann.


bike


----------



## Paule (4 April 2010)

Es ist schon interessant wie lange man sich über einen Flankenmerker unterhalten kann. Aber es sind ja Feiertage und man hat etwas mehr Zeit über solche banalen Dinge zu debattieren. 


mega_ohm schrieb:


> 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.





Paule schrieb:


> Zweitens passt folgendes nicht zusammen:
> beliebig oft im Programm verwenden und Zustand im letzten Netzwerk schreiben.


Beispiel: 
Du bildest Dir im FC1 NW1 einen Flanken Merker durch den Eingang E0.0.

```
// FC1 NW1
   U  E 0.0
   UN M 0.0
```
OK, das kannst Du so die ganze FC lang weiter schreiben.
Du schreibst am Ende von dem Baustein wird der Signalzustand nun auf den Merker übertragen.

```
//FC1 NW10
   U E 0.0
   = M 0.0
```
Jetzt kannst Du im FC2 nicht wieder 

```
// FC2
   U  E 0.0
   UN M 0.0
```
abfragen. Darum meine Aussage: Beliebig oft im Programm passt nicht

Zweitens:
Wenn ich die Flanke nur einmal brauche reicht mit der FP/FN Methode ja auch ein Merker, da ein Flankensignal raus gegeben wird.

```
U  E 0.0
   FP M 0.0  // Es wird nur ein Merker verwendet
   S  A 1.0  // Der Ausgang wird nur gesetzt bei einem Signalwechsel des Eingangs von 0 auf 1
```
Allerdings wurde das auch schon erwähnt.

Jetzt bist Du wieder dran.


----------



## mega_ohm (5 April 2010)

bike schrieb:


> Es ist in der heutigen Zeit wo solch wenige Merker verfügbar sind enorm wichtig Merker zu sparen.
> 
> Und ist es notwendig mehrmals Flanken zu basteln? Also einmal an einer Stelle Signale die global gültig sind zu bilden macht Sinn, so dass ein Außenstehender sich zurecht findet, Fehler finden und ggF. ändern kann.
> 
> ...


Hmmm...
Ich weiß g'rad nicht, ob Du mich auf den Arm nehmen willst... 

Es geht *nicht* um's "Merker sparen"...
...sondern um die Lesbarkeit und Nachvollzieh-barkeit für das Wartungspersonal. ( <= das sind die Dropse, die sich mit nicht funktionierenden Progies in der Nachtschicht beschäftigen !...   wie z.B. ich !)

______________________________________________________________
*Für alle Kritiker:  ( !! )*
- ich klage nicht !  ( bin sehr erfüllt in meinem jetzigen Job)
- ich beschwere mich nicht über meinen "ach so harten Job !"
Es fordert mich, zeigt mir Wissenslücken auf, die ich gewillt bin, zu schließen!


----------



## mega_ohm (5 April 2010)

Paule schrieb:


> Es ist schon interessant wie lange man sich über einen Flankenmerker unterhalten kann. Aber es sind ja Feiertage und man hat etwas mehr Zeit über solche banalen Dinge zu debattieren.


Da hast Du ein paar wahre Wörter so einfach hingeschrieben.


> Du bildest Dir im FC1 NW1 einen Flanken Merker durch den Eingang E0.0.
> 
> ```
> // FC1 NW1
> ...


Ich bin zwar nicht der Programmierer, aber _ich meine_... wenn ich im OB1
einen FC 999 als Letztes aufrufe
z.B.:

```
// OB1
Call FC1 // dort "verwurste" ich meine Flankenmerker mit den Bedingungen
Call FC2 //  da wird was Anderes programmiert
....
Call FC999 // hier werden die FM gesetzt
```
daß nach meiner bisherigen Erfahrung (!) noch nie das Gegenteil eintrat !

Nun möchte ich mich aber auch nicht hinstellen und sagen: Nach meiner Erfahrung (!) trat noch nie ein Fehler auf, also ist meine Meinung = Gesetz !


> Zweitens:
> Wenn ich die Flanke nur einmal brauche reicht mit der FP/FN Methode ja auch ein Merker, da ein Flankensignal raus gegeben wird.
> 
> ```
> ...


Ich habe diesen Befehlen FN / FP ihren Sinn ja nie abgesprochen !
Sie vereinfachen in einem s7- Programm die Lesbarkeit erstmal.
Für Leute, die in mehreren SPS-'sen rumoren, ist ein einheitliches Script
sehr hilfreich.

Wird ( bleiben wir doch bei dem Bsp. E0.0 ) mehrfach eine Flanke innerhalb (!) eines Zyklus abgefragt, finde ich meine Version besser.
Ein weiterer Merker, der dann nur noch die Flanke bildet

```
u e 0.0 // z.B. Taster 1S1
un m 0.0 // FM von Taster 1S1
= m0.1 // pos. Flankenmerker von Taster 1S1
```
wäre eine Alternative, würde aber wieder nur eine Flanke ( pos. oder neg.)
nachbilden.

*Egal:*
Jeder proggt, wie er kann.
Ich finde es immer toll, wenn sich _ein Sytem, eine "Handschrift"_ erkennen läßt.
Das erleichtert im Ernstfall viel Sucharbeit (<<< läßt übrigens auch die Programmierer in einem viel helleren Licht strahlen)


----------



## bike (5 April 2010)

mega_ohm schrieb:


> Hmmm...
> Ich weiß g'rad nicht, ob Du mich auf den Arm nehmen willst...
> 
> Es geht *nicht* um's "Merker sparen"...
> ...sondern um die Lesbarkeit und Nachvollzieh-barkeit für das Wartungspersonal. ( <= das sind die Dropse, die sich mit nicht funktionierenden Progies in der Nachtschicht beschäftigen !...   wie z.B. ich !)



Also da ich weder deine Größe noch dein Gewicht kenne, würde ich das einfach einmal nicht machen 

Also bei uns ist es so, dass wir für die Kunden programmieren und du darfst versichert sein, dass wir jede Menge zusätzliches  schreiben, damit die Bediener und Instandhalter besser mit der Anlage und dem Programm zurecht kommen.

Zu beginn werden die E rangiert und auch die notwendigen Flanken und zusammengefassten Signale erzeugt. Im weiteren Verlauf wird nur mit den erzeugten Signalen gearbeitet, das ist doch logisch und gut lesbar, behaupte ich (z.B. M_PI_START) 

bike


----------



## dalbi (5 April 2010)

mega_ohm schrieb:


> Es geht *nicht* um's "Merker sparen"...
> ...sondern um die Lesbarkeit und Nachvollzieh-barkeit für das Wartungspersonal. ( <= das sind die Dropse, die sich mit nicht funktionierenden Progies in der Nachtschicht beschäftigen !...   wie z.B. ich !)
> 
> ______________________________________________________________
> ...



Hi,

vielleicht musst Du ja deswegen so oft an deine Anlagen um die Flankenmerker manuell wieder zurückzusetzen, damit diese wieder Funktionieren. 

Gruss Daniel


----------



## Lupo (5 April 2010)

Mal so ganz nebenbei :
Ich löse die meißten Abläufe über Schrittketten. Eine SK arbeitet vom Grundsatz her sowieso mit Flanken. Wofür muss man sich also heutzutage noch im großen Stil Flnakenmerker in einem Programm bilden ? Ist OK, wenn man mal eine Berechnung nur einmal ereignisgesteuert machen will - aber sonst ?


----------



## bike (5 April 2010)

Lupo schrieb:


> Mal so ganz nebenbei :
> Ich löse die meißten Abläufe über Schrittketten. Eine SK arbeitet vom Grundsatz her sowieso mit Flanken. Wofür muss man sich also heutzutage noch im großen Stil Flnakenmerker in einem Programm bilden ? Ist OK, wenn man mal eine Berechnung nur einmal ereignisgesteuert machen will - aber sonst ?



Es kann aber auch sein, dass nicht alle Programme und Anlagen mit Schrittketten realisieren lassen?
Flanken haben ihre Berechtigung.

Aber das ist nicht Thema dieses Threat 


bike


----------



## Lupo (5 April 2010)

bike schrieb:


> Flanken haben ihre Berechtigung.


 
Das habe ich auch nicht anzweifeln wollen !
Jede Form einer Flankenbildung hat unter Berücksichtigung der jeweiligen Problematik ihre volle Berechtigung.



bike schrieb:


> Es kann aber auch sein, dass nicht alle Programme und Anlagen mit Schrittketten realisieren lassen?


 
Diese Aussage allerdings liegt sehr im Auge des Betrachters. Natürlich läßt sich alles immer auch irgendwie anders machen - aber z.B. sogar ein einfaches Flip-Flop ist im Grunde genommen eine Schrittkette ...
Und beim Programmieren hat man immer irgendwelche sequentiellen Ablaufe - also Schrittketten ...


----------



## bike (5 April 2010)

Lupo schrieb:


> Und beim Programmieren hat man immer irgendwelche sequentiellen Ablaufe - also Schrittketten ...



Gut, dass du mir das erklärst.
Ich habe allerdings bis heute noch niemand gefunden, der Werkzeugmaschinen in Schrittketten programmieren kann.
Aber wir lassen uns das gern von dir zeigen.

bike


----------



## Lupo (5 April 2010)

bike schrieb:


> Ich habe allerdings bis heute noch niemand gefunden, der Werkzeugmaschinen in Schrittketten programmieren kann.
> Aber wir lassen uns das gern von dir zeigen.


 
Dann erzähl doch mal, was da so passiert bei deiner Werkzeugmaschine ...


----------



## Paule (5 April 2010)

Lupo schrieb:


> aber z.B. sogar ein einfaches Flip-Flop ist im Grunde genommen eine Schrittkette ...


Ich glaube wir kommen jetzt von Thema ab.

Aber Du willst aus einem FLIP-FLOP eine Schrittkette machen?

```
U E 0.0
   FP M 1.0
   X M 0.0
   = M 0.0
```
Also das sind mal 4 Zeilen Code, lass mal Deine Lösung sehen.


----------



## dalbi (5 April 2010)

Lupo schrieb:


> Das habe ich auch nicht anzweifeln wollen !
> Jede Form einer Flankenbildung hat unter Berücksichtigung der jeweiligen Problematik ihre volle Berechtigung.
> 
> 
> ...



Hi,

ich bin da auch ganz der Meinung von Bike und Paule, alles ist eine Schrittkette, das ist absoluter Käse.

Gruss Daniel


----------



## Lupo (5 April 2010)

Paule schrieb:


> Aber Du willst aus einem FLIP-FLOP eine Schrittkette machen?


Na ganz einfach - es ist eine 2-Schritte-Schrittkette. Der erste Step wäre, dass nach deinem Beispiel der M0.0 nicht da ist und der zweite Step, dass er da ist. Danach geht es automatisch wieder in den ersten Step. Das sieht allerdings am Beispiel der "ELTAKO"-Merkerschaltung nicht so schön aus ... aber im Grunde wäre der ELTAKO ja dafür auch genau das richtige Beispiel ...



Paule schrieb:


> Ich glaube wir kommen jetzt von Thema ab.


Den Gedanken hatte ich auch schon ...


----------



## Lupo (5 April 2010)

dalbi schrieb:


> ich bin da auch ganz der Meinung von Bike und Paule, alles ist eine Schrittkette, das ist absoluter Käse.


 
Da wir jetzt ja dabei sind gehörig vom Ursprungs-Thema dieses Thread wegzugehen ... von mir aus.
Sag mir ein Beispiel aus deiner täglichen Praxis, das NICHT als Schrittkette zu machen geht oder wo vielleicht sogar die Schrittkette die schlechtere Lösung darstellt. Ich will gerne dazulernen aber mir ist da bis heute nichts begegnet.
Übrigens laufen eigentlich ALLE Hochsprachen-Programme sequentiell (also als Schrittkette) ab.


----------



## dalbi (5 April 2010)

Hi,

ich weiss ja nicht in welcher Traumwelt du lebst. Programmier mal einen Kaskadenregelung mit Min. und Maxbegrenzung als Schrittkette.

Gruss Daniel


----------



## Lupo (5 April 2010)

und ich weiß nicht von welchem Planeten du kommst ...

Eine Regelung ist sicherlich etwas, wo eine Schrittkette grenzwertig einzusetzen ist. Allerdings gibt es durchaus Regelungen, die einen Ablauf berücksichtigen - eine Positionierung z.B. oder prinzipiell auch eine sich anpassende Regelung wie z.B. PID.

Eine Schrittkette wird, wie ich schon geschrieben habe, natürlich für ABLÄUFE eingesetzt. Wenn du mir jetzt erzählst und glaubhaft machst, dass alle deine Steuerungen, die du so machst, nur die Aufgabe haben, eine Heizung oder so zu regeln, dann hast du Recht. Oder passiert da vielleicht noch etwas nebenbei ? Wird deine Regelung vielleicht sogar von irgend etwas Anderem überhaupt erst aktiviert ? Das im schlimmsten Fall sogar noch nachdem irgendwelche Vorbedingungen erfüllt gewesen sind ?
Geh da vielleicht noch mal in dich.


----------



## Lupo (5 April 2010)

Ach ja - noch etwas :
Was macht euch übrigens Glauben, dass ich euch angreifen, blossstellen oder sonst etwas Böses will ?


----------



## dalbi (5 April 2010)

Hi,

also doch, siehst Du, genau das wollte ich hören "Ablaufsteuerung".

Alles wird Gut.

Gruss Daniel


----------



## Lupo (5 April 2010)

Lupo schrieb:


> Und beim Programmieren hat man immer irgendwelche sequentiellen Ablaufe - also Schrittketten ...


 
@Dalbi:  nur so zur Erinnerung - damit hatte es angefangen. Ich sprach von Anfang an von (sequentiellen) Abläufen ... Was hattest du gelesen ?


----------



## dalbi (5 April 2010)

Hi Lupo,

ne, darum ging es ja auch gar nicht, lediglich die Aussage das alles eine Schrittkette ist war falsch.

Schwamm drüber, und zurück zum Thema.

Gruss Daniel


----------



## Lupo (5 April 2010)

dalbi schrieb:


> Schwamm drüber, und zurück zum Thema.


 
*ACK*   so soll es sein ...


----------



## bike (5 April 2010)

Lupo schrieb:


> Ach ja - noch etwas :
> Was macht euch übrigens Glauben, dass ich euch angreifen, blossstellen oder sonst etwas Böses will ?



Zum blossstellen fehlt dir denke ich einiges.

Die Aussage alles wird sequenziell abgearbeitet auch in Hochsprachen, ist schlicht und einfach falsch. Du solltest dich einmal mit treats beschäftigen. 
Aber ist gut, du kannst es und weißt es.

bike

P.S: schade, dass manche  Threats so abgleiten


----------



## Larry Laffer (5 April 2010)

@Bike:
Was ist denn an den gemachten Aussagen falsch ?
Hast du schon ein Hochsprachen-Programm gesehen, dass nicht sequentiell arbeitet ? Selbst mehrere Tasks werden ja auch nur durch einen Trick in der dahinter stehenden Runtime parallel bearbeitet. Und simulatane Bearbeitung mehrerer Abläufe in der SPS ist ja auch kein Problem ...

Erklär mal ...


----------



## bike (5 April 2010)

Larry Laffer schrieb:


> @Bike:
> Was ist denn an den gemachten Aussagen falsch ?
> Hast du schon ein Hochsprachen-Programm gesehen, dass nicht sequentiell arbeitet ? Selbst mehrere Tasks werden ja auch nur durch einen Trick in der dahinter stehenden Runtime parallel bearbeitet. Und simulatane Bearbeitung mehrerer Abläufe in der SPS ist ja auch kein Problem ...
> 
> Erklär mal ...




Ich weiss, dass es auch in PLC manche Teile parallel ablaufen (müssen). Wenn z.B. die NC eine Signal in der Nahtstelle ändert, wird die sequenzielle Bearbeitung unterbrochen und andere Funktionen werden gestartet. 
So ist auch in Hochsprache geschriebenen  Programmen. 
Daher stimmt die Aussage, daß alle Programme sequenziell ablaufen nicht. Wenn ein treat ein Ergebnis während einer Parallelbearbeitung, bereitstellt, reagiert ein anderer treat darauf, das Programm wird ggF unterbrochen oder verzweigt oder so. 
Also so zumindest habe ich bis heute programmiert.

bike


P.S: Aber es ist doch jedem überlassen alles in Schrittketten zu schreiben, wenn es geht. Ich kann es nicht.


----------



## Larry Laffer (5 April 2010)

bike schrieb:


> Ich weiss, dass es auch in PLC manche Teile parallel ablaufen (müssen). Wenn z.B. die NC eine Signal in der Nahtstelle ändert, wird die sequenzielle Bearbeitung unterbrochen und andere Funktionen werden gestartet.
> So ist auch in Hochsprache geschriebenen Programmen.
> Daher stimmt die Aussage, daß alle Programme sequenziell ablaufen nicht. Wenn ein treat ein Ergebnis während einer Parallelbearbeitung, bereitstellt, reagiert ein anderer treat darauf, das Programm wird ggF unterbrochen oder verzweigt oder so.
> Also so zumindest habe ich bis heute programmiert.


 
Genauso kenne ich das auch (ohne es bisher auch nur einmal programmiert zu haben). Nichts-desto-weniger wird trotzdem jede Prozedur oder Funktion in sich sequentiell abgearbeitet. Das mit der Unterbrechung an einem Sprung oder einer Warte-Anweisung setzt ja letztlich die Prozedur an genau der Stelle wieder fort - lückenlos. Dieser Trick wird ja nur gemacht um anderen (parallen Aufgaben) auch eine Chance zu geben ...

Gruß
LL


----------



## bike (5 April 2010)

Larry Laffer schrieb:


> Genauso kenne ich das auch (ohne es bisher auch nur einmal programmiert zu haben). Nichts-desto-weniger wird trotzdem jede Prozedur oder Funktion in sich sequentiell abgearbeitet. Das mit der Unterbrechung an einem Sprung oder einer Warte-Anweisung setzt ja letztlich die Prozedur an genau der Stelle wieder fort - lückenlos. Dieser Trick wird ja nur gemacht um anderen (parallen Aufgaben) auch eine Chance zu geben ...
> 
> Gruß
> LL



Stimmt jede Funktion zu der mehr als eine Anweisung gehören werden intern nacheinander abgearbeitet, doch das bedeutet nicht, dass die Programme sequentiell ablaufen. Besonders wenn es mehrere Prozessoren sind stimmt diese Ansicht so noch viel weniger, wie sie von Lupo aufgezeigt wird.
Ich programmiere so inzwischen seit etwas mehr als 30 Jahre, sequenziell und parallel.
Aber wir sollten dieses Thema besser in  Programmstategie diskutieren.


bike


----------



## Larry Laffer (5 April 2010)

Mir ging es nur darum darzustellen, dass zwischen dem, was du schreibst und dem, was Lupo geschrieben hat, kein Widerspruch besteht.


----------



## rostiger Nagel (5 April 2010)

bike schrieb:


> Stimmt jede Funktion zu der mehr als eine Anweisung gehören werden intern nacheinander abgearbeitet, doch das bedeutet nicht, dass die Programme sequentiell ablaufen. Besonders wenn es mehrere Prozessoren sind stimmt diese Ansicht so noch viel weniger, wie sie von Lupo aufgezeigt wird.
> Ich programmiere so inzwischen seit etwas mehr als 30 Jahre, sequenziell und parallel.
> Aber wir sollten dieses Thema besser in  Programmstategie diskutieren.
> 
> ...



Also bei CNC-Steuerungen die bike einsetzt, gehen so glaube ich die
Uhren ein wenig anders wie bei einer normalen SPS
Ist diese mehrzahl von Prozessoren heute eigentlich noch üblich? Wenn
ich eine Beckhoff Steuerung nehme haben die doch auch nur eine CPU
wo das SPS-Programm drauf läuft und als Option auch die NC.

Wie ist eigendlich eine normale S7-CPU aufgebaut, haben die 
eigentlich bei den großen Apperaten mehre CPU's z.b. in den 
T-Maschinen?

@bike,
in welcher Steuerung sitzen diese mehrzahl an prozessoren?

PS. reißt euch bitte nicht gegenseitig die Harre aus hier, bei
mir ist es ja egal. Ich hab ja keine mehr.


----------



## Larry Laffer (5 April 2010)

Hallo Helmut,
ich glaube nicht, dass es etwas mit "Haare ausreissen" zu tun hat. Hier ist es eher ein Auffassungs-Problem.

Soweit ich es kenne (und zwar nicht speziell von den CNC-Maschinen her) ist es so :

- bei der SPS wird das Programm Anweisung für Anweisung von oben nach unten durchgearbeitet - ob etwas erfüllbar ist oder nicht. Eine Endlos-Schleife ist der Tod des Zyklus.

- bei den CNC-Maschinen oder aber auch bei der ereignis-gesteuerten Programmierung ist es so, dass das Programm z.B. bis zu einem Sprung-Befehl bearbeitet wird und dann kommt die nächste aktive Prozedur. Hier läuft das dann so ähnlich usw. So ein Sprung-Befehl kann hier alles Mögliche sein - z.B. auch ein "warte bis Position X angefahren". Immer wenn etwas nicht gleich ausführbar ist wird in die nächste aktive Prozedur verweigt. Dadurch erreicht man (Pseudo-)simulatanes Abarbeiten. Im Grundsatz arbeitet aber jede Prozedur erstmal sequentiell - sie kann ja gar nicht anders. 

Gruß
LL


----------



## bike (5 April 2010)

Helmut_von_der_Reparatur schrieb:


> PS. reißt euch bitte nicht gegenseitig die Harre aus hier, bei
> mir ist es ja egal. Ich hab ja keine mehr.



Also bei mir tut man damit auch schwer.
Es ging eigentlich um Flankenerkennung, die nach Aussage eine Schrittkette ist.
Dann kam die Aussage, dass auch in Hochsprache alles sequenziell programmiert wird.
Nicht zwei oder mehr Befehle werden als sequentielles Programm beschrieben. Doch dazu gibt es kluge Abhandlungen, nach meienr Meinung wird dies zu weit führen hier.

Man kann bzw müsste jetzt Mehrprozessorbetrieb genauer definieren.
Mehrprozessor, mehrere Prozessoren in einem Gehäuse  finden eigentlich nicht mehr statt, da die Intelligenz auf die Antriebe und andere Komponenten verteilt wird. Die NC bzw PLC schickt was zu tun ist und bekommt zurück was getan wurde. 
Dass die NC oder die PLC an einer bestimmten Stelle warten ist nicht ganz richtig. Es gibt Interrupt und Sychronaktionen und Parallelbearbeitung.
Zu der Beckhoff NC kann ich nichts sagen, ahb e ich noch? nicht in den Fingern gehabt. Doch wir haben mit Siemens NC genug zu tun HBZ zu programmieren. Fanuc, Bosch Rexroth und Heidenhain sind da nicht die  ganz richtigen Kandidaten dafür, wenn das Zentrum ein gewisses Leistungsspektrum übersteigt.



bike


----------



## bike (5 April 2010)

Larry Laffer schrieb:


> Im Grundsatz arbeitet aber jede Prozedur erstmal sequentiell - sie kann ja gar nicht anders.
> 
> Gruß
> LL


Stimmt wenn zwei Befehle als sequentielles Programm beschrieben werden ja, sonst nein.

Weder NC noch PLC wartet auf irgendetwas, das NC Programm belibt auf dem Satz stehen, doch das heißt nicht, dass die NC nichts macht.

Aber es begann als Flankenerkennung, die als Schrittkette bezeichnet wurde.


bike  


P.S: Lass uns zu den Flanken zurückkehren und Parallelcomputing und Ähnliches in Programmstrategien vielleicht vertiefen, wenn notwendig.


----------



## Perfektionist (5 April 2010)

Das Problem ist, dass einem (zumindest mir) irgendwann im Informatikunterricht eingebläut wird:





> Terminiertheit
> Terminiertheit heißt: Ein Algorithmus hält nach endlich vielen Schritten an (bricht kontrolliert ab). Dies gilt für jede mögliche Eingabe. Würde ein Algorithmus nicht terminieren (und somit zu keinem Ergebnis kommen), wäre die Folge eine so genannte Endlosschleife.


ohne zu berücksichtigen, dass





> Für diese Eigenschaft gibt es jedoch Ausnahmen: Steuerungssysteme, Betriebssysteme und viele weitere Programme, die auf Interaktion mit dem Benutzer aufbauen. Solange der Benutzer keinen Befehl zum Beenden eingibt, laufen diese Programme beabsichtigt endlos weiter. Donald Knuth schlägt in diesem Zusammenhang vor, nicht terminierende Algorithmen als rechnergestützte Methoden (Computational Methods) zu bezeichnen.


siehe: http://de.wikipedia.org/wiki/Algorithmus

Was ich damit sagen will: nicht für jeden Programmierer ist es von vorneherein selbstverständlich, dass die Endlosschleife bereits in das System in Form des zyklischen abgearbeiteten Programms eingebaut ist.


----------

