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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: awl schleife und pointer

  1. #1
    Registriert seit
    15.02.2009
    Beiträge
    75
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo erstmal,
    also nachdem ich jetzt vieles hier im forum über pointer und schleifen gelesen habe muss ich doch mal nachfragen....
    Ich habe diesen Beitrag zwar verstanden: http://www.sps-forum.de/showthread.php?t=8887

    aber da ich noch nie mit pointern in s7 gearbeitet habe blick ich nicht durch....

    mein problem bzw vorhaben.....

    ich habe einen Datenbaustein siehe bild "db"
    in diesem db sind Zeitwert_soll und Zeitwert_rest bereits beschrieben...
    nun möchte ich Zeitwert_ist einfach mit ist=soll-rest ausrechnen..
    damit ich nun aber nicht 256 mal diese rechnung ausführen muss dachte ich an eine schleife von 1-256 mit pointern die jeweils auf soll, rest und ist zeigen.....

    ich verzweifel grad an der syntax..... danke im vorraus
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg db.JPG (128,1 KB, 189x aufgerufen)
    Zitieren Zitieren awl schleife und pointer  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Iserlohner Beitrag anzeigen
    ich verzweifel grad an der syntax..... danke im vorraus

    ich seh keine.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    14.11.2006
    Ort
    Aalen
    Beiträge
    43
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Einfacher wäre es in SCL zu programmieren

    Code:
    FOR i:= 1 TO 256 BY 1 DO
    
    ZeitwertIst[i] = ZeitwertSoll[i] - ZeitwertRest[i];
    
    END_FOR;

  4. #4
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    Hallo Christian,

    so einfach wie du es beschreibst ist es aber gar nicht.
    Da solltest du schon mehr Info geben.
    Vor allem auch die Zeitwert-Variablen-Deklaration.

    Gruß wolder

    P.S.: Ich kann die Info nicht geben, da ich das selber nicht weiß. Hab das zwar mal mit SCL probiert, aber kläglich gescheitert.
    Wenn du denkst du denkst, dann denkst du nur, dass du denkst, denn beim Denken der Gedanken, kommt dir der Gedanke, dass das Denken der Gedanken ein gedankenloses Denken ist

  5. #5
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    Code:
         L  P#0.0                           //Anfangswert des Pointers
         LAR1                                //in das Adressregister schreiben
         L 256                               //Schleifenzähler auf 256
    anf:T MW30                           //vorbelegen und im MW30 zwischenspeichern
         AUF DB121
         L DBW[AR1,P#0.0]             //hole aus dem DB das DBW0 (erster Durchgang)
         BTI                                 //Umwandeln in Integer
         L DBW[AR1,P#1024.0]        //hole aus dem DB das DBW1024 (erster Durchgang)
         -I                                   //Subtraktion
         T DBW[AR1,P#512.0]         //schreibe ins DBW512 (erster Durchgang)
         +AR1 P#2.0                     //addiere zu dem Adressregister den Pointerwert 2.0
         L MW30                          //Lade den Schleifenzähler
         LOOP anf                        //subtrahiere mit 1 und springe nach anf, wenn das Ergebnis > 0 ist.
    Absolut ungetestet und bestimmt noch mit Fehlern.
    Gruß wolder

    Edit: Ich hoffe die Kommentierung reicht aus
    Geändert von wolder (17.02.2011 um 16:08 Uhr)
    Wenn du denkst du denkst, dann denkst du nur, dass du denkst, denn beim Denken der Gedanken, kommt dir der Gedanke, dass das Denken der Gedanken ein gedankenloses Denken ist

  6. #6
    Registriert seit
    15.02.2009
    Beiträge
    75
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @wolder kannst du den ansatz bitte mal kommentieren.......


    ich hatte so angefangen

    AUF "DB_Zeiten"
    L 257
    L 1
    -I
    T #index
    anf: NOP 0
    L #index
    SLD 3
    LAR1

    L DBW [AR1,P#0.0]

  7. #7
    Registriert seit
    15.02.2009
    Beiträge
    75
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @christian...

    ich hab noch nie mit scl gearbeitet,
    dier schleife ist ja verständlich für mich, aber der rest drum rum, wir schreib ich dann "ist" in den db bzw lese "soll" und "rest" aus dem db

  8. #8
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Iserlohner Beitrag anzeigen
    @christian...

    ich hab noch nie mit scl gearbeitet,
    dier schleife ist ja verständlich für mich, aber der rest drum rum, wir schreib ich dann "ist" in den db bzw lese "soll" und "rest" aus dem db
    Ich würde dir den Hinweis geben, denk bitte zuerst nach wie du Programmieren willst.
    AWL oder SCL, womit hast du mehr Erfahrung und/oder Wissen.
    Beides auf einmal für das selbe Programm ist doof.

    bike

  9. #9
    Registriert seit
    15.02.2009
    Beiträge
    75
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hab mich für die awl lösung entschieden...

    der vorschlag von wolder klappt soweit....

    L P#0.0
    LAR1
    L 256
    anf: T MW 30
    AUF "DB_Zeiten"
    L DBW [AR1,P#0.0]
    L DBW [AR1,P#512.0]
    -I
    T DBW [AR1,P#1024.0]
    +AR1 P#2.0
    L MW 30
    LOOP anf






    zur info, ich zeige mir die werte alle an nem op77 an...
    dbw0 bis dbw510 sind ja s5time werte, und dbw512 bis dbw1022 sind integer werte, aber nun steht der wert in dbw1024 bis 1534 aber als hex was muss ich tun um die zeit als s anzuzeigen????
    ich hampel grad mit der linearen skalierung rum, die kapier ich wohl nicht richtig....
    für "soll" und "rest" hab ich die Skalierung auf 0-6000 und 0-6 eingestellt, bin ich aber ehrlich gesagt nur durch langes probieren dran gekommen....
    für "ist" also den errechneten wert der nun als hex vorliegt komm ich an keine sinnvolle richtige anzeige,,,,,,

  10. #10
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    S5TIME ist eine BCD-codierte Darstellung von Zeitwerten mit Hilfe einer ebenfalls in diesem Datentyp codierten Zeitbasis...

    einfach mal den Aufbau angucken und eine Umrechnung schreiben
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Schleife / Pointer versuch
    Von online im Forum Simatic
    Antworten: 37
    Letzter Beitrag: 12.04.2008, 10:21
  2. FOR Schleife
    Von dietere im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 19.01.2008, 02:36
  3. For Schleife in VB 6
    Von godi im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 14.06.2007, 10:03
  4. Pointer, Adressregiester, Schleife
    Von LSOLO im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.07.2006, 10:31
  5. AWL Schleife
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 31.07.2003, 07:05

Lesezeichen

Berechtigungen

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