Suche DeMux Funktion

Hallo,
ich habe zwar lange Erfahrung in der SPS-Programmierung, bin aber neu im Thema IEC61131. Nun suche ich für die Übertragung für mich gewohnter Programmstruturen einen DeMultiplexer, der in etwa folgendes leistet
±----+
Act - - Q0
Sel - - Q1
+ - Q2
+ - Q3
+ - Q4
+ - Q5
+ - Q6
±----+

Act: Flag/Bit - Voraussetzung für Ausgangssignale Q
Sel: Integer - Wählt einen Ausgang: es soll jeweils der durch den Zahlenwert von Sel repräsentierte Ausgang auf 1 gesetzt werden:
Sel = 0 → Q0 gesetzt
Sel = 4 → Q4 gesetzt
Q: Flags (Ausgangs-Bits)
Ich finde so etwas weder in der Beschreibung der vorhandenen Funktionen bei PC WORX noch in OSCAT_Basic_333

Überseh’ ich da etwas oder muss ich mir den Baustein selbst basteln?

Danke schon mal vorab für Hilfe,

Grüße

Rainer

hallo

schau dir den baustein “SELECT_8” an, der kann das was du möchtest und sogar noch ein paar andere sachen
wenn der für dich nicht passt, kannst du ihn ja einfach adaptieren

FUNCTION_BLOCK SELECT_8
VAR_INPUT
	E : BOOL;
	SET : BOOL;
	IN : BYTE;
	UP : BOOL;
	DN : BOOL;
	RST : BOOL;
END_VAR
VAR_OUTPUT
	Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7 : BOOL;
	STATE : INT;
END_VAR
VAR
	last_up: BOOL;
	last_dn : BOOL;
END_VAR

(*
	version 1.1	27. feb. 2009
	programmer 	hugo
	tested BY		oscat

select_8 selects one of 8 outputs at any time. the outputscan be selected by up or down keys and an independent anable switches all outouts off if set false


*)
IF rst THEN
	state := 0;
ELSIF set THEN
	state := IN;
ELSIF up AND NOT last_up THEN
	state := inc(state,1,7);
ELSIF dn AND NOT last_dn THEN
	state := inc(state,-1,7);
END_IF;
last_UP := UP;
last_DN := DN;

Q0 := FALSE;
Q1 := FALSE;
Q2 := FALSE;
Q3 := FALSE;
Q4 := FALSE;
Q5 := FALSE;
Q6 := FALSE;
Q7 := FALSE;

IF E THEN
	CASE state OF
		0: Q0 := TRUE;
		1: Q1 := TRUE;
		2: Q2 := TRUE;
		3: Q3 := TRUE;
		4: Q4 := TRUE;
		5: Q5 := TRUE;
		6: Q6 := TRUE;
		7: Q7 := TRUE;
	END_CASE;
END_IF;

(* revision history
hm	16. jan 2008	rev 1.0
	original version

hm	27. feb. 2009	rev 1.1
	renamed input en to e
*)

Ah, hervorragend! Der Baustein ist so vielseitig, dass ich die benötigte “Basisfunktion” beim Querlesen glatt übersehen habe. Für mein ursprüngliches Anliegen hatte ich übrigens zunächst auf BYTE_TO_BITS zurückgegriffen, in der Webvisualisierung war es mir für die meisten Anwendungen egal, ob ich Meine 4 Tasten für Variable setzen auf 0-1-2-3 oder auf 0-1-2-4 benutze. Aber aus Kompatibilitätsgründen werde ich wohl doch die SELECT_8 Lösung bevorzugen.

Vielen Dank

Rainer