# Positive Flanke erstellen -HILFE-



## chipchap (11 März 2014)

Hallo. Ich will mich erstmal kurt vorstellen. Mein Name ist chipchap und komme aus der Nähe von Koblenz. Ich habe mich vor einem Monat an der Fernschule Weber für den SPS Lehrgang angemeldet.
Und num kommt schon mein erstes Problem, wo ich hoffe das mir jemand helfen kann.

Die Aufgabe lautet:

Mit einem Programm soll erkannt werden, ob ein Eingangssignal EIN eine positive Flanke aufweist. Das Programm "Positive Flanke" soll auf eine solche Flanke am Eingang mit einem Impuls am Ausgang reagieren, der eine Zykluszeit andauert.Der R_TRIG Baustei darf man nicht verwenden, sondern nur nachbauen.

Die Aufgabe kann mit folgender Logik gelöst werden:

Im 1. Netzwerk wird er Ausgang AUS dann gleich 1, wenn der Eingang EIN=1 ist und im Rechenzyklus zuvor 0 war (EIN_ALT = 0). Den Wert des Eingangs im Zyklus zuvor rhält man z.B.: dadurch das man im 2. Netzwerkden Eingang EIN mit sich selbst UND_Verknüpft. Das Ergebnis dieser UND-Verknüpfung weist man an der Variablen EIN-ALT zu.
Dadurch wird am Ende eines jeden Rechenzyklus der Eingangswert EIN abgespeichert, um im nöchsten Rechenzyklus als EIN_ALT zur Verarbeitung zur Verfügung zu stehen.


Diese Hausaufgaben soll man machen ohne noch einmal in das Script zu schauen. Entweder stehe ich so auf dem Schlauch oder es ist eine etwas ungenaue Formulierung.


----------



## hucki (11 März 2014)

Was soll denn Deiner Meinung nach daran ungenau sein?
Für mich steht alles drin, was Du brauchst.


----------



## chipchap (11 März 2014)

Sorry, ich bin Anfänger und sitz den ganzen Tag davor. Ich verstehe nicht warum ich 2 Netzwerke brauch.
Der erste Satz ist klar: Eingang 1 = Ausgang =1
aber und im Rechenzyklus zuvor 0 war. Da fängt es schon an. Soll das heißen das er enfach aus war ??

Sorry, ich schnalls einfach nicht

Wie ist zum Beispiel der R_TRIG aufgebaut. Der wurde noch nicht einmal erwähnt.


----------



## hucki (11 März 2014)

chipchap schrieb:


> Die Aufgabe kann mit folgender Logik gelöst werden:





chipchap schrieb:


> 1. Netzwerk ... Ausgang AUS ... gleich 1, wenn der Eingang EIN=1 ... und ... EIN_ALT = 0





chipchap schrieb:


> 2. Netzwerk ... Eingang EIN mit sich selbst UND Verknüpft weist man ... der Variablen EIN_ALT zu.


So besser?

PS: EIN_ALT wird im Zyklus erst gelesen und dann geschrieben. Was folgt daraus?


----------



## chipchap (11 März 2014)

1. Netzwerk

1 UND-Glied mit einem Eingang "EIN" und einem Eingang EIN_ALT negiert

2. Netzwerk

1 UND-GLIED mit einem Eingan "EIN". --> von diesem dann nochmals an das UND-Glied aber negiert und mit dem Namen EIN-ALT

Stimmt das so??


----------



## Ralle (11 März 2014)

Du mußt dir klarmachen, dass eine SPS zyklisch arbeitet.
Es wird also das Programm immer von NW 1 bei NW X abgearbeitet, wenn das Programm dann am Ende ist, beginnt es wieder von vorn.

Wenn du also in NW 1 wie im Text beschrieben, der Eingang direkt mit dem Ausgang verknüpft ist, dann ist er erst einmal False, wenn auch der Eingang False ist.
Nun kommst du ins 2. NW und merkst dort in einem Hilfsbit (ein Merker), wie denn der Zustand deines Eingangs ist.
Logischer Weise ist er nun auch noch False.
Also hast du den Ausgang auf False und den Hilfsmerker False.
Nun kommst du an das Ende des Programms, zwischen den Ende des Programms und dem Anfang werden die Eingänge eingelesen und die Ausgänge geschrieben.
Wenn sich nun der Eingang auf True geändert hat, wird im NW 1 der Ausgang True.
Nun überlegen wir kurz, was der Hilfsmerker zu diesem Zeitpunkt (NW1!!!) für ein Signal führt, Achtung NW2 ist noch nicht bearbeitet worden.
Nächste Überlegung: Welches Signal führt der Merker, wenn auch das NW 2 abgearbeitet ist?

Wenn du das rausgefunden hast, mußt du nur noch überlegen, wie du das im NW 1 durch eine zusätzlich einzufügende Verknüpfung nutzen kannst.
Es soll ja der Ausgang nur genau einen Zyklus lang True sein.

PS: Ich hab das mal noch nicht komplett für sich aufgelöst, denk mal nach, vielleicht klingelte ja nun. ;-)


----------



## hucki (11 März 2014)

chipchap schrieb:


> von diesem dann nochmals an das UND-Glied *aber negiert* und mit dem Namen EIN-ALT


Wo hast Du das Unterstrichene gelesen?

Ich geh' mal davon aus, dass Weber da ein FUP-UND mit 2 Eingängen verwendet.
In der realen Praxis würde man ein UND mit nur einem Eingang verwenden.


----------



## chipchap (12 März 2014)

Vielen Dank Ralle für die Antwort. Das ist schonmal ne gute Beschreibung und werde mich jetzt mal ransetzen und überlegen?

@ hucki, das sehe ich gebauso. Ein und mit einem Eingang. Aber ein Eingang soll man ja mit sich selber verknüpfen der dann EIN-ALT heißt. Brauch man nicht auch ein SR-Baustein?

Ich finde die Aufgabe ehrlich gesagt kompliziert, da der R_TRIG nicht einmalerwähnt wurde. Aber im Prinzip ist das Teil ja nicht mehr wie eine Abzweigdose, nur erkennt er halt ob positive oder negative Flanke.

Das es Netzwerke gibt ist mir klar, nur wird nicht jedes Netzwerk am Ende zusammen mit dem Ausgang verbunden?. Sorry wenn ich solch komischen FRagen stelle aber mir ist obwohl ich das SCript verstehe hier einigen unklar? Aber Gott sei Dank bin ich nicht der einzige wie ich woanders schon feststellen musste.


----------



## chipchap (12 März 2014)

So.

Ich habe das jetzt mal wie folgt auf Papier gebracht.

Netzwerk 1:  Eingang False --> Baustein --> Ausgang False

Netzwerk 2: Eingang False --> Merker mit negiertem Eingang --> True

Netzwerk 1 wechselt dann auf True und gibt es an Netzwerk 2 weiter. 
Und der Zyklus wird dann wieder False.


Passt das??

Was mir halst noch fehlt ist der selbstverknüpfte Eingang. Brauch ich nicht noch ein SR Glied?


----------



## Ralle (12 März 2014)

Im Netzwerk 2 mußt du nicht unbedingt negieren.
Du mußt dir überlegen, was du mit dem Merker aus Netzwerk 2 machen willst und machen kannst! Der muß ja schließlich für irgendwas gut sein!!! 

Das Problem ist, du kannst das nicht so ohne weiteres im Status sehen, wenn du eine SPS oder einen Simulator hast, ein Zyklus ist zu schnell.
Deswegen kann man sich in NW 3 einen 2. Merker *setzen*, der z.Bsp. mit 

U A …
S M 2.0

verknüpft ist.

Falls du alles richtig hast, muß der Eingang auf True geschaltet werden, dann schaltet der Ausgang auf True, dann der Merker 1 auf True, dann der Merker 2 auf True, dann beginnt das es wieder bei NW1
Der Ausgang sollte nun False werden (das fehlt dir noch in deiner Verknüpfung, der Merker 1 bleibt True (der Eingang ist ja noch True), der Merker 2 ist True (ist ja mit Setze M… beschaltet worden).

Wenn du den Eingang wieder auf False schaltest, dann bleibt der Ausgang auf False, der Merker 1 wird False und Merker 2 bleibt True (den mußt du per Force oder in der Variablentabelle zurücksetzen.)

Merker 2 zeigt dir nur an, dass die Flanke auch wirklich kurz da gewesen ist!


----------



## chipchap (12 März 2014)

Sorry, aber ich verstehe nur Bahnhof.Bei mir gibt es kein 3. Netzwerk Wie kann die Fernschule solch eine Aufgabe im ersten Bogen stellen wo sowas noch nicht einmalordentlich beschrieben ist, wenn überhaupt. Ich lass mir das ganze nochmal durch den Kopf gehen.

Vor 2 Monaten habe ich angefangen für mich SPS zu lernen. Im Internet gibt es da ne super Seite zu. Die Fallen direkt mit der Tür ins Haus ohne einmal die grundliegenden Dinge zu erläutern.
Die kommen komischerweise rst im 2. Bogen.


----------



## PN/DP (12 März 2014)

chipchap schrieb:


> dadurch das man im 2. Netzwerkden Eingang EIN mit sich selbst UND_Verknüpft



*Vergiss* dieses Deutsch, da hat einer hochwissenschaftlich die FUP-Ansicht des gewünschten Codes in Umgangssprache zurückübersetzt *ROFL*
Wo ist der Sinn, etwas mit sich selber UND-Verknüpfen? Etwa "ICH UND ICH = ICH"??

Schalte die FUP-Ansicht in die KOP-Ansicht oder AWL-Ansicht und siehe, daß eine simple Bit-Kopieroperation gemeint ist: Lesen des Bits "EIN" mit *U* und schreiben in die Variable "EIN_ALT" mit *=*




chipchap schrieb:


> Die Aufgabe lautet:
> 
> Mit einem Programm soll erkannt werden, ob ein Eingangssignal EIN eine positive Flanke aufweist. Das Programm "Positive Flanke" soll auf eine solche Flanke am Eingang mit einem Impuls am Ausgang reagieren, der eine Zykluszeit andauert.Der R_TRIG Baustei darf man nicht verwenden, sondern nur nachbauen.
> 
> ...


Ich glaube ich kann mich in den Aufgabesteller hineindenken und übersetze mal:

```
Netzwerk 1: // AUS = 1 wenn jetzt EIN = 1 ist und vorher EIN = 0 war (jetzt EIN_ALT = 0 ist)
"AUS" := "EIN" AND NOT "EIN_ALT"

Netzwerk 2: // Zustand von EIN für nächsten Zyklus in EIN_ALT merken
"EIN_ALT" := "EIN"
```

Du mußt nun meinen Pseudocode noch in AWL/KOP/FUP umwandeln - es ist ja Deine Übungsaufgabe.
Es ist nicht einfach die Lösung zu erklären ohne sie direkt hinzuschreiben.

Harald


----------



## chipchap (12 März 2014)

Ich danke Euch für Eure Mühe. Natürlich will ich nicht die direkte Lösung haben. In der Aktualisierung von den Aufgaben steht jetzt:

  Projekt „Positive Flanke“

  Mit einem Programm soll erkannt werden, ob ein Eingangssignal EIN eine positive Flanke (Signalwechsel von 0 nach 1) aufweist. Das Programm „PositiveFlanke“ soll auf eine solche Flanke am Eingang mit einem Impuls am Ausgang reagieren, der eine Zykluszeit andauert. Sie sollen also den in vielen Steuerungen in einer Bibliothek abgelegten Funktionsbaustein "R_TRIG" nachbilden. Sie dürfen "R-TRIG" nicht verwenden!

  Die Aufgabe kann mit folgender Logik gelöst werden:

  Zunächst wird der Ausgang AUS dann gleich 1, wenn der Eingang EIN=1 ist und im Rechenzyklus zuvor 0 war (EIN_ALT = 0). Danach bestimmt man für den nächsten Rechenzyklus den alten Wert des Eingangs, indem man den Eingang EIN mit der Funktion „MOVE“ dem internen Signal „EIN_ALT“ zuweist oder dadurch ermittelt, dass man EIN mit sich selbst UND-verknüpft. Dadurch wird am Ende eines jeden Rechenzyklus der Eingangswert EIN abgespeichert, um im nächsten Rechen*zyklus als EIN_ALT zur Verarbeitung zur Verfügung zu stehen


  17.2.1  Lösung nach IEC 
                                                                                                                   (8 Punkte)

  Zeichnen Sie den Funktionsplan des Programms „PositiveFlanke“ in der IEC-Funktionsbausteinsprache FBS.



Was ist ein MOVE. Hatte noch keine Zeit zum google. Die Kinder lassen mich nicht


----------



## hucki (12 März 2014)

Du denkst gerade zu kompliziert und siehst dadurch das eigentlich einfache nicht!

Das 1. Netzwerk ist durch, dass hast Du.


chipchap schrieb:


> 2. Netzwerk:
> den Eingang EIN mit sich selbst UND_Verknüpft.


 Ein UND mit zwei Pins, was steht am ersten, was am zweiten Pin des UNDs?
(Oder den 2. Pin des UNDs ganz weglassen, also ein UND mit nur einem Pin. Das versuchten hier alle zu erklären)

Nach dem UND:


chipchap schrieb:


> Das Ergebnis dieser UND-Verknüpfung weist man an der Variablen EIN-ALT zu.


----------



## chipchap (12 März 2014)

Das war schon immer mein Problem. Aber ganz am Anfang hatte ich solch einen Eingang. Dann habe ich ja doch nicht so falsch gelegen.


----------



## hucki (12 März 2014)

chipchap schrieb:


> Aber ganz am Anfang hatte ich solch einen Eingang.


Ja, aber leider auch noch Sachen, die nicht in der Beschreibung standen:





chipchap schrieb:


> 2. Netzwerk
> 
> 1 UND-GLIED mit einem Eingan "EIN". --> von diesem dann nochmals an das UND-Glied aber negiert und mit dem Namen EIN-ALT


Die bewirken nun mal auch einen Misserfolg!


Und was Du jetzt wirklich verstanden hast oder nicht kann man auch nicht nachvollziehen, da Du es so gut wie nie schaffst, auf gestellte Fragen direkt zu antworten!
:roll:


----------



## hucki (12 März 2014)

Sorry, OT:


PN/DP schrieb:


> Ich glaube ich kann mich in den Aufgabesteller hineindenken ...


Nicht noch dass Du der ursprüngliche Autor bist und die Sache vom Herrn Professor "verschlimmbessert" wurde?


----------



## chipchap (12 März 2014)

Sorry, ich konnte es alles noch nicht richtig ausprobieren da ich den ganzen Tag mit 2 Kindern alleine war.


----------



## hucki (12 März 2014)

chipchap schrieb:


> da ich den ganzen Tag mit 2 Kindern alleine war.


Komisch?! Bei denen läuft das Programm auch immer anders ab, als man sich bei der Programmerstellung eigentlich gedacht hat.


----------



## Lebenslang (12 März 2014)

Guck mal jpeg


----------



## Ralle (12 März 2014)

Lebenslang schrieb:


> Guck mal jpeg
> 
> 
> 
> ...




Na ja, ich habe nicht so lang und breit zu erklären versucht, weil ich nicht auch einfach die Lösung hätte hinschreiben können.
Aber vielleicht war es ja jetzt doch langsam an der Zeit das ganze aufzulösen.


----------



## chipchap (13 März 2014)

Guten Morgen. Meine Denkung bevor ich dieses Forum aufsuchen mußte war fast komplett richtig. Netzwerk 1 hatte ich mit dem UND Glied, nur Netzwerk 2 nicht. Mich haben die Angaben R_TRIG und MOVE verwirrt. Wenn mir jetzt noch jemand saget was die 2 genau bedeuten, dann hab ich alles.

Und Vielen Dank für Eure super Tips, Beschreibungen usw. 

Wünsche einen schönen Tag


----------



## Lebenslang (13 März 2014)

> Aber vielleicht war es ja jetzt doch langsam an der Zeit das ganze aufzulösen.



Guten Morgen, 

so dachte ich auch um nicht hier noch zig "Hochtheoretische" Threads zu solch einem Basic lesen zu müssen. 

In Zeiten als noch nicht alles in fertigen Bausteinen parat liegen musste (und es noch kein Internet gab ) und mein "PG" nur eine einzeilige 7 Segment Anzeige besaß, tja, da musste man solange selbst ÜBERLEGEN und PROBIEREN bis man eine Lösung hatte.
Aber so ein Forum hier ist schon eine feine Sache


----------



## Majestic_1987 (13 März 2014)

Ralle schrieb:


> (...) in einem Hilfsbit (ein Merker) (...)



Können wir uns alle darauf einigen, dass wir nur von Merkern reden, wenn wir den entsprechenden, manuell adressierten, globalen Speicherbereich meinen und dass wir grundsätzlich den Begriff der Variable verwenden, wenn wir einfach nur irgendeinen Wert (lokal oder wo auch immer) ablegen wollen?

Der Begriff an sich ist für den "Anfänger" zwar sicherlich schön, weil er sagt, was dieser Speicher im übertragenen Sinn tut. Aber wenn dann jemand auf die Idee kommt, in seinem FB oder seiner Funktion das entsprechende Bit irgendwo im Merkerbereich abzulegen, dann kommt spätestens 1 Stunde später ein neuer Thread, warum denn der FB/FC nur richtig arbeitet, wenn man ihn EIN mal verwendet ;-)

Danke


----------



## Lebenslang (13 März 2014)

> Können wir uns alle darauf einigen, dass wir nur von Merkern reden, wenn  wir den entsprechenden, manuell adressierten, globalen Speicherbereich  meinen und dass wir grundsätzlich den Begriff der Variable verwenden,  wenn wir einfach nur irgendeinen Wert (lokal oder wo auch immer) ablegen  wollen?



So sollte es per Definition sein, allerdings erlebe ich oft Azubis denen in der Schule noch der Begriff (Achtung jetzt kommt das Unwort ) Schmiermerker erklärt wird und das Variablen immer Zahlenwerte sind die in DB's abgelegt werden müssen.


----------



## Majestic_1987 (13 März 2014)

Lebenslang schrieb:


> So sollte es per Definition sein, allerdings erlebe ich oft Azubis denen in der Schule noch der Begriff (Achtung jetzt kommt das Unwort ) Schmiermerker erklärt wird und das Variablen immer Zahlenwerte sind die in DB's abgelegt werden müssen.



Solange Siemens noch Steuerungen baut und solange Leute die auch noch kaufen wird uns das verfolgen...

BTW: Hat schonmal irgendjemand die Situation gehabt, in einer CoDeSys-Steuerung überhaupt irgendwas im Merkerbereich ablegen zu müssen?


----------



## PN/DP (13 März 2014)

Majestic_1987 schrieb:


> BTW: Hat schonmal irgendjemand die Situation gehabt, in einer CoDeSys-Steuerung überhaupt irgendwas im Merkerbereich ablegen zu müssen?


Wenn fremde Steuerungen mit der Codesys-Steuerung kommunizieren dann muß man das hin und wieder :roll:
Bei ganz einfachen Lichsteuerungen aber eher nicht ... 

Harald


----------



## Lebenslang (13 März 2014)

> BTW: Hat schonmal irgendjemand die Situation gehabt, in einer  CoDeSys-Steuerung überhaupt irgendwas im Merkerbereich ablegen zu  müssen?



Habs schonmal gemacht bei der Kopplung eines Proface Touchpanels über Modbus an einen PFC von Wago.


----------



## Majestic_1987 (13 März 2014)

PN/DP schrieb:


> Wenn fremde Steuerungen mit der Codesys-Steuerung kommunizieren dann muß man das hin und wieder :roll:
> Bei ganz einfachen Lichsteuerungen aber eher nicht ...
> 
> Harald



Machst du die Steuerungskommunikation mit Modbus? xD


----------



## therealbeda (8 Juni 2015)

Ich würde gerne das Thema nochmals aufgreifen, da ich nun auch über diese Aufgabe gestolpert bin.

Meine Frage richtet sich allerdings an die nur beiläufig erwähnte Aufgabe, aber im selben Zusammenhang:

17.2.1 Lösung nach IEC

       Zeichnen Sie den Funktionsplan des Programms "Positive Flanke" in der IEC-Funktionsbausteinsprache FBS.

Ich mein, ich weiß was ein FUP is, die Frage ist nur, welchen wollen die da haben? Mein FUP für Codesys sieht anders aus als für S7. 

Danke


----------



## MSB (8 Juni 2015)

@therealbeda
FBS ist aber nicht FUP, weder bei Siemens noch nach IEC.

FBS entspricht FBS z.B. bei PC Worx, sowie CFC bei Codesys/Beckhoff/Siemens.
Die IEC-konforme Flankenvariante ist der Baustein R_Trig für Positive Flanke bzw. F_Trig für Negative Flanken.
Wenn du die Bausteinnamen googlest wirst du mit Sicherheit auch zahlreiche Bildchen finden.

Mfg
Manuel


----------



## therealbeda (9 Juni 2015)

Ah okay, das hilft mir schon mal.
Leider stand in der Aufgabenstellung, dass man den Baustein R_trig nicht verwenden darf, es wird also nach einer anderen Möglichkeit gesucht :-(

Therealbeda


----------



## hucki (9 Juni 2015)

Also nochmal:
Eine positive Flanke liegt vor, wenn ein Signal in diesem Zyklus HIGH ist und im letzten Zyklus LOW war.
Man muss also beide Zustände prüfen, um zu erkennen, ob eine Flanke vorliegt, und nach dieser Prüfung den Jetzt-Zustand an den Speicher #Vorher für die Verwendung im nächsten Zyklus übergeben.
Ich zeig das mal in AWL, weil das vom Handy aus leichter ist:

```
U  #Signal
UN #Vorher
=  #Positive_Flanke

U  #Signal
=  #Vorher
```
Das sollte sich in jeder SPS-Sprache erstellen lassen. Und daraus ergibt sich auch, warum der Flankenmerker #Vorher unbedingt statisch oder global definiert sein muss.

Die negative Flanke bekommst Du dann hoffentlich allein hin


----------



## therealbeda (9 Juni 2015)

Danke für die Erklärung.
Leider verstehe ich immer noch nicht welches Bildchen die da jetzt haben wollen.. "Lösung nach IEC"... IEC ist ja eine Norm, Step7 arbeitet doch nach dieser Norm, muss ich also den FUP hinschreiben den ich in Simatic erstellt habe? Ich komme da mit FUP und FBS etwas durcheinander.. Mein Problem ist, dass ich die Funktion zwar verstehe, aber eben nicht was da jetzt genau verlangt ist..


----------



## hucki (9 Juni 2015)

Ein (bzw. 2) UND sollte doch in jeder Sprache einfach zu finden sein, oder?


----------



## therealbeda (9 Juni 2015)

Ich hab ja den FUP eh da.. Programm läuft ja auch in Codesys.. ich weiß nur nicht ob die auch genau das in der Aufgabe verlangen.. FBS ist ja nicht gleich FUP


----------



## MSB (9 Juni 2015)

therealbeda schrieb:


> Ich hab ja den FUP eh da.. Programm läuft ja auch in Codesys.. ich weiß nur nicht ob die auch genau das in der Aufgabe verlangen.. FBS ist ja nicht gleich FUP


Achso, es geht hier um den Weber ...
Aufgaben von jenem Verein hatten wir schon öfter im Forum in der Mangel, und die haben eher selten mit praxisrelevanten Aufgaben bzw. Lösungen geglänzt.

Ein wenig Lesestoff:
http://www.sps-forum.de/werbung-und...ik-und-iec-programmierung-startet-wieder.html

Zu FBS vs. FUP: Es ist zwar im Prinzip nicht dasselbe, aber auf der Ebene von einem "Und" und einer Zuweisung doch quasi identisch.

Mfg
Manuel


----------



## therealbeda (9 Juni 2015)

Ich weiß nicht ob ich lachen oder weinen soll :-D

Aber nochmal zur Aufgabe:

Wie sieht denn die Lösung aus der "Lösung nach IEC"? 

Bei Codesys habe ich die Aufgabe mit 2 UND gattern gelöst, bei Step 7 mit zwei Netzwerken. Im prinzip dasselbe, aber was konkret muss man da jetzt hinschreiben?

Und noch was:
Was genau sollte denn diese Schaltung dann machen? Ist etwas ungenau erklärt..

Ich verstehe das so: 
Erster Zyklus: Eingang war 0, nun folgt ein 1 Signal auf den Eingang und der Ausgang wird 1. Nach einer gewissen Zeit wird der Ausgang wieder 0 da der Eingang 1 war. Das Ganze beginnt von vorne wenn ich den Eingang wieder Nulle und dann wieder ein Signal drauf geb, stimmt das in etwa so?


----------



## hucki (9 Juni 2015)

therealbeda schrieb:


> Was genau sollte denn diese Schaltung dann machen?


Eine Flankenauswertung gibt ein Signal immer nur genau einen Zyklus lang aus. Das wird immer dann genutzt, wenn in Abhängigkeit des Zustandes, auf den das Signal einwirkt, unterschiedliche Aktionen ausgelöst werden sollen.

Prominentes Beispiel -> der Stromstossschalter!
Ist der Ausgang aus, soll mit dem Eingang eingeschaltet werden. Ist der Ausgang jedoch an, soll dieser ausgeschaltet werden.
Würde man jetzt das Eingangssignal ohne Flankenauswertung weitergeben, hätte man ein schönes Blinklicht (solange der Eingang aktiv ist), da sich der Zustand des Ausgangs in jedem Zyklus ändern würde und somit im nächsten Zyklus eine andere (gegenteilige) Aktion hervorruft.
Durch das Verwenden der Flankenauswertung wird jedoch nur genau eine Aktion ausgelöst, da die Flanke das Signal nicht länger weitergibt.
Der Taster muss erst wieder losgelassen und erneut gedrückt werden, bevor dann wieder genau eine Aktion ausgelöst wird.


Jetzt haben leider nicht alle SPS-Typen eine integrierte Flankenauswertung oder andere (z.B. die S7-200) nutzen fest vorgegebene Flankenmerker, so dass man diese nicht in mehrfach verwendeten Bausteinen benutzen kann. Daher soll diese Übung sicherlich verdeutlichen, wie eine Flankenerkennung im Hintergrund arbeitet und wie man sich diese notfalls selbst erstellen kann.


Konkret kann ich Dir das Ergebnis für Deinen Fall leider nicht zeigen (hab' kein FBS). Aber Du kannst ja auch einen Screenshot Deiner Lösung posten und es wird dann hier entsprechend geprüft.


----------



## therealbeda (9 Juni 2015)

Okay, Ich hab mal meine Lösung angehängt. 
Bitte um Bewertung :-D


----------



## hucki (9 Juni 2015)

Dein Bild ist nicht korrekt. 



therealbeda schrieb:


> Wie sieht denn die Lösung aus der "Lösung nach IEC"?
> 
> Bei Codesys habe ich die Aufgabe mit 2 UND gattern gelöst, bei Step 7 mit zwei Netzwerken.


Die IEC-konforme Lösung muss m.M.n. genau so aussehen, wie Du es selbst hier beschrieben hast:
Zwei unabhängige UND-Gatter.
 Das erste macht die Prüfung der beiden Zustände. So wie Dein UND-Gatter auf dem Bild.
 Das 2. hat nur einen! Eingang, mit dem der Zustand des Signals auf den Merker übertragen wird.


----------



## MSB (9 Juni 2015)

therealbeda schrieb:


> Okay, Ich hab mal meine Lösung angehängt.
> Bitte um Bewertung :-D
> Anhang anzeigen 28972



Naja, es ist jetzt nicht die "klassische" Variante, würde aber funktionieren, bzw. wenn man alles in einem Netzwerk haben will, sogar eine recht gute Idee.

Mfg
Manuel


----------



## therealbeda (9 Juni 2015)

Wäre ohnehin zu spät, habs bereits weggeschickt


----------



## excelite (19 Juni 2015)

```
VAR_INPUT
xSignal : BOOL := FALSE;
END_VAR
VAR_OUTPUT
xOut : BOOL := FALSE;
END_VAR
VAR
xOldSignal : BOOL := FALSE;
END_VAR


// VARIANTE 1:
xOut := FALSE;
(* Pos Flanke *)
IF xSignal AND NOT xOldSignal THEN
   xOut := TRUE;
   ; (* Code der bei Flanke ausgeführt werden soll *)
END_IF;
xOldSignal := xSignal;


// VARIANTE 2:
(* Oder bei nur wirklich einem Signal geht das auch so *)
xOut := xSignal AND NOT xOldSignal;
xOldSignal := xSignal;
(* Das sollte man so auch einfach in FUP, KOP, usw. umsetzen können *)


(* Nur der Vollständigkeit halber: *)
(* Neg Flanke *)
IF NOT xSignal AND xOldSignal THEN
   ; (* Code der bei Flanke ausgeführt werden soll *)
END_IF;
xOldSignal := xSignal;
```

Steht ja nicht in der Aufgabe, dass es nicht ST sein darf - oder?


----------

