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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Struktur in Array of Bytes kopieren

  1. #11
    gargantua ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.11.2013
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Pipboy: Das habe ich auch mal probiert und es funktioniert.
    Ich werde trotzdem die Variante von shutdown_TIA12 nutzen. Das ist einfach sauberer (dann bin ich unabhängig davon wie TIA die Struktur verwaltet und muss auch die Bausteinoptimierung nicht abschalten).

    Danke für Eure Hilfe.

  2. #12
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Zitat Zitat von gargantua Beitrag anzeigen
    @shutdown:
    Das ist natürlich die sauberste Lösung. Werde ich wohl so übernehmen.

    Ich komme eigentlich aus der C/C++ Welt, deshalb eine Frage:
    Gibt es bei TIA-Strukturen so etwas wie Padding (d.h. zwischen einzelnen Elementen einer Struktur werden Leerbytes eingefügt, so dass die Elemente immer auf einer durch 2 oder 4 teilbaren Speicher-Adresse liegen)? Das würde mir erklären warum DPRD_DAT nur mit Arrays funktioniert.
    Hi all

    ja in der wundersamen Welt des TIA gibt es Padding. Sogar zwei Regelsätze

    Standard Baustein verwenden das was Siemens seit 15 Jahren macht. Das Meiste ist auf 2Byte ausgerichtet. Bei Array of BOOL wird es ungemütlich. Aber alles im Buch des Hans Berger beschrieben und von AWL Masochisten ausgiebigst verwendet.
    Optimierte Bausteine verwenden scheinbar ganz andere Regeln. Man kann das sehen, wenn man in einem bunt Typ gemischten DB immer nur einen Wert auf FF oder FFFF oder FFFFFFFF setzt, und dann mit Wireshark das Laden mitschneidet . Wenn ich mich nicht verzählt habe, dann liegen die Daten immer so, dass sie ihrere Größe entsprechen. Also ein 2 Byte Typ liegt auf einer durch zwei teilbaren Adresse. Ein 4 Byte Typ liegt auf einer durch 4 teilbaren Adresse. Ein 8 Byte Typ liegt auf einer durch 8 teilbaren Adresse. BOOL und ein Byte typen liegen in einem Byte. Ja, für ein BOOL scheint ein ganzes Byte verwendet zu werden. Strukturen bleiben zusammen. Arrays auch. Die Elemente einer Struktur werden durcheinander gewürfelt. Wenn ich das richtig sehe, dann die Großen zuerst. Aber Vorsicht mit Strukturen, wie Strukturen zueinander liegen, habe ich nicht untersucht, da hat mich die Lust verlassen.

    Die Reihenfolge in der die Elemente in den DB kommen spielt scheinbar keine Rolle. Pech für AWL Freaks. Klares aus für AR Jongleure.

    Alles in allem kann man wohl sagen, dass die Regeln für die optimierten DB vermutlich dazu beitragen, dass der Prozessor ohne Byte und Bit-Geschiebe die Daten schnell aus dem Speicher holen kann. Andere (richtige?) Sprachen wie C# und Java machen das ja auch so. Und schnell meint 6 mal schneller schreiben und drei mal schneller lesen als Standard DB.

    'n schön' Tach auch.
    HB

    Wireshark ist mein Freund.

  3. #13
    Registriert seit
    29.04.2012
    Beiträge
    195
    Danke
    13
    Erhielt 42 Danke für 37 Beiträge

    Standard

    @HelleBarde: War das 1200er oder 1500er?

  4. #14
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Pipboy Beitrag anzeigen
    @HelleBarde: War das 1200er oder 1500er?
    Die letzten DB Untersuchungen habe ich mit einer 1516 und TIA V12.0 gemacht. 6 mal schneller schreiben bezieht sich auf die 1500 und V12.

    Die 1214 (also vermutlich alle 1200) ist ein wenig anders. Da wurden auch bei optimierten DB im TIA V10.5 mehrere BOOL in einem BYTE gesammelt. Es machte keinen messbaren Unterschied ob das BOOL im optimierten oder im standard DB lag. Es machte jedoch gelegentlich einen Unterschied ob das REAL standard oder optimiert lag. Und zwar immer dann, wenn das REAL im Standard auf einer krummen zu liegen kommt. Die Unterschiede sind jedoch bei weitem nicht so klar und eindeutig wie bei der 1516. Und bei 10.5 gab es auch noch keinen RUNTIME.

    Was ich jedoch noch nicht probiert habe ist ob mit TIA V12 und der 1214 neue Unterschiede zu Tage treten. Und ob es jetzt dort einen RUNTIME gibt.

    So ein Tag ist einfach zu kurz um neben all den Wünschen der Kunden auch noch die CPU zu durchleuchten.

    'n schön' Tach auch
    HB

Ähnliche Themen

  1. Struktur in Array
    Von ipacsre im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 19.05.2010, 20:08
  2. nacheinander bytes aus db in ein merker kopieren
    Von Robert_k im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 09.05.2008, 21:18
  3. WinCC flex Variable, Struktur, Array
    Von xhasx im Forum HMI
    Antworten: 3
    Letzter Beitrag: 11.06.2007, 16:30
  4. Struktur aus DB in Programmstruktur kopieren
    Von gnikre im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 05.06.2007, 09:56
  5. Bytes und Bits in DWORD kopieren
    Von Supervisor im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 12.05.2006, 00:39

Lesezeichen

Berechtigungen

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