-
典型功能的设计思路和实现方式
BYTE
(
TB
)
TO
INT<
/p>
(
TI
)
TI :=
WORD_TO_INT
(
BYTE_TO_WORD
(TB))
INT
(
i
n2
)
TO
DINT
(
in1
)
in1 :=
INT_TO_DINT
(in2)
DINT
(
in2
)
TO
REAL
(
in1
)
in1 :=
DINT_TO_REAL
(in2)
WORD
(
in2
)
TO
INT
(
i
n1
)
in1 :=
WORD_TO_INT
(in2)
WORD
(
in2
)
TO
DINT
(
in1
)
in1 :=
WORD_TO_DINT
(in2)
WORD
(
in2
)
TO
REAL
(
in1
)
in1:=
INT_TO_REAL
(
WORD_TO_INT<
/p>
(in2))
BOOL_TO_ BYTE
WORD_TO_INT
WORD_TO_BOOL
BOOL_TO_WORD
INT_TO_REAL
WORD_TO_INT
BO_BY
W_I
W_BO
BO_W
I_R
W_I
AND
NAND
NOR
NOT
OR
XOR
INPUT :
IN1,IN2, IN3,IN4, IN5,IN6, IN7,IN8, IN9,IN10,
IN11
(BOOL)
(WORD ,DWORD )
OUTPUT : OUT1, OUT2, OUT3, OUT4, OUT5,
OUT6
(BOOL)
(WORD ,DWORD
)
IF
IN1
=
TRUE
AND
IN2
=
TRUE
THEN
OUT1
:=
TRUE
ELSE
OUT1
:=
FALSE
END_IF
// AND
IF
IN3
=
TRUE
AND
IN4
=
TRUE
THEN
OUT2
:=
FALSE
ELSE
OUT2
:=
TRUE
END_IF
// NAND
IF
IN5
=
FALSE
AND
IN6
=
FALSE
THEN
OUT3
:=
TRUE
ELSE
OUT3
:=
FALSE
END_IF
// NOR
IF
IN7= FALSE
THEN
OUT4
:=
TRUE
;
ELSE
OUT4
:=
FALSE
END_IF
// NOT
IF
IN8
=
TRUE
OR
IN9
=
TRUE
THEN
OUT5
:=
TRUE
ELSE
OUT5
:=
FALSE
END_IF
// OR
IF
(IN10
=
TRUE
AND
IN11
=
TRUE)
OR
(IN10
=
FALSE
AND
IN11
=
FALSE)
THEN
OUT6
:=
FALSE
ELSE
OUT6
:=
TRUE
END_IF
//
XOR
OUT1
:=
IN1
AND
IN2 OUT4
:=
NOT
IN7 OUT5
:=
IN8
AND
IN9 OUT6
:=
IN10
XOR
IN11
CMP_DI
CMP_I
CMP_R
CMP_T
INPUT :
IN1 , IN2
( DINT ,INT ,
REAL, TIME)
OUTPUT : GT , GE
, EQ , LT , LE
(BOOL)
IF
IN1
>
IN2
THEN
GT
:=
1
END_IF
IF
IN1
>=
IN2
THEN
GE
:=
1
END_IF
IF
IN1
=
IN2
THEN
EQ
:=
1
END_IF
IF
IN1
<
IN2
THEN
LT
:=
1;
END_IF
IF
IN1
<=
IN2
THEN
LE
:=
1;
END_IF
JK_FF
RS_FF
SR_FF
RS
:
IF
H2_PV_Q
=
TRUE
AND
Reset
=
FALSE
THEN
H2_
Reset_Q
:=
TRUE
;
END_IF
;
IF
Reset
=
< br>TRUE
THEN
H2_
Reset_Q
:=
FALSE
;
END_IF
;
TOF
TON
INPUT : IN1
(BOOL)
,
IN2
(TIME)
OUTPUT : OUT
(BOOL)
F_TRIG
R_TRIG
TIMER_P
INPUT : IN1
(BOOL)
OUTPUT : OUT
(BOOL)
ADD
SUB
MUL
DIV
MAX
MIN
SQRT
ABS
NEG
EPS
MOD
LIM
INPUT
:
IN1,IN2,
IN3,IN4,
IN5,IN6,
IN7,IN8,
IN9,IN10,
IN11,
IN12,
IN13,
IN14,
IN15
(REAL,INT,DINT)
OUTPUT : OUT1, OUT2, OUT3, OUT4, OUT5,
OUT6,
OUT7 ,OUT8,
OUT9
(REAL)
OUT1
:=
IN1
+
IN2
// ADD
OUT2
:=
IN3
-
IN4
// SUB
OUT3
:=
IN5
*
IN6
// MUL
OUT4
:=
IN7
/
IN8
// DIV
IF
IN9
>
IN10
THEN
OUT5
:=
IN9;
END_IF
;
//
MAX
IF
IN9
<
IN10
THEN
OUT5
:=
IN10;
END_IF
;
IF
IN9
=
IN10
THEN
OUT5
:=
IN9;
END_IF
;
IF
IN11
>
IN12
THEN
OUT6
:=
IN12;
END_IF
;
//
MIN
IF
IN11
<
IN12
THEN
OUT6
:=
IN11;
END_IF
;
IF
IN11
=
IN12
THEN
OUT6
:=
IN11;
END_IF
;
OUT7
:=
SQRT
(IN13)
//
SQRT
OUT8
:=
ABS
( IN14);
// ABS
IF
IN15
>
0
THEN
OUT9
:=
-
IN15;
END_IF
;
//
NEG
IF
IN15
<
0
THEN
OUT9
:=
-
IN15;
END_IF
;
IF
IN15
=
0
THEN
OUT9
:= 0
;
END_IF
;
INPUT : IN1 ,IN2
( INT ,DINT )
OUTPUT : OUT
(
BOOL )
IF
IN1
>=
IN2
TNEN
OUT
:=
FALSE
// EPS
ELSE
OUT
:=
TRUE
END_IF
;
INPUT : IN1 ,IN2
( INT ,DINT )
OUTPUT : OUT
(
INT , DINT )
OUT
:=
IN1
MOD
IN2
//
MOD
OUT
:=
IN1
DIV
IN2
//
DIV
INPUT : IN , MAX ,MIN
(REAL ,INT )
OUTPUT : OUT ,OUTH ,OUTL
(REAL, INT, BOOL)
IF
IN
<
MIN
THEN
OUT
:=
MIN;
OUTL
:=
TRUE
END_IF
;
//
LIM
IF
IN
>
MAX
THEN
OUT
:=
MAX;
OUTH
:=
TRUE
END_IF
;
IF
IN
<
MAX
AND
IN
>
MIN
THEN
OUT
:=
IN; OUTL
:=
FALSE
; OUTH
:=
FALSE
END_IF
;