# S7-200 Rolladensteuerung mit Tip-Automatik



## eifelolli (11 Mai 2010)

Hallo zusammen und guten Abend,
das Thema Rolladensteuerung wurde ja schon zu genüge hier diskutiert, leider komm ich damit nicht wirklich weiter.
Ich möchte für mein Haus eine Rolladensteuerung für 17 Rolladen bauen. Habe mir dafür eine S7-200 CPU224 und ein Zusatzmodul mit 32 Ein- und Ausgängen besorgt.
Nun habe ich ein Programm für eine fertige Rolladensteuerung auf Logo-Basis bei Siemens auf der Homepage gefunden. Leider bekomm ich es nicht hin, dieses auf meine S7-200 umzumodeln. Die fertigen Module in der OSCAT kann ich mit der 200er ja auch nicht verwenden.
Kann mir evtl. jemand helfen oder hat vielleicht irgendwer schon ein fertiges Programm oder nen "Rolladenbaustein"?
Die Steuerung sollte etwa folgendes können:
Taster "auf" - Rollade fährt auf (für z.B. 40 Sec.)
drückt man während der Fahrt den Taster der Gegenrichtung soll der Rolladen stoppen. Bei nochmaligem drücken der jeweiligen Richtung fährt der Motor in diese.
Zusätzlich sollte die Möglichkeit einer Zentralsteuerung mit einem Taster vorhanden sein.
Hab mal während dem Studium ein bisschen SPS programmiert und dachte es wird wohl dafür reichen, hab ich mich wohl geirrt.
Wäre schön, wenn mir jemand helfen oder wenigstens nen Tip geben könnte.
Danke schonmal im Vorfeld
Gruß aus der Eifel
eifelolli


----------



## Jan (11 Mai 2010)

Hallo eifelolli.

Hast du schon versucht das Programm zu schreiben?

Wenn ja, dann stelle bitte dein Programm hier rein und sage uns, wo es bei dir hapert.

Wenn nicht, dann versuche es und es wird dir sicher weitergeholfen, wenn du schwierigkeiten hast.

Wenn ich für mich ein Programm schreiben möchte, schreibe ich zu erst in Klartext auf, was das Programm genau können soll (mit Einzelheiten wie z. B. gegenseitige Verriegelung hoch und runter), dann schreibe ich es einfach in FUP ab.


----------



## eifelolli (12 Mai 2010)

Hallo Jan,
erstmal danke für deine Antwort.
Wie schon gesagt, ein fertiges Programm für die Rolladensteuerung wie ich sie brauche gibt es bei Siemens zum runterladen, jedoch nur für die Logo.
Dieses Programm wollte ich mir umschreiben für die S7-200 und genau da liegt der Hund begraben. Ich weiß nicht wie ich die Sonderfunktionen der Logo (z.B. das Wischrelais) in der S7-200 realisieren kann.
Hinzu kommt, dass mir einfach die Zeit fehlt um mich den ganzen Abend vor den Computer zu setzen und zu versuchen. Für die Logo bekommt man im Internet 1000??? verschiedene Programme einfach so zum runterladen. Für die S7-300 gibts bei oscat jede Menge fertige Bausteine. Nur für die 200er Serie nicht. Zwar kann man bei www.s7-200.net einige Bibliotheken runterladen, jedoch konnten mir diese auch nicht wirklich weiterhelfen.
Im Forum habe ich gelesen, dass es wohl auch für die 200er Serie nen Baustein für eine Rolladensteuerung geben soll. Leider hab ich den icht gefunden. 
Heute habe ich auf der Seite von Siemens eine Bibliothek Namens shutter_control.mwp runtergeladen. Kann die aber auf der Arbeit nicht ausprobieren, so dass ich das auf heute abend verschieben muss.
Hat denn vielleicht schon jemand erfahrung mit der Bibliothek oder schon ein fertiges Programm zur Hand?
Für die Hilfe schonmal vielen Dank.
Grüße aus der Domstadt am Rhein (Kölle)
eifelolli


----------



## Jan (12 Mai 2010)

Hallo eifelolli,

mit Bibliotheken habe ich bei S7-200 noch nicht gearbeitet.
Sowas wie mit dem Wischer meinte ich. 
Auch wenn ich jetzt selbst nachschauen müste, ob ein Wischer gleich eine Flanke ist.
Ich habe leider kein fertiges Programm.
Ich persönlich würde die Zeit die ich bräuchte um das LOGO-Programm in S7-200 umzuschreiben nutzen um das Programm von Grundauf neu zu schreiben, dann kann man das Programm evt. leichter an seine besonderen Bedürfnisse anpassen.

Wenn deine Zeit viel zu knapp sein sollte, könntest du das Programm auch in Auftrag geben.


----------



## R.Blum (12 Mai 2010)

Ich habe für eine S7-315 einen Funktionsbaustein geschrieben, der Einzel- und Zentralsteuerung zulässt, das letzte Kommando ist gültig. Ein Kollege will damit 32 Rolläden steuern und hatte mich gebeten etwas für Ihn zu stricken. Der Baustein ist Multinstanzfähig.

Für eine 200er muss man den natürlich umschreiben, aber mit so einer SPS hab ich noch nie gearbeitet und muss es hoffentlich auch nie.

Bei Interesse PN an mich.

Gruß Rolf


----------



## Pinky (13 Mai 2010)

Ich hab hier mal versucht etwas brauchbares zu schreiben.
Test einfach mal ob das so hinhaut.


----------



## eifelolli (14 Mai 2010)

Hallo Pinky,
danke für das Programm, werde es gleich direkt mal ausprobieren.
Habe in der Zwischenzeit selber mal ein bisschen rumexperimentiert und ein Programm geschrieben, dass bei der Simulation sogar funktioniert 
Jedoch ist das ziemlich umfangreich (bei 17 Rolläden immerhin 102 Netzwerke).
Wenn ich für die Steuerung einen Baustein baue und den als Unterprogramm laufen lasse, wie sieht dann die Verarbeitung aus?? Klappt das dann noch mit z.B. Zentral_auf etc??? Kommen die einzelnen Netzwerke sich dann nicht in die Quere???
Wäre schön, wenn ihr erfahrenen Programmierer mal über meinen geistigen Erguss drüber schauen könntet und mir evtl. noch ein paar Tips in Sachen strukturierung geben könntet.
Danke nochmals allen, die geantwortet haben.
Mfg
eifelolli:sm2:


----------



## PN/DP (14 Mai 2010)

*S7-200-Programm Simulation?*



eifelolli schrieb:


> Habe in der Zwischenzeit selber mal ein bisschen rumexperimentiert und ein Programm geschrieben, dass bei der Simulation sogar funktioniert


Kurze Zwischenfrage: Womit simulierst Du das S7-200-Programm?

Gruß
Harald


----------



## hucki (14 Mai 2010)

eifelolli schrieb:


> ...
> Wenn ich für die Steuerung einen Baustein baue und den als Unterprogramm laufen lasse, wie sieht dann die Verarbeitung aus?? Klappt das dann noch mit z.B. Zentral_auf etc??? Kommen die einzelnen Netzwerke sich dann nicht in die Quere???
> ...


Jein.
Ich würd' Dir auch empfehlen einen Baustein zu programmieren, da es ja immer wieder das Gleiche ist.
Allerdings gibt's 2 Dinge zu beachten:
1. Du kannst keine verschiedenen Timer für die Rolläden im Unterprogramm benutzen. Also entweder die Timer außerhalb des Unterprogramms benutzen oder eigene Timer basteln, indem Du z.B. in einer Variablen alle Sekunde die positivenTaktflanken des Sondermerkers SM0.5 zählst. In welcher Variable Du zählst, kannst Du dann über In/Out-Variablen für jeden Rolladen getrennt festlegen.
2. Die Flanken der Taster mußt Du ebenfalls entweder aus dem Unterprogramm auslagern oder wieder eigene Flankenmerker mit boolschen In/Out-Variablen basteln. Die Flanken der Zentraltaster würd' ich dabei in zwei Netzwerken am Anfang des Hauptprogramms abfragen und auf je einen Merker geben, so das Du das nicht bei jedem Rolladen neu machen mußt (zumal die fertigen Flankenmerker begrenzt sind).


----------



## Pinky (15 Mai 2010)

Hab das Programm heute noch mal als 300er Programm getestet und dabei ein paar Fehler ausgebügelt. Hier ist jetzt noch einmal eine überarbeitete Version.
Ich hoffe so funktionierts jetzt.


----------



## eifelolli (15 Mai 2010)

Hallo zusammen,
Danke nochmals für das Programm Pinky, leider bekomme ich beim übersezten ein paar Fehlermeldungen. Die im Hauptprogramm habe ich beheben können (z.B. zwei Zeiten in einem Netzwerk). Im Unterprogramm bekomme ich die Fehlermeldung "Fehler 35 Operand für diesen Speicherbereich ungültig".
Kann damit einer was anfangen? Der Fehler bezieht sich auf das FlipFlop am Ende.
@PN/DP: Ich teste das Programm mit dem SPS-Simulator S7-200 2.0

Danke nochmals allen für die Antworten.

Schönes Wochenende

eifelolli


----------



## Pinky (17 Mai 2010)

Es tut mir leid das keiner meiner ersten Tipps funzt. Deshalb hab ich mir jetzt mal eine reale CPU genommen und hab mal rumexperimentiert. Das hier angefügte Programm ist also auf einer realen CPU getestet und läuft. Zu meiner Schande muß ich gestehen das ich auf einer 200er tatsächlich zu blöd bin einen Baustein zu schreiben der mehrfach aufgerufen werden kann und wo dann alle Aufrufe unabhängig voneinander funktionieren. 
Habe es nur geschafft ohne Flankenfunktion und mit nur einem Timer pro Rollladen auszukommen. Wegen der Übersicht gibt es nun für jeden Motor ein Unterprogramm mit Aufruf im Main.
Schaus dir mal an. Die ersten drei Motore sind soweit fertig.


----------



## hucki (17 Mai 2010)

Hallo Pinky,

das erste Netzwerk im Main (OB1) kannst du Dir sparen, dafür gibt's den Sondermerker SM0.0, der ist immer logisch 1.
Wenn Du mit rechts auf den Ordner Symboltabelle klickst, kannst Du über Inhalte einfügen die S7-200 Symboltabelle einfügen. Da werden für alle Sondermerker symbolische Namen eingefügt und man muß sich nicht merken, welcher wofür war, sondern kann jederzeit wieder reinschauen. Im Handbuch sind am Ende auch alle Sondermerker und ihre Funktion aufgeführt. 

Im Unterprogramm selber mußt Du das SR-Flip-Flop in 2 Netzwerke trennen (1x für S, 1x für R), dann geht das auch mit den lokalen Variablen Deiner vorherigen Version.
Dabei natürlich auf die richtige Wahl der Variablen-Art achten:
- #Motor_hoch bzw. #Motor_runter müssen In/Out sein, da sie auch für die VKE-Abfrage benutzt werden.
- Temp-Variablen werden nach Beendigung des Unterprogramms gelöscht, sind also nicht statisch. Daher die Variable #Freigabe_Motorlauf ebenfalls über eine In/Out-Variable außerhalb des Unterprogramms in einer Variable abspeichern.
Den Timer dann noch aus dem Unterprogramm rausnehmen oder einen eigenen basteln (z.B. mit SM0.5), der in eine In/Out-Variable zählt, dann sollte das mit dem mehrfachen Aufruf funktionieren.


----------



## hucki (18 Mai 2010)

So wie im Anhang würd' ich mir das vorstellen.
Ist aber nicht getestet (hab' hier im Urlaub in DK nicht die Möglichkeiten), also nicht erschlagen, wenn sich Fehler eingeschlichen haben.

@eifelolli,
hast Du einen DL-Link für den Simulator?
Konnte außer was spanischem nichts finden und dessen bin ich nicht mächtig.


----------



## eifelolli (18 Mai 2010)

Moin Hucki,
hab den DL-Link grad nicht zur Hand, da ich auf der Arbeit bin. Wenn ich heute Abend zuhause bin kann ich mal nachschauen. Ansonsten kann ich dir das Progi auch per Mail schicken, is nicht so groß oder ich setz es hier in den Threat.
Schönen Tach noch.


----------



## hucki (20 Mai 2010)

*SPS-Simulator S7-200*

Für alle die's interessiert: Das spanische Prog war das Entsprechende und es gibt auch eine englische Version:







Zu finden ist es hier: http://personales.ya.com/canalPLC/
Die Downloads der spanischen und englischen Versionen findet man unter S7-200/Descarga: http://personales.ya.com/canalPLC/descarga.htm

Um einen gültigen Schlüssel zu erhalten, muss man eine Mail an canalplc@ya.com senden.
Bereits einen Tag später hab' ich diesen kostenlos erhalten.


Momentan (in Version 2.0) kann man allerdings keine Parameter an Unterprogramme übergeben. Es gibt aber Hoffnung:


			
				canalplc@ya.com schrieb:
			
		

> La clave de acceso al programa S7_200 es: xxxx
> 
> Las subrutinas no pueden tener parametros.
> La proxima cersión del programa va a incluir esta posibilidad.
> ...





			
				Übersetzung von Promt schrieb:
			
		

> Der Zugangsschlüssel zum Programm S7_200 ist: xxxx
> 
> Die Unterroutinen können keine Parameter haben.
> Der nächste Cersión des Programms wird diese Möglichkeit einschließen.
> ...


----------



## hucki (20 Mai 2010)

*Rolladensteuerung mit Astromodul*

Hallo eifelolli,

weil ich gerade mal bei war, meine Vorstellungen der Rolladensteuerung zu programmieren, hab' ich noch das Modul zur Berechnung des Sonnenauf- und -untergangs von Siemens mit eingestrickt. Und weil das die Möglichkeit bietet, für beide Aktionen einen Offset in Minuten anzugeben, ist jetzt auch noch der Zufalls-Generator von s7-200.net integriert, der jeden Tag das automatische Öffnen und Schließen der Rolläden im Bereich von +-15 Minuten zufällig variiert.
Außerdem hab' ich noch eine Möglichkeit eines eigenen Taktgenerators aufgezeigt, um eine größere Genauigkeit zu erhalten. Mit dem Sondermerker SM0.5 kann die Umschaltzeit zw. Tip- und Dauerbetrieb um bis zu 0,999s schwanken. Ich könnt' damit leben, andere stört's vielleicht und viele Wege führen nach Rom.

Das Ganze ist aber noch nicht getestet. Ich bin noch in DK und der Simulator kann's noch nicht (siehe Post drüber).
Also entweder Du erledigst das (oder jemand anders) oder Du wartest bis zum WE.

Beim Astromodul ist folgendes zu beachten:


			
				Siemens schrieb:
			
		

> Um den morgendlichen und abendlichen Schaltpunkt für eine Rollladensteuerung festzulegen wird im Allgemeinen ein Dämmerungsschalter verwendet.
> Wenn Sie zur Steuerung Ihrer Rollläden ohnehin eine SIMATIC S7-200 (mit)verwenden, bietet es sich an, den Sonnenauf- und Untergang mittels eines astronomischen Algorithmus zu ermitteln, der als STEP 7-Micro/WIN-Bibliothek vorliegt.​
> Sie müssen lediglich die Koordinaten Längengrad und Breitengrad des betreffenden Anwesens als Parameter angeben und die CPU-Uhr auf die UTC-Zeit einstellen.
> (Hab' die Koordinaten von Köln eingegeben - Hucki)​
> ...


 

Komplettieren könnte man das ganze noch hiermit:​ 


			
				Siemens schrieb:
			
		

> *Verwendung eines GPS-Empfängers:*
> Eine sehr komfortable Zeitsteuerung bietet der Anschluss eines GPS-Empfängers an die CPU. Es entfällt jegliche Synchronisierung bzw. Nachjustierung der Zeit. Außerdem werden Längenund Breitengrad mitgeliefert. Wie Sie einen GPS-Empfänger mit der S7-200 Steuerung koppeln, welche Voraussetzungen hierbei erfüllt sein müssen und welche Softwarebausteine zur Verfügung stehen, beschreibt ein FAQ mit der Beitrags-ID 26311405. Beachten Sie bezüglich der Schnittstellen zwischen den GPS-Bausteinen und den Bausteinen der Rollladensteuerung zusätzlich bitte folgendes:
> 
> Beschalten Sie bei den beiden Aufrufen des Bausteins "SunPos_Calculation" im Unterprogramm "shutter_control" den Parameter "Time_Source" jeweils mit TRUE. Damit trennen Sie die CPU-Echtzeituhr vom astronomischen Algorithmus.
> ...


 
Korrigierte Version gibt's hier.


----------



## eifelolli (21 Mai 2010)

Hallo Hucki,
mensch du legst dich ja mächtig ins Zeug. :TOOL:
Hab es noch nicht geschafft das Programm zu testen, muss mir heute erstmal ne Testumgebung schaffen. Die Rolladen kann ich noch nicht anschließen, da die Fenster noch zugeklebt sind (die Verputzer sind da) und da kann ich die nicht runterfahren 
Werde mir mit ein paar Microschaltern die Taster simulieren. Das Simulationsprogramm kann das ja leider noch nicht. Mal gespannt, wann der Nachfolger rauskommt.
Jedenfalls nochmal 1001 Danke für deine Bemühungen. Und das alles im Urlaub. Supi.
Allen anderen ein schönes Pfingstwochenende. Soll ja sogar mal (zumindest in der Eifel) schön werden.:sm24:
Mfg 
eifelolli:s7:


----------



## hucki (23 Mai 2010)

*Korrektur*

Leider waren (wie eigentlich zu erwarten bei der Größe) Fehler im Programm:

1. Die Impulse im Astro-Modul zum Auf- und Abfahren müssen mit Abwärtszählern gebildet werden.
Ich hatte das auch so separat mit dem S7-200 Simulator getestet. Weiß der Geier, warum ich dann Aufwärtszähler im Programm genommen habe.

2. Die Setzeingänge dieser beiden Zähler dürfen nur die Flanken der Zenitberechnungen/-vergleiche bekommen.
Da verhält sich der reale Zähler etwas anders als der des S7-200 Simulators. Der Zähler im Simulator reagierte von sich aus nur auf die Flanke des Setzeingangs, während der reale Zähler setzt, 1x abwärts zählt und dann wieder setzt, wenn der Setzeingang ständig "1" ist 

3. Beim Byte der Echtzeituhr hab' ich mich um 1 verzählt/verrechnet. Wenn man mit VB2000 anfängt, ist das 8.Byte (Wochentag) natürlich VB2007 und nicht VB2008. Durch den Fehler wurde der Offset für's Astromodul beim Tageswechsel nicht neu berechnet.

4. Da die temporäre Variable #Takt2 für den alternativen Taktgeber bei jedem Unterprogrammaufruf wieder zu Beginn "0" ist, muß die Zuweisung zum Timerbit vor dem Timeraufruf erfolgen (Netzwerk 2 und 3 tauschen), sonst wird der Timer nie zurückgesetzt und man hat keinen Takt.

5. Bei den Offsets an den Zenitberechnungen hab' ich die Offseteingänge des Astromodul genommen. Die werden in Minuten angegeben und vor jeder Zenitberechnung in Sekunden umgerechnet. Dieser Sekundenwert gehört dann korrekterweise an die Zenitberechnung übergeben.


Die Offsets für das Astromodul hab' ich noch etwas modifiziert:
Wenn Zufall abgeschaltet wird, werden die Offsets auf feste Werte gesetzt und jedesmal, wenn der Zufall aktiviert wird, werden auch neue Offsets berechnet.

Außerdem hab' ich mir den Test etwas vereinfacht: Astro und Zufall werden jetzt über digitale Eingänge aktiviert.
In der fertigen Anlage würde ich das aber lieber über ein HMI machen.


Ansonsten sah's bei meinen Tests ganz gut aus.
Auf Sonnenauf- und -untergang hab' ich noch nicht gewartet (Edit: jetzt doch). Der Impuls ist dann aber auch nur 4 Sekunden (Die Rolläden gehen dann in Dauerbetrieb, da ist's also etwas länger).
Wer die beiden Erignisse beobachten will - gut aufpassen!
Hab's gemacht: 
Echtzeit-Uhr heute auf 19:19:40 ohne Zufall (Offset=0) -> ca. 4s später fahren alle Rolläden runter 
Echtzeit-Uhr heute auf 03:38:45 ohne Zufall (Offset=0) -> ca. 6s später fahren alle Rolläden auf
Wem die Uhrzeiten komisch vorkommen -> UTC-Zeit. Bei uns müssen heute also 2 Stunden dazu addiert werden.


----------



## hucki (8 Juli 2012)

Hi,

aufgrund einiger aktueller Threads hab' ich das Programm mal noch ein bißchen aufgemotzt.

Als Erstes hab' ich die SBR für eine Richtung eines Rollladens so umgeschrieben, daß die AUF- und AB-Richtungen jetzt nicht mehr mit den S7-Timern von Hand verriegelt werden müssen. Dies ist nun in der SBR für die Richtung und damit auch in die SBR für einen Rollladen integriert.

Danach habe ich noch ein Modul für einen Codetaster hinzugefügt. Damit kann man mit einem Richtungstaster für den Rollladen zusätzlich auch noch Zentralbefehle auslösen.
Der Tip- und ggf. der Wechsel in den Dauerbetrieb werden weiterhin vom Rollladenmodul gesteuert, so daß man Vorort-Taster auch direkt (ohne Code-Taster-Modul) an die Rollladen-SBR weitergeben kann.
Legt man die Taster jedoch an das Code-Taster-Modul, so werden Mehrfach-Tastungen in einer gewissen Zeit (voreingestellt 2 Sekunden) erkannt und nach Ablauf der Erfassungszeit als zentrale Gruppen-, Etagen- oder Hausbefehle ausgegeben. Diese Code-Erfassung schränkt allerdings naturgegeben den Tipbetrieb etwas ein (man muss halt immer 2 Sekunden warten, bis man den nächsten Tip-Schritt auslösen kann, ohne das ein Code-Tasten erkannt wird).
Die Code-Erfassung kann auch Probleme mit prellenden Tastern haben, so daß ich mit der SBR2 eine einfache Möglichkeit mit den S7-Timern aufgezeigt habe, die Eingänge mit 0,1 oder 0,2 Sekunden zu entprellen. Längere Zeitspannen würde ich nicht empfehlen.


Das Ganze ist aber nur mit einer einzelnen S7-224XP mit den 5 simulierten Rollläden und Tastern, wie im Programm vorhanden, getestet und nicht in einer realen häuslichen Umgebung!


----------



## eifelolli (3 Oktober 2012)

Hallo zusammen,
ich habe das Programm von Hucki auf mein Haus mit insgesamt 17 Rolladen erweitert und nun seit knapp zwei Monaten in Betrieb. Auch die Zentralbefehle über die Codetaster habe ich stellenweise in Verwendung. 
Einige Rolladen öffnen und schließen sich über das eingebaute Astromodul. Alles lässt sich prima für jeden Rolladen programmieren. 
Das Programm ist meiner Meinung nach absolut praxistauglich. 
Bei der Nutzung sind mir auch ein paar Dinge aufgefallen, welche man evtl. in einem Update 😄 berücksichtigen könnte. 
Der Tipbetrieb ist an und für sich eine gute Idee, jedoch kommen bei der Verwendung von Codetastern hier und da Fehlbedienungen zustande. Vielleicht wäre es besser, die Bedienung folgendermaßen auszuführen: 
1x tippen = Dauerbetrieb bis Endlage
Taster festhalten (länger als 1s) = Rolladen fahren bis zum loslassen des Tasters. 
Die Codebefehle sollten so bleiben wie sie sind. Bei der Astrofunktion wäre es schön, wenn die Rolladen nach der Auslösung zeitversetzt (evtl. mit Zufallsmodul) anfahren. Momentan laufen diese dann zeitgleich. 
Soweit mein kleiner Erfahrungsbericht. 
Wünsche allen noch einen schönen Feiertag. 
MfG
Eifelolli


----------



## hucki (24 Februar 2013)

eifelolli schrieb:


> ... Bei der Astrofunktion wäre es schön, wenn die Rolladen nach der Auslösung zeitversetzt (evtl. mit Zufallsmodul) anfahren. Momentan laufen diese dann zeitgleich. ...


Hab' ich damals überlesen. 

Soweit ich mich erinnere, kann man das Astromodul auch mehrmals aufrufen und die entsprechenden Ausgänge dann verschiedenen Rollläden oder -gruppen übergeben. Bei jedem Aufruf des Astromoduls, müsste auch ein anderer Zufallswert berechnet werden, natürlich vorausgesetzt Zufall ist auch aktiviert.

Somit sollte sich ein gleichzeitiges Auf-/Zufahren nur noch zufällig ergeben bzw. auf die jeweilige Gruppe beschränken.



PS: Allerdings fahren die Rollläden, wenn man sie über einen Zentraltaster betätigt, auch alle gleichzeitig.
Deswegen war es halt wichtiger, dass es eben nicht jeden Tag zu selben Zeit passiert oder auch nicht einfach nur mit den Sonnenzeiten mitgeht, sondern immer noch eine Zufallszeit von Plus oder Minus hinzukommt, wie man's am Astromodul einstellen kann.


----------



## Schlappendulli (25 Mai 2013)

Hallo,

wegen meines Hausbaus muß ich leider diesen Thread nochmal aus der Versenkung holen.
Besten Dank an hucki und höchsten Respekt für sein Engagement, Anfänger wie mich zu beschenken.
Ich möchte 13 Rolläden mit o.g. Programm steuern. Meine Hardware läuft auch schon (mit hucki-Programm) besser als ich erwartet hatte, denn
ich befasse mich erst seit 1 Woche mit S7 200 und das inkl. Hardwarebeschaffung. 
Meine Hardware:
CPU224 AC/DC/Rly + EM223 DC/Rly + TD400c + Chinakabel 
ergibt die benötigten 26 Ausgänge.

Folgende Aufgaben stehen noch an:
1. Für meine Familie ist die Version mit Codetaster zu kompliziert. Deshalb haben wir uns auf folgende Funktionen geeinigt.
- Vorortbedienung AUF/AB Tast- und Dauerbetrieb
- 5-8s (einstellbar) Dauerdrücken AUF oder AB löst ein Gruppenfahren in die jeweilige Richtung aus.
- Es gibt nur eine Gruppe mit variabler Zuordnung
2. Mit dem TD400C sollen folgende Variablen eingestellt werden:
- Gruppenzuordnung für jeden einzelnen Rollo
- Astromodul und Zufall ein/aus
- Zeit +- die das Astromodul verzögert fahren soll
- Wochentagszuordnung Astromodul und verschiedene Verzögerungszeiten (z.B. Wochenende)

Ich weiß das sind zu große Ansprüche vor allem im Hinblick darauf, dass ich Anfänger bin. Ich kann zwar
programmieren (PC/Linux), aber das nützt mir hier nichts. Ich bin aktives Mitglied in der VDR Community
und weiß auch was Opferung der Freizeit für lau ist. Dennoch möchte ich Euch bitten mich hierbei zu 
unterstützen.

Mein erstes Problem ist nun:
Ich habe meine ersten Gehversuche mit dieser Version von hucki gemacht:
http://www.sps-forum.de/simatic/37864-s7-200-zeiten-und-timer-unterprogrammen.html
Ich habe die Taster Astro und Zufall im Datenbaustein als VB0 definiert und fest eingeschaltet.
Funktioniert auch, Astro Modul ist an, aber bei jedem Richtungswechsel wird kurz der Ausgang der
Gegenrichtung eingeschaltet (Wischer). Dies ist natürlich extrem schlecht für den Antrieb.
Was läuft hier schief ? Hat das Astromodul einen Fehler, denn ohne gehts perfekt.

Zweites Problem:
Das TD400C. Kann mir jemand eine Grundbeschreibung geben wie der Variablenaustausch im Groben
funktioniert zwischen Programm und Display. Den Assistenten kenne ich. Dieser schlägt eine Variable
Data irgendwas vor. Welchen Typs ist diese Variable und wie bekomme ich die in den Datenbaustein
zur einfacheren Weiterverarbeitung.

Für jegliche Hilfe bin ich sehr dankbar, außer steht alles im Manual.

Schönes Wochenende
Armin


----------



## Schlappendulli (26 Mai 2013)

gelöscht weil Mehrfachpost, da der Beitrag fast 3 Wochen nicht freigeschaltet wurde.


----------



## Schlappendulli (27 Mai 2013)

Hallo,
inzwischen habe ich fast alle meine Probleme lösen können.
Ich habe mich auf das Programm "Astrofunktion und Codetaster" konzentriert und
nun folgende Funtkionen realisiert:
- Tipp und Dauerbetrieb
- Zweimal tasten Gruppenfahren 
- Gruppe frei definierbar per TD400C
- Astro- und Zufall steuerbar per TD400C
- Versatzzeiten für Astro und Zufall per TD400C

An zwei Sachen beisse ich mir grad die Zähne aus:
- Das Astromodul steuert bei jedem Ladevorgang die Gruppe
- Ich scheitere komplett am Schrittfahren der Gruppe. Ist in einem Unterprogramm anscheinend schwer realisierbar. Ich will, daß die Gruppe Rolladen für Rolladen nacheinander fährt und nicht alle auf einmal.

Wenn jemand speziell für Problem 2 für mich einen Tipp hat wäre ich sehr dankbar.

Schönes Wochenende


----------



## Schlappendulli (28 Mai 2013)

Hallo,

ich will nochmal einen Versuch starten und mein modifiziertes Programm von hucki zur Verfügung stellen.
Vielleicht kann jemand mal drüberschauen.
Meine zwei Probleme (siehe oben) könnte ich noch nicht lösen. Kann es schlicht nicht.

Schönen Sonntag


----------



## johannes83 (4 August 2013)

Hallo,
hab nun auch endlich das Programm von Hucki auf meine Anforderungen mit 20 Rohrmotoren angepasst. Nach etwas rum probieren mit den Parametern klappt es nun super!!! Astromodul und Zufallsfunktion sind noch ungetestet. Vielen Dank an Hucki für die Mühe das Programm zu schreiben!!!


----------



## hucki (4 August 2013)

@Schlappendulli,
sorry, Deine beiden Posts sind komplett an mir vorüber gegangen. (Vlt. weil ich zu dem Zeitpunkt in Ungarn war )
Ohne Johannes83 (@ PS: Danke übrigens für die Anerkennung ) hätte ich sie heut' noch nicht bemerkt.
Jetzt muss ich erst mal mein MicroWin updaten, damit ich mal in Deine Erweiterung rein sehen kann. Ich hoffe, ich kann Dir dann vlt. weiter helfen.

Bis dahin könntest Du mir noch mal Deine Probleme näher erläutern:


Schlappendulli schrieb:


> ...
> An zwei Sachen beisse ich mir grad die Zähne aus:
> - Das Astromodul steuert bei jedem Ladevorgang die Gruppe
> - Ich scheitere komplett am Schrittfahren der Gruppe. Ist in einem Unterprogramm anscheinend schwer realisierbar. Ich will, daß die Gruppe Rolladen für Rolladen nacheinander fährt und nicht alle auf einmal.


Zu 1.: Sollen nur einzelne Rollläden vom Astromodul gesteuert werden, oder wo liegt das Problem?
Zu 2.: Du willst von der Gruppe alle Rollläden einzeln nacheinander im Tipbetrieb fahren und das mit nur einem Taster?
Wie stellst Du Dir das vom Ablauf vor?


----------



## maik2810 (19 August 2013)

Hallo Hucki,
schade dass die Version für die cpu224 ist, leider für cpu 214 nicht geeignet. Bin kein Programmierer, deshalb kann ich nicht auf meine cpu 214 anpassen. Kannst du das bitte für mich tun? 
MfG
maik2810


----------



## Schlappendulli (19 August 2013)

Hallo Hucki,

danke für deine Nachricht, die ich im Übrigen auch nicht registriert habe.
Meine zwei Probleme bestehen darin, daß ich 
1. Beim Neuübersetzen und überspielen auf die CPU schalten immer die Ausgänge. Ist etwas blöd, da dann das gesamte Haus dunkel ist. Das passiert nur wenn das Astromodul gleich an ist und manchmal wenn es nachträglich aktiviert wird.
2. Ich würde gerne beim Gruppenfahren einen Rolladen nach dem Anderen fahren und nicht alle gleichzeitig. Z.B. an einer Hausecke anfangen und dann einzeln nacheinander alle rundum folgen lassen (Serienschaltung). So wie wenn man per Gurt einen nach dem Anderen runter lässt. Hier fehlt mir die zündende Idee das einfach umzusetzen, ohne alles neu aufzubauen.
3. Ich würde gerne Merker verwenden, die sich den Rollozustand (Oben oder unten) merken. Das geht für einen einzelnen Taster einfach aber bei der Gruppensteuerung oder Astro wird es sehr aufwendig. Hast Du hierzu vielleicht eine Idee für eine einfache Umsetzung ?

Danke.
Gruß
Schlappendulli


----------



## hucki (19 August 2013)

maik2810 schrieb:


> Hallo Hucki,
> schade dass die Version für die cpu224 ist, leider für cpu 214 nicht geeignet. Bin kein Programmierer, deshalb kann ich nicht auf meine cpu 214 anpassen. Kannst du das bitte für mich tun?


Sorry, das wird leider nichts. Da hab' ich einfach so gar keine Lust drauf.
Zum Einen hab' ich keine S7-214, um sowas zu testen, und zum Anderen wäre mir das momentan auch zeitlich zu aufwendig, mich mit den (Un-)Möglichkeiten der S7-214 zu beschäftigen.
Außerdem habe ich Bibliotheken aus dem Netz verwendet, die teilweise mit KnowHow-Schutz versehen sind und nicht auf der S7-214 laufen. Da wüßte ich auch gar nicht, wie ich die ersetzten sollte.


Wenn Du das Zielsystem in der 1. Programmversion auf S7-214 änderst und dann alles übersetzen läßt, zeigt Dir MicroWin ja alle Fehler an. Meistens müssen lokale Variablen in globale geändert werden. Kannst ja versuchen, einem Fehler nach dem anderen durchzugehen. Auf die geschützten Bibliotheken musst Du dann wohl allerdings verzichten. Das dürfte die Astro- bzw. Zufallsfunktion betreffen.


Never mind!
Ich glaub', hier wurden in letzter Zeit die S7-22x für unter hundert Euro angeboten. Das sollte wohl die noch einfachere Lösung sein.
PS: Hier schon wieder, ganz aktuell.


----------



## hucki (19 August 2013)

Schlappendulli schrieb:


> 1. Beim Neuübersetzen und überspielen auf die CPU schalten immer die Ausgänge. Ist etwas blöd, da dann das gesamte Haus dunkel ist. Das passiert nur wenn das Astromodul gleich an ist und manchmal wenn es nachträglich aktiviert wird.


Was lädst Du denn immer alles in die CPU?
Standardmäßig sind ja Programm-, Daten- und Systemdatenbaustein zum Laden aktiviert. Nimm mal die Haken vor den beiden Datenbausteinen weg und lade nur den Programmbaustein. Dann bleibt vlt. die Tagänderung aus, die das Astro- bzw. das Zufallsmodul aktiviert.





Schlappendulli schrieb:


> 2. Ich würde gerne beim Gruppenfahren einen Rolladen nach dem Anderen fahren und nicht alle gleichzeitig. Z.B. an einer Hausecke anfangen und dann einzeln nacheinander alle rundum folgen lassen (Serienschaltung). So wie wenn man per Gurt einen nach dem Anderen runter lässt. Hier fehlt mir die zündende Idee das einfach umzusetzen, ohne alles neu aufzubauen.


Einen neuen Codetaster (SBR) erstellen, der einen Eingang und soviele Ausgänge hat, wie Rollläden angesteuert werden sollen.
Wenn der Eingang eingeschaltet wird, mit BGN-ITIME den Startzeitpunkt merken und dann mit CAL-ITIME die abgelaufene Zeit feststellen und je nach Differenz die einzelnen Ausgänge für min. die Zeit einschalten, die für den Dauerbetrieb der Rollläden notwendig ist.
Die SBR wieder im Doppeltaster 2x aufrufen und dann den Doppeltaster wieder für jede Zentralsteuerung, so wie den jetzigen Codetaster. Die Ausgänge dann als Vororttaster auf die einzelnen Rollläden übergeben.

So ungefähr würd' ich das versuchen, zu lösen.





Schlappendulli schrieb:


> 3. Ich würde gerne Merker verwenden, die sich den Rollozustand (Oben oder unten) merken. Das geht für einen einzelnen Taster einfach aber bei der Gruppensteuerung oder Astro wird es sehr aufwendig. Hast Du hierzu vielleicht eine Idee für eine einfache Umsetzung ?


Nicht wirklich.


----------



## hucki (21 August 2013)

hucki schrieb:


> Einen neuen Codetaster (SBR) erstellen, der einen Eingang und soviele Ausgänge hat, wie Rollläden angesteuert werden sollen.
> Wenn der Eingang eingeschaltet wird, mit BGN-ITIME den Startzeitpunkt merken und dann mit CAL-ITIME die abgelaufene Zeit feststellen und je nach Differenz die einzelnen Ausgänge für min. die Zeit einschalten, die für den Dauerbetrieb der Rollläden notwendig ist.
> Die SBR wieder im Doppeltaster 2x aufrufen und dann den Doppeltaster wieder für jede Zentralsteuerung, so wie den jetzigen Codetaster. Die Ausgänge dann als Vororttaster auf die einzelnen Rollläden übergeben.
> 
> So ungefähr würd' ich das versuchen, zu lösen.


Hab' das mal für eine Richtung entworfen, aber nicht getestet:

```
[FONT=Courier New]SUBROUTINE_BLOCK Etagentaster:SBR59
TITLE=Achtung! Im NW7 werden die Impulsausgaben für die Rollläden unsymbolisch als LB9 angesprochen!

VAR_INPUT
Taster:BOOL;		// Taster
Gegentaster:BOOL;	// Taster Gegenrichtung
Ze_Abstand:INT;		// Zeitabstand zw. den anzusteuernden Rollläden
Ze_Pulse:INT;		// Dauer des auszugebenen Impuls bei Zentralbefehl
END_VAR

VAR_IN_OUT
MEM_Start:DINT;		// Startzeit für Impuls
END_VAR

VAR_OUTPUT
R1:BOOL;		// Impuls-Ausgabe für Rollladen 1
R2:BOOL;		// Impuls-Ausgabe für Rollladen 2
R3:BOOL;		// Impuls-Ausgabe für Rollladen 3
R4:BOOL;		// Impuls-Ausgabe für Rollladen 4
R5:BOOL;		// Impuls-Ausgabe für Rollladen 5
R6:BOOL;		// Impuls-Ausgabe für Rollladen 6
R7:BOOL;		// Impuls-Ausgabe für Rollladen 7
R8:BOOL;		// Impuls-Ausgabe für Rollladen 8
END_VAR

VAR
Diff:DINT;	// abgelaufene Zeit seit Start in ms
Zeit:INT;	// abgelaufene Zeit seit Start in s
Abzug:INT;	// abzuziehende Zeit für erledigte Stellen
Stelle:INT;	// Bitstelle
N_Stelle:BYTE;	// Bitstelle als Byte
END_VAR


BEGIN

Network 1 // Start = High
// Bei Aktivierung des Start-Eingangs den Speicher mit der aktuellen Systemzeit beschreiben.
LD     L0.0
UD=    LD5, 0
BITIM  LD5

Network 2 // Gespeicherte Zeit erkennbar machen
// Ist die so gespeicherte Systemzeit zufällig gerade = 0, dann im Speicher um 1 ms erhöhen, damit die Speicherung erkannt wird
LD     L0.0
UD=    LD5, 0
INCD   LD5

Network 3 // Gegentaster betätigt
// Bei Betätigung Gegentaster Startzeit löschen
LD     L0.1
MOVD   0, LD5

Network 4 // Baustein abbrechen
// Wenn keine Startzeit gespeichert wurde, Baustein beenden
LDD=   LD5, 0
CRET

Network 5 // Timer
// Startzeit mit der aktuellen Systemzeit vergleichen und 
// die Differenz von Millisekunden in Sekunden umrechnen
LD     SM0.0
CITIM  LD5, LD10
/D     1000, LD10
UENO
DTI    LD10, LW14

Network 6 // Berechnungen
// Die aktuell auszugebende Rollladenstelle berechnen und
// die Zeit für abgelaufene Stellen wegrechnen
LD     SM0.0
MOVW   LW14, LW18
/I     LW1, LW18
MOVW   LW1, LW16
*I     LW18, LW16
-I     LW16, LW14

Network 7 // Ausgang schalten
// Wenn Stelle 8 oder größer, Startzeit löschen
// Wenn Stelle noch unter 8, prüfen, ob Impuls ausgegeben werden muß, wenn ja gesetzes Bit an Bitstelle verschieben
LDW<   LW18, 8
LPS
NOT
MOVD   0, LD5
LPP
UW<=   LW14, LW3
MOVB   1, LB9
ITB    LW18, LB20
UENO
SLB    LB9, LB20

END_SUBROUTINE_BLOCK[/FONT]
```






Schlappendulli schrieb:


> 3. Ich würde gerne Merker verwenden, die sich den Rollozustand (Oben oder unten) merken. Das geht für einen einzelnen Taster einfach aber bei der Gruppensteuerung oder Astro wird es sehr aufwendig. Hast Du hierzu vielleicht eine Idee für eine einfache Umsetzung ?


Setz' Dich doch mal mit breiti in Verbindung.
Er "misst" in seinem Programm die Zeit, die die Ausgänge eingeschaltet sind, mit einem Zähler, um so den Rollladenstand zu simulieren.


----------



## Schlappendulli (22 August 2013)

Hallo Hucki,

sorry, dass ich jetzt erst melde. Habe momentan viel um die Ohren.
Vielen Dank für deine Arbeit und deine Mühe.
Sieht beides gut aus. Da muss ich mich erstmal reinwühlen. Du weisst ja ich bin Anfänger.
Bitte vergib mir wenn es eine Zeit (2-3 Wo.) dauert bis ich mit der Einarbeitung und Test soweit bin, da ich in Urlaub fahre ab nächste Woche.

Schönen Feierabend
Schlappendulli

Edit: Ach ja, der Punkt 1 ist erledigt, deine Antwort war ein Volltreffer !!! Vielen Dank.


----------



## BTDA (22 August 2013)

Habe diesen TRead eben erst gesehen und das ganze Gedünse schon hinter mir allerdings ohne Astro Uhr.
Programmiert habe ich diskret als ohen Sprünge etc. Mittlerweile läuft das ganze auf S7-300 mit Anbindung an eine VISU weil man ja nicht immer den PC mit der Prograsmmierumgebung hochfahren will um Parameter zu ändern. Ausserdem ist eine Statusleuchte in der Visu für Auf und AB etc sehr hilfreich. Programm suche bei Gelegenheit mal raus und schicke es.
Weshalb ich schreibe. 
- Bitte berücksichtige das du nicht immer willst das die Rollos automatisch hoch oder runtergehen.
  Es ist sehr doof wenn man auf der Terasse sitzt und plötzlich das Rollo der Terassentür runtergefahren ist aber der Schlüsel noch drinnen liegt.
- Ich habe dafür damals Reed Kontakte für offen bzw. gekippt mit eingebaut. Damit kann man das verhindern. Aber diese Funktion ist schon lange deaktiviert. 
- Das mit der Uhrzeit hatte ich auch will aber eigentlich keiner. Die Jungs wollen es tagsüber dunkel um besser daddeln zu können. Morgens Rollo hoch und Sonne ins Gesicht ? Iiih bloss nicht.
- Zentraltaster im Stockwerk respektive 3 maliges Betätigen innerhalb einer Zeit X ( 2 sek ) = Zentral auf bzw. Zentral ab.
- Bei Zimmern mit 2 oder drei Fenstern das gleiche Spiel nur beschränkt auf den Raum. Dann muss ma nicht vom Fenster zur Balkontür gehen.
- Zeitgesteuert läuft  bei mir nur die Pumpe vom Teich bzw. die Gartenbeleuchtung.
So mein Beitrag zu diesem Fred udn einen schönen Urlaub noch ;-)


----------



## hucki (22 August 2013)

BTDA schrieb:


> ...Mittlerweile läuft das ganze auf S7-300 mit Anbindung an eine VISU weil man ja nicht immer den PC mit der Prograsmmierumgebung hochfahren will um Parameter zu ändern. Ausserdem ist eine Statusleuchte in der Visu für Auf und AB etc sehr hilfreich. Programm suche bei Gelegenheit mal raus und schicke es.


Danke.
Poste es aber trotzdem bitte in einem der zahllosen S7-300-Threads dazu, denn hier geht's um die S7-200 mit MicroWin und das ist nun mal was anderes. Da helfen die S7-300-Programme nicht gerade. :|




BTDA schrieb:


> ...
> - Das mit der Uhrzeit hatte ich auch will aber eigentlich keiner.


Also meine Frau und ich wollen das unbedingt. Für uns ist es schon von Vorteil, wenn wir uns (vor allem um die Straßenseite) insbesondere bei unserer Abwesenheit nicht kümmern müssen.
Trotzdem hab' ich das bei dem Programm einstellbar gemacht, so dass sich das jeder nach seinen Wünschen einstellen kann.




BTDA schrieb:


> ... allerdings ohne Astro Uhr.


Gepaart mit Zufall ist das schon was anderes als 'ne einfache Uhr.


----------



## BTDA (22 August 2013)

Das Urprogramm war S7-200 ;-).
Das meinte ich.


----------



## hucki (22 August 2013)

Dann bitte. Bin immer neugierig auf andere Lösungen.


----------



## BTDA (22 August 2013)

Nicht schön aber funktional.
Und mittlerweile auch seit 2010 nicht mehr überarbeitet da wie schon geschrieben Umstieg auf S7-300. 
Ähem... hüstel....wie lade ich denn hier was hoch ???


----------



## hucki (22 August 2013)

BTDA schrieb:


> wie lade ich denn hier was hoch ???


Datei zippen und dann so:


hucki schrieb:


> Hochladen:
> Unter dem Antwortfeld auf "Erweitert" -> im erweiterten Antworteditor unter dem Antwortfeld auf "Anhänge verwalten" -> im aufpoppendem Anhangfenster rechts oben auf "Dateien hochladen" und "Dateien auswählen" -> Zip-Datei auf Deinem Rechner auswählen und "Speichern" -> zurück bei der Anhangsverwaltung auf "Dateien hochladen" und nach dem Hochladen auf "Fertig", wenn der Download am Ende des Posts mit dem formschönen Kasten und integriertem Downloadzähler erscheinen soll, wie in diesem Post. Alternativ an der "Cursorposition einfügen", dann halt ohne Kasten und Zähler dafür im Text plaziert.


Nur das Du den formschönen Kasten nicht in diesem sondern in einigen der weiter oben plazierten Posts sehen kannst.


----------



## mittelhofer (23 März 2014)

Hallo Rolf,
ich hätte Interesse an dem Funktionbaustein.

Gruß Werner


----------



## R.Blum (24 März 2014)

Moin Werner,

kannst du gerne habe, sende mir eine PN mit deiner Mailadresse und ich sende ihn dir zu.

Gruß Rolf


----------



## mittelhofer (24 März 2014)

Hallo Rolf,

besten Dank für Dein Angebot das ich gerne annehme. Meine Mailadresse: mittelhofer@freenet.de

Gruß Werner


----------



## Elerofan (26 Februar 2015)

Hallo Rolf,

warum "hoffentlich auch nie", habe eine S7-200 214 CPU, kann es sein das die Netzwerke sehr begrenzt sind ganz wenige Zeilen ?
Wo kann ich das auf Anhieb finden, im Systemhandbuch nicht gefunden

Danke Gruß Matthias


----------

