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

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 42

Thema: Indirekt in Datenbaustein schreiben

  1. #11
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nicht ganz, wenn dein Zähler >600 ist, wird alles umsprungen und einmal kein Wert gespeichert.
    Außerdem wird dein DBW0 im Zyklustakt hochgezählt, weil du auch dorthin springst, wenn der Flankenmerker die Bedingung nicht erfüllt, also immer, wenn keine Flanke generiert wurde!!!
    Dein BEB wirkt nur, wenn VKE = 1, was soll das also dort?
    Ich arbeite gar nicht mehr mit BEB, sondern nur noch mit Sprüngen an eine Marke am Ende des Codes. So kann man in weiteren Netzwerken auch noch etwas programmieren und wundert sich später nicht, dass Code gar nicht ausgeführt wird, weil irgendwo noch ein BEB steht.

    Code:
    U M 1.0
    FP M 1.1 // in den DB und DW0 (addieren +1) 
    SPBN END
    AUF DB 100
    
    L DBW 0
    SLD 6
    LAR1 
    L MW 10 //T 1 Wert laden
    T DBW [AR1,P#0.0] // T 1 Wert schreiben
    L MW 20 // T 2 Wert laden
    T DBW [AR1,P#2.0] //T 2 Wert schreiben
    L MW 30 // T 1+T2 Wert laden
    T DBW [AR1,P#4.0] // T 1+T2 Wert schreiben
    
    L DBW 0 // Datensatzahl 
    L 1 // +1 erhöhen
    +I //+I mag ich einfach mehr, da sieht man besser was gemacht wird :-)
    T DBW 0 // Datensatz um 1 Satz erhöht
    
    //wenn > 600 dann gleich 1 hineinschreiben
    //Wert steht schon im Akku, man könnte auch noch einmal L DW 0 schreiben 
    L 600
    >I
    SPBN END //wenn nicht > 600, dann ans Ende springen
    
    L 1
    T DBW0 
    
    END: NOP 0
    Geändert von Ralle (09.02.2011 um 22:14 Uhr) Grund: Paule hat 'nen Fehler gefunden !
    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

  2. #12
    Registriert seit
    16.12.2008
    Ort
    Fürth
    Beiträge
    146
    Danke
    32
    Erhielt 21 Danke für 19 Beiträge

    Standard

    Zitat Zitat von Gina_Jin Beitrag anzeigen
    Hallo Befree,

    schönen dank für die schnell hilfe,
    wie kann ich den UDT auf mit Array aufbauen.

    Es sollte so aussehen wie unten
    wäre gut wenn du mir kurz darstellen könntest.
    Du erstellst dir in deinem Projekt einen UDT, meinetwegen den UDT1 "Datensatz". Dann erstellst du dir deinen DB. vergibst den Namen den die Datensätze von 1 bis 600 haben sollen. z.B "Messwert", als Typ schreibst du nun

    Code:
    Array[1..600]
    damit definierst du das es den "Messwert" als Array von 1 bis 600 gibt. Wenn du jetzt mal Enter drückst springt der Cursor automatisch in die Zeile unter dem Array, hier musst du den Typen für das Aaray angeben und in deinem fall schreibst du nun deinen UDT1 hin.

    In der Deklarationssicht steht damit nur eine Variable in deinem DB. Der array des UDT1 von 1 bis 600. Gehst du nun in die Datenansicht. siehst du jeder einzelnen Wert.
    Angehängte Grafiken Angehängte Grafiken
    -A+B=15=21 Klingt komisch - ist aber so!
    -It's not a bug, it's a feature!
    -Es gibt nur 3 Feinde im Leben eines Programmierers: Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel ...!

  3. #13
    Gina_Jin ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.02.2011
    Beiträge
    16
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Frage

    U M 1.0
    FP M 1.1 // in den DB und DW0 (addieren +1)
    SPBN END
    AUF DB 100

    SLD 6
    LAR1
    L MW 10 //T 1 Wert laden
    T DBW [AR1,P#0.0] // T 1 Wert schreiben
    L MW 20 // T 2 Wert laden
    T DBW [AR1,P#2.0] //T 2 Wert schreiben
    L MW 30 // T 1+T2 Wert laden
    T DBW [AR1,P#4.0] // T 1+T2 Wert schreiben

    L DBW 0 // Datensatzahl
    L 1 // +1 erhöhen
    +I //+I mag ich einfach mehr, da sieht man besser was gemacht wird
    T DBW 0 // Datensatz um 1 Satz erhöht

    //wenn > 600 dann gleich 1 hineinschreiben
    //Wert steht schon im Akku, man könnte auch noch einmal L DW 0 schreiben
    L 600
    >I
    SPBN END //wenn nicht > 600, dann ans Ende springen

    L 1
    T DBW0

    END: NOP 0

    Hallo zusammen,
    schönen dank für eure schnelle hilfe Ihr seit super.

    Danke Ralle ,
    Ich habe noche eine Frage:
    kann an stelle "Mw" auch dort "Dw" aus dem DB 100 nehmen.
    Wie müsste ich es einbauen.
    Mw 10 => DB100.Dbw2

    Mw 20 => DB100.Dbw4

    Mw 30 => DB100.Dbw6

    Mit dem SLD 6 ist es richtig gewählt, Ich möchte die Werte

    1 Datensatz
    T1 in DW8 // 1 satz SLD 6 hier laden und reinschreiben
    T2 in Dw10
    T1+T2 Dw12

    2 Datensatz
    T1 in DW16 // 2 satz SLD 6 hier laden und reinschreiben
    T2 in Dw18
    T1+T2 Dw20

    3 Datensatz
    T1 in DW22 // 3 satz SLD 6 hier laden und reinschreiben
    T2 in Dw24
    T1+T2 Dw26

    4 Datensatz
    T1 in DW30 // 4 satz SLD 6 hier laden und reinschreiben
    T2 in Dw32
    T1+T2 Dw34

    Usw. 600

    Danke in Vorraus !
    Zitieren Zitieren ??? Indirekte Adressierung für DB-DatenBank  

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Da du im DB 100 bleibst, Kannst du das

    L DB100.DBW4

    auch zu

    L DBW4

    verkürzen. Nimmst du Daten aus einem anderen DB, dann vergiß nicht das

    Auf DB 100

    vor den nächsten DBW-Aufruf, der für den DB100 vorgesehen ist einzufügen.
    Du könntest die Daten aber auch über die IN-Schnittstelle des FB/FC, in dem der Code steht übergeben, dann kannst du im FB/FC mit Parameteraufrufen für die, zu kopierenden Daten arbeiten.

    Achtung!

    DBW 8
    DBW 16
    BDW 24
    DBW 32

    usw., wenn du mit SLD6 arbeitest!
    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

  5. #15
    Gina_Jin ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.02.2011
    Beiträge
    16
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ralle,
    Warum Achtung?

    Achtung!

    DBW 8
    DBW 16
    BDW 24
    DBW 32



    SLD 6 Springt der Zeiger nicht 8, 16, 24,32......

    Ich habe ein teil von Programm rausgenommen, meinst du so?
    SLD 6
    LAR1
    L Dbw2 //T 1 Wert laden
    T DBW [AR1,P#0.0] // T 1 Wert schreiben
    L Dbw 4 // T 2 Wert laden
    T DBW [AR1,P#2.0] //T 2 Wert schreiben
    L MW 6 // T 1+T2 Wert laden
    T DBW [AR1,P#4.0] // T 1+T2 Wert schreiben

  6. #16
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Gina_Jin Beitrag anzeigen
    SLD 6 Springt der Zeiger nicht 8, 16, 24,32......
    Nein, er wird verdoppelt, nicht addiert:
    Code:
    Add: 4096 2048 1024 512 256 128 064 032 016 008 004 002 001
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  7. #17
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Zitat Zitat von Paule Beitrag anzeigen
    Nein, er wird verdoppelt, nicht addiert:
    Code:
    Add: 4096 2048 1024 512 256 128 064 032 016 008 004 002 001
    Ähm, was meinst du Paule?

    SLD 3 macht einen Pointer aus dem Satzzähler.
    Bleibt noch ein weiters SLD 3, was rechnerisch bedeutet 3 mal mit 2 Multiplizieren

    2*2*2, also 8

    Macht für der Satzzähler nun

    1 *2*2*2 = 8
    2 *2*2*2 = 16
    3 *2*2*2 = 24
    4 *2*2*2 = 32
    5 *2*2*2 = 40
    ...

    Lieg ich falsch?

    @Gina_Jin

    Du hattest dich verschrieben
    8,16,22,30 muß heißen 8,16,24,32
    Geändert von Ralle (08.02.2011 um 23:32 Uhr)
    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

  8. #18
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Lieg ich falsch?
    Würde ich jetzt mal so behaupten (ohne jetzt den ganzen Thread gelesen zu haben)
    Zitat Zitat von Ralle Beitrag anzeigen
    1 *2*2*2 = 8
    2 *2*2*2 = 16
    3 *2*2*2 = 24
    4 *2*2*2 = 32
    5 *2*2*2 = 40
    von 2 mit SLW/D kommst Du nicht auf 3 sondern gleich auf 4

    @Edit: Aber das weißt Du doch Ralle,
    ich glaube dann doch eher dass ich da was falsch verstanden habe.
    Geändert von Paule (08.02.2011 um 23:58 Uhr)
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  9. #19
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ja Paule, ich glaube, du hast da was falsch verstanden.
    Hochgezählt wird der Satzzähler und zwar immer um +1.
    Der Satzzähler wird geschoben. Jedes 1 Mal Schieben nach links ist das Selbe wie mit 2 Multiplizieren.

    1 --> SLD 3 oder *2*2*2 = 8
    2 --> SLD 3 oder *2*2*2 = 16
    3 --> SLD 3 oder *2*2*2 = 24
    4 --> SLD 3 oder *2*2*2 = 32
    5 --> SLD 3 oder *2*2*2 = 40
    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

  10. #20
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ralle hat schon recht Paule. Da hast du einen Denkfehler.

    ist einfach
    1*8
    2*8

    mehr macht er mit dem SLD 6 nicht, denn SLD 3 für das Pointerformat und
    SLD 3 für das x*8.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

Ähnliche Themen

  1. Wert in Datenbaustein schreiben
    Von Papa_Bene im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 22.02.2011, 12:08
  2. CSV-Daten in Datenbaustein schreiben?
    Von Poldi007 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.03.2010, 02:31
  3. String in Datenbaustein schreiben (S7)
    Von erwin36 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 30.11.2009, 16:53
  4. Antworten: 4
    Letzter Beitrag: 01.09.2008, 12:45
  5. Antworten: 7
    Letzter Beitrag: 30.07.2008, 13:13

Lesezeichen

Berechtigungen

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