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

Ergebnis 1 bis 8 von 8

Thema: Bestimmter Datenbereich aus DB auslesen und in LOOP einbinden

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich hoffe, dass ihr mir vielleicht helfen könntet. Bislang bin ich von eurem Forum sehr überzeugt, habe auch schon viel selbst nachgelesen.
    Ich bin gerade dabei meine Technikerarbeit zu machen und bräuchte deshalb etwas "Unterstützung".

    Ich habe einen DB142 angelegt in dem ich bestimmte Parameter deklariert habe. In dem FC 142 möchte ich einen bestimmten Datenbereich des DB auslesen und anschließend über Profibus zu einem Festo Gerät zur Parametrierung schicken. Den ersten Teil der Programmierung habe ich erledigt. Nun stehe ich aber vor dem Problem die Daten in einer Schleife auszulesen. Damit ich nicht 200 Parameter erneut Laden muss.

    Welche Möglichkeiten habe ich, und wie kann ich das realisieren?

    Sieht so aus: (Beispiel)

    INDEX_RESET, BYTE, B#16#1
    PNU_RESET, WORD, W#16#C4
    WERT_RESET, DINT, L#100

    Diese "Werte" sind die einzelnen Parameter die ich Laden möchte. Sind wie gesagt ca. 200. Ich denke eher, das es ein Problem ist, das hier drei unterschiedliche Datenbereiche gelesen werden müssen. Beispielsweise der WERT muss DINT sein, schreibt der Hersteller Festo vor.

    Habt ihr eine Idee?

    Viele Grüße

    Ps: Falls notwendig kann ich Auszüge aus meinem Programm nachliefern.
    Zitieren Zitieren Bestimmter Datenbereich aus DB auslesen und in LOOP einbinden  

  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 torstenklenert Beitrag anzeigen
    Ich denke eher, das es ein Problem ist, das hier drei unterschiedliche Datenbereiche gelesen werden müssen.
    Eigentlich nicht!
    Du legst dir jetzt erst einmal eine Struktur dieser Daten an, am besten in einem UDT.
    Als nächstes rufst du in deinem DB über ein Array von 1..200 den UDT auf.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. #3
    torstenklenert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.08.2010
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Danke für den Hinweis, wäre es noch möglich mir ein kleines Beispiel aufzuzeigen?

    Also nicht die Lösung, aber dass ich ungefähr weiß wie ich so etwas realisieren kann mit dem UDT. Und vor allem, wie so ein Array in Bezug auf meine Fragestellung aussehen muss. Ich muss mich da danach dann erst einlesen.


    Vielen Dank!

  4. #4
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    anbei ein kleines Beispiel.

    Gruss Daniel
    Angehängte Dateien Angehängte Dateien
    • Dateityp: zip Bsp.zip (30,8 KB, 28x aufgerufen)
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  5. #5
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    in meinem Beispiel fehlt nur noch das Hochzählen der Nr. und setzen des Triggers um den jeweiligen Datensatz zu erhalten, kann man ja z.b. einfach über einen Zähler und einen Timer machen bzw. falls du eine Quittierung vom DP-Slave erhältst.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  6. #6
    torstenklenert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.08.2010
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi!

    Dein Beispiel hat mir schon sehr weitergeholfen, ich habe immerhin verstanden wie man UDT's anlegt und diese mit dem DB verknüpft.

    Ich bin noch dabei zu verstehen wie das mit den Pointern funktioniert. Ich habs mir gerade erst mal mit C durchgelesen um das Prinzip der Adressierung zu verstehen. Mit SPS / AWL hab ich leider noch nichts passendes gefunden.

    Mit dem hochzählen der Nr. meinst du warscheinlich die LOOP Schleife? Bislang wird ja nur ein Datensatz geladen wenn ich den AWL-Code richtig verstanden habe?

    Ich bekomme immer eine Quittierung vom DP-Slave bei jeder Parametrierung eines Datensatzes.

    Dieser Quittiert in der PNU (Byte3+4), die ersten 5 Bits haben dann 0000. Die restlichen Bits sind nicht relevant.

    Beispiel:
    2#0000_0

    Ich danke dir schon vielmals für deine Mühen, es gibt wirklich nicht viele Foren die einem so weiterhelfen!

    Viele Grüße

  7. #7
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    Zitat Zitat von torstenklenert Beitrag anzeigen
    ...Ich bin noch dabei zu verstehen wie das mit den Pointern funktioniert. Ich habs mir gerade erst mal mit C durchgelesen um das Prinzip der Adressierung zu verstehen. Mit SPS / AWL hab ich leider noch nichts passendes gefunden...
    hier ist das ganz schön erklärt -> http://www.sps-forum.de/showthread.php?t=8887

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  8. #8
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von torstenklenert Beitrag anzeigen
    ...Mit dem hochzählen der Nr. meinst du warscheinlich die LOOP Schleife? Bislang wird ja nur ein Datensatz geladen wenn ich den AWL-Code richtig verstanden habe?...
    Genau, an dem Ausgängen hast Du die mit Nr. und Trigger ausgewählten Daten stehen, über die Quittierung vom Slave kann man die Nummer hochzählen und entsprechend das Bit Trigger setzen.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. ANY-Pointer auf UDT mit Bestimmter Länge
    Von RONIN im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 07.08.2009, 07:16
  2. Antworten: 4
    Letzter Beitrag: 09.10.2007, 15:11
  3. Datenbereich Typ Any im FB auslesen
    Von Anonymous im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 04.01.2006, 18:44
  4. Prodave in Delphi einbinden zum auslesen von DBs in S7-400
    Von Anonymous im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 02.10.2005, 12:13
  5. Aufrufdauer bestimmter SFB's in einer S7-400
    Von Rengel im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 24.03.2005, 15:30

Lesezeichen

Berechtigungen

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