Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Beschneiden: Oben: 61,5 mm Unten: 61,5 mm Links: 43,5 mm Rechts: 43,5 mm
Controller
Manual CMXR-C2 with CoDeSys
Manual571 700 en 1205a [761532]
GDCP-CMXR-C2-CS-ES 1205a 3
Edition ______________________________________________________ 1205a
Designation _____________________________________ GDCP-CMXR-C2-CS-EN
Order no. ___________________________________________________ 571700
Festo AG & Co KG., D-73726 Esslingen, Federal Republic of Germany, 2012
Internet: http://www.festo.com
E-mail: [email protected]
Reproduction, distribution and utilisation of this document, as well as the communication of its contents to others without explicit authorisation, is prohibited. Offenders shall be held liable for payment of damages. All rights reserved, in particular the right to file patent, utility model and registered design applications.
4 GDCP-CMXR-C2-CS-EN 1205a
Index of revisions
Author:
Name of manual: GDCP-CMXR-C2-CS-EN
File name:
File saved at:
Consec. no. Description Index of revisions Date of amendment
001 Produced: 1002NH 2010/04/14
002 Update to CMXR-C2 V1.1 1205a 2012-04-16
Table of contents
GDCP-CMXR-C2-CS-ES 1205a 5
Table of contents
1. Introduction .......................................................................................................... 8
1.1 Terminology used ................................................................................................ 9
1.2 Additional documents .......................................................................................... 9
2. Safety instructions .............................................................................................. 11
2.1 Using the documentation ................................................................................... 11
2.2 Designated use .................................................................................................. 11
2.3 Qualified personnel ........................................................................................... 12
2.4 Safety instructions for the products ................................................................... 12
2.5 Safety instructions for this manual .................................................................... 12
2.6 Safety instructions for the described product..................................................... 13
3. CMXR CoDeSys integration ................................................................................. 14
3.1 Distribution of tasks between motion and process controllers ........................... 15
3.2 Typical task distribution .................................................................................... 16
3.2.1 Motion controller (RC) ........................................................................ 16
3.2.2 Process controller (PLC)...................................................................... 16
3.3 Communication between process and motion controllers .................................. 16
4. Working with CoDeSys ........................................................................................ 17
4.1 Installation of CoDeSys ...................................................................................... 17
4.2 Installation of the target system ........................................................................ 17
4.3 Communication parameters ............................................................................... 18
4.4 Download .......................................................................................................... 19
4.5 Creating a boot project ...................................................................................... 19
5. Project engineering in FCT .................................................................................. 20
5.1 Saving and project versioning ............................................................................ 20
5.2 Uploading/downloading an FCT project ............................................................. 22
5.3 Creating a CoDeSys project in FCT ...................................................................... 24
5.3.1 “Configuration” page ......................................................................... 24
5.3.2 “CPU parameters” page ..................................................................... 24
5.3.3 “Peripheral modules” page ................................................................ 26
5.3.4 “CoDeSys” page ................................................................................. 27
6. Peripherals ......................................................................................................... 28
6.1 Extension modules, general ............................................................................... 28
6.2 CAN master modules X4/ X6 .............................................................................. 29
Table of contents
6 GDCP-CMXR-C2-CS-EN 1205a
6.3 RS232 serial interface X9 ................................................................................... 30
6.4 Profibus master module..................................................................................... 30
6.5 Profibus slave module ....................................................................................... 31
7. CoDeSys base project .......................................................................................... 32
7.1 RC_OUTPUT_UPDATE function ........................................................................... 32
7.2 RC_INTERFACE program ..................................................................................... 33
7.3 RC_STANDALONE program ................................................................................ 33
7.4 MotionTask ....................................................................................................... 34
7.5 Global variables ................................................................................................. 35
7.5.1 RcInterface: “Variables” register ........................................................ 36
7.5.2 RcInterface: Message buffer ............................................................... 36
7.5.3 RcInterface: Instance variables ........................................................... 37
7.5.4 RC output variables ............................................................................ 37
8. Control interface RcInterface............................................................................... 38
8.1 RcInterface.lib library ......................................................................................... 38
8.2 Visualisation modules in RcInterface.lib ............................................................ 38
8.3 Access to the message system ........................................................................... 40
8.3.1 Functions provided ............................................................................. 41
8.3.2 The RcIfMsgBuffer message buffer ..................................................... 41
8.3.3 Message key ...................................................................................... 41
8.3.4 Component number ............................................................................ 42
8.3.5 Message classes ................................................................................ 42
8.3.6 Message number ................................................................................ 42
8.3.7 Instance number ................................................................................ 42
8.3.8 Time stamp ........................................................................................ 42
8.3.9 Message text ...................................................................................... 42
8.3.10 Language setting ................................................................................ 43
8.3.11 Configuring user-defined messages in FCT ......................................... 43
8.3.12 Editing the messages outside FCT ...................................................... 44
8.4 Plc_To_Rc/Rc_To_Plc variables register ............................................................. 44
8.4.1 Basic data types ................................................................................. 44
8.4.2 Complex data types ............................................................................ 44
8.5 Error messages in RcInterface.lib ....................................................................... 45
9. RcInterface.lib library description ....................................................................... 46
9.1 Function overview .............................................................................................. 46
9.2 Module overview ............................................................................................... 47
9.2.1 Handheld terminal CDSA .................................................................... 47
9.2.2 Robot global ....................................................................................... 47
9.2.3 Robot local ......................................................................................... 48
Table of contents
GDCP-CMXR-C2-CS-ES 1205a 7
9.3 Handheld terminal/CDSA modules .................................................................... 48
9.3.1 Handheld terminal data, DCSAIfGetKeys ............................................. 48
9.3.2 Handheld terminal process LED, CDSAIfSetProcessLed ....................... 49
9.4 Robot global modules ........................................................................................ 51
9.4.1 Initialisation and update, RcIfRobotUpdateGlobal .............................. 51
9.4.2 Reading the message buffer, RcIfMsgRead ......................................... 51
9.4.3 Erasing the message buffer, RcIfMsgQuit ........................................... 53
9.4.4 Initiating a message, RcIfMsgSet ........................................................ 54
9.4.5 Access to axis positions, AxisPos and CartPos .................................... 56
9.5 Robot local modules .......................................................................................... 59
9.5.1 Update, RcIfRobotUpdateLocal ........................................................... 59
9.5.2 Modes, RcIfModeControl .................................................................... 60
9.5.3 Control sovereignty, RcIfWriteAccess .................................................. 63
9.5.4 Kinematic data, RcIfRobotData ........................................................... 65
9.5.5 Activation of reference systems and tools, RcIfSetRefSys and RcIfSetTool .................................................................................. 71
9.5.6 Manual movement, RcIfJogControl ...................................................... 73
9.5.7 Override, RcIfOverride ........................................................................ 77
9.5.8 Program control, RcIfProgramControl_V2 ........................................... 79
9.5.9 Sequence diagram ............................................................................. 83
A. Appendix ............................................................................................................. 84
A.1 Description of important functional sequences .................................................. 84
A.1.1 Obtain control sovereignty ................................................................. 84
A.1.2 Ensure motion controller is ready to operate ...................................... 84
A.1.3 Release motion controller drives ........................................................ 85
A.1.4 Starting the program .......................................................................... 86
A.1.5 Stopping the program ........................................................................ 86
A.1.6 Unloading the program....................................................................... 86
A.1.7 ProgHold function .............................................................................. 87
A.2 Application support libraries .............................................................................. 88
A.2.1 RcTracking.lib (CMXR-C2 only) ............................................................ 88
A.2.2 Festo_Motion.lib (CoDeSys general) ................................................... 88
A.2.3 PartDetector.lib (CoDeSys general) .................................................... 88
A.2.4 Festo_CameraControl.lib (CoDeSys general) ....................................... 88
1. Introduction
8 GDCP-CMXR-C2-CS-EN 1205a
1. Introduction
The multi-axis controller CMXR-C2, in addition to the motion control, has an integrated PLC in accordance with CoDeSys V2.3. This integrated PLC, hereafter also called process controller, controls the motion control.
This document describes the interface between the motion controller and the process controller.
The performance and thus the functional support is delineated. The performance of the relevant CMXR control system is set out in the overview in the CMXR system manual.
Fig. 1.1 Festo multi-axis control system CMXR-C2 Festo handheld terminal CDSA-D1-VX
1. Introduction
GDCP-CMXR-C2-CS-ES 1205a 9
1.1 Terminology used
Designation Meaning
Central control unit Basic unit of the multi-axis control system CMXR
Multi-axis control system Central control unit with connected peripheral modules
Memory card Compact Flash Card CF Type I
FTL Festo Teach Language, motion-based programming language for the multi-
axis control system CMXR
TCP Tool Center Point
DriveBus Channel of communication between the multi-axis control system CMXR
and Festo motor controllers, based on CANopen DS402
Festo Configuration Tool (FCT) Parameterisation and commissioning software for Festo drives
FCT PlugIn Software module for a particular device in the Festo Configuration Tool
(FCT)
Handheld terminal CDSA-D1-VX as commissioning and operator unit
CoDeSys PLC programming software for control platforms complying with IEC61131
RC Robotic controller, motion controller
PLC Programmable logic controller, process controller
RC interface, RcIf Interface between process and motion controllers
Tracking Tracking of moving objects
CoDeSys base project CoDeSys project template, created by FCT as an introduction to the
programming
CDSA emulation Emulation of the functions of the handheld terminal on a PC
1.2 Additional documents
The total functionality of the multi-axis control system CMXR-C2 is described in the following documents:
Part No. Name Contents
571687 GDCP−CMXR−C2−SY-DE System manual
571693 GDCP−CMXR−C2−HW−DE Hardware description of the CMXR-C2
560315 GDCP−CMXR−SW-DE Base programming of the CMXR family
571705 GDCP−CMXR−C2-ST−DE Special programming instructions for tracking
571699 GDCP−CMXR−C2−CS−DE Programming under CoDeSys
1. Introduction
10 GDCP-CMXR-C2-CS-EN 1205a
The operator unit CDSA-D1-VX also has 2 documents available:
Part No. Name Contents
560333 GDCP-CDSA-SY-DE System manual for operator unit CDSA
560339 GDCP-CDSA-SW-DE CDSA software manual
These documents are available in 6 languages: DE, EN, ES, FR, IT and SV. See brief operating instructions GDSP−CMXR−C2−SY−ML.
2. Safety instructions
GDCP-CMXR-C2-CS-ES 1205a 11
2. Safety instructions
2.1 Using the documentation
This document is intended for users and programmers of robots that work in conjunction with the Festo CMXR system. There is a training induction programme for the operation and programming. Appropriate personnel training is a requirement.
2.2 Designated use
Warning
The Festo CMXR system is not intended for safety-related control tasks (e.g.: shutdown in emergency or monitoring reduced speeds).
The Festo CMXR system conforms only to category B of EN13849-1 and is thus not suitable for the implementation of safety functions for the protection of personnel. Additional external protective measures that ensure the safe operating condition of the entire system even in the event of a malfunction must be adopted for safety-related control tasks or for the safety of personnel.
Festo accepts no liability for any damage resulting from non-compliance with the warning
instructions in these operating instructions.
Note
The safety instructions in chapter 2.3 ff. must be read through completely prior to commissioning.
If the documentation is not clearly understood in this language, please inform the supplier.
Fault-free and reliable operation of the control system depends on proper and professional transportation, storage, assembly and installation as well as on careful operation and maintenance.
2. Safety instructions
12 GDCP-CMXR-C2-CS-EN 1205a
2.3 Qualified personnel
Note
Only trained and qualified personnel should be allowed to handle the electrical systems.
2.4 Safety instructions for the products
Warning
DANGER!
The applicable regulations on special waste must be observed when disposing of the batteries.
Although batteries have a low voltage, they can give off enough current in a short circuit to cause combustible materials to ignite. They must not, therefore, be disposed of together with conductive materials (such as metal chips, wire wool contaminated with oil etc.).
ESD
Electrostatically sensitive devices: Inappropriate handling can result in damage to components.
Warning
DANGER!
Dangerous movements!
Danger of death, serious bodily injury or material damage due to unintentional movement of the axes!
2.5 Safety instructions for this manual
Warning
DANGER!
Considerable material damage and personal injury can occur if these instructions are not observed.
Caution
Failure to comply can result in severe material damage.
2. Safety instructions
GDCP-CMXR-C2-CS-ES 1205a 13
2.6 Safety instructions for the described product
Warning
DANGER!
Danger of death due to insufficient EMERGENCY STOP devices!
Emergency stop devices must remain operational and accessible in all operating modes of the system. Unlocking the EMERGENCY STOP device must not cause an uncontrolled restart of the system!
First check the EMERGENCY STOP chain, then switch on!
Warning
DANGER!
Danger to personnel and equipment!
Test every new program before commissioning the system!
Warning
DANGER!
Retrofittings and modifications may impair the safety of the system!
The consequences of this could be personal injury, material damage or damage to the environment. Possible retrofittings or modifications to the system with component parts from external manufacturers must therefore be approved by Festo.
Warning
DANGER!
Dangerous voltage!
Unless otherwise specified, maintenance work must always be carried out with the system switched off! At the same time, the system must be protected against being restarted again by unauthorised persons or unintentionally.
Any measuring or test work required on the system must be carried out by expert electrical technicians.
Caution
Only spare parts approved by Festo may be used.
3. CMXR CoDeSys integration
14 GDCP-CMXR-C2-CS-EN 1205a
3. CMXR CoDeSys integration The multi-axis control system CMXR-C2 has an internal PLC based on CoDeSys V 2.3. The PLC is a software package that runs on the same processor as the motion controller.
The PLC is used to integrate additional peripherals, e.g. operator controls and displays or a vision system. Other functions include Ethernet communication with another control system or PLC programs for corresponding applications.
Note
Initialising the Compact Flash card using the Festo Configuration Tool (FCT) creates the entire software for the motion and process controllers in a single operation.
Note
The software for the process controller is programmed using the CoDeSys package from Festo. An executable PLC base project is also created by the FCT and must be loaded to the controller by the user as a boot project.
In order to design efficient application programs, there is a variable interface between the motion and process controllers. For example, this enables the motion controller to be actuated, variables for the FTL program to be exchanged or to be exchanged synchron-
ously with the motion task information, e.g. for tracking applications.
Fig. 3.1 Integration of PLC and RC in CMXR
Motion controller
(RC)
Process controller (CoDeSys SPS)
Kinematic drives
Process peripherals
CMXR
RcInterface
3. CMXR CoDeSys integration
GDCP-CMXR-C2-CS-ES 1205a 15
3.1 Distribution of tasks between motion and process controllers
To make effective use of the multi-axis control system CMXR-C2, it is important to under-stand the system philosophy and the associated distribution of tasks between the motion and process controllers.
The process controller (PLC) is at a higher level than the motion controller (RC), i.e. an executable PLC project is a prerequisite for using the motion controller. For more details, refer to chapter 4. Fehler! Verwenden Sie die Registerkarte 'Start', um Titolo 1 dem Text zuzuweisen, der hier angezeigt werden soll.
When deciding whether a task is to be performed by the motion or the process controller,
it is important to be familiar with the operating methods of the two controllers. While the PLC processes its programs cyclically, the RC executes its programs line by line and waits until each command has been processed. Furthermore, it is important to note that on the RC the precalculation of movement commands processes certain commands “in advance” and therefore it is not always possible to predict the processing time.
Certain special features of the external interfaces also need to be taken into account, e.g. Ethernet, CAN and the peripheral modules. While some peripheral devices are assigned to a fixed part of the control system (e.g. the process controller), others such as digital outputs are assigned to one or the other part of the control system. Some of these special features are explained below.
Caution
If the motion controller (RC) is waiting for an input, processing pauses at this line until the condition is met.
Note
More special features of FTL programming can be found in the programming manual.
3. CMXR CoDeSys integration
16 GDCP-CMXR-C2-CS-EN 1205a
3.2 Typical task distribution
3.2.1 Motion controller (RC)
FTL programming
Teach-in
Actuation of all kinematic drives and associated auxiliary drives
Actuation of all inputs and outputs needed, e.g. for gripping
Using the handheld terminal
3.2.2 Process controller (PLC)
Programming based on CoDeSys V2.3
Actuation of any additional auxiliary assemblies, e.g. pumps or conveyors
Higher-level application programming, e.g. communication with upstream and downstream cell units
3.3 Communication between process and motion controllers
As both controllers run on the same microprocessor, high-speed data exchange is possible using shared memory. In order to be able to guarantee a predictable system performance, this memory is specified by the system and is dynamically expandable.
This communication interface is referred to as the “RcInterface" and exchanges control and status signals, as well as variables. The RcInterface is implemented in CoDeSys in the RcInterface.lib library and can be accessed via the functional modules for the library or their global variables.
4. Working with CoDeSys
GDCP-CMXR-C2-CS-ES 1205a 17
4. Working with CoDeSys Because peripheral modules can be used in both the RC and the PLC, the hardware configuration not only has to be saved in the RC but also transferred to the PLC project. As a result, a PLC program is always running on the controller at the same time. The peripheral modules are transferred from the FCT to the CoDeSys project.
Because peripheral modules can be used in both the RC and the PLC, the hardware confi-guration not only has to be saved in the RC but also transferred to the PLC project. As a re-sult, a PLC program is always running on the controller at the same time. The peripheral modules are transferred from the FCT to the CoDeSys project at the push of a button.
Note
The hardware configuration must be transferred from the FCT to the CoDeSys project.
Caution
The handling of CoDeSys projects in conjunction with the CMXR-C2 differs from other controllers using CoDeSys from Festo. Follow the correct sequence of work in order to avoid inconsistent data.
4.1 Installation of CoDeSys
Before the FCT plug-in for the CMXR can be installed, CoDeSys provided by Festo must
already be installed.
Note
Use of the CoDeSys version available from Festo is necessary to work correctly with the CMXR.
4.2 Installation of the target system
Each firmware design is assigned to a versioned target. This enables projects with
different firmware versions to be designed and handled.
Note
The target is added manually via the CoDeSys function “Install Target” of the CoDeSys environment.
4. Working with CoDeSys
18 GDCP-CMXR-C2-CS-EN 1205a
4.3 Communication parameters
To use the CMXR-C2 control system online under CoDeSys, the communication parameters must be adjusted to match the control system. If the CoDeSys project was started via the FCT, the access path stored in the FCT is already set.
The control configuration in CoDeSys provides a search function to find particular controllers.
Note
The results of the search function can be influenced by the firewall settings.
Caution
If there are several controllers in the network, it is essential to ensure that the data is loaded to the correct controller.
Checking the communication parameters is mandatory.
4. Working with CoDeSys
GDCP-CMXR-C2-CS-ES 1205a 19
4.4 Download
The PLC project can be stored on the CMXR in a download through FCT. But to execute the PLC project on the controller, a download is necessary through CoDeSys itself.
Note
A PLC project must always be loaded by the user onto the controller via CoDeSys.
4.5 Creating a boot project
For the controller to automatically execute and start the loaded project when it restarts, it must be stored on the controller as the boot project. A boot project must be explicitly created by the user.
Note
The user must always a load a boot project to the controller using CoDeSys.
5. Project engineering in FCT
20 GDCP-CMXR-C2-CS-EN 1205a
5. Project engineering in FCT
The Festo Configuration Tool is the starting point for every application in the multi-axis control system CMXR-C2. It offers the option of storing all data of an application in one project file; this differentiates the CMXR controller from other control systems with CoDeSys from Festo. With the CMXR, the CoDeSys project is stored and administered within the FCT project and should always be started from the FCT. Operation and handling of the CoDeSys software is guaranteed in the way familiar from 3S, but the FCT intervenes in the control configuration of the CoDeSys project.
Special features when using CoDeSys and CMXR-C2:
- The control configuration is created in the FCT and transferred to CoDeSys.
- The CoDeSys project is started from the FCT.
- The CoDeSys project is stored in the FCT project.
- The RcInterface is contained in the CoDeSys base project.
As usual, project planning is performed from top to bottom in the FCT. Unlike with the CMXR-C1 (without CoDeSys), here the control interface is always CoDeSys, which means that a connection to a higher-order controller of the CMXR-C2 must always be implemented using the integrated PLC and its access routes.
Note
The device configuration in the FCT must be transferred to the CoDeSys control configuration.
Note
The CoDeSys project is always started from FCT.
5.1 Saving and project versioning
In order to save intermediate project versions and set the version, we recommend using the menu Project --> Save As ... Intermediate versions in the FCT.
Selecting Project --> Properties in the menu enables a project history to be stored.
5. Project engineering in FCT
GDCP-CMXR-C2-CS-ES 1205a 21
Note
To keep the configured project data from FTL programs and the CoDeSys project consistent, we recommend using the memory and archiving function in the FCT.
5. Project engineering in FCT
22 GDCP-CMXR-C2-CS-EN 1205a
5.2 Uploading/downloading an FCT project
The upload/download from FCT transfers the CMXR control configuration, FTL projects and - if required - the CoDeSys source file to the target system. Transferring the CoDeSys source file enables the CoDeSys project to be stored on the controller, while the actual project download or the creation of a boot project must be called up in the CoDeSys software itself.
Note
To have the possibility to use the FCT to load the entire CMXR project from the controller in an upload, it is important to store the CoDeSys project on the controller. This enables all project data to be restored when uploading to an FCT project.
5. Project engineering in FCT
GDCP-CMXR-C2-CS-ES 1205a 23
Note
CoDeSys also enables you to save the project to the controller yourself. This mechanism is also available, but is not supported when reading back from the FCT.
Caution
When uploading the CoDeSys project from the controller, the current project in the FCT is overwritten and is irretrievably lost.
Caution
Certain files, e.g. the associated libraries, visualisation bitmaps, configuration files etc., are not saved on the controller. To ensure that all the data for the project is saved, these files must be saved separately.
5. Project engineering in FCT
24 GDCP-CMXR-C2-CS-EN 1205a
5.3 Creating a CoDeSys project in FCT
The following steps explain how a CoDeSys project is created in the FCT and which configuration entries are relevant for the process controller.
5.3.1 “Configuration” page
The available hardware is configured on the “Configuration” page.
5.3.2 “CPU parameters” page
The IP addresses of the X5 and X7 Ethernet interfaces are configured here. As supplied, only the X7 port is active with a default setting. For the initial configuration, we recommend parameterising the network parameters to the required settings, either using a Flash card reader or an Ethernet patch cable.
The X7 connection is intended for global networks with a gateway.
The X5 connection is intended for a local network with no gateway and must be activated before use.
5. Project engineering in FCT
GDCP-CMXR-C2-CS-ES 1205a 25
Note
The use of an Ethernet switch is recommended for minimising the load for the Ethernet network.
Note
The CMXR-C2 multi-axis control system is not DHCP-capable.
Caution
X5 and X7 may not be located in the same network
5. Project engineering in FCT
26 GDCP-CMXR-C2-CS-EN 1205a
5.3.3 “Peripheral modules” page
The peripheral modules attached to the “Configuration” page, except for the Profibus master module, are also parameterised there. In CoDeSys, the variables are used either directly using the name assigned in the FCT to access system variables or directly using the input or output address.
By default, the outputs are assigned to the PLC; robotics digital outputs (RC) can be assigned by setting a checkbox (column RC).
Note
After every change to the configuration tab in the FCT, the control configuration must be updated in CoDeSys, see chapter 3
5. Project engineering in FCT
GDCP-CMXR-C2-CS-ES 1205a 27
5.3.4 “CoDeSys” page
The device configuration can now be transferred to the CoDeSys project on the “CoDeSys” page. The CoDeSys project status indicated whether an update is required. An update is only possible if the CoDeSys project is not open. Updating the device configuration has no influence on the PLC program in the CoDeSys and can be repeated at any time.
For a new project, the “Start CoDeSys” button is used to start the preconfigured CoDeSys base project, in which you can then work. Select Component --> CoDeSys in the menu to reset the project to its original status.
Caution
If the CoDeSys project is reset, all changes in the project are lost.
Caution
If the CoDeSys control configuration is updated via FCT, the addresses are also recalculated; manual changes are lost thereby and should therefore be avoided.
6. Peripherals
28 GDCP-CMXR-C2-CS-EN 1205a
6. Peripherals
The multi-axis controller CMXR-C2 permits connection of the most varied of peripherals through different modules. The CMXR central control unit has already integrated some modules and can be extended via extension modules.
Note
Also observe the information from the system manual.
6.1 Extension modules, general
Each extension module is added to the central control unit under FCT and can be configured in the “Peripheral modules” menu. As the default configuration, the first module is pre-assigned through an I/O card with fixed system variables.
In principle, all inputs and outputs are assigned to the CoDeSys peripheral modules. Read access to the input variables of the modules is also possible in the RC for most modules; write access to output variables from the RC can be activated with a check mark, if necessary.
Note
The names used within the module configuration are available as system variables under CoDeSys and must be unique.
Note
Write access to the outputs must be assigned either to the PLC or the RC.
6. Peripherals
GDCP-CMXR-C2-CS-ES 1205a 29
Note
Configuration and use of the following interfaces take place under CoDeSys:
- X3/ X9 serial interface
- X4 CAN, peripherals
- CECX-F-PB-V1 Profibus master
The configuration of the Profibus slave CECX-F-PB-S-V1 takes place in FCT.
6.2 CAN master modules X4/ X6
The multi-axis control system CMXR-C2 is equipped with two CAN master connections, where - the connection X6 is permanently assigned to the motion control, and
- the connection X4 is permanently assigned to the process control.
While the settings for X4 can be freely selected, X6 is automatically set to the “Festo DriveBus” settings. The X4 master can be found in the CoDeSys control configuration; the connected CAN slave devices are also configured there.
There is the possibility to reconfigure the CAN master into a CAN slave to operate the CMXR as a CAN device in a CAN network.
6. Peripherals
30 GDCP-CMXR-C2-CS-EN 1205a
Note
Further EDS configuration files can be added in the directory …\FESTO\CoDeSys V2.3\Targets\Festo\CMXR-C2\io. Newly added files become active only after a restart of CoDeSys.
6.3 RS232 serial interface X9
The serial interface X9 is assigned to the process controller and is accessed from CoDeSys using the SysLibCom.lib and SysLibComEx.lib libraries. A more precise description on the use of the serial interface can be found in the Help for the respective library functions.
6.4 Profibus master module
A Profibus network can be operated on the CMXR with the extension module CECX-F-PB-V1. The card is attached in the FCT of the central control unit, and all other settings are then made under CoDeSys.
Note
Further GSD configuration files can be added in the directory …\FESTO\CoDeSys V2.3\Targets\Festo\CMXR-C2\io. Newly added files become active only after a restart of CoDeSys.
6. Peripherals
GDCP-CMXR-C2-CS-ES 1205a 31
6.5 Profibus slave module
A Profibus slave card is available for the multi-axis control system CMXR-C2, which can only be assigned to the process controller. With this card, the CMXR can be integrated as
a Profibus slave device into a Profibus network. The Profibus address must be set both via the dip switches on the card itself and through the entry for the station address in the FCT.
The module permits data exchange of 12, 32 or 64 bytes of freely selectable cyclic data.
When performing configuration in a Profibus network, note that the first two slots must be assigned to an “empty” module.
Further information on use of the CECX-F-PB-S-V1 appears in the documentation for the module.
7. CoDeSys base project
32 GDCP-CMXR-C2-CS-EN 1205a
7. CoDeSys base project The CMXR CoDeSys base project is always the starting point for an application-specific PLC program. If the CoDeSys project was created by the FCT, the actual system conditions such as peripheral modules or the functionality of the communication interface between the RC and the PLC are already integrated. The communication interface (RcInterface, RcIf) is represented by the RcInterface.lib library. This library is already incorporated in the project.
Components of the CMXR CoDeSys base project:
- RC_OUTPUT_UPDATE(FUN)
- RC_INTERFACE(PRG)
- RC_STANDALONE(PRG)
- MotionTask
- Global variables
- System variables
7.1 RC_OUTPUT_UPDATE function
The internal RC_OUTPUT_UPDATE function is used to make the outputs of the peripheral modules assigned to the RC visible in the PLC.
See also chapter 6 Peripherals.
7. CoDeSys base project
GDCP-CMXR-C2-CS-ES 1205a 33
Note
The user may not make any changes in the RC_OUTPUT_UPDATE function.
7.2 RC_INTERFACE program
The RC_INTERFACE program contains the call for the RcInterface functional modules. The instances of the modules are created in the global variables. This enables the modules to be used by the application across tasks. The modules are described in more detail in the 8.1 section. To ensure that future expansion of the interface as part of an update does not lead to complications in an existing PLC program, no changes should be made and no
program parts should be added to the program generated by the FCT. To use the modules, the instances of the global variables should have direct access.
Note
The user should not make any changes to the RC_INTERFACE program.
7.3 RC_STANDALONE program
To allow the motion controller to be started, certain signals are necessary, which must
always be transferred by the RcInterface. For historic reasons, the minimum configuration is called “Stand alone”, which essentially means that the multi-axis control system CMXR is controlled without a higher-level PLC, e.g. directly from the handheld terminal. The I/O signals necessary in this case are mapped directly to the first I/O card in the base project. Therefore, in the simplest case no further programming under CoDeSys is required to use the motion controller. The signal description for the stand alone version can either be found in the system manual or in the description of the relevant RcInterface module.
7. CoDeSys base project
34 GDCP-CMXR-C2-CS-EN 1205a
Note
The user can change or delete the RC_STANDALONE CoDeSys program. The user is then responsible for operating the RcInterface.
7.4 MotionTask
In order to execute application programs, e.g. for tracking, on the PLC synchronously with task processing by the motion controller, a so-called “motion timer” is stored in the CoDeSys target system. At this time interval - with a saved value depending on the system - the update and the path planning for the motion controller are executed.
The MotionTask is included in the base project and calls up the RC_INTERFACE program. If it is necessary for the application, it is possible to attach more calls to this task, although
it is important to remember that as many resources as possible should be kept free for the RC.
The following MotionTask settings must be observed:
Name: MotionTask
Priority: 1
Type: External event controlled with the “Motion Timer” event
Watchdog: Should be enabled
Fig. 7.1 Configuration of a task with Motion Timer in the task configuration
7. CoDeSys base project
GDCP-CMXR-C2-CS-ES 1205a 35
Caution
When debugging within the MotionTask, it is essential to note that pausing the task stops setpoint specification. When a movement is in progress, this can result in a jump back to a setpoint of 0 (with no ramp). This can be expected to cause a severe load on the mechanical system.
Application programs that do not necessarily have to run in the MotionTask time slot pattern should be executed in other tasks with low priorities. The CoDeSys target provides other predefined timers for this purpose:
IO Timer 40ms
Phase synchronous, reduced drive timing with 40 ms cycle time.
IO Timer 40ms
Phase synchronous, reduced drive timing with 200 ms cycle time.
In addition to these timers, others can of course be defined. Note that none of the tasks may be faster or have a higher priority than the MotionTask.
Caution
If tasks are created in CoDeSys that are faster or have a higher priority than the MotionTask, the system can become unstable. In the worst case, the motion controller update may no longer be executed cyclically. Thus, reliable operation of the kinematics is no longer ensure. This may also result in setpoint jumps and thus to a severe load on the mechanical system.
7.5 Global variables
In the base project, global RcInterface variables are saved, which the system provides and can be used by the application.
The global variables for the RcInterface can be found in the global variables in RcInterface.lib in CoDeSys.
7. CoDeSys base project
36 GDCP-CMXR-C2-CS-EN 1205a
7.5.1 RcInterface: “Variables” register
Representation in the PLC
Representation in the RC (TeachView)
The RcIfReg variable accesses memory areas that can be written or read by the PLC. These array variables for the different master data types can be used to exchange freely definable data between the RC and the PLC.
RcToPlc --> From the motion controller to the process controller (PLC read only)
PlcToRc --> From the process controller to the motion controller (PLC write only)
The complex data types CartPos and AxisPos are stored in the registers described here, but are not exchanged cyclically like the others, they are merely transferred on an index by index basis by the relevant functional modules from RcInterface.lib.
See also chapter 9.4.5 Access to axis positions, AxisPos and CartPos
Note
For performance reasons, the variables for the complex data types CartPos and AxisPos can only be read or written by the relevant modules from RcInterface.lib.
7.5.2 RcInterface: Message buffer
The RcInterface provides a memory area in which a module from the library can be used to import the message buffer from the RC.
7. CoDeSys base project
GDCP-CMXR-C2-CS-ES 1205a 37
See also chapter 8.3 Access to the message system
7.5.3 RcInterface: Instance variables
The functional modules from RcInterface.lib are already called up in the RC_INTERFACE program. The modules are accessed via their instances declared as global.
7.5.4 RC output variables
After updating the control configuration to CoDeSys, each output assigned to the RC can be found in the global variables under RC_OUTPUT_VARIABLES.
Note
Only read access to the outputs assigned to the RC is possible.
8. Control interface RcInterface
38 GDCP-CMXR-C2-CS-EN 1205a
8. Control interface RcInterface The control interface via the internal PLC enables the RC to be controlled from the PLC, so that the robot can be controlled from the application. The control signals can be processed directly in the PLC or forwarded to a higher-level controller using the I/O, Profibus, Can bus or Ethernet peripheral modules.
The relevant modules are stored in a CoDeSys library (RcInterface.lib) and are already instanced in the CMXR CoDeSys base project. The functions of the library modules are accessed using the predefined global instance variables for the individual modules.
8.1 RcInterface.lib library
The RcInterface.lib library provides a range of functional modules for actuation of the motion controller. The library consists of four subfolders, which divided the implemented functionality into areas.
- Internal
Internal functions that are not used by the user.
- CDSA
Function blocks for interaction with the handheld terminal.
- RobotGlobal
Global robot functional modules may only be instanced and called up once on the controller.
- RobotLocal
Local robot functional modules may only be instanced and called up once for each robot. The robot index is currently limited to zero.
Note
The modules are used through the predefined instance variables, which can be found in the global variables under (RC_INTERFACE_INSTANCES) in the CoDeSys base project.
8.2 Visualisation modules in RcInterface.lib
Each module in the library is supported with a visualisation. This makes it possible to quickly and easily become familiar with the varied functions of the interface.
8. Control interface RcInterface
GDCP-CMXR-C2-CS-ES 1205a 39
“Position holders” are used to transfer the instance of the relevant functional module to the visualisation elements.
The visualisations contained in the CoDeSys base project can be used to operate the RcInterface with no further programming. The visualisation objects are combined into
logical groups and the operation of the visualisation elements can be derived from the description of the individual functional modules.
8. Control interface RcInterface
40 GDCP-CMXR-C2-CS-EN 1205a
Note
The visualisations belonging to the RC_Interface program are already saved in the CoDeSys base project.
Note
Further information on the use of the CoDeSys visualisation can be found in the CoDeSys Help.
8.3 Access to the message system
The RC side of the multi-axis control system CMXR-C2 has a message system, the content
of which can be viewed, e.g. using the handheld terminal CDSA. Because this message system is stored in the RC, if the messages are to be used in the PLC they must be trans-ferred to the PLC message buffer provided.
Although the message buffer in the PLC can be found as a global variable in RcInterface.lib, for performance reasons reading of the messages must be triggered from the application and thus is left to the user.
Note
The message system is only described here from the PLC per-spective. Further information can be found in the programming manual for FTL basis GFCP-CMXR-SW-...
Note
Each message is automatically assigned a component number when it is generated. This can be used to determine the area of the multi-axis control system CMXR from which the alarm was initiated. The user-defined messages from the PLC have the component number 100.
Note
If at least one error is active in this message buffer, if possible the motion controller automatically stops the kinematic axes along the original path.
8. Control interface RcInterface
GDCP-CMXR-C2-CS-ES 1205a 41
Note
The internal message system in the CoDeSys V2.3 PLC is not linked to the message system in the motion controller. The use of this alarm system does not therefore generate any representation on the handheld terminal and no automatic stop of the movement in case of an error. To influence the motion controller, the message modules from RcInterface.lib must be used.
8.3.1 Functions provided
The following modules from the RcInterface.lib library are available for access to the RC message buffer.
- RcIfMsgRead
- RcIfMsgQuit
- RcIfMsgSet
Details of how the modules are used can be found in the relevant module description, see also chapter 9.4 Robot global modules.
8.3.2 The RcIfMsgBuffer message buffer
The message buffer is saved on the PLC as a global array and can be updated by the RcIfMsgRead module. The array can be found in the global variables in RcInterface.lib and has a size of 256 elements of the data type TRcIfMsg.
Variable Type Meaning
MsgClass DINT Message class
MsgNr DINT Message number
CompNr DINT Component number
InstNr DINT Instance number
TimeStamp DATE_AND_TIME Time stamp
Text STRING(255) Message text
Table 8.1 Data type TRcIfMsg
8.3.3 Message key
The message key comprises the component number, message number and instance number (e.g. component 2000, message 200, instance: 17 results in message key 2000_200_17).
8. Control interface RcInterface
42 GDCP-CMXR-C2-CS-EN 1205a
8.3.4 Component number
The component number indicates the component from which the message was initiated. For the RcIfMsgSet module, i.e. messages from the PLC, the component number 100 has been specified, in other words all messages initiated on the PLC using this module can be found under the component number 100 in the message buffer.
8.3.5 Message classes In order to distinguish their treatment, messages are divided into 32 classes. The classification of messages using classes supports the user in programming the response to messages. Defined responses do not have to be individually programmed for each message but for can be programmed for classes.
The classes 7 to 9 must be used for programming under CoDeSys: Class Description Response
7 Error Robot is stopped.
8 Warning A warning is output and the robot continues running.
9 Information Information is output and the robot continues running.
The messages of class 9 are not displayed on the CDSA when the standard settings are used. The message is displayed through a change to the filter setting on the CDSA.
8.3.6 Message number
The message number specifies which user-defined message text from the messages configured in the FCT is to be initiated.
8.3.7 Instance number
An instance number can be included with each message when initiated (with the RcIfMsgSet function). This instance number allows additional differentiation of messages with the same message key. The instance number can also be a “handle” and thus negative. In the message buffer, messages with the same message key and different instance numbers are treated as different and as identical if they have the same instance number.
8.3.8 Time stamp
The time stamp of the message is stored in the buffer using the standard CoDeSys data type DATE_AND_TIME. Further information on the DATE_AND_TIME data type can be found in the CoDeSys Help.
8.3.9 Message text
The user-defined message text is configured in the FCT. If the character string %1,%2,%3, or %4 is entered in the message text, this entry is replaced by the relevant parameter included with the message using the RcIfMsgSet module.
The string can have a length of 255 characters.
8. Control interface RcInterface
GDCP-CMXR-C2-CS-ES 1205a 43
8.3.10 Language setting
It is possible to set the language of the message buffer. When reading the buffer, the desired language can be selected using ISO notation (e.g. “de", “en"). The languages supported by the system are set out in the system manual.
8.3.11 Configuring user-defined messages in FCT
The CMXR message system enables messages pre-defined in the FCT to be triggered by the PLC (see also chapter 9.4.4).
The messages in the desired language can be found by selecting “User messages” in the menu. If necessary, texts can be translated into another language in a 2-line view.
Up to 4 parameters and an instance number can be included with each message, which are then included when initiating the message and entered at the relevant point in the message text. The position holder for the 4 parameters is inserted in the message using the character string %1, %2,%3 and %4.
The alarm messages can also be parameters in the form of a character string with a maximum length of 16 characters each.
Extended parameterisation:
%1 Output of an integer value
%1b Output of a binary integer value
%1x Output of a hexadecimal integer value
%1f3 Output of a real number, max. 9 decimal places
%n Output of the instance number
Note
In order to be able to initiate the new messages parameterised, the controller must be restarted.
8. Control interface RcInterface
44 GDCP-CMXR-C2-CS-EN 1205a
8.3.12 Editing the messages outside FCT
It may be necessary to edit the list of messages outside FCT, e.g. to send the defined messages to a translation agency. Therefore, it is possible to create a copy of the controller Flash card on the PC using the “Download to Directory” function. The relevant language files for the messages can then be accessed in the \application\control\text folder. The “Upload from Directory” command can then be used to transfer the message texts back to the FCT.
8.4 Plc_To_Rc/Rc_To_Plc variables register
The system allows variables to be exchanged between the RC and the PLC. These global
variables are already saved in RcInterface.lib and can be used directly in the program.
8.4.1 Basic data types
The basic data types are automatically updated by the system and can be used in the program without additional declaration. Only the transfer direction of the relevant variable has to be taken into account.
The following variables are each available as an array [0...255]: - Bool: RcIfReg.RcToPlc_Bool[] / RcIfReg.PlcToRc_Bool[]
- DWord: RcIfReg.RcToPlc_DWord[] / RcIfReg.PlcToRc_DWord[]
- Dint : RcIfReg.RcToPlc_Dint[]/RcIfReg.PlcToRc_Dint[]
- Real: RcIfReg.RcToPlc_Real[] / RcIfReg.PlcToRc_Real[]
8.4.2 Complex data types
The complex data types are not automatically updated for performance reasons. This transfer must be triggered using the RcIfRegAxisPos and RcIfRegCartPos modules; for use of the modules, refer to chapter 9.4.5.
The following variables are each available as an array [0...255]: - AxisPos : RcIfReg.RcToPlc_AxisPos[] / RcIfReg.PlcToRc_AxisPos[]
- CartPos: RcIfReg.RcToPlc_CartPos[] / RcIfReg.PlcToRc_CartPos []
Note
In the program RC_INTERFACE, the modules RcIfRegAxisPos and RcIfRegCartPos are already called up cyclically. The variables AxisPos and CartPos can also be used directly.
8. Control interface RcInterface
GDCP-CMXR-C2-CS-ES 1205a 45
8.5 Error messages in RcInterface.lib
If necessary, each module in the RcInterface library – has – an ErrorID output of the data type TRcIfErrorID. The description of the error message can be found in the global constants in RcInterface.lib.
9. RcInterface.lib library description
46 GDCP-CMXR-C2-CS-EN 1205a
9. RcInterface.lib library description
9.1 Function overview
Here is an overview of the most important functions:
Function Module name Chapter
Robot status RcIfRobotData 9.5.4
Emergency Stop Setting the emergency stop signal RcIfModeControl 9.5.2
Mode selection Manual override/automatic mode RcIfModeControl 9.5.2
Release drives in automatic mode RcIfModeControl 9.5.2
Release drives in manual override mode RcIfModeControl 9.5.2
Obtain control sovereignty RcIfWriteAccess 9.5.3
Jogging functions RcIfJogControl 9.5.6
Start/stop programs RcIfProgramControl 9.5.8
Set/read override RcIfOverride 9.5.7
Read message buffer RcIfMsgRead 9.4.2
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 47
9.2 Module overview
9.2.1 Handheld terminal CDSA
Structure Module name/instance
name Control
sovereignty required
Description
CDSA CDSAIfGetKeys/
FBCDSAIfGetKeys
- Queries the keys on the handheld terminal
CDSAIfSetProcessLed/
FBCDSAIfSetProcessLed
- Sets the process LEDs on the handheld terminal
9.2.2 Robot global
Structure Module name/instance
name Control
sovereignty required
Description
RobotGlobal RcIfRobotUpdateGlobal/F
BRobotUpdateGlobal
- Update of robot global interface data
RcIfMsgRead/FBMsgRead - Reads the message buffer
RcIfMsgQuit/FBMsgQuit Yes Acknowledges the message buffer
RcIfMsgSet/
FBMsgSet
- Initiates a message from the PLC
RcIfRegAxisPos/
FBRegAxisPos
- Access to the shared axis position array
RcIfRegCartPos/
FBRegCartPos
- Access to the shared Cartesian position array
9. RcInterface.lib library description
48 GDCP-CMXR-C2-CS-EN 1205a
9.2.3 Robot local
Structure Module name/instance
name Control
sovereignty required
Description
RobotLocal RcIfRobotUpdateLocal/F
BRobotUpdateLocal
- Update of robot local interface data
RcIfModeControl/
FBModeControl
- Controller modes
RcIfRobotData/
FBRobotData
- Reads the robot status data
RcIfWriteAccess/
FBWriteAccess
- Control sovereignty management
RcIfOverride/
FBJogControl
Yes Sets the override
RcIfJogControl/
FBJogControl
Yes Jogs the robot in manual override mode
RcIfProgramControl/FBPr
ogramControl
Yes Program control
RcIfSetRefSys/
FBSetRefSys
Yes Sets the reference system
RcIfSetTool/
FBSetTool
Yes Sets the tool
9.3 Handheld terminal/CDSA modules
9.3.1 Handheld terminal data, DCSAIfGetKeys
This module can be used to read the status of the keys on the handheld terminal CDSA. The status TRUE means the key is pressed, FALSE means that the key is not pressed. Each key has a key code, which can be used to access the array that the module returns. The data is output cyclically.
For the status of the JogKey keys to be read, the associated axes/coordinates must be parameterised and the logged in user must have write privileges.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 49
Key Key code Key Key code
F1 1 JogKey1 + 33
F2 2 JogKey2 - 54
Mot 61 JogKey2 + 47
Rob 60 JogKey3 - 56
Jog 59 JogKey3 + 48
F/B 58 JogKey4 - 53
Step 57 JogKey4 + 46
V- 36 JogKey5 - 52
V+ 37 JogKey5 + 45
Start 31 JogKey6 - 51
Stop 49 JogKey6 + 44
JogKey1 - 35 2nd 55
Table 9.1 Key allocation on handheld terminal CDSA-D1
Output variables
Variable Type Meaning
CDSA_Ready BOOL Handheld terminal ready
Keys ARRAY [0..63] OF BOOL Status of keys
Table 9.2 CDSAIfGetKeys module outputs
CDSA_Ready: BOOL
This output indicates that the handheld terminal CDSA is ready. If it is disconnected, the output status is FALSE.
Keys: ARRAY[0..63] OF BOOL
Array containing the status information for the individual keys. The keys are accessed
using the keyboard code, e.g. Key[1] corresponds to the F1 key.
9.3.2 Handheld terminal process LED, CDSAIfSetProcessLed
This functional module enables the LED marked “Process” to be activated on the handheld terminal CDSA. It is possible to actuate only this LED. All other LEDs are managed by the system and actuated accordingly.
9. RcInterface.lib library description
50 GDCP-CMXR-C2-CS-EN 1205a
Input variables
Variable Type Meaning
Execute BOOL Execute command
On BOOL Process LED OFF/ON
Attribute BYTE Attribute for the LED
Table 9.3 CDSAIfSetProcessLED module inputs
Execute: BOOL
Execute command.
On: BOOL
This input switches on the Process LED. The signal must be static.
Attributes: LED attribute
This input can be used used to give the LED an attribute. The following is possible:
Attribute Value Meaning
LedGreen 0 LED illuminated green
LedGreenBlinking 1 LED flashes green
Table 9.4 LED attributes
Output variables
Variable Type Meaning
Done BOOL Handheld terminal ready
Error BOOL Error
Table 9.5 CDSAIfSetProcessLED module outputs
Done: BOOL
Function has been executed.
Error: BOOL
An error occurred during execution of the function.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 51
9.4 Robot global modules
9.4.1 Initialisation and update, RcIfRobotUpdateGlobal
To exchange the data from the robot global function blocks with the RC, the RcIfRobotUpdateGlobal block is called up cyclically in the RC_INTERFACE program.
Output variables
Variable Type Meaning
InitReady BOOL Initialisation completed
Table 9.6 RcIfRobotUpdateGlobal module outputs
InitReady: BOOL
This output indicates that the robot is initialised and the robot global modules are ready for execution.
9.4.2 Reading the message buffer, RcIfMsgRead
The RcIfMsgRead module can be used to read the message buffer for the robotics in the desired language. The message buffer itself is stored as a global array in the system; for further information see chapter 8.3.
Input variables
Variable Type Meaning
Execute BOOL Start of reading
Language String(2) Language selection to ISO 639
Table 9.7 RcIfMsgRead module inputs
9. RcInterface.lib library description
52 GDCP-CMXR-C2-CS-EN 1205a
Execute: BOOL
This input is used to start reading; the input must remain set to TRUE until the process has been completed.
Language: String(2)
This input can be used to read the message buffer in the desired language, based on the language definition to ISO 639. The languages supported by the system are set out in the system manual.
Attribute Meaning
de German
en English
…
Table 9.8 Country symbols to ISO 639
Output variables
Variable Type Meaning
RobotError BOOL Handheld terminal ready
Done BOOL Execution completed with no errors
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.9 RcIfMsgRead module outputs
RobotError: BOOL
This output indicates that there is at least one error in the RC. An error prevents the robot from being released. To delete the error: see RcIfMsgQuit module.
Done: BOOL
Reading of the message buffer completed successfully.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 53
9.4.3 Erasing the message buffer, RcIfMsgQuit
Deleting the message buffer always deletes all current messages. Selective acknowledge-ment of messages is not possible.
Input variables
Variable Type Meaning
Execute BOOL Acknowledge all active messages
Table 9.10 RcIfMsgQuit module inputs
Execute: BOOL
This input is used to acknowledge all active messages of all classes.
Output variables
Variable Type Meaning
Done BOOL Execution completed with no errors
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.11 RcIfMsgQuit module outputs
Done: BOOL
Deleting the message buffer completed successfully.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
54 GDCP-CMXR-C2-CS-EN 1205a
9.4.4 Initiating a message, RcIfMsgSet
The RcIfMsgSet functional module enables predefined messages in the FCT to be initiated from the PLC in the desired language using the corresponding number.
Input variables
Variable Type Meaning
Execute BOOL Execute message initiation
MsgClass DINT Message class
MsgNr DINT Message number (number from the message
list in FCT)
InstNr DINT Instance number
Param1 STRING(16) Parameter 1
Param2 STRING(16) Parameter 2
Param3 STRING(16) Parameter 3
Param4 STRING(16) Parameter 4
Table 9.12 RcIfMsgSet module inputs
Execute: BOOL
Initiates the corresponding message with the transferred parameters.
MsgClass: DINT
See chapter 8.3.5
MsgNr: DINT
See chapter 0
InstNr: DINT
See chapter 8.3.7
Param1..4: STRING(16)
Parameters 1...4 are used to replace the position holders contained in the message text.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 55
Output variables
Variable Type Meaning
Done BOOL Execution completed with no errors
Error Bool Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.13 RcIfMsgSet module outputs
Done: BOOL
Message has been initiated successfully.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
56 GDCP-CMXR-C2-CS-EN 1205a
9.4.5 Access to axis positions, AxisPos and CartPos
The following function blocks can be used to read and describe the complex RcInterface variables from the RcIfReg, AxisPos and CartPos register:
Module FTL variable Meaning
RcIfRegAxisPos plc_AxisPos[0…255] Access to a position variable, type AXISPOS
RcIfRegCartPos plc_CartPos[0…255] Access to a position variable, type CARTPOS
Input variables
Variable Type Meaning
Execute BOOL Activation of the module function
Read BOOL FALSE = write/TRUE = read
Index USINT Number from the variable index
Table 9.14 Access to FTL position variable module inputs
Execute: BOOL
The rising edge at the input is used to execute the function of the module, to read or write the relevant data.
Read: BOOL
The Read input can be used to switch between reading and writing.
Read = False Write (PlcToRc_...)
Read = True Read (RcToPlc_...)
USINT index
All FTL variables are stored in an ARRAY. The index input is the number of the array field
from/to which data is to be read or written. The range of values for the index is 0 to 255 for all modules. The value 0 is the first field in the array for the relevant variable.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 57
Output variables
Variable Type Meaning
Done BOOL Function executed feedback signal
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.15 Access to FTL position variable module outputs
Done: BOOL
The rising edge of the Done output indicates that the function for reading or writing the
value has been executed successfully.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
58 GDCP-CMXR-C2-CS-EN 1205a
Content of TAxisPos data type:
Variable Type Unit of measure Meaning
a1 REAL mm or degrees Axis 1 position
a2 REAL mm or degrees Axis 2 position
a3 REAL mm or degrees Axis 3 position
a4 REAL mm or degrees Axis 4 position
a5 REAL mm or degrees Axis 5 position
a6 REAL mm or degrees Axis 6 position
aux1 REAL mm or degrees Auxiliary axis 1 position
aux2 REAL mm or degrees Auxiliary axis 2 position
aux3 REAL mm or degrees Auxiliary axis 3 position
Table 9.16 Structure of the TAxisPos data type
Content of TCartPos data type:
Variable Type Unit of measure Meaning
x REAL mm Cartesian X position
y REAL mm Cartesian Y position
z REAL mm Cartesian Z position
a REAL Degree Orientation A
b REAL Degree Orientation B
c REAL Degree Orientation C
aux1 REAL mm or degrees Auxiliary axis 1 position
aux2 REAL mm or degrees Auxiliary axis 2 position
aux3 REAL mm or degrees Auxiliary axis 3 position
Table 9.17 Structure of the TCartPos data type
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 59
9.5 Robot local modules
9.5.1 Update, RcIfRobotUpdateLocal
To exchange the data from the robot local function blocks with the RC, the RcIfRobotUpdateLocal module must be called up cyclically. Each kinematics requires a separate update module, with the kinematics addressed using the RobotIndex
Input variables
Variable Type Meaning
RobotIndex DINT Kinematics number
WatchDogTime TIME Time for the watchdog monitoring
Table 9.18 RclfRobotUpdateLocal module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
Output variables
Variable Type Meaning
InitReady BOOL Robot initialised
WatchDogError BOOL Watchdog monitoring triggered
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.19 RcIfRobotUpdateLocal module outputs
InitReady: BOOL
This output indicates that the robot is initialised and the robot local modules are ready for execution.
9. RcInterface.lib library description
60 GDCP-CMXR-C2-CS-EN 1205a
WatchDogError: BOOL
A WatchDogError indicates the RC has not responded in the expected time.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: DINT
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9.5.2 Modes, RcIfModeControl
The RcIfModeControl module is used to activate “Manual” and “Automatic” modes. In
addition, the signals for emergency stop and permission buttons are to be applied here, for example using digital inputs.
Input variables
Variable Type Meaning
RobotIndex DINT Kinematics number
EmergencyStop BOOL Emergency off
EnablingSwitch BOOL Handheld terminal permission button
DrivesOnAuto BOOL Drives on in automatic
SetManualMode BOOL Activate manual mode
SetAutoMode BOOL Activate automatic mode
Table 9.20 RcIfModeControl module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
EmergencyStop: BOOL
The EmergencyStop input is the used for the emergency stop signal. It should be applied inverted. This means: TRUE = No emergency stop, FALSE = Emergency stop. If the emergency stop condition is present, all axes are stopped with the maximum dynamic values.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 61
EnablingSwitch: BOOL
This input must be applied when moving the axes or starting a program in “Manual” mode.
DrivesOnAuto: BOOL
Switch on the drives in “Automatic” mode.
SetManualMode: BOOL, SetAutoMode: BOOL
These two signals are used to activate the modes. The two signals may not both have the value TRUE or FALSE at the same time.
SetManualMode SetAutoMode Status
0 0 Invalid, no operation mode
1 0 Manual operation mode
0 1 Automatic operation mode
1 1 Invalid, no operation mode
Table 9.21 Mode input signals
Output variables
Variable Type Meaning
ControllerReady BOOL Controller is ready
RobotReady BOOL Robot drives ready to switch on
RobotActive BOOL Robot drives switched on
ManualActive BOOL Manual operation mode active
AutoActive BOOL Auto mode active
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.22 RcIfModeControl module outputs
ControllerReady: BOOL
This output indicates that the controller has run up and is ready to activate a mode, switch on the drives etc. Any error present does not influence this signal.
RobotReady: BOOL, RobotActive: BOOL
The RobotReady output indicates that the robot drives are ready to be switched on, the RobotActive output that the robot drives are switched on. Both outputs are independent of automatic mode.
9. RcInterface.lib library description
62 GDCP-CMXR-C2-CS-EN 1205a
ManualActive: BOOL, AutoActive: BOOL
These outputs return the status of the active mode.
ManualActive AutoActive Status
0 0 Invalid, no operation mode
1 0 Manual operation mode
0 1 Automatic operation mode
Table 9.23 Mode output signals
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
Note
The error status can be queried using the modules in the message system.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 63
9.5.3 Control sovereignty, RcIfWriteAccess
Control sovereignty describes the authorisation to actively influence the motion controller. Active functions are those that change the behaviour of an FTL program and/or cause movements, e.g. jogging of the axes or starting/stopping FTL programs.
Control sovereignty over the motion controller can be requested from the handheld terminal or the PLC. If a user does not have control sovereignty, he can only observe.
Before switching control sovereignty, the active user must give up control sovereignty. When giving up control sovereignty using the PLC, all programs are stopped and the controller release is cancelled. However, the mode is retained.
Write access is requested using the RcIfWriteAccess module:
Input data Variable Type Meaning
RobotIndex DINT Kinematics number
Request BOOL Request write access
Table 9.24 RcIfWriteAccess module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
Request: BOOL
The status = TRUE requests write access for the CMXR control system. Available is a prerequisite for obtaining write access. This is indicated by the Available output.
9. RcInterface.lib library description
64 GDCP-CMXR-C2-CS-EN 1205a
Output data Variable Type Meaning
Available BOOL Write access is available
Active BOOL Write access granted
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.25 RcIfWriteAccess module outputs
Available: BOOL
The Available variable = TRUE indicates that write access is available can be requested.
Active: BOOL
The status with the value TRUE indicates that write access has been granted. All operations can now be performed using the PLC.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
Note
A valid mode is a prerequisite for granting control sovereignty.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 65
9.5.4 Kinematic data, RcIfRobotData
This module supplies numerous setpoints and actual values for the kinematics, as well as other information.
Input data
Variable Type Meaning
RobotIndex DINT Kinematics number
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
9. RcInterface.lib library description
66 GDCP-CMXR-C2-CS-EN 1205a
Output data
Variable Type Meaning
RobotName STRING(80) Configured name of the kinematic
RobotActive BOOL Kinematic drives are active
RobotReferenced BOOL Kinematic drives are referenced
RobotError BOOL Kinematics error status
RobotOverride INT Current kinematics override
RefSysName STRING(80) Name of the active reference system
RefSysNumber DINT Number of the active reference system from the list of
reference systems
Tool TTOOL Active tool data
ToolName STRING(80) Name of the active tool
ToolNumber DINT Number of the active tool from the list of tools
AxisCountMain DINT Number of main axes
AxisCountWrist DINT Number of orientation axes
AxisCountAux DINT Number of auxiliary axes
AxisSimulated WORD Status of axes simulated, bit coded
AxisReferenced WORD Status of axes referenced, bit coded
AxisLSN WORD Negative end positions of axes, bit coded
AxisLSP WORD Positive end positions of axes, bit coded
AxisPos TAXISPOS Setpoint values of axis positions
CartPosWorld TCARTPOS Cartesian setpoint values in WORLD
CartPosRefSys TCARTPOS Cartesian setpoint values in current reference system
AxisDyn TAXISDYN Setpoint values for axis dynamics
PathDyn TPATHDYN Setpoint values for path dynamics
CartDyn TCARTDYN Setpoint values for path dynamics
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 67
RobotName: STRING
This is the output for the kinematic name, which was specified in the configuration in the FCT.
Configuration of the kinematic name in FCT:
RobotActive: BOOL
RobotActive indicates that all robot drives are switched on.
RobotReferenced: BOOL
RobotReferenced indicates that all robot drives are referenced.
RobotError: BOOL
RobotError indicates that the robot has an error status. The cause of the error can be evaluated and resolved using the message modules.
RobotOverride: INT
RobotOverride indicates the current active value for the robot override. The override can be changed using the RcIfOverride module.
ToolName: STRING, RefSysName: STRING
These variables output the name of the active tool and the reference system. To identify the association of the variables, the following prefixes are used:
“S” indicates a system variable
“G” indicates a global variable
“P” indicates a project variable
“L” indicates a local program variable
These identifiers prefix the actual name. A space is used as a separator before the name.
9. RcInterface.lib library description
68 GDCP-CMXR-C2-CS-EN 1205a
RefSysNumber: DINT, ToolNumber: DINT
Both outputs return the number of the active reference system or tool, which is saved in the corresponding cross-reference list (see chapter 9.5.5 Activation of reference systems and tools on page 71). If no tool or reference system from these lists is active, the following values are returned:
RefSysNumber = 0: Reference system WORLD active
RefSysNumber = -1: A different reference system active, which does not appear in the list. The name can be determined using the RefSysName output.
ToolNumber = 0: Tool FLANGE active
ToolNumber = -1: A different tool is active, which does not appear in the list. The
name can be determined using the ToolName output.
AxisCountMain: DINT, AxisCountWrist: DINT, AxisCountWrist: DINT
These outputs return the number of available kinematic axes.
Output Signal Description
AxisCountMain Number of main axes
AxisCountWrist Number of orientation axes
AxisCountAux Number of auxiliary axes
Table 9.26 Axis number variables
AxisLSN: WORD, AxisLSP: WORD
These two variables contain the bit coded status of the positive and negative end positions of the individual axes. If a bit is True, the relevant limit switch is active.
The following bit assignment applies:
Bits Description
0 to 5 Axis 1 to 6
6 to 8 Auxiliary axes 1 to 3
Table 9.27 Bit assignment of axes
AxisReferenced: WORD, AxisSimulated: WORD
These bit coded variables can be used to read whether an axis is referenced or simulated. If True, the relevant axis is simulated; for the assignment of the bits refer to AxisLSN and AxisLSP outputs.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 69
AxisPos: TAxisPos
The AxisPos output returns the current setpoint values of the individual axis positions.
Content of TAXISPOS data type:
Variable Type Unit of measure Meaning
a1 REAL mm or degrees Axis 1 position
a2 REAL mm or degrees Axis 2 position
a3 REAL mm or degrees Axis 3 position
a4 REAL mm or degrees Axis 4 position
a5 REAL mm or degrees Axis 5 position
a6 REAL mm or degrees Axis 6 position
aux1 REAL mm or degrees Auxiliary axis 1 position
aux2 REAL mm or degrees Auxiliary axis 2 position
aux3 REAL mm or degrees Auxiliary axis 3 position
Table 9.28 Structure of TAXISPOS data type
CartPosWorld: TCartPos, CartPosRefSys: TCartPos
The CartPosWorld variable is used to output the current Cartesian setpoint position. The reference system is in the WORLD system, i.e. the origin is the zero point stored in the configuration.
The CartPosRefSys variable contains the Cartesian setpoint value in the active reference
system.
Content of TCartPos data type:
Variable Type Unit of measure Meaning
x REAL mm Cartesian X position
y REAL mm Cartesian Y position
z REAL mm Cartesian Z position
a REAL Degree Orientation A
b REAL Degree Orientation B
c REAL Degree Orientation C
aux1 REAL mm or degrees Auxiliary axis 1 position
aux2 REAL mm or degrees Auxiliary axis 2 position
aux3 REAL mm or degrees Auxiliary axis 3 position
Table 9.29 Structure of TCartPos data type
9. RcInterface.lib library description
70 GDCP-CMXR-C2-CS-EN 1205a
AxisDyn: TAxisDyn, CartDyn: TCartDyn, PathDyn: TPathDyn
The AxisDyn variable returns the current setpoint values for the axis dynamics.
The CartDyn variable returns the current setpoint values for the Cartesian dynamics.
The PathDyn variable returns the current setpoint values for the path dynamics, for both the main and the orientation axes.
Content of TAxisDyn, TCartDyn, TPathDyn data types
Type Elements Element type
TAxisDyn a1, a2, a3, a4, a5, a6, aux1, aux2, aux3 TDyn
TCartDyn x, y, z, a, b, c, aux1, aux2, aux3 TDyn
TPathDyn Path, Ori TDyn
Table 9.30 Structure of TAxisDyn, TCartDyn, TPathDyn data types
Content of TDyn element type:
Variable Type Unit of
measure Meaning
Vel Real mm/sec Speed
Acc Real mm/sec? Acceleration
Jerk Real mm/sec? Jerk
Table 9.31 Structure of TDyn data type
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 71
9.5.5 Activation of reference systems and tools, RcIfSetRefSys and RcIfSetTool
In manual mode, the tool coordinate system and the active reference system can be selected for moving the axes. The RcIfSetRefSys and RcIfSetTool modules can be used to activate a reference system or a tool respectively.
Reference systems and tools can be freely defined by name in the FTL program. Because these names can change depending on the program, this data cannot be accessed. For this reason, the reference systems and tools must be assigned to the global data range of the RC. No alternative assignments are permitted.
Access to reference systems and tools is based on a reference list, in which names of
reference systems and tools are numbered. A separate list exists for reference systems and tools. These lists are configured in the Festo Configuration Tool (FCT).
Note
The list of reference systems and the one for tools are components of the configuration and only take effect after restarting the CMXR-C2.
Note
Control sovereignty is required to execute the RcIfSetRefSys and
RcIfSetTool modules.
Both the RcIfSetRefSys and RcIfSetTool modules have the same preconditions:
The reference system or tool is specified in the reference table.
All reference systems and tools are created as global variables.
Manual mode is active.
9. RcInterface.lib library description
72 GDCP-CMXR-C2-CS-EN 1205a
Input data Variable Type Meaning
RobotIndex DINT Kinematics number
Execute BOOL Executes the selection
Index DINT Number of the reference system/tool
Table 9.32 RcIfSetRefSys, RcIfSetTool module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
Execute: BOOL
The rising edge activates the reference system whose number is specified under the Index variable.
Index: DINT
Number of the reference system/tool from the cross-reference list. If the value 0 is specified, this means:
The WORLD reference system is activated, or Activating the tool FLANGE.
All other values that do not appear in the table result in an error. This condition is
indicated by the Error output.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 73
Output data Variable Type Meaning
Done BOOL The reference system/tool has been set.
ActRefSys,
ActTool
DINT Currently selected reference system
Currently selected tool
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.33 RcIfSetRefSys, RcIfSetTool module outputs
Done: BOOL
The status TRUE for the Done output indicates that the reference system/tool has been
activated.
ActRefSys: DINT, ActTool: DINT;
Returns the number of the currently selected reference system/tool.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9.5.6 Manual movement, RcIfJogControl
The JOG module enables individual robot axes to be moved. Prerequisites for jogging:
Robot is ready for operation
Control sovereignty obtained
Drives are switched on
“Manual” mode active
9. RcInterface.lib library description
74 GDCP-CMXR-C2-CS-EN 1205a
Note
Control sovereignty is required to execute the RcIfJogControl module.
Input data Variable Type Meaning
RobotIndex DINT Kinematics number
MoveToPosition BOOL Move to target position
MoveNegative BOOL Execute movement in negative direction
MovePositive BOOL Execute movement in positive direction
Axis INT Number of the axis
CoordSys INT Number of the coordinate system
TargetPosition Real Target position for MoveToPosition
Table 9.34 RcIfJogControl module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
MoveToPosition: BOOL
The rising edge at these inputs starts the movement of the axes specified by the other
inputs in the relevant coordinate system. The movement is carried out (if possible) to the target position entered under TargetPosition. The falling edge at the input stops the movement.
MovePositive: BOOL, MoveNegative: BOOL
The rising edge at these inputs starts the movement of the axes specified by the other inputs in the relevant coordinate system. The movement continues until a falling edge occurs at the input. Only one of the two inputs can have the status TRUE.
AxisNumber: INT
Number of the axis with which the movement is to be executed. However, the assignment of the axes depends on the set coordinate system (CoordSys input) and has the following
values:
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 75
Axis coordinate system:
AxisNumber Description
1 Select axis 1
2 Select axis 2
3 Select axis 3
4 Select axis 4
5 Select axis 5
6 Select axis 6
7 Select auxiliary axis 1
8 Select auxiliary axis 2
9 Select auxiliary axis 3
Table 9.35 Axis numbers for axis coordinate system
Cartesian systems (world, reference, tool coordinate system):
AxisNumber Description
1 Select Cartesian X axis
2 Select Cartesian Y axis
3 Select Cartesian Z axis
4 Select Cartesian orientation A
5 Select Cartesian orientation B
6 Select Cartesian orientation C
7 Select auxiliary axis 1
8 Select auxiliary axis 2
9 Select auxiliary axis 3
Table 9.36 Axis numbers for Cartesian coordinate systems
CoordSys: INT
The CoordSys input is used to specify the coordinate system in which the axis movement is to be executed. The following values are permitted:
CoordSys Description
0 Axis coordinate system
1 Cartesian global coordinate system
2 Cartesian coordinate system for active reference system
3 Cartesian tool coordinate system
Table 9.37 Coordinate system selection
9. RcInterface.lib library description
76 GDCP-CMXR-C2-CS-EN 1205a
Output data Variable Type Meaning
LSN BOOL Limit switch negative
LSP BOOL Limit switch positive
ActAxisNumber INT Number of the selected axis
ActCoordSys INT Number of the current coordinate system
ActCoordSysName STRING(16) Name of the current coordinate system
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.38 RcIfJogControl module outputs
LSN: BOOL, LSP: BOOL
These outputs indicate that the selected axis has reached its negative/positive end position.
ActAxis: INT
Returns the currently selected axis number.
ActCoordSys: INT
Specifies the currently selected coordinate system, in which jogging is to be carried out.
ActCoordSysName: String
Specifies the currently selected coordinate system, in which jogging is to be carried out, in plain text.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 77
9.5.7 Override, RcIfOverride
The RcIfOverride module can be used to set the override in a percentage range.
Note
Control sovereignty is required to execute the RcIfOverride module.
Input data Variable Type Meaning
RobotIndex DINT Kinematics number
SetOverride INT Setpoint values for the override
Table 9.39 RcIfOverride module inputs
RobotIndex: DINT
This input is an index for selecting the kinematics in a multi-kinematic system. The number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
SetOverride: INT
Setpoint specification for the override; the mode must be taken into account:
Automatic mode:
0 = Override of 0.1% is set.
1-100 = Override of 1% to 100% is set.
Jog mode:
0 = JogOverride of 0.1 increment is set.
1 = JogOverride of 1 increment is set.
2-100 = JogOverride of 2% to 100% is set.
Values of < 0 or > 100 are ignored and the last valid override value is retained.
9. RcInterface.lib library description
78 GDCP-CMXR-C2-CS-EN 1205a
Output data Variable Type Meaning
ActOverride INT Current override value
Error BOOL Execution errors occurred
ErrorId TRcIfErrodID Error code of the execution error
Table 9.40 RcIfOverride module outputs
ActOverride: INT
Output for the current override. This output is always updated regardless of write access.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 79
9.5.8 Program control, RcIfProgramControl_V2
Program control is executed using the RcIfProgramControl_V2 module. This module enables programs to be started and stopped. These functions are available in both Manual and Automatic mode.
Note
Control sovereignty is required to execute program control using the RcIfProgramControl_V2 module.
Input data Variable Type Meaning
RobotIndex DINT Kinematics number
Unload BOOL With Unload + program number, all programs
are unloaded from the open project and the
project is closed.
With Unload + 0, all programs are unloaded
and all projects closed (except for _global).
Start BOOL With Start, all other programs and projects
from the project list are first unloaded and
closed. Then the selected program is loaded
and started. Programs that are not in the
project list and were opened with the CDSA
remain loaded. If a project is only open, but
no program loaded, the project is not closed.
Stop BOOL Stopping the program
EnableProgHold BOOL Enable programmed halt
ProgramNumber INT The number of the program
Table 9.41 RcIfProgramControl module inputs
RobotIndex: DINT
9. RcInterface.lib library description
80 GDCP-CMXR-C2-CS-EN 1205a
This input is an index for selecting the kinematics in a multi-kinematic system. The
number of kinematics supported by the system is set out in the system manual. The first kinematics is always addressed with the index 0.
Unload: BOOL
A rising edge for the Load command with a rising edge of the command Unload, the selected FTL programs are discharged from the main memory. The rising edge of Unload removes a previously loaded FTL program from the main memory. “Unload program number 0” unloads all loaded programs.
Start, Stop: BOOL
The rising edge of the Start command starts an FTL program. The rising edge of the Stop command can be used to stop the program. A restart is then possible.
Note
From software version 1.1, a previous loading of the FTL program is no longer necessary. With creation of the program number and the rising edge at the Start input, the program is automatically loaded and started. If the program is already loaded or in the Stop status, it is continued via the rising edge of Start.
EnableProgHold: BOOL If the EnableProgHold signal is activated on the interface, i.e. it has the status TRUE, the motion program is stopped when the ProgHold command is called. However, only the program which contains the ProgHold command is stopped. Other programs, e.g. parallel programs, are further processed. If the EnableProgHold signal is set to FALSE, the stopped program is continued.
ProgramNumber: INT
Number of the program that is stored in the configured program list. This must be specified for starting, stopping, unloading the programs.
Program numbers Related FTL programs
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 81
Output data
Variable Type Meaning
Ack BOOL Positive acknowledgement
Nack BOOL Negative acknowledgement
ProgramState BOOL Status of program processing
ReposActive BOOL Program started, repositioning is running
ProgHoldActive BOOL Programmed halt active
ActiveProgramNumber INT Number of the active program
ActiveProjectName STRING(32) Name of the active project
ActiveProgamName STRING(32) Name of the active program
Error BOOL Execution errors occurred
ErrorId TRcIfErrorID Error code of the execution error
Table 9.42 RcIfProgramControl module outputs_V2
Ack: BOOL, Nack: BOOL
The Ack output is the positive handshake signal for the requests to load, start and stop programs. If a function is not possible the user is notified by the Nack output. In addition, the Error and ErrorCode output provide further information.
Note
If an order is acknowledged with NACK, the cause is output as a message in the message buffer (as well as in TeachView).
ProgramState: ERcIfPrgState
The enumeration variable ProgramState returns the current execution status of the FTL project.
Note
A status is active at all times.
9. RcInterface.lib library description
82 GDCP-CMXR-C2-CS-EN 1205a
Enumeration Name Value Significance
PrgStateEmpty 0 No program is loaded
PrgStateRunning 1 Program active
PrgStateStopped 2 Program stopped
PrgStateFinished 3 Program executed
PrgStateCompileError 4 Program faulty
PrgStateInternalError 5 Internal error occurred
Table 9.43 Program statuses ErcIfPrgState
ReposActive: BOOL
The output ReposActive reports with the status TRUE that repositioning of the kinematics
system is active.
ProgHoldActive: BOOL
The TRUE status for the ProgHoldActive output reports that the ProgHold (programmed halt) command is active in the FTL program.
ActiveProgramNumber: INT
The output specifies the number of the currently active project/program from the program table.
ActiveProjectName: STRING(32), ActiveProgramName: STRING(32)
These outputs specify the name of the currently active FTL project and FTL program.
Error: BOOL
Execution error occurred, for explanation of the error, see ErrorId output.
ErrorId: TRcIfErrorID
Error code of the execution error; the description of the error code can be found in the global constants in the library.
9. RcInterface.lib library description
GDCP-CMXR-C2-CS-ES 1205a 83
9.5.9 Sequence diagram
Note
With any error, the program is automatically stopped. The program status changes to the stopped status.
stopped running empty
Program number
Start
ACK
Stop
ACK
ProgramState
Unload
ACK
empty
A. Appendix
84 GDCP-CMXR-C2-CS-EN 1205a
A. Appendix
A.1 Description of important functional sequences
A brief and concise description of the most important functions is provided here in the form of a table.
A.1.1 Obtain control sovereignty
General information
Module RcIfWriteAccess
Condition RC run up without errors, ControllerReady = TRUE
Control sovereignty not assigned, AccessAvailable = TRUE
Action Request to grant control sovereignty, WriteRequest = TRUE
Response Control sovereignty granted, AccessActive = TRUE
A.1.2 Ensure motion controller is ready to operate
General information
Module RcIfModeControl
Condition RC run up without errors, ControllerReady = TRUE
Action EmergencyStop = TRUE
Mode selected
SetManualMode/SetHandMode = TRUE
Response AutoActive/HandActive indicates the active mode
RobotReady indicates that RC is ready for release
A. Appendix
GDCP-CMXR-C2-CS-ES 1205a 85
A.1.3 Release motion controller drives
Release in manual override mode
Module RcIfModeControl
Condition RC run up without errors, ControllerReady = TRUE
RC ready for release. RobotReady = TRUE
ManualActive = TRUE
Action EnablingSwitch = TRUE
Response RobotActive indicates active release of the RC
Release in automatic mode
Module RcIfModeControl
Condition RC run up without errors, ControllerReady = TRUE
RC ready for release. RobotReady = TRUE
AutoActive = TRUE
Action DrivesOnAuto = TRUE
Response RobotActive indicates active release of the RC
A. Appendix
86 GDCP-CMXR-C2-CS-EN 1205a
A.1.4 Starting the program
General information
Module RcIfProgramControl_V2
Condition Control sovereignty on PLC interface
The program to be started is selected through the ProgramNumber input.
Action Set the Start bit (rising edge)
Wait for ACK or NACK
Response The program/project is started.
ProgramState = PrgStateRunning
A.1.5 Stopping the program
General information
Module RcIfProgramControl_V2
Condition Control sovereignty on PLC interface
The program to be stopped is selected through the ProgramNumber input.
Action Set the Stop bit (rising edge)
Wait for ACK or NACK
Response The program/project is started.
ProgramState = PrgStateStopped
A.1.6 Unloading the program
General information
Module RcIfProgramControl_V2
Condition Control sovereignty on PLC interface
The program to be unloaded is selected through the ProgramNumber input.
Action Setting the Unload bit (rising edge)
Wait for ACK or NACK
Reaction The program/project is unloaded.
ProgramState = PrgStateEmpty
A. Appendix
GDCP-CMXR-C2-CS-ES 1205a 87
A.1.7 ProgHold function
Enable function
Module RcIfProgramControl
Condition Program has status Running
ProgHold function contained in FTL program
Action Set the EnableProgHold bits (rising edge)
Start restarts the program at the point where it was interrupted.
Response ProgHoldActive indicates that the RC has stopped using the programmed halt.
Running is FALSE, if no other programs are being executed.
Disable the function
Module RcIfProgramControl
Condition Program has status ProgHoldActive
Action If necessary, set EnableProgHold to FALSE
Start restarts the program at the point where it was interrupted.
Response ProgHoldActive is FALSE
A. Appendix
88 GDCP-CMXR-C2-CS-EN 1205a
A.2 Application support libraries
The possible applications of the CMXR-C2 are extremely diverse. For many of these applications, the process controller should be seen as central link. For these applications, Festo provides other components tailored to the CMXR-C2, which enable even very complex requirements to be met.
Note
The libraries themselves and precise descriptions of them can be found on the Festo website.
A.2.1 RcTracking.lib (CMXR-C2 only)
Library for implementation of tracking applications.
Tasks:
- Controlling the tracking FTL macros in the motion controller.
A.2.2 Festo_Motion.lib (CoDeSys general)
Drive library for electric drives from Festo
Tasks:
- Provides all functions of the drives in the PLC.
A.2.3 PartDetector.lib (CoDeSys general)
Library for control of Festo camera systems for part detection, e.g. on a running conveyor belt.
Tasks:
- Latching the encoder signal
- Triggering the image
- Duplicate part detection
- Transferring the camera data to the PLC via TCP/IP
A.2.4 Festo_CameraControl.lib (CoDeSys general)
Basic functions for control of Festo camera systems via TCP/IP
Tasks:
- Connection set-up
- Read parameters
- Triggering the image