# Magnetventil ansteuerung



## Ensi (27 Juli 2020)

Guten Abend die Herren und Damen. Mein erster Beitrag und es wird ein Riesen Text. Ich bin gerade an meiner Diplomarbeit dran und werde eine Halbautomatische Befüllungsanlage für Ölkartuschen bauen. Die Anlage besteht aus 20 Ventilen die direkt angesteuert werden, HMI und einer Ölpumpe. 4 verschieden Füllmengen wird es bzw. muss es geben. Eigentlich recht simpel. 
  Beim erst einschalten der Anlage macht es eine Art Spülvorgang. Dabei schaltet zuerst die Ölpumpe ein, nach einer gewissen Zeit öffnen die Ventile damit alle Leitungen schon vorweg mit Öl gefüllt sind. 

  Die Ventile, je nachdem wie gleichmäßig das Öl sich verteilt, schließen entweder alle gleichzeitig oder werden über ein Timer nacheinander geschlossen. Mit dem sollte verhindert werden das Zuviel Öl flöten geht. Die Ölpumpe ist nach dem Schließen der Ventile noch für ein zwei Sekunden länger eingeschaltet. Bis hier hin habe ich das glaub ich ziemlich gut gelöst. Wieso Timer? Weil Durchflusszähler einfach zu Teuer waren für das Budget. 

  Jetzt geht es um das Befüllen der Ölkartuschen. Über ein HMI Startet man die Befüllung. Wenn Sicherheitskreis OK ist, wird ein, so habe ich das bis jetzt gelöst, Merker gesetzt. Mit dem Merker und der Freigabe der Sensoren wird ebenfalls ein Impuls-Timer gestartet der das Ventil für eine gewisse Zeit öffnet.
  Der Impuls_Timer werden benötigt da ich, wie oben genannt, keine Durchflusszähler habe und über das HMI Offset Einstellung möglich sein muss falls irgendeine, wieso auch immer, nicht mit genug Öl befüllt wurde. Wenn hier ne andere Möglichkeit gibt bin ich da auch offen. 

  Jetzt zu meiner eigentlichen Frage. Ich habe 20 Ventile und somit 20 Timer, 20 individuelle Zeiten je nachdem. Und das mal 4. Gibt es da eine Möglichkeit ein FB zu erstellen die dann. je nach Auswahl auf der HMI die richtigen Zeiten einliest? Und hat jemand eventuell eine Idee wie ich das lösen könnte das auch hier die Ölpumpe am ende noch für 2 Sekunden eingeschaltet bleibt nachdem alle Ventile geschlossen wurde? Es ist übrigens keine Voraussetzung das immer alle 20 Plätze auch belegt sind. Wen der Bediener lustig ist belegt er Platz 3,7,15 und 18 und startet die Befüllung.

  Im Anhang sind mal Bilder von dem was ich bisher so habe. Eigentlich nichts. Bin die ganze Zeit eher am Probieren :smile:. Ach ja. Und wie man sieht ist die Sprache FUP. Dachte ist bestimmter einfacher auch wenn ich SCL eigentlich viel besser finde. Aber da fehlt erst recht die übung. 

  PS: Ich Programmiere viel zu wenig. Studiere Automation aber arbeite noch in der Instandhaltung. Außerdem. Schon mal vielen Dank im Voraus für das durchlesen und das antworten

[FONT=&quot]Edit: Zu den Bildern. Das was im Tia zu sehen ist war ein versuch die Zeiten zu addieren. Der TON hat somit automatisch die gesamte Öffnungszeit der Ventile. Danach setzt es den Merker zurück. Merke aber gerade das mir dies herzlichst wenig hilft dabei mein Motor länger eingeschaltet zu lassen xD.[/FONT]


----------



## Thomas_v2.1 (31 Juli 2020)

Ich tue mich etwas schwer damit, die eigentliche Frage aus deinem Text zu extrahieren.

Es gibt sozusagen 4 verschiedene Programme (Füllmengen), zu denen am HMI für jedes Programm entsprechende Zeiten einstellbar sind?

So aus dem Bauch heraus würde ich sagen, erstelle dir ein UDT mit dem zu einem Programm zugehörigen Parametern. Dann ein Array [1..4] of UDT deren Daten am HMI einstellbar sind. Dann kannst du mit der vorgewählten Programmnummer mit Daten[ProgrammNr] auf die Daten zugreifen, oder in einen Arbeits-Bereich umkopieren.


----------



## Captain Future (3 August 2020)

Warum machst Du nicht ein Rezept im HMI für 20 Platze und deine 4 oder mehr Programme ??
Was für eine Hardware hat Du dir für deine Diplomarbeit ausgesucht ?


----------



## Frame (1 September 2020)

Ich gehe mal davon aus, dass deine Füllmengen und Zeiten im HMI einstellbar sind? Oder sind es 4 Parametersätze die fest sind? 
Wie auch immer spielt eigentlich keine Rolle: vielleicht kannst du dir ja die Parametersätze irgendwo fest hinterlegen und diese dann über einen Button "Parametersatz1" (...2,...3,...4, usw) in die entsprechenden Werte in die Variablen deines Programms schreiben? Dann könnte der Bediener auswählen welche Füllmenge er will, drückt auf start und los.


----------

