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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: DB schnell durchsuchen

  1. #1
    Registriert seit
    04.01.2008
    Ort
    Wien
    Beiträge
    773
    Danke
    136
    Erhielt 39 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe eine Aufgabe bei der mir irgendwie der Ansatz fehlt.

    Ich habe einen DB der eine Struktur besitzt in der 2 Positionen (Längs und Höhe) gespeichert sind. (von einer Kamera aufgenommen)

    Wenn ich nun mit meinem Werkzeug auf der Längsposition bin (ca 300mm nach der Kamera) muss ich die entsprechende Höhenposition anfahren.

    dazu muss ich die Längsposition die gespeichert wurde aus einen DB auslesen.

    Der DB ist nach FIFO aufgebaut.

    Ich kann die Geschwindigkeit der Längsbewegung nicht beeinflussen da es sich um einen Wagen handelt der auch die Kamera mit sich trägt. Ausserdem handelt es sich bei dem Werkzeug um einen Schweissbrenner.

    ____________________________________________________________

    um nun Schnell die richtige X-Position (die nächst grössere) zu finden muss ich den DB schnell durchstöbern.

    Hat jemand einen Tipp?
    irgendetwas ist ja immer...
    ING. Gerald Miedler
    Zitieren Zitieren DB schnell durchsuchen  

  2. #2
    Registriert seit
    21.12.2006
    Beiträge
    61
    Danke
    2
    Erhielt 18 Danke für 16 Beiträge

    Standard

    Ist dein Suchkriterium in aufsteigender Reihenfolge in dem DB vorhanden?
    Wenn ja, dann google mal nach "binärer Suche".

  3. #3
    Registriert seit
    21.01.2008
    Beiträge
    70
    Danke
    0
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Hi Gerri,
    ich kann dir leider nicht so recht folgen.
    Wird der DB online aktualisiert (weil du von FIFO sprichst) oder ist es eine reine Lookup Tabelle? Also wenn du bissle genauer wirst, helf ich gerne.
    Watchdog hat dich schon auf binäre Suche gebracht wenn die Daten sortiert sind. Vielleicht geht bei dir auch Interpolationssuche oder ist vielleicht sogar eine Indizierung möglich?

    Du schreibst "schnell durchsuchen" also ist die Zykluszeit der Knackpunkt?
    Vielleicht kannst du schon vorher anfangen den Start und Endindex einzugrenzen, also die Rechenzeit auf mehrere Zyklen aufteilen? Also wie gesagt, für mich bitte nochmal ausführlich beschrieben
    Gruß von Andy

  4. #4
    Registriert seit
    05.03.2007
    Ort
    Lindlar
    Beiträge
    112
    Danke
    19
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Hallo Gerri,

    ich glaube ich verstehe was du vorhast. Bist du immer noch an dem SINAMICS-Projekt dran?
    So etwas ähnliches musste ich bei mir auch realisieren.
    Code:
    DB1.DBD0        Wert_Höhe_0mm
    DB1.DBD4        Wert_Höhe_1mm
    DB1.DBD8        Wert_Höhe_2mm
    .
    .
    .
    DB1.DBD1200     Wert_Höhe_300mm
    Du nimmst die Länge als "Index" für den Pointer und greifst damit dann auf den DB zu.

    Code:
          L     Laenge
          SLD   4                         // für Pointernutzung
          LAR1  
    
          AUF   DB1
          L     DBD [AR1,P#0.0]            // P#0.0 - kein Offset im DB
          T     #benoetigte_Hoehe
    Wenn mich nicht alles täuscht gibt es ein Problem wenn die Pointergröße 4096 übersteigt (also im AR1 ein Wert größer P#4096.0 steht).
    Falls das der Fall sein sollte musst du mit einem ANY-Pointer arbeiten.
    Wenn ich damit falsch liege, so korrigiere mich bitte jemand!!!

    Ich weiß auch gerade aus dem Kopf nicht ob das SLD4 richtig ist oder ob es SLD3 war.

    Gruß
    Matthias
    IF Time < '09:00:00' THEN
    SELECT finger from right hand where ID=3
    END IF

  5. #5
    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 Panzerknacker Beitrag anzeigen
    Ich weiß auch gerade aus dem Kopf nicht ob das SLD4 richtig ist oder ob es SLD3 war.
    die multiplikation mit 16 ist an dieser stelle schon fast clever - nicht nur, weil sie nicht jeder versteht
    Geändert von vierlagig (30.09.2009 um 07:56 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Registriert seit
    01.11.2007
    Beiträge
    1.239
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Ich würd da sogar mit 32 multiplizieren wollen (SLD5) ...

    Grüße von HaDi

    [edit]
    SLD3 für Pointer-Format und nochmal SLD2 (mal 4), damit man das richtige DBD im DB trifft.
    Zu beachten wäre dann noch, ob der Index bei 0 oder bei 1 startet.
    [/edit]
    Geändert von HaDi (29.09.2009 um 21:32 Uhr) Grund: Nachtrag

  7. #7
    Registriert seit
    05.03.2007
    Ort
    Lindlar
    Beiträge
    112
    Danke
    19
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Danke für die Korrektur HaDi hatte es gerade nicht mehr im Kopf!
    Im Beispiel DB oben habe ich den Eintrag bei 0 anfangen lassen.
    Sonst müsste er halt noch den Pointer um 1 dekrementieren. Mache ich
    persönlich eher ungern weil im Fall das der Pointer auf 0 steht hast du danach -1 drin stehen
    und müsstet diesen Fehlerfall wieder abfangen.
    Geändert von Panzerknacker (29.09.2009 um 21:48 Uhr)
    IF Time < '09:00:00' THEN
    SELECT finger from right hand where ID=3
    END IF

  8. #8
    Registriert seit
    01.11.2007
    Beiträge
    1.239
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Hardy?

    Soll ich dich jetzt Laurel nennen ?

    Grüße von HaDi

  9. #9
    Registriert seit
    05.03.2007
    Ort
    Lindlar
    Beiträge
    112
    Danke
    19
    Erhielt 20 Danke für 18 Beiträge

    Standard

    LOL, sorry!
    Hab's ja auch sofort korrigiert!
    IF Time < '09:00:00' THEN
    SELECT finger from right hand where ID=3
    END IF

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Gerri Beitrag anzeigen
    ... um nun Schnell die richtige X-Position (die nächst grössere) zu finden muss ich den DB schnell durchstöbern.

    Hat jemand einen Tipp?
    Ob mein Vorschlag schnell ist, das ist wahrscheinlich Ansichtssache ...
    Ich würde hier ein SCL-Script erstellen - allein der Übersichtlichkeit und Verständlichkeit wegen ...

Ähnliche Themen

  1. Kont. Heizen, schnell Heizen, schnell kühlen
    Von Krumnix im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 21.02.2011, 18:43
  2. Schnell Zähler bei der CPU 313 C
    Von oli--pro im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.09.2008, 20:22
  3. Ist OPC sicher und schnell?
    Von BorisDieKlinge80 im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 04.06.2008, 20:20
  4. Schnell- Kurs
    Von pashewuh im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 01.05.2008, 16:02
  5. DB durchsuchen
    Von puehri im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.12.2005, 14:46

Lesezeichen

Berechtigungen

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