-> Hier kostenlos registrieren
Moin an Alle,
ich habe ein Problem bei Programmieren und verschachteln von UDT.
Bevor ich mein Problem erkläre möchte ich erst mal erklären, warum ich das mit UDT programmiere und nicht einen FB mit Instanz-DB schreibe: Wenn ich zum Beispiel eine Drehwächterbaustein nehme hätte ich jedes mal einen Instanz-DB und bei 50 Drehwächter gefällt mir das nicht mehr. Deswegen habe ich angefangen mein Gedächtnis (die Instanz-Daten) als UDT über IN_OUT zu übergeben und habe alles ordentlich Strukturiert in einem Datenbaustein.
Das soll aber bitte nicht Bestandteil meiner Forum-Frage werden.
Nun zu meinem Problem:
UDT Timer:
Auszug aus dem FC TimerSE
UDT 2 (Lagertemperatur)
Und hier ist mein Problem: Parameterzuweisung nicht korrekt
Was mache ich hier bei dem UDT-Aufruf falsch? Oder geht das vielleicht nicht so wie ich das hier vor habe?
Vielen Dank schon mal im Voraus!
MfG Dirk
ich habe ein Problem bei Programmieren und verschachteln von UDT.
Bevor ich mein Problem erkläre möchte ich erst mal erklären, warum ich das mit UDT programmiere und nicht einen FB mit Instanz-DB schreibe: Wenn ich zum Beispiel eine Drehwächterbaustein nehme hätte ich jedes mal einen Instanz-DB und bei 50 Drehwächter gefällt mir das nicht mehr. Deswegen habe ich angefangen mein Gedächtnis (die Instanz-Daten) als UDT über IN_OUT zu übergeben und habe alles ordentlich Strukturiert in einem Datenbaustein.
Das soll aber bitte nicht Bestandteil meiner Forum-Frage werden.
Nun zu meinem Problem:
UDT Timer:
Code:
TYPE UDT_TimerSE
STRUCT
Zykluszeit_HM: DINT;
Puls: BOOL;
Puls_HM: BOOL;
END_STRUCT
END_TYPE
Auszug aus dem FC TimerSE
Code:
FUNCTION TimerSE_DG: VOID
VAR_IN_OUT
UDT_Timer: UDT_TimerSE;
END_VAR
UDT 2 (Lagertemperatur)
Code:
TYPE UDT_Lagertemperatur
STRUCT
Temperatur: REAL;
Timer_1: UDT_TimerSE;
END_STRUCT
END_TYPE
Und hier ist mein Problem: Parameterzuweisung nicht korrekt
Code:
FUNCTION Lagertemperatur: VOID
VAR_IN_OUT
UDT_Lagertemperatur: UDT_Lagertemperatur;
END_VAR
.
.
.
TimerSE_DG(iStart:= Start
,iZykluszeit:= SPS_Zykluszeit_intern
,iVerzoegerung:= Zeit_1
,OUT:= HM_Bool
,Restlaufzeit:= HM_DINT
,UDT_Timer:= UDT_Lagertemperatur.Timer_1); //hier springt der Compiler hin
Was mache ich hier bei dem UDT-Aufruf falsch? Oder geht das vielleicht nicht so wie ich das hier vor habe?
Vielen Dank schon mal im Voraus!
MfG Dirk