Schrittrelais mit Logo

Taschenklemme

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

ich habe nach langer Abstinenz mal wieder etwas mit einer Logo probiert und wollte ein Schrittrelais programmieren.
Das hat auch geklappt, aber meine Lösung kommt mir sehr kompliziert vor.

Ist es richtig, dass ein Schrittrelais nur mit relativ viel Aufwand zu programmieren ist?


Im konkreten Fall wollte ich eine Rollladensteuerung mit Selbsthaltung mit zwei Tastern realisieren.
Beispiel:
Taster auf kurz gedrückt -> Rollos fahren 1 Minute lang auf
Taster ab innerhalb der Minute kurz gedrückt -> Rollos stoppen
Taster ab nochmal gedrückt -> Rollos fahren 1. Minute lang runter
Taster auf innerhalb der Minute gedrückt -> Rollos stoppen

Um das zu programmieren, habe ich 10 Bauteile benötigt. Das kommt mir recht viel vor und ich vermute, dass ich so keine 8 Rollläden programmiert bekäme und für Extras wäre auch kein Platz mehr.
 
Kommt ganz darauf an, welche LOGO Du hast. Ab der 4er Version hast Du mind. 130 Funktionsblöcke zur Verfügung, das müsste doch reichen.
 
Habe mal was gebastelt, brauche pro Rollo nur 6 Funktionsblöcke.
...
Im konkreten Fall wollte ich eine Rollladensteuerung mit Selbsthaltung mit zwei Tastern realisieren.
Beispiel:
Taster auf kurz gedrückt -> Rollos fahren 1 Minute lang auf
Taster ab innerhalb der Minute kurz gedrückt -> Rollos stoppen
Taster ab nochmal gedrückt -> Rollos fahren 1. Minute lang runter
Taster auf innerhalb der Minute gedrückt -> Rollos stoppen
...
Ist 'ne Möglichkeit, aber die Vorgabe wird nicht ganz erfüllt (Stoptasten vertauscht)!
 
Hab's mal umgebaut:
[EDIT]
Noch etwas einfacher mit STOP bzw. ohne Anlauf bei Betätigung beider Tasten:



[
EDIT2]
Variante ohne Nachtriggerung bei erneutem Druck auf die Taste:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist 'ne Möglichkeit, aber die Vorgabe wird nicht ganz erfüllt (Stoptasten vertauscht)!

Stimmt, hatte ich glatt überlesen.

@ Hucki:

Bei Deiner Schaltung ist es aber möglich, die laufende Zeit einer Richtung durch erneutes Tasten der gleichen Richtung Zeit nach zu starten, während sie noch läuft.

Darum mein Vorschlag:
 

Anhänge

  • Rollosteuerung2.jpg
    Rollosteuerung2.jpg
    25,4 KB · Aufrufe: 35
War mir auch aufgefallen, deswegen die 2. (eigentlich 4.) Variante.

Und zum Resetten der Timer nicht die Flanke nehmen, sonst startet die andere Seite, wenn beide Taster gedrückt werden, aber nur einer kurz wieder losgelassen und neu gedrückt wird, obwohl die Gegenseite noch gedrückt ist. (Deswegen schon 4.Variante bei mir)
Und STOP sollte ja immer Vorrang haben.
 
Zuletzt bearbeitet:
Erstmal vielen Dank für die ganzen Lösungsvorschläge. Super!

Ich habe eine 0BA5. Ich war bisher davon ausgegangen, dass diese 50 Funktionsblöcke erlaubt.
Bei 130 sieht es schon besser aus.
Im Moment möchte ich erst mal die Grundfunktion realisieren, aber später möchte ich von jedem Taster aus über Tastcodes alle Rollläden rauf- und runterfahren können und ich möchte jeden Rollladen in eine bestimmte, gespeicherte, zeitgesteuerte Position fahren können. Also z.B. 1min nach unten und danach 10s nach oben, damit man die Dinger etwa 10cm offen stehen hat.

Ob das dann alles reinpasst, bezweifle ich noch. Bis heute Mittag hätte ich klar gesagt, dass es nicht geht :)


Meine Lösung sah bisher so aus:
c0s81vybigu148gfs.gif


Da ist bisher nur der obere Taster so ausgestattet, dass er die andere Richtung stoppt und nicht mit der gleichen Flanke nach oben fährt.

Dass man bei den UND-Bausteinen die Eingänge negieren kann, wusste ich nicht. So kann man natürlich wertvollen Platz sparen :)



Bei den derzeit hier verbauten Tastern kann man nicht beide Tasten gleichzeitig drücken. Die Taster und die Kontakte sind mechanisch gegeneinander verriegelt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Falls Dir der Funktionsumfang der 5er Version noch nicht bekannt ist:

Code:
Bekannte Blöcke:
Konstanten/Klemmen: Eingang,Cursortaste,Schieberegisterbit,Analogeingang,Ausgang,Analogausgang,Offene Klemme,Merker,Analoger Merker,Zustand 1 (high),Zustand 0 (low)
Grundfunktionen: AND,AND (Flanke),NAND,NAND (Flanke),OR,NOR,XOR,NOT
Sonderfunktionen: Einschaltverzögerung,Ausschaltverzögerung,Ein-/Ausschaltverzögerung,Analogverstärker,Analogwertüberwachung,Schieberegister,PI-Regler,Analog-MUX,Analogrampe,Speichernde Einschaltverzögerung,Selbsthalterelais,Stromstoßrelais,Wischrelais/Impulsausgabe,Wischrelais, flankengetriggert,Wochenschaltuhr,Jahresschaltuhr,Vor-/Rückwärtszähler,Betriebsstundenzähler,Impulsgeber,Zufallsgenerator,Schwellwertschalter,Analoger Schwellwertschalter,Analoger Differenz-Schwellwertschalter,Analogkomparator,Treppenlichtschalter,Komfortschalter,Meldetext,Softwareschalter
Maximale Resourcen:
Funktionsblöcke 130
REM 60
Digitaleingänge 24
Digitalausgänge 16
Merker 24
Analogeingänge 8
Textbox 10
Analogausgänge 2
Programmzeilenspeicher 2000
Blocknamen 64
Analoge Merker 6
Cursortasten 4
Schieberegister 1
Schieberegisterbits 8
Offene Klemme 16
 
Danke für die Info.
Diese Liste habe ich heute auch zufällig beim Spielen mit der Software gefunden.

Ich dachte, dass man schon im Programm irgendwo einstellen können sollte, welche Logo später verwendet wird.
 
Das kann man auch.
 

Anhänge

  • LOGO 1 Menu.JPG
    LOGO 1 Menu.JPG
    153,1 KB · Aufrufe: 20
  • LOGO 2 Geräteauswahl.JPG
    LOGO 2 Geräteauswahl.JPG
    189 KB · Aufrufe: 22
Hallo nochmal,

nachdem ich die Logo denn nun auch wirklich mal einsetzen wollte (bin bisher nicht dazu gekommen :( ),
habe ich mich nochmal davor gesetzt und wollte das Programm auch richtig verstehen.
Huckis Lösung funktionierte ja soweit einwandfrei, aber mir gefällt es nicht, dass man zum Verständnis des Programms genau nachvollziehen muss, was in einem und dann im nächsten Zyklus genau passiert.

Ich habe mir deswegen eine Lösung mit einer definierten Zeitsperre gebaut. Diese Zeit muss gewartet werden, bevor man einen Motor erneut starten kann. Anhalten geht natürlich sofort. So ist sichergestellt, dass Motoren immer eine Mindestpause haben, bevor sie erneut anlaufen. Das dürfte sowohl den Motoren, als auch den Kontakten gut tun.

Insgesamt brauche ich nicht mehr Funktionsbausteine.

Das Ganze sieht dann für einen Rollladen so aus:

Rollo_m_Umschaltverzoegerung.png

Statt des einfachen Rückfallverzögerungsrelais habe ich das flankengesteuerte Wischrelais genommen.

Die Schaltung lässt auch kein Nachtriggern zu, wobei mich das nicht gestört hätte.
 
...
Diese Zeit muss gewartet werden, bevor man einen Motor erneut starten kann. Anhalten geht natürlich sofort. So ist sichergestellt, dass Motoren immer eine Mindestpause haben, bevor sie erneut anlaufen. Das dürfte sowohl den Motoren, als auch den Kontakten gut tun.
...
Hast Du dran gedacht, was passiert, wenn versehentlich die falsche Richtung gedrückt wird oder der Rolladen weiter fährt als er soll, z.B. wenn Du wegen Sonne nur etwas abdunkeln willst. Dann musst Du 2min warten, bevor Du die Gegenrichtung ansteuern kannst!
Mich würde das stören.
Selbst wenn Du 10x hoch und runter fährst, dürfte der Motor hinterher wieder genug Ruhe bekommen, um sich zu erholen (ich glaub' auch nicht, daß die Motoren damit so riesig belastet wären, ansonsten sind diese viel zu klein gewählt).


PS: Wenn Deine Lösung so (ohne die Flanken) funktioniert, würdest Du ohne den Ruhetimer sogar mit 4 Bausteinen auskommen. Die beiden Ausgänge kannst Du auch ohne das ODER direkt auf die beiden UNDs geben, da sind ja noch Eingänge frei. Damit reichst Du dann nochmal 'ne ganze Ecke weiter.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Zeitsperre beträgt im Beispiel 2s, nicht 2mins.
Die 2s sind jetzt auch nur zum Ausprobieren eingegeben. In der Praxis soll das auf 1s oder 0,5s gesenkt werden. Der Hersteller gibt mindestens 0,2s vor.

Sinn der Sache ist, dass man die Rollladen nicht beliebig schnell hin und her schalten kann. Der Motor hat einen Kondensator, der sich erst entladen soll. Außerdem soll der Motor stehen, bevor er wieder Spannung bekommt, damit die Relaiskontakte nicht auch noch gegen die induzierte Spannung schalten müssen.

Laut Anleitung dürfen die Motoren nur 180s am Stück unter Spannung stehen und maximal 4mins laufen.
Was damit genau gemeint ist, weiß ich nicht, denn ich finde keine Angabe der vorgeschriebenen Ruhezeit.


Wenn ich die Ausgänge ohne die Zeitverzögerung auf die Oder-Glieder gebe, dann kann ich die Motoren nicht mehr anhalten und sie fahren sofort in die entgegengesetzte Richtung.
Es ist ja so gedacht, dass ich mit dem Druck auf die entgegengesetzte Richtung die Motoren anhalte und die erst mit erneutem Druck auf eine Taste wieder anfahren.


Die Sache mit der Logo wird aber vermutlich nur eine Übergangslösung sein. Ich finde die Programmierung ziemlich kompliziert. Ich komme damit zumindest nicht gut zurecht.
Ich habe ein bisschen mit S7-200 gemacht und das fällt mir wesentlich leichter. Damit traue ich mir eher zu, auch etwas umfangreichere Sachen einzubauen, ohne dabei den Überblick zu verlieren.
 
Die Zeitsperre beträgt im Beispiel 2s, nicht 2mins.
...
Oh sorry, falsch gelesen. :oops:


...
Die Sache mit der Logo wird aber vermutlich nur eine Übergangslösung sein. Ich finde die Programmierung ziemlich kompliziert. Ich komme damit zumindest nicht gut zurecht.
Ich habe ein bisschen mit S7-200 gemacht und das fällt mir wesentlich leichter. Damit traue ich mir eher zu, auch etwas umfangreichere Sachen einzubauen, ohne dabei den Überblick zu verlieren.
Da kann ich Dich nur dazu ermutigen. Damit kannst Du sicher auch "einfacher" Deine gewünschten Tastencodes programmieren.
Außerdem kannst Du ein Unterprogramm (SBR) für einen Rollladen proggen und den dann für alle Rollläden wiederverwenden.
 
Zuletzt bearbeitet:
Unterprogramme in der S7-200 würde ich der Übersicht wegen sehr gerne verwenden. Allerdings habe ich damit noch nie etwas gemacht und habe auch noch keine Anleitung dazu gefunden.
Außerdem habe ich mehrfach gelesen, dass man bei Flankenauswertungen Probleme bekommen kann, und dass es nicht ganz trivial ist, wie die Variablen abgelegt werden.
Ich habe hier im Forum zwar ein Beispielprogramm gefunden, was sogar von dir sein könnte :), aber da blick ich ohne Anleitung nicht durch.

Also im Zweifelsfall mache ich das ohne Unterprogramm. Dann bin ich mir sicher, dass ich es hinbekomme :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, Flanken mußt Du entweder außen an die SBR legen oder in der SBR selbst programmieren und über eine IN/OUT-Variable nach außen führen. Ist aber leichter als es im Moment gerade klingt.

Und ja, ich hatte hier mal sowas gemacht (ich nutze sowas gern zum Üben). Allerdings waren die Vorgaben etwas anders.
Aber das war 'ne gute Übung für mehrfach verwendete SBRs mit folgendem Prinzip:
Jeder Rollladen hat zwei Richtungen, die aber von der grundlegenden Programmierung her gleich sind - also eine SBR, pro Rolladen 2x verwendet.
Alle Rolläden sind gleich -> also die SBR, in der die zwei Richtungs-SBRs stecken, immer wieder verwenden. nur jeweils die Außenbelegung der SBR ändern

Das Problem in solchen SBRs sind Timer, deshalb hab' ich von außen einen Takt angelegt und in den SBRs manuell gezählt.
In den "größeren" CPUen (z.B. S7-224XP) gibt's aber auch noch andere Timer, die man auch in mehrfach verwendeten SBRs benutzen kann.
Eine noch andere Möglichkeit wäre die Systemzeit (die diese Timer verwenden) selbst auszulesen.


Aber auf jeden Fall wird Dir bei Problemen hier sicher geholfen.


PS: Falls es noch interessiert, das war der Thread, mit dem's begann: S7-200-Rolladensteuerung-mit-Tip-Automatik und hier wurde es fortgesetzt: S7-200-Zeiten-und-Timer-in-Unterprogrammen. Da kannte ich aber die Möglichkeiten mit den Timern BGN-ITIME und CAL-ITIME noch nicht. Heute würde ich das wahrscheinlich etwas anders lösen.
 
Zuletzt bearbeitet:
Dass das in einem anderen Thread weiter gegangen ist, hatte ich noch nicht gesehen. (EDIT: Hab ich mir gerade mal durchgelesen)

Mein Problem mit SBRs ist, dass ich überhaupt nicht weiß, worauf es da ankommt, wie man Parameter übergibt, wie die Syntax und die Bezeichnungen aussehen.
Das, was ich in deinem Rollo-Programm gesehen habe, reicht nicht, um das Prinzip zu verstehen.
Z.B. verwendest du da absolute Adresse für eine Richtung. Wenn man die Richtung nun mehrmals und zeitlich überlappend aufruft/benutzt, werden die Werte in diesen absoluten Speicheradressen dann nicht überschrieben?

Ich habe bisher nur etwas in Pascal, also keinem Echtzeit-, oder Multitaskingsystem, mit Unterprogrammen programmiert. Da war das alles eindimensional und leichter zu überblicken. :)

Ich habe hier eine S7-226. Ob die solche besonderen Timer hat, weiß ich nicht. Ich würde sowas aber lieber nicht verwenden, denn wenn man mal Ersatz braucht, dann habe ich lieber ein Programm, was auf möglichst vielen CPUs laufen kann.



Die Rollosteuerung mit einer S7-200 für ein Rollo habe ich schon fertig. Ist ja auch nicht viel. Normalerweise würde ich das nun kopieren und für jedes Rollo kopieren und mit neuen Adressen versehen. Das wird dann natürlich umfangreich, aber es wäre für mich einfach und es wäre leichter, Ausnahmen einzufügen.
Aber ich würde auch sehr gerne deine Version verstehen. Vielleicht bietet die ja viel mehr Vorteile, als ich es mir im Moment vorstelle.
 
...
Die Rollosteuerung mit einer S7-200 für ein Rollo habe ich schon fertig. Ist ja auch nicht viel. Normalerweise würde ich das nun kopieren und für jedes Rollo kopieren und mit neuen Adressen versehen. Das wird dann natürlich umfangreich, aber es wäre für mich einfach und es wäre leichter, Ausnahmen einzufügen.
Aber ich würde auch sehr gerne deine Version verstehen. Vielleicht bietet die ja viel mehr Vorteile, als ich es mir im Moment vorstelle.
So hab' ich auch angefangen und find' das auch gut, um erst mal die Grundlagen zu begreifen.

Das Problem dabei ist, wenn Dir mal was missfällt und Du das änderst, dann mußt Du es x-mal ändern. Und da ist schnell mal was übersehen.

Mit der SBR ist eigentlich relativ simpel:
Du hast jetzt einen Rolladen erstellt. Das alles verschiebst Du vom OB1 in eine SBR und rufst diese vom OB1 auf. Damit ist bis jetzt alles gleich, außer daß der Code in der SBR steht.
Was muß nun angepasst werden, damit man die SBR mehrfach verwenden kann - die absoluten Adressen.
Dafür gibt es oberhalb vom Code Ein-, Aus-, Ein-/Ausgänge und temporäre Variablen (die Schnittstelle der SBR; lokale Variablen; die Namen/symbolischen Bezeichnungen haben im Programm ein # am Anfang; die Adressen beginnen mit L...). Die Ein- und Ausgänge erscheinen dann (z.B. im OB1) beim Aufruf der SBR, wo Du sie wieder mit den vorher verwendeten absoluten Adressen belegst. Also z.B. beim ersten Aufruf ist in der SBR der Eingang #IN1 von außen mit E0.0 belegst, beim zweiten Aufruf aber mit E0.2. Damit sagst Du also der SBR extern welche Adressen sie in Wahrheit verwenden soll, ohne sie intern hineinzuschreiben.

Das Problem bei der kleinen S7-200 ist halt, das dieses Prinzip nicht mit Timern und Zählern funktioniert, da man einfach der SBR nicht sagen kann, benutze beim ersten Aufruf Timer T1 und beim zweiten Aufruf T2 (bei Zählern ist es analog). Die "großen" S7-300/400 können das. Deshalb muß man da etwas "tricksen" und das selber programmieren. Zähler sind dabei relativ einfach, denn die sind meist bloß 'ne Addition von +1. Bei Timern muß man halt auf die Systemzeit zurückgreifen und entsprechend vergleichen. Ich glaube die letzten S7-22x können das alle mit den oben genannten internen Funktionen. Du kannst ja mal in Microwin die einzelnen CPU-Typen einstellen und dann im Ordnerbaum unter Timern nachsehen, welche Timerarten dann noch verfügbar sind.
PS1: Wie gesagt, kannte ich damals die beiden xxx-ITIME-Funktionen noch nicht, deshalb sind in dem Programm im 2. verlinkten Thread die Timer für die Motorverriegelungen noch außerhalb der mehrfach verwendeten Rolladen-SBR. War halt auch 'ne Lösung.

Eine Alternative wäre vlt. die neuere S7-1200, die ist den "großen" S7-300/400 ähnlicher. Die "alte" S7-200 ist eh' nur noch als Ersatzteil die nächsten 8 Jahre lieferbar.


PS2: Wenn Du einen Rolladen nach Deinen Vorstellungen programmiert hast und das Ganze hier posten würdest, helfen wir Dir gern, das mehrfach verwendbar zu machen.
 
Zuletzt bearbeitet:
Zurück
Oben