Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Rolladensteuerung - ein Taster

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ganz prinzipiell, ohne mir das näher angesehen zu haben:

    Du hast Daten in Deinem Baustein, die nur diesen betreffen, aber im nächsten Zyklus wieder benötigt werden. Sowas speichert man üblicherweise in Instanzdatenbausteinen.

    Fällt Dir dazu was ein?

  2. #12
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Und das Arbeiten mit Merkern in Bausteinen würde ich mir gar nicht erst angewöhnen.

    Du solltest im Baustein nur lokale Variablen verwenden. Schon deshalb, damit man den Baustein für mehrere Rollläden verwenden kann und nicht für jeden einen separaten schreiben muss.

  3. #13
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Wenn du Probleme mit der Flankenauswertung hast, dann bastel dir doch selber einen... bin mal so frei gewesen und habe das eben mal runter geschrieben..
    Solltest du kein AWL haben, dann ist ja kein Ding den Code in FUP zu machen... Und unten siehst du auch eine Möglichkeit, wie man eine Flanke sich selber basteln kann.
    Code eben noch schnell getestet... erfüllt deine Beschreibung... würde es dennoch noch "erweitern"... z.B. ist das Rollo immer unten, wenn ich die SPS startet??? aber das musst du selber machen

    Code:
    // OB 100
    // Initialisierung
    //      L     0
    //      T     "MB0"
    //      SET
    //      =     "M0.0"
    //OB 100
    //
    //
    // OB 1 bzw. FC
    //
    // Flankenauswertung
          U     "Taster"             //E0.0
          U     "Hilfsmeker"             // M60.0
          =     "Taster_pos_Flanke"             // M10.0
          UN    "Taster"
          =     "Hilfsmeker"
    // T1
          U     "M0.4"
          UN    "M0.0"
          S     "M0.0"
          R     "M0.4"
    // T2
          U     "M0.3"
          U     "Taster_pos_Flanke"
          S     "M0.4"
          R     "M0.3"
    // T3
          U     "Timer_2"    // U T2        // Timer T2 abgelaufen
          S     "M0.4"
          R     "M0.3"
    //------
          U     "M0.3"
          UN    "M0.4"
          L     S5T#30s
          SE    "Timer_2"
    // T4
          U     "M0.2"
          UN    "M0.3"
          U     "Taster_pos_Flanke"
          S     "M0.3"
          R     "M0.2"
    // T5
          U     "M0.1"
          UN    "M0.2"
          U     "Taster_pos_Flanke"
          S     "M0.2"
          R     "M0.1"
    // T6
          U     "Timer_1"         //U T1   // Timer 1 abgelaufen
          S     "M0.2"
          R     "M0.1"
    //------------------
          U     "M0.1"
          UN    "M0.2"
          L     S5T#30s
          SE    "Timer_1"
    // T7
          U     "M0.0"
          UN    "M0.1"
          U     "Taster_pos_Flanke"
          S     "M0.1"
          R     "M0.0"
    //Ausgänge
          U     "M0.1"  
          =     "Rollo_hoch"             //A0.0
          U     "M0.3"
          =     "Rollo_runter"             //A0.1
    Nachtrag: Und hier der Plan für den Code

    Roll.jpg
    Geändert von shutdown_TIA12 (20.03.2014 um 14:01 Uhr)

  4. #14
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Ich glaub' nicht, dass ihm das beim Lernen wirklich weiter hilft.
    Er ist kein Häuslebauer!


    Mal davon abgesehen, das ein Rollladenbaustein mit Merkern immer ein schlechtes Beispiel ist.
    Und auch die Siemenstimer sind m.M.n. da eher eine schlechte Wahl.
    Geändert von hucki (20.03.2014 um 11:48 Uhr)

  5. #15
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Was meinste mit Häuslebauer?
    Ich finds immer gut, wenn man auch eine fertige Lösung hat. Noch besser sind verschiedene Lösungsmöglichkeiten für eine Aufgabenbeschreibung... dann kann man selber etwas tüffteln in Bezug auf eine andere Aufgabe und selber die unterschiedlichen Möglichkeiten probiert Und dann entwickelt man mit der Zeit ein Gespür, wie s am besten ist. Aber jeder lernt ja anders

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Mal davon abgesehen, das ein Rollladenbaustein mit Merkern immer ein schlechtes Beispiel ist.
    Ich würde es auch wahrscheinlich entweder mit einem Zähler oder einer Zähl-Variablen machen.

  7. #17
    koisis ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.03.2014
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Leute,

    super daß ihr Anfänger wie mich nicht gleich zum Teufel jagt. Bin noch in einem Sportlerforum-da sind paar Nasen unterwegs kann ich euch sagen.

    Ok, bin im Moment noch auf Arbeit. Ich schau mir heut abend den Code von shutdown an. Ich hoffe ich kann dann die Logik die dahinter steht nachvollziehen.


    Ich bin natürlich dankbar für alle Tips wie man "richtiges" schreiben von Code von Anfang an angehen sollte.
    Will mir auch keinen Stil- wenns komplizierter wird wieder abgewöhnen müssen.

    Also nochmals danke an euch!

  8. #18
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von shutdown_TIA12 Beitrag anzeigen
    Was meinste mit Häuslebauer?
    Ich finds immer gut, wenn man auch eine fertige Lösung hat.
    Hier im Forum wird immer wieder betont, das man sich in der Ausbildung Befindlichen Hilfe zur Selbsthilfe und keine fertigen Lösungen (noch dazu ohne weitere Erklärungen) gibt. Das musste ich mir sogar schon trotz vorhergehenden wochenlangen Erklärungen meinerseits anhören.
    Bei (vermeintlichen) Errichtern eines Eigenheims, die ihre Automatisierung selbst erstellen, liegen die Prioritäten dagegen ganz klar auf schneller Problemlösung.


    Aber wenn's denn so sein soll:
    Zitat Zitat von koisis Beitrag anzeigen
    Ich bin natürlich dankbar für alle Tips wie man "richtiges" schreiben von Code von Anfang an angehen sollte.
    Will mir auch keinen Stil- wenns komplizierter wird wieder abgewöhnen müssen.
    Zitat Zitat von hucki Beitrag anzeigen
    Mal davon abgesehen, das ein Rollladenbaustein mit Merkern immer ein schlechtes Beispiel ist.
    Und auch die Siemenstimer sind m.M.n. da eher eine schlechte Wahl.
    Für gewöhnlich hast Du im Haus ja nicht nur einen Rollladen sondern mehrere. Wenn Du im Rollladen-Baustein Merker verwendest, sind diese feste globale Adressen, so dass Du diesen Baustein auch nur für einen einzigen Rolladen verwenden kannst.
    Verwendest Du dagegen im Baustein nur lokale Variablen, kannst Du den Inhalt der globalen Adressen, wie Ein-/Ausgänge beim Bausteinaufruf über die Schnittstelle an die lokalen Variablen übergeben und so ein und den gleichen Baustein für alle Rollläden verwenden.
    Auch bei eventuellen Änderungen mußt Du dadurch nur einen Baustein bearbeiten, anstatt sie bei jedem Rollladen durch zu führen.

    In diesem Rollladen-Baustein hast Du Daten, die Du vom aktuellen Zyklus zum nächsten speichern mußt und auch nur für diesen brauchst. Dazu gehören z.B. Flankenmerker und Multiinstanzen von IEC-Timern. Immer wenn Du solche Daten hast, solltest du einen FB verwenden. Dann legt jeder Aufruf des FBs seine Daten in seinem eigenen Instanzdatenbaustein ab. Bist Du Dir nicht sicher, ob Du einen FB brauchst oder auch ein FC reicht, bist Du mit dem FB auf der sicheren Seite.

    Somit hast Du für jeden Rollladen zwar immer den gleichen FB, aber jeder hat seine eigenen Ein-/Ausgänge an der Schnittstelle beim Aufruf und seine eigenen zu merkenden Daten, wie Flanken und Laufzeiten, in seinem IDB.

    Und deshalb ist hier ein IEC-Timer auch die bessere Wahl (mal davon abgesehen, dass die S7-1200 die S7-Timer auch gar nicht hat!), da diese als Multiinstanz angelegt ihre Daten ebenfalls im IDB des Rollladen-FBs speichern. Somit hat jeder Aufruf des FBs auch automatisch seinen eigenen Timer. Bei den S7-Timern müsste man einen Eingang an der Baustein-Schnittstelle anlegen und bei jedem Aufruf des Bausteins eine andere Timernummer übergeben. Geht zwar auch, ist aber hier umständlicher, da Du eh' noch andere Daten hast, die im IDB gespeichert werden sollten. Die Übergabe der Timernummer ist vor allem eine Möglichkeit für mehrfach nutzbare FCs mit Timern.


    Dann hatte ich geschrieben, dass man überlegen muss, welche Variablen man benötigt:
    1. reine Eingänge: Als Erstes steht hier natürlich der Taster zu Buche. Dessen Zustand muss man in den Baustein hinein bringen. Ausgeben muss man an den Taster nichts, daher nur IN.
    Dann ist es ratsam, auch die gewünschte Laufzeit variabel in den Baustein zu geben, denn die Rollläden können ja unterschiedlich groß sein und damit verschieden lange laufen. Dabei kann man am Besten eine Standardzeit vorgeben, dann muss man dies nicht bei jedem Aufruf wiederholen, sonder nur wenn die gewünschte Laufzeit davon abweicht.

    2. reine Ausgänge: Die Motorausgänge "Auf" und "Ab" sollen nur von diesem Baustein beeinflusst werden und das auch in jedem Zyklus von neuem. Daher kannst Du reine Ausgänge benutzen. Würdest Du dagegen z.B. den bisherigen Zustand in die Entscheidung für den neuen Zustand einfliessen lassen oder auch außerhalb des Bausteins auf diese Einfluss nehmen, dann sollte ein IN/OUT die Wahl sein. Das Gleiche gilt im Normalfall auch bei Verändern mit Setzen und Rücksetzen (vor allem in FCs!), da dies für gewöhnlich nicht in jedem Zyklus passiert!

    3. Schließlich die Variablen, die nur innerhalb des Bausteins benötigt werden und keinen "Kontakt" zu den restlichen Bausteinen haben:
    Da wären zuerst die Typen, die erst im Baustein zugewiesen/beschrieben und dann in weiteren Netzwerken lesend benutzt werden. Diese kann man temporär anlegen - das heißt, sie werden mit Beendigung des Bausteins zum Überschreiben freigegeben (das bedeutet nicht immer, das dies auch tatsächlich passiert, aber man sollte erst mal davon ausgehen!).
    Zum anderen hat man Variablen, die man in einem Zyklus beschreibt und im nächsten erst wieder liest. Diese muss man als statisch anlegen.
    Ein ganz typisches Beispiel dazu ist die Flankenerkennung:

    Der Taster ist ein Signal von außerhalb des Bausteins, dass im Baustein verarbeitet wird, aber an das nichts außgegeben wird -> Eingang
    Der Flankenmerker FM_Taster speichert den Zustand von Taster aus dem vorigen Zyklus (im ersten Zyklus schreiben, im 2. lesen) - daher unbedingt statisch!
    Der Melder "Flanke" wird nur im aktuellen Zyklus benötigt (im nächsten wird ja wieder neu entschieden) - daher reicht temporär.
    Wenn Du Dir nicht sicher bist - lieber auf Nummer sicher gehen und statisch speichern.

    Dann wollen wir mal überlegen, was Du unbedingt von einem Zyklus zum nächsten speichern mußt:
    den Zustand des Tasters (FM_Taster), den Zustand des Timerausgangs (FM_Timer) und die letzte Richtung des Rollladens.
    Außerdem wird der IEC-Timer beim Anlegen als Multiinstanz automatisch ebenfalls im STAT-Bereich gespeichert. Das kann man zwar auch selbst machen, aber zu Beginn ist es besser/sicherer, das von TIA beim Ziehen des Timers ins Netzwerk automatisch übernehmen zu lassen.
    Variablen, die im aktuellen Zyklus erst festgelegt und dann verwendet werden:
    wurde eine Flanke des Tasters detektiert (Flanke_Taster) und soll damit der Timer gestartet (Start) oder gestoppt (Stop) werden.
    Man könnte noch die detektierte negative Flanke des Timers in einer temporären Variablen speichern, doch da diese nur an einer Stelle benötigt wird, kann man das Ergebnis auch direkt weiter verarbeiten.

    Somit würde ich z.B. folgende lokale Variablen (=Bausteinschnittstelle) anlegen:


    Dann die einzelnen Netzwerke, wie oben beschrieben:
    Da der Zustand des Timers entscheidend für die auszuführende Aktion ist, muss diese unbedingt vor dem Starten oder Stoppen des Timers festgelegt werden!
    Beim Verarbeiten des Timerausgangs im Netzwerk 2 und 3 wird TIA meckern, da es den Timer vor Erstellen des Netzwerks 4 noch gar nicht gibt. Deshalb sollte man vorher den Timer erst mal im NW4 als Multiinstanz anlegen und dann erst die beiden vorigen Netzwerke fertig stellen (oder das Meckern von TIA einfach ignorieren).



    So, das soll nun wahrlich erst mal genug Erklärung sein. Den Aufruf des FBs mit dem Anlegen des IDBs solltest Du allein hinbekommen.
    Im nächsten Schritt kannst Du dann den FB ein weiters mal mit einem anderen Taster und anderen Ausgängen aufrufen.




    PS: Die Verwendung von lokalen Variablen in FCs und FBs würde ich an Deiner Stelle von Anfang an generell praktizieren. Ich persönlich hab' ziemlich lange gebraucht, ehe ich den "Murks" mit den Merkern wieder raus hatte.
    Und was ich jetzt hier schlechterweise nicht gemacht habe, Du Dir aber ebenfalls von Anfang an angewöhnen solltest - kommentieren, kommentieren und noch mal kommentieren. Wenn Du das nicht machst, wirst Du sehr oft bemerken, dass Du schon teilweise kurze Zeit später nicht mehr weißt, was Du Dir beim Coden da so gedacht hast.
    Geändert von hucki (21.03.2014 um 00:55 Uhr) Grund: Rechtschreibung

  9. Folgende 2 Benutzer sagen Danke zu hucki für den nützlichen Beitrag:

    PN/DP (21.03.2014),shutdown_TIA12 (21.03.2014)

  10. #19
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Hier im Forum wird immer wieder betont, das man sich in der Ausbildung Befindlichen Hilfe zur Selbsthilfe und keine fertigen Lösungen (noch dazu ohne weitere Erklärungen) gibt. Das musste ich mir sogar schon trotz vorhergehenden wochenlangen Erklärungen meinerseits anhören.
    Alles klar... war mir nicht bewußt.. werd mich dran halten beim nächsten mal...

    Wenn es nach meinem ehemaligen Prof. gehen würde, dann ist das Bild Dokumentation genug und selbst erklärend. Die Umsetzung des Bildes in Code ist nur noch eine Fingerübung (gibt auch Tools, die das für einen übernehmen). Deswegen auch keine weitere Erkärung. Gibt genug Fachbücher dazu. Das "Verfahren" welches ich genutzt habe schimpft sich SIPN (steuerungstechnisch interpretierbare Petrinetze). Ich finde die Nutzung von Merkern auch nicht optimal... Gründe hat hucki ja schon genannt.. Aber die SIPN werden mit Merkern umgesetzt... sicherlich kann man den Entwurf des SIPN auch in einer gekapselten Funktion unterbringen. Das wäre dann schon mal besser.

    Jetzt haben wir hier zwei Lösungen... einmal eine ablauforientierte und eine verknüpfungsorientierte Methode... ist doch auch was...

    mir war gar nicht bewußt, dass es auf der 1200er keine S7-Timer existieren. Aber hast recht... am besten ist es immer, wenn man sich an die IEC-Norm hält... und am besten hardwareunabhängig programmiert... Also auch die Taktmerkerbits der CPU nicht aktivieren!!

    Achja, ... ist die Flankenerkennung auch IEC-Norm ?

  11. #20
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.534
    Danke
    1.152
    Erhielt 1.253 Danke für 982 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von shutdown_TIA12 Beitrag anzeigen
    Aber die SIPN werden mit Merkern umgesetzt...
    Das ist schlichtweg falsch.
    Du kannst das ganze z.B. in einen FB packen und statische Bool-Variablen verwenden.

Ähnliche Themen

  1. Rolladensteuerung 1 Taster für hoch und runter / LOGO
    Von Guennesack im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 23.12.2011, 21:08
  2. S5 Ein Taster viele Funktionen
    Von naturhof-Stefan im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.02.2011, 16:50
  3. Rolladensteuerung mit einem Taster
    Von saschag. im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 29.08.2009, 02:07
  4. Ein Taster - Drei Funktionen
    Von biggestcrunch im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2005, 06:15
  5. WinCC und ein Taster?
    Von kaufmann-michael im Forum HMI
    Antworten: 2
    Letzter Beitrag: 10.03.2004, 10:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •