Zustände eines NICHT bearbeiteten FC's

youfyouk

Level-1
Beiträge
33
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo erstmal,

ich habe in einem S7 Programm mehrere FC's die ich wahlweise bearbeite, um genau zu sein, es gibt 15 FC's es wird aber immer nur eins bearbeitet. Wenn ich nun ein FC verlasse, was gerade in Bearbeitung ist, behalten alle Merker, Ausgänge usw. ihren letzten Zustand.
Gibt es eine elegante Lösung dafür, dass die Merker, Ausgänge usw. alle zurückgesetzt werden können, wenn die Funktion verlassen wird?

Danke
youfyouk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo erstmal,

ich habe in einem S7 Programm mehrere FC's die ich wahlweise bearbeite, um genau zu sein, es gibt 15 FC's es wird aber immer nur eins bearbeitet. Wenn ich nun ein FC verlasse, was gerade in Bearbeitung ist, behalten alle Merker, Ausgänge usw. ihren letzten Zustand.
Gibt es eine elegante Lösung dafür, dass die Merker, Ausgänge usw. alle zurückgesetzt werden können, wenn die Funktion verlassen wird?

Danke
youfyouk

Diese Art der Programmierung ist meiner Meinung nach nicht unbedingt zu empfehlen. Würde ich nur machen wenn mir gar nichts anderes einfällt.
 
Da muss ich M-Ott rechtgeben. Es gibt keine elegante Lösung.
Das einzigste was ich dir empfehlen kann um nicht jeden Merker einzeln zurücksetzen zu müssen ist die Merker oder auch Ausgänge Byte weise anzusprechen und somit rückzusetzen.
z.B. statt
R M0.0
R M0.1
....
R M0.7

geht es auch mit

L 0
T MB 0

Mfg
 
Da muss ich M-Ott rechtgeben. Es gibt keine elegante Lösung.
Das einzigste was ich dir empfehlen kann um nicht jeden Merker einzeln zurücksetzen zu müssen ist die Merker oder auch Ausgänge Byte weise anzusprechen und somit rückzusetzen.
z.B. statt
R M0.0
R M0.1
....
R M0.7

geht es auch mit

L 0

T MB 0

Mfg

Das funktioniert, aber ist das auch guter Stil?
Ich würde jedem FC einen Bereich in einem DB reservieren, zu Beginn des FC dies in temp Variablen kopieren und am Ende des FC wieder wegschreiben.
So hast du den Zustand und kannst ggF darauf zurückgreifen.
Wenn dies nicht gewollt ist, dann vor jedem FC sich um das Aufräumen kümmern.
Wie bezeichnest du, wenn die in 15 FC verwendet werden, in der Symbolik die Merker? Haben einen Namen und einen Kommentar?

bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das funktioniert, aber ist das auch guter Stil?

Ich glaub, dass das die Kernfrage ist.
15 FCs mit gleichen Merkerbereichen und Ausgangsbereichen ist - meiner Meinung nach - schon kein gutes Design.
Wenn du kurze Zykluszeiten brauchst, dann kann ich es noch verstehen, aber ansonsten ist es unnötig und schlechter Stil.
Gleiche Merker sind sowieso schon unnötig. Entweder verwendest du Lokaldaten oder machst einen FB mit Instanz-Daten.
Mehrfaches Zuweisen von Ausgämgen bei bedingten Aufrufen ist auch nicht gerade das gelbe vom Ei.

@youfyouk: Vieleicht solltest du mal deinen Programmierstil "modernisieren".

Gruß
Dieter
 
Vielleicht hängen die Merker usw an den E/As der FC.

Ich würd quasi nen Enable Eingang machen, wenn der False ist das Programm im FC Überspringen und im letzten Netzwerk die IN/OUTs und OUTs zurücksetzen.Die FC immer aufrufen.
Bei Bearbeitung aber dann auch das letzte Netzwerk überspringen ;)
 
Mir ist die ganze Frage von youfyouk schon ein Rätsel,
und er ist ja kein Newbee, ist ja schon seit 2007 angemeldet.

Wir warten mal ab, was er zu unseren Meinungen sagt.

Gruß

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich danke euch ersteinmal für eure qualifizierten Antworten. Ehrlich gesagt, gefällt mir das persönlich auch nicht so richtig. Vielleicht kennt ja der eine oder der andere das von sich selbst, dass wenn man mal ein Projekt angefangen hat (mit schlechtem programier Stil), es irgendwie immer beibehält.

Das ganze sieht vor, dass die Steuerung nur 3 Meldeleuchten hat, alles andere (Werkzeuge mit Sensoren und Ventile) wird über einen Mehrpoligen Stecker an die Steuerung drangesteckt. Es gibt etwa 60 solcher Werkzeuge, mein Vorgänger hatte die über BCD-Codierung eingelesen und jedem Werkzeug einen FC geschrieben. Die Betreuung der Anlage habe ich gerade erst übernommen und schnell erkannt, dass das keine gute Lösung ist.
1. Speicher der SPS ist voll
2. Die Codiermöglichkeit geht nur bis 64 und es kommen noch viele neue Werkzeuge die bearbeitet werden sollen.

Der Ablauf der Steuerung ist fast immer gleich, mal gibt es ein oder zwei Sensoren oder Ventil mehr oder weniger.
Letzten endes möchte ich idealerweise nur ein "FC" für alle Werkzeuge schreiben. Wie es aber immer so ist treten auch mal Sonderfälle auf. Was vom Standard Ablauf abweicht. Die besagten Sonderfälle möchte ich in andere FC's schreiben und dafür hatte ich halt 14 weitere vorgesehen. So ist die Grundidee, ob das nun die beste Variante ist, bezweifele ich allmählich selbst.

Ich hoffe es ist halbwegs klar, was ich vorhabe. Was wäre denn ein guter ansatz bei so einem Fall? Hat jemand schonmal sowas ähnliches gemacht?
Bin für neue Ideen immer offen.

Danke
youfyouk
 
Hallo,
ich kann mich leider im Augenblick nicht so richtig in dein "Projekt" eindenken (mangels Info's). Vielleicht schreibst du mal etwas mehr zu dem Ablauf, der sich von Werkzeug zu Werkzeug ggf. ändern kann.
Bei meinen Anlagen (wobei ich dass jetzt nicht unbedingt mit dir vergleichen möchte) löse ich so etwas u.U. mit einem kompletten allgemein-gültigem Ablauf, der entsprechend vorgewählter Parameter durchlaufen wird.

Gruß
Larry
 
Hallo Leute,

ich danke euch ersteinmal für eure qualifizierten Antworten. Ehrlich gesagt, gefällt mir das persönlich auch nicht so richtig. Vielleicht kennt ja der eine oder der andere das von sich selbst, dass wenn man mal ein Projekt angefangen hat (mit schlechtem programier Stil), es irgendwie immer beibehält.

Das ganze sieht vor, dass die Steuerung nur 3 Meldeleuchten hat, alles andere (Werkzeuge mit Sensoren und Ventile) wird über einen Mehrpoligen Stecker an die Steuerung drangesteckt. Es gibt etwa 60 solcher Werkzeuge, mein Vorgänger hatte die über BCD-Codierung eingelesen und jedem Werkzeug einen FC geschrieben. Die Betreuung der Anlage habe ich gerade erst übernommen und schnell erkannt, dass das keine gute Lösung ist.
1. Speicher der SPS ist voll
2. Die Codiermöglichkeit geht nur bis 64 und es kommen noch viele neue Werkzeuge die bearbeitet werden sollen.

Der Ablauf der Steuerung ist fast immer gleich, mal gibt es ein oder zwei Sensoren oder Ventil mehr oder weniger.
Letzten endes möchte ich idealerweise nur ein "FC" für alle Werkzeuge schreiben. Wie es aber immer so ist treten auch mal Sonderfälle auf. Was vom Standard Ablauf abweicht. Die besagten Sonderfälle möchte ich in andere FC's schreiben und dafür hatte ich halt 14 weitere vorgesehen. So ist die Grundidee, ob das nun die beste Variante ist, bezweifele ich allmählich selbst.

Ich hoffe es ist halbwegs klar, was ich vorhabe. Was wäre denn ein guter ansatz bei so einem Fall? Hat jemand schonmal sowas ähnliches gemacht?
Bin für neue Ideen immer offen.

Danke
youfyouk

Also der Ansatz ist eigentlich richtig nur die Ausführung ist etwas daneben.

Ich würde mir einen FC schreiben der die Standardfunktionen abdeckt.
Dieser Baustein bekommt für die einzelnen Werkzeuge die Konfiguration über ein Datenwort. Die Funktionen des einzelnen Werkzeugs die nicht benötigt werden werden mit Dummy belegt.
Mit diesem Datenwort wird intern im FC gearbeitet und das Ergebnis am Ende in ein DW geschrieben.
Dann musst du dich um die Rangierung der E/A in einer extra Funktion kümmern und gut ist es.


bike
 
Zurück
Oben