Es ist wörtlich von "speziellen Siemens-Funktionen" die Rede, die nicht vorkommen sollen. Ich dachte da an Zähler und Timer. Gehören Merker denn auch dazu?
O.k., die kann man doch einfach durch einen beliebigen Eingang oder Ausgang ersetzten, der nicht als solcher genutzt wird (so hab ich es verstanden).
Wie ist es denn mit der Flankenerkennung? Ist das auch irgendwie "speziell"? Dann sollte ich die vielleicht auch noch ersetzen.
Hallo Frank2728!
Die Merker sind zumindest keine "Funktion". Und es ist eher "nicht zeitgemäß", sie bedachtlos zu verwenden. Als FlankenMerker wird man sie Dir wohl durchgehen lassen.
Ich denke, es ist wichtig, dass Du weisst, wann Du temporäre Variablen benutzen kannst und solltest und auch, wann Du auf Variablen angewiesen bist, die "langlebig" sein müssen.
Du wirst Deine Software in einen (oder mehrere) "Baustein(e)" packen, OB, FB oder FC. Am Anfang eines FB oder FC legst Du Deine temporären Variablen an (L...), die nur in diesem Baustein verfügbar sind.
Gleichnamige temporäre Variablen anderer Bausteine sind damit nicht identisch.
Selbst wenn Du denselben Baustein wieder neu aufrufst - im selben oder im nächsten Zyklus, haben diese temporären Variablen nicht mehr den Inhalt vom vorherigen Aufruf. Ausnahmen gibt es nur, wenn das BetriebsSystem schlampt und sie sind dann nur rein zufällig.
Deine ZählerVariable und die Flanken"Merker" dürfen nicht temporär sein.
Ihr Zustand muss mindestens von einem Aufruf zum nächsten Aufruf des Bausteins erhalten bleiben (die Flanken"Merker") oder sogar noch viel länger (die ZählerVariable).
Deine Impuls"Merker" (M 20.1 ...) oder andere Hilfs"Merker" sollten temporär sein - es gibt keinen Grund, weshalb sie ausserhalb des Baustein(aufruf)s noch gültig sein müssten.
Freie Eingänge oder Ausgänge (der ProzessAbbilder) kann man als Merker missbrauchen - aber das solltest Du nicht tun - wenn das keine dicken MinusPunkte gibt, dann darfst Du Deinem Lehrer von mir vor's Schienbein treten ;o)
Die Begriffe "FlankenMerker" und "ImpulsMerker" und "HilfsMerker" stammen noch aus einer Zeit, als man keine grosse Auswahl hatte und sich noch selbst Bereiche definieren musste, die man entweder temporär oder global benutzen wollte. Deshalb bin ich dazu übergegangen, hier Flanken"Merker", Impuls"Merker" und Hilfs"Merker" zu schreiben, weil ich damit nur sagen will, dass es Bits sind, die sich etwas merken können. Ob im Bereich der Merker oder sonstwo, ist damit nicht festgelegt.
Die FlankenErkennung gehört allerdings schon in den Bereich "Funktion" und ob man sie als Siemens-spezifisch einordnet oder nicht, sei dahin gestellt.
Die FlankenErkennung ist Gott sei Dank keine Zauberei und es gab sie schon lange bevor FP und FN erfunden wurden - mit allereinfachsten Mitteln selbst gebastelt! Da kann ich Dir helfen.
Ich möchte sogar jedem empfehlen, der bei der Anwendung von FP bzw. FN ins Grübeln oder Straucheln kommt, sich einmal anzusehen, wie das funktioniert.
Es ist so einfach, dass man es versteht und nie wieder vergisst - was ich von der Anwendung von FP bzw. FN nicht wirklich behaupten möchte - wer hätte da nicht schon mal vorsichtshalber nachgeschlagen oder so lange herumprobiert, bis es plötzlich und unerwartet dann doch funktioniert hat.
Code:
[FONT=courier new]POS:
U Signal neuer Zustand ist 1 und
UN Flanken"Merker" alter Zustand war 0 dann
= ImpulsBeiPositiverFlanke liegt eine positive Flanke vor
NEG:
[FONT=courier new]UN Signal neuer Zustand ist 0 und
U Flanken"Merker" alter Zustand war 1 dann
= ImpulsBeiNegativerFlanke liegt eine negative Flanke vor
ALL:
[/FONT] [FONT=courier new] X Signal neuer Zustand ist so und
X Flanken"Merker" alter Zustand war anders dann
= ImpulsBeiJederFlanke liegt irgendeine (pos. oder neg.) Flanke vor
IMM:
U Signal neuen Zustand für nächsten Zyklus "langlebig" speichern
= Flanken"Merker" weil er dann als alter Zustand benötigt wird
[/FONT][/FONT]
Anmerkung: Die "SprungZiele" POS:, NEG:, ALL: und IMM: werden nicht als SprungZiele benutzt - habe sie nur als MiniKommentare missbraucht!
IMM: soll heissen, dass die folgenden beiden Befehle immer durchlaufen werden müssen. Also nicht überspringen und nicht den Baustein vorher beenden!
Für die jeweils 3 Befehle nach POS:, NEG: oder ALL: gilt: wenn man sie nicht benötigt - weglassen.
Es ist nur 1 Flanken"Merker" erforderlich, denn es gibt ja nur 1 Signal, von dem man sich den aktuellen Zustand für später merken muss.
Aber Achtung: diese "Weisheit" gilt nicht, wenn man mit FP und FN arbeitet! Habe in #2 gezeigt, wie man FP oder FN (nur 1 von beiden!) mit "konventionell" kombinieren könnte.
Gruss, Heinileini