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

Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 60

Thema: Mit Schleife DB füllen

  1. #1
    Registriert seit
    18.05.2010
    Beiträge
    34
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich schreibe gerade meine Bachelorarbeit und dabei muss ich ein Portal konstruieren, dass in X-, Y- und Z- Richtung verfährt, verschied. Positionen anfährt, ect ... und mit SPS gesteuert wird.

    Z.b. sollen man bestimmte Formen abfahren können mit unterschiedlicher Größe.

    Dreieck und einfache Geometrien, die mit wenigen Punkten abgefahren werden können, sind kein Problem.

    Anders sieht es mit einem Kreis aus. Hier habe ich mir anfangs gedacht, ich berechne z.b. 500 Koordinatenpunkte mit einem VBA Programm oder auch Taschenrechner und gebe diese manuell in einem DB ein. Je nach dem, wie groß oder an welche Stelle nun dieser Kreis "gemalt" werden soll, werde ich mit Hilfe eines Pointers die DB´s für die verschied. Koordinatenachse auslesen und ihn mit einem Faktor multiplizieren (um ihn zu vergrößern) oder addieren (um eine Verschiebung stattfinden zu lassen) und in neuen DB´s ablegen, die ich verarbeite.

    Natürlich ist z.b. das Eingeben manuell von 500 Werten umständlich und meiner Meinung nach wenig professionell. Eleganter wäre es doch, die math. Formel zu Berechnung der Kreiskoordinatenpunkte zu Programmieren und die DB´s mit den Koordinaten zu füllen und anschließend wieder zu verarbeiten. Ich dachte beim Füllen der DB´s evenutell an eine Schleife.

    Ist das möglich?

    Hoffe ich habe mein Anliegen verständlich geschildert.

    VIELEN DANK
    Zitieren Zitieren Mit Schleife DB füllen  

  2. #2
    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 htw Beitrag anzeigen
    Je nach dem, wie groß oder an welche Stelle nun dieser Kreis "gemalt" werden soll, werde ich mit Hilfe eines Pointers die DB´s für die verschied. Koordinatenachse auslesen und ihn mit einem Faktor multiplizieren (um ihn zu vergrößern) oder addieren (um eine Verschiebung stattfinden zu lassen) und in neuen DB´s ablegen, die ich verarbeite.

    Natürlich ist z.b. das Eingeben manuell von 500 Werten umständlich und meiner Meinung nach wenig professionell. Eleganter wäre es doch, die math. Formel zu Berechnung der Kreiskoordinatenpunkte zu Programmieren und die DB´s mit den Koordinaten zu füllen und anschließend wieder zu verarbeiten. Ich dachte beim Füllen der DB´s evenutell an eine Schleife.

    Ist das möglich?
    Ja das geht auf jeden Fall.
    Und wie Du selber schon erwähnst, sind die Stichwörter "Schleife" und "Indirekte Adressierung"
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

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

    Standard

    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.
    mfG Aventinus

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

    Standard

    Würdet ihr die X- und Y-Koordinaten in einen DB tun?

    DB x und y

    0.0 x-Wert 1
    2.0 y-Wert 1
    4.0 x-Wert 2
    6.0 y-Wert 2
    8.0 .....


    ODER 2 DB´s


    DB x --- DB y

    0.0 x-Wert 1 --- 0.0 y-Wert 1
    2.0 x-Wert 2 --- 2.0 y-Wert 2
    4.0 x-Wert 3 --- 4.0 y-Wert 3

    Jedem X-Wert wird ein Y-Wert zugeordnet um eine Position anfahren zu können.

    Wie gesagt, es geht um ne Bachelorarbeit und sollte möglichst praxisnah sein. Ich habe leider noch keine Erfahrung in der Industrie.

    Vielen Dank nochmals!

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    du könntest dir ein Array in dem DB deklarieren - das geht auch 2dimensional.
    Und wenn du es so richtig schön machen willst dann machst du das ganze nicht mit AWL sondern eher mit SCL. Das erspart dir dann auch eine ganze Reihe weiterer Problemchen, die bestimmt noch kommen ...

    Gruß
    Larry

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

    Standard

    Trotzdem, ich würde die Werte nicht mit einer Schleife im DB Ablegen und dann wieder mit einer Schleife aus dem DB holen.

    Rechne doch die Sollkoordinaten direkt aus.
    mfG Aventinus

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

    Standard

    Meine Idee sah bis jetzt in etwa so aus:

    Bsp. Kreis (da das die schwierigste Form ist):

    - Ich rechne einen Kreis aus und befülle einen DB mit den x-Werten und einen mit den y-Werten manuell.
    - Anschließend lese ich die Werte aus (Pointer) und multipliziere (bei Vergrößerung oder Verkleinerung des Radius) sie oder addiere und subtrahiere sie (Verschiebung).


    Zu den Verbesserungen:

    - Kreis Formel programmieren und DB (Array) mit den Werten füllen.
    - 2 Dimensional


    Meine Fragen:

    @ Larry:
    - kannst du mir erklären, wie ein 2D Array aussieht? kann mir noch nichts darunter vorstellen.
    - SCL? Hab ich schon mal gehört, aber noch keine Praxiserfahrung bzw. überhaupt Erfahrung damit. Ist die Sprache ähnlich der von AWL?

    @ Aventinus:
    - Du meinst also, ich sollte die Werte gar nicht in DB´s ablegen?
    - Wie kann ich dann verschied. Positionen zeit diskret anfahren?

    Nochmals ein großes Dankeschön für eure immer kompetenten und hilfreichen Antworten. Als Student hat man einfach nie die Erfahrung, die ihr alten Hasen habt (Sagt jetzt bitte nicht, ihr seid 19 oder 20 Jahre alt ).

  8. #8
    Registriert seit
    23.10.2009
    Beiträge
    399
    Danke
    59
    Erhielt 114 Danke für 88 Beiträge

    Standard

    Um die Kreispositionen zu speichern brauchst Du kein zweidimensionales Array, Du musst nur zwei Positionen pro Stützpunkt speichern. Das kannst Du in zwei DBs oder auch eleganter als "Array of struct" machen, es bleibt aber dabei eindimensional.
    Ich würde so vorgehen:
    Definiere einen UDT, der einen Punkt über seine x,y und z Koordinaten definiert.
    Um Bahnkurven zu speichern, definierst Du in einem DB ein Array dessen Elemente aus diesem UDT bestehen.
    Das Vorbesetzen des Arrays und die Datenmanipulationen würde ich in SCL schreiben, dann sparst Du Dir das ganze Pointergerödel. Das wird besonders interessant dann, wenn Deine Kurven nicht in einer Ebene liegen und Du deshalb räumliche Transformationen durchführen musst.
    z. B. eine Kreisbahn die räumlich "schräg" im Koordinatebsystem liegt, oder ist das in der Aufgabenstellung ausgeschlossen?

    Gruß
    Erich

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

    Standard

    Genau, so wie du es sagst, hab ich mir das auch gedacht.
    Schräg muss nichts "gemalt" werden. Aber ich SCL trotzdem mal im Hinterkopf behalten.

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Genial, klappt!

    sieht so aus:

    DB

    0.0 STRUCT
    +0.0 zeitraster STRUCT
    +0.0 werte ARRAY[0..600]
    *6.0 "UDT_WERTE" <-- da X,Y,Z jedesmal also Merkerwort mit 2 Bytes abgelegt
    =3606.0 END_STRUCT

    Im UDT stehen dann X,Y,Z, die sich wiederholen, bis 600 Werte von jedem drinstehen. Auslesen über Pointer. Das funktioniert auch!

    SUPER!!!



    Nur beim Befüllen habe ich noch keine elegante Idee, wie man das mit scl oder wie auch immer machen könnte. Natürlich ist es kein Problem per Hand die Werte reinzuhacken.

    Kann mir da jmd auf die Sprünge helfen?

    Ganz kurz noch:
    bei Programmen, die ihr mir eventuell im Forum mitteilt und aus denen ich in meiner Arbeit inhaltlich etwas entnehme, werdet ihr natürlich korrekt zitiert und als Quelle genannt.

Ä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
  •