-> Hier kostenlos registrieren
Hallo zusammen,
ich arbeite in der Regel mit dem TIA Portal und muss nun für ein aktuelles Projekt auch ein wenig an Codesys arbeiten.
Die normalen IF, THEN, ELSE Anweisungen sollten eigentlich kein Problem darstellen. - Allerdings habe ich etwas Probleme mit der Typkonvertierung.
Bei meinem Projekt habe ich Daten die vom Feldbus in ein Array of Byte eingelesen werden. Diese Daten will ich in eine Struktur mit unterschiedlichen Datentypen mappen.
Bit und Byte Zugriffe sind dabei kein Problem. Was ich aber nicht verstehe, bzw. wo ich mir nicht sicher bin, ist wie ich ein INT auf zwei Bytes im Array aufteile.
Das habe ich jetzt so gelöst, kann es aber nicht testen:
Die Variable Status_Umrichter ist Teil meiner Struktur und vom Typ Integer.
Die Variable temp ist eine lokale Variable meines Programms.
Einen Fehler bekomme ich nicht angezeigt und für mein Verständnis müsste das so funktionieren. Nur kann ich es nicht testen, muss mein Programm aber weiter vorbereiten.
Kann mir jemand sagen ob das so funktionieren wird?
Das größere Problem ist wie ich ein DINT auf 4 Bytes im Array verteilen kann. Da stehe ich im Moment voll am Schlauch, bzw. bin mir einfach unsicher weil ich das noch nie gemacht habe.
Kann mir bitte jemand auf die Sprünge helfen?
Gruß smartie
ich arbeite in der Regel mit dem TIA Portal und muss nun für ein aktuelles Projekt auch ein wenig an Codesys arbeiten.
Die normalen IF, THEN, ELSE Anweisungen sollten eigentlich kein Problem darstellen. - Allerdings habe ich etwas Probleme mit der Typkonvertierung.
Bei meinem Projekt habe ich Daten die vom Feldbus in ein Array of Byte eingelesen werden. Diese Daten will ich in eine Struktur mit unterschiedlichen Datentypen mappen.
Bit und Byte Zugriffe sind dabei kein Problem. Was ich aber nicht verstehe, bzw. wo ich mir nicht sicher bin, ist wie ich ein INT auf zwei Bytes im Array aufteile.
Das habe ich jetzt so gelöst, kann es aber nicht testen:
Code:
temp:= INT_TO_WORD(st_Transportband.Status_Umrichter);
ProfiNetOutData[PDNo_Transportband+2] := WORD_TO_BYTE(SHR(temp,8));
ProfiNetOutData[PDNo_Transportband+3] := WORD_TO_BYTE(temp);
Die Variable Status_Umrichter ist Teil meiner Struktur und vom Typ Integer.
Die Variable temp ist eine lokale Variable meines Programms.
Einen Fehler bekomme ich nicht angezeigt und für mein Verständnis müsste das so funktionieren. Nur kann ich es nicht testen, muss mein Programm aber weiter vorbereiten.
Kann mir jemand sagen ob das so funktionieren wird?
Das größere Problem ist wie ich ein DINT auf 4 Bytes im Array verteilen kann. Da stehe ich im Moment voll am Schlauch, bzw. bin mir einfach unsicher weil ich das noch nie gemacht habe.
Kann mir bitte jemand auf die Sprünge helfen?
Gruß smartie