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

Ergebnis 1 bis 9 von 9

Thema: Datenbaustein Wörter nach oben schieben

  1. #1
    Registriert seit
    24.02.2007
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    erstelle grad ein Fahrstuhl Programm mit dem Simatic Manager mit Hilfe eines Datenbausteines.
    Es klappt auch alles ganz hervorragend, nun will ich allerdings, dass jedesmal das Datenbausteinwort 0 gelöscht wird wenn der Fahrstuhl die Etage die dort hinterlegt war erreicht hat.
    Danach sollen nachtürlich die Etagen die nun im Datenbaustein sind nachrücken...
    Gibt es dort eine einfache Möglichkeit, vorallem eine die auf unendlich viele Etagen erweiterbar ist ???

    mfg
    Memph
    Zitieren Zitieren Datenbaustein Wörter nach oben schieben  

  2. #2
    Registriert seit
    14.01.2004
    Ort
    Hattorf
    Beiträge
    3.201
    Danke
    297
    Erhielt 311 Danke für 266 Beiträge

    Standard

    mfg

    dietmar

    Nichts ist so beständig wie ein Provisorium.

  3. #3
    TheBigMemph ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.02.2007
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich hatte bislang noch nichts mit pointern zu tun ... ich versteh das nicht wirklich ....
    Code:
          U(    
          O     E      0.0
          O     E      0.1
          O     E      0.2
          )     
          ZV    Z      0
          U(    
          O     E      1.0
          O     E      1.1
          O     E      1.2
          )     
          U     E      2.0
          ZR    Z      0
          NOP   0
          NOP   0
          U(    
          L     DBW    0
          L     0
          ==I   
          )     
    
    
    
    
          R     Z      0
          NOP   0
          LC    Z      0
          T     MW    10
          NOP   0
    Code:
          L     MW    10
          L     2
          *I    
          T     MD    90
          L     MD    90
          SLD   3
          T     MD    70
          L     MW    30
          T     DBW [MD 70]
    Da speichert er immer nach der reihe die einzelnen Stockwerkanfragen ....
    Wenn die erste abgearbeitet ist wird sie null ... nun sollen alle anderen einen nachrücken ...
    nach meiner Logik sollte das doch mit

    Code:
          L     DBW    2
          T     DBW    0
    
          L     DBW    4
          T     DBW    2
    
          L     DBW    6
          T     DBW    4
    
          L     DBW    8
          T     DBW    6
    
          L     DBW   10
          T     DBW    8
    möglich sein ... aber wenn ich nun ein Stock abgearbeitet habe werden alle DBW's 0 ...
    Zitieren Zitieren ...  

  4. #4
    Registriert seit
    14.01.2004
    Ort
    Hattorf
    Beiträge
    3.201
    Danke
    297
    Erhielt 311 Danke für 266 Beiträge

    Standard

    hallo,
    dann schau mal noch mal hier:http://www.sps-forum.de/showthread.p...t=ringspeicher
    da gibt es von volker einen fertigen baustein.
    mfg

    dietmar

    Nichts ist so beständig wie ein Provisorium.

  5. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von TheBigMemph Beitrag anzeigen
    Wenn die erste abgearbeitet ist wird sie null ... nun sollen alle anderen einen nachrücken ...
    nach meiner Logik sollte das doch mit

    Code:
          L     DBW    2
          T     DBW    0
     
          L     DBW    4
          T     DBW    2
     
          L     DBW    6
          T     DBW    4
     
          L     DBW    8
          T     DBW    6
     
          L     DBW   10
          T     DBW    8
    möglich sein ... aber wenn ich nun ein Stock abgearbeitet habe werden alle DBW's 0 ...
    Dein Programmcode wird in jedem Programmzyklus abgearbeitet. Nach spätestens 6 Programmzyklen sind also alle MW gleich 0.

    Wenn Dein Programmcode nur einmalig abgearbeitet werden soll, dann musst Du einen Sprung einbauen, z. B.:

    Code:
          U     M    220.0
          FP    M    220.1
          SPBN  M001
     
          L     DBW    2
          T     DBW    0
     
          L     DBW    4
          T     DBW    2
     
          L     DBW    6
          T     DBW    4
     
          L     DBW    8
          T     DBW    6
     
          L     DBW   10
          T     DBW    8
     
    M001: NOP 0
    Gruß Kai

  6. #6
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Zitat Zitat von Kai Beitrag anzeigen
    Code:
          U     M    220.0
          FP    M    220.1
          SPBN  M001
     
          L     DBW    2
          T     DBW    0
     
          L     DBW    4
          T     DBW    2
     
          L     DBW    6
          T     DBW    4
     
          L     DBW    8
          T     DBW    6
     
          L     DBW   10
          T     DBW    8
     
    M001: NOP 0
    Die kürzeste Variante sieht dann übrigens so aus:


    Code:
          U     M    220.0
          FP    M    220.1
          SPBN  M001
      
          CALL SFC20
           SRCBLK:=P#DBX2.0 BYTE 10
           RetVal:=#SFC20_RetVal
           DSTBLK:=P#DBX0.0 BYTE 10
     
    M001: NOP 0
    Diese Variante funktioniert deshalb, weil SFC20 intern wortweise arbeitet, das wort mit der niedrigsten Adresse zuerst. Umgekehrt würde es nicht funktionieren.
    Diese Variante ist allerdings langsamer in der Ausführung.

    mfg
    Maxl
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  7. #7
    TheBigMemph ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.02.2007
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Code:
          L     DBW    0
          L     0
          ==I   
          CC    FC     3
    hatte das so gedacht ... und in dem fc 3 dann

    Code:
     
          L     DBW    2
          T     DBW    0
    
          L     DBW    4
          T     DBW    2
    
          L     DBW    6
          T     DBW    4
    
          L     DBW    8
          T     DBW    6
    
          L     DBW   10
          T     DBW    8
    und dabei macht er mir auch alles null ... versteh ich aber nicht ganz warum...

    Ich bin noch ein ziemlicher Anfänger mit Datenbausteinen und habe echt schwierigkeiten euch zu folgen ...

    könntet ihr mir diese Sprungfunktion mal in Worten beschreiben ...
    Was ich für die Merker ect einsetzen muss und was genau passiert ...

    zu diesem fc20 muss ich sagen, dass bei mir
    RetVal:=#SFC20_RetVal

    nicht funktioniert ... kann das daran liegen das ich meinen Datenbaustein in
    Ganzzahlen eingestellt habe (INT) ??

    der Parameter wird immer rot in der Formel...

  8. #8
    Registriert seit
    23.11.2004
    Beiträge
    347
    Danke
    2
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Der bedingte Aufruf der FC3 findet doch auch über mehrere Zyklen statt.
    Der Aufruf müsste über eine Flankenauswertung geschehen.
    Z.B.:
    L DBW 0
    L 0
    ==I
    FP M 200.0
    CC FC 3


    Gruß
    raika

  9. #9
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
     
    1. und dabei macht er mir auch alles null ... versteh ich aber nicht ganz warum...
     
    könntet ihr mir diese Sprungfunktion mal in Worten beschreiben ...
    Was ich für die Merker ect einsetzen muss und was genau passiert ...
     
    zu diesem fc20 muss ich sagen, dass bei mir 
    RetVal:=#SFC20_RetVal
     
    nicht funktioniert ... kann das daran liegen das ich meinen Datenbaustein in
    Ganzzahlen eingestellt habe (INT) ??
     
    der Parameter wird immer rot in der Formel...
    alles null, weil die funktion in jedem zyklus die daten verschiebt..

    du darfst also die funktion nur dann auslösen (und nur 1 mal) wenn es sein soll

    U M 1.1 // aulösendes ereignis
    FP M 2.0 // fankenspeicher
    = M 1.0 // dieser merker ist 1 zyklus high

    un m 1.0
    spb nofc
    call fc1
    nofc: nop 0
    [/code]
    retval ist der rückgabecode der funktion. dort steht welcher fehler bei der bearbeitung der fc aufgetreten ist. siehe 's7-hilfe'

    der sfc20 ist es egal was sie kopieren soll.
    sie erwartet any-zeiger am ein- und ausgang.
    der sieht z.b. so aus P#DB10.DBX 0.0 BYTE 10

    (falls dir der zeiger nicht klar ist, suche mal nach 'any' 'zeiger'
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Programm für Datenbaustein-Export nach Excel
    Von Thomas_v2.1 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.02.2016, 11:53
  2. Antworten: 4
    Letzter Beitrag: 18.02.2011, 10:06
  3. Array in Datenbaustein schieben
    Von bayerguard im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.11.2008, 22:20
  4. Werte aus Datenbaustein nach Excel exportieren
    Von Lordogg im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.11.2007, 20:55
  5. S5 Datenbaustein, Datenworte schieben
    Von -Andreas- im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.07.2006, 12:07

Lesezeichen

Berechtigungen

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