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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Tabelle auslesen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    L #Index
    L ADR1

    Auf DB 1002
    Start: L Wert_x // Wert der eingelesen Wert
    L DBW[AR1, P0.0] // Vergleichs- Wert aus dem DB
    ==I //Prüfen auf GLeichheit
    SPB Gleich // Wenn die Werte gleich sind, dann springe zur Funktion "Gleich"
    //Wenn nicht laufe weiter durch
    L #index // Lade den Wert wo man gerade ist.
    L 4.0 // Lade 4
    +I // Addiere Index+4
    T AR1 // Lade den Wert in den Adressregister 1 ,sollte auch AR1 stehen

    L AR1 // Lade AR1
    T #Index // Transferiere den Wert in #Index

    L #index
    L 1064 // maximaler Wert 1060 plus 4
    ==I
    SPB ENDE

    SPA Start


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

    ENDE: Set
    = M1000.0


    Im Index steht der Wert wo er sich gerade befindet. Also am Anfang auf 0 und jede weitere Runde plus 4. 0....4....8....12 usw.

    Die Werte Liste steht ganz oben drinnen.
    Und ich bekomme Werte die auf exakt Gleich geprüft werden müssen. Also ==I


    Das Problem ist das die SPS in der Anlage steht und ich da nicht so ohne weiteres testen kann

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

    Standard

    ich denke mal diese Routine kannst Du durch den Simulator jagen.

    Das verhindert böse Überraschungen in der Anlage...
    Das Grauen lauert in der Zwischenablage !!

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

    Standard



    L #Index
    L ADR1

    Auf DB 1002
    Start: L Wert_x // Wert der eingelesen Wert
    L DBW[AR1, P0.0] // Vergleichs- Wert aus dem DB
    ==I //Prüfen auf GLeichheit
    SPB Gleich // Wenn die Werte gleich sind, dann springe zur Funktion "Gleich"
    //Wenn nicht laufe weiter durch
    L #index // Lade den Wert wo man gerade ist.
    L 4.0 // Lade 4
    +I // Addiere Index+4
    T AR1 // Lade den Wert in den Adressregister 1 ,sollte auch AR1 stehen
    Nicht ganz gut, in Deinem Prog würde er immer dieselbe Stelle abfragen...
    Das Grauen lauert in der Zwischenablage !!

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

    Standard

    L AR1 // Lade AR1
    T #Index // Transferiere den Wert in #Index

    Deswegen diese Zeilen

    Und welchen Simulator meinst du?

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

    Standard

    L AR1 // Lade AR1
    T #Index // Transferiere den Wert in #Index

    Hab ich übersehen.


    Ich meine den Simulator im Simatic_Manager.
    Das Grauen lauert in der Zwischenablage !!

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

    Standard

    Habe jetzt keine Zeit mehr, aber:
    L 4.0
    muss L P#4.0 heissen

    L 4.0 lädt den Gleitkommawert 4.000

  7. #17
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Wie würdest du es in C machen?
    Meine Frage zielt auf Folgendes:
    Wenn die Namen konstant sind oder selten einer hinzugefügt oder gelöscht wird, könnte sich eine binäre Suche lohnen (9 statt 280 Schleifendurchläufe). Dazu müssen die Namen halt auf- oder absteigend geordnet im DB stehen.

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

    Standard

    Danke Borromeus.

    @Zottel

    In C würde ich ein Array definieren

    Und mit einer IF-SChleife alle Werte abfragen bis ich meinen gefunden habe.

    Die Werte werde danach nicht mehr geändert, bzw nur noch sehr selten.
    Und die Namen sind schon alle aufsteigend sortiert.

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

    Standard

    Bei der Ausführung im Simulator bekomme ich jedesmal einen SF und die SPS geht in Stop.

    Aktuelle Code
    quellcode.JPG

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was sagt der Diagnosepuffer warum sie aus STOPP geht?
    Zykluszeitüberschreitung?

    An die kommt man:

    Zielsystem - Diagnose/Einstellung - Baugruppenzustand

    Ich würde die Abfrage

    L #index
    L 1064 // maximaler Wert 1060 plus 4
    >=I

    abfragen. wenn Du Die 1064 bei ==I nicht genau triffst bleibt die CPU in der Schleife hängen.
    Das Grauen lauert in der Zwischenablage !!

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