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

Ergebnis 1 bis 6 von 6

Thema: Array of Byte in Array of Word übertragen

  1. #1
    Registriert seit
    25.06.2015
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe in einem Step7 Programm ein Array mit 150 Feldern und Byte Elementen. Diese möchte ich nun in ein zweites Array mit Word Elementen übertragen.

    Ich wollte hierzu den Move Baustein verwenden, Ergebnis sollte sein, dass die ersten beiden Arrayfelder (Array[1] und Array[2]) des Byte Array im ersten Feld des Word Array stehen. Dabei wollte ich gern die Gesamtreihenfolge beibehalten. (Damit ich keine Probleme mit Big und Low Endian, oder so ähnlich) bekomme.

    Aber es scheint, dass ich einfach zu blöd bin. Ich bekomme dass erste Byte ins erste Word geschrieben (das sollte dann ja im Low Byte des Word stehen), finde aber keine Möglichkeit, dass zweite Byte ins High Byte des Word zu schreiben.
    Ich würde um eine kurze Inspiration bitten, danke.

    Gruß
    Zitieren Zitieren Array of Byte in Array of Word übertragen  

  2. #2
    Registriert seit
    12.02.2014
    Beiträge
    9
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo BenniL,
    du kannst so etwas mit dem SFC 20 (BLKMOV) realisieren.

    Der Baustein kopiert einfach den angegebenen Quellbereich in den angegebenen Zielbereich.

    Gesendet von meinem A0001 mit Tapatalk

  3. #3
    BenniL ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.06.2015
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    danke für deine Antwort klanablada.
    Ich hätte vorher wohl genauer sein sollen. Die Verwendung des BLKMOV hatte ich ebenfalls schon in Betracht gezogen, SRC habe ich gänzlich mit dem Quellarray und DST gänzlich mit dem Zielarray belegt (wuhuu, Überraschung!).
    Allerdings mag ich diese riesige Belegung nicht, da sie so vollkommen ungreifbar ist, ich kann nicht (bequem) nachvollziehen ob der Baustein das tut, was ich von ihm will.

    Das Problem nun ist, dass ich das SRC-Array während BLKMOV arbeitet nicht beschreiben darf. Ich nehme an der BLKMOV läuft asynchron, wie sorge ich jetzt dafür, dass meine 470 Bits des SRC Array nicht verändert werden? Die Schreibvorgänge sind quer im Programm verteilt, die Suche könnte sich als äußerst unangenehm erweisen. Zusätzlich sind diese Bits Fehlerbits, die kann ich nicht einfach blockieren, wenn die sich ändern handelt es sich zumeist auch um eine wichtige Information für eine Anlage.

    Ich wollte eigentlich kleine Schreibvorgänge, die zwischendrin immer wieder Platz lassen um Änderungen vorzunehmen.

    GRuß

  4. #4
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    SFC 81 "UBLKMOV" (uninterruptible block move)

  5. #5
    BenniL ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.06.2015
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo marlob,

    ich wusste gar nicht, dass es so etwas gibt. In der Hilfe des SFC20 steht nur was vom SFC83.
    Danke, ich werds damit versuchen und hoffen, dass meine Anlagensteuerung damit nicht zu lang blockiert wird.

    Gruß

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von BenniL Beitrag anzeigen
    Ich bekomme dass erste Byte ins erste Word geschrieben (das sollte dann ja im Low Byte des Word stehen), finde aber keine Möglichkeit, dass zweite Byte ins High Byte des Word zu schreiben.
    Das geht nicht mit BLKMOV, weil dabei die Bytereihenfolge geswapt werden muß.

    Entweder kannst Du damit leben, daß das erste Byte das H-Byte wird und das zweite Byte das L-Byte, oder Du mußt eine eigene Kopierschleife mit Byte-Tausch schreiben.


    Zu Deinen Bedenken bezüglich SFC20 BLKMOV:
    Der Bausteinaufruf kommt erst zurück, nachdem der angegebene Bereich komplett kopiert wurde. Das Kopieren kann nur durch einen höherprioren OB (und die Zykluszeitüberwachung) unterbrochen werden --> wenn alle Schreibzugriffe auf den Quellbereich im selben OB wie der BLKMOV-Aufruf sind, dann kann es nicht passieren, daß während des Kopierens auf das Quellfeld geschrieben wird.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.08.2014, 06:17
  2. Array of Word
    Von natasia im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 26.07.2011, 12:34
  3. array of [1..8] byte
    Von domino im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 13.04.2010, 07:25
  4. Array of Byte to String[12] ,S7
    Von sb9674 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.09.2009, 19:15
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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