Sinn einer Verzweigung in FUP

clumsi

Level-1
Beiträge
137
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, habe eine Frage zu folgendem Konstrukt (bekomme das Bild leider nicht größer, durch Klick wird es aber größer angezeigt):
FUP_1.png
Das ganze ist aus einem Programm, was nach Vermutung meines Chefs "etwas schlampig" programmiert sein könnte. Ich selber bin auch kein ausgebildeter SPS-Profiprogrammierer, konnte aber schon einige Erfahrungen sammeln....
Die beiden &-Blöcke links sind jeweils ein Tastereingang und eine Freigabe. Wenn ein Taster und die Freigabe für diesen Taster anliegen, soll scheinbar ein Impuls geschaltet werden. Der Impuls besteht aber in meinen Augen daraus, dass das Setzen des rechten &-Blockes gleich wieder durch die Negation von M10.0 rückgängig gemacht wird. Könnt ihr euch einen Grund vorstellen, soetwas zu programmieren?

Grüße,
clumsi


Und nochwas: Das hier habe ich in einem Basisfunktionsbaustein gefunden:
O "logische Null"
ON "logische Null"
R "logische Null"
S "logische Eins"

Habe mir das auch in KOP und FUP angesehen und habe überhaupt keine Idee, was das soll....
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider kann ich deinen Anhang/Bild nicht sehen?

O "logische Null"
ON "logische Null"
R "logische Null"
S "logische Eins"

Das sorgt dafür, dass die "logische Null" immer zurückgesetzt ist und die "logische Eins" immer gesetzt ist. Sozusagen feste 1 oder 0 Werte.

Edit:
Dein Bild ist eine positive Flanke. M20.0 und M10.0 werden im ersten Zyklus in dem eine der &-Verknüpfungen erfüllt ist angesteuert.
Im zweiten Zyklus ist dann M10.0 noch angesteuert, aber M20.0 nicht mehr. Jetzt müssen beide &-Verknüpfungen erst wieder 0 sein, damit man M20.0 wieder ansteuern kann.
 
Zuletzt bearbeitet:
M10.0 wird TRUE solange die Oder-Bedingung erfüllt ist
M10.0 ist der Flankenhilfsmerker für M20.0
M10.0 wird erst nach M20.0 zugewiesen - das ist der Sinn der "Verzweigung"

M20.0 wird nur für 1 Zyklus lang TRUE, wenn die Oder-Bedingung erfüllt ist und im Zyklus vorher nicht erfüllt war (kommend, steigende Flanke)

Alle Deine Codestücke sind nichts ungewöhnliches sondern ganz normale solide Programmiererarbeit.

Harald
 
Damit man bei der Verknüpfung zu M20.0 den Zustand des M10.0 vom vorherigen Zyklus verknüpft: UND jetzt_Zustand UND NICHT vorher_Zustand

Harald
 
Das Signal teilt sich doch aber nach >=1 auf, und geht direkt in die Zuweisung =M10.0? Passiert das nicht gleichzeitig, wenn das Signal auch in den &-Stein geht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Signal teilt sich doch aber nach >=1 auf, und geht direkt in die Zuweisung =M10.0? Passiert das nicht gleichzeitig, wenn das Signal auch in den &-Stein geht?

Nein. Es gibt kein gleichzeitig. Das Programm wird von oben nach unten abgearbeitet. Wenn du dir das Programm in AWL anschaust, wirst du sehen, dass zuerst die &-Verknüpfung bearbeitet wird und erst danach die Zuweisung auf M10.0 geschieht.
 
Es geht NICHT gleichzeitig. Das Programm wird von oben nach unten abgearbeitet. Der Jetzt-Zustand des OR wird ZUERST mit dem negierten Zustand des M10.0 aus der vorherigen Zuweisung verknüpft und das Ergebnis dem M20.0 zugewiesen. DANACH wird der Jetzt-Zustand des OR dem M10.0 zugewiesen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Signal teilt sich doch aber nach >=1 auf, und geht direkt in die Zuweisung =M10.0? Passiert das nicht gleichzeitig, wenn das Signal auch in den &-Stein geht?



Da das Programm zyklisch abgearbeitet wird, wird erst M20.0 = 1 und untermittelbar danach M10.0 = 1 ... im nächsten Zyklus wird M20.0=0 da M10.0=1 ist ....
 
Zuletzt bearbeitet:
Mit "schlampig programmiert" hat dein Chef aber recht. Bei Step7 gibt es für Flankenauswertung in FUP extra die P- oder N-Box.
Wahrscheinlich hat das irgendein S5-Hase geschrieben, der die Funktion in Step7 nicht kennt oder nicht kennen will.
 
Aus den paar Programmzeilen würde ich nicht ableiten, daß der Programmierer eine FP-Operation hätte nutzen müssen.

Vielleicht wird/wurde der M10.0 noch woanders im Programm verwendet und hat eigentlich die Funktion eines Connectors? (*)
Vielleicht ist der Impuls M20.0 erst später dazuprogrammiert worden? Dann wäre es auf den ersten Blick sogar eine ziemlich clevere Lösung, welche ohne zusätzlichen Flankenhilfsmerker auskommt.

(*) Den Hilfsmerker einer FP/FN-Operation möchte ich nicht noch woanders im Programm verwendet finden.

Harald
 
Zurück
Oben