CodeSys指令手册
CodeSys指令手册
CodeSys
..................................................................................................................... 0
1 CODESYS ......................................................................... 5
1.1 ........................................................................................................................................... 5
1.2 ............................................................................................................................................... 5
1.3 ................................................................................................................................... 5
2 ................................................................................................... 9
2.1 ................................................................................................................................... 9
2.1.1 ADD—— ............................................................................................................. 9
2.1.2 MUL—— ............................................................................................................. 9
2.1.3 SUB—— ............................................................................................................ 10
2.1.4 DIV—— ............................................................................................................. 11
2.1.5 MOD—— .......................................................................................................... 11
2.2 ......................................................................................................................................... 12
2.3 ................................................................................................................................. 13
2.3.1 AND—— ............................................................................................................... 13
2.3.2 OR—— .................................................................................................................. 13
2.3.3 XOR—— ........................................................................................................... 14
2.3.4 NOT—— ............................................................................................................ 14
2.4 ......................................................................................................................................... 15
2.4.1 SHL—— ............................................................................................................ 15
2.4.2 SHR—— ............................................................................................................ 15
2.4.3 ROL—— .................................................................................................... 16
2.4.4 ROR—— .................................................................................................... 17
2.5 ......................................................................................................................................... 17
2.5.1 SEL—— ......................................................................................................... 17
2.5.2 MAX—— ................................................................................................... 19
2.5.3 MIN—— .................................................................................................... 20
2.5.4 LIMIT—— ..................................................................................................... 20
2.5.5 MUX—— ....................................................................................................... 21
2.6 ......................................................................................................................................... 22
2.6.1 GT—— .............................................................................................................. 22
2.6.2 LT—— ............................................................................................................... 23
2.6.3 GE—— ....................................................................................................... 23
2.6.4 LE—— ....................................................................................................... 25
2.6.5 EQ—— .............................................................................................................. 26
2.6.6 NE—— .......................................................................................................... 26
A ................................................................................................................111
A.1 .................................................................................................................... 111
A.2 IEC ............................................................................................................ 113
1.1
CoDeSys FUN
FB
ADD
MOVE
AND
SHL
MAX
GT
REAL_TO_<TYPE>
ABS
ADR
SR
R_TRIG )
CTU
TON
BLINK
DERIVATIVE
PID
1.2
“ .lib” (Standard.lib) (Util.lib)
(Standard.lib)
1.3
CoDeSys
1.
(W) “ (L)
” “ ”
“ ”
“Open” *.lib
2.1
2.1.1 ADD——
LD
LD 7
IL ADD 2,4,7
ST Var1 * Var1 20*
FBD
2.1.2 MUL——
LD 7
IL MUL 2,4,7
ST Var1 * Var1 392*
FBD
2.1.3 SUB——
LD
ST Var1:=7-2; * Var1 5*
LD 7
IL SUB 2
ST Var1 * Var1 5*
FBD
2.1.4 DIV——
LD
ST Var1:=8/2; * Var1 4*
LD 8
IL DIV 2
ST Var1 * Var1 4*
FBD
2.1.5 MOD——
FBD
2.2
MOVE
LD
LD 100
IL MOVE
ST Var1 * Var1 100*
FBD
2.3.1 AND——
LD
LD 2#1001_0011
IL AND 2#1000_1010
ST Var1 * Var1 2#10000010*
FBD
2.3.2 OR——
LD
Var1:=2#1001_0011 OR 2#1000_1010 ;
ST
* Var1 2#10011011*
FBD
2.3.3 XOR——
LD
FBD
2.3.4 NOT——
FBD
2.4
2.4.1 SHL——
0
/ BYTE INT WORD DWORD SINT UINT
LD
Var1 Var2
LD 16#45
IL SHL 2
ST Var1 * Var1 16#14*
FBD
2.4.2 SHR——
0
LD
FBD
2.4.3 ROL——
LD
FBD
2.4.4 ROR——
LD
Var1 Var2
LD 16#45
IL ROR 2
ST Var1 * Var1 16#51*
FBD
2.5
2.5.1 SEL——
FALSE
TRUE
OUT := SEL(G, IN0, IN1) G IN0 IN1
ST Var1:=SEL(TRUE,3,4); (* Var1 4 *)
LD TRUE
SEL 2,6
ST Var1 (* Var1 6*)
IL
LD FALSE
SEL 2,6
ST Var2 (* Var2 2*)
FBD
2.5.2 MAX——
LD
ST Var1:=MAX(90,60); (* Var1 90 *)
LD 90
MAX 40
IL MAX 70
MAX 60
ST Var1 * Var1 90*
FBD
2.5.3 MIN——
LD
Var1:=MIN(90,30); (* Var1 30 *)
ST
Var2:=MIN(MIN(90,30),60); (* Var2 30 *)
LD 90
MIN 30
IL MIN 40
MIN 70
ST Var1 * Var1 30*
FBD
2.5.4 LIMIT——
LD
*11 5 10 *
ST Var1:=LIMIT(30,90,80); (* Var1 80 *)
LD 90
IL LIMIT 30 80
ST Var1 (* Var1 80*)
FBD
*11 5 10 *
2.5.5 MUX——
OUT:=MUX(K,IN0,…,INn) K IN0,…,INn
OUT K INk
/ IN0,…, INn OUT K BYTE
WORD DWORD SINT USINT INT UINT DINT UDINT
*2 30 30 *
ST Var1:=MUX(0,30,40,50,60,70,80); * Var1 30*
LD 0
IL MUX 30 40 50 60 70 80
ST Var1 * Var1 30*
FBD
*2 30 30*
2.6
2.6.1 GT——
TRUE
FALSE
/
BOOL BYTE WORD DWORD SINT USINT INT UINT
DINT UDINT REAL TIME DATE TOD DT STRING
BOOL
LD
* Var1 FALSE*
ST Var1:=20>30;
IL LD 20
FBD
* Var1 FALSE*
2.6.2 LT——
TRUE
FALSE
/
BOOL BYTE WORD DWORD SINT USINT INT UINT
DINT UDINT REAL TIME DATE TOD DT STRING
BOOL
LD
* Var1 TRUE*
ST VAR1:=20<30; * Var1 TRUE*
LD 20
IL LT 30
ST Var1 * Var1 TRUE*
FBD
* Var1 TRUE*
2.6.3 GE——
TRUE
FALSE
/
BOOL BYTE WORD DWORD SINT USINT INT UINT
DINT UDINT REAL TIME DATE TOD DT STRING
BOOL
* Var1 TRUE*
ST VAR1:=60>=40; * Var1 TRUE*
LD 60
IL GE 40
ST Var1 * Var1 TRUE*
FBD
* Var1 TRUE*
2.6.4 LE——
TRUE
FALSE
/
BOOL BYTE WORD DWORD SINT USINT INT UINT
DINT UDINT REAL TIME DATE TOD DT STRING
BOOL
LD
* Var1 TRUE*
ST VAR1:=20<=30; * Var1 TRUE*
LD 20
IL LE 30
ST Var1 * Var1 TRUE*
FBD
* Var1 TRUE*
LD
* Var1 TRUE*
ST VAR1:=40=40; * Var1 TRUE*
LD 40
IL EQ 40
ST Var1 * Var1 TRUE*
FBD
* Var1 TRUE*
2.6.6 NE——
TRUE
FALSE
/
BOOL BYTE WORD DWORD SINT USINT INT UINT
DINT UDINT REAL TIME DATE TOD DT STRING
BOOL
* Var1 FALSE*
ST VAR1:=40<>40; * Var1 FALSE*
LD 40
IL NE 40
ST Var1 * Var1 FALSE*
FBD
* Var1 FALSE*
2.7
PowerPro 240
<TYPE1>_TO_<TYPE2>
4-7-1
/ 4-7-1
TRUE 1 FALSE 0
TRUE 'TRUE' FALSE
'FALSE'
LD
VarInt1:=BOOL_TO_INT(TRUE); (* 1*)
st1:=BOOL_TO_STRING(TRUE); (* 'TRUE'*)
ST time1:=BOOL_TO_TIME(TRUE); (* T#1ms*)
td:=BOOL_TO_TOD(TRUE); (* TOD#00:00:00.001*)
LD TRUE
BOOL_TO_INT
ST VarInt1 (* 1*)
LD TRUE
BOOL_TO_STRING
ST st1 (* 'TRUE'*)
LD TRUE
BOOL_TO_TIME
ST time1 (* T#1ms*)
IL LD TRUE
BOOL_TO_TOD
ST td (* TOD#00:00:00.001*)
LD TRUE
BOOL_TO_DATE
ST date1 (* D#1970-01-01*)
LD TRUE
BOOL_TO_DT
ST datedt (* DT#1970-01-01-00:00:01*)
FBD
2.7.2 BYTE_TO_<TYPE>——
/ 4-7-1
BYTE_TO_BOOL 0 TRUE 0
FALSE BYTE_TO_TIME BYTE_TO_TOD
BYTE_TO_DATE BYTE_TO_DT
(* 16# 00FF *)
LD (* T#255ms *)
(* DT#1970-01-01-00:04:15 *)
(* 255 *)
(* '255'*)
Varbyte1:=16#FF (*Varbyte1 *)
Varbool1:=BYTE_TO_BOOL(Varbyte1); (* TRUE *)
Varint1:=BYTE_TO_INT(Varbyte1); (* 16# FF *)
Vartime1:=BYTE_TO_TIME(Varbyte1); (* T#255ms *)
ST Vardt1:=BYTE_TO_DT(Varbyte1);
(* DT#1970-01-01-00:04:15 *)
Varreal1:=BYTE_TO_REAL(Varbyte1); (* 255 *)
Varstring1:=BYTE_TO_STRING(Varbyte1); (* '255'*)
(* TRUE *)
(* 16# 00FF *)
(* T#255ms *)
FBD
(* DT#1970-01-01-00:04:15 *)
(* 255 *)
(* '255'*)
2.7.3 WORD_TO_<TYPE>——
/ 4-7-1
WORD_TO_BOOL 0 TRUE 0
FALSE WORD_TO_TIME WORD_TO_TOD
LD
Varword1:=4863 (*Varword1 *)
Varusint1:=WORD_TO_USINT(Varword1); (* 255 *)
4863 16#12FF USINT
255 16#FF
ST
Vartime1:=WORD_TO_TIME(Varword1); (* T#4s863ms*)
Vardt1:=WORD_TO_DT(Varword1);
(* DT#1970-01-01-01:21:03 *)
LD 4863
ST Varword1 (*Varword1 *)
LD Varword1
WORD_TO_USINT
ST Varusint1 (* 255 *)
IL LD Varword1
WORD_TO_TIME
ST Vartime1 (* T#4s863ms*)
LD Varword1
WORD_TO_DT
ST Vardt1 (* DT#1970-01-01-01:21:03 *)
FBD
/ 4-7-1
DWORD_TO_BOOL 0 TRUE 0
FALSE DWORD_TO_TIME DWORD_TO_TOD
DWORD_TO_DATE DWORD_TO_DT
LD
Varword1:=16#56FF (*Varword1 *)
Varusint1:=DWORD_TO_USINT(Vardword1); (* 255 *)
16#56FF 22271 USINT
255 16#FF
ST
Vartime1:=DWORD_TO_TIME(Vardword1); (* T#22s271ms*)
Vardt1:=DWORD_TO_DT(Vardword1);
(* DT#1970-01-01-06:11:11 *)
LD 16#56FF
ST Vardword1 (*Vardword1 *)
LD Vardword1
DWORD_TO_USINT
ST Varusint1 (* 255 *)
IL LD Vardword1
DWORD_TO_TIME
ST Vartime1 (* T#22s271ms*)
LD Vardword1
DWORD_TO_DT
FBD
2.7.5 SINT_TO_<TYPE>——
/ 4-7-1
SINT_TO_BOOL 0 TRUE 0 FALSE
SINT_TO_TIME SINT _TO_TOD
SINT_TO_DATE SINT _TO_DT
LD
Varsint1:=100 (*Varsint1 *)
ST Vardt1:=SINT_TO_DT(Varsint1); (* DT#1970-01-01-00:01:40 *)
Varreal1:=SINT_TO_REAL(Varsint1); (* 100 .0*)
LD 100
ST Varsint1 (*Varsint1 *)
LD Varsint1
IL SINT_TO_DT
ST Vardt1 (* DT#1970-01-01-00:01:40 *)
LD Varsint1
SINT_TO_REAL
ST Varreal1 (* Varrea1 100.0*)
FBD
/ 4-7-1
USINT_TO_BOOL 0 TRUE 0
FALSE USINT_TO_TIME USINT _TO_TOD
USINT_TO_DATE USINT _TO_DT
LD
Varusint1:=200 (*Varusint1 *)
Vardt1:=USINT_TO_DT(Varusint1);(* DT#1970-01-01-00:03:20 *)
ST
Varreal1:=USINT_TO_REAL(Varusint1); (* 200 .0*)
LD 200
ST Varusint1 (*Varusint1 *)
LD Varusint1
USINT_TO_DT
IL
ST Vardt1 (* DT#1970-01-01-00:03:20 *)
LD Varusint1
USINT_TO_REAL
ST Varreal1 (* Varreal1 200.0*)
FBD
2.7.7 INT_TO_<TYPE>——
/ 4-7-1
LD
LD 2
IL INT_TO_REAL
ST VarREAL1 (* VarREAL1 2.0*)
FBD
2.7.8 UINT_TO_<TYPE>——
/ 4-7-1
UINT_TO_BOOL 0 TRUE 0 FALSE
UINT_TO_TIME UINT _TO_TOD
UINT_TO_DATE UINT _TO_DT
LD
FBD
2.7.9 DINT_TO_<TYPE>——
/ 4-7-1
DINT_TO_BOOL 0 TRUE 0 FALSE
DINT_TO_TIME DINT _TO_TOD
DINT_TO_DATE DINT _TO_DT
Vardint1:=200000;
Varusint1:=DINT_TO_USINT(Vardint1); (* 64*)
200000 16#30D40 USINT
ST 64 16#40
Vartime1:=DINT_TO_TIME(Vardint1); (* T#3m20s0ms*)
Vardt1:=DINT_TO_DT(Vardint1); (* DT#1970-01-03-07:33:20 *)
LD 200000
ST Vardint1 (*Vardint1 *)
LD Vardint1
DINT_TO_USINT
ST Varusint1 (* 64*)
IL LD Vardint1
DINT_TO_TIME
ST Vartime1 (* T#3m20s0ms*)
LD Vardint1
DINT_TO_DT
ST Vardt1 (* DT#1970-01-03-07:33:20 *)
FBD
2.7.10 UDINT_TO_<TYPE>——
/ 4-7-1
UDINT_TO_BOOL 0 TRUE 0
FALSE UDINT_TO_TIME UDINT _TO_TOD
UDINT_TO_DATE UDINT _TO_DT
Varudint1:=300000;
Varusint1:= UDINT_TO_USINT(Varudint1); (* 224*)
300000 16#493E0 USINT
ST 224 16#E0
Vartime1:=UDINT_TO_TIME(Varudint1); (* T#5m0s0ms*)
Vardt1:=UDINT_TO_DT(Varudint1);
(* DT#1970-01-04-11:20:00 *)
LD 300000
ST Varudint1 (*Varudint1 *)
LD Varudint1
UDINT_TO_USINT
ST Varusint1 (* 224*)
IL LD Varudint1
UDINT_TO_TIME
ST Vartime1 (* T#5m0s0ms*)
LD Varudint1
UDINT_TO_DT
ST Vardt1 (* DT#1970-01-04-11:20:00 *)
FBD
/ 4-7-1
REAL_TO_BOOL 0 TRUE 0
FALSE REAL_TO_TIME REAL_TO_TOD
REAL_TO_DATE REAL_TO_DT
LD
LD 2.7
IL REAL_TO_INT
ST VarINT1 (* VarINT1 3*)
FBD
2.7.12 TIME_TO_<TYPE>——
DWORD
TIME_OF_DAY 00 00
/ 4-7-1
TIME_TO_BOOL 0 TRUE 0
FALSE
Varstr:=TIME_TO_STRING(T#12ms); (* ‘T#12ms’*)
ST
Vardword:=TIME_TO_DWORD(T#5m); (* 300000*)
LD T#12ms
TIME_TO_STRING
ST Varstr (* ‘T#12ms’*)
IL
LD T#300000ms
TIME_TO_DWORD
ST Vardword (* 300000*)
FBD
2.7.13 DATE_TO_<TYPE>——
1970
1 1
/ 4-7-1
DATE_TO_BOOL 0 TRUE 0
FALSE
VarStr1:=DATE_TO_STRING(D#1970-01-01);
(* 'D#1970-01-01' *)
VarInt1:=DATE_TO_INT(D#1970-01-15); (* 29952*)
ST
D#1970-01-15 14×24×3600=1209600=16#127500 INT
16#7500, 29952
LD D#1970-01-01
DATE_TO_STRING
ST VarStr1 (* ‘TRUE’*)
IL
LD D#1970-01-15
DATE_TO_INT
ST VarInt1 (* 29952*)
FBD
2.7.14 DT_TO_<TYPE>——
1970 1 1
/ 4-7-1
DT_TO_BOOL 0 TRUE 0 FALSE
LD
LD DT#1970-01-15-05:05:05
DT_TO_BYTE
ST Varbyte (* Varbyte 129*)
IL
LD DT#1998-02-13-14:20
DT_TO_STRING
ST Varstr (* Varstr ‘DT#1998-02-13-14:20’)
FBD
2.7.15 TOD_TO_<TYPE>——
/ 4-7-1
TOD_TO_BOOL 0 TRUE 0
FALSE
LD
LD TOD#10:11:40
ST Vartod1 (*Vartod1 *)
LD Vartod1
TOD_TO_USINT
ST Varusint1 (* 96*)
LD Vartod1
TOD_TO_TIME
IL
ST Vartime1 (* T#611m40s0ms*)
LD Vartod1
TOD_TO_DT
ST Vardt1 (* DT#1970-01-01-10:11:40*)
LD Vartod1
TOD_TO_REAL
ST Varreal1 (* 3.67e+007*)
FBD
2.7.16 STRING_TO_<TYPE>——
0
/ 4-7-1
Varword:=STRING_TO_WORD('Hollysys'); (* 0*)
ST
Vartime:=STRING_TO_TIME('T#127ms'); (* T#127ms*)
LD 'Hollysys'
STRING_TO_WORD
ST Varword (* Varword 0*)
IL
LD 'T#127ms'
STRING_TO_TIME
ST Vartime (* Vartime T#127ms*)
FBD
2.7.17 TRUNC——
LD
FBD
REAL_TO_INT
2.8
2.8.1 ABS——
LD
2.8.2 SQRT——
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
FBD
2.8.3 LN——
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
2.8.4 LOG——
10
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
FBD
2.8.5 EXP——
y ex x y
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
FBD
2.8.6 SIN——
(rad ) *
180 o
/ BYTE WORD DWORD INT DINT
REAL SINT USINT UINT UDINT REAL
LD
FBD
2.8.7 COS——
(rad ) *
180 o
/ BYTE WORD DWORD INT DINT
REAL SINT USINT UINT UDINT REAL
LD
FBD
2.8.8 TAN——
(rad ) *
180 o
/ BYTE WORD DWORD INT DINT
REAL SINT USINT UINT UDINT REAL
LD
FBD
2.8.9 ASIN——
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
FBD
2.8.10 ACOS——
/
BYTE WORD DWORD INT DINT REAL SINT USINT
UINT UDINT REAL
LD
FBD
2.8.11 ATAN——
FBD
2.8.12 EXPT——
1 2
/ BYTE WORD DWORD INT DINT
REAL SINT USINT UINT UDINT REAL
LD
ST Var1:=EXPT(7,2); (* Var1 49 *)
LD 7
IL EXPT 2
ST Var1 (* Var1 49 *)
FBD
2.9
2.9.1 ADR——
ST VarAddress:= ADR(Var1);
LD Var1
IL ADR
ST VarAddress
FBD
2.9.2 ^——
“^
LD
ST VarAddress:= ADR(Var1);
Var2:= VarAddress^; (* Var2 100 *)
LD Var1
ADR
IL ST VarAddress
LD VarAddress^
ST Var2
FBD
LD
ST Bitadr1:=BITADR(Varbool1)
LD Varbool1
IL BITADR
ST Bitadr1
FBD
2.9.4 INDEXOF——
POU POU POU
INT
LD
POU2
ST Var1:=INDEXOF(POU2); * Var1 38*
FBD
* Var1 38*
2.9.5 SIZEOF——
LD
LD arr1
IL SIZEOF
ST Var1 * Var1 10*
FBD
2.10
CAL
IL CAL
/ /
PLC_PRG
funb FB
PLC_PRG
LD funb
2.12 Standard.lib
2.12.1 LEN——
/ STRING INT
LD
FBD
2.12.2 LEFT——
LD
FBD
2.12.3 RIGHT——
FBD
2.12.4 MID——
LD
FBD
LD
FBD
2.12.6 INSERT——
LD
2.12.7 DELETE——
LD
FBD
2.12.8 REPLACE——
FBD
2.12.9 FIND——
LD
FBD
2.13.1 BCD_TO_INT——BCD
BCD INT
/
B BYTE BCD
BCD 49 2#100 1001 10#73 16#49
2#100 1001 10#73 16#49
INT BCD BCD -1
LD
Varint1:=BCD_TO_INT(73); (* 49 *)
ST Varint2:=BCD_TO_INT(151); (* 97*)
Varint3:=BCD_TO_INT(15); (* -1 BCD *)
LD 73
BCD_TO_INT
ST Varint1 (* 49 *)
LD 151
IL BCD_TO_INT
ST Varint2 (* 97*)
LD 15
BCD_TO_INT
FBD
LD
Varbyte1:=INT_TO_BCD(49); (* 73*)
ST Varbyte2:= INT_TO_BCD(97); (* 151*)
Varbyte3:= INT_TO_BCD(100); (* 255*)
LD 49
INT_TO_BCD
ST Varbyte1 (* 73*)
IL
LD 97
INT_TO_BCD
ST Varbyte2 (* 151*)
FBD
2.14 / Util.lib
2.14.1 EXTRACT——
X N N=0,1...
/
X DWORD N BYTE BOOL
LD
(* FLAG1=TRUE FLAG2=TRUE *)
FLAG1:=EXTRACT(X:=81, N:=4);
(* TRUE 81 1010001 1*)
ST
FLAG2:=EXTRACT(X:=33, N:=0);
(* TRUE 33 100001 0 1*)
LD 81
EXTRACT 4
ST FLAG1
(* TRUE 81 1010001 1*)
IL
LD 33
EXTRACT 0
ST FLAG2
(* TRUE 33 100001 0 1*)
(* FLAG2=TRUE *)
2.14.2 PACK——
B0 B1 …… B7
UNPACK
/
B0 B1 …… B7 BOOL BYTE
LD
FBD
LD
Var2:=38; (* 100110*)
ST
Var1:=PUTBIT(Var2,4,TRUE); (* 54 = 2#110110*)
LD 38 (* 100110*)
IL PUTBIT 4,TRUE
ST Var1 (* 54 = 2#110110*)
FBD
2.14.4 UNPACK——
B 8 BOOL B0,…,B7 PACK
/
BYTE B0 B1 …… B7 BOOL
UP(B:=2#10101010);
Varbool0:=UP.B0;
Varbool1:=UP.B1;
Varbool2:=UP.B2;
ST Varbool3:=UP.B3;
Varbool4:=UP.B4;
Varbool5:=UP.B5;
Varbool6:=UP.B6;
Varbool7:=UP.B7;
CAL UP(B := 2#10101010)
LD UP.B1
ST Varbool1
LD UP.B2
ST Varbool2
LD UP.B3
IL ST Varbool3
LD UP.B4
ST Varbool4
LD UP.B5
ST Varbool5
LD UP.B6
ST Varbool6
FBD
2.15 Util.lib
2.15.1 DERIVATIVE——
DERIVATIVE
3 * [ IN (k ) IN (k 3)] IN (k 1) IN (k 2)
OUT
3 * TM (k 2) 4 * TM (k 1) 3 * TM (k )
k-3 k-2 k-1 k
IN REAL
TM DWORD
RESET BOOL TRUE
OUT REAL
DERIVATIVEInst (IN:=Varint1,TM:=100,RESET:=VarBOOL1);
ST Varreal1:=DERIVATIVEInst.OUT;
CAL DERIVATIVEInst(IN := Varint1, TM := 100, RESET := VarBOOL1)
IL LD DERIVATIVEInst.OUT
ST Varreal1
FBD
2.15.2 INTEGRAL——
A(k ) A( k 1) TM * IN (k 1)
B(k ) B (k 1) TM * IN ( k )
IN REAL
TM DWORD
RESET BOOL TRUE
OUT REAL
OVERFLOW BOOL TRUE
LD
FBD
IN INT
RESET BOOL TRUE
MN INT
MX INT
AVG INT
LD
FBD
2.15.4 STATISTICS_REAL——
IN REAL
RESET BOOL TRUE
MN REAL
MX REAL
AVG REAL
STATISTICS_REALInst(IN :=Varreal1,RESET:=VarBOOL1);
Varreal3:=STATISTICS_REALInst.MX;
ST Varreal4:=STATISTICS_REALInst.AVG;
Varreal2:=STATISTICS_REALInst.MN;
CAL STATISTICS_REALInst(IN := Varreal1, RESET := VarBOOL1)
LD STATISTICS_REALInst.MX
ST Varreal3
IL LD STATISTICS_REALInst.AVG
ST Varreal4
LD STATISTICS_REALInst.MN
ST Varreal2
FBD
STATISTICS_INT REAL
2.15.5 VARIANCE——
IN REAL
RESET BOOL TRUE
OUT REAL
FBD
2.16 Util.lib
2.16.1 P——
OUT REAL
LD
FBD
2.16.2 PD——
Y KP * ( TV * ) Y _ OFFSET
t
TRUE
RESET BOOL
FALSE
Y REAL
TRUE
LIMITS_ACTIVE BOOL
Y_MIN Y_MAX
FBD
1
Y KP * ( * ( t )dt TV * ) Y _ OFFSET
TN t
SET _ POINT ACTUAL
( t )dt
t
ACTUAL REAL
SET_POINT REAL
KP REAL
TN REAL s
TV REAL s
MANUAL=TRUE
Y_MANUAL REAL
Y= Y_MANUAL
Y_OFFSET REAL
Y_MIN REAL
Y_MAX REAL
TRUE FALSE
MANUAL BOOL
Y REAL
TRUE
LIMITS_ACTIVE BOOL
Y_MIN Y_MAX
OVERFLOW BOOL TRUE
LD
FBD
2.16.4 PID_FIXCYCLE——
PID
CYCLE CYCLE REAL
PID
FBD
PID
2.17.1 BLINK——
TIMEHIGH TIMELOW
OUT BOOL
LD
FBD
4-20-1
2.17.2 GEN——
MODE TRIANGLE
TRIANGLE_POS SAWTOOTH_RISE
SAWTOOTH_FALL RECTANGLE
SINUS COSINUS
TRIANGLE
TRIANGLE_POS
MODE GEN_MODE
SAWTOOTH_RISE
SAWTOOTH_FALL
RECTANGLE
SINUS
COSINU
BASE TRUE
BASE BOOL BASE FALSE
PERIOD TIME
CYCLES INT
AMPLITUDE INT
RESET=TRUE
RESET BOOL
0
OUT INT
FBD
MODE 4-20-2
2.18 Util.lib
2.18.1 CHARCURVE——
POINT P[0..N-1] XY IN
X OUT Y
IN INT X
N BYTE 2 N 11
ARRAY[0..10]
P XY
OF POINT
ERR=4 N 2 11
ARRAY[0..10]
P N
OF POINT
LD
ST Varerr:=CHARCURVEInst.ERR;
Varout:=CHARCURVEInst.OUT;
CAL CHARCURVEInst(IN := Var1, N := 11, P := KL)
LD CHARCURVEInst.ERR
IL ST Varerr
LD CHARCURVEInst.OUT
ST Varout
FBD
4-21-1
KL IN X OUT Y
2.18.2 RAMP_INT——
IN INT OUT
OUT
TIMEBASE
ASCEND INT
TIMEBASE
DESCEND INT
TIMEBASE TIME
TRUE RAMP_INT
RESET BOOL
OUT INT
FBD
IN 4-21-2
4-21-2
IN REAL OUT
OUT
TIMEBASE
ASCEND REAL
TIMEBASE
DESCEND REAL
TIMEBASE TIME
TRUE RAMP_INT
RESET BOOL
OUT REAL
RAMP_INT
2.19 Util.lib
2.19.1 HYSTERESIS——
INT IN HIGH LOW IN
LOW OUT TRUE IN HIGH OUT TRUE
FALSE IN LOW OUT FALSE TRUE IN
HIGH OUT FALSE
IN INT
HIGH INT
LOW INT
TRUE
OUT BOOL
FALSE
FBD
4-22-1
4-22-1
2.19.2 LIMITALARM——
IN HIGH O TRUE U IL FALSE IN
LOW U TRUE O IL FALSE IN LOW HIGH
O BOOL
U BOOL
IL BOOL
LD
FBD
4-22-2
2.20 Standard.lib
2.20.1 SR——
LD
FBD
SET1 RESET
0 0
1 0 1
SR
0 1 0
1 1 1
2.20.2 RS——
LD
2.21 Standard.lib
R_TRIG F_TRIG
2.21.1 R_TRIG——
LD
RTRIGInst(CLK:= VarBOOL1);
ST
VarBOOL2 := RTRIGInst.Q;
CAL RTRIGInst(CLK := VarBOOL1)
IL LD RTRIGInst.Q
ST VarBOOL2
FBD
2.21.2 F_TRIG——
LD
FTRIGInst(CLK:= VarBOOL1);
ST
VarBOOL2 := FTRIGInst.Q;
CAL FTRIGInst(CLK := VarBOOL1)
IL LD FTRIGInst.Q
ST VarBOOL2
FBD
2.22 Standard.lib
CTU CTD CTUD
2.22.1 CTU——
CU FALSE TRUE
CU BOOL
CV 1
TRUE CTU
RESET BOOL
PV WORD 0-65535
CV PV Q
Q BOOL
TRUE
LD
ST VarBOOL3 := CTUInst.Q;
VarINT2 := CTUInst.CV;
CAL CTUInst(CU := VarBOOL1, RESET := VarBOOL2, PV :=VarINT1)
LD CTUInst.Q
IL ST VarBOOL3
LD CTUInst.CV
ST VarINT2
FBD
2.22.2 CTD——
CD FALSE TRUE
CD BOOL CV 0 CV 1 CV
0
LOAD TRUE CV
LOAD BOOL
PV
PV WORD 0-65535
Q BOOL CV 0 Q TRUE
CV WORD
FBD
2.22.3 CTUD——
CU FALSE TRUE
CU BOOL
CV 1
CD FALSE TRUE
CD BOOL CV 0 CV 1 CV
0
RESET TRUE CV
RESET BOOL
0
LOAD TRUE CV
LOAD BOOL
PV
PV WORD 0-65535
LD
CTUDInst(CU:=VarBOOL1,CD:=VarBOOL2,RESET:=VarBOOL3,
LOAD:=VarBOOL4,PV:=VarINT1)
ST VarBOOL5 := CTUDInst.QU
VarBOOL6 := CTUDInst.QD
VarINT2 := CTUDInst.CV
CAL CTUDInst(CU:=VarBOOL1,CD:=VarBOOL2,
RESET:=VarBOOL3,LOAD:=VarBOOL4,PV:=VarINT1)
LD CTUDInst.QU
ST VarBOOL5
IL
LD CTUDInst.QD
ST VarBOOL6
LD CTUDInst.CV
ST VarINT2
FBD
2.23.1 TP——
IN TRUE ET
IN BOOL ET PT ET
PT TIME
IN FALSE Q FALSE
ET 0 IN TRUE
Q BOOL Q TRUE ET
PT IN ET
PT Q FALSE
IN TRUE ET
ET PT ET
ET TIME
IN FALSE
ET 0
TP
FBD
2.23.2 TON——
IN TRUE ET
IN BOOL ET PT ET
PT TIME
IN FALSE Q FALSE
ET 0 IN TRUE
Q BOOL
ET PT Q
TRUE
IN TRUE ET
ET PT ET
ET TIME
IN FALSE
ET 0
TON
ST TONInst(IN:=VarBOOL1,PT:= T#5s);
CAL TONInst(IN:= VarBOOL1,PT:=T#5s)
IL LD TONInst.Q
ST VarBOOL2
FBD
2.23.3 TOF——
IN TRUE FALSE
IN BOOL ET ET PT
ET
PT TIME
IN FALSE ET PT
Q BOOL
Q FALSE Q TRUE
ET TIME IN FALSE ET
LD
TOFInst(IN:= VarBOOL1,PT:=T#5s);
ST
VarBOOL2 :=TOFInst.Q;
CAL TOFInst(IN:= VarBOOL1,PT:= T#5s)
IL LD TOFInst.Q
ST VarBOOL2
FBD
EN BOOL
PDT DT
EN FALSE Q FALSE
Q BOOL
EN TRUE Q TRUE
EN FALSE CDT
1970-01-01-00:00:00 EN TRUE
CDT DT
CDT PDT
LD
RTCInst(PDT:=DT#2005-08-10-18:30:31);
ST DT1:=RTCInst.CDT;
VarBOOL1:=RTCInst.Q;
CAL RTCInst(PDT := DT#2005-08-10-18:30:31)
LD RTCInst.CDT
IL ST DT1
LD RTCInst.Q
ST VarBOOL1
FBD
A.1
ADD FUN
MUL FUN
SUB FUN
DIV FUN
MOD FUN
MOVE FUN
AND FUN
OR FUN
XOR FUN
NOT FUN
SHL FUN
SHR FUN
ROL FUN
ROR FUN
SEL FUN
MAX FUN
MIN FUN
LIMIT FUN
MUX FUN
GT FUN
LT FUN
GE FUN
LE FUN
EQ FUN
NE FUN
BOOL_TO_<TYPE>(FUN)
BYTE_TO_<TYPE>(FUN)
DATE_TO_<TYPE>(FUN)
DINT_TO_<TYPE>(FUN)
DT_TO_<TYPE>(FUN)
DWORD_TO_<TYPE>(FUN)
INT_TO_<TYPE>(FUN)
A.2 IEC
CodeSys IEC IEC61131-3
IEC61131-3
ADD
MUL
SUB
DIV
MOD
AND
OR
XOR
NOT
SHL
SHR
ROL
ROR
SEL
MAX
MIN
LIMIT
MUX
GT
LT
GE
LE
EQ
NE
BOOL_TO_<TYPE>
BYTE_TO_<TYPE>
DATE_TO_<TYPE>
DINT_TO_<TYPE>
DT_TO_<TYPE>
DWORD_TO_<TYPE>
INT_TO_<TYPE>
WORD_TO_<TYPE>
REAL_TO_<TYPE>
SINT_TO_<TYPE>
STRING_TO_<TYPE>
TIME_TO_<TYPE>
TOD_TO_<TYPE>
UDINT_TO_<TYPE>