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

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

Thema: Tabelle auslesen

  1. #1
    Registriert seit
    24.04.2013
    Beiträge
    52
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen zusammen,

    ich stehe vor dem Problem eine Tabelle auszulesen.


    Problemstellung:
    Ich bekomme einen 4-stelligen Int Wert und muss diesen Wert mit 280 verschiedenen Datensätzen vergleichen um einen passenden Wert für meine Schaltung zubekommen.
    Tabelle.JPG
    Ich hatte bis jetzt überlegt jeden Wert einzeln zuvergleichen, nur das wäre viel zu viel Aufwand.


    Gibt es in AWL/FUP eine Möglichkeit wie bei C über ein doppeltes Array die Datenauszulesen?
    Gruß

    Dennis
    Und schon mal vielen Dank im voraus!
    Zitieren Zitieren Tabelle auslesen  

  2. #2
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Aber natürlich geht so was.

    Einen Zeiger über den Daten-Db jagen und den Inhalt vergleichen, eventuell in einer hübschen kleinen Schleife...

    Ist es Zeitkritisch oder langt alle Zyklus ein Wert?
    Das Grauen lauert in der Zwischenablage !!

  3. #3
    Registriert seit
    24.04.2013
    Beiträge
    52
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Erstmal Danke für die Antwort.

    Es ist nicht Zeitkritisch, Allerdings ich muss die "Namen" vergleichen.

    Also z.B. ich bekomme den Wert 3051 in mein FB und muss dann den Wert 6 ausgeben.
    Das Problem ist ja das ich als Name nicht 3051 eintragen kann und somit kann ich den Wert auch nicht vergleichen.

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Nun, Du solltest zB die Werte nacheinander legen, also zuerst den x-Wert, dann den y-Wert.
    Dann machst Du eine Schleife wo du immer um 4 Bytes erhöhst (also auf den x-Wert schaust), vergleichst Wert>x-Wert, wenn ja ist der y-Wert Adresspointer + P#2.0. wenn nein, Schleife erhöhen.

  5. Folgender Benutzer sagt Danke zu borromeus für den nützlichen Beitrag:

    Wolfhunter (10.05.2013)

  6. #5
    Registriert seit
    24.04.2013
    Beiträge
    52
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Du meinst so?

    Inhalt vom DB

    Name:



    Wert:
    Komponente 1140 1140
    Wert 1140 5
    Komponente 1602 1602
    Wert 1602 6

  7. #6
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Genau!
    unter dem Symolischen Namen kannst Du nicht suchen.
    Du kannst aber auch zwei DBs nehmen.
    In einem die X-Werte im zweiten die Y-Werte.
    Ist Geschmackssache.

    Aber das Prinzip wird immer gleich bleiben.

  8. #7
    Registriert seit
    24.04.2013
    Beiträge
    52
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Okay ,Danke.
    jetzt muss ich nur noch herausfinden, wie die Schleifen funtionieren
    Bin AWL-Neuling.

  9. #8
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Finest Du hier im Forum zu Hauf'.

  10. #9
    Registriert seit
    24.04.2013
    Beiträge
    52
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ist das so richtig?

    L #Index
    L ADR1

    Auf DB 1002
    Start: L Wert_x
    L DBW[AR1, P0.0]
    ==I
    SPB Gleich

    L #index
    L 4.0
    +I
    T #index
    SPA Start


    Gleich: L DBW[AR1, P2.0]
    T #Wert_Ausgabe

  11. #10
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So ähnlich denke ich.


    2te Zeile "LAR 1"
    Solltest Du statt ==I nicht besser >=I abfragen? Ich kenne Deine Werte nicht, sind die sicher um 1 aufsteigend? Schaut in der Tabelle in Eintrag #1 nicht so aus.
    Du solltest noch eine Begrenzung einfügen (was ist wenn Dein Wert_x größer ist als der höchste x-Werte Bereich), da fliegt die SPS auf die Schnauze (weil Schleife nicht beendet wird).
    Und da ist noch ein Fehler mit dem Index in der Schleife... ich meine Du solltest nicht diesen erhöhen sondern das AR1 (den Index schreibst Du ja VOR der Schleife ins AR1).


    Was steht im Index?
    Geändert von borromeus (29.04.2013 um 12:00 Uhr)

Ähnliche Themen

  1. Tabelle Visualisierung
    Von Simon_ im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 21.12.2011, 16:38
  2. Visualisierung Tabelle
    Von COOLT im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 14.08.2009, 14:13
  3. Globaldaten Tabelle
    Von Sven2603 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.01.2009, 11:13
  4. Tabelle in Protool
    Von Gerd Fährmann im Forum HMI
    Antworten: 1
    Letzter Beitrag: 09.03.2006, 09:06
  5. Antworten: 6
    Letzter Beitrag: 01.02.2005, 11:22

Lesezeichen

Berechtigungen

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