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

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 60

Thema: Mit Schleife DB füllen

  1. #21
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von htw Beitrag anzeigen
    @ Aventinus:
    - Du meinst also, ich sollte die Werte gar nicht in DB´s ablegen?
    - Wie kann ich dann verschied. Positionen zeit diskret anfahren?
    Du hast ja sicher eine Vorstellung davon wie lange du dir für deine Kreisform Zeit nehmen willst...

    Wenn du das Ding in 10s durch haben möchtest kannst du eine Zeit laufen lassen und dir aus dem Zeitwert mit Sinus bzw. Kosinus usw. die aktuellen Positionen der beiden Achsen errechnen.

    Hab aber leider gerade nicht die Zeit, dir das genauer aufzubereiten... evtl. am WE.
    mfG Aventinus

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Zitat Zitat von htw Beitrag anzeigen
    habe auch verscuht, das flexibel aufzubaun ...


    was hältst n davon?
    kann man sicherlich so machen.
    Eine andere Variante wäre :
    Code:
    AUF DB [#DB_Kreis]
    L #TAKTGEBER
    L 6
    *D
    SLD 3
    LAR1
    
    L DBW [AR1,p#0.0] // X
    T #_xKoordinate
    L DBW [AR1,p#2.0] //y
    T #_yKoordinate
    L DBW [AR1,p#4.0] //z
    T #_zKoordinate
    ... spart ein paar Anweisungen ...

    Gruß
    Larry

  3. #23
    htw ist offline Benutzer
    Themenstarter
    Registriert seit
    18.05.2010
    Beiträge
    34
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Aventinus:

    die math. Formeln sind mir klar. Die Schwierigkeiten liegen darin, dass zu Programmieren und die Daten abzulegen. Aber ich werde es einmal so versuchen, wie ich auslese.

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    naja ... das ginge dann so :
    Code:
    AUF DB [#DB_Kreis]
    L #Index
    L 6
    *D
    SLD 3
    LAR1
    
    L #_xKoordinate
    T DBW [AR1,p#0.0] // X
    L #_yKoordinate
    T DBW [AR1,p#2.0] //y
    L #_zKoordinate
    T DBW [AR1,p#4.0] //z
    ... wobei du dir vielleicht überlegen solltest, ob es nicht besser wäre mit REAL zu arbeiten ...

    Gruß
    Larry

  5. #25
    htw ist offline Benutzer
    Themenstarter
    Registriert seit
    18.05.2010
    Beiträge
    34
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    stimmt, wäre wohl besser. Voraussichtlich werden viele Zahlen mit Nachkommastellen auftauchen.

    Ich werde deine Tipps beherzigen und mal schaun, obs klappt. Ich werd dir dann ne Rückmeldung geben.

  6. #26
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    ... aber denk dran ... die REAL's sind nicht 2 Byte sondern 4 Byte breit - aslo den Pointer-Versatz etc. entsprechend berücksichtigen ...

  7. #27
    htw ist offline Benutzer
    Themenstarter
    Registriert seit
    18.05.2010
    Beiträge
    34
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist mir klar. Ich weiss noch nicht, was für ein Wegmesssystem verwendet wird bzw was für Rückmeldungen über die Posi ich bekommen tu.
    Falls die Rückmeldung über einem Inkrementalzähler erfolgt, reichen die vorhanden 2 Byte.

    Kurz mal eine grundsätzliche Frage:

    Sollte ich die Werte überhaupt in deinem DB ablegen?
    Oder in jedem Zyklus den jeweiligen Wert berechnen und direkt verarbeiten? Somit würde ich mir den DB ersparen, dann müsste nicht:
    ich meine Werte berechnen - in einem DB ablegen - und die gleichen Werte wieder rauslesen.
    ...sondern nur berechnen...

    Vor- bzw Nachteile? Zu was würdet ihr tendieren?

  8. #28
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Zur Beantwortung dieser Frage hole ich einfach noch einmal den folgenden Beitrag hervor :
    Zitat Zitat von Aventinus Beitrag anzeigen
    Dann kannst Du aber auch gleich in Echtzeit die Kreisbahn berechnen. Ich sehe aber das Problem bei der Synchronisatoin der Achsen... Präzise Geometrieen sind so nicht möglich.
    ... ich hatte das Ganze aber ohnehin mehr als eine theoretische Geschichte angesehen.

    Gruß
    Larry

  9. #29
    htw ist offline Benutzer
    Themenstarter
    Registriert seit
    18.05.2010
    Beiträge
    34
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Es ist mir nun möglich die Werte zu berechnen - abzulegen - und wieder auszulesen.

    Um die Werte ein- bzw auszulesen verwende ich, wie gesagt, einen Pointer:

    AUF DB 1

    L #taktgeber
    L 8
    *D
    SLD 3
    LAR1

    L #Kor_x
    T DBD [AR1,P#0.0]

    L #Kor_y
    T DBD [AR1,P#4.0]


    Ich habe nun ein Problem mit meinem Taktgeber. Die Schleife, die ich zum Berechnen meiner Werte benötige, muss als Real deklariert sein um die Punkte berechnen zu können, da diese ebenso also Real deklariert sind.

    Aber für den Pointer benötige ich Int oder Word. Ich muss letztendlich mit 2 Schleifen arbeiten, die gleichzeitig hochzählen jedoch einmal die Varibale als Real und einmal als Word.

    Gibt es nicht eine Möglichkeit, eine Real in eine Word oder eine Word in eine Real umzuwandeln. Ich weiss, dass die beiden unterschiedlich groß sind, aber gibt es nicht dennoch eine Möglichkeit.

  10. #30
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich verstehe jetzt gerade den Hintergrund nicht ... aber :

    ITD : Integer -> DINT
    DTR : DINT -> REAL

    RND : REAL -> DINT
    und um aus einem DINT einen INT zu machen einfach in eine solche variable transferieren (immer vorausgesetzt die Zahlen passen).

    Gruß
    Larry

Ähnliche Themen

  1. Array füllen
    Von elmoklemme im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 31.08.2010, 18:23
  2. DB Füllen
    Von SPS_NEU im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.08.2010, 16:25
  3. DB automatisch mit Werte füllen
    Von Potenzial im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.07.2010, 07:46
  4. Kreis füllen
    Von doretan im Forum HMI
    Antworten: 1
    Letzter Beitrag: 21.06.2009, 23:51
  5. DB's abwechselnd füllen und auslesen
    Von Karli im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 07.11.2008, 07:06

Lesezeichen

Berechtigungen

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