Академический Документы
Профессиональный Документы
Культура Документы
. . . .
-
2004
681,5
32.96
. .
t J
. -
/ . , . . . Intel 40.04. -
.: -, 2004. 256 : . ( - , -
) , -
.
ISBN 5-98003-079-4
i , . -
, .
, -
. - , -
61131-3 () & Intel -
. ( 8086 Pentium 4, p<m-
tium (Centrino) Inatium) ,
, - ,
. . ,
- ,
^
),
- - . )
. : -
1) : 123242, , / 20; .
2) : fnaga2iit@eQlon-r.ru
, ;
,
, , -
-
. - - .
. 1 _ ../' .
- (. -- ,_,_______,
-. --
:
^
, . , , ,
.
:
, , , -
news@8olon-r.ru
-
SUBSCRIBE. . , -
, , -
1 .
ISBN 5-98003-079-4 -, 2004
to . ., 2004 .
. -
-
-
- , , ,
. - .
- .
-
, , . -
- , , -
, , ,
, . -
- . , -
. -
, .
- - , -
- .
, -
. - ,
-
. - , -
.
.
, , , . II.,
, ^ ,
, -
. -
, ,
, ,
.
, -
, -
- , -
.
. , , ,
.
,
( ),
.
*, -
-
. ,
High end. , -
-
. , -
.
-
, ,
(). 61131-3. -
, - .
, -
61131-3. .
, CoDeSys 3S (Smart Software Solutions). ,
61131-3 . - -
- . -
, - , .
, * , - -
. - . , -
- ,
. 2002 .
, , -
. - 61131-3 -
-
, . -
. , - .
() .
, - .
.
-
. , . CD -,
- (. ) -
, , -
. ,
-
.
. -
. - , , , -
, ,
. -
10 [7] . , , ,
, - ,
-
, . .
, , . -
[138] -, -
.
.
, -
8 9
- . , -
. , . -
, , - -
. - , -
- .
. , .
,
. , -
, ,
. -
, -
.
, -
. -
, , . -
, -
, ,
, -
. - J
_' ,I J
-
. -
, -
( -).
,
.
, -
61131-3.
, , IL
( ), -
.
. , -
,
, , . -
.
-
.
.
-
, -
-
.
1.
,
, , -
, - , -
- , ,.
. ! -
- ,
, . .
-
, -
-
1.1.
. , -
, ,
. , . -
. ,
. , .
, - * "
, . -.
, -
, -
.
, -
, -
. -
, , -
. -
.
- i
, -
, , -
. ,
-
.
,
,
. ,
(). -
, , - 30 .
1 2 1. 13
, , - -
, , -
(. 1.1). - .
. , , , -
. . .
- . -
( ).
. -
, .
, , , -
X . 1.2.
II
t
. 1.1.
i
.
,
. -
.
, -
-
. , , -
. - . 1.2. SIEMENS,
-
. , ,
. -
- ( , 1969 .). -
, - , , -
, , , ,
, - , -
. - , -
, - , , , . -
. -
. .
-
[6]. .
1 4
1. 15
1.2. -
, , -
., . , -
. . , , ,
. . .
, ( ) -
. " () . -
0. , - -
, , , , -
, . . -
- , -
. : - .
, , , -
. . , . , Actua-
tors/Sensors interface
. - ( )
, - .
. -
, , , , ,
. ; , . 1.3.
-
. , : -
, , -
. -
, ,
, ,
- .
, . - , .
, -
. . -
( , - . -
, , - . -
. .). -
- .
. , , . - ,
, . . .
. -
- . -
. -
. . -
-- -
-. .
1.
1 6
17
-
, ,
.
-
().
,
.
-
.
,
.
, -
.
. , 1.3.
, , , (, . , .)
- , -
. - , . -
. -
, . , ,
. - .
, - ,
- ,
. , -
( IP20),
, , , -
, . .
. -
, - -
. ,
. -,
, - , ,
. .
F
1.4. 1.5.
, -
, : , , - -
- , () -
, (. 1.3). - ,
, , - (). -
1 8
1. 19
. , -
* CoDeSys.
, , -
, - , -? :
. . ^
. . -,
,
. - .
-. , -
. -
, . -
-
, ,
. 10 15 -
- SCADA-. , -
& -
. *
, -
. -
. . ^-
, . -
-
(MMI). - ! N
(Supervisory Control And Data Acquision System SCADA). -
SCADA- -
.
, -
, , -
-
, -
fiekfbus
( , Visual Basic),
.
-
. , -
. , -
(OLE for Process Control), -
DCOM Microsoft Windows. -
(DDE) -
,
.
* *
-
-
(. 1.4). , . 1.4.
1- 21
2 0
, : -
, ,
, . . , -
(fieldbus). - , -
-
(Bitbus, Modbus, Profibus, CANopen, DeviceNet), - .
, , .
. .
-
, , -
. 80- . XX , - ( /104 VME), -
- . - no name.
- 64.
-
- 1.8.
.
, . -
.
, -
. -, -
1.6. , ,
- , ,
. -
- ,
- .
-
. , ,
- (), -
. - . ,
, , -
. , -
.
, . .
1. .
1*7. 2. .
3. .
, 4. .
( -), 5. .
(soft PLC).
6. .
, -
, - 7. .
. 8. .
2 2
1. 23
. ,
. - .
. , -
. . -
. - -
- .
, . - . ,
,
, , . - .
-,
. . -
- . , ,
. -
( 4). CoDeSys -
- : 98% , 2%
, , - .
, -
- . , -
- , -
, - . -
, - .
. : - , -
- .
, , -
, , .
,
, , -
. . 1.9.
-
. , -
. -
. - , -
. - .
. -
, , -
, . (. 1.5). , -
-
, . , -
. .
, , - ,
.
1. 25
1.10,
.
. -
, , -
.
.
. 1.6.
,
,
-
.
, -
, -
-
.
- . 1.6. MicroLogix 1000 Allen-Bradley (Rockwell
- Automation).
. -
, ,
, , - . , ,
. - -.
(. 1.7) -
, . -
- . -
. - .
1 -, ,
. , 61131-3, - .
IL. -
, - ,
. - , -
- .
-
-
. , - () -.
32-
. ,
8- . ,
. ,
. , PC-
-
- () . -
.
1. 27
2 6
8 , 4 , 2 -
, RS232, SPI -
CANopen.
1.10.1.
()
. -
, , -
- , -
.
.
-, ,
. -
, 1.7. , .
- , -
- .
.
. .
. 1.8 Easy 215
( Frenzel + Berg Electronic, ), 1.10.2.
, -
-
, DIP40. . -
, 16- (Infineon , , ,
164), , , .
CoDeSys, 8 .
-
.
,
. ,
1
;
. , -
-
.
. 1.8. Easy215
CoDeSys
29
, , -
, , .
1982 . -
2. 61131 - -
.
, - 1. .
, 61131, 2. .
- 3. .
61131-3. 4, .
5. .
2.1. 6. .
7. ..
8.
. , ,
1131, 1997
. .
5- . -
-
61131.
.
, -
. , . -
, , -
61131-3. -
. , .
, , L
. - 2.2.
-
. -
( ) -
- ( SFC). ,
. , , -
, .
* , - . -
- . -
. -
* , -
. - .
. - -
IBM . . -
1979 - -
() - .
2. 61131 31
3 0
- ,
, . .
, , , . -
61131-3 - -
- -
- . , - , . . ,
, , -
. -
.
-
. .
- . , , , ,
, . . .
, -
,
2,
-
2.3.
, , - . ,
. , 61131, -
. ,
, . -
,
, , -
.
LD FBD.
PASCAL , ST
. . -
- -
100 [21]. - .
, . - .
, . -
. -
. , - .
, -
, . C++.
, , ,
, , . .
: , .
, . -
, -
.
, -
. SFC
(, UML), -
, .
3. 33
- *
, , -
.
3. * .
, *
. , , -
, ,
61131-3, , , -
- , . . , -
. Co- .
DeSys, . -
.
3.1. 61131-3 CoDeSys
-
.
3.2.1. + subtraction
( ) - Company mten
| insert function Mock
, - 11
, . Keywords
. .
.
i ^ as
3.2.2. if n o t [ C t x p r o d u c t J t h e n r e t u r n ; end_if;
- if step = 0 then
Display := Product:
: step := 1;
-
, --
, one-
. 3.1. ISaGRAF
, , (. . 3.1). -
, -
;
.
-
(CoDeSys). , : INP1 I 3; 1 -
^ -
: .
INP1: INT := 3; (* 1 *);
3.2.3.
.
, -
. -
- :
. , . -
, ; .
-
, (, . 3.2);
( - .
. .);
- .
. CoDeSys OpenPCS.
, -
. - ,
; (. . 3.3). -
3 8
3. 39
-
( . 3.3, ).
;
-
(. 3.4);
Project [E:\SCj
> Library Pi
3.19
LD free
. 3.2. GT 0
AHO ntr
MULTIPROG AND
OR
ST ope ion23.19
f* Close the entrap
. .4.
SoftCONTROL
-
.
-
(. . 3.5).
courier (4)1 * (. 3.6).
;
;
.
, 3.3. (ISAGRAF) -
.
4 0
3. 41
3.2.4.
:
. -
-
. ,
(. 3.7), -
-
;
Sm
i ua
l tor
assign - Stmt
RU
STN
OP
P
CFt
EO
RM
R
16#0000-
. .7. OpenPCS
160001
-
;
. -
FALSE Counter2=16#0000 ;
;
. .6. LD- .
(CoDeSys) . -
4 2 3. 1 43
. -
- ;
. - .
; -
. . .
- -
. .
- -
. - () ;,
, - ,
. CoDeSys , -
(original), - -
, , .
. ,
.
. - , -
- . . (. . 3.8 3.9).
,
. - .
,
;
-
- .
;
i
, -. -
.
-
-
. -
;
-
. -
;
; . 3.8. iCon-L
44 3. 45
3.2.5. . -
,
.
. , -
: .
- 1. .
(. . 5.10). , , -
-. -
.
- -
. ; . , IL ST.
, - -
.
. -
; . ,
, .
; . , OpenPCS -
. . IL ,
, . -
, .
;
. .
- -
, : 2. .
-
, ;
(MULTIPROG, CoDeSys), ,
; .
, -
3. . -
, ,
;
, , -
;
.
. , , , -
, . -
, -
. , -
, - .
. .
CoDeSys -
*
(, . .).
-
. -
-
, . \
, -
, ( , ,
. .) .
4 6 3. CoDeSys 47
. -
, -
. , ,
,
-
, -
. .
. -
.
, ,
. i
1001$ i
.
-
- [
, ' \ - TRUE
3.3. CoDeSys
CoDeSys 3S (Smart Software So- , 3.9. & CoDeSys
lutions). -
61131-3, -
-
, - -
.
-
(. 3.9). ,
- -
CoDeSys . -
( online) .
-
( PC-). - -
, -
, . -
-. CoDeSys. ,
- .
.
. CoDe- SCADA-. (DDE ) -
Sys , .
. , -
-, .
. 150
, CoDeSys: 3S . -
-
. .
4 8 3. CoDeSys 49
-1
-
. , ,
,
Q D
.
CoDeSys -
, * (. --
).
3S . 3.10.
-
( ,
, -
, .)* -
Tocahost via Tcp/lp
CoDeSys
, , .
COM2
9SG0
No
3.4. CoDeSys
:
. -
, -
, -
. ,
. -
, . -
. 3.11. (CoDeSys)
com- (RS232) - . -
- (local
(RS422, RS485 ).
host)
CoDeSys
.
(gateway).
com- -
'
Windows -, (. 3.11) -
TCP/IP. - (, , -).
,
(. ). - - -
. CoDeSys
. , - (DDE, OPC), ,
, - , , -
. .
51
16-
. 32- -
.
-
4. , -
, * . , -
-, , , -
. , - -
-
. , - -
, . -
. .
, , ,
. .
4.1.
, - 4.2.
.
. . 4.2.1.
, -
. - -
, . , , -
, .
. .
.
. , - ,
, ,
( 0 1),
SINT (-128...+127), . BYTE 8 1
i
- WORD 16 2
.
, , DWORD 32 4
. - LWORD 64 8
,
- SINT -128 127 1
, .
INT -32768 32767 2
-
, - DINT _231 231-1 4
-
. - LINT -2 2-1 8
, - USINT 0 255 1
. , , 16- -
5 2 4. 53
'^
,
. -
i III
, -
UINT 0 65535 .
i ^ ^ - I I
1T1cfIIcf * 4i H"i ^^^^^^^^^^^-I ^
2
64 VAR
ULINT 0 2 -1 | 3
- ^ ^ ^ i g r r r ^ ^
H P W ^ P i ^ ^ ^ = III "
wVarO, wVarl: WORD; (*2 WORD*)
0, byVar3: BYTE; (* BYTE 0*)
(2)- 1, . - byVar2: BYTE := 16#55; (* BYTE
1 1
~-(2 ~ ), (2"" ) - 1. 55h*)
- END VAR -
, 16-
byVar2 : - 2#1_0_0_0_1_0_0_0; (*2#1000_1000*)
: S (short *l/2) , D (double *2) , L (long *4)
. U (unsigned) - := 2#1_0_0_0__1_0_0_0; (**)
.
BYTE, WORD, DWORD LWORD - 4.2.2.
ANY_BIT.
- BOOL
.
. 8, 16 32 , -
FALSE ()
. -
TRUE ().
, .
.
, -
, . - VAR
, , bVarl: BOOL := TRUE;
#. :
wVar2: WORD;
END VAR
2#0100_1110
8#116
FALSE 0, a TRUE 1.
16#4
wVar2:= BOOL_TO_WORD(bVarl); (* 1 *)
78
-
:
10 15 -
F. wVar2 := 0;
_ - bVarl := WORD _TO_ BOOL (wVar2); (' FALSE*)
-
, ,
. : 10_000, 16#01_88. - BOOL:
.
. bVarl : - wVar2 > 5000;
4.
, .
BOOL , - ,
- , , .
, , -
, 1 . BOOL? , -
- .
, -.
. TIME1 := t#lm65s; (*)
TIME1 :=T#125s; (**)
4.2.3.
:
REAL -
88
ilO* . 32 , TIME1 : - T#1.2S; (*#1200*)
, 23 . -
6 7 ; 4.2.5.
LREAL 64 .
52- . , ,
15 16 . ISO 8601.
807
11O* .
, -
: 14.0, -120.2, 0.33__ : -1.2,
3.17. DATE D 1 1970.
- TIME_OF_DAY TOD 00:00
4.2.4. 00:00 1 1970.
TIME - DATE_AND_TIME DT
. ' (TIME_OF_DAY) -
* -.
24 . ::.-
, , . DATE# (
# #. D#), TIME_OF_DAY# ( TOD#),
(d), - DATE_AND_TIME# ( DT#).
(h), (), (s) (ms). -
, DATE#2002-01-31 D#2002-01-31
. - TIME_OF_DAY#16:03:15.47 TOD#16:03:15.47
. :
DATE_AND_TIME#2002-01-31-16:03:15.47^H
VAB DT#2002-01-31-16:03:15.47
TIME1: TIME := t#10h_14m_5s;
4 (DWORD)ij
END_VAK TOD 0 ;"
- . DATE DT 0 "*
. , 1 1970 .
, 59. -
5 6
4. 57
4.2.5. 4.2.6.
STRING , -
. . -
. , strl, & ANY_... . ,
20 , str2 60 : ,
ANY_BIT, -
VAR . ANY_ -
s t r l : STRING(20); , , .
str2: STRING(60) := '';
END.VAR ANY INT SINT, INT, DINT, LINT, USINT,
ANY ANY NUM
, - UINT, UDINT, ULINT
. ANY REAL REAL, LREAL
ANY BIT BOOL, BYTE, WORD DWORD,
. STRING LWORD
1 (WSTRING 2 ). -
: STRING
TIME
strl := ' ';
ANY DATE DATE, TIME_OF_DAY,
, DATE AND TIME
, ($)
.
- 4.3.
.
( )
( CoDeSys
),
$$ TYPE -
END TYPE.
$
$L $1 4.3.1.
$N $ -
. -
$ $
.
$R $ (. ):
$ $t < >:ARRAY
OF <mun >;
HI, 112, ; hil, 2
.
4. 59
5 8
, 4.3.2.
.
: .
XYbass: ARRAY [1..10,1..20] OF INT;
TxtMsg: ARRAY [0..10] OF STRINGK32); , , .
Massl: ARRAY [1..6] OF SINT : - 1,1,2,2,2,2;
Mass 2: ARRAY [1..6] OF SINT := 1,1,4(2); . , -
.
, - * -
. - , . -
. ^
( ). ,
.
. , ,
N(a,b,c), -
, ,
, , N . -
.
:
, ,
Mass2d: ARRAY [1..2..4] OF SINT :== 1,2,3,4,5,6,7,8; : .
Mass2d . 4.1.
STRUCT END_STRUCT.
[ :
TYPE <_>:
*1,2]<-2
3
STRUCT
1>
< >
. 4.1. Mass2d END_STRUCT
END_TYPE
; Trolley:
<_>[1,2,] TYPE Trolley:
STRUCT
. -
, . : Start: TIME;
Distance: INT;
XYbass[2,12] : -
Load, On: BOOL;
i ; - S T R _ T O j N T ( T x t M s g [ 4 ] ) ;
Articl: STRING(16);
,
END_STRUCT
0. -
. . END TYPE
6 0
4.
Telegal Trolley . ,
: .
,
Telegal: Trolley := (1:='*); .
Telegal
. 4.2. 4.3.3.
-
B-Teleoal . -
.Start = TtOms ,
.Distance =
.Load = -
~-.0n =
JUtfd = ''
. , -
, :
. 4.2. Telegal TYPE < ^
- (< 0>, < ,... < >);
. , ENDJTYPE
, .
< >
: . -
.
<_>.<_> ,
0.
: INT -
Telegal.On := True; . , -
.
, :
.
: TYPE TEMPO: (Adagio := 1,Andante : - 2,Allegro := 4);
ENDJTYPE
TrolleySet: ARRAY[0..2] OF Trolley := (Articl := 'T 1'),
(Articl := 'T 2'), (Articl := *T 3'); -
TrolleySet[i].On := TRUE; :
, VAR
LiftTemp : TEMPO := Allegro;
, : END_VAR
train*wagon[5]. weight; (*wagonQ *)
-
, . -
, , :
- - TEMPO#Adagio. CoDeSys -
. - .
4. 63
6 2
4.3.4. TEMPERATURA
.
- INT, *
. -
-
TYPE - ,
ENDJTYPE: , -
.
TYPE <> :
< > (<>..<>) 4.3.6. CoDeSys
ENDJTYPE ,
: -. CoDeSys
TYPE DAC10: , .
( 2.2) 64-
INT(0..16#3FF);
Unicode.
END_TYPE :
, -
,
: . , Co-
DeSys , -
VAR ,
dac: DAC10; . -
ENDJVAR 1
dac := 2000; . , -
CoDeSys (
) Intel 8051 -
: 6 . ,
E r r o r : Type mismatch: Cannot convert 2000' to ,
V .
INT(O..1023)'.
4.3.5. ,
- CoDeSys
. , , . BYTE, WORD DWOKD -
16- . , (USINT, UINT
- - UDINT), .
, . TIME
UINT, INT. . CoDeSys
: DWORD ,
i 50 .
T Y P E T E M P E R A T U R A : U I N T ;
STRING ,
E N D T Y P E 80 . CoDeSys
6 4
4. I
( -) . -
- * . 'Varl', *Var_l' *__VarV -
- - . -
, * . . 'VAR1' *Varl'
, - . , 6
. .
. - CoDeSys -
- . ( ),
. ( 1 , . -
), , , - .
. , , , -
, -
. - (, , . .).
, -
, ( 4.4.2.
). .
,
- , . ,
1. .
. CoDeSys
2. .
, , -
. 3. .
(CheckRangeSigned, Check- 4. ().
RangeUnsigned), . - - -
: ; . -
. , -
( , . .) - , (-
. . , . .). -
i . -
. i -
4.4. .
.
. -
. -. -
, . . -
. - .
, -
. AT
.
.
4*4*1.
( ) * .
. : (VAR_GLOBAL) -
. . * . -
- - | -, i
6 6
4. 67
.
, -
, VAR, -
VABJNPUT, VAR_OUTPUT, VAR__IN_OUT W
VAR_EXTERNAL (. -
). D
- L
, -
. -
1 * ^ - ^ - 1 1 1
*
, . -
: .
- ,
, - , .
RETAIN . - BOOL.
. -
CONSTANT , -
. ,
. ,
4.4.3. , , , -
. ,
- ate :
:
dwHeat AT%MD1: BYTE;
% ;
wbHeat AT%MW2: BYTE;
, - byHeat AT %MB4: BYTE;
:
-
.
I D | 1 '
Q
1 1 3
11 1 2 !\ 5 6 7
, :
, - -
1 " " " ' , CoDeSys , -
.
.
X . , -
-
* - ^ ^ - ~ * "
-**- . f : '
4.
6 8 69
, . - VAR
- a: WORD;
, bStop AT %IX64.3: BOOL;
END VAR
.
- a := 0;
I. . a.3 : = 1; (* a.3 := TRUE; 2#0000_1000*)
Q . - a.18 : ^ TRUE; (* WORD . 18*)
* IF a.15 THEN (''' ?*)
,
.
4.4.5.
, -
. . -
- . -
: , . -
IF %IW4 > 1 THEN ( IW4*) , .
-
.
- * . , -
, - , siVar
*; (SINT 8 ) iVar (INT 16 ). -
. , 16- siVar = 100, a iVar = 1000. iVar := siVar -
(BOOL) WORD. , SINT
, , STRING - INT (iVar 100). -
BYTE, * ,
. * - .
siVar:= iVar . -
, -
, -
siVar : INT_TO_SINT(iVar).
, .
24 ( 1000 16#038
SINT, 16#8 -
4.4.4. 24).
- -
- LREAL REAL .
. - - -
. . -
, _ . :
. -
. - si := INT_TO_SINT(16#55AA); (* 16#AA*)
. v si := TIME_TO_SINT(T# 120ms); (*20*)
, . " >
4. ] ToH(coctH
71
7 0
- - ,
( 1 *- .
), . , ,
-
. - . , -
, -
, - .
, - -
. , SINT
127, INT 32767. . .
-
, - , :
. , -
: sint#127 + 1 = -128, sint# -128 - " 1 - 127.
SINT USINT, -
8- , , -
, : . -' .
. ,
, :
USINT S I N T B I N
0 0 0 0 0 0 _ 0 0 0 0
a,b,c,d: INT;
1 1 0 0 0 0 _ 0 0 0 1
* *
b := 3; d := 3;
J ,
1111_1111 . -
, . -
- 1/2 , -
. . 1/3 = 0,
, 2/3 = 1, ,
- 1. ,
. , - -
. (. - -
. - , .) -
, , -
. .
7 4 4. ^
- - -
( ) , -
. , - (Charles Simonyi) -
. - . ,
(. . 4.3). ( -
), , -
. -
= .-009
= 4.-009
Microsoft; -
= 1.-037 Windows.
1 := [ 4 1 =1.401298(^645 -
rXZ := ":
:* *: .
. -
, -
. 4.3. .
-
.
, ,
. -
, -
. b BOOL
. -
by BYTE, USINT
.
si SINT
#. , - | w WORD, UINT
-
. . INT
. L
? dw DWORD, UDINT
INT, ,
. , - di DINT
. , - r REAL
, : iVar := USINT#100 - byVar.
lr LREAL
st STRING
4.6.
t TIME
-
- td TIME_OF_DAY
, - d DATE \
-
. dt DATE_AND_TIME
7 6 4. BCD 77
, -
bStop: BOOL; . .
-
bySet: BYTE; . , _blnpl, byOut2_.
wSize UINT:
, -
.
. , : -
bStop ;= wSize * 2; bStop ;= wSize > 2; - .
. , -
* . -
: -
. -
. -
.1 -
.
, , i
, -
.
-
. ,
,
.
, .
:
aiSample: ARRAY [1..32] OF INT;
4.7. BCD
c i : I N T ;
-
FOR ci := 1 TO 32 DO BCD (binary coded decimal) -
, 4
siSample[ci] : - 1 ; (* *)
. , 81
END FOR 2#1000_0001. BCD-
, - , -
(BY, AT, D, DT, N, ST). . ,
, BCD -
. : . , -
-
, , byl, by2: BYTE; ,
( 10 ).
- BCD
ANY_BIT ( BOOL, -
. , tpUpDelay: TP; ). BCD-
. . CoDeSys
. , - BCD : BCD TO INT INT TO BCD.
79
.
.
() -
.
5.
(POU) . -
.
. -
. -
. . , -
.
. - , -
, - . , , -
. - . -
POU Program Organi- -
zation Unit. , . . -
. -
, .
. . - , , -
5.1. , -
.
- , , -
, . - . , -
. . , -
, : - ,
, , X ,
. . - . -
, . ,
-. - .
. () . ,
. -
, - -
. .
.
,
- - , -
, . . .
,
. 5.1.1. POU
, . - POU
, . , -
. - FUNCTION,
8 0 5. (POU)
FUNCTION_BLOCK PROGRAM. .
( ). POU. - RJTRIG, 1.
VAR_INPUT, , -
VAR_OUTPUT - VAR_IN_OUT. - bPulse.
VAR. bPulse CLK.
VAR__OUTPUT VAR_IN_OUT - - bPulse -
. , - , TRUE. CLK, ,
. - TRUE. -
. . CLK , bPulse
, a TRUE * -
: FUNCTION iNearby : INT POU -
POU . . -
.
.
FUNCTION FUNCTION BLOCK PROGRAM 5.1.3.
: POU -
VARJNPUT VAR_INPUT VAR_INPUT :
VAR_OUTPUT VAR_OUTPUT VAR__INPUT
POU .
VAR_IN_OUT VARJNJ3UT
-
( ), .
VAR VAR VAR
POU
.
; P0U. . -
, , - .
. | , VARJOUTPUT
#1 - . POU
VAR. . ' ; . ' . -
j . -
5.1-2. VAR_OUTPUT . -
, -
- . .
. - .
.
- VARJNJOUT
. , . -
. .
,
* .
8 2 5. (POU) 83
.
VAR_IN_OUT : .
; . , -
; -
, ; .
. -
, .
. -
VAR_IN_OUT . -
.
VAR_IN_OUT ? . (-
. VAR INPUT ) .
VAR_OUTPUT , .
- ( ) -
. .
VAR_IN_OUT -
. IL,
ST, LD FBD. SFC .
. .
, VAR_IN_OUT - . -
. .
-
.
, . 5.2.1.
VAR
S T -
, -
. . , , .
( - ST. :
).
. := MUX(O, x l , 2); (
VAR -
. , -
. . -
-
.
5.2. (. 5.1).
, - MUX
. 1
-
. -
, 2
.
. - . 5.1.
8 4 5, (POU) 5. (POU) 85
, - AND AND
. : 1
:= (1, 2); (* 2
*)
:= (2, x l ) ; (* *)
5.2. . 5.3.
AND AND
5*2.2.
-
: . 5.2 .
,
stHhello : CONCAT(STRl:=^o6pbm \ 82:='>); -
: . . 5.3.
-
stHhello : - 106 \ ''); . -
: :
: -
, . ,
. -, -
- * --
- , -
. CoDeSys ST. , (, -
. , )
, (+, - , *, / ) .
. .
, -
. - , -
. . :
Y := SUB(MUL(4,x),3);
5.2.3.
ST :
,
. , Y := 4 * - 3;
AND - :
(. 5.2). = 4x-3.
86 5, (POU)
87
- - pattern, i n l , i n 2 : INT;
END VAR
, .
ST :
-
. , IF ABS(inl - pattern) < ABS(in2 - pattern) THEN
ST . - Nearby_int := i n l ;
. Y := AND(xl, x2) ELSE
. : Y :*=xl AND x2;. -
Nearby_int := in2;
, -
. : END__IF
:= SQRT(x);. ,
- VAR.i(END_VAR .
. , IL :
ST ,
L LD in2
5.2.5. SUB
pattern
A B S
,
tmp
. ,
S T
. , L D
inl
, SINT S U B
pattern
REAL, , A B S
. L T
tmp
-
. -
N O T
ret_in2
. J M P C
. - L D
inl
- S T
Nearby_int
. R E T
- r e t _ i n 2 :
. - L D
in2
. , S T
Nearby_int
INT .
; tmp9
:
5.2.6.
Nearby_int7 - VAR
pattern tmp:INT;
inl in2. END_VAR
: AVHKHI *m FRD vn
FUNCTION Nearbyjnt : INT .
VAR INPUT . 5.4,
5. (POU) 89
8 8
SUB
LT SEL ( ) -
ki1
ABS
Neartyjnt -
in2- . , -
pattern I
inl- . -
4 , .
S U B
ABS
in2- SFC -
pattem . -
. .
. 5.4. [ ( Nearby Jnt FBD .
-
,
5.2.7. . -
. CoDeSys ,
? , : , -
.
, -
, ,
.
. , -
. , ,
. , ,
-
, -
. .
. , , .
, , .
. , . ,
. -
. , - -
- .
. , -
. , -
, - . , -
. ( VOID C++),
. ,
,
BOOL.
,
.
. ,
FALSE. BOOL
.
.
.
.
, LD. -
- BN <ENable), -
. . .
LD.
-
. - . , , -
. -
91
9 0
5. (POU)
. - 5.3.
. , -
, - . -
~ . .
, ,
5.2.8. ,
. , -
. - . , -
. , - , -
. - , . -
- -
. , , - -
, . .
, .
:
-
IF funcl(x) OR func2(x) THEN ... () , -
funcl(x) TRUE, func2(x) - , . . .
-
.
. -
FBD , , .
. 5.5.
5.3.1.
NORMA AND
,
. -
NORMA
in . , -
. -
. 5.5. . ,
.
, NORMA -
.
2 . FALSE, ,
. -
-
, ,
. -
, -
. , ,
.
, (. 5.6).
.
, - -
. - ,
, , - . ,
. . , -
5. (POTJ) 93
9 2
ctuTimeMeter.RESET := FALSE;
ctuTimeMeter.PV := 100;
x : ctuTimeMeter.CV;
1
.
. -
, .
2
.
5.3.3.
3
, , . -
. -
,
. -
. 5-6.
' : = ' .
ST:
-
ctuTimeMeter (RESET := FALSE);
* ctuTimeMeter :
IL:
ctuTimeMeter: CTU;
CAL ctuTimeMeter(RESET := FALSE)
, - *=>* -
* :
. , -
ctuTimeMeter (RESET := FALSE, CU := Inpl, CV => x);
. -
- ,
, -
. PV . 5.7.
- ctuTm
i eMeter
, . -
. -
, - FALSE
.
- SyncSwl.Sync
, : FALSE, , .
X := ctuTimeMeter.PV - ctuTimeMeter.CV + 1;
. -
- , -
: ,
ST: .
ctuTimeMeter.RESET := FALSE; -
.
ctuTimeMeter; , , -
IL: , -
, .
LD FALSE
,
ST ctuTimeMeter. RESET . ,
CAL ctuTimeMeter . -
, - -
- . -
, - .
-
. -
(ENO). -
,
(. ) -
.
( Init SFC ).
,
5.3.4. -
- - , -
. : , -
().
FUNCTION_BLOCK SyncSwitch .
VAR INPUT
* * 5.3.5*
Sync: BOOL := TRUE;
-
SyncSwitch :
Sync TRUE. -
, . SyncSw, SyncSw2: SyncSwitch;
- ( SyncSwl*)
, ,
* * **
. ]
. , - ST:
, ,
. SyncSw2 := SyncSwl;
SyncSwl: SyncSwitch := (Sync := FALSE); LD . 5.8.
9 6 5. (POU) 97
.
. -
. -
SyncSwi SyncSw2
. -
-
. 5.8. . -
.
* 5*3.7.
,
, , -
.
( CoDeSys variable configuration) -
i .
5*3.6. .
.
. , .
. , ! SHAMAN, bMarvel.
, !, :
, -
FUNCTION_BLOCK SHAMAN
.
. - VAR
, bMarvel AT%I* :BOOL;
. END VAR
. -
, - , SHAMAN -
, . - :
..
,
PROGRAM PLC_PRG
, -
. , , - VAR
. - Shaman 1: SHAMAN;
- Shaman2: SHAMAN;
. -
END VAR
.
-
-
, :
, .
. , VAR_CONFIG
, PLC^PRG.Shamanl.bMarvel AT%IX1.0 :BOOL;
. , -
PLC_PRG.Shamanl.bMarvel %11 : BOOL;
-
. END VAR
- , -
, - , .
.1
98 5. (POU) <> 99
5.3.8. , -
- . -
SyncSwitch. : - SyncSwitch .
Q , Start, , -
Sync : TRUE. , -
. 5.9. SR. (ST):
SR_1(SET1:= Start AND Sync, RESET:= Sync, Ql=> Q);
sync 5.3.9.
start . ,
. , , -
, .
CoDeSys .
-
. 5.9.
.
. , .
: Q = start
AND sync, Q - NOT start AND sync. -
. -
, , -
. IL SyncSwitch , . -
: , . -
FUNCTION_BLOCK SyncSwitch .
VAR_INPUT SyncSwitch -
Sync: BOOL; EmergencyBreak. -
Start: BOOL; .
END_VAR CoDeSys
VAR_OUTPUT Add Action.
BOOL; ST: Q := FALSE; . ST--
Q: :
END VAR
SyncSwitch 1. Emergency Break(Q => q);
LD Sync
AND Start , -
S Q SyncSwitchl.EmergencyBreak.
Sync ,
LD
.
ANDN Start
. -
R Q POU .
- C++, * -
. , , , *. -
5. (POU) CoDeSys
1 0 0
101
SFC. CoDeSys - . -
. , ,
.
.
5.4.
, - FuncBbckJ ffB)
- Function,! [FUN)
. . Function^ (FUNJ
PLC_PRG [PRO]
- .
.
. . 5.10. CoDeSys
5*4.1* CoDeSys -
- . -
: IL, FBD LD.
Project Object Convert.
AuxiliaryPrg(Active := TRUE Q ->> q); CoDeSys -
VAR_IN_OUT -
( ). -
, . - .
, , -
. CoDeSys
VAR_IN__0UT , -
1> *.
5.5. CoDeSys .
-
CoDeSys - .
Add Object.... VAR_GLOBAL, VAR_ACCESS -
. CoDeSys . -
, ,
, . POU . , -
, . - , -
. - VARJEXTERNAL. CoDeSys
, , . .
POU
, - CoDeSys . ADD,MUL,
(Library Manager), AND, OR, X0R MUX .
CoDeSys - .
POUs Object Organi- \ CoDeSys -
zer (. 5.10). - . -
- - .
1 0 2 5. (POU)
.
:
Nearby_sint, Nearby_int, Nearby_real
, - 6,
. :
siNearby, iNearby, rNearby
-
, . , -
CoDeSys . , -
- . ,
.
CoDeSys . CoDeSys.
CoDeSys
PLC_PRG. 6.1,
PLC_PRG - -
PLC_PRG,
, . ,
. -
. (single).
.
.
.
(VAR_INPUT),
. -
.
-
-. -
. CoDeSys -
(Task configuration), -
(. . 6).
, , -
.
. CoDeSys -
PLC_PRG.
. -
0 32.
. -
-
. , -
, -
1 0 4 6. 105
- ,
, . 55 ( Windows ,
. ), -
CoDeSys ,
. , , . 6.2.
,
220 ms
.
. -
, -
,
. , -
, , . 6.2. 1 2,
10 . ,
. - ,
, - .
- ( CoDeSys Set Debug
- Task*). ,
. . . .
,
. 6.2.
5 ,
,
1,5..,2 . , * , .
2 , . . CoDe-
Sys ( )
. 6.1 . 1 ,
, 10, 200 . . -
2 , 20, - -
, . . -
, 1, (,
800 . ) . :
;
Task configuration ;
& - 1 (PRIORITY := 10. INTERVAL :=T00msl ( -
PR6_1; , , ,
T2 (PRIORITY = 20]
. .);
PRG 2
.
J_ TTXX4,
N
l l d T C R V A L : f J i r a g p m s ]
L. PRG 3
-
, -
-.'
? < ? " . % * * ' ; , - - , ; ,
.
. 6.1. CoDeSys (PLC Browser),
106 6.
. . -
-
.
7*
6.3.
-
-
-
. -
. -
- , -
().
-
CoDeSys.
. -
.
( ) , -
. -
7.1.
- ,
, - , -
. .
CoDeSys, -
. - . -
( -) : -
. - .
, :
. - 1) ;
- 2) ;
. , , -
3) ;
(VAR_ACCESS), (MAP MMS) 4) ;
61131-5 5) 1 ( );
- (CANopen). 6) .
* (configuration) - -
. -, .
- , ,
, ( - . -
). , , - -
configuration. , *PLC confi- . 5
guration CoDeSys - .
, . -
. , . -
, -
.
1 0 8 7. 109
. - .
, , . . , -
. - -
, , (-
. , , , 6).
. - = {X, Y, S, sOt 6} ,
. .
, , . *
. , -
. .
, . - . -
- . -
. , -
- .
: .
1. , , :
. (, , - . -
); J : , ,
, . -
. ;
.
2. . L , ,
, - . -
. . - . , -
. .
.
( )
, -
, .
.
, -
7.1.1. . -
,
. , - , -
, - , -
, . . -
(X),
(Y) (S), - -
, - (state charts). -
, (- , - . 7.1.
). (s 0 e S) - -
. , , -
. . - (. 7.1). -
( X) - .
1 1 0 7. 111
* -
, - -
. . - . ,
- . ,
. , , ,
, . -
, *
. , - .
.
, -
. , , - * .
. -
, , . .
-
7.2.
.
7.2.1. SFC
, -
Unified Mo- - SFC (Sequential Function Chart)
deling Language (UML) [37]. Stateflow ? , ,
MATLAB . SFC
. SFC
[34]. - -
- .
, - SFC
LAB-Simulink [35]. .
-
. -
- 1962 . -
. -
* . -
. , , - . ,
, , .
. , - -
- .
. - (. . 7.2). , -
.
, .
- . .
CASE-, , .
,
. - . -
1 1 2 7. 113
,
, . .
-
-
. , , -
( , , ) -
. SFC -
, -
.
SFC-
. 7.2. SFC -
. -
, . - SFC .
() , . -
.
, - (. 7.3).
. - SFC , .
, - -
, I
. + ,1, -\
II
- II Step 2
. 1 Ii
SFC. -\
I
- ^
. Step3 i
-
i
848 (1988 .). 61131-3 . 7,3. SFC-,
. ( IL)
SFC -
. , SFC
, . , - . , -
* - . -
. *- . SFC -
, - . '
. SFC - SFC-.
. SFC , -
- IL, ST, LD FBD.
. , , SFC
, (). .
1 1 4 7. 115
- . , IL
. ,
, - . -
. .
.
, , , - 7.2.3. ST
.
ST (Structured Text) .
-
ST -
- , , -
. . ST -
.
- -
, , ST
SFC,
. -
.
ST :
SFC -
. ST: C:
SFC WHILE C o u n t e r o O DO while (Counter = 0)
.
Counter := Counter-1;
,
. Varl := Varl*2; Varl * - 2;
. , -
. , .
- FBD- -
. - .
, - , FBD-
. , .
,
.
7.3. (IL)
( , )
, , 7,3.1.
IGBT [36], , ,
. IL -
. .
LD- - 4 ,
. , - :
(. . 7.5).
. , :
.
, *
(), () - . . -
() . - .
LD - , .
, - . IL-:
. LD
, -
. : LD Sync (* IL*)
AND Start
S Q
7,2*5* FBD
(* *)
FBD (Function Block Diagram) -
. FBD - 2:
LD 2
(, . 7.16). LD FBD - ADD 2
( ) (- ST
, . .). ,
. - IL -
.
FBD , .
- , CoDeSys .
, . - ,
. -
.
. -
FBD . -
.
1 1 8 7. (IL) 119
7.3.2. loopl:
(* *)
IL -
(. LD Counter
). , , - ADD
, . - ST Counter
, SUB 10 10 - LE 5
.
JMP loopl
, -
. 5 -
- . JMP -
. JMPC.
IL -
IL , -
. . CoDeSya
BOOL,
INT REAL, . .
, - CoDeSys .
. , -
. IL- .
, . .
(result). , - 7.3.4.
.
- IL -
. . -
. -
. , ,
7.3.3. .
, -
IL , . -
, . :
. LD 5
JMP , -. MUL (2
JMPC SUB 1
. , . -
, ,
POU . ST (*y = 5 * ( 2 - I ) = 5*)
W
,
LD 5
:
MUL 2
LD SUB 1
ST Counter ST (*y = 5 * 2 - 1 = 9*)
7. (IL) 121
1 2 0
. -
. -
X0R N, (
JMP, RET,
CAL LD. . NOT
ADD (
7.3.5.
SUB (
' 'N* . MUL (
*N* (negation)
DIV (
. BOOL,
BYTE, WORD DWORD. MOD (
' (condition)
, . JMPC, CALC, RETC GT ( >
. - GE (
' N '
. JMPCN, CALCN, RETCN - QE ( =
. - NE < >
(
'N' ' -
. LE ( <=
LT ( <
7.3.6.
JMP CN
IL
. CAL CN
^ ^ ^ ^ ^ ^ ^ 1 | 1 III I II1I
POU -
RET CN
.
-
LD N
S R
BOOL. -
ST N .
,
, - . CoDeSys
S () -
.
, -
R ()
7.3.7.
AND N, (
OR N, ( IL . -
,^ i i
i ^-^ :
7. (IL) 123
1 2 2
L D C T D l . C V
,
S T . : (*
5 *) - (* 5
*) .
:
IL CoDeSys -
LD TRUE . , -
ST CTD_1.CD .
LD FALSE .
ST CTD_1.LOAD -
LD 10 , .
. -
ST CTD_1.PV
CoDeSys,
CAL CTD_1 .
LD CTD_1.CV (^ ; // C++),
ST , .
7.3,8. 7.3.10. IL
IL - CoDeSys
. - .
: IL .
LD TRUE . IL
SEL 3,4 Flow control CoDeSys.
ST SEL (TRUE,3,4). , ,
- ,
(. 7*4).
:
LD ivarl >j Rand iom
H^m innn{nP
ww nnLnn
C
f_|fPpR
|^fG Rand) (FB IL)
INTJTO^BOOL -RESET
=^227
ST bvarl Load =
lend1_0:
7.3.9. 0013 OS LD = 143
114 MUL 170
lit . IL 0015 DIV 251
. - 001 ST bTmp | =2 2 7
, - 0017 25i| LD 251
y. : _y^T^
. -
- , -
- . 7.4. IL
1 2 4
7. (ST) 125
< iVarl := 1;
ELSIF byLeft < 16 THEN
ELSIF < ELSEIF iVarl := 2;
THEN ELSIF byLeft < 32 THEN
iVarl := 3;
< ELSEIF 1> ;
ELSIF byLeft < 64 THEN
iVarl := 4;
ELSIF < ELSEIF n> ELSE
THEN bReset ;= TRUE;
< ELSEIF n> ; END_IF
ELSE 7.4.5. CASE
< ELSE> ;
CASE
END_IF . :
< IF> , CASE < > OF
< IF>. - <
, . <
-
. 2> , 3> :
< IF> , < 3> ;
ELSIF.
. - < 4>.. 5> :
ELSIF . ELSIF < 4> ;
.
,
ELSE, , . - ELSE
ELSE , . < ELSE>
IF
: END CASE
7. (ST) 129
1 2 8
ci := 1; .
WHILE ci <> 100 DO , .
Varl := Varl + 1; .
ci := ci + 10;
, -
.
END_WHILE
, ci 1 .
10 100. BY , -
- . -
- .
, . . :
, . : Varl : - 0;
WHILE ci < 5 + DO FOR cw := 1 10 DO
Var := Varl + 2*x*x + 1; Varl := Varl + 1;
ci : ci + 1; END_FOR
END_WHILE 10 Varl -
: 10.
-
iMax := 5+; . -
iPoly := 2** + 1; . ,
WHILE ci < iMax DO . :
Var := Varl + iPoly; Varl := 0;
ci : ci + 1; FOR ci := 10 1 BY -1 DO
END_WHILE Varl := Varl + 1;
END_FOR
7.4.7. FOR
FOR -
FOR .
. : FOR, - , , -
( CoDeSys -
FOR < > := < > ) .
< >
[BY <>] DO :
< - >
END FOR .
, ;
-
. , . , -
. 255,
1 3 2 7, (ST) 133
. - FOR := 9 DO
. FOR x := 99 DO (* [][]*)
CoDeSys ,
, -
IF . THEN EXIT; (*''
. . -
, *)
. END^FOR
. - END FOR
. FOR
, - ,
. , , -
EXIT - EXIT:
, (. bBreakY := FALSE;
EXIT).
FOR := 9 DO
, FOR x := 0 TO 99 DO
, -
. , -
. IF _ THEN bBreakY :** TRUE; EXIT; (* *)
END_FOR
7.4.8* IF bBreakY THEN EXIT;
EXIT RETURN END__FOR
EXIT, WHILE, REPEAT RETURN
FOR, . POU.
, . RETURN
. , ,
,
().
. .
FOR:
, , , 50 , -
bObtained:= FALSE; .
FOR cN := 1 TO Maxlndex DO ,
IF x - aX[cN] THEN EXIT. -
, , -
Index := cN; .
bObtained := TRUE; () ST : WHILE TRUE DO...
EXIT;
ENDJF 7.4.9.
END_FOR WHILE
IF bObtained THEN (* , Index*) REPEAT , - -
. -
EXIT -
, . : , .
1 3 4 7. (ST) 135
, F O R i c Y : = 0 T O 8 DO
. IF.
FOR icX := 0 TO 16 DO
. , IF iaPos[icY,icX] > iLevel THEN
. iBalance := iBalance + 1;
, ELSE
, -
. IF iaPos[icY,icX] < iLevel THEN
, - iBalance : iBalance - 1;
: END_IF
END_IF
ENO: BOOL := FALSE;
END_FOR
niCounter: INT := 1000;
aiVar: ARRAY[0..999] OF INT; iLevel := iLevel *2;
END_FOR
IF niCounter - 0 THEN ST- , -
ENO := TRUE; .
,
( *)
:
ELSE
FOR icY := 0 8 DO
niCounter := niCounter - 1;
FOR icX : - 0 16 DO
aiVar[niCounter] := GetlnitVal(niCounter);
IF iaPos[icY,icX] > iLevel THEN
(* *)
iBalance := iBalance + 1;
END_IF ELSE
IF iaPos[icY,icX] < iLevel THEN
7.4.10.
iBalance := iBalance - 1;
ST- END.JF
. END_IF
. END_FOR
. -
iLevel := iLevel *2;
. -
, END_FOR
. , , ST -
, - , -
. . , ST
, , ( : begin, end; : {}).
. -
. , - (WHILE .. END_WHILE, IF .. END_IF). To
: .
(. ). . -
1 3 6 7.
(LD) 137
. . 7.5 :
Lampl := (Switchl OR Switch2) AND Switch3 AND ((Switch4
. , - AND Switch6) OR Switch5);
. : (*FOR x*)9 ,
ST - LD-
, . . -
, -
NEMA. -
7.5. (LD)
LD-.
7.5.1*
LD -
.
, , -
.
, . LD
, ( -
. 7.5 Lampl). -
, -
.
V
1
Switch2 SwitchS
. -
|/| ,
. 7.5. LD , -
(), -
LD (). -
. , .
.
. (. . 7.6).
.
. -
.
(ON),
(OFF).
(/).
. 7.6.
1 3 8
7. (LD) 139
7.5.2.
7.5.3.
,
. , -
. - . .
. - LD
, - . -
. , -
LD . -
SET RESET. SET S .
(S). RESET ,
R. (S) - . ,
, . .
(R). .
, - . -
. , -
, - .
- LD-
. - .
- . 7.8 Key -
. ( ) 2 . 1
,
. (R) (S) - Key ().
- -
, . () LD-,
(S) , -
. PI
,
, . -
. 7.7. Key 2
R R1
( 2
. 7.7. . 7.8. LD
1 4 0 7- (LD) 141
. . 7.9. RETURN LD
1 - . RETURN
. (PLC_PRG), . -
. -
PI PI , RETURN
RETURN .
7.5.5. LD
, 7.9.
LD-
.
7.5.4* . . 7.11 10 -
.
.
, (labels) (jumps).
. -
. . -
. - .
.
. , Ml: Ml .
.
, Decrement
. , CTD
Q Cycle
. -
- TRUE LOAD CV
. , - 10 PV
, . Cycle:
Pulse Putee
(. 7.10). ,
.
10
Decrement
FOR ever AND ever Pulse "
FOReverANDever t>Cycte
FALSE -
0-
. 7.10.
LD - . 7.11. 10 CTD
, .
LD . - -
LD- , EN (Enable)
, - (. . 7.12). EN -
. , LD- (), .
SFC. EN.
1 4 2 7. (LD) 143
. 72. EQ, EN
-
: ||
() |N| (N) . . 7.13.
-
- , FALSE -
R_TRIG F_TRIG. . CoDeSys .
CoDeSys
7*5.6. LD CoDeSys . -
, LD- - . , MULTIPROG
. , 50 , . 7.11,
, . - . 7.14.
, -
. -
Decrement
. -
Cycle
. -
, . -
,
. , -
.
. 7.14. MULTIPROG
-
. CoDeSys - RESET -
LD- . - , -
- . -
LD
(. . 7.13). - .
, LD
. . -
LD- . LD- FBD.
, , - LD- .
1 4 4 7. (FBD) 145
EN, -
ENO (Enable Out), .
. ENO Blinker BLINK , 7.15.
1993 , .
CoDeSys . ENO Blinker
. CoDeSys
. BLINK
ENABLE OUT
.
ST. TIMELOW
ENO , - TIMEHIGH
.
. 7.15*
7.5*7. LD-
FBD -
Online , , - . LD, -
On ( ), ( .
) . CoDeSys - CoDeSys POU -
(/) - ,
- (, 7.16). , -
. - - ,
. .
. -
. PROGRAM PLC_PRG
. - AR
Step over Step i Trig1:R_TR1G;
Trlg2:F TRIG;
i1".
State NEXTSTEP . 7.18. FBD-
10-
7*7.
loooz (SFC)
7.7.1-
0- State
SFC- ,
(. . 7.19)- -
- () -
-
TRUE ENDSTEP . SFC -
, ,
().
0004 NEXT STEP
, -
.
State State -
1 , 1>50
SFC. ,
,
, . CoDeSys bDigEnd
ST (T1 > 50 bX2
. 7.19). bXl
.
*
- 7.22, Ready (IL)
. -
IL, ST, LD FBD-
, 7.207.23 -
Ready .
[bDigEnd OR bX2)AND
-
.
.
. 7.23. Ready (ST)
,
, -
, (.
. 79). . TRUE, -
, , -
. FALSE, -
TransitionReady (LD) .
7*7.3.
SFC- , -
-
. (. 7.24). -
( Init). -
,
. 7.20. Ready (LD) .
t Jj Tiansilion
* . - ' 1 * - "
TRUE
bDigEnd-
bXl-
Stop_motor
i
i
. 7.26*
- - Ready
. -
, 7.25-
- .
. , -
. 7.7*6.
, , SFC- . -
, :- .
. t
(. 7.25) Shaking - . -
, Digestion Mixing , . -
Ready. -
(jump).
7.7.5* , . 7.27, Move_Dwn -
ve_Up . ,
SFC - Stop , Move__Dwn
. - Move_Up , 2
. - , . -
. - .
.
-
, - .
. . -
, - .
.
7- (SFC) 155
1 5 4
4- stop -Ux<0
-Lx<-10 4-x>20
. 7.27.
7.7.7. SFC
- . 7*28.
, CoDeSys -
(easy mode SFC). - , , ,
, SFC-- . -
. , - , -
. , *
, -
-
.
, - ,
. - (. 7-29)- , -
, , -
. . -
- . . ''
, - (Entry) -
3 , .
. , ** (eXit) .
. , -
. .
-
CoDeSys -
.
,
.
. 7.28. . 7.29.
Digestion ().
1 5 6 7, (SFC) 157
SFC
CoDeSys - . CoDeSys -
. , Stepl, - SFC ,
_Stepl Stepl. - , .
, . .
. - 7.7.8- SFC
(_Stepl) TRUE,
( ), ,
( ). - , -
(Stepl) , . . .
TRUE &- - . -
. ( ), -
(JStepl, Stepl) 4 - ,
: (00), . -
(10), (11 10), (01). . -
- ,
, , . , -
(. 7.30). , Step4 -
, Step2. . , ,
-
, .
SFC- -
,
. , ,
NOT Step2 . 7.31.
, -
. ,
Cooling () Drying () -
air-cooling ( ).
. 7.30. , -
, -
SFC-.
.
(_Step) - N air-cooling
- - N welling
.
-
, SFC- , - IN air. cooling
, , , -
SFC. , , -
. . 7.31.
(SFC) 159
7.
1 5 8
R (Reset, . 7.35). .
-
POU
.
7.7.9. J U U U U I
, , - 7.35-
(. . 7.31). -
(qualifier) L (time Limited). -
!
.
: , , . . 7.36
N (Non-stored, . 7-32). . -
, , -
. .
J L U I L
. 7.32.
. 7.33.
. S - (Stored, . 7.34). -
. -
,
1_
.
. 7.37.
J L J l M l J L
D (Delayed, . 7.38).
-
. 7-34.
1 6 0
7- (SFC) 161
, . - ( R), -
. .
.
L, D t SD, DS SL -
TIME. : D T#tOs,
, -
-
*
. 7.41 , Init -
, _0 .
. 7.38. ,
.
DS (Delayed and Stored,
. 7,39). -
.
, -
.
(
R) . N
. 7.41.
( .
7.7.12). -
,
. :
. 7.39.
IFStepl.XTHEN
SD (Stored and time Delayed, iACount := iACount + 1; (* *)
. 7.40). - ELSE
, . -
iDCount := iDCount + 1; (* *)
_
END_IF
7.7.10.
1 SFC -
. -
, . ( . 7.42
bMoveUp) ,
. 7.40 .
1 6 2 7. (SFC) 163
, -
. -
bMoveUp AT 9CQX2.3: BOOU (**1 -
SFCActionControl. -
Q -
b MoveUp
Step2
. .
-
.
bUDPOS
CoDeSys -
, -
. 7.42. - -
SFCActionControl
, IECSFC.lib CoDeSys,
. , - . SFC -. -
, - S R -
SFC-. - SO R0-
. , - .
SFCActionControl -
. , . 7.44.
R0
7.7.11. . Q -
FALSE, -
-
.
. ,
Q = TRUE Q
, , TRUE FALSE.
, . -
- SFCActionControl
SFCActionControl (. 7.43). .
, -
SFCActonControl . -
N Q SFC.
R0 CoDeSys ,
SO
. SFCActionCont-
L rol -.
SL
IF A_3.AC.Q THEN
DS (* ?*)
SD
END IF
-,
. 7.43. SFCActionControl -
1 6 4
7. (SFC) 165
, . 7.46
_2 ,
.
RESET1 Transi
LTMR
N 2 I *_2
IN N 2
D_TMR
Q
S2-2
TRIG
R TRIO . 7.46. 2
CLK Q
SD_TMR
TON
Q
RESET1 7*7.12.
DS^TMR
TON - -
IN Q SET . BOOL
RO- RESET1
* X -
.
RE5ET1 <StepName> SFC.
SL TMR .
SL FF.Q1-
TIME .
PT ET
,
-
<StepName>.x.
. 7.44. SFCActionControl (FBI?) ,
POU. :
IF MoveCtrLMoving.X TRUE THEN ...
N .
N A2 I *_2 I
N A2 . 7.47,
. 7.45.
Step2 S
L
N T
#1
sb
L
ed
12 2
4- Step2.t
. , -* . 7.47.
. 7.45.
. X
_2 , . <ActionName>-x
. Q SFCActionControl.
1 6 6 7, (SFC) 167
7*7.13. SFC
SFC -
.
-
, .
-
-
.
LD. SFC
SU>T#1s
.
SFC
. -
. RETURN .
- SFC POU -
- POU -
.
. * . 7.48. SFC
SFC -
. , CoDeSys SFC-
. . -
. (SFCInit, SFCReset), -
. . 7.48 SFC-*
, (Idle) -
. SIS2 - 7.7.14. SFC
.
. , -
. SFC- :
, - ;
, SFC . - ;
^ - ;
;
. ,
, ;
. - .
, SFC-
-
, - ,
. .
1 6 8 7. (SFC) 169
. 7.49 SFC- .
S1 (, ) , -
. - ( T#0.75s). -
- - .
CoDeSys. . , -
, , , -
, , - .
, . . , , -
, , .
. SFC-
. , -
- -
. , .
100 , -
. CoDeSys
. -
. , -
, , , -
.
N T#0.5s
T#0.75s
T#1s760ms
S1.t>T#2s
T#2s
T#0ms
* 7.49. CoDeSys
171
8. EXPT
INI ANY_NUM
IN2 ANYJNT
- MOVE ANY
, . -
-
-- :
- .
. - MUL ADD ,
- . . (. -
. ).
, ,
ST:
, - . -
- ixl:= (ixl + ix2 + ix3) / 3;
. FBD . 8.1.
-
- ADD DIV
. -
-
bci
, 1x2
ix3
8.1. . 8.1.
8.1.1.
TIME , -
- . TIME
ST. - . TIME.
.
MOD .
OUT := INI MOD IN2 -
ST :
ADD ANY_NUM, TIME IF (IN2 = 0) THEN OUT := 0 ;
SUB
MOVE - 8.1.3.
. MOVE
ANY_BIT,
. IL -
LD,ST.
8.1.2. AND
ANY_BIT.
OR
2 :
XOR
OUT := OIIEPATOP(IN,N);
NOT
NOT .
IN N , FBD AND, OR XOR , . . -
SHL
(. -
*). NOT -
IN N
SHR BOOL ()
(. . 8.3).
IN N
ROR
IN N
ROL
. 8.2.
SHL OR
wY=16#55AA- wX=16#AA55
I
SHR
6- -
* 8.2, ( online)
. 8.3. ( )
ST :
LD , BOOL -
wX := SHL(wY,8) OR SHR(wY,8); . AND -
1 7 4 8. 175
,
OR ( ) (.
. 8-4).
OUT :- , I N D ANY
1 2 bOut :
OUT := LIMIT(Min, IN, Max)
^ OUT:-MIN{MAX(IN,Min)1Max)
1
OUT : - MUX(K , . . . . I N ( K - D )
:
OUT : - IN*.
INo, .-.,
IN^-DJIANY
2
: ANY_INT
OR (bX2 8.1.5*
AND
ST bOut
8 .4* GT >
- GE >=
EQ -
LE <=
: LT <
OUT:- SEL(G, INO, INI) OUT:- INO G - FALSE INO, INI: ANY NE
OUT:- INI G - TRUE G: BOOL
OUT :- MAX(IN0, INI) ANY
. , bOut : iXl > iX2 > iX3
1 7 6 8. 177
.
2 .
2 , LN ANY_REAL
BOOL. -
LOG ANY_REAL
. , bOUT : INI > IN2;
TRUE, IN1 IN2. ANY_REAL
, - SIN ANY_REAL
, ST ANY_REAL
COS
:
bOut := iXX > iX2 AND iXl > iX3 ANDiX2 > iX3; TAN ANY_REAL
ASIN ANY_REAL
AND . 8-6 .
ACOS ANY_REAL
GT AND
ATAN ANY_REAL
1X1- bOut
iX2
GT ABS, -
JX1 .
-
.
GT ST:
1X2 irY := EXPT(SIN(lrX),2) + EXPT(COS(lrX),2); (* 1,
1X3- *)
, -
INT : - LEN(STR)
.
STR : - MID(STRING STR, INT LEN, INT POS)
.
STR POS LEN
STR := CONCAT(STRING STR1, STRING STR2) . -
STR := STR1 + STR2 . (WHILE,
REPEAT) .
STR : - INSERT(STRING STR1, STRING STR2, INT POS)
STR1 STR2 POS
STR := REPLACE(STR1, STRING STR2, INT LEN, INT POS)
STR1, LEN POS STR2
IN BOOL Q BOOL
INT := FIND(STRING STR1, STRING STR2)
TIME TIME
STR2 STR1. STR2 ,
IN.
. -
1.
IN. -
. -
8.2. , Q 0.
8.2.1. . 8.7,
, -
, - IN
(delay, sleep),
-
Q J
. , ,
. , - - -
.
, .
. - . 8.7.
-
. . 8.8 - PULSE
- NOT
. - - IN Q
( CoDeSys -
StartTime), . . -
-, - . - . 8.8.
. = 0. -
1 8 0 8. 181
1 NOT. - , IN
, IN TRUE. IN -
. Q FALSE. , Q -
. ,
IN.
TOF TON
- 8.10.
TOF
IN BOOL Q BOOL IN
TIME ET TIME
Q
IN Q TRUE. t
IN. Q
. IN -
TRUE, . - . 8.10. TON
, Q -
, RTC
TOF
. 8.9. RTC
EN BOOL Q BOOL
IN
PDT DATE_AND_TIME CDT DATE_AND_TIME
Q , EN
- - FALSE, Q FALSE, CDT
DT#1970-01-01-00-00:00:00. EN -
PD .
. 8.9. TOF , Q = FALSE. EN FALSE, CDT
.
RTC .
TON , -
.
TON RTC -
IN BOOL BOOL
.
Q
.
TIME TIME , -
RTC.
IN - ,
. Q TRUE .
1 8 2 8. 183
! , SR Ql = TRUE
. RTC Ql = FALSE. ST :
.
^ Ql = NOT RESET1 AND (Ql OR SET).
8.2.2. SET , RESET1 .
RESET1
SR RS
.
-
. 2
. , - 8.2.3.
.
-
.
, -
SR RS. - , .
.
SR *. - RJTRIG
RS .
SR R TRIG
CLK BOOL Q BOOL
SR
R_TRIG -
SET1 BOOL Ql BOOL .
RESET BOOL :
BOOL :== FALSE. ST :
RS .
TRUE, . ,
SET BOOL Ql BOOL , -
RESET1 BOOL -
.
185
1 8 4
8.
CTD
,
.
CTD
FJTRIG CD BOOL BOOL
Q
LOAD BOOL
F TRIG
PV WORD CV WORD
CLK BOOL Q BOOL
CD ( CV) -
F_TRIG - 1. Q TRUE, -
. . CV ,
: PV LOAD = TRUE.
BOOL := FALSE. ST :
CTUD /
Q := NOT CLK AND NOT M;
M : - NOT CLK; CTUD
, F_TRIG BOOL QU BOOL
R_TRIG NOT. CD BOOL QD BOOL
R_TRIG. RESET BOOL
F_TRIG
. LOAD BOOL
PV WORD CV WORD
8.2.4.
RESET = TRUE CV
.
0. LOAD = TRUE CV
CTU PV.
CU 1. -
CD 1 ( 0).
QU TRUE, CV > - PV, FALSE.
BOOL Q BOOL 1
QD TRUE, CV = 0, FALSE.
RESET BOOL
8.3.
PV WORD CV WORD
CU ( ,
CV) 1, Q TRUE, , CoDeSys -
PV . (UTIU3), -
(RESET - TRUE) - , . ,> -
(ST) .
(CV := 0).
8. 8. 187
1 8 6
8.3.3. -
, ASCEND,
LIMITALARM - DESCEND, . -
.
, . - . TIMEBASE , -
IN HIGH - . ,
LOW . -
.
(INT). (BOOL)
TIMEBASE t#Os, -
:
.
(IN >
(RESET := TRUE)
HIGH); .
U (IN < LOW); .
IL (LOW<= IN >= UTILS -
HIGH), : INT (RAMP_INT) REAL (RAMP_REAL)
. 8.13 LIMITALARM. (. . 8.14).
1000 .
600, - 600.
HIGH
LOW \ \ \
^
_ . 8.14. RAMP
. 8.13.
LIMITALARM
8.3.5.
8.3.4. CHARCURVE (. 8.15)
- , -
RAMP - . ,
. RAMP 1 OUT 5 : ,
.
IN
CHARCURVE
ASCEND
w IN OUT
DESCEND N ERR
TIMEBASE /
RESET (BOOL)
. 8.15. CHARCURVE
1 9 0 8. 191
8.3.6.
X, < < Xi+V , - DERIVATE
(XMYj) (| +1 , |+1 ), (. 8.16).
:
J L
CHARCURVE -
(XHUYhl) (XttYt). To -
, . 8.16.
. :
,
. -
1
_1 , .
CHARCURVE , .
ARRAY [..1], POINT,
INT X . N (BYTE) - . -
, 11, ,
. - , .
IN (INT) - -
OUT (INT). .
- DERIVATIVE ,
X. ERR .
CHARCURVE: . 8.17. -
( ) .
, , -
ERR
2 :
< [0]. IN > P[N-1].X
4 N: N < 2 N > 11
OUT
.
CHARCURVE
. . 8.17.
1 9 2 8. 193
. , - DERIVATIVE 3 :
. Yo
, . : - IN REAL
Yx Yo . . Yx
. - DWORD ( )
Y2 2,03.
- RESET BOOL
(2). (4)
(tg 0,99). OUT
' CoDeSys REAL. Yo IN, -
DERIVATIVE - . (RESET = TRUE) -
: ( ) Y3, Y2 Yx
(3T 0 ). IN, OUT 0.
OUT : = (3(Y 0 - Y3)
DERIVATIVE -
.
. (ST) - 8 8- ,
- ,
. .
: DERIVATIVE
Y3 Y2, Y2 i, , -
T2 = T l , T l = TO. . -
^ -
;
p_" Sampling Tface
.
8.3.7.
PLC PRG.rSin
INTEGRAL
(.
PLC PRG.rD . 8.19).
INTEGRAL 3 :
PLC PRG.rCos
IN REAL
IrSin:=SIN[iN0.0314159);
rCos:=COS[iN*0.0314159]; DWORD ( )
v,i\
!*DER!VATIVE[IN:=rSin, :=1, RESET:= FALSE); g RESET BOOL
D := fDERIVATIVE.OUT / 0.03141
!iN := IN+1;
x t
f<*--. OUT. OVERFLOW
(BOOL)
. 8.18. DERIVATIVE OUT REAL.
1 9 4 8. 195
PLC PRG.tAC
. 8.19.
. (PFHi STJ
(RESET). rAC := 10 4*SIN0N4J.O3141591 + 2 > SIN(iN*O.0628318]:H rAC = 6.127571
. -
. - ItF IN < 200 THEN IN = 150
IN := IN+1: IN = 150
flNTEGRAl_pN:=rAC. TW:= 1 , RESET:= FALSER rAC = 6.127571
IN . :LSE
IN := 0; IN = 150
rDC := flMTtGRALOUT / 200; . ! rDC = 10
(. . 8.20). flNTEGRAMRESEl> TRUE);
;ND I F
. ST
( ) -
: OUT : - OUT + IN * . . 8.21.
RESET TRUE,
. . -
, -
. -
INTEGRAL -
( . )- ,
. , -
INTEGRAL -
.
8.3.8- -
. 8.20. INTEGRAL --
()
INTEGRAL - .
. 0 2 , -. -
10 + 4 sin x + 2 sin 2x. , ,
ST . 8.21. , ( ).
[0,2] 200 . , -
, DERIVATIVE .
INTEGRAL . (
(, )
, RAMP).' - e(t). -
1 9 6 8. 197
y(t) ,
. .
-
, , , - . . 8.23
. . ,
- * ,
. - . -
. .
.
.
--
.
, -
. - :
, e(t) ,
,
Tv - . 8.23.
. 8.22 -
PID
. - .
.
-. . --
. , -
.
- -
:
ACTUAL REAL
SET_POINT REAL
REAL
TN DWORD (msec)
TV DWORD (msec)
YJ3FFSET REAL
Y_MIN REAL
. 8,22.
1 9 8 8. 199
Y_MAX REAL . -
(YJV1AX > Y_MIN),
MANUAL BOOL -
RESET BOOL .
- ()
; TV := 0. -
() - () -
CoDeSys -
Y REAL PD.
LIMITS_ACTIVE BOOL
OVERFLOW BOOL
-
{. 8.24).
SET,POINT-
ACTUAL -
ADD
CLOCK 1 INTEGRAL DIV 1
TMDIFF
TM A
1
_ J 1
14
TM
OUT
OTHERFLOW - TN-
w 4"
- RESET
D
1 DERIVATIVE MUL
in uui
TV-
TM
RESET
KP- Y OFFSET*
. 8,24.
- CoDeSys -
-
. , Y - 3
(PRG LD SFC) 201
,
,
.
-
9. . , -
.
-
-
. - 9.2.
. - (PRG LD, SFC)
PRG ,
. , -
, FUN , FB -
. . , -
CoDeSys. 1 ,
. 9.2.
Impulse - . 9.2. LD
, , -
, Pause. , Go -
( )- - 1 . -
. . Yl Y3,
, .
(. - BOOL. -
BLINK CoDeSys). - CoDeSys (. 9.3).
2 0 2 9, (PRG LD) 203
Go
- -
.
Go
14 -
-
. 9.4.
-
2, , 4, 5.
2 -
-
SFC.
. 1. -
yl, 2, : BOOL; 2 5 -
,
Go: BOOL := TRUE;
-
. - . -
1 . S1 - - 9
S2, S3. ( ) -
. Init , Go.
yl, 2, . - . , . 9.6-
SFC- . 9.5.
2 0 4 9. (FUN LD, ST) 205
K1 9.4*
I 1 - 1
I I
2-5 -
(FUN LD, ST)
arm 2 2
- \\ -
92 . , -
U I I , . ,
6 4 2
14 , N .
, 7 * N -
L
6 5 4 4
. -
. 7 + N -
5
. -
5
,
.
6
BYTE,
, -
. 9,8.
,
9.8. .
Plunger
-- 1 ,
. -
. 9,7. LD- , ,
. ,
, : -
- - (HD) (IN).
2 9 . BOOL.
2 5 - HD .
. - :
.
FUNCTION DinLight7 : BYTE
- 10 1 2 : - VAR_INPUT
. - IN: BYTE;
LD . 9.7. , -
. - HD: BOOL;
, 6 - ENDJVAR
. VAR CONSTANT
.
LightCodes: ARRAY[0..15] OF BYTE :
16#3F, 16#06, 16#5B, 16#4F,
2 0 6 9. (FUN ST) 207
END_IF INT_TO_ECD(J:);
DinLight7_ST : - LightCodes[IN];
DinLight7 LD,
. . 9.10.
. 9.9.
,
0001
HD 0..99.
BCD . :
byNum Light := DinLightTCINT^TO^BCDtbyNum), bPulse);.
0002
HD SHR 9*5*
\\ EN
IN byNum (FUN ST)
-
0003 . -
MOVE , , -
EN . , , 18/10-
DinLightZ
Lg
i htCodes [byNum] 1,8. -
1, 44%. -
. 9.9. LD- DinLight7 2, 1 1 % .
2 0 8 9. (FUN ST) 209
, (.
, , . 9.11).
, -
.
- -
, -
. -
. -
.
2 .
FUNCTION ISMDIV INT
. 9.11. := /3, -10 +10
VAR_INPUT
iNum: INT; - 9.11 3
iDen: INT; 10 . -
END_VAR , -
. , -
VAR .
iExcess: INT;
bSign: BOOL; -2, - 1 , 0, 1, 2 .
END VAR CoDeSys.
, , ,
. ,
^ *) , . 9.12.
IF (iNum < 0) XOR (iDen < 0) THEN
bSign :=TRUE;
*
* *
ELSE
bSign := FALSE;
++
END_IF
+ +
10
(* *)
ISMDIV := ABS(iNum / iDen); (**) , 9.12. :~ /3 ( ,
iExcess : - ABS(iNum MOD iDen); + -)
(* *)
-
IF iExcess >= ABS(iDen) - iExcess THEN = f(x). -
ISMDIV := ISMDIV + 1; (*, *) .
- -
END IF
, -
. CoDeSys
I F b S i g n T H E N I S M D I V : = ^ - I S M D I V ; E N D _ I F ,
(FB ST) 211
2 1 0 9.
. (. 9.13) - &.
, , - 251,
. 170. .
250. -
.
-
X. -
. -
1 250.
. 9.13 ISMDIV.
,
.
ISMDIV
.
, .
-
.
. 9.14.
, . -
, -
.
. - .
Load .
9.6. (FB ST) , 1.
FUNCTION_BLOCK Random
, [1..250], - VARJNPUT
. Load: BOOL;
:
x0: USINT;
Xt ^^.-^/), END_VAR
& , , - VAR_OUTPUT
. , x: USINT := 1;
( ) 0. * - ENDJVAR
-
[17]. - VAR
. - RESET: R TRIG;
2 1 2 9. FIFO (FB ST) 213
END_VAR 16 .
-
ResetfCLK := Load);
,
.
I F Reset.Q T H E N x : = xO; E N D _ I F
FUNCTION_BLOCK BY_FIFO
x := x * 170 - 251 *(x * 170/251);
VAR_INPUT
200 byWR: BYTE; ( *)
. 9.14.
- bWREn: BOOL; ( *)
bRDEn: BOOL; ( *)
. END_VAR
VAR_OUTPUT
9.7. FIFO (FB ST) bReady: BOOL; ( *)
byRD: BYTE; ( *)
FIFO ,
. . (bWREn = END VAR
TRUE), (byWR) . VAR
(bRDEn = TRUE), byBuf: ARRAY[0..15J OF BYTE;
(byRD). bReady - nWRPos: WORD := 0; (* *)
. (bReady = FALSE)
byRD 0. nRDPos: WORD := 0; (* *)
END VAR
BY_FIFO
byWR bReady IF bWREn THEN (* FIFO*)
byWREn byRD byBuf[nWRPos] : - byWR;
byRDEn
,
. - 9.9. (FB ST)
.
. . (. 9.17) -
. .
-
.
9.8. FIFO (FB ST)
BY_MOVAVR
-
, byLen bReady
. , byln byOut
. -
, - . 9.17,
. - Move Average
.
BYTE#255 + BYTE#1 0, .
FI- - :
FO-. :
VAR
byBuf: ARRAY[0..255] OF BYTE;
[] , [] , N
nWRPos BYTE : 0; (* *)
.
nRDPos: BYTE := 0; (* *) , .
END VAR y[i] x[i] N - 1 -
- , -
,
.
.
.
9.18 . -
IF bWREn THEN (* FIFO*) - , -
byBuf[nWRPos] : - byWR; ,
(FB ST) 217
2 1 6 9.
, 8-
. -
WORD.
257
BYTE (255 * 257 = 65535).
,
.
3 11 :
FIFO.
N- 1
, - IF byShif t < byLen THEN
- (* *)
. - byFIFO(byWR := byln);
-
. 9.18. wSum := wSum + byln;
FIFO.
byShift :=byShift + 1;
. ,
, IF byShift = byLen THEN
.
X (* *)
V " #[/],
. . bReady := TRUE;
byFIFO.bRDEn := TRUE;
: byln -
, byLen : byOut END_IF
, bReady . - ELSE (* *)
, byFIFOfbyWR : - byln);
. wSum := wSum - byFIFO.byRD + byln;
FIFO , - -
END_IF
:
byOut : - WORD_TO_BYTE(wSum / byShift);
FUNCTION_BLOCK BYJVfOVAVR
byShift = byLen . -
VAR_INPUT FIFO -
byLen: BYTE; . .
byln: BYTE; , . -
.
END^VAR
VARJKJTPUT
bReady: BOOL := FALSE; 9.10. (FB ST)
byOut: BYTE;
END_VAR , -
. -
VAR
-
byShift: BYTE := 0; . , -
byFIFO: BY^FIFO := (bWREn : - TRUE , bRDEn : - FALSE); . -
wSum: WORD;
, .
END VAR
2 1 8 9. (FB ST) 219
99
. :
.
FUNCTION_BLOCK BYJMEDIAN
, -
VAR_INPUT
. - byLen: BYTE;
- byln: BYTE;
* - END_VAR
. 9.19. . -
VAR_OUTPUT
-
bReady: BOOL := FALSE;
, 13 . byOut: BYTE;
. END_VAR
, VAR
( ) , byShift: BYTE := 0;
.
by FIFO: BY_FIFO := >WR: In:=TRUE , bRDEn:-]
, . -
, - wSum: WORD; (* *)
, . . Med(x + ) Med(x) + Med(y). cby, (* *)
- byX, (' *)
FIFO. * - byAvr, (' *)
. - byDifference, (* .
. - *)
: byXdif: BYTE; (*. *)
wNextPos: WORD; END VAR
2 . ClrPos
: IF byShift < byLen THEN (*
*)
wNextPos := wRDPos; wSum := wSum + byln;
byFIFO(byWR :=byln);
GetNext -
: byShift := byShift + 1;
IF byShift - byLen THEN (' *)
byRD := byBuf[wNextPos]; bReady := TRUE;
IF wNextPos > 14 THEN (*NextPos *) byFIFO.bRDEn := TRUE;
wNextPos := 0; END IF
ELSE ELSE (**)
wNextPos := wNextPos + 1; byFIFO(byWR : byln);
END IF wSum := wSum byFIFO.byRD + byln;
2 2 0
9. (PRG ST) 221
2 =(;1!$52:$$9;$2:$$9;
2)
. 9.21.
.
.
, -
, . 9.22.
CoDeSys.
.
ST :
PROGRAM PLC_PRG
VAR
curvLIN: CHARCURVE;
x,y: INT; .
BP:ARRAY[O..1O] OF POINT :=
. 9.22.
(X := 0,Y := 220),(X := 10,Y := 220),
(X := 160,Y := 112),(X := 300,Y := 68),
(X := 480,Y := 39),(X := 700,Y := 22), . 9.23. X ,
2 2 4 9. - (FB IL) 225
. 9.24
byRate 30, 50 70.
3D
50 1
70 LJ ~LJ
. 9.24. -
. SINT TIME. -
100
byRate, 100 - byRate.
FUNCTION_BLOCK PWMTP
. 9.23.
VARJNPUT
5 ( := + 5), - byRate: USINT;
(. 9.21), END_VAR
- VAR_OUTPUT
. bOUT: BOOL;
, ENDJVAR
, , VAR
. Excel -
PERIOD: TP;
- (. CHARCURVE)
- tPulse: TIME;
10 [01023], tPause: TIME;
ENDJVAR
SINT_TO_TIME
ST PERIOD.PT
JMP oscillation
pause:
LD FALSE (**)
ST bOUT
LD 100
SUB byRate
SINT_TO_TIME
ST PERIOD.PT
oscillation:
CAL PERIOD(IN := FALSE) (* *)
CAL PERIOD(IN := TRUE) (* *) . 9.25. CoDeSys
9.13. ( 5 ).
4 , .
(FB SFC)
ReversibleEngine
. 9.25 - SFC- (. 9.26). -
- ST.
. *
: FUNCTION_BLOCK ReversibleEngine
Pwr , ; VAR INPUT
Rew - , Direction, On: BOOL;
tStart: TIME: :
(* *)
. t#5s;
Pwr; tBrake: TIME := t#5s; (* *)
Start . ENDJVAR
. ; VAR_OUTPUT
Break - - Power, (*)
, -
. - Reversal, (**)
. - Starting* (*)
. Braking: BOOL; (**)
-, ENDJVAR
. , -
, (On) VAR
(Direction). Tm: TON; (* *)
. tStart tBrake END VAR
2 2 8 9* (FB SFC) 229
Stop ENTRY_ACTION
Tm(IN : = FALSE, PT:= tStart); (* *)
On Tm.IN := TRUE;
Run Starting := TRUE;
Power := TRUE;
Tm.Q OR NOT On OR Reversal <> Direction Reversal := Direction;
END ACTION
, -
(Stop) , , ,
On. .
TRANSITION FROM Stop TO Run:= On . -
END_TRANSITION , , -
.
STEP Motion: (**)
, (Run), - END_STEP
tStart.
, - ENTRY_ACTION
. , : Starting := FALSE;
TRANSITION FROM Run TO Motion:- END_ACTION
Tm.Q OR NOT On OR Reversal <> Direction
END_TRANSITION
, :
, TRANSITION FROM Braking TO Stop:=
. Tm.Q
:
ENDJTRANSITION
STEP Run: (**)
,
Tm; . -
END STEP , , . -
2 3 0 9. (IL, ST, FBD, LD) 231
Braking : = TRUE;
END_ACTION
EXIT_ACTION
Braking := FALSE;
(:- FALSE.PT- tStwt);
mJN :- TRUE; END_ACTION
tarting ? TRUE;
owtt:- TRUE; -
eversal := Direction; .
,
, .
- -Tm.Q .
SFC-
taitmg :- FALSE; . CoDeSys -
(END_ACTION,
EXIT_ACTION). , -
- -HOT On t[>
-
* FALSEST tBnke); ( 9.27).
-TRUE;
ower : = FALSE;
Bralan - TRUE;
- -Tm-Q 9.14.
(IL, ST, FBD, LD)
? -
. .
I -
.
. 9.27.
ReversibleEngine
() ST- IL- -
. , -
.
IL, .
, .
, , .
STEP Braking: (**) SFC.
Tm; , -
END_STEP .
SFC * .
ENTRY_ACTION . SFC -
Tm(IN := FALSE, PT := tBrake); . -
Tm.IN := TRUE; , -
Power : - FALSE; .
2 3 2 9. (IL, ST, FBD, LD) 233
, ( ST)
. - , :
.
VAR
-
state := 0; (* *)
. ENDJVAR
, CASE state OF
-. - 0: ;
. -
, , ,
. (return) ;
- ;
. -
. - 1: 2;
SFC.
CoDeSys ( 2.2) - 2: ;
-
: 8- Intel 8051 16-
Infineon 16x. ( ) , state = '
', ;
. ,
-
. ,
;
;
9.14.1.
(ST, IL)
ELSE
, -
;
(, ), -
. - state := 0;
, - ;
. , , END_CASE
. - state 1; (,
, . - *)
( SFC) - ,
. - Reversible Engine ST. ,
,
. - * .
, -
. State . -
2 3 4 9* : 1 (IL, ST, FBD, LD) 235
CASE State OF -
(*STEPRun*) . State : 0;
Tm; ,
. -
IF Tm.Q - FALSE AND On AND Reversal = Direction -
THEN RETURN; END_IF . -
(EXIT Run*) SFC, -
Starting := FALSE; . CoDeSys.
Reversible Engine ST
2: (* STEP Motion*) IL. -
I F On - TRUE A N D Reversal = Direction T H E N .
RETURN; END I F ( State*)
LD State
EQ 1
(*EXIT Motion*) JMPC easel
Power := FALSE; LD State
Braking := TRUE; EQ 2
Tm(IN := FALSE, PT := tBrake); JMPC case2
Tm.IN := TRUE; LD State
3: (*5: STEP Braking*) EQ 3
Tm; JMPC case3
IF NOT Tm.Q THEN RETURN; END_IF LD 0 (*Ha *)
RETC
(EXIT Run*)
LD FALSE
ST Starting (*Starting := FALSE;*)
JMP NextState
case 2: (*STEP Motion*)
LD On (*IF On = T R U E A N D Reversal
Direction T H E N RETURN*)
AND ( Reversal . 9.28. Reversible Engine
EQ Direction
RETC IL ST
(*EXIT Motion*)
. ( LD TRUE
CAL Tm(IN := FALSE, PT := tBrake) . -
LD TRUE : Starting = Power = Tm.IN = TRUE. B ST
ST Tm.IN .)
ST Braking LD FBD -
LD . FALSE , , -
ST Power .
JMP NextState
9.14.2.
case3: (*STEP Braking*) (FBD, LD, ST, IL)
CAL Tm
FBD- -
LDN Tm.Q -
RETC , .
2 3 8 9. (IL, ST, FBD, LD) 239
- -
. -
. - 1.
: 3 . *
, .
VAR
4 (-
TmRun: TON; ) . AND
TmBrake: TOF; .
END VAR .
-
2 : TmRun .
TmBrake (. 9.29). FBD- LD.
LD-
0001 ,
EQ AND (. 9.30). , , -
Direction Power .
Reversal On
BraWng 0001
On Braking Direction Reversal Power
0002 I \A \ I 1 \
Direction Reversal
0002 l/H
Reversal On Direction Reversal
H I-
0003 TmRun
T0N
0003 Power Power Starting
TmRun 1
tStart- PT EH-
TmBrake
Starting Power Braking
- Power
0004
TmBrake . 9.30. Reversible Engine LD
AND
Braking FBD- ,
ST.
Power
Power :" (Direction = Reversal) AND On AND NOT Braking;
. 9.29. Reversible Engine FBD Reversal :~ On AND Direction;
TmRun(IN : - Power, PT := tStart);
Starting : - NOT TmRun.Q AND Power;
Power. , (Rever-
sal = Direction), (On) - TmBrake(IN := Power, PT := tBrake);
(NOT Braking). Braking : - TmBrake.Q AND NOT Power;
2 4 0
9. (IL t ST t FBD, LD) 241
IL : 9.14.3*
LD Direction , 16-
Reversal 8-, -
EQ
.
AND On , . .
ANDN Braking .
ST Power -
. -
LD On
AND Direction . 8051 16-,
ST Reversal -
.
CAL TmRun(IN : Power, PT := tStart)
LD TmRun.Q
NOT
AND Power
ST Starting
CAL TmBrake(IN = Power, PT := tBrake)
LD TmBrake.Q
ANDN Power
ST Braking
15. . ., . . -
. .: . 1987. 320 .
16. ., .
. .: , 2001 616 .
17. . . . .: , 1968.
1. Lewis R.W., Programming industrial control systems 400 .
using IEC 1131-3/ Revised ed. The Institution of ElectricalEngine- 18. ., ., .
ers. London,United Kingdom, 1998. . .: , 2001. 575 .
2. John Karl-Heinz, Tiegelkamp M. IEC 61131-3: Program- . . ., . .
ming Industrial Automation Systems. Concepts and Programming . : , 1982 ., 512 .
Languages, Requirements for Programming Systems, Decision-Ma-
king Tools. Springer-Verlag Berlin Heidelberg, 2001. 20. Steven W. Smith, The Scientist and Engineer's Guide to
3. Monari P.D., Bonfatti F., Sampieri U., IEC 1131-3: Pro- Digital Signal Processing., California Technical Publishing, 1997.
gramming methodology. Software engineering methods for industri- 21. Structuring Program Development with IEC 61131-3. Eel-
al automated systems., CJ International, France, 1999. co van der Wai, Managing Director PLCopen (www.plcopen.org).
4. User Manual for PLC Programming with CoDeSys 2.2, 22.MULTIPROG wt Manual, English release 2.0, 1998,
3S Smart Software Solutions GmbH.Kempten, 2002. Klopper und Wiege Software GmbH.
5. IEC DIS 1131-3 Programable Controllers Programming 23.ProConOS Manual, English release 3.0, 1998, Klopper und
Languages, Draft International Standard, International Electrotech- Wiege Software GmbH.
nical Commission. February, 14. 1992. 24. Bernd Pelzer, Realtime Extensions for Windows NT: Pro-
6. . , ., . . ConOS NT Realtime Software PLC on Windows NT. Klopper und
. .: , 1986. Wiege Software GmbH.
7. . : - 25.0penPCS Programming System Short Introduction, Versi-
. .: , 1992. on 4.0 English, 2000, Infoteam Software GmbH.
8. 26. SoftControl V2.3 PLC Programming System, Help, Sof-
(). . : ting GmbH.
.
27.ISAGRAF V3.3, User's guide, 1999, CJ International.
9. . . . .: . 2002.
224 . 28. iCon-L Open Programming System for Industry Automati-
10. . . . - on V3.0, Help, MPS&AT / ProSign GmbH.
. .: , 2000. 29. Programming with STEP 7 V5.0, Release 02, 1999, Sie-
780 . mens AG.
11. . . . 30. Working with STEP 7 V5.0, Release 02, 1999, Siemens
. .: . 2001. 1296 . AG.
12. . . - 31. G. Frey, L. Litz (Eds.). Formal Methods in PLC Program-
. .: -. 2002. 400 . ming IEEE SMC 2000, Nashville, TN, 8-11 October 2000.
13. . . .: 32. Manfred Werner. Version 2.3 von CoDeSys: Offenes Kom-
, 2000. 462 . lettsystem, SPS-Magazin, Ausgabe 10/2002.
14. ., . Borland C++ 33. Roland Wagner. Ein Programmiertool fur die ganze Anla-
Windows. .: , 1993. ge, A&D NEWSLETTER 11/2002.
2 4 4
MMI
-
Man Machine Interface
Modifier
. Network
PC
Personal Computer
Action PID
Proportional Integral Derivative -
BCD -
binary coded decimal
ii PLC
Coil
i Programmable Logic Controller
-
Contact
POU
Current Result, CR, accumulator, Program Organization Unit
accu
m* Program
FALSE ,
SCADA
FB Supervisory Control And Data Ac-
-
Function block quision System
FBD SFC
Function Block Diagram Sequential Function Chart
Feedback ST
Structured Text
Function
Task
IEC
International Electrotechnical Com- TRUE ,
1 mission JXUMWUH |
Workbench
1I L
I
1 Instruction List
1
Instantiation
I
Jump
: - -
Kernel 1
j
1 Label, mark
|LD
I Ladder Diagram
249
3.2.4. . 41
3.2.5. . 44
3.3. CoDeSys . 46
3.4. CoDeSys . 48
4.
3
. 50
4.1. . 50
1 0
4.2. . 51
1. 1 1
4.2.1. - . 51
1.1. 1 1
4.2.2. . 53
1.2. - 1 4
4.2.3. . 54
4.2.4. . 54
1.3.
4.2.5. . 55
1 5
4.2.5. . 56
1.4. . .- 1 6
. 57
4.2.6.
1.5. 1 7
4.3. . . . . 57
1.6. 2 0
4.3.1. . 57
1.7. 2 0
4.3.2. . 59
1.8. 2 1
4.3.3. . 61
1.9. . . 2 3
4.3.4. . 62
1.10. . 2 5
4.3.5. . 62
1.10.1. 4.3.6. CoDeSys . . 63
2 7
4.4. . 64
1.10.2. 2 7
4.4.1. . 64
2. 61131 2 8
4.4.2. . 65
2.1. 2 8
4.4.3. . . . . . . . . . 66
2.2. 2 9
4.4.4. . 68
2.3. 4.4.5. . 69
3 0 4.5. . 70
2.4. . . . 3 1 4.6. . 74
4.7. BCD . 77
3. . . . 3 2