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

Ergebnis 1 bis 9 von 9

Thema: Eingangs-Array kopieren in Lokaldaten FB

  1. #1
    Registriert seit
    05.03.2015
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    ich suche jetzt schon seit Stunden, konnte bislang aber keine funktionierende Lösung finden, hoffe daher hier auf Hilfe.

    Ich möchte in einem FB einen Eingangsbereich von 32 Byte einlesen und in ein Struct im Temp-Bereich des FB kopieren.
    (später sollen dann von da aus die Werte je nach ihrem Format (gemischt Byte, Int, Uint) weiter aufbereitet werden)

    Da der FB dann rund 30mal mit verschiedenen Eingangsbereichen aufgerufen werden soll, verbietet sich ein direktes Bearbeiten der Eingabebytes.

    mit MOVE und MOVE_BLK und SFC20 bekomm ich es irgendwie nicht hin, die Bausteine mit den richtigen Parametern zu versorgen.
    der eine kann mit dem Pointer auf die E-Adresse nichts anfangen, der andere nichts mit dem Struct der Lokaldaten.

    An sich wollte ich zwar den Rest des Bausteins in AWL schreiben, wenns aber nur mit SCL geht, nehm ich auch das (Ist erst mein zweiter Kontakt mit TIA)

    Ich danke euch schon mal im Voraus für eure Tips
    Zitieren Zitieren Eingangs-Array kopieren in Lokaldaten FB  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.259
    Danke
    426
    Erhielt 476 Danke für 384 Beiträge

    Standard

    Hallo Mister,

    was hast du denn für eine CPU?
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. #3
    MisterCP ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2015
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Dagobert,

    Ist eine 1510SP-1 PN also ET200SP CPU
    Ist das relevant?

  4. #4
    Registriert seit
    25.02.2016
    Beiträge
    182
    Danke
    8
    Erhielt 38 Danke für 35 Beiträge

    Standard

    Hallo Mister CP.

    Ich würde einen PLC Datentyp ehemals UDT anlegen dort und diesen am IN des FB deklarieren so könntest du mit einer Eingangsangabe alles einlesen.
    EVTL. wenn alles sauber auf Wordgrenzen liegt entfällt sogar das spätere Rangieren auf Temp.
    Gruß TIA

  5. #5
    MisterCP ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2015
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo WinCCTIA,

    anscheinend meintest du was anderes als ich da raus lese, funktionieren tut es jedenfalls so, wie ich es umgesetzt habe nicht.

    1) einen PLC Datentyp namens UDT_01 angelegt und mit mit meinen 32Byte Daten deklariert
    2) IN-Variable im FB namens InData deklariert und als Datentyp den UDT_01 angegeben
    3) Aufruf meines FB in OB1 eingefügt und als Parameter für InData P#E0.0 Byte 32 übergeben => stimmt nicht mit den formalen Parametern überein

    was mache ich da falsch?

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.409
    Danke
    392
    Erhielt 2.342 Danke für 1.949 Beiträge

    Standard

    ... auf diese Weise kannst du nur einem ANY-Pointer Daten übergeben (der wäre da neutral).
    Ein IN-Parameter vom Typ Struct_xyz erwartet seine Eingangsdaten auch genau in dem Datenformat (eben auch als Struct_xyz).

    Gruß
    Larry

  7. #7
    Registriert seit
    15.10.2014
    Beiträge
    83
    Danke
    14
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Hallo WinCCTIA,

    leg den UDT_1 nochmal als Statische Variable im FB an. Dann kannst du einfach symbolisch kopieren.

    TIA_20160822_1.PNGTIA_20160822_2.PNG


    Stefan

  8. #8
    Registriert seit
    17.03.2010
    Ort
    Bonn
    Beiträge
    235
    Danke
    2
    Erhielt 52 Danke für 46 Beiträge

    Standard

    Das man den UDT schon in der Variablentabelle dem Eingangsbereich zuordnen kann ist bekannt ?
    Damit würde das kopieren wie auch immer entfallen
    de TE muss dann in der Variablentabelle die ca 30 Eingangsbereiche Symbolisch zuordnen ( Datentype UDT ) und kann dann das entsprechende Symbol
    dem FB übergegen.



    Edit
    wegen zu vielen UDTs
    Geändert von Peter Gedöns (22.08.2016 um 08:13 Uhr)

  9. #9
    Registriert seit
    08.04.2010
    Beiträge
    21
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Mister,

    schau dir mal den Befehl "Deserialize" an.
    Als Eingangsarray nimm deine 32 Byte, als Ausgang dann eine Variable vom Typ deines UDT's, diese Variable nimmst du dann als Eingang für deinen FB.

    Funktioniert allerdings nur mit 1500 Steuerungen (du hast ja eine 1510).

    Gruß
    Rainer

Ähnliche Themen

  1. TIA DB Bool Array in DB Word Array kopieren
    Von mkd im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 21.09.2015, 16:46
  2. Aus einem ARRAY ausgewählte Werte in ein anderes ARRAY kopieren
    Von lacosta19 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 06.08.2014, 15:42
  3. Array in mehrdiomensionales Array kopieren
    Von Curby im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 28.01.2014, 16:02
  4. Array kopieren
    Von gloeru im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 05.03.2011, 20:06
  5. Antworten: 12
    Letzter Beitrag: 21.04.2008, 23:19

Lesezeichen

Berechtigungen

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