Академический Документы
Профессиональный Документы
Культура Документы
SCL V5 1 PDF
SCL V5 1 PDF
SIMATIC
S7-SCL V5.1
S7-300/S7-400
:
6ES7811-1CC04-8BA0
SCL
SCL
SCL
SCL
10
11
12
SCL
13
14
15
09/2000
A5E00059543-01
,
, .
:
, ,
.
, ,
.
,
.
. ,
, ,
.
,
,
, Siemens.
, ,
, ,
.
SIMATIC, SIMATIC HMI SIMATIC NET - SIEMENS AG.
-
; ,
.
Copyright Siemens AG 2000
,
.
. ,
,
, .
Siemens AG
.
,
. ,
,
.
.
:
Postfach 4848, D- 90327 Nuernberg
Siemens AG 2000
.
Siemens
6ES7811-1CC04-8BA0
S7-SCL.
.
, ,
.
, SCL ,
, ,
.
, 2
" SCL ". SCL.
,
.
,
PC (,
Windows 95/98/2000 NT). SCL
, , STEP 7,
,
" STEP 7 V5.1".
S7-SCL V5.1.
iii
S7-SCL STEP 7
STEP 7 SCL:
SCL :
S7-SCL S7-300/400,
6ES7811-1CC04-8XA0
,
,
.
STEP 7:
STEP 7 V5.1
STEP 7 V5.1
,
STEP 7 S7 300/400.
STEP 7 V5.1
6ES7810-4CA05-8AA0
S5 S7
STEP 7:
LAD, FBD
STL
STEP 7.
6ES7810-4CA05-8AR0
Help () S7-SCL
S7SCL
S7-SCL
Help () STEP 7
STEP 7
STEP 7
STL/LAD/FBD
SFB/SFC
IEC
STEP 7
LAD/FBD/STL
S7-300/400
S7-300/400
iv
, (online help)
.
, ,
:
Help () : Contents ()
SCL. Introduction ()
SCL. Using Help (
) .
-
, ,
.
"Help ()" F1.
- .
,
.
,
.
, ,
, ,
.
SCL HTML.
,
.
SIMATIC
. .
-
Internet http://www.ad.siemens.de/meta/html_00/support.shtml.
Knowledge Manager .
Internet http://www4a.ad.siemens.de:8090/~SIMATIC/login
, SIMATIC.
,
, ,
.
-
SIMATIC
: D 90327 Nuremberg, Germany.
Phone:
+49 (911) 895-3200.
SIMATIC
:
Nuremberg
Johnson City
Singapore
(Nuremberg)
(Nuremberg)
(
SIMATIC)
: .-. 7:00 - 17:00
( )
:
E-mail:
techsupport@
ad.siemens.de
+1:00
GMT:
/
(Nuremberg)
:
GMT:
(Johnson City)
/ (Singapore)
+1 423 461-2289
Phone:
+65 740-7000
E-mail:
authorization@
nbgm.siemens.de
E-mail:
simatic.hotline@
sea.siemens.com
+65 740-7001
E-mail:
GMT:
+1:00
GMT:
-5:00
simatic.hotline@
sae.siemens.com.sg
GMT:
+8:00
- SIMATIC, -,
.
vi
SIMATIC
SIMATIC
SIMATIC:
:
-
Internet http://www.ad.siemens.de/simatic
:
-
Internet http://www.ad.siemens.de/simatic-cs
V.34
(28.8 K) : 8, N, 1, ANSI,
ISDN (x.75, 64 Kbps).
vii
viii
1.1
1.2
1.3
1.4
1.5
1.6
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.9.1
2.10
2.10.1
2.10.2
2.10.3
2.11
2.11.1
2.11.2
2.11.3
2.12
2.13
3
S7-SCL.............................................................................................. 1-1
S7-SCL?.................................................................... 1-3
............................................................. 1-4
V5.1? .......................................................................... 1-7
.................................. 1-9
DIN EN 61131-3 ............................................. 1-11
SCL
2.1
2-1
"Measured
Value Acquisition" ......................................................................................... 2-1
......................................................................................................... 2-2
SCL ......................................... 2-4
............................................................................... 2-6
................................................ 2-7
/................................................. 2-10
...................................... 2-11
........................................................................... 2-12
................................................ 2-13
................................ 2-13
....................................... 2-14
- .................. 2-14
....................... 2-15
....................... 2-16
ACQUIRE .......................................... 2-18
ACQUIRE...................................................................... 2-18
ACQUIRE........................... 2-19
ACQUIRE........................... 2-21
.................................... 2-24
............................................................................... 2-26
SCL
3.1
3.2
3.3
3.4
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
3.4.7
3.5
3.5.1
3.5.2
1-1
3-1
ix
3.5.3
3.6
3.6.1
3.6.2
3.6.3
3.6.4
3.6.5
3.6.6
3.6.7
3.6.8
3.6.9
3.6.10
3.6.11
3.7
3.7.1
3.7.2
3.7.3
3.7.4
3.7.5
3.8
3.8.1
3.8.2
3.8.3
3.8.4
3.9
3.9.1
3.9.2
3.10
3.10.1
3.10.2
3.10.3
3.10.4
3.10.5
3.10.6
3.11
3.11.1
3.11.2
3.11.3
3.11.4
3.11.5
3.11.6
3.11.7
3.11.8
3.11.9
3.11.10
4
SCL
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
..................................................... 3-9
SCL ..................................................... 3-9
..................................................................... 3-9
..................................................... 3-9
..................................... 3-9
............................................................................. 3-10
............................................................ 3-10
...................................................................................... 3-11
........................................................................................ 3-11
.................................................. 3-11
................................................. 3-12
..................................................................... 3-12
..................................................................................... 3-13
SCL ................................................................... 3-15
................................................ 3-15
............................................................................ 3-15
............................................................................ 3-17
............................................. 3-17
................................................... 3-18
SCL ........................................... 3-19
SCL .......................................................... 3-19
.................................................... 3-19
SCL .................................................................. 3-19
........................................................................... 3-20
................................................................ 3-21
CPU................................................................................. 3-21
CPU ........................................ 3-21
................................................................ 3-23
SCL ............................................................................... 3-23
"Monitor ()" ................................................ 3-24
......................... 3-25
........................................................................................... 3-26
................................ 3-27
STEP 7 ................................................ 3-29
CPU ................................................. 3-31
CPU..................................... 3-31
CPU................................. 3-31
CPU....................................................................... 3-32
CPU .................................................... 3-32
/ CPU ............................ 3-32
CPU ...................................................... 3-33
CPU .................................................. 3-33
CPU ................................................................... 3-33
CPU ............................................... 3-34
CPU ........................................................ 3-34
4-1
................................................. 4-1
.......................................................................................... 4-3
......................................................................... 4-4
......................................................................................... 4-5
................................................................... 4-6
................................................................................. 4-6
............................................................................... 4-7
............................................................................. 4-9
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
4.9
4.10
4.11
4.12
4.13
4.14
4.15
5
SCL
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
6-1
7.1
7.2
7.3
7.4
7.5
7.6
5-1
SCL..................................................................... 5-1
....................................................................... 5-2
............................................................................... 5-3
................................................................................. 5-3
........................................................................................... 5-5
..................................................................................... 5-7
........................................................................ 5-8
..................................................................................... 5-8
............................................................ 5-10
................................................................................... 5-11
................................................................................................. 5-12
(FB)................................................... 5-13
(FC)............................................................................ 5-15
(OB).................................................. 5-17
(DB) ................................................................... 5-18
, ......................... 5-21
6.1
6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.3
6.3.1
6.3.2
6.3.3
6.3.4
6.4
6.4.1
6.5
6.5.1
6.5.2
6.5.3
6.5.4
6.6
6.6.1
............................................................................ 4-9
......................................................................................................... 4-10
................................................................................... 4-12
...................................................................................................... 4-13
............................................................................... 4-13
............................................................................. 4-14
.............................................................................................. 4-15
7-1
.............................................. 7-1
...................... 7-3
............................................................................................ 7-4
................... 7-6
........................................................... 7-8
............................................................................. 7-8
xi
7.7
7.8
7.8.1
7.8.2
7.8.3
7.8.4
8
8.1
8.1.1
8.1.2
8.1.3
8.2
8.2.1
11
11.1.7
11.2
11.2.1
11.2.2
11.2.3
11.2.4
11.2.5
11.2.6
xii
10-1
, ................................................... 10-1
................................................................................................... 10-2
....................................................................................................... 10-3
............................................................................... 10-5
.................................................................................. 10-7
.................................................................... 10-8
............................................................................10-10
.............................................................................10-12
11.1
11.1.1
11.1.2
11.1.3
11.1.4
11.1.5
11.1.6
9-1
......................................................................... 9-1
CPU .................................................................................. 9-2
CPU...................................................................... 9-2
CPU............................................. 9-3
CPU........................................ 9-5
CPU ......................................... 9-6
.............................................................................................. 9-7
................................................................................. 9-7
........................................................ 9-8
............................................. 9-10
.......................................... 9-11
,
10.1
10.2
10.3
10.4
10.5
10.6
10.7
10.8
8-1
.................................................................................................... 8-1
............................................. 8-2
......................................................................... 8-3
.......................................................................................... 8-4
.................................................................................... 8-17
.................................................................................... 8-17
9.1
9.2
9.2.1
9.2.2
9.2.3
9.2.4
9.3
9.3.1
9.3.2
9.3.3
9.3.4
10
( OK)............................................................................................ 7-9
.......................................................................... 7-10
................................................................................... 7-10
......................................................................... 7-11
........................................................................... 7-12
...................................................................................... 7-13
11-1
............................................................................... 11-1
................................... 11-2
STRUCT UDT......................... 11-3
ARRAY ..................................... 11-5
STRING ................................... 11-7
DATE_AND_TIME .................. 11-8
CPU
................................................................................................................... 11-9
.................................................... 11-10
........................................................................11-12
............................................................ 11-12
................................................................................................... 11-13
IF .......................................................................................... 11-14
CASE ...................................................................................... 11-16
FOR......................................................................................... 11-18
WHILE ..................................................................................... 11-21
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
11.2.7
11.2.8
11.2.9
11.2.10
11.2.11
11.3
11.3.1
11.3.2
11.3.3
11.3.4
12
12-1
12.1
12.1.1
12.1.2
12.1.3
12.1.4
12.1.5
12.1.6
12.1.7
12.1.8
12.2
12.2.1
12.2.2
12.2.3
12.2.4
12.2.5
12.2.6
12.2.7
12.2.8
.................................................................................................... 12-1
.................................................................................... 12-1
......................................................................... 12-1
.......................................... 12-3
................................................... 12-4
(S_CU).................................................................................. 12-5
(S_CD).............................................................................. 12-5
/ (S_CUD)............................................................... 12-6
...................................................................... 12-7
.................................................................................................... 12-8
..................................................................................... 12-8
.......................................................................... 12-8
......................................... 12-10
.................................................. 12-12
(S_PULSE) .......................... 12-14
(S_PEXT).......... 12-15
(S_ODT) ................. 12-16
(S_ODTS)1217
12.2.9 (S_OFFDT)........... 12-18
12.2.10 ..................................................................... 12-19
12.2.11 ................................................................... 12-20
13
SCL
13.1
13.1.1
13.1.2
13.1.3
13.2
13.2.1
13.2.2
13.2.3
13.2.4
13.3
13.3.1
13.4
13.4.1
13.4.2
13.4.3
13.4.4
13.5
13.5.1
13-1
................................................... 13-1
................................................................. 13-1
.................................................. 13-2
......... 13-4
.............................................................. 13-9
...................................... 13-9
....................................................................... 13-9
................................................................. 13-10
............................................. 13-10
......................................... 13-11
....................................... 13-12
............................................ 13-13
........................................................... 13-13
........................................................................ 13-17
........................................... 13-18
.................................................. 13-20
SFC, SFB .................................................... 13-22
OB ........ 13-24
xiii
14
14.1
14.1.1
14.1.2
14.1.3
14.1.4
14.1.5
14.1.6
14.1.7
14.1.8
14.1.9
14.1.10
14.1.11
14.2
14.2.1
14.2.2
14.2.3
14.2.4
14.2.5
14.3
14.3.1
14.3.2
14.3.3
14.3.4
14.3.5
14.3.6
14.3.7
15
xiv
14-1
.................................................................... 14-1
.............................................................. 14-1
..................................................................................................... 14-2
, ................................... 14-4
, .............................. 14-6
.................................... 14-9
............................... 14-12
.................................................................... 14-13
..................................................................................... 14-13
..................................................................................... 14-14
SCL.......................................................................... 14-15
.............................................................. 14-18
...............................................................................14-19
..................................................................................... 14-19
................................................................................................ 14-21
........................................................................... 14-25
........................................................................................... 14-27
....................................................................................... 14-28
.........................................................................14-29
SCL............................................................ 14-29
.............................................................. 14-31
SCL................................................................................. 14-35
................................................................................. 14-37
............................................................................... 14-39
............................................ 14-41
.......................................................................... 14-43
15-1
1
1.1
S7-SCL
, ,
,
.
SCL (Structured Control Language ), ,
S7300/400 DIN EN 61131-3.
SCL "" ,
, ""
:
S7-SCL
SCL ,
PASCAL. (
).
DIN EN-61131-3 ( IEC 1131-3)
.
SCL
PLCOpen Basis S ( ). NORM_TAB.WRI,
DIN EN-61131-3.
SCL ,
, , , , , , ,
.. , SCL STEP 7
: LAD ( ), FBD (
), STL ( ).
1-1
SCL
,
SCL, STEP 7. :
, (FC),
(FB), (OB),
(DB) (UDT).
.
MC7. MC7
CPU S7-300/400, CPU 314.
.
.
SCL
Windows .
SCL S7-300/400
1-2
1.2
S7-SCL?
SCL
. SCL ,
, ,:
SCL STEP 7 , ,
(STL), (LAD)
(FBD).
OB
FC
FB
DB
UDT
SFC
SFB
STEP 7
, ,
,
CPU.
, SCL,
, (STL),
(LAD) (FBD).
, , SCL, ,
STL, LAD FBD. , SCL
, STL, LAD FBD.
, STEP 7 SCL (
) .
, SCL STEP 5,
; ,
,
S7 SCL.
SCL
.
,
.
,
CPU S7 300/400, CPU 314.
SCL,
.
.
1-3
1.3
SCL ,
.
- STEP 7.
. .
1
.
.
i
.
SCL, :
1-4
,
, , .
,
, ,
.
, SCL, ,
MC7.
SCL
1
.
.
i
1
.
.
j
S7
SCL :
SCL,
.
SCL,
, .
,
.
, .
,
.
1-5
SCL
.
S7-300/400
SCL :
1-6
-
.
;
-
. ,
( ) .
1.4
V5.1?
DIN EN 61131-1
5.0, S7-SCL PLCOpen
ST ( ) DIN EN 61131-3 ( IEC
1131-3).
,
INT .
.
, . ,
'12345 INT:
Int1:=Int2 + 12345
,
, :
INT#12345
,
,
.
SCL
.
SCL
.
.
1-7
SCL, ,
, .
1-8
,
SCL ,
.
,
.
1.5
S7-SCL V5.1
:
S7-SCL , STEP 7.
, S7SCL V5.1 readme.wri.
S7-SCL Setup
.
.
:
1. (Control Panel) Windows 95/98/2000/NT
/
(Add/Remove Programs).
2. (Install).
3. CD "Next ( )". Windows
"Setup.exe".
4. , .
,
( ) S7-SCL. ,
. ,
. ,
, ,
.
1-9
, (
). "AuthorsW",
, CD ROM S7-SCL V5.1.
.
.
, .
README.WRI AuthorsW.
, .
, , - .
.
. ,
, .
.
, ,
SIEMENS.
,
"Programming with STEP 7 V5.x" (" STEP 7 V5.").
1-10
1.6
DIN EN 61131-3
5.0, S7-SCL PLCopen Basis ST
( ), DIN EN 61131-3 ( IEC
1131-3).
ST, ASCII
STEP 7, SIMATIC Manager
/ SCL.
FUNCTION_BLOCK / END_FUNCTION_BLOCK
( / ),
PROGRAM / END_PROGRAM (/
)
,
.
SCL Language Version 5.0 :
.
STEP 7 V4.02.
CASE
. ,
"a .. b", a<= b.
INT DINT
(/). (/)
.
, , , -
( 10/3=3, 10.0/3=3.33).
1-11
1-12
2
2.1
SCL
"Measured Value Acquisition"
,
SCL. , :
SCL?
SCL ?
SCL
SCL:
SCL
SIMATIC S7-300 SIMATIC S7-400
:
16-
16-
, ,
,
.
SCL.
, ,
STEP 7.
2-1
SCL
2.2
,
SCL.
.
, 8 .
( ).
0 255. .
.
,
.
.
.
:
X
x=
1 1 1 1 1 1 1 1
255
255
127
49
63
31
15
225
15
31
961
63
3969
127
11
16129
255
16
2-2
SCL
.
, :
, .
, , ,
.
.
: ,
. ,
.
:
0
x=
1
1
3
7
15
31
63
127
255
49
225
961
3969
11
16129
16
Ov erf low
2-3
SCL
2.3
SCL
,
SCL . ,
,
. SCL,
STEP 7, .
OB
STEP 7-
FB
. FB
, , (,
) .
FC
, .
,
.
DB
.
,
, FB.
UDT
2-4
O S7 CPU
, .
,
,
. UDT
. UDT .
SCL
SCL
SCL .
.
.
FB22
.
.
.
FC2
.
.
.
OB1
.
SCL
SCL
OB1
SCL
FC2
SCL
FB22
FB22
FC2
OB1
DB
offline
2-5
SCL
2.4
.
.
.
CYCLE
ACQUIRE
EVALUATE
ACQUIRE_DATA
, :
2-6
OB.
,
OB1. -
OB.
OB "Cycle"
" "
, ,
(FB),
(, )
.
() -
ACQUIRE_DATA. FB
,
.
FB Acquire (
)
SCL
2.5
,
,
. FB.
, DB.
FB.
FB "Evaluate "
()
(FC)
,
.
, , ,
.
SCL SQRT. SQUARE
() ,
,
.
FC "SQRT"
( )
FC "SQUARE"
()
,
.
, ,
.
.
.
,
. (FC)
.
, :
.
.
VAR_INPUT
.
.
VAR_OUTPUT
/
,
,
.
VAR_IN_OUT
2-7
SCL
OB
OB . FB
ACQUIRE
.
(FB ACQUIRE)
measval_in
INT
VAR_INPUT
newval
BOOL
VAR_INPUT
resort
BOOL
VAR_INPUT
funct_sel
BOOL
VAR_INPUT
selection
WORD
VAR_INPUT
newsel
BOOL
VAR_INPUT
result_out
DWORD
VAR_OUTPUT
measval_out
DWORD
VAR_OUTPUT
(FB EVALUATE)
ACQUIRE FB EVALUATE FB.
. ,
/ .
.
:
2-8
sortbuffer
ARRAY[..]
OF REAL
calcbuffer
ARRAY[..]OF VAR_OUTPUT :
STRUCT
VAR_IN_OUT
SCL
Value
REAL
VAR_INPUT
SQRT
REAL
Function value
Value
INT
VAR_INPUT
SQUARE
INT
Function value
2-9
SCL
2.6
/
, , - /. ,
, .
, .
0
I0.3
0
1
2
3
4
5
6
7
I0.4
:
:
0
1
2
0 .. 7 :
0
1
2
3
0 .. 7
( 8..15)
, 0
4
5
6
7
0
1
2
3
4
0..7
( 0..7):
2-10
6
7
SCL
2.7
SCL, ,
, ; ,
, .
, :
FC SQUARE
FB EVAL
FB ACQ
OB CYCLE
2-11
SCL
2.8
,
. ,
.
, .
,
, :
2-12
SCL
2.9
2.9.1
, .
, .
, .
.
FUNCTION SQUARE : INT
VAR_INPUT
value : INT;
END_VAR
BEGIN
IF value <= 181 THEN
SQUARE := value * value; //
ELSE
SQUARE := 32_767; //
//
END_IF;
END_FUNCTION
2-13
SCL
2.10
2.10.1
-
EVALUATE
REPEAT
Start
swap := FALSE
I := LIMIT
FOR
I >= 1 ?
sortbuffer[I-1]
sortbuffer[I]
SWAP = TRUE
I := I-1
FOR
REPEAT
swap?
TRUE
FALSE
I := 0
FOR
I <= LIMIT ?
SQRT
SQUARE
FOR
I := I+1
End
2-14
SCL
2.10.2
CONST END_CONST.
VAR_IN_OUT END_VAR.
VAR_OUTPUT END_VAR.
VAR_TEMP END_VAR.
CONST
LIMIT := 7;
END_CONST
VAR_IN_OUT
sortbuffer : ARRAY[0..LIMIT] OF INT;
END_VAR
VAR_OUTPUT
calcbuffer : ARRAY[0..LIMIT] OF
STRUCT
squareroot : INT;
square : INT;
END_STRUCT;
END_VAR
VAR_TEMP
swap
: BOOL;
index, aux : INT;
valr, resultr: REAL ;
END_VAR
2-15
SCL
2.10.3
/ sortbuffer" ( )
measvals" ,
, .
calcbuffer" ( )
. ,
.
.
sort buffer
measured values
calculate buffer
EVALUATION
. , ACQUIRE_DATA,
EVALUTION
ACQUIRE.
EVALUATION
-,
.
2-16
. ,
, .
/ "sortbuffer" (
).
, ,
SQUARE SQRT
.
"calcbuffer" ( ).
SCL
:
BEGIN
(********************************************************
1 : " ":
.
**********************************************************)
REPEAT
swap := FALSE;
FOR index := LIMIT TO 1 BY -1 DO
IF sortbuffer[index-1] > sortbuffer[index]
THEN aux :=sortbuffer[index];
sortbuffer[index] := sortbuffer[index-1];
sortbuffer[index-1] := aux;
swap
:= TRUE;
END_IF;
END_FOR;
UNTIL NOT swap
END_REPEAT;
(**********************************************************
2 : SQRT
SQUARE.
************************************************************)
FOR index := 0 TO LIMIT BY 1 DO
valr := INT_TO_REAL(sortbuffer[index]);
resultr := SQRT(valr);
calcbuffer[index].squareroot := REAL_TO_INT(resultr);
calcbuffer[index].square := SQUARE(sortbuffer[index]);
END_FOR;
END_FUNCTION_BLOCK
2-17
SCL
2.11
2.11.1
ACQUIRE
ACQUIRE
:
RECORD
Function Block
newval
?
resort
?
ANALYZE
new code
?
DB
(
)
MOD:
,
AND
TRUE
FALSE
:
,
.
End
2-18
SCL
2.11.2
ACQUIRE
: VAR_INPUT END_VAR.
:
VAR END_VAR.
CONST END_CONST.
VAR_OUTPUT END_VAR.
CONST
LIMIT := 7;
QUANTITY := LIMIT + 1;
END_CONST
VAR_INPUT
measval_in : INT ; //
newval : BOOL; //
// "measvals"
resort : BOOL; //
funct_sel : BOOL; //
// /
newsel
: BOOL; //
selection : WORD; //
END_VAR
VAR_OUTPUT
result_out : INT; //
measval_out : INT; //
//
END_VAR
VAR
measvals
: ARRAY[0..LIMIT] OF INT := 8(0);
resultbuffer
: ARRAY[0..LIMIT] OF
STRUCT
squareroot
: INT;
square
: INT;
END_STRUCT;
pointer
: INT := 0;
oldval
: BOOL := TRUE;
oldsort
: BOOL := TRUE;
oldsel
: BOOL := TRUE;
address : INT := 0;//
outvalues_instance: EVALUATE;//
//
END_VAR
2-19
SCL
,
.
, VAR, END_VAR".
,
.
, , .
, ,
( CPU).
EVALUATION VAR, END_VAR".
.
ACQUIRE_DATA.
2-20
Measvals
ARRAY [..]
OF INT
8(0)
Resultbuffer
ARRAY [..]
OF STRUCT
Index
INT
Oldval
BOOL
FALSE
"newval"
Oldsort
BOOL
FALSE
"resort"
Oldsel
BOOL
FALSE
"newsel"
Address
INT
eval_instance
Local instance
EVALUTION
SCL
2.11.3
ACQUIRE
"newval" "oldval",
.
, "resort"
"oldsort".
.
SIMATIC, ,
( 0)
( 1) .
, ,
.
2-21
SCL
, , , : 12
14 IW0 , ,
( 15).
, SHR
AND.
(
). , ,
funct_sel".
, Newsel"
oldsel".
Switches
for code
number
Coding
switch
2-22
0
1
2
3
4
5
6
7
SHR
12
AND c 0007
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8
9
10
11
12
13
14
15
8
9
10
11
12
13
14
15
IW0
SCL
:
BEGIN
(***********************************************************
1 : .
"newval" , . MOD
.
**********************************************)
IF newval <> oldval THEN
pointer
:= pointer MOD QUANTITY;
measvals[pointer] := measval_in;
pointer
:= pointer + 1;
END_IF;
oldval := newval;
(************************************************************
2 :
"resort",
. "calcbuffer".
************************************************************)
IF resort <> oldsort THEN
pointer := 0; //
eval_instance(sortbuffer := measvals); // EVALUATE
END_IF;
oldsort
:= resort;
resultbuffer := eval_instance.calcbuffer;//
//
(************************************************************
3 : :
"newsel" ,
:
"selection" .
"funct_sel"
"squareroot"/"square".
************************************************************)
IF newsel <> oldsel THEN
address := WORD_TO_INT(SHR(IN := selection, N := 12) AND 16#0007);
END_IF;
oldsel := newsel;
IF funct_sel THEN
result_out := resultbuffer[address].square;
ELSE
result_out := resultbuffer[address].squareroot;
END_IF;
measval_out := measvals[address];//
END_FUNCTION_BLOCK
2-23
SCL
2.12
OB
OB1 , .
:
ACQUIRE
.
, ACQUIRE.
20
systemdata".
2-24
SCL
OB
ORGANIZATION_BLOCK CYCLE
(***********************************************************
CYCLE - OB1, S7.
1 :
2 :
***********************************************************)
VAR_TEMP
systemdata : ARRAY[0..20] OF BYTE; // OB1
END_VAR
BEGIN
(* Part 1 : ***************************************************)
ACQUIRE.ACQUIRE_DATA(
measval_in:= WORD_TO_INT(input),
newval
:= "Input 0.0", //
resort
:= Sort_switch,
funct_sel:= Function_switch,
newsel
:= Coding_switch,
selection
:= Coding);
(* Part 2 : **************************************************)
IF Output_switch THEN
//
Output := ACQUIRE_DATA.result_out;
//
ELSE
Output := ACQUIRE_DATA.measval_out; //
END_IF;
END_ORGANIZATION_BLOCK
.
.
WORD INT ( BYTE WORD
). ,
.
2-25
SCL
2.13
,
0 4.
,
(0") (1").
CPU,
.
,
(I0.3) "1".
"10000" (=16).
,
(I0.2)
"1".
15 .
,
255 x 255 .
4a
(I0.3) "0". .
.
4b
3 ( "11")
.
5a
:
"000"
(I0.7) ,
.
0; ..
.
5b
0.0"
(I0.0). 4
.
3,
"11".
,
(I0.1).
0,
.
"11"
:
.
"110" (I0.6 = 1, I0.5 = 1, I0.4 = 0 IB0;
14, 13 12 IW0)
,
.
8a
:
(I0.3)
7 .
9
( "1001").
8b
(I0.2),
.
2
( "10").
2-26
SCL
. :
.
8
8 .
.
, .
("0"): ,
("1"):
("0"): ,
("1"):
8
.
.
.
,
.
( .
0000 0001 =
0, 0000 0001 = 1
0000 0011 = 3
0, 0000 0010 = 2
0000 0111 = 7
0, 0000 0011 = 3
0000 1111 = 15
0, 0000 0100 = 4
0001 1111 = 31
0, 0000 0110 = 6
0011 1111 = 63
0, 0000 1000 = 8
0, 0000 1011 = 11
0, 0001 0000 = 16
2-27
SCL
2-28
3
3.1
SCL
SCL
Windows
SCL
, SCL, Start ()
Windows ( SIMATIC / STEP7").
SIMATIC Manager
SCL -
SCL SIMATIC Manager.
3-1
SCL
3.2
SCL :
1. :
, , ,
.
2. :
.
3. :
.
4. :
,
,
5. :
3-2
SCL
3.3
, Options >
Customize ( > ) "Editor ()"
"Customize ()". :
"Editor
()"
Fonts ()
Tabulator length ( )
,
.
,
Options > Customize ( > )
"Format ()" "Customize ()".
:
"Format"
Keywords in uppercase
(
)
Indent keywords (
)
IF, CASE, FOR,
WHILE REPEAT.
Indent automatically
( )
,
.
.
Style/Color (/)
, "Format ()"
"Use following Formats ( )".
, ,
,
.
View ().
, .
3-3
SCL
3.4
3.4.1
SCL
SCL
SCL ,
. S7.
S7 SIMATIC Manager
, SCL,
S7, :
S7 Program
Blocks
(, FB1, OB1)
Sources
(, SCL)
Sym bols
:
1. "New ()":
-
"New ()"
2. "New ()"
-
S7
3. .
24 .
4. "OK".
.
SIMATIC Manager,
, Insert > S7 Software > SCL
Source File (> S7> SCL).
3-4
SCL
3.4.2
SCL
.
:
1. "Open ()":
-
"Open"
2. , :
-
S7
3. SCL .
4. "OK".
3-5
SCL
3.4.3
,
SCL. , LAD/STL/FBD
STL. ,
STL :
MC7
STL.
STL ,
STL, SCL..
, STL, STL,
SCL .
SCL MC7 .
STEP 7.
CPU,
SCL, .
3.4.4
SCL
:
"Close ()" .
, , . , .
3.4.5
, .
SCL (, )
"Properties ()" .
:
1. File > Properties ( > ).
2. "Properties ()" .
3. "OK".
3-6
SCL
3.4.6
SCL
ASCII. ,
SCL.
, ,
S7, SIMATIC
Manager ( STEP 7). ,
SCL .
3.4.7
,
KNOW_HOW_PROTECT ( -).
STL,
.
KNOW_HOW_PROTECT.
.
3-7
SCL
3.5
3.5.1
SCL
SCL :
3.5.2
SCL
(FB, FC, OB), (DB),
(UDT).
(;).
.
.
,
. .
DB0 .
.
SCL,
:
3-8
(UDT)
, .
,
(UDT), UDT.
,
.
SCL
3.5.3
SCL , /
, , , .
, (, I1.1,
M2.0, FB11), SCL ,
(, Motor_ON).
.
CPU .
. STEP 7.
, .
, ,
.
,
.
3.6
3.6.1
SCL
Edit > Undo (
> ).
. , File > Save ( >
) .
3.6.2
,
Edit > Redo ( > ).
3.6.3
SCL,
. ,
, ,
..
3-9
SCL
:
1. Edit > Find and Replace ( >
)....
2. "Find and Replace (
)".
3. :
3.6.4
"Find ()"
.
, :
, .
3.6.5
.
.
:
1. .
2. :
-
"Copy ()"
3. , (
).
4. :
3-10
"Paste ()"
SCL
3.6.6
.
Edit > Paste ( >
), ,
.
:
1. , .
2. :
-
"Cut ()"
3.6.7
,
Edit > Cut ( > ) Edit >
Copy ( > ).
.
:
1. , .
2. Edit > Delete ( > ).
.
Edit > Undo
( > ) Edit > Redo ( > ).
3.6.8
.
:
1. "Go To ()",
Edit > Go To Line ( > ).
2. "Go To ()" .
3. "OK".
3-11
SCL
3.6.9
SCL:
Indent automatically ( )
,
, .
Indent keywords ( )
,
IF, CASE, FOR, WHILE
REPEAT.
:
1. Options > Customize ( >
).
2. "Format ()".
3. , "Use following Formats
( )".
4. "Indent automatically ( )"
"Indent keywords ( )".
3.6.10
SCL
. ,
:
3-12
Keywords in uppercase ( ):
, , FOR, WHILE,
FUNCTION_BLOCK, VAR END_VAR .
ORGANIZATION_BLOCK
INT
ENO
BOOL_TO_WORD
NOT
TRUE
//... or (*...*)
(
)
"Motor"
Variables
SCL
:
1. Options > Customize ( >
).
2. "Format ()".
3. , "Use following Formats for printing:
( :)"
4. .
, "Help
()".
3.6.11
3.6.11.1
SCL .
:
(SFB) (SFC)
SIMATIC,
, SCL,
, STEP 7.
:
1. Insert > Block Call ( > ).
2. SFC, SFB, FC FB
"OK".
SCL S7
.
3. ,
DB.
4. , .
, SCL ,
, .
3-13
SCL
3.6.11.2
SCL OB, FB, FC,
DB, DB, DB, UDT UDT.
.
:
1. , .
2. Insert > Block Template > OB/FB/FC/DB/IDB/DB
Referencing UDT/UDT (> > OB/FB/FC/DB/ IDB/
DB UDT/UDT).
3.6.11.3
SCL .
.
:
1. .
2. Insert > Block Template > Comment
(> >).
3.6.11.4
SCL .
.
.
:
1. FB FC.
2. Insert > Block Template > Parameter (>
> ).
3.6.11.5
SCL
.
.
:
1. , .
2. Insert > Control Structure >
IF/CASE/FOR/WHILE/REPEAT (> >
IF/CASE/FOR/WHILE/REPEAT).
3-14
SCL
3.7
3.7.1
SCL
,
. ,
. :
SCL
.
, ,
.
, .
SCL,
.
,
, ,
. ,
. SCL.
3.7.2
.
:
1. Options > Customize ( >
), "Customize ()".
2. "Compiler ()" "Create Block (
)".
3. .
3-15
SCL
"Compiler () "
Create object code
(
)
,
.
.
,
.
, ,
.
, S7
,
. ,
OK FALSE.
CPU. , ,
CPU.
Set OK flag (
OK)
SCL OK
,
SCL.
STRING.
254. /
, . ,
,
STRING.
"Blocks ()" S7
,
.
, ,
. ,
, .
Display warnings (
)
,
, .
,
.
Options > Reference Data ( > ).
, , "S7_server"
. ,
.
. ,
.
3-16
SCL
3.7.3
. , , Options > Customize
( > ) "Save before compiling
( )" "Editor ()".
File > Compile ( > )
SCL.
:
1. SCL .
2. S7 , "Create Object
code ( )" "Compiler
()" "Customize ()".
3. , .
4. .
5. :
-
3.7.4
, , .
,
.
:
1. File > New ( > )
"New ()".
2. "New ()"
-
S7
3.
( 24 ) "OK".
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
3-17
SCL
4. .
SCL ,
.
5. , File > Compile ( >
).
3.7.5
,
, " Errors and Warnings (
)". , ,
. ,
, .
:
1. F1, ,
.
2. ,
:
-
,
(, ).
3. SCL.
4. .
5. .
6. .
3-18
SCL
3.8
3.8.1
SCL
SCL
"saving" SCL .
SCL
.
.
. .
:
3.8.2
SCL,
File > Save As ( > ).
Save As ( ) ,
.
3.8.3
SIMATIC Manager, File > Headers
and Footers ( > ).
,
, File > Print Preview ( >
).
SCL
SCL, , , , .
:
1. .
2. "Print ()":
-
"Print ()"
3. "Print ()",
.
4. "OK".
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
3-19
SCL
3.8.4
Define style ( )
. :
ORGANIZATION_BLOCK
INT
ENO
BOOL_TO_WORD
NOT
TRUE
(* *)
//...
( )
"Motor"
:
1. Options > Customize ( >
).
2. "Print ()" .
3. , "Use following Formats (
)".
4. .
, "Help ()" .
3-20
SCL
3.9
3.9.1
CPU
Clear/Reset ( ), online
CPU.
:
1. PLC > Operating Mode ( > )
CPU STOP.
2. PLC > Clear/Reset ( > ).
3. .
3.9.2
CPU .
CPU .
, CPU
.
CPU
SCL,
"Blocks ()" S7.
, ,
"Blocks () .
SIMATIC Manager
CPU.
,
CPU. SIMATIC Manager online
CPU.
3-21
SCL
,
.
STOP,
,
RUN.
3-22
SCL
3.10
3.10.1
SCL
SCL,
CPU .
.
, ,
.
, .
SCL
SCL :
Monitor () (S7-300/400-CPU)
SCL. ,
.
,
!
,
.
online CPU.
CPU. ,
PLC > Download ( > ).
3-23
SCL
3.10.2
"Monitor ()"
,
. .
,
.
,
,
.
, ,
, .
, ,
CPU. SCL
,
,
SCL,
.
"Monitor ()":
.
,
.
DATE_AND_TIME, STRING
BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB,
TIMER, COUNTER.
<>.< > (, Data.DW4).
.
, SCL
.
3-24
Test Operation
(
)
Process
Operation
( )
SCL
3.10.3
,
.
, .
,
, .
:
" ",
:
Next Statement ( )
.
Resume ()
.
To cursor ( )
.
Execute Call ( )
SCL .
.
,
Debug > Breakpoints Active ( >
).
.
CPU .
CPU 416
CPU 414
S7-300 CPU
:
.
3-25
SCL
3.10.4
, "Monitor ()".
:
1. , , CPU
RUN RUN-P.
2. , .
3.
(process operation), Debug > Operation > Test
Operation ( > > ).
4. ,
, .
5. ,
Debug > Monitor ( > ).
:
. ,
.
6. View > Symbolic Representation ( >
),
.
7. Options > Customize ( >
), "Format ()"
.
8. Debug > Monitor ( > )
.
9. Debug > Finish Debugging ( >
) .
, , ( )
CPU.
3-26
SCL
3.10.5
3.10.5.1
:
1. , .
2. , , ,
View > Breakpoint Bar ( >
).
3. Test > Set
Breakpoint ( > )
.
.
4. , Debug > Edit Breakpoints ( >
)
. ,
, ,
:
-
3.10.5.2
,
" Test with Breakpoints ( )".
:
1. SCL , .
2. , CPU
RUN-P. Debug > Breakpoints Active
( > ) Debug >
Monitor ( > ).
: .
. , CPU
HOLD
.
3. :
-
3-27
SCL
CPU RUN.
HOLD
.
-
3.10.5.3
:
3.10.5.4 ,
/
:
1. Debug > Edit Breakpoints ( >
).
2.
-
3-28
SCL
3.10.5.5
:
1. ,
.
2. Debug > Breakpoints Active ( >
).
3. , .
4. , Debug >
Next Statement ( > )
.
3.10.6
- ,
.
STEP 7
3.10.6.1
.
. Options >
Reference Data > Filter ( > > ).
3-29
SCL
, Create
Reference Data ( )" Create
Block ( )". ,
,
.
3.10.6.2
onitoring and
modifying variables ( ),
:
,
()
, ,
()
3-30
(VAT) .
, .
( ) .
, ,
, .
, !
SCL
3.11
3.11.1
CPU
CPU
CPU.
CPU ( online).
:
1. PLC > Operating Mode ( > ).
2. :
3.11.2
Warm restart ( )
Cold restart ( )
Hot restart ( )
STOP ()
,
!
, !
CPU
CPU .
CPU.
:
1. PLC > Set Date and Time ( >
).
2. CPU.
CPU , "00:00:00"
"00.00.00". , .
3-31
SCL
3.11.3
CPU
CPU:
, , , CPU.
,
.
, ,
.
CPU.
CPU .
CPU.
:
1. PLC > Module Information ( >
).
2. "General ( )".
3.11.4
CPU
,
STOP
.
CPU.
:
1. PLC > Module Information ( >
).
2. "Diagnostic Buffer (
)".
3.11.5
/ CPU
,
CPU , , CPU.
,
, CPU PG.
CPU.
:
1. PLC > Module Information ( >
).
2. "Memory ()".
3-32
SCL
3.11.6
CPU
:
STOP RUN.
STOP RUN.
,
, , CPU
STOP. , ,
. ,
CPU.
:
1. PLC > Module Information ( >
).
2. "Cycle Time ( ) ".
3.11.7
CPU
CPU
CPU.
CPU.
:
1. PLC > Module Information ( >
).
2. "Time System ( )".
3.11.8
CPU
, CPU.
CPU.
:
1. PLC > Module Information ( >
).
2. "Performance
Data/Blocks ( /)".
3-33
SCL
3.11.9
CPU
CPU
, .
CPU.
:
1. PLC > Module Information ( >
).
2. "Communication ()".
3.11.10 CPU
,
CPU. CPU STOP
.
,
, . CPU STOP,
(I ),
.
CPU.
:
1. PLC > Module Information ( >
).
2. "Stacks ()".
3-34
4
4.1
SCL
.
SCL. " "
.
?
- .
.
.
4
5
.
:
4-1
SCL
?
, .
,
.
,
.
,
.
.
,
.
?
,
, .
" ". ,
, ,
, .
!
,
.
:
R_CONTROLLER3
_A_FIELD
_100_3_3_10
:
1_1AB
RR__20
*#AB
4-2
SCL
:=
:
VARIABLE_1
:= 100; SWITCH:=FALSE;
VARIABLE_2
:= 3.2;
4.2
SCL
ASCII:
A Z ( ).
0 9.
( ASCII = 32)
( ASCII 0-31),
( ASCII = 13).
SCL :
+
<
>
"
'
" ",
,
SCL.
4-3
SCL
4.3
()
.
.
SCL
AND
END_CASE
ORGANIZATION_BLOCK
ANY
END_CONST
POINTER
ARRAY
END_DATA_BLOCK
PROGRAM
AT
END_FOR
REAL
BEGIN
END_FUNCTION
REPEAT
BLOCK_DB
END_FUNCTION_BLOCK
RETURN
BLOCK_FB
END_IF
S5TIME
BLOCK_FC
END_LABEL
STRING
BLOCK_SDB
END_TYPE
STRUCT
BLOCK_SFB
END_ORGANIZATION_BLOCK
THEN
BLOCK_SFC
END_REPEAT
TIME
BOOL
END_STRUCT
TIMER
BY
END_VAR
TIME_OF_DAY
BYTE
END_WHILE
TO
CASE
ENO
TOD
CHAR
EXIT
TRUE
CONST
FALSE
TYPE
CONTINUE
FOR
VAR
COUNTER
FUNCTION
VAR_TEMP
DATA_BLOCK
FUNCTION_BLOCK
UNTIL
DATE
GOTO
VAR_INPUT
DATE_AND_TIME
IF
VAR_IN_OUT
DINT
INT
VAR_OUTPUT
DIV
LABEL
VOID
DO
MOD
WHILE
DT
NIL
WORD
DWORD
NOT
XOR
ELSE
OF
ELSIF
OK
EN
OR
4-4
SCL
4.4
,
SCL, - , .
24
,
. ,
(, AnNa AnnA - ).
IDENTIFIER
Letter
Letter
Letter
Underscore
Underscore
Digit
Digit
:.
X
Sum
Name
Controller
y12
Temperature
Surface
Table
.
4th
Array
S Value
//
//
//ARRAY
// (,
// ).
,
.
, .
4-5
SCL
4.5
SCL :
4.6
CPU,
,
, .
x - 0 65533 0
65535 .
(SIMATIC)
(IEC)
DBx
DBx
. DB0
SCL.
FBx
FBx
FCx
FCx
Obx
Obx
SDBx
SDBx
SFCx
SFCx
SFBx
SFBx
Tx
Tx
UDTx
UDTx
Zx
Cx
SCL ,
.
.
4-6
SCL
Block
Keyword
Number
IDENTIFIER
Symbol
:
FB10
DB100
T141
4.7
CPU, .
,
, .
,
.
(SIMATIC)
(IEC)
Ax.y
Qx,y
( )
Bit
Abx
QBx
( )
Byte
Adx
QDx
( )
Double word
Awx
QWx
( )
Word
AXx.y
QXx.y
( )
Bit
Dx.y
Dx.y
Bit
DBx
DBx
Byte
DDx
DDx
Double word
DWx
DWx
Word
DXx.y
DXx.y
Bit
Ex.y
Ix.y
( )
Bit
Ebx
Ibx
( )
Byte
4-7
SCL
(SIMATIC)
(IEC)
EDx
IDx
( )
Double word
Ewx
IWx
( )
Word
EXx.y
IXx.y
( )
Bit
Mx.y
Mx.y
Bit
MBx
MBx
Byte
MDx
MDx
Double word
MWx
MWx
Word
MXx
MXx
Bit
PABx
PQBx
(
)
Byte
PADx
PQDx
(
)
Double word
PAWx
PQWx
(
)
Word
PEBx
PIBx
(
)
Byte
PEDx
PIDx
(
)
Double word
PEWx
PIWx
(
)
Word
x = 0 65535 ( )
:
I1.0
4-8
SCL
4.8
SCL ,
.
.
4.9
SCL ,
.
.
'C'
'Z'
4-9
SCL
4.10
SCL .
:
,
().
, , ,
( _ ).
( + ) ( - ).
, .
, .
, - ,
. SCL - INT
DINT, .
:
0
743
-5280
+1
-1
600_00
-32_211
,
:
123,456
36.
10 20 30
.
.
SCL
,
. 2# , 8#
16# .
15:
2#1111
4-10
8#17
16#F
SCL
( ).
. ,
.
:
0.0
1.0
50000.0
-0.000743
-0.2
827.602
12.3
-315.0066
:
1.
1,000.0
.3333
,
.
,
. . (10) E.
3 x 10 10 SCL
:
3.0E+10
3.0E10
3e+10
3E10
0.3E+11
0.3e11
30.0E+9
30e9
:
3.E+10
8e2.3
.333e-3
30 E10
4-11
SCL
4.11
(,
), .
:
'RED'
'76181 Karlsruhe'
'270-32-3456'
'DM19.95' 'The correct answer is:'
( ' )
$.
'SIGNAL$'RED$''
SIGNAL'RED'
'50.0$$'
50.0$
'VALUE$P'
'RUL$L'
'CONTROLLER$R
'STEP$T'
STEP tabulator
,
$hh, hh ASCII ,
.
,
, $> $< ,
.
4-12
SCL
4.12
SCL, .
, .
"
4.13
"
`(*' `*)'.
. ,
.
. , .
:
(*
*)
(*
.*)
SWITCH := 3 ;
END_FUNCTION_BLOCK
4-13
SCL
4.14
"//"
.
254 ,
'//'.
//
CR
VAR
SWITCH : INT ; //
END_VAR
4-14
, // ,
LAD/STL/CSF .
" ".
"(*" "*)" .
SCL
4.15
, ,
.
.
,
( ..), .
:
( CPU)
(FC, FB, OB)
. :
,
, (
).
.
.
.
,
.
-
.
,
.
. ,
(DB).
DB, .
,
(UDT). ,
, DB.
4-15
SCL
CPU
CPU,
,
.
, .
STEP 7.
4-16
5
5.1
SCL
SCL
SCL . STEP 7
, ,
.
OB
FC
FB
DB
UDT
STEP 7 Blocks
.
.
CPU (S7lib) STEP 7
, , .
5-1
SCL
5.2
:
.
:
, (UDT),
, .
, ,
(UDT), UDT.
, ,
.
, .
OB1, ,
. , OB1,
.
, ,
,
.
UDT
DB
DB UDT
FB 3
DB FB
FC5
OB1
5-2
SCL
5.3
5.4
, , "ORGANIZATION_BLOCK OB1"
.
.
, VOID.
, ,
"TITLE =".
, .
, "//".
()
()
( )
()
END_ORGANIZATION_BLOCK,
END_FUNCTION_BLOCK END_FUNCTION
,
.
.
:
FB
FUNCTION_BLOCK fb_name
...
END_FUNCTION_BLOCK
FC
OB
ORGANIZATION_BLOCK ob_name
...
END_ORGANIZATION_BLOCK
DB
DATA_BLOCK db_name
...
END_DATA_BLOCK
UDT
TYPE udt_name
...
END_TYPE
5-3
SCL
, xx_name :
0 65533,
DB0, .
,
STEP 7.
FUNCTION_BLOCK FB10
FUNCTION_BLOCK Controller Block
FUNCTION_BLOCK "Controller.B1&U2"
5-4
SCL
5.5
, ,
, , . STEP 7
,
.
:
TITLE = '
'
TITLE='SORT'
VERSION :'
.
'
( 0
15)
:
(DB),
.
VERSION : '3.1'
KNOW_HOW_PROTECT
; ,
,
STEP 7.
KNOW_HOW_PROTECT
AUTHOR :
:
,
AUTHOR : Siemens
NAME :
()
NAME : PID
FAMILY :
:
, motors.
,
().
FAMILY : example
//With a DB:
VERSION : 3.1
5-5
SCL
,
.
8 .
TITLE
'
'
Version
'
'
KNOW_HOW_PROTECT
AUTHOR
8
NAME
FAMILY
8
:
FUNCTION_BLOCK FB10
TITLE = 'Mean_Value'
VERSION : '2.1'
KNOW_HOW_PROTECT
AUTHOR : AUT_1
5-6
SCL
5.6
"TITLE:". .
, "//".
, , Properties ()
SIMATIC Manager LAD/STL/FBD.
FUNCTION_BLOCK FB15
TITLE=MY_BLOCK
//This is a block comment.
//It is entered as a series of line comments
//and can be displayed, for example, in the SIMATIC Manager.
AUTHOR...
FAMILY...
5-7
SCL
5.7
,
. .
:
24
:=
'
'
FUNCTION_BLOCK FB10
{S7_m_c := 'true' ;
S7_blockview := 'big'}
5.8
,
, .
5-8
, ,
, .
,
,
.
UDT, ,
.
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
SCL
,
.
. .
:
FB
FC
OB
CONST
LABEL
END_LABEL
VAR_TEMP
END_VAR
VAR
END_VAR
X *)
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR_IN_OUT
END_VAR
DB
UDT
X **)
X **)
END_CONST
*) VAR
END_VAR ,
, .
**) DB UDT VAR END_VAR
STRUCT END_STRUCT .
5-9
SCL
5.9
,
. , ,
.
.
,
/.
, /.
24 .
:
24
:=
'
'
VAR_INPUT
in1 {S7_server:='alarm_archiv';
S7_a_type:='ar_send'}: DWORD ;
END_VAR
5-10
SCL
5.10
, ,
. .
.
,
BEGIN. BEGIN .
.
, ,
.
, .
BEGIN
INITIAL_VALUE
:=0;
FINAL_VALUE
:=200;
.
.
STORE: RESULT
:=SETPOINT;
.
.
END_FUNCTION_BLOCK
5-11
SCL
5.11
.
,
.
SCL :
, .
:
//
MEASVAL:= 0 ;
//
FB1.DB11 (TRANSFER:= 10) ;
//
WHILE COUNTER < 10 DO..
.
.
END_WHILE;
5-12
SCL
5.12
(FB)
(FB) ,
. ,
FB , DB.
DB FB.
PROGRAM
FB
FUNCTION_BLOCK
FB
END_PROGRAM
BEGIN
END_FUNCTION_BLOCK
FB
FUNCTION_BLOCK PROGRAM,
FB
FB.
0 65533.
:
FUNCTION_BLOCK FB10
FUNCTION_BLOCK MOTOR1
FB
FB
. "
". , FB
DB.
5-13
SCL
.
( , V1) .
FUNCTION_BLOCK FB11
VAR_INPUT
V1 : INT := 7 ;
END_VAR
VAR_OUTPUT
V2 : REAL ;
END_VAR
VAR
FX1, FX2, FY1, FY2 : REAL ;
END_VAR
BEGIN
IF V1 = 7 THEN
FX1 := 1.5 ;
FX2 := 2.3 ;
FY1 := 3.1 ;
FY2 := 5.4 ;
// FC11
// .
V2 := FC11 (X1:= FX1, X2 := FX2, Y1 := FY1, Y2 := FY2) ;
END_IF ;
END_FUNCTION_BLOCK
5-14
SCL
5.13
(FC)
(FC) ,
. DB.
FB, (
) .
. VOID
.
FUNCTION
VOID
BEGIN
END_FUNCTION
FC
"FUNCTION",
FC
. 0 65533.
. , STRUCT ARRAY.
,
VOID.
5-15
SCL
FC
FC
( , , ,
/, , ).
FC
. , VOID.
FC31:
FC31:= VALUE;
5-16
SCL
5.14
(OB)
(OB), FB FC,
,
. OB
.
ORGANIZATION_BLOCK
BEGIN
OB
OB
END_ORGANIZATION_BLOCK
OB
"ORGANIZATION_BLOCK",
, OB
OB. 1 65533.
ORGANIZATION_BLOCK OB1
ORGANIZATION_BLOCK ALARM
OB
OB
( , , ).
OB 20
.
. OB,
.
ORGANIZATION_BLOCK OB1
VAR_TEMP
HEADER : ARRAY [1..20] OF BYTE ; //20
END_VAR
BEGIN
FB17.DB10 (V1 := 7) ;
END_ORGANIZATION_BLOCK
5-17
SCL
5.15
(DB)
, ,
. , FB, FC OB,
.
:
, S7 .
FB, FC OB
.
, FB ( DB)
,
(FB).
, .
SCL,
FB.
DATA_BLOCK
BEGIN
DB
DB
DB
END_DATA_BLOCK
DB
"DATA_BLOCK"
DB ,
DB. 1 65533.
:
DATA_BLOCK DB20
DATA_BLOCK MEASRANGE
5-18
SCL
DB
DB.
:
,
, .
UDT. DB
.
STRUCT
STRUCT,
, DB.
DB
UDT
DATA_BLOCK DB20
STRUCT //
VALUE:ARRAY [1..100] OF INT;
END_STRUCT
BEGIN
//
:
END_DATA_BLOCK
//
DB
,
,
.
BEGIN
.
DB
:=
Constant*
* STL
,
STL. ,
, online STL
STEP 7.
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
5-19
SCL
// STRUCT
DATA_BLOCK DB10
STRUCT //
VALUE
:
ARRAY [1..100] OF INT := 100 (1) ;
SWITCH
:
BOOL
:= TRUE ;
S_WORD :
WORD := W#16#FFAA ;
S_BYTE
:
BYTE := B#16#FF ;
S_TIME
:
S5TIME
:= S5T#1h30m10s ;
END_STRUCT
BEGIN
//
//
VALUE [1] := 5;
VALUE [5] := -1 ;
END_DATA_BLOCK
// ,
DATA_BLOCK DB11
UDT 51
BEGIN
END_DATA_BLOCK
5-20
SCL
5.16
, (UDT)
, . ,
,
.
CPU; , .
:
,
,
, , ,
SCL ,
.
TY PE
UDT
END_TY PE
UDT
TYPE, UDT
UDT. 0 65533.
:
TYPE UDT10
TYPE SUPPLYBLOCK
STRUCT.
UDT
, DB.
5-21
SCL
UDT
TYPE MEASVALUES
STRUCT
// UDT
BIPOL_1 : INT := 5;
BIPOL_2 : WORD := W#16#FFAA ;
BIPOL_3 : BYTE := B#16#F1 ;
BIPOL_4 : WORD := B#(25,25) ;
MEASURE : STRUCT
BIPOLAR_10V : REAL ;
UNIPOLAR_4_20MA : REAL ;
END_STRUCT ;
END_STRUCT ;
END_TYPE
// UDT FB
FUNCTION_BLOCK FB10
VAR
MEAS_RANGE : MEASVALUES;
END_VAR
BEGIN
// . . .
MEAS_RANGE.BIPOL_1 := -4 ;
MEAS_RANGE.MEASURE.UNIPOLAR_4_20MA := 2.7 ;
// . . .
END_FUNCTION_BLOCK
5-22
6
6.1
SCL
:
,
.
DIN EN 1131-3.
, , ,
, . SCL
:
BOOL
1 , 8 , 16
32
BYTE
WORD
DWORD
CHAR
1
ASCII
INT
DINT
REAL
TIME
DATE
STEP 7.
TIME_OF_DAY
S5TIME
6-1
SCL :
DATE_AND_TIME
64 (8 ).
( - ).
SCL.
DT
STRING
, 254
( CHAR).
ARRAY
,
( ).
STRUCT
, ,
.
, .
.
,
.
,
, .
TIMER
COUNTER
BLOCK_xx
ANY
POINTER
ANY
SCL ANY
.
.
6-2
6.2
6.2.1
- , 1 (
BOOL), 8, 16 32 .
: byte, word double word. ,
.
BOOL
0, 1 FALSE,
TRUE
BYTE
WORD
16
WORD .
DWORD
32
WORD.
6.2.2
ASCII.
CHAR
ASCII
6.2.3
(,
).
INT
16
WORD.
-32_768 32_767
DINT
32
WORD.
-2_147_483_648
2_147_483_647
REAL
32
WORD.
-3.402822E+38
-1.175495E-38
+/- 0
1.175495E-38 to 3.402822E+38
6-3
6.2.4
STEP 7 (,
).
S5
S5TIME
16
WORD.
T#0H_0M_0S_10MS
T#2H_46M_30S_0MS
S5T
:
IEC
1 ms.
TIME
T
32
WORD.
-T#24D_20H_31M_23S_647MS
T#24D_20H_31M_23S_647MS
IEC
1
DATE
D
16
WORD.
D#1990-01-01
D#2168-12-31
1 ms.
TIME_OF_DAY
TOD
32
WORD.
TOD#0:0:0.0
TOD#23:59:59.999
, ,
.
S5TIME ,
, , 0.01 s, 0.1 s,1s, 10 s.
.
, ,
.
6-4
6.3
6.3.1
DATE_AND_TIME
64 (8 ) ,
- :
, , , , , , .
DATE_AND_TIME
DATE_AND_ TIME #
DT#
"
".
DATE_AND_TIME
DT
64
DT#1990-01-01-0:0:0.0
DT#2089-12-31-23:59:59.999
WORD.
6-5
Date_And_Time BCD:
1990 2089
01 12
1 31
0 23
0 59
0 59
(2 )
00 99
7 (4..7
)
( )
0 9
7 (0..3
)
1 7
(1 =
)
20 1995 12:20:30 10
:
DATE_AND_TIME#1995-10-20-12:20:30.10
DT#1995-10-20-12:20:30.10
(FC) STEP 7
DATE TIME.
6-6
6.3.2
STRING
STRING 254
. , ,
256 . 254
2 .
, ,
, . , , ,
.
STRING
STRING
.
ASCII.
, ,
. , $hh, hh -
ASCII, (: '$0D$0AText' ).
,
, .
, 254.
VAR
Text1 : String [123];
Text2 : String;
END_VAR
"123" "Text1"
. "Text2",
254 .
6-7
, /
, (254),
CPU. Options > Customize
( > ) "Maximum
String Length ( )" "Compiler
()". ,
STRING . , ,
, STRING, .
, ,
- (FB).
(FC).
, ,
.
,
.
x : STRING[7]:='Address';
STRING, ,
,
, ,
, .
STRING ,
, .
STRING WORD.
6-8
6.3.3
ARRAY
(ARRAY) .
SCL :
. ,
.
. , .
-
.
.
. 6.
ARRAY
ARRAY
..
,
6
OF
()
.
(-32768 32767).
.
.
6-9
, .
ARRAY,
. , ,
STRUCT.
.
VAR
CONTROLLER1 :
ARRAY[1..3,1..4] OF INT := -54, 736,
-83,
-1289,10362,
385,
2,
60, -37, -7, 103 ;
CONTROLLER2 : ARRAY[1..10] OF REAL ;
END_VAR
77,
ARRAY .
BOOL, BYTE CHAR
BYTE, - WORD.
6-10
6.3.4
STRUCT
STRUCT ,
, .
() STRUCT
.
STRUCT - .
, ()
STRUCT.
STRUCT
STRUCT
END_STRUCT
STRUCT. :
1 n
,
.
, ,
.
, .
6-11
VAR
MOTOR : STRUCT
DATA : STRUCT
LOADCURR : REAL ;
VOLTAGE : INT := 5 ;
END_STRUCT ;
END_STRUCT ;
END_VAR
STRUCT WORD.
6-12
6.4
6.4.1
(UDT)
(UDT) .
, ,
, .
,
, UDTx (x ), .
, , ,
.
.
TY PE
UDT
END_TY PE
UDT
TYPE, (UDT
). , ,
,
UDTx (x - ), .
:
TYPE UDT10
TYPE MEASVALUES
6-13
UDT .
, , STRUCT.
STRUCT
:
END_STRUCT
STL. ,
().
online help STL.
// UDT
TYPE MEASVALUES:
STRUCT
BIPOL_1 : INT := 5;
BIPOL_2 : WORD := W#16#FFAA ;
BIPOL_3 : BYTE := B#16#F1 ;
BIPOL_4 : WORD := W#16#1919 ;
MEASURE : STRUCT
BIPOLAR_10V : REAL ;
UNIPOLAR_4_20MA : REAL ;
END_STRUCT;
END_STRUCT;
END_TYPE
// UDT FB
FUNCTION_BLOCK FB10
VAR
MEAS_RANGE : MEASVALUES;
END_VAR
BEGIN
// . . .
MEAS_RANGE.BIPOL_1 := -4 ;
MEAS_RANGE.MEASURE.UNIPOLAR_4_20MA := 2.7 ;
// . . .
END_FUNCTION_BLOCK
6-14
6.5
6.5.1
FB FC, .
TIMER
2
.
: T1
COUNTER
2
.
BLOCK_FB
BLOCK_FC
BLOCK_DB
BLOCK_SDB
2
.
ANY
10 ,
, ANY.
POINTER
: C10
: FC101,
DB42
,
.
: M50.0
6.5.2
TIMER COUNTER
,
. TIMER COUNTER
(VAR_INPUT).
6-15
6.5.3
FB FC.
(FB, FC, DB).
.
.
BLOCK_DB,
(myDB.dw10). SCL
.
. ,
.
SCL
:
6.5.4
( VOID)
POINTER
POINTER
. , ( ANY).
SCL , ,
POINTER, , .
, POINTER,
, :
POINTER
,
.
NIL
.
6-16
POINTER
/ FB FC, FC.
(
NIL).
POINTER
,
FB FC.
.
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
6.6
ANY
SCL ANY :
;
.
,
.
(, ):
DB ( )
(
)
NIL
.
ANY
,
(, T1, C20 FB6).
6-17
6-18
ANY /
FB FC, FC.
( NIL).
, FB FC,
ANY .
.
ANY
.
6.6.1
ANY
VAR_INPUT
iANY : ANY;
END_VAR
VAR_TEMP
pANY : ANY;
END_VAR
CASE ii OF
1:
pANY := MW4;
// pANY MW4
3..5:
pANY:= aINT[ii]; //pANY ii-
// aINT;
100:
pANY:= iANY;
//pANY iANY
variable
ELSE
pANY := NIL;
// pANY NIL
END_CASE;
SFCxxx(IN := pANY);
6-19
6-20
7.1
,
( ).
.
-
. ,
CPU.
. ,
.
- -,
. -
, , ,
.
.
, :
. .
. .
/ / ,
. ,
.
7-1
( OK )
SCL ,
, CPU.
BOOL OK".
7-2
7.2
,
. ,
.
(
) .
.
1)
AT
-2)
1)
2) AT
VALUE1 :
REAL;
if there are several variables of the same type:
VALUE2, VALUE3,VALUE4,....: INT;
ARR
:
ARRAY[1..100, 1..10] OF REAL;
SET
:
STRUCT
MEASARR : ARRAY[1..20] OF REAL;
SWITCH : BOOL;
END_STRUCT
, "#" (,
#FOR).
7-3
7.3
FB ,
, .
/ ,
. ,
(:=) .
:=
VALUE
:REAL := 20.25;
,
, , ,
( ),
.
7-4
VAR
// :
INDEX1 : INT := 3 ;
// :
CONTROLLER1 : ARRAY [1..2, 1..2] OF INT := -54, 736, -83,
77;
CONTROLLER2 : ARRAY[1..10] OF REAL := 10(2.5);
// :
GENERATOR:
STRUCT
DAT1 : REAL
:= 100.5;
A1 :
INT
:= 10 ;
A2 :
STRING[6]
:= 'FACTOR';
A3 :
ARRAY[1..12] OF REAL := 0.0, 10(100.0), 1.0;
END_STRUCT ;
END_VAR
7-5
7.4
,
, ,
"AT".
; .
.
, ;
.
:
VAR_INPUT
Buffer : ARRAY[0..255] OF BYTE;
Frame1 AT Buffer : UDT100 ;
Frame2 AT Buffer : UDT200 ;
END_VAR
,
Frame1 Frame2. ,
, Buffer, Frame1 Frame2,
( UDT100 UDT200).
7-6
,
.
. .
.
:
FB
VAR,
VAR_TEMP, VAR_IN
VAR_OUT
VAR_IN_OUT
FC
VAR VAR_TEMP
VAR_IN, VAR_OUT
VAR_IN_OUT
ANY/POINTER
ANY/POINTER
x
x
x (1)
x (1)
x
ANY/POINTER
ANY/POINTER
x
X
x
ANY/POINTER
7-7
7.5
,
, S7 CPU.
FB
( FB),
.
:
7.6
FB, ,
.
FB, ,
.
,
.
FB
SFB (VAR; END_VAR)
,
.
FB SFB.
FB. .
, ,
. , ,
.
FB
!
FB
:
SFB
Supply1 : FB10;
Supply2,Supply3,Supply4 : FB100;
Motor1
: Motor ;
Motor FB, .
7-8
7.7
( OK)
OK .
BOOL OK".
OK TRUE.
TRUE / FALSE,
SCL.
(, ), OK
FALSE. , OK
ENO .
OK - . . ,
OK ,
"Set OK flag (
) ".
// OK TRUE
//
// .
OK:= TRUE;
Division := 1 / IN;
IF OK THEN
// .
// :
// :
ELSE
// .
// :
END_IF;
7-9
7.8
7.8.1
, .
, .
.
,
:
FB
FC
VAR
...
END_VAR
X *)
VAR_TEMP
...
END_VAR
VAR_INPUT
...
END_VAR
VAR_OUTPUT
...
END_VAR
VAR_IN_OUT
...
END_VAR
OB
*) VAR END_VAR
,
.
7-10
7.8.2
, . FB .
VAR / END_VAR.
FB.
.
:
,
.
FB, FB,
FB
.
END_VAR
VAR
VAR
RUN
:INT;
MEASARR
:ARRAY [1..10] OF REAL;
SWITCH
:BOOL;
MOTOR_1,MOTOR_2 :FB100;
//
END_VAR
:
,
. " ".
7-11
7.8.3
, DB:
, , DBx.variable,
.
CPU. .
, .
OB, FB FC ,
. .
,
, OB, FB
FC.
VAR_TEMP / END_VAR.
FB, FC OB.
.
VAR_TEMP
END_VAR
VAR_TEMP
BUFFER 1
AUX1, AUX2
END_VAR
,
( ).
.
7-12
7.8.4
-, .
- ,
.
,
.
( ).
( )
/ , .
,
.
. FB
.
,
, ,
.
VAR_INPUT
VAR_OUTPUT
END_VAR
VAR_IN_OUT
VAR_INPUT VAR_OUTPUT
7-13
VAR_INPUT
//
MY_DB : BLOCK_DB ;
CONTROLLER : DWORD ;
TIMEOFDAY
: TIME_OF_DAY ;
END_VAR
VAR_OUTPUT
//
SETPOINTS: ARRAY [1..10] of INT ;
END_VAR
VAR_IN_OUT
SETTING : INT ;
END_VAR
// _
7-14
: ,
.
, .
, :
DB,
.
8
8.1
,
.
SCL.
8-1
8.1.1
. , ,
.
, CONST
.
, .
, .
CONST
:=
END_CONST
(*, /, +, -, **, DIV, MOD).
CONST
Number
TIMEOFDAY1
NAME
NUMBER2
NUMBER3
END_CONST
8-2
:= 10 ;
:= TIME#1D_1H_10M_22S_2MS ;
:= 'SIEMENS' ;
:= 2 * 5 + 10 * 4 ;
:= 3 + NUMBER2 ;
8.1.2
,
STL:
, , :
Int1:=Int2 + 12345
Real1:=Real2 + 12345
//"12345" INT
//"12345" REAL
,
.
"12345" INT STL,
ANY_NUM;
, ,
INT, DINT, REAL.
,
.
:
BOOL
BOOL#1
Bool#false
bool#0
BOOL#TRUE
BYTE
BYTE#0
Byte#''
B#2#101
b#16#f
WORD
WORD#32768
W#2#1001_0100
word#16#f
WORD#8#177777
DWORD
DWORD#16#f000_0000
DW#2#1111_0000_1111_0000
dword#32768
DWord#8#37777777777
INT
INT#16#3f_ff
Int#2#1111_0000
int#-32768
inT#8#77777
DINT
DINT#16#3fff_ffff
DInt#2#1111_0000
dint#-1000_0000
dinT#8#17777777777
REAL
REAL#1
real#2e4
real#1.5
real#3.1
CHAR
CHAR#A
CHAR#49
8-3
8.1.3
.
. :
15
2#1111
16#F
15
15
15
SCL
BOOL
FALSE
TRUE
BOOL#0
BOOL#1
BOOL#FALSE
BOOL#TRUE
BYTE
8-
B#16#00
B#16#FF
BYTE#0
B#2#101
Byte#''
b#16#f
CHAR
8-
(1 ASCII)
'A'
CHAR#49
STRING
254 ASCII
'Address'
WORD
16-
W#16#0000
W#16#FFFF
word#16#f
STL
()
WORD#8#177777
8#177777
16-
W#2#1001_0100
WORD#32768
16-
DWORD
32-
DW#16#0000_0000
DW#16#FFFF_FFFF
32-
Dword#8#37777777777
8#37777777777
DW#2#1111_0000_1111_0000
dword#32768
32-
8-4
SCL
INT
16-
-32768
+32767
INT#16#3f_ff
int#-32768
Int#2#1111_0000
inT#8#77777
DINT
32-
-2147483648
+2147483647
DINT#16#3fff_ffff
dint#-1000_0000
Dint#2#1111_0000
dinT#8#17777777777
REAL
32-
123.4567
REAL#1
real#1.5
STL
()
L#-2147483648
L#+2147483647
real#2e4
+1.234567E+02
S5TIME
16-
SIMATIC
T#0ms
TIME#2h46m30s
T#0.0s
TIME#24.855134d
TIME
32-
IEC
T#-24d20h31m23s647ms
TIME#24d20h31m23s647ms
T#0.0s
TIME#24.855134d
DATE
16-
D#1990-01-01
DATE#2168-12-31
TIME_OF_DAY
32-
TOD#00:00:00
TIME_OF_DAY#23:59:59.999
DATE_AND_
TIME
DT#95-01-01-12:12:12.2
S5T#0ms
S5TIME#2h46m30s
8-5
8.1.3.1
1, 8, 16 32 .
SCL , , BOOL,
BYTE, WORD DWORD.
BOOL#
BYTE#
WORD#
(1)
DWORD#
(1) BYTE
, ,
( ).
,
.
:
dword#32768
,
, 2#, 8# 16#
, .
:
8#
:
Bool#false
8#177777
DW#16#0000_0000
8-6
8.1.3.2
16
32 . SCL , ,
INT DINT.
INT#
DINT#
(1)
(1) INT
, ,
(
). ,
.
:
1000
1_120_200
666_999_400_311
,
,
, 2#, 8# 16# ,
.
:
Value_2:=2#0101; // , 5
Value_3:=8#17;
// , 14
Value_4:=16#F;
// 16- , 15
Value_5:=INT#16#3f_ff // 16- , ,
//
8-7
8.1.3.3
.
REAL.
REAL#
-
. ,
.
, ,
(
). ,
.
:
1000
1_120_200
666_999_400_311
. "E" "e"
.
SCL :
3.0E+10
0.3E+11
3.0E10 3e+10
0.3e11 30.0E+9 30e9
3E10
NUM4:= -3.4 ;
NUM5:= 4e2 ;
NUM6:= real#1.5;
8-8
8.1.3.4
( )
.
(').
.
'
CHAR#
'
Charac_1 := 'B';
Charac_2 := char#43;
Charac_3 := char#'B';
ASCII. , (') $,
, $.
ASCII.
.
Escape $
$ '
*P L R T N
*P =
L =
R =
T =
N =
CHARACTER
:= '$41' ;
// 'A'
Blank
:='$20'; // '_'
8-9
8.1.3.5
, 254 .
.
.
'
'
ASCII. , (') $,
, $.
ASCII.
.
Escape $
$ '
*P L R T N
*P =
L =
R =
T =
N =
8-10
,
.
SCL
. $>,
$<.
.
,
,
,
,
$>
$<
// :
NAME := 'SIEMENS';
//
MESSAGE1:= 'MOTOR- $>
$< Controller';
// :
MESSAGE1:= '$41$4E' (*character string AN*);
8-11
8.1.3.6
DATE
DATE# D# .
: (4 ), , .
TIMEVARIABLE1:= DATE#1995-11-11 ;
TIMEVARIABLE2:= D#1995-05-05 ;
8-12
8.1.3.7
TIME# T#.
:
TIME#
T#
- (, , ..) .
- : , , , , .
,
.
T# TIME#
.
, ,
, , .
MS
8-13
. , . . .
.
. .
MS
//
Interval1:= TIME#10.5S ;
//
Interval2:= T#3D_2S_3MS ;
//
Interval3 := T#2D_2.3s ;
8-14
8.1.3.8
TIME_OF_DAY# TOD#.
TIME_OF_DAY #
TOD#
, ,
. .
.
TIMEOFDAY1:= TIME_OF_DAY#12:12:12.2 ;
TIMEOFDAY2:= TOD#11:11:11 ;
8-15
8.1.3.9
DATE_AND_TIME# DT#.
.
DATE_AND_ TIME #
DT#
TIMEOFDAY1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ;
TIMEOFDAY2:= DT#1995-02-02-11:11:11;
8-16
8.2
8.2.1
GOTO.
,
.
LABEL
END_LABEL
LABEL
LAB1, LAB2, LAB3;
END_LABEL
8-17
8-18
9
9.1
SCL .
:
CPU
, .
CPU.
.
,
.
.
:
.
:
.
: .
: .
CPU
9-1
9.2
9.2.1
CPU
CPU
CPU , .
. CPU ,
, CPU:
(, Q1.0)
(, PQ1.0)
(, M1.0)
, (, C1)
CPU, :
,
,
9-2
9.2.2
CPU
CPU
, ,
.
STATUS_2:= IB10;
CPU.
( IB),
( 10).
, .
E
A
M
PE
PA
M
PI
PQ
,
, .
9-3
. , ,
.
, .
X
,
, , . .
STATUSBYTE
:=IB10;
STATUS_3 :=I1.1;
MEASVAL :=IW20;
9-4
9.2.3
CPU
CPU,
.
. ,
Options >
Symbol Table ( > ).
,
. ,
.
Symbol
Absolute Address
Data Type
Comments
Motor_contact_1
I1.7
BOOL
Input1
IW 10
INT
MEASVAL_1 := Motor_contact_1;
Status_Motor1 := Input1 ;
9-5
9.2.4
CPU
CPU ,
.
, ,
. , ,
FOR.
.
.
, ,
.
( )
.
X [i,j]
( )
INT.
BOOL .
, .
MEASVAL_1
OUTLABEL
9-6
:=IW[COUNTER];
:=I[BYTENO, BITNO];
9.3
9.3.1
,
.
.
DB
DB
D B
D B
DB
DB
9-7
9.3.2
,
,
CPU. DB,
"D", (, X ) , ,
DB ( 13.1).
STATUS_5:= DB11.DX13.1;
DB
DB
.
DB
DB
,
. , , DB.
,
.
X
9-8
, , ,
, ( ).
.
.
STATUSBYTE
STATUS_3
MEASVAL
:=DB101.DB10;
:=DB30.D1.1;
:=DB25.DW20;
STATUSBYTE
STATUS_3
MEASVAL
:=Status_data.DB10;
:="New data".D1.1;
:=Measdata.DW20;
STATUS_1
:=WORD_TO_BLOCK_DB (INDEX).DW10;
9-9
9.3.3
.
, ,
. , ,
FOR.
.
.
,
, .
DB,
( "D" )
.
DB D
X [i,j]
DB
BOOL .
, .
INT (0 32767).
STATUS_1:= DB11.DW[COUNTER];
STATUS_2:= DB12.DX[WNO, BITNO];
STATUS_1:= Database1.DW[COUNTER];
STATUS_2:= Database2.DX[WNO, BITNO];
STATUS_1:= WORD_TO_BLOCK_DB(INDEX).DW[COUNTER];
9-10
9.3.4
,
.
.
DB
, .
DB
,
DB.
BLOCK_DB WORD_TO_BLOCK_DB,
,
.
FB10:
VAR
Result: STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
END_VAR
UDT1
TYPE UDT1 STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
DB20 :
DB20
UDT1
BEGIN ...
DB30 :
DB30
STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
BEGIN ...
9-11
FB :
..
FB10.DB10();
RESWORD_A := DB10.Result.RES2;
RESWORD_B := DB20.RES2;
RESWORD_C := DB30.RES2;
9-12
10 ,
10.1
,
,
(, ,
) (, *, /, + -).
. SCL
:
10-1
10.2
. SCL
, ,
.
.
(, A + B).
(, -B).
, `1'
.
:=
11
**
*
/
MOD
DIV
<
>
<=
>=
<>
NOT
AND or &
XOR
OR
10
()
10-2
10.3
, .
:
( )
NOT
,
.
:
4_711
4711
30.0
'CHARACTER'
FACTOR
10-3
, .
CPU
DB
DB
FC
:
SETPOINT
IW10
I100.5
DB100.DW [INDEX]
DB
MOTOR.SPEED
SQR (20)
FC192 (SETPOINT)
,
, .
VOID, ,
.
10-4
10.4
**
+
NOT
( ).
10-5
, ,
.
-1.
.
a * - b , a*(-b).
;
.
. 'A' + 'B' (n <= 0) + (m > 0)
.
IB10
A1 AND (A2)
(A3) < (A4)
3+3*4/2
10-6
//
//
//
//
10.5
SCL .
.
/
DIV
MOD
SIMP_EXPRESSION= A * B + D / C - 3 * VALUE1;
10-7
10.6
,
.
.
, , .
:
ANY_INT
INT, DINT
ANY_NUM
**
ANY_NUM
ANY_NUM
REAL
ANY_NUM
ANY_NUM
TIME
TIME
ANY_NUM
ANY_NUM
TIME
*
/
DIV
MOD
TIME
ANY_NUM
ANY_NUM
ANY_NUM
TIME
ANY_INT
TIME
ANY_NUM
ANY_NUM
ANY_NUM
TIME
ANY_INT
TIME
ANY_INT
ANY_INT
ANY_INT
TIME
ANY_INT
TIME
ANY_INT
ANY_INT
ANY_INT
ANY_NUM
ANY_NUM
ANY_NUM
TIME
TIME
TIME
TOD
TIME
TOD
DT
TIME
DT
ANY_NUM
ANY_NUM
ANY_NUM
TIME
TIME
TIME
TOD
TIME
TOD
DATE
DATE
TIME
TOD
TOD
TIME
DT
TIME
DT
DT
DT
TIME
,
. , , INTEGER,
REAL .
10-8
, .
,
DIV" /" (. ).
INT (),
REAL ( ),
REAL.
// (11)
// "VALUE"
VALUE1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ;
// VALUE2 1
VALUE2 := 9 MOD 2 ;
10-9
10.7
,
.
AND, &, XOR
OR, ( BOOL) BYTE, WORD
DWORD. NOT.
AND
&
NOT
XOR
OR
:
TRUE
FALSE,
.
.
:
ANY_BIT
NOT
ANY_BIT
ANY_BIT
AND
ANY_BIT
ANY_BIT
ANY_BIT
XOR
ANY_BIT
ANY_BIT
ANY_BIT
OR
ANY_BIT
ANY_BIT
ANY_BIT
10
:
:
10-10
1 (true) 0 (false), ,
,
.
// .
IF NOT (COUNTER > 5) THEN . . . ;
//
//
A := NOT (COUNTER1 = 4) AND (COUNTER2 = 10) ;
//
WHILE (A >= 9) OR (SCAN <> "n") DO.... ;
// ( )
Result := IB10 AND 2#11110000 ;
10-11
10.8
. TRUE,
, FALSE, .
<
>
<=
>=
<>
CHAR, STRING
:
DT, TIME, DATE, TOD
( CHAR), ASCII
.
S5TIME .
S5TIME TIME
IEC.
"if a < b and b
< c then ...".
(: Value_A > 20 AND Value_B < 20)
.
.
:
A<>(B AND C)
// 3 4.
// "TRUE" ()
A := 3 <= 4
// 7 7. "FALSE" ()
7 <> 7
// IF
IF COUNTER < 5 THEN ...
10-12
11
11.1
, .
,
( ).
, ,
,
.
, .
:=
CPU
DB
DB
.
.
11-1
11.1.1
.
Identifier := Expression ;
Identifier := Variable ;
FUNCTION_BLOCK FB12
VAR
SWITCH_1
: INT ;
SWITCH_2
: INT ;
SETPOINT_1
: REAL ;
SETPOINT_2
: REAL ;
QUERY_1 : BOOL ;
TIME_1
: S5TIME ;
TIME_2
: TIME ;
DATE_1
: DATE ;
TIMEOFDAY_1 : TIME_OF_DAY ;
END_VAR
BEGIN
//
SWITCH_1
:= -17 ;
SETPOINT_1 := 100.1 ;
QUERY_1
:= TRUE ;
TIME_1
:= T#1H_20M_10S_30MS ;
TIME_2
:= T#2D_1H_20M_10S_30MS ;
DATE_1
:= D#1996-01-10 ;
//
SETPOINT_1 := SETPOINT_2 ;
SWITCH_2 := SWITCH_1 ;
//
SWITCH_2 := SWITCH_1 * 3 ;
END_FUNCTION_BLOCK
11-2
11.1.2
STRUCT UDT
STRUCT UDT ,
.
:
Image
Image.element
Image.arr
Image.arr[2,5]
//
//
//
//
//
//
,
.
:
structname_1 := structname_2 ;
, .
,
, .
:
structname_1.element1
structname_1.element1
structname_1.element1
structname_1.arrname1
structname_1.arrname[10]
:= Value ;
:= 20.0 ;
:= structname_2.element1 ;
:= structname_2.arrname2 ;
:= 100 ;
11-3
FUNCTION_BLOCK FB3
VAR
AUXVAR : REAL ;
MEASVAL : STRUCT //
VOLTAGE:REAL ;
RESISTANCE:REAL ;
SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;
END_STRUCT ;
PROCVAL : STRUCT //-
VOLTAGE : REAL ;
RESISTANCE : REAL ;
SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;
END_STRUCT ;
END_VAR
BEGIN
//
MEASVAL := PROCVAL ;
//
MEASVAL.VOLTAGE := PROCVAL.VOLTAGE ;
//
AUXVAR := PROCVAL.RESISTANCE ;
//
MEASVAL.RESISTANCE := 4.5;
//
MEASVAL.SIMPLEARR[1,2] := 4;
END_FUNCTION_BLOCK
11-4
11.1.3
ARRAY
.
.
.
,
,
( ). ,
, .
:
arrname_1 := arrname_2 ;
.
.
.
INT.
,
, .
,
. :
arrname_1[ i ]
arrname_1[ i ]
identifier_1
:= arrname_2[ j ] ;
:= expression ;
:= arrname_1[ i ] ;
11-5
FUNCTION_BLOCK FB3
VAR
SETPOINTS
:ARRAY [0..127] OF INT ;
PROCVALS
:ARRAY [0..127] OF INT ;
// ( )
// 3 4
CRTLLR : ARRAY [1..3, 1..4] OF INT ;
// ( ) 4
CRTLLR_1 : ARRAY [1..4] OF INT ;
END_VAR
BEGIN
//
SETPOINTS := PROCVALS ;
// CRTLLR
//
CRTLLR [1,4] := CRTLLR_1 [4] ;
END_FUNCTION_BLOCK
11-6
CRTLLR[2] := CRTLLR_1 ;
11.1.4
STRING
STRING 254
. STRING
. :
stringvariable_1 := stringconstant;
stringvariable_1 := stringvariable_2 ;
FUNCTION_BLOCK FB3
VAR
DISPLAY_1
: STRING[50] ;
STRUCTURE1
: STRUCT
DISPLAY_2
: STRING[100] ;
DISPLAY_3
: STRING[50] ;
END_STRUCT ;
END_VAR
BEGIN
// STRING
DISPLAY_1 := 'Error in module 1' ;
// STRING
DISPLAY_1 := STRUCTURE1.DISPLAY_3 ;
// STRING STRING
If DISPLAY_1 <> STRUCTURE1.DISPLAY_3 THEN
DISPLAY_1 := STRUCTURE1.DISPLAY_3 ;
END_IF;
END_FUNCTION_BLOCK
11-7
11.1.5
DATE_AND_TIME
DATE_AND_TIME , 64 (8
), .
DATE_AND_TIME
. :
dtvariable_1 := date_and_time_constant;
dtvariable_1 := dtvariable_2 ;
FUNCTION_BLOCK FB3
VAR
TIME_1
: DATE_AND_TIME ;
STRUCTURE1
:
STRUCT
TIME_2 : DATE_AND_TIME ;
TIME_3 : DATE_AND_TIME ;
END_STRUCT ;
END_VAR
BEGIN
// DATE_AND_TIME
TIME_1 := DATE_AND_TIME#1995-01-01-12:12:12.2 ;
STRUCTURE1.TIME_3 := DT#1995-02-02-11:11:11 ;
//
// DATE_AND_TIME
TIME_1 := STRUCTURE1.TIME_2 ;
// DATE_AND_TIME
//
If TIME_1 < STRUCTURE1.TIME_3 THEN
TIME_1 := STRUCTURE1.TIME_3 ;
END_IF ;
END_FUNCTION_BLOCK
11-8
11.1.6
CPU
CPU
.
:
FUNCTION_BLOCK FB3
VAR
STATUSWORD1 : WORD ;
STATUSWORD2 : BOOL ;
STATUSWORD3 : BYTE ;
STATUSWORD4 : BOOL ;
ADDRESS: INT ;
END_VAR
BEGIN
ADDRESS := 10 ;
// (
// )
STATUSWORD1 := IW4 ;
// (
// )
a1.1 := STATUSWORD2 ;
// (
// )
STATUSWORD3 := IB[ADDRESS] ;
// (
// )
FOR ADDRESS := 0 TO 7 BY 1 DO
STATUSWORD4 := e[1, ADDRESS] ;
END_FOR ;
END_FUNCTION_BLOCK
11-9
11.1.7
.
, .
:
DB
DB
DB
11-10
FUNCTION_BLOCK FB3
VAR
CRTLLR_1
: ARRAY [1..4] OF INT ;
STATUSWORD1 : WORD ;
STATUSWORD2 : ARRAY [0..10] OF WORD ;
STATUSWORD3 : INT ;
STATUSWORD4 : WORD ;
ADDRESS: INT ;
END_VAR
VAR_INPUT
ADDRESSWORD : WORD ;
END_VAR
BEGIN
// 1 DB11
// ( )
STATUSWORD1 := DB11.DW1 ;
//
// "NUMBER" DB11 ( ):
CRTLLR_1[1] := DB11.NUMBER ;
// "NUMBER2"
// "NUMBER1" STATUSWORD3
STATUSWORD3 := DB11.NUMBER1.NUMBER2 ;
//
// DB11
FOR
ADDRESS := 1 TO 10 BY 1 DO
STATUSWORD2[ADDRESS] := DB11.DW[ADDRESS] ;
// ADDRESSWORD
// DB ADDRESS // DB.
STATUSWORD4 := WORD_TO_BLOCK_DB(ADDRESSWORD).DW[ADDRESS]
;
END_FOR ;
END_FUNCTION_BLOCK
11-11
11.2
11.2.1
IF
IF
.
CASE
CASE
n ,
.
, .
,
.
FOR
WHILE
REPEAT
, .
CONTINUE
.
11-12
EXIT
GOTO
RETURN
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
11.2.2
,
. BOOL
TRUE FALSE.
TRUE, , FALSE,
. :
TEMP > 50
COUNTER <= 100
CHAR1 < 'S'
I 1.1
ALPHA = (5 + BETA)
11-13
11.2.3
IF
IF .
( )
.
. TRUE,
, FALSE, .
IF
IF
THEN
THEN
ELSIF
ELSE
END_IF
IF :
,
TRUE.
.
TRUE,
ELSE (,
ELSE ,
).
ELSIF.
ELSIF :
, , ,
IF. ,
.
11-14
IF I1.1 THEN
N := 0 ;
SUM := 0 ;
OK := FALSE ; // OK FALSE
ELSIF START = TRUE THEN
N := N + 1 ;
SUM := SUM + N ;
ELSE
OK := FALSE ;
END_IF ;
11-15
11.2.4
CASE
CASE
.
.
CASE
- ()
CASE
OF
ELSE
END_CASE
CASE :
11-16
INTEGER.
CASE, ,
. ,
.
,
ELSE, , ELSE
, .
,
.
. .
,
.
INTEGER.
CASE TW OF
1:
DISPLAY:= OVEN_TEMP;
2:
DISPLAY:= MOTOR_SPEED;
3:
DISPLAY:= GROSS_TARE;
QW4:= 16#0003;
4..10:
DISPLAY:= INT_TO_DINT (TW);
QW4:= 16#0004;
11,13,19:
DISPLAY:= 99;
QW4:= 16#0005;
ELSE:
DISPLAY:= 0;
TW_ERROR:= 1;
END_CASE ;
11-17
11.2.5
FOR
,
.
INT
DINT. FOR
.
, .
FOR
FOR
TO
BY
DO
END_FOR
FOR :
( )
(
) ( ), ,
.
,
. ,
,
.
FOR
11-18
INT
DINT.
BY [].
, +1.
, .
INT DINT.
:=
INT/DINT
:
FOR I := 1 TO 20
FOR I := 1 TO (START + J)
.
:
FOR
+
BY [].
, +1.
,
(. ", ").
FOR.
11-19
FUNCTION_BLOCK FOR_EXA
VAR
INDEX: INT ;
IDWORD: ARRAY [1..50] OF STRING;
END_VAR
BEGIN
FOR INDEX := 1 TO 50 BY 2 DO
IF IDWORD [INDEX] = 'KEY' THEN
EXIT;
END_IF;
END_FOR;
END_FUNCTION_BLOCK
11-20
11.2.6
WHILE
WHILE
, .
.
WHILE
WHILE
DO
END_WHILE
WHILE :
, DO, ,
TRUE.
FALSE, ,
.
FUNCTION_BLOCK WHILE_EXA
VAR
INDEX: INT ;
IDWORD: ARRAY [1..50] OF STRING ;
END_VAR
BEGIN
INDEX := 1 ;
WHILE INDEX <= 50 AND IDWORD[INDEX] <> 'KEY' DO
INDEX := INDEX + 2;
END_WHILE ;
END_FUNCTION_BLOCK
11-21
11.2.7
REPEAT
REPEAT
REPEAT UNTIL
.
.
REPEAT
REPEAT
UNTIL
END_REPEAT
. ,
, ,
.
FUNCTION_BLOCK REPEAT_EXA
VAR
INDEX: INT ;
IDWORD: ARRAY [1..50] OF STRING ;
END_VAR
BEGIN
INDEX := 0 ;
REPEAT
INDEX := INDEX + 2 ;
UNTIL INDEX > 50 OR IDWORD[INDEX] = 'KEY'
END_REPEAT ;
END_FUNCTION_BLOCK
11-22
11.2.8
CONTINUE
CONTINUE
(FOR, WHILE REPEAT).
CONTINUE
CONTINUE
CONTINUE
:
,
.
FOR,
CONTINUE .
FUNCTION_BLOCK CONTINUE_EXA
VAR
INDEX :INT ;
ARRAY :ARRAY[1..100] OF INT ;
END_VAR
BEGIN
INDEX := 0 ;
WHILE INDEX <= 100 DO
INDEX := INDEX + 1 ;
// ARRAY[INDEX] INDEX,
// ARRAY [INDEX] :
IF ARRAY[INDEX] = INDEX THEN
CONTINUE ;
END_IF ;
ARRAY[INDEX] := 0 ;
//
END_WHILE ;
END_FUNCTION_BLOCK
11-23
11.2.9
EXIT
EXIT (FOR, WHILE
REPEAT) ,
.
EXIT
EXI T
EXIT :
,
.
(, END_FOR).
FUNCTION_BLOCK EXIT_EXA
VAR
INDEX_1 : INT ;
INDEX_2 : INT ;
INDEX_SEARCH : INT ;
IDWORD : ARRAY[1..51] OF STRING ;
END_VAR
BEGIN
INDEX_2 := 0 ;
FOR INDEX_1
:= 1 TO 51 BY 2 DO
// FOR,
// IDWORD[INDEX_1] 'KEY':
IF IDWORD[INDEX_1] = 'KEY' THEN
INDEX_2 := INDEX_1 ;
EXIT ;
END_IF ;
END_FOR ;
//
// EXIT
// FOR:
INDEX_SEARCH := INDEX_2 ;
END_FUNCTION_BLOCK
11-24
11.2.10 GOTO
, GOTO.
,
, , , .
GOTO ,
.
GOTO .
GOTO
GOTO
LABEL/END_LABEL. ,
GOTO.
GOTO, :
o
, .
FUNCTION_BLOCK GOTO_EXA
VAR
INDEX : INT ;
A : INT ;
B : INT ;
C : INT ;
IDWORD : ARRAY[1..51] OF STRING ;
END_VAR
LABEL
LAB1, LAB2, LAB3 ;
END_LABEL
BEGIN
IF A > B THEN
GOTO LAB1 ;
ELSIF A > C THEN
GOTO LAB2 ;
END_IF ;
// . . .
LAB1: INDEX := 1 ;
GOTO LAB3 ;
LAB2: INDEX := 2 ;
// . . .
LAB3:
// . . .
11-25
11.2.11 RETURN
RETURN
(OB, FB, FC)
, OB.
RETURN
RETURN
RETURN
,
.
11-26
11.3
11.3.1
FC FB
,
,
(FB) (FC).
SCL FC FB.
:
, SCL
, STEP 7
(LAD, FBD, STL)
(SFC) (SFB),
CPU.
,
. ,
, .
.
" , ,
. , ,
.
.
.
, , , /
.
3
LENGTH
Digitsum
I_Par
IO_Par
O_Par
11-27
.
( ) ,
( ).
:
FB10.DB20 (X1:=5,X2:=78,......);
:
DRIVE.ON (X1:=5,X2:=78,......);
11.3.2
,
,
.
FB FB
.
DB, FB.
FB:
SFB:
FB
SFB
DB
FB
11-28
( FB SFB),
( DB),
FB.
.
:
FB10.DB20 (X1:=5,X2:=78,......);
:
DRIVE.ON (X1:=5,X2:=78,......);
()
FB
.
.
MOTOR (X1:=5,X2:=78,......);
11-29
11.3.2.1 FB
(
) :
FB .
FB
FB
.
FB
FB .
.
FB,
.
ANY POINTER.
/
; /
.
/
:
FB31.DB77(I_Par:=3, IO_Par:=LENGTH);
11-30
11.3.2.2 (FB)
. FB .
.
, ,
, DB.
:
/ .
. (FB, FC DB)
.
, .
.
( )
:=
11-31
11.3.2.3 / (FB)
/
/ . FB
/ . ,
FB, .
.
FB / ,
. ,
. /
,
.
/
, .
:=
( )
11-32
ANY POINTER .
/
:
/ FB
FC
11.3.2.4 ( FB)
,
.
RESULT:= DB10.CONTROL;
11.3.2.5
FOR ,
. ,
FB17 TEST.
FUNCTION_BLOCK TEST
VAR_INPUT
FINALVAL:
END_VAR
VAR_IN_OUT
IQ1
:
END_VAR
VAR_OUTPUT
CONTROL:
END_VAR
VAR
INDEX: INT;
END_VAR
INT;
//
REAL; // /
BOOL; //
BEGIN
CONTROL :=FALSE;
FOR INDEX
:= 1 TO FINALVAL DO
IQ1
:=IQ1*2;
IF IQ1 > 10000 THEN
CONTROL
:= TRUE;
END_IF;
END_FOR;
END_FUNCTION_BLOCK
11-33
FB, .
, VARIABLE1
REAL.
// , :
FB17.DB10 (FINALVAL:=10, IQ1:=VARIABLE1);
// , :
TEST.TEST_1 (FINALVAL:=10, IQ1:= VARIABLE1);
:
, /
IQ1, VARIABLE1.
CONTROL.
// :
RESULT:= DB10.CONTROL;
//
// FB,
// :
FB17.DB12 (INP_1:=DB10.CONTROL);
11-34
11.3.2.6
FOR
, " ".
, TEST FB17.
FB , . ,
VARIABLE1 REAL.
FUNCTION_BLOCK CALL
VAR
//
TEST_L : TEST ;
VARIABLE1 : REAL ;
RESULT : BOOL ;
END_VAR
BEGIN
...
// :
TEST_L (FINALVAL:= 10, IQ1:= VARIABLE1) ;
CONTROL :
// :
RESULT := TEST_L.CONTROL ;
END_FUNCTION_BLOCK
11-35
11.3.3
, ( FC, SFC)
.
:
FC31 (X1:=5, Q1:=Checksum) ;
//
DISTANCE (X1:=5, Q1=:Checksum) ; //
,
/ (
).
FC
SFC
FC
FC:
SFC:
,
SCL,
,
:
, SCL,
,
.
, STL/LAD/FBD,
,
,
.
11-36
11.3.3.1 (FC)
,
, ,
(: VOID).
, ,
.
.
,
DISTANCE, LENGTH:
LENGTH:= DISTANCE (X1:=-3, Y1:=2);
FC FB:
, ,
ANY,
/ ANY.
ANY,
(, INT,
DINT REAL).
.
STRING 254
.
11-37
11.3.3.2 FC
, ,
.
, .
, , ,
/ ,
, .
FC
/
,
, /
:
FC32 (E_Param1:=5,D_Param1:=LENGTH,
A_Param1:=Checksum)
11-38
11.3.3.3 (FC)
,
( ). FC
, .
FB, FC .
:
. :
/ .
. (FB, FC DB)
.
, .
.
:=
( )
/ FB
FC. ANY POINTER.
11-39
11.3.3.4 / (FC)
,
, ,
. /
/ .
/
, FC
. / ,
( ). ,
.
:=
( )
/ :
11-40
FC/FB
/ FB
/ FC
ANY POINTER.
STRING 254
.
11.3.3.5
DISTANCE,
(X1,Y1) (X2,Y2), ,
, ( ,
FC37 DISTANCE).
FUNCTION DISTANCE: REAL //
VAR_INPUT
X1: REAL;
X2: REAL;
Y1: REAL;
Y2: REAL;
END_VAR
VAR_OUTPUT
Q2: REAL;
END_VAR
BEGIN
DISTANCE:= SQRT( (X2-X1)**2 + (Y2-Y1)**2 );
Q2:= X1+X2+Y1+Y2;
END_FUNCTION
:
FUNCTION_BLOCK CALL
VAR
LENGTH : REAL ;
CHECKSUM : REAL ;
RADIUS : REAL;
Y : REAL;
END_VAR
BEGIN
. . .
// :
LENGTH := DISTANCE (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4,
Q2:=CHECKSUM) ;
// , ,
Y := RADIUS + DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4,
Q2:=Checksum)
// :
FB32.DB32 (DIST:= DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4),
Q2:=Checksum)
. . .
END_FUNCTION_BLOCK
11-41
11.3.4
11.3.4.1 EN
EN. EN BOOL
. EN TRUE,
. .
EN . ,
.
EN , .
,
(EN : FALSE).
FUNCTION_BLOCK FB57
VAR
MY_ENABLE: BOOL ;
Result : REAL;
END_VAR
// . . .
BEGIN
// . . .
MY_ENABLE:= FALSE ;
// EN:
Result := FC85 (EN:= MY_ENABLE, PAR_1:= 27) ;
// FC85 , MY_ENABLE FALSE
END_FUNCTION_BLOCK
11.3.4.2 ENO
ENO, BOOL.
. ,
OK ENO.
, ENO,
, , -
.
// :
FB30.DB30 ([ ]);
11-42
// :
IF ENO THEN
// OK
// . . .
ELSE
// ,
// ..
END_IF;
11-43
11-44
12
12.1
12.1.1
STEP 7 . SCL
.
. STEP 7
:
12.1.2
S_CU
S_CD
S_CUD
.
,
.
(
), ( BCD)
WORD.
,
(, C_NO:=C10).
.
,
INT. ,
, , ,
.
,
COUNTER.
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
12-1
// :
S_CUD (C_NO:=C12,
CD:=I0.0,
CU:=I0.1,
S:=I0.2 & I0.3,
PV:=120,
R:=FALSE,
CV:=binVal,
Q:=actFlag);
// :
// FOR, :
FUNCTION_BLOCK COUNT
VAR_INPUT
Count: ARRAY [1..4] of STRUCT
C_NO: INT;
PV : WORD;
END_STRUCT;
.
.
END_VAR
.
.
FOR I:= 1 TO 4 DO
S_CD(C_NO := Count[I].C_NO, S := true, PV:= Count[I].PV);
END_FOR;
//
// COUNTER:
FUNCTION_BLOCK COUNTER
VAR_INPUT
MYCounter : COUNTER;
END_VAR
.
.
CurrVal := S_CD (C_NO := MyCounter,.....);
. (: Z,
: C).
12-2
12.1.3
C_NO
CD
CU
S
PV
COUNTER
INT
BOOL
BOOL
BOOL
WORD
R
Q
CV
BOOL
BOOL
WORD
( );
CPU
CD :
CU :
0 999
( 16#<>, BCD)
:
:
(, CD:=I0.0),
.
:
C_No. (, C12),
INT
COUNTER.
CU ( ) CD
( ).
PV ( ) S ()
.
BCD.
FUNCTION_BLOCK FB1
VAR
CurrVal, binVal: word;
actFlag: bool;
END_VAR
BEGIN
CurrVal
:=S_CD (C_NO: C10, CD:=TRUE, S:=TRUE, PV:=100, R:=FALSE,
CV:=binVal,Q:=actFlag);
CurrVal
:=S_CU (C_NO: C11, CU:=M0.0, S:=M0.1, PV:=16#110,
R:=M0.2, CV:=binVal,Q:=actFlag);
CurrVal
:=S_CUD(C_NO: C12, CD:=I0.0, CU:=I0.1, S:=I0.2
&I0.3,
PV:=120, R:=FALSE, CV:=binVal,Q:=actFlag);
CurrVal
:=S_CD (C_NO: C10, CD:=FALSE, S:=FALSE, PV:=100,
R:=TRUE, CV:=binVal,Q:=actFlag);
END_FUNCTION_BLOCK
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
12-3
12.1.4
.
WORD, 0 11
BCD, 12 15 .
.
0 999.
,
/ (S_CUD), (S_CU)
(S_CD).
.
15 14 13 12
11 10
X I X I X I X
0 I 0 I 0 I 1
0 I 0 I 1 I 0
0 I 1 I 1 I 1
BCD ( 0 999)
,
: , 295, ,
BCD ( BCD 127,
, 295).
BCD ( ): 16#127
12-4
( WORD): BCD
CV ( WORD):
12.1.5
(S_CU)
(S_CU),
. , .
12.1.6
"1"
CU "0" "1" , , 999.
S "0" "1",
PV.
.
, R = 1.
"0".
Q "1" ,
"0". "0",
"0".
(S_CD)
(S_CD),
. , .
"1" CD
"0" "1" , , "0".
S "0" "1",
PV.
.
, R = 1.
"0".
Q "1"
"0". "0",
"0".
12-5
12.1.7
/ (S_CUD)
/ (S_CUD),
, .
,
. . ,
.
12-6
"1"
CU "0" "1" , , 999.
"1" CD
"0" "1" , , "0".
S "0" "1",
PV.
.
, R = 1.
"0".
Q "1" ,
"0". "0",
"0".
12.1.8
S_CD.
C_NO
MYCOUNTER:
CD
INPUT I0.0
SET
PV
INITIALVALUE 16#0089
RESET
Q0.7
CV
BIN_VALUE
FUNCTION_BLOCK COUNT
VAR_INPUT
MYCOUNTER
: COUNTER ;
END_VAR
VAR_OUTPUT
RESULT : INT ;
END_VAR
VAR
SET
: BOOL ;
RESET : BOOL ;
BCD_VALUE
: WORD ;// BCD
BIN_VALUE
: WORD ;//
INITIALVALUE: WORD ;
END_VAR
BEGIN
Q0.0
:= 1 ;
SET
:= I0.2 ;
RESET
:= I0.3 ;
INITIALVALUE := 16#0089 ;
//
BCD_VALUE := S_CD (C_NO := MYCOUNTER,
CD := I0.0 ,
S
:= SET ,
PV := INITIALVALUE,
R
:= RESET ,
CV := BIN_VALUE ,
Q
:= Q0.7) ;
//
RESULT
:= WORD_TO_INT (BIN_VALUE) ;
QW4
:= BCD_VALUE ;
END_FUNCTION_BLOCK
12-7
12.2
12.2.1
,
, .
STEP 7 ,
SCL .
12.2.2
S_PULSE
S_PEXT
S_ODT
S_ODTS
S_OFFDT
.
,
.
(
), S5TIME.
TIMER,
(, T_NO:=T10).
.
,
INT. ,
,
.
TIMER.
12-8
// :
S_ODT (T_NO:=T10,
S:=TRUE,
TV:=T#1s,
R:=FALSE,
BI:=biVal,
Q:=actFlag);
// :
// FOR, :
FUNCTION_BLOCK TIME
VAR_INPUT
MY_TIMER: ARRAY [1..4] of STRUCT
T_NO: INT;
TV : WORD;
END_STRUCT;
.
.
END_VAR
.
.
FOR I:= 1 TO 4 DO
S_ODT(T_NO:=MY_TIMER[I].T_NO, S:=true,
TV:= MY_TIMER[I].TV);
END_FOR;
// ,
// TIMER:
FUNCTION_BLOCK TIMER
VAR_INPUT
mytimer:TIMER;
END_VAR
.
.
CurrTime:=S_ODT (T_NO:=mytimer,.....);
12-9
12.2.3
T_NO
TIMER
INTEGER
;
CPU
BOOL
TV
S5TIME
( BCD)
BOOL
BOOL
BI
WORD
( )
( CPU),
.
:
12-10
T_No. (, T12),
INT
TIMER.
PV ( ) S ()
.
S5TIME.
FUNCTION_BLOCK FB2
VAR
CurrTime : S5time;
BiVal
: word;
ActFlag : bool;
END_VAR
BEGIN
CurrTime :=S_ODT (T_NO:= T10, S:=TRUE, TV:=T#1s, R:=FALSE,
BI:=biVal,Q:=actFlag);
CurrTime :=S_ODTS (T_NO:= T11, S:=M0.0, TV:= T#1s, R:=M0.1,
BI:=biVal,Q:=actFlag);
CurrTime :=S_OFFDT(T_NO:= T12, S:=I0.1 & actFlag, TV:= T#1s,
R:=FALSE, BI:=biVal,Q:=actFlag);
CurrTime :=S_PEXT (T_NO:= T13, S:=TRUE, TV:= T#1s, R:=I0.0,
BI:=biVal,Q:=actFlag);
CurrTime :=S_PULSE(T_NO:= T14, S:=TRUE, TV:= T#1s, R:=FALSE,
BI:=biVal,Q:=actFlag);
END_FUNCTION_BLOCK
12-11
12.2.4
BCD,
.
WORD, 0 11
BCD, 12 13
. 14 15 .
1
1 , .
, "0".
0 9990 .
.
15...
...8
X I X I 1 I 0
7...
...0
0 I 0 I 0 I 1
0 I 0 I 1 I 0
0 I 1 I 1 I 1
BCD ( 0 999)
: .
12-12
( S5TIME): BCD
( WORD ):
,
(12 13 ).
,
(. ). 10 ;
10 .
10
00
100
01
10
10
11
, ,
, .
, ,
, .
12-13
12.2.5
(S_PULSE)
,
"1". ,
, , "0".
.
I 2.1
Q 4.0 S_PULSE
( )
, "
":
12-14
" " ,
(S) "0"
"1". .
S 1, ,
, TV, ,
.
S "1" "0"
, .
(R)
"0" "1" .
,
. "1" R
, .
, Q
"1". ,
Q "0".
BI S_PULSE.
12.2.6
(S_PEXT)
"1" (t)
, "1".
,
( ).
I 2.1
Q 4.0 S_PEXT
(
)
, "
":
S "0" "1"
,
.
, TV,
.
, (R)
"0" "1" .
,
. "1" R
, .
,
Q "1",
.
BI S_PEXT.
12-15
12.2.7
(S_ODT)
"0" "1" ,
, "1".
, . ,
,
.
I 2.1
Q 4.0
S_ODT
( )
, " ":
12-16
,
(S) "0" "1".
.
S
"1" "0", .
, TV,
S 1.
, (R)
"0" "1" .
,
. R = 1,
, .
Q "1",
, S
"1". ,
"0".
Q "0"
, S "1".
BI S_ODT.
12.2.8
(S_ODTS)
"0" "1",
, ,
"1".
I 2.1
Q4.0
(
)
S_ODTS
t
, "
":
" " ,
(S) "0"
"1". .
, S
"0" "1" .
TV
, S
"0" .
Q "1",
, S.
BI S_ODTS.
12-17
12.2.9
(S_OFFDT)
S "0" "1",
Q "1". "1" "0",
. "0"
.
.
I 2.1
Q 4.0
S_OFFDT
( )
, "
":
12-18
" " ,
(S) "0"
"1". .
, S
"1" "0" (, ).
TV.
, (R)
"0" "1".
Q "1"
S = 1, .
BI S_OFFDT.
12.2.10
FUNCTION_BLOCK TIMER
VAR_INPUT
mytime
: TIMER ;
END_VAR
VAR_OUTPUT
result
: S5TIME ;
END_VAR
VAR
set : BOOL ;
reset : BOOL ;
bcdvalue : S5TIME ; // BCD
binvalue : WORD ; //
initialvalue : S5TIME ;
END_VAR
BEGIN
Q0.0 := 1;
set := I0.0 ;
reset
:= I0.1;
initialvalue := T#25S ;
bcdvalue := S_PEXT (T_NO := mytime ,
S := set ,
TV := initialvalue ,
R := reset ,
BI := binvalue ,
Q := Q0.7) ;
//
result := bcdvalue ;
//
QW4 := binvalue ;
END_FUNCTION_BLOCK
12-19
12.2.11
,
.
.
I 2.1
Q 4.0 S_PULSE
( )
t
,
"1", t.
"0",
"1" .
Q 4.0 S_PEXT
(
)
(
)
Q 4.0
t
"1"
,
"1".
, "t"
.
S_ODT
t
"0" "1" ,
,
- "1".
Q 4.0 S_ODTS
(
t
)
"0" "1",
, ,
"1".
(
)
12-20
Q 4.0 S_OFFDT
t
"0" "1",
"0" "1". ,
"1" "0".
"1" .
13 SCL
13.1
13.1.1
,
, . ,
. SCL
:
.
, SCL .
, ,
" A".
, ,
.
SCL
, :
-
13-1
SCL
13.1.2
13.1.2.1
, ,
.
, . ,
BYTE INTEGER INTEGER.
, ANY_BIT
.
ANY_BIT
ANY_NUM
VAR
PID_CTRLLER_1 : BYTE ;
PID_CTRLLER_2 : WORD ;
END_VAR
BEGIN
IF (PID_CTRLLER_1 <> PID_CTRLLER_2) THEN ...
(* IF PID_CTRLLER_1 BYTE
WORD. *)
13-2
SCL
13.1.2.2 A
A. , ,
. .
BOOL_TO_BYTE
BOOL_TO_DWORD
BOOL_TO_WORD
BYTE_TO_DWORD
BYTE_TO_WORD
CHAR_TO_STRING
( 1),
.
DINT_TO_REAL
REAL IEEE.
(-
REAL).
INT_TO_DINT
16#FFFF,
.
.
INT_TO_REAL
REAL IEEE.
.
WORD_TO_DWORD
13-3
SCL
13.1.3
" ".
:
:
IN. ,
IN .
, A B.
, BOOL_TO_BYTE, BOOL,
BYTE.
13.1.3.1 B
B. . ,
,
.
, ,
,
" OK". , ,
OK FALSE.
OK
BYTE_TO_BOOL
BYTE_TO_CHAR
CHAR_TO_BYTE
CHAR_TO_INT
,
.
DATE_TO_DINT
DINT_TO_DATE
DINT_TO_DWORD
DINT_TO_INT
.
INT. -32_768
32_767, OK FALSE.
DINT_TO_TIME
DINT_TO_TOD
DWORD_TO_BOOL
DWORD_TO_BYTE
13-4
SCL
DWORD_TO_DINT
DWORD_TO_REAL
DWORD_TO_WORD
16
INT_TO_CHAR
INT_TO_WORD
REAL_TO_DINT
REAL_TO_DWORD
REAL_TO_INT
STRING_TO_CHAR
.
STRING 1, OK
FALSE.
TIME_TO_DINT
TOD_TO_DINT
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_INT
WORD_TO_BLOCK_DB
WORD
BLOCK_DB_TO_WORD
WORD
IEC .
"System Software for S7-300 and S7-400, System
and Standard Functions" (" S7-300 S7-400,
").
13-5
SCL
13.1.3.2
. , (
) :
ROUND
REAL
DINT
(
DINT)
DIN EN 61131-3,
0,5
;
, 1.5 2 2.5
2.
TRUNC
REAL
DINT
Truncates ( DINT)
IEC .
"System Software for S7-300 and
S7-400, System and Standard Functions"("
S7-300 S7-400, ).
// (: 3)
ROUND (3.14) ;
// (: 4)
ROUND (3.56) ;
// (: 3)
TRUNC (3.14) ;
// (: 3)
TRUNC (3.56) ;
13-6
SCL
13.1.3.3
,
, .
FUNCTION_BLOCK FB10
VAR
SWITCH : INT;
CTRLLER : DINT;
END_VAR
(* INT DINT *)
SWITCH := DINT_TO_INT (CTRLLER) ;
// . . .
END_FUNCTION_BLOCK
, REAL
MOD.
FUNCTION_BLOCK FB20
VAR
SWITCH : REAL
INTVALUE
: INT := 17;
CONV2 : INT ;
END_VAR
(* MOD INT DINT *)
CONV2 := INTVALUE MOD REAL_TO_INT (SWITCH);
// . . .
END_FUNCTION_BLOCK
,
. NOT
BOOL, BYTE, WORD DWORD.
FUNCTION_BLOCK FB30
VAR
INTVALUE : INT := 17;
CONV1 : WORD ;
END_VAR
(* NOT INT *)
CONV1 := NOT INT_TO_WORD(INTVALUE);
// . . .
END_FUNCTION_BLOCK
13-7
SCL
/.
FUNCTION_BLOCK FB40
VAR
Radius_in : WORD ;
Radius
: INT;
END_VAR
Radius_in := %IB0;
Radius
:= WORD_TO_INT (radius_in);
(* .
.*)
Radius := Radius (area:= circledata.area)
%QB0 :=WORD_TO_BYTE (INT_TO_WORD(RADIUS));
(* . ,
(INT_TO_WORD),
(WORD_TO_BYTE).*)
// . . .
END_FUNCTION_BLOCK
13-8
SCL
13.2
13.2.1
,
.
ANY_NUM INT, DINT REAL.
, INT DINT
REAL, ,
REAL.
ABS
ANY_NUM
ANY_NUM
SQR
ANY_NUM
REAL
SQRT
ANY_NUM
REAL
IEC .
"System Software for S7-300 and
S7-400, System and Standard Functions" ("
S7-300 S7-400, ).
13.2.2
.
ANY_NUM INT, DINT REAL.
, INT DINT
REAL, , REAL.
EXP
ANY_NUM
REAL
e IN
EXPD
ANY_NUM
REAL
10 IN
LN
ANY_NUM
REAL
LOG
ANY_NUM
REAL
IEC .
"System Software for S7-300 and
S7-400, System and Standard Functions" ("
S7-300 S7-400, ).
13-9
SCL
13.2.3
, ,
, .
ANY_NUM INT, DINT REAL.
, INT DINT
REAL, , REAL.
ACOS
ANY_NUM
REAL
ASIN
ANY_NUM
REAL
ATAN
ANY_NUM
REAL
COS
ANY_NUM
REAL
SIN
ANY_NUM
REAL
TAN
ANY_NUM
REAL
IEC
. "System Software
for S7-300 and S7-400, System and Standard Functions"("
S7-300 S7-400,
).
13.2.4
13-10
//5
//9
//529
//60.340 ...
//1_000
//1
//2.389_166 ...
PI := 3. 141 592 ;
RESULT := SIN (PI / 6) ;
//0.5
//1.047_197 (=PI / 3)
SCL
13.3
, IN N.
.
. :
IN: ,
.
.
N: ROL
ROR, ,
SHL SHR.
IN
ROL
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
IN
,
N.
ROR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
IN
,
N.
SHL
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
IN
,
N.
SHR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
IN
,
N.
IEC
. "System Software
for S7-300 and S7-400, System and Standard Functions"("
S7-300 S7-400,
).
13-11
SCL
13.3.1
//2#0111_1010
//(= 122 )
//2#1111_0100
//(= 244 )
//2#1001_1000
//(= 152 )
//2#0011_0100
//(= 52 )
13-12
SCL
13.4
13.4.1
LEN
LEN (FC21) (
). ('') .
.
LEN (S:= 'XYZ' )
INPUT
STRING D, L
STRING
INT
I, Q, M, D, L
CONCAT
CONCAT (FC2) STRING
. ,
, .
.
CONCAT (IN1:= 'Valve', IN2:= ' open')
IN1
INPUT
STRING D, L
STRING
IN2
INPUT
STRING D, L
STRING
STRING D, L
13-13
SCL
LEFT RIGHT
LEFT RIGHT (FC20 FC32) L
. L ,
STRING, . L = 0,
. L , OK
"0".
LEFT (IN:= 'Valve', L:= 4)
IN
INPUT
STRING D, L
STRING
INPUT
INT
I, Q, M, D, L,
const.
STRING D, L
STRING
MID
MID (FC26) . L
, P .
L (P-1) , STRING,
, P-
. (P
, P / L ),
, OK "0".
MID (IN:= 'Temperature', L:= 2, P:= 3)
IN
INPUT
STRING D, L
STRING
INPUT
INT
I, Q, M, D, L,
const.
INPUT
INT
I, Q, M, D, L,
const.
13-14
STRING D, L
STRING
SCL
INSERT
INSERT (FC17) IN2
IN1 , P. P
, . P
, .
P , OK
"0". OK "0" ,
, ,
;
.
INSERT (IN1:= 'Participant arrived', IN2:='Miller':= 2, P:= 11)
IN1
INPUT
STRING D, L
STRING,
IN2
INPUT
STRING D, L
STRING
INPUT
INT
I, Q, M, D, L,
const.
STRING D, L
DELETE
DELETE (FC 4) L , ,
P (). L / P ,
P ,
. L P ,
. L / P , ,
OK "0".
: DELETE (IN:= 'Temperature ok', L:= 6, P:= 5)
IN
INPUT
STRING D, L
STRING,
INPUT
INT
I, Q, M, D, L,
const.
INPUT
INT
I, Q, M, D, L,
const.
STRING D, L
13-15
SCL
REPLACE
REPLACE (FC31) L (IN1),
, P ()
(IN2). L , . P
, (). P
,
. L / P , ,
OK "0". OK "0"
,
;
.
REPLACE (IN1:= 'Temperature', IN2:= ' high' L:= 6, P:= 5)
IN1
INPUT
STRING D, L
STRING,
IN2
INPUT
STRING D, L
STRING
INPUT
INT
I, Q, M, D, L,
const.
INPUT
INT
I, Q, M, D, L,
const.
STRING D, L
FIND
FIND (FC11) (IN2)
(IN1). ;
. ,
. .
FIND (IN1:= 'Processingstation', IN2:='station')
IN1
INPUT
STRING D, L
STRING,
IN2
INPUT
STRING D, L
STRING
INT
13-16
I, Q, M, D, L
SCL
13.4.2
SCL ,
==, <>, <, >, <= >=.
.
.
EQ_STRNG NE_STRNG
EQ_STRNG (FC10) NE_STRNG (FC29)
STRING, (FC10)
(FC29) .
S1 () S2,
"1". .
S1
INPUT
STRING D, L
STRING
S2
INPUT
STRING D, L
STRING
BOOL
I, Q, M, D, L
GE_STRNG LE_STRNG
GE_STRNG (FC13) LE_STRNG (FC19)
STRING,
() , .
S1 () S2,
"1". , ,
ASCII (, 'a' 'A').
.
,
. .
S1
INPUT
STRING D, L
STRING
S2
INPUT
STRING D, L
STRING
BOOL
I, Q, M, D, L
13-17
SCL
GT_STRNG LT_STRNG
GT_STRNG (FC15) LT_STRNG (FC24)
STRING, ()
. S1
() S2, "1". ,
, ASCII (, 'a'
'A'). .
,
.
.
S1
INPUT
STRING D, L
STRING
S2
INPUT
STRING D, L
STRING
BOOL
RET_VAL
13.4.3
I, Q, M, D, L
I_STRNG STRNG_I
I_STRNG (FC16) STRNG_I (FC38)
INT , INT.
. ,
, , , OK
"0".
INPUT
I, Q, M, D, L,
const.
I_STRNG
I
INT
STRING D, L
STRING D, L
INT
STRNG_I
S
13-18
INPUT
I, Q, M, D, L
SCL
DI_STRNG STRNG_DI
DI_STRNG (FC5) STRNG_DI (FC37)
DINT , DINT.
. ,
, ,
OK "0".
INPUT
I, Q, M, D, L,
const.
DI_STRNG
I
DINT
STRING D, L
STRING D, L
DINT
STRNG_DI
S
INPUT
I, Q, M, D, L
R_STRNG STRNG_R
R_STRNG (FC30) STRNG_R (FC39)
REAL , REAL.
14 :
v.nnnnnnnExx
,
IN parameter, , OK
"0".
INPUT
I, Q, M, D, L,
const.
R_STRNG
IN
REAL
STRING D, L
STRING D, L
REAL
STRNG_R
S
INPUT
I, Q, M, D, L
13-19
SCL
13.4.4
// , ,
//
/////////////////////////////////////////////////////////////
// 20
//
/////////////////////////////////////////////////////////////
DATA_BLOCK Messagetexts
STRUCT
Index
: int;
textbuffer : array [0..19] of string[34];
HW
: array [1..5] of string[16]; //5
//
statuses : array [1..5] of string[12]; // 5
//
END_STRUCT
BEGIN
Index :=0;
HW[1] := 'Motor ';
HW[2] := 'Valve ';
HW[3] := 'Press ';
HW[4] := 'Weldingstation ';
HW[5] := 'Burner ';
Statuses[1] := ' problem';
Statuses[2] := ' started';
Statuses[3] := ' temperature';
Statuses[4] := ' repaired';
Statuses[5] := ' maintained';
END_DATA_BLOCK
/////////////////////////////////////////////////////////////
///
//
//DB .
//
//
// DB .
/////////////////////////////////////////////////////////////
///
FUNCTION Textgenerator : bool
VAR_INPUT
unit
: int;
//
no
: int; //
status : int;
value
: int;
END_VAR
VAR_TEMP
13-20
SCL
text : string[34];
i
: int;
END_VAR
//initialization of the temporary variables
text := '';
Textgenerator := true;
Case unit of
1..5 : case status of
1..5 : text := concat( in1 := Messagetexts.HW[unit],
in2 := right(l:=2,in:=I_STRNG(no)));
text := concat( in1 := text,
in2 := Messagetexts.statuses[status]);
if value <> 0 then
text := concat( in1 := text,
in2 := I_STRNG(value));
end_if;
else Textgenerator := false;
end_case;
else Textgenerator := false;
end_case;
i := Messagetexts.index;
Messagetexts.textbuffer[i] := text;
Messagetexts.index := (i+1) mod 20;
END_FUNCTION
////////////////////////////////////////////////////////////////
//
// %M10.0 .
////////////////////////////////////////////////////////////////
Organization_block Cycle
Var_temp
Opsy_ifx : array [0..20] of byte;
error: BOOL;
End_var;
////////////////////////////////////////////////////////////////
// "Motor 12 started"
// DB , %MW0 1, %IW2
// 12 %MW2 2. *)
////////////////////////////////////////////////////////////////
if %M10.0 <> %M10.1 then
error := Textgenerator (unit
:= word_to_int(%MW0),
no
:= word_to_int(%IW2),
status := word_to_int(%MW2),
value
:= 0);
%M10.1:=M10.0;
end_if;
end_organization_block
13-21
SCL
13.5
SFC, SFB
CPU S7 ,
, SCL. :
(OB)
(SFC)
(SFB)
(SFC/SFB)
.
,
, .
,
(,
) ,
, .
SCL :
"Programs"
Simatic
IEC
SCL , .
, (" ... ")
, .
SCL
.
, SIMATIC Manager.
IEC.
13-22
"DT to DATE"
"DT to DAY"
"DT to TOD"
SCL
(SFB/SFC)
,
EN 0 (, I0.3).
. EN 1, .
ENO "1" ( "0")
, .
SFC , ,
,
, .
TIME,
DATE_AND_TIME STRING, SCL
.
.
SCL
.
IEC,
SCL.
DATE_AND_TIME
STRING
==
EQ_DT (FC9)
EQ_STRING (FC10)
<>
NE_DT (FC28)
NE_STRING (FC29)
>
GT_DT (FC14)
GT_STRING (FC15)
>=
GE_DT (FC12)
GE_STRING (FC13)
<=
LE_DT (FC18)
LE_STRING (FC19)
<
LT_DT (FC23)
LT_STRING (FC24)
DATE_AND_TIME + TIME
AD_DT_TM (FC1)
DATE_AND_TIME + TIME
SB_DT_TM (FC35)
DATE_AND_TIME + DATE_AND_TIME
SB_DT_DT (FC34)
TIME_TO_S5TIME(TIME)
TIM_S5TI (FC40)
S5TIME_TO_TIME(S5TIME)
S5TI_TIM (FC33)
SFB, SFC OB
, "System Software for S7300 and S7-400, System and Standard Functions" ("
S7-300 S7-400, ").
13-23
SCL
13.5.1
OB
CPU . OB
:
CPU
OB
CPU OB, S7.
CPU, , OB .
13-24
14
14.1
14.1.1
. SCL.
" " " "
.
?
. .
.
.
:
14-1
?
, .
< >
,
.
,
.
.
< >
!
14.1.2
, SCL,
.
(),
,
.
. , :
14-2
, , ,
.
(), :
MEAS_FIELD_12
SETPOINT_B_1
SCL. , SCL
.
SCL
, .
,
.
, - .
14-3
.
() . , ,
.
:
14.1.3
,
: ,
, .
.
: ,
,
.
,
, .
:
.
(
).
ASCII,
.
ASCII.
14-4
- .
, , ,
.
Letter ()
A Z
a z
Digit ()
0.. 9
Octal digit
( )
0.. 7
Hexadecimal digit
(
)
0 9, A F, a f
Bit ()
0, 1
, ASCII,
, .
. ASCII ,
,
32
DEL
:
$
'
$P $p
$L $l
$R $r
$T $t
$N $n
$hh
,
(hh)
14-5
14.1.4
ASCII,
.
''
""
$> $<
, ,
, .
.
.
BOOL#
BYTE#
WORD#
DWORD#
INT#
DINT#
REAL#
CHAR#
2#
8#
16#
BOOL
BYTE
WORD
DWORD
INT
DINT
REAL
CHAR
D#
DATE#
DATE_AND_TIME#
DT#
E
REAL
REAL
BIT
BIT
BIT
BIT
REAL
CHAR
DATE
DATE
DATE AND TIME
DATE AND TIME
14-6
D
H
M
MS
S
T#
TIME#
TIME_OF_DAY#
TOD#
()
()
()
()
()
(:
)
: (:
)
: (:
)
: (:
)
: (:
)
TIME PERIOD
TIME PERIOD
TIME OF DAY
TIME OF DAY
,
.
..
(* *)
//
{}
%
FB DB,
, ,
,
, ,
CASE
,
, DB, , ,
,
, ,
FB, FC,
,
,
FB,
()
[]
, FB, ,
,
,
,
STRING
" "
" "
IEC,
%M4.0 M4.0.
,
, , #FOR.
14-7
SCL , ,
AND .
.
:=
,
,
,
DB, ,
/,
,
/
+, -
:
,
, ,
+, -, *, /
MOD; DIV
**
NOT
<,>,<=,>=,=,<>
14-8
14.1.5
SCL
.
, .
.
AND
ANY
ANY
ARRAY
,
"[" "]".
AT
BEGIN
,
,
,
BLOCK_DB
BLOCK_DB
BLOCK_FB
BLOCK_FB
BLOCK_FC
BLOCK_FC
BLOCK_SDB
BLOCK_SDB
BOOL
BY
FOR
BYTE
CASE
CASE
CHAR
CONST
CONTINUE
FOR,
WHILE REPEAT
CONTINUE
COUNTER
DATA_BLOCK
DATE
DATE_AND_TIME
DATE_AND_TIME
DINT
DIV
DO
FOR
FOR,
WHILE
DT
DATE_AND_TIME
14-9
DWORD
ELSE
, ,
IF, CASE
ELSIF
IF
EN
ENO
END_CASE
CASE
CASE
END_CONST
END_DATA_BLOCK
END_FOR
FOR
FOR
END_FUNCTION
END_FUNCTION_BLOCK
END_IF
IF
IF
END_LABEL
END_TYPE
UDT
END_ORGANIZATION_BLOCK
END_REPEAT
REPEAT
REPEAT
END_STRUCT
END_VAR
,
,
END_WHILE
WHILE
WHILE
EXIT
EXIT
FALSE
: , 0
FOR
FUNCTION
FUNCTION_BLOCK
GOTO
IF
IF
INT
LABEL
MOD
NIL
NOT
OF
, CASE
OK
OR
ORGANIZATION_BLOCK
POINTER
Pointer, . 10
,
14-10
FOR
PROGRAM
FB (
FUNCTION_BLOCK)
REAL
REPEAT
REPEAT
RETURN
RETURN
S5TIME
, S5
STRING
STRING
STRUCT
STRUCT
THEN
, ,
IF
TIME
TIMER
TIME_OF_DAY
TO
FOR
TOD
TRUE
:
,
0
TYPE
UDT
VAR
VAR_TEMP
UNTIL
REPEAT
REPEAT
VAR_INPUT
VAR_IN_OUT
VAR_OUTPUT
WHILE
WHILE
WORD
Word
VOID
XOR
SCL
14-11
14.1.6
SIMATIC SCL
.
:
(Q, I, M, PQ, PI) (D)
:
( B, D, W, X)
(
D ) .
.
.
( )
AB
QB
( )
AD
QD
( )
AW
QW
( )
AX
QX
( )
DB
DB
DD
DD
DW
DW
DX
DX
( )
EB
IB
( )
ED
ID
( )
EW
IW
( )
EX
IX
( )
MB
MB
MD
MD
MW
MW
MX
MX
PAB
PQB
( )
PAD
PQD
( )
PAW
PQW
( )
PEB
PIB
( )
PED
PD
( )
PEW
PIW
( )
14-12
.
.
14.1.7
DB
DB
FB
FB
FC
FC
OB
OB
SDB
SDB
SFC
SFC
SFB
SFB
UDT
UDT
,
.
. ,
.
< >
!
14.1.8
,
.
. , ,
( ).
< >
!
14-13
,
. :
14.1.9
SCL
SCL , .
.
, BEGIN,
DO,WHILE
(,
BOOL, BYTE, INT)
,
ABS
TRUE FALSE
:
, I1.2, MW10, FC20, T5, DB30,
DB10.D4.5
IDENTIFIER
; ,
, , "xyz"
14-14
.
S7 SCL 4.0, ,
,
.
, BYTE_TO_WORD ABS,
.
, , SV, SE CV.
14.1.10 SCL
SCL .
( ).
,
SCL.
, STEP 7,
.
, , . ,
(,
).
14-15
"
"
, :
14-16
, ,
.
, , ,
.
: ,
.
. .
.
, :
,
, , ,
.
, :
: , AND, XOR
: ,
BOOL, STRING, INT
TRUE FALSE
: , IB, IW, ID, QB, QW, QD MB, MD
,
, .
, GOTO
,
,
, FB
14-17
,
:
14.1.11
.
FALSE
( )
0. ,
.
TRUE
( )
1. , .
EN
ENO
OK
, FALSE, .
14-18
14.2
(),
,
.
. ,
14.2.1
, , ,
14-19
C
'C'
'Z'
OB
FC
SFC
FB
SFB
DB
UDT
"
"
14-20
14.2.2
BOOL#
BYTE#
WORD#
(1)
DWORD#
(1) BYTE
INT#
DINT#
(1)
(1) INT
REAL#
-
_
: 0-9
2#
_
: 0 or 1
8#
14-21
16#
_
: 0-9,A..F
Underscore
'
CHAR#
'
'
'
Escape $
$ '
*P L R T N
*P =
L =
R =
T =
N =
14-22
,
,
,
,
$>
$<
DATE#
D#
TIME#
T#
- (, , ..) .
- : , , , , .
TIME_OF_DAY #
TOD#
DATE_AND_ TIME #
DT#
14-23
MS
MS
14-24
14.2.3
DB
D B
DB
D B
DB
DB
D B
DB
14-25
PI
PE
PQ
PA
DB
DB
14-26
14.2.4
, :
, "
".
,
.
//
CR
(*
*)
14-27
14.2.5
.
.
TITLE
VERSION
'
'
'
0 - 15
AUTHOR
NAME
FAMILY
0 - 15
'
24
:=
'
'
14-28
14.3
SCL. , SCL .
, .
,
.
, ,
, , .
" ".
14.3.1
SCL
SCL
SCL
SCL
14-29
OB
ORGANIZATION_BLOCK
BEGIN
OB
END_ORGANIZATION_BLOCK
,
VOID
,
.
VOID
FUNCTION
BEGIN
END_FUNCTION
FB
FB
PROGRAM
FUNCTION_BLOCK
END_PROGRAM
BEGIN
END_FUNCTION_BLOCK
DATA_BLOCK
BEGIN
DB
DB
END_DATA_BLOCK
TY PE
14-30
DB
UDT
END_TY PE
14.3.2
OB
FC
FB
DB
UDT
14-31
DB
DB
:=
Constant*
* STL
CONST
:=
END_CONST
LABEL
END_LABEL
END_VAR
VAR
* FB
14-32
1)
1)
24
:=
'
'
:=
(
VAR FB)
FB
!
FB
:
SFB
14-33
VAR_TE MP
END_VAR
VAR_INPUT
VAR_OUTPU T
END_VAR
VAR_IN_OUT
VAR_INPUT VAR_OU TPUT
DATE_AND_ TIME
STRING
ARRAY
STRUCT
UDT
14-34
14.3.3
SCL
STRING
BOOL
BY TE
WORD
DWORD
CHAR
STRING
STRING
INT
DINT
REAL
S5TIME
S5
TIME
TIME_OF_DAY
TOD
DATE
DATE_AND_TIME
DATE_AND_TIME
DATE_AND_ TIME #
DT#
14-35
ARRAY
ARRAY
ARRAY
..
,
6
OF
STRUCT
,
END_STRUCT
.
STRUCT
STRUCT
END_STRUCT
TIMER
COUNTER
ANY
ANY
POINTER
BLOCK_FC
BLOCK_FB
BLOCK_DB
BLOCK_SDB
14-36
14.3.4
:=
CPU
DB
DB
CPU
DB
DB
FC
14-37
variable name or
parameter name,
14-38
14.3.5
**
NOT
/
DIV
MOD
14-39
( )
NOT
CP
DB
FC
AND
&
XOR
<
14-40
MOD
>
<=
OR
DIV
>=
<>
14.3.6
FB
FB:
SFB:
FB
SFB
DB
FB
FC
SFC
FC:
FB
FC
SFC:
,
FB
FC
FC
/
,
14-41
:=
( )
:=
( )
:=
( )
14-42
14.3.7
IF
IF
,
END_IF
.
IF
THEN
THEN
ELSIF
ELSE
CASE
END_IF
CASE
,
END_CASE
.
- ()
CASE
ELSE
OF
END_CASE
. .
14-43
FOR
WHILE
REPEAT
CONTINUE
E XIT
RETURN
GOTO
FOR
,
END_FOR
.
FOR
FOR
TO
BY
DO
END_FOR
INT/DINT
14-44
:=
WHILE
WHILE
,
END_WHILE
.
REPEAT
WHILE
DO
END_WHILE
REPEAT
,
END_REPEAT
.
REPEAT
UNTIL
END_REPEAT
CONTINUE
CONTINUE
CONTINUE
RETURN
RETURN
RETURN
EXIT
EXIT
EXI T
GOTO
GOTO
14-45
14-46
15
REAL
SCL:
Fraction := Dividend/Divisor;
Fraction , Dividend Divisor - .
, SCL ,
implicit
:
Fraction := INT_TO_REAL(Dividend/Divisor);
,
, ,1/3 = 0 3/2 = 1.
,
:
1. .
2.
3.
DB.
DB100.array[i].value :=
DB100.array[i].value1 * DB100.array[i].value2 / DB100.array[i].value3 ;
, ,
:
VAR_TEMP
tmp : STRUCT
value : REAL;
value1 : REAL;
value2 : REAL;
value3 : REAL;
END_STRUCT;
END_VAR
tmp := DB100.array[i];
DB100.array[i].value := tmp.value1 * tmp.value2 / tmp.value3;
15-1
VAR_TEMP CPU.
CPU . ,
!
L CPU
L
CPU. ,
:
( VAR_TEMP
VAR ).
FB, VAR
VAR_TEMP.
OB FC,
.
. ,
.
,
.
:
.
"" ,
:
1.#INFrandom-digits
-1.#INFrandom-digits
NaN digit.
15-2
digit.#INDrandom-digits
#NANrandom-digits
SCL STL
SCL STL/LAD/FBD
MC7. STL
:
MC7
STL.
STL
STL SCL.
, STL,
STL, SCL.
SCL MC7 .
(FB, FC OB), ( )
.
, ,
. .
,
, :
,
, , , VAR_TEMP ( FC
VAR) .
( ) .
,
,
, FB
. (
) .
STEP 7
STEP 7
. ,
WORD
"W#16#8093".
S7 SCL , ,
INT WORD . , ,
.
IF SFCxx(..) = 16#8093 THEN ...
S7 SCL, WORD
.
. , :
IF SFCxx(..) = INT#16#8093 THEN ...
WORD_TO_INT(). :
IF SFCxx(..) = WORD_TO_INT(16#8093) THEN ...
15-3
SCL,
Options > Rewire ( > ) SIMATIC
Manager. SCL ,
.
:
, .
(I, M, Q ..)
.
,
,
SCL .
15-4
A
(Addressing, Absolute)
,
. : Q4.0 0
4 .
(Address)
- , ,
.
.
(Addressing)
.
(:
I 12.1, MW25)
(Attribute)
, , ,
. SCL
: , ,
, , , .
(Block)
, . STEP 7 (FB,
FC, OB, SFC SFB), (DB SDB)
(UDT).
-1
(View)
,
,
.
. ,
, - .
/ (In/Out Parameter)
/
. , ,
,
.
(Input Parameters)
. ,
.
(Block Call)
STEP 7.
;
STEP 7.
-2
(Expression)
SCL - .
, .
(Output Parameter)
,
.
(Shared Data)
,
(FC, FB OB).
(M), (I), (O), ,
(DB).
.
, (Data, Static)
,
.
, ( Data, Temporary)
- ,
( L) .
.
(User Data)
CPU ,
.
:
,
.
- (BCD)
- . STEP 7,
CPU BCD.
-3
(Real Number)
,
, 0.339 -11.1.
(Download)
(, )
CPU.
(Block Protection)
,
. ,
"KNOW_HOW_PROTECTED" .
(Identifier)
, ,
.
(Address Identifier)
- ,
,
(),
() .
"Value := IB10", "IB" - ("I"
, "B" ,
).
(Call Hierarchy)
.
.
(Call Interface)
, -
( )
STEP 7. ,
-4
(Source File)
, ,
.
(Block Class)
, ,
: .
(Keyword)
, , "IF".
SCL, ,
.
.
-5
(Comments)
,
, .
(Block Comment)
(,
).
SIMATIC S7.
(Compilation)
.
, (Compilation, Source-Oriented)
- ,
,
. .
-6
(Constant )
.
. :
(, 10 )
"Max_loop_iterations". , (,
10) .
(Breakpoint)
, CPU HOLD
. ,
.
(Lexical Rule)
SCL
. ;
, .
(Literal)
, .
(Local Data)
,
. ,
, .
(Logic Block)
SIMATIC S7 - ,
STEP 7.
. :
(OB), (FB), (FC),
(SFB) (SFC).
-7
(Array)
,
. , ,
.
(Mnemonics)
-
. STEP 7 ( , , "I" ) (, ,
- "E" (Eingang -)).
(Monitoring)
, ,
CPU. , ,
.
(Multiple Instance)
,
.
(Assignment)
.
(Initial Value)
.
-8
(Non Term)
, .
(Declaration)
.
.
: (Variable Declaration)
,
, , .
(Memory Area)
CPU S7 : ,
.
(Statement)
, .
.
(Operation)
- , ,
.
-9
(Process Image)
CPU .
: (PII) (PIQ).
(Parameter Type)
,
.
, /
.
(Variable)
- ,
STEP 7.
(, M3.1) , (,
BOOL), (, TAPE_ON).
.
(Online Help)
STEP 7,
.
(Single Step)
,
SCL. ,
, .
-10
(User Program)
, ,
.
(, CPU, FM)
(.)
(Project)
,
,
.
(Declaration Section)
. IN
, , ,
OUT .
(Enable) (EN)
STEP 7
"Enable ()" (EN),
. EN = TRUE,
. .
-11
HOLD
CPU HOLD RUN
.
.
Offline
,
( ) .
Online
, (
) .
RUN
RUN
. .
RUN-P
RUN-P RUN,
RUN-P .
(Semantics)
, .
(Symbol)
,
.
, ,
(, , ,
, ). : : I5.0, : Bool, :
Emer_Off_Switch
(Addressing, Symbolic)
,
.
.
-12
(Constant, symbolic)
- -
.
.
(Programming, Symbolic)
SCL
: , Q1.1 "valve_17".
.
(Syntax Rule)
SCL
. ;
, .
(Status Word)
CPU.
S7-SCL V5.1 for S7-300/S7-400
A5E00059543-01
-13
STEP 7.
. .
(Programming, Structured)
, ,
,
().
.
(Counter)
CPU.
. STEP 7
, (,
) (, ).
(Variable Table)
,
, .
(Symbol Table)
, ( )
. : Emer_Off (), I1.7
(Address), Controller (), SFB24 ()
(Timers)
CPU.
. STEP 7,
(, )
(Start).
-14
(Term)
- ,
, .
.
(Block Type)
STEP 7 :
, , , ,
, ,
, .
(Data Type)
:
-15
(Actual Parameter)
(FB) (FC).
: "Start"
"I3.6".
OK (OK Flag)
OK ,
. -
BOOL.
(Formal Parameter)
. FB FC
, SFB SFC .
,
,
.
, -
.
(Function (FC))
A function allows you to pass parameters in the user program, which means they
are suitable for programming complex functions that are required frequently, for
example, calculations.
International Electrotechnical Commission (
) IEC 1131-3,
, .
,
.
-16
(Integer (INT))
(INT) .
16- .
(Instance)
"" .
.
STEP 7 n , , ,
, n
.
SCL
, PASCAL,
DIN EN-61131-3 ( IEC 1131-3) ,
, ,
. " Structured Control Language
( )".
-17
-18
-, 10-8
*, 10-9
**, 10-8
/, 10-8
+, 10-8
<, 10-12
<=, 10-12
<>, 10-12
=, 10-12
>, 10-12
>=, 10-12
ABS, 13-9
ACOS, 13-10
AND, 10-10
ANY, 6-18, 6-19
ARRAY, 6-10, 7-4, 11-5
ARRAY, 11-5
ASIN, 13-10
AT, 7-6
ATAN, 13-10
AUTHORS.EXE, 1-9
BIT, 6-3
BLOCK_DB_TO_WORD, 13-4
BYTE, 6-3
BYTE_TO_BOOL, 13-4
BYTE_TO_CHAR, 13-4
CHAR, 6-3
CHAR_TO_BYTE, 13-4
CHAR_TO_INT, 13-4
CONCAT, 13-13
COS, 13-10
COUNTER, 6-16, 12-1
DATE, 6-5
DATE_AND_TIME, 6-6
DATE_TO_DINT, 13-4
DELETE, 13-15
DI_STRNG, 13-19
DIN Standard EN-61131-3, 1-1
DINT, 6-3
DINT_TO_DATE, 13-4
DINT_TO_DWORD, 13-4
DINT_TO_INT, 13-4
DINT_TO_TIME, 13-4
DINT_TO_TOD, 13-4
DIV, 10-8
DWORD, 6-3
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
DWORD_TO_BOOL, 13-4
DWORD_TO_BYTE, 13-4
DWORD_TO_DINT, 13-4
DWORD_TO_REAL 1), 13-4
DWORD_TO_WORD, 13-4
EN, 11-42
ENO, 11-42, 11-43
EQ_STRNG, 13-17
EXP, 13-9
EXPD, 13-9
FC, 5-15, 11-27, 11-36
FIND, 13-16
GE_STRNG, 13-17
Go To, 3-11
GT_STRNG, 13-18
I_STRNG, 13-18
INSERT, 13-15
INT, 6-3
INT_TO_CHAR, 13-4
INT_TO_WORD, 13-4
LE_STRNG, 13-17
LEFT, 13-14, 13-16
LEN, 13-13
LN, 13-9
LOG, 13-9
LT_STRNG, 13-18
MID, 13-14
MOD, 10-9
NE_STRNG, 13-17
NOT, 10-10
OB, 5-17
OR, 10-10
POINTER, 6-17
R_STRNG, 13-19
REAL, 6-3
REAL_TO_DINT, 13-4
REAL_TO_DWORD 2), 13-4
REAL_TO_INT, 13-4
REPLACE, 13-16
RIGHT, 13-14
ROL, 13-11
ROR, 13-11
S_CD, 12-5
S_CU, 12-5
S_CUD, 12-6
S_ODT, 12-16
S_ODTS, 12-17
-1
S_OFFDT, 12-18
S_PEXT, 12-15
S_PULSE, 12-14
S5TIME, 6-5
SFC/SFB, 13-22
SHL, 13-11
SHR, 13-11
SIN, 13-10
SQR, 13-9
SQRT, 13-9
STRING, 6-8, 8-9, 13-15, 13-19
STRING_TO_CHAR, 13-4
STRNG_DI, 13-19
STRNG_I, 13-18
STRNG_R, 13-19
STRUCT, 6-12
TAN, 13-10
TIME, 6-5
TIME_OF_DAY, 6-5
TIME_TO_DINT, 13-4
TIMER, 6-16
TOD_TO_DINT, 13-4
UDT, 6-14
, 5-21
, 5-21
VAR, 7-10
VAR_IN_OUT, 7-10
VAR_INPUT, 7-10
VAR_OUTPUT, 7-10
VAR_TEMP, 7-10
WORD, 6-3
WORD_TO_BLOCK_DB, 13-4
WORD_TO_BOOL, 13-4
WORD_TO_BYTE, 13-4
WORD_TO_INT, 13-4
XOR, 10-10
, 14-25
, 9-8
CPU, 9-3
, 3-12
, 1-9
, 9-2, 10-3
,
10-8
, 5-8, 5-10
, 5-5, 5-8
, 14-28
, 5-5
,
5-8
, 6-3
, 8-6
-2
, 6-3
, 2-4, 3-6, 5-1
, 5-18, 9-11
,
4-1
-
ACQUIRE, 2-18
, 3-13
, 7-6
, 11-12
, 8-8
, 11-37
, 11-37
, 3-9
, 1-10
, 4-15,
7-1
S5, 12-12
, 3-13
,
3-14
, 3-14
,
3-14
,
3-14
,
14-18
/ ,
11-32
, 11-39
EN, 11-42
(FB),
11-31
, 7-1
(FC),
11-39
,
12-20
CPU, 3-31
CPU, 3-34
, 3-10
, 3-13
, 5-12
(FB SFB)
/,
11-32
(FC), 11-36
,
S7-SCL V5.1 S7-300/S7-400
A5E00059543-01
11-37
EN, 11-42
,
11-38
, 11-39
/, 11-40
, 11-36
, 11-36
, 12-1
, 12-8
(FB SFB), 11-28
, 11-28
, 11-28
, 11-31
FB,
11-30
/,
11-32, 11-34
, 11-28
, 11-28
,
11-32
, 10-12
, 10-12
, 3-11
ENO, 11-42
, 10-2
, 3-29
, 4-2
, 9-1
, 9-2
, 11-28,
11-33
, 6-3
, 7-1
, 7-1
, 11-39
, 5-8
, 10-2
, 3-32
, 3-2
, 3-21
, 3-21
SCL,
3-6
, 3-9
SCL, 3-1
, 3-7
, 12-12
A5E00059543-01
, 10-2
, 4-7
, 4-6
, 4-5, 14-18
, 14-19
, 4-5
, 4-5
, 4-5
,
14-15
, 10-2
, 4-5
, 4-5
, 4-5
, 4-5
,
14-15
, 5-3
CPU, 9-6
, 1-9
, 10-2
, 3-8
, 3-19, 5-11, 5-21
, 14-9
, 3-14
, 14-26
, 4-13
, 4-14
CPU, 3-34
, 3-15
, 3-15
, 1-1, 1-4
, 3-18
, 5-3
, 3-20
, 8-15
, 8-12
, 8-2, 8-16
, 3-30
, 3-10
, 13-9
, 2-4, 3-8, 5-1
, 10-12
, 4-15, 7-4,
7-11
, 13-9
, 8-17
, 4-3
, 10-2
, 3-24
, 7-8
/, 11-32
-3
, 11-27
, 12-3
, 12-10
, 3-3, 3-15
,
3-19
, 5-3
, 10-2
, 3-24
, 14-13
, 3-3
,
7-10
, 9-2
CPU, 4-7, 9-6
, 5-8, 5-9
, 7-8
, 11-1
CASE, 11-12, 11-16
CONTINUE, 11-12,
11-23
EXIT, 11-24
FOR, 11-18
FOR, 11-12
GOTO, 11-25
IF, 11-12, 11-14
REPEAT, 11-12, 11-22
RETURN, 11-12, 11-26
WHILE, 11-12, 11-21
, 11-12
, 11-18, 11-26
, 11-12
, 14-8
, 14-6
, 4-1, 14-1
,
3-6
(UDT), 5-21, 6-14,
11-3
, 5-17
SCL, 4-12
SCL,
3-5
STEP 7, 3-29
, 3-18
, 3-25
, 1-6
, 1-4
, 3-9
-4
CPU, 3-31
CPU, 3-33
CPU, 3-34
/
CPU,
3-32
, 10-2
, 3-12
, 3-2
, 7-1, 11-30, 11-40
FB, 11-33
FC, 11-40
, 4-15, 7-13
,
4-15, 7-1, 7-10
, 7-1
, 7-10
, 7-8
,
4-15, 7-1
, 8-9
SCL,
3-19
, 3-9
, 3-32
, 9-1
SCL, 3-2
, 3-8
, 3-25
SCL, 3-8
, 3-18
, 2-1
, 6-20, 11-35, 11-41,
12-7, 13-7, 13-10, 13-12
, 10-2
/, 11-32,
11-34, 11-40
/
(FB/SFB), 11-32, 11-34
/
(FC), 11-40
,
14-39
,
11-10
, 11-10
,
11-9
DATE_AND_TIME, 11-8
STRING, 11-7
STRUCT UDT, 11-3
,
11-2
, 2-4, 51
, 3-9
, 2-4, 3-8, 5-1
, 11-12
SCL,
3-5, 3-19
, 3-2
, 10-2
, 5-8, 7-14
, 7-12
, 5-8
, 14-31
, 7-11
, 5-8
, 5-8
, 4-13
,
14-37
, 5-11
, 7-6
SCL , 2-1
, 2-1
, 10-4
SCL, 3-14
, 1-4
CPU, 3-21
, 8-2
, 8-9
CPU, 9-5
, 6-3
, 4-1,
14-1
, 3-33
A5E00059543-01
, 5-10
/
, 13-22
, 6-3
, 10-2
, 6-1, 6-6,
6-8
, 1-1
, 3-7
SCL, 3-4
, 3-17
, 1-1
, 1-1
, 1-1
, 3-29
, 13-4,
13-11
, 4-6
, 4-15,
7-1, 7-8
, 10-2
, 3-12
, 3-2
, 3-2
, 4-12
, 4-14
, 5-3
(DB),
5-18
(OB), 5-17
,
5-8
(FC), 5-15
(FB), 5-13
,
2-4, 2-6
, 4-1
, 9-11
, 6-12
(S_CU), 12-5
/ (S_CUD), 12-6
(S_CD), 12-5
, 12-7
, 12-4
,
12-1
-5
, 12-3
,
12-7
(S_CU), 12-5
/ (S_CUD),
12-6
(S_CD), 12-5
, 12-19
, 12-12
,
12-8
(S_ODT), 12-16
(S_ODTS), 12-17
(S_OFFDT), 12-18
(S_PULSE), 12-14
(S_PEXT), 12-15
, 12-10
, 12-19
,
( ),
14-4
DATE_AND_TIME, 6-7
ANY, 6-18
ARRAY, 6-10
BLOCK, 6-17
COUNTER, 6-16
STRING, 6-8
STRUCT, 6-12
TIMER, 6-16
UDT, 6-14
, 6-14
, 6-1
, 6-2
, 6-2
, 6-16
, 3-11
NIL, 6-18
, 10-2
, 10-2
, 10-2
WHILE, 11-21
-6
, 3-14
, 3-14
,
11-14
CASE, 11-16
CONTINUE, 11-23
EXIT, 11-24
GOTO, 11-25
REPEAT, 11-22
WHILE, 11-21,
11-23, 11-24
,
3-17
, 11-22,
11-24
, 11-13
, 3-31
, 3-31
, 3-11
,
3-17
( OK), 7-9
OK, 7-1
, 141
, 3-19
, 3-12
, 13-11
SCL, 3-25
STEP 7, 3-29
, 13-3
B, 13-4
, 13-4, 13-6
, 12-8
(FB), 5-13,
11-30
(FC), 5-15, 11-27, 11-36
,
3-20
, 3-20
, 3-12
, 10-2
, 11-12
, 6-3
, 13-9
, 11-32
FB, 11-32
FC, 11-40
CPU, 3-32
CPU, 3-32
?, 1-7
, 3-14
, 3-14
, 3-14
, 3-14
, 3-14
, 3-14
, 6-5
, 1-1
A5E00059543-01
-7