Programming
Programming
Establishing Online
Connections and Making CPU 16
Settings
Downloading 17
Testing with Variable Tables 18
Testing using Program Status 19
Testing using the Simulation
Program S7-PLCSIM 20
(Optional Package)
Diagnostics 21
Printing and Archiving 22
When Several Users are Editing
the Same Project 23
Working with M7 24
Programmable Control Systems
Tips and Tricks 25
Appendix A
Edition 08/2000 Index
A5E00069873-03
Safety Guidelines
This manual contains notices which you should observe to ensure your own personal safety, as well as to
protect the product and connected equipment. These notices are highlighted in the manual by a warning
triangle and are marked as follows according to the level of danger:
Danger
! Indicates that death, severe personal injury or substantial property damage will result if proper
precautions are not taken.
! Warning
Indicates that death, severe personal injury or substantial property damage can result if proper
precautions are not taken.
! Caution
Indicates that minor personal injury or property damage can result if proper precautions are not taken.
Note
Draws your attention to particularly important information on the product, handling the product, or to a
particular part of the documentation.
Qualified Personnel
Only qualified personnel should be allowed to install and work on this equipment. Qualified persons are
defined as persons who are authorized to commission, to ground, and to tag circuits, equipment, and sys-
tems in accordance with established safety practices and standards.
Correct Usage
! Warning
This device and its components may only be used for the applications described in the catalog or the
technical descriptions, and only in connection with devices or components from other manufacturers
which have been approved or recommended by Siemens.
This product can only function correctly and safely if it is transported, stored, set up, and installed
correctly, and operated and maintained as recommended.
Trademarks
SIMATIC®, SIMATIC HMI® and SIMATIC NET® are registered trademarks of SIEMENS AG.
Some of other designations used in these documents are also registered trademarks; the owner's rights may
be violated if they are used by third parties for their own purposes.
The reproduction, transmission or use of this document or its We have checked the contents of this manual for agreement with
contents is not permitted without express written authority. Offen- the hardware and software described. Since deviations cannot be
ders will be liable for damages. All rights, including rights created precluded entirely, we cannot guarantee full agreement. However,
by patent grant or registration of a utility model or design, are the data in this manual are reviewed regularly and any necessary
reserved. corrections included in subsequent editions. Suggestions for
improvement are welcomed.
Siemens AG
Bereich Automatisierungs- und Antriebstechnik
Geschaeftsgebiet Industrie-Automatisierungssysteme ©Siemens AG 1998
Postfach 4848, D- 90327 Nuernberg Technical data subject to change.
Purpose
This manual provides a complete overview of programming with STEP 7. It is
designed to support you when installing and commissioning the software. It
explains how to proceed when creating programs and describes the components of
user programs.
The manual is intended for people who are involved in carrying out control tasks
using STEP 7 and SIMATIC S7 automation systems.
We recommend that you familiarize yourself with the examples in the manual
"Working with STEP 7 V5.1, Getting Started." These examples provide an easy
introduction to the topic "Programming with STEP 7."
Online Help
The manual is complemented by an online help which is integrated in the software.
This online help is intended to provide you with detailed support when using the
software.
The help system is integrated in the software via a number of interfaces:
• There are several menu commands which you can select in the Help menu:
The Contents command opens the index for the Help on Step 7.
• Using Help provides detailed instructions on using the online help.
• The context-sensitive help offers information on the current context, for
example, an open dialog box or an active window. You can open the context-
sensitive help by clicking the "Help" button or by pressing F1.
• The status bar offers another form of context-sensitive help. It displays a short
explanation for each menu command when the mouse pointer is positioned on
the menu command.
• A brief explanation is also displayed for each icon in the toolbar when the
mouse pointer is positioned on the icon for a short time.
If you prefer to read the information from the online help in printed format, you can
print out individual help topics, books, or the entire online help.
This manual is an extract from the HTML-based Help on STEP 7. For detailed
procedures please refer to the STEP 7 help. As the manual and the online help
share an almost identical structure, it is easy to switch between the manual and the
online help.
Feedback on Documentation
To help us to provide the best possible documentation for you and future STEP 7
users, we need your support. If you have any comments or suggestions relating to
this manual or the online help, please complete the questionnaire at the end of the
manual and send it to the address shown. Please include your own personal rating
of the documentation.
Nuremberg
Johnson City
Singapur
SIMATIC Hotline
11.4.1 Syntax and Formats for Blocks in STL Source Files..................................... 11-9
11.4.2 Format Table of Organization Blocks........................................................... 11-9
11.4.3 Format Table of Function Blocks ............................................................... 11-10
11.4.4 Format Table of Functions......................................................................... 11-11
11.4.5 Format Table of Data Blocks ..................................................................... 11-12
11.5 Creating STL Source Files ........................................................................ 11-13
11.5.1 Creating STL Source Files ........................................................................ 11-13
11.5.2 Editing S7 Source Files ............................................................................. 11-13
11.5.3 Inserting Block Templates in STL Source Files .......................................... 11-14
11.5.4 Inserting External Source Files.................................................................. 11-14
11.5.5 Generating STL Source Files from Blocks ................................................. 11-15
11.6 Saving and Compiling STL Source Files and Executing a
Consistency Check.................................................................................... 11-16
11.6.1 Saving STL Source Files ........................................................................... 11-16
11.6.2 Checking Consistency in STL Source Files................................................ 11-16
11.6.3 Troubleshooting in STL Source Files ......................................................... 11-16
11.6.4 Compiling STL Source Files ...................................................................... 11-17
11.7 Examples of STL Source Files................................................................... 11-18
11.7.1 Examples of Declaring Variables in STL Source Files................................ 11-18
11.7.2 Example of Organization Blocks in STL Source Files................................. 11-19
11.7.3 Example of Functions in STL Source Files................................................. 11-20
11.7.4 Example of Function Blocks in STL Source Files ....................................... 11-22
11.7.5 Example of Data Blocks in STL Source Files ............................................. 11-24
11.7.6 Example of User-Defined Data Types in STL Source Files ........................ 11-25
12 Displaying Reference Data 12-1
12.1 Overview of the Available Reference Data................................................... 12-1
12.1.1 Overview of the Available Reference Data................................................... 12-1
12.1.2 Cross-Reference List................................................................................... 12-2
12.1.3 Program Structure....................................................................................... 12-3
12.1.4 Assignment List for Inputs, Outputs, and Bit Memory (I/Q/M) ....................... 12-5
12.1.5 Assignment List for Timers and Counters (T/C) ........................................... 12-7
12.1.6 Unused Symbols......................................................................................... 12-8
12.1.7 Addresses Without Symbols........................................................................ 12-8
12.1.8 Displaying Block Information for LAD, FBD, and STL................................... 12-9
12.2 Working with Reference Data .................................................................... 12-10
12.2.1 Ways of Displaying Reference Data .......................................................... 12-10
12.2.2 Displaying Lists in Additional Working Windows......................................... 12-11
12.2.3 Generating and Displaying Reference Data ............................................... 12-11
12.2.4 Finding Address Locations in the Program Quickly .................................... 12-12
12.2.5 Example of Working with Address Locations.............................................. 12-13
13 Checking Block Consistency and Time Stamps as Block Property 13-1
13.1 Checking Block Consistency ....................................................................... 13-1
13.2 Time Stamps as a Block Property and Time Stamp Conflicts....................... 13-3
13.3 Time Stamps in Logic Blocks....................................................................... 13-4
13.4 Time Stamps in Shared Data Blocks ........................................................... 13-5
13.5 Time Stamps in Instance Data Blocks.......................................................... 13-6
13.6 Time Stamps in UDTs and Data Blocks Derived from UDTs ........................ 13-7
A Appendix A-1
A.1 Operating Modes ..........................................................................................A-1
A.1.1 Operating Modes and Mode Transitions ........................................................A-1
A.1.2 STOP Mode..................................................................................................A-4
A.1.3 STARTUP Mode ...........................................................................................A-5
A.1.4 RUN Mode..................................................................................................A-12
A.1.5 HOLD Mode................................................................................................A-13
A.2 Memory Areas of S7 CPUs .........................................................................A-14
A.2.1 Distribution of the Memory Areas.................................................................A-14
A.2.2 Load Memory and Work Memory ................................................................A-15
A.2.3 System Memory..........................................................................................A-17
A.2.3.1 Using the System Memory Areas ................................................................A-17
A.2.3.2 Process-Image Input/Output Tables ............................................................A-19
A.2.3.3 Local Data Stack.........................................................................................A-22
A.2.3.4 Interrupt Stack ............................................................................................A-24
A.2.3.5 Block Stack.................................................................................................A-24
A.2.3.6 Diagnostic Buffer.........................................................................................A-25
A.2.3.7 Evaluating the Diagnostic Buffer..................................................................A-25
A.2.3.8 Retentive Memory Areas on S7-300 CPUs..................................................A-27
A.2.3.9 Retentive Memory Areas on S7-400 CPUs..................................................A-29
A.2.3.10 Configurable Memory Objects in the Work Memory .....................................A-30
A.3 Data Types and Parameter Types...............................................................A-31
A.3.1 Introduction to Data Types and Parameter Types........................................A-31
A.3.2 Elementary Data Types...............................................................................A-32
A.3.2.1 Format of the Data Type INT (16-Bit Integers) .............................................A-33
A.3.2.2 Format of the Data Type DINT (32-Bit Integers)...........................................A-33
A.3.2.3 Format of the Data Type REAL (Floating-Point Numbers)............................A-34
A.3.2.4 Format of the Data Types WORD and DWORD in Binary Coded
Decimal Numbers .......................................................................................A-38
A.3.2.5 Format of the Data Type S5TIME (Time Duration).......................................A-39
A.3.3 Complex Data Types...................................................................................A-40
A.3.3.1 Format of the Data Type DATE_AND_TIME................................................A-41
A.3.3.2 Using Complex Data Types.........................................................................A-42
A.3.3.3 Using Arrays to Access Data.......................................................................A-43
A.3.3.4 Using Structures to Access Data .................................................................A-46
A.3.3.5 Using User-Defined Data Types to Access Data..........................................A-48
A.3.4 Parameter Types ........................................................................................A-50
A.3.4.1 Format of the Parameter Types BLOCK, COUNTER, TIMER ......................A-51
A.3.4.2 Format of the Parameter Type POINTER ....................................................A-52
A.3.4.3 Using the Parameter Type POINTER ..........................................................A-53
A.3.4.4 Block for Changing the Pointer....................................................................A-54
A.3.4.5 Format of the Parameter Type ANY ............................................................A-57
A.3.4.6 Using the Parameter Type ANY ..................................................................A-60
A.3.4.7 Assigning Data Types to Local Data of Logic Blocks....................................A-64
A.3.4.8 Permitted Data Types when Transferring Parameters..................................A-66
A.3.4.9 Transferring to IN_OUT Parameters of a Function Block .............................A-71
A.4 Working with Older Projects ........................................................................A-72
A.4.1 Converting Version 1 Projects .....................................................................A-72
A.4.2 Converting Version 2 Projects .....................................................................A-73
A.4.3 Notes on STEP 7 V.2.1 Projects with GD Communication ...........................A-74
A.4.4 Expanding DP Slaves That Were Created with Previous Versions
of STEP 7 ...................................................................................................A-74
A.4.5 DP Slaves with Missing or Faulty GSE Files................................................A-75
A.5 Sample Programs .......................................................................................A-76
What is STEP 7?
STEP 7 is the standard software package used for configuring and programming
SIMATIC programmable logic controllers. It is part of the SIMATIC industry
software. There are the following versions of the STEP 7 Standard package:
• STEP 7 Micro/DOS and STEP 7 Micro/Win for simpler stand-alone applications
on the SIMATIC S7-200.
• STEP 7 for applications on SIMATIC S7-300/S7-400, SIMATIC M7-300 /
M7-400, and SIMATIC C7 with a wider range of functions:
- Can be extended as an option by the software products in the SIMATIC
Industry Software (see also Extended Uses of the STEP 7 Standard
Package)
- Opportunity of assigning parameters to function modules and
communications processors
- Forcing and multicomputing mode
- Global data communication
- Event-driven data transfer using communication function blocks
- Configuring connections
STEP 7 is the subject of this documentation, STEP 7 Micro is described in the
"STEP 7 Micro/DOS" documentation.
Basic Tasks
When you create an automation solution with STEP 7, there are a series of basic
tasks. The following figure shows the tasks that need to be performed for most
projects and assigns them to a basic procedure. It refers you to the relevant
chapter thus giving you the opportunity of moving through the manual to find
task-related information.
Install STEP 7
Start STEP 7
and create a project
Option:
• Program messages
• Configure variables for "Operator Control
and Monitoring"
NO
YES
Configure hardware and connection
Download program
Alternative Procedures
Specialized Topics
When you create an automation solution there are a number of special topics
which may be of interest to you:
• Multicomputing – Synchronous Operation of Several CPUs (see also
Multicomputing - Synchronous Operation of Several CPUs)
• More than One User Working in a Project (see also More than One User
Editing Projects)
• Working with M7 Systems (see also Procedure for M7 Systems)
Standards Used
The SIMATIC programming languages and language representations integrated in
STEP 7 comply with the standard EN 61131-3 or IEC 1131-3. The standard
package runs on the operating system Windows 95/98/NT/2000 and matches the
graphic and object-oriented operating philosophy of Windows.
Applications in STEP 7
The STEP 7 Standard package provides a series of applications (tools) within the
software:
Standard Package
NETPRO
Symbol Editor SIMATIC Manager Communication
Configuration
You do not need to open the tools separately; they are started automatically when
you select the corresponding function or open an object.
SIMATIC Manager
The SIMATIC Manager manages all the data that belong to an automation project
− regardless of which programmable control system (S7/M7/C7) they are designed
for. The tools needed to edit the selected data are started automatically by the
SIMATIC Manager.
Symbol Editor
With the Symbol Editor you manage all the shared symbols. The following
functions are available:
• Setting symbolic names and comments for the process signals
(inputs/outputs), bit memory, and blocks
• Sort functions
• Import/export to/from other Windows programs
The symbol table created with this tool is available to all the other tools. Any
changes to the properties of a symbol are therefore recognized automatically by all
tools.
Diagnosing Hardware
These functions provide you with an overview of the status of the programmable
controller. An overview can display symbols to show whether every module has a
fault or not. A double-click on the faulty module displays detailed information about
the fault. The scope of this information depends on the individual module:
• Display general information about the module (for example, order number,
version, name) and the status of the module (for example, faulty)
• Display the module faults (for example, channel fault) for the central I/O and
DP slaves
• Display messages from the diagnostic buffer
For CPUs the following additional information is displayed:
• Causes of faults in the processing of a user program
• Display the cycle duration (of the longest, shortest, and last cycle)
• MPI communication possibilities and load
• Display performance data (number of possible inputs/outputs, bit memory,
counters, timers, and blocks)
Programming Languages
The programming languages Ladder Logic, Statement List, and Function Block
Diagram for S7-300 and S7-400 are an integral part of the standard package.
• Ladder Logic (or LAD) is a graphic representation of the STEP 7 programming
language. Its syntax for the instructions is similar to a relay ladder logic
diagram: Ladder allows you to track the power flow between power rails as it
passes through various contacts, complex elements, and output coils.
• Statement List (or STL) is a textual representation of the STEP 7 programming
language, similar to machine code. If a program is written in Statement List, the
individual instructions correspond to the steps with which the CPU executes
the program. To make programming easier, Statement List has been extended
to include some high-level language constructions (such as structured data
access and block parameters).
Hardware Configuration
You use this tool to configure and assign parameters to the hardware of an
automation project. The following functions are available:
• To configure the programmable controller you select racks from an electronic
catalog and arrange the selected modules in the required slots in the racks.
• Configuring the distributed I/O is identical to the configuration of the central I/O.
Channel-granular I/O is also supported.
• In the course of assigning parameters to the CPU you can set properties such
as startup behavior and scan cycle time monitoring guided by menus.
Multicomputing is supported. The data entered are stored in system data
blocks.
• In the course of assigning parameters to the modules, all the parameters you
can set are set using dialog boxes. There are no settings to be made using DIP
switches. The assignment of parameters to the modules is done automatically
during startup of the CPU. This means, for example, that a module can be
exchanged without assigning new parameters.
• Assigning parameters to function modules (FMs) and communications
processors (CPs) is also done within the Hardware Configuration tool in exactly
the same way as for the other modules. Module-specific dialog boxes and rules
exist for every FM and CP (included in the scope of the FM/CP function
package). The system prevents incorrect entries by only offering valid options
in the dialog boxes.
SIMATIC Manager
• To translate projects into other national languages, you can edit texts of the
project (block titles and comments, for example) outside of STEP 7 with an
ASCII editor or a table-editing tool using the menu commands Options >
Managing Multilingual Text > Export. You can then import the texts back into
STEP 7 using the menu command Options > Managing Multilingual Text >
Import. The format of the export file is set as "*.csv" (comma separated value).
• The complete project data can be loaded into a special memory card of the
CPU (new menu commands PLC > Save Project to Memory Card and PLC >
Get Project from Memory Card).
• Using the menu command Options > Reference Data > Delete, you can
delete the existing reference data.
• You can read about version information on the products installed with their
components and DLLs using the menu command Help > About.
• When you modify a program, you can run a consistency check on all S7 blocks
in the block folder using the menu command Edit > Check Block
Consistency. In this way, you can better test the effects of interface
modifications on other blocks and remedy errors more quickly.
• During the import of new block versions you can adopt the system attributes
which you have already defined for blocks of the user program (for example,
when uploading a system library). The attributes for each block can be
adjusted via a dialog.
Configuring Messages
• You can also create user-defined diagnostic messages for M7 programs.
• The PCS 7 Message Configuration dialog box for editing an event-driven
communication block contains two registers in which up to 10 message texts
can be entered.
CPU Messages
• In the CPU Messages application, you have various options for editing
incoming messages.
With the menu command View > Automatic Shift, the newly incoming
messages are scrolled into the window and selected.
With the menu command View > Bring to the Foreground, the window is
brought to the foreground and the message is displayed.
• With the menu command View > Leave in the Background, the message is
displayed in the window, but the window remains in the background.
With the menu command View > Ignore Message, messages are not
displayed in the window, and they are not saved in the archive.
• With the menu command PLC > Remove Module, you can remove the
highlighted module from the list.
• With the Settings CPU Messages dialog box, you can adjust the size of the
archive, save the list of registered modules, and reestablish the connection
state at the start. You can also display the info texts at ALARM_S/SQ.
The standard package can be extended by optional software packages that are
grouped into the following three software classes:
• Engineering Tools;
these are higher-level programming languages and technology-oriented
software.
• Run-Time Software;
these contain off-the-shelf run-time software for the production process.
• Human Machine Interfaces (HMI);
this is software especially for operator control and monitoring.
The following table shows the optional software you can use depending on your
programmable control system:
STEP 7
S7-300 M7-300 C7-620
S7-400 M7-400
Engineering Tools
• Borland C/C++ o
•
1) 2)
CFC + + +
• DOCPRO + +3) +
• HARDPRO +
• M7 ProC/C++ o
•
1) 2)
S7 GRAPH + +
• S7 HiGraph + +
• S7 PDIAG +
• S7 PLCSIM + +
• S7 SCL + +
• Teleservice + + +
Run-Time Software
• Fuzzy Control + +
• M7-DDE Server +
• M7-SYS RT o
• Modular PID + +
Control
• PC-DDE Server +
• PRODAVE MPI +
• Standard PID + +
Control
Human Machine
Interface
STEP 7
S7-300 M7-300 C7-620
S7-400 M7-400
• ProAgent
• SIMATIC ProTool
• SIMATIC o
ProTool/Lite
• SIMATIC WinCC
o = obligatory
+ = optional
1)
= recommended from S7-400 upwards
2)
= not recommended for C7-620
3)
= not for C programs
Engineering Tools are task-oriented tools that can be used to extend the standard
package. Engineering Tools include:
• High-level languages for programmers
• Graphic languages for technical staff
• Supplementary software for diagnostics, simulation, remote maintenance, plant
documentation etc.
Engineering Tools
S7 HiGraph
Supplementary software
High-Level Languages
The following languages are available as optional packages for use in
programming the SIMATIC S7-300/S7-400 programmable logic controllers:
• S7 GRAPH is a programming language used to program sequential controls
(steps and transitions). In this language, the process sequence is divided into
steps. The steps contain actions to control the outputs. The transition from one
step to another is controlled by switching conditions.
• S7 HiGraph is a programming language used to describe asynchronous,
non-sequential processes in the form of state graphs. To do this, the plant is
broken down into individual functional units which can each take on different
states. The functional units can be synchronized by exchanging messages
between the graphs.
• S7 SCL is a high-level textual language that conforms to the EN 61131-3
(IEC 1131-3) standard. It contains language constructions similar to those
found in the programming languages Pascal and C. S7 SCL is therefore
particularly suitable for users who are used to working with high-level
programming languages. S7 SCL can be used, for example, to program
complex or frequently repeated functions.
Graphic Language
CFC for S7 and M7 is a programming language for linking existing functions
graphically. These functions cover a wide range of simple logic operations through
to complex closed-loop and open-loop controls. A large number of functions of this
type are available in the form of blocks in a library. You program by copying the
blocks into a chart and connecting the blocks using lines.
Supplementary Software
• Borland C++ (M7 only) contains the Borland development environment.
• With DOCPRO you can organize all the configuration data you create with
STEP 7 into wiring manuals. These make it easy to manage the configuration
data and allow the information to be prepared for printing according to specific
standards.
• HARDPRO is the hardware configuration system for S7-300 to support the
user with large-scale configuration of complex automation tasks.
• M7-ProC/C++ (M7 only) allows the Borland development environment for the
programming languages C and C++ to be integrated into the STEP 7
development environment.
• You can use S7 PLCSIM (S7 only) to simulate S7 programmable controllers
connected to the programming device or PC for purposes of testing.
• S7 PDIAG (S7 only) allows standardized configuration of process diagnostics
for SIMATIC S7-300/S7-400. Using process diagnostics you can detect faults
and faulty states outside the programmable controller (for example, limit switch
not reached).
• TeleService allows you to program and service remote S7 and M7
programmable controllers via the telephone network using your programming
device or PC.
Run-time software covers pre-programmed solutions that can be called by the user
program. Run-time software is integrated directly into the automation solution. It
includes:
• Controllers for SIMATIC S7, for example, Standard, Modular, and Fuzzy
Control
• Tools for linking the programmable controllers with Windows applications
• A real-time operating system for SIMATIC M7
Runtime Software
Controllers
Real-time operating
Tools for linking with Windows system
PRODAVE MPI M7-DDE server M7-SYS RT
Human Machine Interface (HMI) is software especially for operator control and
monitoring in SIMATIC.
• The open process visualization system SIMATIC WinCC is a basic operator
interface system with all the important operator control and monitoring
functions which can be used in any branch of industry and with any technology.
• SIMATIC ProTool and SIMATIC ProTool/Lite are modern tools for configuring
SIMATIC operator panels (OPs) and SIMATIC C7 compact devices.
• ProAgent allows targeted fast process diagnostics in plants and machines by
establishing information about the location and cause of the fault.
SIMATIC ProTool/Lite
2.1 Authorization
2.1.1 Authorization
You will require a product-specific authorization (user rights) to use the STEP 7
programming software. The software is therefore copy-protected and can be used
only if the relevant authorization for the program or software package has been
found on the hard disk of the respective programming device or PC.
Different authorizations are required, for example, for STEP 7, and for the optional
software packages.
Authorization Diskette
A read-only authorization diskette is included with the scope of supply of the
software. It contains the actual authorization. The program "AuthorsW" required to
display, install, and remove the authorization is on the CD-ROM which also
contains STEP 7 V5.1.
The number of authorizations possible is determined by an authorization counter
on the authorization diskette. Every time you install an authorization, the counter is
decremented by 1. When the counter value reaches "zero", you cannot install any
more authorizations using this diskette.
Note
You have received a yellow authorization diskette for the STEP 7 Standard
software with the relevant authorization. .
For optional software packages you will receive a red authorization diskette with
one authorization for each.
Caution
! Read the notes in the README.TXT file on the authorization diskette and the
guidelines in "Guidelines for Handling Authorizations". If you do not adhere to
these guidelines, the authorization may be irretrievably lost.
You can use the Standard software to familiarize yourself with the user interface
and functions without an authorization. However, working effectively with STEP 7 is
only permitted and possible with an installed authorization. If you have not installed
the authorization, you will be prompted at regular intervals to install it.
Note
The validity period for the emergency license starts at the time you install the
authorization even if you do not then start STEP 7. Even if you write the
authorization back onto the diskette, the emergency license period does not stop
running.
Installing AuthorsW
The "AuthorsW" program required to display, install, and remove authorizations is
enclosed on the CD-ROM which also contains STEP 7 V5.1. You install this
program on your hard disk using a setup program from where you can use it for
authorization operations.
Note
The location of the AuthorsW program is START > SIMATIC > AuthorsW >
AuthorsW
Note
The authorization only functions under Windows NT if it has full access to the hard
disk drive "C" and to the destination drive.
Then all the necessary conditions are checked. When the checks are completed
successfully, the new authorization is activated to terminate the upgrade.
The new authorization is on the drive where the old authorization last was. If
necessary, install the authorization from the diskette to the hard disk.
Removing an Authorization
If you should need to repeat the authorization, for example, if you want to reformat
the drive on which the authorization is located, you must back up the authorization
first to a Siemens authorization diskette (uninstall it). You can then also back up the
authorizations for the optional packages used on this authorization diskette.
To transfer the authorization back to the authorization diskette, proceed as follows:
1. Insert the authorization diskette in the floppy disk drive, for example, drive A.
2. Start the program "AUTHORSW.EXE" from the hard disk.
3. In one of the two list boxes, select the drive on which the authorization is
located, in the other list box select the target drive. All the authorizations on
both drives are displayed.
4. Select the authorization you require.
Ä Å
5. Click the " " or the " " button. The selected authorization is transferred to the
authorization diskette or the selected drive.
6. Close the dialog box if you do not want to remove any more authorizations.
You can then use the diskette again to install an authorization.
You can also move authorizations between hard discs (network drives).
Caution
! Read the notes in this chapter and in the README.TXT file on the authorization
diskette. If you do not adhere to these guidelines, the authorization may be
irretrievably lost.
Backup
If a backup copy of your hard disk contains copies of authorizations, there is a
danger that these copies may overwrite the valid installed authorizations when you
restore your backup data to the hard disk, thereby destroying them.
To prevent a valid authorization being overwritten by a backup copy, you must do
one of the following:
• Remove all authorizations before you make a backup copy.
• Exclude the authorizations from the backup.
Defective Sectors
When you install an authorization, a special cluster appears on the destination
drive which is sometimes marked as ”defective". Do not try to repair this cluster.
You may destroy the authorization.
Permitted Drives
The authorization can only be installed on the hard disk. For compressed drives
(for example, DBLSPACE) you can install the authorization on the respective host
drive.
The authorization tool prevents authorizations being installed on illegal drives.
Storage Location
When you install the authorization the authorization files are stored in the protected
directory "AX NF ZZ" with the attributes "System" and "Hidden."
• These attributes must not be changed.
• The files must not be changed or deleted.
• The directory must not be moved. Files copied from the directory
(authorizations) are recognized as faulty and are not therefore valid
authorizations.
The authorization will otherwise be irretrievably lost.
The protected directory ’AX NF ZZ’ is created once per local drive and contains all
the authorizations installed on the drive. It is created when the first authorization is
installed and deleted when the last authorization is removed.
For each authorization, two files with the same name and different extensions are
created in the protected directory. These files are given the same name as the
authorization.
Number of Authorizations
You can install as many authorizations on a drive as you wish provided there is
enough free memory space; but only one of each version (for example, only one for
STEP 7 V4.x and one for STEP 7 V5.x). These authorizations do not interfere with
each other.
Defective Authorizations
Defective authorizations on a hard disk drive cannot be removed with the
AuthorsW program. They may even prevent you installing new and valid
authorizations. In this case contact your local Siemens representative.
Authorization Tool
Use the current version of the authorization tool AuthorsW in preference to any
older versions.
Note
As not all older authorizations can be recognized as from V2.0, you should work with an
older AUTHORS version (DOS version) < V3.x in these cases.
Note
Siemens programming devices (such as the PG 740) are shipped with the STEP 7
software on the hard disk ready for installation.
Note
See also the notes for Installing STEP 7 in the README.WRI file and the "List of
SIMATIC Software Packages That Are Compatible with the Versions of the
STEP 7 Basic Package."
You can find the Readme file in the Start menu under Start > Simatic > Product
Notes.
You can find the compatibility list in the Start menu under Start > Simatic >
Documentation.
ID Number
You will be prompted during installation for an ID number. Enter this ID number
which you will find on the Software Product Certificate or your authorization
diskette.
Using Authorization
During installation, the program checks to see whether an authorization is installed
on the hard disk. If no authorization is found, a message appears that the software
can be used only with an authorization. If you wish, you can run the authorization
program immediately or continue the installation and execute the authorization at a
later date. In the first case, insert the authorization diskette when you are prompted
to do so.
Flash-File Systems
In the dialog box for assigning memory card parameters, you can specify whether a
flash-file system should be installed.
The flash-file system is required, for example, when you write individual files to or
delete individual files from an EPROM memory card in SIMATIC M7 without
changing the remaining memory card content.
If you are using a suitable programming device (PG 720/PG 740/PG 760) or
external prommer and you want to use this function, select the installation of the
flash-file system.
With the settings you make here, you set up the communication link between the
programming device/PC and the programmable logic controller. During installation,
a dialog box is displayed where you can assign parameters to the programming
device/PC interface. You can display the dialog box following installation by calling
the program ”Setting PG/PC Interface" in the STEP 7 program group. This enables
you to change the interface parameters independently of the installation.
Basic Procedure
To operate an interface, you will require the following:
• Settings in the operating system
• Suitable interface parameters
If you are using a programming device via a multipoint interface (MPI) connection,
no further operating system-specific adaptations are required.
If you are using a PC with an MPI card or communications processors (CP), you
should check the interrupt and address assignments in the Windows "Control
Panel" to ensure that there are no interrupt conflicts and no address areas overlap.
In order to make it easier to assign parameters to the programming device/PC
interface, a set of predefined basic parameters (interface parameters) are
displayed in a dialog box for you to select.
Caution
! Do not remove the module parameter assignment ”TCP/IP" if it is shown.
This could prevent other applications from functioning correctly.
M M
Agitator motor
Inlet Feed Feed Flow
M
valve pump valve sensor
Switch for tank level
Ingredient A
measurement
M M
Area: ingredient A
M M
Area: mixing tank
Agitator motor
Inlet Feed Feed Flow
valve pump valve sensor M
Area: ingredient B
M M
Drain valve
As each group is divided into smaller tasks, the tasks required for controlling that
part of the process become less complicated.
In our example of an industrial blending process you can identify four distinct areas
(see table below). In this example, the area for ingredient A contains the same
equipment as the area for ingredient B.
Agitator Motor
The agitator motor mixes ingredient A with ingredient B in the mixing tank.
- Rating: 100 kW (134 hp) at 1200 rpm
The agitator motor is controlled (start/stop) from an operator station located near the
mixing tank. The number of starts is counted for maintenance purposes. Both the counters
and the display can be reset with one button.
The following conditions must be satisfied for the pumps to operate:
- The tank level sensor is not signaling "Tank below minimum."
- The drain valve of the mixing tank is closed.
- The emergency off is not activated.
The pumps are switched off if the following condition is satisfied:
- The tachometer does not indicate that the rated speed has been reached within 10
seconds of starting the motor.
Drain Valve
The drain valve allows the mixture to drain (using gravity feed) to the next stage in the
process. The valve has a solenoid with a spring return.
- If the solenoid is activated, the outlet valve is opened.
- If the solenoid is deactivated, the outlet valve is closed.
The outlet valve is controlled (open/close) from an operator station.
The drain valve can be opened under the following conditions:
- The agitator motor is off.
- The tank level sensor is not signaling ”Tank empty."
- The emergency off is not activated.
The pumps are switched off if the following condition is satisfied:
- The tank level sensor is indicating "Tank empty."
Input/Output Diagram
Input 1 Output 1
Input n
Output n
In/out 1 Device
In/out n
Start Fault
Stop Start_Dsp
Response Stop_Dsp
Reset_Maint Maint
Motor
Timer_No
Response_Time
Motor
Open Dsp_Open
Close Dsp_Closed
Valve
Valve
Reset
maintenance display
EMERGENCY STOP
The console also includes display lamps for the devices that require maintenance
after a certain number of starts and the emergency off switch with which the
process can be stopped immediately. The console also has a reset button for the
maintenance display of the three motors. Using this, you can turn off the
maintenance display lamps for the motors due for maintenance and reset the
corresponding counters to 0.
EMER
STOP
circuit
Operator
station
Operating System
Every CPU has an operating system that organizes all the functions and
sequences of the CPU that are not associated with a specific control task. The
tasks of the operating system include the following:
• Handling a warm restart and hot restart
• Updating the process image table of the inputs and outputting the process
image table of the outputs
• Calling the user program
• Detecting interrupts and calling the interrupt OBs
• Detecting and dealing with errors
• Managing the memory areas
• Communicating with programming devices and other communications partners
If you change operating system parameters (the operating system default settings),
you can influence the activities of the CPU in certain areas.
User Program
You yourself must create the user program and download it to the CPU. This
contains all the functions required to process your specific automation task. The
tasks of the user program include the following:
• Specifying the conditions for a warm restart and hot restart on the CPU (for
example, initializing signals with a particular value)
• Processing process data (for example, logically combining binary signals,
reading in and evaluating analog signals, specifying binary signals for output,
outputting analog values)
• Specifying the reaction to interrupts
• Handling disturbances in the normal running of the program
The STEP 7 programming software allows you to structure your user program, in
other words to break down the program into individual, self-contained program
sections. This has the following advantages:
• Extensive programs are easier to understand.
• Individual program sections can be standardized.
• Program organization is simplified.
• It is easier to make modifications to the program.
• Debugging is simplified since you can test separate sections.
• Commissioning your system is made much easier.
The example of an industrial blending process illustrated the advantages of
breaking down an automation process into individual tasks. The program sections
of a structured user program correspond to these individual tasks and are known
as the blocks of a program.
Block Types
There are several different types of blocks you can use within an S7 user program:
OBs, FBs, SFBs, FCs, and SFCs contain sections of the program and are therefore
also known as logic blocks. The permitted number of blocks per block type and the
permitted length of the blocks is CPU-specific.
Organization blocks (OBs) are the interface between the operating system and the
user program. They are called by the operating system and control cyclic and
interrupt-driven program execution and how the programmable logic controller
starts up. They also handle the response to errors. By programming the
organization blocks you specify the reaction of the CPU.
Local Data
When creating logic blocks (OBs, FCs, FBs), you can declare temporary local data.
The local data area on the CPU is divided among the priority classes.
On S7-400, you can change the amount of local data per priority class in the
”priority classes" parameter block using STEP 7.
Start Information of an OB
Every organization block has start information of 20 bytes of local data that the
operating system supplies when an OB is started. The start information specifies
the start event of the OB, the date and time of the OB start, errors that have
occurred, and diagnostic events.
For example, OB40, a hardware interrupt OB, contains the address of the module
that generated the interrupt in its start information.
Power on
Cycle Main
program
Power on
Startup
program
Main
program
Cycle mm
Inter- Interrupt
<Interrupt> ruption program
Inter- Error
<Error> ruption handling
This means it is possible to process parts of the user program that do not have to
be processed cyclically only when needed. The user program can be divided up
into ”subroutines" and distributed among different organization blocks. If the user
program is to react to an important signal that occurs relatively seldom (for
example, a limit value sensor for measuring the level in a tank reports that the
maximum level has been reached), the subroutine that is to be processed when the
signal is output can be located in an OB whose processing is event-driven.
OB 1
FB 1
FC 1
For the user program to function, the blocks that make up the user program must
be called. This is done using special STEP 7 instructions, the block calls, that can
only be programmed and started in logic blocks.
OB 1 FB 1 FC 1
Operating system
Instance DB 1
FB 2 FB 1 SFC 1
Instance DB 2 Instance DB 1
DB 1
FC 1
Note
If the nesting is too deep (too many levels), the local data stack may overflow
(Also refer to Local Data Stack).
Block Calls
The following figure shows the sequence of a block call within a user program. The
program calls the second block whose instructions are then executed completely.
Once the second or called block has been executed, execution of the interrupted
block that made the call is resumed at the instruction following the block call.
Program
execution
Program
execution
Instruction that calls
another block
Block end
Before you program a block, you must specify which data will be used by your
program, in other words, you must declare the variables of the block.
Note
OUT parameters must be described for each block call.
Note
The operating system resets the instances of SFB3 "TP" when a cold restart is
performed. If you want to initialize instances of this SFB after a cold restart, you
must call up the relevant instances of the SFB with PT = 0 ms via OB100. You can
do this, for example, by performing an initialization routine in the blocks which
contain instances of the SFB.
Process Images
So that the CPU has a consistent image of the process signals during cyclic
program processing, the CPU does not address the input (I) and output (Q)
address areas directly on the I/O modules but rather accesses an internal memory
area of the CPU that contains an image of the inputs and outputs.
Interrupts
Cyclic program processing can be interrupted by the following:
• An interrupt
• A STOP command (mode selector, menu option on the programming device,
SFC46 STP, SFB20 STOP)
• A power outage
• The occurrence of a fault or program error
TC1 TC2
OB10
Updates process Updates process Updates process Updates process Updates process
image input table OB1 OB1 image output image input table OB1 image output image input OB1
table table table
TC1 TC2
OB10
Updates process Updates process Updates process Updates process Updates process Upda
image output image input table OB1 OB1 image output image input table OB1 image output proc
table table table outp
T max
Reserve
T min
TC Twait
PC16 OB40
Tmax
Reserve
Tmin
TC Twart
PC16 OB40
Communication Load
You can use the CPU parameter "Scan Cycle Load from Communication" to
control within a given framework the duration of communication processes that
always increase the scan cycle time. Examples of communication processes
include transmitting data to another CPU by means of MPI or loading blocks by
means of a programming device.
Test functions with a programming device are barely influenced by this parameter.
However, you can increase the scan cycle time considerably. In the process mode,
you can limit the time set for test functions (S7-300 only).
At the same time, the OB1 scan cycle time is also influenced by asynchronous
events (such as hardware interrupts or cyclic interrupts). From a statistical point of
view, even more asynchronous events occur within an OB1 scan cycle because of
the extension of the scan cycle time by the communication portion. This causes an
additional increase in the OB1 scan cycle. This increase depends on how many
events occur per OB1 scan cycle and on the duration of event processing.
Example 2 (additional asynchronous events considered):
For a pure OB1 execution time of 500 ms, a communication load of 50% can result
in an actual scan cycle time of up to 1000 ms (provided that the CPU always has
enough communication jobs to process). If, parallel to this, a cyclic interrupt with 20
ms processing time is executed every 100 ms, this cyclic interrupt would extend the
scan cycle by a total of 5*20 ms = 100 ms without communication load. That is, the
actual scan cycle time would be 600 ms. Because a cyclic interrupt also interrupts
communication, it affects the scan cycle time by 10 * 20 ms with 50%
communication load. That is, in this case, the actual scan cycle time amounts to
1200 ms instead of 1000 ms.
Notes
• Check the effects of changing the value of the "Scan Cycle Load from
Communication" parameter while the system is running.
• The communication load must be taken into account when setting the minimum
scan cycle time; otherwise time errors will occur.
Recommendations
• Where possible, apply the default value.
• Increase this value only if you are using the CPU primarily for communication
purposes and your user program is not time critical.
• In all other cases, only reduce the value.
• Set the process mode (S7-300 only), and limit the time needed there for test
functions.
Application
An FC contains a program section that is always executed when the FC is called
by a different logic block. You can use functions for the following purposes:
• To return a function value to the calling block (example: math functions)
• To execute a technological function (example: single control function with a bit
logic operation).
Note
To avoid errors when working with FBs, read Permitted Data Types when
Transferring Parameters in the Appendix.
Application
An FB contains a program that is always executed when the FB is called by a
different logic block. Function blocks make it much easier to program frequently
occurring, complex functions.
FB20:Motor DB202:Motor_2
The following table shows which variables can be assigned an initial value. Since
the temporary data are lost after the block has been executed, you cannot assign
any values to them.
Creating an Instance DB
Before you create an instance data block, the corresponding FB must already exist.
You specify the number of the FB when you create the instance data block.
FB22:Motors
In this example, FB22 does not need its own instance data block, since its instance
data are saved in the instance data block of the calling FB.
In the example in this figure, the assigned instance data are stored in a common
instance DB.
A shared DB and an instance DB can be opened at the same time. The following
figure shows the different methods of access to data blocks.
FC10
Shared
DB Access by all
(DB 20) blocks
FC11
FB12 Instance DB
Access only by FB12
(DB 112)
Preprogrammed Blocks
You do not need to program every function yourself. S7 CPUs provide you with
preprogrammed blocks that you can call in your user program.
Further information can be found in the reference help on system blocks and
system functions (Jumps to Language Descriptions and Help on Blocks and
System Attributes).
System Functions
A system function is a preprogrammed function that is integrated on the S7 CPU.
You can call the SFC in your program. SFCs are part of the operating system and
are not loaded as part of the program. Like FCs, SFCs are blocks ”without
memory."
S7 CPUs provide SFCs for the following functions:
• Copying and block functions
• Checking the program
• Handling the clock and run-time meters
• Transferring data sets
• Transferring events from a CPU to all other CPUs in multicomputing mode
• Handling time-of-day and time-delay interrupts
• Handling synchronous errors, interrupts, and asynchronous errors
• Information on static and dynamic system data, for example, diagnostics
• Process image updating and bit field processing
• Addressing modules
• Distributed I/O
• Global data communication
• Communication via non-configured connections
• Generating block-related messages
Additional Information
For more detailed information about SFBs and SFCs, refer to the "System
Software for S7-300 and S7-400, System and Standard Functions" Reference
Manual. The "S7-300 Programmable Controller, Hardware and Installation Manual"
and "S7-400, M7-400 Programmable Controllers Module Specifications Reference
Manual" explain which SFBs and SFCs are available.
If... Then...
If the time was moved ahead and one or OB80 is started and the time-of-day
more time-of-day interrupts were skipped, interrupts that were skipped are entered in
the start information of OB80.
You have not deactivated the skipped the skipped time-of-day interrupts are no
time-of-day interrupts in OB80, longer executed.
You have not deactivated the skipped the first skipped time-of-day interrupt is
time-of-day interrupts in OB80, executed, the other skipped time-of-day
interrupts are ignored.
By moving the time back, the start events the execution of the time-of-day interrupt is
for the time-of-day interrupts occur again, not repeated.
Clock pulse:
OB38
(n=8, m=0)
OB37
(n=16, m=5)
0 8 16 16 + 5 24 32 32 + 5 40 48 48 +5 t [ms]
Startup Types
There are three distinct types of startup:
• Hot restart (not in S7-300 and S7-400H)
• Warm restart
• Cold restart
The following table shows which OB the operating system calls in each startup
type.
Startup Program
You can specify the conditions for starting up your CPU (initialization values for
RUN, startup values for I/O modules) by writing your program for the startup in the
organization blocks OB100 for warm restart, OB101 for hot restart, or OB102 for
cold restart.
There are no restrictions to the length of the startup program and no time limit
since the cycle monitoring is not active. Time-driven or interrupt-driven execution is
not possible in the startup program. During the startup, all digital outputs have the
signal state 0.
Monitoring Times
To make sure that the programmable controller starts up without errors, you can
select the following monitoring times:
• The maximum permitted time for transferring parameters to the modules
• The maximum permitted time for the modules to signal that they are ready for
operation after power up
• On S7-400 CPUs, the maximum time of an interruption during which a hot
restart is permitted.
Once the monitoring times expire, the CPU either changes to STOP, or only a
warm restart is possible.
The following figure shows an example of processing the background cycle, the
main program cycle, and OB10 (in existing CPUs).
OB10 OB10
OB90 OB90
t
TC Twait
Tmin
Programming OB90
The run time of OB90 is not monitored by the CPU operating system so that you
can program loops of any length in OB90. Ensure that the data you use in the
background program are consistent by observing the following when programming:
• The reset events of OB90 (see the "System Software for S7-300 and S7-400,
System and Standard Functions" Reference Manual)
• The process image update asynchronous to OB90.
Types of Errors
The errors that can be detected by the S7 CPUs and to which you can react with
the help of organization blocks can be divided into two basic categories:
• Synchronous errors: these errors can be assigned to a specific part of the user
program. The error occurs during the execution of a particular instruction. If the
corresponding synchronous error OB is not loaded, the CPU changes to STOP
mode when the error occurs.
• Asynchronous errors: these errors cannot be directly assigned to the user
program being executed. These are priority class errors, faults on the
programmable logic controller (for example, a defective module), or
redundancy errors. If the corresponding asynchronous error OB is not loaded,
the CPU changes to STOP mode when the error occurs.
• (Exceptions: OB70, OB72, OB81).
The following table shows the types of errors that can occur, divided up into the
categories of the error OBs.
Note
If you want interrupts to be ignored, it is more effective to disable them using an
SFC, rather than to download an empty OB (with the contents BE).
When you start Windows, you will find an icon for the SIMATIC Manager, the
starting point for the STEP 7 software on the Windows interface.
The quickest method to start STEP 7 is to position the cursor on the icon and
double-click. The window containing the SIMATIC Manager is then opened. From
here you can access all the functions you have installed for the standard package
and any optional packages.
Alternatively you can also start the SIMATIC Manager via the ”Start" button in the
taskbar in Windows 95/98/NT. You will find the entry under "Simatic".
Note
You will find more information about standard Windows operation and options in
your Windows user’s guide or in the online help of your Windows operating
system.
SIMATIC Manager
The SIMATIC Manager is the basic application for configuring and programming.
You can perform the following functions in the SIMATIC Manager:
• Set up projects
• Configure and assign parameters to hardware
• Configure hardware networks
• Program blocks
• Debug and commission your programs
Access to the various functions is designed to be object-oriented, and intuitive and
easy to learn.
You can work with the SIMATIC Manager in one of two ways:
• Offline, without a programmable controller connected
• Online, with a programmable controller connected
Note the relevant safety notices in each case.
From STEP 7 V5.0 onwards, you can create several symbols in the SIMATIC
Manager and specify start parameters in the call line. By doing this, you can cause
the SIMATIC Manager to position on the object described by these parameters.
This allows you to jump to the corresponding locations in a project immediately just
by double-clicking.
On calling s7tgtopx.exe, you can specify the following start parameters:
/e <complete physical project path>
/o <logical path of the object, on which you want to position>
/h <ObjectID> /onl or /off
The easiest way to establish suitable parameters is described below.
Establishing Parameters by Copying and Pasting
Proceed as follows:
1. On your desktop, create a new link to the file s7tgtopx.exe.
2. Display the properties dialog box.
3. Select the "Link" tab. The entry under "Target" should now be expanded as
follows.
4. Select the required object in the SIMATIC Manager.
5. Copy the object to the clipboard using the key combination CTRL+C.
6. Position the cursor at the end of the "Target" entry in the "Link" tab.
7. Paste the contents of the clipboard using the key combination CTRL+V.
8. Close the dialog box by confirming with "OK."
Example of Parameters:
/e F:\SIEMENS\STEP7\S7proj\MyConfig\MyConfig.s7p
/o ”1,8:MyConfig\SIMATIC 400(1)\CPU416-1\S7-Program(1)\Blocks\FB1”
/h T00112001;129;T00116001;1;T00116101;16e
Online Help
The online help system provides you with information at the point where you can
use it most efficiently. You can use the online help to access information quickly
and directly without having to search through manuals. You will find the following
types of information in the online help:
• Contents: offers a number of different ways of displaying help information
• Context-sensitive Help (F1 key): with the F1 key you access information on
the object you just selected with the mouse or on the active dialog box or
window
• Introduction: gives a brief introduction to the use, the main features, and the
functional scope of an application
• Getting Started: summarizes the basic steps you need to execute to get
started with the application
• Using Help: provides a description of ways of finding specific information in
the online help
• About: provides information on the current version of the application
Via the Help menu you can also access topics which relate to the current dialog
situation from every window.
In the same way that the Windows Explorer shows the directory structure of folders
and files, the object hierarchy for projects and libraries in STEP 7 is shown in the
SIMATIC Manager.
The following figure shows an example of an object hierarchy.
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
Objects as Folders
A folder (directory) can contain other folders or objects. These are displayed when
you open the folder.
The project represents the entirety of all the data and programs in an automation
solution, and is located at the top of an object hierarchy.
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
A library can contain S7/M7 programs and is used to store blocks. A library is
located at the top of an object hierarchy.
• Library Object
• S7/M7 Program Object
S7 Program (1)
Source Files • Source File Folder Object
Blocks • Block Folder Object
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
Program
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
A block folder of an offline view can contain: logic blocks (OB, FB, FC, SFB, SFC),
data blocks (DB), user-defined data types (UDT) and variable tables. The system
data object represents system data blocks.
The block folder of an online view contains the executable program parts which
have been downloaded to the programmable controller.
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
Progr. Module
• S7/M7 Program Object
• Source File Folder Object
• Block Folder Object
S7 Program
Source Files
Blocks
You can create programs without having configured a SIMATIC station beforehand.
This means that you can initially work independently of the module and module
settings you intend to program.
Note
When deleting stations or programmable modules, you will be asked if
you also want to delete the program contained within. If you choose not to
delete the program, it will be attached directly below the project as a
program without a station.
Read On...
The following pages describe some of the basic actions used to edit objects. Take
the time now to read up on these basic handling steps, as they will not be
described in detail further on in the manual.
Title bar
Menu bar
Toolbar
Workspace:
contains the information you have
displayed or are editing
Status bar
Toolbar
The toolbar contains icons (or tool buttons) which provide shortcuts to frequently
used and currently available menu bar commands via a single mouse click. A brief
description of the function of the respective button is displayed together with
additional information in the status bar when you position the cursor briefly on the
button.
If access to a button is not possible in the current configuration, the button is
grayed out.
Status Bar
The status bar displays context-specific information.
Module Information
Events:
The names of the tab cards are shown on tabs along the top edge of the dialog box. To bring a
particular tab card to the foreground, you simply click on its tab.
Some basic processing steps are the same for all objects and do not depend on
the object type. These standard handling sequences are summarized here. This
knowledge of standard procedures is required to move on to other sections in the
manual.
The usual sequence of steps when handling objects is:
• Create an object
• Select an object
• Perform actions with the object (for example, copy, delete).
Creating Objects
The STEP 7 wizard ”New Project" offers support with creating a new project and
inserting objects. Use the menu command File > ”New Project" Wizard to open
the wizard. In the dialog boxes displayed you can set the structure of your project
and then have the wizard create the project for you.
If you do not wish to use the wizard, you can create projects and libraries using the
menu command File > New. These objects form the starting point of an object
hierarchy. You can create all other objects in the hierarchy using the commands in
the Insert menu, provided they are not created automatically. The exception to this
are the modules in a SIMATIC station which are created when you configure the
hardware or by using the ”New Project" wizard.
Opening Objects
There are a number of ways to open an object in the detailed view:
• Double-click on the object icon
• Select the object and then the menu command Edit > Open Object. This only
works for objects that are not folders.
Once you have opened an object, you can create or change its contents.
When you open an object that does not contain other objects, its contents are
represented by a suitable software component in a new window for editing
purposes. You cannot change objects whose contents are already being used
elsewhere.
Note
Exception: Stations appear as folders for programmable modules (when you
double-click them) and for the station configuration. If you double-click the
"Hardware" object, the application for configuring hardware is started. Selecting
the station and selecting the menu command Edit > Open Object has the same
effect.
Note
Properties of the "System Data" folder and the "Hardware" object cannot be
displayed or changed.
You cannot write in the dialog boxes for object properties of a read-only project. In
this case, the input boxes are grayed out.
If you display the properties of programmable modules, you cannot edit the
displayed parameters for reasons of consistency. To edit the parameters you must
open the "Configuring Hardware" application.
Note
The connection table in the "Connections" folder cannot be copied. Note that
when you copy lists of operator-relevant texts, only those languages installed in
the destination object are accepted.
Renaming Objects
The SIMATIC Manager assigns standard names to new objects. These names are
generally formed from the type of object (if a number of objects of this type can be
created in the same folder) and a number.
For example, the first S7 program will be named "S7 Program(1)", the second
"S7 Program(2)" etc. The symbol table is simply called "Symbols" as it can only
exist once in each folder.
You can change the names of most objects (and projects) and assign them names
which are more relevant to their content.
With projects, the directory names in the path must not have more than 8
characters. Otherwise, there may be problems when archiving and using "C for
M7" (Borland compiler).
You can change the name of an object directly or using the object properties.
• Directly:
When you slowly click twice on the name of a selected object, a frame appears
around the text. You can then edit the name using the keyboard.
• Using object properties:
Select the required object and select the menu command Edit > Object
Properties. Change the name in the dialog box. When you close the
properties dialog box, the object is renamed and displayed under its new
name.
If you are not allowed to change the name of an object, the input field is shown in
gray in the dialog box, the current name is displayed, and text entries are not
possible.
Note
If you move the mouse pointer out of the name box while editing the name and
execute another action (for example, select a menu command), the edit procedure
is terminated. The changed name is accepted and entered if it is allowed.
Moving Objects
With the SIMATIC Manager you can move objects from one folder to another even
if the destination is in another project. When you move a folder its contents are all
moved as well.
Note
You cannot move the following objects:
• Connections
• System data blocks (SDB) in the online view
• System functions (SFC) and system function blocks (SFB) in the online view
Sorting Objects
You can sort objects in the detailed view (menu command View > Details)
according to their attributes. To do this, click on the corresponding header of the
required attribute. When you click again, the sort order is reversed. Blocks of one
type are sorted according to their numerical order, for example, FB1, FB2, FB11,
FB12, FB21, FC1.
Deleting Objects
You can delete folders and objects. If you delete a folder, all the objects contained
in it are also deleted.
You cannot undo the delete procedure. If you are not sure whether you really no
longer need an object, it is better to archive the whole project first.
Note
You cannot delete the following objects:
• Connections
• System data blocks (SDB) in the online view
• System functions (SFC) and system function blocks (SFB) in the online view
Selecting objects in a dialog box (browser) is an action which you will need
regularly for a large number of different edit steps.
Entry point: Here you select the View: You can switch Online/Offline: Here you can switch between
type of object in which you want to between the standard the offline view (selection of project data on
start the search (such as “Project”, view and the plant view. the PG/PC) and the online view (selection of
“Library”, or entries which permit project data on the connected
access to drives or connected programmable controller) – but only for the
programmable controllers). Entry Point "Project".
Browse: Click this button to
search for objects not
included in this list.
Open
Object Name:
OK Cancel Help
Name: The recognized objects Object Type: You can enter a filter criterion
of the type specified under Entry here to filter the list, restricting the number
Point are displayed here in a list of objects displayed to give you a clearer
box. You can select a name overview.
from the list or enter a name
using the keyboard. Object Name: If you select an object,
the object name is entered here. You
can also enter the required name
directly.
The SIMATIC Manager can save the contents of windows (that is, the projects and
libraries open), and the layout of the windows.
• Using the menu command Options > Customize, you define whether the
window contents and layout are to be saved at the end of a session. At the
start of the next session, these window contents and layout are restored. In the
open projects, the cursor is positioned on the last folder selected.
• Using the menu command Window > Save Settings you save the current
window contents and the window arrangement.
• Using the menu command Window > Restore Settings you restore the
window contents and layout that you saved with the menu command Window
> Save Settings. In the open projects, the cursor is positioned on the last
folder selected.
Note
The window contents of online projects, the contents of the "Accessible Nodes"
window, and the contents of the "S7 Memory Card" window are not saved.
Any passwords you may have entered for access to programmable controllers
(S7-300/S7-400) are not saved at the end of a session.
If you want to arrange all windows containing the open symbol tables so they
overlap and the title bar of each window remains visible, select the menu command
Window > Arrange > Cascade.
If you want to arrange all windows containing the open symbol tables evenly from
top to bottom, select the menu command Window > Arrange > Horizontally.
If you want to arrange all windows containing the open symbol tables evenly from
left to right, select the menu command Window > Arrange > Vertically.
If you want to arrange the icons of the minimized windows evenly along the bottom
edge of the main window, select the menu command Window > Arrange Icon
The STEP 7 applications have a feature which enables you to save the current
window arrangement and restore it at a later stage. You can make the setting using
the menu command Options > Customize, "General" tab.
What Is Saved?
When you save the window layout the following information is recorded:
• Position of the main window
• Opened projects and libraries and their respective window positions
• Order of any cascaded windows
Note
The window content of online projects, the content of the "Accessible Nodes"
window, and the content of the "S7 Memory Card" window are not saved.
Note
When you restore a window, only the part of the hierarchy containing the object that was
selected when the window arrangement was saved is displayed in detail.
Every menu command can be selected by typing a key combination with the ALT
key.
Press the following keys in the order shown:
• ALT key
• The letter underlined in the menu name you require (for example, ALT, F for
the menu "File" - if the menu "File" is included in the menu bar). The menu is
opened.
• The letter underlined in the menu command you require (for example, N for the
menu command "New"). If the menu command has a submenu, the submenu
is also opened. Proceed as above until you have selected the whole menu
command by typing the relevant letters.
Once you have entered the last letter in the key combination, the menu command
is executed.
Examples:
Menu Command Key Combination
File > Archive ALT, F, A
Window > Arrange > Cascade ALT, W, A, C
Command Shortcut
New (File Menu) CTRL+N
Open (File Menu) CTRL+O
Close (File Menu)
Compile (File Menu) CTRL+B
Print (Object) (File Menu) CTRL+P
Exit (File Menu) ALT+F4
Copy (Edit Menu) CTRL+C
Cut (Edit Menu) CTRL+X
Paste (Edit Menu) CTRL+V
Delete (Edit Menu) DEL
Select All (Edit Menu) CTRL+A
Object Properties (Edit Menu) ALT+RETURN
Open Object (Edit Menu) CTRL+ALT+O
Download (PLC Menu) CTRL+L
Operating Mode (PLC Menu) CTRL+I
Update (View Menu) F5
Updates the status display of the visible CPUs in the CTRL+F5
online view
Customize (Options Menu) CTRL+ALT+E
Reference Data, Display (Options Menu) CTRL+ALT+R
Arrange, Cascade (Window Menu) SHIFT+F5
Arrange, Horizontally (Window Menu) SHIFT+F2
Arrange, Vertically (Window Menu) SHIFT+F3
Context-Sensitive Help (Help Menu) F1
(If there is a current context, for
example, a selected menu
command, the relevant help topic
is opened. Otherwise the help
contents page is displayed.)
To Press
move to the menu bar F10
move to the pop-up menu SHIFT+F10
move to the menu that contains the letter or ALT+underlined character in a menu title
number underlined which you typed in
select the menu command whose Underlined character in the menu command
underlined letter or number corresponds to
the letter you have typed
move one menu command to the left LEFT ARROW
move one menu command to the right RIGHT ARROW
move one menu command up UP ARROW
move one menu command down DOWN ARROW
activate the selected menu command ENTER
deselect the menu name or close the open ESC
menu and return to the text
To move Press
one line up or one character to the left in a UP ARROW
text consisting of only one line
one line down or one character to the right DOWN ARROW
in a text consisting of only one line
one character to the right RIGHT ARROW
one character to the left LEFT ARROW
one word to the right CTRL+RIGHT ARROW
one word to the left CTRL+LEFT ARROW
to the beginning of the line HOME
to the end of the line END
to the previous screen PAGE UP
to the next screen PAGE DOWN
to the beginning of the text CTRL+HOME
to the end of the text CTRL+END
To Press
move from one input box to the next (from TAB
left to right and from top to bottom)
move one input box in the reverse direction SHIFT+TAB
move to the input box or option that ALT+underlined character in a menu title
contains the letter or number underlined
which you typed in
select in a list of options an arrow key
open a list of options ALT+DOWN ARROW
select or deselect an item in a list SPACEBAR
confirm the entries and close the dialog box ENTER
("OK" button)
close the dialog box without saving the ESC
changes ("Cancel" button)
To Press
open the Help F1
(If there is a current context, for
example, a selected menu command,
the relevant help topic is opened.
Otherwise the help contents page is
displayed.)
activate the question mark symbol for context- SHIFT+F1
sensitive help
close the Help window and return to the ALT+F4
application
To Press
toggle between the panes in a window F6
return to the previous pane, if there is no Shift+F6
dockable window
toggle between the document window and a Shift+F6
dockable window in the document (for example,
variable declaration window).
If there are no dockable windows, you can use
this key combination to return to the previous
pane.
toggle between document windows Ctrl+F6
return to the previous document window Shift+Ctrl+F6
toggle between non-document windows Alt+F6
(application framework and dockable windows
in the application framework;
when you return to the framework, this key
combination activates the document window
that was last active)
return to the previous non-document window Shift+Alt+F6
Project Window
The project window is split into two halves. The left half shows the tree structure of
the project. The right half shows the objects that are contained in the object open in
the left half in the selected view (large symbols, small symbols, list, or details).
Click in the left half of the window on the box containing a plus sign to display the
full tree structure of the project. The resulting structure will look something like the
following figure.
At the top of the object hierarchy is the object ”S7_Pro1" as the icon for the whole
project. It can be used to display the project properties and serves as a folder for
networks (for configuring networks), stations (for configuring the hardware), and for
S7 or M7 programs (for creating software). The objects in the project are displayed
in the right half of the project window when you select the project icon. The objects
at the top of this type of object hierarchy (libraries as well as projects) form the
starting point in dialog boxes used to select objects.
Project View
You can display the project structure for the data available on the programming
device in the component view "offline" and for the data available on the
programmable control system in the component view "online" in project windows.
An additional view you can set is available if the respective optional package is
installed: the plant view.
Note
Configuring hardware and networks can only be done in the "offline" view.
Note
The SIMATIC Manager allows names that are longer than eight characters. The
name of the project directory is, however, cut off to eight characters. Project
names must therefore differ in their first eight characters. The names are not case-
sensitive.
You will find a step-by-step guide to creating a project under Creating a Project
Manually or under Creating a Project Using the Wizard.
Alternative Procedures
When editing a project, you are flexible as to the order in which you perform most
of the tasks. Once you have created a project, you can choose one of the following
methods:
• First configure the hardware and then create the software for it, or
• Start by creating the software independent of any configured hardware.
• SIMATIC S5
• Other stations, meaning non-SIMATIC S7/M7 and SIMATIC S5
The station is inserted with a preset name (for example, SIMATIC 300 Station(1),
SIMATIC 300 Station(2), etc.). You can replace the name of the stations with a
relevant name, if you wish.
You will find a step-by-step guide to inserting a station under Inserting a Station.
Next Steps
Once you have created the hardware configuration, you can create the software for
your programmable modules (Also refer to Inserting a S7/M7 Program).
The software for programmable modules is stored in object folders. For SIMATIC
S7 modules this object folder is called "S7 Program," for SIMATIC M7 modules it is
called "M7 Program."
The following figure shows an example of an S7 program in a programmable
module in a SIMATIC 300 station.
Project
SIMATIC 300 Station
Programmable Module
S7 Program
Existing Components
An S7/M7 program is created automatically for each programmable module as a
container for the software:
The following objects already exist in a newly created S7 program:
• Symbol table (”Symbols" object)
• "Blocks" folder for containing the first block
• "Source Files" folder for source files
The following objects already exist in a newly created M7 program:
• Symbol table (”Symbols" object)
• "Blocks" folder
Creating S7 Blocks
You want to create Statement List, Ladder Logic, or Function Block Diagram
programs. To do this, select the existing "Blocks" object and then select the menu
command Insert > S7 Block. In the submenu, you can select the type of block you
want to create (such as a data block, user-defined data type (UDT), function,
function block, organization block, or variable table).
You can now open the (empty) block and start entering the Statement List, Ladder
Logic, or Function Block Diagram program. You will find more information on this in
Basic Procedure for Creating Logic Blocks and in the Statement List, Ladder Logic,
and Function Block Diagram manuals.
Note
The object ”System Data" (SDB) which may exist in a user program was created
by the system. You can open it, but you cannot make changes to it for reasons of
consistency. It is used to make changes to the configuration once you have
loaded a program and to download the changes to the programmable controller.
Opening a Project
To open an existing project, enter the menu command File > Open. Then select a
project in the dialog boxes that follow. The project window is then opened.
Note
If the project you require is not displayed in the project list, click on the "Browse"
button. In the browser you can then search for other projects and include any
projects you find in the project list. You can change the entries in the project list
using the menu command File > Manage.
Copying a Project
You copy a project by saving it under another name using the menu command File
> Save As.
You copy parts of a project such as stations, programs, blocks etc. using the menu
command Edit > Copy.
You will find a step-by-step guide to copying a project under Copying a Project and
Copying Part of a Project.
Deleting a Project
You delete a project using the menu command File > Delete.
You delete parts of a project such as stations, programs, blocks etc. using the
menu command Edit > Delete.
You will find a step-by-step guide to deleting a project under Deleting a Project and
Deleting Part of a Project.
STEP 7 offers the possibility of exporting text that has been created in a project in
one language, having it translated, reimporting it, and displaying it in the translated
language.
The following text types can be managed in more than one language:
• Comments and titles
- Block titles and block comments
- Network titles and network comments
- Line comments from STL programs
- Comments from symbol tables, variable declaration tables, user-defined
data types, and data blocks
- Comments, state names, and transition names in HiGraph programs
- Extensions of step names and step comments in S7-Graph programs
• Display texts
- Message texts generated by STEP 7, S7-Graph, S7-HiGraph, or S7-
PDIAG
- System text libraries
Exporting
Exporting is done for all blocks and symbol tables located under the selected
object. An export file is created for each text type. This file contains a column for
the source language and a column for the target language. Text in the source
language must not be changed.
Importing
During import, the contents of the target-language columns (right-hand column) are
brought into the selected project. Only the text for which a match with an existing
text in the source-language column is found is accepted.
Switching Languages
When switching languages, you can choose from all the languages that were
specified during import into the selected project. The language is then changed for
the selected objects.
Deleting a Language
When a language is deleted all the texts in this language are deleted from the
internal database.
One language should always be available as a reference language in your project.
This can, for example, be your local language. This language should not be
deleted. During exporting and importing always specify this reference language as
the source language. The target language can be set as desired.
Basic Procedure
Absolute Addresses
An absolute address comprises an address identifier and a memory location (for
example, Q 4.0, I 1.1, M 2.0, FB21).
Symbolic Addresses
You can make your program easier to read and simplify troubleshooting if you
assign symbolic names to the absolute addresses.
STEP 7 can translate the symbolic names into the required absolute addresses
automatically. If you would prefer to access ARRAYs, STRUCTs, data blocks, local
data, logic blocks, and user-defined data types using symbolic names, you must
first assign symbolic names to the absolute addresses before you can address the
data symbolically.
You can, for example, assign the symbolic name MOTOR_ON to the address
Q 4.0 and then use MOTOR_ON as an address in a program statement. Using
symbolic addresses it is easier to recognize to what extent the elements in the
program match the components of your process control project.
Note
Two consecutive underline characters (for example, MOTOR__ON) are not
permitted in a symbolic name (variable ID).
FB34 - <Offline>
FB1003 : Interrupt Trigger
Network 1 : ???
U "Sensor1" "I1.0 Temperature overrange"
UN "Switch2" "I1.2 Fault acknowledgment"
= "Lighton" "Q4.0 Interrupt signal"
When you print out a block, the current screen representation with statement
comments or symbol comments is printed.
Note
Using the menu command View > Display > Symbolic Representation you can
toggle the display between the declared shared symbolic and the absolute
addresses.
Validity
The symbol table is only valid for the module to which you link the program. If you
want to use the same symbols in a number of different CPUs, you yourself must
ensure that the entries in the various symbol tables all match up (for example, by
copying the table).
Project/SIMATIC300-Station(1)/CPU314(1)/.../Symbols
R O M C Symbol Adress Data type Comment
1
R/O/M/C Columns
The columns R/O/M/C show whether a symbol was assigned special object
properties:
• R (monitoring) means that error definitions for process diagnostics were
created for the symbol with the optional package S7-PDIAG (V5).
• O means that the symbol can be operated and monitored with WinCC.
• M means that a symbol-related message (SCAN) was assigned to the symbol.
• C means that the symbol is assigned communication properties (can only be
selected with NCM).
Symbol
The symbolic name must not be longer than 24 characters. A symbol table can
contain a maximum of 16380 symbols.
You cannot assign symbols in the symbol table for addresses in data blocks (DBD,
DBW, DBB, DBX). Their names are assigned in the data block declaration.
For organization blocks (OB) and some system function blocks (SFB) and system
functions (SFC) predefined symbol table entries already exist which you can import
into the table when you edit the symbol table of your S7 program. The import file is
stored in the STEP 7 directory under ...\S7data\Symbol\Symbol.sdf.
Address
An address is the abbreviation for a particular memory area and memory location.
Example: Input I 12.1
The syntax of the address is checked as it is entered. A check is also made to see
whether the address may be assigned the specified data type.
Data Type
You can choose between a number of data types available in STEP 7. The data
type field already contains a default data type which you may change, if necessary.
If the change you make is not suitable for the address and its syntax is incorrect,
an error message appears as you exit the field.
Comment
You can assign comments to all symbols. The combination of brief symbolic names
and more detailed comments makes creating programs more effective and makes
your program documentation more complete. A comment can be up to 80
characters in length.
Converting to C Variables
You can select symbols in the symbol table for an M7 program and convert them to
corresponding C variables in conjunction with the ProC/C++ software option.
Only one set of mnemonics can be used throughout a symbol table. Switching
between SIMATIC (German) and IEC (English) mnemonics must be done in the
SIMATIC Manager using the menu command Options > Customize in the
"Language" tab.
Incomplete Symbols
It is also possible to store incomplete symbols. You can, for example, enter only
the symbol name first and then add the corresponding address at a later date. This
means you can interrupt your work on the symbol table at any time, save the
interim result, and complete your work another time. When you come to use the
symbol for creating software (without an error message appearing), you must have
entered the symbolic name, the address, and the data type.
There are three methods of entering symbols that can be used for programming at
a later stage:
• Via Dialog Box
You can open a dialog box in the window where you are entering a program
and define a new symbol or redefine an existing symbol. This procedure is
recommended for defining individual symbols, for example, if you realize that a
symbol is missing or you want to correct one while you are writing the program.
This saves you displaying the whole symbol table.
• Directly in the Symbol Table
You can enter symbols and their absolute addresses directly in a symbol table.
This procedure is recommended if you want to enter a number of symbols and
for when you create the symbol table for a project because you have the
symbols which were already assigned displayed on the screen, making it
easier to keep an overview of the symbols.
• Import Symbol Tables from Other Table Editors
You can create the data for the symbol table in any table editor you are
comfortable with (for example, Microsoft Excel) and then import the file you
created into the symbol table.
To enter new symbols in the symbol table, position the cursor in the first empty row
of the table and fill out the cells. You can insert new rows before the current row in
the symbol table using the menu command Insert > Symbol. If the row before the
cursor position already contains an address, you will be supported when inserting
new symbols by a presetting of the "Address" and "Data Type" columns. The
address is derived from the previous row; the default data type is entered as data
type.
You can copy and modify existing entries using the commands in the Edit menu.
Save and then close the symbol table. You can also save symbols which have not
been completely defined.
When you enter the symbols in the table, you should note the following points:
Column Note
Symbol The name must be unique within the whole symbol table. When you
confirm the entry in this field or exit the field, a non-unique symbol is
marked. The symbol can contain up to 24 characters. Quotation marks (")
are not permitted.
Address When you confirm the entry in this field or exit the field, a check is made as
to whether the address entered is allowed.
Data Type When you enter the address, this field is automatically assigned a default
data type. If you change this default, the program checks whether the new
data type matches the address.
Comment You can enter comments here to briefly explain the functions of the
symbols (max. 80 characters). Entering a comment is optional.
The procedure described below shows you how you can change symbols or define
new symbols in a dialog box while programming blocks without having to display
the symbol table.
This procedure is useful if you only want to edit a single symbol. If you want to edit
a number of symbols, you should open the symbol table and work in it directly.
Entering Symbols
To enter new symbols in the symbol table, position the cursor in the first empty row
of the table and fill out the cells. You can insert new empty rows before the current
row in the symbol table using the menu command Insert > Symbol. You can copy
and modify existing entries using the commands in the Edit menu. Save and then
close the symbol table. You can also save symbols which have not been
completely defined.
Sorting Symbols
The data records in the symbol table can be sorted alphabetically according to
symbol, address, data type, or comment.
You can change the way the table is sorted by using the menu command View >
Sort to open a dialog box and define the sorted view.
Filtering Symbols
You can use a filter to select a subset of the records in a symbol table.
Using the menu command View > Filter you open the "Filter" dialog box.
You can define criteria which the records must fulfil in order to be included in the
filtered view. You can filter according to:
• Symbol names, addresses, data types, comments
• Symbols with operator control and monitoring attribute, symbols with
communication properties, symbols for binary variables for messages (bit
memory or process input)
• Symbols with the status "valid," "invalid (non-unique, incomplete)"
The individual criteria are linked by an AND operation. The filtered records start
with the specified strings.
If you want to know more about the options in the "Filter" dialog box, open the
context-sensitive online help by pressing F1.
Symbols which Differ from One Another Only in their Use of Upper and
Lower Case Characters
Conflict:
If the symbol table has not yet been edited with the current version of the software,
the first of the non-unique symbols in the table is used when source files are
compiled.
If the symbol table has already been edited, such symbols are invalid; this means
that the symbols are not displayed when blocks are opened and source files
containing these symbols can no longer be compiled without errors.
Remedy:
Check your symbol table for conflicts by opening the table and saving it again. This
action enables the non-unique symbols to be recognized. You can then display the
non-unique symbols using the filter "Non-Unique Symbols" and correct them. You
should also correct any source files which contain conflicts. You do not need to
make any further changes to the blocks, as the current (now conflict-free) version
of the symbol table is automatically used or displayed when a block is opened.
Parameters which Differ from One Another Only in their Use of Upper and
Lower Case Characters
Conflict:
Source files containing such interfaces can no longer be compiled without errors.
Blocks with such interfaces can be opened, but access to the second of these
parameters is no longer possible. When you try to access the second parameter,
the program automatically returns to the first parameter when the block is saved.
Remedy:
To check which blocks contain such conflicts, it is advisable to generate a source
file for all the blocks of a program using the function "Generate Source File." If
errors occur when you attempt to compile the source file you have created, there
must be a conflict.
Correct your source files by ensuring that the parameters are unique; for example,
by means of the "Find and Replace" function. Then compile the files again.
Symbols which Differ from Parameters Only in their Use of Upper and Lower
Case Characters
Conflict:
If shared and local symbols in a source file only differ from one another in their use
of upper and lower case characters, and is no initial characters have been used to
identify shared ("symbol name") or local (#symbol name) symbols, the local symbol
will always be used during compilation. This results in a modified machine code.
Remedy:
In this case it is advisable to generate a new source file from all of the blocks. This
will automatically assign local and shared access with the corresponding initial
characters and will ensure that they are handled correctly during future compilation
procedures.
You can export the current symbol table to a text file in order to be able to edit it
with any text editor.
You can also import tables created using another application into your symbol table
and continue to edit them there. The import function can be used, for example, to
include in the symbol table assignment lists created with STEP5/ST following
conversion.
The file formats *.SDF, *.ASC, *.DIF, and *.SEQ are available to choose from.
The following file formats can be imported into or exported out from the symbol
table:
• ASCII file format (ASC)
• Data Interchange Format (DIF)
You can open, edit, and save DIF files in Microsoft Excel.
• System Data Format (SDF)
You can open, edit, and save SDF files in Microsoft Access.
- To import and export data to and from the Microsoft Access application,
use the SDF file format.
- In Access, select the file format ”Text (with delimiters)".
- Use the double inverted comma (") as the text delimiter.
- Use the comma (,) as the cell delimiter.
• Assignment list (SEQ)
Caution: When exporting the symbol table to a file of the type .SEQ comments
that are longer than 40 characters are truncated after the 40th character.
Header: the file header must contain the record types TABLE, VECTORS,
TUPLES, and DATA in the order specified. Before DATA, DIF files can contain
further, optional record types. These are, however, ignored by the Symbol Editor.
Data: in the data part, each entry consists of three parts: the ID for the Type (data
type), a numeric value, and an alphanumeric part.
You can open, edit, and save DIF files in Microsoft Excel. You should not use
accents, umlauts, or other special language characters.
To open an SDF file in Microsoft Access you should select the file format ’Text
(with delimiter)’. Use the double quotation mark (") as the text delimiter and the
comma (,) as the field delimiter.
Free-Edit (Text) Editors for the Programming Languages Statement List, S7 SCL,
or S7 HiGraph
In free-edit mode editors, you create source files that are then subsequently
compiled into blocks.
You should choose to use free-edit mode to enter a program quickly.
In free-edit mode the program or a block is edited in a text file and the text file is
then compiled.
The text files (source files) are stored in the source file folder of your S7 program,
for example, as an STL source file or SCL source file. A source file can contain
the code for one or more blocks. With the text editors for STL and SCL you can
generate code for OBs, FBs, FCs, DBs, and UDTs (user-defined data types), but
you can also create a whole user program. The whole program for a CPU
(meaning all blocks) can be contained in one single text file.
When you compile the source file are the respective blocks created and stored in
the user program. Any symbols used must be defined before compilation. Any
errors are only reported by the respective compiler during compilation.
For compilation it is important that the particular syntax for the programming
language has been adhered to. A syntax check is run only when you select the
consistency check command or when the source file is compiled into blocks.
If blocks contain no errors, you can switch between representing your blocks in
either Ladder Logic, Function Block Diagram, or Statement List. Program parts that
cannot be displayed in the language you switch to are shown in Statement List.
You can create blocks from source files in Statement List and also decompile them
back into source files.
#Coil
#Error
The Ladder Logic programming language type is included with the STEP 7
standard software package. Creating programs in Ladder Logic is done with an
incremental editor.
The programming language Function Block Diagram (FBD) uses the graphic logic
symbols familiar from Boolean algebra to represent logic. Complex functions such
as math functions can also be represented directly in conjunction with the logic
boxes.
The FBD programming language type is included with the STEP 7 Standard
software package.
>=1
I0.0 &
I0.1 >=1
T6 & M0.0
M0.0
T5
The Statement List programming language type is included with the STEP 7
Standard software package. You can edit S7 blocks in this language
representation type using incremental editors or create your program with a
free-edit mode editor in an STL source file and then compile it into blocks.
Example:
FUNCTION_BLOCK FB20
VAR_INPUT
ENDVAL: INT;
END_VAR
VAR_IN_OUT
IQ1 : REAL;
END_VAR
VAR
INDEX: INT;
END_VAR
BEGIN
CONTROL:=FALSE;
IQ1:= IQ1 * 2;
CONTROL = TRUE
END_IF
END_FOR;
END_FUNCTION_BLOCK
S4 Rinse
D Q 1.1
I1.1 M2.1
T4 TIME#0D_0H_
0M_20S_0MS
I1.1 M2.1
T5
S5 Prewash
N Q 1.3
I1.3 N Q 1.0
T6
N Q 1.5
S6 Return
N Q 1.4
I1.1 M2.2
T7
Blocks Created
With the S7-GRAPH editor, you program the function block that contains the step
sequencer. A corresponding instance data block contains the data for the
sequencer, for example, FB parameters, step and transition conditions. You can
have this instance data block created automatically in the S7-GRAPH editor.
Source File
A textual source file (GRAPH source file) can be generated from a function block
created in S7-GRAPH which can be interpreted by operator panels or operator
interface text displays to display the sequencer.
Position
cam-operated switch Turn counter-
1 2 4 Index withdrawn clockwise
Coordinator
Workpiece 0
1 1
3 1
Turn clockwise
1 1
2 1 2
Motor Index inserted Loosen/tighten
Graph for coordinatiing the
counter bearing
functional units
Counter bearing
0
Index
1 1
0
Motor
1
1 1 3
0
3 1 1 1
1 1
2
3 1 1 1
2
1 1
0 1 1 States
3 1 2
A graph group is stored in a HiGraph source file in the "Source Files" folder
beneath the S7 program. This source file is then compiled into S7 blocks for the
user program.
Syntax and formal parameters are checked on the last entry in a graph (when the
working window is closed). The addresses and symbols are checked when the
source file is compiled.
You can create the program for an S7 CPU in the form of:
• Blocks
• Source files
The folder "Blocks" is available under the S7 program for storing blocks.
This block folder contains the blocks you need to download to the S7 CPU for your
automation task. These loadable blocks include logic blocks (OBs, FBs, FCs) and
data blocks (DB). An empty organization block OB1 is automatically created with
the block folder because you will always need this block to execute your program in
the S7 CPU.
The block folder also contains the following objects:
• The user-defined data types (UDT) you created. These make programming
easier but are not downloaded to the CPU.
• The variable tables (VAT) that you can create to monitor and modify variables
for debugging your program. Variable tables are not downloaded to the CPU.
• The object "System Data" (system data blocks) that contains the system
information (system configuration, system parameters). These system data
blocks are created and supplied with data when you configure the hardware.
• The system functions (SFC) and system function blocks (SFB) that you need to
call in your user program. You cannot edit the SFCs and SFBs yourself.
With the exception of the system data blocks (which can only be created and
edited via the configuration of the programmable logic controller), the blocks in the
user program are all edited using the respective editor. This editor is started
automatically by double-clicking the respective block.
Note
The blocks you programmed as source files and then compiled are also stored in
the block folder.
User-defined data types are special data structures you create yourself that you
can use in the whole S7 program once they have been defined.
• User-defined data types can be used like elementary data types or complex
data types in the variable declaration of logic blocks (FC, FB, OB) or as a data
type for variables in a data block (DB). You then have the advantage that you
only need to define a special data structure once to be able to use it as many
times as you wish and assign it any number of variables.
• User-defined data types can be used as a template for creating data blocks
with the same data structure, meaning you create the structure once and then
create the required data blocks by simply assigning the user-defined data type
(Example: Recipes: The structure of the data block is always the same, only
the amounts used are different.)
User-defined data types are created in the SIMATIC Manager or the incremental
editor − just like other blocks.
You can more easily identify the blocks you created if you use block properties and
you can also protect these blocks from unauthorized changes.
You should edit the block properties when the block is open. In addition to the
properties you can edit, the properties dialog box also displays data for information
only: you cannot edit this information.
The block properties and system attributes are also displayed in the SIMATIC
Manager in the object properties for a block. Here you can only edit the properties
NAME, FAMILY, AUTHOR, and VERSION.
You edit the object properties after you insert the block via the SIMATIC Manager.
If a block was created using one of the editors and not in the SIMATIC Manager,
these entries (programming language) are saved automatically in the object
properties.
Note
The mnemonics you want to use to program your S7 blocks can be set in the
SIMATIC Manager using the menu command Options > Customize and the
"Language" tab.
Property OB FB FC DB UDT
KNOW_HOW_PROTECT • • • • −
AUTHOR • • • • −
FAMILY • • • • −
NAME • • • • −
VERSION • • • • −
UNLINKED − − − • −
READ_ONLY − − − • −
8.3.5 Rewiring
The following blocks and addresses can be rewired:
Inputs, outputs
Memory bits, timers, counters
Functions, function blocks
To rewire:
1. Select the "Blocks" folder that contains the individual blocks you want to rewire
in the SIMATIC Manager.
2. Select the menu command Options > Rewire.
3. Enter the required replacements (old address/new address) in the table in the
"Rewire" dialog box.
4. Select the option "All addresses within the specified address area" if you want
to rewire address areas (BYTE, WORD, DWORD).
Example: You enter IW0 and IW4 as the address areas. The addresses I0.0 –
I1.7 are then rewired to the addresses I4.0 – I5.7. Addresses from the rewired
area (for example, I0.1) can then no longer be entered in the table individually.
5. Click the "OK" button.
This starts the rewire process. After rewiring is completed, you can specify in a
dialog box whether you want to see the info file on rewiring. This info file contains
the address lists "Old address" and "New address." The individual blocks are listed
with the number of wiring processes that have been carried out in each one.
When rewiring, the following should be noted:
When you rewire (that is, rename) a block, the new block cannot currently exist. If
the block exists, the process is interrupted.
When you rewire a function block (FB), the instance data block is automatically
assigned to the rewired FB. The instance DB does not change, that is, the
DB number is retained.
Libraries serve to store reusable program components for SIMATIC S7/M7. The
program components can be copied to the library from existing projects or created
directly in the library independently of other projects.
You can save yourself a lot of programming time and effort if you store blocks
which you want to use many times in a library in an S7 program. You can copy
them from there to the user program where they are required.
To create S7/M7 programs in a library, the same functions apply as for projects –
with the exception of debugging.
Creating Libraries
You can create libraries just like projects using the menu command File > New.
The new library is created in the directory you set for libraries in the "General" tab
when you selected the menu command Options > Customize.
Note
The SIMATIC Manager allows names that are longer than eight characters. The
name of the library directory is, however, cut off to eight characters. Library names
must therefore differ in their first eight characters. The names are not case-
sensitive. When this directory is opened in the Browser, the full name is displayed
again, but when browsing for the directory, only the shortened name appears.
Note that you cannot use blocks from libraries of a new STEP 7 version in
projects of an older STEP 7 version.
Opening Libraries
To open an existing library, enter the menu command File > Open. Then select a
library in the dialog boxes that follow. The library window is then opened.
Note
If you cannot find the library you require in the library list, click the "Browse" button
in the "Open" dialog box. The standard Windows browser then displays the
directory structure in which you can search for the library.
Note that the name of the file always corresponds to the original name of the
library when it was created, meaning any name changes made in the SIMATIC
Manager are not made at file level.
When you select a library it is added to the library list. You can change the entries
in the library list using the menu command File > Manage.
Copying Libraries
You copy a library by saving it under another name using the menu command File
> Save As.
You copy parts of a library such as programs, blocks, source files etc. using the
menu command Edit > Copy.
Deleting a Library
You delete a library using the menu command File > Delete.
You delete parts of a library such as programs, blocks, source files etc. using the
menu command Edit > Delete.
The STEP 7 Standard package contains the standard libraries (Version 2/Version
3):
• stlibs (V2): standard library version 2
• Standard Library: standard library from version 3 upwards
The standard libraries contain the following components:
• System Function Blocks: system function blocks (SFB) and system functions
(SFC)
• S5-S7 Converting Blocks: blocks for converting STEP 5 programs
• TI-S7 Converting Blocks: standard functions for general use
• IEC Function Blocks: blocks for IEC functions such as for processing time
and date information, for comparison operations, for string processing, and
selecting the maximum and minimum
• Organization Blocks: standard organization blocks (OB)
The standard library for version 3 also contains the following components:
• PID Control Blocks: function blocks (FB) for PID control
• Communication Blocks: functions (FC) and function blocks for SIMATICNET
CPs.
When you install optional software packages, other libraries may be added.
Note
When you install STEP 7, the supplied libraries are always copied. If you edit
these libraries, the modified libraries will be overwritten with the originals when
STEP 7 is installed again.
For this reason, you should copy the supplied libraries before making any changes
and then only edit the copies.
Logic blocks (OBs, FBs, FCs) comprise a variable declaration section, a code
section, and also have properties. When programming, you must edit the following
three parts:
• Variable declaration table: In the variable declaration table you specify the
parameters, system attributes for parameters, and local block-specific
variables.
• Code section: In the code section you program the block code to be
processed by the programmable controller. This consists of one or more
networks. To create networks you can use, for example, the programming
languages Ladder Logic (LAD), Function Block Diagram (FBD), or Statement
List (STL).
• Block properties: The block properties contain additional information such as
a time stamp or path that is entered by the system. In addition, you can enter
your own details such as name, family, version, and author and you can assign
system attributes for blocks.
In principle it does not matter in which order you edit the parts of a logic block. You
can, of course, also correct them and add to them.
Note
If you want to make use of symbols in the symbol table, you should first check that
they are complete and make any necessary corrections.
Before you start programming, you should make yourself familiar with the settings
in the editor in order to make it easier and more comfortable for you when
programming.
Using the menu command Options > Customize you open a tabbed dialog box. In
the various tabs you can make the following default settings for programming
blocks, e.g. in the "Editor" tab:
• The font (type and size) in text and tables.
• Whether you want symbols and comments to be displayed with a new block.
You can change the settings for language, comments, and symbols during editing
using the commands in the View menu.
You can change the colors used for highlighting, for example, networks or
statement lines in the "LAD/FBD" tab.
When editing a project, a common database is often used, meaning that a number
of personnel may want to access the same block or data source at the same time.
The read/write access rights are assigned as follows:
• Offline editing:
When you attempt to open a block/source file, a check is made to see whether
you have ’write’ access to the object. If the block/source file is already open,
you can only work with a copy. If you then attempt to save the copy, the
system queries whether you want to overwrite the original or save the copy
under a new name.
• Online editing:
When you open an online block via a configured connection, the corresponding
offline block is disabled, preventing it from being edited simultaneously.
The program elements catalog provides a list of Ladder, STL, and FBD elements
as well as already declared multiple instances, already programmed blocks, and
blocks from libraries. It can be accessed using the menu command View >
Catalog. Program elements can be inserted in the code section using the menu
command Insert > Program Elements.
When you open a logic block, a window appears containing the variable
declaration table for the block in the upper half and the code section in the lower
half in which you edit the actual block code.
LAD\STL\FDB:-FB6-<Offline>
File Edit Insert PLC Debug View Options Window Help
TRAFFIC\...\FB6-<Offline>
Address Decl. Name Type Initial Value Comment
0.0 in dur_g_p S5TIME S5T#0MS
2.0 in del_r_p S5TIME S5T#0MS
4.0 in starter BOOL FALSE
6.0 in t_dur_y_car TIMER
8.0 in t_dur_y_car TIMER
10.0 in t_delay_y_car TIMER
In the variable declaration table you specify the local block-specific variables
including the formal parameters for the block and the system attributes for
parameters. This has the following effects:
• During declaration, sufficient memory space is reserved for temporary
variables in the local data stack, and in the case of function blocks, for static
variables in the instance DB to be associated later.
• When setting input, output, and in/out parameters you also specify the
"interface" for the call of a block in the program.
• When you declare the variables in a function block, these variables (with the
exception of the temporary variables) also determine the data structure for
every instance DB that is associated with the function block.
• By setting system attributes you assign special properties for message and
connection configuration, operator interface functions, and process control
configuration to parameters.
The variable declaration table and code section of logic blocks are closely linked
because the names in the variable declaration table are used in the code section.
Any changes in the variable declaration therefore have an effect on the whole code
section.
The variable declaration table contains entries for the address, declaration type,
symbolic name, data type, initial value, and comment for the variables. Each table
row stands for one variable declaration. Variables of the data type ARRAY or
STRUCT require a number of rows.
You will find the valid data types for the local data of the various block types in
Appendix "Assigning Data Types to Local Data of Logic Blocks".
Default
When you open a newly created logic block, a default variable declaration table is
displayed. This lists only the valid declaration types for the selected block type (in,
out, in_out, stat, temp) in the set order. When you create a new organization block
(OB), a standard variable declaration is displayed whose values you can change.
Column Entry
Address The address is assigned by the system and displayed when you stop
entering a declaration.
Declaration Type The declaration type is determined by the position of the declaration within
the table. This ensures that variables can only be entered in the correct
order for declaration types. If you want to change the declaration type of a
declaration, cut the declaration out and paste it in again below the new
declaration type.
You can use the usual functions in the Edit menu to edit the table. To make editing
easier, use the context-sensitive menu under the right mouse button. When you
enter the data type you can also make use of the support of the right mouse
button.
Undoing Actions
In the variable declaration table you can use the menu command Edit > Undo to
undo the most recent cut or delete operation.
It is possible that you may want to or have to use a restricted number of data
blocks for instance data owing to the performance (for example, memory capacity)
of the S7 CPUs you are using. If other existing function blocks are called in an FB
in your user program (call hierarchy of FBs), you can call these other function
blocks without their own (additional) instance data blocks.
Use the following solution:
• Include the function blocks you want to call as static variables in the variable
declaration of the calling function block.
• In this function block, call other function blocks without their own (additional)
instance data blocks.
• This concentrates the instance data in one instance data block, meaning you
can use the available number of data blocks more effectively.
The following example illustrates the solution described: FB2 and FB3 use the
instance DB of the function block FB1 from which they were called.
FB 1 Instance DB of FB 1
Declaration section:
FB call:
CALL#instance_1
CALL#instance_2 FB 3
(uses instance DB
of FB 1)
Only requirement: You must "tell" the calling function block which instances you are
calling and what (FB) type these instances are. These details must be entered in
the declaration section of the calling function block. The function block used must
have at least one variable or parameter from the data area (VAR_TEMP cannot be
used).
Do not use multiple instance data blocks if online changes are expected while the
CPU is running. Bumpless reloading is only guaranteed when using instance data
blocks.
Note
• You can also create multiple instances for system function blocks.
• If the function block was not created as being able to have multiple instances
and you want it to have this property, you can generate a source file from the
function block in which you then delete the block property CODE_VERSION1
and then compile the function block again.
1. Open the function block from which the subordinate function blocks are to be
called.
2. Define a static variable in the variable declaration of the calling function block
for each call of a function block for whose instance you do not want to use an
instance data block.
- Position the cursor in a blank row with the declaration "stat" in the second
column.
- Enter a name for the FB call in the "Name" column after the declaration
type "stat."
- Enter the function block you want to call in the "Type" column as an
absolute address or with its symbolic name.
- You can enter any explanations required in the comment column.
Calls in the Code Section
When you have declared multiple instances, you can use FB calls without
specifying an instance DB.
Example: If the static variable "Name: Motor_1 , Data type: FB20" is defined, the
instance can be called as follows:
Call Motor_1 // Call of FB20 without instance DB
In the code section you program the sequence for your logic block by entering the
appropriate statements in networks, depending on the programming language
chosen. After a statement is entered, the editor runs an immediate syntax check
and displays any errors in red and italics.
The code section for a logic block generally comprises a number of networks that
are made up of a list of statements.
In a code section you can edit the block title, block comments, network title,
network comments, and statement lines within the networks.
FB70 - <Offline>
You can edit the parts of the code section in any order. We recommend you
proceed as follows when you program a block for the first time:
Edit networks
Enter statements
Enter statement comments (optional)
You can make changes in either overwrite mode or insert mode. You switch
between modes using the INSERT key.
Using the menu command Insert > Symbol you can insert symbols in the code
section of your program. If the cursor is positioned at the beginning, the end, or
within a string, the symbol is already selected that starts with this string - if such a
symbol exists. If you change the string, the selection is updated in the list.
Separators for the beginning and end of a string are, for example, blank, period,
colon. No separators are interpreted within shared symbols.
To enter symbols, proceed as follows:
1. Enter the first letter of the required symbol in the program.
2. Press CTRL and J simultaneously to display a list of symbols. The first symbol
starting with the letter you entered is already selected.
3. Enter the symbol by pressing RETURN or select another symbol.
The symbol enclosed in quotation marks is then entered instead of the first letter.
In general the following applies: if the cursor is located at the beginning, the end, or
within a string, this string is replaced by the symbol enclosed in quotation marks
when inserting a symbol.
Comments make your user program easier to read and therefore make
commissioning and troubleshooting easier and more effective. They are an
important part of the program documentation and should certainly be made use of.
1. Network 2: ???
Mouse click
1. ???
Mouse click
2. Comment for network or block
Errors in the code section are easy to recognize by their red color. To make it
easier to navigate to errors that lie outside the visible area on the screen, the editor
offers two search functions Edit > Go To > Previous Error/Next Error.
The search for errors goes beyond one network. This means that the whole code
section is searched and not just one network or the area currently visible on the
screen.
If you activate the status bar using the menu command View > Status Bar, notes
on the errors found are displayed there.
You can also correct errors and make changes in overwrite mode. You toggle
between insert mode and overwrite mode using the INSERT key.
Positioning Boxes
The starting point of the branch for a box connection must always be the left power
rail. Logic operations or other boxes can be present in the branch before the box.
Positioning Coils
Coils are positioned automatically at the right edge of the network where they form
the end of a branch.
Exceptions: Coils for midline outputs _/(#)_/ and positive _/(P)_/ or negative
_/(N)_/ edge evaluation cannot be placed either to the extreme left or the extreme
right in a branch. Neither are they permitted in parallel branches.
Some coils require a Boolean logic operation and some coils must not have a
Boolean logic operation.
• Coils which require Boolean logic:
- Output _/( ), set output _/(S), reset output _/(R)
- Midline output _/(#)_/, positive edge _/(P)_/, negative edge _/(N)_/
- All counter and timer coils
- Jump if Not _/(JMPN)
- Master Control Relay On _/(MCR<)
- Save RLO into BR Memory _/(SAVE)
- Return _/(RET)
Parallel Branches
• Draw OR branches from left to right.
• Parallel branches are opened downwards and closed upwards.
• A parallel branch is always opened after the selected Ladder element.
• A parallel branch is always closed after the selected Ladder element.
• To delete a parallel branch, delete all the elements in the branch. When the
last element in the branch is deleted, the branch is removed automatically.
I 2.6 I 6.8
Short Circuit
No branches may be created which cause a short circuit. The following figure
shows an example:
You will find a description of the FBD programming language representation in the
"Function Block Diagram for S7-300/400 – Programming Blocks" manual or in the
FBD online help.
An FBD network can consist of a number of elements. All elements must be
connected (IEC 1131–3).
When programming in FBD you must observe a number of guidelines. Error
messages will inform you of any errors you make.
Positioning Boxes
Standard boxes (flip flops, counters, timers, math operations, etc.) can be added to
boxes with binary logic operations (&, >=1, XOR). The exceptions to this rule are
comparison boxes.
No separate logic operations with separate outputs can be programmed in a
network. You can, however, assign a number of assignments to a string of logic
operations with the help of a T branch. The following figure shows a network with
two assignments.
#starter >=1
T branch
#condition &
#t_next_red_car #condition
#t_dur_r_car =
>=1
#cond_02
#car =
The following boxes can only be placed at the right edge of the logic string where
they close the string:
• Set counter value
• Assign parameters and count up, assign parameters and count down
• Assign pulse timer parameters and start, assign extended pulse timer
parameters and start
• Assign on-delay/off-delay timer parameters and start
Some boxes require a Boolean logic operation and some boxes must not have a
Boolean logic operation.
You can use the menu command Edit > Block Call > Update in "LAD/STL/FBD –
Programming S7 Blocks" to automatically update block calls or user-defined data
types which have become invalid after you have carried out the following interface
changes:
• Inserted new parameters
• Deleted parameters
• Changed the name of parameters
• Changed the type of parameters
• Changed the order of parameters.
When assigning formal and actual parameters, you must follow the following rules
in the order specified:
1. Same parameter names:
The actual parameters are assigned automatically, if the name of the formal
parameter has remained the same.
Special case: In Ladder Logic and Function Block Diagram, the preceding link
for binary input parameters can only be assigned automatically if the data type
(BOOL) is the same. If the data type has been changed, the preceding link is
retained as an open branch.
2. Same parameter data types:
After the parameters with the same name have been assigned, as yet
unassigned actual parameters are assigned to formal parameters with the
same data type as the "old" formal parameter.
3. Same parameter position:
After you have carried out rules 1 and 2, any actual parameters which have still
not been assigned are now assigned to the formal parameters according to
their parameter position in the "old" interface.
4. If actual parameters cannot be assigned using the three rules described above,
they are deleted or, in the case of binary preceding links in Ladder Logic or
Function Block Diagram, they are retained as open branches.
After carrying out this function, check the changes you have made in the variable
declaration table and in the code section of the program.
To enter newly created blocks or changes in the code section of logic blocks or in
declaration tables in the programming device database, you must save the
respective block. The data are then written to the hard disk of the programming
device.
Note
• You can also save blocks or source files beneath other projects or libraries
in the SIMATIC Manager (by dragging & dropping, for example).
• You can only save blocks or complete user programs to a memory card in
the SIMATIC Manager.
• If problems occur when saving or compiling large blocks, you should
reorganize the project. Use the menu command File > Reorganize in the
SIMATIC Manager to do this. Then try to save or compile again.
If you need to correct the interface in an FB, FC, or UDT, proceed as follows to
avoid time stamp conflicts:
1. Generate an STL source file from the block you want to change and all directly
or indirectly referenced blocks.
2. Save the changes in the source file you generated.
3. Compile the modified source file back into blocks.
You can now save/download the interface changes.
Danger
! Danger of damage to property and persons when:
1. Using CALL FC, CALL FB, CALL multiple instance
2. Accessing a DB using the complete absolute address (for example
DB20.DBW10)
3. Accessing variables of a complex data type
It is possible that the contents of DB registers (DB and DI), address registers
(AR1, AR2), and accumulators (ACCU1, ACCU2) may be changed.
In addition, you cannot use the RLO bit of the status word as an additional
(implicit) parameter when you call an FB or FC.
When using the programming techniques mentioned above, you must make sure
that you save and restore the contents yourself; otherwise errors may occur.
Situation Description
With actual • Once you have assigned an actual parameter to a block from a DB
parameters (for example DB20.DBX0.2) STEP 7 opens the DB (DB20) and
from a DB adapts the content of the DB register. The program then works with
the adapted DB after the block call.
When calling • After a block has been called from within an FC that transfers a
blocks in component of a formal parameter of a higher data type (string,
conjunction array, structure or UDT) to the called block, the content of AR1 and
with higher data the DB register of the calling block are modified.
types • The same applies to a call from within an FB if the parameter is in
the VAR_IN_OUT area of the caller.
When • When an FB accesses a component of a formal parameter of a
accessing higher data type in the VAR_IN_OUT area (string, array, structur or
components of UDT), STEP 7 uses the address register AR1 and the DB register.
a higher data This means that the contents of both registers are modified.
type • When an FC accesses a component of a formal parameter of a
higher data type in the VAR_IN_OUT area (string, array, structur or
UDT), STEP 7 uses the address register AR1 and the DB register.
This means that the contents of both registers are modified.
Note
• When an FB is called from within a version 1 block, the actual parameter for
the first Boolean IN or IN_OUT parameter is not transferred correctly if the
command before the call does not limit the RLO. In this case, it is logically
combined with the existing RLO.
• When an FB is called (single or multiple instance), the address register AR2 is
written to.
• If the address register AR2 is modified in an FB, there is no guarantee that the
FB will be executed correctly.
• If the complete absolute DB address is not transferred to an ANY parameter,
the ANY pointer does not get the DB number of the open DB. Instead, it
always gets the number 0.
Declaration View
You use the declaration view if you want to:
• View or determine the data structure of shared data blocks,
• View the data structure of data blocks with an associated user-defined data
type (UDT), or
• View the data structure of data blocks with an associated function block (FB).
The structure of data blocks that are associated with a function block or user-
defined data type cannot be modified. To modify them you must first modify the
associated FB or UDT and then create a new data block.
Data View
You use the data view if you want to modify data. You can only display, enter, or
change the actual value of each element in the data view. In the data view of data
blocks, the elements of variables with complex data types are listed individually
with their full names.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable when you
finish entering a declaration.
Declaration This column is only displayed for instance data blocks. It shows you how the variables
in the variable declaration of the function block are declared:
• Input parameter (IN)
• Output parameter (OUT)
• In/out parameter (IN_OUT)
• Static data (STAT)
Name Enter the symbolic name you have to assign to each variable here.
Type Enter the data type you want to assign to the variable (BOOL, INT, WORD, ARRAY,
etc.). The variables can have elementary data types, complex data types, or user-
defined data types.
Initial Value Here you can enter the initial value if you do not want the software to use the default
value for the data type entered. All values must be compatible with the data type.
When you save a block for the first time, the initial value is used as the actual value if
you have not explicitly defined actual values for the variables.
Comment Entering a comment in this field helps to document the variables. The comment can
have up to 80 characters.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable.
Declaration This column is only displayed for instance data blocks. It shows you how the
variables in the variable declaration of the function block are declared:
• Input parameter (IN)
• Output parameter (OUT)
• In/out parameter (IN_OUT)
• Static data (STAT)
Name The symbolic name assigned in the variable declaration for the variable. You cannot
edit this field in the data view.
Type Displays the data type defined for the variable.
For shared data blocks, only the elementary data types are listed here because the
elements are listed individually in the data view for variables with complex or user-
defined data types.
For instance data blocks the parameter types are also displayed, for in/out
parameters (IN_OUT) with complex or user-defined data types, a pointer points to
the data type in the "Actual Value" column.
Initial Value The initial value that you entered for the variable if you do not want the software to
use the default value for the specified data type.
When you save a data block for the first time, the initial value is used as the actual
value if you have not explicitly defined actual values for the variables.
Actual Value Offline: The value that the variable had when the data block was opened or to which
you last changed it and saved it (even if you opened the data block online, this
display is not updated).
Online: The actual value on opening the data block is displayed but not updated
automatically. To update the view, press F5.
You can edit this field if it does not belong to an in/out parameter (IN_OUT) with a
complex or user-defined data type. All values must be compatible with the data type.
Comment The comment entered to document the variable. You cannot edit this field in the data
view.
If you open a data block which is not assigned to a user-defined data type or
function block, you can define its structure in the declaration view of the data block.
With data blocks which are not shared, the declaration view cannot be changed.
1. Open a shared data block, meaning a block which is not associated with a
UDT or FB.
2. Display the declaration view of the data block if this view is not set already.
3. Define the structure by filling out the table displayed in accordance with the
information below.
With data blocks which are not shared, the declaration view cannot be modified.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable when you
finish entering a declaration.
Name Enter the symbolic name you have to assign to each variable here.
Type Enter the data type you want to assign to the variable (BOOL, INT, WORD, ARRAY,
etc.). The variables can have elementary data types, complex data types, or user-
defined data types.
Initial Value Here you can enter the initial value if you do not want the software to use the default
value for the data type entered. All values must be compatible with the data type.
When you save a block for the first time, the initial value is used as the actual value if
you have not explicitly defined actual values for the variables.
Comment Entering an optional comment in this field helps to document the variable. The comment
can have up to 80 characters.
Input
When you associate a data block with a function block (instance DB), the variable
declaration of the function block defines the structure of the data block. Any
changes can only be made in the associated function block.
1. Open the associated function block (FB).
2. Edit the variable declaration table of the function block.
3. Create the instance data block again.
Display
In the declaration view of the instance data block you can display how the variables
in the function block were declared.
1. Open the data block.
2. Display the declaration view of the data block if this view is not set already.
3. See below for more information on the table displayed.
With data blocks which are not shared, the declaration view cannot be changed.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable.
Declaration This column shows you how the variables in the variable declaration of the function
block are declared:
• Input parameter (IN)
• Output parameter (OUT)
• In/out parameter (IN_OUT)
• Static data (STAT)
The declared temporary local data of the function block are not in the instance data
block.
Name The symbolic name assigned in the variable declaration of the function block.
Type Displays the data type assigned in the variable declaration of the function block. The
variables can have elementary data types, complex data types, or user-defined data
types.
If additional function blocks are called within the function block for whose call static
variables have been declared, a function block or a system function block (SFB) can
also be specified here as the data type.
Initial Value The initial value that you entered for the variable in the variable declaration of the
function block if you do not want the software to use the default value.
When you save a data block for the first time, the initial value is used as the actual
value if you have not explicitly defined actual values for the variables.
Comment The comment entered in the variable declaration for the function block to document
the data element. You cannot edit this field.
Note
For data blocks that are assigned to a function block, you can only edit the actual
values for the variables. To enter actual values for the variables, you must be in
the data view of data blocks.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable when you
finish entering a declaration.
Name Enter the symbolic name you have to assign to each variable here.
Type Enter the data type you want to assign to the variable (BOOL, INT, WORD, ARRAY,
etc.). The variables can have elementary data types, complex data types, or their own
user-defined data types.
Initial Value Here you can enter the initial value if you do not want the software to use the default
value for the data type entered. All values must be compatible with the data type.
When you save an instance of the user-defined data type (or a variable, or a data
block) for the first time, the initial value is used as the actual value if you have not
explicitly defined actual values for the variables.
Comment Entering a comment in this field helps to document the variables. The comment can
have up to 80 characters.
Input
When you assign a data block to a user-defined data type, the data structure of the
user-defined data type defines the structure of the data block. Any changes can
only be made in the associated user-defined data type.
1. Open the user-defined data type (UDT).
2. Edit the structure of the user-defined data type.
3. Create the data block again.
Display
You can only display how the variables were declared in the user-defined data type
in the declaration view of the data block.
1. Open the data block.
2. Display the declaration view of the data block if this view is not set already.
3. See below for more information on the table displayed.
The declaration view cannot be modified. Any changes can only be made in the
associated user-defined data type.
Column Explanation
Address Displays the address which STEP 7 automatically assigns for the variable.
Name The symbolic name assigned in the variable declaration of the user data type.
Type Displays the data types assigned in the variable declaration of the user-defined data
type. The variables can have elementary data types, complex data types, or user-
defined data types.
Initial Value The initial value that you entered for the variable in the user-defined data type if you do
not want the software to use the default value.
When you save a data block for the first time, the initial value is used as the actual
value if you have not explicitly defined actual values for the variables.
Comment The comment entered in the variable declaration for the user-defined data type to
document the data element.
Note
For data blocks that are assigned to a user-defined data type, you can only edit
the actual values for the variables. To enter actual values for the variables, you
must be in the data view of data blocks.
Editing actual values is only possible in the data view of data blocks.
1. If necessary, toggle to the table display in the data view using the menu
command View > Data View.
2. Enter the required actual values for the data elements in the fields of the
column "Actual Value." The actual values must be compatible with the data
type of the data elements.
Any incorrect entries (for example, if an actual value entered is not compatible with
the data type) made during editing are recognized immediately and shown in red.
These errors must be corrected before saving the data block.
Note
Any changes to the data values are only retained once the data block has been
saved.
Resetting data values is only possible in the data view of data blocks.
1. If necessary, toggle to the table display in the data view using the menu
command View > Data View.
2. Select the menu command Edit > Initialize Data Block to do this.
All variables are assigned their intended initial value again, meaning the actual
values of all variables are overwritten by their respective initial value.
Note
Any changes to the data values are only retained once the data block has been
saved.
To enter newly created blocks or changed data values in data blocks in the
programming device database, you must save the respective block. The data are
then written to the hard disk of the programming device.
Note
• You can also save blocks or source files beneath other projects or libraries in
the SIMATIC Manager (by dragging & dropping, for example).
• You can only save blocks or complete user programs to a memory card in
the SIMATIC Manager.
• If problems occur when saving or compiling large blocks, you should
reorganize the project. Use the menu command File > Reorganize in the
SIMATIC Manager to do this. Then try to save or compile again.
An STL source file consists mainly of continuous text. To enable the file to be
compiled into blocks, you must observe certain structures and syntax rules.
The following general guidelines apply to creating user programs as STL source
files:
Topic Rule
Syntax The syntax of the STL statements is the same as in the incremental
Statement List editor. One exception to this is the CALL instruction.
CALL In a source file, you enter parameters in brackets. The individual
parameters are separated by a comma.
Example: FC call (one line)
CALL FC10 (param1 :=I0.0,param2 :=I0.1);
Example: FB call (one line)
CALL FB10, DB100 (para1 :=I0.0,para2 :=I0.1);
Note:
When calling a block, transfer the parameters in the defined order in
the ASCII Editor. Otherwise the comment assignment for these lines
may not match in the STL and source file views.
Upper/lower case The editor in this application is not case-sensitive, the exception to
this being system attributes and jump labels. When entering strings
(data type STRING) you must also observe upper and lower case.
Keywords are shown in upper case. When compiled, upper and
lower case are not observed; therefore you can enter keywords in
upper or lower case or a mixture of the two.
Semicolon Designate the end of every STL statement and every variable
declaration with a semicolon (;). You can enter more than one
statement per line.
Double slash (//) Begin every comment with a double slash (//) and end the comment
with RETURN (or line feed).
For every block in the source file you must declare the required variables.
The variable declaration section comes before the code section of the block.
The variables must - if they are being used - be declared in the correct sequence
for declaration types. This means all variables of one declaration type are together.
For Ladder, Function Block Diagram, and Statement List you fill out a variable
declaration table, but here you have to work with the relevant keywords.
Note
• The variable symbol must start with a letter. You may not assign a symbolic
name for a variable that is the same as one of the reserved keywords.
• If variable symbols are identical in the local declarations and in the symbol
table, you can code local variables by placing # in front of the name and
putting variables in the symbol table in quotation marks. Otherwise, the block
interprets the variable as a local variable.
System attributes can be assigned to blocks and parameters. They control the
message configuration and connection configuration, operator interface functions,
and process control configuration.
The following applies when entering system attributes in source files:
• The keywords for system attributes always start with S7_.
• The system attributes are placed in braces (curly brackets).
• Syntax: {S7_idenifier := ’string’}
a number of identifiers are separated by ";".
• System attributes for blocks come before the block properties and after the
keywords ORGANIZATION_ and TITLE.
• System attributes for parameters are included with the parameter declaration,
meaning before the colon for the data declaration.
• A distinction is made between upper and lower case characters. This means
that the correct use of upper and lower case characters is important when
entering system attributes.
The system attributes for blocks can be checked or changed in incremental input
mode using the menu command File > Properties under the "Attributes" tab.
The system attributes for parameters can be checked or changed in incremental
input mode using the menu command Edit > Object Properties. The cursor must
be positioned in the name field of the parameter declaration.
You can more easily identify the blocks you created if you use block properties and
you can also protect these blocks from unauthorized changes.
The block properties can be checked or changed in incremental input mode using
the menu command File > Properties under the "General - Part 1" and "General -
Part 2" tabs.
The other block properties can only be entered in the source file.
The following applies in source files:
• Block properties precede the variable declaration section.
• Each block property has a line of its own.
• The line ends with a semicolon.
• The block properties are specified using keywords.
• If you enter block properties, they must appear in the sequence shown in the
Table of Block Properties.
• The block properties valid for each block type are listed in the Assignment:
Block Property to Block Type.
Note
The block properties are also displayed in the SIMATIC Manager in the object
properties for a block. The properties AUTHOR, FAMILY, NAME, and VERSION
can also be edited there.
The following table shows which block properties can be declared for which block
types:
Property OB FB FC DB UDT
KNOW_HOW_PROTECT • • • • −
AUTHOR • • • • −
FAMILY • • • • −
NAME • • • • −
VERSION • • • • −
UNLINKED − − − • −
READ_ONLY − − − • −
The blocks in STL source files are structured using keywords. Depending on the
type of block, there are differences in the structure of:
• Logic blocks
• Data blocks
• User-defined data types (UDT)
A logic block is made up of the following sections, each of which is identified by the
corresponding keyword:
• Block start,
• identified by keyword and block number or block name, for example
- "ORGANIZATION_BLOCK OB1" for an organization block,
- "FUNCTION_BLOCK FB6" for a function block, or
- "FUNCTION FC1 : INT" for a function. With functions the function type is
also specified. This can be an elementary or complex data type (with the
exception of ARRAY and STRUCT) and defines the data type of the return
value (RET_VAL). If no value is to be returned, the keyword VOID is given.
• Optional block title introduced by the keyword "TITLE" (max. length of title:
64 characters)
• Additional comments, beginning with a double slash // at the start of the line
• Block properties (optional)
• Variable declaration section
• Code section, beginning with "BEGIN." The code section consists of one or
more networks that are identified by "NETWORK." You cannot enter a network
number.
• Optional network for each network used, introduced by the keyword "TITLE ="
(max. length of title: 64 characters)
• Additional comments for each network, beginning with a double slash // at the
start of the line
• Block end, identified by END_ORGANIZATION_BLOCK,
END_FUNCTION_BLOCK, or END_FUNCTION
• A blank must be placed between the block type and the block number. The
symbolic block name can be identified by quotation marks to ensure that the
symbolic names of local variables and names in the symbol table remain
unique.
A data block consists of the following areas that are introduced by their respective
keywords:
• Block start, identified by keyword and block number or block name, for
example, DATA_BLOCK DB26
• Reference to an associated UDT or function block (optional)
• Optional block title introduced by the keyword TITLE = (entries longer than
64 characters are cut off)
• Optional block comment, beginning with a double slash //
• Block properties (optional)
• Variable declaration section (optional)
• Assignment section with default values, beginning with BEGIN (optional)
• Block end, identified by END_DATA_BLOCK
There are three types of data block:
• Data blocks, user-defined
• Data blocks with an associated user-defined data type (UDT)
• Data blocks with an associated function block (known as "instance" data
blocks)
A user-defined data type consists of the following areas that are introduced by their
respective keywords:
• Block start, identified by keyword TYPE and number or name, for example,
TYPE UDT20
• Structured data type
• Block end, identified by END_TYPE
When you enter a user-defined data type, you must ensure that user-defined data
types precede the blocks in which they are used.
The format tables show the syntax and formats that you should observe when
programming STL source files. The syntax is represented as follows:
• Each element is described in the right column.
• Any elements that must be entered are shown in quotation marks.
• The square brackets [...] mean that the contents of these brackets are optional.
• Keywords are given in upper case letters.
The following table shows a brief list of the format for organization blocks in an STL
source file:
Structure Description
"ORGANIZATION_BLOCK" ob_no ob_no is the block number, for example: OB1;
or ob_name ob_name is the symbolic name of the block as
defined in the symbol table
[TITLE= ] Block title (entries longer than 64 characters are cut
off)
[Block comment] Comments can be entered after "//"
[System attributes for blocks] System attributes for blocks
[Block properties] Block properties
Variable declaration section Declaration of temporary variables
"BEGIN" Keyword to separate the variable declaration
section from the list of STL instructions
NETWORK Start of a network
[TITLE= ] Network title (max. 64 characters)
[Network comment] Comments can be entered after "//"
List of STL instructions Block instructions
"END_ORGANIZATION_BLOCK" Keyword to end organization block
The following table shows a brief list of the format for function blocks in an STL
source file:
Structure Description
"FUNCTION_BLOCK" fb_no or fb_no is the block number, for example FB6;
fb_name fb_name is the symbolic name of the block as
defined in the symbol table
[TITLE= ] Block title (entries longer than 64 characters are cut
off)
[Block comment] Comments can be entered after "//"
[System attributes for blocks] System attributes for blocks
[Block properties] Block properties
Variable declaration section Declaration of input, output, and in/out parameters,
and temporary or static variables
The declaration of the parameters may also contain
the declarations of the system attributes for
parameters.
"BEGIN" Keyword to separate the variable declaration
section from the list of STL instructions
NETWORK Start of a network
[TITLE= ] Network title (max. 64 characters)
[Network comment] Comments can be entered after "//"
List of STL instructions Block instructions
"END_FUNCTION_BLOCK Keyword to end function block
The following table shows a brief list of the format for functions in an STL source
file:
Structure Description
"FUNCTION" fc_no : fc_type or fc_no is the block number, for example FC5;
fc_name : fc_type fc_name is the symbolic name of the block as
defined in the symbol table;
The following table shows a brief list of the format for data blocks in an STL source
file:
Structure Description
"DATA_BLOCK" db_no or db_name db_no is the block number, for example DB5;
db_name is the symbolic name of the block as
defined in the symbol table
[TITLE= ] Block title (entries longer than 64 characters are cut
off)
[Block comment] Comments can be entered after "//"
[System attributes for blocks] System attributes for blocks
[Block properties] Block properties
Declaration section Declaration whether the block is associated with a
UDT or an FB, given as a block number or
symbolic name as defined in the symbol table, or
as a complex data type
"BEGIN" Keyword to separate the declaration section from
the list of value assignments
[Assignment of initial values] Variables can have specific initial values assigned.
Individual variables either have constants assigned
or a reference is made to other blocks.
"END_DATA_BLOCK" Keyword to end data block
The source file must be created in the source file folder beneath the S7 program.
You can create source files in the SIMATIC Manager or the editor window.
Creating Source Files in the SIMATIC Manager
1. Open the appropriate "Source Files" folder by double-clicking on it.
2. To insert an STL source file select the menu command Insert > S7 Software >
STL Source File.
Creating Source Files in the Editor Window
1. Select the menu command File > New.
2. In the dialog box, select the source file folder of the same S7 program that
contains the user program with the blocks.
3. Enter a name for the new source file.
4. Confirm with "OK".
The source file is created under the name you entered and is displayed in a
window for editing.
The programming language and editor with which a source file is edited can be set
in the object properties for the source file. This ensures that the correct editor and
the correct programming language are started when the source file is opened for
editing. The STEP 7 Standard package supports programming in STL source files.
Other programming languages are also available as optional packages. You can
only select the menu command to insert the source file if the corresponding
software option is loaded on your computer.
To edit an S7 source file, proceed as follows:
1. Open the appropriate "Source Files" folder by double-clicking on it.
2. Start the editor required for editing as follows:
- Double-click the required source file in the right half of the window.
- Select the required source file in the right half of the window and select the
menu command Edit > Open Object.
Block templates for organization blocks (OB), function blocks (FB), functions (FC),
data blocks (DB), instance data blocks, data blocks with associated user-defined
data types, and user-defined data types (UDT) are available for programming in
STL source files. The block templates make it easier to enter blocks in your source
file and to observe syntax and structure guidelines.
To insert a block template, proceed as follows:
1. Activate the window of the source file in which you want to insert a block
template.
2. Position the cursor at the point in the file after which you want to insert the
block template.
3. Select one of the menu commands Insert > Block Template >
OB/FB/FC/DB/Instance DB/DB Referencing UDT/UDT.
The block template is inserted in the file after the cursor position.
You can create and edit a source file with any ASCII editor, then import it into a
project and compile it into individual blocks using this application. To do this, you
must import the source files into the "Source Files" folder of the S7 program in
whose S7 user program the blocks created during compilation are to be stored.
To insert an external source file, proceed as follows:
1. Select the source file folder of the S7 program in which the external source
files are to be imported.
2. Select the menu command Insert > External Source File.
3. In the dialog box which appears, enter the source file you want to import.
The file name of the source file you are importing must have a valid file extension.
STEP 7 uses the file extension to determine the source file type. This means, for
example, that STEP 7 creates an STL source file when it imports a file with the
extension .AWL. Valid file extensions are listed in the dialog box under "File Type."
Note
You can also use the menu command Insert > External Source File to import
source files you created with STEP 7 version 1.
You can generate an STL source file which you can edit with any text editor from
existing blocks. The generated source file is created in the source file folder of the
same S7 user program from whose user program the blocks were selected.
To generate a source file from a block, proceed as follows:
1. Select the menu command File > Generate Source File.
2. In the dialog box, select the source file folder in which you want to create the
new source file.
3. Enter a name for the source file in the text box.
4. In the "Select STEP 7 Blocks" dialog box, select the block(s) which you want to
generate as the given source file. The selected blocks are displayed in the right
list box.
5. Confirm with "OK."
One continuous STL source file is created from the selected blocks and is
displayed in a window for editing.
You can save an STL source file at any time in its current state. The program is not
compiled and no syntax check is run, meaning any errors are saved as well.
Syntax errors are detected and reported only when the source file is compiled or
following a consistency check.
To save a source file under the same name:
1. Activate the window for the source file you want to save.
2. Select the menu command File > Save.
To save a source file under a new name/in another project:
1. Activate the window for the source file you want to save.
2. Select the menu command File > Save As.
3. In the dialog box, select the source file folder in which you want to save the
source file and enter its new name.
Using the menu command File > Consistency Check you can display any syntax
errors in the STL source file. In contrast to compiling, no blocks are generated.
When the consistency check is completed, a dialog box is displayed showing you
the total number of errors found.
Any errors that are found are listed individually in the lower part of the window with
a line reference. Correct these errors before compiling the source file so that all the
blocks can be created.
The active window for source files is split into two. The following errors are listed in
the lower half:
• Errors that were found after starting a compilation run with the menu command
File > Compile.
• Errors that were found after starting a consistency check with the menu
command File > Consistency Check.
To find the location of an error in a source file, position the cursor on the respective
error message in the lower part of the window. The text line containing the error is
automatically highlighted in the upper part of the window. The error message also
appears in the status bar.
Requirements
In order to be able to compile the program you created in a source file into blocks,
the following requirements must be fulfilled:
• Only source files which are stored in the "Source Files" folder beneath an
S7 program can be compiled.
• As well as the "Source Files" folder, a "Blocks" folder must also lie beneath the
S7 program in which the blocks created during compilation can be stored. The
blocks programmed in the source file are only created if the source file was
compiled without error. If there are a number of blocks programmed in a
source file, only those which contain no errors are created. You can then open
these blocks, edit them, download them to the CPU, and debug them
individually.
Procedure in the Editor
1. Open the source file you want to compile. The source file must be in the source
file folder of the S7 program in whose S7 user program the compiled blocks
are to be stored.
2. Select the menu command View > Display with > Symbolic Representation
so that the symbolic names in the compiled blocks can be displayed
afterwards.
3. Select the menu command File > Compile.
4. The "Compiler Report" dialog box is displayed showing the number of lines
compiled and syntax errors found.
The blocks specified for the file are only created once the source file has been
compiled without errors. If there are a number of blocks programmed in a source
file, only those which contain no errors are created. Warnings of errors do not
prevent blocks being created.
Any syntax errors detected during compilation are shown in the lower part of the
working window and must be corrected before the respective blocks can be
created.
Procedure in the SIMATIC Manager
1. Open the appropriate "Source Files" folder by double-clicking on it.
2. Select one or more source files that you want to compile. You cannot start a
compilation run for a closed source file folder to compile all the source files in
it.
3. Select the menu command File > Compile to start compilation. The correct
compiler is called for the source file you selected. The successfully compiled
blocks are then stored in the block folder beneath the S7 program.
Any syntax errors detected during compilation are displayed in a dialog box
and must be corrected so that the blocks where the errors were found can be
created as well.
ORGANIZATION_BLOCK OB1
TITLE = Example for OB1 with different block calls
//The 3 networks show block calls
//with and without parameters
BEGIN
NETWORK
TITLE = Function call transferring parameters
// Parameter transfer in one line
CALL FC1 (param1 :=I0.0,param2 :=I0.1);
NETWORK
TITLE = Function block call
// transferring parameters
// Parameter transfer in more than one line
CALL Traffic light control , DB6 ( // Name of FB, instance data block
dur_g_p := S5T#10S, // Assign actual values to parameters
del_r_p := S5T#30S,
starter := TRUE,
t_dur_y_car := T 2,
t_dur_g_ped := T 3,
t_delay_y_car := T 4,
t_dur_r_car := T 5,
t_next_red_car := T 6,
r_car := "re_main", // Quotation marks show symbolic
y_car := "ye_main", // names entered in symbol table
g_car := "gr_main",
r_ped := "re_int",
g_ped := "gr_int");
NETWORK
TITLE = Function block call
// transferring parameters
// Parameter transfer in one line
CALL FB10, DB100 (para1 :=I0.0,para2 :=I0.1);
END_ORGANIZATION_BLOCK
AUTHOR Siemens
FAMILY Throughput check
NAME : INCR_ITEM_NOS
VERSION : 1.0
VAR_IN_OUT
ITEM_NOS : INT; // No. of items currently manufactured
END_VAR
BEGIN
NETWORK
TITLE = Increment number of items by 1
// As long as the current number of items lies below 1000,
// the counter can be increased by 1
L ITEM_NOS; L 1000; // Example for more than one
> I; JC ERR; // statement in a line.
L 0; T RET_VAL;
L ITEM_NOS; INC 1; T ITEM_NOS; BEU;
ERR: L -1;
T RET_VAL;
END_FUNCTION
AUTHOR : Siemens
FAMILY : Throughput check
NAME : INCR_ITEM_NOS
VERSION : 1.0
VAR_IN_OUT
ITEM_NOS {S7_visible := ’true’}: INT; // No. of items currently manufactured
//System attributes for parameters
END_VAR
BEGIN
NETWORK
TITLE = Increment number of items by 1
// As long as the current number of items lies below 1000,
// the counter can be increased by 1
L ITEM_NOS; L 1000; // Example for more than one
> I; JC ERR; // statement in a line.
L 0; T RET_VAL;
L ITEM_NOS; INC 1; T ITEM_NOS; BEU;
ERR: L -1;
T RET_VAL;
END_FUNCTION
FUNCTION_BLOCK FB6
TITLE = Simple traffic light switching
// Traffic light control of pedestrian crosswalk
// on main street
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
condition : BOOL := FALSE; // Condition red for cars
END_VAR
BEGIN
NETWORK
TITLE = Condition red for main street traffic
// After a minimum duration has passed, the request for green at the
// pedestrian crosswalk forms the condition red
// for main street traffic.
A(;
A #starter; // Request for green at pedestrian crosswalk and
A #t_next_r_car; // time between red phases up
O #condition; // Or condition for red
);
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB10
VAR_INPUT
para1 : bool;
para2: bool;
end_var
begin
end_function_block
data_block db10
FB10
begin
end_data_block
data_block db6
FB6
begin
end_data_block
Data Block:
DATA_BLOCK DB10
TITLE = DB Example 10
STRUCT
aa : BOOL; // Variable aa of type BOOL
bb : INT; // Variable bb of type INT
cc : WORD;
END_STRUCT;
BEGIN // Assignment of initial values
aa := TRUE;
bb := 1500;
END_DATA_BLOCK
DATA_BLOCK DB20
TITLE = DB (UDT) Example
UDT 20 // Associated user-defined data type
BEGIN
start := TRUE; // Assignment of initial values
setp. := 10;
END_DATA_BLOCK
Note
The UDT used must come before the data block in the source file.
DATA_BLOCK DB30
TITLE = DB (FB) Example
FB30 // Associated function block
BEGIN
start := TRUE; // Assignment of initial values
setp. := 10;
END_DATA_BLOCK
Note
The associated function block must come before the data block in the source file.
TYPE UDT20
STRUCT
start : BOOL; // Variable of type BOOL
setp. : INT; // Variable of type INT
value : WORD; // Variable of type WORD
END_STRUCT;
END_TYPE
You can create and evaluate reference data to make it easier to debug and modify
your user program. You use the reference data for the following:
• As an overview of your whole user program
• As the basis for changes and tests
• To complement your program documentation
The following table shows which information you can extract from the individual
views:
View Purpose
Cross-reference list Overview of the addresses in the memory areas I, Q, M, P, T, C, and DB,
FB, FC, SFB, SFC calls used in the user program.
Using the menu command View > Cross References for Address, you
can display all the cross-references including overlapping access to the
selected address.
Assignment list for inputs, Overview of which bits of the addresses in the memory areas I, Q, and M,
outputs, and bit memory and which timers and counters (T and C) are already occupied within the
(I,Q,M) user program; forms an important basis for troubleshooting or changes in
Assignment list for timers the user program
and counters (T/C)
Program structure Call hierarchy of the blocks within a user program and an overview of the
blocks used and their nesting levels
Unused symbols Overview of all symbols which are defined in the symbol table but not
used in the parts of the user program for which reference data are
available
Addresses without Overview of all absolute addresses which are used in the parts of the user
symbols program for which reference data are available but for which no symbol
has been defined in the symbol table
The reference data for the selected user program include all the lists in the table. It
is possible to create and display one or more of the lists for one user program or for
more than one user program.
Structure
A cross-reference list entry consists of the following columns:
Column Content/Meaning
Address Absolute address
Symbol Symbolic address name
Block Block in which the address is used
Type Whether a read (R) and/or write (W) access to the address is
involved
Language/Details Information on the programming language used to create the block
The columns Symbol, Block, Type, and Language/Details are displayed only if the
corresponding options were selected for the cross-reference list. The information
for Language and Details is shown in one column and only the whole column can
be activated or deactivated. This block information varies depending on the
programming language the block was written in.
You can set the column width in the cross-reference list shown on the screen as
required using the mouse.
Sorting
The cross-reference list default option is to sort by memory areas. If you click a
column header with the mouse, you can sort the entries of this column by the
default sort criteria.
The program structure describes the call hierarchy of the blocks within an S7 user
program. You are also given an overview of the blocks used, their dependencies,
and their local data requirements.
Using the menu command View > Filter in the "Generating Reference Data"
window you open a tabbed dialog box. In the "Program Structure" tab you can set
how you want the program structure displayed.
You can choose between:
• Tree structure and
• Parent/child structure (table form)
You can specify whether you want all blocks to be displayed or whether the
hierarchy should start from a specific start block.
Tree Structure
The entire call hierarchy is shown, starting from a particular block.
Every program structure possesses exactly one block as its root. This can be the
OB1 block or any other block preset as starting block by the user.
S7 Program
OB1 <maximum: 66>
FB10, DB101 [42]
DB10(dbten) [42]
FC10
DB10(dbten) [66]
SFB0(CTU), DB100 [66]
SFC52(WR_USMSG) [66]
FC10
DB10(dbten) [66]
SFB0(CTU), DB100 [66]
SFC52(WR_USMSG) [66]
SFB0(CTU), DB100 [42]
SFC52(WR_USMSG) [42]
If the program structure is to be created for all organization blocks (OB) and OB1 is
not in the S7 user program, or if a starting block was specified which is not present
in the program, you are automatically prompted to specify another block for the
program structure root.
Display of multiple calls of blocks can be deactivated by option settings, both for
the tree structure and for the parent/child structure.
Parent/Child Structure
The calling and the called block are shown. This call pairing is given for every block
in the S7 user program.
12.1.4 Assignment List for Inputs, Outputs, and Bit Memory (I/Q/M)
Assignment lists show you which addresses are already assigned within the user
program. This display is an important basis for troubleshooting or making changes
in the user program.
The I/Q/M assignment list display gives you an overview of which bit in which byte
of the memory areas input (I), output (Q), and bit memory (M) is used. The I/Q/M
assignment list is displayed in a working window. The working window's title bar
shows the name of the S7 user program to which the assignment list belongs.
Each line contains one byte of the memory area in which the eight bits are coded
according to their access. It also indicates whether the access is of a byte, word, or
double word.
Column Content/Meaning
7
6
5
4 Bit number of the corresponding byte
3
2
1
0
B The byte is occupied by a one-byte access
W The byte is occupied by a one-word access
D The byte is occupied by a double-word access
Address 7 6 5 4 3 2 1 0 B W D
QB0 O X X O X X X X O . .
QB1 . O . . O . O . . . .
IB0 O O O . O . O . . . .
IB1 . . . . . . . . . . .
MB0 X X X X X X X X . O .
MB1 X X X X X X O X . . .
The first line gives the assignment of the output byte QB0. The address QB0 is
accessed byte-wise. At the same time, however, there is bit access to the output
bits Q 0.4 and Q 0.7. There is therefore an "O" in columns "4" and "7." There is an
"X" in columns "0", "1", "2", "3", "5", and "6" to indicate the byte access. An "O"
appears in column B because there is a byte access to address QB0.
Assignment lists show you which addresses are already assigned within the user
program. This display is an important basis for troubleshooting or making changes
in the user program.
The T/C assignment list display gives you an overview of which timers (T) and
counters (C) are used.
The T/C assignment list is displayed in a working window. The working window’s
title bar shows the name of the S7 user program to which the assignment list
belongs. Each line contains 10 timers or counters.
0 1 2 3 4 5 6 7 8 9
T 00-09 . X . . . X . . .
T 10-19 . . X . . . . X . X
T 20-29 . . . . X . . . . .
C 00-09 . . X . . . . X . .
C 10-19 . . . . . . . . . X
C 20-29 . . . . . . . . . .
C 30-39 . . . . X . . . . .
In this example, the timers T1, T6, T12, T17, T19, T24 and the counters C2, C7,
C19, C34 are assigned.
These lists are sorted alphabetically. You can sort the entries by clicking the
column title.
You are shown an overview of all the symbols with the following characteristics:
• The symbols defined in the symbol table.
• The symbols not used in the parts of the user program for which reference data
exist.
They are displayed in an active window. The working window’s title bar shows the
name of the user program to which the list belongs.
Every line shown in the window corresponds to a list entry. A line consists of
address, symbol, data type, and comment.
Column Content/Meaning
Symbol Symbolic name
Address Absolute address
Data Type Data type of the address
Comment Comment on the address from the symbol table
When you display the list of addresses without symbols, you obtain a list of the
elements which are used in the S7 user program, but which are not defined in the
symbol table. They are displayed in an active window. The working window’s title
bar shows the name of the user program to which the list belongs.
A line consists of the address and the number of times that the address is used in
the user program.
Example:
Address Number
Q 2.5 4
I 23.6 3
M 34.1 20
The block information for Ladder Logic, Function Block Diagram, and Statement
List is displayed in the cross-reference list and the program structure. This
information consists of the block language and details.
In the "Program Structure" view, the block information is displayed using the menu
command View > Block Information or via the right mouse button. The display
depends on whether the representation "Parent/Child Structure" or "Tree Structure"
was selected under the filter settings in the "Program Structure" tab.
In the "Cross References" view, block information can be toggled on and off using
the command View > Filter.
• Activate the "Block language and details" check box in the "Cross References"
tab of the "Filter" dialog box to display the block information.
The block information varies according to the programming language the block was
written in and is shown using abbreviations.
Nw and Inst specify in which network and in which statement the address is used
(cross-reference list) or the block is called (program structure).
Using the menu command Window > New Window you can open additional
working windows and display other views of the reference data (for example, List of
Unused Symbols).
You open a working window for previously undisplayed reference data using the
menu command Reference Data > Open.
You can change to another view of the reference data by selecting one of the
commands in the "View" menu or the corresponding button in the toolbar:
Reference Data View Menu Command to Display this Reference Data View
Addresses Without Symbols View > Addresses Without Symbols
Unused Symbols View > Unused Symbols
I/Q/M Assignment List View > Assignment > Inputs, Outputs, and Bit Memory
T/C Assignment List View > Assignment > Timers and Counters
Program Structure View > Program Structure
Cross-Reference List View > Cross References
Choice Meaning
For modified blocks only The reference data are updated for any modified or new blocks;
information on any blocks deleted is removed from the reference
database.
For all blocks The reference data are generated again from scratch for all blocks.
Do not update The reference data are not updated.
In order to update the reference data, the blocks are recompiled. The appropriate
compiler is called to compile each block. Using the menu command View >
Update you can refresh the view of the reference data already displayed in the
active window.
You can use reference data to position the cursor at different locations of an
address in the program when programming. To do this, you must have up-to-date
reference data. However, you do not have to start the application for displaying
reference data.
Basic Procedure
1. Select the menu command Options > Reference Data > Generate in the
SIMATIC Manager to generate the current reference data. This step is only
necessary if there are no reference data, or if you have old reference data.
2. Select the address in an open block.
3. Select the menu command Edit > Go To > Location.
A dialog box is now displayed containing a list with the locations of the address
in the program.
4. Select the option "Overlapping access to memory areas" if you also want to
display the locations of the addresses whose physical addresses or address
area overlap with that of the called address. The "Address" column is added to
the table.
5. Select a location in the list and click the "Go To" button.
If the reference data are not up-to-date when you open the dialog box, a message
to this effect will appear. You can then update the reference data.
List of Locations
The list of locations in the dialog box contains the following details:
• The block in which the address is used
• The symbolic name of the block, if one exists
• Details, for example, information on the location and, if appropriate, the
instruction, which depends on the original programming language of the block
or source file (SCL)
• Language-dependent information
• Type of access to the address: read-only (R), write-only (W), read and write
(RW), unknown (?).
• Block language
You can filter the display of locations and in this way view, for example, write
access only for an address. The online help for this dialog box provides you with
more detailed information on what to enter in the fields and the other information
displayed.
Note
Reference data only exist offline. This function therefore always works
with the cross references of the offline blocks, even if you call the function
in an online block.
You want to determine at which locations output Q1.0 (direct/indirect) is set. The
following STL code in OB1 is used as an example:
Network 1: ...........
A Q 1.0 // irrelevant
= Q 1.1 // in this example
Network 2:
A M1.0
A M2.0
= Q 1.0 // assignment
Network 3:
//comment line only
SET
= M1.0 // assignment
Network 4:
A I 1.0
A I 2.0
= M2.0 // assignment
3. Jump to "NW 2 Inst 3" in the Editor using the "Go To" button in the dialog box:
Network 2:
A M1.0
A M2.0
= Q 1.0
4. The assignments to both M1.0 and M2.0 must now be checked. First position
the cursor on M1.0 in the LAD/STL/FBD Editor.
5. Select the menu command Edit > Go To > Location or use the right mouse
button to select "Go to Location." The dialog box now displays all the
assignments for M1.0:
OB1 Cycle Execution NW 3 Inst 2 /= W STL
OB1 Cycle Execution NW 2 Inst 1 /A R STL
6. Jump to "NW 3 Inst 2" in the Editor using the "Go To" button in the dialog box.
7. In the LAD/STL/FBD Editor in Network 3, you will see the assignment to M1.0
is not important (because it is always TRUE) and that the assignment to M2.0
needs to be examined instead.
In STEP 7 versions earlier than V5, you would now have to run through
the entire chain of assignments all over again. The buttons ">>" and "<<"
make this much simpler:
8. Place the open dialog box "Go to Location" on top, or call the function "Go to
Location" in the LAD/STL/FBD Editor from your current position.
9. Click the "<<" button once or twice until all the locations of Q1.0 are displayed;
the last jump location "NW 2 Inst 3" is selected.
10. Jump from the address locations dialog box to "NW 2 Inst 3" in the Editor using
the "Go To" button (as in point 3):
Network 2:
A M1.0
A M2.0
= Q 1.0
11. In point 4, the assignment to M1.0 was checked. Now you have to check all the
(direct/indirect) assignments to M2.0. Position the cursor on M2.0 in the Editor
and call the function "Go to Location:" All the assignments to M2.0 are
displayed:
OB1 Cycle Execution NW 4 Inst 3 /= W STL
OB1 Cycle Execution NW 2 Inst 2 /A R STL
12. Jump to "NW 4 Inst 3" in the LAD/STL/FBD Editor using the "Go To" button:
Network 4:
A I 1.0
A I 2.0
= M2.0
13. Now you have to check the assignments to I1.0 and I2.0. This process is not
described in this example, because you proceed in the same way as before
(point 4 onwards).
By switching between the LAD/STL/FBD Editor and the address locations dialog
box, you can find and check the relevant locations in your program.
Introduction
If the interfaces or the code of individual blocks have to be adapted or extended,
this can lead to time stamp conflicts. Time stamp conflicts can in turn cause block
inconsistencies between calling blocks and called blocks or reference blocks and
thus to a high amount correction work.
The "Check block consistency" function eliminates a lot of this correction work. The
"Check block consistency" function removes a large part of all the time stamp
conflicts and block inconsistencies. In the case of blocks whose block
inconsistencies could not be eliminated automatically, the function places you at
the position to be changed in the corresponding editor, where you can carry out the
required changes. All the block inconsistencies are eliminated and the blocks
compiled step-by-step.
Requirements
It is only possible to check block consistency for projects created from STEP 7
V5.0, Service Pack 3. For older projects, you must first compile everything when
starting the block consistency check (menu command Program > Compile All).
For blocks created with an options package, the options package must be installed
for the consistency check.
Note
Even if the relationship between the interface time stamps is correct,
inconsistencies may occur:
• The definition of the interface for the referenced block does not match the
definition in the location at which it is used.
These inconsistencies are known as interface conflicts. They can occur, for
example, when blocks are copied from different programs or when an ASCII
source file is compiled and not all of the blocks in a program are generated.
Messages allow you to detect, localize, and remedy errors during processing on
the programmable controllers quickly thus reducing downtimes on a plant
considerably.
Before messages can be output, they must first be configured.
With STEP 7, you can create and edit messages linked to events with assigned
message texts and message attributes. You can also compile the messages and
display them on display devices.
Bit Messaging
Bit messaging requires the programmer to perform three steps:
• Create the user program on the programming device and set the required bit.
• Create an assignment list using any text editor in which a message text is
assigned to the message bit (for example, M 3.1 = limit switch pressure).
• Create the list of message texts on the operator panel on the basis of the
assignment list.
Message Numbering
Message numbering required the programmer to perform only one step:
• Create the user program on the programming device, set the required bit, and
assign the required message text to the bit directly while programming.
Overview
The following table shows the properties and requirements for the different
messaging methods:
STEP 7 supports the more user-friendly message numbering method which will be
described in detail below.
Overview
The following figure shows an overview of which SIMATIC components are
involved in configuring and displaying messages.
Configuring/Creating
Messages Displaying Messages
SKA/SCL
Symbols PG OP/OS
WinCC
PDIAG
Data transfer ProTool
CFC
PG
S7-GRAPH CPU Messages
Module
Information
Load
program/SDB Message
S7-300
frames/
module data
S7-400
Part Description
Timestamp Generated in the programmable controller when the message event
occurs
Message state The following states are possible: incoming, outgoing, outgoing
without acknowledgement, outgoing with acknowledgement
Associated value Some messages can be assigned a process value that can be
evaluated by the message block used
Image If the system crashes the messages that occurred can be displayed
subsequently on the operator station
Message number A unique number throughout the project which is allocated by the
system and identifies a message
Message text Configured by the user
Example
The following example shows an alarm message on an operator panel.
Message number
Message status
Time stamp
Message text
Associated value
You can choose between the following message blocks, each of which contains a
programmed message function:
• SFB33 ”ALARM”
• SFB34 ”ALARM_8”
• SFB35 ”ALARM_8P”
• SFB36 ”NOTIFY”
• SFC18 ”ALARM_S” and SFC17 ”ALARM_SQ”
• SFB37 ”AR_SEND” (to send archives)
You will find more detailed information in the reference online help on blocks.
The following table helps you decide which message block to choose for your
particular task. Selecting a message block depends on the following:
• The number of channels available in the block and therefore the number of
signals that are monitored per block call
• Whether messages are to be acknowledged
• The option of specifying associated values
• The display devices to be used
• The technical specifications of the CPU to be used.
You will find more detailed information in the reference online help on system
attributes.
The system attributes are assigned automatically if the message blocks that you
use in your program are SFBs or FBs with corresponding system attributes and are
called as multiple instances.
The message-type block can be either a function block (FB) or an instance data
block.
• With an FB you can create a message template to use as a template for
creating messages. All entries you make for the message template are entered
in the messages automatically. If you assign an instance data block to the
function block, messages for the instance data block are generated
automatically in accordance with the message template and assigned
message numbers.
• For an instance data block, you can modify messages generated based on this
message template for a specific instance.
The visible difference here is that message numbers are assigned for messages
but not for message templates.
Basic Procedure
1. In the SIMATIC Manager select the function block (FB) for which you want to
generate a block-related message and open this block with a double-click.
Result: The selected block is opened and displayed in the ”LAD/STL/FBD”
window.
2. Fill out the variable declaration table. For every message block that is called in
the function block you must declare variables in the calling function block.
3. In the code section of the function block, insert the call for the selected
message block, here ”CALL alarm”, and finish your entry with RETURN.
Result: The input variables for the called message block (here SFB33) are
displayed in the code section of the function block.
4. Assign the symbolic name you assigned in step 2. for the message block input,
here "Mess01," to the variable ”EV_ID” and confirm that the system attributes
should be used for message configuration.
Result: A flag should appear in the "Name” column if the column is not
selected. The selected block is then set as a message-type block. The required
system attributes (for example, S7_server and S7_a_type) and the
corresponding values are assigned automatically.
5. Repeat steps 2. to 4. for all calls to message blocks in this function block.
6. Save the block using the menu command File > Save.
7. Close the ”LAD/STL/FBD" window.
Result: The STEP 7 message configuration dialog box (standard dialog box) is
opened. Information on opening the PCS7 Message Configuration function can
be found under PCS7 Message Configuration.
Note
When editing the display device-specific texts and attributes, please read the
documentation supplied with your display device.
1. When you have created a message template, you can associate instance data
blocks to it and edit the instance-specific messages for these data blocks.
To do this, in the SIMATIC Manager open the block that is to call your
previously configured function block, for example, ”OB1” by double-clicking it.
In the open code section of the OB, enter the call (”CALL”), the name and
number of the FB to be called and of the instance DB that you want to
associate with the FB as an instance. Confirm your entry with RETURN.
Example: Enter ”CALL FB1, DB1”. If DB1 does not yet exist, confirm the
prompt whether you want the instance DB created with ”Yes.”
Result: The instance DB is created. In the code section of the OB, the input
variables of the associated FBs, here for example ”Mess01,” and the message
number allocated by the system, here ”1,” are displayed.
2. Save the OB with the menu command File > Save and close the
”LAD/STL/FBD” window.
Editing Messages
1. In the SIMATIC Manager, select the created instance DB, for example, ”DB1”
and select the menu command Edit > Special Object Properties > Message
to open the message configuration dialog box.
Result: The "Message Configuration" dialog box is opened and the selected
instance DB with the message number allocated by the system is displayed.
2. Enter the required changes for the corresponding instance DB in the
appropriate tabs and add other display devices if you wish. Exit the dialog box
with ”OK.”
Note
When you enter the system attributes, a syntax check is run and the incorrect
entries are marked in red.
Result: For each message block for which you declared a variable in the FB, a
tab appears in the dialog box. For the event-driven communication block, two
tabs appear in the dialog box.
2. Fill out the text boxes for the message parts "Origin," "OS area," and "Batch
ID."
3. Enter the message class and the event text for all events of the message
blocks used and specify whether every event must be acknowledged
individually.
4. For the message parts that apply for all instances and should not be changed,
click the "Locked" check box.
Editing Messages
1. In the SIMATIC Manager, select the instance DB whose message texts you
want to edit and open the PCS7 message configuration dialog box.
2. Do not change the instance-specific message parts that are not locked.
Note
The message text of instance DBs that are assigned to event-driven
communication blocks can be edited only in CFC.
Note
The time interval is dependent on the CPU used.
Basic Procedure
During processing, the signals for which you have configured messages are
checked asynchronously to your program. The checks take place at the configured
time intervals. The messages are displayed on the assigned display devices.
Using this function you can write a user entry in the diagnostic buffer and send a
corresponding message which you create in the message configuration application.
User-defined diagnostic messages are created by means of the system function
SFC52 (WR_USMSG) which is used as a message block. You must insert the call
for the SFC52 in your user program and allocate it the event ID.
In contrast to block-related and symbol-related messages, user-defined diagnostic
messages can only be displayed on a programming device. You cannot therefore
assign display device to these messages in the message configuration application.
Requirements
Before you can create a user-defined diagnostic message, you must have done the
following:
• Created a project in the SIMATIC Manager
• Created the S7/M7 program in the project to which you want to assign the
message
Basic Procedure
To create and display a user-defined diagnostic message, proceed as follows:
Texts that are output on display devices during process editing were usually input
in the same language used to program the automation solution.
It may often be the case that an operator who is to react to messages on a display
device does not speak this language. This user needs texts in his own language to
ensure smooth, problem-free processing and quick reaction to messages output by
the system.
STEP 7 allows you to translate any and all operator related texts into any language
required. The only prerequisite for this is that you have already installed the
language in your project (menu command: Options > Language for Display
Devices in the SIMATIC Manager). The number of languages available is
determined when Windows is installed (system property).
In this way you can be certain that any user faced with such a message at a later
date will have it displayed in the appropriate language. This system feature
considerably increases processing security and accuracy.
Operator related texts are user texts and text libraries.
You can create user texts for an entire project, for S7 programs, the block folder or
individual blocks, and for the symbol table if messages are configured in these
objects. They contain all texts and messages that can be shown on display
devices, for example. For one project, there can be several lists of operator related
texts that you can translate into the required languages.
You can select the languages that are available in a project (menu command
Options > Language for Display Devices…). You can also add or delete
languages later.
When you open the user texts of a STEP 7 object (menu command Options >
Translate Texts > User Texts), a table is displayed on the screen. Each column of
the table represents a language. The first column of the table always displays the
language that is set as the default language.
Basic Procedure
In the SIMATIC Manager, with the menu command Options > Language for
Display Devices…, make sure that you have set the languages into which you
want to translate the user texts.
Text libraries provide a list of texts that can be integrated into messages, updated
dynamically at run time, and shown on a programming device or other display
device. They are assigned to CPUs. The texts in system text libraries are provided
by STEP 7 or STEP 7 optional packages. There can be several text libraries
assigned to one CPU. You can translate these texts into the required languages.
In the SIMATIC Manager, you can select the languages that are available in a
project (menu command Options > Language for Display Devices…). You can
also add or delete languages later.
When you open a text library (menu command Options > Translate Texts >
System Text Library), a table is displayed on the screen. Each column of the table
represents a language. The first column always displays the index with which you
can reference the individual texts.
Example
Basic Procedure
In the SIMATIC Manager, with the menu command Options > Language for
Display Devices…, make sure that you have set the languages into which you
want to translate a text library.
Overview
Using the transfer program PLC-OS Engineering you transfer the message
configuration data generated to the WinCC database.
You have the choice of a number of different transfer options. You can, for
example, select an address and text comparison to ensure that the current data are
transferred.
Requirements
Before you start the transfer, the following requirements must be fulfilled:
• You have installed the setup program PLC-OS connection configuration
• You have generated the configuration data for creating messages.
Basic Procedure
With the ”CPU Messages" function, you can display asynchronous messages on
diagnostic events and user-defined diagnostic messages and/or ALARM_S/SQ
messages.
You can also start the message configuration application from the CPU Messages
application using the menu command Options > Configure Messages and create
user-defined diagnostic messages. The requirement for this is that you started the
CPU Messages application via an online project.
Display Options
With the ”CPU Messages" function, you can decide whether and how online
messages for selected CPUs are displayed.
• "Bring to the Foreground”: The window containing the CPU messages
appears in the foreground. The window appears in the foreground every time a
new message is received.
• ”Leave in the Background”: The CPU messages are received in the
background. The window remains in the background when new messages are
received and can be brought to the foreground if required.
• ”Ignore Message”: The CPU messages are not displayed and, in contrast to
the other two modes, not archived.
In the ”CPU Messages" window, you can browse through the messages in the
archive. Some examples are shown in the following figure:
Programm: schutz402\416neu414alt\CPU414-1
CPU Messages X
File Edit PLC View Options Help
Ready NUM
Archive Function
There is an archive to back up the messages in which between 40 and 2000 CPU
messages can be stored. If the set archive size is exceeded, the oldest message in
the archive is deleted to make space for the new message.
Basic Procedure
To configure CPU messages for selected modules:
Result: The "CPU Messages" application window appears which lists the
registered CPU.
2. You can extend the list of registered CPUs by repeating step 1. for other
programs or interfaces.
3. Click the check box in front of the list entries and specify which messages
should be received for the module:
A: activates (ALARM_SQ (SFC 17) and ALARM_S (SFC 18) for example,
reporting process diagnostic messages from S7 PDIAG, S7-GRAPH, or system
errors.
Result: As soon as the above messages occur, they are written in the
message archive and displayed in the form you selected.
Note
The CPUs for which you have called the menu command PLC > CPU Messages
in the SIMATIC Manager are entered in the list of registered modules in the "CPU
Messages" application window. The entries in the list are retained until they are
deleted in the "CPU Messages" application window.
CPU messages are always recorded in the archive unless you have selected the
menu command View > Ignore Message. All archived messages are always
displayed.
Introduction
When a system error occurs, S7 components and DP standard slaves can trigger
organization block calls.
Example: If there is a wire break, a module with diagnostic capability can trigger a
diagnostic interrupt (OB82).
For the system errors that occur, the S7 components provide information. The start
event information, that is, the local data of the assigned OB (which contain the data
record 0, among other things), provide general information on the location (such as
the logical address of the module) and type (such as channel error or backup
failure) of the error.
In addition, the error can be specified in greater detail by means of additional
diagnostic information (reading data record 1 with SFC51 or reading the diagnostic
message of DP standard slaves with SFC13). Examples of this would be channel 0
or 1 and wire break or measuring-range overrun.
With the Report System Error function, STEP 7 offers a convenient way to display
diagnostic information supplied by the component in message form.
The necessary blocks and message texts are automatically generated by STEP 7.
All the user has to do is load the generated blocks into the CPU and transfer the
texts to connected HMI devices.
You will find a complete overview of the supported diagnostic information for
various slaves in the section Supported Components and Functional Scope
Basic Procedure
The messages are sent by means of the standard message path ALARM_S/SQ to
CPU Messages on the programming device or to the connected HMI devices.
The components of S7 300 stations, S7 400 stations, and DP slaves are supported
by Report System Error, as long as they support functions such as diagnostic
interrupt, insert/remove-module interrupt, and channel-specific diagnostics.
In the two tables that follow, you will find all the diagnostic blocks of the various
slaves supported by Report System Error
The diagnostic message (also called Norm slave message) is made up of the
diagnostic blocks mentioned above and can be read in the user program via
SFC 13.
In STEP 7 the diagnostics message is displayed via the call of the module state in
the on-line window "HWConfig” (diagnose hardware) in the "DP Slave Diagnostics"
tab card under "Hex display".
You have several possibilities for calling the dialog for the settings:
• In HW Config, select the CPU for which you would like to configure the
reporting of system errors. Then select the menu command Options > Report
System Error.
• If you have already generated blocks for reporting system errors, you can call
up the dialog by double-clicking a generated block (FB, DB).
• In the Properties dialog of the station, select the option for automatic call up
during Save and Compile the configuration.
You get to the option for automatic call up during Save and Compile as follows:
1. In the SIMATIC Manager, select the appropriate station.
2. Select the menu command Edit > Object Properties.
3. Select the Settings tab.
In the dialog box, enter the following, in addition to other things:
• Which FB and which assigned instance DB should be generated
• The CPU behavior on error: You can set whether or not the CPU should switch
to STOP after reporting a system error.
• Generating error OBs: whether or not error OBs that are not yet available
should be generated in the S7 program
• Whether messages should be acknowledgeable
• Whether reference data should be generated
• Whether warnings should always be displayed during the generation of Report
System Error.
• Whether the dialog box should appear when Report System Error is
automatically called after saving and compiling the configuration (see setting
above)
• The appearance of the messages (structure and order of the possible text
parts)
You can find more detailed information in the Help on the called dialog.
In order to generate the required blocks (FB and DB, and, depending on the
setting, OBs that are not yet available), proceed as follows:
• In the Report System Errors dialog box, click the Generate button.
The following blocks are generated:
• Error OBs (if the check box "Generate error OBs" was activated)
• Diagnostic FB (default: FB49)
• Instance DB for the diagnostic FB (default: DB49)
• Optional user FB called by the diagnostic FB
If you activated the check box "Generate error OBs" in the "General" tab of the
"Report System Error" dialog box, the following error OBs will be generated:
• OB81 (power supply error) with a call for the generated diagnostic FB.
• OB82 (diagnostic interrupt OB; only if modules or DP slaves were configured)
with a call for the generated diagnostic FB.
• OB83 (plug/remove interrupt) with a call for the generated diagnostic FB.
• OB84 (CPU hardware fault)
This OB is generated without contents so that the CPU does not switch to
STOP mode when communication errors occur (for example, problems with the
MPI terminating resistor when inserting and removing the MPI cable). Errors
are not evaluated; no message is generated.
• OB85 (program execution error)
The CPU is only prevented from switching to STOP when there is an error
updating the process image (for example, removing the module). This is so
that the diagnostic FB in OB83 can be processed. Any CPU STOP setting after
a Report System Error message takes effect in OB83. With all other OB85
error events, the CPU goes into STOP mode.
• OB86 (failure of an expansion rack, a DP master system, or a distributed I/O
device) with a call for the generated diagnostic FB.
This OB is generated only if the one of the above components was configured.
• The setting CPU Goes into STOP Mode after Executing Diagnostic FB is NOT
effective for OB84 and OB85, because the FB of Report System Error is not
called up in these OBs. In the case of OB85, this setting is noted indirectly by
the FB call in OB83.
The generated FB evaluates the local data of the error OB, reads any additional
diagnostic information of the S7 component that triggered the failure, and
generates the appropriate message automatically.
The FB has the following properties:
• Language of generation RSE (Report System Error) (also applies to the
generated instance DB)
• Know-how protected (also applies to the generated instance DB)
• Delays arriving interrupts during run time
• Calls up the dialog for setting the "Report System Error" function by means of
double-click (also applies to the generated instance DB).
User Block
Because the diagnostics FB is know-how protected, you cannot edit it. However,
the FB provides an interface for the user program so that you can access such
things as the error status or the message number.
The block for evaluating in the user program (can be set in the User Block tab of
the of the dialog) is called in the generated FB with the following parameters:
EV_C : BOOL ; //Message incoming (TRUE) or outgoing (FALSE)
EV_ID : DWORD ; //Generated message number
IO_Flag: BYTE ; //Input module: B#16#54 Output module: B#16#55
logAdr : WORD ; //Logical address
TextListID : WORD ; //ID of the text list (default list = 1)
ErrorNo : WORD ; //Generated error number
Channel_Error : BOOL ;//Channel error (TRUE)
ChannelNo : WORD ; //Channel number
If the user FB does not exist yet, it is created by the SFM with the parameters listed
above.
Overview
Basic Procedure
The step is not required in CFC because you take blocks that have already
been prepared from a library.
2. Assign the variables you want to control and monitor with the required
attributes and logging properties in a dialog box (S7_m_c). In the Operator
Interface dialog box (menu command Edit > Special Object Properties >
Operator Interface), you can change WinCC attributes, such as limit values,
substitute values, and protocol properties, etc.
3. Transfer the configuration data generated with STEP 7 to your display system
(WinCC) by means of the PLC-OS Engineering tool.
Naming Conventions
For the configuration data for WinCC to be saved and transferred, they are stored
under a unique name automatically assigned by STEP 7. The names of the
variables for operator control and monitoring, the CFC charts, and the S7 programs
form part of this name and for this reason are subject to certain conventions:
• The names of the S7 programs in an S7 project must be unique (different
stations may not contain S7 programs with the same name).
• The names of the variables, S7 programs, and CFC charts may not contain
underscores, blanks, or the following special characters: [ ‘ ] [ . ] [ % ] [ - ] [ / ]
[ * ] [ + ].
Overview
Using the procedure described below, you can make function block parameters
suitable for operator control and monitoring and assign the required O, C, and M
attributes to associated instance DBs or shared DBs in your user program.
Requirements
You must have created a STEP 7 project, an S7 program, and a function block.
Basic Procedure
Overview
Independent of the programming language used, you can configure the following
variables using the procedure described below:
• Bit memory
• I/O signals
Requirement
Before you start, the following requirements must be fulfilled:
• You have created a project in the SIMATIC Manager.
• An S7 program with a symbol table must exist in this project.
• The symbol table must be open.
Basic Procedure
Overview
With CFC, you create your user program by selecting blocks that already have
operator control and monitoring capabilities from a library, and placing and linking
them in a chart.
Requirement
You have inserted an S7 program in a STEP 7 project, created a CFC chart, and
placed blocks in it.
Basic Procedure
Note
If you use blocks which you have created yourself and to which you have
assigned the system attribute S7_m_c, you can give these blocks operator control
and monitoring capabilities by activating the "Operator Control and Monitoring"
check box in the "Operator Control and Monitoring" dialog box (menu command
Edit > Special Object Properties > Operator Control and Monitoring).
Overview
Using the transfer program PLC-OS Engineering you transfer the configuration
data for operator control and monitoring generated to the WinCC database.
You have the choice of a number of different transfer options. You can, for
example, select an address and text comparison to ensure that the current WinCC
attributes are transferred.
Requirement
Before you start the transfer, the following requirements must be fulfilled:
• You have installed the setup program PLC-OS connection configuration
(Engineering).
• You have generated the configuration data for operator control and monitoring.
Basic Procedure
To transfer the configuration data for operator control and monitoring to the WinCC
database, proceed as follows:
This type of access enables you to access a programmable logic controller quickly,
for test purposes, for example. You can access all the accessible programmable
modules in the network. Select this method if no project data about the
programmable controllers are available on your programming device.
You open the "Accessible Nodes" window using the menu command PLC >
Display Accessible Nodes. In the "Accessible Nodes" object all the
programmable modules accessible in the network are displayed with their address.
Nodes that cannot be programmed with STEP 7 (such as programming devices or
operator panels) can also be displayed.
Select this method if you have configured the programmable controller in a project
on your programming device/PC. You can open the online window in the SIMATIC
Manager using the menu command View > Online. It displays the project data on
the programmable controller (in contrast to the offline window that displays the
project data on the programming device/PC). The online window shows the data on
the programmable controller both for the S7 program and for the M7 program.
You use this view of the project for functions involving access to the programmable
controller. Certain functions in the "PLC" menu of the SIMATIC Manager can be
activated in the online window but not in the offline window.
There are two types of access as follows:
• Access with Configured Hardware
This means you can only access modules which were configured offline. Which
online modules you can access is determined by the MPI address set when the
programmable module was configured.
• Access without Configured Hardware
The requirement for this is an existing S7 program or M7 program which was
created independently of the hardware (meaning it lies directly beneath the
project). Which online modules you can access is determined here by
specifying the corresponding MPI address in the object properties of the
S7/M7 program.
Access via the online window combines the data on the programmable control
system with the relevant data on the programming device. If, for example, you
open an S7 block beneath a project online, the display is made up as follows:
• Code section of the block from the CPU in the S7 programmable logic
controller, and
• Comments and symbols from the database in the programming device
(provided they exist offline) When you open blocks directly in the connected
CPU without an existing project structure, they are displayed as they are found
in the CPU, which means without symbols and comments.
CPU Remarks
Parameter
Test Can be set in the "Protection" tab.
operation/pr In process operation, test functions such as program status or
ocess monitor/modify variables are restricted so that the set permissible scan cycle
operation time increase is not exceeded. This means, for example, that no call
(not for S7- conditions are allowed in program status and the status display of a
400 or CPU programmed loop is interrupted at the point of return.
318-2) Testing using breakpoints and single-step program execution cannot be
used in process operation.
In test operation, all test functions via programming device/PC even if they
cause considerable increases to the scan cycle time can be used without
restrictions.
Protection Can be set in the "Protection" tab. You can make write or read/write access
level to the CPU dependent on knowing the correct password. The password is
set in this tab.
With this function you can, for example, switch the CPU to RUN again after
correcting an error.
You can change the mode of the CPU using the buttons. Only those buttons are
active that can be selected in the current operating mode.
Proceed as follows:
1. Open your project and select an S7/M7 program, or open the "Accessible
Nodes" window using the menu command PLC > Display Accessible Nodes
and select a node ("MPI=...").
2. Select the menu command PLC > Set Date and Time.
The menu command can be selected only if an S7/M7 program is selected in
the project window (online view) or a node ("MPI=...") is selected in the
"Accessible Nodes" window.
3. In the dialog box displayed you can read the current time and date on the
selected module.
4. If required, you can enter new values in the "Date" and "Time" fields or you can
use the default option to accept the time and date on your programming
device/PC.
Note
If the module does not have a real-time clock, the dialog box shows "00:00:00" for
the time and "00.00.00" for the date.
STOP Mode
Set the operating mode from RUN to STOP before you do the following:
• Download the complete user program or parts of it to the CPU
• Execute a memory reset on the CPU
• Compress the user memory
Saving Downloading
Menu commands File > Save PLC > Download
File > Save As
Function The current status of the block in The current status of the block in
the editor is saved on the hard the editor is only downloaded to
disk of the programming device. the CPU.
Syntax check A syntax check is run. Any errors A syntax check is run. Any errors
are reported in dialog boxes. The are reported in dialog boxes. The
causes of the errors and the error causes of the errors and the error
locations are also shown. You locations are also shown. You
must correct these errors before must correct these errors before
you save or download the block. you save or download the block.
If no errors are found in the If no errors are found in the
syntax, the block is compiled into syntax, the block is compiled into
machine code and either saved machine code and either saved
or downloaded. or downloaded.
The table applies independent of whether you have opened the block online or
offline.
CPU
EPROM RAM
Downloading
the program
to the CPU Parts
relevant to
RAM program
execution
The division of the load memory of a CPU into RAM and EEPROM areas
determines the methods available for downloading your user program or the blocks
in your user program. The following methods are possible for downloading data to
the CPU:
You can overwrite blocks which already exist in the load memory (RAM) or work
memory of the CPU in the S7 programmable logic controller with a new version
(reload them). The existing version is then overwritten.
The procedure for reloading S7 blocks is the same as for downloading. A prompt
simply appears, querying whether you want to overwrite the existing block.
A block stored in the EPROM cannot be deleted but is declared invalid once it is
reloaded. The replacement block is loaded in the RAM. This creates gaps in the
load memory or the work memory. If these gaps eventually mean that no new
blocks can be downloaded, you should compress the memory.
Note
If the power goes down and then returns and the RAM does not have a battery
backup, or following a memory reset of the CPU the "old" blocks become valid
again.
Requirements
For access to EPROM memory cards in the programming device which are
intended for an S7 programmable logic controller, you will require the appropriate
EPROM drivers. For access to EPROM memory cards which are intended for an
M7 programmable control system, the Flash File System must be installed (only
possible on the PG 720, PG 740, and PG 760). EPROM drivers and the Flash File
System are offered as options when you install the STEP 7 Standard package. If
you are using a PC, an external prommer will be required to save to EPROM
memory cards.
You can also install the drivers at a later date. To do this, call up the corresponding
dialog box via Start > Simatic > STEP 7 > Memory Card Parameter Assignment
or via the Control Panel (double-click the "Memory Card Parameter Assignment"
icon).
Tip
Before downloading, use the Station > Check Consistency menu command to
make sure there are no errors in your station configuration. STEP 7 then checks to
see whether downloadable system data can be created from the present
configuration. Any errors found during consistency checking are displayed in a
window.
Procedure
• Select the menu command PLC > Download To Module.
STEP 7 guides you by means of dialog boxes to the result.
The configuration for the complete programmable controller is downloaded to the
CPU. The CPU parameters become active immediately. The parameters for the
other modules are transferred to the modules during startup.
Note
Partial configurations, for example, the configuration of individual racks, cannot be
downloaded to a station. For consistency reasons, STEP 7 always downloads the
whole configuration to the station.
Requirement
Here we shall assume that the entire project was already configured, meaning you
have:
• Configured all stations
• Created all subnets and set their properties
• Configured connections (if required)
• Set the PG/PC interface so that communication between the PG/PC and the
programmable controller is possible via the connected subnet.
• Checked the configuration for consistency
Only when a configuration is free of errors, meaning when all networked modules
in a subnet have unique node addresses and when their actual configuration
matches the network configuration you have created should you download the
configuration via the subnet (PROFIBUS or MPI) to the programmable controllers.
Requirements
All networked modules in a subnet must have unique node addresses and the
actual configuration must match the network configuration you created.
If you connect a new station to a subnet and the preset node address is already
present in the subnet, you should proceed as described under "Downloading for
the First Time."
Note
Only with the option PLC > Download > Connections and Network Gateways
can you download with the participating CPUs in RUN-P mode. For all other
options the CPU must be switched to STOP.
Procedure
1. Connect the programming device to the subnet to which the node you want to
load is connected.
2. Open NetPro.
3. Select the station you want to download or the subnet (for PLC > Download >
Stations on Subnet) in the network view.
4. Select one of the above options for the menu command PLC > Download.
Further Information
Further information on the menu commands related to downloading can be found
in the context-specific help (select the menu command and press F1).
This function supports you when carrying out the following actions:
• Saving information from the programmable controller (for example, for
servicing purposes)
• Fast configuring and editing of a station, if the hardware components are
available before you start configuring.
Fast Configuring
Entering the station configuration is easier if you upload the configuration data from
the programmable controller to your programming device after you have configured
the hardware and restarted the station. This provides you with the station
configuration and the types of the individual modules. Then all you have to do is
specify these modules in more detail (order number) and assign them parameters.
The following information is uploaded to the programming device:
• S7-300: Configuration for the central rack and any expansion racks
• S7-400: Configuration of the central rack with a CPU and signal modules
without expansion racks
• Configuration data for the distributed I/O cannot be uploaded to the
programming device.
This information is uploaded if there is no configuration information on the
programmable controller; for example, if a memory reset has been carried out on
the system. Otherwise, the Upload function provides much better results.
For S7-300 systems without distributed I/O, all you have to do is specify these
modules in more detail (order number) and assign them parameters.
Note
When you upload data (if you do not already have an offline configuration),
STEP 7 cannot determine all the order numbers of the components.
You can enter the "incomplete" order numbers when you configure the hardware
using the menu command Options > Specify Module. In this way, you can
assign parameters to modules that STEP 7 does not recognize (that is, modules
that do not appear in the "Hardware Catalog" window); however, STEP 7 will not
then check whether you are keeping to the parameter rules.
Using the menu command PLC > Upload Station you can upload the current
configuration and all blocks from the programmable controller of your choice to the
programming device.
To do this, STEP 7 creates a new station in the current project under which the
configuration will be saved. You can change the preset name of the new station
(for example, "SIMATIC 300-Station(1)"). The inserted station is displayed both in
the online view and in the offline view.
The menu command can be selected when a project is open. Selecting an object in
the project window or the view (online or offline) has no effect on the menu
command.
You can use this function to make configuring easier.
You can upload S7 blocks from the CPU to the hard disk of the programming
device using the SIMATIC Manager. Uploading blocks to the programming device
is useful in the following situations:
• Making a backup copy of the current user program loaded in the CPU. This
backup can then be downloaded again, for example, following servicing or
following a memory reset of the CPU by maintenance personnel.
• You can upload the user program from the CPU to the programming device
and edit it there, for example, for troubleshooting purposes. In this case you do
not have access to symbols or comments for program documentation.
Therefore we recommend that this procedure is used only for service
purposes.
Note
Time stamp Conflicts when Working Online and Offline
The following procedures lead to time stamp conflicts and should therefore be
avoided.
Time stamp conflicts result when you open a block online if:
• Changes made online were not saved in the offline S7 user program
• Changes made offline were not downloaded to the CPU
Time stamp conflicts result when you open a block offline if:
• An online block with a time stamp conflict is copied to the S7 user program
offline and the block is then opened offline.
Requirement
You have used an MPI cable to connect the programming device (PG) to the
MPI interface of the CPU.
Tips
Upload stations to a newly created, empty project.
Stations that are dependent on other stations in a particular way (I slave on a
DP master station, receiver and sender in a configuration with direct data
exchange/lateral communication link) should always be uploaded together to one
project. Reason: Without the particular "partners" for a station of this type, the
project would remain inconsistent.
Procedure
1. Select the menu command PLC > Upload.
2. The dialog box to open the configuration appears.
3. Select the project in which the configuration will be stored later and confirm
with "OK."
4. In the dialog box which then appears, set the node address, rack number, and
slot in the module from which the configuration should be read (generally
CPU). Confirm with "OK."
You can use the Station > Properties menu command to assign a station name to
this configuration and then store it in the default project (Station > Save menu
command).
Overview
You have the possibility of uploading the real network structure of your project
station by station to your programming device.
Firstly you can upload the whole configuration for a project station by station to the
programming device in the SIMATIC Manager (menu command PLC > Upload).
STEP 7 then creates a new station object in the current project for each station you
want to upload.
Alternatively you can upload a station configuration when you configure the
hardware (menu command PLC > Upload).
Below is a description of how you can upload the whole network configuration
station by station in NetPro.
Requirements
The PG/PC is connected to the same subnet as the stations you want to upload or
the stations are accessible via network gateways. The node addresses and
racks/slots of the modules connected to the subnet are known.
Procedure
1. Connect the programming device to the subnet to which the node you want to
load is connected.
2. Create a new project for the loaded network configuration if necessary.
3. Open NetPro via a project to which you want to save the uploaded network
configuration at a later stage (for example, via a newly created project).
4. Select the menu command PLC > Upload Station.
The menu command can be selected only when a project is open.
5. In the following dialog box, specify the station to be uploaded by giving its node
address and rack/slot.
The "Station" object appears in the network view with all modules that have a
network connection. The subnets to which the station is connected are also
displayed. You can change the name of the station assigned by the system
using the menu command Edit > Object Properties.
The configured connections are also uploaded and are visible when you select
a module that is the end point of connections.
6. You can modify the station configuration or the connections as well and then
load the changes into the station. For connections that were created using
optional packages, the optional package must be installed so that these
connections can be edited and loaded into the station again.
7. Proceed as described above until you have loaded all the required stations.
8. If required, you can save the network configuration in the current project (menu
command Network > Save or Network > Save and Compile).
Occupied memory
Free memory
Procedure
1. Select the S7 program in the "Accessible Nodes" window or the online view of
the project.
2. Select the menu command PLC > Module Information.
3. In the dialog box which then appears, select the "Memory" tab. In this tabbed
page there is a button for compressing the memory if the CPU supports this
function.
Variable tables offer the advantage of being able to store various test
environments. Thus, tests and monitoring can be effortlessly reproduced during
operation or for the purpose of service and maintenance. There is no limit to the
number of variable tables that can be stored.
When testing using variable tables, the following functions are available:
• Monitoring Variables
This function enables you to display on the programming device/PC the current
values of individual variables in a user program or a CPU.
• Modifying Variables
You can use this function to assign fixed values to individual variables of a user
program or a CPU. Modifying values once and immediately is also possible
when testing using program status.
• Enable Peripheral Output and Activate Modify Values
These two functions allow you to assign fixed values to individual I/O outputs of
a CPU in STOP mode.
• Forcing Variables
You can use this function to assign individual variables of a user program or a
CPU with a fixed value which cannot be overwritten by the user program.
You can assign or display the values for the following variables:
• Inputs, outputs, bit memory, timers, and counters
• Contents of data blocks
• I/O (periphery)
You enter the variables you want to display or modify in variable tables.
You can determine when and how often the variables are monitored or assigned
new values by defining a trigger point and trigger frequency.
Before you can monitor or modify variables, you must create a variable table (VAT)
and enter the required variables. To create a variable table, you can choose from
one of the following methods:
In "Monitor/Modify Variables":
• You can use the menu command Table > New to create a new variable table
which is not yet assigned to any S7 or M7 program. You can open existing
tables with Table > Open.
• You can use the corresponding symbols in the toolbar to create or open
variable tables.
Once you have created a variable table, you can save it, print it out, and use it
again and again for monitoring and modifying.
You can copy or move variable tables in block folders of an S7/M7 program.
Note the following when copying or moving variable tables:
• Existing symbols in the symbol table of the target program will be updated.
• When you move a variable table, the corresponding symbols from the symbol
table of the source program will also be moved to the symbol table of the target
program.
• When you delete variable tables from the block folder, the corresponding
symbols from the symbol table of the S7/M7 program will also be deleted.
• If the target program already contains a variable table with the same name, the
next-highest free number will be assigned when you copy the variable table.
• If the target program already contains a variable table with the same name,
you can rename the variable table when copying (as a default a number is
attached to the existing name).
You can use saved variable tables to monitor and modify variables when you test a
program again.
1. Save the variable table using the menu command Table > Save.
2. If the variable table has been created, you must now give the variable table a
name, for example, "ProgramTest_1."
When you save a variable table, all the current settings and the table format are
saved. This means that the settings made under the menu item "Trigger" are
saved.
The following figure shows a variable table with the following visible columns:
Address, Symbol, Display Format, Monitor Value, and Modify Value
Variable Table 1
Table Edit Insert PLC Variable View Options Window Help
(direct)
Syntax Check
When you enter variables in the variable table, a syntax check is carried out at the
end of each line. Any incorrect entries are marked in red. If you position the cursor
in a row marked in red, you can read the cause of the error in the status bar. Notes
on correcting the error can be obtained by pressing F1.
Maximum Size
A maximum of 255 characters per line are permitted in a variable table. A carriage
return into the next row is not possible. A variable table can have up to a maximum
of 1024 rows. This is then its maximum size.
Examples:
Note
• You can enter timers in millisecond steps but the value entered is adapted to
the time frame. The size of the time frame depends on the size of the time
value entered (137 becomes 130 ms; the 7 ms were rounded down).
• The modify values for addresses of the data type WORD, for example, IW1,
are converted to BCD format. Not every bit pattern is a valid BCD number,
however. If the entry cannot be represented as SIMATIC_TIME for an address
of the data type WORD, the application reverts automatically to the default
format (here: HEX, see Select Monitor Format, Default Command (View
Menu)) so that the value entered can be displayed.
Examples:
Note
• If you enter a decimal number for a counter and do not mark the value with
C#, this value is automatically converted to BCD format (137 becomes
C#137).
• The modify values for addresses of the data type WORD, for example, IW1,
are converted to BCD format. Not every bit pattern is a valid BCD number,
however. If the entry cannot be represented as COUNTER for an address of
the data type WORD, the application reverts automatically to the default
format (here: HEX, see Select Monitor Format, Default Command (View
Menu)) so that the value entered can be displayed.
18.5 Examples
Note:
The entry "DB0. .." is not permitted because it is already used internally.
Open a variable table and call up the "Insert Range of Variables" dialog box with
the menu command Insert > Range of Variables.
For the dialog box entries the following lines for bit memory are inserted in the
variable table:
• From address: M 3.0
• Number: 10
• Display format: BIN
Note that in this example the designation in the "Address" column changes after
the eighth entry.
Bit Addresses
Byte Addresses
Word Addresses
Timers
Modifying a timer affects only the value, not the state. This means that the timer T1
can be modified to the value 0, without the result of logic operation for A T1 being
changed.
The strings 5t, s5time can be written in either upper or lower case.
Counters
Modifying a counter only affects the value, not the state. This means that Counter
C1 can be modified to the value 0 without the result of logic operation for A C1
being changed.
In order to be able to monitor or modify the variables you entered in your current
variable table (VAT), you must establish a connection to the appropriate CPU. It is
possible to link each variable table with a different CPU.
ON
Connection to configured CPU
Note
If you created an unnamed variable table with the menu command Table > New,
you can establish a connection to the last configured CPU configured if it is
defined.
You can display on the programming device the current values of individual
variables in a user program at a specific point during program processing (trigger
point) in order to monitor them.
When you select a trigger point you determine the point in time at which the
monitor values of variables will be displayed.
You can set the trigger point and a trigger frequency using the menu command
Variable > Trigger.
Trigger Point
The following figure shows the position of the trigger points.
OB1
Trigger point "Transition
from RUN to STOP"
To display the modified value in the "Status Value" column, you should set the
trigger point for monitoring to ”Start of cycle" and the trigger point for modifying to
”End of cycle".
Trigger Immediately
You can update the values of selected variables using the menu command
Variable > Update Monitor Values. This command is taken to mean ”trigger
immediately" and is executed as quickly as possible without reference to any point
in the user program. These functions are mainly used for monitoring and modifying
in STOP mode.
Trigger Frequency
The following table shows the effect that the trigger frequency has on the
monitoring of variables:
Danger
! Changing the variable values while a process is running can lead to serious
damage to property or personnel if errors occur in the function or in the program.
Make sure that no dangerous situations can occur before you execute the ”Modify"
function.
You can assign fixed values to individual variables of a user program (once or
every cycle) at a specific point during program processing (trigger point).
When you select a trigger point you determine the point in time at which the modify
values are assigned to the variables.
You can set the trigger point and a trigger frequency using the menu command
Variable > Trigger.
Trigger Point
The following figure shows the position of the trigger points.
OB1
To display the modified value in the "Status Value" column, you should set the
trigger point for monitoring to ”Start of cycle" and the trigger point for modifying to
”End of cycle".
The following applies to trigger points when modifying variables:
• If you set ”Once" as the trigger frequency, a message appears if the selected
variables cannot be modified.
• With the trigger frequency ”Every cycle," no message appears.
Trigger Immediately
You can modify the values of selected variables using the menu command
Variable > Activate Modify Values. This command is taken to mean ”trigger
immediately" and is executed as quickly as possible without reference to any point
in the user program. This function is used mainly for modifying in STOP mode.
Trigger Frequency
The following table shows the effect that the trigger condition set has on the
modifying of variables:
You can assign fixed values to individual variables of a user program so that they
cannot be changed or overwritten even by the user program executing in the CPU.
The requirement for this is that the CPU supports this function (for example, the
S7-400 CPUs). By assigning fixed values to variables you can set specific
situations for your user program and use this to test the programmed functions.
The name of the current online connection is shown in the title bar.
The data and time the force job was read from the CPU are shown in the status
bar.
If no force job is active, the window is empty.
The different methods of displaying variables in the "Force Values" window have
the following significance:
Display Meaning
Bold: Variables that are already assigned a fixed value in the CPU.
Normal: Variables that are being edited.
Grayed out: Variables of a module that is not present/inserted in the rack
or
Variables with an address error; an error message is displayed.
Using the Force Job from the CPU or Setting Up a New Force Job
If the "Force Values" window is open and active, another message is displayed:
• If you confirm it, the changes in the window are overwritten with the force job
existing on the CPU. You can restore the previous window contents with the
menu command Edit > Undo.
• If you cancel it, the current contents of the window are retained.
You can then save the contents of the "Force Values" window as a variable
table using the menu command Table > Save As or select the menu command
Variable > Force: this writes the current contents of the window to the CPU as
the new force job.
Monitoring and modifying variables is only possible in the variable table and not in
the "Force Values" window.
Caution
! • Before you start the Force function you should check that nobody is executing this
function on the same CPU at the same time.
• A Force job can only be deleted or terminated with the menu command Variable >
Stop Forcing. Closing the force values window or exiting the ”Monitoring and
Modifying Variables" application does not delete the force job.
• Forcing cannot be undone (for example, with Edit > Undo).
• Read the information on the Differences between Forcing and Modifying Variables.
• If a CPU does not support the Force function, all menu commands in the Variable
menu linked with forcing are deactivated.
If the output disable is deactivated with the menu command Variable > Enable Peripheral
Output, all forced output modules output their force value.
The following table summarizes the differences between forcing and modifying:
Note
• With "Enable Peripheral Outputs," the force values for forced peripheral
outputs become effective on the corresponding output modules; the modify
values for peripheral outputs, however, do not.
• With forcing, the variable always has the forced value. This value is read during
each read access to the user program. All forms of write access are ineffective.
• With permanent modifying, read access to the program is effective and
remains so until the next trigger point.
Warning
! Testing a program while a process is running can lead to serious damage to
property or persons if errors occur in the function or in the program.
Ensure that no dangerous situations can occur before you execute this function.
Requirements
To display the program status, the following requirements must be fulfilled:
• You must have saved the block without errors and then downloaded it to the
CPU.
• The CPU must be in operation and the user program running.
• The block must be open online.
To set breakpoints, and to execute the program in single-step mode, test operation
mode must be set (see menu command Debug > Operation). These test functions
are not possible in process operation mode.
Status of Elements
• The status of a contact is:
- Fulfilled if the address has the value "1,"
- Not fulfilled if the address has the value "0,"
- Unknown if the value of the address is unknown.
• The status of elements with enable output (ENO) corresponds to the status of
a contact with the value of the ENO output as the address.
• The status of elements with a Q output corresponds to the status of a contact
with the value of the address.
• The status for CALLs is fulfilled if the BR bit is set following the call.
• The status of a jump instruction is fulfilled if the jump is executed, meaning if
the jump condition is fulfilled.
• Elements with enable output (ENO) are shown in black if the enable output is
not connected.
Status of Lines
• Lines are black if they are not run through or if their status is unknown.
• The status of lines that start at the power rail is always fulfilled ("1").
• The status of lines at the start of parallel branches is always fulfilled ("1").
• The status of the line following an element is fulfilled if both the status of the
line before the element and the status of the element are fulfilled.
• The status of the line following NOT is fulfilled if the status of the line before
NOT is not fulfilled (and vice versa).
• The status of the line after an intersection of a number of lines is fulfilled if:
- The status of at least one line before the intersection is fulfilled.
- The status of the line before the branch is fulfilled.
Status of Parameters
• The values of parameters in bold type are current.
• The values of parameters in thin type result from a previous cycle; the program
section was not processed in the current scan cycle.
Status Word
RLO OR OV CC1
Requirements
• The test operation mode must be set. Testing in single-step mode is not
possible in process operation mode (see menu command Debug >
Operation).
• Testing in single-step mode is possible only in Statement List. For blocks in
Ladder Logic or Function Block Diagram you must change the view using the
menu command View > STL.
• The block must not be protected.
• The block must be open online.
• The opened block must not be changed in the Editor.
Number of Breakpoints
The number of breakpoints is variable and depends on the following:
• The number of breakpoints already set
• The number of variable statuses running
• The number of program statuses running
Refer to your programmable controller documentation to find out whether it
supports testing in single-step mode.
You will find the menu commands you can use to set, activate, or delete
breakpoints in the "Debug" menu. You can also select these menu commands
using icons in the breakpoint bar. Display the breakpoint bar using the menu
command View > Breakpoint Bar.
Danger
Risk of dangerous plant status in HOLD mode.
Option Meaning
Call path Here you can specify the call path in which the block to be tested must be
called to activate status recording. You can enter the last three call levels
before reaching the test block.
With address De-activate if the call path condition should be deactivated.
Open data blocks Here the call environment is specified by naming one or two data blocks.
The status is recorded if the block to be tested was called with the specified
data blocks.
Project S7 Program
Station
Call the function
"Diagnose Hardware"
1 PS 307 5A
3 AI-300
Symbol Meaning
Preset-actual mismatch in the
configuration (module exists/type
monitoring mismatch): the configured
module is not available or a different
module type is inserted
Fault: module has a fault.
Possible causes: diagnostic interrupt,
I/O access error, or error LED detected
Diagnosis not possible because no
online connection exists or the CPU
cannot supply diagnostic information
for the module (for example, power
supply, or submodule).
Symbol Mode
STARTUP
STOP
STOP
triggered by STOP mode on another
CPU in multicomputing operation
RUN
HOLD
Symbol Mode
Variables are being forced on this
module, meaning variables in the user
program for the module are assigned
fixed values that cannot be changed
by the program.
The symbol for forcing can also
appear in combination with other
symbols (here with the symbol for
RUN mode).
The quick view offers you a quick way of using "Diagnosing Hardware" with less
information than the more detailed displays in the diagnostic view of HW Config.
The quick view is displayed as default when the "Diagnose Hardware" function is
called.
Using this method you can open the "Module Information" dialog box for all
modules in the rack. The diagnostic view (configuration table) shows the actual
structure of a station at the level of the racks and DP stations with their modules.
Note
• If the configuration table is already open offline, you can also get the online
view of the configuration table using the menu command Station > Open
Online.
• Depending on the diagnostics capability of the module, a varying number of
tabs are displayed in the ”Module Information" dialog box.
• In the "Accessible Nodes" window, only the modules with their own node
address (MPI or PROFIBUS address) are ever visible.
Note
In the "Accessible Nodes" window, only the modules with their own node address
(MPI or PROFIBUS address) are ever visible.
3 AI-300
In order to display the status of a module with its own node address, you require
an online connection to the programmable controller. You establish this connection
via the online view of a project or via the "Accessible Nodes" window.
The module information functions can each be found in the various tabs within the
"Module Information" dialog box. When displayed in an active situation, only those
tabs relevant to the selected module are displayed.
Scan Cycle Time Duration of the longest, shortest, and To keep a check on the configured
last scan cycle of the selected CPU minimum cycle time, and the
or M7 function module maximum and current cycle times
Time System Current time, operating hours, and To display and set the time and date
information about synchronizing of a module and to check the time
clocks (synchronization intervals) synchronization
Performance Data Address areas and the available Before and during the creation of a
blocks for the selected module user program to check whether the
(CPU/FM) CPU fulfils the requirements for
executing a user program; for
example, load memory size or size of
the process image
Blocks Display of all block types available in To check which standard blocks your
(can be opened from the scope of supply of the selected user program can contain or call to
the ”Performance module List of OBs, SFBs, and SFCs be able to run on the selected CPU.
Data" tab) you can use for this module
Communication Transmission rates, the overview of To determine how many and which
communication connections, the CPU or M7 FM connections are
communication load, and the possible and how many are in use
maximum message frame size on the
communication bus of the selected
module
The scope of information that can be evaluated and displayed is dependent on:
• The module selected, and
• From which view you call the module information
A full scope of information is available when called from the online view of the
configuration tables or from the project window.
A limited scope of information is available when called from the "Accessible
Nodes" window.
Depending on the scope of the information, the modules are divided into the
categories "with system diagnostic capability," "with diagnostic capability," or
"without diagnostic capability." The following figure shows these categories:
Diagnostic buffer and SZL of the Modules with system diagnostics capability
module
• Modules with system diagnostic capability are, for example, the modules FM
351 and FM 354
• Modules with diagnostic capability are most analog signal modules.
• Modules without diagnostic capability are most digital signal modules.
Tabs Displayed
The table shows which property tabs are present in the ”Module Information" dialog
box for each module type.
In addition to the information in the tabbed property sheets, the operating mode is
displayed for modules with an operating mode. When you open the dialog box from
the configuration tables online, the status of the module from the viewpoint of the
CPU is displayed (for example, OK, fault, module not available).
To determine why the CPU has gone into "STOP" mode, proceed as follows:
1. Select the CPU that has gone into STOP.
2. Select the menu command PLC > Module Information.
3. Select the "Diagnostic Buffer" tab.
4. You can determine the cause of the STOP from the last entries in the
diagnostic buffer.
By evaluating the diagnostic buffer and the stack contents you can determine the
cause of the fault in the processing of the user program.
If, for example, the CPU has gone into STOP as a result of a programming error or
the STOP command, the "Stacks" tab in the module information displays the block
stack. You can display the contents of the other stacks using the ”I Stack", ”L
Stack", and ”Nesting Stack" buttons. The stack contents give you information on
which instruction in which block led to the CPU going into STOP.
B Stack Contents
The B stack, or block stack, lists all the blocks that were called before the change
to STOP mode and which were not completely processed.
I Stack Contents
When you click the ”I Stack" button, the data at the interrupt location are displayed.
The I stack, or interrupt stack, contains the data or the states which were valid at
the time of the interrupt, for example:
• Accumulator contents and register contents
• Open data blocks and their size
• Content of the status word
• Priority class (nesting level)
• Interrupted block
• Block in which program processing continues after the interrupt
L Stack Contents
For every block listed in the B stack, you can display the corresponding local data
by selecting the block and clicking the ”L Stack" button.
The L stack, or local data stack, contains the local data values of the blocks the
user program was working with at the time of the interrupt.
In-depth knowledge of the system is required to interpret and evaluate the local
data displayed. The first part of the data displayed corresponds to the temporary
variables for the block.
The "Scan Cycle Time" tab in the module information gives information about the
scan cycle times of the user program.
If the duration of the longest cycle time is close to the configured maximum scan
cycle time, there is a danger that fluctuations in the cycle time might cause a time
error. This can be avoided if you extend the maximum cycle time (watchdog time)
of the user program.
If the cycle length is less than the configured minimum scan time, the cycle is
automatically extended by the CPU/FM to the configured minimum cycle time. In
the case of a CPU, the background OB (OB90) is processed during this extended
time (if it has been downloaded).
The following figure shows the flow of diagnostic information in SIMATIC S7.
CPU Modules
Diagnostic
System status list interrupt
Diagnostic
buffer
STEP 7
SFCs
User program
The system status list (SSL) describes the current status of the programmable logic
controller. It provides an overview of the configuration, the current parameter
assignment, the current statuses and sequences on the CPU, and the modules
belonging to it.
You can only read the data in the system status list but not modify them. It is a
virtual list that is only created on request.
The information that you can display using the system status list can be divided
into four areas.
System data
Diagnostic buffer
Topic Information
Module identification Order number, type ID, and version of the module
CPU characteristics Time system, system behavior (for example,.
multicomputing) and language description of the
CPU
Memory areas Memory configuration of the module (size of the
work memory).
System areas System memory of the module (for example, number
of memory bits, timers, counters, memory type).
Block types Which blocks (OB, DB, SDB, FC, FB) exist on the
module, the maximum number of blocks of one type,
and the maximum size of a block type
Assignment of interrupts and Assignment of interrupts/errors to OBs
errors
Interrupt status Current status of interrupt processing/interrupts
generated
Status of the priority classes Which OB is being executed, which priority class is
disabled due to the parameter setting
Operating mode and mode Which operating modes are possible, the last
transition operating mode change, the current operating mode
Topic Information
Communication status data All the communication functions currently set in the
system
Diagnostic modules The modules with diagnostics capability logged on
at the CPU
Start information list of the OB Start information about the OBs of the CPU
Start event list Start events and priority classes of the OBs
Module status information Status information about all assigned modules that
are plugged in, faulty, or generate hardware
interrupts
Topic Information
Module diagnostic information Module start address, internal/external faults,
channel faults, parameter errors (4 bytes)
Module diagnostic data All the diagnostic data of a particular module
You can also extend the standard system diagnostics of SIMATIC S7 by using the
system function SFC 52 WRUSMSG to:
• Enter your own diagnostic information in the diagnostic buffer (for example,
information about the execution of the user program).
• Send user-defined diagnostic messages to logged on stations (monitoring
devices such as a PG, OP or TD).
System diagnostics detect, evaluate, and report errors that occur within a
programmable controller. For this purpose, every CPU and every module with
system diagnostics capability (for example, FM 354) has a diagnostic buffer in
which detailed information on all diagnostic events is entered in the order they
occurred.
Diagnostic Events
The following entries are displayed as diagnostic events, for example:
• Internal and external faults on a module
• System errors in the CPU
• Operating mode changes (for example, from RUN to STOP)
• Errors in the user program
• Inserting/removing modules
• User messages entered with the system function SFC52
The content of the diagnostic buffer is retained following a memory reset. Using the
diagnostic buffer, errors in the system can still be analyzed at a later time to find
the cause of a STOP or to trace back and categorize the occurrence of individual
diagnostic events
Displaying Faults
Internal and external module faults are displayed on the front panels of the module.
The LED displays and their evaluation are described in the S7 hardware manuals.
With the S7-300, internal and external faults are displayed together as a group
error.
The CPU recognizes system errors and errors in the user program and enters
diagnostic messages in the system status list and the diagnostic buffer. These
diagnostic messages can be read out on the programming device.
Signal and function modules with diagnostic capability detect internal and external
module errors and generate a diagnostic interrupt to which you can react using an
interrupt OB.
Error Error OB
I/O redundancy error OB70
CPU redundancy error OB72
Communication Redundancy Error OB 73
Time error OB80
Power supply error OB81
Diagnostic interrupt OB82
Insert/remove module interrupt OB83
CPU hardware fault OB84
Priority class error OB85
Rack failure or failure of a station in the OB86
distributed I/O
Communication error OB87
Programming error OB121
I/O access error OB122
If the appropriate OB is not available, the CPU goes into STOP mode. Otherwise, it
is possible to store instructions in the OB as to how it should react to this error
situation. This means the effects of an error can be reduced or eradicated.
Basic Procedure
Creating and Opening the OB
1. Display the module information for your CPU.
2. Select the "Performance Data" tab.
3. Decide on the basis of the list displayed whether the OB you want to program
is permitted for this CPU.
4. Insert the OB in the "Blocks" folder of your program and open the OB.
5. Enter the program for handling the error.
6. Download the OB to the programmable controller.
Using the RET_VAL output parameter (return value), a system function indicates
whether or not the CPU was able to execute the SFC function correctly
Processing of the SFC by the CPU Return Value Sign of the Integer
Error occurred Less than ”0" Negative (sign bit is "1")
No error Greater than or Positive (sign bit is "0")
equal to ”0"
Detectable Errors
The system program can detect the following errors:
• CPU functioning incorrectly
• Error in the system program execution
• Errors in the user program
• Error in the I/Os
Depending on the type of error, the CPU is set to STOP mode or an error OB is
called.
Programming Reactions
You can design programs to react to the various types of errors and to determine
the way in which the CPU reacts. The program for a particular error can then be
saved in an error OB. If the error OB is called, the program is executed.
An error occurs...
Error OBs
A distinction is made between synchronous and asynchronous errors as follows:
• Synchronous errors can be assigned to an MC7 instruction (for example, load
instruction for a signal module which has been removed).
• Asynchronous errors can be assigned to a priority class or to the entire
programmable logic controller (for example, cycle time exceeded).
The following table shows what types of errors can occur. Refer to your
"S7-300 Programmable Controller, Hardware and Installation Manual" or the
"S7-400, M7-400 Programmable Controllers, Hardware and Installation Manual"
for information as to whether your CPU provides the specified OBs.
21 Battery exhausted
Operating Program 1
(CPU)
system execution
22 No backup voltage
(CPU)
23 24 V power supply failure
1
(CPU)
31 Battery exhausted
1
(Expansion unit)
32 No backup voltage
1
(Expansion unit)
33 24V power supply failure
1
(Expansion unit)
1
Not with the S7-300.
You can write a program that evaluates the event code triggered by the OB81 call.
You can also write a program that brings about a reaction, such as activating an
output connected to a lamp on the operator station.
AWL Description
L B#16#21 // Compare event code "battery exhausted"
//(B#16#21) with
L #OB81_FLT_ID // the error code for OB81.
==I // If the same (battery is exhausted),
// jump to Berr.
JC Berr
L B#16#22 // Compare event code "battery failure"
//(b#16#22) with
==I // the error code for OB81.
JC BF // If the same, jump to Berr.
BEU // No message about battery failure
You can find detailed information on OBs, SFBs, and SFCs, as well as an
explanation of event IDs, in the corresponding Help on Blocks.
OB1
L PIB0
T IB0
OB 122
SFC44
RPL_VAL
In this example, the substitute value in the following figure is entered in the
program so that the program can continue to operate with feasible values.
Substitute value: 0 0 0 1 0 0 1 0
Start_Sw I 0.0
Stop_Sw I 0.1
Stand_Eval I 0.3
Full_Sw I 0.4
The following sample program could be written in OB122. The following table
shows the temporary variables that must be declared, in this case, in the variable
declaration table of OB122.
STL Description
L B#16#2942 Compare the event code of OB122 with the event code
L (B#16#2942) for the acknowledgement of a time error
#OB122SWFLT when reading the I/O. If the same, jump to ”Aerr".
==I Compare the event code of OB122 with the event code
(B#16#2943) for an addressing error (writing to a module
JC Aerr
that does not exist). If not the same, jump to ”Stop."
L B#16#2943
Label ”Aerr": transfers DW#16#2912 (binary 10010) to
<> I SFC44 (REPL_VAL). SFC44 loads this value in
JC Stop accumulator 1 (and substitutes the value that triggered
the OB122 call). The SFC error code is saved in #Error.
Aerr: CALL ”REPL_VAL"
Compare #Error with 0 (if the same, no error occurred
VAL : = DW#16#2912 when executing OB122). End the block if no error
RETVAL : = #Error occurred.
L #Error "Stop" label: calls SFC46 ”STP" and changes the CPU to
L 0 STOP mode.
==I
BEC
Description
The operating system of a H CPU calls OB70 if a loss of redundancy occurs on the
PROFIBUS DP (for example, if there is a bus failure on the active DP master or an
error in the DP slave interface module) or if the active DP master changes from
DP slaves with switched I/Os.
Programming OB70
You must create OB70 as an object in your S7 program using STEP 7. Write the
program to be executed in OB70 in the generated block and download it to the
CPU as part of your user program.
You can use OB70, for example, for the following purposes:
• To evaluate the start information of OB70 and determine which event triggered
the loss of I/O redundancy.
• To determine the status of your system using SFC51 RDSYSST
(SZLID=B#16#71).
The CPU does not change to STOP mode if an I/O redundancy error occurs and
OB70 is not programmed.
If OB70 is downloaded and the H system is not in redundant mode, OB70 is
processed in both CPUs. The H system remains in redundant mode.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the H CPU calls OB72 if one of the following events
occurs:
• Loss of redundancy on the CPUs
• Comparison error (for example, RAM, PIQ)
• Standby-master switchover
• Synchronization error
• Error in a SYNC submodule
• Update process aborted
• OB72 is executed by all CPUs which are in RUN mode or STARTUP mode
after an accompanying start event.
Programming OB72
You must create OB72 as an object in your S7 program using STEP 7. Write the
program to be executed in OB72 in the generated block and download it to the
CPU as part of your user program.
You can use OB72, for example, for the following purposes:
• To evaluate the start information of OB72 and determine which event triggered
the loss of CPU redundancy.
• To determine the status of your system using SFC51 RDSYSST
(SZLID=B#16#71).
• To react to the loss of CPU redundancy specifically for the plant.
The CPU does not change to STOP mode if a CPU redundancy error occurs and
OB72 is not programmed.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the H CPU calls the OB73 at the first occurrence of a loss
of redundancy in a redundant S7 connection. (Redundant S7 connections exist
exclusively in S7 communication; see "S7-400 H Programmable Controller
Redundant Systems".) With a loss of redundancy of additional redundant
S7-connections, OB73 does not start again.
OB73 does not restart until you have restored the redundancy to all of the
S7 connections that were redundant.
The CPU does not change to STOP mode if a corresponding start event occurs
and OB73 is not programmed.
Programming OB73
You must create OB73 as an object in your S7 program using STEP 7. Write the
program to be executed in OB73 in the generated block and download it to the
CPU as part of your user program.
You can use OB73 for purposes such as the following:
• To evaluate the start information of OB73 and determine which event triggered
the loss of I/O redundancy.
• To determine the status of your system using SFC51 RDSYSST
(SZL_ID=B#16#71).
The CPU does not change to STOP mode if a communication redundancy error
occurs and OB73 is not programmed.
Description
The operating system of the CPU calls OB80 when a time error occurs. Time errors
include the following, for example:
• Maximum cycle time exceeded
• Time-of-day interrupts skipped by moving the time forward
• Delay too great when processing a priority class
Programming OB80
You must create OB80 as an object in your S7 program using STEP 7. Write the
program to be executed in OB80 in the generated block and download it to the
CPU as part of your user program.
You can use OB80, for example, for the following purposes:
• To evaluate the start information of OB80 and to determine which time-of-day
interrupts were skipped.
• By including SFC29 CANTINT, you can deactivate the skipped time-of-day
interrupt so that it is not executed and only time-of-day interrupts relative to the
new time will be executed.
If you do not deactivate skipped time-of-day interrupts in OB80, the first skipped
time-of-day interrupt is executed, all others are ignored.
If you do not program OB80, the CPU changes to STOP mode when a time error is
detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB81 if one of the following fails in a CPU
or an expansion unit
• The 24-V voltage supply
• A battery
• The complete backup
This OB is also called when the problem has been eliminated (the OB is called
when an event comes and goes).
Programming OB81
You must create OB81 as an object in your S7 program using STEP 7. Write the
program to be executed in OB81 in the generated block and download it to the
CPU as part of your user program.
You can, for example, use OB81 for the following purposes:
• To evaluate the start information of OB81 and determine which power supply
error has occurred.
• To find out the number of the rack with the defective power supply.
• To activate a lamp on an operator station to indicate that maintenance
personnel should replace a battery.
If you do not program OB81, the CPU does not change to STOP mode if a power
supply error is detected, in contrast to all other asynchronous error OBs. The error
is, however, entered in the diagnostic buffer and the corresponding LED on the
front panel indicates the error.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB82 when a module with diagnostics
capability on which you have enabled the diagnostic interrupt detects an error and
when the error is eliminated (the OB is called when the event comes and goes).
Programming OB82
You must create OB82 as an object in your S7 program using STEP 7. Write the
program to be executed in OB82 in the generated block and download it to the
CPU as part of your user program.
You can, for example, use OB82 for the following purposes:
• To evaluate the start information of OB82.
• To obtain exact diagnostic information about the error that has occurred.
When a diagnostic interrupt is triggered, the module on which the problem has
occurred automatically enters 4 bytes of diagnostic data and their start address in
the start information of the diagnostic interrupt OB and in the diagnostic buffer. This
provides you with information about when an error occurred and on which module.
With a suitable program in OB82, you can evaluate further diagnostic data for the
module (which channel the error occurred on, which error has occurred). Using
SFC51 RDSYSST, you can read out the module diagnostic data and enter this
information in the diagnostic buffer with SFC52 WRUSRMSG. You can also send a
user-defined diagnostic message to a monitoring device.
If you do not program OB82, the CPU changes to STOP mode when a diagnostic
interrupt is triggered.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
S7-400 CPUs monitor the presence of modules in the central rack and expansion
racks at intervals of approximately 1 second.
After the power supply is turned on, the CPU checks whether all the modules listed
in the configuration table created with STEP 7 are actually inserted. If all the
modules are present, the actual configuration is saved and is used as a reference
value for cyclic monitoring of the modules. In each scan cycle, the newly detected
actual configuration is compared with the previous actual configuration. If there are
discrepancies between the configurations, an insert/remove module interrupt is
signaled and an entry is made in the diagnostic buffer and the system status list. In
RUN mode, the insert/remove module interrupt OB is started.
Note
Power supply modules, CPUs, and IMs must not be removed in RUN mode.
Between removing and inserting a module, at least two seconds must be allowed to pass
so that the CPU can detect that a module has been removed or inserted.
Programming OB83
You must create OB83 as an object in your S7 program using STEP 7. Write the
program to be executed in OB83 in the generated block and download it to the
CPU as part of your user program.
You can use OB83, for example, for the following purposes:
• To evaluate the start information of OB83.
• By including system functions SFC55 to 59, to assign parameters to a newly
inserted module.
If you do not program OB83, the CPU changes from RUN to STOP when an
insert/remove module interrupt occurs.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB84 when an error is detected on the
interface to the MPI network, to the communication bus, or to the network card for
the distributed I/Os; for example, if an incorrect signal level is detected on the line.
The OB is also called when the error is eliminated (the OB is called when the event
comes and goes).
Programming OB84
You must create OB84 as an object in your S7 program using STEP 7. Write the
program to be executed in OB84 in the generated block and download it to the
CPU as part of your user program.
You can use OB84, for example, for the following purposes:
• To evaluate the start information of OB84.
• By including system function SFC52 WRUSMSG to send a message to the
diagnostic buffer.
If you do not program OB84, the CPU changes to STOP mode when a CPU
hardware fault is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB85:
• When a start event for an interrupt OB exists but the OB cannot be executed
because it has not been downloaded to the CPU.
• When an error occurs accessing the instance data block of a system function
block.
• When an error occurs updating the process image table (module does not exist
or defective).
Programming OB85
You must create OB85 as an object in your S7 program using STEP 7. Write the
program to be executed in OB85 in the generated block and download it to the
CPU as part of your user program.
You can use OB85, for example, for the following purposes:
• To evaluate the start information of OB85 and determine which module is
defective or not inserted (the module start address is specified).
• By including SFC49 LGCGADR to find out the slot of the module involved.
If you do not program OB85, the CPU changes to STOP mode when a priority
class error is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB86 when a rack failure is detected; for
example:
• Rack failure (missing or defective IM or break on the connecting cable)
• Distributed power failure on a rack
• Failure of a DP slave in a master system of the SINEC L2-DP bus system
The OB is also called when the error is eliminated (the OB is called when the event
comes and goes).
Programming OB86
You must create OB86 as an object in your S7 program using STEP 7. Write the
program to be executed in OB86 in the generated block and download it to the
CPU as part of your user program.
You can use OB86, for example, for the following purposes:
• To evaluate the start information of OB86 and determine which rack is
defective or missing.
• To enter a message in the diagnostic buffer with system function SFC 52
WRUSMSG and to send the message to a monitoring device.
If you do not program OB86, the CPU changes to STOP mode when a rack failure
is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB87 when a communication error occurs
in data exchange using communication function blocks or in global data
communication, for example:
• When receiving global data, an incorrect frame ID was detected
• The data block for the status information of the global data does not exist or is
too short.
Programming OB87
You must create OB87 as an object in your S7 program using STEP 7. Write the
program to be executed in OB87 in the generated block and download it to the
CPU as part of your user program.
You can use OB87, for example, for the following purposes:
• To evaluate the start information of OB87.
• To create a data block if the data block for the status information of global data
communication is missing.
If you do not program OB87, the CPU changes to STOP mode when a
communication error is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB121 when a programming error occurs,
for example:
• Addressed timers do not exist.
• A called block is not loaded.
Programming OB121
You must create OB121 as an object in your S7 program using STEP 7. Write the
program to be executed in OB121 in the generated block and download it to the
CPU as part of your user program.
You can use OB121, for example, for the following purposes:
• To evaluate the start information of OB121.
• To enter the cause of an error in a message data block.
If you do not program OB121, the CPU changes to STOP mode when a
programming error is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Description
The operating system of the CPU calls OB122 when a STEP 7 instruction
accesses an input or output of a signal module to which no module was assigned
at the last warm restart, for example:
• Errors with direct I/O access (module defective or missing)
• Access to an I/O address that is not known to the CPU.
Programming OB122
You must create OB122 as an object in your S7 program using STEP 7. Write the
program to be executed in OB122 in the generated block and download it to the
CPU as part of your user program.
You can use OB122, for example, for the following purposes:
• To evaluate the start information of OB122
• To call the system function SFC 44 and supply a substitute value for an input
module so that program execution can continue with a meaningful, process-
dependent value.
If you do not program OB122, the CPU changes to STOP mode when an I/O
access error is detected.
You can find detailed information on OBs, SFBs, and SFCs in the corresponding
Help on Blocks.
Once you have finished creating the program for your automation task, you can
print out all the important data for project documentation purposes using the print
functions integrated in STEP 7.
The following additional functions are available for printing print objects:
Step-for-step instructions for printing the individual print objects can be found
under:
How to Print .
Print Preview
You can use the "Print Preview" function to display the page layout of the
document to be printed.
If the document consists of several pages, two periods appear after the page
number in the bottom right corner of the page. The last page does not have these
periods, indicating no more pages are to follow.
Note
The print format of the finished document is not displayed in the print preview.
Note
If you require help on the "Page Setup" dialog box, click the "Help" button or press
F1 while the cursor is positioned on the dialog box.
Print Setup
With the "Print Setup" function, you can select a printer and set the paper format
(portrait or landscape). The settings available for this function depend on the type
of print driver used.
In the "Print Object List" dialog box, in addition to the object list you can also print
the object tree by selecting the option "Tree window."
If you select the option "All" under "Print range," the whole tree structure is printed.
If you select the option button "Selection," the tree structure from the selected
object downwards is printed.
Note
The settings made in the dialog box apply only to printing the list or tree and not
for printing the contents of the objects; the settings in the relevant applications are
used for this.
You can store individual projects or libraries in compressed form in an archive file.
This compressed storage procedure is possible on a hard disk or on a portable
data medium (such as a floppy disk).
Archive Programs
The archive function provides you with an interface for calling the archive program
of your choice. The archive programs ARJ and PKZIP 2.50 are included as a part
of the STEP 7 package. You will require the following versions if you use one of the
archive programs below (or a newer version):
• ARJ from version 2.4.1a
• PKZIP from version 2.04g
• LHARC from version 2.13
• WinZip from version 6.0
• JAR from version 1.02
Save As
With this function you create a copy of the project under another name.
You can use this function:
• To create backup copies
• To duplicate an existing project in order to adapt it for other purposes.
To use the fastest method of creating a copy, select the "Save As" option without
rearranging in the dialog box. The whole file structure from the project directory
down is copied without a check and saved under another name.
There must be sufficient space on the data medium to store the backup copy. Do
not attempt to save projects to diskette as there will not generally be sufficient
space available. To transport project data on diskette use the "Archive" function.
Saving with rearranging takes longer, but a message is displayed if an object
cannot be copied and saved. Causes for this may be a missing optional package or
defective data for an object.
Archive
You can store individual projects or libraries in compressed form in an archive file.
This compressed storage procedure is possible on a hard disk or on a portable
data medium (such as a floppy disk).
Only transport projects on diskette in the form of archive files. If the project is too
large, select an archive program with which disk-crossing archives can be created.
Projects or libraries which were compressed into an archive file cannot be edited. If
you want to edit them again you must unpack the data which means retrieving the
project or library.
You archive/retrieve your project or library using the menu command File >
Archive or File > Retrieve.
Note
Projects or libraries which were compressed into an archive file cannot be edited.
If you want to edit them again you must unpack the data which means retrieving
the project or library.
When retrieving, the retrieved projects or libraries are automatically included in the
project/library list.
Overview
In STEP 7 you can work in Windows 95/98/NT/2000 Workgroups and NT/Novell
networks in a multi-user configuration. There are three different possible methods:
• The project is on a local drive and is also used from another workstation.
PC network
STEP 7 STEP 7
workstation 1 workstation 2
Project A Project B
Project C
Basic Procedure
When you create an automation solution with SIMATIC M7, there are a series of
basic tasks. The following table shows the tasks that need to be performed for
most projects and assigns them to a basic procedure. The table also gives
references to the relevant chapter in this manual or other manuals.
Procedure Description
Design automation solution M7-specific;
refer to:
M7-SYS RT Programming
Manual
Start STEP 7 As for S7
Create project structure As for S7
Set up station
Configure the hardware
Configure communication connections As for S7
Define symbol table As for S7
Create C or CFC user program M7-specific;
refer to: ProC/C++
Configure operating system M7-specific;
Install operating system on M7-300/M7-400 refer to:
Download hardware configuration and user program to M7 M7-SYS RT User Manual
Test and debug user program ProC/C++
Monitor operation and M7 diagnostics As for S7, but without
user-defined diagnostics
Printing and archiving As for S7
M7 Optional Software
STEP 7 provides you with the basic functions you require to do the following:
• Create and manage projects
• Configure and assign parameters to the hardware
• Configure networks and connections
• Manage symbol data
These functions are provided regardless of whether you are using a SIMATIC S7
or SIMATIC M7 programmable controller.
To create M7 applications, you will require the M7 optional software in addition to
STEP 7.
Software Content
M7-SYS RT • M7 RMOS32 operating system
• M7-API system library
• Support for MPI
CFC for S7 and M7 Programming software for CFC (Continuous Function Chart)
programs
M7-ProC/C++ • Link for the Borland development environment in STEP 7
• Symbol import editor and generator
• Organon xdb386 high-level language debugging tool
Borland C++ Borland C/C++ development environment
In conjunction with the M7 optional software, STEP 7 can also support the following
additional tasks:
• Downloading data to the M7 programmable control system via the multipoint
interface (MPI)
• Requesting information about the M7 programmable control system
• Making particular settings on the M7 programmable control system and
resetting the M7
The following figure shows the dependencies of the M7 optional software for
M7 programming.
Borland C++
M7 SYS RT
Summary
25.3 Rearranging
If unexplained problems occur when working with STEP 7, it often helps to
rearrange the database of the project or library.
Select the menu command File > Rearrange to do this. This removes any gaps
which occur when contents are deleted, meaning that the amount of memory
required for the project/library data is reduced.
The function optimizes the data storage for the project or library in a similar way to
which a program defragments a hard disk also optimizes file storage on the hard
disk.
The duration of the reorganization process depends on the amount of data to be
moved around and may take some time. The function is therefore not executed
automatically (for example, when you close a project) but must be triggered by the
user when he/she wants to rearrange the project or library.
Requirement
Projects and libraries can only be rearranged if no objects in them are being edited
by other applications and therefore locked for access.
Note
As the virtual memory is on the hard disk (default C:) and dynamic, you should
ensure that sufficient memory is available for the directory TMP or TEMP (approx.
20 to 30 Mbytes):
• If the S7 project is also on the same partition on which the virtual memory is
set, approximately twice the size of the S7 project should be available as free
memory space.
• If the project is stored on another partition, this requirement becomes
irrelevant.
Operating Modes
Operating modes describe the behavior of the CPU at a particular point in time.
Knowing the operating modes of CPUs is useful when programming the startup,
testing the controller, and for troubleshooting.
The S7-300 and S7-400 CPUs can adopt the following operating modes:
• STOP
• STARTUP
• RUN
• HOLD
In STOP mode, the CPU checks whether all the configured modules or modules
set by the default addressing actually exist and sets the I/Os to a predefined initial
status. The user program is not executed in STOP mode.
In STARTUP mode, a distinction is made between the startup types "warm restart,"
"cold restart," and "hot restart:"
• In a warm restart, program processing starts at the beginning of the program
with initial settings for the system data and user address areas (the non-
retentive timers, counters, and bit memory are reset).
• In a cold restart, the process-image input table is read in and the STEP 7 user
program is processed starting at the first command in OB1 (also applies to
warm restart).
- Any data blocks created by SFC in the work memory are deleted; the
remaining data blocks have the preset value from the load memory.
- The process image and all timers, counters, and bit memory are reset,
regardless of whether they were assigned as retentive or not.
• In a hot restart, the program is resumed at the point at which it was interrupted
(timers, counters, and bit memory are not reset). A hot restart is only possible
on S7-400 CPUs.
In RUN mode, the CPU executes the user program, updates the inputs and
outputs, services interrupts, and process error messages.
In HOLD mode, processing of the user program is halted and you can test the user
program step by step. The HOLD mode is only possible when you are testing using
the programming device.
In all these modes, the CPU can communicate via the multipoint interface (MPI).
6.
HOLD
5. 4. 10. 9.
2. 7.
3. STARTUP
1. STOP RUN
8.
The table shows the conditions under which the operating modes can change.
Transition Description
1. After you turn on the power supply, the CPU is in STOP mode.
2. The CPU changes to STARTUP mode:
• After the CPU is changed to RUN or RUN-P using the keyswitch or by
the programming device.
• After a startup triggered automatically by turning on the power.
• If the RESUME or START communication function is executed.
In both cases the keyswitch must be set to RUN or RUN-P.
3. The CPU changes back to STOP mode when:
• An error is detected during the startup.
• The CPU is changed to STOP by the keyswitch or on the programming
device.
• A stop command is executed in the startup OB.
• The STOP communication function is executed.
4. The CPU changes to HOLD mode when a breakpoint is reached in the
startup program.
5. The CPU changes to STARTUP mode when the breakpoint in a startup
program was set and the ”EXIT HOLD" command was executed (test
functions).
6. The CPU changes back to STOP mode when:
• The CPU is changed to STOP with the keyswitch or by the
programming device.
• The STOP communication command is executed.
7. If the startup is successful, the CPU changes to RUN.
8. The CPU changes back to STOP mode when:
• An error is detected in RUN mode and the corresponding OB is not
loaded.
• The CPU is changed to STOP by the keyswitch or on the programming
device.
• A stop command is executed in the user program.
• The STOP communication function is executed.
9. The CPU changes to HOLD mode when a breakpoint is reached in the user
program.
10. The CPU changes to RUN mode when a breakpoint was set and the
”EXIT HOLD" command is executed.
Priority Mode
Highest STOP
HOLD
STARTUP
Lowest RUN
The user program is not executed in STOP mode. All the outputs are set to
substitute values so that the controlled process is in a safe state. The CPU makes
the following checks:
• Are there any hardware problems(for example, modules not available)?
• Should the default setting apply to the CPU or are there parameter sets?
• Are the conditions for the programmed startup behavior satisfied?
• Are there any system software problems?
In STOP mode, the CPU can also receive global data and passive one-way
communication is possible using communication SFBs for configured connections
and communication SFCs for non-configured connections.
Memory Reset
The CPU memory can be reset in STOP mode. The memory can be reset manually
using the keyswitch (MRES) or from the programming device (for example, before
downloading a user program).
Resetting the CPU memory returns the CPU to its initial status, as follows:
• The entire user program in the work memory and in the RAM load memory and
all address areas are cleared.
• The system parameters and the CPU and module parameters are reset to the
default settings. The MPI parameters set prior to the memory reset are
retained.
• If a memory card (Flash EPROM) is plugged in, the CPU copies the user
program from the memory card to the work memory (including the CPU and
module parameters if the appropriate configuration data are also on the
memory card).
The diagnostic buffer, the MPI parameters, the time, and the run-time meters are
not reset.
Before the CPU can start processing the user program, a startup program must
first be executed. By programming startup OBs in your startup program, you can
specify certain settings for your cyclic program.
There are three types of startup: warm restart, cold restart, and hot restart. A hot
restart is only possible on S7-400 CPUs. This must be set explicitly in the
parameter set for the CPU using STEP 7.
The features of the STARTUP mode are as follows:
• The program in the startup OB is processed (OB100 for warm restart, OB101
for hot restart, OB102 for cold restart).
• No time-driven or interrupt-driven program execution is possible.
• Timers are updated.
• Run-time meters start running.
• Disabled digital outputs on signal modules (can be set by direct access).
Warm Restart
A warm restart is always permitted unless the system has requested a memory
reset. A warm restart is the only possible option after:
• Memory reset
• Downloading the user program with the CPU in STOP mode
• I stack/B stack overflow
• Warm restart aborted (due to a power outage or changing the mode selector
setting)
• When the interruption before a hot restart exceeds the selected time limit.
Hot Restart
Following a power outage in RUN mode followed by a return of power, S7-400
CPUs run through an initialization routine and then automatically execute a hot
restart. During a hot restart, the user program is resumed at the point at which its
execution was interrupted. The section of user program that had not been executed
before the power outage is known as the remaining cycle. The remaining cycle can
also contain time-driven and interrupt-driven program sections.
A hot restart is only permitted when the user program was not modified in STOP
mode (for example, by reloading a modified block) and when there are no other
reasons for a warm restart. Both a manual and automatic hot restart are possible.
Startup Activities
The following table shows which activities are performed by the CPU during
startup:
Aborting a Startup
If an error occurs during startup, the startup is aborted and the CPU changes to or
remains in STOP mode.
An aborted warm restart must be repeated. After an aborted restart, both a warm
restart and a hot restart are possible.
A startup (warm restart or hot restart) is not executed or it is aborted in the
following situations:
• The keyswitch of the CPU is set to STOP.
• A memory reset is requested.
• A memory card with an application code that is not permitted for STEP 7 is
plugged in (for example, STEP 5).
• More than one CPU is inserted in the single-processor mode.
• If the user program contains an OB that the CPU does not recognize or that
has been disabled.
• If, after power on, the CPU recognizes that not all the modules listed in the
configuration table created with STEP 7 are actually inserted (difference
between preset and actual parameter assignment not permitted).
• If errors occur when evaluating the module parameters.
A hot restart is not executed or it is aborted in the following situations:
• The CPU memory was reset (only a warm restart is possible after memory
reset).
• The interruption time limit has been exceeded (this is the time between exiting
RUN mode until the startup OB including the remaining cycle has been
executed).
• The module configuration has been changed (for example module replaced).
• The parameter assignment only permits a warm restart.
• When blocks have been loaded, deleted, or modified while the CPU was in
STOP mode.
Sequence of Activities
The following figure shows the activities of the CPU during STARTUP and RUN:
Peripheral
outputs
are switched to a
safe state .
(see 1)
Peripheral
Outputs
outputs are
are switched to a enabled
safe state. (see 4)
(see 1)
Read in process-
image input table
User data (PII)
Retained
Request for a PII/PIQ
retentive and non- Hot restart - OB101 Process the user
hot restart
retentive memory program
bits, timers, (see 3)
counters, and DBs Remaining scan
(see 2) cycle
Key to the figure "Activities of the CPU during STARTUP and RUN"
1. All peripheral outputs are switched to a safe state (default value = 0) on the
hardware side by the I/O modules. This switch takes place regardless of
whether the user program employs the outputs inside the process-image area
or outside of it.
If you are using signal modules that have substitute value capability, you can
assign parameters to the behavior of the outputs, such as Keep Last Value.
2. Necessary for processing the remaining scan cycle.
3. A current process-image input table is also available to the interrupt OBs the
first time that they are called up.
4. You can determine the status of the local and distributed peripheral outputs in
the first scan cycle of the user program by taking the following steps:
- Use output modules to which you can assign parameters to enable the
output of substitute values or to keep the last value.
- For a hot restart: activate the CPU startup parameter "Reset outputs during
hot restart" in order to output a 0 (corresponds to the default setting).
- Preset the outputs in the startup OB (OB100, OB101, OB102).
5. In S7-300 systems that are not backed up, only those DB areas that were
configured as retentive are retained.
In RUN mode, the CPU executes the cyclic, time-driven, and interrupt-driven
program, as follows:
• The process image of the inputs is read in.
• The user program is executed.
• The process-image output table is output.
The active exchange of data between CPUs using global data communication
(global data table) and using communication SFBs for configured connections and
using communication SFCs for non-configured connections is only possible in RUN
mode.
The HOLD mode is a special mode. This is only used for test purposes during
startup or in RUN mode. The HOLD mode means the following:
• All timers are frozen: timers and run-time meters are not processed, monitoring
times are stopped, the basic clock pulses of the time-driven levels are stopped.
• The real-time clock runs.
• Outputs are not enabled but can be enabled explicitly for test purposes.
• Inputs and outputs can be set and reset.
• If a power outage occurs on a CPU with a backup battery while in HOLD mode,
the CPU changes to stop when the power returns but does not execute an
automatic hot restart or warm restart. CPUs without battery backup execute an
automatic warm restart when power returns.
• Global data can be received and passive one-way communication using
communication SFBs for configured connections and communication SFCs for
non-configured connections is possible (see also table in RUN Mode).
The memory of an S7 CPU can be divided into three areas (see figure below):
• The load memory is used for user programs without symbolic address
assignments or comments (these remain in the memory of the programming
device). The load memory can be either RAM or EPROM.
• Blocks that are not marked as required for startup will be stored only in the
load memory.
• The work memory (integrated RAM) contains the parts of the S7 program
relevant for running your program. The program is executed only in the work
memory and system memory areas.
• The system memory (RAM) contains the memory elements provided by every
CPU for the user program, such as the process-image input and output tables,
bit memory, timers, and counters. The system memory also contains the block
stack and interrupt stack.
• In addition to the areas above, the system memory of the CPU also provides
temporary memory (local data stack) that contains temporary data for a block
when it is called. This data only remains valid as long as the block is active.
CPU
Work memory (RAM)
contains the executable user
program
Dynamic load memory (RAM, (for example logic and data blocks)
integrated or on a memory card):
contains the user program
Interrupt stack
Diagnostic buffer
When you download the user program from the programming device to the CPU,
only the logic and data blocks are loaded in the load and work memory of the CPU.
The symbolic address assignment (symbol table) and the block comments remain
on the programming device.
S7-400
Programming
device S7-300
Symbols
Note
Data blocks that are created in the user program with the help of system functions
(for example, SFC22 CREAT_DB) are saved entirelyin the work memory by the
CPU.
Some CPUs have separately managed areas for code and data in the work
memory. The size and assignment of these areas is shown in the "Memory" tab of
the Module Information for these CPUs.
Programs stored in RAM are lost when you reset the CPU memory (MRES) or if
you remove the CPU or RAM memory card.
Programs saved on EPROM memory cards are not erased by a CPU memory
reset and are retained even without battery backup (transport, backup copies).
Refer to the following CPU manuals or instruction lists for information on which
address areas are possible for your CPU:
• "S7-300 Programmable Controller, Hardware and Installation" Manual
• "S7-400, M7-400 Programmable Controllers, Module Specifications" Reference
Manual
• "S7-300 Programmable Controller, Instruction List"
• "S7-400 Programmable Controller, Reference Guide"
... ...
Read the inputs from the modules
Transfer the values of the process-
and update the data in the process-
image output table to the modules
image input table
Free scan cycle
Transfer the values of the process- Execute the user program (OB1
image output table to the modules and all the blocks called in it)
... ...
Note
For S7-300 CPUs, unassigned process-image inputs and outputs can be used as
additional bit memory areas. Programs that use this capability can run on older
(that is, before 4/99) S7-400 CPUs only under one of the following conditions:
For these S7-400 CPUs
• The process image areas used as bit memory must be located outside of the
parameter assignment for "Size of the Process Image" or.
• must be located in a process-image partition that is updated neither by the
system nor by SFC26/SFC27.
OB
Event that leads to an
interruption
Reading the inputs from the
configured process-image partition
of the modules
Point of interruption in the
user program Processing of the user program
(interrupt OB and all blocks called
in that OB)
OB 81 SFC L stack
Priority class 26 needs 20 Bytes in
the L-Stack
OB 10 FB
Priority class 2 needs 20 Bytes in
the L-Stack
OB 1 FB FC
Priority
needs 20 Bytes
class 1 in the L-Stack
Caution
! All the temporary variables (TEMP) of an OB and its associated blocks are saved
in the L stack. If you use too many nesting levels when executing your blocks, the
L stack can overflow.
S7 CPUs change to STOP mode if the permitted L stack size for a program is
exceeded.
Test the L stack (the temporary variables) in your program.
The local data requirements of synchronous error OBs must be taken into
consideration.
DB and DI register:
• No. of open DB
• No. of open instance DB
1 2 99 100
101st 100 99 2 1
entry
To do this set the CPU so that the following data are saved in the non-volatile
RAM:
• Data contained in a DB (this is only useful if you have also stored your program
in an EPROM of the load memory)
• Values of timers and counters
• Data saved in bit memory.
On every CPU, you can save a certain number of timers, counters, and memory
bits. A specific number of bytes is also available in which the data contained in DBs
can be saved.
The MPI address of your CPU is stored in the NVRAM. This makes sure that your
CPU is capable of communication following a power outage or memory reset.
All the data in a user program must be identified by a data type. The following data
types are available:
• Elementary data types provided by STEP 7
• Complex data types that you yourself can create by combining elementary data
types
• Parameter types with which you define parameters to be transferred to FBs or
FCs
General Information
Statement List, Ladder Logic, and Function Block Diagram instructions work with
data objects of specific sizes. Bit logic instructions work with bits, for example.
Load and transfer instructions (STL) and move instructions (LAD and FBD) work
with bytes, words, and double words.
A bit is a binary digit "0" or "1." A byte is made up of eight bits, a word of 16 bits,
and a double word of 32 bits.
Math instructions also work with bytes, words, or double words. In these byte,
word, or double word addresses you can code numbers of various formats such as
integers and floating-point numbers.
When you use symbolic addressing, you define symbols and specify a data type for
these symbols (see table below). Different data types have different format options
and number notations.
This chapter describes only some of the ways of writing numbers and constants.
The following table lists the formats of numbers and constants that will not be
explained in detail.
Each elementary data type has a defined length. The following table lists the
elementary data types.
Type and Size Format Options Range and Number Notation Example
Description in (lowest to highest value)_
Bits
BOOL(Bit) 1 Boolean text TRUE/FALSE TRUE
BYTE 8 Hexadecimal B16#0 to B16#FF L B#16#10
(Byte) number L byte#16#10
WORD 16 Binary number 2#0 to L 2#0001_0000_0000_0000
(Word) 2#1111_1111_1111_1111
Hexadecimal W#16#0 to W#16#FFFF L W#16#1000
number L word16#1000
C#0 to C#999 L C#998
BCD B#(0.0) to B#(255.255) L B#(10,20)
Decimal number L byte#(10,20)
unsigned
DWORD 32 Binary number 2#0 to 2#1000_0001_0001_1000_
(Double 2#1111_1111_1111_1111 1011_1011_0111_1111
word) 1111_1111_1111_1111
Hexadecimal DW#16#0000_0000 to L DW#16#00A2_1234
number DW#16#FFFF_FFFF L dword#16#00A2_1234
Decimal number B#(0,0,0,0) to L B#(1, 14, 100, 120)
unsigned B#(255,255,255,255) L byte#(1,14,100,120)
INT 16 Decimal number -32768 to 32767 L1
(Integer) signed
DINT 32 Decimal number L#-2147483648 to L L#1
(Integer, 32 signed L#2147483647
bits)
REAL 32 IEEE Upper limit: ±3.402823e+38 L 1.234567e+13
(Float.- Floating-point Lower limit: ±1.175 495e-38
pt. number) number
S5TIME 16 S7 time in S5T#0H_0M_0S_10MS to L S5T#0H_1M_0S_0MS
(SIMATIC steps of S5T#2H_46M_30S_0MS and L S5TIME#0H_1H_1M_0S_
time) 10 ms (default) S5T#0H_0M_0S_0MS 0MS
TIME 32 IEC time in steps T#24D_20H_31M_23S_648MS L T#0D_1H_1M_0S_0MS
(IEC time) of 1 ms, integer to L TIME#0D_1H_1M_0S_0M
signed T#24D_20H_31M_23S_647MS S
DATE 16 IEC date in steps D#1990-1-1 to L D#1996-3-15
(IEC date) of 1 day D#2168-12-31 L DATE#1996-3-15
TIME_OF_ 32 Time in steps of TOD#0:0:0.0 to L TOD#1:10:3.3
DAY (Time) 1 ms TOD#23:59:59.999 L TIME_OF_DAY#1:10:3.3
CHAR 8 ASCII characters ’A’,’B’ etc. L ’E’
(Character)
Format Range
Integer (16 bits) –32 768 to +32 767
Bits 15 12 11 8 7 4 3 0
0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0
Format Range
Integer (32 bits) –2 147 483 648 to +2 147 483 647
The following figure shows the integer –500 000 as a binary number. In the binary
system, the negative form of an integer is represented as the twos complement of
the positive integer. You obtain the twos complement of an integer by reversing the
signal states of all bits and then adding +1 to the result.
Bits
31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0
Sign
Bit
31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0
S e f
The following table shows the values of the individual bits in floating-point format.
Using the three components S, e, and m, the value of a number represented in this
form is defined by the formula:
Number = 1.m ∗ 2 to the power of (e - bias)
Where:
• e: 1 ≤ e ≤ 254
• Bias: bias = 127. This means that an additional sign is not required for the
exponent.
• S: for a positive number, S = 0 and for a negative number, S = 1.
1)
Format Range
Floating-point numbers according to the –3.402 823E+38 to –1.175 495E–38
ANSI/IEEE standard and 0 and
+1.175 495E–38 to +3.402 823E+38
The following table shows the signal state of the bits in the status word for the
results of instructions with floating-point numbers that do not lie within the valid
range:
Caution
! Calculations involving a long series of values including very large and very small
numbers can produce inaccurate results.
The floating-point numbers in STEP 7 are accurate to 6 decimal places. You can
therefore only specify a maximum of 6 decimal places when entering floating-point
constants.
Note
The calculation accuracy of 6 decimal places means, for example, that the
addition of number1 + number2 = number1 if number1 is greater than number2 ∗
10 to the power of y, where y>6:
0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0
0 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1
A.3.2.4 Format of the Data Types WORD and DWORD in Binary Coded
Decimal Numbers
The binary-coded decimal (BCD) format represents a decimal number by using
groups of binary digits (bits). One group of 4 bits represents one digit of a signed
decimal number or the sign of the decimal number. The groups of 4 bits are
combined to form a word (16 bits) or double word (32 bits). The four most
significant bits indicate the sign of the number (1111 indicates minus and 0000
indicates plus). Commands with BCD-coded addresses only evaluate the
highest-value bit (15 in word, 31 in double word format). The following table shows
the format and range for the two types of BCD numbers.
Format Range
Word –999 to +999
(16 bits, three-digit BCD number with sign)
Double word –9 999 999 to +9 999 999
(32 bits, seven-digit BCD number with sign)
The following figures provide an example of a binary coded decimal number in the
following formats:
• Word format
Bits 15 12 11 8 7 4 3 0
0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0
Sign Hundreds Tens Ones
(102) (101) (100)
Bits
31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0
1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
Sign Millions Hundreds of Tens of Thousands Hundreds Tens Ones
(106) Thousands Thousands (103) (102) (101) (100)
(105) (104)
1 2 7
When working with S5TIME, you enter a time value in the range of 0 to 999 and
you indicate a time base (see the following table). The time base indicates the
interval at which a timer decrements the time value by one unit until it reaches 0.
Time base for S5TIME
You can pre-load a time value using either of the following syntax formats:
• L1) W#16#wxyz
- Where w = time base (that is, the time interval or resolution)
- Where xyz = the time value in binary coded decimal format
• 1)
L S5T#aH_bbM_ccS_dddMS
- Where a = hours, bb = minutes, cc = seconds, and dd = milliseconds
- The time base is selected automatically and the value is rounded to the
next lower number with that time base.
The maximum time value that you can enter is 9,990 seconds, or 2H_46M_30S.
1)
= L only to be specified in STL programming
Complex data types define data groups that are larger than 32 bits or data groups
consisting of other data types. STEP 7 permits the following complex data types:
• DATE_AND_TIME
• STRING
• ARRAY
• STRUCT
• UDT (user-defined data types)
• FBs and SFBs
The following table describes the complex data types. You define structures and
arrays either in the variable declaration of the logic block or in a data block.
Structured data types are saved in accordance with word limits (WORD aligned).
Structures
STRUCT
INT Integer
BYTE Byte
CHAR Character
REAL
Real number
BOOL
Boolean value
Arrays
1,1 Integer
1,2 Integer
1,3 Integer
ARRAY [1..2,1..3]
INTEGER 2,1 Integer
2,2 Integer
2,3 Integer
Arrays
An array combines a group of one data type (elementary or complex) to form a
unit. You can create an array consisting of arrays. When you define an array, you
must do the following:
• Assign a name to the array.
• Declare an array with the keyword ARRAY.
• Specify the size of the array using an index. You specify the first and last
number of the individual dimensions (maximum 6) in the array. You enter the
index in square brackets with each dimension separated by a comma and the
first and last number of the dimension by two periods. The following index
defines, for example, a three-dimensional array:
[1..5,–2..3,30..32]
• You specify the data type of the data to be contained in the array.
Example: 1
The following figure shows an array with three integers. You access the data stored
in an array using the index. The index is the number in square brackets. The index
of the second integer, for example, is Op_temp[2].
An index can be any integer (-32768 to 32767) including negative values. The
array in the following figure could also be defined as ARRAY [-1..1]. The index of
the first integer would then be Op_temp[-1], the second would be Op_temp[0], and
the third integer would then be Op_temp[1].
1 Op_Temp[1]
Op_Temp = ARRAY [1..3] Op _Temp[2]
2
INTEGER
3 Op _Temp[3]
Example 2
An array can also describe a multi-dimensional group of data types. The following
figure shows a two-dimensional array of integers.
1,1 Integer
1,2 Integer
1,3 Integer
Op_Temp = ARRAY [1..2,1..3]
INTEGER Integer
2,1
2,2 Integer
2,3 Integer
You access the data in a multi-dimensional array using the index. In this example,
the first integer is Op_temp[1,1], the third is Op_temp[1,3], the fourth is
Op_temp[2,1], and the sixth is Op_temp[2,3].
You can define up to a maximum of 6 dimensions (6 indexes) for an array. You
could, for example, define the variable Op_temp as follows as a six-dimensional
array:
ARRAY [1..3,1..2,1..3,1..4,1..3,1..4]
The index of the first element in this array is Op_temp[1,1,1,1,1,1]. The index of the
last element Op_temp[3,2,3,4,3,4].
Creating Arrays
You define arrays when you declare the data in a DB or in the variable declaration.
When you declare the array, you specify the keyword (ARRAY) followed by the
size in square brackets, as follows:
[lower limit value..upper limit value]
In a multi-dimensional array you also specify the additional upper and lower limit
values and separate the individual dimensions with a comma. The following figure
shows the declaration for creating an array of the format 2 x 3.
Structures
A structure combines various data types (elementary and complex data types,
including arrays and structures) to form one unit. You can group the data to suit
your process control. You can therefore also transfer parameters as a data unit and
not as single elements. The following figure illustrates a structure consisting of an
integer, a byte, a character, a floating-point number, and a Boolean value.
STRUCT
INT Integer
BYTE Byte
CHAR Character
REAL
Real number
BOOL
Boolean value
Creating a Structure
You define structures when you declare data within a DB or in the variable
declaration of a logic block.
The following figure illustrates the declaration of a structure (Stack_1) that consists
of the following elements: an integer (for saving the amount), a byte (for saving the
original data), a character (for saving the control code), a floating-point number (for
saving the temperature), and a Boolean memory bit (for terminating the signal).
UDT20
INT Integer
BYTE Byte
CHAR Character
REAL
Real number
BOOL
Boolean value
Instead of entering all the data types singly or as a structure, you only need to
specify ”UDT20" as the data type and STEP 7 automatically assigns the
corresponding memory space.
Once you have created a UDT, you can use the UDT like a data type if, for
example, you declare the data type UDT200 for a variable in a DB (or in the
variable declaration of an FB).
The following figure shows a DB with the variables process_data_1 with the data
type UDT200. You only specify UDT200 and process_data_1. The arrays shown in
italics are created when you compile the DB.
DB17 "DARK_BLUE"
UDT1 “Formula"
DB 23 "TURQUOISE"
The structure of the data block is determined by the UDT assigned to it.
In addition to elementary and complex data types, you can also define parameter
types for formal parameters that are transferred between blocks. STEP 7
recognizes the following parameter types:
• TIMER or COUNTER: this specifies a particular timer or particular counter that
will be used when the block is executed. If you supply a value to a formal
parameter of the TIMER or COUNTER parameter type, the corresponding
actual parameter must be a timer or a counter, in other words, you enter "T" or
"C" followed by a positive integer.
• BLOCK: specifies a particular block to be used as an input or output. The
declaration of the parameter determines the block type to be used (FB, FC, DB
etc.). If you supply values to a formal parameter of the BLOCK parameter type,
specify a block address as the actual parameter. Example: ”FC101" (when
using absolute addressing) or ”Valve" (with symbolic addressing).
• POINTER: references the address of a variable. A pointer contains an address
instead of a value. When you supply a value to a formal parameter of the
parameter type POINTER, you specify an address as the actual parameter. In
STEP 7, you can specify a pointer in the pointer format or simply as an
address (for example, M 50.0). Example of a pointer format for addressing the
data beginning at M 50.0: P#M50.0
• ANY: this is used when the data type of the actual parameter is unknown or
when any data type can be used. For more information about the ANY
parameter type, refer to the sections "Format of the Parameter Type ANY" and
"Using the Parameter Type ANY".
A parameter type can also be used in a user-defined data type (UDT). For more
information about UDTs, refer to the section "Using User-Defined Data Types to
Access Data".
Bits 15 8 7 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
Byte 0 Byte 1
The permitted number of blocks, timers, and counters is dependent on the type of
your S7 CPU. You will find more information on the permitted number of timers and
counters and on the maximum number of available blocks in the data sheets for
your CPU in the "S7-300 Programmable Controller, Hardware and Installation
Manual" or in the "S7-400, M7-400 Programmable Controllers, Hardware and
Installation Manual."
Pointer format
15... ...8 7... ...0
Byte 0 DB number (or 0) Byte 1
Byte 4 b b b b b b b b b b b b b x x x Byte 5
The offset 0.0 has no influence. Output 10.0 is calculated from 8.7 (AR1) plus the
offset 1.1. The result is 10.0 and not 9.8, see pointer format.
The offset 0.0 has no influence. Output 10.0 is calculated from 8.7 (AR2) plus the
offset 1.1. The result is 10.0 and not 9.8, see pointer format.
VAR_INPUT
Bit_Byte : BOOL ; //0: Bit address, 1: byte address
Inc_Value : INT ; //Increment (if value neg. => decrement/if value pos. =>
increment)
END_VAR
VAR_IN_OUT
Pointer : DWORD ; //Pointer to be changed
END_VAR
VAR_TEMP
Inc_Value1 : INT ; //Interim value increment
Pointer1 : DWORD ; //Interim value pointer
Int_Value : DWORD ; //Auxiliary variable
END_VAR
BEGIN
NETWORK
TITLE =
//The block intercepts changes that change the area information of the pointer
//or that lead to "negative" pointers automatically.
The repetition factor identifies a quantity of the indicated data type to be transferred
by the parameter type ANY. This means you can specify a data area and also use
arrays and structures in conjunction with the parameter type ANY. STEP 7
identifies arrays and structures as a number (with the help of the repetition factor)
of data types. If, for example, 10 words are to be transferred, the value 10 must be
entered for the repetition factor and the value 04 must be entered for the data type.
The address is stored in the format Byte.Bit where the byte address is stored in bits
0 to 2 of byte 7, in bits 0 to 7 of byte 8, and in bits 3 to 7 of byte 9. The bit address
is stored in bits 0 to 2 of byte 9.
With a null pointer of the type NIL all bytes from byte 1 are assigned 0.
The following tables show the coding of the data types or of the memory areas for
the parameter type ANY.
Byte 4 0 Byte 5
The following table shows the coding of the data types for the parameter type ANY
for parameter types.
Variable declaration
STAT Speed INT
FC100
#Thermo in_par1
M 1.3 in_par2
T2 in_par3
In this example, FC100 has three parameters (in_par1, in_par2, and in_par3)
declared as the ANY data type.
• When FB10 calls FC100, FB10 transfers an integer (the static variable speed),
a word (MW100), and a double word to DB10 (DB10.DBD40).
• When FB11 calls FC10, FB11 transfers an array of real numbers (the
temporary variable "Thermo"), a Boolean value (M 1.3), and a timer (T2).
STL Explanation
FUNCTION FC10: VOID
VAR_TEMP
Source : ANY;
Target : ANY;
END_VAR
BEGIN
LAR1 P#Source; Load the start address of the ANY pointer in AR1.
LAR1 P#Target; Load the start address of the ANY pointer in AR1.
Call FC12
A_Param := Param_1
B_Param := Param_2
C_Param := Param_3
Input → Input l — — — — — —
Input → Output — — — — — — —
Input → In/out — — — — — — —
Output → Input — — — — — — —
Output → Output l — — — — — —
Output → In/out — — — — — — —
In/out → Input l — — — — — —
In/out → Output l — — — — — —
In/out → In/out l — — — — — —
Call FC12
A_Param := Param_1
B_Param := Param_2
C_Param := Param_3
Call FB12,DB11
A_Param := Param_1
B_Param := Param_2
C_Param := Param_3
Valid Data Types for the Call of a Function Block by a Function Block
You can assign the formal parameters of a calling FB to the formal parameters of a
called FB. The following figure illustrates the formal parameters of FB10 that are
assigned as actual parameters to the formal parameters of FB12.
Call FB12,DB11
A_Param := Param_1
B_Param := Param_2
C_Param := Param_3
You can re-use projects you created with version 1 of STEP 7. To do this, you have
to convert the version 1 projects to version 2 projects.
The following components of a version 1 project are retained:
• Project structure with programs
• Blocks
• STL source files
• Symbol table
The configuration of the hardware is not converted. You can copy the program
components contained in the project to other projects. You can also add a station
to the new project and configure and assign parameters to it.
Once you have converted to version 2 you can decide in a dialog box whether you
now want to convert this version 2 project to a project in your current STEP 7
version.
Note
The individual blocks stay as version 1 blocks as regards their properties. The
code generated in version 1 is not changed and the blocks cannot therefore be
used in conjunction with multiple instances.
If you want to declare multiple instances in the converted blocks, generate STL
source files from the converted blocks first using the "LAD/STL/FBD:
Programming Blocks" application and then compile them back into blocks.
Programming multiple instances is a new feature of STEP 7 version 2 used to
create function blocks (FB). If you want to continue using function blocks created
with version 1 in the same way in a version 2 project, you do not need to convert
them.
Procedure
To convert version 1 projects, proceed as follows:
1. Select the menu command File > Open Version 1 Project.
2. In the dialog box which appears, select the version 1 project which you want to
use in version 2. You recognize a version 1 project by its extension *.s7a.
3. Then, in the next dialog box, enter the name of the new project to which you
want the version 1 project to be converted.
In STEP 7 you can also open version 2 projects using the menu command File >
Open.
Version 2 projects/libraries can be converted (migrated) to your current STEP 7
version using the menu command File > Save As and the option "Rearrange
before saving." The project is then saved as a project with the current STEP 7
version.
You can edit projects and libraries from older STEP 7 versions retaining their
format and save them by selecting the older STEP 7 version as the file type in the
"Save Project As" dialog box. For example, to edit the objects with STEP 7 version
2.1, select "Project 2.x" or "Library 2.x" here (it is not possible to save as Version 2
as from Version 5.1 on. Also refer to Editing Version 2 projects and libraries).
This means you only have access to the scope of functions of the older STEP 7
version. You can, however, still continue to manage the projects and libraries with
the older STEP 7 version.
Note
The upgrade from version 3 to versions 4 and higher only involves a change in name: the
format has remained identical. Therefore there is no file type "Project3.x" in STEP 7 V4.
Procedure
To convert version 2 projects to the format of the current STEP 7 version, proceed
as follows:
1. Execute the ”Save As" command in the File menu with the "Rearrange before
saving" option for the project.
2. Select the file type "Project" in the "Save Project As" dialog box and click the
"Save" button.
To convert version 2 projects to the current STEP 7 version while retaining their
format, proceed as follows:
1. Execute step 1 above if necessary.
2. Select the file type of the older STEP 7 version in the "Save Project As" dialog
box and click the "Save" button.
Remedy
If you want to use the DP slave with new modules that are described in the
*.GSE file:
• Delete the DP slave and configure it again. Then the DP slave is described
completely by the *.GSE file, not by the type file.
If you do not want to use any new modules that are described only in the
*.GSE file:
• Under PROFIBUS-DP in the Hardware Catalog window, select the Other Field
Devices/Compatible PROFIBUS-DP Slaves folder. STEP 7 moves the "old"
type files into this folder when they are replaced by new *.GSE files. In this
folder you will find the modules with which you can expand the already
configured DP slave.
If you process older station configurations with STEP 7 Version 5.1, it is possible in
rare cases that the GSE file of a DP slave is missing or cannot be not compiled (for
example, due to syntax errors in the GSE file).
In this case STEP 7 generates a "dummy" slave which represents the configured
slave, for example after a station download to the programming device or after an
older project has been opened and processed further. This "dummy" slave can only
be processed to a limited extent. You cannot change the slave structure (DP
identifiers) and the slave parameters. However, renewed downloading to the
station is possible. The original configuration of the slave is retained. The complete
DP slave can also be deleted.
The installation CD contains a number of sample projects. For the projects that are
not described in this chapter, a description is included with the corresponding OB1.
Note
When STEP 7 is installed, the supplied sample projects are copied, unless
otherwise specified. If you have edited the supplied sample projects, these
modified projects are overwritten with the originals when STEP 7 is reinstalled.
For this reason, you should copy the supplied sample projects before making any
changes and then only edit the copies.
The sample program is makes use of information that you have already read in part
1 of the manual about controlling an industrial blending process.
Task
Two ingredients (ingredient A and ingredient B) are mixed together in a mixing tank
by an agitator. The finished product is drained from the tank through a drain valve.
The following figure shows a diagram of the sample process.
Area: Ingredient A
M M
Area: Mixing tank
Agitator motor
Inlet Feed Feed Flow
valve pump valve sensor M
Area: Ingredient B
M M
Drain valve
Drain area:
• Drainage of the tank is controlled by a solenoid valve.
• The solenoid valve is controlled by the operator, but must be closed again at
the latest when the ”tank empty" signal is generated.
• Opening the drain valve is interlocked when
- the agitator motor is running
- the tank is empty
Operator Station
To allow an operator to start, stop, and monitor the process, an operator station is
also required. The operator station is equipped with the following:
• Switches for controlling the most important stages of the process. Using the
"reset maintenance display" switch, you can turn off the maintenance display
lamps for the motors due for maintenance and reset the corresponding
counters for the maintenance interval to 0.
• Display lamps to indicate the status of the process.
• The emergency stop switch.
OB 1 DB 1
Ingredient A
Feed pump
ingredient A
FB1 DB 2
Feed pump Motor
ingredient B Ingredient B
DB 3
Agitator
motor Agitator
motor
Inlet valves
A and B
FC1
Feed Valves
valves
A and B
Drain valve
• OB1: The interface to the operating system of the CPU and contains the main
program. In OB1 the blocks FB1 and FC1 are called and the specific
parameters required to control the process are transferred.
• FB1: The feed pump for ingredient A, the feed pump for ingredient B and the
agitator motor can be controlled by a single function block because the
requirements (on, off, count applications etc.) are identical.
• Instance DB 1-3: The actual parameters and the static data for controlling the
feed pumps for ingredient A, ingredient B and for the agitator motor are
different and are therefore stored in three instance DBs associated with FB1.
• FC1: The inlet and feed valves for ingredients A and B and the drain valve also
use a common logic block. As only the function "open and close" must be
programmed, one single FC is sufficient.
Symbolic Addresses for Feed Pump, Agitator Motor, and Inlet Valves
Symbolic Name Address Data Type Description
Feed_pump_A_start I0.0 BOOL Starts the feed pump for ingredient A
Feed_pump_A_stop I0.1 BOOL Stops the feed pump for ingredient A
Flow_A I0.2 BOOL Ingredient A flowing
Inlet_valve_A Q4.0 BOOL Activates the inlet valve for ingredient A
Feed_valve_A Q4.1 BOOL Activates the feed valve for ingredient A
Feed_pump_A_on Q4.2 BOOL Lamp for ”feed pump ingredient A
running"
Feed_pump_A_off Q4.3 BOOL Lamp for ”feed pump ingredient A not
running"
Feed_pump_A Q4.4 BOOL Activates the feed pump for ingredient A
Feed_pump_A_fault Q4.5 BOOL Lamp for ”feed pump A fault"
Feed_pump_A_maint Q4.6 BOOL Lamp for ”feed pump A maintenance"
Feed_pump_B_start I0.3 BOOL Starts the feed pump for ingredient B
Feed_pump_B_stop I0.4 BOOL Stops the feed pump for ingredient B
Flow_B I0.5 BOOL Ingredient B flowing
Inlet_valve_B Q5.0 BOOL Activates the inlet valve for ingredient A
Feed_valve_B Q5.1 BOOL Activates the feed valve for ingredient B
Feed_pump_B_on Q5.2 BOOL Lamp for ”feed pump ingredient B
running"
Feed_pump_B_off Q5.3 BOOL Lamp for ”feed pump ingredient B not
running"
Feed_pump_B Q5.4 BOOL Activates the feed pump for ingredient B
Feed_pump_B_fault Q5.5 BOOL Lamp for ”feed pump B fault"
Feed_pump_B_maint Q5.6 BOOL Lamp for ”feed pump B maintenance"
Agitator_running I1.0 BOOL Response signal of the agitator motor
Agitator_start I1.1 BOOL Agitator start button
Agitator_stop I1.2 BOOL Agitator stop button
Agitator Q8.0 BOOL Activates the agitator
Agitator_on Q8.1 BOOL Lamp for "agitator running"
Agitator_off Q8.2 BOOL Lamp for "agitator not running"
Agitator_fault Q8.3 BOOL Lamp for ”agitator motor fault"
Agitator_maint Q8.4 BOOL Lamp for ”agitator motor maintenance"
Symbolic Addresses for Sensors and Displaying the Level of the Tank
Symbolic Name Address Data Type Description
Tank_below_max I1.3 BOOL Sensor ”mixing tank not full"
Tank_above_min I1.4 BOOL Sensor ”mixing tank above minimum
level"
Tank_not_empty I1.5 BOOL Sensor ”mixing tank not empty"
Tank_max_disp Q9.0 BOOL Lamp for "mixing tank full"
Tank_min_disp Q9.1 BOOL Lamp for "mixing tank below minimum
level"
Tank_empty_disp Q9.2 BOOL Lamp for "mixing tank empty"
Start Fault
Stop Start_Dsp
Response Stop_Dsp
Reset_Maint Maint
Motor
Timer_No
Response_Time
Motor
With FBs, the input, output, in/out, and static variables are saved in the instance
DB specified in the call statement. The temporary variables are stored in the
L stack.
The following table shows the parameters that must be transferred to the FC.
Open Dsp_Open
Close Dsp_Closed
Valve
Valve
With FCs, the temporary variables are saved in the L stack. The input, output, and
in/out variables are saved as pointers to the logic block that called the FC.
Additional memory space in the L stack (after the temporary variables) is used for
these variables.
OB 1
Feed pump FB 1
ingredient A
Instance DB 1
Inlet valve A FC 1
Feed valve A FC 1
Feed pump
ingredient B FB 1
Operating system
Instance DB 2
Inlet valve B FC 1
Feed valve B FC 1
Agitator motor FB 1
Instance DB 3
Drain valve FC 1
The code section of OB1 appears as shown below in the STL programming
language:
Task
Output Q 4.0 should be set in the time from Monday, 5.00 am to Friday, 8.00 pm.
In the time from Friday, 8.00 pm to Monday, 5.00 am the output Q 4.0 should be
reset.
Block Sub-Task
OB1 Calls the function FC12
FC12 Depending on the state of the output Q 4.0, the time-of-day interrupt
status, and the inputs I 0.0 and I 0.1
• Specify the starting time
• Set the time-of-day interrupt
• Activate the time-of-day interrupt
• CAN_TINT
OB10 Depending on the current day of the week
• Specify the starting time
• Set or reset output Q 4.0
• Set next time-of-day interrupt
• Activate next time-of-day interrupt
OB80 Set output Q 4.1
Store start event information of OB80 in bit memory area
Addresses Used
The following table shows the shared addresses used. The temporary local
variables are declared in the declaration section of the respective block.
Address Meaning
I0.0 Input to enable "set time-of-day interrupt" and "activate time-of-day
interrupt"
I0.1 Input to cancel a time-of-day interrupt
Q4.0 Output set/reset by the time-of-day interrupt OB (OB10)
Q4.1 Output set by a time error (OB80)
MW16 STATUS of the time-of-day interrupt (SFC31 "QRY_TINT")
MB100 to Memory for start event information of OB10 (time-of-day only)
MB107
MB110 to Memory for start event information of OB80 (time error)
MB129
MW200 RET_VAL of SFC28 "SET_TINT"
MB202 Binary result (status bit BR) buffer for SFCs
MW204 RET_VAL of SFC30 "ACT_TINT"
MW208 RET_VAL of SFC31 "QRY_TINT"
A.5.3.2 FC12
Declaration Section
The following temporary local variables are declared in the declaration section of
FC12:
Network 2:
AN Q 4.0 Specify start time dependent on Q 4.0
JC mond (in variable
L D#1995–1–27 #IN_DATE and #IN_TIME)
T #IN_DATE Start date is a Friday
L TOD#20:0:0.0
T #IN_TIME
JU cnvrt
mond: L D#1995–1–23
T #IN_DATE Start date is a Monday
L TOD#5:0:0.0
T #IN_TIME
cnvrt: NOP 0
A.5.3.3 OB10
Declaration Section
In contrast to the default declaration section of OB10 the following temporary local
variables are declared:
• Structure for the entire start event information (STARTINFO)
• Within the STARTINFO structure a structure for the time (T_STMP)
• Other temporary local variables WDAY, IN_DATE, IN_TIME, and
OUT_TIME_DATE
mond: L D#1995–1–23
T #IN_DATE
L TOD#5:0:0.0
T #IN_TIME
CLR
= Q 4.0 Starting time specified.
Convert specified starting time to
cnvrt: NOP 0 format DATE_AND_TIME (for SFC28).
Network 4:
CALL FC 3
IN1 := #IN_DATE Set time-of-day interrupt.
IN2 := #IN_TIME
RET_VAL := #OUT_TIME_DATE
Network 5:
CALL SFC 28
OB_NO := 10
SDT := #OUT_TIME_DATE
PERIOD := W#16#1201
RET_VAL := MW 200
A BR
= M 202.1
Network 6:
CALL SFC 30 Activate time-of-day interrupt.
OB_NO := 10
RET_VAL := MW 204
A BR
= M 202.2
Network 7:
CALL SFC 20 Block transfer: save time of day from
SRCBLK := #STARTINFO.T_STMP start event information of OB10 to the
RET_VAL := MW 206 memory area MB100 to MB107.
DSTBLK := P#M 100.0 BYTE 8
Task
When input I 0.0 is set, output Q 4.0 should be set 10 seconds later. Every time
input I 0.0 is set, the delay time should be restarted.
The time (seconds and milliseconds) of the start of the time-delay interrupt should
appear as a user-specific ID in the start event information of the time-delay
interrupt OB (OB20).
If I 0.1 is set in these 10 seconds, the organization block OB20 should not be
called; meaning the output Q 4.0 should not be set.
When input I 0.2 is set, output Q 4.0 should be reset.
Block Sub-Task
OB1 Read current time and prepare for start of time-delay interrupt
Dependent on edge change at input I 0.0, start time-delay interrupt
Depending on the status of the time-delay interrupt and the edge change
at input I 0.1, cancel time-delay interrupt
Dependent on the state of input I 0.2, reset output Q 4.0
OB20 Set output Q 4.0
Read and prepare current time
Save start event information to bit memory area
Addresses Used
The following table shows the shared addresses used. The temporary local
variables are declared in the declaration section of the respective block.
Address Meaning
I0.0 Input to enable "start time-delay interrupt"
I0.1 Input to cancel a time-delay interrupt
I0.2 Input to reset output Q 4.0
Q4.0 Output set by the time-delay interrupt OB (OB20)
MB1 Used for edge flag and binary result (status bit BR) buffer for SFCs
MW4 STATUS of time-delay interrupt (SFC34 "QRY_TINT")
MD10 Seconds and milliseconds BCD-coded from the start event
information of OB1
MW 100 RET_VAL of SFC32 "SRT_DINT"
MW102 RET_VAL of SFC34 "QRY_DINT"
MW104 RET_VAL of SFC33 "CAN_DINT"
MW106 RET_VAL of SFC20 "BLKMOV"
MB120 to MB139 Memory for start event information of OB20
MD140 Seconds and milliseconds BCD-coded from the start event
information of OB20
MW144 Seconds and milliseconds BCD-coded from the start event
information of OB1; acquired from start event information of OB20
(user-specific ID SIGN)
A.5.4.2 OB20
Declaration Section
In contrast to the default declaration section of OB20 the following temporary local
variables are declared:
• Structure for the entire start event information (STARTINFO)
• Within the STARTINFO structure a structure for the time (T_STMP)
Code Section
Enter the following STL user program in the code section of OB20:
A.5.4.3 OB1
Declaration Section
In contrast to the default declaration section of OB1 the following temporary local
variables are declared:
• Structure for the entire start event information (STARTINFO)
• Within the STARTINFO structure a structure for the time (T_STMP)
Code Section
Enter the following STL user program in the code section of OB1:
The following example of a user program illustrates how to mask and unmask
synchronous errors. Using SFC36 "MSK_FLT" the following errors are masked in
the programming error filter:
• Area length error when reading
• Area length error when writing
With a second call of SFC36 "MSK_FLT" an access area can also be masked:
• I/O access error when writing
With SFC38 "READ_ERR" the masked synchronous errors are queried. The "I/O
access error when writing" is unmasked again with SFC37 "DMSK_FLT."
Code Section
Below you will find the OB1 in which the example of the user program was
programmed in Statement List.
A M 10.0
S M 190.1 Program section that can be interrupted
A M 10.1 without problems:
S M 190.0
:
:
BEU
err: L MW 102
T QW 12 The number of set interrupt disables is
displayed
The CPU can access inputs and outputs of central and distributed digital
input/output modules either indirectly using the process image tables or directly via
the backplane/P bus.
The CPU accesses inputs and outputs of central and distributed analog
input/output modules directly via the backplane/P bus.
Addressing Modules
You assign the addresses used in your program to the modules when you
configure the modules with STEP 7, as follows:
• With central I/O modules: arrangement of the rack and assignment of the
modules to slots in the configuration table.
• For stations with a distributed I/O (PROFIBUS-DP): arrangement of the
DP slaves in the configuration table ”master system" with the PROFIBUS
address and assignment of the modules to slots.
By configuring the modules, it is no longer necessary to set addresses on the
individual modules using switches. As a result of the configuration, the
programming device sends data to the CPU that allow the CPU to recognize the
modules assigned to it.
To find out which address areas are possible on individual modules, refer to the
following manuals:
• S7-300 Programmable Controller, Hardware and Installation" Manual
• S7-300, M7-300 Programmable Controllers, Module Specifications" Reference
Manual
• "S7-400, M7-400 Programmable Controllers, Module Specifications" Reference
Manual
User Data
User data is addressed with the byte address (for digital signal modules) or the
word address (for analog signal modules) of the input or output area. User data can
be accessed with load and transfer commands, communication functions (operator
interface access), or by transferring the process image. User data can be any of
the following:
• Digital and analog input/output signals from signal modules
• Control and status information from function modules
• Information for point-to-point and bus connections from communication
modules (only S7-300)
When transferring user data, a consistency of a maximum of 4 bytes can be
achieved (with the exception of DP standard slaves, see Setting the Operating
Behavior). If you use the ”transfer double word" statement, four contiguous and
unmodified (consistent) bytes are transferred. If you use four separate ”transfer
input byte" statements, a hardware interrupt OB could be inserted between the
statements and transfer data to the same address so that the content of the
original 4 bytes is changed before they were all transferred.
Data Description
Diagnostic data If the modules are capable of diagnostics, you obtain the diagnostic data
of the module by reading data records 0 and 1.
Parameter data If the modules are configurable, you transfer the parameters to the
module by writing data records 0 and 1.
SFC Purpose
Assigning parameters to modules
SFC55 WR_PARM Transfers the modifiable parameters (data record 1) to the addressed
signal module
SFC56 Transfers parameters from SDBs 100 to 129 to the addressed signal
WR_DPARM module
SFC57 Transfers parameters from SDBs 100 to 129 to the addressed signal
PARM_MOD module
SFC58 WR_REC Transfers any data record to the addressed signal module
Reading out diagnostic information
SFC59 RD_REC Reads the diagnostic data
Addressing S5 Modules
You can access S5 modules as follows:
• By connecting an S7-400 to SIMATIC S5 expansion racks using the interface
module IM 463-2
• By plugging in certain S5 modules in an adapter casing in the central rack of
the S7-400
How you address S5 modules with SIMATIC S7 is explained in the "S7-400,
M7-400 Programmable Controllers, Hardware and Installation" Manual or the
description supplied with the adapter casing.
This chapter explains how you can modify certain properties of S7-300 and S7-400
programmable controllers by setting system parameters or using system functions
(SFCs).
You will find detailed information on the module parameters in the STEP 7 online
help and in the following manuals:
• "S7-300 Programmable Controller, Hardware and Installation" Manual
• "S7-300, M7-300 Programmable Controllers, Module Specifications" Reference
Manual
• "S7-400, M7-400 Programmable Controllers, Module Specifications" Reference
Manual
You will find all you need to know about SFCs in the "System Software for S7-300
and S7-400, System and Standard Functions" Reference Manual.
SFC Purpose
Assigning parameters to modules
SFC15 Transfers any data to the addressed signal module
DPWR_DAT
Reading out diagnostic information
SFC13 Reads the diagnostic information (asynchronous read access)
DPNRM_DG
SFC14 DPRD_DAT Reads consistent data (length 3 or greater than 4 bytes)
Default Settings
• When supplied, all the configurable modules of the S7 programmable controller
have default settings suitable for standard applications. With these defaults,
you can use the modules immediately without making any settings. The default
values are explained in the module descriptions in the following manuals:
• "S7-300 Programmable Controller, Hardware and Installation" Manual
• "S7-300, M7-300 Programmable Controllers, Module Specifications" Reference
Manual
• "S7-400, M7-400 Programmable Controllers, Module Specifications" Reference
Manual
SFC Purpose
SFC55 WR_PARM Transfers the modifiable parameters (data record 1) to the
addressed signal module
SFC56 WR_DPARM Transfers the parameters from the corresponding SDBs to the
addressed signal module
SFC57 PARM_MOD Transfers all parameters from the corresponding SDBs to the
addressed signal module
SFC58 WR_REC Transfers any data record to the addressed signal module
The system functions are described in detail in the "System Software for S7-300
and S7-400, System and Standard Functions" Reference Manual.
Which module parameters can be modified dynamically is explained in the
following manuals:
• "S7-300 Programmable Controller, Hardware and Installation" Manual
• "S7-300, M7-300 Programmable Controllers, Module Specifications" Reference
Manual
• "S7-400, M7-400 Programmable Controllers, Module Specifications" Reference
Manual
All S7-300/S7-400 CPUs are equipped with a clock (real-time clock or software
clock). The clock can be used in the programmable controller both as clock master
or clock slave with external synchronization. The clock is required for time-of-day
interrupts and run-time meters.
Time Format
The clock always indicates the time (minimum resolution 1 s), date, and weekday.
With some CPUs it is also possible to indicate milliseconds (refer to the "S7-300
Programmable Controller, Hardware and Installation" Manual and "S7-400, M7-400
Programmable Controllers Module Specifications" Reference Manual).
Clock Memory
The clock memory is a memory byte that changes its binary state periodically at a
pulse-pause ratio of 1:1. You select which memory byte is used on the CPU when
you assign parameters for the clock memory using STEP 7.
Uses
You can use clock memory bytes in the user program, for example, to activate
flashing lights or to trigger periodic activities (for example, measuring an actual
value).
Possible Frequencies
Each bit of the clock memory byte is assigned a frequency. The following table
shows the assignment:
Note
Clock memory bytes are not synchronous with the CPU cycle, in other words, in long
cycles, the state of the clock memory byte may change several times.
Timers
Timers are a memory area of the system memory. You specify the function of a
timer in the user program (for example, on-delay timer). The number of timers
available depends on the CPU.
Note
• If you use more timers in your user program than the CPU permits, a
synchronous error is signaled and OB121 started.
• On the S7-300 (with the exception of the CPU 318), timers can be started and
updated simultaneously only in OB1 and OB100; in all other OBs timers can
only be started.
Absolute and Symbolic Addressing .............. 7-1 Outputs and Bit Memory (I/Q/M).............. 12-6
Access Rights ............................................16-3 Asynchronous Errors ................................ 21-25
Access Rights to Blocks and Source Files .... 9-3 OB81 ..............................21-26, 21-27, 21-28
Accessible Nodes .......................................16-1 Using OBs to React to Errors .................. 4-33
Displaying...............................................16-1 Asynchronous Events................................. 4-15
ACT_TINT..................................................4-25 Attributes for Blocks and Parameters .......... 8-14
Activating ...................................................7-11 Authorization................................................2-1
Display of Symbols in the Block...............7-11 First Installation ........................................2-2
Activating the Display of Symbols in Guidelines ................................................2-4
the Block ................................................7-11 Handling...................................................2-4
Actual Parameters ......................................4-16 Installing...................................................2-2
Address Assignments Losing ......................................................2-1
Checking ................................................2-13 Original Diskette .......................................2-1
Address Priority Removing.................................................2-4
Setting..................................................... 7-5 Restoring .................................................2-4
Addresses Transferring..............................................2-1
Inserting in a Variable Table ....................18-4 Uninstalling ..............................................2-1
Rewiring .................................................8-14 Upgrading ................................................2-3
Without Symbols...................................12-11 Authorization Diskette.............. 2-1, 2-2, 2-3, 2-4
Addresses and Data Types Permitted in Authorization Program..................................2-3
the Symbol Table..................................... 7-7 Authorizations Number .................................2-6
Addresses Without Symbols .......................12-8 AuthorsW.....................................................2-2
Addressing .................................................. 7-1 AUTHORSW.EXE ........................................2-1
Absolute ............................................7-1, 7-2 Avoiding Errors when Calling Blocks ........... 9-25
Symbolic.....................................7-1, 7-2, 7-4 Background OB
Archive Priority ................................................... 4-31
CPU Messages............... 14-22, 14-23, 14-24 Programming.......................................... 4-32
Archiving Background OB (OB90).............................. 4-31
Procedure...............................................22-6 Background Organization Block (OB90) ...... 4-31
Projects and Libraries .............................22-5 Basic Information on Data Blocks................ 10-1
Requirements .........................................22-6 Basic Information on Programming in
Uses.......................................................22-5 STL Source Files .................................... 11-1
Assigning and Editing Block-Related Basic Procedure
Messages ...............................................14-7 for Determining the Cause of a STOP ... 21-13
Assigning and Editing Symbol-Related Planning an Automation Project ................3-1
Messages .............................................14-16 when Printing ......................................... 22-2
Assigning Message Numbers......................14-6 Basic Procedure for Creating Logic Blocks ....9-1
Assigning Parameters Bit Memory ....................................... 12-5, 12-6
Signal Modules with Hardware Interrupt Assignment List ............................. 12-5, 12-6
Capability............................................4-29 Bit Messaging ................................... 14-1, 14-2
Assigning Parameters to the PG/PC Block Setting the Call Environment ............. 19-8
Interface .................................................2-12 Block Calls ...................................................4-8
Assignment List ..........................................12-5 Block Comment.......................................... 9-13
for Inputs Block Folder............................................... 5-12
From:
Your Name:...............................................................................................................................
Your Title: .................................................................................................................................
Company Name:.........................................................................................................................
Street: .................................................................................................................................
Country: ..............................................................................................................................
Phone: ................................................................................................................................
❐ Automotive ❐ Pharmaceutical
❐ Chemical ❐ Plastic
❐ Food ❐ Textiles
❐ Petrochemical
Remarks Form
Your comments and recommendations will help us to improve the quality and usefulness of our
publications. Please take the first available opportunity to fill out this questionnaire and return it
to Siemens.
Please give each of the following questions your own personal mark within the range from 1
(very good) to 5 (poor).
Additional comments:
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
.............................................................................................................................................................................................