PDA

Просмотр полной версии : ДЕКОДЕР



zendo057
19.11.2013, 21:01
Есть ли ФБ декодер 4-16? Если есть выложите пожалуйста.

petera
20.11.2013, 02:25
Есть ли ФБ декодер 4-16? Если есть выложите пожалуйста.
В библиотеке OSCAT есть ФБ DEC_8

FUNCTION_BLOCK DEC_8
VAR_INPUT
D: BOOL;
A0: BOOL;
A1: BOOL;
A2: BOOL;
END_VAR
VAR_OUTPUT
Q0: BOOL;
Q1: BOOL;
Q2: BOOL;
Q3: BOOL;
Q4: BOOL;
Q5: BOOL;
Q6: BOOL;
Q7: BOOL;
END_VAR
VAR
X : INT;
END_VAR

(*
version 1.3 28. mar. 2009
programmer hugo
tested by oscat
a bit input will be decoded to one of the 8 outputs
dependent on the Adress on A0, A1 and A2
*)
X.0 := A0; X.1 := A1; X.2 := A2;

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

CASE X OF
0 : Q0 := D;
1 : Q1 := D;
2 : Q2 := D;
3 : Q3 := D;
4 : Q4 := D;
5 : Q5 := D;
6 : Q6 := D;
7 : Q7 := D;
END_CASE;
Если немного подправить для Вашего случая, то будет так

FUNCTION_BLOCK DEC_16
VAR_INPUT
D: BOOL;
A0: BOOL;
A1: BOOL;
A2: BOOL;
A3: BOOL;
END_VAR
VAR_OUTPUT
Q0: BOOL;
Q1: BOOL;
Q2: BOOL;
Q3: BOOL;
Q4: BOOL;
Q5: BOOL;
Q6: BOOL;
Q7: BOOL;
Q8: BOOL;
Q9: BOOL;
Q10: BOOL;
Q11: BOOL;
Q12: BOOL;
Q13: BOOL;
Q14: BOOL;
Q15: BOOL;
END_VAR
VAR
X: INT;
END_VAR
X.0 := A0; X.1 := A1; X.2 := A2; X.3 := A3;

Q0 := FALSE;
Q1 := FALSE;
Q2 := FALSE;
Q3 := FALSE;
Q4 := FALSE;
Q5 := FALSE;
Q6 := FALSE;
Q7 := FALSE;
Q8 := FALSE;
Q9 := FALSE;
Q10 := FALSE;
Q11 := FALSE;
Q12 := FALSE;
Q13 := FALSE;
Q14 := FALSE;
Q15 := FALSE;
CASE X OF
0 : Q0 := D;
1 : Q1 := D;
2 : Q2 := D;
3 : Q3 := D;
4 : Q4 := D;
5 : Q5 := D;
6 : Q6 := D;
7 : Q7 := D;
8 : Q8 := D;
9 : Q9 := D;
10: Q10:= D;
11: Q11:= D;
12: Q12:= D;
13: Q13:= D;
14: Q14:= D;
15: Q15:= D;
END_CASE;
10780