Tasten für Rolladensteuerung: Verzweiflung !

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich baue mir gerade eine Haussteuerung mit einer S7-312C und versuche mir für die Rolladen folgende Ansteuerung zusammen zu bauen:

Taster 1: Rollo Rauf
Taster 2: Rollo Runter

Wird einer der Taster betätigt startet das Rollo für eine bestimmte Laufzeit z.B. 25sec in diese Richtung. Wird während der Laufzeit einer der Taster betätigt soll das Rollo stoppen. Danach ist wieder alles beim Alten.
Da das Rollo über zwei Relais angesteuert wird 1xPower und 1xRauf/Runter sollten die Relais zwar gleichzeitig einschalten aber möglichst zuerst das Power Relais ausschalten und z.b. 100msec später das Rauf/Runter Relais.
Ach ja und zu guter letzt sollte die Position des Rollos gespeichert werden, Oben/Mitte/Unten, wurde die vorgegebene Laufzeit beendet so ist das Rollo Oben wenn nach oben lief, entsprechend für Unten. Die Mitte ist immer bei einer Unterbrechung durch einen weiteren Tastendruck.

Ich habe alle zu verwendenden Merker / Zeiten / Eingänge in einem Datenbaustein pro Rollo abgelegt. Vom Prinzip her funktioniert auch alles schon ganz gut, aber die verzögerte Ausschaltung des Rauf/Runter Relais nach dem Power Relais kriege ich nicht hin und ich weiß nicht ob das was ich da geschrieben habe nicht ggf. was zu kompliziert ist.

Falls sich irgendeiner von Euch langeweilen sollte ;-) und eine Herausforderung sucht :shock:, wäre es echt toll wenn Er/Sie mir hier einen Tip geben könnte.

Besten Dank !

Hier meine geistigen Ergüsse....


VAR_INPUT
DB_Device : WORD ; //Device Nummer
END_VAR
VAR_OUTPUT
Aus_RaufRunter : BOOL ; //Ausgang Rauf / Runter
Aus_Power : BOOL ; //Ausgang Power
END_VAR
VAR_TEMP
DB_Device_Temp : WORD ;
TimerNr : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =Bestimmen des Device Bereiches
//Durch die übergebenen Device und Offset Parameter wird der zuverwendende
//Datenbaustein (DB_Device) und die Position im Datenbaustein (DB_Offset)
//bestimmt. Der Offset bestimmt somit die Array Position im Datenbaustein.
L #DB_Device;
T #DB_Device_Temp;
LAR1 P#0.0; // Zeiger mit Null in Adressregister laden

AUF DB [#DB_Device_Temp];
NETWORK
TITLE =Aufsetzten des Timer Merker

L DBW [AR1,P#2.0]; // Lade die Nummer des zu verwendenden Timers
T #TimerNr; // Transferiere die TimerNr in temp. MW
NETWORK
TITLE =Neustart nach zweitem Tastendruck verhindern
//Wurde zuvor durch einen zweiten Tastendruck oder durch Ablauf der Zeit
//abgebrochen, wird hier der Abbruchmerker zurückgesetzt
O( ;
O DBX [AR1,P#1.1]; // Taster rauf
O DBX [AR1,P#1.2]; // Taster runter
) ;
UN T [#TimerNr];
FN DBX [AR1,P#0.3];
R DBX [AR1,P#0.0];
NETWORK
TITLE =Erst nach fallender Flanke der Taste Up oder Down freigeben
//Nach dem Loslassen der Up oder Downtaste wird über den Merker (M2.0) angezeigt,
//dass der Motor gestartet wurde und die Funktion durch einen zweiten Tastendruck
//abbgebrochen werden kann
U( ;
O DBX [AR1,P#1.1];
O DBX [AR1,P#1.2];
) ;
UN DBX [AR1,P#0.0];
FN DBX [AR1,P#0.4];
S DBX [AR1,P#0.1];

NETWORK
TITLE =Bei erstem Tastendruck Zeit starten
//Mit dem ersten Tastendruck wird die Zeit gestartet
L DBW [AR1,P#18.0]; // Zeit die das Rollo laufen soll im Uhrzeit gesteuerten
O( ; // Modus kann diese kürzer als die maximale Laufzeit sein
O DBX [AR1,P#1.1]; // wird aber anschliessend auf maximale Laufzeit zurück-
O DBX [AR1,P#1.2]; // gesetzt
) ;
UN T [#TimerNr];
UN DBX [AR1,P#0.1];
SV T [#TimerNr];

L DBW [AR1,P#16.0]; // Laufzeit wieder auf maximale Laufzeit zurücksetzen
T DBW [AR1,P#18.0];
NETWORK
TITLE =Rechts oder Links
//Prüfen welche Taste betätigt wurde und entscheiden ob das Rauf / Runter Relais
//benötigt wird
U DBX [AR1,P#1.2]; // Taste Runter
UN DBX [AR1,P#1.1]; // Taste Rauf
U T [#TimerNr];
UN DBX [AR1,P#0.0];
UN #Aus_Power;
S #Aus_RaufRunter;
NETWORK
TITLE =Spannung An
//Bei Tastendruck Spannung an Motor anlegen
U( ;
U DBX [AR1,P#1.1];
UN DBX [AR1,P#1.2];
O( ;
UN DBX [AR1,P#1.1];
U DBX [AR1,P#1.2];
) ;
) ;
U T [#TimerNr];
UN DBX [AR1,P#0.0];
S #Aus_Power;
NETWORK
TITLE =Abbrechen beim zweiten Tastendruck
//Wenn der Merker (M2.0) gesetzt ist läuft der Motor und die Aktion kann durch
//einen zweiten Tastendruck beendet werden

O( ;
O DBX [AR1,P#1.1];
O DBX [AR1,P#1.2];
) ;
U DBX [AR1,P#0.1];
FP DBX [AR1,P#0.5]; //"FPStop"
S DBX [AR1,P#0.0];
NETWORK
TITLE =Abrechen wenn Zeit abgelaufen oder beim zweiten Tastendruck
//Hier wird die laufende Aktion abgebrochen wenn die Zeit abgelaufen oder ein
//zweites mal eine Taste (M2.1) gedrückt wurde. Die Position des Rollade wird
//duch
//3 Merker angezeigt. Wurde nicht durch einen Tastendruck abbgebrochen,
//entscheidet der Rechts_Links Ausgang über die Position. Bei einem Abbruch ist
//die Position nicht definiert (Mitte).
UN T [#TimerNr]; // wenn Zeit abgelaufen prüfen wo das Rollo steht
FP DBX [AR1,P#0.6];
S DBX [AR1,P#0.2];

U DBX [AR1,P#0.2];
U #Aus_RaufRunter; // Unten
R DBX [AR1,P#20.0]; // Rollo oben
R DBX [AR1,P#20.1]; // Rollo mitte
S DBX [AR1,P#20.2]; // Rollo unten
SPB ende;

U DBX [AR1,P#0.2];
UN #Aus_RaufRunter; // Oben
S DBX [AR1,P#20.0];
R DBX [AR1,P#20.1];
R DBX [AR1,P#20.2];
SPB ende;


U DBX [AR1,P#0.0]; // Bei zweitem Tastendruck innerhalb T0 -> Zustand unbekannt
R DBX [AR1,P#20.0];
S DBX [AR1,P#20.1];
R DBX [AR1,P#20.2];


ende: NOP 0; // alles in den Grundzustand zurücksetzen
R T [#TimerNr];
R #Aus_Power;
R #Aus_RaufRunter;
R DBX [AR1,P#0.1];
R DBX [AR1,P#0.2];
END_FUNCTION
 
Hallo
Da ich selber auch eine Haussteuerung mit einer S7-300 realisiert habe, gebe ich dir gerne meine Erfahrungen weiter.

Hardware:
- Ich habe Storen mit Lamellen eingesetzt.
- Meine Storen haben einen relativ grossen Anlaufstrom. Etwa 9x Nennstrom. Darum habe ich für die Ansteuerung ein 16A Relais mit zwei Kontakten eingesetzt und diese parallel geschaltet. (Nach 5 Jahren musste ich im ganzen Haus noch kein Relais austauschen)
- Für jede Store habe ich zwei Relais eingesetzt. Relais 1 für Store auf und Relais 2 für Store ab. (ganz schliessen)
- Es gibt auch Storen mit drei Position. 1x oben, 1x unten ganz geschlossen und 1x unten in der Schrägstellung. Bei diesen Storen werden drei Relais für die Ansteuerung benötigt. Um dieses dritte Relais einzusparen, bringe ich die Store mit der Software auf die Position unten in Schrägstellung.
- Es gibt Storen die fahren von oben nach unten mit schrägen Lamellen und es gibt welche, die fahren mit geschlossenen Lamellen nach unten.
- Im Winter besteht die Gefahr, dass je nach Witterung, die Lamellen durch vereisen zusammenkleben. An solchen Tagen fahre ich die Store automatisch nach den Schliessen mit einem kurzen Impuls nach oben. Dadurch entsteht ein kleiner Spalt, der die Vereisgefahr reduziert.

Software:
- Ich habe eine generelle Umschaltverzögerung zwischen den Relais auf und ab programmiert. Somit werden diese nicht zu stark belastet.
- Das Oeffnen und Schliessen läuft nicht direkt über einen Timer, sondern indirekt über eine virtuelle Position. Wenn die Store nach unten fährt, läuft dieser Wert im 100ms Takt nach oben. Wenn die Store nach oben fährt, läuft dieser Wert gegen 0.
- Somit weiss die Software relativ genau, wo die Store steht. Diesen Wert initialisiere ich aber jeweils, wenn die Store ganz oben oder unten ist, auf einen Wert für oben (0) und unten (z.B. 100 = 120x100ms entspricht einer Laufzeit von 12s um die Store ganz zu schliessen)
- Wenn ich weiss, dass die Store ganz geöffnet werden soll, fahre ich auf die Position -30. Anschliessend wird die Position auf den Wert 0 initialisiert.
- Wenn ich weiss, dass die Store ganz geschlossen werden soll, fahre ich auf die Position 150. Anschliessend wird die Position auf den Wert 120 initialisiert.
- Das ganze habe ich in einem FB programmiert. Für jede Store wird dieser mit jeweils einem anderen Instanz-DB aufgerufen.


Ich hoffe ich konnte dir ein paar Anregungen geben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Martin,

danke für Deine Informationen.
Ich denke ich muß noch einiges an Erfahrungen mit der SPS Programmierung sammeln. Da ich das ganze quasi hobbymäßig betreibe wird es wohl auch noch einige Zeit dauern bis ich sowas hinbekomme wie Du es beschrieben hast. Mir dreht sich der Kopf wenn ich über zeitliche Abläufe in der SPS nachdenke. Wenn ich dann noch an komplexere Abläufe und Zeitsteuerungen denke die die obige Tastensteuerung winzig erscheinen lassen, kommt schon mal Frust auf.
Es werden wohl noch ne Menge Anfragen im Forum erscheinen...

Grüße
Neuling
 
Hallo Neuling,

ich habe ähnlisches realsiert mit konfigurierbaren Startzeiten der einzelnen Rollläden von jedem Taster, d.h. es gibt nur unsiversaltaster welche bei mir über ein TP beliebig konfiguriert werden...! Soll heißen Taster 1 schalten sofort Rollladen 1 und 5 sec später Rollladen zwei usw. Bei interesse kannst du mir deine mail adresse geben, dann schick ich dir die FB's!

Gruß Küffel
 
Hallo Küffel,

es wäre toll wenn Du mir die FBs zusenden könntest, dann habe ich wieder was zum lernen und neue Ideen !

Du kannst es bitte an folgende email senden: mariodisketti@gmx.net

Besten Dank !
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leichter gesagt als getan, wollte gerade die email fertig machen, aber wie bekomme ich einzelne Bausteine exportiert, oder wo sind die gepeichert?
 
Im KOP/FUP/AWL-Editor unter Extras/Einstellungen Register Quellen:
Quellen zu bereits vorhandenen Bausteinen erstellen... ausführen.

Im Behälter Quellen sind dann die AWL-Quellen im ASCII-Format.

Gruß
raika
 
Im KOP/FUP/AWL-Editor unter Extras/Einstellungen Register Quellen:
Quellen zu bereits vorhandenen Bausteinen erstellen... ausführen.

Im Behälter Quellen sind dann die AWL-Quellen im ASCII-Format.

Gruß
raika
 
Zurück
Oben