Вы находитесь на странице: 1из 127

. .

. . . .


-
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

, 3S Smart Software Solutions http://www.3s-software.com


, - CoDeSys
. 61131-3.
, - CoDeSys. -
, . . - ,
. . ,
- , * Co-
. - DeSys ,
, .
, - !
^ ISaGRAF
.
- CJ International http://www.isagraf.com/
. , - ISaGRAF -
, - TIC (Target Independent Code),
. , - ,
, . -
, . . TIC-, ISaG-
, . - RAF .

, - MULTfPROG wt
(-
KlbpperUnd Wiege Software GmbH http: / /www.kw-software.de /
) . !
-,' , -
^ -
(Concept Schneider Electric, S7 Siemens). . -
3 4
3. 35
"i
ProConOS (Programmable Control- .
ler Operating System), - , , -
. MULTIPROG , (- . 3-8).
80- . XX . /. - (ANSI-C) *
MULTIPROG Windows, - , .
wt (windows technology) . .
-
OpenPCS ,
Infoteam Software GmbH http: //vyww.infoteam.de/ *. -
OpenPCS , -
IL . - . -
, -, ^ .
Windows ,
. - I .

-
1
1 . -
. SmartSIM - , Windows-.
. -

SoftCONTBOL
Softing GmbH http: / /www.softing.com/ , , ,
Softing .
. , SoftCONTROL -
, - , -
. .
. , -
-
. , SoftCONTROL -
3.2.
,
.
, . -
- . -
-. .
, -
iCon-L .
ProSign (Process Design) GmbH http://www.pro-sign.de/ -
, iCon-L 1131 , ^
. . -
, . , - , -
(SFC) . - , .
iCon-L - .
3 6
3.

-
.

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);

- The IEC Piogiamtning System

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

. 3,5. FBD infoteam


(MULTIPROG) BalRegter
LtReglei SIHT
power supply I process! MoctetlTyp BOO!

power off ModeflTyp


Decrement
Pul8e"=
cycles
SmartSIM 93668

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

UDINT 0 ' 232-1 4


:
i l l

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

i : - REAL_TO_INT(2.7); ( *) : USINT := 255;


i := TRUNC(2.7); ( 2*)
: - + 1; ( 0*)
t := STRING_TO_TIME('T#216ms'); (* #6ms*)
- := + 1; ( 1 )
TRUNC := - 2; ( 255*)
REAL_TO_INT, -
. -
, : ;5 : + 1 = 0. -
, 1 : 0 - 1=.
(, ). , ^
<..>_TO_STRING PRINT, pacni . , -
. ; ( + ) - b = , + b
. ( - ) - be
:
,
a, b, c:USINT;
. -
. - := 100;
:= 50;
. :=
xl : = ( a - b ) * ; ( 150*)
4.5. 2 : - * - b * ; ( 150*)
() + ( - ) *> ( + ) -
.
. ,
, , ,
. , -
! :
. ]
(usint#10O 4- usint#50) * usint#3 - 194;
. ,:
-i usint#100 * usint#3 + usint#5O * usint#3 = 194.
. ]
(a + b)c = ac + be ,
, ,.
, , 45Q, 194. -
, -]
-
.
, .
, -!
' 1, -] -
, . ] , . -
, . ^ , -
, .] .
: .
, -
7 2 4. 73

- - ,
( 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 ,

127 011 x :== a/b + c/d; (* *)


128 -128 1<_000 x l := (a * d + * b)/(b * d); (* 1*)
* ... 4*. -
-2 .
2 5 4 1_1110
.
2 5 5
_ _

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 \ ''); . -
: :

stHello := (' % 82:=*'); := MUX(x_n, x l , 2, , 4, 5);


, - ,
(STR1 := '- .
';) :
stHello := CONCAT(STR1:-STR1, STR2:=^eHb'); 5.2.4.
.

: -
, . ,
. -, -

- * --
- , -
. 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
.

5.3.2. . 5.7. (FBD)


ST ST -
. - :
.
, , : ctuTimeMeterQ; (* *)
9 4
5. (POU) 95

- 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;

7.2.2. IL IF Varl > 100 THEN if(Varl > 100)


IL (Instruction list) . Varl := 1;
Var2 := Var2 Varl - 1;
. ENDJF ++Var2;
. IL END WHILE
}/*while*/
. IL,
. ST
, -* -
IL. SFC. ,
[8]- .
IL -
STEP Siemens, IL -
7.2.4. LD
, -
, . , LD (Ladder Diagram) -
IL , - - () , -
. . -
- IL - . 70- . XX .
, , - -
. IL , . -
, , - .
1 1 6 7. (IL) 117

. , -
. , .
- 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

C T D _ 1 ( C D = TRUE, LOAD :- FALSE, PV := 10) .


, . -
C A L

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

7.4. (ST) (<, >, <=, >=); (=); (<>); -


AND, XOR OR.
7*4.1. .
:
ST- .
X :- 2 + 2 * 2; (* - 6*)
:=, . X :- (2 + 2) * 2; (* = 8*)
*;.
-
, :
, , .
iVarl := 1 + iVar2 / ABS(iVar2); , .
-
ST -
, : +, -, *, . , ,
, . .

. - iVarl: SINT;
. , siVar2: SINT : - 120;
, : siVarl : 120 - siVar2 + 20; (*120- 120 = 0, 0 + 20 = 20*)
iVarl := 1 + (* *) iVar2 / ABS(iVar2); (* siVarl : : 120 - (aiVar2 + 20); (*120 + 20 = -116, 120 +116 = -20*)
0 *)
.
7.4.3.
. ; .
. - . -
. *;, .
,
. , , - . , -
. , -
: POU.
POU . ,
bAlarm := bylnpl bylnp2 AND bylnpl + bylnp2 <> 0 OR IF, -
b Alarm 2; THEN:

7.4.2. IF = Threshold THEN


- (* *)
. - ELSIF x > Threshold THEN
, M a r k e r := bMarker - 1; (**)
ELSE
: ; ; ; -
(-); NOT ; bMarker := bMarker + 1; (* *)
MOD; (+, -); END_IF; (*; - *)
7. (ST) 127
26

7.4.4. IF IF bReset THEN


iVarl := 1;
iVar2 := 0;
, - ENDJF
. IF () -
: IF
ELSIF , -
IF < IF> :
THEN IF bReset THEN

< 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

, 7.4.6. WHILE REPEAT


. - WHILE REPEAT -
(< 1>: < 1> ;). , . -
, .
, WHILE:
(< 2> , < 3> : < 3> ;).
(<- WHILE < > DO
4>..< 5> : < 4> ;). < >
ELSE . - END_WHILE
(<
ELSE> ;). WHILE .
,
: .
CASE byLeft/2 OF REPEAT:
0,127: REPEAT
bReset := TRUE; < >
Varl := 0; UNTIL < >
16..24:
END_REPEAT
Varl : - 1;
ELSE REPEAT
Varl := 2; .
, .
END_CASE
CASE - :
, . ci : 64;
, . ,
WHILE ci > 1 DO
:
Varl := Varl + 1;
CASE byLeft OF ci := ci/2;
20: Varl 0;
END_WHILE
16..24: Varl 1;
END CASE WHILE REPEAT -
, -
, CASE IF, -
, -
. CASE -
. , .
, .
-
, . . -
.
. -
:
1 3 0 7. (ST) 131

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

SwftcM Switch3 SwitcM Swilch6


-i -
\ \

Switch2 SwitchS
. -
|/| ,
. 7.5. LD , -
(), -
LD (). -
. , .
.
. (. . 7.6).
.

. -
.
(ON),
(OFF).
(/).
. 7.6.
1 3 8
7. (LD) 139

, - S_R1 , a R_R1 R1, -


(/). , R1 S R 1 .
- SET/RESET-
. , LD- .

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

1 |EN y2 PROGRAMPLC PR6


2-
ADD

1
EO_counter2 So
tp2
2
CU C TU Q
11
=ALSE-RESET C V -Counter2
PV
1
' ,

. 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;

7.6. Trig 1 Tlmeri


(FBD) OR TOF
Observer^
li# U V VCLK
W Q IN o-
QW -Warning
Trig2 T#10s-
7.6. POU F_TRIG I
Observer- CLK Q|Ml
FBD
. POU
, . - Tlmer2
POU . - TON
| Warning-I N Q

, . -
-
, . - . 7.16. FBD
1 4 6 7. (FBD) 147

7.6*2. FBD. CoDeSys ,


.
POU FBD . - ,
^ . .
, . , FOR, -
- -
. . ,
. - .
. - -
PBD . - .
- , ,
. ?
FBD CoDeSys .
7-6,3. FBD
FBD- , . - .
, , .
. -
.
. ,
. - 7.6.6. ,
-
. FBD- -
, ,

.
.
- , , , -
. FBD CoDeSys - .
. -
.
7.6.4. .
.
PBD -
, . - , .
, -
- CoDeSys . FBD -
Negate. . 7.16 Q - , . 7.17.
TOF . 7.17 . -
Warning.
TRUE.
RETURN FBD
7.6.5. , . . -
(connectors) . -
, .
. - .
1 4 8 7. (SFC) 149

0001 MOD LT AND


(Var1+Var2)/2
<>2

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. ,
,

0005 END STEP . -


,
Ready
-

. - 7 1 9
TRUE .

. 7.17. FBD 7.7-2.


-
7.6.7. ST FBD , (. . 7.19).
CoDeSys ST - ,
. FBD - , .
. - :
- 1) ( );
. 2) TRUE.
1 5 0 7. (SFC) 151


, . 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-

. 7.21. Ready (FBD) . 7.24. Reset


(SFC) 153
1 5 2 7,
(. 7.26) Stop
7.7.4. . Move_Dwn MoveJUp -
SFC (. 7.25). , Stop FALSE.
-
.
. -- Stop Down Up
, .
Mova_Up

Digestion x<-10 - - x > 20

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

Move Dwn MoveJJp

-Lx<-10 4-x>20

MoveJJp Move Dwn


Stop_nxrtor
Digestion
i

. 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.

. - (Pulse, . 7.33). . 7.36.


.
SL (Stored and
time Limited, . 7.37). -
J ,
. -

R.

. 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
. -
. , -
, , , -
.

RunningUghts {PLC_PRG.nz} (FB SFC)


SFC En able Limit ="RUE
SFCError =FRUE
SFCErrorStep = '
SFCCurrentStep ='ST
SFCErrorAnalyzation = 'SI > T#2000ms
Go

N T#0.5s
T#0.75s
T#1s760ms

S1.t>T#2s

T#2s
T#0ms

* 7.49. CoDeSys
171

MOD MOD ANY_INT

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

ANY_NUM, TIME ELSE OUT : - INI - (IN1/IN2) * IN2 ;


END IF
MUL *
ANY_NUM, TIME
IN2
OUT : - EXPT(IN1/IN2) OUT - IN1 .
DIV ANY_NUM, TIME
I
IN2 .
1 7 2 8* 173

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

. 8.4. (IL) CoDeSys MAX MIN -


, ,
ST MUX (.
: . 8.5),
tout := (bXl AND bX2) OR (bXl AND ) OR (bX2 AND LIMIT MUX
); 1 Satisfaction
IL : Drinking
LD bXl 3 *
'1
AND bX2 "1
OR (bXl
AND . 8.5.

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- *)

. 8.6, iXl > iX2 > iX3 (FBD) 8.1.7.



.
INT :=LEN(STR)
8*1.6.
- STR : - LEFT(STRING STR, INT SIZE)
.
STR SIZE
STR := RIGHT(STRING STR, INT SIZE)

STR SIZE
ABS ANY_NUM
STR := DELETE(STRING STR.INT LEN.INT POS)
SQRT ANY_REAL STR, LEN POS
1 7 8 8. 179

, -
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 :

SR Ql = TRUE Q := CLK AND NOT M;


Ql = FALSE, ST - : - CLK;
:
Q TRUE,
Q1 - (NOT RESET AND Ql) OR SET1, CLK FALSE, -
TRUE. -
SET1 , RESET . FALSE.
SET1 - CLK .
.
CLK TRUE,
RS Q . -
, CLK
TRUE, R_TRIG -

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.1. UNPACKER(B:=In, B0=>B7, B1=>B6, 2=>5, =>4,


4=>, 5=>2, 6=>1, 7=>0);
-
Out : - (, 1, 2, , 4, 5, 6, 7);
.
EXTRACT 8.3.2.
. EXTRACT BOOL 2 - HYSTERESIS (. . 8.11)
: DWORD X BYTE N. TRUE, N , .
X 1, FALSE.
0.
PUTBIT
. DWORD 2 :
DWORD X, BYTE N BOOL . X -
1 N, TRUE. -
0.
. 8.11. HYSTERESIS
PACK
IN HIGH, OUT
.
FALSE. IN
PACK , 1, ..., 7
LOW, OUT TRUE. LOW HIGH
BOOL. BYTE -
HYSTERESIS .
.
ST :
UNPACK IF IN < LOW THEN
. -
OUT := TRUE;
PUTBIT BOOL
BYTE, PACK - END IF
. IF IN > HIGH THEN
Turn, OUT := FALSE;
:
END IF
FUNCTION_BLOCK Turn
IN, LOW OUT INT, OUT
VAR_INPUT
BOOL.
In: BYTE;
HYSTERESIS -
ENDJVAR . 8.12.
VAR_OUTPUT
Out: BYTE;
END_VAR
VAR
B0,Bl,B2,B3,B4,B5,B6,B7: BOOL;
UNPACKER: UNPACK;
END VAR . 8.12. HYSTERESIS
1 8 8 8. 189

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.

9.1. (PRG LD) 1


Go 1
* IN
- 9.1.
LD . 2
Go 2
IN Q <}
Impus
le T#2s-

Go
IN Q
T#3s-
Pause XI 1

2 1 2

2
, 9.1.

Impulse - . 9.2. LD
, , -
, Pause. , Go -
( )- - 1 . -
. . Yl Y3,
, .
(. - BOOL. -
BLINK CoDeSys). - CoDeSys (. 9.3).
2 0 2 9, (PRG LD) 203

Go

PLC PRCxi - S1.t>T#1t


|S2 ha
S2.t > T#1s
PLC PRG-
[S3 HN
PLC PRG.yi S3.t > T#1s
PLC PRG-y2
Intt
PRG.y3 . 9.5. SFC

. 9.. 9.3. (PRG LD)


- -
- ,
. , - .
- . 9.6 1 38

- -

.
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

16#66, 16#6D, 16#7D, 16#07, . 9.10


16#7F, 16#6F, 16#77, 16#7C, - Indicator
16#39, 16#5, 16#79, 16#71; . -
-
ENDJVAR byLightl byLight2. , , -
(. - 9.8)
LightCodes. - PLC_PRG.byIightl.l. *+ TRUE -
0 F, - bAddButton,
. - .

LightCodes. , -
. -
- 16S4E
4 .
byUghtl - \6ffI9
ST : byUght2 - 66
bAddButton
IF HD THEN
IN := SHR (IN,4);
ELSE ylightl:- Dinlight7Cx, FALSE);
IN := IN AND 16#0F; bylighta ~ Dinlight7(x,TRUK);

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(x, 3),


- 1 0 +10

. 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.15. IF nWRPos > 14 THEN (WRPos *)


FIFO nWRPos := 0;
ELSE
. 9.16. -
nWRPos := nWRPos + 1;
FIFO
. - END IF
. - END IF
, - IF nWRPos - nRDPos THEN (FIFO ?*)
- bReady :- FALSE;

byRD := 0;
.
, ELSE
, . 9.16. bReady := TRUE;
5 . FIFO
2 1 4 9. (FB ST) 215

IF bRDEn THEN (* FIFO*) nWRPos := nWRPos + 1;


byRD := byBuf[nRDPos]; END_IF

IF nRDPos > 14 THEN (*RDPos *) IF bRDEn THEN (* FIFO*)


nRDPos := 0; byRD := byBuf[nRDPos];
ELSE nRDPos := nRDPos + 1;
nRDPos := nRDPos + 1; END_IF
END_IF ,
ENDJF bWREn bRDEn, -
END_IF .

,
. - 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

byAvr : = WORD_TO_BYTE(wSum / byLen); 9.11. (PRG ST)


-
byFIFO.ClrPos; (* *) CHARCURVE.
byDifference := 255; . -
220 .
FOR cby := 1 TO byLen DO . -
byFIFO.GetNext;
. ,
byX := byFIFO.byRD;
5%.
byXdif := MAX(byX,byAvr) - MIN(byX,byAvr);
-
IF byXdif < byDifference THEN . ,
byDifference : - byXdif; . CoDeSys -
byOut := byX; . , -
.
END_IF
-
END_F0R
-
END_IF [11] -
[12]. -
, . Microsoft Excel.
byLen . , -
- Excel (, -
byXdif. - ). . 9.21 -
. .
. ().
, - :
. - ,
, - ;
,
(5 10) -
. , -
. ,
, -
Excel

;
. -
-
( . [13], [20]). - . -
. 9.20. , ;
- -
8
. Y (5%);
100 ,
, -
. 9.20. . . -
2 2 2 9. (PRG ST) 223

(X := 960.Y := 8),(X : - 1023,Y := 0);


END_VAR

IF x > 999 THEN


x := 0;
ELSE
x := x+5;
END_IF
curvLIN(IN := x, N := 8, P := BP, OUT - > y);

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

9.12, - CAL PERIOD


(FB IL) LD PERIOD.Q
EQ FALSE '
- () - RETCN (* !
, .
LD bOUT (*
. EQ TRUE
-. JMPC pause
, , , ,
, . . LD TRUE (**)
ST bOUT
100 . -
byRate 0 100%. LD byRate
2 2 6 9. (FB SFC)

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

NOT On ORRevereal <> Direction


Braking , (Motion), ,
.
T\_ IX :
Tm.Q
Stop TRANSITION FROM Motion TO Braking:=
. 9.26. SFC- NOT On OR Reversal <> Direction
ENDJTRANSITION

, -
(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

. State - Power : TRUE;


. , Reversal : Direction;
,
ENDCASE
. ST -
SFC- . State : = S t a t e + 1 ;

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 *)

(*EXIT Braking*) ST State


Braking := FALSE;
ELSE caseO: (STEP Stop*)
LDN On (*IF NOT On THEN RETURN*)
State := 0; (*Ha *) J
RETC
(STEP Stop*) (EXIT Stop*)
IF NOT On THEN RETURN; END_IF Tm(IN : - FALSE, PT := tStart)
CAL
(*EXIT Stop*) LD Direction
Tm(IN := FALSE, PT:= tStart); ST Reversal (*Reversal:= Direction;*)
Tm.IN := TRUE; LD TRUE
Starting := TRUE; ST Starting (*Starting := TRUE;*)
2 3 6
9. (IL, ST, FBD, LD) 237

ST Power (*Power := TRUE;*) (*EXIT Braking*)


ST Tm.IN (Tm.IN := TRUE*) ST Braking (*A=FALSE*)
JMP NextState
easel: (*STEP Run*) NextState: (*State := State +1 ;*)
CAL Tm LD State
LDN Tm.Q (*IF Tm.Q = FALSE A N D On A N D ADD 1
Reversal = Direction T H E N R E T U R N * ) ST State
AND On . 9.28
AND ( Reversal Reversible Engine SFC--
EQ Direction ST- IL-.

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

(. 9-31) - . 9.32. Reversible Engine


, -
. I
CoDeSys , -


.

(. 9.32).

* 9.31. Reversible Engine


243

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

34. . . MATLAB 6/6.1/6.5, Simulink 4/5.


. . .: -.
2002. 768 .
35. . . Simulink 4. .
.: . 2002. 528 . -
36. . ., . ., . ., -
. . . .:
-. 2002. 512 . http://www.iec.ch/
37. . UML 24 PLC Open
. : . 2002. 352 .
http://www.plcopen.org/
38. Konrad Etschberger, Contloller Area Network. Basics,
3S Smart Software Solutions
Protocols, Chips and Applications, IXXAT Press. Germany, 2001.
http://www.3s-software.com

http://www.prolog.smolensk.ru/
Frenzel + Berg Elektronik
http://www.frenzel-berg.de/
CJ International
http://www.isagraf.com/
Klopper und Wiege Software GmbH
http://www.kw-software.de/
Infoteam Software GmbH
http://www.infoteam.de/
Softing GmbH
http://www.softing.com/
ProSign (Process Design) GmbH
http://www.pro-sign.de/

http://www.edge,org/3rd_cuUure/bios/simonyi.html
( )
http://www-informatik.uni-hamburg.de/TGI/
mitarbeiter/profs/petri_eng,html

h t tp:// www. daimLaau.dk/PetriNets
[2]
http://www.fen-net.de/karlheinzJohn/Bookview.htm
[20]
http://www.dspguide.com
247

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

3.1. 61131-3 3 2 5. (POU) . 78


3.2. . 3 5 5.1. . 78
3.2.1. 3 6 5.1.1. POU . 79
3.2.2. 3 6 5.1.2. . . . . . 80
3.2.3. 3 7 5.1.3. . . . . . 81
2 5 0 251

5.2. . 82 7.2.4. LD 115


5.2.1- 7.2.5. FBD 116
. . . . . 83 7.3. (IL) 117
5.2.2. . 84 7.3.1. 117
5.2.3. . . 84 7.3.2. 118
5.2.4. . 85 7.3.3. 118
5.2.5. . 86 I > * 4 , ^/ * , , . - . . . . . 119
5.2.6. . 86 7.3.5. 120
5.2.7. . . . - . 88 7.3.6. 120
5.2.8. . 90 7.3.7- . 121
5.3. . 91 7.3.8. 122
5.3.1. . 91 7,3.9- 122
5.3.2. . 92 7.. IL 123
5.3.3. . 93 7.4. (ST) 124
5.3.4. . 94 7.4.1- 124
5.3.5. . 95 7,4.2- 124
5.3.6* 7.4.3. 125
. . . . 96 7.4.4. IF 126
5.3.7. . 97 7.4.5. CASE. . . 127
5.3.8. . 98 7.4.6. WHILE REPEAT 129
. 99 7.4.7. FOR . . - 130
5.4. 100 7.4.8-
5.4.1. 100 EXIT RETURN 132
5.5. CoDeSys 100 7.4.9. . . . 133
7.4-10, 134
6. 103 7.5. (LD) 136
U . - . 103 136
105 7.5.2. 138
6.3. 106 7.5.3. . . . 139
7.5.4. . . . . . 140
7. 107 7.5.5. LD 141
7.1. 7.5.6. LD CoDeSys . . . 142
7.1.1. 108 7.5.7. LD- . . . . 144
7.2. Ill 7.6. (FBD) . . 144
7.2.1. SFC Ill 7.6.1. POU 144
7.2.2. IL - 114 7.6.2. 146
7.2.3. ST 115 7.6.3. FBD 146
2 5 2
253

7.6.4. 146 8.3.3. 188


7.6.5. 146 8.3.4. 188
7.6.6. , 147 8.3.5. 189
7.6.7. ST FBD 148 8.3.6. 191
7-7. (SFC) 149 8.3.7. 193
149 8.3.8. - 195
7.7.2. 149
151
9. ] 200
7.7.3. 9.1. (PRG LD)
152 200
7.7.4.
152 9.2.
7.7.5.
(PRG LD, SFC) 201
7.7.6. 153
154 9.3. (PRG LD) 203
7.7.7. SFC
7.7.8. SFC 157 9.4.
158 (FUN LD, ST) 205
7.7.9.
161 9.5.
7.70- (FUN ST) . . . . 207
7.71, 162
165
9.6. (FB ST) 210
7.7.12. , 9.7. FIFO (FB ST)
166 212
7.7.13. SFC ,
167 9.8. FIFO (FB ST) 214
7.7.14. SFC . , .
9.9. (FB ST) 215
8. 170 9.10. (FBST) 217
8.1. 170 9 1 . (PRG ST) 221
8.1.1* 170 9.12. -
8.1.2. 172 (FB IL) 224
8.1.3. 173 9.13. (FBSFC). . 226
8.1.4. 174 9.14.
8.1.5. 175 (IL, ST, FBD, LD 231
8.1.6. 176 9.14.1.
8.7, 177 (ST, IL). . . 232
9.14.2.
8.2. 178 (FBD, LD, ST, IL) . 237
8.2.1. 178 9.14.3. . 241
8.2.2. 182
8.2.3. 183 242
8.2.4. 184
- 245
8.3. . . . . 185
8.3.1. 186
8.3.2, 187 . . 246

Вам также может понравиться