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

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

Thema: SCL DB Pointer

  1. #1
    Registriert seit
    22.12.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich hab ein Problem. Ich möchte ein Modell eines Hochregallagers automatisieren. Und zwar habe ich mir ein DB angelegt in dem ich 50 structs habe (für jeden Lagerplatz einen Struct) jeder Struckt besteht aus meinem UDT (UDT besteht aus:
    • +0.0 belegt (bool)
    • zustand der ware (int)
    • artikel name (string[20])
    • gewicht (real)

    )
    die Daten die in dem UDT sind für jedes Fach gleich. Zu diesen Daten kommen die Positionen für von X und Z um das Fach anzufahren.

    Den DB möchte ich mittels einer SCL Quelle durchsuchen, auslesen verarbeiten und umschreiben.

    Allerdings habe ich davon absolut keine Ahnung habe mich mal versucht einzulesen im Forum aber ich habe halt absolut keine Ahnung von Pointern oder ähnlichem

    Danke im voraus schon mal
    Zitieren Zitieren SCL DB Pointer  

  2. #2
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Da Du in SCL programmieren willst, musst Du Dich nicht mit Pointern beschäftigen. Ich schlage Dir ein zweidimensionales Array von Deinem UDT vor. Fang mal an und stell dann konkrete Fragen, dann wird Dir hier sicher weiter geholfen.
    Gruß
    Erich

  3. #3
    hanz-landau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.12.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Dank für die Antwort. Ich hab mein UDT jetzt so auf gebaut:
    Belegt bool
    Zustand int
    Artikel string [20]
    Gewicht real
    Pos_x int
    Pos_x int
    Palette_vorhaden bool

    Zu meiner Scl Quelle

    Var
    Lagerplatz : array [ 0. .9,0. .4 ] of UDT
    End_var

  4. #4
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Bis auf die Tippfehler sieht das brauchbar aus.
    Du musst aber das Array in einem globalen Datenbaustein oder als statische Variable eines FB anlegen.
    Jetzt kannst Du in einem Baustein mit zwei ineinander geschachtelten FOR-Schleifen den Artikel suchen. Auf geht's!
    Gruß
    Erich
    Geändert von LargoD (23.12.2014 um 11:11 Uhr)

  5. #5
    Registriert seit
    20.02.2014
    Beiträge
    75
    Danke
    13
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,
    interessehalber wollte ich die Aufgabe auch programmieren, ist ja nur ein kurzer Code. Hat auch ganz gut geklappt, bis auf den String. Ich ruf den Baustein im OB1 auf und übergib die Werte an temporäre Variablen. Das ganze ist ja nur zum Lernen. Den Lagerplatz, den ich aufrufe habe ich auch mit Werten vorbelegt.

    Wäre cool, wenn mir jemand erklären kann wo mein Fehler steckt. Mit String habe ich zuvor noch nie gearbeitet.

    Schöne Weihnachten

    Code:
    FUNCTION_BLOCK FB43
    VAR_INPUT
        x: INT;
        y: INT;
    END_VAR
    VAR_OUTPUT
        Belegt: BOOL;
        Zustand: INT;
        Artikel: STRING[20];
        Gewicht: REAL;
        END_VAR
    VAR_TEMP
        // temporäre Variablen
    END_VAR
    VAR
        // statische Variablen
    END_VAR
    Belegt:= Test_DB.Stellplatz[x,y].Belegt;
    Zustand:=Test_DB.Stellplatz[x,y].Zustand;
    Artikel:=Test_DB.Stellplatz[x,y].Artikel;
    Gewicht:=Test_DB.Stellplatz[x,y].Gewicht;
        // Anweisungsteil
        
        ;
    END_FUNCTION_BLOCK

  6. #6
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Zitat Zitat von Andi_ Beitrag anzeigen
    ...Den Lagerplatz, den ich aufrufe habe ich auch mit Werten vorbelegt.
    Wie hast Du das gemacht?
    Vermutung: die ersten beiden Bytes des String sind nicht richtig belegt.
    Gruß
    Erich

  7. #7
    Registriert seit
    20.02.2014
    Beiträge
    75
    Danke
    13
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Habs gerade nicht da, aber soweit ich mich erinnere war im ersten Byte 20 und im zweiten eine 1.
    In den anderen steht dann die Information

  8. #8
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Zitat Zitat von Andi_ Beitrag anzeigen
    Habs gerade nicht da, aber soweit ich mich erinnere war im ersten Byte 20 und im zweiten eine 1...
    Dann war der String aktuell nur einen Buchstaben lang.
    War das Absicht?

  9. #9
    Registriert seit
    20.02.2014
    Beiträge
    75
    Danke
    13
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Das ist ein komisch. Ich möchte den String steuern, klappt auch soweit. Aber wenn ich den DB beobachte schreibt er ein A rein.
    Wie schon erwähnt. Ich hab zuvor noch nie mit String gearbeitet.... Es kann daher auch ein totaler Anfängerfehler sein.

    Beobachten2.JPG

  10. #10
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Andi_ Beitrag anzeigen
    Das ist ein komisch. Ich möchte den String steuern, klappt auch soweit. Aber wenn ich den DB beobachte schreibt er ein A rein.
    Wie schon erwähnt. Ich hab zuvor noch nie mit String gearbeitet.... Es kann daher auch ein totaler Anfängerfehler sein.
    Strings in einem DB kannst Du nicht beobachten, das siehst Du daran, dass das Feld ausgegraut ist.
    In Deiner VarTab musst Du das zweite Byte auf die aktuelle Länge setzen (hier also auch 20).

Ähnliche Themen

  1. Scl-any Pointer
    Von johnij im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 27.02.2017, 13:29
  2. Step 7 SCL Pointer
    Von Sickone4 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.06.2014, 16:27
  3. SCL: Pointer
    Von dinner4one im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.07.2008, 18:07
  4. Pointer in SCL ?
    Von AndreK im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.04.2008, 21:24
  5. Pointer in SCL
    Von broesel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.05.2007, 11:32

Lesezeichen

Berechtigungen

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