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

Ergebnis 1 bis 7 von 7

Thema: TIA erzeugt nicht-Standard-Offsets in speziellen SDTs?

  1. #1
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hintergrund:
    Ich arbeite an einem (C/C++) Tool mit dem man Absolut-Offsets zu DB-Schema-Beschreibungen erstellen kann
    und stütze mich dabei auf Tests mit Step7, TIA V11/12/13, MHJ etc.
    mein Tool basiert auf sehr viele manuellen und automatischen Tests und ich kenne das
    (nicht unbedingt triviale) Padding und Alignment-Verhalten von Typen in DBs sehr genau

    Jetzt habe ich aber doch mal eine komische Ausnahme entdeckt die ich mir aus
    Kompiler/Codegenerierung/Hardware-Sicht nicht wirklich erklären kann

    layout_difference.png


    Software: V12 SP1 Update 4

    Standard: Alle Struktur-Typen wie Struct, UDT, STDs werden in unoptimierten DBs auf 16Bit ausgerichtet (aligned)

    Es gibt den SDT "IP_V4" der die Daten einer IPv4-Addresse vorhalten/speichern kann:

    1. Es ist eine Struktur und SDT -> 16Bit Ausrichtung
    2. Er besteht aus einem Array[1..4] of Byte und ist daher (mit/ohne Padding) genau 4 Bytes lang

    ein frei stehender "IP_V4" Typ (siehe Bild) wird so in einem Datenblock eingebaut wie in 1. und 2. beschrieben
    und das Verhalten gilt für alle Struct-Artigen die ich je (sehr viele) gesehen habe

    Jetzt wird es komisch:

    Wenn man jetzt aber den Typ "TCON_IP_RFC" verwendet - der einen "IP_V4" beinhaltet wird
    dieser "IP_V4" nicht auf eine 16Bit- sondern auf 32Bit-Grenze ausgerichtet - und zwar nur in diesem SDT
    wenn ich das gleiche "TCON_IP_RFC"-Layout mit einem normalen Struct bauen kommt wieder
    das Standardausrichtung auf 16Bit

    Ich hab keine Ahnung ob es den "TCON_IP_RFC" auch in Step7 Classic gibt wenn ja - kann den einer mal benutzten und das Layout zeigen?

    Ideen dazu?

    Kann mir irgendjemand erklären was der Sinn dahinter sein soll - oder hat Siemens einfach mal das Alignment für
    "IP_V4" in dem "TCON_IP_RFC"-Typ unnötig hart von Hand eingestellt? Technisch ist der Unterschied aus Performance-Sicht
    unbedeutend, verbraucht (manchmal) einfach ein wenig mehr Speicher, aber warum dann diese Spezialisierung für diese EINE kleine Kombination

    Bitte keine Erklärungen wie Alignment/Padding funktioniert oder was Kompiler können/dürfen - das ist mir alles
    zu (100+x)% klar - und ja symbolische DBs sind an dieser Stelle nicht komisch - aber um die geht es hier nicht
    Zitieren Zitieren TIA erzeugt nicht-Standard-Offsets in speziellen SDTs?  

  2. Folgender Benutzer sagt Danke zu LowLevelMahn für den nützlichen Beitrag:

    IBFS (03.07.2014)

  3. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ja, das ist seltsam, eine Erklärung hab ich auch nicht, Strings verhalten sich ja i.Ü. auch anders als bei der Classic.
    Trotzdem solltest du das noch einmal in V13 testen, denn selbst die ist eher Beta, von V12 ganz zu schweigen…
    Möglich also,dass das nur ein kurzzeitiges Feature war.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #3
    Registriert seit
    16.03.2006
    Ort
    Franken
    Beiträge
    3.798
    Danke
    30
    Erhielt 917 Danke für 798 Beiträge

    Standard

    Die Beschreibung zu TCON_IP_RFC wurde aber schon gelesen oder?
    Dort steht doch das Byte 6 und 7 reserviert sind und daher die RemoteAdresse erst ab Byte 8 beginnt.

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.204
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Ich hätte auch vermutet, daß sich Siemens irgendwas "schickes" ausgedacht hat, um Speicheradressen in der Ansicht auszublenden, wie z.B. als "reserviert" gekennzeichnete Variablen/Adressen. Wen interessieren schon "reservierte" Bytes... die verwirren den normal-doofen 10-Minuten-Klick-Programmierer doch nur

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    @ChristophD

    Die Beschreibung zu TCON_IP_RFC wurde aber schon gelesen oder?
    Dort steht doch das Byte 6 und 7 reserviert sind und daher die RemoteAdresse erst ab Byte 8 beginnt.
    Das habe ich wohl übersehen (PDF?) - ist aber auch nicht wirklich sauber versteckte Reservierungen zu machen
    aber so ist es dann eben und kein Feenstaub oder sonstiges als Erklärung nötig
    Geändert von LowLevelMahn (03.07.2014 um 16:51 Uhr)

  7. #6
    Registriert seit
    16.03.2006
    Ort
    Franken
    Beiträge
    3.798
    Danke
    30
    Erhielt 917 Danke für 798 Beiträge

    Standard

    ich habe einfach im Informationssystem des TIA Portals bei Suche "TCON_IP_RFC" eingegebn und dann hat er die Beschreibung der SDT Struktur ausgespuckt
    wieso nicht sauber? Solche Reservierung sind gar nicht mal so unüblich für zukünftige Erweiterungen der Strukturen und Befehle.

  8. #7
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wieso nicht sauber? Solche Reservierung sind gar nicht mal so unüblich für zukünftige Erweiterungen der Strukturen und Befehle.
    zukünftige Erweiterungen mitten drinn - und nur 2 Bytes Platz? Bei anderen Typen nur am Ende, die meisten haben keine Reserve - ist einfach inhomogen

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 14.05.2014, 16:11
  2. Antworten: 20
    Letzter Beitrag: 06.10.2013, 11:16
  3. TIA und Step7 erzeugen unterschiedliche Array-Offsets?
    Von LowLevelMahn im Forum Simatic
    Antworten: 54
    Letzter Beitrag: 25.03.2013, 16:44
  4. SCL Datenbaustein kann nicht erzeugt werden
    Von Django2012 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 08.06.2012, 20:52
  5. Systendatenbautein kann nicht erzeugt werden
    Von Rene_sps im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 26.08.2010, 14:08

Lesezeichen

Berechtigungen

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