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

Ergebnis 1 bis 8 von 8

Thema: Struct to Byte

  1. #1
    Registriert seit
    27.06.2014
    Beiträge
    45
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hello

    I have a struct fx:
    TYPE
    stTest :
    STRUCT
    BoolTest : bool;
    ByteTest : byte;
    IntTest : int;

    END_STRUCT;
    END_TYPE

    I want to trasfer it over Profinet IO (ILC131) to a Siemens Master.
    I Found the function MEMCPY, and in the Help file it says; "For this type of data management it is recommended to use the data types STRUCT and ARRAY"
    But i can't connect the stTest Struct to the FB?

    I'm a little lost now...


    - Emil
    Zitieren Zitieren Gelöst: Struct to Byte  

  2. "Hey Emil,

    you could also try using the Buf_To_Byte FB.

    If you want to use the MemCopy FB you would have to change your structure that the first member contains the number of bytes you want to copy.

    In either case you would have to watch out for padding bytes.

    Mark"


  3. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.406
    Danke
    392
    Erhielt 2.340 Danke für 1.947 Beiträge

    Standard

    Did you have your struct-Definition assigned to the FB ... or a Variable which has the Type of the struct-Definition ?
    Perhaps you should show us the code which contains the FB-call ...

  4. #3
    emilg ist offline Benutzer
    Themenstarter
    Registriert seit
    27.06.2014
    Beiträge
    45
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hello
    I have connected the struct to a variable. "Teststruct"
    I found that Pack/unpack can do the job. But it uses the first 8 bytes for a check sum i think. The FB Helpfile don't contain any information about that.
    Right now i'm just testing with a new empty program, so i don't mess up my working program.
    struct_to_byte.jpg

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.406
    Danke
    392
    Erhielt 2.340 Danke für 1.947 Beiträge

    Standard

    I'm not familiar with the Phoenix-PLC - but I think that you have a generell understanding problem.
    For the connection to the Siemens-PLC you need to have a configured memory-area on both sides (Siemens and also Phoenix). Now you can use this memory-area directly or you could assign your variable "TestStruct" to the memory-area. In this case MemCopy could be the solution. When I see your datatable I can't imagine that Pack is the right approach ...

  6. #5
    emilg ist offline Benutzer
    Themenstarter
    Registriert seit
    27.06.2014
    Beiträge
    45
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hello

    It works like i want it to... if i just skip the first 8 bytes...
    The biggest problem is that the function has a R_Trig input, but if i use a clock pulse on it, i think it can work as it should anyway.
    On my Siemens S7-1200 (Master), i connect to the Phoenix ILC131 (Device) over Profinet.
    Then i just read the bytes in the Siemens Controller.
    siemens tags.png
    In this Example from the Siemens, it's not the Teststruct i'm reading out.
    I know i can use special Siemens ISO communication library, but i want it to be directly on profinet, so it's easy to use on other vendor PLC's alsow.

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.406
    Danke
    392
    Erhielt 2.340 Danke für 1.947 Beiträge

    Standard

    Did you thought about UDP-Communication ... ?
    In this case you are more or less Independent from special vendor functions ...

  8. #7
    Registriert seit
    08.09.2010
    Ort
    Blomberg
    Beiträge
    390
    Danke
    1
    Erhielt 61 Danke für 58 Beiträge

    Standard

    Hey Emil,

    you could also try using the Buf_To_Byte FB.

    If you want to use the MemCopy FB you would have to change your structure that the first member contains the number of bytes you want to copy.

    In either case you would have to watch out for padding bytes.

    Mark
    Geändert von Phoenix Contact (11.08.2016 um 14:34 Uhr)
    PHOENIX CONTACT Deutschland GmbH
    Hotline: 05281-946-2888
    automation-service@phoenixcontact.com
    www.phoenixcontact.de

  9. #8
    emilg ist offline Benutzer
    Themenstarter
    Registriert seit
    27.06.2014
    Beiträge
    45
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey Mark

    Buf_To_Byte worked better. (Without checksum)
    But i dont see any change in the byte order if i True Buf_format?
    See my test here:
    buf.jpg
    I use a ILC191ME/AN

Ähnliche Themen

  1. BYTE in WORD (High Byte, Low Byte)
    Von TimeOUT im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 18.03.2016, 13:48
  2. Step 7 Pointer auf Struct in Struct
    Von schuld im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.08.2014, 08:57
  3. Variablendeklaration: Struct in Struct deklarieren in TwinCAT v2.x
    Von Michi85 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 15.12.2013, 23:56
  4. Antworten: 5
    Letzter Beitrag: 08.04.2011, 14:36
  5. Struct Größe von einem Byte
    Von Jochen Kühner im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.09.2004, 10:36

Lesezeichen

Berechtigungen

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