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

Ergebnis 1 bis 10 von 10

Thema: 5x 5 Bits rotieren

  1. #1
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich muss einen Baustein für die Vorwahl von 5 Einheiten schreiben.
    es wird aufgeteil in Master, Slave 1 bis Slave 4. Als Eingangsparameter bekomme ich im Prinzip nur eine Vorwahl für jede Einheit.
    Wird Einheit 1 ausgewählt ist diese immer Master, wenn eine zweite dazu kommt ist diese Slave 2 usw. ist Einheit 4 und 5 ausgewählt ist 4 Master, 5 Slave 1. Dies wird mit sicherheit auch so funktionieren wie ich mir das gedacht habe (einfache und / oder verknüpfung).

    Jetzt zu meinem Problem:
    die Einheiten werden ein- / ausgeschaltet. nach dem Ausschalten sollen diese um eins rotieren. das heißt aus dem Master wird Slave 1, Slave 1 wird Slave 2 usw. natürlich nur entsprechend der Vorwahlen. Also wenn nur 2 vorgewählt sind, rotieren auch nur 2.
    Hat jemand eine idee wie man sowas einfach programmieren (sollte in FUP oder KOP sein) kann? Zum Rotieren habe ich nur einen Baustein für ein DW gefunden. das nützt mir leider nix, da ich ja nur 5 bit habe.

    Vielen Dank schon mal für eure Hilfe.
    Tobl
    Zitieren Zitieren 5x 5 Bits rotieren  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Nimm nicht Rotieren, sondern Schieben. Nach dem Schieben (SLW 1 schiebt 16 Bit 1 nach links) nimmst du Bit 5, schreibst es auf Bit 0 und löscht danach Bit 5. So hast du ein eigenes "Rotieren".
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    tobl2002 (16.10.2008)

  4. #3
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    schon mal vielen Dank für die schnelle Antwort. Ich habe mich aber für was anderes entschieden.

    ICh habe mir einen Zähler gebastelt, der schön hochzählen soll wenn ein Zyklus der Anlage fertig ist.
    der Code sieht wie folgt aus:

    Code:
          U(    
          U     "DB_Vorwahl_Skids".Allgemein.Skids_umschalten
          FP    "DB_Vorwahl_Skids".Allgemein.Flanke_umschalten
          SPBNB _001
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     1
          +I    
          T     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          UN    OV
          SAVE  
          CLR   
    _001: U     BIE
          )     
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     "DB_Vorwahl_Skids".Allgemein.Anzahl_Skids
          >I    
          )     
          SPBNB _002
          L     1
          T     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
    _002: NOP   0
    jetzt wieder zu meiner Zuweisung, dazu habe ich mir folgendes ausgedacht:
    Code:
    Zuweisung Skid 1:
          U     "DB_Vorwahl_Skids".Allgemein.Freigabe
          =     L      0.0
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     2
          ==I   
          )     
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Master
          =     "DB_Vorwahl_Skids".Skid_01.Slave01
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave01
          =     "DB_Vorwahl_Skids".Skid_01.Master
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     3
          ==I   
          )     
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Master
          =     "DB_Vorwahl_Skids".Skid_01.Slave02
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave01
          =     "DB_Vorwahl_Skids".Skid_01.Master
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave02
          =     "DB_Vorwahl_Skids".Skid_01.Slave01
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     4
          ==I   
          )     
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Master
          =     "DB_Vorwahl_Skids".Skid_01.Slave03
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave01
          =     "DB_Vorwahl_Skids".Skid_01.Master
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave02
          =     "DB_Vorwahl_Skids".Skid_01.Slave01
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave03
          =     "DB_Vorwahl_Skids".Skid_01.Slave02
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     5
          ==I   
          )     
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Master
          =     "DB_Vorwahl_Skids".Skid_01.Slave04
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave01
          =     "DB_Vorwahl_Skids".Skid_01.Master
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave02
          =     "DB_Vorwahl_Skids".Skid_01.Slave01
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave03
          =     "DB_Vorwahl_Skids".Skid_01.Slave02
          U     L      0.1
          U     "DB_Vorwahl_Skids".Skid_01.Slave04
          =     "DB_Vorwahl_Skids".Skid_01.Slave03
    wie man sieht vergleiche ich einfach den Zähler mit einem Wert, und verscheibe einfach um die gleiche Anzahl der Stellen. Geht das irgendwie einfacher??? Wie schon geschrieben, es muss alles in KOP darstellbar sein
    Zitieren Zitieren Code vereinfachung??  

  5. #4
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ok noch mal ein versuch, hab noch ein paar fehler in dem Code gefunden:

    Code:
    Zähler Skids zuweisen
          U     "DB_Vorwahl_Skids".Allgemein.Freigabe
          =     L      0.0
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     0
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids0
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     1
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids1
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     2
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids2
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     3
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids3
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     4
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids4
          U     L      0.0
          U(    
          L     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids
          L     5
          ==I   
          )     
          =     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids5
     
    Zuweisung Skid 1:
          U     "DB_Vorwahl_Skids".Allgemein.Freigabe
          U     "DB_Vorwahl_Skids".Skid_01.HM_Master
          =     L      0.0
          U     L      0.0
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids1
          =     "DB_Vorwahl_Skids".Skid_01.Master
          U     L      0.0
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids2
          =     "DB_Vorwahl_Skids".Skid_01.Slave01
          U     L      0.0
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids3
          =     "DB_Vorwahl_Skids".Skid_01.Slave02
          U     L      0.0
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids4
          =     "DB_Vorwahl_Skids".Skid_01.Slave03
          U     L      0.0
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids5
          =     "DB_Vorwahl_Skids".Skid_01.Slave04
     
    Zuweisung Skid 2
          U     "DB_Vorwahl_Skids".Allgemein.Freigabe
          =     L      0.0
          U     L      0.0
          U     "DB_Vorwahl_Skids".Skid_02.HM_Master
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids1
          =     "DB_Vorwahl_Skids".Skid_02.Master
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids2
          =     "DB_Vorwahl_Skids".Skid_02.Slave01
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids3
          =     "DB_Vorwahl_Skids".Skid_02.Slave02
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids4
          =     "DB_Vorwahl_Skids".Skid_02.Slave03
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids5
          =     "DB_Vorwahl_Skids".Skid_02.Slave04
     
          U     L      0.0
          U     "DB_Vorwahl_Skids".Skid_02.HM_Slave01
          =     L      0.1
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids1
          =     "DB_Vorwahl_Skids".Skid_02.Slave01
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids2
          =     "DB_Vorwahl_Skids".Skid_02.Slave02
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids3
          =     "DB_Vorwahl_Skids".Skid_02.Slave03
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids4
          =     "DB_Vorwahl_Skids".Skid_02.Slave04
          U     L      0.1
          U     "DB_Vorwahl_Skids".Allgemein.Zaehler_Skids5
          =     "DB_Vorwahl_Skids".Skid_02.Master
    Die Vergleicher habe ich mal auf merker gelegt, so spare ich mir wieder ein paar zeilen. Für Skid 3-5 geht es genauso weiter eben nur jeweils die neuen Hilfsmerker.
    Aber das Programm ist so viel zu groß. das muss doch auch einfacher gehen... mir fällt nur nix besseres ein.

  6. #5
    Registriert seit
    24.07.2008
    Beiträge
    124
    Danke
    0
    Erhielt 8 Danke für 6 Beiträge

    Standard

    hallo tobl2002
    ich sehe das genauso wie ralle...
    ob du das kurz programmiert in kop hin bekommst möchte ich bezweifeln.
    da diese sprache doch viele einschränkungen hat.
    warum legst du dich schon auf fup oder kop fest?
    in awl oder scl geht das einfacher und kürzer...
    viele Grüße
    klaus.ka

    alles was Du im Leben anderen Menschen gibst, bekommst Du irgendwann wieder zurück, egal von dieser oder einer anderen Person

  7. #6
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ICH sehe das genauso... aber für mich soll das Programm ja nicht sein^^ Ich habe dir Vorgaben bekommen das in KOP zu erstellen. Dann bleibt der Baustein eben so groß. Ggf. müssen Sie eben ne größere CPU kaufen...
    Danke für eure Hilfe.

  8. #7
    Registriert seit
    24.07.2008
    Beiträge
    124
    Danke
    0
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Zitat Zitat von tobl2002 Beitrag anzeigen
    ICH sehe das genauso... aber für mich soll das Programm ja nicht sein^^ Ich habe dir Vorgaben bekommen das in KOP zu erstellen. Dann bleibt der Baustein eben so groß. Ggf. müssen Sie eben ne größere CPU kaufen...
    Danke für eure Hilfe.
    hallo tobl2002
    dann versuch das doch mal denen zu erklären... am programm werden die eh nix ändern oder?
    warum größere cpu was willst du denn sonst noch alles über die cpu betreiben?
    viele Grüße
    klaus.ka

    alles was Du im Leben anderen Menschen gibst, bekommst Du irgendwann wieder zurück, egal von dieser oder einer anderen Person

  9. #8
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Klaus.Ka Beitrag anzeigen
    hallo tobl2002
    dann versuch das doch mal denen zu erklären... am programm werden die eh nix ändern oder?
    warum größere cpu was willst du denn sonst noch alles über die cpu betreiben?

    Doch, die werden die IB selbst machen, und ich habe erst mal alles für 5 Stationen ausgelegt, es können aber auch 10 werden.... Es war erst eine 315-2 PN /DP geplant. aber das passt nicht wiriklich vom Arbeitsspeicher her.

    So ich habe den Baustein noch mal eingefügt (in Kop wie er auch sein muss). Gibt es noch irgendwas was man vereinfachen kann? der baustein hat so schon 4,5kB. wenn das mal 10 stationen werden...darf gar nicht dran denken...

    Bitte so schnell wie möglich antworten bin nur noch bis morgen nachmittag da (dann erst mal 2 wochen urlaub,was ich mir auch verdient habe^^)
    Angehängte Dateien Angehängte Dateien
    • Dateityp: pdf FB9.pdf (91,5 KB, 11x aufgerufen)

  10. #9
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ok passt doch.. die pn-dp hat ja noch mal den doppelten arbeitsspeicher wie die normale dp. also wäre das problem schon mal geklärt.

  11. #10
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    mal abgesehen davon das ich einen gewaltigen fehler in dem Programm habe (bits am ende des Bausteins werden 2x beschrieben), welchen ich auch behoben habe, habe ich das problem das ich damit wirklich alles nur um 5 stellen schieben kann. wenn ich z.b. Skid 1/2/3 vorgewählt habe, und dann mein Zähler auf 1 steht, ist noch alles ok. bei einem Zählerstand von 2 habe ich plötzlich keinen Master mehr dafür aber Slave 3 (gibt es ja in dem Fall gar nicht). Bei Zählerstand 3 habe ich Slave 2-4.
    Ich habe keinen schimmer wie ich das hin bekommen soll. Wollte es mit einer Wahrheitstabelle versuchen, aber das sind einfach zu viele kombinationen. da blick ja keiner mehr durch...

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 27.12.2013, 07:58
  2. PAW Bits
    Von zloyduh im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.04.2011, 09:35
  3. Schieben und Rotieren in AWL
    Von adi5 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 16.01.2010, 16:52
  4. WinCC flexieble und Grafik rotieren
    Von herby0505 im Forum HMI
    Antworten: 6
    Letzter Beitrag: 03.02.2007, 10:38
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

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