TIA DWORD in Struct kopieren

schwimmer

Level-3
Beiträge
1.660
Reaktionspunkte
574
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,
gibt es eine Möglichkeit ein DWORD (ausgelesen aus einem SINAMICS) in eine Structur zu kopieren? Die verschiedenen MOVE - Versionen bringen mir immer nur Fehlermeldung dass die Datentypen nicht zusammen passen und ich einen UDT verwenden soll, was ich aber auch probiert habe. Aus dem SINAMICS kommt z.B. das StatusWord und ich möchte die einzelnen Bits (mit Text und Erklärung) im Programm weiter verwenden. Geht hier wirklich nur jedes Bit einzel in die Struktur zu kopieren?
 
Wie holst du die Daten aus dem Sinamics? Am einfachsten finde ich einfach nie ein DWORD zu verwenden und die Statusbits gleich an dieser Stelle zu deklarieren.

Ansonsten SFC20 Blkmov wenn du nicht optimiert arbeitest. Slicezugriff wäre auch möglich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In diesem Fall über ein Technologieobjekt (Motion Control) und da liegt halt leider nur ein DWORD auf der Schnittstelle.
Die Blokmove-Funktionen im TIA V16 bringen online immer die Fehlermeldung dass DWORD in Struct nicht möglich ist (beim Kompilieren gibts keine Fehlermeldung, nur online). Sicher mit Slice kann ich jedes Bit in die Struct kopieren, dachte nur es gäbe vielleicht eine Möglichkeit wie soetwas einfacher geht. Trotzdem Danke.
 
So lange die beiden Datenstrukturen die gleiche länge haben (also das Struct genauso lang ist wie das DWORD) und die einzelnen Bits an der gleichen Stelle sind (davon geh ich mal aus, du hast das Struct ja gemacht) geht das mit Serialize und Deserialize.

Guck mal hier Beispiel 2 an:
https://support.industry.siemens.co...d-data-in-step-7-(tia-portal)-?dti=0&lc=en-WW


/ aber AT Sicht ist eigentlich genauso das, was du willst. Ohne aufwendige kopieranweisungen die nur Zeit kosten kommst du damit besser zum Ziel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das mit SCATTER gelöst, Da dass nicht geht mit ein Word oder DWORD aus ein Technologie DB habe ich ein Temp DW Status_dw declariert .

Code:
#Status_dw := #Axis.StatusWord;  //StatusWord aus TO_Projekt überträgen nach Temp DWord

// Status_DW nach Status (
SCATTER(IN:=#Status_dw,
                  OUT=>#Status);

Hier ein Bild
TO_Status.JPG

Gruß,

Joop
 
Zurück
Oben