Problem mit Stern-Dreieck-Anlauf

Mätty84

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

zur Zeit beschäftige ich mich etwas näher mit Simatic S7. Nun wollte ich einen Funktionsbaustein programmieren, mit dem man einen Stern-Dreick-Anlauf von Motoren realisieren kann.
Der Baustein soll 3 Eingänge (Einschalten, Ausschalten, Zeitwert) und 3 Ausgänge (Netzschütz, Sternschütz, Dreieckschütz) haben.
Diesen Baustein hab ich programmiert, und wenn er nur einmal aufgerufen wird, klappt es super, nur wenn er für 2 verschiedene Motoren mit unterschiedlichen Anlaufzeiten aufgerufen wird, wird nur die längere Zeit bearbeitet und der Motor 1 schaltet erst um, wenn auch Motor 2 umschaltet.

Zur Verdeutlichung hab ich einen Screenshot drangehänt (links FC1, welcher den FB10 zweimal aufruft, einmal mit DB10 und einmal mit DB20, und rechts der ausprogrammierte FB10).


Ich vermute, dass das Problem am "T1" im FB10 liegt, finde aber keine Lösung, dieser Timer müsste ja "lokal" verwendet werden, so dass sich die beiden aufgerufenen DBs nicht stören.

Könnt ihr mir bitte einen Tipp geben, wie man das programmiert, dass jeder Motor ungehindert vom anderen anläuft?

Danke!
 
Na klar liegt es an dem Timer- richtig erkannt- Du musst den Timer aussen beim FB- Aufruf beschalten und im FB dann die Variable verwenden wie der FB- Eingang des Timer heisst.
Alternativ kannst Du einen Software Timer verwenden zB TON.
 
Meinst du das ungefähr so:

Aber trotzdem würde es mir besser gefallen, wenn ich den FB einen Zeitwert einspeisen könnte, nicht nur ein BOOL. Die zweite Möglichkeit, die du erklärt hast, kapier ich noch nicht, so tief häng ich noch nicht drin ;-)
 
man kann auch einfach díe "timernummer"(T1, T2, Tn) als variable in den baustein übergeben und die zeit gibts du dann so rein wie gehabt
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, nicht ganz, habe gerade kein S7 da...
Im FB deklarierst Du eine Variable zB "Zeit", Typ Timer.
So wie Du die anderen Variablen definert hast.

Diese Variable "Zeit" nimmst Du statt T1 in Deinem ursprünglichen Programm.

Dort wo Du dann den FB aufrufst, schreibst Du beim ersten Aufruf T1 hin beim zweiten Aufruf T2 usw.....
Wirst sehen ist ganz easy...
 
Zurück
Oben