S7-PCI315 instruction set
The S7-PCI315 PLC has the complete instruction set of the SIMATIC® S7-315 PLC.
Bit logic instructions
| Instruction |
Operand |
Description
|
| A |
|
AND with a scan to "1"
|
| AN |
|
AND with a scan to "0"
|
| O |
|
OR with scan to "1"
|
| ON |
|
OR with scan to "0"
|
| X |
|
Exclusive-OR with a scan to "1"
|
| XN |
|
Exclusive-OR with a scan to "0"
|
| |
I |
of an input
|
| |
Q |
of an output
|
| |
M |
of a memory flag
|
| |
L |
of a local data bit
|
| |
T |
of a timer
|
| |
C |
of a counter
|
| |
DBX |
of a data bit
|
| |
DIX |
of an instance data bit
|
| ==0 |
|
result equal zero
|
| <>0 |
|
result unequal zero
|
| >0 |
|
result greater than zero
|
| >=0 |
|
result greater or equal zero
|
| <0 |
|
result less than zero
|
| <=0 |
|
result less or equal zero
|
| UO |
|
invalid result
|
| OV |
|
overflow
|
| OS |
|
overflow (saved)
|
| BR |
|
binary result
|
Other boolean logic instructions
| Operation |
Operand |
Description
|
| A( |
|
AND left parenthesis
|
| AN( |
|
AND NOT left parenthesis
|
| O( |
|
OR left parenthesis
|
| ON( |
|
OR NOT left parenthesis
|
| X( |
|
Exclusive OR left parenthesis
|
| XN( |
|
Exclusive OR NOT left parenthesis
|
| ) |
|
Right parenthesis
|
| O |
|
OR-ing AND operations
|
| NOT |
|
Negate RLO
|
| SET |
|
Set RLO to "1"
|
| CLR |
|
Set RLO to "0"
|
| SAVE |
|
Save RLO to the BR bit
|
| Operation |
Operand |
Description
|
| = |
|
Assign value of RLO
|
| S |
|
Set
|
| R |
|
Reset
|
| FP |
|
Positive edge detection
|
| FN |
|
Negative edge detection
|
| |
I |
of an input bit
|
| |
Q |
of an output bit
|
| |
M |
of a flag memory bit
|
| |
L |
of a local data bit
|
| |
DBX |
of a data bit
|
| |
DIX |
of an instance data bit
|
Master Control Relay
| Operation |
Operand |
Description
|
| MCRA |
|
Activate MCR
|
| MCRD |
|
Deactivate MCR
|
| MCR( |
|
Open MCR zone
|
| )MCR |
|
Close MCR zone
|
Load / Transfer instructions
| Operation |
Operand |
Description
|
| L |
|
Load operand
|
| T |
|
Transfer operand
|
| |
IB |
Input byte
|
| |
IW |
Input word
|
| |
ID |
Input double word
|
| |
QB |
Output byte
|
| |
QW |
Output word
|
| |
QD |
Output double word
|
| |
MB |
Memory byte
|
| |
MW |
Memory word
|
| |
MD |
Memory double word
|
| |
LB |
Local data byte
|
| |
LW |
Local data word
|
| |
LD |
Local data double word
|
| |
DBB |
Data block byte
|
| |
DBW |
Data block word
|
| |
DBD |
Data block double word
|
| |
DIB |
Instance data block byte
|
| |
DIW |
Instance data block word
|
| |
DID |
Instance data block double word
|
| |
STW |
Status word
|
| L |
Const |
Load constant value
|
| L |
#Pointer |
Load pointer
|
| L |
T |
Timer
|
| LC |
T |
Timer (BCD coded)
|
| L |
C |
Counter
|
| LC |
C |
Counter (BCD coded)
|
| L |
DBNO |
Data block number
|
| L |
DBLG |
Data block length
|
| L |
DINO |
Instance data block number
|
| L |
DILG |
Instance data block length
|
Peripheral access instructions
| Operation |
Operand |
Description
|
| L |
PIB |
Load peripheral input byte
|
| L |
PIW |
Load peripheral input word
|
| L |
PID |
Load peripheral input double word
|
| T |
PQB |
Transfer peripheral output byte
|
| T |
PQW |
Transfer peripheral output word
|
| T |
PQD |
Transfer peripheral output double word
|
Accumulator instructions
| Operation |
Operand |
Description
|
| PUSH |
|
Push accumulators upwards
|
| POP |
|
Push accumulators downwards
|
| ENT |
|
Push accumulators (without A1) A2->A3, A3->A4
|
| LEAVE |
|
Push accumulators (without A1) A4->A3, A3->A2
|
| TAK |
|
Change ACCU1 with ACCU2
|
| CAW |
|
Change ACCU1 bytes 0 and 1
|
| CAD |
|
Change ACCU1 bytes 0 and 3, 1 and 2
|
Shift and rotating instructions
| Operation |
Operand |
Description
|
| SLW |
|
Shift ACCU1-L left (word shift)
|
| SLD |
|
Shift ACCU1 left (double word shift)
|
| SRW |
|
Shift ACCU1-L right (word shift)
|
| SRD |
|
Shift ACCU1 right (double word shift)
|
| SSI |
|
Shift ACCU1-L right (word shift with sign)
|
| SSD |
|
Shift ACCU1 right (double word shift with sign)
|
| RLD |
|
Rotate ACCU1 left (double word)
|
| RLDA |
|
Rotate ACCU1 left through CC1
|
| RRDA |
|
Rotate ACCU1 right through CC1
|
| RRD |
|
Rotate ACCU1 right (double word)
|
| |
Const |
Number of places to shift/rotate
|
| |
|
Number of places to shift/rotate located in ACCU2
|
Timer instructions
| Operation |
Operand |
Description
|
| SP |
T |
Start as impulse
|
| SE |
T |
Start as extended impulse
|
| SD |
T |
Start as ON-delay
|
| SS |
T |
Start as saving ON-delay
|
| SF |
T |
Start as OFF-delay
|
| R |
T |
Reset timer
|
| FR |
T |
Enable timer
|
Counter instructions
| Operation |
Operand |
Description
|
| CU |
C |
Count up (increment)
|
| CD |
C |
Count down (decrement)
|
| S |
C |
Set counter
|
| R |
C |
Reset counter
|
| FR |
C |
Enable counter
|
Word instructions
| Operation |
Operand |
Description
|
| AW |
|
AND ACCU1-L (AND word)
|
| AD |
|
AND ACCU1 (AND double word)
|
| OW |
|
OR ACCU1-L (OR word)
|
| OD |
|
OR ACCU1 (OR double word)
|
| XOW |
|
Exclusive-OR ACCU (XOR word)
|
| XOD |
|
Exclusive-OR ACCU (XOR double word)
|
| |
Const |
with a word or double word constant
|
| |
|
with ACCU2
|
Arithmetic instructions
| Operation |
Operand |
Description
|
| ==I |
|
Integer values equal
|
| <>I |
|
Integer values unequal
|
| >I |
|
Integer values greater
|
| >=I |
|
Integer values greater or equal
|
| <I |
|
Integer values less
|
| <=I |
|
Integer values less or equal
|
| ==D |
|
Double integer values equal
|
| <>D |
|
Double integer values unequal
|
| >D |
|
Double integer values greater
|
| >=D |
|
Double integer values greater or equal
|
| <D |
|
Double integer values less
|
| <=D |
|
Double integer values less or equal
|
| ==R |
|
Real values equal
|
| <>R |
|
Real values unequal
|
| >R |
|
Real values greater
|
| >=R |
|
Real values greater or equal
|
| <R |
|
Real values less
|
| <=R |
|
Real values less or equal
|
| SIN |
|
Sine of a real value
|
| COS |
|
Cosine of a real value
|
| TAN |
|
Tangent of a real value
|
| ASIN |
|
Arcsine of a real value
|
| ACOS |
|
Arccosine of a real value
|
| ATAN |
|
Arctanget of a real value
|
| SQR |
|
Square a real value
|
| SQRT |
|
Square root a real value
|
| EXP |
|
e to the power of a real value
|
| LN |
|
Natural logarithm of a real value
|
| +I |
|
Integer addition
|
| -I |
|
Integer subtraction
|
| *I |
|
Integer multiplication
|
| /I |
|
Integer division
|
| +D |
|
Double-integer addition
|
| -D |
|
Double-integer subtraction
|
| *D |
|
Double-integer multiplication
|
| /D |
|
Double-integer division
|
| +R |
|
Real addition
|
| -R |
|
Real subtraction
|
| *R |
|
Real multiplication
|
| /R |
|
Real division
|
| MOD |
|
Double integer division (modulo)
|
| + |
Const |
Add a constant
|
| +P# |
Const |
Add a pointer
|
| DEC |
|
decrement ACCU1-LL (one byte)
|
| INC |
|
increment ACCU1-LL (one byte)
|
Data type conversion instructions
| Operation |
Operand |
Description
|
| ITD |
|
Convert integer to double integer
|
| ITB |
|
Convert integer to BCD
|
| DTB |
|
Convert double integer to BCD
|
| DTR |
|
Convert double integer to real
|
| BTI |
|
Convert BCD to integer
|
| BTD |
|
Convert BCD to double integer
|
| RND |
|
Convert real to double integer (round)
|
| RND+ |
|
Convert real to double integer (round up)
|
| RND- |
|
Convert real to double integer (round down)
|
| TRUNC |
|
Convert real to double integer (truncate)
|
| INVI |
|
Invert ACCU1-L (integer)
|
| INVD |
|
Invert ACCU1 (double integer)
|
| NEGI |
|
Negate ACCU1-L (integer)
|
| NEGD |
|
Negate ACCU1 (double integer)
|
| NEGR |
|
Negate ACCU1 (real)
|
| ABS |
|
REAbsolute value (real)
|
Jump instructions
| Operation |
Operand |
Description
|
| JU |
Destination |
Jump unconditional
|
| JC |
Destination |
Jump if RLO = 1
|
| JCB |
Destination |
Jump if RLO = 1 (save RLO)
|
| JCN |
Destination |
Jump if RLO = 0
|
| JNB |
Destination |
Jump if RLO = 0 (save RLO)
|
| JBI |
Destination |
Jump if BR = 1
|
| JNBI |
Destination |
Jump if BR = 0
|
| JZ |
Destination |
Jump if compare result = 0
|
| JN |
Destination |
Jump if compare result ≠ 0
|
| JP |
Destination |
Jump if compare result > 0
|
| JPZ |
Destination |
Jump if compare result >= 0
|
| JM |
Destination |
Jump if compare result < 0
|
| JMZ |
Destination |
Jump if compare result <= 0
|
| JUO |
Destination |
Jump if compare result "Unordered Math Instruction"
|
| JO |
Destination |
Jump on overflow
|
| JOS |
Destination |
Jump on saved overflow
|
| JL |
Destination |
Jump distributor
|
| LOOP |
Destination |
Loop programming (decrement ACCU1-L and jump if ≠ 0
|
Block call instructions
| Operation |
Operand |
Description
|
| CALL FB |
|
Unconditional call of an FB with parameter transfer
|
| CALL FC |
|
Unconditional call of an FC with parameter transfer
|
| CALL SFB |
|
Unconditional call of an SFB with parameter transfer
|
| CALL SFC |
|
Unconditional call of an SFC with parameter transfer
|
| UC FB |
|
Unconditional call of an FB without parameter transfer
|
| CC FB |
|
Conditional call of an FB without parameter transfer
|
| UC FC |
|
Unconditional call of an FC without parameter transfer
|
| CC FC |
|
Conditional call of an FC without parameter transfer
|
| BEU |
|
End block unconditionally
|
| BEC |
|
End block conditionally (RLO = 1)
|
| BE |
|
End block
|
| OPN |
DB |
Open data block
|
| |
DI |
Open instance data block
|
| TDB |
|
Exchange data block registers
|
Indirect adressing instructions
| Operation |
Operand |
Funktionsbeschreibung
|
| LAR1 |
|
Load AR1
|
| LAR2 |
|
Load AR2
|
| |
MD |
with memory double word
|
| |
LD |
with local data double word
|
| |
DBD |
with datablock double word
|
| |
DID |
with instance data block double word
|
| LAR1 |
|
Load AR1 with ACCU1
|
| LAR2 |
|
Load AR2 with ACCU1
|
| LAR1 |
AR2 |
Load AR1 with AR2
|
| LAR1 |
P# |
Load AR1 with pointer
|
| LAR2 |
P# |
Load AR2 with pointer
|
| TAR1 |
|
Transfer in AR1
|
| TAR2 |
|
Transfer in AR2
|
| |
MD |
in memory double word
|
| |
LD |
in local data double word
|
| |
DBD |
in datablock double word
|
| |
DID |
in instance data block double word
|
| TAR1 |
|
Transfer AR1 in ACCU1
|
| TAR2 |
|
Transfer AR2 in ACCU1
|
| TAR1 |
AR2 |
Transfer AR1 in AR2
|
| TAR |
|
Swap AR1 with AR2
|
| +AR1 |
|
Add ACCU1 to AR1
|
| +AR2 |
|
Add ACCU1 to AR2
|
| +AR1 |
P# |
Add pointer to AR1
|
| +AR2 |
P# |
Add pointer to AR2
|
Program display and null operation instructions
| Operation |
Operand |
Funktionsbeschreibung
|
| NOP |
0 |
Null operation instruction
|
| NOP |
1 |
Null operation instruction
|
| BLD |
Const |
Program display instruction (null operation)
|