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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 37

Thema: Siemens Logo Programmierhilfe

  1. #21
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von EMZ Beitrag anzeigen
    wie würde dann das Programm aussehen wenn ich das ohne den zwei integrierten Schieberegistern mache, sondern nur mit den selbst erstellten ?
    Die Benutzung des Ausgangs des analogen Schieberegister hatte ich oben im Versuch dazu schon mal gepostet:



    Es sollte also im Programm noch kein Problem darstellen, die integrierten Schieberegister zu löschen und stattdessen, wie im Versuch, den Ausgang des analogen Schieberegisters zu nutzen (grün):



    Bei der Gelegenheit verweise ich gleich noch mal auf den Eingang des (Gesamt-) Schieberegisters B008 (rot), weil das bei den nächsten Schritten von Bedeutung ist.



    Jetzt hast Du allerdings nur noch insgesamt 90 Schiebe-Bits. Das bedeutet, Du mußt (erst) nochmal 15 Bits zum Register hinzufügen -> Deine 4. Frage:
    Zitat Zitat von EMZ Beitrag anzeigen
    -Ich habe mal versucht ein selbsterstellen Schieberegister zu bauen, um zu den 105 Bits 15 Bits mehr hinzuzufügen, hat irgendwie nicht geklappt, obwohl ich die Parametersätze wie bei den anderen Funktionsblöcken übernommen habe. So ganz habe ich das Programm noch nicht durchleuchtet.
    Hinzufügen mache ich am unteren Ende, weil da naturgemäß noch Platz auf dem Arbeitsblatt ist. (Etwas einfacher wäre am oberen Ende, dafür muss man dann das ganze Register nach unten verschieben, um Platz zu bekommen. - Gelöscht wird immer von oben.)
    Also, das unterste Einzelregister (grün) markieren, kopieren und drunter noch mal einfügen:



    Den Takt an das neue Register anschließen, den Eingang des (Gesamt-) Schieberegisters B008 (rot, da war doch weiter oben was) auf das neue 1. Register umschreiben und dabei die Verweise zur Berechnung (grün) wieder einfügen (werden beim Kopieren gelöscht!) und abschließend den Eingang des vorherigen 1. Registers auf den Ausgang des neuen 1. Registers verknüpfen (orange):



    Das vorherige Schieberegister Bit 1-16 (türkis) wird dann Bit 16-30. Die Umbenennung setzt sich so bis zum obersten Einzelregister fort.


    Als letzte Anpassung haben wir jetzt beim letzten Einzelregister einige Bits zuviel, was dann Deine 2. & 3. Frage beantwortet:
    Zitat Zitat von EMZ Beitrag anzeigen
    -Also wenn ich das jetzt bei deinen selbsterstellten Schieberegistern ansehe, hast du immer in 15 ner Schritten (Bits) gearbeitet . Kann man auch je Schieberegister eine beliebige Zahl nehmen z.B. 12 ? Wenn ja wie kann ich es definieren, dass je Schieberegister statt 15 Bit z.B. 12 Bit verschoben werden?

    -Wenn ich z.B. die On/OFF Werte beim analogen Schwellwertschalter ändere, dann macht das Programm irgendwas und die Funktion ist dann nicht mehr erfüllt, ich weiß aber nicht warum.
    Ich hatte die grundlegende Funktion zwar hier schon mal erklärt:
    Zitat Zitat von hucki Beitrag anzeigen
    Dann brauchst Du ein eigenes Schieberegister:
    Dazu ein paar Vorbetrachtungen. Wenn ein Bit in einem Binärwert um eine Stelle nach links verschoben wird, so wird z.B. aus 'ner 1 eine 2, aus 'ner 2 eine 4 oder aus 'ner 8 eine 16. Es entspricht also einer Multiplikation mit 2. Wird dagegen das höchste Bit aus dem Wert herausgeschoben, veringert sich der Wert um 2^x, wobei x der herausgeschobenen Bitstelle (begonnen bei 0) entspricht.
    Analogwerte können bei der Logo bis 32.767 berechnet werden. Das sind 15 Bits (Bit 0 - 14). Das 16. Bit dient übrigens, wie üblich, als Vorzeichen.
    ...

    Das Ganze hab' ich also mit den Analogbausteinen, die das Rechnen ermöglichen, versucht nachzubauen. Es entstand ein 15-Bit-Schieberegister:

    sollte dann aber doch noch zusätzlich detailierter auf die einzelnen verwendeten Bausteine (mit den Bausteinbezeichnungen aus dem Quote) eingehen:
    Die arithmetische Anweisung B002 ist der Wert des einzuschiebenden Bits. Beim Kaskadieren mehrerer Register ist das der Ausgang des vorigen Registers. Eingeschoben wird immer an Bit 0 mit der Wertigkeit von 2^0=1. Es kann also je nach Zustand des Eingangs EN den Wert 0 oder 1 haben:




    Die arithmetische Anweisung B003 stellt das eigentliche Schieberegister dar. Wenn der Eingang aktiv ist, wird durch die Berechnung des neuen Wertes das Bit verschoben. (Hier ist es übrigens wichtig, dass der Takt bei seiner Aktivierung über die Flanke B001 nur jeweils genau einen Zyklus an B003 ansteht, damit je Takt auch nur einmal gerechnet wird! Die Zähler und die Logo!-Schieberegister haben diese Flankenabfrage integriert.)
    Berechnet wird: (Bisheriger Wert - Wert des auszuschiebenden Bits) x 2 + Wert des einzuschiebenden Bits.
    Wird der Eingang wieder inaktiv, wird dieser berechnete Wert weiterhin ausgegeben (grün), damit er über B004 bei der nächsten Berechnung noch zur Verfügung steht:




    Der Schwellwertschalter B004 hat 2 Funktionen. Zum Einen gibt er den Wert von B003 zurück, da B003 den ja für die neue Berechnung benötigt, aber nicht auf sich selbst verweisen kann. Und zum Anderen schaltet es den Ausgang des Schieberegisters ein, wenn das parametrierte höchstwertigste Bit des Registers EIN ist. Die kleine Hürde beim Parametrieren des Schwellwertschalters hatte ich auch schon erwähnt:
    Zitat Zitat von hucki Beitrag anzeigen
    Allerdings können bei Schwellwertschaltern nur Grenzwerte bis 20.000 eingestellt werden. Da aber bei der gesetzten Bitstelle 14 Werte von 2^14 = 16.384 bis 2^15-1 = 32.767 vorkommen, muss man als Grenzwert für Ein und Aus den gleichen Wert wählen und der entspricht dann dem Wert, bis zu dem der Schwellwertschalter aus ist.
    Ich verwende also als Schwellwert für EIN und AUS den Wert 2^n-1. Somit geht der Schwellwertschalter ab dem Wert 2^n auf EIN. Dieser Wert wird nur erreicht, wenn die höchstwertigste Bitstelle EIN ist, was dann wie gewünscht ausgegeben wird.


    B005 schließlich stellt den Wert des höchstwertigsten Bits dar, um diesen beim Ausschieben des Bits wieder abzuziehen. Ist der Zustand AUS, ist der Wert 0x2^n, also 0. Ist der Zustand EIN, ist der Wert dagegen 1x2^n, also der dezimale Wert der höchsten Bitstelle. Welcher von beiden Werten ausgegeben wird, wird wieder parametriert:




    Abschließend dazu noch die Tabelle mit den Wertigkeiten, die wir gleich benötigen:

    Wie auch im Zitat von mir zu sehen, habe ich also in 15er Schritten gearbeitet, weil es das Maximale an "einfacher" Berechnung darstellt, was die Logo schafft (15 Bit Wert + 1 Bit Vorzeichen = 16 Bit Verarbeitungsgröße der Logo!). Die Bits zu verringern ist aber einfach möglich, was wir an dieser Stelle der Programmanpassung benötigen.


    So - 100 Schritte war das Ziel, also wird der gewünschte Ausgang beim insgesamt 100. Bit erreicht.
    (PS: Ich glaub', hier hatte ich eine kleinen Denkfehler. Eigentlich sollten 100 Schritte dazwischen sein und damit wäre die Ausgabe erst beim 101. Bit. Da es aber für die Erklärung keinen Abbruch tut, mach' ich das Folgende nicht noch mal alles neu.)
    Das stellt das 10. Bit im letzten Einzelregister dar und da immer mit Bit 0 zu zählen begonnen wird, ist dies Bit 9. Bit 9 hat eine Wertigkeit von 2^9 = 512 (grün). Der Schwellwertschalter muss also bei allen Werten darunter aus sein, das entspricht 2^9-1 = 511 (rot). Hier nochmal in der Übersicht:




    Diese ermittelten Werte werden jetzt beim Schwellwertschalter und bei der arithmetischen Anweisung, die das auszuschiebende Bit abbildet, eingegeben:

    ->


    F E R T I G !



    Die Anpassung der Impulse läßt sich zwar nur begrenzt über Parameter einstellen, aber in der Gesamtfunktion ist es sicher einfacher als mit den x Zählern.


    Hier nochmal der Download (incl. der Bit-Tabelle) zum Ansehen des 0BA6-tauglichen Schieberegisters:
    Angehängte Dateien Angehängte Dateien
    Geändert von hucki (06.09.2013 um 22:57 Uhr)

  2. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    EMZ (08.09.2013)

  3. #22
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Zitat Zitat von EMZ Beitrag anzeigen
    Hi, also die Programmiersprache in SCL kenne ich leider nicht so gut, deshalb sagt es mir auch nicht so viel.

    Ich müsste mich erstmals mit SCL vertraut machen. Gibt es eig. dazu irgendwo Anfängerhilfen etc. ?
    Auf den Siemensseiten gibt's irgendwo 'ne Beschreibung. Hab' allerdings gerade keinen Link zur Hand.
    Hab' gereade wegen eines anderen Threads da noch mal die Links raus gesucht:
    Zitat Zitat von hucki Beitrag anzeigen
    Geändert von hucki (07.09.2013 um 12:07 Uhr) Grund: 1. Link falsch

  4. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    EMZ (08.09.2013)

  5. #23
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Also, ich habe mich jetzt mal bisschen besser eingelesen in dein Programm.
    Mittlerweile komme ich zwar klar, aber einige Sachen sind mir unklar. Ich habs noch nicht herausgefunden, wie ich z.B. die letzten 4 Impulse erhöhen oder verringern kann. Beispielsweise 20 Impulse sollen nach den 100 Impulsen ablaufen und dann Ausgang Q1 wieder "0" werden.

    So langsam tendiere ich immer mehr in Richtung S7 1200. Ich hab schon rumprobiert, aber komme einfach nicht darauf, wie ich diese Funktion in FUP hinprogrammieren kann. Ich habe das in S7 auch mit "16 Bit Schieben nach rechts" versucht, aber klappt irgendwie nicht so wie ich es vohab. Kannst du mir tipps geben, mit welchen Funktionsbausteinen (FUP) ich damit vorankomme?

    LG
    EMZ

  6. #24
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    Also, ich habe mich jetzt mal bisschen besser eingelesen in dein Programm.
    Mittlerweile komme ich zwar klar, aber einige Sachen sind mir unklar. Ich habs noch nicht herausgefunden, wie ich z.B. die letzten 4 Impulse erhöhen oder verringern kann. Beispielsweise 20 Impulse sollen nach den 100 Impulsen ablaufen und dann Ausgang Q1 wieder "0" werden.
    Da die Ausgangs-Impulse schon am Start erzeugt und mit durchs Register geschoben werden, versuch's mal mit dem Zähler B003 "Startimpulse".



    Zitat Zitat von EMZ Beitrag anzeigen
    So langsam tendiere ich immer mehr in Richtung S7 1200. Ich hab schon rumprobiert, aber komme einfach nicht darauf, wie ich diese Funktion in FUP hinprogrammieren kann. Ich habe das in S7 auch mit "16 Bit Schieben nach rechts" versucht, aber klappt irgendwie nicht so wie ich es vohab. Kannst du mir tipps geben, mit welchen Funktionsbausteinen (FUP) ich damit vorankomme?
    Für solche Aufgaben sicher besser geeignet.
    Aber m.M.n. nicht mit FUP. Das ist einfach ein riesen Aufwand gegenüber SCL.
    Sorry, da hab' ich einfach kein Interesse, mich rein zu knien, wenn man's auch einfach haben kann.

  7. #25
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Okey, danke dir für die ganze Hilfe.

    Ich werde jetzt erstmals noch versuchen mit Hilfe von anderen das ganze in FUP /S7 umzusetzen. Wenn es nicht klappt werde ich wohl irgendwie anders das ganze lösen müssen.


    LG
    EMZ
    Geändert von EMZ (08.09.2013 um 23:23 Uhr)

  8. #26
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    Ich werde jetzt erstmals noch versuchen mit Hilfe von anderen das ganze in FUP /S7 umzusetzen.
    Was spricht denn gegen die SCL-Lösung, dass Du Dich so verzweifelt dagegen wehrst?

    So schwer ist das ja nun auch nicht!

  9. #27
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich will sehr gerne in Zukunft mit SCL programmieren, aber ich habe halt wirklich 0 Erfahrung damit. Ich weiß nicht einmal wie man einfache Funktionen aufstellt.
    Ich verstehe nichtmal so ganz was da in deinem Programm steht. Wenn ich das hinkriegen würde, SCL zu verstehen, würde ich nurnoch mit SCL arbeiten.

    Das ist das einzige Problem.

  10. #28
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von PN von EMZ
    Es geht um den Zähler "Startimpulse" B003.

    Der muss doch erstmal (bei den Parameterwerten ON: 1 Off: 5 Startwert: 5 ) die fünf Impulse runterzählen, damit es losgeht.
    also diese 4 Impulse. Und wenn in der Zeit wenn diese 4 Impulse gezählt werden, nochmal Sensor 1+2 betätigt werden, dann erkennt er es garnicht.
    Kann man das auch so programmieren, dass der die 4 Impulse am Anfang garnicht zählt. Ich spreche dies an, weil die 4 Impulse eventuell mehr werden z.b. 40 oder noch mehr. Somit ist der Zeitraum größer und somit können Zählungen ausgelassen werden in der Zeit wenn B003 z.B. 40 Impulse abzählt.

    Ich hab den Zähler mal komplett rausgebaut und den Zähler am "Reset" Eingang des RS-Flip-Flops (B002) gesetzt, aber dort ist es ebenfalls das gleiche Problem.

    Kannst du mir dabei eventuell auch helfen.

    PS: Die Lösung kannst ins Thread Siemens Logo Programmierhilfe reinschrieben.
    Tu' mir und Dir einen Gefallen und schreib' solche Anfragen gleich in den zugehörigen Thread. So muss ich nicht so lange suchen und andere können vlt. auch helfen.


    Wenn ich bis zum WE nicht geantwortet habe (muss auch noch etwas arbeiten), kannst Du dann immer noch eine PN dazu schreiben.




    Der Zähler B003 muss nicht bis 4 runter zählen, damit es losgehen kann. Dafür sorgt das RS-Flip-Flop B002. Solange die Startbedingung nach dem Neustart noch nicht einmal erfüllt wurde, sperrt es über das UND-Glied B004 (deswegen ist das mit Freigabe benannt!) die vom Zähler B003 ausgegebenen Impulse. Mit der ersten Erfüllung der Startbedingung wird das Flipflop gesetzt und die Impulse können vom Zähler zum Eingang des Schieberegisters durch.

    Der Zähler selbst erkennt jede Erfüllung der Startbedingung, weil er dann nämlich jedesmal wieder auf seinen Startwert 5 resettet wird. Waren die letzten 4 noch nicht fertig, wird also der Impuls entsprechend verlängert.
    Es gibt genau eine Ausnahme: wird die Startbedingung zwischen 2 Takten zwei- oder mehrmals erfüllt, ist das von der Sache her wie eine Erfüllung und es wird dann in 100 Takten für 4 Takte der Ausgang gesetzt. Sprich - die Ausführungen "überlagern" sich.

    Ergebnis:
    Ist z.B. nach Schritt 1 und 7 die Startbedingung erfüllt, erhältst Du von 101 bis 104 und von 107 bis 110 ein Ausgangssignal.
    Ist z.B. nach Schritt 1 und 5 die Startbedingung erfüllt, erhältst Du von 101 bis 104 und von 105 bis 108 ein Ausgangssignal, in Summe ein durchgehendes von 101 bis 108.
    Ist z.B. nach Schritt 1 und 3 die Startbedingung erfüllt, erhältst Du von 101 bis 104 und von 103 bis 106 ein Ausgangssignal, in Summe ein durchgehendes von 101 bis 106.

    Und damit ist es egal, ob am Anfang 1, 4, 40 oder sonst wie viele Takte gezählt werden. Es wird halt nur wahrscheinlicher, das das letzte Zählen noch nicht beendet ist, wenn wieder neu zu zählen begonnen wird.



    Also einfach von B003 Startwert und Ausschaltgrenze auf den neuen Wert anpassen, fertig. Wenn die Startbedingung 1:1 an den Ausgang durchgegeben werden soll, für beides 2 eingeben.



    Und sag' mal, wie testest Du denn? Das kann man doch in der Simu ganz gut sehen, was da passiert und ob ich daran gedacht habe oder nicht!

  11. #29
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,
    ich habe ien kleines Problem.
    Bei der Aufgabenstellung gibt es ne kleine Änderung.

    Also wenn Startbedienung erfüllt ist, soll gezählt werden z.B. 100 Impulse, dann aber soll jedesmal nach einer bestimmten Impulszahl z.B. 10 in meinem Beispiel der Ausgang erst zurückgesetzt werden.
    Soll ich das über einen normalen Zähler machen, kann man das auch mit dem Zähler B003 realisieren oder gibt es da eine andere möglichkeit?


    Anhang 21887


    Link:

    http://www.bilderhoster.net/safeforbilder/twf7sxbk.png


    LG
    EMZ

  12. #30
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von EMZ Beitrag anzeigen
    Also wenn Startbedienung erfüllt ist, soll gezählt werden z.B. 100 Impulse, dann aber soll jedesmal nach einer bestimmten Impulszahl z.B. 10 in meinem Beispiel der Ausgang erst zurückgesetzt werden.
    Soll ich das über einen normalen Zähler machen, kann man das auch mit dem Zähler B003 realisieren oder gibt es da eine andere möglichkeit?
    Man kann das auch mit dem Zähler B003 realisieren (Startwert & Ausschaltgrenze 10+1=11):
    Zitat Zitat von hucki Beitrag anzeigen
    Und damit ist es egal, ob am Anfang 1, 4, 40 oder sonst wie viele Takte gezählt werden. Es wird halt nur wahrscheinlicher, das das letzte Zählen noch nicht beendet ist, wenn wieder neu zu zählen begonnen wird.



    Also einfach von B003 Startwert und Ausschaltgrenze auf den neuen Wert anpassen, fertig.

    Aber wenn es auch so funktioniert:
    Zitat Zitat von EMZ Beitrag anzeigen
    [url]
    ist es doch ebenso gut.




    PS: Der Merker M1 ist da an der Stelle im roten Kasten nicht unbedingt nötig.
    Geändert von hucki (03.10.2013 um 21:37 Uhr)

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 18.08.2013, 16:19
  2. Antworten: 1
    Letzter Beitrag: 30.01.2012, 13:06
  3. programmierhilfe
    Von holschin im Forum Suche - Biete
    Antworten: 1
    Letzter Beitrag: 09.12.2009, 09:31
  4. Antworten: 11
    Letzter Beitrag: 16.12.2008, 12:16
  5. Programmierhilfe Siemens Logo
    Von Micha* im Forum Sonstige Steuerungen
    Antworten: 19
    Letzter Beitrag: 10.08.2008, 19:05

Lesezeichen

Berechtigungen

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