S7 1200 - Perfekte Rollosteuerung

of-1986

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

habe mehrere Themen über die Rollosteuerung im Forum gelesen aber leider das was ich suche ich nicht dabei.

Und zwar meine Aufgabe ist es eine Rollost. mit einer S7 1200+erweiterungkarten zu realisieren , habe vor das ganze sehr einfach und übersichtlich zu programmieren(Objektorientiert OB-FC-FB)
Also einen FB für die Fenster-Rollos und einen für die Türen-Rollos und dann im FC immer den gleichen FB aufrufen und die Eingänge/Ausgänge vom anderen Fenster anhängen.

ADU-Umsetzung ist bereits abgeschlossen( Lese die Aussentemp sowie die Helligkeit und steuere die Südfront, mache eine Zeitabfrage für die Funktion alles AUF und am abend ALLES zu)

Je Stockwerk mache ich einen Zentrall AUF/Zu Taster falls man manuel Steuern will, unabhängig von der Zeit/Temepratur oder Helligkeit.

Meine Frage an euch ist es: gibt es in beim TIA Portal einen TOF/TP den ich aus Rücksetzen kann z.B. mit einem Tasterdruck fährt die Rollo 20s runter und mit einem anderen Tastendruck möchte ich die Rollo stoppen können (bei der LOGO gab es so was), vor richtungsumkehr möchte ich 5ms warten also alle sicherheitseinrichtungen damit der Motor ja nicht in beide Richtungen angesteuert wird.

Habe euch das Anfangs Bsp von mit angefüht, nun fehlt da noch einiges , weiß nicht wie weiter, vl. könnt ich mir da ein wenig weiter helfen:

Vielen Dank im Voraus!
mfg

Rollo_bsp.JPG
 
Einen laufenden TOF kann man nur zurücksetzen indem man die Instanzdaten des Timer überschreibt.
Dazu müsste man im folgenden Netzwerk die Instanzvariable PT des Timers beim Reset auf T#0ms setzen. Ich würde mir diese Funktionalität in einem eigenen Timer-FB mit einem entsprechenden Reset Eingang packen. In dem Timer-FB ist der TOF dann ein Multiinstanz-Timer, also eine Variable im Static-Bereich.
 
Du legst einen neuen FB an, der die Funktionalität des TOF um die gewünschte Rücksetz-Funktion erweitert. Vom Prinzip her so wie auf angehängten Screenshot.
Anstelle des TOF verwendest du dann in deinem Programm deinen selbstgeschriebenen Timer.
TIA-TON-R-Timer.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe das genau so gemacht, es funz. , Danke!

Nun habe ich jetzt folgendes Problem, und zwar will ich nicht direkt umschalten können , sondern ich will auch zwischendurch die Fenster während der Fahr nach unten oder oben in der Mitte stoppen können.
Die Gegenveriegelung habe ich gemacht nur muss ich die Stop-funktion auch machen, habe schon probiert, leider ..., du einn Vorschlag für mich...
Ich füge dir mal meine Netzwerke..

TON-R.JPGTON-AUF-ZU.JPG
 
nur eines habe ich noch...

habe wir gesagt den einen FB geschrieben wo der Timer verpackt ist, den gleichen FB habe ich 2 mal für 2 verschiede Fenster ( also 2 FC aufgerufen) , es werden die Ausgänge gemeinsam geschalten, egal welcher Eingang von den beiden FC´s da ist werden beide Ausgänge vom FB geschalten.., habe ich da was falsch gemacht?? anbei die Grafik..

FC Aufruf im OB1.JPGerste FB Aufruf im FC.JPGzweite FB Aufruf im FC.JPG

Danke!
 
Du rufst in dem "Fenster-FC" den FB85 mit Instanz-DB auf, das geht bei mehrmaligem Aufruf des FC schief.
Du musst aus dem "Fenster-FC" einen FB machen und in diesem den FB85 als Multiinstanz aufrufen.
Gruß
Erich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Sorry da komme ich nicht ganz mit, wenn ich das richtig verstehe ich muss aus meinem FC einen FB machen(neuen FB machen und darin den FC aufrufen)?
Wie komme ich auf den FB85 , muss ich den erstellen und wie komme zur Miltiinstanz.

Meine bitte an dich wäre mein Projekt zu öffnen und das anzupassen, ansonten werden wir ewig herum schreiben :)
Danke
 

Anhänge

  • Jalousiesteuerung_SF_V1.0.rar
    1,8 KB · Aufrufe: 57
... wenn ich das richtig verstehe ich muss aus meinem FC einen FB machen(neuen FB machen und darin den FC aufrufen)?
Nein, aus dem "Fenster-FC" einen "Fenster-FB" machen und den dann 2-mal aufrufen.
In dem "Fenster-FB" den FB85 nicht mit den Instanzbausteinen DB17 und DB18 aufrufen sondern als Multiinstanz.
Wie komme ich auf den FB85 , muss ich den erstellen und wie komme zur Miltiinstanz.

Meine bitte an dich wäre mein Projekt zu öffnen und das anzupassen, ansonten werden wir ewig herum schreiben :)
Danke
Dein Projekt kann ich nicht öffnen, da ich die erforderliche Software nicht besitze.
Meine Bitte an Dich wäre, Dich mal zu informieren, was eine Multiinstanz ist, zumal Du schon eine benutzt hast ohne es zu merken.
Gruß
Erich
 
Hallo,

das mit dem Muliinstanz habe ich mit Simatic Manager gemacht aber nie mit TIA, habe es mitlerweile schon erledigt.Habe einen Multiinstanz FB geschrieben den ich dann für jedes Fenster aufrufen kann, Timer funz. und alles.
Danke für deine Info!

Jetzt habe ich eine Frage bzw. bitte an euch und zwar möchte ich vom Wohnzimmer eine Funktion programmieren wenn einer von die 5 Wohnzimmer Taster AUF/ZU für 2s gedrückt bleibt das alle 5 Stk Wohnzimmer Rollos zu oder auf gehen.
Kann ich das in meinem bereits programmierten FB machen oder soll einen neuen FB machen wo ich gewisse Taster auf den 2s druck überprüfe und dann einfach beim bestehen FB einen Eingang zB #taster lang auf, #taster lang zu anschließen(natürlich nur bei den Fenster wo ich es benötige)
Was für mich das schwere ist, dass ich verschieden Taster je Zimmer abfragen muss und dann den jeweiligen Fenster zuteilen...

Bitte um kurze Hilfe,

Danke!

Mein bereits programmierter Mutiinstanz FB:
Fenster_Küche.JPG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man die Zuordnung Taster und Rollos mehr oder weniger frei konfigurierbar haben möchte, würde ich das Konzept Taster&Rollos umstellen.

Ich würde den Programmaufbau so ändern dass Objekte gibt die Befehls-Sender sind, und welche die Befehls-Empfänger sind.
Befehls-Sender sind z.B. Taster, Windsensoren, Helligkeitssensoren etc.
Befehls-Empfänger sind z.B. Rollos, Lichtfunktionen.


Wird ein Taster (Befehls-Sender) gedrückt, so teilt er einer Befehls-Warteschlange mit dass er gedrückt wurde.
Je nach Konfiguration des Rollo-Objektes (Befehls-Empfänger) reagieren diese dann auf den Befehl des Tasters.

Dazu muss jeder Befehls-Sender eine eindeutige ID in Form eines Integer Wertes bekommen.
1: Taster Küche
2: Taster Wohnzimmer 1
3: Taster Wohnzimmer 2
usw.

Dann kann der Taster verschiedene Befehle besitzen, z.B. kurz klick, lang, gedrückt gehalten etc. Diese Befehls-Typen bekommen ebenfalls eine ID:
1: kurz
2: lang
usw.

Ein Tastendruck wird dann in eine globale Befehls-Warteschlange (CmdQueue) eingereiht. In diese Warteschlange kommt dann die Sender-ID und der Befehls-Typ:
STRUCT:
ID : INT; // Sender-ID
TYP : INT; // Typ des Befehls (1=klick kurz,2=lang gedrückt,...)
END_STRUCT

Der Taster-FB bekommt als Eingang seine Sender-ID als Integer-Wert, und als In-Out Variable die Befehlswarteschlange.
Im Taster-FB werden die Taster Eingänge ausgewertet (ob kurz, ob lang, etc.). Steht ein Befehl an trägt er den Befehl in die Befehlswarteschlange ein.


Die Rollo-FBs bekommen als Eingang die Befehlswarteschlange zur Verfügung gestellt.
Der Rollo-FB muss nun noch konfiguriert werden auf welche Sender-ID er mit welcher Funktion reagieren soll.
STRUCT:
SENDER_ID : INT; // ID des Befehls-Senders
TYP : INT;// Typ des Befehls (1=kurz,2=lang,...)
REAKTION : INT;// Reaktion des Rollos (1=auf, 2=zu, 3=stop etc.)
END_STRUCT

Wenn ein Rollo auf mehrere Befehls-Sender reagieren können soll, macht man sich ein entsprechendes Array für beispielsweise 10 Stück.
Der Rollo-FB 'guckt' nun in der Befehls-Warteschlange ob dort ein Befehl ansteht welcher mit seinem Konfigurations-Datensatz übereinstimmt, und führt
die dort hinterlegte Funktion aus.


Wenn man nach diesem Schema vorgeht, programmierst du unabhängig voneinander deine Befehls-Sender (also Taster usw.) und deine Befehlsempfänger (Rollos, Licht und was auch immer).
Die Verschaltung wird nachher nur noch parametriert, und kann z.B. über ein Bedienpanel flexibel geändert werden.

Mag zwar auf den ersten Blick etwas kompliziert aussehen und von der Programmierung her aufwändiger sein als die 'klassische' Variante, dafür hat man aber die größte Flexibilität bei der Verschaltung von Funktionen.
 
Hallo,

Deine Idee ist sehr gut, muss ich sagen, nur kann ich es jetz nicht ändern und Zeit habe ich auch keine, leider.

Ich habe nicht so viele Befehls-TAster.
ICh habe je Fenster einen Taster AUF/ZU , einen Zentrall AUF/ZU je Stockwerk(EG,OG), Helligkeit,Temperatur,Uhrzeit lese ich genauso ein, zweks automatischer AUF/ZU machen in der Früh/Abend oder ABschatung.

Jetzt benötige ich eben nur diese eine Funktion das ich zB im Wohnzimmer 5 Taster anlegen kann und wenn ich einen von die 5 Taster 2s lang drucke das alle Wohnzimmer Fenster AUF/ZU gehen, wie kann ich das am besten machen einen eigene FB für diese TAster die die FUnktion haben sollen anlegen und dan an den FB von denjedigen Fenster als eingang anhängen.

Bitte um kurze Unterstützung!
Danke und LG!
 
Hallo,
Jetzt benötige ich eben nur diese eine Funktion das ich zB im Wohnzimmer 5 Taster anlegen kann und wenn ich einen von die 5 Taster 2s lang drucke das alle Wohnzimmer Fenster AUF/ZU gehen, wie kann ich das am besten machen einen eigene FB für diese TAster die die FUnktion haben sollen anlegen und dan an den FB von denjedigen Fenster als eingang anhängen.
Taster Flanke Positiv --> Impulszeit starten
Taster Flanke Negativ -->abfragen ob Zeit noch läuft. -->Ja= normaler Tastendruck
NEIN = Taster länger als 2 sec gedrückt -->Bit setzen das alle fünf Fenster aktiviert.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Paul,

Zeitabfrage bzw. normalwer Tastendruck oder 2s Tastendruck ist kein Problem, das weiss ich schon wie ich es mache.
Meine Fage ist es wie ich von 5 verschiedenen Taster die Funktion ALLES AUF/ZU für 5 Wohnzimmer Rollos zuordnen kann, das ist das schwere in meine Augen.
Soll ich einen eingenen Muliinstanz FB machen und dann in den jeweiligen FB des Fensters den Eingan zB Tastendruck lang anlegen und dort dann anschließen??

Meine Vorschlage wie ich das lösen könnte:

ich Frage 5 Taster auf einen 2s Tastendruck ab, wenn ja deklariere ich mich eine statische Variable mit #Lang_Tastendruck_AUF
den #Lang_Tastendruck_AUF Eingang schließe ich bei meinen FB von alle Fenster die ich im WZ AUF/ZU machen will, die Fenster die ich mit den #Lang_Tastendruck_A nicht schalten will schieße ich einfach nichts an..

Was sagt ihr dazu??
Danke und LG
 
Na klar wie denn sonst

oder
#Taste1_lang
oder
#Taste2_lang
oder
...
...
Ist
#Sammel_Lang

#Sammel_Lang dann dort abfragen wo es wirken soll
 
Zurück
Oben