Ventilsteuerung mit Näherungsschaltern

Dr.Oetker

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich bin blutiger Anfänger und probiere mich gerade daran eine Ventilsteuerung zu programmieren.

Insgesamt sind es 4 Ventile und 8 Näherungsschalter die jeweils AUF bzw. ZU zurückgeben.

Ich hab jetzt ein Programm geschrieben welches soweit auch funktioniert aber ich kann mir nicht vorstellen, dass das auch so in der Praxis programmiert wird.

Prinzipiell beginnen die 4 Ventile mit einer bestimmten Grundstellung, nach 5min müssen sie eine bestimmte Stellung einnehmen (jedes Ventil wird nacheinander bis zur neuen Stellung angesteuert) nach 5min müssen sie dann genau rückwärts nacheinander wieder in die Grundstellung gebracht werden sie dürfen nur gestellt werden, wenn die Näherungsschalter die entsprechende AUF ZU Information liefern. Sollte dies nicht der Fall sein soll die Anlage auf Störung umspringen.

Jetzt zu meiner Frage:
Ich bin folgendermaßen vorgegangen:
Ich beginne mit der o.g. Grundstellung mit der Einnahme der Grundstellung fängt der erste Zähler das laufen an. Nach 5 min gibt er eine logische 1 raus und die Kette beginnt. Also er beginnt das erste Ventil zu schalten, wenn dieses zu ist dann gehts mit dem nächsten weiter u.s.w. wenn die Kette durchlaufen ist beginnt ein Zähler 2 zu zählen an, der wiederum stößt wieder einen Prozess an und die Ventile werden nacheinander wieder geschaltet mit dem Schalten des letzten Ventils beginnt wieder Zähler 1 zu laufen....

Das ganze passiert in einem Funktionsbaustein.

Viel lieber würde ich aber für jede Stellung einen Funktionsbaustein erstellen.

Also z.B. FC1 erste Stellung am Ende noch eine Kontrolle, ob wirklich alle Ventile in der richtigen Stellung sind.
ist diese Bedingung erfüllt soll der FC2 aufgerufen werden. Dort soll dann die zweite Stellung eingenommen werden wieder kontrolliert werden und dann soll wieder FC1 aufgerufen werden.

Wenn ich das so versuche zu programmieren geht die CPU sofort auf STOP.

Ich hoffe das sind jetzt nicht zu viele Informationen.

Vielleicht habt ihr eine Idee wie man das ganze möglichst einfach programmieren kann.

Dazu kommt noch das alles auch noch im "HAND" Betrieb geschaltet werden soll.

Vielen Dank euch allen
Ich kann meinen FC auch mal reinstellen allerdings ist der wie gesagt recht kompliziert ...weiß nicht ob das viel Sinn hat

Danke !!!!!!!!!!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Dr. Oetker,

jetzt erst einmal ein Paar gegenfrage:

Läuft ein Zähler oder eine Zeit? (Ich tippe auf Zeit)
Hast du einen FC (Funktion) oder einen FB (Funktionsbaustein)
programmiert?
Was für eine Diagnosemeldung kommt von der CPU wenn sie auf Stopp geht?


Also für jedes Ventil einen eigenen FC oder FB zu schreiben halte ich für übertrieben.
Eventuell könnte man die Grundstellungsdiagnose, die Schrittkette und die Ausgabe der Ausgänge in getrennte Bausteinen unterbringen.
Bei zu vielen Bausteinen wird es auch wieder unübersichtlich.

Den FC kannst du auf jeden Fall mal reinstellen.
Kann mir nicht vorstellen das er zu kompliziert ist.
 
Hallo Dr.Oetker,

ich programmiere Ventile mit 2 Endlagen immer mit einem FB, den ich als Multiinstanz in einem zum Ventil gehörenden FB aufrufe. Also bei bspw. 3 Ventilen gibt es den FB zum ansteuern des Ventils (FB120) und dann für jedes Ventil einen eigenen FB (FB1, FB2, FB3). Im FB1, FB2 und FB3 wird der FB120 aufgerufen. Dieser beinhaltet eine Hand/Automatik umschaltung (parametrierbar), weiterhin Eingänge für die Inis und auch eine dekativierbare Iniüberwachung, da ja nicht immer jedes Ventil zwingend für jede Endlage einen Ini hat.

Des weiteren muss der Baustein über einen Eingang freigegeben werden, damit ein Ausgang angesteuert werden kann. Für die Laufzeitüberwachung wird eine Zeit vorgegeben, welche startet und herunterzählt, bis der zu erwartende Ini (bei eingeschalteter Überwachung) meldet, dass die Endlage erreicht ist. Ansonsten generiert der Baustein eine Störmeldung.
Ich lasse den jeweiligen Ausgang für die Bewegung immer angesteuert, auch im Falle einer Störung, da diese Störmeldung bei einem Ventil meistens auf einen defekten Ini hindeutet.

Ich gebe dir mal die Schnittstellenbeschreibung zu dem FB120:

Code:
VAR_INPUT
  FREIGABE : BOOL ;    //Notwendige Freigabe um die Ventile anzusteuern
  AUTO : BOOL ;    //1=Automatikbetrieb aktiv / 0=Handbetrieb
  FRG_AS : BOOL ;    //Freigabe für die Bewegung in Arbeitsstellung (Nur beim Aktivieren notwendig)
  FRG_GS : BOOL ;    //Freigabe für die Bewegung in Grundstellung (Nur beim  Aktivieren notwendig)
  TAST_AS : BOOL ;    //Taster im Handbetrieb in Arbeitsstellung fahren (Bedienpult)
  TAST_GS : BOOL ;    //Taster im Handbetrieb in Grundstellung fahren (Bedienpult)
  TAST_LT : BOOL ;    //Taster Lampentest (Bedienpult)
  INIT_AS : BOOL ;    //Initiator für Arbeitsstellung erreicht
  INIT_GS : BOOL ;    //Initiator für Grundstellung erreicht
  INIT_AS_AKTIV : BOOL ;    //Aktivierung der Überwachung des INIT_AS
  INIT_GS_AKTIV : BOOL ;    //Aktivierung der Überwachung des INIT_GS
  AUTO_AS : BOOL ;    //Ansteuerung für Autobetrieb Arbeitsstellung SELBSTHALTEND
  AUTO_GS : BOOL ;    //Ansteuerung für Autobetrieb Grundstellung SELBSTHALTEND
  QUIT : BOOL ;    //Quittierung von Störmeldung
  ANLAUF : BOOL ;    //Anlaufmerker(Rücksetzer): Soll bei Neustart für einen Zyklus gesetzt werden
  _10Hz : BOOL ;    //Taktmerker 10Hz [0,1s]
  LM_BLINKER_1 : BOOL ;    //Taktmerker für Meldeleuchten
  SELBSTHALTUNG_AKTIV : BOOL ;    //Selbsthaltung der TAST_AS und TAST_GS Aktivieren
  LAUFZEIT : TIME ;    //Laufzeitüberwachung in 0,1s. Nur Aktiv wenn die entsprechenden INIT_AS/GS_Aktiv
  SELBSTHALTUNG : TIME ;    //Verzögerung für Selbsthaltung in 0,1s. Nur Aktiv wenn Selbsthaltung_Aktiv=1
END_VAR
VAR_OUTPUT
  AUTO_ML : BOOL ;    //Automatikbetrieb aktiv
  LAMP_AUTO_ML : BOOL ;    //ML Automatikbetrieb aktiv
  LAMP_AS : BOOL ;    //ML Arbeitstellung: Blinkt beim Anfahren Leuchtet wenn Position erreicht(INI)
  LAMP_GS : BOOL ;    //ML Grundstellung: Blinkt beim Anfahren Leuchtet wenn Position erreicht(INI)
  VENT_AS : BOOL ;    //Ventil für Arbeitsstellung aktivieren = 1                   
  VENT_GS : BOOL ;    //Ventil für Grundstellung aktivieren = 1                      
  STM : BOOL ;    //Endlagenstörung
  VISU_Y_AS : BOOL ;    //Ventil Ansteuerung Bewegung Arbeitsstellung für VISU
  VISU_Y_GS : BOOL ;    //Ventil Ansteuerung Bewegung Grundstellung für VISU
  VISU_B_AS : BOOL ;    //Ventil Endlage Arbeitsstellung angefahren für VISU
  VISU_B_GS : BOOL ;    //Ventil Endlage Grundstellung angefahren für VISU
  VISU_STM : BOOL ;    //Ventil Störung Allgemein für Farbumschlag für VISU

Hoffe ich konnte dir etwas weiterhelfen.
 
Ich machs mal ganz kurz.

Zuerst suche mal hier im Forum mit dem Stichwort "Schrittketten".

Ich programmiere i.A. wie folgt.
Automatikabläufe in einer Schrittkette. Dazu habe ich einen eigenen Baustein, der die Schrittkettenweiterschaltung, Fehlerbehandlung, Automatik- Stepbetrieb etc. abhandelt. Die Schrittkette gibt in einem Schritt, wenn nötig ein Signal für einen Aktor aus und kontrolliert als Weiterschaltbedingung z.Bsp. die Endlagen dieses Aktors. Für Aktoren habe ich wiederum eigenen Bausteine, z.Bsp. für Monostabile Ventile, Bistabile Ventile, Motore, Rundtakttische etc. Diese Bausteine haben, neben einigen anderen, folgende Hauptinputs:

Automatik
Hand
Grundstellungsfahrt
Freigabe
Auto/Step Aktor in Arbeitsstellung
Auto/Step Aktor in Grundstellung
Hand Aktor in Arbeitsstellung
Hand Aktor in Grundstellung

Je nach Anwahl der Betriebsart wirken so entweder die Auto/Step-Inputs oder die Hand-Inputs.
 
Wie schon von Ralle geschrieben am besten mal nach Schrittkette suchen.

Ach dem rest den Ralle geschrieben hat würde ich so absolut zusteimmen.

Für die Schrittkette solltest du einen FB und keinen FC verwenden, da bei der Schrittkette Zustände über die Bausteinbearbeitung hinaus gespeichert werden müssen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab da mal was runtergetippelt, was in etwa das macht was Du brauchst.
Störungen werden keine abgefangen, lässt sich aber einfach durch rücksetzen der M1.0 und M2.0 realisieren.


lG
Karl
 

Anhänge

  • FC1.pdf
    11,1 KB · Aufrufe: 159
Vielen Dank borromeus,

das sieht ja mal recht "simpel" aus. Werde ich morgen gleich mal ausprobieren.

Im Moment quäle ich mich mit Theorie. Was sind DB´s wozu brauche ich die was sind Schrittketten bzw. Ablaufsteuerungen.

Habt ihr evtl. Vorschläge für gute Übungsbücher mit Lösungen ?

Danke !!!!!!!!!!!
 
Deine Aufgabe könnte ich mit unseren standard FCs aus der Firma locker schnell runterschreiben, auch ohne Schrittkette. Aber für dich ist es sicherlich besser mit einer Schrittkette zu arbeiten.

Als Übungsbücher würde ich empfehlen:
Vogel Fachbuch
Jürgen Kaftan

SPS-Grundkurs mit SIMATIC S7
ISBN 3-8023-1986-9

SPS-Aufbaukurs mit SIMATIC S7
ISBN 3-8023-1941-9

Mir haben die Bücher für den Anfang viel gebracht.
Das richtige Programmieren lernt man in der Praxis.

Gruß Jan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jop, ACK...

was schön ist, ist dass Du quasi schon in Schrittkette denkst. Vllt ist aus Wikipedia was für Dich:

<http://de.wikipedia.org/wiki/Schrittkette>

ansonsten:
Welcome und viel Spass

Greetz, Tom
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wenn du was zum Üben suchst.. Programmier doch einfach mal alltägliches... wie z.B eine Ampel.. da brauchst keine großartigen Aufbauten oder Simulationen. Ne kleien CPU mit 8 Ausgängen tuts da auch.

Das Beispiel ist glaub ich auch in der Siemens Fibel

_______I___________
_ _ _ _ _ _ o-o _ _ _
__o-o__I___________

Einfach eine Straße und ein Füßgängerübergang mit Ampel

Also 2x 3 Leuchten für die Autofahrer (Rot - gelb - grün)
und 2x 2 Leuchten für die Füßgänger (Rot - grün)
dazu 2x Anforderungstaste

und den Ablauf kennste hoffentlich xD Er ist natürlich 100 mal ausbaufähig daher finde ich es eine gute übung.
 
Zurück
Oben