Simotion (Basic)
Simotion (Basic)
System overview 1
Technology Packages and
Technology Objects 2
SIMOTION
Programming with
Technology Objects 3
SIMOTION SCOUT
Basic functions Error Handling in Technology
4
Objects
Programming of general
standard functions 7
Programming of general
system function blocks 8
Error sources and efficient
programming 9
Appendix A A
03/2007
Safety Guidelines
This manual contains notices you have to observe in order to ensure your personal safety, as well as to prevent
damage to property. The notices referring to your personal safety are highlighted in the manual by a safety alert
symbol, notices referring only to property damage have no safety alert symbol. These notices shown below are
graded according to the degree of danger.
DANGER
indicates that death or severe personal injury will result if proper precautions are not taken.
WARNING
indicates that death or severe personal injury may result if proper precautions are not taken.
CAUTION
with a safety alert symbol, indicates that minor personal injury can result if proper precautions are not taken.
CAUTION
without a safety alert symbol, indicates that property damage can result if proper precautions are not taken.
NOTICE
indicates that an unintended result or situation can occur if the corresponding information is not taken into
account.
If more than one degree of danger is present, the warning notice representing the highest degree of danger will
be used. A notice warning of injury to persons with a safety alert symbol may also include a warning relating to
property damage.
Qualified Personnel
The device/system may only be set up and used in conjunction with this documentation. Commissioning and
operation of a device/system may only be performed by qualified personnel. Within the context of the safety notes
in this documentation qualified persons are defined as persons who are authorized to commission, ground and
label devices, systems and circuits in accordance with established safety practices and standards.
Prescribed Usage
Note the following:
WARNING
This device may only be used for the applications described in the catalog or the technical description and only
in connection with devices or components from other manufacturers which have been approved or
recommended by Siemens. Correct, reliable operation of the product requires proper transport, storage,
positioning and assembly as well as careful operation and maintenance.
Trademarks
All names identified by are registered trademarks of the Siemens AG. The remaining trademarks in this
publication may be trademarks whose use by third parties for their own purposes could violate the rights of the
owner.
Disclaimer of Liability
We have reviewed the contents of this publication to ensure consistency with the hardware and software
described. Since variance cannot be precluded entirely, we cannot guarantee full consistency. However, the
information in this publication is reviewed regularly and any necessary corrections are included in subsequent
editions.
Content
This document is part of the System and Function Descriptions documentation package.
Scope of validity
This manual is valid for SIMOTION SCOUT V4.1:
SIMOTION SCOUT V4.1 (engineering system for the SIMOTION product range),
SIMOTION Kernel V4.1, V4.0, V3.2, V3.1 or V3.0
SIMOTION technology packages Cam, Cam_ext (Kernel V3.2 and later) and TControl in
the version for the respective kernel (including technology packages Gear, Position and
Basic MC up to Kernel V3.0).
Basic functions
Function Manual, 03/2007 3
Preface
SIMOTION Documentation
An overview of the SIMOTION documentation can be found in a separate list of references.
This documentation is included as electronic documentation with the supplied SIMOTION
SCOUT.
The SIMOTION documentation consists of 9 documentation packages containing
approximately 60 SIMOTION documents and documents on other products (e.g.
SINAMICS).
The following documentation packages are available for SIMOTION V4.1:
SIMOTION Engineering System
SIMOTION System and Function Descriptions
SIMOTION Diagnostics
SIMOTION Programming
SIMOTION Programming - References
SIMOTION C2xx
SIMOTION P350
SIMOTION D4xx
SIMOTION Supplementary Documentation
Basic functions
4 Function Manual, 03/2007
Preface
Additional support
We also offer introductory courses to help you familiarize yourself with SIMOTION.
Please contact your regional training center or our main training center at D-90027
Nuremberg, phone +49 (911) 895 3202.
Basic functions
Function Manual, 03/2007 5
Table of contents
Preface ...................................................................................................................................................... 3
1 System overview...................................................................................................................................... 15
1.1 SIMOTION motion control............................................................................................................15
1.2 Fields of application .....................................................................................................................16
1.3 Fusion of PLC and motion control ...............................................................................................17
1.4 Totally Integrated Automation ......................................................................................................17
1.5 Hardware platforms......................................................................................................................18
1.6 System architecture .....................................................................................................................19
1.6.1 SIMOTION system architecture ...................................................................................................20
1.6.2 SIMOTION SCOUT Engineering System ....................................................................................21
1.6.3 SIMOTION project .......................................................................................................................22
1.6.4 Offline/online mode ......................................................................................................................23
1.6.5 Programming................................................................................................................................23
2 Technology Packages and Technology Objects ...................................................................................... 25
2.1 Introduction ..................................................................................................................................25
2.2 Technology packages ..................................................................................................................28
2.3 Technology objects (TO)..............................................................................................................28
2.3.1 Instantiation and configuration .....................................................................................................29
2.3.2 Programming................................................................................................................................29
2.3.3 Programming................................................................................................................................30
2.3.4 Interconnections...........................................................................................................................33
2.3.5 Technology objects and DCC ......................................................................................................34
2.3.6 Available technology objects........................................................................................................36
2.4 SIMOTION memory concept (target system) ..............................................................................37
2.4.1 Storage Concept in the Target System........................................................................................37
2.5 Expert list .....................................................................................................................................39
2.5.1 Expert list for configuration data and system variables ...............................................................40
2.5.2 Using the expert list .....................................................................................................................43
2.6 Interconnection of technology objects (for experts) .....................................................................48
2.6.1 Interconnection via the general interconnection screen form in SCOUT.....................................49
2.6.2 General properties of interconnection interfaces .........................................................................50
2.6.3 Interconnection interfaces on the TOs.........................................................................................51
2.6.4 'Motion' interconnection interface type.........................................................................................55
2.6.5 'LREAL' interconnection interface type ........................................................................................56
3 Programming with Technology Objects ................................................................................................... 59
3.1 Definitions ....................................................................................................................................59
3.2 Programming technology objects (TOs) ......................................................................................60
3.2.1 Using technology functions in a program.....................................................................................60
Basic functions
Function Manual, 03/2007 7
Table of contents
Basic functions
8 Function Manual, 03/2007
Table of contents
Basic functions
Function Manual, 03/2007 9
Table of contents
Basic functions
10 Function Manual, 03/2007
Table of contents
Basic functions
Function Manual, 03/2007 11
Table of contents
Basic functions
12 Function Manual, 03/2007
Table of contents
Basic functions
Function Manual, 03/2007 13
Table of contents
Basic functions
14 Function Manual, 03/2007
System overview
This section provides a brief overview of the structure and application of the SIMOTION
1
motion control system.
Basic functions
Function Manual, 03/2007 15
System overview
1.2 Fields of application
Basic functions
16 Function Manual, 03/2007
System overview
1.3 Fusion of PLC and motion control
PLC functionality
(IEC 61131-3)
On the hardware side, this means that the programmable controller is able to process motion
functions. The hardware platform can be selected individually.
On the software side, the fusion of automation functions and motion functions makes for
simpler engineering. This starts with the configuration and continues through parameter
assignment and programming.
Consistency with SIMATIC is another essential feature, since both systems can be used
together in one plant.
See also
Hardware platforms (Page 18)
Basic functions
Function Manual, 03/2007 17
System overview
1.5 Hardware platforms
Automation with SIMATIC includes all of the technologies that your automation landscape
requires, including programmable controllers, PC-based control, automation computers,
distributed I/O, HMI systems, communication networks or process control systems. Because
of its modularity, you can use one complete, uniform system to implement the exact solution
that satisfies your process requirements and is economically feasible.
SIMOTION and SIMATIC are integrated in the sense of Totally Integrated Automation. This
consistency is ensured in two ways - through integration of SIMOTION SCOUT in the
SIMATIC Manager and by the use of the same engineering philosophy for comparable
activities. Engineering processes that are not available in SIMATIC (motion control, output
cam controller, etc.) or that are required by SIMOTION to meet the demands of a distributed
system are selected based on optimal usability. Moreover, SIMOTION is integrated into
PROFINET and includes all of the requisite system features for this purpose.
Basic functions
18 Function Manual, 03/2007
System overview
1.6 System architecture
The PROFIBUS can also be used for communication with operator panels - for example
from the SIMATIC HMI product range - or higher-level control systems such as SIMATIC
S7.
SIMATIC HMI panels as well as PCs with ProTool/Pro, WinCC flexible or OPC interfaces
are suitable as operator systems.
SIMOTION C2xx allows for the following:
Freedom in the selection of the drives
Wide range of process signals
Retrofit applications via integrated analog interfaces
Direct connection of analog drives and stepper drives
Drive-based (SIMOTION D4xx)
The SIMOTION D is directly integrated in the closed-loop control module of the
SINAMICS S120 multi-axis drive system.
Two PROFIBUS connections with PROFIdrive interface as well as two Industrial Ethernet
interfaces are available onboard.
SIMOTION D4xx offers the functionality of the SIMOTION Cxx and allows for the
integration of control and drive in one component.
SIMOTION D4xx offers the full functionality of SIMOTION and allows for the integration of
control and drive in one component.
See also
Technology objects (TO) (Page 28)
SIMOTION SCOUT Engineering System (Page 21)
SIMOTION project (Page 22)
Offline/online mode (Page 23)
Programming (Page 23)
SIMOTION system architecture (Page 20)
Execution System, Tasks, and System Cycle Clocks (Page 119)
Basic functions
Function Manual, 03/2007 19
System overview
1.6 System architecture
6,027,21XVHU &XVWRPL]HG6,027,21
SURJUDP )XQFWLRQ DSSOLFDWLRQ
OLEUDULHV
8VHUSURJUDP
0RWLRQFRQWURO 2WKHUWHFKQRORJ\
%DVLFIXQFWLRQDOLW\LQ WHFKQRORJ\ SDFNDJHV '&&FKDUWV
DFFRUGDQFHZLWK,(&
SDFNDJH )XQFWLRQOLEUDULHV
6\VWHPIXQFWLRQV 7HFKQRORJ\SDFNDJHV
RSHUDWLQJV\VWHP,2KDQGOLQJFRPPXQLFDWLRQ
%DVLFIXQFWLRQDOLW\
'ULYHV ,2 $GGLWLRQDOFRPSRQHQWV
VHQVRUVDFWXDWRUV
The basic functionality of the device (SIMOTION Kernel) includes functions for open-loop
and closed-loop control as well as logic and arithmetic. Program execution can be cyclical,
time-triggered or interrupt-triggered. As a result, the SIMOTION Kernel contains the
functions needed for virtually all applications and corresponds in essence to a PLC with the
IEC 61131-3 command set plus system functions for controlling various components, such
as inputs and outputs.
You can expand the SIMOTION Kernel of the device by downloading technology packages.
You access the technology packages from the user program using special language
commands in the same way that you access the SIMOTION Kernel.
For particular tasks, you can either use existing applications or you can program and link the
required applications yourself. The applications are programmed in compliance with IEC
61131-3 and can be adapted to your specific task.
In addition, SIMOTION provides function libraries that include the system functions and
motion functions. The function libraries contain functions and access to system variables of a
technology object and are linked to the associated device and technology package in
SIMOTION SCOUT.
For special tasks, such as closed-loop control functions, you can use wiring diagrams and
execute them in the corresponding DCC execution tasks using blocks connected with a
graphical tool.
Basic functions
20 Function Manual, 03/2007
System overview
1.6 System architecture
&RQILJXUDWLRQ 7HVWDQGGLDJQRVWLFV
3URMHFWQDYLJDWRU
&DPHGLWRU 'ULYHFRPPLVVLRQLQJ
The SIMOTION SCOUT engineering system is a powerful tool that acts as the PC
development environment to provide optimal support for the required engineering steps in a
user-friendly way. It is integrated in the SIMATIC landscape, where it operates as an option
package for STEP7. Special attention has been given to optimum usability and a
comprehensive, function-oriented view of the automation task.
Basic functions
Function Manual, 03/2007 21
System overview
1.6 System architecture
The project is the highest level in the data management hierarchy. SIMOTION SCOUT
saves all data which belongs, for example, to a production machine, in the project directory.
Basic functions
22 Function Manual, 03/2007
System overview
1.6 System architecture
6,027,21 2IIOLQHSURMHFW
6&287
5XQWLPHSURMHFW
7DUJHWV\VWHP
Figure 1-6 Connection between offline and runtime project with SIMOTION SCOUT
1.6.5 Programming
The open-loop control and motion control tasks are predefined in the user program.
The following programming languages are available to create your user programs:
MCC - Motion Control Chart
is a graphical programming language for programming logic and motion control functions.
MCC charts are created.
ST - Structured Text
is a text-based programming language compliant with IEC 61131-3 that enables you to
create an ST source that can comprise several programs.
You can also edit an ST source file using an external ST editor.
Programs created using MCC can be converted to ST, but notvice versa.
LAD/FBD - Ladder Logic / Function Block Diagram
are graphics-based programming languages in compliance with IEC 61131-3 for
programming logic as well as motion control via PLCopen blocks.
DCC - Drive Control Chart
Is a graphic programming language for programming drive functionality.
Basic functions
Function Manual, 03/2007 23
System overview
1.6 System architecture
Basic functions
24 Function Manual, 03/2007
Technology Packages and Technology Objects 2
This section contains general information on technology objects and their basic functions
and properties.
2.1 Introduction
6,027,21 8VHUSURJUDP
([HFXWLRQV\VWHPEDVLFIXQFWLRQDOLW\LQDFFRUGDQFHZLWK,(&
,2GLDJQRVWLFVFRPPXQLFDWLRQ
Basic functions
Function Manual, 03/2007 25
Technology Packages and Technology Objects
2.1 Introduction
8VHUSURJUDPV83
6,027,21 6\QFKUR
,QWHUUXSW
7DVN
QRXV7DVN 83Z
0RWLRQ7DVN
%DFN 83]
83\
JURXQG7DVN
83[
([HFXWLRQV\VWHPEDVLFIXQFWLRQDOLW\LQDFFRUGDQFHZLWK,(&
,2GLDJQRVWLFVFRPPXQLFDWLRQ
Technology Objects
SIMOTION provides technology objects for the technology and motion control.
The technology objects offer the user a technological view of actuators and sensors and
provide technological functions for these, for example:
the TO axis for drive and encoder
the TO external encoder for one encoder only
the TO outputCam/camTrack for an output to be switched in a defined way
the TO measuringInput for a measuring input
Moreover, technology objects for the preparation of technological data on the system level
are available, for example:
the TO FollowingObject for synchronous operation between two axes or one axis on an
encoder value
the TO path for traversing path axes along a path and a positioning axis synchronous to
the path
the TO cam for representing complex programmable functions
the TO additionObject, TO formulaObject for the processing of motion data and
technological data on the system side
The technology objects are implemented by the system in system tasks, e.g. IPO task,
IPO_2 task or servo task.
Basic functions
26 Function Manual, 03/2007
Technology Packages and Technology Objects
2.1 Introduction
Instantiation
Technology objects are provided by the system as technology object types adapted to the
specific application using instantiation.
6,027,21 8VHUSURJUDP
7HFKQRORJLFDOYLHZ
7HFKQRORJ\SDFNDJH
73
7HFKQRORJ\
V\VWHP
72W\SH
HJD[LV ,QVWDQWLDWLRQ $[LVB
([HFXWLRQV\VWHPEDVLFIXQFWLRQDOLW\LQDFFRUGDQFHZLWK,(&
,2GLDJQRVWLFVFRPPXQLFDWLRQ
'ULYHDVVLJQHGLQWKH
FRQILJXUDWLRQ
'ULYH
Technology object types are combined in one technology package and loaded to the runtime
system.
Basic functions
Function Manual, 03/2007 27
Technology Packages and Technology Objects
2.2 Technology packages
3DUDPHWHU
$FWXDOYDOXHV
&RPPDQGV
6WDWXV
&RQILJXUDWLRQ $ODUPV
7HFKQRORJ\REMHFW
$FWXDWRU 6HQVRU
For the cross-TO processing of technological data on the system level, the technology
objects provide defined input and output interfaces.
See also
Available technology objects (Page 36)
Interconnections (Page 33)
Basic functions
28 Function Manual, 03/2007
Technology Packages and Technology Objects
2.3 Technology objects (TO)
See also
Programming of general standard functions - overview (Page 275)
System variables (Page 77)
Configuration data (Page 81)
2.3.2 Programming
System variables comprise technological parameters and display values of technology
objects.
SIMOTION SCOUT usually provides screen forms for the setting of technological
parameters and standard values/defaults.
System variables are individual values or structures that are read out consistently.
Note
The object will be reinitialized after restarting a technology object.
Among other things, this brings about that, for example, system variables cannot be read
until the end of the restart, i.e. are not available.
Additional information on the system variables can be found in System variables (Page 77).
Basic functions
Function Manual, 03/2007 29
Technology Packages and Technology Objects
2.3 Technology objects (TO)
2.3.3 Programming
The technological functions are activated/deactivated using specific commands.
Return value
The return value supplies the result of the function call, e.g. function was/is carried out as
planned or there is an error.
CommandId
The CommandId can be used to uniquely identify and trace a TO command.
For information on parameters, step enabling conditions, diagnostics, etc., please refer to the
following:
Functions for CommandID (Page 345) and various examples in this manual.
SIMOTION MCC Motion Control Chart, Programming MCC Charts
For a detailed description of the TO commands, please refer to the SIMOTION Reference
Lists.
Programming model
The commands are assigned to tasks which are in turn assigned to the execution levels of
the task system.
Commands can be issued from all user program tasks of the system.
Basic functions
30 Function Manual, 03/2007
Technology Packages and Technology Objects
2.3 Technology objects (TO)
8VHUSURJUDP
7DVN 7DVN 7DVN
6,027,21
BHQDEOH$ BVWRS$ BJHW6WDWH$
BPRYH$
7HFKQRORJLFDOYLHZ
7HFKQRORJ\SDFNDJH
73
72W\SH 7HFKQRORJ\
HJD[LV ,QVWDQWLDWLRQ $[LVB V\VWHP
([HFXWLRQV\VWHPEDVLFIXQFWLRQDOLW\LQDFFRUGDQFHZLWK,(&
,2GLDJQRVWLFVFRPPXQLFDWLRQ
'ULYH
The execution time of a command on the technology object is the only factor that determines
the effectiveness of the command.
If commands are issued from multiple tasks, programming consistency must be ensured by
the user program.
Basic functions
Function Manual, 03/2007 31
Technology Packages and Technology Objects
2.3 Technology objects (TO)
In the TO commands you specify the response of the commands on the TO if more than one
command is issued to a command group between two processing cycle clocks, e.g.
replace/overwrite or command rejection.
Information on the command buffer and command activation can be found in the function
manuals of the individual technology objects.
Execution properties
The execution properties of technology objects are object-specific.
The following synchronous execution levels are provided for the execution of the technology
objects: DP cycle clock, servo cycle clock and IPO or IPO_2 cycle clock (except for
temperature controllers).
The instances of the technology objects are processed in different execution levels.
The command evaluation and motion control are processed in the IPO/IPO_2 cycle clock.
The position and setpoint control are processed in the servo cycle clock.
Communication with the drive is processed via PROFIBUS DP in the DP cycle clock or
PROFINET IO with IRT in the PN cycle clock.
The processing can be influenced by means of the system and object configurations.
System cycle clock setting
Setting the system cycle clocks also sets the sampling time for the motion control of axes
(IPO, IPO_2), the position control (servo) and the communication via PROFIBUS DP or
PROFINET IO with IRT.
When configuring objects, you can specify whether motion control is to be executed in the
IPO or IPO_2 cycle clock. This allows you to distinguish between operations that are time
critical and those that are not.
Technology objects are controlled from the user program through system function calls.
Alarms
A technology object monitors the execution and executability of technological functions as
well as the I/O required for the TO, and creates a technological alarm, if necessary.
A technological alarm has a TO-local alarm response, e.g. stop motion, and a global
response, e.g. stop system or call alarm task in which further responses can be specified.
The local and global responses can be set for specific alarms.
For a detailed description of the TO alarms, please refer to the SIMOTION Reference Lists.
See also
Execution system (Page 119)
Differences between cyclical and sequential programming (Page 63)
Process Alarms (Page 103)
Basic functions
32 Function Manual, 03/2007
Technology Packages and Technology Objects
2.3 Technology objects (TO)
2.3.4 Interconnections
There are interconnection interfaces defined on the technology objects for the exchange of
data/information between the technology objects on the system level. These interfaces
generally allow for the bidirectional exchange of data between individual technology objects.
The type of the external interfaces can be different on each TO type. There are no
interconnections or actuators/sensors required.
8VHUSURJUDP
670&&/$')%'
6,027,21
BHQDEOH$[LV$
BPRYH$
BHQDEOH$[LV&
BHQDEOH*HDULQJ%
7HFKQRORJLFDOYLHZ
7HFKQRORJ\SDFNDJH
7HFKQRORJ\V\VWHP
,QVWDQWLDWLRQ
73 &RQILJXUDWLRQ
72W\SHV $[LV )2 $[LV
$ % &
)2 IROORZLQJREMHFW
5XQWLPHV\VWHPIXQFWLRQV
F\FOHFORFNH[HFXWLRQV\VWHPFRPPXQLFDWLRQGLDJQRVWLFV
'ULYH$ 'ULYH%
Depending on the interface type, interconnection interfaces can exchange different data in
cyclic mode (cyclic motion data, e.g. s,v,a for the motion vector of type motion) and during
initialization (e.g. modulo information, units).
Implicit interconnection
If an interconnection is mandatory and unambiguous, it is implicitly created by the
SIMOTION SCOUT engineering system, e.g. measuring input with axis, cam with axis,
synchronous operation with axis. The corresponding TO types are offered under the axis.
Basic functions
Function Manual, 03/2007 33
Technology Packages and Technology Objects
2.3 Technology objects (TO)
See also
'Motion' interconnection interface type (Page 55)
'LREAL' interconnection interface type (Page 56)
Interconnection of technology objects (for experts) (Page 48)
Description
The data exchange between DCC and TO is performed by DCC diagrams
using the direct interconnection of block inputs and block outputs with system variables of
the TO;
for TO axes, it is possible to transfer cyclically the data specified in system variables,
such as override and setpoints, without commands needing to be issued each time in the
user program.
or via the forwarding of values calculated in DCC via commands and variables in the user
programs to the TO. The TOs have specific function-related interconnection interfaces.
The TOs themselves are not available as blocks in the DCC diagrams.
Basic functions
34 Function Manual, 03/2007
Technology Packages and Technology Objects
2.3 Technology objects (TO)
6,027,21
8VHUSURJUDP
670&&/$')%'
BHQDEOH$[LV$
BPRYH$
BHQDEOH$[LV&
BHQDEOH*HDULQJ%
7HFKQRORJLFDOYLHZ
'&&FKDUWV
7HFKQRORJ\V\VWHP
72
D[LVB$ 72)2 72D[LV
% &
,2
)2 IROORZLQJREMHFW
5XQWLPHV\VWHPIXQFWLRQV
F\FOHFORFNH[HFXWLRQV\VWHPFRPPXQLFDWLRQGLDJQRVWLFV
'ULYH$ 'ULYH%
See also
Sequence model for DCC blocks (DCB) (Page 195)
Basic functions
Function Manual, 03/2007 35
Technology Packages and Technology Objects
2.3 Technology objects (TO)
Basic functions
36 Function Manual, 03/2007
Technology Packages and Technology Objects
2.4 SIMOTION memory concept (target system)
Memory types
SIMOTION has a staggered memory management concept. The main memory is the RAM.
Data is written to the RAM during downloads and read from it during uploads. The ROM is
used for permanent storage (retained after power-off). Even after a target device has been
shut down, project data remains stored in the ROM. When the target device runs up, the
data is copied from the ROM to RAM and from there to the working memory, the Current
data memory. The content of the RAM is copied to the Current data memory during
switchover to the RUN mode. This memory is used in the RUN mode.
Basic functions
Function Manual, 03/2007 37
Technology Packages and Technology Objects
2.4 SIMOTION memory concept (target system)
Commissioning phase
The current data memory acts during active operation of a machine. During the
commissioning phase, the actual memory may contain variable values that differ from those
in the RAM memory (e.g. changes to configuration data in RUN, as these changes are only
made in the current data memory). When the commissioning stage has been completed (all
configuration data set as desired), accept the content of the Current data to the RAM with
the command Target system > Copy current data to RAM. Only after this copy procedure,
the currently effective configuration data will have been transferred to the RAM.
When you have transferred the modified configuration data to the RAM the configuration in
SCOUT is no longer consistent with the target system configuration, because the modified
configuration data is stored there. Read the data from the RAM with the menu command
Target system > Load > Configuration data to PG to reestablish a consistent system state.
To ensure a power-failsafe storage, execute the menu command Target system > Copy
RAM to ROM.
Note
Copy current to RAM does not transfer the values of the system variables to the RAM
memory. This means that "Save to memory card (Ram2Rom)" or "Save in the engineering
project (load configuration data in PG)" is not possible.
So that values of system variables can also be saved in the engineering project and on
memory card the value of system variables must be changed OFFLINE and then loaded into
the target system per download and saved.
Basic functions
38 Function Manual, 03/2007
Technology Packages and Technology Objects
2.5 Expert list
7DUJHW &RPPLVVLRQLQJ
GHYLFH &RQILJGDWDLQ 581
581
'RZQORDG
8SORDG
1H[W
6\VWHP 72UHVWDUW
YDULDEOHV RULPPHGLDWHO\
&RS\
520 5$0WR 5$0 &RS\FXUUHQWGDWD &XUUHQWGDWD
520 WR5$0
&RS\
FRGH PDLQ
0LFUR0HPRU\&DUG QRV\VWHP
&RPSDFW)ODVK&DUG
PHPRU\ YDULDEOHV PHPRU\
0HPRU\FDUG
6\VWHPGDWDWHFKQRORJ\SDFNDJHV72V
SURJUDPVXQLWGDWDHWFDUHLQWKH520
The memory areas that are affected by certain actions are presented below:
Power On and overall reset
Data (configuration data, default values of system variables) are loaded from ROM
(memory card) into the RAM and then into the actual memory.
Restarting a technology object
Data of the TO (configuration data, default values of system variables, cams) are loaded
from ROM (memory card) into the RAM and from there into the actual memory.
Basic functions
Function Manual, 03/2007 39
Technology Packages and Technology Objects
2.5 Expert list
Note
Special knowledge of the system is required to modify parameters in the expert list.
You can overwrite entries made using the expert list by calling wizards and
parameterization screen forms.
No check is made on dependencies with other parameters.
System variables
The System Variables tab lists the configuration data of the TO in
alphabetical order. There are system variables which can be written
(displayed in green) and which cannot be written (displayed in yellow).
Main Parameters
On the Selected Parameters tab, the most important system variables
and configuration data of a TO are displayed in alphabetical order,
separated according to system variables and configuration data. The
selection is a factory setting and cannot be changed. The list can be
closed, however it will be re-displayed at the next call.
Basic functions
40 Function Manual, 03/2007
Technology Packages and Technology Objects
2.5 Expert list
Create new tab Click this button if you want to create a new or open an existing user-
defined list or default parameter list.
Quick search In this text field, you can carry out a quick search within the expert list.
The columns Parameter, Parameter text and Value are searched.
Collect changes As long as the button is activated, all the configuration data changed by
you (in the RUN mode) is collected and the new values do not take effect
in the target system. Only when Activate changes is clicked, do all the
changes to the configuration data take effect in the target system.
Activate changes Click this button if all the collected changes to the configuration data are
to take effect in the target system
Configuration selection list Select whether the parameters for a linear axis or rotary axis are to be
displayed or changed for standard, force or pressure in the table in the
expert list.
New user-defined list By clicking this button a new user-defined list is created.
Open user-defined list By clicking this button an existing user-defined list is opened.
Save user-defined list By clicking this button the currently opened user-defined list is stored.
Edit user-defined list By clicking this button you access the editing mode of the currently
opened user-defined list.
Cancel editing mode. By clicking this button the editing mode is canceled. Changes are
discarded.
Enter comment lines (editing mode) By clicking this button you change the format of newly created lines in
"Comment".
Enter headlines (editing mode) By clicking this button you change the format of newly created lines in
"Headline".
Enter parameter lines (editing mode) By clicking this button you change the format of newly created lines in
"Parameter".
Parameter The name of the configuration data item or the system variable is
displayed here. Click the plus sign to open the entire structure.
Parameter text A brief description of the system variable or the configuration data is
displayed.
Basic functions
Function Manual, 03/2007 41
Technology Packages and Technology Objects
2.5 Expert list
See also
Storage Concept in the Target System (Page 37)
Basic functions
42 Function Manual, 03/2007
Technology Packages and Technology Objects
2.5 Expert list
Displaying the help for the system variables and the configuration data
1. Select Help > Context-sensitive help or press the Shift+F1 keys.
The cursor changes to a question mark.
2. Click the configuration data item or the system variable in the expert list for which help is
required.
The help for this is displayed.
Basic functions
Function Manual, 03/2007 43
Technology Packages and Technology Objects
2.5 Expert list
Continue search:
1. Press the F3 key.
The next cell containing this term is searched.
If the search function does not find any further entry in the list, a message is output.
Individual cell areas can be selected by navigating with the arrow keys or with the mouse:
1. The cells are selected in the course of navigating by simultaneously pressing the Shift
key.
Cell areas can also be selected using the mouse:
1. Place the cursor on a line, press the left mouse key and drag the mouse pointer across
the cell area to be selected.
Basic functions
44 Function Manual, 03/2007
Technology Packages and Technology Objects
2.5 Expert list
3. Transfer the desired parameters from the other tabs via copy & paste (context menu or
Ctrl + C and Ctrl + V).
Example:
Basic functions
Function Manual, 03/2007 45
Technology Packages and Technology Objects
2.5 Expert list
4. To save the list, click the Save button or select Save list in the context menu of the
tab and confirm with OK.
The name of the saved list is taken as label for the tab.
5. To print the list, select Print list in the context menu of the tab.
Basic functions
46 Function Manual, 03/2007
Technology Packages and Technology Objects
2.5 Expert list
2. In the displayed selection window, activate the Save as executable script ... option and
click OK to confirm.
3. In the Add script window, you can enter a name for the script. Then click OK to confirm.
The script will be saved in the SCRIPTS folder below the object. If the script folder does
not exist, it will be created.
Optionally, you can also export the script as ASCII text:
1. In the Save as window, you can select a storage location and the name for the text file.
Then click OK to confirm or click Cancel if the script is not to be exported.
Basic functions
Function Manual, 03/2007 47
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
3DUDPHWHU
$FWXDOYDOXHV
&RPPDQGV
6WDWXV
&RQILJXUDWLRQ $ODUPV
,QSXWVLGH 2XWSXWVLGH
LQWHUFRQQHFWLRQ LQWHUFRQQHFWLRQ
LQWHUIDFHV 7HFKQRORJ\REMHFW LQWHUIDFHV
$FWXDWRU 6HQVRU
Basic functions
48 Function Manual, 03/2007
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
On the left-hand side, all input-side interconnection interfaces of the selected object are
listed, on the right-hand side, the output-side interconnection interfaces of the same type.
Only the output-side interfaces displayed bold can be selected.
When one of these lines is highlighted (clicked), you can open a tree that displays all
interconnection possibilities.
Only those elements displayed bold can be selected.
The display of the devices and technology objects is used only for orientation purposes.
Direct input can be made in the input line.
Only complete and correct inputs are accepted. The input field cannot be exited if incorrect
inputs are made.
If the input-side interconnection interface has the characteristic of multiple interconnectability
and can therefore be interconnected with several output-side interconnection interfaces,
another line is added for the interconnection of the input-side interconnection interface after
the interconnection with an output-side interconnection interface.
An interconnection can be removed by deleting a line.
The value will be accepted when the input line is exited.
Basic functions
Function Manual, 03/2007 49
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Enabling/disabling
The input-side interconnection interfaces are activated with a command on the associated
TO or they are active by default.
In the case of multiple interconnectability of an input-side interconnection interface,
enabling/disabling is carried out with a command for the technological function, e.g.:
Selection of the cam in _enableCamming() via the cam parameter
Selection of the technology object for the master value in the _setMaster() command via
the master parameter
Selection of the technology object for the reference value of the MotionIn interface in the
_run...basedMotionIn...() command via the mastertype.reference parameter
Selection of a profile or the cam in the _runProfile() commands via the profile
parameter
For information on this topic, please refer to the function manuals of the respective
technology objects.
Validity
Interconnection interfaces have valid values when the interconnection is established and the
interconnection values have the 'valid' status; invalid interconnections / interconnection
values have the value 0.
If a (virtual) axis is set to simulation, the output-side setpoints will continue to be updated, the
actual values will be frozen.
The status available in the system variables can be read out to determine whether the
interconnection value or the substitute value is valid after ramp-up.
Basic functions
50 Function Manual, 03/2007
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Alarm Response
In the case of a faulty interconnection, a technological alarm is only issued when a function
on the interconnection interface is activated.
In the case of multiple interconnectability of an input-side interconnection interface, a
reference TO must be selected.
Programmed functions will be cancelled at the transition from STOPU to STOP,
interconnection functions remain active at the transition from STOPU to STOP.
TO Interface Type
Drive axis (driveAxis)
Input-side interconnection interfaces:
Motion input Motion
Torque limit, positive LREAL
Torque limit, negative LREAL
Additive torque LREAL
Motion profile MotionProfile
Force/pressure profile ForceProfile
Valve characteristic (hydraulic axis) ValveCharacteristics
Output-side interconnection interfaces:
Motion setpoint Motion
Motion actual value with extrapolation Motion
Actual torque LREAL
Position axis
Input-side interconnection interfaces:
As for drive axis
Output-side interconnection interfaces:
As for drive axis plus additionally:
Interface for output cam, cam track Specific
(implicitly interconnected with the axis by the system when
creating an output cam, cam track)
Interface for measuring input Specific
(implicitly interconnected with the axis by the system when
creating a measuring input)
Following axis
input-side interconnection interfaces:
As for position axis plus additionally:
Interface for synchronous object Specific
(implicitly interconnected by the system when creating a
following axis/following object)
Basic functions
Function Manual, 03/2007 51
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Basic functions
52 Function Manual, 03/2007
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Basic functions
Function Manual, 03/2007 53
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Basic functions
54 Function Manual, 03/2007
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Motion basis
The motion vector can have a different motion basis: position or velocity.
The position component is zero for the "velocity" motion basis.
A drive axis provides only the motion vector with the velocity motion basis on the output side.
Commands / command parameters (TO axis) or the configuration (TO additionObject, TO
fixedGear) are used to consider/set the motion basis.
The components of the motion vector are maintained consistent at the output side of the TO
axis, TO fixedGear (the derivation of the position value is the velocity value, the derivation of
the velocity value is the acceleration).
The components of the motion vector are not maintained consistent at the output side of the
TO additionObject and TO formulaObject.
The velocity and the acceleration can be specifically defined in this item for the position.
Basic functions
Function Manual, 03/2007 55
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
Fixed gear
Addition object
Formula object
External encoder
'Torque' output-side interconnection interface on the axis for providing the actual torque
There is a 'Torque' output-side interconnection interface available on the axis for issuing the
actual torque to other TOs.
Prerequisite is the activation of the process-related field on the TO axis.
The actual torque supplied by the drive in the additive process-related field is issued.
It is issued in the unit set on the axis.
The output-side interconnection interface can be interconnected several times.
The output-side interconnection interface 'ActualTorque' cannot be distributed.
Basic functions
56 Function Manual, 03/2007
Technology Packages and Technology Objects
2.6 Interconnection of technology objects (for experts)
'AdditiveTorque' Input-side interconnection interface on the axis for specifying an additive torque
There is a 'AdditiveTorque' input-side interconnection interface of the LREAL type available
on the axis for specifying an additive torque to the drive using the additive process-related
field.
To specify an additive torque depending on other TOs, the input-side interconnection
interface'AdditiveTorque' can be interconnected with output-side interconnection interfaces
of the LREAL type of other TOs on the axis.
The input-side interface 'AdditiveTorque' cannot be interconnected several times and it
cannot be distributed.
Output-side interconnection interfaces of the LREAL type have, for example:
TO axis with the output-side interconnection interface 'Torque'
TO formulaObjectType with the output-side interconnection interface 'LRealOut'
Sensor TO
Controller Object TO
Basic functions
Function Manual, 03/2007 57
Programming with Technology Objects 3
3.1 Definitions
The following section provides an introduction to the motion components primarily from the
perspective of the ST programming language. This mainly involves system functions and
system variables. Some definitions are provided below:
System functions are functions used for the system management. They provide access to
technology-neutral functionality of the device. System functions are always available.
A technology object (TO) represents a technological functionality (for example,
positioning an axis, assigning parameters for an output cam) in the SIMOTION user
program.
TO functions or technology commands are language commands available to the
individual TOs, i.e. functions for a technology object. .
A technology package contains one or several technology objects.
System variables are attributes of the technology objects and the basic system. You can
use system variables to assign parameters for technology objects and the basic system
or to read their status.
Note
You will find additional information about the basics of motion control technology and, in
particular, technology objects, in the SIMOTION Motion Control Technology Objects
function manuals.
You will find information on configuration of technology objects in the SIMOTION Motion
Control function descriptions.
This manual only provides an overview of the above topics. Detailed information on
programming the technology objects is available in the function manuals SIMOTION
Motion Control - technology objects.
Basic functions
Function Manual, 03/2007 59
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Table 3-2 Example of selecting a technology package and using a name space
INTERFACE
USEPACKAGE Cam AS Cam1;
USES ST_2;
FUNCTION function1;
END_INTERFACE
Basic functions
60 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
IMPLEMENTATION
FUNCTION function1 : VOID
VAR_INPUT
Axis : posAxis;
END_VAR
VAR
retVal: DINT;
END_VAR
retVal:= Cam1._enableAxis (
axis := axis,
nextCommand := Cam1.WHEN_COMMAND_DONE,
commandId := _getCommandId() );
END_FUNCTION
END_IMPLEMENTATION
Code Description
Name All TO function names (_enableAxis in the example) are defined identifiers
in the SIMOTION system that always begin with _ (underscore). To
maintain a distinction between these TO functions and user-defined FBs
and FCs, you should not create source file sections beginning with the _
character.
Input parameters When called, TO functions can contain one or more input parameters and
always supply a return value to the call location. Output parameters are not
supported.
For more information, see Subsection 8.1.2.
Return value All commands normally return a double-precision integer (DINT data type).
This indicates whether the command was successfully transferred to the
system and processed normally (return value of zero) or whether an error
occurred (return value other than zero).
Basic functions
Function Manual, 03/2007 61
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Example
If the application requires you to enable a virtual axis, you could program a source file like
the one shown in the following figure.
The following conditions must be fulfilled:
An instance of a positioning axis or speed axis has been created in SIMOTION SCOUT
as a virtual axis called Axis_1.
The myPos program has been assigned to MotionTask_1, for example. The Activation
after StartupTask option has been selected in the task configuration of MotionTask_1.
The source file has been downloaded to the target system.
After the CPU has changed to RUN mode, virtual axis Axis_1 will issue an enable. You can
verify the status of the axis enable in system variable Axis_1.control.
INTERFACE
USEPACKAGE cam;
PROGRAM myPos;
END_INTERFACE
IMPLEMENTATION
// The following program must be assigned to a
// MotionTask.
// In the task configuration, the "Activation
// after StartupTask" option must be selected.
PROGRAM myPos
VAR
retVal : DINT;
END_VAR
// Axis is enabled for positioning.
retVal := _enableAxis (
axis := Axis_1,
// TO instance identifier
nextCommand := WHEN_COMMAND_DONE,
// Condition for program advancement.
commandId := _getCommandId() );
// Unique command ID
END_PROGRAM
END_IMPLEMENTATION
Note
Use the long form for passing parameters (with value assignment) described in Input
parameters of the technology functions. This form is clearer and more flexible.
You will find tips on efficient use of parameters in system functions in Error sources and
efficient programming.
See also
Input parameters of technology functions (Page 64)
Efficient programming - overview (Page 413)
Basic functions
62 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Cyclic tasks
Cyclical tasks (such as the BackgroundTask) will be started by the system after their
completion or automatically after a defined time frame. The values of the static variables of
the assigned programs are retained. Cyclical tasks have a time monitoring and a defined
error response should the time monitoring be exceeded. This means the code contained in
cyclical tasks must perform its tasks quickly and efficiently. Tasks with a waiting character
(for example, wait for the positioning of an axis) can only be performed in several call cycles
of the cyclical task. This means TO system commands must normally be called with the
IMMEDIATELY step enabling condition for the nextCommand parameter. The subsequent
call cycles must then check the result of the system command for successful processing or
error. This procedure is also called asynchronous execution.
Sequential tasks
After start, sequential tasks (e.g. MotionTasks) are executed once and then terminated. At
each start, all local variables of the assigned programs are initialized; see Influence of the
compiler on variable initialization (Page 218) for variable initialization. Because sequential
tasks do not have any time monitoring, they can attain a run time of any length. Sequential
tasks are subject only to the control of the application. This means the application can start,
stop, pause and resume tasks. The code contained in sequential tasks processes tasks
successively, where the following task is normally performed only when the previous task
has been completed. For example, an axis is first released and then homed. This means TO
system command calls are performed using the WHEN_COMMAND_DONE step enabling
condition for the nextCommand parameter. The system function returns to the calling
sequential task only when the command has been processed. This is also called
synchronous execution.
General Procedure
In general, sequential sequences should be programmed in MotionTasks. The differences
between a sequential programming in a MotionTask and the cyclical programming in the
BackgroundTask are:
A MotionTask waits for just one step enabling condition (however linked conditions are
possible) at any one time in order to be continued. The step enabling condition is
checked with high priority in the interpolator cycle clock. To reduce the response time for
continuing the MotionTask, its priority can be increased temporarily (->
WAITFORCONDITION).
A normally cyclical program checks in each cycle a number of signal states and step
enabling conditions. This heavily loads the cycle time. The advantage compared with the
sequential type of programming lies in the parallel processing of requests and
sequences.
Basic functions
Function Manual, 03/2007 63
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Rule Example
Assignments
The actual parameter is always assigned to the formal In the example for the mandatory use of a variable , the
parameter. myAxis (Variable) and IMMEDIATELY (value) current
parameters are assigned to the formal parameters axis and
nextCommand so that the data can be processed in the
function.
Several input parameters
Several input parameters are separated by commas. In the example for the mandatory use of a variable:
_enableAxis (axis:=myAxis, nextCommand :=
IMMEDIATELY)
Order of input parameters
The input parameters can be in any order as long as the first In the example for the mandatory use of a variable,
two rules are followed. _enableAxis (nextCommand:=IMMEDIATELY,
axis:=myAxis) is also possible.
Input parameters with defaults
If you omit parameters containing default values, the system In the example for the mandatory use of a variable, you can
will set the default value automatically. omit input parameter nextCommand := IMMEDIATELY
because this is the default value.
Actual parameter as variable
Basic functions
64 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Rule Example
If you enter an actual parameter as a variable (TO variable In the example for the mandatory use of a variable, the
myAxis in the example), you must define and declare the user-defined function block posFB defines the TO instance
variable first. myAxis (myAxis:PosAxis).
The advantage is that you can reuse the source file sections When you call a TO function from this FB, the TO instance
that use these variables. is used as an actual parameter (Axis := myAxis).
For example, you might want to call a TO function in a user- The values for the TO instance are derived not from the
defined function block (FB), using variable axis identifiers as user-defined FB, but from the program called by this FB with
an input parameters. It would be awkward to have to call the myFB (myAxis := Axis).
function several times using constant axis names and would For the reasons named, you can also call the FB and, thus,
also mean that you could not reuse the FB. the TO function with myAxis := Axis2 or myAxis := Axis3,
You can also use other actual parameters as a variable. etc.
This means you can use the FB in all programs of the ST
source file and in programs of other source files with the aid
of the export function.
Actual parameters as values (enumerators)
If you enter actual parameters as values (next Command: = In the example for the mandatory use of a variable, the
IMMEDIATELY in the example), you must choose at least IMMEDIATELY and WHEN_COMMAND_DONE
one value from the various actual states (predefined enumerators are available for the nextCommand formal
enumerators). Enumerators are a derived data type. You will parameter in the _enableAxis TO function. The compiler
find basic information about enumerators in Subsection rejects other values during compilation of the program.
3.4.2.
Parameters for the transition and step enabling condition
With many motion commands, you can specify when the TO function is executed on the technology object and when the
next statement is processed (see Transition and step enabling condition)
Parameters for command identification
All motion commands must contain a parameter for the command identification. This allows you to track the status of the
command execution (see Diagnosis of the command execution).
Note
All system data types for enumerations (in system functions and system variables) begin
with the word Enum. For example, formal parameter nextCommand has enumeration data
type EnumNextCommandEnable (with values IMMEDIATELY or
WHEN_COMMAND_DONE).
All system data types for structures (in system functions and system variables) begin with
the word Struct.
If you do not begin user-defined data types with character string Enum or Struct, names
cannot overlap.
Appendix D of this manual contains all reserved identifiers of the ST (Structured Text)
programming language, the system functions, the system blocks, and the SIMOTION
devices.
The reserved identifiers of the SIMOTION technology packages can be found in the
Parameter Manuals for the SIMOTION technology packages.
Basic functions
Function Manual, 03/2007 65
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Table 3-6 Frequent reference parameters and effect of the associated value parameters
Table 3-7 Example of velocityType (reference parameter) and velocity (value parameter)
Basic functions
66 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
NOTICE
In the short form of parameter transfer, you must specify all parameter values (even
optional ones) separated by commas in the correct order!
Only a few system functions (see Functions for the runtime measurement of tasks, Task
control commands and Functions for the message configuration) require the short form of
parameter transfer when called. This is specified explicitly for the relevant functions.
Note
Use the long form (with value assignment) described above. This form is clearer and more
flexible.
Basic functions
Function Manual, 03/2007 67
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Table 3-9 Example of the mandatory use of a variable of the technology objects to data type
// ...
FUNCTION_BLOCK posFB
VAR_INPUT
myAxis: posAxis;
END_VAR
VAR_OUTPUT
// Return value of the TO function,
// also output parameter of the FB
return_value: DINT:= -1;
END_VAR
// Check for valid TO
IF myAxis = TO#NIL THEN RETURN; END_IF;
// Example of call with variable of data type of TO
return_value := _enableAxis (
axis:= myAxis, // TO function
nextCommand:= IMMEDIATELY, //optional
commandId := _getCommandId() );
END_FUNCTION_BLOCK
PROGRAM Example
VAR
myFB: posFB;
END_VAR
myFB (myaxis := Axis1);
// Name is created on start-up // in the SIMOTION SCOUT.
myFB (myaxis := Axis2);
// Name is created on start-up // in the SIMOTION SCOUT.
END PROGRAM
//...
Basic functions
68 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
72LQVWDQFH
0RWLRQ%XIIHU
3URJUDP
6(48(17,$/
FRPPDQG,G
0RWLRQFRPPDQG
3DUDPHWHU
FRPPDQG,G
&RPPDQG
SDUDPHWHU
&RPPDQGJURXSV
1(;7&200$1'
683(5,0326('B027,21B0(5*(
,00(',$7(/<
The MotionBuffer stores motion commands that are executed sequentially by the
interpolator. The number of motion commands that can be stored in the motion buffer is
defined via the configuration data
TypeOfAxis.DecodingConfig.numberOfMaxbufferedCommandId. Multiple motion commands
can therefore be issued on the technology object, irrespective of the execution status of the
active command.
Basic functions
Function Manual, 03/2007 69
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Basic functions
70 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
INTERFACE
USEPACKAGE CAM;
PROGRAM ProgramCycle;
END_INTERFACE
IMPLEMENTATION
PROGRAM ProgramCycle
VAR
boStartCommand : BOOL; // Command - issue command
boCommandStarted : BOOL; //Auxiliary variable - command issued
boCommandDone : BOOL; // Auxiliary variable - command executed
i32Ret : DINT; // Return value of system functions
sCommandId : CommandIdType; // CommandId
// Return value - _getStateOfAxisCommand
sRetCommandState : StructRetCommandState;
// Instance of the system FB for the edge detection
r_trig_1 : R_TRIG;
END_VAR
Basic functions
Function Manual, 03/2007 71
Programming with Technology Objects
3.2 Programming technology objects (TOs)
// Continuation
//---------------------------------------------------------------------
ELSIF boCommandStarted AND NOT boCommandDone THEN
// Query command execution status
sRetCommandState := _getStateOfAxisCommand(
axis := Axis_1,
commandId := sCommandId );
IF sRetCommandState.functionResult = 0 THEN
IF sRetCommandState.commandIdState = EXECUTED THEN
// Command has been executed (completed)
boCommandStarted := FALSE;
boCommandDone := TRUE;
// Remove registered commandId on TO
i32Ret := _removeBufferedAxisCommandId(
axis := Axis_1,
commandId := sCommandId );
END_IF;
ELSE
// Error handling for _getStateOfAxisCommand function call
// ...
;
END_IF;
END_PROGRAM
END_IMPLEMENTATION
INTERFACE
USEPACKAGE CAM;
VAR_GLOBAL
g_boCommandStarted : BOOL; //Auxiliary variable - command issued
g_boCommandDone : BOOL; // Auxiliary variable - command executed
END_VAR
PROGRAM ProgramSequential;
END_INTERFACE
IMPLEMENTATION
PROGRAM ProgramSequential
VAR
i32Ret : DINT: // Return value of system function
END_VAR;
Basic functions
72 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
g_boCommandStarted := TRUE;
g_boCommandDone := FALSE;
// Statements executed before the motion.
// ...
i32Ret := _move(
axis := Axis_1,
nextCommand:= WHEN_MOTION_DONE,
commandId:= _getCommandId () );
g_boCommandStarted := FALSE;
g_boCommandDone := TRUE;
END_PROGRAM
//...
VAR
myCommandId : CommandIdType;
END_VAR
//...
// Save unique ID
myCommandId := _getCommandId ();
// Execute function with ID
myFC := _pos (axis := myAxis,
position := position_1,
nextCommand :=IMMEDIATELY,
commandId :=myCommandId);
//...
The description how you can track the execution status of a command with the aid of the
commandId follows.
Basic functions
Function Manual, 03/2007 73
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Basic functions
74 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Note
With a project-wide unique identifier for the technology object instance, you can use the
predefined name space _project also for identifying the instance. This ensures compatibility
to projects created with an older SIMOTION SCOUT version (up to V3.2).
Note
Other type conversions are not possible (for example, between a measuring input and
following object).
Basic functions
Function Manual, 03/2007 75
Programming with Technology Objects
3.2 Programming technology objects (TOs)
VAR
drv_axis1 : driveAxis;
pos_axis1 : posAxis;
any_obj1 : ANYOBJECT;
END_VAR
drv_axis1 := pos_axis1;
any_obj1 := fol_axis_real;...
VAR
drv_axis1 : driveAxis;
pos_axis1 : posAxis;
any_obj1 : ANYOBJECT;
END_VAR
Basic functions
76 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
//...
In the event of a failed type conversion, the value TO#NIL is assigned to the target variable:
VAR
pos_axis1 : posAxis;
any_obj1 : ANYOBJECT;
END_VAR
Basic functions
Function Manual, 03/2007 77
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Basic functions
78 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
With the system function _setSafeValue (see function_setSafeValue (Page 318)). In this
case it is possible to program the desired response in the event of an error.
TO#NIL is a special variable value. You can use this value to check whether a valid
technology object is present (see the example in Input parameters of the technology
functions).
Note
For performance reasons, you should only access system variables when absolutely
necessary. Instead, save their contents in a local variable of the same data type. Local
variable accesses need much fewer resources because less processor time is used. For
more information, see Efficient programming.
Also note that a source of error can be comparing REAL variables, LREAL variables, and
system variables (for example, axis position) with each other, see Compare REAL or LREAL
variables.
Basic functions
Function Manual, 03/2007 79
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Readin substitute value or the last value of system variables at restart (as of V4.1)
The access to system variables is also possible at RESTART of the TO or at activated TO,
without the system going to STOP. Instead of reading the system variables via the function
_getSaveValue, you can configure the following via an entry in the config data (restart info):
read last value (LAST_VALUE = default)
Read default value (=value when loading the project; DEFAULT_VALUE)
Go to STOP (STOP_DEVICE)
Example
restartInfo : RestartInfo
behaviorInvalidSysvarAccess : EnumInvalidSysvarAccess
[
LASTVALUE
DEFAULT_VALUE
STOP_VALUE
]
Exceptions
Variables that deliver the current TO status, also return the correct status at RESTART. This
affects the system variable restartActivation, which you can access via _getSafeValue.
Note
Writing to the TO system variable during a RESTART is possible. The values will be applied
or are effective after the RESTART.
Note
System variables saved ONLINE cannot be saved with "Save to memory card (Ram2Rom)"
or "Save in the engineering project (load configuration data to PG)" is not possible.
So that values of system variables can also be saved in the engineering project and on
memory card the value of system variables must be changed OFFLINE and then loaded into
the target system per download and saved. See Storage concept in the target system
(Page 37).
Basic functions
80 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Note
Configuration data changed ONLINE can be saved on memory card with "Copy current
data to RAM" and subsequent "Copy from RAM to ROM" or saved with "Load
configuration data to PG" in the engineering project. See Storage concept in the target
system (Page 37).
Basic functions
Function Manual, 03/2007 81
Programming with Technology Objects
3.2 Programming technology objects (TOs)
VAR
lreal_var : LREAL;
drive_var : driveaxis;
END_VAR
lreal_var :=
drive_var.setconfigdata.TypeOfAxis.MaxJerk.maximum;
// Read access to saved value
lreal_var :=
drive_var.activeconfigdata.TypeOfAxis.MaxJerk.maximum;
// Read access to value currently in effect
VAR
lreal_var : LREAL;
drive_var : driveaxis;
END_VAR
drive_var.setconfigdata.TypeOfAxis.MaxJerk.maximum :=
200000.0;
// Write access to saved value
Basic functions
82 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
With the system function _setSafeValue (see function _setSafeValue (Page 318)). In this
case it is possible to program the desired response in the event of an error.
In addition, there is the option to control the activation via a system variable.
Use technology object system variable activationModeChangedConfigData to define when
the modified configuration data are to take effect:
If activationModeChangedConfigData = ACTIVATE_CHANGED_CONFIG_DATA is set,
the modified data is set immediately active. If the system variable is set to this value, data
collected up to this point are also activated.
If activationModeChangedConfigData = COLLECT_CHANGED_CONFIG_DATA is set,
the modified data is collected.
They are activated as a body as soon as this system variable is set to
ACTIVATE_CHANGED_CONFIG_DATA.
The collected, modified configuration data can be deleted (without activation) by calling
the corresponding technology object system function (e.g. _resetAxisConfigDataBuffer).
NOTICE
When activationModeChangedConfigData:= ACTIVATE_CHANGED_CONFIG_DATA, it
takes a certain amount of time for a modified configuration data item to take effect after
it has been written.
In particular, when several configuration data are changed simultaneously, timeouts can
occur in the tasks. It is not possible to change configuration data in SynchronousTasks.
Note
If you want to change several configuration data at the same time, it is advisable to
collect them first with activationModeChangedConfigData =
COLLECT_CHANGED_CONFIG_DATA and then activate them as a body in a sequential
task using the ACTIVATE_CHANGED_CONFIG_DATA setting.
Config data changed at runtime can be saved on card and in the ES project, see Storage
Concept in the Target System (Page 37).
Note
For access to configuration data from the user program, (e.g. in a general FB) that the
respective configuration data is also available depending on TO type.
Basic functions
Function Manual, 03/2007 83
Programming with Technology Objects
3.2 Programming technology objects (TOs)
Example
Vartemp
myPosAxis :posaxis;
End_Var
myPosAxis :=Pos[2]
myPosAxis.setconfigdata.TypeOfAxis.MaxJerk.maximum :=
200000.0;
CAUTION
Resetting a technology object aborts the current motion without an error message.
To integrate configuration data that require a restart of the technology object, you must reset
the technology object. The procedure depends on the restart.restartActivationSetting
configuration data item of the technology object:
For the setting restart.restartActivationSetting = RESTART_BY_COMMAND:
The technology object can only be restarted by means of the corresponding system
function (e.g. _restartAxis). To do so, set the parameter activateRestart =
ACTIVATE_RESTART.
For the setting restart.restartActivationSetting=
RESTART_BY_SYSVAR_AND_COMMAND:
The restart can be performed in two ways:
By calling the corresponding system function (e.g. _restartAxis). By setting parameter
activateRestart = ACTIVATE_RESTART.
By assigning a value to the technology object system variable: restartActivation=
ACTIVATE_RESTART. The system variables are initialized, the technology object
loses all of its status information, such as axis homed.
The restart is always performed asynchronously. After a successful restart of the
technology object, this system variable has the value NO_RESTART_ACTIVATION.
Basic functions
84 Function Manual, 03/2007
Programming with Technology Objects
3.2 Programming technology objects (TOs)
NOTICE
To compile a project without errors, observe the rules governing the selection of
SIMOTION devices and technology packages in the following table!
You can also specify the technology package in the library's ST source files if you want (with
the USEPACKAGE command), however, this is not necessary.
Selection Description
Device-independent You must also select:
The technology packages
The version number of the selected technology packages
Note:
1. The library is compiled without reference to a SIMOTION device or a
version of the SIMOTION Kernel.
For this reason, the following must not be used:
System functions of SIMOTION devices
System variables of SIMOTION devices
Version-dependent system functions
Configuration data of technology objects
2. The library is compiled precisely to the version selected. The use of
system functions or variables which are not available in the selected
version will result in a compilation error.
3. If a device-independent library is to be made available for another version
it must be copied and inserted under a different name. This copy must be
recompiled with a different version reference.
Basic functions
Function Manual, 03/2007 85
Programming with Technology Objects
3.3 Response to faults and events
Selection Description
SIMOTION device Only those technology packages are displayed that are available for all of the
including version selected devices.
(multiple selection Note:
possible)
1. The library is compiled for all of the selected devices and technology
packages (of the selected device versions).
2. The use of system functions or variables which are not available for one of
the selected devices, or the technology package of the respective device
version, will result in a compilation error.
3. The library can only be used for the selected devices and technology
packages. When you use the library in an ST source file, the following is
therefore checked:
Whether the library is compiled for the SIMOTION device (including
version) that contains the importing ST source file.
Whether the technology package set on the SIMOTION device and
specified in the ST source file with the USEPACKAGE command
corresponds to the one in the library.
Any inconsistencies will result in compilation errors.
Basic functions
86 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
Note
Message generation is another system feedback option. User-assigned messages can be
used in programs, e.g. if certain events occur (tank empty, etc.). For more information, see
Programming messages (Page 353).
Alarm configuration
You can define the system behavior for technological alarms in SIMOTION SCOUT (alarm
configuration). You can choose between:
STOP: Transition to STOP mode (all system and user tasks are stopped.)
STOP U: Transition to STOP U mode (only user program tasks are stopped.)
START TechnologicalFaultTask: Starts the associated SystemInterruptTask
NONE: No response
Each alarm has a default response. Details for the alarm configuration can be found at Error
handling for technology objects.
When you select START TechnologicalFaultTask, you must assign a program to the
TechnologicalFaultTask that responds to the associated alarm.
Besides a configurable response to program execution, alarms also have a reaction in the
technology object (see SIMOTION Motion Control Technology Objects function manuals).
Basic functions
Function Manual, 03/2007 87
Programming with Technology Objects
3.3 Response to faults and events
See also
Specifications for the configuring (Page 215)
3.3.3 Access errors to system variables and configuration data, as well as I/O variables
for direct access
This section describes the response when errors occur while accessing system variables,
configuration data, or I/O variables with the usual methods (using the variable identifier in an
expression or variable assignment).
Errors in system variables and configuration data:
The ExecutionFaultTask is started, and the additional error response depends on the task
type (sequential or cyclic) in which the error occurs (see the following table).
Table 3-24 Response at start of ExecutionFaultTask for incorrect access to system variables and
configuration data
Basic functions
88 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
CPU stop: The ExecutionFaultTask is started. The SIMOTION device then switches to
STOP mode; the ShutdownTask is started.
Substitute value: The substitute value specified when the I/O variable was defined is
taken, and the task is continued.
Last value:
With read access (to inputs or outputs): The last valid value is applied, and the task is
continued.
With write access (to outputs): The value is written to the variable. However, it will not
be active at the output until the output becomes available again. The task is continued.
In specific cases it is necessary to respond differently to errors or to deviate from the defined
error response. The functions _getSafeValue and _setSafeValue, and getInOutByteserve
this purpose. The functions _getSafeValue and _setSafeValue are very time intensive.
Note
You can read a replacement value or the last value of a system variable during a RESTART.
See system variables (Page 77).
See also
_getSafeValue function (Page 316)
_setSafeValue function (Page 318)
_getInOutByte function (Page 322)
General information on accessing system variables and inputs/outputs (Page 315)
Basic functions
Function Manual, 03/2007 89
Programming with Technology Objects
3.3 Response to faults and events
The error response depends on whether direct access was defined at the same address
using I/O variables:
No direct access is defined: Error response is always CPU STOP; for response
information, see the following table.
Direct access is defined: The error handling specified in the definition of the I/O
variables does apply (see above, like process image of cyclic tasks).
Table 3-25 Error response during process image update for CPU STOP response
Event Description
Error occurs 1. An incoming message is generated once.
2. If no program is linked to the PeripheralFaultTask, the SIMOTION
device goes to STOP mode, and the ShutdownTask is started.
3. Otherwise:
The PeripheralFaultTask is started once immediately (rather than in
the next IPO cycle clock):
TSI#interruptId = _SC_IMAGE_UPDATE_FAILED.
TSI#logBaseAdrIn or TSI#logBaseAdrOut contains the address at
which the error occurred.
Process input image: The value of the process image at the address
is not changed.
Process output image: Value will not take effect at the output with
the address until the output becomes available again.
The cyclic task in which the error occurred is continued.
Error persists No additional messages are generated.
The PeripheralFaultTask is not restarted.
Process input image: The value of the process image at the address is
not changed.
Process output image: Value will not take effect at the output with the
address until the output becomes available again.
Error disappears 1. An outgoing message is generated once.
2. The PeripheralFaultTask is started once immediately (rather than in the
next IPO cycle clock):
TSI#interruptId = _SC_IMAGE_UPDATE_OK.
3. The cyclic task is continued.
Basic functions
90 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
contents and scope of the task start information and the associated system variables depend
on the relevant task (see following table).
The query of the Taskstartinfo is normally used for SystemInterruptTasks (see examples,
Querying the Taskstartinfos in the TechnologicalFaultTask and Querying the Taskstartinfo in
the TimeFaultTask).
Basic functions
Function Manual, 03/2007 91
Programming with Technology Objects
3.3 Response to faults and events
Basic functions
92 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
TSI#alarmP5_LREAL : LREAL Example: /3/%X means parameter 3 with UDINT data type.
Only the parameters documented in the SIMOTION Alarms
Diagnostics Manual for the triggered alarm are released for
use.
Basic functions
Function Manual, 03/2007 93
Programming with Technology Objects
3.3 Response to faults and events
Basic functions
94 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
Basic functions
Function Manual, 03/2007 95
Programming with Technology Objects
3.3 Response to faults and events
Basic functions
96 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
TSI#logBaseAdrIn : DINT Logic base address for following TSI#InterruptId if the interrupt was
caused by an input area on the module:
_SC_PROCESS_INTERRUPT ( = 200)
_SC_DIAGNOSTIC_INTERRUPT ( = 201)
_SC_IMAGE_UPDATE_FAILED ( = 204)
_SC_IMAGE_UPDATE_OK ( = 206)
_SC_PULL_PLUG_INTERRUPT ( = 216)
_SC_IO_MODULE_SYNCHRONIZED ( = 214)
_SC_IO_MODULE_NOT_SYNCHRONIZED ( = 215)
Otherwise _SC_INVALID_ADDRESS (= -1)
Basic functions
Function Manual, 03/2007 97
Programming with Technology Objects
3.3 Response to faults and events
ShutdownTask
TSI#startTime : DT Start time of the task
TSI#currentTaskId : StructTaskId TaskId of task
TSI#cycleTime : TIME Configured cycle time of task (= 0, because the task is
sequential)
TSI#shutDownInitiator : UDINT Initiate transition to STOP:
_SC_MODE_SELECTOR ( = 400):
Mode selector switch
_SC_DEVICE_COMMAND ( = 401):
System function in user program
_SC_EXTERNAL_COMMAND ( = 402):
Command in SIMOTION SCOUT
_SC_EXCEPTION ( = 403):
Exception
_SC_ALARM_CONFIGURATION ( = 404)
Configured response to technological Alarm_
Example of exceptions:
Execution errors in programs
Level overflow
Withdrawing a central module in RUN mode
Basic functions
98 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
Basic functions
Function Manual, 03/2007 99
Programming with Technology Objects
3.3 Response to faults and events
The following example shows you how to query the TO instance that initiated the alarm and
the alarm number using the Taskstartinfo in the TechnologicalFaultTask. The TO_AlarmProg
program must therefore be assigned to the TechnologicalFaultTask.
PROGRAM TO_AlarmProg
VAR
dintVar : DINT;
dtVar : DT;
END_VAR;
dtVar:=TSI#startTime;
dintVar:=TSI#alarmNumber;
IF TSI#toInst = axis_1 THEN // from TO you have created
; // commands
END_IF;
IF TSIalarmNumber = 30002 THEN // Triggering alarm
; // commands
END_IF;
END_PROGRAM
The next example shows you how to determine the TimeFaultTask that caused the timeout
error in the TimerInterruptTask. You use the _checkEqualTask function for this. The program
TimeFaultProg must be assigned to the TimeFaultTask .
Basic functions
100 Function Manual, 03/2007
Programming with Technology Objects
3.3 Response to faults and events
PROGRAM TimeFaultProg
VAR
beq : BOOL;
END_VAR;
END_PROGRAM
Basic functions
Function Manual, 03/2007 101
Error Handling in Technology Objects
This section describes the error handling in SIMOTION technology objects.
4
4.1 Possible errors in technology objects
The following basic errors are possible in the programming of technology objects:
The technology object itself cannot execute the function required by the application or
reports certain events or states:
A technological alarm is output.
You can find information on the individual alarms in the SIMOTION Reference Lists.
The command issued to a technology object cannot be executed:
The return value of the command provides information about the cause.
You can find information on the return values of the commands in the SIMOTION
Reference Lists.
Error while accessing configuration data, system variables or I/O variables
The ExecutionFaultTask is called in the event of errors when configuration data or
variables are being read or written
See also
Process Alarms (Page 103)
Return values of commands (Page 114)
Error while accessing system data (Page 115)
Basic functions
Function Manual, 03/2007 103
Error Handling in Technology Objects
4.2 Process Alarms
Effects of alarms
Technological alarms cause subsequent responses in the system. A distinction is made
between:
Effects on the affected technology object itself: Local response
Effects on other technology objects or the execution system: Global response
For each alarm, certain effects have a default setting. However, you can adapt these settings
to suit your requirements.
By specifying the error activation, you can define whether the alarm is to be activated
immediately, after repeated occurrences of an error, or after a certain period of time.
You can hide some alarms. This allows you, for example, to suppress unimportant
information.
See also
Local response (Page 104)
Global response (Page 105)
Error activation (Page 105)
Configure technological alarms (Page 106)
Displaying and acknowledging technological alarms (Page 109)
Acknowledging via the user program (Page 110)
Evaluating in the user program (Page 113)
Basic functions
104 Function Manual, 03/2007
Error Handling in Technology Objects
4.2 Process Alarms
Basic functions
Function Manual, 03/2007 105
Error Handling in Technology Objects
4.2 Process Alarms
Type
You can set the Type parameter to specify whether certain TO alarms are to be displayed. If
you select the Hidden setting, an alarm message is not displayed when this alarm occurs
and no entry is written to the diagnostics buffer. You can thereby prevent an overflow of the
alarm buffer when a particular technology alarm is issued frequently, or suppress a note
message that is not important to you.
Basic functions
106 Function Manual, 03/2007
Error Handling in Technology Objects
4.2 Process Alarms
2. In the combo box, select the technology object for which you want to configure alarms.
The alarms for the technology object are displayed.
3. Select the alarm for which you want to change the response.
4. Select the required response from the list for the corresponding technology object alarm.
The options available depend on the type of alarm.
Basic functions
Function Manual, 03/2007 107
Error Handling in Technology Objects
4.2 Process Alarms
Note
The technology object whose alarms you want to configure must already be configured.
The alarm configuration can be transferred to other technology objects via the corresponding
buttons in the Alarm configuration dialog (via export/import).
Basic functions
108 Function Manual, 03/2007
Error Handling in Technology Objects
4.2 Process Alarms
Note
Because drive alarms usually generate technology object alarms as well, the drive alarms
are also deleted with the Acknowledge (TO) switch. If however the cause of a drive alarm
still exists then a new TO alarm will be triggered immediately. In this case first correct the
cause of the drive alarm.
Basic functions
Function Manual, 03/2007 109
Error Handling in Technology Objects
4.2 Process Alarms
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
PROGRAM EXAMPLE;
END_INTERFACE
IMPLEMENTATION
PROGRAM EXAMPLE
VAR
s_i_RetVal : DINT;
END_VAR;
(* Acknowledge all TO alarms *)
s_i_RetVal:= _resetTechnologicalErrors();
END_PROGRAM
END_IMPLEMENTATION
Basic functions
110 Function Manual, 03/2007
Error Handling in Technology Objects
4.2 Process Alarms
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
PROGRAM EXAMPLE;
END_INTERFACE
IMPLEMENTATION
PROGRAM EXAMPLE
VAR
s_i_RetVal : DINT;
END_VAR;
(* Acknowledge TO alarms ('ResetTOAlarms') *)
s_i_RetVal:= _resetAxisError(axis:=Axis_1);
s_i_RetVal:= _resetMeasuringInputError(
measuringInput:=MeasuringInput_1);
s_i_RetVal:= _resetOutputCamError(outputCam:=OutputCam_1);
END_PROGRAM
END_IMPLEMENTATION
Figure 4-4 MCC call: Acknowledge all alarms on a TO axis, TO measuringInput and TO outputCam
Basic functions
Function Manual, 03/2007 111
Error Handling in Technology Objects
4.2 Process Alarms
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
PROGRAM EXAMPLE;
END_INTERFACE
IMPLEMENTATION
PROGRAM EXAMPLE
VAR
s_i_RetVal : DINT;
END_VAR;
(* Acknowledge specific TO alarm ('ResetSingleTOAlarm') *)
s_i_RetVal := _resetAxisError(axis:=Axis_1,
errorResetMode:=SPECIFIC_ERROR,
errorNumber:=30002);
END_PROGRAM
END_IMPLEMENTATION
Note
In addition to troubleshooting the commands for reset have other effects on the TO as well.
Therefore, as a general rule, errors should be acknowledged with the _reset...Error
commands.
For example, the _resetCam command deletes the entire cam.
Basic functions
112 Function Manual, 03/2007
Error Handling in Technology Objects
4.2 Process Alarms
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
PROGRAM EXAMPLE;
END_INTERFACE
IMPLEMENTATION
PROGRAM EXAMPLE
VAR
s_i_RetVal : DINT;
END_VAR;
(* Reset object ('ResetObject') *)
s_i_RetVal := _resetAxis(axis:=Axis_1,
userDefaultData:=DO_NOT_CHANGE);
s_i_RetVal := _resetMeasuringInput(
measuringInput:=MeasuringInput_1,
userDefaultData:=DO_NOT_CHANGE);
s_i_RetVal:= _resetOutputCam(outputCam:=OutputCam_1,
userDefaultData:=DO_NOT_CHANGE);
END_PROGRAM
END_IMPLEMENTATION
Note
If you have not added any program to the TechnologicalFaultTask, the CPU will switch to
STOP mode if the task is called by an alarm.
Basic functions
Function Manual, 03/2007 113
Error Handling in Technology Objects
4.3 Return values of commands
Note: This sample program must be added to the TechnologicalFaultTask in the execution
system!
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
PROGRAM TO_AlarmProg;
END_INTERFACE
IMPLEMENTATION
PROGRAM TO_AlarmProg
VAR
s_i_Count : INT;
s_i_RetVal: DINT;
END_VAR;
Basic functions
114 Function Manual, 03/2007
Error Handling in Technology Objects
4.4 Error while accessing system data
Call example
If an error occurs when the _pos command is being executed, the g_bo_error variable is to
be set to true, the return value entered in the g_i_errornumber parameter and the block
aborted.
Note: This sample program must be added to a MotionTask in the execution system!
UNIT ST_1;
INTERFACE
USEPACKAGE CAM;
VAR_GLOBAL
g_bo_error: BOOL;
g_i_errornumber: DINT;
g_i_RetVal: DINT;
END_VAR
PROGRAM RETURN_VALUE;
END_INTERFACE
IMPLEMENTATION
PROGRAM RETURN_VALUE
Basic functions
Function Manual, 03/2007 115
Error Handling in Technology Objects
4.4 Error while accessing system data
Basic functions
116 Function Manual, 03/2007
Error Handling in Technology Objects
4.4 Error while accessing system data
Basic functions
Function Manual, 03/2007 117
Execution System, Tasks, and System Cycle Clocks
This section describes the SIMOTION execution system with its execution levels and
5
assigned tasks.
Basic functions
Function Manual, 03/2007 119
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
Temperature control
In connection with the TControl technology package, execution levels are available for
the temperature control: Actual value measurement, control and pulse width
modulation of the output signals.
Execution levels for the task-related programming are available for the user programming
(user program tasks): Motion control, logic and technological functions.
See also
Specifications for the configuring (Page 215)
Execution levels
The following figure shows the execution levels with their tasks.
Basic functions
120 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
'FF$X['&&
GFFDX[
(YHQWFRQWUROOHG 6\VWHP,QWHUUXSW7DVNV
H[HFXWLRQOHYHOVWDVNV [[[)DXOW7DVN 6\VWHPDODUPV
)UHHO\UXQQLQJ
H[HFXWLRQOHYHOVWDVNV 6\VWHPWDVNV
5RXQG
%DFNJURXQG7DVN 0RWLRQ7DVNBQ
F\FOLFDQGVHTXHQWLDO URELQ
6\VWHPVWDUWXSVWRS 6WDUW
6WDUWXS7DVN 6KXWGRZQ7DVN (QG
$SSOLFDWLRQ
/HJHQG 6\VWHPWDVNV '&&WDVN 7HFKQRORJ\2EMHFWV
8VHUSURJUDP
Figure 5-1 Execution levels and tasks in the SIMOTION runtime system
When you use technology packages, the execution levels provided by the system are
automatically assigned. The user program cannot influence the processing of technology
functions in these execution levels. System tasks are acyclic communication (Ethernet,
PROFIBUS DP. PROFINET IO), debug services or trace preprocessing, for example.
The DCC levels and tasks are not visible in the execution system in the SCOUT user
interface. The DCC plans are arranged in the DCC editor via execution groups, see
Description of the DCC editor.
Basic functions
Function Manual, 03/2007 121
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
Tasks
One or more tasks are available in each execution level for user programming.
The main features of the tasks are:
Start behavior: When and under what conditions a task is started. (refer to Table )
Priority: Which task is interrupted by which other task. (refer to the table for the task
priorities in the next section)
The following table shows the tasks available for user programs.
Task Description
StartupTask The StartupTask is executed once at the transition from STOP or STOPU mode to
RUN mode. It is intended for initialization and resetting of technology objects.
Free-running tasks: In the round robin execution level, the MotionTasks and BackgroundTask are
executed by the system in the background in the time-slice procedure.
MotionTasks MotionTasks are intended for the programming of sequences, for programmed
motion control or other sequential executions.
MotionTasks are started by user programs and executed once.
BackgroundTask The BackgroundTask is provided for the programming of cyclic sequences without
a fixed time frame.
The BackgroundTask is started after system start-up and then executed cyclically
and free-running.
Time-driven tasks and synchronous Cyclic tasks. They are called cyclically in a certain time frame and are
tasks: automatically restarted after the execution of the assigned programs.
TimerInterruptTasks TimerInterruptTasks are intended for the periodical starting of programs.
SynchronousTasks SynchronousTasks are started periodically, synchronous with a specified system
cycle clock.
Event-driven tasks: Sequential tasks. They are started and executed once when an event occurs and
then terminated.
SystemInterruptTasks SystemInterruptTasks are started and executed once when a system event
occurs.
UserInterruptTasks UserInterruptTasks are started and executed once when a user-defined event
occurs.
ShutdownTask The ShutdownTask is executed once at the transition from RUN mode to STOP or
STOPU mode.
Note
In addition to the user program tasks, there are various system-internal tasks that the user
cannot influence.
The ControlPanelTask is such a system-internal task, for example. It is visible during the
task run times of the device diagnosis, but not in the execution system.
Basic functions
122 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
See also
StartupTask (Page 130)
MotionTasks (Page 132)
BackgroundTask (Page 135)
TimerInterruptTasks (Page 138)
SynchronousTasks (Page 141)
SystemInterruptTasks (Page 148)
UserInterruptTasks (Page 153)
ShutdownTask (Page 157)
Basic functions
Function Manual, 03/2007 123
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
Execution system
The execution system with the execution levels and the assigned tasks are displayed here.
Function Meaning/Note
Open Use this to open the execution level configuration.
Expert
Set system cycle clocks Use this to set the ratio between the system cycle clocks (e.g.
between the interpolator cycle clock and the servo cycle clock)
depending on a parameterized isochronous operation at the
PROFIBUS or PROFINET interface.
Print Use this to print the contents of the execution system. All tasks with
the associated configuration are printed.
Print preview Use this to open the print preview for the execution system.
Basic functions
124 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
Basic functions
Function Manual, 03/2007 125
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
Priorities
The priority of a task cannot be changed by the user.
Note
Tasks run according to their priorities. Thus, higher priority tasks supersede lower priority
tasks.
Therefore, fluctuations of the cycle time can occur for lower priority tasks.
TimerInterruptTasks:
The shorter a time slice, the higher its priority.
UserInterruptTasks:
All tasks have the same priority and are executed in the order of their activation events.
Wait for condition / WAITFORCONDITION temporarily increases the priority of a
MotionTask:
The condition is checked with the same priority as for UserInterruptTasks.
If the condition is satisfied, the MotionTask (that was previously pending) is
reactivated.
The commands enclosed between WAITFORCONDITION and
ENDWAITFORCONDITION are executed with increased priority (between
SystemInterruptTasks and TimerInterruptTasks).
Further information on Wait for condition / WAITFORCONDITION can be found in the
SIMOTION MCC or SIMOTION ST programming manuals.
Basic functions
126 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
The time required for checking the condition of the UserInterruptTask is part of the runtime of
the IPOsynchronousTask.
Note
The priorities of the execution levels or their tasks do not indicate the order in which the
MotionTasks, BackgroundTask and time-triggered tasks are started after RUN mode is
reached.
Basic functions
Function Manual, 03/2007 127
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
1 '331V\VWHP
,VRFKURQRXV
'331$6,&!EXV 1:n
FORFNLQJ
2 3 4 6HUYR
'331$6,&! 3$ 6HUYR6\QFKUR 3$ /RJDGGU!
VHUYRGFF 6\VWHPVHUYR 1:n
ORJDGGU LQ QRXV7DVN RXW '331$6,&
5 6 7 ,32
8VHU,QWHUUXSW ,SRGFF
3$ ,SR6\QFKURQRXV7DVN 3$ :DLWIRUFRQGLWLRQ 6\VWHP,32
FKHFN LQ RXW FKHFN
7LPHFDQEHVHWDVRI,32F\FOHFORFN
WULJJHUHGLQWKH,32F\FOHFORFN
,QDOOH[HFXWLRQOHYHOVHYHQWVFDQRFFXU
,32B
7KH7LPHU,QWHUUXSW7DVNVDUH
3$
LSRGFFB ,SR6\QFKURQRXV7DVNB 3$ 6\VWHP,32B
WKDWFDOOD6\VWHP,QWHUUXSW7DVN
LQ RXW
'FF$X[
GFFDX[
'HFUHDVLQJSULRULW\
'FF$X[B
GFFDX[B
6\VWHPDODUP
6\VWHP,QWHUUXSW7DVN 6\VWHP,QWHUUXSW7DVNQ ,QWKHRUGHURIHYHQWV
8
0RWLRQ7DVNQ
5RXQGURELQ
9
3$ 3$
10 ([HFXWLRQLQWKHUHPDLQLQJWLPHLQDFFRUGDQFH
LQ
%DFNJURXQG7DVN RXW 0RWLRQ7DVN 0RWLRQ7DVNQ &RPPXQLFDWLRQHWF ZLWKWKHURXQGURELQPHFKDQLVP
Basic functions
128 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.1 Execution system
See also
SynchronousTasks (Page 141)
BackgroundTask (Page 135)
Basic functions
Function Manual, 03/2007 129
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
5.2.1 StartupTask
The StartupTask is provided for the one-time initialization and the resetting of the technology
objects.
It is activated when the operating mode switches from STOP or STOPU to RUN.
It must not be used for process start-up or homing or for setting up axes (motion commands
must not be used).
While the StartupTask is being executed, no other user program tasks except for the
SystemInterruptTask and the UserInterruptTask are active.
Access to process image and symbolic I/O variables is restricted. The process image of the
inputs is updated before the startup task and remains constant for the duration of the startup
task. The process image of the outputs is set to zero before the startup task, and output after
the startup task. Direct accesses to inputs provide the current values. Write I/O variables can
be set to initial values. These values, however, act only after the startup task with the enable
of all outputs on the terminals.
When the StartupTask is completed, RUN mode has been reached. The following tasks are
now started:
SynchronousTasks
TimerInterruptTasks
MotionTasks, in which the automatic start attribute is set
BackgroundTask
Select the Program assignment tab to assign the created and compiled programs to the
StartupTask and define their execution sequence.
Basic functions
130 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
2. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
Function Manual, 03/2007 131
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
See also
Assigning programs to the execution levels/tasks (Page 159)
SystemInterruptTasks (Page 148)
5.2.2 MotionTasks
MotionTasks are intended for the programming of sequences, for programmed motion
control or other sequential executions.
Example for the sequential execution: An axis traverses to a target position, waits for an
enable signal, and then traverses to the next target position.
Several MotionTasks are available:
Up to V3.2: 20 MotionTasks MotionTask_1 to MotionTask_20
As of V4.0 only for D4xx and P350: 32 MotionTasks MotionTask_1 to MotionTask_32
The names of the MotionTasks can be changed, see Assigning programs to the tasks
(Page 216).
MotionTasks are executed in the round robin execution level.
MotionTasks and BackgroundTask share the free time apart from the higher-priority system
and user program tasks. The relationship of the time slices between both levels can be
parameterized, see Setting the time allocation (Page 177).
There is no fixed sequence of execution for MotionTasks and BackgroundTask.
Instructions for influencing task execution are provided in Overview of the task control
commands (Page 239).
Basic functions
132 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Starting a MotionTask
MotionTasks are usually controlled from the user program via task control commands such
as _startTaskID, _stopTaskID,, ... . With the corresponding configuration (set attribute), a
MotionTask starts automatically when the RUN mode has been reached. You can scan the
current task status using the _getStateOfTaskID system command.
A MotionTask does not have any time monitoring, i.e. once a MotionTask is started, it can
remain active for an indefinite period.
A MotionTask that waits for a synchronous command remains active with regard to its status.
Completing a MotionTask
A MotionTask is completed when the task has been completed or at the transition to the
STOP or STOPU mode (start of the ShutdownTask).
One way to automatically suspend the task is to use wait commands Wait for condition /
WAITFORCONDITION.
The task is suspended when the wait command is issued. The condition specified in the
command is checked in the IPO cycle clock. When the condition is fulfilled, the MotionTask
is automatically resumed. Depending on where you position the wait command, you can
influence the task priority when execution continues.
The commands enclosed between WAITFORCONDITION and ENDWAITFORCONDITION
are executed with increased priority (between SystemInterruptTasks and
TimerInterruptTasks).
Select the Program assignment tab to assign the created and compiled programs to the
MotionTasks and define the execution sequence.
You can set the following parameters:
Configuring MotionTasks
You can define which tasks are to be started automatically when the RUN mode is reached.
Otherwise MotionTasks must be explicitly started via programmed task control commands.
1. Click MotionTasks in the Execution Levels tree.
2. Select the required task in the MotionTask list. Task names can be changed, see
Assigning programs to the execution level (Page 159).
Basic functions
Function Manual, 03/2007 133
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
3. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
134 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
5.2.3 BackgroundTask
The BackgroundTask is provided for the programming of cyclic sequences without a fixed
time frame.
It is executed cyclically in the round robin execution level, which means it will be
automatically restarted on completion.
The BackgroundTask is used in programs that have to be executed cyclically, e.g.
interlocking tasks, PLC tasks.
The cycle time of the BackgroundTask is monitored. When the cycle time monitoring
responds, the TimeFaultBackgroundTask is started. The CPU will switch to STOP mode if
the task is not configured or there is no program assigned to it.
The process image of the inputs and outputs is generated for the BackgroundTask in
address space 0.0 to 63.7. The process image remains consistent during the time the
BackgroundTask is being processed.
You can use the BackgroundTask to implement lower-priority, cyclical logic functions,
interlocks, calculations, monitoring functions.
The BackgroundTask shares available CPU time with the MotionTasks.
Basic functions
Function Manual, 03/2007 135
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Note
The BackgroundTask shares computation time with MotionTasks and SystemTasks (e.g.
communication tasks). Relative to time allocation you must consider that the runtime, i.e. the
performance, is influenced by the settings (time allocation of the round robin execution level).
2. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
136 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Basic functions
Function Manual, 03/2007 137
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
See also
MotionTasks (Page 132)
Assigning programs to the execution levels/tasks (Page 159)
Watchdog (Page 173)
Setting of the time allocation (Page 177)
SystemInterruptTasks (Page 148)
Time allocation in the round robin execution level (Page 175)
5.2.4 TimerInterruptTasks
TimerInterruptTasks are intended for the periodical starting of programs.
Five TimerInterruptTasks, i.e. TimerInterruptTask_1 to TimerInterruptTask_5, are available
for different time levels.
TimerInterruptTasks are periodically started and executed in the configured fixed time frame
(e.g. 100 ms).
This time frame must be a multiple of the interpolator cycle clock.
In this task, you can implement closed-loop control or monitoring functions that require a
reproducible time reference without a direct link to I/O or motion control of the axes.
Additional system and user tasks are provided for the TControl technology package. The
TControl technology package is processed in the system tasks, whereas the application-
specific adaptations are processed in the user program tasks.
You can find additional information in the functional description of the temperature controller,
refer to the Motion Control Additional Technology Objects Function Manual.
Basic functions
138 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Starting a TimerInterruptTask
TimerInterruptTasks are started periodically. A start delay can be set.
Completing a TimerInterruptTask
TimerInterruptTasks are completed automatically after completion of the programs assigned
to the TimerInterruptTask.
You can assign the created and compiled programs to the selected TimerInterruptTask and
define their execution sequence in the Program assignment tab.
You can set the following parameters:
Configuring TimerInterruptTasks
1. Click TimerInterruptTasks in the Execution Levels tree.
2. Select the required task in the For task selection box. The names (TimerInterruptTask_1
to TimerInterruptTask_5) are preset.
Basic functions
Function Manual, 03/2007 139
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
3. Select a Defined time level or enter an arbitrary integer value. This value must be an
integral multiple of the interpolator cycle clocks (IPO cycle clocks). Different settings are
rounded up to the next integral multiple of the IPO cycle clock.
4. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
140 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
See also
Assigning programs to the execution levels/tasks (Page 159)
Watchdog (Page 173)
SystemInterruptTasks (Page 148)
5.2.5 SynchronousTasks
SynchronousTasks are started synchronously to the specified system cycle clock. They run
with high priority in the time-triggered execution level.
The following SynchronousTasks are available:
ServoSynchronousTask (V4.0 and higher): Synchronous with the servo cycle clock
In the servo-synchronous task you can implement time-critical terminal - terminal
responses for I/O or fast influencing of setpoints on the servo level.
Basic functions
Function Manual, 03/2007 141
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Basic functions
142 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
ServoSynchronousTask
ServoSynchronousTasks are provided for applications in which fast processes are to be
implemented with the help of isochronous mode (V4.0 and higher).
ServoSynchronousTasks run within a servo cycle clock and behave similar to
IPOsynchronousTasks.
The ServoSynchronousTask is reasonable for:
Fast responses (e.g for short terminal - terminal times for I/O processing)
Influencing servo-effective system variables
Information on servo efficacy of the system variables is provided in the SIMOTION
reference list technology package CAM system variables.
for motion commands if a TO (in exceptional cases) is configured for execution in the
servo cycle clock.
It is not reasonable for:
Communication
For motion commands if a TO is configured for execution in the IPO cycle clock (since
this is evaluated in the IPO cycle clock)
If a TO is configured for execution in the servo cycle clock then TO and motion commands
can also be issued.
The same characteristics as for the IPOSynchronousTask apply, but it is not possible to set
a tolerance.
The ServoSynchronousTask can be configured in the execution system. (The cycle time of
the servo execution level is set with the servo). The default setting is active.
There is a process image available for the ServoSynchronousTask as for the other cyclic
tasks. This only results in an improved performance if the same I/O addresses are accessed
several times.
In the case of an overflow of the ServoSynchronousTask, the CPU goes to STOP. It is not
possible to set a tolerance.
Note
Synchronous commands are not permitted in the ServoSynchronousTask, because the task
is not allowed to overflow. If, for example, you call the _waittime function, the CPU goes into
STOP mode.
Basic functions
Function Manual, 03/2007 143
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
IPOSynchronousTask/IPOSynchronousTask_2
IPOSynchronousTasks are intended for applications that require, for example, fast and
deterministic responses or correction movements. Optimum time transfer of motion
commands to the motion control system is thus possible.
IPOsynchronousTasks run immediately before the interpolator within an IPO cycle clock.
Thus, commands in these tasks can directly affect the motion control.
The IPOSynchronousTask is started synchronously to the IPO cycle clock, whereas the
IPOSynchronousTask_2 is started synchronously to the IPO cycle clock 2, i.e. a reduced
IPO cycle clock.
The IPOSynchronousTask is executed prior to the internal IPOTask and
IPOsynchronousTask_2 is executed before IPOTask_2.
The following properties must be specified for the IPOsynchronousTasks:
Task configuration
Sum (number) of level overflows in the IPO/IPO_2 cycle clock
If the tasks in the IPO level (IPOSynchronousTask, IPOTask) are not completed within an
IPO cycle clock, an overflow will occur. An overflow of a task in the cycle clock (n) must
be processed in the following cycle clock (n+1).
The same applies for the tasks in the IPO_2 level (IPOSynchronousTask_2, IPOTask_2).
You can set the number of overflows which should be tolerated in sequence (n = 0 ... 5).
(The ratio can be violated n-times.) The internal monitoring counter is reset when a task
has been performed without overflowing.
The accumulated level overflows are displayed in the
numberOfSummarizedTaskOverflow system variables.
Error reaction with timeout (level overflow): The CPU goes to STOP mode and a starting
lockout is set.
IPOSynchronousTask/IPOTask: Time ratio between IPOSynchronousTask and IPOTask.
A timeout occurs if an IPO-synchronous task exceeds this ratio.
You also define the time frame for the IPOTask in the system cycle clocks. In the
IPOSynchronousTask/IPOTask parameter, you can specify the percentage of time that is
to be made available for the IPOSynchronousTask per cycle clock.
If, for example, 4 ms is set as IPO cycle clock and 25% set as ratio, the runtime of the
IPOSynchronousTask must not exceed 1 ms, including possible interrupts of higher-
priority tasks.
Recommendation: With a gear ratio of servo : IPO_1 > 1, enter a percentage value that is
as large as possible.
Note
If a synchronous system function is called that suspends the IPOSynchronousTask, the
CPU will go into STOP mode with a diagnostic buffer entry (as of V3.2).
It is possible to configure whether time monitoring is to be performed.
Basic functions
144 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Configuring SynchronousTasks
1. Click the appropriate task in the Execution Level tree.
2. Select the required SynchronousTask in the For cycle clock level selection box.
3. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
Function Manual, 03/2007 145
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Basic functions
146 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Basic functions
Function Manual, 03/2007 147
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
See also
Isochronous I/O processing on fieldbus systems (Page 184)
Timeouts and level overflows (Page 171)
Assigning programs to the execution levels/tasks (Page 159)
Sequence model for DCC blocks (DCB) (Page 195)
5.2.6 SystemInterruptTasks
SystemInterruptTasks are started and executed once when a system event occurs.
The following SystemInterruptTasks are available:
TimeFaultTask: starts in the event of a TimerInterruptTask timeout
TimeFaultBackgroundTask: starts in the event of a BackgroundTask timeout
TechnologicalFaultTask: starts in the event of an error on a technology object
PeripheralFaultTask: starts in the event of an error on the I/O
ExecutionFaultTask: starts in the event of an error when executing a program
Starting a SystemInterruptTask
A SystemInterruptTask is started automatically after the set event has occurred.
If an event that triggers a SystemInterruptTask occurs, the SystemInterruptTask must be
used in the execution system, and a program must be assigned to this task; otherwise, the
CPU switches to STOP mode.
Up to 8 different interrupts can be stored in the buffer. If another interrupt occurs, the buffer
overflows and the CPU goes into STOP mode, too.
The events that caused a SystemInterruptTask to be called can be queried using the
associated TaskStartInfo for this task and are described under Using Taskstartinfo
(Page 90).
Basic functions
148 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Completing a SystemInterruptTask
A SysteminterruptTask is completed automatically after completion of the programs assigned
to the SystemInterruptTasks.
You can assign the created and compiled programs to the selected SystemInterruptTask and
define their execution sequence in the Program assignment tab.
You can set the following parameters:
Field/Button Meaning/Note
For task Use this to select one of the SystemInterruptTasks to which you
want to assign the programs. You can assign several programs
to one SystemInterruptTask.
ExecutionFaultTask Program processing error, for example, division by zero.
PeripheralFaultTask I/O alarms such as process alarms, diagnostic alarms, removing
and inserting modules.
TechnologicalFaultTask Technological alarms such as alarms, warnings and notes.
TimeFaultBackgroundTask Timeout in the BackgroundTask.
TimeFaultTask Timeouts, for example in the SynchronousTasks,
TimerInterruptTasks, system runtime and cycle time.
Alarm configuration This displays the window for the configuration of the
technological alarms. You can configure the alarm response to
a technological alarm for the SystemInterruptTasks.
Use task in execution system Activate the checkbox to display and use the task in the
execution system. If the checkbox is deactivated, you cannot
assign any programs to this task.
TimeFaultTask
The TimeFaultTask is started when the time monitoring of a TimerInterruptTask responds.
The CPU will switch to STOP mode if the TimeFaultTask is not configured or there is no
program assigned to it.
In the TimeFaultTask, you can program the response to timeouts of TimerInterruptTasks.
For additional information, see Using Taskstartinfo (Page 90)).
TimeFaultBackgroundTask
The TimeFaultBackgroundTask is started when the time monitoring of the BackgroundTask
responds. The CPU will switch to STOP mode if the TimeFaultBackgroundTask is not
configured or there is no program assigned to it.
In the TimeFaultBackgroundTask, you can program how timeouts of BackgroundTasks are
handled.
Basic functions
Function Manual, 03/2007 149
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
TechnologicalFaultTask
The TechnologicalFaultTask is started when the technology package generates an alarm or
information message. The CPU will switch to STOP mode if the TechnologicalFaultTask is
not configured or there is no program assigned to it.
Generally, alarm messages have a direct effect on the behavior of the technology package
and must be acknowledged before technology functions can be activated again.
In the TechnologicalFaultTask you can, for example, acknowledge errors directly and/or
initiate further responses with respect to the sequence of operations on the machine.
For additional information, see Using Taskstartinfo (Page 90)).
PeripheralFaultTask
The PeripheralFaultTask is started immediately in accordance with its priority for I/O access
errors.
I/O access errors can occur, for example, when the load voltage supply for the I/O module
fails or other errors occur on the I/O module.
For further information, refer to the descriptions of the I/O modules.
The task for which an error occurred during its I/O access, will not be terminated.
The CPU will switch to STOP mode if the PeripheralFaultTask is not configured or there is
no program assigned to it.
For additional information, see Using Taskstartinfo (Page 90))."
ExecutionFaultTask
The ExecutionFaultTask is started immediately in accordance with its priority for program run
errors.
Examples of program run errors:
Faulty operations with floating point numbers, such as logarithms of negative numbers,
invalid numbers, etc.
Division by zero
Violation of array limits
Error while accessing system variables
The task in which the error occurred is terminated.
The CPU will switch to STOP mode if the ExecutionFaultTask is not configured or there is no
program assigned to it.
The CPU to STOP error response is possible for all tasks and starts the ShutdownTask. The
SIMOTION device switches to STOP mode.
An error reaction for the ExecutionFaultTask restarts the ExecutionFaultTask.
The following tasks can be restarted by commands in the program of the
ExecutionFaultTask:
StartupTask
ShutdownTask
Basic functions
150 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
MotionTasks
For the following tasks, the SIMOTION device switches to STOP mode once the
ExecutionFaultTask is completed and the ShutdownTask is started:
BackgroundTask
TimerInterruptTasks
SynchronousTasks
For additional information, see Using Taskstartinfo (Page 90)).
Note
Program errors in the ExecutionFaultTask and in the ShutdownTask switch the system to
STOP mode immediately.
Configuring SystemInterruptTasks
1. Click SystemInterruptTasks in the Execution Levels tree.
2. Select one of the specified tasks in the For task selection box.
3. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
Function Manual, 03/2007 151
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Field/Button Meaning/Note
Limits for dynamic data Enter the stack size for this task in bytes. When the programs
assigned to this task are executed, this size is made available for
data in the stack. The guide value is 16 KB for a task.
Error reaction with program Select the error reaction if errors occur while processing programs.
error Program errors are, for example, faulty operations with floating-point
numbers, division by zero and overshooting array limits.
CPU to STOP The CPU switches to STOP mode and the ShutdownTask is started.
ExecutionFaultTask The ExecutionFaultTask is started. All programs assigned to this
task are started.
If there are no programs assigned, the CPU switches to STOP
mode. The task in which the error occurred is terminated.
Basic functions
152 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
5.2.7 UserInterruptTasks
UserInterruptTasks are intended for user-defined actions.
Two UserInterruptTasks are available: UserInterruptTask_1 and UserInterruptTask_2.
A defined condition must be specified for the UserInterruptTask. Each time the condition is
fulfilled, the UserInterruptTask is started.
If you want to use a UserInterruptTask, the IPOsynchronousTask must be used in the
execution system.
UserInterruptTasks are not active during a StartupTask and a ShutDownTask.
Starting a UserInterruptTask
UserInterruptTasks are started automatically as soon as the user-defined interrupt condition
is fulfilled. The interrupt condition is checked in the interpolator cycle clock.
If both UserInterruptTasks are started at the same time, UserInterruptTask_1 is processed
before UserInterruptTask_2.
Note
If a user-defined interrupt occurs during shutdown, the UserInterruptTask is not started
anymore.
During shutdown (ShutdownTask), starting the UserInterruptTask is only possible using the
_startTask() command.
Completing a UserInterruptTask
UserInterruptTasks are completed automatically after completion of the programs assigned
to the UserInterruptTask.
You can assign the created and compiled programs to the selected UserInterruptTask and
define their execution sequence in the Program assignment tab.
You can set the following parameters:
Field/Button Meaning/Note
For task Use this to select one of the two UserInterruptTasks to which you want to
assign the programs. You can assign several programs to one
UserInterruptTask.
UserInterruptTask_1 Predefined names of the UserInterruptTask.
and
UserInterruptTask_2
Basic functions
Function Manual, 03/2007 153
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Field/Button Meaning/Note
Defined condition Here you define the condition for the selected UserInterruptTask
according to IEC 61131. During operation, the specified condition is
checked in the interpolator cycle clock. If the condition is fulfilled, the
UserInterruptTask is started with the assigned programs. You enter the
condition in the input field by using the symbol browser (variables via
drag and drop) and the Command library tab in the project navigator
(operators via drag and drop).
Only simple conditions (logic operations of inputs and local CPU
variables) and Boolean variables are permissible.
Use task in execution Activate the checkbox to display and use the task in the execution
system system. If the checkbox is deactivated, you cannot assign any programs
to this task.
Configuring UserInterruptTasks
1. Click UserInterruptTasks in the Execution Levels tree.
2. Select a UserInterruptTask in the For task selection box.
3. Specify the condition for starting this task.
4. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
154 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Basic functions
Function Manual, 03/2007 155
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
You enter the condition for starting a UserInterruptTask as a formula according to IEC 61131
(Structured Text). You can use the following variables:
Global device variables
Unit variables in an ST/MCC or LAD/FBD source file
SIMOTION SCOUT helps you create the formula.
To formulate a condition for starting the UserInterruptTask:
1. Under For task select the UserInterrupt for which you want to define the start condition.
2. Take the required operators from the Command library tab and insert them in the Defined
condition text field using drag and drop.
Alternatively, you can enter the operators directly in the text field.
3. Take the operands from the symbol browser and insert them in the Defined condition text
field using drag and drop or copy and paste. Alternatively, you can enter the operands
directly in the text field.
Command library
The Command library tab contains a list of mathematical operations and functions.
To open the individual operations, click the plus sign in front of the folder. You can drag the
operators to the required text field via drag and drop. You can use these commands, for
example, to define conditions.
Basic functions
156 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
Field/Button Meaning/Note
Limits for dynamic data Enter the stack size for this task in bytes. When the programs assigned
to this task are executed, this stack size is made available for data in
the stack. The guide value is 16 KB for a task.
Error reaction to program Select the error reaction when errors occur while processing programs.
error Program errors are, for example, faulty operations with floating-point
numbers, division by zero and overshooting array limits.
CPU to STOP The CPU switches to STOP mode and the ShutdownTask is started.
ExecutionFaultTask The ExecutionFaultTask is started. All programs assigned to this task
are started.
If there are no programs assigned, the CPU switches to STOP mode.
The task in which the error occurred is terminated.
See also
Assigning programs to the execution levels/tasks (Page 159)
5.2.8 ShutdownTask
The ShutdownTask is intended for selective intervention in the transition from RUN to
STOPU/STOP mode or for programming emergency stop sequences, e.g. selected setting of
outputs, defined shutdown of axes.
The ShutdownTask is not called in the case of a power failure.
The time monitoring must be specified in the Task configuration for the ShutdownTask: You
can configure the maximum duration for the execution of the ShutdownTask; 0 ms = no
monitoring. After this time, the CPU switches to STOP mode.
The I/O can be accessed directly in the ShutdownTask. Access to process image and
symbolic I/O variables is restricted. It is not practical to access the I/O by means of the
process image, as the process image is no longer being updated.
For additional information, see SIMOTION ST Structured Text, "Access to inputs and outputs
(process image, I/O variables)"
Select the Program assignment tab to assign the created and compiled programs to the
ShutdownTask and define their execution sequence.
Note
Program errors in the ExecutionFaultTask and in the ShutdownTask switch the system to
STOP mode immediately.
Basic functions
Function Manual, 03/2007 157
Execution System, Tasks, and System Cycle Clocks
5.2 Description of the user program tasks
2. In the Program assignment tab, assign the required programs to this task and define the
execution sequence.
Basic functions
158 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Field/Button Meaning/Note
Limits for dynamic data Enter the stack size for this task in bytes. When the programs assigned
to this task are executed, this size is made available for data in the
stack. The guide value is 16 KB for a task.
Watchdog Specify the cycle time in ms for executing the ShutdownTask. Enter a
value for time monitoring. The time monitoring is inactive if you enter 0
or no value.
Error reaction with program Select the error reaction if errors occur while processing programs.
error Program errors are, for example, faulty operations with floating-point
numbers, division by zero, and overshooting array limits.
CPU to STOP The CPU switches to STOP mode.
See also
Assigning programs to the execution levels/tasks (Page 159)
Watchdog (Page 173)
Basic functions
Function Manual, 03/2007 159
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Note
DCC tasks are assigned via the DCC editor, see the description of the DCC editor.
Field/Button Meaning/Note
Programs A list of all compiled programs that are available in the project is displayed
here. Non-compiled programs are not displayed. The number after the
program name indicates how often the program has been assigned to the
different tasks of the execution levels.
Assign Use this to assign selected programs to the task. Select the program in the
Programs list and click Assign. The program is assigned to the task and is
displayed in the task list.
Removing Use this to remove programs assigned to a task. Select the program in the
Task list and click Remove. The program is removed from the task.
Task A list of all programs assigned to this task is displayed here. The sequence
of the programs in the list corresponds to the execution sequence when the
program is executed. The program at the top of the list is executed first.
Arrow up Use the arrow up to move the selected program up one position within the
task. In this way you can determine the order of program execution within
the task.
Arrow down Use the arrow up to move the selected program down one position within
the task. In this way you can determine the order of program execution
within the task.
Basic functions
160 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
In the left-hand pane of the window, you can see the execution levels tree. The available
execution levels / tasks are displayed as fixed entries.
The OperationLevels folder contains the tasks that are available in the RUN mode.
The list below each execution level or task name shows the configured tasks and the
programs assigned to them.
1. Select the task to be configured.
2. Select the Program assignment tab.
The left-hand list box lists all available programs (ST programs, MCC charts and
LAD/FBD with Task creation type).
3. Select the programs in the list box on the left that you want to assign to the task.
4. Click .
Basic functions
Function Manual, 03/2007 161
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Task names
The names of the MotionTasks can be changed.
Basic functions
162 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Task control
The MCC, ST and LAD/FBD programming languages provide several commands for the task
control (e.g. start, stop, etc.).
See SIMOTION MCC, SIMOTION ST and SIMOTION LAD/FBD Programming Manual
These programming guides also provide information about how to use these task control
commands and several examples.
Stack size
In SIMOTION SCOUT as of V3.0, the stack size (limit for dynamic data) of the associated
task can be set in the Task configuration tab of the Task Configuration window. A default
value is specified for each task.
For more information, refer to the SIMOTION ST Programming Manual, "Setting the size of
the local data stack"
Basic functions
Function Manual, 03/2007 163
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Note
The reduction ratio between the bus and servo cycle clocks must also be set on the drive
as master application cycle. This setting is necessary to enable reciprocal sign-of-life
monitoring. For further information, refer to the drive descriptions.
Note
The settings of the system cycle clocks affect the system operating sequence
considerably. You must therefore exercise caution when making these settings.
Basic functions
164 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
2. Specify the basic/bus cycle clock (only if the isochronous mode is not configured).
Possible values: 1.0 ... 8.0 ms for PROFIBUS
As of V4.0 of SIMOTION P with PROFINET and SIMOTION D445: 0.5 ... 4.0 ms
As of V4.1 for SIMOTION P with PROFINET: 0.25 ms to 4 ms.
The bus cycle time for PROFIBUS must be a integral multiple of 0.125 ms; for C2xx of
0.25 ms.
The bus cycle time for PROFINET must be an integral multiple of 0.125 ms. Change the
value in HW Config if this is not the case.
3. Specify the ratio between the cycle clocks.
Note
If the basic/bus cycle clock has been set too small for a large hardware configuration, this
can result in the CPU not switching to the RUN mode. In this case, note the entries in the
diagnostics buffer for timeouts.
DCC
The entries for DCC are displayed as soon as a chart has been added under programs. DCC
charts are started automatically when the appropriate task is started.
Basic functions
Function Manual, 03/2007 165
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Figure 5-25 Setting of the system cycle clocks for TControl in SCOUT
Basic functions
166 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Field/Button Meaning/Note
Cycle clock ratios
Basic cycle clock or The basic/bus cycle clock (DP cycle clock or PN cycle clock) is
bus cycle clock used as a basis for setting further tasks.
Servo / T1(DCC) You can set an integral ratio between the servo cycle clock and
bus cycle clock here.
Among others, the position control of the axes is calculated in this
cycle clock.
Normally the factor 1 should be used. If you set the factor 2,
although the dynamic performance of the controller will
deteriorate, more computing time will be available for processing
other tasks.
The reduction ratio between the bus cycle clock and the servo
cycle clock must also be set as "master application cycle" for the
drive. This setting is necessary to enable reciprocal sign-of-life
monitoring. For further information, refer to the drive descriptions.
If isochronous mode is not configured, the default setting for the
basic time to servo cycle clock ratio is 1:1. It cannot be changed
then!
Ipo / T2(DCC) You can set an integral ratio between the IPO cycle clock and
servo cycle clock here.
As standard, the motion control of the axes will be calculated in
the interpolator cycle clock. The interpolator cycle clock factor is
used to determine how fast the drive setpoints are calculated.
Ipo2 / T3(DCC) You can set an integral ratio between the IPO_2 cycle clock and
IPO cycle clock here.
The interpolator cycle clock 2 is used for the motion control of low-
priority axes. The factor is used to determine how fast the
setpoints of the low-priority drives are calculated.
DCCAux (DCC) You can set an integer ratio between the DCCAux DCC cycle
clock and T3(DCC) DCC cycle clock here.
DCCAux_2(DCC) You can set an integral ratio between the DCCAux_2 DCC cycle
clock and DCCAux DCC bus cycle clock here.
TControl Click the arrow to open the configuration of the system tasks for
the TP TControl. There, you can set the ratio of the cycle clocks
for the task of the temperature channels to the servo cycle clock.
Use system tasks for Activate the checkbox if the special tasks for the temperature
TControl channels in the execution system should be displayed. If you have
not configured a temperature channel, you should deactivate the
system tasks for TControl as they require unnecessary
computation time.
Servo cycle clock The servo cycle clock is displayed here for information purposes.
(master application cycle) To change this, you must select the value further up in the dialog
box. All other cycle clocks of the temperature channel are a
multiple of the servo cycle clock.
Basic functions
Function Manual, 03/2007 167
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Field/Button Meaning/Note
PWM (Pulse Width Cycle clock which is used for the actuating signal output of the
Modulation) temperature channel. Specifies the basic cycle clock for further
cycle clocks. Select the cycle clock in ms or in Hz. If you select
Hz, the ratios to the input cycle clock and the control cycle clock
are specified automatically.
Input1/2 Cycle clock which is used for the actual value measurement of the
temperature channel. Select the ratio of this cycle clock to the
PWM cycle clock. The duration is displayed in the grayed-out field.
Control1/2 Cycle clock which is used for the closed-loop control of the
temperature channel. Select the ratio of this cycle clock to the
input cycle clock. The duration is displayed in the grayed-out field.
Network settings
Network settings at the DP Indicates whether isochronous mode was configured on the
master submodule X9 PROFIBUS interface. This display is for information purposes
only.
Isochronous bus cycle Isochronous operation parameterized on the PROFIBUS interface.
activated
Isochronous bus cycle not Isochronous operation not parameterized on the PROFIBUS
activated interface.
Isochronous bus cycle Displays the fieldbus cycle in ms if isochronous mode was
configured for the fieldbus interface. This display is for information
purposes only and corresponds to the isochronous mode
calculated in HW Config.
Basic functions
168 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
W W 7DVNUXQWLPHV,32
,32 WW
(IIHFWLYHWDVNUXQWLPH,32
Figure 5-26 Representation of the Taskruntime and effectiveTaskruntime (cycle clock ratio IPO1 :
IPO2 = 2)
Basic functions
Function Manual, 03/2007 169
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Legend:
Servo: Servo cycle clock
IS1: IPOSynchronousTask
IS2: IPOSynchronousTask_2
IPO1: IPOTask
IPO2: IPOTask2
The following table shows the tasks and the levels for which a Taskruntime (tasks) and an
effective Taskruntime (levels) can be determined.
Note
To determine the task runtimes, the system variable taskRuntimeMonitoring must be set to
enable.
The task runtimes are also shown in the SCOUT device diagnostics.
See also
Functions for runtime measurement of tasks - overview (Page 254)
Optimizing the execution system (Page 415)
Efficient programming - overview (Page 413)
Basic functions
170 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Timeout
You can configure maximum execution cycles for the execution levels BackgroundTask,
TimerInterruptTask, SynchronousTasks and ShutdownTask.
If the set maximum duration is exceeded, the associated SystemInterruptTask
(TimeFaultTask or BackgroundFaultTask) or a standard function (e.g. CPU to STOP) can be
called up.
Level overflow
A toleration of level overflows can be set for the execution levels IPOSynchronousTask and
IPOSynchronousTask_2.
A level overflow occurs when a level (IPOTask/IPOSynchronousTask or
IPOTask2/IPOSynchronousTask_2) has not been executed within the set system cycle
clock, IPO or IPO_2.
With a set tolerance, the next IPO cycle clock is used in order to:
Complete the computing process of the previous cycle clock without triggering the set
error reaction.
Start the computing process of the current cycle clock.
If another level overflow occurs in the next level cycle (if no tolerance is set or the number
has been exceeded), the CPU is set to STOP in order to prevent a blockade of the entire
system. This results in an entry in the diagnostics buffer and the error reaction (CPU to
STOP) with starting lockout.
You can set a maximum of 5 level overflows to be tolerated in the task configuration in the
execution system.
Examples
The following are examples of the execution relationships for level overflows:
6HUYR 6HUYR
Basic functions
Function Manual, 03/2007 171
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
6HUYR 6HUYR
High-performance programming
If level overflows occur, but it is not possible to increase the DP/servo cycle clock, the
following measures can be taken:
In task configuration for IPOSynchronousTask
Ratio of IPOSynchronousTask : IPO cycle clock = 75%
Tolerate two IPO overflows
Use optimized PROFIBUS
User-defined profile: HSA=2 (highest PROFIBUS address)
with, for example, two nodes on the PROFIBUS, RetryLimit = 1, switch off cyclic
distribution of the bus parameters (then, however, a PG can no longer be connected to
the isochronous PROFIBUS)
Change ratio BackgroundTask : MotionTasks
If, for example, focus is placed on the MotionTask, an event in the BackgroundTask
results in a MotionTask being quickly started and handled with few interruptions.
Read system variables only once and temporarily store them in a local variable for later
use
Basic functions
172 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
If the effectiveTaskruntime of the level which has overflowed is less than the set cycle
clock of the level, a timeout has occurred.
You can prevent this by adjusting the monitoring time of the levels to the values of the
system variable effectiveTaskruntime.
If the effectiveTaskruntime of the level which has overflowed is very close to or greater
than the set cycle clock of the level, a level overflow has occurred.
You can prevent this by adjusting the system cycle clocks, or you can tolerate these
overflows.
See also
SynchronousTasks (Page 141)
Task runtimes (Page 169)
See also
Using Taskstartinfo (Page 90)
5.3.7 Watchdog
The maximum duration for the execution of a task (cycle time) can be configured. If this time
is exceeded, the associated SystemInterruptTask (TimeFaultTask or
TimeFaultBackgroundTask) or the response CPU to STOP mode can be called.
The cycle time monitoring can be activated for the following tasks:
BackgroundTask
TimerInterruptTasks
SynchronousTasks
ShutdownTask
Basic functions
Function Manual, 03/2007 173
Execution System, Tasks, and System Cycle Clocks
5.3 Configure execution system
Note
For time-triggered tasks: If the task is restarted before it has been executed, there is a
timeout error. The SystemInterruptTask is started or the CPU goes to STOP mode.
See also
SystemInterruptTasks (Page 148)
Basic functions
174 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
%DFNJURXQG7DVN
0RWLRQ7DVNB
6\VWHP7DVNV
0RWLRQ7DVNBQ
Figure 5-29 Overview of the time allocation in the round robin execution level
Additional tasks
In addition to the user program tasks (BackgroundTask, MotionTask), other system tasks
(e.g. for communication) that require computing time in the round robin cycle also run in the
round robin execution level.
Basic functions
Function Manual, 03/2007 175
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
Sequence
In general, the tasks run successively in the round robin cycle. (The sequence is non-
deterministic and can, for example, change each time via a download, PowerON.)
Time allocation
A task can successively run a specified number of servo cycle clocks (remaining runtime)
before it must transfer the computation time to the next task. However, it can also be
transferred beforehand to the next task if it "does not have anything to do".
For the constructed case that all tasks in the round robin execution level have already been
handled once, the first task is restarted. In this way, there is no IDLE time.
There are times in which no user program is being executed. This, for example, is the case
when the BackgroundTask and the MotionTask are very brief (shorter than the remaining
runtime in a servo cycle clock); the system tasks will then use the remaining runtime.
Performance
A continuous loop in a MotionTask, without wait commands or synchronous motion
commands, causes the MotionTask to use its maximum computation time. Consequently,
the cycle of a BackgroundTask is additionally utilized (a larger part of the computation time
goes into the MotionTask). Consequently, the system tasks in the round robin level are
called at longer time intervals, which, for example, may influence the communication.
During the allocation of the round robin execution level for the BackgroundTask and
MotionTasks, the BackgroundTask in a complete round robin cycle receives at least one
time slice, a MotionTask receives two time slices (if, for example, they are required because
of a continuous loop).
Cyclic MotionTasks
Note when Motion Tasks should run cyclically:
If you want to use continuous loops in MotionTasks, then issue, for example, a
_waitTime(0s) in each cycle. This MotionTask then passes to the following MotionTask.
Note
MotionTasks with (continuous) loops without _waitTime (0s) burden the round robin
execution level as the MotionTask needs two complete servo cycle clocks.
If you want a MotionTask to be executed cyclically, it is better to end the task in the normal
way and restart the MotionTask again from a different task (e.g. BackgroundTask) rather
than use a continuous loop or a step command at the start of the program. This also has
advantages for a download during RUN.
Basic functions
176 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
See also
Optimizing the execution system (Page 415)
Basic functions
Function Manual, 03/2007 177
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
Figure 5-32 Time allocation in the round robin: Setting of the computation time for MotionTasks
In this setting, the BackgroundTask runs for one servo cycle clock, then all MotionTasks run
(each MotionTask runs for maximum two servo cycle clocks, unless it enters the suspend
mode beforehand), then the BackgroundTask runs again for one servo cycle clock, etc.
Basic functions
178 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
Servo cycle clock Servo cycle clock Servo cycle clock Servo cycle clock Servo cycle clock
1 2-3 4-5 6 7-8
Background MotionTask 1 MotionTask 2 Background MotionTask 1
Task Task
Sample program:
MotionTask 1 and 2 run concurrently with the BackgroundTask;
servo cycle clock = 3 ms
A counter in a While loop is incremented in the BackgroundTask (green line).
A counter in a While loop is incremented in MotionTask 1 (red line).
A counter in a While loop is incremented in MotionTask 2 (blue line).
Figure 5-33 Execution example for the time allocation in the round robin: Setting of the computation time for MotionTasks
Figure 5-34 Time allocation in the round robin: Setting the computation time for BackgroundTask
Basic functions
Function Manual, 03/2007 179
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
In this setting, the BackgroundTask runs for 20 servo cycle clocks, then all MotionTasks run
(each MotionTask runs for maximum two servo cycle clocks, unless it enters the suspend
mode beforehand), then the BackgroundTask runs again for another 20 servo cycle clocks,
etc.
Servo cycle clock Servo cycle clock Servo cycle clock Servo cycle clock Servo cycle clock
1-20 21-22 23-24 25-40 41-42
Background MotionTask 1 MotionTask 2 Background MotionTask 1
Task Task
Sample program:
MotionTask 1 and 2 run concurrently with the BackgroundTask;
servo cycle clock = 3 ms
A counter in a While loop is incremented in the BackgroundTask (green line).
A counter in a While loop is incremented in MotionTask 1 (red line).
A counter in a While loop is incremented in MotionTask 2 (blue line).
Figure 5-35 Execution example for the time allocation in the round robin: Setting the computation time for BackgroundTask
Basic functions
180 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
'3F\FOH
6HUYRF\FOHFORFN
,32F\FOHFORFN
'3FRPPXQLFDWLRQ
6HUYRWDVN
,32WDVN
6\VWHP,QWHUUXSW7DVN
7LPHU,QWHUUXSW7DVNB
7LPHU,QWHUUXSW7DVNB
8VHU,QWHUUXSW7DVN
5RXQGURELQ
H[HFXWLRQOHYHO
1 In the execution system, the cycle clocks have been selected as follows for this example:
DP cycle: Servo cycle clock: IPO cycle clock: 1:1:2
This means that the servo task is executed in each DP cycle and the IPO task is only
executed in every second DP cycle.
2 DP communication has the highest priority followed by the servo task.
3 IPO tasks are executed after servo tasks.
4 The round robin execution level is executed in the remaining time.
Basic functions
Function Manual, 03/2007 181
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
Example 2: Chronological execution when an InterruptTask is active and IPOTask lasts longer than
one servo cycle clock
'HIDXOW'36HUYR,32
'3F\FOH
6HUYRF\FOHFORFN
,32F\FOHFORFN
'3FRPPXQLFDWLRQ
6HUYRWDVN
,32WDVN
6\VWHP,QWHUUXSW7DVN
7LPHU,QWHUUXSW7DVNB
7LPHU,QWHUUXSW7DVNB
8VHU,QWHUUXSW7DVN
5RXQGURELQ
H[HFXWLRQOHYHO
7KHFRQGLWLRQIRUVWDUWLQJWKHWDVNLVVDWLVILHGDWWKLVWLPH
Figure 5-37 Chronological task execution, example: with InterruptTask active and IPOTask lasts
longer than one servo cycle clock
1 The program executed in the IPO task lasts longer than the servo cycle clock. As a result, the
IPO task is interrupted and the DP communication and the servo task are executed. Then,
execution of the IPO task resumes.
2 After the IPO task is completed, the SystemInterruptTask is executed. Then the lower-priority
TimerInterruptTask is started.
3 The UserInterruptTask is also not executed until the higher-priority tasks are completed, even
if the condition for the UserInterruptTask was previously satisfied.
4 The round robin execution level is executed in the remaining time.
Basic functions
182 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.4 Time allocation in the round robin execution level
Basic functions
Function Manual, 03/2007 183
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
&RQWURO
'DWD
HGLWLQJ
%XVV\VWHP
'DWD 'DWD
WUDQVIHU WUDQVIHU
UHDG ZULWH
'LVWULEXWHG
,2 'DWD 'DWD
UHDGLQ RXWSXW
In an isochronous system, the individual actions are chronologically synchronized with each
other. Thus, short and reproducible response times (i.e. with the same length) are achieved.
Cycle clock and time reference are preset by an isochronous, i.e. clocked bus system.
7';
'DWD
WUDQVPLVVLRQ
RQWKHEXV
W
*OREDO $F\FOLF'DWD
FRQWURO &\FOLFGDWD 5HVHUYH
GDWDH[FKDQJH
Basic functions
184 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
Description
7LPH,2
2XWSXW 7B'&
9DOLG
'DWDWUDQV
PLVVLRQRQ
WKHEXV
W
57VWDQGDUG 6WDQGDUG
,57FRPPXQLFDWLRQ FRPPXQLFDWLRQF\FOLF FRPPXQLFD
F\FOLFGDWDGDWD DQGDF\FOLFGDWD WLRQ
H[FKDQJH
Basic functions
Function Manual, 03/2007 185
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
Isochronous application
For an isochronous application the processing cycle clock of the controller and drives, or
decentral I/O, if connected, is synchronized to the bus cycle.
'DWDWUDQV
PLVVLRQRQ
WKHEXV
W
*OREDO $F\FOLFGDWD
FRQWURO &\FOLFGDWDGDWD 5HVHUYH
H[FKDQJH
7LPH,22XWSXW
9DOLG
'DWDLQ 'DWDRXW
&RQWURO
'DWDSURFHVVLQJ
'DWDWUDQV
PLVVLRQRQ
WKHEXV
W
,57FRPPXQLFDWLRQ 57VWDQGDUGFRPPXQLFD 6WDQGDUG
F\FOLFGDWDGDWD WLRQF\FOLFDQGDF\FOLF FRPPXQLFD
H[FKDQJH GDWD WLRQ
The data transmitted via cyclic data communication can thus be processed isochronously.
Basic functions
186 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
'DWD
WUDQVPLVVLRQ
RQWKHEXV
W
*OREDO $F\FOLFGDWD
FRQWURO &\FOLFGDWDGDWD
H[FKDQJH
7, 7, 72
7LPHRI 7LPHRIRXWSXW
DFTXLVLWLRQ UHIHUULQJWRJOREDO
UHIHUULQJWRJOREDO FRQWURO
FRQWURO
&KDQJHRIWKHLQSXWVLJQDO 7,7'372
0LQLPXPUHVSRQVHWLPH
0D[LPXPUHVSRQVHWLPH
7,[7'372
Basic functions
Function Manual, 03/2007 187
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
'DWD
WUDQVPLVVLRQ
RQWKHEXV
W
57157DF\FOLF
157
,57F\FOLFGDWD GDWD
GDWDH[FKDQJH
7, 7, 72
7LPHRI 7LPHRIRXWSXW
DFTXLVLWLRQ UHIHUULQJWRWKH
UHIHUULQJWRWKH ,57F\FOH
,57F\FOH
&KDQJHRIWKHLQSXWVLJQDO 7,7B'&72
0LQLPXPUHVSRQVHWLPH
0D[LPXPUHVSRQVHWLPH
7,[7B'&72
Basic functions
188 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
PROFIBUS
This results in a real process reaction time of:
TI +TDP +TO minimum
TI + 2TDP + TO maximum
PROFINET
This results in a real process reaction time of:
minimum TI +T_DC+TO
maximum TI + 2T_DC+ TO
'DWDLQ 'DWDRXW
Figure 5-45 Data processing in the control - setting the output data
When influencing axis data/axis motions, the processing time depends on the fact if the
data is already active in the servo (e.g. superimposed setpoint or output value).
'DWDLQ 'DWDRXW
If the data or commands become effective not until the IPO (e.g. issuing of motion
commands), the output data on the outputs only become effective with the next servo.
Note: To keep the runtime of the ServoSynchronousTask low (and thus the time until
Data Out), it is preferable to implement the programming of such tasks in the
IPOSynchronousTask.
Basic functions
Function Manual, 03/2007 189
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
Figure 5-47 Data processing in the control - output data effective in the IPO
Figure 5-48 Data processing in the control - output data effective in the next servo
Figure 5-49 Data processing in the control - output data effective in the IPO - influencing motion data
In those cases where the output data of the I/O are only transmitted in the next servo, the
reaction time is increased by one bus cycle clock each (for bus cycle
clock: servo : IPO = 1 : 1 : 1).
Basic functions
190 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
5.5.5 Dynamic response with respect to data transmission from the acquisition to the
processing
When using a PROFIBUS or PROFINET bus system, the specified times for data
transmission (TDX) must be taken into account in the calculation of the system cycle clock.
Small TDX allow for shorter cycle clocks or more processing time for the application with the
same cycle clock length.
For PROFIBUS DP TDX is shown by the HW config.
On the SIMOTION D on PROFIBUS-integrated depending on the degree of extension of
the SINAMICS project (I/O extension on SIMOTION D4xx and SIMOTION CX32) a
transmission time in the range of 125 s TDX 375 s is set automatically.
For PROFINET IO TDX = 0.5 TDP is set automatically
See also
Determination of Tdp, Ti and To using HW Config for ET 200 I/O devices on the PROFIBUS
(Page 191)
5.5.7 Determination of Tdp, Ti and To using HW Config for ET 200 I/O devices on the
PROFIBUS
In HW Config in the Isochronous mode screen form (called from the Edit > Isochronous
mode menu), the times for TDP, TI and TO can be determined.
The dialog box gives an overview of the parameters and times set for the isochronous mode
of the involved objects PROFIBUS, slaves and modules in the respective slaves.
All times in the dialog are specified in milliseconds.
TI/TO setting
in the network means that the times TI and TO are centrally set "same for all slaves"
in the slave means that the times TI and TO are set individually on each slave
TI, TO, TDP
Shows the currently set or calculated values TI, TO and TDP for the selected DP master
system.
Basic functions
Function Manual, 03/2007 191
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
For a detailed description of the screen form and all other parameters, please refer to the
online help for HW Config.
Note
Full "terminal-to-terminal" support of isochronous mode is only possible if all components
within the sequence support the "isochronous mode" system property. When selecting from
the PM10 catalog or the hardware catalog of HW Config, pay attention to the entry
Isochronous mode in the information field of the module.
A current list of isochronous I/O modules can be found on the Internet under
http://support.automation.siemens.com/WW/view/de/14747353.
Basic functions
192 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
For PROFINET and downscaling PROFINET cycle clock to servo cycle clock this can
cause the data of one or more bus cycle clocks to sooner or later be output within one
servo cycle clock if the I/O accesses are executed via the ServoSynchronousTask and
the runtime of the server execution level fluctuates beyond one bus cycle clock.
For PROFIBUS the data are always output with the first bus cycle clock as the servo
execution level must always be concluded with the first bus cycle clock.
Thus with a different runtime of the servo execution level in the individual cycle clocks, the
terminal-terminal time may vary.
If an always constant reaction time is to be achieved instead of a reaction time optimized
behavior, the following must be set:
For PROFIBUS:
A reduction ratio servo: IPO = 1 : 1 so that the I/O accesses from the
IPOSynchronousTask are always implemented in isochronous mode.
Comment: I/O accesses from the ServoSynchronousTask are always isochronous for
PROFIBUS
For PROFINET:
A reduction ratio bus cycle clock : Servo: IPO = 1 : 1 : 1 so that the I/O accesses from
the IPOSynchronousTask are always implemented in isochronous mode
A reduction ratio bus cycle clock : servo = 1 : 1 so that the I/O accesses from the
ServoSynchronousTask are always implemented in isochronous mode
Introduction
Optimized configuration in HW Config can greatly improve the runtime behavior of the
SIMOTION firmware.
Basic functions
Function Manual, 03/2007 193
Execution System, Tasks, and System Cycle Clocks
5.5 Isochronous I/O processing on fieldbus systems
See also
Timeouts and level overflows (Page 171)
Basic functions
194 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
5.6.1 Introduction
Introduction
Drive Control Chart (DCC) allows you to implement your regulating and control tasks in a
drive-related manner. For this there is a set of blocks (DCB) available to you that you can
interconnect graphically via a configuration tool (DCC editor) in so-called charts. The DCBs
are available to you in the form of a library (DCBLIB).
Thus the charts created can be executed on the SIMOTION platforms as well as on
SINAMICS drives.
Additional references
DCB lib DCC editor description
Description
The individual DCC blocks (DCB Drive Control Block) are organized as runtime groups in
the DCC editor. You can freely assign these runtime groups to the DCC tasks in the DCC
editor (task T1 to T5). The DCC tasks in the DCC editor correspond to the DCC tasks in the
SIMOTION execution system.
Basic functions
Function Manual, 03/2007 195
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
&\FOLFH[HFXWLRQOHYHO
F\FOH
5XQWLPHJURXS 5XQWLPHJURXS
&DQEHVZLWFKHGRQRII
In the user model, the DCC task assigns itself in the execution level next to the user program
tasks (execution environment for user programs in ST, MCC, LAD/FBD) and the system
tasks. If required, the DCC task is created by the Engineeringsystem (ES); this means it is
not present in the system as standard.
Mode Action
STARTUP->RUN ON runtime groups
SHUTDOWN->STOPU OFF runtime groups
SHUTDOWN->STOP OFF runtime groups
All other changes in the mode cause no changes to the runtime groups.
See also
servoDccTask in the servo level (Page 197)
ipoDcc Task in the IPO level (Page 198)
ipoDcc_2 Task in the IPO2 level (Page 199)
Execution levels for DccAux and DccAux_2 (Page 200)
Basic functions
196 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
Description
The T1(DCC) task runs in the servo level of the SIMOTION execution system. The servo
level is called synchronous to the data exchange with the isochronous I/O and used primarily
for fast control tasks.
At start, the cyclical I/O data for the technology objects and servo-synchronous I/O
variables is copied from the interface to the isochronous I/O in the execution system.
At conclusion, the cyclical I/O data is copied again from the execution system and, for
example, transferred with PROFIBUS to a PROFIBUS node.
The following graphic shows the chronological sequence of a task in the servo level.
'DWD3URFHVVLQJ
'; ';
W
'3F\FOHQ Q
'DWD,Q,2GDWDDUHFRSLHGWRWKHH[HFXWLRQV\VWHP
'DWD2XW,2GDWDDUHFRSLHGIURPWKHH[HFXWLRQV\VWHP
The T1(DCC) task is automatically started and executed at the begin of the servo level.
The following graphic shows the sequence of the tasks in the servo level.
6HUYROHYHO
6HUYRV\QFKURQRXVXVHU
&RS\,Q VHUYRGFF 6\VWHPWDVNV &RS\2XW
SURJUDP
Basic functions
Function Manual, 03/2007 197
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
See also
Defining system cycle clocks (Page 164)
Description
The IPO level runs with the same cycle time as the servo level or in an integer reduction
ratio. Tasks in the servo level have a higher priority and so can interrupt tasks in the IPO
level. In addition, in the IPO level all I/O data not copied in the servo level are copied into the
execution system. The data can come both from the isochronous and the non-isochronous
I/O.
The command processing and the setpoint generation of the technology objects run in the
system task of the IPO level.
The following graphic shows the chronological sequence in the IPO level.
,32OHYHO
6HUYR 6HUYR
W
'3F\FOHQ Q Q
&RS\,Q,2GDWDDUHFRSLHGWRWKHH[HFXWLRQV\VWHP
&RS\2XW,2GDWDDUHFRSLHGIURPWKHH[HFXWLRQV\VWHP
The T2(DCC) task is automatically started and executed at the begin of the IPO level.
The following graphic shows the execution sequence in the IPO level.
Basic functions
198 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,32OHYHO
See also
Defining system cycle clocks (Page 164)
Timeouts and level overflows (Page 171)
SynchronousTasks (Page 141)
Isochronous data processing (Page 186)
Description
The cycle time of the IPO2 level is an integer multiple of the cycle time of the IPO level.
However, it is not possible to set the IPO2 cycle clock equal to the IPO cycle clock.
The cycle time of the IPO2 level is shorter than that of the IPO level. Consequently, both the
IPO level and the servo level can interrupt the processing.
The T3(DCC) task is assigned in the IPO2 level as follows:
,32OHYHO
,32V\QFKURQRXVXVHU
LSRGFFB 6\VWHPWDVNV
SURJUDP
Basic functions
Function Manual, 03/2007 199
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
See also
ipoDcc Task in the IPO level (Page 198)
Defining system cycle clocks (Page 164)
Description
The two DCC execution levels, DccAux and DCCAux_2, are called synchronous to the
system.
The DCCAux and DCCAux_2 levels have the following properties:
DccAux has a multiple of the Ipo_ cycle clock.
DccAux_2 has a multiple of the DccAux cycle clock.
DccAux has a higher priority than DccAux_2
Synchronous trace recordings are possible.
Up to five level overflows are tolerated (the default is 1). The current number of level
overflows can be fetched.
In the case of a level overflow, the DCCTask is calculated to completion in the next task.
See also
Defining system cycle clocks (Page 164)
Basic functions
200 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
Overview
In the DCC editor, you can interconnect the connections of various blocks. Three basic
scenarios must be differentiated for the data exchange between the blocks:
You have connected connections of blocks with each other that lie in the same execution
level.
You have interconnected the output of one block with the input of a block in a higher
execution level.
You have interconnected the output of one block with the input of a block in a lower
execution level.
See also
Data exchange between blocks in the same level (Page 201)
Data for blocks from a lower-priority level (Page 203)
Data for blocks from a higher-priority level (Page 206)
Description
If you have interconnect the blocks in the same execution level, the data will be transferred
in accordance with the execution sequence of the blocks. The guarantees that the value is
current at the input of the execution sequences.
If you have defined the execution sequence in accordance with the data flow, no additional
dead time results in the level.
Basic functions
Function Manual, 03/2007 201
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,QWHUFRQQHFWLRQ
([HFXWLRQVHTXHQFHDQGGDWDIORZ
Q Q
&\FOHFORFN
If the execution sequence of the blocks in the level does not correspond to the data flow,
additional dead times result, because at the input access has been made to values from the
previous cycle clock.
Basic functions
202 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,QWHUFRQQHFWLRQ
([HFXWLRQVHTXHQFHDQGGDWDIORZ
$GGLWLRQDOGHDGWLPH
To optimize the dead times, always orient the execution sequence on the data flow.
Description
All blocks in an execution level must be calculated before their output values are made
available to blocks at the input in a different execution level. Output values from a higher-
priority level are accessed in a dedicated cycle clock (acceptance cycle clock) in order to
ensure isochronism of input values. The following graphic illustrates the isochronous value
transfer in a higher-priority level.
Basic functions
Function Manual, 03/2007 203
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,QWHUFRQQHFWLRQ
'&% '&%
'FF$X[B 'FF$X[
$FFHSWDQFHRIRXWSXWYDOXHV
Figure 5-59 Example for the data exchange from a lower priority level
The cycle clock ratio between the levels is 1:2. The task in the higher-priority level always
accepts the value in a second cycle clock, independent of whether the lower-priority task
was already calculated to the end in the previous cycle clock.
Basic functions
204 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,QWHUFRQQHFWLRQ
'&% '&%
'FF$X[B 'FF$X[
'FF$X[BRYHUIORZ
$FFHSWDQFHRIRXWSXWYDOXHV
'FF$X[
'FF$X[B
The described overflow scenario is true only for an ideal system. In a real application, user
tasks and system tasks also run in a level together with the DCC task.
Basic functions
Function Manual, 03/2007 205
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
&RUUHFWYDOXHDFFHSWDQFH 1RQHZYDOXH
1RQHZYDOXHLQWKLVF\FOH
6HUYROHYHO
LSR'FFWDVN
,32V\QFKURQRXVXVHUSURJUDP
,32V\VWHPWDVN
Note
To ensure an isochronal data transfer between the ipoDCC task in the IPO level and the
servoDCC in the servo level, the ipoDcc task in the IPO level considered by itself should not
already cause a level overflow. If this is the case, the higher-priority task does not have
available any updated values for the transfer of the values from the lower-priority level. The
updated values are then transferred only after the next cycle of the lower-priority levels.
Description
If an access is made to the output values from a lower-priority level, the values must be
transferred from a dedicated cycle clock of the higher-priority level in order to guarantee the
isochronism of input values.
Basic functions
206 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
,QWHUFRQQHFWLRQ
'&% '&%
7'&& 7'&&
$FFHSWDQFHRIRXWSXWYDOXHV
Basic functions
Function Manual, 03/2007 207
Execution System, Tasks, and System Cycle Clocks
5.6 Integrating DCC into the SIMOTION execution system
Note
There are no restrictions as to how often an output can be interconnected to a variable. The
output value of the most recently calculated block is always effective.
Description
DCC Tasks exhibit the following behavior for FPU (Floating-Point Unit) exceptions:
Basic functions
208 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.7 Include drive I/O
Description
The TM15 and TM17 High Feature terminal modules must be evaluated isochronously by
the SIMOTION motion control system. Details for the timing can be obtained from the TM15 /
TM17 High Feature Terminal Modules Commissioning Manual.
5.7.2 TM31, TM41, TM15 DI/DO terminal modules, TB30 terminal board and onboard
I/Os on SIMOTION D or CU310/CU320 and CX32.
Description
TM31, TM41, TM15 DI/DO, TB30 and the onboard I/Os operate free-running (not
isochronous) for SINAMICS.
The updating cycle is specified by the following drive parameters with 4 ms as default
setting:
p4099 for TM31, TM41 and TM15 DI/O or
p0799 for TB30 and the onboard I/O
The accesses are performed in a SINAMICS background task (for example, every 4 ms).
Access time to the inputs and outputs within the set updating cycle can vary from cycle to
cycle; this means that the system merely ensures that within each cycle an update is made
with a possible fluctuation range in accordance with the updating cycle. This can be
influenced using the setting for p4099 or p0799.
Note
The following figure only provides a schematic presentation of the times and does not
provide information on the absolute amount.
Basic functions
Function Manual, 03/2007 209
Execution System, Tasks, and System Cycle Clocks
5.7 Include drive I/O
V\QF
287
6HUYR6HUYR
287
6HUYR
,1
,1
6HUYR 6HUYR
V\QF V\QF
7L 7R
7F\F 7F\F
7'2 7'2
76HUYRRU 7,2 7,2
7,SR
7&8LQ 7&8RXW 7&8RXW
0LQWHUPLQDOWHUPLQDOUHVSRQVHWLPH
83LQVHUYRV\QF
0LQWHUPLQDOWHUPLQDOUHVSRQVHWLPH
83LQ,SRV\QF
The figure shows all times that affect the terminal-terminal response time. Worst case values
should be used for the dashed times, thus:
The set updating cycle Tcyc (= maximum time for the access time)
The time Tservo or TIPO in the gray area. Depending on the time the input event occurs the
maximum terminal-terminal reaction time can be up to one servo or IPO cycle clock
longer than the minimum terminal-terminal reaction time.
The gray area shows the range in which the input event is acquired and processed with the
next call of the user program (UP). The size of this range depends on whether the user
program runs in the servo-synchronous task or IPO-synchronous task.
Note
Note that a reduction of the updating cycle leads to higher loading of the SINAMICS closed
loop control or the SIMOTION D4xx, this means that the quantity frame for drives, terminal
modules, etc., can be reduced under some certain circumstances!
The SIMOTION user program can access I/O components in the SINAMICS drive device
when they are added as I/O PZD (process data) to the PROFIBUS message frame using
BICO interconnection (refer to the SIMOTION D4xx Commissioning and Hardware
Installation Manual, "Message frame configuring for onboard I/O and drive objects" section):
As of V4.1 special telegrams (39x) can also be used:
The timing depends on which I/O component is accessed. The following table specifies the
maximum delay times. To determine the terminal-terminal times, the values for the "terminal
->UP" and "UP -> terminal" must be added.
Basic functions
210 Function Manual, 03/2007
Execution System, Tasks, and System Cycle Clocks
5.7 Include drive I/O
Note
The dotted line areas in the Timing IO graphic for the IPO synchronous task only apply for
PROFINET IO. Analogously the times for PROFINET IO are presented in the following table
in the UP in iposynchronous task column. For PROFIBUS DP in the line OUT TIPO must be
replaced by TServo. The dotted line area is irrelevant for PROFIBUS as the servo cannot run
there over multiple bus cycles.
Legend
TDP: Clock cycle PROFIBUS (see setting in HW Config)
Ti : Latch time of the inputs for isosynchronous PROFIBUS (see setting in HW Config for
the drive)
To: Delay of the outputs for isosynchronous PROFIBUS (see setting in HW Config for the
drive)
TIO: Module-specific signal delay (corresponds to a DRIVE-CLiQ cycle + the input delay
time for digital input or the load-dependent output delay time for digital outputs)
Tcyc: Updating cycle in the SINAMICS (p4099 or p0799 parameter)
Servo: SIMOTION servo-cycle clock; multiple of TDP (see cycle clock settings for
SIMOTION)
IPO: SIMOTION IPO-cycle clock; multiple of the servo cycle clock (see cycle clock
settings for SIMOTION)
TDQ: DRIVE-CLiQ clock cycle (for V4.1, always corresponds to the current controller cycle
clock)
UP: User program
Output time on the CU: TCU_out - TO + Tcyc + TDQ + TIO
Read in time on the CU: TCU_in - TI + Tcyc + TDQ + TIO
Basic functions
Function Manual, 03/2007 211
6
Programming Execution System/Tasks/System Cycle
Clocks
Note
Before programs can be assigned to the execution levels the ST/MCC/LAD/FBD sources
must be translated.
Basic functions
Function Manual, 03/2007 213
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Basic functions
214 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Note
The sequence in which these tasks are first started after RUN mode has been reached does
not conform to the task priorities.
Basic functions
Function Manual, 03/2007 215
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Assignment of a program to one or more tasks can only be performed after compilation and
must occur before the program is loaded onto the target system.
When you have assigned a program to one or more tasks, you can establish the connection
to the target system, download the program to the target system, and start it.
See also
Configure execution system (Page 159)
Assigning programs to the execution levels/tasks (Page 159)
See also
Assigning programs to the execution levels/tasks (Page 159)
Basic functions
216 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Table 6-2 Initialization of local program variables according to task execution behavior
NOTICE
The task start sequence is not defined after the transition to RUN mode (refer to the Task
start sequence section).
Correct initial value assignment is not ensured if a task other than the StartupTask is used.
Basic functions
Function Manual, 03/2007 217
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Description
You can create multiple VAR_GLOBAL, VAR_GLOBAL RETAIN blocks in the interface and
implementation area of a UNIT (as of V4.1).
In the interface area and in the implementation area you can specify multiple declaration
blocks in any sequence. Each of these blocks will be versioned separately. Changes within a
block (whether direct or indirect via data type change) thus result in reinitialization of these
blocks when reloading. Thus the (RETAIN) data retain works block-by-block.
New blocks can be added on the end and the changed sources can be reloaded in the RUN,
without influencing the existing data blocks. If in one source section (statement applies
separately for interface and implementation) a block is added in front of an existing block of
the same type (RETAIN or not RETAIN) then all the subsequent blocks change and will be
reinitialized at download. Thus download in the RUN after such a change is not possible.
Via the functions _saveUnitDataSet /_loadUnitDataSet and _exportUnitDataSet
/_importUnitDataSet, the unit data block information can be saved. If when reading a data
set one or multiple blocks are missing this can be detected on the return code, the remaining
blocks however will be read.
Basic functions
218 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Note
If you do not set the compiler switch, then the behavior remains unchanged relative to V4.0
(corresponds to DEFAULT).
Basic functions
Function Manual, 03/2007 219
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
This pragma is also applicable in VAR declarations of PROGRAMs. However there it is only
effective if the compiler option "One-time program data instantiation" is selected.
VAR_GLOBAL
{HMI_Export := false; }
x : INT;
y : INT;
END_VAR
VAR_GLOBAL
{HMI_Export := true; }
x : INT;
y : INT;
END_VAR
This means that all HMI-relevant variables must be below the 64kbyte address limit for HMI
access. For device variants less than V4.1 this corresponds to the position of the block within
the source, and RETAIN blocks are ordered independently of association with the source
section in front of the dynamic blocks (no change possible).
For device variants as of V4.1 only HMI-relevant blocks still occupy areas in the HMI address
space.
If the 64kbyte address limit is exceeded then there is a warning, citing the variable from
which an HMI access is no longer possible. If data blocks are explicitly exported by
specifying the compiler pragmas for HMI, and it is not possible to reach variables of the block
via HMI, then then an error message is executed when translating.
Note
Access from HMI without consistency check setting is possible if variables at the end of the
entire VAR_GLOBAL area are added, this means they are added in the last VAR-GLOBAL
block variables, or that an entire VAR-GLOBAL definition block is supplemented at the end.
Basic functions
220 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Basic functions
Function Manual, 03/2007 221
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Basic functions
222 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Note
The statement section of the expression cannot contain any function calls or loops.
Basic functions
Function Manual, 03/2007 223
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
:$,7)25&21',7,21VWDWHPHQWXQIRUPDWWHG
:$,7)25&21',7,21 ([SUHVVLRQLGHQWLILHU
&RQGLWLRQ
1DPHRIDFRQVWUXFWGHFODUHGZLWK
(;35(66,21
(GJHHYDOXDWLRQ
%22/GDWDW\SH
758(5LVLQJHGJHRIWKHFRQGLWLRQLVHYDOXDWHG
)$/6(&RQGLWLRQLVHYDOXDWHGVWDWLFDOO\GHIDXOWVHWWLQJ
6WDWHPHQWVHFWLRQ (1'B:$,7)25&21',7,21
'RQRWIRUJHWWRWHUPLQDWHWKH
(1'B:$,7)25&21',7,21
NH\ZRUGZLWKDVHPLFRORQ
Expression identifier is a construct declared with EXPRESSION; its value defines (together
with WITH edge evaluation, if necessary) whether the condition is considered as satisfied.
The WITH edge evaluation sequence is optional. Edge evaluation is an expression of data
type BOOL; it determines how the value of expression identifier is interpreted:
Edge evaluation = TRUE: The rising edge of expression identifier is interpreted; i.e. the
condition is satisfied when the value of expression identifierchanges from FALSE to
TRUE.
Edge evaluation = FALSE: The static value of expression identifier is interpreted; i.e. the
condition is satisfied when the value of expression identifier is TRUE.
If is not specified, the default setting is FALSE, i.e. the static value of expression identifier is
evaluated.
You can use the NOT expression identifier to check for a trailing edge.
Basic functions
224 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
before the other task in the round-robin execution level, as well as before the
UserInterruptTasks and TimerInterruptTasks.
The increased task priority applies to all statements between the WAITFORCONDITION
command and the END_WAITFORCONDITION command. The
END_WAITFORCONDITION command ends the increased task priority.
The statement section must contain at least one empty statement.
Please note the following when using the WAITFORCONDITION command:
The command is used to wait for an event in a MotionTask. If it is programmed within
another task, it is ignored.
There is no time watchdog in a MotionTask.
Therefore, make sure that the condition does actually become true. Otherwise, the
MotionTask would always be in the wait state and this would produce a timeout error.
As of V4.1 time monitoring for WAITFORCONDITION can be programmed in a Motion
Task.
The WAITFORCONDITION ... END_WAITFORCONDITION structure may not be nested.
Within the round-robin level, the waiting task is the next to be executed when the event
occurs, as long as it is not hindered by higher-priority tasks (such as alarms).
The time slice of the active task in the round robin level is interrupted.
For the behavior in the event of task interruption, see _suspendTask).
The expression is checked in the IPO cycle clock with high priority.
See also
Task priorities (Page 125)
MotionTasks (Page 132)
INTERFACE
USEPACKAGE cam;
PROGRAM feeder;
END_INTERFACE
IMPLEMENTATION
// Condition for WAITFORCONDITION in MotionTask_1
EXPRESSION automaticExpr
automaticExpr := IOfeedCam; // Digital input
END_EXPRESSION
// feeder (MotionTask_1)
PROGRAM feeder
Basic functions
Function Manual, 03/2007 225
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
VAR
retVal : DINT;
END_VAR ;
retVal := _enableAxis(axis := realAxis,
enableMode := ALL,
servoCommandToActualMode := INACTIVE,
nextCommand := WHEN_COMMAND_DONE,
commandId := _getCommandId() );
// Wait for automatic start
WAITFORCONDITION automaticExpr WITH TRUE DO
retVal := _pos(axis := realAxis,
positioningMode := RELATIVE,
position := 500,
velocityType := DIRECT,
velocity:=300,
positiveAccelType := DIRECT,
positiveAccel:= 400,
negativeAccelType := DIRECT,
negativeAccel := 400,
velocityProfile:= TRAPEZOIDAL,
mergeMode:=IMMEDIATELY,
nextCommand:=WHEN_MOTION_DONE,
commandId:= _getCommandId() );
// Reduce priority after WAITFORCONDITION
END_WAITFORCONDITION;
retVal := _disableAxis(axis := realAxis,
disableMode := ALL,
servoCommandToActualMode := INACTIVE,
nextCommand := WHEN_COMMAND_DONE,
commandId := _getCommandId() );
END_PROGRAM
END_IMPLEMENTATION
Example for using WAITFORCONDITION with time verification via FB (from V4.1 and greater)
The following example shows time monitoring of the expressions (WAITFORCONDITION).
The bonding of the expression at the call point to instance data of a calling function block
inclusive time monitoring is presented alongside. This is a TON type reference variable. The
call is executed within the expression with query of the output.
VAR_GLOBAL
v1, v2 : INT;
t1, t2 : TIME;
END_VAR
EXPRESSION exp
VAR_IN_OUT
v : INT;
t : TON;
END_VAR
t();
exp := v > 100 and not t.q ;
Basic functions
226 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
END_EXPRESSION
FUNCTION_Block waitfb
VAR_IN_OUT
refpar1 : INT;
refpar2 : TIME;
END_VAR
VAR_TEMP
expr_timeout : TON;
END_VAR
expr_timeout(pt := refpar2, IN := true);
// Set monitoring time and
//activate timer
WAITFORCONDITION exp(v := refpar1, t := expr_timeout ) DO
; //Statement
IF (expr_timeout.q) THEN
// Error handling feasible, if Time-Out
;
END_IF;
END_WAITFORCONDITION
END_FUNCTION_BLOCK
The call of the waitfb type instance can then be executed at any point with different variables
in each case. These global variables can then be updated by cyclical tasks:
my_waitfb_1(refpar1 := v1, refpar2:=t1); //Wait until V1>100 and
time t1 not elapsed
my_waitfb_2(refpar1 := v2, refpar2:=t1);
6.1.7.6 Example for using WAITFORCONDITION with time monitoring directly in non-cyclic task /
Motion Task
Description
Example of time monitoring of the expression (WAITFORCONDITION).
The call is executed directly in a MotionTask.
The time monitoring is type TON, with call within the expression and query of the output.
VAR_GLOBAL
v1, v2 : INT;
t1, t2 : TIME;
END_VAR
EXPRESSION exp
VAR_IN_OUT
v : INT;
t : TON;
END_VAR
t();
exp := v > 100 and not t.q ;
END_EXPRESSION
VAR_TEMP
expr_timeout : TON;
Basic functions
Function Manual, 03/2007 227
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
END_VAR
.....
expr_timeout(pt := t1, IN := true); // Set monitoring time, and
//activate timer
//Wait until V1>100 and
//time t1 not elapsed
WAITFORCONDITION exp(v := v1, t := expr_timeout ) DO
; Statement
IF (expr_timeout.q) THEN
; // Error handling feasible, if Time-Out
END_IF;
END_WAITFORCONDITION
.....
You can update v1 in any cyclical tasks.
Note
A task that is in the wait state does not (or hardly) requires any CPU time. The only load on
the target system is the periodic check to establish whether the wait time has expired. This
check takes place in the IPO cycle clock.
The call of _waitTime (timeValue := T#0ms) in a MotionTask temporarily inactivates these
and returns the program control to the scheduler. This is recommended, for example for
longer loops if the program control will knowingly be transferred to the next round robin task
(also possible as BackgroundTask).
Basic functions
228 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
NOTICE
The function should be used in MotionTasks only; using it in cyclic tasks may lead to time
monitoring errors!
With SynchronousTasks: As of SIMOTION Kernel V3.2 you may configure if time
monitoring is suspended. Time monitoring is active by default1.
With IPOsynchronousTask, additionally take the following into account:
UserInterruptTasks will no longer be started by their triggering event!
With other cyclic tasks (BackgroundTask, TimerInterruptTasks): Time monitoring is
always active.
In cyclic tasks, use the timer system function blocks (see Timers section) to implement
waiting times.
1Up to Version V3.1 of the SIMOTION Kernel, time monitoring is suspended for the
SynchronousTasks.
Use an expression of data type TIME as an input parameter, the return value of data type
DINT is always 0.
For more information on the function (syntax), refer to the description of the _waitTime
function.
The following sample program puts the MotionTask to which it is assigned in the wait state
for ten seconds:
INTERFACE
PROGRAM waitTime;
END_INTERFACE
IMPLEMENTATION
PROGRAM waitTime
VAR
retVal :DINT;
END_VAR;
retVal := _waitTime(timeValue := T#10s);
END_PROGRAM
END_IMPLEMENTATION
Basic functions
Function Manual, 03/2007 229
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Download in RUN
When you download in the RUN mode, you can load sources (units) of a project to the
selected target system during the operating mode RUN.
In contrast to a project download in the STOP mode, it is not possible to load changed TOs,
HW configurations, global device and I/O variables, or libraries with a download in the RUN
mode. If changes in these areas are made, a download in the RUN mode is rejected.
Just like a project download, a download in the RUN mode, always means that all changes
are loaded. Therefore, only slight changes should be made for a download in the RUN
mode.
As a standard, variables are not initialized, as otherwise they would overwrite the current
values of the system.
If there are several programs, FBs or FCs in one source (unit), always the entire unit is
loaded.
You can make a download in the RUN mode possible by selecting the option Permit
download/RAM2ROM in the RUN, which you can find in SCOUT under Extras > settings >
CPU-Download. To execute the download, please select Target device > Load to target
device in the context menu of the device or use the icon Load CPU to target device.
Finally, a question appears if the download shall be executed while the CPU is in RUN or
STOP mode.
Basic functions
230 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
If instance data of a program are to be changed, no other program may be active in the
moment of exchange during the download in the RUN mode. In this case, programs in
non-cyclic tasks can be problematical.
CAUTION
Changed behavior during the initialization of data.
With sequential tasks, the initialization of data is not done when starting the task or, in case
of non-cyclic tasks, with the transition from STOP to RUN, but generally only with a
download. If necessary, depending on the application, the initialization of the data must be
done in the StartUpTask or at the beginning of the programs in the sequential tasks.
If a program is assigned to different tasks, the data to be processed are the same.
Basic functions
Function Manual, 03/2007 231
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
For the local setting, please activate the setting Only create program instance data once
in the characteristics dialog of the program source in the register compiler, or when
inserting a program source.
Before a download in the RUN mode, the compiler switch has to be activated (i.e. the
source has to be loaded in the STOP mode with a download before).
Basic functions
232 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Basic functions
Function Manual, 03/2007 233
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Instance data of programs (VAR) can be changed and re-initialized via the compiler
pragma "BlockInit_OnChange := True;".
If new IO variables are required, they have to be in the process image of the background
task (0-63 byte).
VAR_GLOBAL
anio AT %I2.7 : BOOL;
END_VAR
The screen shows which program units can be called in succession. For example,
Motion_Unit_01 calls FunctionBlock_01, which in turn calls the two functions Function_01
and Function_02.
Motion_Unit_01 and Cyclic_Unit_05 are bound only by the supplementary conditions
described in the Overview of the options for a download in RUN.
The area highlighted in red identifies the program blocks where a download in RUN could
cause problems.
Basic functions
234 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Motion_Unit_02 contains a While TRUE loop, from which FunctionBlock_02 and then
Function_02 are called (see Example of a While loop (Page 238)). Since the loop prevents a
download in RUN (no download point possible), the block called in it and the function are
also blocked. The conditions under which, conversely, a download in RUN is possible, are
listed in the table below.
0RWLRQB8QLWB )XQFWLRQ%ORFNB
PRWLRQBSUJB )XQFWLRQB
IEBVLQJOHBFDOOB
86(6*OREDO IFBVLQJOHBFDOOB
86(6*OREDO 86(6*OREDO
)XQFWLRQ%ORFNB )XQFWLRQB
F\FOLFYLDUHVWDUW7DVN )XQFWLRQB
0RWLRQB8QLWB
PRWLRQBSUJB
86(6*OREDO
*OREDOB)%
([HFXWLRQV\VWHP )XQFWLRQ%ORFNB
)XQFWLRQB
F\FOLFYLD:KLOH
6HTXHQWLDOWDVN IFBPXOWLBFDOOB
HJ0RWLRQB7DVNB 86(6*OREDO
6HTXHQWLDOWDVN 0RWLRQB8QLWB
HJ0RWLRQB7DVNB PRWLRQBSUJB )XQFWLRQ%ORFNB
86(6*OREDO IEBPXOWLBFDOOB
6HTXHQWLDOWDVN *OREDOB)% 86(6*OREDO
HJ0RWLRQB7DVNB )XQFWLRQ%ORFNB )XQFWLRQB
F\FOLFYLDUHVWDUW7DVN
&\FOLFWDVN
SURJUDPGDWDLQVWDQWLDWHG
HJ%DFNJURXQGB7DVN
RQFHRQO\
&\FOLFWDVN
HJ,32V\QFKURQRXVB7DVN
&\FOLFB8QLWB
F\FOLFBSUJB
86(6*OREDO
*OREDOB)%
)XQFWLRQ%ORFNB
*OREDO
&\FOLFB8QLWB
,QHYHU\XQLW86(6RQO\ F\FOLFBSUJB )XQFWLRQ%ORFNB
KDVWKHLQWHUIDFH )XQFWLRQB
86(6*OREDO 86(6*OREDO
FRPSRQHQW 86(6*OREDO
*OREDOB)% IEBVLQJOHBFDOOB
DQGYDULDEOHGHFODUDWLRQ IFBVLQJOHBFDOOB
)XQFWLRQ%ORFNB )XQFWLRQB
*/2%$/B)%
86(6*OREDO
)XQFWLRQ%ORFNB
&RQWDLQVJOREDOLQVWDQFHRI
IEBPXOWLBFDOOB
86(6LQ
0RWLRQ8QLW
F\FOLFXQLW
Basic functions
Function Manual, 03/2007 235
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Basic functions
236 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Change Function
location
Type Var Var Code Var_Input Var_In_Out Return
Constant change value
Function_01 Fc1_single_call_01
Function_02 Fc2_multi_call_01 1) 1) 1)
Function_03 Fc5_single_call_01
Footnote Description
1) MotionTask_2 must be stopped prior to commencing the download:
- Download is prevented by a continuous loop (WHILE TRUE) in the program.
- Download will also be prevented if the program waits too long in
"WAITFORCONDITION", remains set to "_waitTime" or waits for synchronous
commands to finish.
2) In terms of use, structural changes are the same as creating/modifying a variable.
3) Use the "BlockInit_OnChange" pragma.
4) Additional variable can be inserted by means of an additional variable block or using
the "BlockInit_OnChange" pragma.
5) Only possible if the "Only put in program instance data once" setting has been selected
and you are using the "BlockInit_OnChange" pragma.
Basic functions
Function Manual, 03/2007 237
Programming Execution System/Tasks/System Cycle Clocks
6.1 Execution system
Footnote Description
6) Ability to change depending on use:
- Code always goes.
- Field lengths; same as when creating/modifying a variable, possible with
"BlockInit_OnChange" pragma.
- Initial value, always goes, analogous to code.
7) Reinitialization necessary, you may need to use the "BlockInit_OnChange" pragma.
It must always be possible to download the entire content of a unit. If one of the programs in a unit
(e.g., interface, implementation) is not functioning, download of the entire unit will be prevented.
Can always be changed.
Restricted changes are possible; a description of the information to be taken into
account is provided (see footnote).
Cannot be changed; see footnote for reason.
//*********************************************************************
PRG2_Counter1 := PRG2_Counter1 + 1;
WHILE TRUE DO
PRG2_Counter2 := PRG2_Counter2 + 2;
my_fb2_multi_call_01(
fb2_multi_call_01_inp_real_1 := 1.0,
fb2_multi_call_01_inout_real_1 := Motion2_prg_01_Real_1
);
END_WHILE;
//*********************************************************************
//*********************************************************************
Var_Global
{BlockInit_OnChange := TRUE;}
Interface_Var_Global1 : INT;
Interface_Var_Global2 : REAL;
END_VAR
//*********************************************************************
Basic functions
238 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Basic functions
Function Manual, 03/2007 239
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
TaskId
The task is specified for these functions via a unique TaskId. You can obtain the TaskId for a
task as follows:
As _task.name variable (e.g. _task.motionTask_1). Explanation of terms:
_task identifies the predefined namespace for the TaskId (see Namespaces section).
The identifier for the namespace is separated by a period from the following identifier.
name is the identifier of the task as assigned in the execution system (e.g.
motionTask_1).
With the _getTaskId(name) function
The task is specified by its name (as in the execution system).
You can use the _checkEqualTask function to check whether a TaskId belongs to a
particular task (see _checkEqualTask function).
Note
Similar functions are available for SIMOTION Kernel versions up to V3.0. For these
functions, the task is specified via its name (as in the execution system). These functions
must not be used in libraries.
These functions should no longer be used as of Version V3.1 of the SIMOTION Kernel;
their availability is not guaranteed with future versions of the SIMOTION Kernel.
In addition, SIMOTION devices provide system functions for controlling the scheduler. These
are listed in the table (for a description, see the Parameter Manuals for SIMOTION devices):
NOTICE
The _checkEqualTask and _getTaskId functions and variables of the form _task.name must
not be used in libraries.
Basic functions
240 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
INTERFACE
PROGRAM myStart;
PROGRAM myMotion;
END_INTERFACE
IMPLEMENTATION
VAR
RetDWord : DWORD;
END_VAR
PROGRAM myStart
RetDWord := _startTaskid (_task.motionTask_1);
// Start MotionTask_1
END_PROGRAM
// Here, commands in the program, e.g. axis commands
PROGRAM myMotion
END_PROGRAM
END_IMPLEMENTATION
Basic functions
Function Manual, 03/2007 241
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Declaration
_getStateOfTaskId (
{ id : StructTaskId // Task ID
}
) : DWORD
Input parameters
id (optional)
Data type: StructTaskId
Default: The TaskId of the current task in which the function is called.
Task ID of the task to be controlled (see General information about task control
commands).
Return value
Basic functions
242 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
This function corresponds to the _getStateOfTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it is no
longer supported in future versions.
See also
Querying and meaning of the task states (Page 221)
Declaration
_resetTaskId (
id : StructTaskId // MotionTasks only
) : DWORD
Basic functions
Function Manual, 03/2007 243
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Input parameters
id
Data type: StructTaskId
TaskId of the task to be controlled.
Return value
This function corresponds to the _resetTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
The function has no return value.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it is no
longer supported in future versions.
See also
_restartTaskId function (Page 245)
_startTaskId function (Page 249)
Basic functions
244 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Declaration
_restartTaskId (
id : StructTaskId // MotionTasks only
) : DWORD
Input parameters
id
Data type: StructTaskId
Task ID of the task to be controlled (see General information about task control
commands).
Return value
Basic functions
Function Manual, 03/2007 245
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
This function corresponds to the _restartTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
The function has no return value.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
Declaration
_resumeTaskId (
id : StructTaskId
) : DWORD
Input parameters
id
Data type: StructTaskId
Task ID of the task to be controlled (see General information about task control
commands).
Basic functions
246 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Return value
This function corresponds to the _resumeTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
The function has no return value.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
See also
_suspendTaskId function (Page 250)
Basic functions
Function Manual, 03/2007 247
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Declaration
_retriggerTaskIdControlTime (
{ id : StructTaskId
}
) : DWORD
Input parameters
id (optional)
Data type: StructTaskId
Default: The TaskId of the current task in which the function is called.
Task ID of the task to be controlled (see General information about task control
commands).
Return value
Basic functions
248 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Declaration
_startTaskId (
id : StructTaskId // MotionTasks only
) : DWORD
Input parameters
id
Data type: StructTaskId
Task ID of the task to be controlled (see General information about task control
commands only MotionTasks).
Return value
Basic functions
Function Manual, 03/2007 249
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
This function corresponds to the _startTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
The function has no return value.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
See also
_getStateOfTaskId function (Page 241)
_resetTaskId function (Page 243)
_restartTaskId function (Page 245)
Declaration
_suspendTaskId (
id : StructTaskId
) : DWORD
Basic functions
250 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
Input parameters
id
Data type: StructTaskId
Task ID of the task to be controlled (see General information about task control
commands).
Return value
This function corresponds to the _suspendTaskId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
The function has no return value.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
See also
_resumeTaskId function (Page 246)
Basic functions
Function Manual, 03/2007 251
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
NOTICE
This function must not be used in libraries.
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
Declaration
Input parameters
Return value
Basic functions
252 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.2 Task control commands
NOTICE
This function must not be used in libraries.
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
Declaration
Input parameters
id
(only short form
permitted)
Data type: StructTaskId
TaskId to be checked, e.g. TSI#taskId.
Name
(only short form permitted)
Data type: TaskName
Name of a task, as defined in the execution system.
Return value
Basic functions
Function Manual, 03/2007 253
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
Note
In many cases, there is a similar function available for SIMOTION Kernel versions up to
V3.0. For these functions, the task is specified via its name (as in the execution system).
These functions must not be used in libraries.
These functions should no longer be used as of Version V3.1 of the SIMOTION Kernel; their
availability is not guaranteed with future versions of the SIMOTION Kernel.
See also
_getMaximalTaskIdRunTime function (Page 255)
_getMinimalTaskIdRunTime function (Page 256)
_getCurrentTaskIdRunTime function (Page 258)
Function _getAverageTaskIdRunTime (Page 259)
Task runtimes (Page 169)
Basic functions
254 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
Declaration
_getMaximalTaskIdRunTime (
{ id : StructTaskId
}
) : TIME
Input parameters
id (optional)
Data type: StructTaskId
Default: The TaskId of the current task in which the function is called.
Task ID of the task for which the runtime is to be measured (see page 6-330).
Return value
Basic functions
Function Manual, 03/2007 255
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
See also
_startTaskId function (Page 249)
_suspendTaskId function (Page 250)
Basic functions
256 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
Declaration
_getMinimalTaskIdRunTime (
{ id : StructTaskId
}
) : TIME
Input parameters
id (optional)
Data type: StructTaskId
Default: The TaskId of the current task in which the function is called.
TaskID of the task for which the runtime is to be measured (see _startTaskId function).
Return value
Basic functions
Function Manual, 03/2007 257
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
See also
_startTaskId function (Page 249)
_suspendTaskId function (Page 250)
Declaration
_getCurrentTaskIdRunTime (
{ id : StructTaskId
}
) : TIME
Input parameters
id (optional)
Data type: StructTaskId
Default: The TaskId of the current task in which the function is called.
TaskID of the task for which the runtime is to be measured (see _startTaskId function).
Basic functions
258 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
Return value
See also
_startTaskId function (Page 249)
_suspendTaskId function (Page 250)
Basic functions
Function Manual, 03/2007 259
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
The determined runtime is a multiple of the servo cycle clock; for runtimes less than the
position control cycle clock, T#MIN (= T#0ms) is returned as measured value.
The function is permitted for all tasks. However, the measurement is not supported by the
IPOsynchronousTask and the ShutdownTask. Measured value T#MIN (= T#0ms) is returned
when called with these tasks.
Declaration
Input parameters
id (optional)
Data type StructTaskId
Default: TaskID of the task for which runtime is to be measured, as
defined in the execution system.
TaskID of the task for which the runtime is to be measured (see _startTaskId function).
Return value
Basic functions
260 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.3 Functions for runtime measurement of tasks
See also
_startTaskId function (Page 249)
_suspendTaskId function (Page 250)
Description
With the following system functions you can measure the time since system start with s
precision. Thus for sections within the application you can measure the time precisely, in
order to optimize the application.
You can use the following functions:
Function _getInternalTimeStamp (Page 261)
Function _getTimeDifferenceOfInternalTimeStamp (Page 262)
Description
The _getInternalTimeStamp function supplies a specific internal time stamp as UDINT. You
can set a time stamp, for example at the beginning and end of a task, and then use this in
the Function _getTimeDifferenceOfInternalTimeStamp (Page 262) function as UDINT t1 and
UDINT t2.
_getInternalTimeStamp :UDINT;
Basic functions
Function Manual, 03/2007 261
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Description
The function _getTimeDifferenceOfInternalTimeStop supplies a time value from two internal
time stamps. You must generate the two time stamps via the Function
_getInternalTimeStamp (Page 261) return value UDINT).
_getTimeOfDifferenceOfInternalTimeStamps
(
UDINT t1,
UDINT t2
):UDINT;
The start time point of the time that will be measured is t1, the end time point t2. The function
returns the difference (t2 - t1) as UDINT (in s).
Application
With the function you can measure the runtimes of code sections, for example
communication times in an iposynchronous task
Basic functions
262 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Note
In many cases, there is a similar function available for SIMOTION Kernel versions up to
V3.0. For these functions, the message is specified via its name (as configured in
SIMOTION SCOUT). These functions must not be used in libraries.
These functions should no longer be used as of Version V3.1 of the SIMOTION Kernel; their
availability is not guaranteed with future versions of the SIMOTION Kernel.
AlarmId
You can obtain the AlarmId for a configured message name in the following way:
As variable _alarm.name. Where
_alarm designates the predefined namespace for the AlarmId (see Namespaces in the
ST Programming Manual). The identifier for the name space is separated by a period
from the following identifier.
name is the identifier of the message as configured in SIMOTION SCOUT.
With the _getAlarmId(name) function (see _getAlarmId function). The message is
specified by means of the configured message name:
NOTICE
The _getAlarmId function and variables of the form _alarm.name must not be used in
libraries.
See also
_getAlarmId function (Page 271)
_alarmScId function (Page 270)
_alarmSqId function (Page 267)
_alarmSId function (Page 263)
Basic functions
Function Manual, 03/2007 263
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Declaration
_alarmSId (
Sig : BOOL
Ev_Id : StructAlarmId
{ sd : ANY_NUM, ANY_BIT
}
) : DWORD
Input parameters
Sig
Data type: BOOL
The signal triggering the message is interpreted as follows:
If the signal represents a rising edge relative to the last call with this AlarmId an
incoming message is generated. An incoming message is also generated if the signal
state is TRUE on the first call with this message name.
If the signal represents a trailing edge relative to the last call with this AlarmId an
outgoing message is generated.
Ev_Id
Data type: StructAlarmId
AlarmId of the message to be generated (see AlarmID (Page 355))
sd (optional)
Data type: ANY_NUM, ANY_BIT
Default: 0
Auxiliary value: All elementary data types are permissible auxiliary values. Values
cannot be entered; only variables or previously defined identifiers for constants
belonging to one of the allowed data types are permitted.
The auxiliary value must be specified if an auxiliary value has been defined during
message configuration in SIMOTION SCOUT.
During compilation, a check cannot be performed with the data type of the auxiliary
value configured in the message.
Basic functions
264 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Return value
Basic functions
Function Manual, 03/2007 265
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
16#8007 No job has been started yet with this message name (first call with
Sig = FALSE).
Falling edge (outgoing message) arrived without prior rising edge
(incoming message)
Entry is not executed in message list.
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_IV_FIRST_CALL
16#8008 Message name already assigned.
Does not occur for SIMOTION.
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_IV_SFC_TYP
16#8009 Internal error
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_INTERNAL_ERROR
16#8010 Entry was rejected; message acknowledgement memory full.
Only for _alarmSqId
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_NO_ENTRY
Example
See Example of message generation (Page 357).
This function corresponds to the _alarmSId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
Basic functions
266 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Declaration
_alarmSqId (
Sig : BOOL
Ev_Id : StructAlarmId
{ sd : ANY_NUM, ANY_BIT
}
) : DWORD
Input parameters
Sig
Data type: BOOL
The signal triggering the message is interpreted as follows:
If the signal represents a rising edge relative to the last call with this message name
an incoming message is generated. An incoming message is also generated if the
signal state is TRUE on the first call with this message name.
If the signal represents a negative edge relative to the last call with this message
name an outgoing message is generated.
Ev_Id
Data type: StructAlarmId
AlarmId of the message to be generated (see AlarmID (Page 355))
sd (optional)
Data type: ANY_NUM, ANY_BIT
Default: 0
Auxiliary value: All elementary data types are permissible auxiliary values. Values
cannot be entered; only variables or previously defined identifiers for constants
belonging to one of the allowed data types are permitted.
The auxiliary value must be specified if an auxiliary value has been defined during
message configuration in SIMOTION SCOUT.
During compilation, a check cannot be performed with the data type of the auxiliary
value configured in the message.
Basic functions
Function Manual, 03/2007 267
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Return value
Basic functions
268 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
16#8007 No job has been started yet with this message name (first call with
Sig = FALSE).
Falling edge (outgoing message) arrived without prior rising edge
(incoming message)
Entry not executed in message list.
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_IV_FIRST_CALL
16#8008 Message name already assigned.
Does not occur for SIMOTION.
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_IV_SFC_TYP
16#8009 Internal error
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_INTERNAL_ERROR
16#8010 Entry was rejected; message acknowledgement memory full.
ALARMS_ERROR OR
DSC_SVS_DEVICE_ALARMS_NO_ENTRY
Example
See Example of message generation (Page 357)Programming messages.
This function corresponds to the _alarmSqId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
Basic functions
Function Manual, 03/2007 269
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Declaration
_alarmScId (
Ev_Id : StructAlarmId
) : DWORD
Input parameters
Ev_Id
Data type: StructAlarmId
AlarmId of the message to be generated (see AlarmID (Page 355))
Return value
Basic functions
270 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Example
See Checking the error number and status of a message (filtering return values) on page 5-
261 in Subsection 5.7.1.
This function corresponds to the _alarmScId function with the following exceptions:
The task is specified by means of its name (as it appears in the execution system).
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
This function must not be used in libraries.
This function should no longer be used as of Version V3.1 of the SIMOTION Kernel; it will no
longer be supported in future versions.
Basic functions
Function Manual, 03/2007 271
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
NOTICE
This function must not be used in libraries.
This function may only be called in the short form, i.e. with a complete listing of all
parameter values, but without specification of the formal parameters.
Declaration
Input parameters
Al_Name
This is a message name configured specifically for the application that is created when
the message is configured in SIMOTION SCOUT.
Return value
See also
_alarmSId function (Page 263)
_alarmScId function (Page 270)
AlarmId (Page 355)
_alarmSqId function (Page 267)
Basic functions
272 Function Manual, 03/2007
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Description
The function returns a max. of 40 pending alarms according to the maximum number of
entries in the alarm list. (pending alarms). The number of pending alarms is displayed in
numberOfPendingAlarms.
The type of each alarm is displayed in _type.
The type of each alarm is displayed in state.
Syntax
_getPendingAlarms :StructRetGetPendingAlarms
StructRetGetPendingAlarms :STRUCT
numberOfPendingAlarms :UINT;
alarm :Array[1..40] of StructPendingAlarmState;
END_STRUCT
StructPendingAlarmState :STRUCT
Id :StructAlarmId;
_type :EnumAlarmIdType [ALARM_S |ALARM_SQ]
State :EnumAlarmIdState [INCOMING|OUTGOING]
END_STRUCT
Description
Use the functions _resetAlarmId and _resetAllAlarmId to set one or all alarms to "outgoing".
As before SQ alarms must be acknowledged via an HMI or the SCOUT.
Note
Set "outgoing" and concurrent "Acknowledge" of the AlarmSQ in a 2nd step if necessary;
Resetting the alarms deletes the AlarmS,
You must acknowledge the AlarmSQ yourself.
Basic functions
Function Manual, 03/2007 273
Programming Execution System/Tasks/System Cycle Clocks
6.4 Functions for message programming (AlarmS)
Basic functions
274 Function Manual, 03/2007
Programming of general standard functions 7
7.1 Programming of general standard functions - overview
SIMOTION provides a series of standard functions you can call in your sources to solve
common tasks.
Note
Some of the following standard functions can only be called in short form, i.e. with a
complete list of all parameter values, but without specifying the formal parameters:
Result := function name (1st parameter value, 2nd parameter value)
instead of
Result := function name (formal parameter1 := 1st parameter value, etc.)
This is noted in the description of each function.
For information about the general data types (e.g. ANY_INT, ANY_BIT), see Elementary
data types, General data types table in the ST Programming Manual.
Basic functions
Function Manual, 03/2007 275
Programming of general standard functions
7.2 Numeric standard functions
Call Result
Result:=ABS (-5); 5
Result:=ABS (in := -5);
Result:=SQRT (81.0); 9.0
Result:=SQRT (in := 81.0);
Result:=TRUNC (-3.141_59); -3
Result:=TRUNC (in := -3.141_59);
Basic functions
276 Function Manual, 03/2007
Programming of general standard functions
7.2 Numeric standard functions
The following table shows possible logarithmic standard function calls and their results:
Call Result
Result := EXP (4.1); 60.3403 ...
Result := EXP (in := 4.1);
Result := EXPD (3.0); 1_000.0
Result := EXPD (in := 3.0);
Result := LN (2.718_281); 1.0
Result := LN (in := 2.718_281);
Result := LOG (245); 2.389_166
Result := LOG (in := 245);
Basic functions
Function Manual, 03/2007 277
Programming of general standard functions
7.2 Numeric standard functions
The following table shows possible trigonometric standard function calls and their results:
Call Result
PI:= 3.141592; //PI is a variable! 0.5
Result := SIN (PI / 6);
Result := SIN (in := PI / 6);
Result := ACOS (0.5); 1.047_197 //equals PI/3
Result := ACOS (in := 0.5);
Basic functions
278 Function Manual, 03/2007
Programming of general standard functions
7.3 Access to bits in bit strings
Note
If numeric values are used as input parameter in, the smallest possible data type is assumed
(for example, BOOL if 1, BYTE if 2).
The following table shows possible bit string standard function calls and their results.
Call Result
Result := ROL (2#1101_0011, 5); 2#0111_1010
// 1st parameter corresponds to 211 decimal (= 122 decimal)
Result := ROR (2#1101_0011, 2); 2#1111_0100
// 1st parameter corresponds to 211 decimal (= 244 decimal)
Result := SHL (2#1101_0011, 3); 2#1001_1000
// 1st parameter corresponds to 211 decimal (= 152 decimal)
Result := SHR (2#1101_0011, 2); 2#0011_0100
// 1st parameter corresponds to 211 decimal (= 52 decimal)
Result := SHL (1, 3); 2#0000_0000
// 1st parameter data type BOOL (= 0 decimal)
Result := SHL (2, 3); 2#0001_0000
// 1st parameter data type BYTE (= 16 decimal)
Declaration
Basic functions
Function Manual, 03/2007 279
Programming of general standard functions
7.3 Access to bits in bit strings
Input parameters
in
Data type ANY_BIT
Bit string variable
n
Data type USINT
Number of the bit for which the value is to be output
Permissible values: [0..7] for BYTE
[0..15] for WORD
[0..31] for DWORD
When specifying impermissible values the function supplies the return value FALSE.
Return value
Example
FUNCTION f : VOID
VAR CONSTANT
BIT_7 : INT := 7;
END_VAR
VAR
dw : DWORD;
b: BOOL;
END_VAR
b := dw.BIT_7; // Access to bit number 7
b := dw.3; // Access to bit number 3
b := dw.33; // Translation error; insufficient bit width!
END_FUNCTION
Basic functions
280 Function Manual, 03/2007
Programming of general standard functions
7.3 Access to bits in bit strings
Note
When using bit string addressing on I/O and system variables as a consequence of the
separate read, operation and re-write process that is interruptible by another task, there is no
way to ensure consistent access. The error will not be detected by the system; read access
however is possible.
Declaration
FUNCTION _setBit (
in : ANY_BIT, // Bit string variable
n : USINT, // Bit number
{ value : BOOL // Bit value
}
) : ANY_BIT
Input parameters
in
Data type: ANY_BIT
Bit string variable
n
Data type: USINT
Number of the bit for which the value is to be set.
Permissible values: [0..7] for BYTE
[0..15] for WORD
[0..31] for DWORD
If illegal values are specified (without an additional message), the unchanged value of
the bit string variable is returned.
value
(optional)
Default: TRUE
Value assigned to the bit to be set
Basic functions
Function Manual, 03/2007 281
Programming of general standard functions
7.3 Access to bits in bit strings
Return value
Example
FUNCTION f : VOID
VAR CONSTANT
BIT_7 : INT := 7;
END_VAR
VAR
dw : DWORD;
b: BOOL;
b = 1;
END_VAR
b := dw.BIT_7; // Access to bit number 7
b := dw.3; // Access to bit number 3
b := dw.33; // Translation error; insufficient bit width!
END_FUNCTION
Note
When using bit string addressing on I/O and system variables as a consequence of the
separate read, operation and re-write process that is interruptible by another task, there is no
way to ensure consistent access. The error will not be detected by the system; read access
however is possible.
Basic functions
282 Function Manual, 03/2007
Programming of general standard functions
7.3 Access to bits in bit strings
Declaration
FUNCTION _toggleBit (
in : ANY_BIT, // Bit string variable
n : USINT, // Bit number
) : ANY_BIT
Input parameters
in
Data type: ANY_BIT
Bit string variable
n
Data type: USINT
Number of the bit whose value is to be inverted (set from TRUE to FALSE or from
FALSE to TRUE).
Permissible values: [0..7] for BYTE
[0..15] for WORD
[0..31] for DWORD
If illegal values are specified (without an additional message), the unchanged value of
the bit string variable is returned.
Return value
Example
Basic functions
Function Manual, 03/2007 283
Programming of general standard functions
7.4 Bit operations on numeric data types
Basic functions
284 Function Manual, 03/2007
Programming of general standard functions
7.5 String processing (from V4.0 and greater)
Basic functions
Function Manual, 03/2007 285
Programming of general standard functions
7.5 String processing (from V4.0 and greater)
Table 7-11 Examples for calls of the functions for the string processing
Call Result
A := CONCAT (in1 := ASTRING, in2 := 123); ASTRING123.
A := DELETE (in1 := ASTRING, l := 2, p := 4); ASTNG.
A := DELETE (in1 := ASTRING, l := 2, p := 0); ASTRING.
A := DELETE (in1 := ASTRING, l := 2, p := 8); ASTRING.
A := DELETE (in1 := ASTRING, l := 0, p := 4); ASTRING.
A := DELETE (in1 := ASTRING, l := 10, p := 4); AST.
A := DELETE (in1 := ASTRING, l := -1, p := 4); .
A := DELETE (in1 := ASTRING, l := 2, p := -1); .
B := FIND (in1 := ASTRING, in2 := RI); 4.
B := FIND (in1 := ASTRING, in2 := RB); 0.
A := INSERT (in1 := ASTRING, in2 := 123, p := 1); A123STRING.
A := INSERT (in1 := ASTRING, in2 := 123, p := 0); 123ASTRING.
A := INSERT (in1 := ASTRING, in2 := 123, p := 10); ASTRING123.
A := INSERT (in1 := ASTRING, in2 := 123, p :=-1); .
A := LEFT (in := ASTRING, l := 3); AST.
A := LEFT (in := ASTRING, l := 10); ASTRING.
A := LEFT (in := ASTRING, l := -1); .
B := LEN (in := ASTRING); 7.
A := MID (in := ASTRING, l :=3, p :=2 ); STR.
A := MID (in := ASTRING, l :=3, p :=6 ); NG.
A := MID (in := ASTRING, l :=3, p :=8 ); .
A := MID (in := ASTRING, l :=3, p :=0 ); .
A := REPLACE (in1 := ASTRING, in2 := 123, l := 4, p := 2); A123NG.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 4, p := 1); 123ING.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 0, p := 2); ASTRING.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 4, p := 0); ASTRING.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 2, p := 10); ASTRING123.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 4, p := 5); ASTRI123.
A := REPLACE (in1 := ASTRING, in2 := 123, l := 4, p := -1); .
A := REPLACE (in1 := ASTRING, in2 := 123, l := -1, p : =2); .
A := RIGHT (in := ASTRING, l := 3); ING.
A := RIGHT (in := ASTRING, l := 10); ASTRING.
A := RIGHT (in := ASTRING, l := -1); .
For information about conversion functions for STRINGs, see Functions for the conversion of
INT/FLOAT and STRING data types (Page 295)
Basic functions
286 Function Manual, 03/2007
Programming of general standard functions
7.5 String processing (from V4.0 and greater)
Description
Errors which occur during string functions are stored separately for each task in the
Taskstartinfo. It is therefore implemented in the task context and can then be subsequently
queried accordingly in the same task, e.g. BackgroundTask.
Variable:TSI#ERRNO : DINT
Value 0 indicates free of errors. For the string functions, the errors in P (position in the string)
and L (number of characters) are stored separately from the violation of the maximum string
length with different values
Value 0 for free of errors
Value1 for violation of the maximum string length
Value 2 for P or L outside of the value range
Note
TSI#ERRNO cannot be used to examine the string length (applies to DINT_TO_STRING,
UDINT_TO_STRING, REAL_TO_STRING, and LREAL_TO_STRING).
In this case, the 0 error code will be set in TSI#ERRNO (string length exceeded).
You must, therefore, ensure that the string you enter is long enough or should check the
length in the user program prior to conversion.
VAR
A: STRING[254];
END_VAR
Basic functions
Function Manual, 03/2007 287
Programming of general standard functions
7.6 Standard functions for data type conversion
7.6.1 Functions for the conversion of numeric data types and bit data types
Explicit conversion is always required if information could be lost, for example, if the value
range is decreased or the accuracy is reduced, as is the case for conversion from LREAL to
REAL.
The compiler outputs warnings when it detects conversions associated with loss of precision.
NOTICE
The type conversion may cause errors when the program is running, which will trigger the
error reaction set in the task configuration (see Evaluating faults and events).
Special attention is required when converting DWORD to REAL. The bit string from
DWORD is taken unchecked as the REAL value. You must make sure that the bit string in
DWORD corresponds to the bit pattern of a normalized floating-point number in accordance
with IEEE. To do this, you can use the functions _finite (see _finite function) and _isNaN
(see _isNaN function). To do this, you can use the _finite function and the _isNaN function.
Otherwise, an error is triggered (see above) as soon as the REAL value is first used for an
arithmetic operation (for example, in the program or when monitoring in the symbol
browser).
Explicit data type conversion is performed using standard functions, which are listed in the
following table.
Input parameters
Each function for the conversion of a data type has exactly one input parameter; named
in.
Return value
The result is always the return value of the function. The respective conversion rule is
specified in the following table.
Names
As the data types of the input parameter and the return value come from the respective
function name, they are not listed separately in the following table: For example, with the
BOOL_TO_BYTE function, the data type of the input parameter is BOOL and the data
type of the return value is BYTE.
Basic functions
288 Function Manual, 03/2007
Programming of general standard functions
7.6 Standard functions for data type conversion
Table 7-13 Functions for converting numeric data types and bit data types
Function name Conversion rule Implicitly
possible
BOOL_TO_BYTE Accept as least significant bit and fill the rest with 0. yes
BOOL_TO_DWORD Accept as least significant bit and fill the rest with 0. yes
BOOL_TO_WORD Accept as least significant bit and fill the rest with 0. yes
BOOL_VALUE_TO_DINT Accept Boolean value as DINT value (0 or 1). No
BOOL_VALUE_TO_INT Accept Boolean value as INT value (0 or 1). No
BOOL_VALUE_TO_LREAL Accept Boolean value as LREAL value (0.0 or 1.0). No
BOOL_VALUE_TO_REAL Accept Boolean value as REAL value (0.0 or 1.0). No
BOOL_VALUE_TO_SINT Accept Boolean value as SINT value (0 or 1). No
BOOL_VALUE_TO_UDINT Accept Boolean value as UDINT value (0 or 1). no
BOOL_VALUE_TO_UINT Accept Boolean value as UINT value (0 or 1). no
BOOL_VALUE_TO_USINT Accept Boolean value as USINT value (0 or 1). no
BYTE_TO_BOOL Accept the least significant bit. no
BYTE_TO_DINT Accept bit string as least significant byte and fill the rest with 0. no
BYTE_TO_DWORD Accept bit string as least significant byte and fill the rest with 0. yes
BYTE_TO_INT Accept bit string as least significant byte and fill the rest with 0. no
BYTE_TO_SINT Accept bit string as SINT value. no
BYTE_TO_UDINT Accept bit string as least significant byte and fill the rest with 0. no
BYTE_TO_UINT Accept bit string as least significant byte and fill the rest with 0. no
BYTE_TO_USINT Accept bit string as USINT value. no
BYTE_TO_WORD Accept bit string as least significant byte and fill the rest with 0. yes
BYTE_VALUE_TO_LREAL Interpret bit string as USINT value and accept this value. no
BYTE_VALUE_TO_REAL Interpret bit string as USINT value and accept this value. no
DINT_TO_BYTE Accept the least significant byte as bit string. no
DINT_TO_DWORD Accept bit string. no
DINT_TO_INT Accept the 2 least significant bytes as INT value. no
DINT_TO_LREAL Accept value. yes
DINT_TO_REAL Accept value (accuracy may be lost). no
DINT_TO_SINT Accept the least significant byte as SINT value. no
DINT_TO_UDINT Accept value as bit string. no
DINT_TO_UINT Accept the 2 least significant bytes as UINT value. no
DINT_TO_USINT Accept the least significant byte as USINT value. no
DINT_TO_WORD Accept the 2 least significant bytes as bit string. no
DINT_VALUE_TO_BOOL FALSE (0), if DINT value = 0; else TRUE (1). no
DWORD_TO_BOOL Accept the least significant bit. no
DWORD_TO_BYTE Accept the least significant byte as bit string. no
DWORD_TO_DINT Accept bit string as DINT value. no
DWORD_TO_INT Accept the 2 least significant bytes as INT value. no
Basic functions
Function Manual, 03/2007 289
Programming of general standard functions
7.6 Standard functions for data type conversion
Basic functions
290 Function Manual, 03/2007
Programming of general standard functions
7.6 Standard functions for data type conversion
Basic functions
Function Manual, 03/2007 291
Programming of general standard functions
7.6 Standard functions for data type conversion
See also
Evaluating faults and events (Page 86)
_finite function (Page 305)
_isNaN function (Page 306)
Basic functions
292 Function Manual, 03/2007
Programming of general standard functions
7.6 Standard functions for data type conversion
Basic functions
Function Manual, 03/2007 293
Programming of general standard functions
7.6 Standard functions for data type conversion
Description
The implicit conversion from BYTE to STRING and from STRING to BYTE enables a byte to
be written to a string or a byte to be read from a string (ASCII format, 1 byte per character).
Note
Strings are interpreted as ARRAY[1...stringsize].
Rules:
1. If n > len(myString) and n < maxlen(myString), the length of the string is adjusted.
All characters between myString[len(myString)] ... myString[n] are assigned the value "0".
2. If n > maxlen(myString), TSI#ERRNO is set to value 2 (value outside of the valid range)
and myByte assigned the value 0.
Basic functions
294 Function Manual, 03/2007
Programming of general standard functions
7.6 Standard functions for data type conversion
Rule
1. If k > len(myString), TSI#ERRNO is set to value 2 (value outside of the valid range) and
myByte assigned the value 0.
Applications
Read out of internal variable and, if required, conversion from INT to STRING or DINT to
STRING.
Direct output of STRING on HMI, e.g. WIN CC Op.
Conversion of STRING to ARRAY of bytes and thus output on HMI.
7.6.5 Functions for the conversion of INT/FLOAT and STRING data types
Description
The following functions are used for the conversion of numbers to strings for the display of
numbers of the INT and FLOAT data types.
Explicit data type conversion is performed using standard functions, which are listed in the
following table.
Input parameter
Each function for the conversion of a data type has exactly one input parameter named IN.
Return value
The result is always the return value of the function.
Basic functions
Function Manual, 03/2007 295
Programming of general standard functions
7.7 Converting between any data types and byte arrays
Application
An HMI fetches texts from the file system (recipe memory) and loads text for text via a
sequence into the run-time system of SIMOTION (unit variable).
The data is saved with _saveUnitDataSet or _exportUnitDataSet in the run-time system.
Extension of the STRINGs with current SIMOTION data (e.g. actual position)
The text is output via the serial interface (e.g. ET200)
7.7.1 General
Variables of any data type (elementary data types, standard data types of technology
packages and devices, and user-defined data types) can be converted to byte fields, and
vice versa, using the following functions:
For further information (e.g. on the arrangement of the byte arrays, application example) see
Converting between any data types and byte arrays (marshalling) (Page 366)).
These functions are commonly used to create defined transmission formats for data
exchange between various devices (see also Communication functions (Page 369)).
Basic functions
296 Function Manual, 03/2007
Programming of general standard functions
7.7 Converting between any data types and byte arrays
Note
The functions either have to be called and processed in one task only or, if several tasks are
used, suitable methods have to be implemented to synchronize these tasks from the point of
view of calling and processing functions (e.g., _testAndSetSemaphore, _releaseSemaphore).
If different tasks are used for the purpose of calling and processing the result, then undefined
values may be produced.
NOTICE
Each variable of data type BOOL (including variables that are components within a
structured data type) occupies one byte in the byte array.
Declaration
FUNCTION AnyType_to_BigByteArray (
anydata : ANY, // Any data type
{ offset : DINT // Only constants permitted
}
) : ARRAY [..] OF BYTE // Big Endian
FUNCTION AnyType_to_LittleByteArray (
anydata : ANY, // Any data type
{ offset : DINT // Only constants permitted
}
) : ARRAY [..] OF BYTE // Little Endian
Basic functions
Function Manual, 03/2007 297
Programming of general standard functions
7.7 Converting between any data types and byte arrays
Input parameters
anydata
Data type: ANY
Variable of any data type
The following data types are permitted:
Technology Objects
offset
(optional)
Data type: DINT
Default 0
Constant, specifies the first element to be assigned in the array.
Return value
See also
Converting between any data types and byte arrays (marshalling) (Page 366)
Basic functions
298 Function Manual, 03/2007
Programming of general standard functions
7.7 Converting between any data types and byte arrays
When an ST source file is compiled, a check is made to determine whether the offset falls
within the array limits and whether the byte array (between the offset and the upper array
limit) completely covers the variable.
Note
The functions either have to be called and processed in one task only or, if several tasks are
used, suitable methods have to be implemented to synchronize these tasks from the point of
view of calling and processing functions (e.g., _testAndSetSemaphore, _releaseSemaphore).
If different tasks are used for the purpose of calling and processing the result, then undefined
values may be produced.
NOTICE
One byte from the byte array is assigned to each variable of data type BOOL (including
variables that are components within a structured data type).
Declaration
FUNCTION BigByteArray_to_AnyType (
byteArray : ARRAY [..] OF BYTE, // Big Endian
{ offset : DINT // Only constants permitted
}
) : ANY
FUNCTION LittleByteArray_to_AnyType (
byteArray : ARRAY [..] OF BYTE, // Little Endian
{ offset : DINT // Only constants permitted
}
) : ANY
Input parameters
byteArray
Data type: ARRAY [..] OF BYTE
For BigByteArray_to_AnyType
In Big Endian arrangement (most significant byte at low memory address)
For LittleByteArray_to_AnyType
In Little Endian arrangement (least significant byte at low memory address)
offset
(optional)
Data type: DINT
Default 0
Constant, specifies the first element to be assigned in the array.
Basic functions
Function Manual, 03/2007 299
Programming of general standard functions
7.8 Combining bit-string data types
Return value
NOTICE
The marshalling function result may cause errors when the program is running, the error
response set in the task configuration will then be triggered (see Execution errors in
programs).
Proceed with caution when converting byte arrays to the general ANY_REAL data type or
to structures that contain this data type. The bit string from the byte array is taken
unchecked as the ANY_REAL value. You must make sure that the bit string of the byte
array corresponds to the bit pattern of a normalized floating-point number according to
IEEE. To do this, you can use the _finite and _isNaN functions. To do this, you can use the
_finite function and the _isNaN function.
Otherwise, an error is triggered (see above) as soon as the ANY_REAL value is first used
for an arithmetic operation (for example, in the program or when monitoring in the symbol
browser).
See also
Execution errors in programs (Page 87)
_finite function (Page 305)
_isNaN function (Page 306)
Converting between any data types and byte arrays (marshalling) (Page 366)
Basic functions
300 Function Manual, 03/2007
Programming of general standard functions
7.8 Combining bit-string data types
Declaration
FUNCTION _BYTE_FROM_8BOOL (
{ bit0, // Lease significant bit
bit1, bit2, bit3, bit4, bit5, bit6,
bit7: BOOL // Most significant bit
}
) : BYTE
Input parameters
bit0 (optional)
...
bit7 (optional)
Data type: BOOL
Default FALSE
Up to eight variables of data type BOOL, which are to be combined into a variable of
data type BYTE
bit0: least significant bit
...
bit7: most significant bit
Return value
Basic functions
Function Manual, 03/2007 301
Programming of general standard functions
7.8 Combining bit-string data types
Declaration
FUNCTION _WORD_FROM_2BYTE (
{ byte0, // Less significant byte
byte1: BYTE // More significant byte
}
) : WORD
Input parameters
byte0 (optional)
byte1 (optional)
Data type: BYTE
Default BYTE#0
Up to two variables of data type BYTE, which are to be combined into a variable of data
type WORD
byte0: less significant byte
byte1: more significant byte
Return value
Declaration
FUNCTION _DWORD_FROM_2WORD (
{ word0, // Less significant word
word1: WORD // More significant word
}
) : DWORD
Basic functions
302 Function Manual, 03/2007
Programming of general standard functions
7.8 Combining bit-string data types
Input parameters
word0 (optional)
word1 (optional)
Data type: WORD
Default WORD#0
Up to two variables of data type WORD, which are to be combined into a variable of
data type DWORD
word0: less significant word
word1: more significant word
Return value
Declaration
FUNCTION _DWORD_FROM_4BYTE (
{ byte0 // Least significant byte
byte1, byte2,
byte3: BYTE // Most significant byte
}
) : DWORD
Input parameters
byte0 (optional)
byte1 (optional)
byte2 (optional)
byte3 (optional)
Data type: BYTE
Default BYTE#0
Basic functions
Function Manual, 03/2007 303
Programming of general standard functions
7.9 Conversion of technology object data types
Up to four variables of data type BYTE, which are to be combined into a variable of
data type DWORD
byte0: least significant byte
...
byte3: most significant byte
Return value
Declaration
FUNCTION AnyObject_to_Object (
in : ANYOBJECT
) : ANYOBJECT
Input parameters
in
Data type: ANYOBJECT
Variable of a TO data type (or ANYOBJECT) or a TO instance
Basic functions
304 Function Manual, 03/2007
Programming of general standard functions
7.10 Functions for verification of floating-point numbers
Return value
See also
Conversion of TO data types (Page 75)
Declaration
_finite (
in : ANY_REAL
) : BOOL
Input parameters
in
Data type: ANY_REAL
Variable to be checked
Basic functions
Function Manual, 03/2007 305
Programming of general standard functions
7.10 Functions for verification of floating-point numbers
Return value
Example
See also
_isNaN function (Page 306)
Execution errors in programs (Page 87)
Declaration
_isNaN (
in : ANY_REAL
) : BOOL
Basic functions
306 Function Manual, 03/2007
Programming of general standard functions
7.11 Functions for selection
Input parameters
in
Data type: ANY_REAL
Variable to be checked
Return value
Example
See also
_finite function (Page 305)
Execution errors in programs (Page 87)
Basic functions
Function Manual, 03/2007 307
Programming of general standard functions
7.11 Functions for selection
Declaration
FUNCTION SEL (
g: BOOL,
in0 : ANY,
in1 : ANY
) : ANY
Input parameters
g
Data type: BOOL
Selection of the input parameter in0 or in1
in0, in1
Data type: ANY
The input parameters in0 and in1 must either be of the same data type or must be
convertible to a common data type by implicit conversion (see Elementary data type
conversion in the ST Programming Manual).
Return value
Basic functions
308 Function Manual, 03/2007
Programming of general standard functions
7.11 Functions for selection
Declaration
FUNCTION MUX (
k : ANY_INT,
in0 : ANY,
...
inn-1 : ANY
) : ANY
Input parameters
k
Data type: ANY_INT
Selection of the input parameter in0 to inn1.
The value range depends on the number n of the input parameters
in0...inn1: 0 k n-1.
If illegal values are specified, input parameter in0 will be selected.
in0
...
inn1
Data type: ANY
The number n of the input parameters in0 and inn1 may vary.
All input parameters in0 and inn1 must either be of the same data type or must be
convertible to a common data type by implicit conversion (see Elementary data type
conversion in the ST Programming Manual).
If n formal parameters in0 to inn1 are specified when calling the function, this must be
done in ascending uninterrupted order; for four input parameters, for example, the
identifiers of the formal parameters are: in0, in1, in2, in3.
Return value
Basic functions
Function Manual, 03/2007 309
Programming of general standard functions
7.11 Functions for selection
Declaration
FUNCTION MAX (
in0 : ANY_ELEMENTARY,
...
inn-1 : ANY_ELEMENTARY
) : ANY_ELEMENTARY
Input parameters
in0
...
inn1
Data type: ANY_ELEMENTARY
The number n of the input parameters in0 and inn1 may vary.
All input parameters in0 and inn1 must either be of the same data type or must be
convertible to the most powerful data type by implicit conversion (see Elementary data
type conversion in the ST Programming Manual).
If n formal parameters in0 to inn1 are specified when calling the function, this must be
done in ascending, uninterrupted order; for four input parameters, for example, the
identifiers of the formal parameters are: in0, in1, in2, in3.
Return value
Basic functions
310 Function Manual, 03/2007
Programming of general standard functions
7.11 Functions for selection
Declaration
FUNCTION MIN (
in0 : ANY_ELEMENTARY,
...
inn-1 : ANY_ELEMENTARY
) : ANY_ELEMENTARY
Input parameters
in0
...
inn1
Data type: ANY_ELEMENTARY
The number n of the input parameters in0 and inn1 may vary.
All input parameters in0 and inn1 must either be of the same data type or must be
convertible to the most powerful data type by implicit conversion (see Elementary data
type conversion in the ST Programming Manual).
If n formal parameters in0 to inn1 are specified when calling the function, this must be
done in ascending, uninterrupted order; for four input parameters, for example, the
identifiers of the formal parameters are: in0, in1, in2, in3.
Return value
Basic functions
Function Manual, 03/2007 311
Programming of general standard functions
7.11 Functions for selection
Declaration
FUNCTION LIMIT (
mn : ANY_ELEMENTARY,
in : ANY_ELEMENTARY,
mx : ANY_ELEMENTARY
) : ANY_ELEMENTARY
Input parameters
mn
Data type: ANY_ELEMENTARY
Lower limiting value
All input parameters must either be of the same data type or must be convertible to the
most powerful data type by implicit conversion (see Elementary data type conversion in
the ST Programming Manual).
in
Data type: ANY_ELEMENTARY
Value to be limited
All input parameters must either be of the same data type or must be convertible to the
most powerful data type by implicit conversion (see Elementary data type conversion in
the ST Programming Manual).
mx
Data type: ANY_ELEMENTARY
Upper limiting value
All input parameters must either be of the same data type or must be convertible to the
most powerful data type by implicit conversion (see Elementary data type conversion in
the ST Programming Manual).
Return value
Basic functions
312 Function Manual, 03/2007
Programming of general standard functions
7.12 Working with variables
7.12.1 General
When accessing global variables of derived data types (see User-defined data types (UDT)
in the ST Programming Manual), the user is responsible for ensuring data consistency when
multiple tasks access the same user variables (I/O variables, system variables, system
variables of technology objects, global device variables, and global unit variables, see
Variable model in the programming manuals).
Note
Consistent data access is always ensured within a task.
Work with semaphores to ensure that global variables are written and read consistently.
A global variable of data type DINT serves as a semaphore. Use the following functions to
change and test the status of the semaphore:
_testAndSetSemaphore
_releaseSemaphore
Consistent data access to global variables is ensured under the following conditions:
1. All tasks signal access to global variables by setting a semaphore.
2. All tasks access global variables only when the semaphore is enabled.
For more information on consistent data access and semaphores, refer to Consistent
reading and writing of variables (semaphores).
See also
Consistent data access (Page 359)
Declaration
_testAndSetSemaphore (
sema : DINT
) : BOOL
Basic functions
Function Manual, 03/2007 313
Programming of general standard functions
7.12 Working with variables
Input parameters
sema
Data type DINT
Sema is a global variable of data type DINT; it is used as a semaphore. It should not
be indexed. If the variable is an element of an array, the index must be specified when
compiling (e.g. a[2]).
Return value
Example
See Consistent reading and writing of variables (semaphores).
See also
Example: Consistent data access with semaphores (Page 360)
Declaration
_releaseSemaphore (
sema : DINT
) : VOID
Input parameters
sema
Data type: DINT
Sema is a global variable of data type DINT; it is used as a semaphore. It should not be
indexed. If the variable is an element of an array, the index must be specified when
compiling (e.g. a[2]).
Basic functions
314 Function Manual, 03/2007
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Return value
None
Example
See Consistent reading and writing of variables (semaphores).
See also
Example: Consistent data access with semaphores (Page 360)
See also
Access errors to system variables and configuration data, as well as I/O variables for direct
access (Page 88)
Basic functions
Function Manual, 03/2007 315
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Declaration
_getSafeValue (
variable : ANY, //System variable,
// Configuration data or
// I/O variable
accessMode : EnumAccessMode,
getValue : ANY
) : EnumSetAndGetSafeValue
Basic functions
316 Function Manual, 03/2007
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Input parameters
variable
Data type: ANY
System variable, configuration data item or I/O variable to be read.
accesssMode
Data type: EnumAccessMode
Response when an error occurs during read access.
TYPE EnumAccessMode : (/
/ Response as configured:
CONFIGURED // For system variables and
// Configuration data: Transition into
// the operating state STOP
// For I/O variables:
//Strategy specified during creation of the I/O variable
// Different response than configured:
NO_CHANGE // For system variables and
// configuration data: Variable
// Do not read.
// For I/O variables: Accept
// last available (valid)
// value.
DEFAULT_VALUE // Only I/O values permitted.
// Apply substitute value.
STOP_DEVICE // Device goes into STOP
status.
END_TYPE
getvalue
Data type: ANY
Name of the variable to which the current value of the system variable (or configuration
data item) or I/O variable is written.
The following applies for the data type:
It must be the same as the data type of the variable to be read, or
The data type of the variable to be read must be convertible to this data type by
means of implicit type conversion (see Evaluating faults and events).
Basic functions
Function Manual, 03/2007 317
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Return value
TYPE EnumSetAndGetSafeValue : (
// Access successful:
OK // Access was successful.
// Access error:
, NO_CHANGE // For system variables: Variable was
// not read, value uncertain
// For I/O variables: Last
// available (valid) value was
// accepted.
, DEFAULT_VALUE // Only I/O variables permitted:
// Substitute value was accepted.
, INVALID_VALUE // Only for configuration data:
// Configuration data were
// not read, value uncertain
// Impermissible parameter
// (accessMode = DEFAULT_VALUE).
, NO_ACCESS ) // Only for configuration data:
// Configuration data were
// not read, value uncertain
END_TYPE
See also
Evaluating faults and events (Page 86)
Access errors to system variables and configuration data, as well as I/O variables for direct
access (Page 88)
Error while accessing system data (Page 115)
Basic functions
318 Function Manual, 03/2007
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Declaration
_setSafeValue (
variable : ANY, //System variable,
// Configuration data or
// I/O variable
value : ANY,
accessMode : EnumAccessMode,
{ setValue : ANY
}
) : EnumSetAndGetSafeValue
Input parameters
variable
Data type: ANY
System variable, configuration data item or I/O variable to be written.
value
Data type: ANY
Value to be written to the system variable (or configuration data item) or I/O variable.
The value data type must be the same as the data type of the variable to be written to,
or it must be convertible to this data type by means of implicit type conversion (see
Evaluating faults and events).
accessMode
Data type: EnumAccessMode
Response when an error occurs during write access:
Basic functions
Function Manual, 03/2007 319
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
TYPE EnumAccessMode : (
// Response as configured:
CONFIGURED // For system variables and
//Configuration data: Transition into
//the operating mode STOP
//For I/O variables:
//Strategy specified during creation
//of the I/O variables
// Different response than configured:
, NO_CHANGE // For system variables and
//Configuration data: the value
//of variables remains unchanged
//For I/O variables
//The value passed in the
//parameter is written to the
//variable. It is not active at the output
//until the output is
// again available.
, DEFAULT_VALUE// Only permitted for system variables
// and I/O variables.
// For system variables:
// Variable is described with the
// limit value.
// For I/O variables:
// Variable is described with the
// substitute value specified
// when creating the variable.
, STOP_DEVICE )// Device goes into STOP
// mode
END_TYPE
setvalue
Data type: ANY
Name of a variable to which the current value of the system variable, configuration data
item, or I/O variable is written.
The following applies for the data type:
It must be of the same data type as the variable to be written, or
The data type of the variable to be written must be convertible to this data type by
means of implicit type conversion (see Evaluating faults and events).
If, for example, 100 is to be written, but only 90 was entered, setValue is given a value
of 90.
Basic functions
320 Function Manual, 03/2007
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
Return value
TYPE EnumSetAndGetSafeValue : (
// Access successful:
OK // Access was successful.
// Access error:
, NO_CHANGE // For system variables: the value
// Variables were not changed
// (invalid value or variable
// not available).
// For configuration data: Value of the
// configuration data was not
// changed (invalid value).
// For I/O variables: The value transferred
// in the parameter
// was written. It is not active at the output
// until the output is
// again available.
, DEFAULT_VALUE // For system variables: Limitation
// active, limit value was
// written.
// For I/O variables: Substitute value was
// written. It is not active at the output
// until the output is
// again available.
, INVALID_VALUE// Only for configuration data: Value
// of the configuration data item was
// not changed, illegal
// parameter
// (accessMode = DEFAULT_VALUE).
, NO_ACCESS )// Only for configuration data: Value
// of the configuration data item was
// not changed,
// Configuration data item
// not available).
END_TYPE
See also
Access errors to system variables and configuration data, as well as I/O variables for direct
access (Page 88)
Evaluating faults and events (Page 86)
Error while accessing system data (Page 115)
Basic functions
Function Manual, 03/2007 321
Programming of general standard functions
7.13 Access to system variables and inputs/outputs
NOTICE
The runtime of this function can be very long. Therefore, this function is not suitable for use
in fast cyclic tasks.
Declaration
_getInOutByte (
mode : EnumInOutDirection,
logAddress : DINT
): StructRetGetInOutByte
Input parameters
mode
Data type: EnumInOutDirection
Specifies whether logAddress is used to access the input or output.
TYPE EnumInOutDirection : (
IN // Access to input
, OUT ) // Access to output
END_TYPE
logAddress
Data type: DINT
Logic address of input or output
Basic functions
322 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Return value
Basic functions
Function Manual, 03/2007 323
Programming of general standard functions
7.14 Backing up data from the user program
The application of these functions - in particular, the step enabling condition - is described in
detail in Data backup and initialization from user program.
See also
Data backup and data initialization from user program - functions and instructions
(Page 361)
Declaration
_saveUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
overwrite : BOOL,
nextCommand : EnumNextCommandMode,
dataScope : EnumDeviceDataScope,
kindOfData : EnumDeviceKindOfData,
}
): StructRetUnitDataSetCommand
Basic functions
324 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit), whose unit variables will be backed
up.
The name must be indicated in lower case and inside single quotation marks (e.g.
'st_unit1').
If _device is specified, the global device variables are saved (possible as of Version
V3.2 of the SIMOTION Kernel).
id
Data type: UDINT
Number of the data set under which the variable values are saved (maximum of
1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location at which the data is saved.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
overwrite (optional)
Data type: BOOL
Default: FALSE
If TRUE, existing data set is overwritten.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
Basic functions
Function Manual, 03/2007 325
Programming of general standard functions
7.14 Backing up data from the user program
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
dataScope (optional)
Data type: EnumDeviceDataScope
Default _INTERFACE
The parameter is available as of Version V3.2 of the SIMOTION Kernel.
Specification of the section whose unit variables are to be saved.
Type EnumDeviceDataScope : (
_INTERFACE // Interface section
, _IMPLEMENTATION // Implementation section
, _INTERFACE_AND_IMPLEMENTATION ) // interface and
// Implementation section
END_TYPE
KindOfData (optional)
Default NO_RETAIN_GLOBAL
The parameter is available as of Version V3.2 of the SIMOTION Kernel.
Specification of whether non-retentive or retentive global variables will be saved.
TYPE EnumDeviceKindOfData : (
NO_RETAIN_GLOBAL // non-retentive variables
, _RETAIN // retentive variables
, ALL_GLOBAL ) // retentive and non-retentive
// variables
END_TYPE
Up to and including Version V3.1 of the SIMOTION Kernel, only non-retentive variables of
the interface section of a unit can be saved.
Basic functions
326 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Return value
TYPE
EnumDeviceUnitDataSetCommand: (
DONE // Execution of start
// Successful
, ACTIVE // Being executed
, INTERNEL_ERROR // internal error
// (Please call the
// Hotline)
,COMMAND_FAILED// Command cannot be executed
, NO_COMMAND_BUFFER_AVAILABLE// Command buffer full
, COMMAND_NOT_FOUND // Command (handle) not
// found
, DATASET_ID_NOT_VALID// Data set number invalid
, READ_ERROR // Data read error
// (Defective storage medium)
, NO_STORAGE_AVAILABLE// No storage available
,ACCESS_DENIED// Access denied
// (Missing
// (write/read rights)
,DATASET_ALREADY_EXISTS// Data set already exists
,DATASET_NOT_FOUND// Data set not found
,VERSION_MISSMATCH// Wrong version ID
// of the data range that will
// be imported (e.g.
// Section of the unit
,UNIT_NOT_FOUND// Unit (e.g. ST source,
// MCC source) not found
,DATA_INCOMPLETE// Data were imported
// incomplete
,DATA_MISMATCH// Data range to be imported
// is not contained in the
// data set
,SYMBOL_INFORMATION_NOT_AVAILABLE ) //Symbol information
// not available
// (Activate the OPC-XML
// on the program source
StructRetUnitDataSetCommand
: STRUCT
Basic functions
Function Manual, 03/2007 327
Programming of general standard functions
7.14 Backing up data from the user program
functionResult : EnumDeviceUnitDataSetCommand;
handle : UDINT;
END_STRUCT;
END_TYPE
For information about data backup see Using data backup and data initialization from user
program (Page 361)
See also
General information on data backup from the user program (Page 323)
Declaration
_loadUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
nextCommand : EnumNextCommandMode,
dataScope : EnumDeviceDataScope,
kindOfData : EnumDeviceKindOfData,
}
): StructRetUnitDataSetCommand
Basic functions
328 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit), whose unit variables will be loaded.
The name must be indicated in lower case and inside single quotation marks (e.g.
'st_unit1').
If _device is specified, the global device variables are saved (possible as of Version
V3.2 of the SIMOTION Kernel).
id
Data type: UDINT
Number of the data set under which the variable values are saved (maximum of
1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location at which the data is saved.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // after completion or abort
// of the command
END_TYPE
Basic functions
Function Manual, 03/2007 329
Programming of general standard functions
7.14 Backing up data from the user program
dataScope (optional)
Data type: EnumDeviceDataScope
Default _INTERFACE
The parameter is available as of Version V3.2 of the SIMOTION Kernel.
Specification of the section whose unit variables are to be saved.
Type EnumDeviceDataScope : (
_INTERFACE // Interface section
, _IMPLEMENTATION // Implementation section
, _INTERFACE_AND_IMPLEMENTATION ) // interface and
// Implementation section
END_TYPE
KindOfData (optional)
Default NO_RETAIN_GLOBAL
The parameter is available as of Version V3.2 of the SIMOTION Kernel.
Specification of whether non-retentive or retentive global variables will be saved.
TYPE EnumDeviceKindOfData : (
NO_RETAIN_GLOBAL // non-retentive variables
, _RETAIN // retentive variables
, ALL_GLOBAL ) // retentive and non retentive
// variables
END_TYPE
Up to and including Version V3.1 of the SIMOTION Kernel, only non-retentive variables of
the interface section of a unit can be saved and loaded.
Basic functions
330 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Return value
See also
_getStateOfUnitDataSetCommand function (Page 340)
_saveUnitDataSet function (Page 324)
General information on data backup from the user program (Page 323)
Basic functions
Function Manual, 03/2007 331
Programming of general standard functions
7.14 Backing up data from the user program
The exported data set can also be imported with the _importUnitDataSet function (see
Subsection 6.17.4) if the version ID of the data area (e.g. retentive variables of the interface
section of the unit) has changed (e.g. by a change to the data structure).
When calling this function in short form, all parameters (including all optional parameters)
must be specified.
Declaration
_exportUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
overwrite : BOOL
nextCommand : EnumNextCommandMode,
dataScope : EnumDeviceDataScope,
kindOfData : EnumDeviceKindOfData,
}
): StructRetUnitDataSetCommand
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit), whose unit variables will be exported.
The name must be indicated in lower case and inside single quotation marks (e.g.
'st_unit1').
Specifying _device (for exporting global device variables) is not permissible here.
id
Data type: UDINT
Number of the data set under which the variable values are saved (maximum of
1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location at which the data is saved.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
Basic functions
332 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
overwrite (optional)
Data type: BOOL
Default: FALSE
If TRUE, existing data set is overwritten.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
dataScope (optional)
Data type: EnumDeviceDataScope
Default _INTERFACE
Available soon; specifying the values _INTERFACE or
_INTERFACE_AND_IMPLEMENTATION is permissible.
Specification of the section whose unit variables will be exported.
Type EnumDeviceDataScope : (
_INTERFACE // Interface section
, _IMPLEMENTATION // Implementation section
, _INTERFACE_AND_IMPLEMENTATION ) // interface and
// Implementation section
END_TYPE
Only variables of the interface section of one unit (non-retentive or retentive) can be
exported and imported.
Basic functions
Function Manual, 03/2007 333
Programming of general standard functions
7.14 Backing up data from the user program
KindOfData (optional)
Default NO_RETAIN_GLOBAL
Specification of whether non-retentive or retentive global variables will be exported.
TYPE EnumDeviceKindOfData : (
NO_RETAIN_GLOBAL // non-retentive variables
, _RETAIN // retentive variables
, ALL_GLOBAL ) // retentive and non-retentive
// variables
END_TYPE
Return value
See also
Consistent data access (Page 359)
_getStateOfUnitDataSetCommand function (Page 340)
General information on data backup from the user program (Page 323)
Basic functions
334 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Declaration
_exportUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
nextCommand : EnumNextCommandMode,
dataScope : EnumDeviceDataScope,
kindOfData : EnumDeviceKindOfData,
}
): StructRetUnitDataSetCommand
Basic functions
Function Manual, 03/2007 335
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit), whose unit variables will be imported.
The name must be indicated in lower case and inside single quotation marks (e.g.
'st_unit1').
If _device is specified, the global device variables will be imported.
id
Data type: UDINT
Number of the data set under which the variable values are saved (maximum of
1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location at which the data is saved.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
overwrite (optional)
Data type: BOOL
Default: FALSE
If TRUE, existing data set is overwritten.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
Basic functions
336 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
dataScope (optional)
Data type: EnumDeviceDataScope
Default _INTERFACE
Available soon; specifying the values _INTERFACE or
_INTERFACE_AND_IMPLEMENTATION is permissible.
Specification of the section whose unit variables will be imported.
Type EnumDeviceDataScope : (
_INTERFACE // Interface section
, _IMPLEMENTATION // Implementation section
, _INTERFACE_AND_IMPLEMENTATION ) // interface and
// Implementation section
END_TYPE
Only variables of the interface section of a unit (non-retentive or retentive) can be exported
and imported.
KindOfData (optional)
Default NO_RETAIN_GLOBAL
Specification of whether non-retentive or retentive global variables will be imported.
TYPE EnumDeviceKindOfData : (
NO_RETAIN_GLOBAL // non-retentive variables
, _RETAIN // retentive variables
, ALL_GLOBAL ) // retentive and non-retentive
// variables
END_TYPE
If retentive and non-retentive variables are stored in the exported data set, it is possible
to import retentive or non-retentive variables selectively.
Basic functions
Function Manual, 03/2007 337
Programming of general standard functions
7.14 Backing up data from the user program
Return value
See also
_getStateOfUnitDataSetCommand function (Page 340)
General information on data backup from the user program (Page 323)
_loadUnitDataSet function (Page 328)
Declaration
_deleteUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
nextCommand : EnumNextCommandMode,
}
): StructRetUnitDataSetCommand
Basic functions
338 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit); the name must be written in lower
case and placed inside single quotation marks (e.g. 'st_unit1').
If _device is specified, a data set for global device variables will be deleted (possible
as of Version 3.2 of the SIMOTION Kernel).
id
Data type: UDINT
Number of the data set to be deleted (maximum of 1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location from which the data set is to be deleted.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
Basic functions
Function Manual, 03/2007 339
Programming of general standard functions
7.14 Backing up data from the user program
Return value
See also
_deleteAllUnitDataSets function (Page 343)
General information on data backup from the user program (Page 323)
_exportUnitDataSet function (as of Kernel V3.2) (Page 331)
Declaration
_getStateOfUnitDataSetCommand (
handle : UDINT
): EnumDeviceUnitDataSetCommand
Input parameters
handle
Data type: DINT
Handle of the data backup function for which the status is to be checked. You received
this handle as a component of the return value of the data backup function.
Basic functions
340 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Return value
See also
_exportUnitDataSet function (as of Kernel V3.2) (Page 331)
General information on data backup from the user program (Page 323)
Declaration
_checkExistingUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
nextCommand : EnumNextCommandMode,
}
): StructRetUnitDataSetCommand
Basic functions
Function Manual, 03/2007 341
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit); the name must be written in lower
case and placed inside single quotation marks (e.g. 'st_unit1').
If _device is specified, a data set for global device variables will be checked (possible
as of Version 3.2 of the SIMOTION Kernel).
id
Data type: UDINT
Number of the data set (max. 1_000_000 data sets per unit).
storageType
Data type: EnumDeviceStorageType
Location at which the data are stored.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
Basic functions
342 Function Manual, 03/2007
Programming of general standard functions
7.14 Backing up data from the user program
Return value
See also
_exportUnitDataSet function (as of Kernel V3.2) (Page 331)
Declaration
_deleteAllUnitDataSet (
unitName : STRING,
id : UDINT,
storageType : EnumDeviceStorageType,
{ path : STRING,
nextCommand : EnumNextCommandMode,
}
): StructRetUnitDataSetCommand
Basic functions
Function Manual, 03/2007 343
Programming of general standard functions
7.14 Backing up data from the user program
Input parameters
unitName
Data type: STRING
Name of the unit (e.g. ST source file, MCC unit); the name must be written in lower
case and placed inside single quotation marks (e.g. 'st_unit1').
If _device is specified, all data sets for global device variables will be deleted (possible
as of Version 3.2 of the SIMOTION Kernel).
storageType
Data type: EnumDeviceStorageType
Location from which the data set is to be deleted.
TYPE EnumDeviceStorageType : (
TEMPORARY_STORAGE // temporary storage
// (RAM Disk),
// is deleted if there is a power failure
, PERMANENT_STORAGE // permanent storage
// (MemoryCard), retained
// with power failure
, USER_DEFINED ) // with path definition
// (in preparation)
END_TYPE
path (optional)
Data type: STRING
Default: ' ' (empty string)
Destination path, if storageType = USER_DEFINED
In preparation; default value may be specified.
nextCommand (optional)
Data type: EnumNextCommandMode
Default: IMMEDIATELY
Advance to next command
TYPE EnumNextCommandMode : (
IMMEDIATELY // immediately
, WHEN_COMMAND_DONE ) // After completion or abort
// of the command
END_TYPE
Basic functions
344 Function Manual, 03/2007
Programming of general standard functions
7.15 Functions for commandId
Return value
See also
_exportUnitDataSet function (as of Kernel V3.2) (Page 331)
Declaration
_getCommandId ( ) : CommandIdType
Input parameters
None
Basic functions
Function Manual, 03/2007 345
Programming of general standard functions
7.15 Functions for commandId
Return value
TYPE
CommandIdType : STRUCT
SystemId_low : UDINT; // Lower-order part
SystemId_high : UDINT; // Higher-order part
END_STRUCT
END_TYPE
See also
Using the commandId parameter correctly (Page 409)
Declaration
_getSyncCommandId ( ) : CommandIdType
Input parameters
None
Return value
Basic functions
346 Function Manual, 03/2007
Programming of general standard functions
7.16 Defining the waiting time
TYPE
CommandIdType : STRUCT
SystemId_low : UDINT; // Lower-order part
SystemId_high : UDINT; // Higher-order part
END_STRUCT
END_TYPE
See also
Using the commandId parameter correctly (Page 409)
NOTICE
The function should be used in MotionTasks only; using it in cyclic tasks may lead to time
monitoring errors!
With SynchronousTasks: As of SIMOTION Kernel V3.2 you may configure if time
monitoring is suspended. Time monitoring is active by default.
With IPOsynchronousTask, additionally take the following into account:
UserInterruptTasks will no longer be started by their triggering event!
With other cyclic tasks (BackgroundTask, TimerInterruptTasks): Time monitoring is
always active.
In cyclic tasks, use the timer system function blocks (see Timers) to implement waiting
times.
1Up to Version V3.1 of the SIMOTION Kernel, time monitoring is suspended for the
SynchronousTasks.
Declaration
_waitTime (
timeValue : TIME // Wait time
) : DINT // always = 0
Basic functions
Function Manual, 03/2007 347
Programming of general standard functions
7.17 Device-specific functions
Input parameters
timeValue
Data type: TIME
Indicates the time interval during which task processing is interrupted.
Return value
See also
Timers (Page 395)
Time allocation in the round robin execution level (Page 175)
Making tasks wait a defined period (Page 228)
Wait times in cyclic tasks (Page 408)
Declaration
_getDeviceId (
idType : EnumDeviceIdType
) : StructRetGetDeviceId0
Basic functions
348 Function Manual, 03/2007
Programming of general standard functions
7.17 Device-specific functions
Input parameters
idType
Data type: EnumDeviceIdType
Specification of the ID to be read
TYPE EnumDeviceIdType : (
SERIAL_NUMBER ) //Serial number
, HW_TYPE // Hardware type
, SPECIFIC_NUMBER ) //
END_TYPE
Return value
Basic functions
Function Manual, 03/2007 349
Programming of general standard functions
7.17 Device-specific functions
Declaration
_getMemoryCardId (
idType : EnumMemoryCardIdType
) : StructRetGetMemoryCardId0
Input parameters
idType
Data type: EnumMemoryCardIdType
Specification of the ID to be read
TYPE EnumMemoryCardIdType : (
SERIAL_NUMBER ) //Serial number
END_TYPE
Return value
Basic functions
350 Function Manual, 03/2007
Programming of general standard functions
7.18 Determine the memory size of a variable or of a data type
Declaration
_setDeviceErrorLED ( ) : DINT
Input parameters
None
Return value
Declaration
_sizeOf (
in : ANY // Identifier of the data type or
// of the variables
) : DINT
Basic functions
Function Manual, 03/2007 351
Programming of general standard functions
7.18 Determine the memory size of a variable or of a data type
Input parameters
in
Data type: ANY
Identifier of the variable or data type, whose size is to be determined.
Return value
TYPE
a_type : STRUCT
a : LREAL; // 8 bytes
b : BOOL; // 1 byte
END_STRUCT;
END_TYPE
//..
x := _sizeOf (a_type); // supplies value 16
Basic functions
352 Function Manual, 03/2007
Programming of general standard functions
7.19 Additional available system functions
Table 7-16 Overview of additional system functions and system function blocks in SIMOTION ST
7.20.1.1 General
You can use the following functions to program messages, e.g. error messages, or check
their status:
_alarmSId (generation of a message without acknowledgment)
_alarmSqId (generation of a message with acknowledgment)
_alarmScId (query about message status)
However the prerequisite is an application-specific configured message name
Note
You can use the _writeAndSendMessage function to make user-defined entries in the
diagnostic buffer. For a description of this function, refer to the Parameter Manuals for
SIMOTION devices.
Basic functions
Function Manual, 03/2007 353
Programming of general standard functions
7.20 Application of certain system functions
Note
You should only generate an outgoing message after an incoming one, otherwise an error
message is output.
Commands in which the configured message name is transferred can only be called in the
short form, i.e. with a complete listing of all parameter values, but without specifying the
formal parameters.
The auxiliary value (optional) must be a variable of an elementary data type. Avoid the use of
constant values in the function call!
Basic functions
354 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
7.20.1.3 AlarmId
The message to be generated is specified by means of the AlarmId for the _alarmSId,
_alarmSqId, and _alarmScId functions. You can obtain the AlarmId for a configured message
name in the following way:
As variable _alarm.name, whereby name is the message identifier, as configured in
SIMOTION SCOUT.
With the _getAlarmId(name) function.
See also
_alarmSId function (Page 263)
_getAlarmId function (Page 271)
Description
A message list with 40 buffer areas is available for the AlarmS messages. The AlarmS
messages are entered in this message list with their ID. For each outgoing AlarmS an
incoming AlarmS with the same ID must exist in the message list. For each of the in total 40
list entries there is also a send buffer. This send buffer is used to organize the notification of
the registered client (HMI or SIMOTION SCOUT).
Basic functions
Function Manual, 03/2007 355
Programming of general standard functions
7.20 Application of certain system functions
Basic functions
356 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
INTERFACE
PROGRAM handleAlarm;
END_INTERFACE
IMPLEMENTATION
PROGRAM handleAlarm
VAR
retVal : DWORD; // Return value
temperature : INT; // Status to be checked
maxTemperature: INT := 60; // Comparison value for status
mySignal : BOOL := FALSE; // Signal status yes/no
END_VAR
//...
IF temperature > maxTemperature THEN
IF mySignal = FALSE THEN
// Incoming message, does not require acknowledgement
retVal := _alarmSId (
Sig := TRUE,
Ev_id := _alarm.SCOUT_alarm_name,
Sd := temperature);
mySignal := TRUE;
END_IF;
ELSE
IF mySignal = TRUE THEN
// Outgoing message, does not require acknowledgement
retVal := _alarmSId (
Sig := FALSE,
Ev_id := _alarm.SCOUT_alarm_name,
Sd := temperature);
mySignal := FALSE;
END_IF;
END_IF;
//...
END_PROGRAM
Basic functions
Function Manual, 03/2007 357
Programming of general standard functions
7.20 Application of certain system functions
7.20.1.6 Checking the error number and status of a message (filtering return values)
The return value of the _alarmSId and _alarmSqId functions contains the error number and
thus indicates whether an error occurred during execution. As with most system functions,
return value = 0 indicates error-free execution.
However, the return value of the _alarmScId function indicates both the error number and the
status of a message. For this reason, you must first filter the return value with the
ALARMS_ERROR constant (= 16#8000) when checking the status with these functions. This
enables you to determine whether an error occurred while the function was being executed.
The filter and the error numbers are selected such that they are true when combined in an
AND operation. If no error has occurred, you can evaluate the status of the message.
You can find a complete listing of error numbers and message states under Functions for the
message programming.
Consequently, you can check for errors when the _alarmScId command is dispatched (the
retVal variable of data type DWORD contains the return value of the function) as follows:
Note
You can use constant values and symbolic constants on an equal footing to check for errors;
see Functions for the message programming.
Basic functions
358 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
Note
Consistent data access is always ensured within a task.
7.20.2.2 Semaphores
To ensure consistent reading and writing of global variables, you work with semaphores.
A global variable (e.g. semaA) of data type DINT is used as a semaphore. If the variable is
an element of an array, the index must be specified when compiling (e.g. a[2]).
Use the following functions to change and test the status of the semaphore:
_testAndSetSemaphore (sema : DINT) : BOOL
This function is used to check whether the semaphore is set:
Return value TRUE: The semaphore is enabled.
Return value FALSE: The semaphore is set.
When the function is ended, the semaphore is always set. Additional calls of this function
(even from other programs) return a value of FALSE, until the _releaseSemaphore
(semaA) function is called.
_releaseSemaphore (sema: DINT) : VOID
For information on the formal structure of functions, see Section Working with variables.
The semaphore is released.
Consistent data access to global variables is ensured under the following conditions:
1. All tasks signal access to global variables by setting a semaphore.
2. All tasks access global variables only when the semaphore is enabled.
Basic functions
Function Manual, 03/2007 359
Programming of general standard functions
7.20 Application of certain system functions
Table 7-19 Example for ensuring consistent access to global variables using semaphores
IMPLEMENTATION
VAR_GLOBAL
myArray : ARRAY [0..1] OF DINT;
semaA : DINT;
END_VAR
PROGRAM Writer
// Consistent writing of variables
IF _testAndSetSemaphore(sema := semaA) THEN
myArray[0] := 18;
myArray[1] := 19;
_releaseSemaphore(sema := semaA);
// The semaphore must be released in the TRUE
// branch of the query; this ensures that
// it is only released when it has been
// reset.
ELSE
; // Error handling
END_IF;
// _releaseSemaphore(sema := semaA);
// The release would be incorrect at this point;
// the semaphore would always be released.
END_PROGRAM
PROGRAM Reader
VAR
var0 : DINT;
var1 : DINT;
END_VAR
END_IMPLEMENTATION
Basic functions
360 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
7.20.3.1 Data backup and data initialization from user program - functions and instructions
From a user program, it is possible to save, load, or initialize the values of the following
variables in data sets:
Non-retentive or retentive unit variables of the interface or implementation section of a
unit (e.g. ST source file, MCC unit)
Non-retentive or retentive global device variables.
The following functions are available for this: .....
_saveUnitDataSet: The values are stored as a binary data set.
_loadUnitDataSet: The values are loaded from a binary data set saved with
_saveUnitDataSet.
Loading the data set is only possible if since saving the data set the version IDs of all
data segments to be loaded have remained unchanged.
Please also pay attention to the note below.
_exportUnitDataSet (as of Version V3.2 of the SIMOTION Kernel): The values are
exported in XML format as ZIP archive (file name *.dat).
_importUnitDataSet (as of Version V3.2 of the SIMOTION Kernel): The values are
imported from a data set that was exported in XML format as ZIP archive (file name *.dat)
with _exportUnitDataSet.
Importing the data set is also possible if, since the data set was saved, the version ID of a
data segment to be loaded has changed:
Variables that no longer exist are ignored.
The value of added variables remains unchanged.
In the case of variable with a changed data type, the value is transferred if it can be
converted to the new data type; otherwise the value of the variable is retained.
_deleteUnitDataSet: A single data record is deleted.
_checkExistingUnitDataSet: A check determines whether the specified data set exists on
the storage medium.
_deleteAllUnitDataSets: All data sets are deleted.
_resetUnitData (as of Version V3.2 of the SIMOTION Kernel): The values of variables are
initialized.
You can, for example, initialize the relevant data segments with _importUnitDataSet
before importing a data set to avoid unwanted values in variables.
For data segments and their version ID, see Section Time of variable initialization, Table
Version ID of global variables and their initialization during download.
The description for _resetUnitData can be found in the Parameter Manual (reference list) for
the system functions of the SIMOTION devices.
Here is a more detailed explanation of the parameters.
Basic functions
Function Manual, 03/2007 361
Programming of general standard functions
7.20 Application of certain system functions
NOTICE
If the data structure of a data segment is changed in a unit or in the global device variables,
the following applies to loading the project into the SIMOTION device:
All temporarily backed-up data sets are deleted.
All permanently stored (with _saveUnitDataSet) binary data sets can no longer be read
for this data segment.
Note
You can upload data sets saved with _saveUnitDataSet or _exportUnitDataSet from the
SIMOTION device. Use the Save variables function in SIMOTION SCOUT. The data sets
saved with _saveUnitDataSet are automatically converted to XML format.
You can use the Restore variables function to download these data records and variables
back to the SIMOTION device. For this purpose select the relevant SIMOTION device in the
project navigator and select the function from the context menu. For more information, refer
to the SIMOTION SCOUT Configuring Manual.
This makes it possible, for example, to obtain these data, even if they are initialized by a
project download or if they become unusable (e.g. due to a version change of SIMOTION
SCOUT).
Basic functions
362 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
Basic functions
Function Manual, 03/2007 363
Programming of general standard functions
7.20 Application of certain system functions
NOTICE
Do not fill the entire available memory space with data sets! Otherwise, it will no longer be
possible to download a project to the target system or copy RAM to ROM if project data are
increased!
You can estimate the required memory space for binary data sets (saved with
_saveUnitDataSet) with the following information:
Elementary data types occupy their natural data width on the memory (see Table Bit
widths and value ranges of the elementary data types in Section Elementary data types;
data type BOOL occupies 1 byte).
Additional memory space is required due to:
Adaptation of the memory addresses to word or double-word boundaries
Consistency information (approx. 100 bytes per data set)
Usual supplementary data of a file system (e.g. sector headers, directory, occupy
whole sectors only)
For data sets exported in XML format (with _exportUnitDataSet), the memory requirement is
much higher and cannot be ascertained in this way.
Table 7-20 Call of a data backup function with step enabling condition WHEN_COMMAND_DONE
VAR_GLOBAL
ds_ret : StructRetUnitDataSetCommand;
error : BOOL := FALSE;
END_VAR
PROGRAM save_data_seq
// Program is assigned to a sequential task.
// Function is executed synchronously:
ds_ret := _loadUnitDataSet (
Basic functions
364 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
unitName := 'ds3',
id := 1,
storageType:= TEMPORARY_STORAGE,
nextCommand := WHEN_COMMAND_DONE);
// Function completed, evaluate result
IF (ds_ret.functionResult <> DONE) THEN
error := TRUE; // error
END_IF;
END_PROGRAM
This procedure is primarily used in sequential tasks.
The execution of this function may take quite a long time. Therefore, the time watchdog
might respond in connection with cyclic tasks (e.g. BackgroundTask). For this reason, the
function can also be executed asynchronously by setting the nextCommand parameter to
IMMEDIATELY. In this case, the function is started, and then the next command in the
source is immediately processed.
From the return value you can see:
If the start was successful (component functionResult = DONE)
A handle for further status query (handle component)
If the command start was successful, you must check the current status of the data backup
function using the _getStateOfUnitDataSetCommand function and the handle until the result
is something other than ACTIVE (see example).
Table 7-21 Function call of a data backup function with step enabling condition IMMEDIATELY
VAR_GLOBAL
error : BOOL := FALSE;
ds_rslt : EnumDeviceUnitDataSetCommand;
ds_ret : StructRetUnitDataSetCommand;
cmd_busy : BOOL := FALSE;
cmd_done : BOOL := FALSE;
END_VAR
PROGRAM save_data_cycl
// Program is assigned to a cyclic task.
IF NOT cmd_busy THEN
cmd_busy := TRUE;
// Function is executed asynchronously:
ds_ret := _saveUnitDataSet (
unitName := 'ds1',
id := 1,
storageType:= TEMPORARY_STORAGE,
overwrite := TRUE,
nextCommand:= IMMEDIATELY);
IF (ds_ret.functionResult <> DONE) THEN
cmd_busy := FALSE;
error := TRUE; // Start of the function has failed
// (e.g. too many services)
END_IF;
ELSE
// Function is running, wait for result:
ds_rslt := _getStateOfUnitDataSetCommand (
ds_ret.handle);
IF (ds_rslt <> ACTIVE) THEN
cmd_busy := FALSE;
Basic functions
Function Manual, 03/2007 365
Programming of general standard functions
7.20 Application of certain system functions
7.20.4 Converting between any data types and byte arrays (marshalling)
Conversion of variables of any data type to byte arrays, and vice versa, is frequently used in
order to create defined transmission formats for data exchange between different devices
(see also Section Communication functions).
Variables of any data type (elementary data types, standard data types of technology
packages and devices, and user-defined data types) can be converted to byte arrays, and
vice versa, using the following functions:
AnyType_to_BigByteArray
AnyType_to_LittleByteArray
BigByteArray_to_AnyType
LittleByteArray_to_AnyType
(see Section BigByteArray_to_AnyType function, LittleByteArray_to_AnyType function and
Section BigByteArray_to_AnyType function, LittleByteArray_to_AnyType function)
For all functions, an offset can be specified optionally for the first element to be assigned or
evaluated in the byte array.
A distinction is made as to:
Conversion direction (to or from byte arrays)
Byte order in the array (see table):
Big Endian: Most significant byte at low memory address
(Motorola, SUN Sparc, SIMATIC S7)
Little Endian: Least significant byte at low memory address
(Intel, DEC Alpha)
Table 7-22 Examples of byte order (big endian and little endian)
Basic functions
366 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
NOTICE
TO data types cannot be converted (for information about TO data type conversion, see
Section Conversion of technology object data types).
If structures and arrays are to be converted, consistency is guaranteed only at the
elementary variable level. Any higher level of consistency must be ensured by the user (see
Sections Consistent reading and writing of variables (semaphores) and Working with
variables).
Note
The following data types are not portable convertible, i.e their transmission formats are not
defined across systems. Conversions between SIMOTION devices are possible without any
restrictions:
Time types: For conversion format, see Table
Enumerators (enumeration data types)
When converting these data types, the compiler outputs a warning (16013).
Table 7-23 Conversion formats of time data types for marshalling functions
NOTICE
The result of the marshalling functions can lead to errors when the program is running, the
error reaction specified in the task configuration will then be triggered.
Proceed with caution when converting byte arrays to the general ANY_REAL data type or
to structures that contain this data type. The bit string from the byte array is taken
unchecked as the ANY_REAL value. You must make sure that the bit string of the byte
array corresponds to the bit pattern of a normalized floating-point number according to
IEEE. To do this, you can use the functions _finite (see Section _finite function) and _isNaN
(see Section _isNaN function).
Otherwise, an error is triggered (see above) as soon as the ANY_REAL value is first used
for an arithmetic operation (for example, in the program or when monitoring in the symbol
browser).
Basic functions
Function Manual, 03/2007 367
Programming of general standard functions
7.20 Application of certain system functions
TYPE
Struct_1 : STRUCT
m_word : WORD;
m_byte : BYTE;
END_STRUCT;
Struct_2 : STRUCT
m_struct : ARRAY [0..2] OF Struct_1;
m_lreal : LREAL;
END_STRUCT;
END_TYPE
VAR
gsbVar : Struct_2;
big_b_Array : ARRAY [0..16] OF BYTE;
lit_b_Array : ARRAY [0..16] OF BYTE;
END_VAR
Basic functions
368 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
Table 7-25 Content of the array elements of big_b_array and lit_b_array from example
Basic functions
Function Manual, 03/2007 369
Programming of general standard functions
7.20 Application of certain system functions
Additional information
Additional information is also available in the System/ Configuration Manual -
Communication.
The program on the receiving device recognizes whether the data packet it is to received on
the basis of a user-definable integer appended to the data packet. The data exchange is only
successful if the user program accepts and does not reject the data packet.
The sent data is in the form of byte sequences in an array, i.e. the data has no logical
structure. SIMOTION devices can send or receive up to 200 bytes at once; the actual user
data length depends on the communication peer.
You can check the status of an XSend or XReceive request with the _GetStateOfXCommand
command.
Note
Additional communication functions include:
udpSend
udpReceive
These enable communication via Ethernet with the UDP protocol (see Parameter Manual for
SIMOTION devices).
Basic functions
370 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
Basic functions
Function Manual, 03/2007 371
Programming of general standard functions
7.20 Application of certain system functions
As when sending data, you can choose between two modes of data reception
(nextCommand parameter): synchronous or asynchronous.
During synchronous data receipt, the program waits until the data packet has arrived
before it resumes execution. Receipt of the data packet is then acknowledged
automatically to the sender.
During asynchronous data transmission, the program is resumed immediately after the
command is issued. You can check the status of the command with
_GetStateOfXCommand.
The mandatory commandId parameter is used for internal command detection in ST. The
parameter value should be saved to a local variable (CommandIdType data type) with the
_getCommandId function (see section in SIMOTION Basic Functions Function Manual).
This variable can be used as a parameter value.
The return value is a structure:
You can determine whether the command was successfully executed (functionResult
= 0) on the basis of the functionResult element.
If a value other than 0 is returned, an error has occurred (see the command syntax in
the Parameter Manual for the SIMTOTION devices).
The dataLength element represents the data length of the data packet received.
The data element represents the data packet received (array of up to 200 entries of 1
byte each).
Basic functions
372 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
NOTICE
The parameters for the _Xsend and _Xreceive commands have different names in the
SIMOTION system are in some cases have a different meaning than those you used in
your previous SIMATIC S7 system. You will find a comparison in the following tables.
The _GetStateOfXCommand command does not exist in an SIMATIC S7 system, thus
eliminating the need for comparison.
Table 7-27 Comparison of the parameters for _Xsend in SIMATIC S7 and SIMOTION devices
Basic functions
Function Manual, 03/2007 373
Programming of general standard functions
7.20 Application of certain system functions
Table 7-28 Comparison of the parameters for _Xreceive in SIMATIC S7 and SIMOTION devices
INTERFACE
PROGRAM xsend_control;
END_INTERFACE
IMPLEMENTATION
// The following program must be assigned
// to a MotionTask.
// In the task configuration, the "Activation
// after Startup Task" option must be selected.
PROGRAM xsend_control
VAR
retVal : DINT;
myAddress : StructXSendDestAddr;
myStaddr : ARRAY[0..4] OF BYTE;
myData : ARRAY[0..199] OF BYTE;
END_VAR
// Specify destination address and PROFIBUS interface ////////
Basic functions
374 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
myAddress.deviceID := 1;
// PROFIBUS interface X8
myAddress.remoteStaddrLength := 1;
// must always be assigned a value of 1
myAddress.remoteStaddr[0] := 4;
// PROFIBUS address of the receiving station
// Send data
myData[0] := 170;
INTERFACE
PROGRAM xreceive_control;
END_INTERFACE
IMPLEMENTATION
VAR_GLOBAL
retVal : StructRetXReceive;
END_VAR
// The following program must be assigned
// to a MotionTask.
// In the task configuration, the "Activation
// after Startup Task" option must be selected.
PROGRAM xreceive_control
Basic functions
Function Manual, 03/2007 375
Programming of general standard functions
7.20 Application of certain system functions
Table 7-31 Communication steps of a TCP/IP connection and the corresponding system functions
The system functions are described in detail in the Parameter Manual for the SIMOTION
devices, in the chapter on system functions.
Note
A sender or receiver can be a client as well as a server when establishing a connection.
There must be at least one client and one server for TCP/IP connection establishment.
The client-server relationship is only valid until the connection is established. After
connection establishment, both communication peers are equivalent, i.e. each of the two can
send or receive or close the connection at any point of time.
For detailed information, please refer to the Frequently Asked Questions (FAQ) on the
SIMOTION Utilities & Applications CD-ROM.
Basic functions
376 Function Manual, 03/2007
Programming of general standard functions
7.20 Application of certain system functions
NOTICE
Synchronous start for motion commands is only ensured if the following conditions are
satisfied:
1. Commands included in a synchronous start must act on various technology objects.
2. The technology objects involved must be in the same execution level (IPO or IPO_2).
Basic functions
Function Manual, 03/2007 377
Programming of general standard functions
7.20 Application of certain system functions
Note
Synchronous start is often used in conjunction with the WAITFORCONDITION construct. In
this case, the system waits for a condition to be fulfilled before the synchronized start. The
_startSyncCommand function must not occur within the WAITFORCONDITION construct.
INTERFACE
USEPACKAGE cam;
PROGRAM sync_motion;
END_INTERFACE
IMPLEMENTATION
EXPRESSION wait_sync_expression
wait_sync_expression := TRUE;
END_EXPRESSION
PROGRAM sync_motion
VAR
ret_val : DINT;
sync_id : CommandIdType;
END_VAR
sync_id := _getSyncCommandId();
BEGIN_SYNC(sync_id);
(* Position axis ('Pos') *)
ret_val := _pos (axis := Axis_1,
positioningMode := ABSOLUTE,
position := 100,
mergeMode := IMMEDIATELY,
nextCommand := IMMEDIATELY,
commandId := _getCommandId() );
(* Position axis ('Pos') *)
ret_val := _pos (axis := Axis_2,
positioningMode := ABSOLUTE
position := 50
mergeMode := IMMEDIATELY
nextCommand := IMMEDIATELY,
commandId := _getCommandId() );
END_SYNC();
WAITFORCONDITION wait_sync_expression DO
;
END_WAITFORCONDITION;
ret_val := _startSyncCommands(sync_id);
END_PROGRAM
END_IMPLEMENTATION
Basic functions
378 Function Manual, 03/2007
Programming of general standard functions
7.21 HMI (Human Machine Interface) connection
Note
Variables that are meant to be available in HMI must always be created as unit variables in
the interface section of a source file.
Basic functions
Function Manual, 03/2007 379
Programming of general standard functions
7.21 HMI (Human Machine Interface) connection
the HMI reads out this variable consistently, since no changes have been made in the
meantime.
The ST program can be assigned to a cyclic task; it may be necessary to take the
IPOsynchronousTask if, for example, axis positions and velocities are to be read at the same
time (as a snapshot).
Examples:
Table 7-33 ST program for consistent data access from HMI devices
INTERFACE
VAR_GLOBAL
consistencyFlag : DINT;
myDint : DINT;
myArray : ARRAY[0..10] OF LREAL;
END_VAR
PROGRAM OPC_Prog;
END_INTERFACE
IMPLEMENTATION
PROGRAM OPC_Prog
IF (consistencyFlag MOD 2) = 1 THEN
myDint := 99;
myArray[0] := 0.0;
myArray[1] := 1.0;
myArray[10] := 10.0;
consistencyFlag := consistencyFlag + 1;
END_IF;
END_PROGRAM
END_IMPLEMENTATION
Table 7-34 HMI application for consistent data access (Visual Basic)
Option Explicit
Option Base 1
Basic functions
380 Function Manual, 03/2007
Programming of general standard functions
7.21 HMI (Human Machine Interface) connection
consistencyFlag = 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set g_myItem1 = Nothing
Set g_myItem2 = Nothing
Set g_myItem3 = Nothing
Set g_GroupObj = Nothing
Set g_Server = Nothing
End
End Sub
Basic functions
Function Manual, 03/2007 381
Programming of general system function blocks 8
8.1 Overview of the function blocks
ST contains a series of system function blocks that you can use in your ST source files
without having to declare them beforehand. You only have to create an instance and assign
the necessary parameters.
Basic functions
Function Manual, 03/2007 383
Programming of general system function blocks
8.1 Overview of the function blocks
Basic functions
384 Function Manual, 03/2007
Programming of general system function blocks
8.2 Bistable elements (set flip-flop)
0RGHRIRSHUDWLRQRI65
6 W
5 W
4 W
Basic functions
Function Manual, 03/2007 385
Programming of general system function blocks
8.2 Bistable elements (set flip-flop)
FUNCTION_BLOCK SR
VAR_INPUT
S1,R : BOOL;
END_VAR
VAR_OUTPUT
Q1 : BOOL;
END_VAR
END_FUNCTION_BLOCK
END_IMPLEMENTATION
0RGHRIRSHUDWLRQRI56
6 W
5 W
4 W
Basic functions
386 Function Manual, 03/2007
Programming of general system function blocks
8.3 Edge detection
FUNCTION_BLOCK RS
VAR_INPUT
R1,S : BOOL;
END_VAR
VAR_OUTPUT
Q1 : BOOL;
END_VAR
END_FUNCTION_BLOCK
Basic functions
Function Manual, 03/2007 387
Programming of general system function blocks
8.3 Edge detection
0RGHRIRSHUDWLRQRI5B75,*
&/. W
4 W
7$ 7$ 7$
7$ F\FOHWLPH
Table 8-6 Program code for function block R_TRIG (rising edge)
FUNCTION_BLOCK R_TRIG
VAR_INPUT
CLK : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR
M : BOOL := 0;
END_VAR
END_FUNCTION_BLOCK
Basic functions
388 Function Manual, 03/2007
Programming of general system function blocks
8.3 Edge detection
0RGHRIRSHUDWLRQRI)B75,*
&/. W
4 W
7$ 7$
7$ F\FOHWLPH
Table 8-8 Program code for function block F_TRIG (falling edge)
FUNCTION_BLOCK F_TRIG
VAR_INPUT
CLK : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR
M : BOOL := 1;
END_VAR
END_FUNCTION_BLOCK
Basic functions
Function Manual, 03/2007 389
Programming of general system function blocks
8.4 Counters
8.4 Counters
Sample code
FUNCTION_BLOCK CTU
VAR_INPUT
CU: BOOL; // Count
R : BOOL; // Reset
PV : INT; // Comparison value
END_VAR
VAR_OUTPUT
Q : BOOL; // Status
CV : INT; // Counter reading
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Input parameters
CU
Data type: BOOL
Count up if value changes from FALSE to TRUE (positive edge)
R
Data type: BOOL
TRUE: Reset the counter to 0
PV
Data type: INT
Comparison value
Basic functions
390 Function Manual, 03/2007
Programming of general system function blocks
8.4 Counters
Output parameter
Q
Data type: BOOL
Status of counter (CV >= PV)
CV
Data type: INT
Counter value
Basic functions
Function Manual, 03/2007 391
Programming of general system function blocks
8.4 Counters
See also
CTU up counter (Page 390)
Basic functions
392 Function Manual, 03/2007
Programming of general system function blocks
8.4 Counters
Basic functions
Function Manual, 03/2007 393
Programming of general system function blocks
8.4 Counters
Basic functions
394 Function Manual, 03/2007
Programming of general system function blocks
8.5 Timers
8.5 Timers
Timers are elements in your program used to execute and monitor time-driven processes.
ST provides a series of system function blocks that you can access with ST. You can use
timers in your program to do the following:
Set waiting times
Enable monitoring times
Generate pulses
Measure times
Basic functions
Function Manual, 03/2007 395
Programming of general system function blocks
8.5 Timers
TP pulse
With a signal state change from 0 to 1 at the IN input, time ET is started. Output Q remains
at 1 until elapsed time ET is equal to programmed time value PT. As long as time ET is
running, the IN input has no effect.
The following figure illustrates the mode of operation of the TP pulse timer.
0RGHRIRSHUDWLRQRI73
,1 W
4 W
37
W
Basic functions
396 Function Manual, 03/2007
Programming of general system function blocks
8.5 Timers
TON ON delay
With the signal state change from 0 to 1 at the IN input, time ET is started. The output signal
Q only changes from 0 to 1 if the time ET = PT has elapsed and the input signal IN still has a
value of 1, i.e. the output Q is switched on with a delay. Input signals of shorter durations
than that of programmed time PT do not appear at the output.
The following figure illustrates the mode of operation of the TON ON delay timer.
0RGHRIRSHUDWLRQRI721
,1 W
4 W
37
W
VAR_TEMP
Mytimeout : TON;
End_VAR
Mytimeout(pt := T#2s, IN : TRUE);
IF (mytimeout.q) THEN
//Time expired
ENDIF
Basic functions
Function Manual, 03/2007 397
Programming of general system function blocks
8.5 Timers
0RGHRIRSHUDWLRQRI72)
,1 W
4 W
37
W
Basic functions
398 Function Manual, 03/2007
Programming of general system function blocks
8.6 Splitting bit-string data types
See also
General information for combining bit-string data types (Page 300)
FUNCTION_BLOCK _BYTE_TO_8BOOL
VAR_INPUT
bytein : BYTE;
END_VAR
VAR_OUTPUT
bit0, // Least significant bit
bit1, bit2, bit3, bit4, bit5, bit6,
bit7: BOOL; // Most significant bit
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Basic functions
Function Manual, 03/2007 399
Programming of general system function blocks
8.6 Splitting bit-string data types
Input parameters
bytein
Data type: BYTE
Variable of data type BYTE to be split into 8 variables of data type BOOL.
Output parameter
bit0
...
bit7
Data type: BOOL
8 variables with the individual bits of the input parameter
bit0: least significant bit
...
bit7: most significant bit
FUNCTION_BLOCK _WORD_TO_2BYTE
VAR_INPUT
wordin : WORD;
END_VAR
VAR_OUTPUT
byte0, // Less significant byte
byte1: BYTE; // More significant byte
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Input parameters
wordin
Data type: WORD
Variable of data type WORD to be split into 2 variables of data type BYTE.
Basic functions
400 Function Manual, 03/2007
Programming of general system function blocks
8.6 Splitting bit-string data types
Output parameter
byte0 (optional)
byte1 (optional)
Data type: BYTE
2 variables with the individual bytes of the input parameter
byte0: less significant byte
byte1: more significant byte
FUNCTION_BLOCK _DWORD_TO_2WORD
VAR_INPUT
dwordin : DWORD;
END_VAR
VAR_OUTPUT
word0, // Less significant word
word1: WORD; // More significant word
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Input parameters
dwordin
Data type: DWORD
Variable of data type DWORD to be split into 2 variables of data type WORD.
Output parameter
word0
word1
Data type: WORD
2 variables with the individual bytes of the input parameter
word0: less significant word
word1: more significant word
Basic functions
Function Manual, 03/2007 401
Programming of general system function blocks
8.6 Splitting bit-string data types
FUNCTION_BLOCK _DWORD_TO_4BYTE
VAR_INPUT
dwordin : DWORD;
END_VAR
VAR_OUTPUT
byte0, // Least significant byte
byte1, byte2,
byte3: BYTE; // Most significant byte
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Input parameters
in
Data type: DWORD
Variable of data type DWORD to be split into 4 variables of data type BYTE.
Output parameter
byte0
byte1
byte2
byte3
Data type: BYTE
Factory setting BYTE#0
(default)
2 variables with the individual bytes of the input parameter
byte0: least significant byte
...
byte3: most significant byte
Basic functions
402 Function Manual, 03/2007
Programming of general system function blocks
8.7 Emulation of SIMATIC S7 commands
8.7.1 General
The following function blocks are interface-compatible with the commands for the SIMATIC
S7 counters and timers; see the reference manual SIMATIC Statement List (STL) for S7-
300/400.
Note
You should generally use the function blocks in accordance with IEC 61131-3 (counters and
timers).
See also
General information on counters (Page 390)
Timers (Page 395)
FUNCTION_BLOCK _S7_COUNTER
VAR_INPUT
CU: BOOL;
CD: BOOL;
PV : INT;
S: BOOL;
R : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
CV : INT;
END_VAR;
// ... (Code)
END_FUNCTION_BLOCK
Basic functions
Function Manual, 03/2007 403
Programming of general system function blocks
8.7 Emulation of SIMATIC S7 commands
Input parameters
CU
Data type: BOOL
Count up (with edge)
CD
Data type: BOOL
Count down (with edge)
PV
Data type: INT
Preset value
S
Data type: BOOL
Set preset value (with edge)
R
Data type: BOOL
Reset counter (static)
Output parameter
Q
Data type: BOOL
Counter status
CV
Data type: INT
Counter value
Basic functions
404 Function Manual, 03/2007
Programming of general system function blocks
8.7 Emulation of SIMATIC S7 commands
FUNCTION_BLOCK _S7_TIMER
VAR_INPUT
T_Type : WORD;
PR : BOOL;
S: BOOL;
R : BOOL;
TV : TIME;
TV_BCD : WORD;
END_VAR
VAR_OUTPUT
Q : BOOL;
BI: TIME;
END_VAR
// ... (Code)
END_FUNCTION_BLOCK
Input parameters
T_TYPE
Data type: WORD
S7 timer function to be executed
TYPE_S7T_SI_ = 16#0001 SI SP
TYPE_S7T_SV_ = 16#0002 SV SEE
TYPE_S7T_SE_ = 16#0004 SE SD
TYPE_S7T_SS_ = 16#0008 SS SS
TYPE_S7T_SA_ = 16#0010 SA SF
TYPE_S7T_BCD_IN = 16#0020 SA SF
TYPE_S7T_SI_ = 16#0040 R FR
TYPE_S7T_SI_ = 16#0080 L LC (U; UN; X ...)
FR
Data type: BOOL
Release
S
Data type: BOOL
Set preset value
R
Data type: BOOL
Reset timer
TV
Basic functions
Function Manual, 03/2007 405
Programming of general system function blocks
8.7 Emulation of SIMATIC S7 commands
Output parameter
Q1
Data type: BOOL
Timer status
BI
Data type: TIME
Current time
Basic functions
406 Function Manual, 03/2007
Error sources and efficient programming 9
9.1 Error sources during programming
See also
Functions for the conversion of numeric data types and bit data types (Page 288)
Basic functions
Function Manual, 03/2007 407
Error sources and efficient programming
9.1 Error sources during programming
//...
IF myStart = 0 THEN // If auxiliary variable has not yet been set
myStart := 1; // Set auxiliary variable (function started)
myCommandID := _getCommandId ();
myFC := _pos (axis := myAxis, // Execute function
position := position_1,
nextCommand := IMMEDIATELY,
commandID := myCommandID);
END_IF;
//...
IF myAxis.positioningState.actualPosition = position_1 THEN
myStart := 0; // Reset auxiliary variable, if
// function execution required.
END_IF;
//...
Note
Do not use commands with wait times in cyclic tasks, e.g. _waitTime.
Use only input parameter nextCommand := IMMEDIATELY for system functions in cyclic
tasks.
Basic functions
408 Function Manual, 03/2007
Error sources and efficient programming
9.1 Error sources during programming
//...
VAR
myCommandID : commandIdType;
myState : StructRetCommandState;
END_VAR
//...
myCommandID := _getCommandId ();
// Save unique ID
myFC := _pos (axis := myAxis,
// Execute function with ID
position := position_1,
nextCommand := IMMEDIATELY,
commandID := myCommandID);
myState := _getStateOfAxisCommand (axis:=myAxis,
commandID := myCommandID);
// Status check
IF myState.commandIdState = WAITING_FOR_SYNC_START THEN
;
//...
END_IF;
//...
See also
Input parameters of technology functions (Page 64)
_getCommandId function (Page 345)
_getSyncCommandId function (Page 346)
Basic functions
Function Manual, 03/2007 409
Error sources and efficient programming
9.1 Error sources during programming
Note
You can consult a list of all compiler error messages in the appendix of the ST
programming manual.
Basic functions
410 Function Manual, 03/2007
Error sources and efficient programming
9.1 Error sources during programming
Description
If the CPU changes to the STOP operating status then check the device diagnostics and the
alarm window in the SCOUT. Causes for the STOP are entered in the diagnostics buffer.
The alarms of the technology objects that can also cause a CPU STOP are displayed in the
Alarms window.
Possible reasons, why a CPU can go after STOP are:
Incorrect direct I/O access
Config data access or system variable access to TO if in the RESTART (as of V4.1
however substitute values for system variables are possible)
Missing PeripheralFaultTask (if there is incorrect access to the process image)
Missing TechnologicalFaultTask (if there are errors on the technology object)
Processing error in the programs (or missing ExecutionFaultTask)
Monitoring time overflow of the IPO/servo tasks
Monitoring time overflow of the BackgroundTask
Monitoring overflow of a TimerInterruptTask
Sign-of-life monitoring Simotion - drive
TO alarms with STOP response (e.g 20001).
Set mode via system variable
Use the device system variable modeOfOperation to display or change the current operating
mode.
Syntax
See also
Execution errors in programs (Page 87)
Access errors to system variables and configuration data, as well as I/O variables for direct
access (Page 88)
SystemInterruptTasks (Page 148)
Possible errors in technology objects (Page 103)
Basic functions
Function Manual, 03/2007 411
Error sources and efficient programming
9.1 Error sources during programming
Note
The system tasks for the TControl technology package can be disabled in the system cycle
clock settings window.
Refer to the online help for information about how to check the device diagnostics, interpret
the alarm window and check/change your system clocks.
PROGRAM myRange
VAR
a,b : SINT := 100;
c: SINT;
END_VAR
c := a + b;
// If c is outside range, then exit program.
IF (a > 0) AND (c < a) AND (c < b) OR
(a < 0) AND (c > a) AND (c > b) THEN
// Range violation
Basic functions
412 Function Manual, 03/2007
Error sources and efficient programming
9.2 Efficient programming
RETURN;
ELSE
; // OK
END_IF;
END_PROGRAM
See also
Specifications for the configuring (Page 215)
Basic functions
Function Manual, 03/2007 413
Error sources and efficient programming
9.2 Efficient programming
Basic functions
414 Function Manual, 03/2007
Error sources and efficient programming
9.2 Efficient programming
NOTICE
When you access unit variables or global device variables with in/out parameters, note that
other tasks can access these variables at the same time.
Basic functions
Function Manual, 03/2007 415
Error sources and efficient programming
9.2 Efficient programming
Description
Use of global unit variables in sources is preferable to use of device global variables (via the
project navigator).
Benefits:
Variable structures can be used.
Initialization (initial values) of the variables for the STOP-RUN transition is possible (via
program in StartupTask)
For newly created global unit variables a download in RUN is also possible (in a new
declaration block)
Basic functions
416 Function Manual, 03/2007
Error sources and efficient programming
9.2 Efficient programming
Procedure
1. Define unit-global variables in a source file in the interface section.
Retain variables and HMI variables should likewise each be declared in a separate
source file or declaration block (see above).
2. Assign the program with the initialization of the variables to the StartupTask.
The variables will be set to a defined initial value in the startup.
INTERFACE
//global types
TYPE
MyStruct : STRUCT
Intvalue : INT;
Realvalue: REAL;
Bitvalue : BOOL;
END_STRUCT
END_TYPE
//global constants
VAR_GLOBAL CONSTANT
n : INT := 0;
m: INT := 15;
END_VAR
//global variables
VAR_GLOBAL
Bitarray : ARRAY [n..m] OF BOOL := [16 (FALSE)];
Intarray : ARRAY [0..15] OF INT := [16 (0) ];
Realarray: ARRAY [0..15] OF REAL:= [16 (0.0) ];
StructVar: MyStruct;
END_VAR
//programs
PROGRAM Init;
//end of the interface
END_INTERFACE
Basic functions
Function Manual, 03/2007 417
Error sources and efficient programming
9.2 Efficient programming
IMPLEMENTATION
PROGRAM Init
//////////////////////////////////////////////////
//initialization of the variables during startup//
//////////////////////////////////////////////////
StructVar.Intvalue :=0;
StructVar.Realvalue:=0;
StructVar.Bitvalue :=FALSE;
END_PROGRAM
END_IMPLEMENTATION
The program is then assigned to the StartupTask.
Always when unit global variables will be used in a different source file the source files must
be combined with the source file that contains the declaration (USES). See also Connection
to other program sources or to libraries in the MCC Programming Manual or Use of the
USES statement in the interface or implementation section of an importing unit in the ST
programming manual.
Basic functions
418 Function Manual, 03/2007
Appendix A A
A.1 Symbolic constants
The following table presents names of reserved constants that you must not use for
individual variable names.
Basic functions
Function Manual, 03/2007 419
Appendix A
A.1 Symbolic constants
Table A-4 Symbolic constants for the value range limits of elementary data types
Basic functions
420 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
Table A-5 Symbolic constants for invalid values of selected data types
Icons
_abortAllReadWriteDriveParameterJobs
_abortReadWriteRecordJobs
_activateConfiguration
_activateDpSlave
_activateDpSlaveAddress
_activateNameOfStation
Basic functions
Function Manual, 03/2007 421
Appendix A
A.2 Reserved identifiers
_activateTo
_alarmS
_alarmSc
_alarmScId
_alarmSId
_alarmSq
_alarmSqId
_allocateTokenToVariableName
_AND
_BOOL
_BYTE_FROM_8BOOL
_BYTE_TO_8BOOL
_changeOperationMode
_checkEqualTask
_checkExistingUnitDataSet
_configurationManagement
_cpuData
_cpuDataRW
_DATE
_DATE_AND_TIME
_deactivateDpSlave
_deactivateTo
_deallocateTokenToVariableName
_deleteAllUnitDataSets
_deleteUnitDataSet
_DINT
_disableScheduler
_DWORD_FROM_2WORD
_DWORD_FROM_4BYTE
_DWORD_TO_2WORD
_DWORD_TO_4BYTE
_enableDpInterfaceSynchronizationMode
_enableScheduler
_exportUnitDataSet
_exportUnitDataSet2
_finite
Basic functions
422 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
_getActiveDpSlaveAddress
_getActiveNameOfStation
_getAlarmId
_getAverageTaskIdRunTime
_getAverageTaskRunTime
_getBit
_getCommandId
_getConfigurationData
_getCurrentTaskIdRunTime
_getCurrentTaskRunTime
_getDataByToken
_getDeviceId
_getDoIndexNumberFromLogAddress
_getDpStationAddressFromLogDiagnosticAddress
_getGeoAddressFromLogAddress
_getInOutByte
_getInternalTaskIdIdx
_getInternalTaskIdx
_getInternalTimeStamp
_getIO_Part_4
_getIPConfig
_getLogDiagnosticAddressFromDpStationAddress
_getMaximalTaskIdRunTime
_getMaximalTaskRunTime
_getMemoryCardId
_getMinimalTaskIdRunTime
_getMinimalTaskRunTime
_getNextLogAddress
_getPendingAlarms
_getPnInterfacePortNeighbour
_getSafeValue
_getSegmentIdentification
_getStateOfAllDpSlaves
_getStateOfAllDpStations
_getStateOfDiagnosticDataCommand
_getStateOfDpSlave
Basic functions
Function Manual, 03/2007 423
Appendix A
A.2 Reserved identifiers
_getStateOfProcessInterruptCommand
_getStateOfRecordCommand
_getStateOfSingleDpSlave
_getStateOfTask
_getStateOfTaskId
_getStateOfTo
_getStateOfUnitDataSetCommand
_GetStateOfXCommand
_getStationType
_getSyncCommandId
_getSystemTime
_getTaskId
_getTimeDifferenceOfInternalTimeStamps
_imData
_IMPLEMENTATION
_importUnitDataSet
_importUnitDataSet2
_INT
_INTERFACE
_INTERFACE_AND_IMPLEMENTATION
_internalTest
_isNaN
_LINT
_loadUnitDataSet
_loadUnitDataSet2
_LREAL
_MRES
_NOT
_OR
_readDiagnosticData
_readDriveFaults
_readDriveMultiParameter
_readDriveMultiParameterDescription
_readDriveParameter
_readDriveParameterDescription
_readRecord
Basic functions
424 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
_readSystemClock
_REAL
_releaseSemaphore
_resetAlarmId
_resetAllAlarmId
_resetDriveObjectFault
_resetTask
_resetTaskId
_resetTechnologicalErrors
_resetUnitData
_restartTask
_restartTaskId
_resumeTask
_resumeTaskId
_RETAIN
_retriggerTaskControlTime
_retriggerTaskIdControlTime
_RUN
_S7_COUNTER
_S7_TIMER
_saveConfigData
_savePersistentMemoryData
_saveUnitDataSet
_saveUnitDataSet2
_SC_ALARM_CONFIGURATION
_SC_ARRAY_BOUND_ERROR_READ
_SC_ARRAY_BOUND_ERROR_WRITE
_SC_BACKGROUND_TIMER_OVERFLOW
_SC_BATTERY_WARNING_LEVEL1
_SC_BATTERY_WARNING_LEVEL2
_SC_CYCLE_TIMER_OVERFLOW
_SC_DEVICE_COMMAND
_SC_DIAGNOSTIC_INTERRUPT
_SC_DIVISION_BY_ZERO
_SC_DP_CLOCK_DETECTED
_SC_DP_SLAVE_NOT_SYNCHRONIZED
Basic functions
Function Manual, 03/2007 425
Appendix A
A.2 Reserved identifiers
_SC_DP_SLAVE_SYNCHRONIZED
_SC_DP_SYNCHRONIZATION_LOST
_SC_EXCEPTION
_SC_EXTERNAL_COMMAND
_SC_IMAGE_UPDATE_FAILED
_SC_IMAGE_UPDATE_OK
_SC_INVALID_ADDRESS
_SC_INVALID_FLOATING_POINT_OPERATION
_SC_IO_MODULE_NOT_SYNCHRONIZED
_SC_IO_MODULE_SYNCHRONIZED
_SC_MODE_SELECTOR
_SC_PC_INTERNAL_FAILURE
_SC_PROCESS_INTERRUPT
_SC_PULL_PLUG_INTERRUPT
_SC_STATION_DISCONNECTED
_SC_STATION_RECONNECTED
_SC_TO_INSTANCE_NOT_EXISTENT
_SC_VARIABLE_ACCESS_ERROR_READ
_SC_VARIABLE_ACCESS_ERROR_WRITE
_sendProcessInterrupt
_SERVICE
_setBit
_setDataByToken
_setDeviceErrorLED
_setDpSlaveAddress
_setIO_Part_4
_setIPConfig
_setModeSelfAdaptingConfiguration
_setNameOfStation
_setSafeValue
_setSystemTime
_SHUTDOWN
_SINT
_sizeOf
_startSyncCommands
_startTask
Basic functions
426 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
_startTaskId
_STARTUP
_startupData
_STOP
_STOPU
_suspendTask
_suspendTaskDebug
_suspendTaskId
_suspendTaskIdDebug
_synchronizeDpInterfaces
_tcpCloseConnection
_tcpCloseServer
_tcpOpenClient
_tcpOpenServer
_tcpReceive
_tcpSend
_testAndSetSemaphore
_testSFBSysDataInit
_TIME
_TIME_OF_DAY
_toggleBit
_triggerTestMode
_UDINT
_udpAddMulticastGroupMembership
_udpDropMulticastGroupMembership
_udpReceive
_udpSend
_UINT
_ULINT
_upsData
_USINT
_waitTime
_WORD_FROM_2BYTE
_WORD_TO_2BYTE
_writeAndSendMessage
_writeDriveMultiParameter
Basic functions
Function Manual, 03/2007 427
Appendix A
A.2 Reserved identifiers
_writeDriveParameter
_writeRecord
_XOR
_Xreceive
_Xsend
A
ABORT_CONNECTION
ABORT_CURRENT_COMMAND
ABS
ACCESS_DENIED
ACOS
ACTION
ACTIVATE_FALL_BACK_CONFIGURATION
ACTIVATED
ACTIVATED_NO_ALARM
ACTIVE
ACTUAL_ACTIVATED
ADD
ADD_DT_TIME
ADD_TIME
ADD_TOD_TIME
ALARM_S
ALARM_SQ
ALARMS_ERROR
ALARMS_QSTATE
ALARMS_STATE
ALL_GLOBAL
AND
ANYOBJECT
ANYOBJECT_TO_OBJECT
ANYTYPE_TO_BIGBYTEARRAY
ANYTYPE_TO_LITTLEBYTEARRAY
ARRAY
AS
ASIN
Basic functions
428 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
AT
ATAN
AUTOMATIC_INTERFACE_SYNCHRONIZATION
B
BCD_TO_BYTE
BCD_TO_DINT
BCD_TO_DWORD
BCD_TO_INT
BCD_TO_LWORD
BCD_TO_SINT
BCD_TO_WORD
BEGIN_SYNC
BigByteArray_to_AnyType
BIGBYTEARRAY_TOANYTYPE
BOOL
BOOL_TO_BYTE
BOOL_TO_DWORD
BOOL_TO_WORD
BOOL_VALUE_TO_DINT
BOOL_VALUE_TO_INT
BOOL_VALUE_TO_LREAL
BOOL_VALUE_TO_REAL
BOOL_VALUE_TO_SINT
BOOL_VALUE_TO_UDINT
BOOL_VALUE_TO_UINT
BOOL_VALUE_TO_USINT
BUFFERED
BY
BYTE
BYTE_TO_BCD
BYTE_TO_BOOL
BYTE_TO_DINT
BYTE_TO_DWORD
BYTE_TO_INT
BYTE_TO_SINT
Basic functions
Function Manual, 03/2007 429
Appendix A
A.2 Reserved identifiers
BYTE_TO_UDINT
BYTE_TO_UINT
BYTE_TO_USINT
BYTE_TO_WORD
BYTE_VALUE_TO_LREAL
BYTE_VALUE_TO_REAL
C
CASE
cDINT_TO_UDINT
CLOSE_ON_EXIT
COMMAND_FAILED
COMMAND_NOT_FOUND
CommandIdType
CONCAT
CONCAT_DATE_TOD
CONFIGURATION
CONFIGURATION_DELETED
CONFIGURATION_ERROR
CONFIGURATION_ID_NOT_FOUND
CONFIGURATION_NOT_FOUND
CONFIGURATION_VERSION
CONFIGURED
CONSTANT
COS
CRITICAL
CTD
CTD_DINT
CTD_LINT
CTD_UDINT
CTD_ULINT
CTU
CTU_DINT
CTU_LINT
CTU_UDINT
CTU_ULINT
Basic functions
430 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
CTUD
CTUD_DINT
CTUD_LINT
CTUD_UDINT
CTUD_ULINT
D
DATA_EXCHANGE_INACTIVE
DATA_INCOMPATIBLE
DATA_INCOMPLETE
DATA_MISMATCH
DATASET_ALREADY_EXISTS
DATASET_ID_NOT_VALID
DATASET_NOT_FOUND
DATE
DATE_AND_TIME
DATE_AND_TIME_TO_DATE
DATE_AND_TIME_TO_TIME_OF_DAY
dccAux_2Clock
dccAuxClock
DEACTIVATED
DEACTIVATED_NO_ALARM
DEFAULT_VALUE
DELETE
DINT
DINT_TO_BCD
DINT_TO_BYTE
DINT_TO_DWORD
DINT_TO_INT
DINT_TO_LREAL
DINT_TO_REAL
DINT_TO_SINT
DINT_TO_STRING
DINT_TO_UDINT
DINT_TO_UINT
DINT_TO_USINT
Basic functions
Function Manual, 03/2007 431
Appendix A
A.2 Reserved identifiers
DINT_TO_WORD
DINT_VALUE_TO_BOOL
DISABLE
DIV
DIVTIME
DO
DO_NOT_CLOSE_ON_EXIT
DO_NOT_SET_DP_ALARM
DONE
DP_1
DP_2
DP_3
DP_CLOCK_DETECTED
DP_INTERFACES_SYNCHRONIZED
DP_SLAVE_NOT_SYNCHRONIZED
DP_SLAVE_SYNCHRONIZED
DRIVE
DSC_SVS_DEVICE_ALARMS_EVENT_ID_IN_USE
DSC_SVS_DEVICE_ALARMS_EVENT_ID_NOT_USED
DSC_SVS_DEVICE_ALARMS_ILLEGAL_EVENT_ID
DSC_SVS_DEVICE_ALARMS_INTERNAL_ERROR
DSC_SVS_DEVICE_ALARMS_IV_CALL
DSC_SVS_DEVICE_ALARMS_IV_FIRST_CALL
DSC_SVS_DEVICE_ALARMS_IV_SFC_TYP
DSC_SVS_DEVICE_ALARMS_LAST_ENTRY_USED
DSC_SVS_DEVICE_ALARMS_LAST_SIGNAL_USED
DSC_SVS_DEVICE_ALARMS_NO_ENTRY
DT
DT_TO_DATE
DT_TO_TOD
DWORD
DWORD_TO_BCD
DWORD_TO_BOOL
DWORD_TO_BYTE
DWORD_TO_DINT
DWORD_TO_INT
Basic functions
432 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
DWORD_TO_REAL
DWORD_TO_SINT
DWORD_TO_UDINT
DWORD_TO_UINT
DWORD_TO_USINT
DWORD_TO_WORD
DWORD_VALUE_TO_LREAL
DWORD_VALUE_TO_REAL
E
effectiveTaskRuntime
ELSE
ELSIF
EN
ENABLE
END_ACTION
END_CASE
END_CONFIGURATION
END_EXPRESSION
END_FOR
END_FUNCTION
END_FUNCTION_BLOCK
END_IF
END_IMPLEMENTATION
END_INTERFACE
END_LABEL
END_PROGRAM
END_REPEAT
END_RESOURCE
END_STEP
END_STRUCT
END_SYNC
END_TRANSITION
END_TYPE
END_VAR
END_WAITFORCONDITION
Basic functions
Function Manual, 03/2007 433
Appendix A
A.2 Reserved identifiers
END_WHILE
ENO
ENUM_TO_DINT
EnumAccessMode
EnumAlarmIdState
EnumAlarmIdType
EnumConfigurationInfoId
EnumDataType
EnumDeviceAbortReadWriteJobs
EnumDeviceCommandIdState
EnumDeviceConfigurationActivationState
EnumDeviceDataActivationState
EnumDeviceDataScope
EnumDeviceDpAlarmMode
EnumDeviceIdType
EnumDeviceKindOfData
EnumDeviceModeOfOperation
EnumDeviceStartupOperationMode
EnumDeviceStateOfDpSlave
EnumDeviceStorageType
EnumDeviceUnitDataSetCommand
EnumDpInterfaceSyncMode
EnumDpInterfaceSyncState
EnumDpSegmentId
EnumDpSlaveSyncState
EnumDriveFaultsType
EnumEnableDisable
EnumEventClass
EnumFctGenStartStop
EnumFctGenState
EnumIncomingOutgoing
EnumInOutDirection
EnumInterfaceID
EnumIoIdType
EnumMemoryCardIdType
EnumModeSelfAdaptingConfiguration
Basic functions
434 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
EnumNextCommandMode
EnumOperationMode
EnumPersistentDataState
EnumReqActDeactGetStateMode
EnumReqSysFunctMode
EnumSaveState
EnumSetAndGetSafeValue
EnumStartStop
EnumStateOfDpSlave
EnumStateOfDpStation
EnumStateOfTo
EnumTcpNextCommandMode
EnumToSetStateOfTo
EnumTraceState
EnumUdpCommunicationMode
EnumUpsBatteryState
EnumUpsState
EnumXCommandIdState
EnumXCommunicationMode
EnumXNextCommandEnable
EnumYesNo
EQ
EXIT
EXP
EXPD
EXPRESSION
EXPT
F
F_EDGE FROM
F_TRIG
FAILED
FALSE
FCTGEN_DISABLED
FCTGEN_ENABLED
FCTGEN_LIMIT_EXCEEDED
Basic functions
Function Manual, 03/2007 435
Appendix A
A.2 Reserved identifiers
FCTGEN_PARAM_VALID
FCTGEN_RUNNING
FCTGEN_START
FCTGEN_START_FG1
FCTGEN_START_FG2
FCTGEN_STARTING
FCTGEN_STOP
FCTGEN_STOPPING
FCTGEN_WAIT_FG1
FCTGEN_WAIT_FG2
FIND
FOR
FROM_BACKUP
FROM_FILE
FROM_RAM
FUNCTION
FUNCTION_BLOCK
FUNCTION_IS_ACTIVATED
FUNCTION_IS_ACTIVE
FUNCTION_IS_WAITING_FOR_ACTIVATION
G
GE GT
GOTO
H
HOLD_CONNECTION
HW_TYPE
I
IE_01
IE_02
IE_1
IE_2
IF
IMMEDIATELY
Basic functions
436 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
IMPLEMENTATION
IN
IN_ACTIVATION
IN_DEACTIVATION
IN_OPERATION
INACTIVE
INCOMING
INCOMING_ALARM
INITIAL_STEP INT_TO_BCD
INPUT
INSERT
INT
INT_TO_BYTE
INT_TO_DINT
INT_TO_DWORD
INT_TO_LREAL
INT_TO_REAL
INT_TO_SINT
INT_TO_TIME
INT_TO_UDINT
INT_TO_UINT
INT_TO_USINT
INT_TO_WORD
INT_VALUE_TO_BOOL
INTERFACE
INTERNAL_ERROR
INTERNAL_ERROR
INVALID
INVALID_VALUE
ipoClock
ipoClock_2
L
LABEL
LAST_OPERATION_MODE
LE
Basic functions
Function Manual, 03/2007 437
Appendix A
A.2 Reserved identifiers
LEFT
LEN
LIMIT
LINT
LittleByteArray_to_AnyType
LITTLEBYTEARRAY_TOANYTYPE
LN
LOG
LREAL
LREAL_TO_DINT
LREAL_TO_INT
LREAL_TO_REAL
LREAL_TO_SINT
LREAL_TO_STRING
LREAL_TO_UDINT
LREAL_TO_UINT
LREAL_TO_USINT
LREAL_VALUE_TO_BOOL
LREAL_VALUE_TO_BYTE
LREAL_VALUE_TO_DWORD
LREAL_VALUE_TO_WORD
PM
LWORD
LWORD_TO_BCD
G
MASTER_SLAVE_ALARMMESSAGES_1
MAX
MEMORY_CARD_FULL
MEMORY_CARD_SERIAL_NUMBER
MID
MIN
MOD
modeOfDpInterfaceSynchronization
modeOfOperation
MUL MULTIME
Basic functions
438 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
MUX
N
MS
NO
NO_ACCESS
NO_ALARMMESSAGES
NO_CHANGE
NO_COMMAND_BUFFER_AVAILABLE
NO_DP_SEGMENT
NO_REQUEST_TO_ACTIVATE
NO_RESOURCES_AVAILABLE
NO_RETAIN_GLOBAL
NO_STORAGE_AVAILABLE
NO_VALID_CONFIGURATION_ID
NO_VALID_STATE
NOT
NOT_ACTIVATED
NOT_ENOUGH_RAM
NOT_EXISTENT
NOT_PRESENT
NOTSUPP
numberOfSummarizedTaskOverflow
O
O_K_
OF
OF OR
OFF
OK
ON
OR
ORDER_ID
OUT
OUTGOING
OUTGOING_ALARM
Basic functions
Function Manual, 03/2007 439
Appendix A
A.2 Reserved identifiers
OUTPUT
P
PERMANENT-STORAGE
persistentDataPowerMonitoring
PN_1
PREDEFINED_APPLICATION_EVENTS
PREDEFINED_MODULE_INFORMATION
PREVIOUS_ACTIVATED
PROGRAM
R
R_EDGE RESOURCE
R_TRIG
RAM_DISK_FULL
READ_AND_WRITE_JOBS
READ_ERROR
READ_JOBS
REAL
REAL_TO_DINT
REAL_TO_DWORD
REAL_TO_INT
REAL_TO_LREAL
REAL_TO_SINT
REAL_TO_STRING
REAL_TO_TIME
REAL_TO_UDINT
REAL_TO_UINT
REAL_TO_USINT
REAL_VALUE_TO_BOOL
REAL_VALUE_TO_BYTE
REAL_VALUE_TO_DWORD
REAL_VALUE_TO_WORD
REPEAT
REPLACE
REQUEST_ABORT
Basic functions
440 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
REQUEST_FALSE
REQUEST_TRUE
RETAIN
RETURN
RIGHT
ROL
ROR
RS
RTC
RUN
S
SAVE_ABORTED
SAVE_FINISHED
SEL
SEMA
SERIAL_NUMBER
servoControlClock
servoTaskCycle
SET_DP_ALARM
SHL
SHR
SIN
SINT
SINT_TO_BCD
SINT_TO_BYTE
SINT_TO_DINT
SINT_TO_DWORD
SINT_TO_INT
SINT_TO_LREAL
SINT_TO_REAL
SINT_TO_UDINT
SINT_TO_UINT
SINT_TO_USINT
SINT_TO_WORD
SINT_VALUE_TO_BOOL
Basic functions
Function Manual, 03/2007 441
Appendix A
A.2 Reserved identifiers
SLAVE_ALARMMESSAGES_1
SPECIFIC_NUMBER
SQRT
SR
START
stateOfDpInterfaceSynchronization
stateOfDpSlaveSynchronization
STEP
STOP
STOP_DEVICE
STOPU
STRING
STRING_TO_DINT
STRING_TO_LREAL
STRING_TO_REAL
STRING_TO_UDINT
STRUCT
StructAlarmId
StructAlarmId_TO_DINT
StructDeviceConfigurationData
StructDeviceConfigurationManagement
StructDeviceCpuData
StructDeviceCpuDataRW
StructDeviceDataActivationState
StructDeviceIm0
StructDeviceIm0Softwareversion
StructDeviceIm0Version
StructDeviceImData
StructDeviceStartUp
StructDeviceUpsData
StructDpStationAddressType
StructEffectiveTaskRuntimeType
StructPendingAlarmState
structPersistentDataPowerMonitoringtype
StructRetAllocateToken
StructRetConfiguration
Basic functions
442 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
StructRetDeviceCommandState
StructRetDeviceGetStateOfAllDpStations
StructRetDeviceGetStateOfDpSlave
StructRetDeviceNameOfStation
StructRetDiagnosticData
StructRetDpSlaveAddress
StructRetGetConfigurationData
StructRetGetDataByToken
StructRetGetDeviceId
StructRetGetDoIndexNumberFromLogAddress
StructRetGetDpStationAddressFromLogDiagnosticAddress
StructRetGetGeoAddressFromLogAddress
StructRetGetInOutByte
StructRetGetLogDiagnosticAddressFromStationAddress
StructRetGetMemoryCardId
StructRetGetNextLogAddress
StructRetGetPendingAlarmState
StructRetGetSegmentIdentification
StructRetGetStateOfAllDpSlaves
StructRetGetStateOfSingleDpSlave
StructRetGetStateOfTo
StructRetGetStationType
StructRetIPConfig
StructRetReadDriveFaults
StructRetReadDriveMultiParameter
StructRetReadDriveMultiParameterDescription
StructRetReadDriveParameter
StructRetReadDriveParameterDescription
StructRetReadRecord
StructRetTcpOpenClient
StructRetTcpOpenServer
StructRetTcpReceive
StructRetUdpReceive
StructRetUnitDataSetCommand
StructRetWriteDriveMultiParameter
StructRetWriteDriveParameter
Basic functions
Function Manual, 03/2007 443
Appendix A
A.2 Reserved identifiers
StructRetXCommandState
StructRetXreceive
StructStateOfDpStations
StructSystemLoad
StructTaskId
StructTaskOverflowType
StructTaskRuntimeType
StructTaskRuntimeValues
StructTCOFctGenOverride
StructTraceControl
StructTraceState
StructUserData
StructXsendDestAddr
SUB
SUB_DATE_DATE
SUB_DT_DT
SUB_DT_TIME
SUB_TIME
SUB_TOD_TIME
SUB_TOD_TOD
SYMBOL_INFORMATION_NOT_AVAILABLE
SYMBOL_INFORMATION_NOT_FOUND
systemClock
systemLoad
T
TAN
TASK_STATE_INVALID
TASK_STATE_LOCKED
TASK_STATE_RUNNING
TASK_STATE_STOP_PENDING
TASK_STATE_STOPPED
TASK_STATE_SUSPENDED
TASK_STATE_WAIT_NEXT_CYCLE
TASK_STATE_WAIT_NEXT_INTERRUPT
TASK_STATE_WAITING
Basic functions
444 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
taskRuntime
taskRuntimeMonitoring
TCOFctGenOverride
TEMPORARY_STORAGE
THEN
TIME
TIME_OF_DAY
TIME_OUT
TIME_TO_INT
TIME_TO_REAL
TIME_TO_UDINT
TO
TOD
TOF
TON
TP
TRACE_ABORTED
TRACE_FINISHED
TRACE_INACTIVE
TRACE_MISMATCH
TRACE_NO_TIME
TRACE_PARAM_VALID
TRACE_RUNNING
TRACE_WAIT_FOR_TRIGGER
traceControl
traceState
TRANSITION
TRUE
TRUNC
TYPE
U
UDINT
UDINT_TO_BYTE
UDINT_TO_DINT
UDINT_TO_DWORD
Basic functions
Function Manual, 03/2007 445
Appendix A
A.2 Reserved identifiers
UDINT_TO_INT
UDINT_TO_LREAL
UDINT_TO_REAL
UDINT_TO_SINT
UDINT_TO_STRING
UDINT_TO_TIME
UDINT_TO_UINT
UDINT_TO_USINT
UDINT_TO_WORD
UDINT_VALUE_TO_BOOL
UINT
UINT_TO_BYTE
UINT_TO_DINT
UINT_TO_DWORD
UINT_TO_INT
UINT_TO_LREAL
UINT_TO_REAL
UINT_TO_SINT
UINT_TO_UDINT
UINT_TO_USINT
UINT_TO_WORD
UINT_VALUE_TO_BOOL
ULINT
UNIT
UNIT_NOT_FOUND
UNTIL
USELIB
USEPACKAGE
USER
USER_DEFINED
USER_EVENTS_1
USER_EVENTS_2
USER_STORAGE
userData
USES
USINT
Basic functions
446 Function Manual, 03/2007
Appendix A
A.2 Reserved identifiers
USINT_TO_BYTE
USINT_TO_DINT
USINT_TO_DWORD
USINT_TO_INT
USINT_TO_LREAL
USINT_TO_REAL
USINT_TO_SINT
USINT_TO_UDINT
USINT_TO_UINT
USINT_TO_WORD
USINT_VALUE_TO_BOOL
V
VAR
VAR_ACCESS
VAR_ALIAS
VAR_EXTERNAL
VAR_GLOBAL
VAR_IN_OUT
VAR_INPUT
VAR_OBJECT
VAR_OUTPUT
VAR_TEMP
VERSION_MISMATCH
VOID
W
WAIT_FOR_DP_CLOCK
WAITFORCONDITION
WAITING
WAITING_FOR_RESTART
WARNING
WHEN_COMMAND_DONE
WHILE
WITH
WORD
Basic functions
Function Manual, 03/2007 447
Appendix A
A.2 Reserved identifiers
WORD_TO_BCD
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_DINT
WORD_TO_DWORD
WORD_TO_INT
WORD_TO_SINT
WORD_TO_UDINT
WORD_TO_UINT
WORD_TO_USINT
WORD_VALUE_TO_LREAL
WORD_VALUE_TO_REAL
WRITE_JOBS
X
XOR
Y
YES
Basic functions
448 Function Manual, 03/2007
Index
_DWORD_TO_4BYTE, 386
_exportUnitDataSet
_ Application, 347
Description, 319
_additionObjectType, 65
_finite
_alarm, 253, 342
Description, 294
_alarmS
_fixedGearType, 65
Application, 340, 341
_formulaObjectType, 65
_alarmSc
_getAlarmId
Application, 340, 341
Application, 342
_alarmScId
Description, 262
Application, 340, 341
_getAverageTaskIdRunTime, 250
Description, 260
_getBit, 269
_alarmSId
_getCommandId, 333
Application, 340
Error source, 392
Application, 341
_getCurrentTaskIdRunTime, 249
Description, 254
_getDeviceId, 336
_alarmSq
_getInOutByte
Application, 340
Description, 309
Application, 341
_getMaximalTaskIdRunTime, 246
_alarmSqId
_getMemoryCardId, 337
Application, 341
_getMinimalTaskIdRunTime, 247
Application, 340
_getPendingAlarms, 263
Description, 257
_getStateOfTaskId
_AND, 274
Brief description, 231
_BYTE_TO_8BOOL, 384
Description, 233
_camTrackType, 65
_getStateOfUnitDataSetCommand
_checkEqualTask
Description, 328
Description, 244
Example, 352
Example, 98
_GetStateOfXCommand, 359
_checkExistingDataSet
_getSyncCommandId, 334
Application, 347
Application, 364
Description, 329
_getTaskId
_controllerObjectType, 65
Application, 232
_deleteAllUnitDataSets
Application, 253
Application, 347
Description, 243
Description, 331
_importUnitDataSet
_deleteUnitDataSet
Application, 347
Application, 347
Description, 322
Description, 326
_isNaN
_device, 312, 317, 323, 326, 329, 332, 349
Description, 295
_disableScheduler
_loadUnitDataSet
Brief description, 232
Application, 347
_DWORD_FROM_2WORD, 291
Description, 316
_DWORD_FROM_4BYTE, 292
Example, 352
_DWORD_TO_2WORD, 386
Basic functions
Function Manual, 03/2007 449
Index
Basic functions
450 Function Manual, 03/2007
Index
Basic functions
Function Manual, 03/2007 451
Index
Basic functions
452 Function Manual, 03/2007
Index
Basic functions
Function Manual, 03/2007 453
Index
Basic functions
454 Function Manual, 03/2007
Index
Basic functions
Function Manual, 03/2007 455
Index
Basic functions
456 Function Manual, 03/2007
Index
Basic functions
Function Manual, 03/2007 457
Index
TSI#alarmP2_DINT, 90 V
TSI#alarmP2_LREAL, 90
Variables
TSI#alarmP2_UDINT, 90
Efficient access, 397
TSI#alarmP3_DINT, 90
Instance declaration of TO, 59
TSI#alarmP3_LREAL, 90
Range violation, 396
TSI#alarmP3_UDINT, 90
Semaphores (application), 345
TSI#alarmP4_DINT, 90
TSI#alarmP4_LREAL, 90
TSI#alarmP4_UDINT, 90
W
TSI#alarmP5_DINT, 90
TSI#alarmP5_LREAL, 90 Wait for condition, 122
TSI#alarmP5_UDINT, 90 WAITFORCONDITION, 122
TSI#commandId.high, 90 Description (in context), 217
TSI#commandId.low, 90 Watchdog, 168
TSI#currentTaskId, 88, 89, 90, 92, 94, 95
TSI#cycleTime, 88, 89, 90, 92, 94, 95
TSI#details, 94, 95
TSI#eventClass, 94
TSI#executionFaultType, 91
TSI#eventClass, 96
TSI#faultId, 94
TSI#interruptId, 89, 92
TSI#InterruptId, 95, 96
TSI#logBaseAdrIn, 94
TSI#logBaseAdrOut, 94
TSI#logDiagAdr, 94
TSI#shutDownInitiator, 95
TSI#startTime, 88, 89, 90, 91, 94, 95
TSI#taskId, 89, 91
TSI#toInst, 90
Type conversion functions, 277
U
UDINT#MAX, 405
UDINT#MIN, 405
UDINT_TO_STRING, 285
UDINT_TO_TIME, 282
UINT#MAX, 405
UINT#MIN, 405
Up counter (system FB), 375
Up/down counter (system FB), 379
USEPACKAGE, 58
User interrupt
Programmable, 217
User program, 23
User program tasks, 116
UserInterruptTasks, 118, 147
Taskstartinfo, 94
Using the expert list, 42
USINT#MAX, 405
USINT#MIN, 405
Basic functions
458 Function Manual, 03/2007