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

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

Thema: RS-Flipflop als R und S einzeln

  1. #11
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So hier nun mal ein Screenshot.
    Angehängte Grafiken Angehängte Grafiken
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  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

    Also ich denke mal, die Schrittmerker müssen auf jeden Fall IN/OUT sein, sonst ist der aktuelle Schritt nach dem Zyklus ja wieder weg.
    Die reinen OUTs werden in jedem Zyklus innerhalb des SBRs neu gebildet, ohne den Stand der Merker vom vorigen Zyklus zu berücksichtigen.

    PS: Es ist meist günstiger, die Schrittkette rückwärts zu programmieren. Also erst Schritt 3, dann 2 und zum Schluß 1.
    Vorwärts kann es passieren, das mehrere Schritte oder gar die gesamte Kette in einem Zyklus durchrauscht.
    Beim Rückwärtsaufbau ist zwischen jedem Schritt immer mindestens ein Zyklus und somit werden Aktionen zwischen den Schritten meist besser erfasst.
    Geändert von hucki (08.02.2012 um 18:25 Uhr)

  3. #13
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ich werds mal ausprobieren mit dem IN/OUT.
    Also bei mir wird sie nicht durchrauschen, so schnell sind die Zylinder ja garnicht.
    Außerdem läufts ja wenn ich für jedes eine eigne SBR mache ohne Lokalvariablen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  4. #14
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Also mit dem IN/OUT funktioniert es. Ist aber eigentlich nicht richtig so. Bei anderen SPSen funktioniert es.

    Nun hab ich mal ein paar Zeiten reingemacht, um zu schauen ob das wenigstens läuft.
    Aber auch nicht. Wenn die eine Zeit, läuft die andere in der anderen Schrittkette auch.
    Hab mal ein Beispielprogramm im Anhang gepackt um das zu verdeutlichen.

    Jetzt weiß ich, warum ich S7 nicht mag.
    Angehängte Dateien Angehängte Dateien
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  5. #15
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    @Mobi:
    Du machst hier den Fehler zwischen Global-Variablen und Lokal-Variablen und temporären (nicht remanenten) Variablen nicht zu unterscheiden.
    Wenn du das in deiner Phoenix-Steuerung machst (ich kenne das Gerärt nicht) wirst du bestimmt das gleiche Problem bekommen.
    Aber - eine S7-200 ist auch keine S7 (auch wenns dran steht).

  6. #16
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ich unterscheide aber. In einem SBR sollten möglichst nur lokale drin sein, wie bei mir. Aber bei dem Timer kann ich das ja nicht ändern von global auf lokal. Hab es jetzt anders gelöst. Unzwar nutze ich den TON von Siemens. Wo man dann den aktuellen CV-Wert hat von dem Timer, diesen speicher ich mir zwischen in einer VDxx-Variable. Damit läuft es prima. Ich werd mal morgen früh das aktuelle Projekt hochladen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  7. #17
    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 Mobi Beitrag anzeigen
    Also mit dem IN/OUT funktioniert es. Ist aber eigentlich nicht richtig so. Bei anderen SPSen funktioniert es.
    ...
    Ist richtig so!
    Ein OUT ist beim Aufruf der SBR immer NULL und wird erst in der SBR bei entsprechenden Bedingungen gesetzt/berechnet (oder nicht) und dann nach aussen weitergegeben. Beim nächsten Aufruf wieder NULL ...
    Beim IN/OUT wird der Zustand der Variable von außen in die SBR übernommen, weiterverarbeitet und anschließend der neue Zustand nach außen gegeben. Beim nächsten Aufruf wieder der Zustand von außen, weiterverarbeiten ...
    Also wie sollten Deine Schrittmerker ihre Zustände behalten, wenn Du sie nicht außerhalb der SBR speicherst und beim nächsten Zyklus den letzten Zustand in der SBR wieder herstellst?
    Wie das bei anderen CPU außer S7 ist kann ich nicht sagen, aber zumindest für mich macht das so Sinn. Wobei die 200er ja nicht mal von Siemens direkt ist, sondern mal extern eingekauft wurde. Deshalb auch die Programmierung mit MicroWin und nicht Step7.



    Zitat Zitat von Mobi Beitrag anzeigen
    ...
    Nun hab ich mal ein paar Zeiten reingemacht, um zu schauen ob das wenigstens läuft.
    Aber auch nicht. Wenn die eine Zeit, läuft die andere in der anderen Schrittkette auch.
    Hab mal ein Beispielprogramm im Anhang gepackt um das zu verdeutlichen.
    So wie in Deinem Beispiel funktioniert es nicht, [Edit] wie Du ja schon selbst festgestellt hast. (Wer lesen kann ist klar im Vorteil, also nee Hucki!)[/Edit]
    Du rufst den SBR 2x auf, aber innerhalb des SBR wird immer der gleiche Timer T37 (bzw. T38 ) verwendet. Wie soll ein Timer zwei Zeiten messen?

    Du hast aber eine CPU 226. Damit stehen Dir die Befehle BGN_ITIME und CAL_ITIME zur Verfügung.
    Wenn ein Timer gestartet werden soll (Flanke), speicherst Du mit BGN_ITIME die CPU-Zeit in eine Doppelinteger-Variable. Anschließend vergleichst Du, solange Deine Startbedingung weiter besteht, diese gespeicherte CPU-Zeit mit der aktuellen mittels CAL_ITIME. Die Differenz wird wieder in eine Doppelinteger als Millisekunden ausgegeben. Die Differenz kannst Du dann mit Deinen Vorgabewerten vergleichen und wenn die Zeit abgelaufen ist, Deine Aktionen auslösen.
    Und alle diese Variablen können außerhalb der SBR gespeichert werden und die SBR somit für mehrfachen Aufruf mit verschiedenen Zeiten/Starts verwendet werden, wenn Du (wie bisher) innerhalb nur lokale Variablen verwendest.

    Und wieder überlegen:
    Sollen die Variablen nur reingeben werden; in der SBR vielleicht verarbeitet, aber nicht nach draußen weitergegeben werden nur - IN.
    Soll der letzte Zustand der Variable in der SBR verarbeitet und der neue Zustand wieder draußen gespeichert werden - IN/OUT.
    Soll eine Variable immer von NULL ausgehend bearbeitet werden und dann der neue Zustand nach draußen - OUT.


    Such' mal hier nach "Vitasun". Da hat ich mal ein Programm für jemanden optimiert, so dass er nur eine SBR für mehrere verschiedene Sonnenbanken mit unterschiedlichen Zeiten nutzen konnte.
    Geändert von hucki (09.02.2012 um 18:40 Uhr)

  8. #18
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ja danke nochmal hucki für die ausführlich Erklärung. Eine SBR hat also das Verhalten von einem FC. Aber schade, dass es keine FB's gibt, die man dann instanzieren kann. Dann geht das auch mit den Merkern. Ist halt blöd das die Timer global sind. Dei 200er ist halt ne low-cost-Variante.
    Ich bleib dann doch lieber bei meinen Phoenix-Steuerungen . Da kann ich auch die Flankenerkennung mit in einem Baustein packen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  9. #19
    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 Mobi Beitrag anzeigen
    ...
    Eine SBR hat also das Verhalten von einem FC. Aber schade, dass es keine FB's gibt, die man dann instanzieren kann. Dann geht das auch mit den Merkern. Ist halt blöd das die Timer global sind. Dei 200er ist halt ne low-cost-Variante.
    Ich bleib dann doch lieber bei meinen Phoenix-Steuerungen . Da kann ich auch die Flankenerkennung mit in einem Baustein packen.
    Ich mach' zwar selten was anderes als die 200er, aber ich bin der Meinung, auch im FB werden OUTs (zumindest bei S7) jedesmal mit NULL beginnend neu berechnet. Aber mit dem FC hast Du auf jeden Fall recht, denn Du hast ja keine statischen lokalen Variablen (und brauchst deshalb auch keinen Datenbaustein für die SBR).
    Und auch bei der 200er kann man die Flankenerkennung in der SBR machen. Man braucht dann halt nur einen eigenen Flankenmerker (ich kann wieder nur mit S7 vergleichen und da braucht man den eh), den man von außen als IN/OUT an die SBR gibt.
    Und der 3. Vergleich zur großen S7 - auch da sind die "normalen" Timer global. Man hat nur den Vorteil, dass man die als "Variable" an die/den Funktion/-sbaustein übergeben kann.
    Oder man nimmt die IEC-Timer und die machen eigentlich genau dass, was ich mit BGN_ITIME und CAL_ITIME beschrieben habe, nur dass man's nicht "sieht".

  10. #20
    Avatar von Mobi
    Mobi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.296
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich bin es halt gewohnt nach der IEC 61131 zu programmieren. Da werden dann auch die Zustände im FB gespeichert (und wenn man möchte auch remanent) und somit kann man dann auch ordentliche Schrittketten basteln. Kann man denn von einem fertigen Programm zur IEC-Version wechseln? Oder muss man das am Anfang irgendwo festlegen?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ähnliche Themen

  1. LEDs einzeln ansteuern?
    Von Osiris im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 12.10.2010, 14:40
  2. Antworten: 7
    Letzter Beitrag: 14.07.2010, 13:17
  3. DB Variablen einzeln ansprechen
    Von Perseus79 im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 08.12.2009, 13:37
  4. Antworten: 6
    Letzter Beitrag: 18.02.2009, 12:41
  5. Antworten: 5
    Letzter Beitrag: 29.06.2007, 09:28

Lesezeichen

Berechtigungen

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