IB IL Temp 2 RTD udtValues_CH1 / udtValues_CH2

Mario

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Kann mir bitte einer behilflich bei dem dem Analogbaustein IB IL Temp 2 RTD sein.

Ich würde gerne wissen, wie es mit den beiden Ausgängen udtValues_CH1 und udtValues_CH2 weiterheht, so das ich den Real Wert erhalte.
Der eigentliche Baustein ist konfiguriert unt gibt auch keine Fehlermeldungen aus.
Benötige halt noch die beiden Ausgänge.

Besten Dank

Gruß Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mobi
Kannst du mir bitte mal unter die Arme greifen. Habe noch nicht wirklich viel mit Phoenix was gemacht. Wo bitte finde ich die rValue und den Struct?

Gruß Mario
 
Also mit Phoenix hat das recht wenig zutun. Structs bzw Strukturen gibts auch bei anderen Herstellern und Programmiersprachen.
Und wie beim Byte, Word oder Dword kann man durch einen Punkt schon recht viel erfahren ;).
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    45,9 KB · Aufrufe: 25
guten Morgen Mobi

nee nee habe ich ja gefunden. Das Problem was ich habe ist, wenn ich nun das Projekt neu erzeuge das ich 18 Fehlermeldungen erhalte. Muss ich die in den sys flags denn noch editieren? zu mindest weisen alle Fehlermeldungen dort hin.

Gruß Mario
 
Hi Mobi

hier die Screenshots Baustein , Fehlerliste und die sys_flag_types

eventuell kannst du ein wenig Licht ins Dunkle bringen


gruß Mario
Baustein.PNG


Fehler.PNG


TYPE

(* Reserved for a later use! *):STRING((* Reserved for a later use! *));
END_TYPE
STRUCT
(* Priority of the task *) : (* Period of the task in milliseconds *);
(* Stack size of the task *) : (* Watchdog time in milliseconds *);
(* Current task duration in ticks including preemption *) : (* Minimum task duration in ticks including preemption *);
(* Maximum task duration in ticks including preemption *)
(* Current task delay in ticks including preemption *)
(* Minimum task delay in ticks including preemption *) : (* Maximum task delay in ticks including preemption *);
TYPE
(* ms. *) : ARRAY [(* ms. *)] OF (* For internal use of Phoenix Contact! *);
END_TYPE
TYPE
(* For internal use of Phoenix Contact! *):STRING((* Incremented by every Modbus exception received on this station. *));
END_TYPE
END_TYPETYPE
(* Stack size of the task *):STRING((* Priority of the task *));
END_TYPE
TYPE
(* Period of the task in microseconds *) : ARRAY [(* Watchdog time in microseconds *)] OF (* Period of the task in milliseconds *);
END_TYPE
TYPE
(* Watchdog time in milliseconds *) :
STRUCT
(* Minimum task duration in microseconds including preemption *) : (* Maximum task duration in microseconds including preemption *);
(* Current task duration in microseconds including preemption *) : (* Minimum task delay in microseconds including preemption *);
(* Maximum task delay in microseconds including preemption *) : (* Current task delay in microseconds including preemption *);
(* Minimum task duration in milliseconds including preemption *)
(* Maximum task duration in milliseconds including preemption *)
(* Current task duration in milliseconds including preemption *) : (* Minimum task delay in milliseconds including preemption *);
END_STRUCT;
END_TYPETYPE
(* Maximum task delay in milliseconds including preemption *):STRING((* Current task delay in milliseconds including preemption *));
END_TYPE
TYPE
(* Bit 0 = Station is online *):STRING((* Bit 1 = Exception exits *));
END_TYPE
TYPE
(* Incremented by every shutdown of this station. *) : ARRAY [(* ms. NetInCycleAvg + NetOutCycleAvg *)] OF (* ms. *);
END_TYPE
TYPE
(* ms. *):STRING((* ms. *));
END_TYPE
TYPE
(* ms. *) : ARRAY [(* ms. *)] OF (* ms. *);
END_TYPE
TYPE
Task_Name_Typ : ARRAY[0..9] OF BYTE;

Extended_Task_Info : STRUCT
TaskName : Task_Name_Typ; (* Name of the Task as ARRAY OF BYTE, NULL terminated *)
TaskPrio : INT; (* Priority of the task *)
undocumented_0 : INT;
TaskPeriod : INT; (* Period of the task in milliseconds *)
TaskStack : INT; (* Stack size of the task *)
unused_1 : INT;
TaskWatchdog : INT; (* Watchdog time in milliseconds *)
undocumented_2 : INT;
undocumented_3 : INT;
undocumented_4 : INT;
CurDuration : INT; (* Current task duration in ticks including preemption *)
MinDuration : INT; (* Minimum task duration in ticks including preemption *)
MaxDuration : INT; (* Maximum task duration in ticks including preemption *)
undocumented_5 : INT;
CurDelay : INT; (* Current task delay in ticks including preemption *)
MinDelay : INT; (* Minimum task delay in ticks including preemption *)
MaxDelay : INT; (* Maximum task delay in ticks including preemption *)
END_STRUCT;
END_TYPE

TYPE
Task_Name_eCLR : ARRAY[0..35] OF BYTE;

Task_Info_eCLR : STRUCT
TaskStack : INT; (* Stack size of the task *)
TaskPrio : INT; (* Priority of the task *)
TaskPeriod_us : DINT; (* Period of the task in microseconds *)
TaskWatchdog_us : DINT; (* Watchdog time in microseconds *)
TaskPeriod : INT; (* Period of the task in milliseconds *)
TaskWatchdog : INT; (* Watchdog time in milliseconds *)
MinDuration_us : DINT; (* Minimum task duration in microseconds including preemption *)
MaxDuration_us : DINT; (* Maximum task duration in microseconds including preemption *)
CurDuration_us : DINT; (* Current task duration in microseconds including preemption *)
MinDelay_us : DINT; (* Minimum task delay in microseconds including preemption *)
MaxDelay_us : DINT; (* Maximum task delay in microseconds including preemption *)
CurDelay_us : DINT; (* Current task delay in microseconds including preemption *)
MinDuration : INT; (* Minimum task duration in milliseconds including preemption *)
MaxDuration : INT; (* Maximum task duration in milliseconds including preemption *)
CurDuration : INT; (* Current task duration in milliseconds including preemption *)
MinDelay : INT; (* Minimum task delay in milliseconds including preemption *)
MaxDelay : INT; (* Maximum task delay in milliseconds including preemption *)
CurDelay : INT; (* Current task delay in milliseconds including preemption *)
unused_1 : DINT;
unused_2 : DINT;
unused_3 : DINT;
unused_4 : DINT;
unused_5 : DINT;
unused_6 : DINT;
unused_7 : DINT;
unused_8 : DINT;
unused_9 : DINT;
TNameMaxSize : INT;
TNameSize : INT;
TaskName : Task_Name_eCLR;
END_STRUCT;
END_TYPE

TYPE
PND_IO_32 : ARRAY[0..31] OF BYTE;
PND_IO_64 : ARRAY[0..63] OF BYTE;
PND_IO_128 : ARRAY[0..127] OF BYTE;
PND_IO_256 : ARRAY[0..255] OF BYTE;
PND_IO_512 : ARRAY[0..511] OF BYTE;
END_TYPE

TYPE
Redundancy_OPC_Struct : ARRAY[0..2] OF INT;
END_TYPE

TYPE
MBT_STATION_DIAG : STRUCT
Status : DWORD; (* Bit 0 = Station is online *)
(* Bit 1 = Exception exits *)
Handle : DWORD;
OfflineCounter : DWORD; (* Incremented by every shutdown of this station. *)

NetCycleAvg : DWORD; (* ms. NetInCycleAvg + NetOutCycleAvg *)
NetCycleMin : DWORD; (* ms. *)
NetCycleMax : DWORD; (* ms. *)

NetInCycleAvg : DWORD; (* ms. *)
NetInCycleMin : DWORD; (* ms. *)
NetInCycleMax : DWORD; (* ms. *)

NetOutCycleAvg : DWORD; (* ms. *)
NetOutCycleMin : DWORD; (* ms. *)
NetOutCycleMax : DWORD; (* ms. *)

InternalError1 : DWORD; (* For internal use of Phoenix Contact! *)
InternalError2 : DWORD; (* For internal use of Phoenix Contact! *)

ExceptionCounter : DWORD; (* Incremented by every Modbus exception received on this station. *)
DiagReserved1 : BYTE; (* Reserved for a later use! *)
DiagReserved2 : BYTE; (* Reserved for a later use! *)
StationNumber : BYTE; (* Modbus Station Number *)
DiagReserved3 : BYTE; (* Reserved for a later use! *)
END_STRUCT;

MBT_STATION_CONTROL : STRUCT
ctrlStatistics : BYTE; (* Bit 0 = Clear statistics *)
ControlReserved1 : BYTE; (* Reserved for a later use! *)
ControlReserved2 : WORD; (* Reserved for a later use! *)
ControlReserved3 : DWORD; (* Reserved for a later use! *)
END_STRUCT;
END_TYPE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Update

So habe die SYS_Flag neu erzeugt und die Fehlermeldungen sind weg ABER dafür bekomme ich 2 neue.

Baustein 2.PNG
Die mit der Anweisung verbundenen Datentypen sind nicht identisch!
Die mit der Anweisung verbundenen Datentypen sind nicht identisch!

Die beiden Fehler beziehen sich auf die beiden Variablen WasserTemp.rValue und AussenluftTemp.rValue


und schon wieder Kopfkratzen
 
Die Fehlermeldungen sind logisch.

Du musst dort schon das Struct lassen (ohne .rValue). Später zur Weiterverarbeitung bei vergleichen oder so, dort musst du dann .rValue schreiben, da du ja nur das element willst, wo der Wert drinsteht.

Edit: Ein Bild sagt bekanntlich mehr als tausend Worte.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    17,5 KB · Aufrufe: 14
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mobi

Vielen Dank für deine Hilfe.
Diese Bausteine waren genau das, was ich gesucht habe. Nun funktioniert es.
Habe aber doch noch eine Frage..

Temperatur.PNG

Wie du siehst, habe ich am Ausgang 2215 °C stehen, was genau 22,15 °C entspricht. Wie kann ich nun ein Komma setzen ?

Bilder sagen mehr als worte

Gruß Mario
 
Tja ziemlich heiß halt bei dir. Vielleicht sind es ja 2215 °C ;)

Nein du musst nur ein wenig Mathematik anwenden. Den Real-Wert vorher mit 100.0 dividieren. Also einen DIV-Baustein an IN von REAL_TO_STRING.
 
So sieht dei Temperatur doch schon viel besser aus

Vielen Dank nochmals für deine Hilfe

Gruß Mario
 
Zurück
Oben