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 Konfiguration oder Bausteien der beiden Ausgänge.
Besten Dank
Gruß Topas01
Hallo,
du kannst dir den Real Wert mit utdValues_CH1.rValue anzeigen lassen. Kann dir später noch einen Screenshot bereit stellen. Welche SPS verwendest du?
Hallo
Ich verwende die ILC 150 ETH
Gemessen werden soll einmal die Wassertemperatur und einmal die Lufttemperatur mit PT100 Elementen.
Den Baustein IL Temp 2 und die beiden Para Bausteine sind fertig konfiguriert. Leider habe ich nicht wirklich viel Ahnung von Analogtechnologie und Phoenix.
Gruß Mario
Hallo Mario,
du musst nur eine neue Variable anlegen und diese entsprechend folgend benennen:
udtValues_CH1.rValue
Siehe hierzu auch meine Screenshots. Ganz rechts zeigt hierbei die Variable, die ich erstellt habe.
Probier es einfach mal aus…
Verwendest du eigentlich auch IP-Symcon?
Schöne Grüße
Dan
Hi Dan
Die Vatiable udtValues_CH1.rValue hatte ich bereits erstellt. Aber es ist eben eine Var und keine Real. Oder denke ich komplett falsch? Als Ausgabewert benötige ich doch Real.
Was für ein Baustein ist FP_PT1_9 das ?
IP-Symcon verwende ich nicht.
Gruß Mario
Hallo Mario,
der von dir angesprochene Baustein ist aus der Oscat-Library (OSCAT - Neuigkeiten) und kann zur Stabilisierung von stark schwankenden Werten verwendet werden.
Wenn du die Variable so angelegt hast, kannst du diese sofort verwenden. Du kannst ja spaßeshalber einfach mal eine Real Variable auf die rechte Seite anhängen…

Schöne Grüße
Dan
ups… irgend wie ist mein Post verschwunden… also nocheinmal
Hallo Dan,
Ich habe die Variablen eingefügt, bekomme aber 17 Fehlermeldungen beim konvertieren.
Leider kann ich keine Bilder einfügen, weil der Rechner nicht im Netz ist.
Es geht darum eine Poolsteuerung zu realisieren. Letztes Jahr habe ich eine Phoenix geschenkt bekommen, und mir gedacht alles umzubauen. Habe auch alle digitalen und standart analogen Werte erfasst und visualisiert. Wie z.B. Chlor,PH,RedoxTrübung in 0-20mA und die Pumpen und Filter usw. Nun dachte ich mir auch die Temperaturen zu erfassen aber irgend wie scheitere ich kläglich. Wenn du möchtest, hänge ich den Rechner morgen mal ins Netz und kann dann die Fehlermeldungen hochladen.
Was meinst Du damit eine Real Variable auf die rechte Seite anhängen…
Erst einmal muss ich die Fehlermeldungen loswerden.
Gruß Mario
Hier einmal die Bausteine , Fehlermeldungen und die sys_flag
eventuell kanst du ja etwas Licht ins Dunkle bringen
Gruß Mario
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
Update
So habe die SYS_Flag neu erzeugt und die Fehlermeldungen sind weg ABER dafür bekomme ich 2 neue
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
Hier kannst du nicht die Real Werte abgreifen, schau dir halt einfach mal meine Screenshots an, da ist doch schon alles gezeigt… Sonst musst du auf Mobi im SPS Forum warten…
Hier noch ein Screenshot zur Erklärung:
- am Baustein musst du eine Variable (Struct) gemäß Datentyp Baustein anlegen
- anschließend eine Variable mit dem Namen der vorher erstellten Struct Variable um den zusatz „.rValue“ erstellen
- diese hat dann den Datentyp Real und kann weiter verwendet werden…
Bitte mal lesen und schauen und nicht in zwei Foren den exakt gleichen Wortlaut als Frage stellen…
Hallo Dan
Auch Dir vielen Dank für deine Hilfe. Mit deiner und Mobi`s Hilfe konnte ich mein Unverständniss lösen
Gruß Mario