-> Hier kostenlos registrieren
Hallo zusammen,
ich bin in dem Forum so neu, wie ich auch in der Automatisierungstechnik bin. Ich arbeite im Bereich des Maschinenbaus und habe durch einige Projekte immer wieder Schnittstellen mit der Automatisierungstechnik gehabt. Mit der Zeit hat sich mein Interesse in diesem Fachgebiet immer weiter ausgebaut, sodass ich nun selber angefangen habe mich ein bisschen in die Materie einzuarbeiten und das als kleines Hobby bzw. Lern-Projekt gerne fortführen würde.
Wie es mit dem Einstieg immer so ist, ich habe nach vielen Youtube-Videos und einigen Online-Lektüren nun versucht eine eigene Idee umzusetzen. Wie soll es aber anders sein, habe ich direkt ein Verständnisproblem, bei dem Ihr mir hoffentlich helfen könnt.
Ich möchte gerne eine Art-Zähler bauen. Als Veranschaulichung möchte ich dazu kurz folgendes Bild anführen:
- Es gibt 1...n Gefäße die befüllt werden sollen
- Auf einer Visualisierung möchte ich die Behälter aktivieren bzw. deaktivieren
- Ist ein Behälter aktiv, soll ein Ventil für x Sekunden öffnen, dann soll der nächste Behälter befüllt werden
- Ist ein Behälter nicht aktiv, dann soll direkt der nächste Behälter angefahren werden
- Ist der Behälter n erreicht, geht es von vorne los
Ich möchte dazu für jeden Behälter einen FB erstellen, den ich dann von Außen entsprechend beschalte:
I_Aktiv = Aktiv ja/nein?
I_Nummer = Nummer des Behälters
Max_Behälter = max. Behälter im System
IO_Counter = Zähler der alle ablaufen soll - entspricht der Zählerwert der Behälternummer, dann entweder befüllen, oder weiterlaufen
Der FB-Inhalt besteht aus 4 NW:
Netzwerk 1:
Wenn die aktuelle Nummer gleich dem Counter ist und der Behälter aktiv ist, dann wird das Ventil gesetzt und mit einer Durchschaltverzögerung eine 1 addiert, um den nächsten Behälter anzusprechen
Netzwerk 2+3:
Ist die aktuelle Nummer gleich dem Counter und der Behälter ist nicht aktiv, dann muss kein Timer laufen, sondern es soll direkt hochgezählt werden. Wenn die Nummer nicht dem Counter entspricht, kann das Ventil zudem geschlossen werden.
Netzwerk 4:
Auf die Max_Behälteranzahl 1 addieren und dann mit dem aktuellen Counter vergleichen. Ist der Counter größer oder gleich der (maximalen Anzahl+1) dann muss von vorne begonnen werden.
Das war es soweit - das funktioniert auch einwandfrei solange immer >= 2 Behälter aktiv sind. Welche sind dabei egal - es kann 1+3 aktiv sein, 1-4, 3+4, 2+3, etc. es funktioniert. Allerdings wenn nur 1 Behälter mit I_Aktiv = TRUE beschaltet ist, dann spinnt alles total rum und ich kann es mir nicht erklären. Es wird ja zyklisch abgearbeitet wird und durch die entsprechenden abfragen innerhalb des Bausteins mit I_Nummer = IO_Counter dürfte er nicht einfach irgendwelche Counter hochzählen, allerdings passiert genau das, wenn nur eine Messstelle aktiv ist.
Kann mir evtl. jemand einen Tipp geben, warum es bei einem aktiven Behälter nicht funktioniert und bei >=2 aktiven Behältern alles gut ist?
Für evtl. nicht eingehaltene Konventionen bei der Verschaltung entschuldige ich mich im Vorfeld Es ist mein erster kleiner Versuch (der mir bereits schon jetzt Probleme macht).
Vielen Dank!
Gruß!
ich bin in dem Forum so neu, wie ich auch in der Automatisierungstechnik bin. Ich arbeite im Bereich des Maschinenbaus und habe durch einige Projekte immer wieder Schnittstellen mit der Automatisierungstechnik gehabt. Mit der Zeit hat sich mein Interesse in diesem Fachgebiet immer weiter ausgebaut, sodass ich nun selber angefangen habe mich ein bisschen in die Materie einzuarbeiten und das als kleines Hobby bzw. Lern-Projekt gerne fortführen würde.
Wie es mit dem Einstieg immer so ist, ich habe nach vielen Youtube-Videos und einigen Online-Lektüren nun versucht eine eigene Idee umzusetzen. Wie soll es aber anders sein, habe ich direkt ein Verständnisproblem, bei dem Ihr mir hoffentlich helfen könnt.
Ich möchte gerne eine Art-Zähler bauen. Als Veranschaulichung möchte ich dazu kurz folgendes Bild anführen:
- Es gibt 1...n Gefäße die befüllt werden sollen
- Auf einer Visualisierung möchte ich die Behälter aktivieren bzw. deaktivieren
- Ist ein Behälter aktiv, soll ein Ventil für x Sekunden öffnen, dann soll der nächste Behälter befüllt werden
- Ist ein Behälter nicht aktiv, dann soll direkt der nächste Behälter angefahren werden
- Ist der Behälter n erreicht, geht es von vorne los
Ich möchte dazu für jeden Behälter einen FB erstellen, den ich dann von Außen entsprechend beschalte:
I_Aktiv = Aktiv ja/nein?
I_Nummer = Nummer des Behälters
Max_Behälter = max. Behälter im System
IO_Counter = Zähler der alle ablaufen soll - entspricht der Zählerwert der Behälternummer, dann entweder befüllen, oder weiterlaufen
Der FB-Inhalt besteht aus 4 NW:
Netzwerk 1:
Wenn die aktuelle Nummer gleich dem Counter ist und der Behälter aktiv ist, dann wird das Ventil gesetzt und mit einer Durchschaltverzögerung eine 1 addiert, um den nächsten Behälter anzusprechen
Netzwerk 2+3:
Ist die aktuelle Nummer gleich dem Counter und der Behälter ist nicht aktiv, dann muss kein Timer laufen, sondern es soll direkt hochgezählt werden. Wenn die Nummer nicht dem Counter entspricht, kann das Ventil zudem geschlossen werden.
Netzwerk 4:
Auf die Max_Behälteranzahl 1 addieren und dann mit dem aktuellen Counter vergleichen. Ist der Counter größer oder gleich der (maximalen Anzahl+1) dann muss von vorne begonnen werden.
Das war es soweit - das funktioniert auch einwandfrei solange immer >= 2 Behälter aktiv sind. Welche sind dabei egal - es kann 1+3 aktiv sein, 1-4, 3+4, 2+3, etc. es funktioniert. Allerdings wenn nur 1 Behälter mit I_Aktiv = TRUE beschaltet ist, dann spinnt alles total rum und ich kann es mir nicht erklären. Es wird ja zyklisch abgearbeitet wird und durch die entsprechenden abfragen innerhalb des Bausteins mit I_Nummer = IO_Counter dürfte er nicht einfach irgendwelche Counter hochzählen, allerdings passiert genau das, wenn nur eine Messstelle aktiv ist.
Kann mir evtl. jemand einen Tipp geben, warum es bei einem aktiven Behälter nicht funktioniert und bei >=2 aktiven Behältern alles gut ist?
Für evtl. nicht eingehaltene Konventionen bei der Verschaltung entschuldige ich mich im Vorfeld Es ist mein erster kleiner Versuch (der mir bereits schon jetzt Probleme macht).
Vielen Dank!
Gruß!
Zuletzt bearbeitet: