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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 30

Thema: TIA S7-1500 Kopieren einer Struktur nach Array of Byte

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.632
    Danke
    432
    Erhielt 897 Danke für 727 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von shiks Beitrag anzeigen
    Vielen Dank für deine Antwort.
    Weißt du warum der "AT" Befehl laut Siemens Doku nicht in optimierten Bausteinen Funktioniert aber wenn man im im IDB setzen anklickt es trotzdem geht?

    Wo steht in dem von Dir angegebenem Dokument, dass es nicht gehen soll?
    (Meine Suche findet dort nichts zu Sichten )


    Das ist aber von Siemens selbst zumindest in der TIA-Hilfe so dokumentiert:

    Zitat Zitat von TIA Hilfe F1
    Variablen mit AT überlagern

    Beschreibung
    Um auf Datenbereiche innerhalb einer deklarierten Variablen zuzugreifen, können Sie die deklarierten Variablen mit einer weiteren Deklaration überlagern. Sie haben so die Möglichkeit, eine bereits deklarierte Variable mit einem anderen Datentyp anzusprechen. Sie können z. B. die einzelnen Bits einer Variablen vom Datentyp WORD mit einem ARRAY of BOOL ansprechen.

    Regeln
    Folgende allgemeine Regeln gelten für das Überlagern von Variablen:

    • In AWL, KOP, FUP und GRAPH ist das Überlagern in S7-1200 und S7-1500 möglich.
    • In SCL ist das Überlagern in allen CPU-Familien möglich.
    • Das Überlagern von Variablen ist in folgenden Bausteinen möglich:
      • In Codebausteinen mit Standardzugriff
      • In Codebausteinen mit optimiertem Zugriff für Variablen mit der Remanenzeinstellung "Im IDB setzen"

    • Die Datenbreite der überlagernden Variablen muss gleich oder kleiner als die der überlagerten Variablen sein.
    • Die Datenypen VARIANT und INSTANCE können nicht überlagert werden.
    • Bausteine aus Bibliotheken, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
    • Strukturierte PLC-Variablen, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
    • Überlagernde Variablen können nicht durch Slice-Zugriffe adressiert werden

    Also kein "trotzdem" sondern gewollt.
    Ich denke mal, für genau solche Anwendungen.

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

    shiks (22.09.2016)

  3. #12
    shiks ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2014
    Beiträge
    25
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen

    Wo steht in dem von Dir angegebenem Dokument, dass es nicht gehen soll?
    (Meine Suche findet dort nichts zu Sichten )
    https://support.industry.siemens.com...dti=0&lc=de-WW
    auf Seite 18: Zugriffsarten bei optimierten und nicht optimierten Bausteinen

    im IDB setzen scheint aber die Lösung zu sein. Vielen Dank

  4. #13
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.272
    Danke
    439
    Erhielt 661 Danke für 498 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen

    Also kein "trotzdem" sondern gewollt.
    Ich denke mal, für genau solche Anwendungen.
    Naja, das primäre Ziel bei dem "im IDB setzen" wird wohl nicht die AT-Sicht gewesen sein. Hoffe ich halt. Ich denke das war ein "angenehmer" Nebeneffekt.

    Was mich allerdings mehr interessieren würde...
    Weiß irgendjemand was das "im IDB setzen" genau macht bzw. wie es die Speicherzugriffe verbiegt?
    Damit AT-Sichten gehen werden die Daten wahrscheinlich irgendwie Blockweise und vielleicht "quasi nicht optimiert" abgelegt.
    Allerdings, obwohl zwar die Zugriffszeiten darauf höher sein sollen, kann ich mir auch nicht vorstellen dass die wirklich "nicht optimiert", also BigEndian, abgelegt werden.

    Wäre interessant was diese Verbieger-Option tut.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #14
    Registriert seit
    15.03.2013
    Beiträge
    187
    Danke
    6
    Erhielt 35 Danke für 30 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Was mich allerdings mehr interessieren würde...
    Weiß irgendjemand was das "im IDB setzen" genau macht bzw. wie es die Speicherzugriffe verbiegt?
    Im weiter unten verlinkten Programmierleitfaden steht auch hierzu etwas, das Deinen Verdacht bestätigt, auch wenn die Beschreibung nicht wirklich konkret wird:
    Empfehlung
    Verzichten Sie auf die Einstellung „m IDB setzen" ("Set in IDB"). Stellen Sie remanente Daten immer im Funktionsbaustein ein und nicht im Instanz-Datenbaustein. Die Einstellung „m IDB setzen" ("Set in IDB") erhöht die Abarbeitungszeit des Programmablaufs. Wählen Sie für die Schnittstellen im FB immer entweder „nicht remanent" („non-retain") oder „remanent" („retain").

  6. #15
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.272
    Danke
    439
    Erhielt 661 Danke für 498 Beiträge

    Standard

    @Mediator: Eben diese Zeile hatte ich gemeint. Ich habe den Leitfaden ja sogar gelesen...

    Naja, irgendwie anders als "optimiert" (weil da geht kein AT) und "nicht optimiert" (weil ich mir BigEndian - wie bei nicht-opt. - auch nicht vorstellen kann) müssen die Daten ja abgelegt werden damit man zu diesem "AT geht jetzt in optimiert, aber die Zugriffszeiten sind trotzdem hoch"-Ergebnis kommt. Von daher gesehen finde ich den Begriff "verbiegen" nicht so falsch.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  7. #16
    Registriert seit
    15.03.2013
    Beiträge
    187
    Danke
    6
    Erhielt 35 Danke für 30 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    @Mediator: Eben diese Zeile hatte ich gemeint. Ich habe den Leitfaden ja sogar gelesen...

    ..., aber die Zugriffszeiten sind trotzdem hoch"-Ergebnis kommt. Von daher gesehen finde ich den Begriff "verbiegen" nicht so falsch.
    @Ronin: Ich hatte schon den Verdacht, dass Du ihn gelesen hast, aber ich wollte sicher gehen ...

    Ich glaube aber eher nicht, dass die Zugriffszeiten in diesem konkreten Beispiel hoch werden. Denn shiks müsste ja nur das Byte Array auf Set in IDB setzen. Die Struktur könnte ja ganz normal Non-retain oder Retain sein, was vermutlich ganz normal optimiert wäre. Sicher bin ich mir aber nicht Bei Gelegenheit werde ich das vielleicht mal probieren. Man erkennt die Ablageform ja ganz leicht am Speicherbedarf.

  8. #17
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.272
    Danke
    439
    Erhielt 661 Danke für 498 Beiträge

    Standard

    Hmm.. Wie meinst du das? Wenn er AT (Array AT Struct) verwenden will dann muss doch das auf das die AT zeigen soll, also die Struktur, als "im IDB" deklariert werden, sonst kann ich ja keine AT eintippen?

    Kann man eigentlich ein Serialize auf ein "im IDB"-deklariertes Array machen, geht das? Noch nie probiert.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #18
    Registriert seit
    15.03.2013
    Beiträge
    187
    Danke
    6
    Erhielt 35 Danke für 30 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Hmm.. Wie meinst du das? Wenn er AT (Array AT Struct) verwenden will dann muss doch das auf das die AT zeigen soll, also die Struktur, als "im IDB" deklariert werden, sonst kann ich ja keine AT eintippen?

    Kann man eigentlich ein Serialize auf ein "im IDB"-deklariertes Array machen, geht das? Noch nie probiert.
    Ich meinte den ursprünglich geäußerten Wunsch, Serialize / Deserialize zu verwenden. Ich glaube das habe ich schon mal probiert, deshalb war ich fälschlicherweise der Meinung, dass Serialize / Deserialize ganz allgemein mit Arrays in optimierten Bausteinen geht.

    Ob der Ansatz mit AT oder der Ansatz mit Serialize / Deserialize besser ist und ob es sich eher lohnt, sich über die Performance Gedanken zu machen oder eher über die Einfachheit des Programms oder andere Gesichtspunkte, hängt von der Anzahl (pro Sekunde) der normalen Zugriffe auf die Struktur ab, von der Anzahl (pro Sekunde) der Serialize / Deserialize - Aufrufe und von der Größe der Struktur.

  10. #19
    Registriert seit
    09.08.2006
    Beiträge
    3.562
    Danke
    888
    Erhielt 641 Danke für 535 Beiträge

    Standard

    Das ganze ist doch irre... Gibts jetzt nicht nicht nur optimiert und nichtoptimiert sondern auch noch teiloptimiert? Was soll der Scheiss? Was macht eigentlich ein optimierter OB? Und ein optimierter FC? ... Fragen ueber Fragen...

  11. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    Onkel Dagobert (22.09.2016)

  12. #20
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.272
    Danke
    439
    Erhielt 661 Danke für 498 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Mediator: OK, das mit Serialize auf "Im IDB" werd ich bei Gelegenheit mal probieren. Wenn es geht wäre es ein weiteres Indiz für die möglicherweise "seltsam optimierte" (ein vierter Begriff ) IDB-Option.

    @Ducati: "teil-optimiert" ist jetzt nur mein Begriff und hab nur Vermutungen die aus den Veröffentlichungen von Siemens und den Möglichkeiten beim Programmieren basieren.
    Da muss nicht viel dran sein, vielleicht schwafle ich nur Blödsinn. Mit meinem beschiedenen Wissen stochere ich doch eher im Trüben.
    Die Unterschiede zwischen optimiert und nicht-optimiert scheinen einigermaßen klar, aber dieses "im IDB setzen"wurde noch nirgends wirklich erklärt und erscheint mir so "dazwischen".
    Daher eben meine Frage ob jemand Details zum Mechanismus kennt. Und ja, es ist irre.
    Geändert von RONIN (22.09.2016 um 10:18 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 15.04.2016, 11:42
  2. TIA Struktur (16-Bit) nach WORD kopieren ?
    Von zephyr im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.06.2015, 12:56
  3. Struktur in Array von Typ DWORD kopieren
    Von bernd81 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 07.10.2014, 07:33
  4. Array of Byte in Struktur kopieren
    Von thomas187 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 29.01.2014, 09:21
  5. TIA Struktur in Array of Bytes kopieren
    Von gargantua im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 08.12.2013, 19:52

Lesezeichen

Berechtigungen

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