Phoenix Contact Analogbaustein IB IL Temp 2 RTD

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…

real.png

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

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

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