Sei sulla pagina 1di 62

_______________________________________________________________

ecCST Controller Algorithm

ecCST Controller Algorithm for Use in different Computer Environments


(ECPID Release 2.0.14/5.0.14)

Release 3.5

Implementation Details

Integration of ecICP/ecCST Controllers into different Computer Environments including PCs with Windows or Microcontrollers such as C167 / ST 10 Status June 22, 2010

Status: 2010-06-25

Page 1 of 62

ExpertControl, 2003-2010

_______________________________________________________________
The software described in this document is furnished under a license agreement. The software may be used or copied only under the terms of the license agreement.

ecCST Controller Algorithm

ecCST engineering software, Implementation Guide, June 2010

COPYRIGHT 2003-2010 ExpertControl GmbH, Germany. All rights reserved. ExpertControl GmbH provides this manual "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. This document may contain technical inaccuracies or typographical errors. Changes are made to the information herein as necessary; these changes will be incorporated in new editions. No part of this manual may be photocopied or reproduced, transmitted, transcribed, stored in a retrieval system or translated into any language in any form without prior written consent form from the authors or ExpertControl GmbH.

ecCST is a trademark of ExpertControl GmbH

ExpertControl GmbH Germany Tel.: +49 (0)7000 / 3 97 37 87 Fax: +49 (0) 8152 / 90 99 214

Status: 2010-06-25

Page 2 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

1 2 3 4

Introduction ............................................................................................................ 4 Release Notes ......................................................................................................... 5 Requirements.......................................................................................................... 8 Purchasing / Activation / Licensing Information ................................................. 10 4.1 General information .........................................................................................10 4.2 Using a license file...........................................................................................10 4.3 Using a dongle .................................................................................................11 5 Getting support ..................................................................................................... 11 6 Updates/Upgrades ................................................................................................ 12 7 Getting started ...................................................................................................... 13 8 Use of ecCST inside Simulink ............................................................................. 14 8.1 Basics ...............................................................................................................14 8.2 Inputs and Outputs ...........................................................................................16 8.3 Example ...........................................................................................................16 9 Use of ecCST inside LabVIEW ........................................................................... 17 9.1 Basics ...............................................................................................................17 9.2 ecCST Palette VIs ............................................................................................18 9.3 Example ...........................................................................................................20 9.4 Deployment......................................................................................................21 9.5 Licensing..........................................................................................................22 10 Use of ecCST inside Morphe (ECPID) .............................................................. 23 10.1 Basics ...............................................................................................................23 10.2 OpCode Parameters .........................................................................................23 10.3 Error messages .................................................................................................31 11 Parameters, inputs and outputs of ecCST............................................................. 33 12 Using ecCST from C-code ................................................................................... 41 12.1 Initialization Phase...........................................................................................41 12.2 Run Phase.........................................................................................................47 12.3 Shipment ..........................................................................................................49 12.4 Application.......................................................................................................49 12.5 Source Code Example......................................................................................50 13 ecCST Errors ........................................................................................................ 55 14 Contact to ExpertControl...................................................................................... 56 15 Appendix .............................................................................................................. 57 15.1 A License Agreement.......................................................................................57 15.2 B Forms............................................................................................................61

Status: 2010-06-25

Page 3 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 1 Introduction
This manual includes information about hard- and software requirements, installation instructions and the users guide for using the control algorithm ecCST. For details about the latest features and bug fixes, please refer to chapter 2. Requirements are given in chapter 3. Chapter 7 provides a quick start. For detailed information about using ecCST in different environments, please refer to the corresponding chapters, starting at 8.

ecCST Controller Algorithm

Status: 2010-06-25

Page 4 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

2 Release Notes
Version 3.5 New features and functions: License protection on LabVIEW RT Targets enabled (PXI, cRIO). Mac address is used, requires LabVIEW 2009 or better. Decoupling input is a vector now. ecCST reads decoupling parameters for multiple decoupling inputs. FlexLM license protection updated to version 8.2 Bugfix: Calculations of terms for additional controller inputs did use a wrong channel index. Version 3.4 Feature: Decoupling input is handled differently now to avoid bumps in output while switching. Version 3.3 Bugfixes: Fixed a bug that may lead to crashes in manual model. Version 3.2 Internal changes, was never officially released. Version 3.1.1 New features and functions: Modifications to use Blackfin hardware. No impact on any of the other targets or the overall funcionality. Version 3.1 New features and functions: Modifications for use of controllers without integral part. At the moment, this function is available for Simulink only. More targets will follow. Page 5 of 62 ExpertControl, 2003-2010

Status: 2010-06-25

_______________________________________________________________

ecCST Controller Algorithm

Version 3.0.3 New features and functions: Modified to be used with B+R hardware (X20)

Bugfixes: getDMemSize will check if the passed parameters are at least 0

Version: 3.0.2 New features and functions: Similar parameter types for switching passed in Simulink/DSPACE/LABVIEW/MORPHEE environment

Bugfixes: Fixed a bug that may lead to exception when using eccst with dspace, variable for number of switching tables was not set while setting size of IWork vector.

Version 3.0.1 New features and functions: Improved autoswitch, allows switching between different parameter sets now.

Version 3.0 New features and functions: Autoswitch for DSPACE added new format for parameter vector when using the simulink library: The size will be at least 180 values per parameter set. If there are less parameters, some dummy values will be added to the end. In addition, there are some management parameters at the beginning of each parameter set to specify the size of some arrays (Zs, Ns,Filters...). This allows to skip any unused parameters for these array parameters. This decreases the overall number of parameters per set although there are these management parameter now. Because of the minimum size of 180, it will also be possible to change Page 6 of 62 ExpertControl, 2003-2010

Status: 2010-06-25

_______________________________________________________________
parameters at runtime without recompiling the model. Otherwise, changing controller order or so would need the model to be recompiled. But now, as long as the size of the parameter vector is not more than 180 values, no recompilation is needed. Added SIMO functionality. Up to 5 additional inputs may be considered. Changed the simulink S-Function to Level2-Type. Changed the structure of the Simulink block. Every signal is using its own input now. Added input for output offsets. This value will be added to the output, calculated by the controller.

ecCST Controller Algorithm

Bugfixes: Uo and Uo_unlimited is using the correct (output)-index now to save old values. it was using the set point index in the past. This was no problem but when SIMO and maybe MIMO is implemented now, it may become a problem.

Version 1.0 First stable version

Status: 2010-06-25

Page 7 of 62

ExpertControl, 2003-2010

_______________________________________________________________
3

ecCST Controller Algorithm


Requirements

In order to install and run ecCST properly, please take care of the following requirements: Hardware requirements ecCST for Simulink: PC with Intel or AMD CPU, 1 GHz or better is recommended 512 MB RAM or more is recommended ecCST for LabVIEW (RT): PC with Intel or AMD CPU, 1 GHz or better is recommended 512 MB RAM or more is recommended NI Real-Time Target, e.g. NI PXI or NI CompactRIO ecCST for dSPACE: PC with Intel or AMD CPU, 1 GHz or better is recommended 512 MB RAM or more is recommended dSPACE DS 1005 ecCST for Morphe (ECPID): PC with Intel or AMD CPU, 1 GHz or better is recommended 512 MB RAM or more is recommended For any other targets, please contact ExpertControl at sales@expertcontrol.com. Software requirements General requirements on the host system: Windows XP, VISTA, 7 ecCST for Simulink: MATLAB 6.1 or newer ecCST for LabVIEW (RT): LabVIEW 2009 or newer ecCST for dSPACE: MATLAB 6.1 or newer ecCST for Morphe (ECPID) Morphe 1.x or Morphe 2

Status: 2010-06-25

Page 8 of 62

ExpertControl, 2003-2010

_______________________________________________________________
For any other targets, please contact ExpertControl at sales@expertcontrol.com.

ecCST Controller Algorithm

Status: 2010-06-25

Page 9 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 4 Purchasing / Activation / Licensing Information


4.1 General information

ecCST Controller Algorithm

In order to use ecCST, a license is needed. This license can either be a license file or a dongle. In order to get a license, please contact your vendor or sales@expertcontrol.com. The type of license that is available depends on the target system of ecCST. For all Windows-based target systems, including Simulink, LabVIEW Non-Real-Time and Morphe, license files as well as dongles can be used. For LabVIEW Real-Time, only license files are available. For dSPACE targets and any other types of targets, please contact ExpertControl at sales@expertcontrol.com.

On Windows-based targets, ecCST uses the FlexLM license mechanism. This allows having node-locked or floating licenses. Node-locked licenses are bound to a specific system while floating licenses allow using licenses on any system in a network. When floating licenses should be used, a Windows based license server is needed that runs the FlexLM license daemon. The license daemon will also be provided by your vendor. The license file that will be provided contains either information about all licenses that are granted to the specific system or it specifies where the license server is located. The license file that has been provided by the vendor should be renamed to ssdivd.lic and copied to the ExpertControl base folder (e.g. C:\Program Files\ExpertControl). When ecCST is started for the very first time, it might happen that a FlexLM dialog appears, asking for the license file location.

4.2 Using a license file

Fig 1 FlexLM dialog asking for the type of license

Status: 2010-06-25

Page 10 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Please make sure to select Specify the License File here, regardless of the license scheme. In the next dialog, the location of the license file has to be entered.

ecCST Controller Algorithm

Fig 2 FlexLM dialog asking for the location of the license file

When this is done, Next will start the license check. In case that an error appears, please contact your vendor or ExpertControl at tsupport@expertcontrol.com. On LabVIEW RT systems like PXI or CompactRIO, ecCST uses a license file that checks for the MAC address of the target. The license file will be provided by your vendor. On the target system, the license file has to be located in the root folder of the target system. The name of the license file must be ssdivd.lic.

4.3 Using a dongle

On Windows-based systems, a USB dongle allows running ecCST on any system where this dongle is inserted. This is more flexible than node-locked licenses but less flexible than floating licenses. There is a separate document that describes how to handle dongle licenses. This document will be provided in case that dongle licenses have been purchased.

5 Getting support
In case that support is needed, please contact tsupport@expertcontrol.com. Typically, an ExpertControl representative will contact you within one business day. Please include as much information as possible in your email, including screenshots and error messages. Getting support requires a valid maintenance contract.

Status: 2010-06-25

Page 11 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 6 Updates/Upgrades
ExpertControl will provide new releases of ecCST frequently. There is no fixed schedule when new releases are available. The latest version can always be found on www.expertcontrol.com. Downloading and installing updates requires a valid maintenance contract.

ecCST Controller Algorithm

Status: 2010-06-25

Page 12 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

7 Getting started
ecCST stands for Controller Switching Technology. ecCST is a controller algorithm using parameter sets calculated with ecICP, an ExpertControl tool for automatic controller calculation. ecCST allows switching between different parameter sets without discontinuities with respect to the controller output signals. Additional features are the consideration of different reference signals and different output signals and the elimination of so called tracking errors if the reference value is changed along a ramp. The ecCST controller algorithm is available for use on many different target systems, including: LabVIEW Real-Time (PXI, CompactRIO) and Non-Real-Time (Windows) Simulink SimulationX Morphe dSPACE C167 Gantner e.xact WindowsCE-based systems In order to use ecCST on one of the targets, please refer to the corresponding chapter in this manual. The controller algorithm is meant to be used in real-time applications inside a time critical loop with a fixed sample time. At each iteration, ecCST will read the current inputs, calculate the controller equations and provide the controller output.

Status: 2010-06-25

Page 13 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 8 Use of ecCST inside Simulink


To use the ecCST -algorithm inside Simulink, the Simulink library eccstlib is provided, that includes a block which contains the ecCST -algorithm (Fig 5). The block uses the S-Function ecCST, contained in ecCST.dll. This file is also part of the Simulink library. To open the Simulink library, type eccstlib in the Matlab command window or open the library in the Simulink library browser.

ecCST Controller Algorithm

8.1 Basics

Fig 3 ecCST library in Simulink browser

Status: 2010-06-25

Page 14 of 62

ExpertControl, 2003-2010

_______________________________________________________________
The library contains the ecCST block itself, ecDelay, a block to delay signals and a link to an example showing how to use ecCST (Fig 4).

ecCST Controller Algorithm

Fig 4 ecCST library

Status: 2010-06-25

Page 15 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

Fig 5 ecCST Block parameter dialog for Simulink

In order to use ecCST in a Simulink model, the ecCST block has to be placed in the model and its inputs and outputs have to be connected to the rest of the model. The block has some dialog parameters (Fig 5) that have to be set before running the simulation. All parameters are explained in chapter 11. For a detailed description of the block parameters, inputs and outputs please see chapter 11.

8.2 Inputs and Outputs

There is an example that shows, how to use the ecCST block in Simulink. The example can be opened from the ecCST library or from the MATLAB demo collection.

8.3 Example

Status: 2010-06-25

Page 16 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 9 Use of ecCST inside LabVIEW


When installing ecCST for LabVIEW, a new entry will be added to the LabVIEW palette, containing all Vis needed to run ecCST:

ecCST Controller Algorithm

9.1 Basics

Fig 6 ecCST Palette

The palette provides three VIs. All VIs are meant to be used in time critical loops and will run with LabVIEW non-real-time as well as on NI PXI and CompactRIO targets.

Status: 2010-06-25

Page 17 of 62

ExpertControl, 2003-2010

_______________________________________________________________
9.2 ecCST Palette VIs
Initialize ecCST Settings.vi

ecCST Controller Algorithm

This VI initializes a cluster that will be used to provide all necessary inputs to ecCST. The VI must be used outside of a loop because it should be executed only once. The VI sets parameters that need to be known to ecCST before the first loop cycle. The VI has two inputs: Activate Ramp Controller (Boolean) Activate Observer (Boolean) If set to TRUE, each of this inputs activates ecCST features. For details about ramp controllers and observers, please refer to chapter 11. The output of this VI is a cluster containing predefined settings for ecCST. The cluster is meant to be an input to Set Current ecCST Inputs.vi. Set Current ecCST Inputs.vi

This VI modifies the cluster created by Initialize ecCST Settings in order to provide the current values of inputs in each iteration. The VI must be placed inside the same loop as Calculate ecCST.vi. The VI should be used to provide current setpoint signals, plant output signals etc. The VI has several inputs: Input signals (cluster) is the cluster that was created by Initialize ecCST Settings.vi. Init (boolean) If set to TRUE; the controller will be initialized and will reread the controller parameter file. deltaT (double) is the current sample time of the loop that contains the ecCST VIs parameter set (double) is the number of the parameter set that should be used by ecCST. Set point (double) is the current set point signal. Measured signal (double) is the current plant output. Manual controller output (double) is the value that should be sent to the controller output when running ecCST in manual mode, means that parameter set is set to 0. The outputs of the VI are: The modified cluster, ready to provide to Calculate ecCST.vi An error output

Status: 2010-06-25

Page 18 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Calculate ecCST.vi This VI contains the core controller algorithm ecCST. The VI must be placed inside the same loop as Set Current ecCST Inputs.vi and must be called at every iteration. The VI has three inputs: Input Signals (cluster) is the cluster that was prepared by Set Current ecCST Inputs.vi Parameterfile (path) is the full path to the controller parameter file. The file must be available at this location. If an application is supposed to run on RTTargets, the controller parameter file has to be deployed to this target before running the application. Error in (error) is a standard error cluster. The VI provides also three outputs: Parameterset out (double) is the number of the parameter set that was used by ecCST. This may be different from the corresponding input value in some cases, e.g. if the ramp controller feature is used. Controller output (double) is the current controller output. This signal is meant to be the input for the plant to control. Error out (error) is a standard error output. In case that an error occurred during the call to ecCST, information will be provided via this output. There is an example available that shows how the ecCST VIs may be used in an application.

ecCST Controller Algorithm

Status: 2010-06-25

Page 19 of 62

ExpertControl, 2003-2010

_______________________________________________________________
9.3 Example
An example for the use of ecCST can be found via the NI Example finder. When searching for ecCST, the application will be listed and can be opened.

ecCST Controller Algorithm

Fig 7 Application showing the use of ecCST

On Windows system, just run the application. When modifying the setpoint value, the controller will take care of getting the measured signal (=plant output) to the same value. The application is also ready to be used on RT targets. It only has to be ensured that the controller parameter file cst_pxi.control is located in the root folder of the RT controller. The installer creates this file in LabVIEW\examples\ExpertControl\ecCST. The file will not be deployed automatically. Instead, the user has to deploy it manually.

Status: 2010-06-25

Page 20 of 62

ExpertControl, 2003-2010

_______________________________________________________________
9.4 Deployment
Besides the control application itself, two additional files need to be deployed to RT targets: The controller parameter file The license file Without these two files the ecCST algorithm will not work! When ecCST is installed, it will add a new option to the Tools menu of LabVIEW:

ecCST Controller Algorithm

Fig 8 Deploy option in the tools menu

Deploy Controller Parameter File will open a dialog where the local file can be selected. Furthermore, the IP address of the RT controller needs to be entered. The application will then send the file to the root folder of the selected RT controller.

Status: 2010-06-25

Page 21 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

Fig 9 Deploy controller parameter files to RT targets

9.5 Licensing
See chapter 4 for more information on licensing on Windows or RT targets.

Status: 2010-06-25

Page 22 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 10 Use of ecCST inside Morphe (ECPID)


In this chapter, ecCST will be called ECPID.

ecCST Controller Algorithm

10.1 Basics
To use ECPID inside Morphe, a driver is provided. It consists of ECPID.mdv and ECPID.sys. This driver contains the OpCode ECPID_Init which may be called inside Morphe. This OpCode has to be called whenever the controller should be reinitialized. Calling the OpCode will When the ECPID_Init OpCode is called, it will read the controller parameters from a file. Furthermore, all internal variables will be set to the starting value. From this time, the driver is running at every time step. To reinitialize the driver, the OpCode may be called again, whenever needed.

10.2 OpCode Parameters


The OpCode provides a dialog to set all needed parameters (Fig 10). Most of the parameters are identical to those explained in chapter 8, 9 and 11. Nevertheless, a detailed description of the parameters follows:

Status: 2010-06-25

Page 23 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

Fig 10 ECPID for Morphe

Status: 2010-06-25

Page 24 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Control ID: This is an identifier which is needed by Morphe to distinguish between multiple instances of the controller ECPID. If more than one instance of ECPID is needed in an application, every instance needs to have its own ID. Up to 16 parallel controllers are allowed. This parameter can not be changed when the controller is running. The parameter will be evaluated when ECPID_Init is called. Number of Parameter Sets: This parameter specifies how many controller parameter sets are contained in the controller parameter file. If this parameter is set to 0, the driver will automatically detect the number of parameter sets. 0 is the recommended value for this parameter. This parameter can not be changed when the controller is running. The parameter will be evaluated when ECPID_Init is called. Parameter File: This is the file with the controller parameter. The complete path must be specified here. The file is generated by ecICP and should not be modified manually. This parameter can not be changed when the controller is running. The filename will be evaluated when ECPID_Init is called. Current parameter set channel: This is the ID of the channel that should be used to select the number of the current controller parameter set. Valid values are 0 up to the number of parameter sets in the parameter file. 0 means that the controller is set to manual mode. In this mode, the controller will not modify the channel for the controller output. This channel may be set by the user/application. But the controller will read the value from the output channel in order to get information about the system. This will allow a smooth reactivation of the controller at a later time. If this channel is set to 1, ECPID will use the controller parameters from the first parameter set in the parameter file, if set to 2, it will use the second parameter set and so on. The ID of the channel can not be changed when the controller is running. The value of the channel will be checked at every time step. Use Frame Controller: If this checkbox is selected, the controller will have a special handling for set point ramps. ecICP allows generating so called ramp controllers which provide elimination of tracking errors in set point ramps. If this kind of controller was generated, ECPID will check the set point signal. As soon as a ramp is detected, ECPID will switch from the current controller to the ramp controller structure. Additionally, this switch will also Status: 2010-06-25 Page 25 of 62 ExpertControl, 2003-2010

ecCST Controller Algorithm

_______________________________________________________________
happen if the set point is constant for a longer period because the ramp controller may provide better results in some situations. This parameter can not be changed when the controller is running. The value of the channel will be evaluated when ECPID_Init is called. Use Observer: If this checkbox is selected, the controller will include an observer. This requires that the observer parameters where generated by ecICP. Using the observer may be helpful in situations where the measured signal is very noisy or if the sensors are slow compared to the sample time of the controller. This parameter can not be changed when the controller is running. The value of the channel will be evaluated when ECPID_Init is called. Enable decoupling: If this checkbox is selected, it will be possible to link two ECPID controllers to each other. This allows controlling coupled systems with 2 inputs and 2 outputs. Every controller uses one input and one output of this system. Every controller uses an additional input signal and output signal to communicate with the controller running in parallel. Both controllers must have the Enable decoupling checkbox selected. See Fig 11. To use decoupling, the ECPID MIMO AddOn is needed. For details on AddOns, please refer to 3rd Party information and to the ecICP manual. This parameter can not be changed when the controller is running.

ecCST Controller Algorithm

Fig 11 Decoupling structure

Decoupling input: This is the channel for the decoupling input. This must be the same channel as the decoupling output of the other controller in the decoupling structure. The ID of the channel can not be changed when the controller is running.

Status: 2010-06-25

Page 26 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Decoupling output: This is the channel for the decoupling output. This must be the same channel as the decoupling input of the other controller in the decoupling structure. The ID of the channel can not be changed when the controller is running. Output channels: These are the IDs of the channels that will be used for the controller output. ECPID will send the controller output signal to this channel. It is possible to define more than one channel in the list. ECPID will use only one of these channels at the same time. But it is possible that different parameter sets uses different output channels. The number of the channel for every parameter set may be specified in ecICP. The ID of the channel can not be changed when the controller is running. Output limits: These are the IDs of channels that may be used to tighten the controller output limits at runtime. For every output channel, a channel for lower and upper limit may be specified. Using these channels, the controller output limits may be changed at every time during controller runtime. For security reasons, it is not possible to expand the limits compared to the values specified during controller generation in ecICP. If the channels contain invalid values, e.g. lower limit higher than upper limits, the values will not be used. If only one of the two channels per output signal is defined, the values will also not be used. The IDs of the channels can not be changed when the controller is running. Measured signals: These are the IDs of channels that may be used the feed the measured signals from the system into the controller. It is possible to define more than one channel in the list. ECPID will use only one of these channels at the same time. But it is possible that different parameter sets uses different input channels. The number of the channel for every parameter set may be specified in ecICP. The ID of the channel can not be changed when the controller is running. Set point signals: These are the IDs of channels that may be used the feed the set point signals into the controller. It is possible to define more than one channel in the list. ECPID will use only one of these channels at the same time. But it is possible that different parameter sets uses different set point channels. The number of the channel for every parameter set may be specified in ecICP. The ID of the channel can not be changed when the controller is running.

ecCST Controller Algorithm

Status: 2010-06-25

Page 27 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Activate autoswitch by channel: This is the ID of the channel to activate the automatic switching between parameter sets. This means that the controller uses its input signals to decide which parameter set has to be used. The conditions for the switching have to be defined with ecICP. Please refer to the ecICP manual for detailed information. If the value of this channel is set to 0, automatic switching is disabled. If the value of this channel is set to 1, automatic switching is enabled. Furthermore, the value of the channel Current parameter set channel has to be set to a value greater than 0. This means, if Current parameter set channel is set to 0, the controller will be in manual mode, independent of the value of Activate autoswitch by channel. This feature allows switching to manual mode at every time. As long as automatic switching is enabled, the controller will send the number of the used controller parameter set to Current parameter set channel. If no conditions are fulfilled, the controller will use the last valid parameter set. The ID of the channel can not be changed when the controller is running. Automatic switching is only available with the ECPID AddOn Autoswitch. For details on AddOns, please refer to 3rd Party information and to the ecICP manual. Relative hysteresis: This is the ID of the channel to set the relative switching hysteresis during runtime. The hysteresis will be used to calculate the switching thresholds. This parameter may be helpful to avoid permanent switching because of noisy signals. Example: Switching threshold was defined at 3000, relative hysteresis is set to 0.1 (=10%). This means, the switching will happen if the signal is 2700 or 3300, not at 3000. By default, this value will be set to 0.0. The ID of the channel can not be changed when the controller is running. This feature is only available with the ECPID AddOn Autoswitch. Time hysteresis: This is the ID of the channel to set the time switching hysteresis during runtime. This hysteresis is used to define the period; a condition must be satisfied before the controller will switch from one parameter set to another. This parameter may be helpful to avoid permanent switching because of noisy signals. Example: Switching threshold is 5 (seconds). This means the switching will happen is the signal is below or over 3000 for more than 5 seconds. By default, this value will be set to 0.0. The ID of the channel can not be changed when the controller is running. This feature is only available with the ECPID AddOn Autoswitch.

ecCST Controller Algorithm

Status: 2010-06-25

Page 28 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Channel with special input for switching: This is the ID of the channel to specify a special signal to the controller. The automatic switching takes care of four signals, set point, system output, controller output and a fourth signal. This fourth signal may be provided with the help of this channel. The ID of the channel can not be changed when the controller is running. This feature is only available with the ECPID AddOn Autoswitch. Switching table file: This file contains the information about the switching conditions. The complete path must be specified here. The file is generated by ecICP and should not be modified manually. This parameter can not be changed when the controller is running. The filename will be evaluated when ECPID_Init is called. Select Switching Threshold Channels: This button will open a dialog as in Fig 12. This dialog may be used to specify channels that should be used to change the switching thresholds during runtime. The thresholds are saved to the switching table file and will be loaded if Morphe is restarted. Depending on the number of parameter sets, this dialog will look different. This dialog allows to specify channels to change the limits of the operating areas (= switching thresholds) at runtime. For every limit that was specified in ecICP, a channel is needed. If it is not necessary to change limits at runtime, no channels have to be selected. This feature is only available with the ECPID AddOn Autoswitch.

ecCST Controller Algorithm

Status: 2010-06-25

Page 29 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

Fig 12 Changing switching thresholds at runtime

Status: 2010-06-25

Page 30 of 62

ExpertControl, 2003-2010

_______________________________________________________________
10.3 Error messages
The following error messages may appear during using ECPID: -1 Expert Control license is not present or has expired! This error means that the driver was not able to find an ExpertControl license. In this case, please contact your vendor. -2 File with controller parameter sets not found. The driver was not able to open the file with the controller parameters. Please check that the path is specified correctly. -3 The controller parameter file contains not enough parameter sets. The number of parameter sets specified in the OpCode dialog is greater than the number of parameter sets found in the file. Please specify the correct number or use the automatic mode (=0). -4 The number of parameter sets is uneven although a ramp controller should be used! For every operating area one parameter set for the step controller and one parameter set for the ramp controller is needed. This error should never happen if the file was generated be ecICP. To get details how to add additional parameter sets to a file, please contact ExpertControl GmbH. -5 The controller must run with a sample time less than the one that is specified. Every controller needs a specific minimum sample time to run stable. If your application does not fulfil this condition, the controller will not run. Instead, the output will set to 0.0. The minimum needed sample time was calculated by ecICP and is part of the controller parameters. -6 The controller must run with a sample time that is less than the sample time that is specified. This can produce oscillations in the closed loop. This is just a warning because the applications sample time is nearly ok. But the control quality may not be optimal. -7 No Observer parameter where found. Observer will be disabled. No observer parameters were found in the controller parameter file although the observer was enabled in the OpCode dialog. Please use ecICP to create observer parameters of disable the observer.

ecCST Controller Algorithm

-8 No frame controller parameters where found. Frame controller will be disabled. Status: 2010-06-25 Page 31 of 62 ExpertControl, 2003-2010

_______________________________________________________________
No ramp controller parameters were found in the controller parameter file although the ramp controller was enabled in the OpCode dialog. Please use ecICP to create ramp controller parameters of disable the observer. No parameter sets found. It seems that the controller parameter file does not contain any valid parameters. Please check if the correct file was specified. No license found for ECPID-AddOn Autoswitch. This AddOn will be disabled. No license was found for the ECPID-AddOn Autoswitch. Please contact your vendor. No file for switching threshold is selected. Automatic switching was selected in the ECPID_Init OpCode but no file was specified where the switching conditions can be read from. Please specify the correct file. The file with the switching threshold contains wrong data. Automatic switching can not be activated. The file that should contain the switching conditions contains no or wrong data. This should not happen if the file was created by ecICP.

ecCST Controller Algorithm

Status: 2010-06-25

Page 32 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

11 Parameters, inputs and outputs of ecCST


This paragraph describes the parameters, inputs and outputs of ecCST in general. Please refer to the paragraphs corresponding to your target system to see, how the details described here refer to the specific implementation of ecCST.

Status: 2010-06-25

Page 33 of 62

ExpertControl, 2003-2010

_______________________________________________________________
ecCST Parameters The parameters described here are needed during initialization of the controller. They should not be changed at runtime. Number of set point channels For most applications, this value should be 1 which means that there is one set point input. This value should be greater than one if: 1. You have a SIMO/MIMO plant which means that your plant has several outputs that should be controlled at the same time. 2. You have a SISO or MISO plant but there are several operating areas defined in ecICP with respect to different plant output signals. Every of these output signals refer to its own set point signal. Number of parameter sets This is the number of parameter sets provided to ecCST. If using the result files generated by ecICP, this will always be twice the number of operating areas. If there are 2 operating areas, this number must be 4! This is because ecICP always generates parameter sets for main controller and a ramp controller. If ramp controller was not selected in ecICP, there will be dummy parameters in the result file. Nevertheless, the complete number of parameter sets will be 2*(# of operating areas) If using ecCST with LabVIEW or National Instruments target, setting this parameter to 0 causes ecCST to get the number of parameter sets automatically from the controller parameter file. Number of output channels For most applications, this value should be 1 which means that there is one controller output. This value should be greater than one if: 1. You have a MISO/MIMO plant which means that your plant has several inputs that should be set at the same time. 2. You have a SISO or SIMO plant but there are several operating areas defined in ecICP with respect to different plant input signals. Use ramp controller (1=enabled, 0=disabled). If this parameter is set to 1, ecCST will detect ramps in the set point signal and switch to special ramp controllers if needed. These ramp controllers will avoid tracking errors. If this feature is enabled but there are no ramp controller found in the controller parameters, no switching will happen. Use observer (1=enabled, 0=disabled). If this parameter is set to 1, an observer will be used in ecCST. This may be useful if the measured signal is noisy or if there are periodical losses of sensor signals. Use decoupling Status: 2010-06-25 Page 34 of 62 ExpertControl, 2003-2010

ecCST Controller Algorithm

_______________________________________________________________
(1= enables, 0=disabled). Normally, this parameter should be 0. This parameter should only be 1, if there are multiple ecCST controllers running in parallel, controlling an YxY coupled system. In this case, the decoupling output of one controller must be connected to the decoupling inputs of all other controllers and vice versa. Additionally, the controller parameters must contain decoupling parameters. At the moment, this feature is available for Simulink, dSPACE, Morphe and RT-LAB only. Use Model predictive control (1 = enable, 0 = disable) Normally, this parameter should be 0. If this parameter is set to 1, ecCST will internally add a module for model predictive control (MPC). At the moment, this feature is available for Simulink, dSPACE and RT-LAB only. Number of set point channels This is the width of the input that will provide the current decoupling signals from parallel ecCST controllers. In case that no decoupling is needed, this parameter should be set to 0. DeltaT This parameter specifies the sample time which is used to run the controller. It must be specified in seconds. If this parameter is not correct, it is very likely that ecCST will be unstable. Examples: If using Simulink and the sample time of the model is 0.1 seconds, DeltaT must be 0.1 seconds too. If using a National Instruments target and the real time loop is running at 1 kHz, DeltaT must be 0.001 seconds. Filename This parameter specified the complete path and filename of the file that contains the controller parameters calculated by ecICP. This parameter is only needed if the target system provides a file system. If using dSPACE, please see below to get details on an input to ecCST for providing the controller parameters. If using other targets without file system, please contact us. Use basic PID controller (1 = enable, 0 = disable) Normally, this parameter should be 0. If this parameter is set to 1, a basic PI/PID controller will be realized instead of the more flexible ecCST controller. If using the PI/PID controller, feature like ramp controller, observer, bumpless switching, decoupling and model predictive control are not available. At the moment, this feature is available for Simulink, dSPACE and RT-LAB only. If using this feature, the parameters for the PI/PID controller must be provided to the Simulink block. Please see description of the corresponding input.

ecCST Controller Algorithm

Status: 2010-06-25

Page 35 of 62

ExpertControl, 2003-2010

_______________________________________________________________
ecCST Inputs The inputs described here are read at every cycle. They may change their value at runtime. Set point This input is used to specify the current set point. If the parameter Number of set point channels is greater than 1, this input must be a vector with the same number of elements, scalar otherwise. At every cycle, ecCST will read the current set point and adapt its output accordingly. Measured signal This input is used to send the current measured values into the controller. If the parameter Number of set point channels is greater than 1, this input must be a vector with the same number of elements, scalar otherwise. At every cycle, ecCST will read the current measured values and adapt its output accordingly. Manual controller output This input is used to specify the controller output manually. If the parameter Number of output channels is greater than 1, this input must be a vector with the same number of elements, scalar otherwise. This value will only be considered if PS = 0 and MSG != -1. In this case, the output of ecCST will be set to the value of this input. PS This input may be used to specify the parameter set to use. The number of the parameter set refers to the number of the operating area in ecICP. If there are 2 operating areas defined in ecICP, valid values for this input are 1 and 2. In every case, 0 is a special value. It switches the controller in manual mode and the controller output will be set to the value of Manual controller output. If automatic switching between parameter sets is activated, PS will not be considered. Please see description of MSG for details. MSG This input is used to active automatic switching between parameter sets. Automatic switching is an add-on module for ecICP and ecCST. If this module is part of the installation, the feature may be activated by setting this input to -1. Precondition is that the controller parameters contain information about the switching conditions. If using a target system with file system, these parameters are part of the controller parameter file. If using dSPACE, there will be a separate input to provide these parameters to ecCST. If using other targets without file system, please contact us. If the automatic switching module is not part of the installation, the PS input has to be used to switch between different parameter sets.

ecCST Controller Algorithm

Time Status: 2010-06-25 Page 36 of 62 ExpertControl, 2003-2010

_______________________________________________________________
This input is the current time. This time must be 0.0 when ECRunControllerOneTimeStep is called the first time. This input is not needed for Simulink, dSPACE and RT-LAB. TempLims This input may be used to modify the controller outputs at runtime. Normally, when calculating the controller parameters with ecICP, limits for the controller outputs are part of the results. But it is also possible to modify these limits at runtime using this input. Modifying in this case means to narrow the limits. Expansion at runtime is not yet supported. To use this feature, a vector or array must be provided. It has to contain 2*(Number of output channels) elements. At first, the lower limits for all output channels, then the upper limits for all output channels. Example for 1 output channels: If the input is {-1, 2}, the controller output will be between -1 and 2. Example for 2 output channels: If this input is {-10, 0.5 1 5}, the first controller output channel will be between -10 and 1, the second controller output channel will be between 0.5 and 5, If this feature should not be used, pass NULL or do not connect the corresponding input. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. Special input This input is used in combination with the automatic switching feature only. If defined in ecICP, this input will be used to determine the correct parameter set. This parameter is a scalar. If this feature should not be used, pass 0 or do not connect the input. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. Decoupling inputs This input is used to control coupled systems with multiple inputs and multiple outputs. In this case, several ecCST controllers must be used in parallel. The decoupling output of one ecCST must be connected to the decoupling inputs of all other ecCSTs and vice versa. Additionally, the parameter Use decoupling must be set to 1 for all controllers. If this feature should not be used, pass NULL or do not connect the input. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. If using this feature with Simulink, dSPACE or RTLAB, it may be necessary to insert a memory block in one of the two connections in order to avoid algebraic loops. Operation mode This input is used to set the ecCST controller to different operation modes: 0 Normal control mode. This mode requires that the controller was initialized before (mode 1 or 2). Status: 2010-06-25 Page 37 of 62 ExpertControl, 2003-2010

ecCST Controller Algorithm

_______________________________________________________________
Initialization mode. The controller will be initialized in the cycle where the input is 1 for the first time. At this time, ecCST controller parameters or PID-T1 parameters from the block input will be read. All internal variables will be reset. After initialization, the controller will work like mode 0. 2 Initialization mode. The controller will be initialized in every cycle where the input is 2. EcCST controller parameters or PID-T1 parameters from the block input will be read. 3 Stop mode. The controller will not be calculated. The controller output will be set to 0.0. 4 Manual mode. This mode is similar to setting PS to 0. In this mode, Manual controller output will be send to the controller output. If the controller was initialized (mode 1 or 2) before switching to mode 4, it will be possible to switch from mode 4 to mode 0. Otherwise, the controller must be initialized before switching to mode 0. 5 Stop mode. The controller will not be calculated. The controller output will hold the last valid value. If this input is not connected, the mode will be set to 1 internally which means initialization at time 0.0 and running the normal controller afterwards. At the moment, this feature is available for Simulink, dSPACE and RT-LAB only. ecCST controller parameters At the moment, this input is used for dSPACE only. In this case, there is no file system and therefore, using files to provide controller parameters is not possible. This input is used to provide the controller parameters to ecCST. When calculating the controller, ecICP will also generate a file with all the values for this input (resulting_ctrdata_all.rttarget). The content of this file must be set in the Simulink model before compiling it for dSPACE. It is also possible to change the controller parameters at runtime using ControlDesk. If so, the operation mode should be set to a value that causes ecCST to reread the controller parameters. PID controller parameters At the moment, this input is used for dSPACE only. In this case, there is no file system and therefore, using files to provide PI/PID parameters is not possible. This input is used to provide PI/PID controller parameters to ecCST. The parameters are: Kp, Tn, Tv, T1 and a time constant for a measurement filter or 0 if no filter should be applied. The parameters must be set in the Simulink model before compiling it for dSPACE. It is also possible to change the PI/PID parameters at runtime using ControlDesk. If so, the operation mode should be set to a value that causes ecCST to reread the PI/PID parameters. 1

ecCST Controller Algorithm

Status: 2010-06-25

Page 38 of 62

ExpertControl, 2003-2010

_______________________________________________________________
Switching table At the moment, this input is used for dSPACE only. In this case, there is no file system and therefore, using files to provide conditions for automatic switching is not possible. This input is used to provide the switching conditions to ecCST. When calculating the controller, ecCST will also generate a file with all the values for this input (switchtable_file.rttarget). The content of this file must be set in the Simulink model before compiling it for dSPACE. The file switchtable_file.rttarget contains two special parameters which may be modified by the user: The last two parameters will be 0 by default. These parameters may be used to specify hysteresis values for the automatic switching mechanism. The first of these parameters defines a relative hysteresis. Possible values are between 0 and 1. Example: Lets assume the switching threshold is 120. If the first hysteresis parameter is set to 0.1, this means that the value has to cross 120+10% = 132 before ecCST will switch to another parameter set. The other way round, the value has to cross 120-10% = 108 to cause ecCST to switch back. The second of the hysteresis parameters defines a time hysteresis. The time is specified in seconds, therefore, possible values are 0 and positive values. Example: If this value is set to 1 and the switching threshold is 120, ecCST will wait 1 second after the measured value has crossed 120 before switching to another parameter set. Both hysteresis parameters may be combined. If this input is not connected, no automatic switching between parameter sets will be possible. Output offsets This input may be used to add an offset to the controller output calculated by ecCST. The input must contain Number of output channels elements. However this input is set, the controller output limits will be considered. This input may be used for ecCST controller mode but also for PI/PID controller mode. If this feature should not be used, pass NULL or do not connect the input. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. Sweep frequency This input is used to improve the control loop quality if sinus-like setpoints with different frequencies are used. The controller needs to run in sweep controller mode for this purpose. The input is in Hz.

ecCST Controller Algorithm

Status: 2010-06-25

Page 39 of 62

ExpertControl, 2003-2010

_______________________________________________________________
ecCST outputs The outputs described here will be set by ecCST at every cycle. Controller output This is the normal controller output. This output will contain Number of output channels elements. PS This output is used to indicate the parameter set that is used by ecCST. Normally, this will be the same as the input PS. If the ramp controller is enabled, this output may also show the number of the corresponding ramp controller parameter set. If automatic switching is enabled, this output will indicate which the parameter set is determined by the automatic switching module. Error If an error occurred in ecCST, this output will indicate the corresponding error number. Please refer to the corresponding chapter for more information about errors. Decoupling output This output is used to control coupled systems with multiple inputs and multiple outputs. In this case, several ecCST controllers must be used in parallel. The decoupling output of one ecCST must be connected to the decoupling input of all other ecCSTs and vice versa. Additionally, the parameter Use decoupling must be set to 1 for all controllers. If this feature should not be used, pass 0 or do not connect the output. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. If using this feature with Simulink, dSPACE or RTLAB, it may be necessary to insert a memory block in one of the connections in order to avoid algebraic loops. Info This output will be set to 1 if ecCST has detected a set point ramp. It will be 0 otherwise. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RT-LAB. MPC set point This output will indicate a modified set point if MPC is used. At the moment, this feature is available only if ecCST is used in C-Code or for Simulink, dSPACE and RTLAB.

ecCST Controller Algorithm

Status: 2010-06-25

Page 40 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 12 Using ecCST from C-code


For a source code example, please refer to 12.5.
ECInitControllers ECRunControllerOneTimeStep

ecCST Controller Algorithm

The ecCST algorithm provides two functions;

ECInitControllers has to be called once to initialize the controller. ECRunControllerOneTimeStep has to be called at every time step. In this function, the controller calculations will happen and the controller output is calculated.

In the initialization phase, ECInitControllers has to be called. This function will initialize the internal controller variables and read the controller parameters. It is important that this function is called before ECRunControllerOneTimeStep is called the first time. ECInitControllers is defined as:
ECInitControllers(int *i_defs, ecREAL dt_in, ecREAL *LowerUpperLimPairs, char *fname, int *iMemPtr, ecREAL *dMemPtr, ecREAL **dpMemPtr, int iReserved, int iIsNewRtTargetFileVersion);

12.1 Initialization Phase

The meaning of the parameters is as follows: i_defs is an array with eight elements. The elements of idefs have the following meanings: idefs[0] Please refer to description of parameter Number of set point channels. idefs[1] idefs[2] idefs[3] idefs[4] idefs[5] . Please refer to description of parameter Number of parameter sets. Please refer to description of parameter Number of output channels. Please refer to description of parameter Use ramp controller. Please refer to description of parameter Use observer. Please refer to description of parameter Use decoupling

Status: 2010-06-25

Page 41 of 62

ExpertControl, 2003-2010

_______________________________________________________________
idefs[6] idefs[7] dt_in Please refer to description of parameter Use model predictive control. Please refer to description of parameter Number of decoupling inputs. Please refer to description of parameter DeltaT.

ecCST Controller Algorithm

LowerUpperLimPairs Please refer to description of input TempLims.. Fname Please refer to description of parameter Filename. If ecCST is used on a system without file system other than dSPACE, this parameter is replaced by CST_CONTROLLER_TYPE ** addr which means that the address of a data structure in memory has to be passed. For a detailed description of this structure, please see below. iMemPtr is a pointer to a memory area. ecCST will use this memory to save interger variables. The size of this memory should be retrieved by calling the function GetIMemSize(). This function will return the number of integers that will be saved in this memory. The user has to take care to allocate enough memory. The memory must be reserved for exclusive use by ecCST. This parameter will also be passed to ECRunControllerOneTimeStep. dMemPtr is a pointer to a memory area. ecCST will use this memory to save double variables. The size of this memory should be retrieved by calling the function GetDMemSize(i_defs[0],i_defs[1],i_defs[2]). This function will return the number of doubles that will be saved in this memory. The user has to take care to allocate enough memory. The memory must be reserved for exclusive use by ecCST. This parameter will also be passed to ECRunControllerOneTimeStep. dpMemPtr is a pointer to a memory area. ecCST will use this memory to save pointer variables. The size of this memory should be retrieved by calling the function GetPMemSize(). This function will return the number of pointer that will be saved in this memory. The user has to take care to allocate enough memory. The memory must be reserved for exclusive use by ecCST. This parameter will also be passed to ECRunControllerOneTimeStep. Detailed explanation of the different methods to pass the controller parameters All parameters needed for the control algorithm may be read from different sources depending on the target system. The following summary shows the differences and assumptions: 1) Windows: controller parameters may read from: a. standard ASCII file or b. memory (see structure below) floating point precision: ecREAL equals double 2) MicroController and other systems without a file system: Status: 2010-06-25 Page 42 of 62 ExpertControl, 2003-2010

_______________________________________________________________
controller parameters may read from: a. memory (see structure below) floating point precision: ecREAL equals float

ecCST Controller Algorithm

1. ASCII File Structure In the following the content of a parameter file is shown containing two parameter sets. If more parameter sets are available, adaptations need to be done accordingly. Normally, these files are generated by ecICP and the user should not modify them. In case, a user wants to build own files, the structure has to be the same as described.
[USE_PARSETS] 1 Main Controller Operating Area 1 2 Ramp Controller Operating Area 1 [/USE_PARSETS] [PS1] 2.02 Version 1.000000e+000 Controller Type 0 Observerorder 8.513427e+002 D0 5.835555e+001 D1 1.000000e+000 D2 -8.513427e+002 N0 3.389525e+001 N1 0.000000e+000 N2 -8.340857e-001 V -2.627284e+003 B0s 6.601935e+002 A0s -1.000000e+002 WMIN 1.000000e+002 WMAX -1.000000e+002 UMIN 1.000000e+002 UMAX 0.000000e+000 T1cf 1.080000e-002 T_1 1 REF 1 outputchannel 0.0 NOISE reserved for future extension 0.0 NOISEfilter 0.0, 0.2 0 SpeedLevel 0 1 -2.758683e+002 R0 -1.463784e+001 R1 -8.340857e-001 R2 1.000000e+000 F0 0.000000e+000 F1 0.000000e+000 F2 0.000000e+000 F3 0.000000e+000 F4 9.554770e+000 K1 0.000000e+000 DEADBAND 0.000000e+000 QUANT

Status: 2010-06-25

Page 43 of 62

ExpertControl, 2003-2010

_______________________________________________________________
0.000000e+000 StartUpThreshold 0.000000e+000 MinOut 0.000000e+000 StandStill 0.000000e+000 To_StandStill 0.000000e+000 WakeUpTime 1 NumZs -2.627284e+003 Zs0 3 NumNs 6.601935e+002 Ns0 2.446030e+001 Ns1 1.000000e+000 Ns2 0.00342727 MinDT 0.000000e+000 obsd0 0.000000e+000 obsr0 0.000000e+000 obsn0 1 SampleTimeMultiplier 1 ChannelStandStill 0.4 Td 3 NumSFilterSize 3 DenSFilterSize 3.309353e+002 NumSFilter1 -0.000000e+000 NumSFilter2 -0.000000e+000 NumSFilter3 3.309353e+002 DenSFilter1 1.750600e+001 DenSFilter2 1.000000e+000 DenSFilter3 1 NumYFilterSize 1 DenYFilterSize 1.000000e+000 NumYFilter1 0.000000e+000 NumYFilter2 1.000000e+000 DenYFilter1 0.000000e+000 DenYFilter2 0.000000e+000 Decoupling -1.000000e+002 outerumin 1.000000e+002 outerumax [INPUT_CHAR] 0 [/INPUT_CHAR] [OUTPUT_CHAR] 0 [/OUTPUT_CHAR] [/PS1] [PS2] 1.02 Version 0.000000e+000 Controller Type 0 Observerorder 0.000000e+000 D0 0.000000e+000 N0 0.000000e+000 V 0.000000e+000 B0s 0.000000e+000 A0s

ecCST Controller Algorithm

Status: 2010-06-25

Page 44 of 62

ExpertControl, 2003-2010

_______________________________________________________________
0.000000e+000 WMIN 0.000000e+000 WMAX 0.000000e+000 UMIN 0.000000e+000 UMAX 0.000000e+000 T1cf 0.000000e+000 T_1 1 REF 1 outputchannel 0.0 NOISE reserved for future extension 0.0 NOISEfilter 0.0, 0.2 0 SpeedLevel 0 1 0.000000e+000 R0 0.000000e+000 F0 0.000000e+000 F1 0.000000e+000 F2 0.000000e+000 F3 0.000000e+000 F4 0.000000e+000 K1 0.000000e+000 DEADBAND 0.000000e+000 QUANT 0.000000e+000 StartUpThreshold 0.000000e+000 MinOut 0.000000e+000 StandStill 0.000000e+000 To_StandStill 0.000000e+000 WakeUpTime 0 NumZs 0 NumNs 0 MinDT 0.000000e+000 obsd0 0.000000e+000 obsr0 0.000000e+000 obsn0 1 SampleTimeMultiplier 1 ChannelStandStill 0.4 Td 0 NumSFilterSize 0 DenSFilterSize 0.000000e+000 NumSFilter1 0.000000e+000 NumSFilter2 0.000000e+000 NumSFilter3 0.000000e+000 DenSFilter1 0.000000e+000 DenSFilter2 0.000000e+000 DenSFilter3 0 NumYFilterSize 0 DenYFilterSize 0.000000e+000 NumYFilter1 0.000000e+000 NumYFilter2 0.000000e+000 DenYFilter1 0.000000e+000 DenYFilter2 0.000000e+000 Decoupling -1.000000e+002 outerumin 1.000000e+002 outerumax

ecCST Controller Algorithm

Status: 2010-06-25

Page 45 of 62

ExpertControl, 2003-2010

_______________________________________________________________
[INPUT_CHAR] 0 [/INPUT_CHAR] [OUTPUT_CHAR] 0 [/OUTPUT_CHAR] [/PS2]

ecCST Controller Algorithm

It is important, that at first all parameter sets for main controllers and then all parameter sets for ramp controllers are listed up in the file. Thats because the algorithm switches between the main controller and the corresponding ramp controller automatically, depending on the set point signals characteristic. The number of the ramp controller parameter set is computed as: PARSETS_DIM /2+ activeParset, where PARSETS_DIM is the total number of parameter sets and activeParset is the number of the current active main controller parameter set. 2. Data Structure when controller parameter sets are available in Memory If the controller parameters shall be initialized from data available in memory, a data structure as defined in ECcstBas.h must be provided. Assuming there are PARSETS_DIM controller parameter sets, define
CST_CONTROLLER_TYPE controller_data[PARSETS_DIM]; CST_CONTROLLER_TYPE *controller_data_ptr[PARSETS_DIM]; //fill controller_data[i] here for (i=0; i< PARSETS_DIM; i++) { controller_data_ptr[i] = &controller_data[i]; }

and fill the variables in controller_data[0] controller_data[PARSETS_DIM-1] with the values corresponding to the controller parameter sets. It is important, that at first all parameter sets for main controllers and then all parameter sets for ramp controllers are contained in the array of controller_data. Thats because the algorithm switches between the main controller and the corresponding ramp controller automatically, depending on the reference signals characteristic. The number of the ramp controller parameter set is computed as: PARSETS_DIM /2+ activeParset, where PARSETS_DIM is the total number of parameter sets and activeParset is the number of the current active main controller parameter set. For details concerning the controller parameters, please refer to the ecICP users manual.

Status: 2010-06-25

Page 46 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

In both cases The user may define any number of controller parameter sets for any number of signals (n_references) to be controlled.

IMPORTANT: ECInitController is required to be called once prior to calling ECRunControllerOneTimeStep


For example source code of how to use ECInitController, please refer to the chapter 12.5. ECInitController returns with an error code which is 0 in case of success or less than 0 otherwise. The meaning of the errors is described in chapter 13.

12.2 Run Phase


Within the run phase the function ECRunControllerOneTimeStep has to be called at every time step. ECRunControllerOneTimeStep is defined as:
ECRunControllerOneTimeStep(ecREAL *allOuts, ecREAL *RefYmUman, int ips_in, int msg_type, ecREAL ActualTime, int *iMemPtr, ecREAL *dMemPtr, ecREAL **dpMemPtr,ecREAL *tempLims,int iNumSwitchTables, SWITCH_TABLE* switch_table[MAX_TABLES],int* ps_map[MAX_TABLES],ENTRY* limit_table[MAX_TABLES][MAX_DIMS],ecREAL specialChannel, ecREAL *rDecouplingInputs, int iNumSetpointPreviewPoints,ecREAL *output_offsets, ecREAL frequency);

The meaning of the parameters is as follows:

allOuts is a array of for the controller outputs. The number of elements has to be 5+ idefs[2]. The

first elements of this array will be used as controller outputs. The last 5 outputs will show the currently used parameter set, the last error code, the decoupling output, an information signal and the MPC set point value. Please refer to the description of the ecCST outputs.

RefYmUman is an array of i_defs[0]*2+i_defs[2] elements. Herein, the user has to pass i_defs[0] set point signals, i_defs[0] measured signals and i_defs[2] signals that should be used as a manual controller output. Please refer to the description of Set point, Measured signal and Manual controller output. ips_in Please refer to description of input PS. msg_type Please refer to description of input MSG. ActualTime Please refer to description of input Time. Status: 2010-06-25 Page 47 of 62 ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

IMPORTANT: ActualTime is required to start from 0.0.


iMemPtr is the same parameter as used with ECInitControllers. dMemPtr is the same parameter as used with ECInitControllers. dpMemPtr is the same parameter as used with ECInitControllers. tempLims Please refer to description of input TempLims.
iNumSwitchTables defines the number of switching table that are passed by the next parameter.

switch_table is a data structure that contains information for automatic switching of parameter sets. If this parameter should not be used, it has to be NULL. ps_map is a data structure that contains information for automatic switching of parameter sets. If this parameter should not be used, it has to be NULL. limit_table is a data structure that contains information for automatic switching of parameter sets. If this parameter should not be used, it has to be NULL. specialChannel Please refer to description of input Special input. rDecouplingInputs Please refer to description of input Decoupling inputs. iNumSetpointPreviewPoints is a parameter that specifies the number of preview cycles for model predicitve control. If model predictive control is enabled, this parameter must be greater than 0. Additionally, dMemPtr must be increased by that number of values. output_offsets Please refer to description of input Output offsets. frequency is the current frequency of a sinus-like setpoint signal. If ecCST is used in sweep controller mode, this input is needed.

Status: 2010-06-25

Page 48 of 62

ExpertControl, 2003-2010

_______________________________________________________________
12.3 Shipment
Shipment includes ECcst_hlp.obj ECcstPrototypes.h ECcstBas.h EccstBasMem.h ReadMe.txt These ecCST files may be used in your development/target environment. The number of usage of these ecCST files on different computers/controllers is defined by the number specified in the corresponding purchase. For details, please contact your vendor.

ecCST Controller Algorithm

12.4 Application
If you are interested in getting a description of an application example, please contact your vendor.

Status: 2010-06-25

Page 49 of 62

ExpertControl, 2003-2010

_______________________________________________________________
12.5 Source Code Example
This is a C-source code example with one reference channel, one output channel and two parameter sets. This example is based on the assumption that the ecCST algorithm is available as object. If you want to use it from a Dll, please contact us to get information how to implement the calls to the Dll. The example shows how ECInitController may get called from within the target environment and how the required parameters need to be defined. It also shows how ECRunControllerOneTimeStep may get called from within target system and how the required parameters need to be defined.

ecCST Controller Algorithm

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include #include #include #include #include #include "ECcstBas.h" "ECcstBasMem.h" "ECcstPrototypes.h" "getNumberOfParams.h" <limits.h> "SwitchingTable.h"

#define ALL_OUTS_DIM (n_outputs+5) int main(int argc, char argv[]){ int n_references int n_param_set int n_outputs = 1;//Number of reference channels = 0;//Number of parameter sets = 1;//number of output channels

int idefs[I_DEF_SIZE]; ecREAL dt_in; int *iMemPtr = NULL; ecREAL *dMemPtr = NULL; ecREAL *dpMemPtr[P_MEM_SIZE]; ecREAL *tempLims = NULL; ecREAL *RefYmUman = NULL; ecREAL *allOuts = NULL; int ret,j,i; int activeParset; int msg; int iIMemSize,iDMemSize; ecREAL ActualTime = 0.0; char filename[1024];

Status: 2010-06-25

Page 50 of 62

ExpertControl, 2003-2010

_______________________________________________________________
/*Start autoswitch section*/ SWITCH_TABLE *switchtable = NULL; int** parset_numbers = NULL; ENTRY* entry[MAX_TABLES][MAX_DIMS]; int iNumTables = 0; int mul_size = 1; int add_size = 0; int iIndex; /*End autoswitch section*/ //set filename with controller parameters strcpy(filename,"c:\\test.dat"); if(n_param_set==0){ n_param_set = getNumberOfParameterSets( filename, "[USE_PARSETS]", "[/USE_PARSETS]" ); } iIMemSize = GetIMemSize(); iDMemSize = GetDMemSize(n_references,n_param_set,n_outputs); idefs[0] = n_references; idefs[1] = n_param_set; idefs[2] = n_outputs; idefs[3] = 0;//ramp controller 1=enabled,0=disabled idefs[4] = 0;//observer 1=enabled,0=disabled idefs[5] = 0;//decoupling 1=enabled, 0=disabled idefs[6] = 0;//model predictive control, 1= enabled, 0=disabled idefs[7] = 0;//number of decoupling inputs dt_in = 0.0001;//Sampling Time msg=-1; //get memory for internal controller memory iMemPtr = malloc(iIMemSize*sizeof(int)); if(iMemPtr == NULL){ return -1; } dMemPtr = malloc(iDMemSize*sizeof(ecREAL)); if(dMemPtr == NULL){ return -1; } //get memory to pass signals to the controller RefYmUman = malloc ((n_references*2+n_outputs)*sizeof(ecREAL)); if(RefYmUman == NULL){ return -1; } allOuts = malloc (ALL_OUTS_DIM*sizeof(ecREAL)); if(allOuts == NULL){ return -1; } for(i=0;i<ALL_OUTS_DIM;i++){ allOuts[i] = 0.0; }

ecCST Controller Algorithm

Status: 2010-06-25

Page 51 of 62

ExpertControl, 2003-2010

_______________________________________________________________
//get memory for controller output limits to be defined at runtime tempLims = malloc((n_outputs*2)*sizeof(ecREAL)); if(tempLims != NULL){ //set lower and upper limits if needed tempLims[0] = -200.0; tempLims[1] = 200.0; } /*Start autoswitch section*/ iNumTables = getNumTables(filename); if(iNumTables > 0){ switchtable = malloc(iNumTables*sizeof(SWITCH_TABLE)); parset_numbers = malloc(iNumTables*sizeof(int)); if((switchtable != NULL) && (parset_numbers != NULL)){ for(iIndex = 0; iIndex < iNumTables; iIndex++){ mul_size=1; add_size=0; getCombs(filename,&switchtable[iIndex].iRefChannel,&switchtable[iIndex ].iOutChannel,iIndex); getNumDims(filename,&switchtable[iIndex].num_dims,iIndex); switchtable[iIndex].hyst_rel = 0.0; switchtable[iIndex].hyst_time = 0.0; if(switchtable[iIndex].num_dims > 0){ getDimSizes(filename,switchtable[iIndex].num_dims,switchtable[iIndex]. size_dim,iIndex); for(i=0;i<switchtable[iIndex].num_dims;i++){ mul_size=mul_size * switchtable[iIndex].size_dim[i]; add_size=add_size + switchtable[iIndex].size_dim[i]; entry[iIndex][i] = malloc(switchtable[iIndex].size_dim[i]*sizeof(ENTRY)); if(entry[iIndex][i] != NULL){ getDimLimits(filename, i,switchtable[iIndex].size_dim[i],entry[iIndex][i],iIndex); } } parset_numbers[iIndex] = malloc(mul_size*sizeof(int)); if(parset_numbers[iIndex] != NULL){ getParsetNumbers(filename,mul_size,parset_numbers[iIndex],iIndex); } } } } }

ecCST Controller Algorithm

Status: 2010-06-25

Page 52 of 62

ExpertControl, 2003-2010

_______________________________________________________________
/*End autoswitch section*/ //Init controller ret=ECInitControllers(idefs, dt_in, dMemPtr, dpMemPtr,NULL,0); //Use your own loop while(ActualTime<5.0){ if(ret == NO_CST_ERROR){ for(j=0;j< n_references ;j++){ //use the real reference signal here! //-> adapt to your requirements if((ActualTime >= 0.0) && (ActualTime < 1.0)){ RefYmUman[j]=-1.0; } if((ActualTime > 1.0) && (ActualTime < 2.0)){ RefYmUman[j]= 1.0; } if((ActualTime > 2.0) && (ActualTime < 3.0)){ RefYmUman[j]= 500.0; } if((ActualTime > 3.0) && (ActualTime < 4.0)){ RefYmUman[j]= -10.0; } if(ActualTime > 4.0){ RefYmUman[j]= 0.0; } } for(j=n_references;j< n_references*2 ;j++){ //use the real measured signal here! /*Start system simulation section*/ RefYmUman[j] = SimulateSystem(allOuts[0],dt_in,ActualTime); /*End system simulation section*/ } //compute the active Parset activeParset=1;//-> adapt to your requirements for(j=n_references*2;j<n_references*2+n_outputs;j++){ //manual output RefYmUman[j]=0.0;//-> adapt to your requirements } //RefYmUman may be changed in ECRunControllerOneTimeStep, therefore, the output is here printf("SetPoint %g Meas %g ",RefYmUman[0],RefYmUman[1]); ECRunControllerOneTimeStep( allOuts, RefYmUman, activeParset, msg, ActualTime, iMemPtr, dMemPtr, dpMemPtr, tempLims, iNumTables,&switchtable,parset_numbers,entry,0,NULL,0,NULL,0.0); ActualTime=ActualTime+dt_in;

ecCST Controller Algorithm

NULL, filename,

iMemPtr,

Status: 2010-06-25

Page 53 of 62

ExpertControl, 2003-2010

_______________________________________________________________
//use the computed controller output in //allOuts[0]..allOuts[n_outputs-1] //check errors in allOuts[n_outputs+1] //-> adapt to your requirements printf("ControllerOut %g PS %g\n",allOuts[0],allOuts[1]); } } //clean up if(RefYmUman!=NULL) {free(RefYmUman); if(allOuts!=NULL) {free(allOuts); if(iMemPtr!=NULL) {free(iMemPtr); if(dMemPtr!=NULL) {free(dMemPtr); if(tempLims!=NULL) {free(tempLims); RefYmUman = NULL;} allOuts = NULL;} iMemPtr = NULL;} dMemPtr = NULL;} tempLims = NULL;}

ecCST Controller Algorithm

for(iIndex = 0;iIndex < iNumTables; iIndex++){ if(parset_numbers!=NULL){ if(parset_numbers[iIndex]!=NULL){ free(parset_numbers[iIndex]); parset_numbers[iIndex] = NULL; } } if(switchtable!=NULL){ for(i=0;i<switchtable[iIndex].num_dims;i++){ if(entry[iIndex][i]!=NULL){ free(entry[iIndex][i]); entry[iIndex][i] = NULL; } } } } if(parset_numbers!=NULL){free(parset_numbers); parset_numbers = NULL;} if(switchtable!=NULL){free(switchtable); switchtable = NULL;} return 0;

Status: 2010-06-25

Page 54 of 62

ExpertControl, 2003-2010

_______________________________________________________________ 13 ecCST Errors


The meaning of the error numbers is as follows: 0 No Error -1 No License found -2 The controller parameter file was not found -3 There were not enough parameter sets in the file -4 The ramp controller should be used but the number of parameter sets is not even. Thats not possible. -5 The sample time DeltaT is critically lower than the sample time that is needed. The controller will not produce an output. -6 The sample time DeltaT is lower than the sample time that is needed. The controller will produce an output but the control may be bad or unstable. -7 No Observer parameters found. Observer will be disabled. -8 No ramp controller parameters found. Ramp controller will be disabled. -9 The number of parameter sets was defined to be 0. This means that the controller will not be able to run. -10 Set point channel is not ok. This error indicates that the user has specified the set point channel to be 0 or less. -11 Output channel is not ok. This error indicates that the user has specified the output channel to be 0 or less. -12 No parameters had been found. This error indicates that the parameter passing via memory has failed. Please contact your vendor. -13 Controller was not in initialization state before setting it to run state. -14 Parameters for switching conditions are not ok. -15 Size of ecCST controller parameter input is not ok (dSPACE only).

ecCST Controller Algorithm

Status: 2010-06-25

Page 55 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

14 Contact to ExpertControl
Contact address, telephone numbers and email addresses of ExpertControl GmbH: www.expertcontrol.com

Status: 2010-06-25

Page 56 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

15 Appendix
15.1 A License Agreement

READ THE TERMS AND CONDITIONS OF THIS LICENCE AGREEMENT CAREFULLY BEFORE OPENING THE PACKAGE CONTAINING THE COMPUTER SOFTWARE. THIS LICENSE REPRESENTS THE ENTIRE AGREEMENT BETWEEN YOU, the "LICENSEE" (either an individual or an entity) AND THE LICENSOR EXPERTCONTROL GMBH ("EC) CONCERNING THE COMPUTER SOFTWARE ("SOFTWARE") AND THE ACCOMPANYING USER DOCUMENTATION . BY OPENING THE PACKAGE CONTAINING THE COMPUTER SOFTWARE, YOU ACCEPT THE TERMS OF THIS AGREEMENT. IF YOU ARE NOT WILLING TO DO SO, RETURN THE UNOPENED PACKAGE FOR A FULL REFUND.

1 LICENSOR

ExpertControl GmbH, Germany, Address information: see www.expertcontrol.com. ecCST engineering software to be used with the computing environments according the corresponding purchase order. Licensed material: EC delivers the SOFTWARE stored on a suitable media and an accompanying user documentation explaining the use of the SOFTWARE. Suitable media includes downloadables from ECs homepage. System requirements: As the requirements change over time, the versions currently supported may be checked on ECs homepage. The License applies for a non transferable, non exclusive right of usufruct for the licensed objects described in 1.1 for an unlimited duration. This License is valid for i) a single CPU computer environment or ii) a network environment as described in 2.2. The SOFTWARE may not be installed or used on more computers than it is covered by this agreement and written in the corresponding purchase order. LICENSEE is responsible for limiting the number of possible concurrent users to the number licensed. LICENSEE may make copies of the SOFTWARE only for backup or archival purposes. The documentation provided with the SOFTWARE may not be copied. LICENSEE shall not re-compile, translate or convert the files contained in the SOFTWARE. LICENSEE shall not attempt to obtain the source code for any portions of the SOFTWARE not provided in source code form, in whole or in part, by reverse engineering, decompilation or disassembly. Status: 2010-06-25 Page 57 of 62 ExpertControl, 2003-2010

1.1 LICENSED OBJECT

2 LICENSE GRANT

_______________________________________________________________
LICENSEE shall use the SOFTWARE only for its internal operations. "Internal operations" shall include use of the SOFTWARE in the performance of consulting or research of third parties who engage LICENSEE as an employee or independent contractor. LICENSEE may allow use of the SOFTWARE by employees, consultants, students and/or (in the case of individual licensees) colleagues, but LICENSEE may not make the SOFTWARE available for use by third parties generally or on "time sharing" basis. LICENSEE may not use SOFTWARE to develop a software product available for shipment which functions primarily or exclusively as or is marked or promoted by LICENSEE as a software tool, and does compete with SOFTWARE or any other EC product available for shipment at delivery date. LICENSEE may not assign this license without written consent of EC, except to affiliate, subsidiary or parent company of LICENSEE.

ecCST Controller Algorithm

2.1 TERM OF USE 2.2 DEFINITIONS

Supposed purchase, the right of usufruct is unlimited. The term of use begins with the date of installation. i) License for a single CPU computer environment: Use of the SOFTWARE on one single computer at a time. "Use" means that a copy is loaded into the temporary memory or installed into the permanent memory of a computer. ii) License for a network environment: Installation on a network server for the sole purpose of distribution to other computers. The maximum number of parallel users of the SOFTWARE must be the same as written in the corresponding order. EC may terminate this license by written notice to the LICENSEE if LICENSEE i) breaches any material term of this Agreement, or ii) fails to pay the amount charged for this license within thirty (30) days after the date due. Any claim for infringement of EC shall stay untouched by this.

3 EXTRAORDINARY TERMINATION

4 TERMINATION

This Agreement shall continue until any condition for termination occurs. Upon termination, LICENSEE shall promptly return all copies of the SOFTWARE and documentation in LICENSEE' possession or control, or promptly provide written s certification of their destruction. For a period of six (6) months, beginning two days after delivery, EC warrants that i) the media shall be free of defects, or replaced at no costs to LICENSEE, and ii) the SOFTWARE will substantially conform to ECs published specifications and to the documentation provided with it when used as specified in such documentation. In the event that the SOFTWARE does not materially operate as warranted, LICENSEE' exclusive remedy and ECs sole liability under the warranty shall be the s correction or workaround by EC of major defects within a reasonable time. This Status: 2010-06-25 Page 58 of 62 ExpertControl, 2003-2010

5 LIMITED WARRANTY; LIMITATION OF REMEDIES

_______________________________________________________________
liability is only valid if LICENSEE informs EC by written notice about the wrong operation and sends a reproducible description of the occurred error in written form and an example that demonstrates the error on a media readable with hardware/software available at EC, free of charge to the seat of EC. The SOFTWARE shall not be used as sole base for the solution of problems if any wrong results may cause bodily injury to persons or may cause damage to property. If the SOFTWARE is used in that matter anyway, EC expressly do not take any liability for the consequence of such an incorrect use. LICENSEE accepts responsibility for its use of the SOFTWARE and the results obtained therefrom. It is strongly recommended to check all results obtained from the SOFTWARE in that way as is has to be done with all new solutions. The SOFTWARE is a tool that helps the user to get a solution faster, but it is not able to detect the quality of data and other inputs. THE FOREGOING WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. EC SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING WITHOUT LIMITATION LOST PROFITS IN CONNECTION WITH ANY USE OF SOFTWARE. SOFTWARE licensed to degree-granting educational institutions at ECs educational discount are further restricted to use in connection with on-campus computing facilities that are solely in support of classroom instruction and research activities of student and teaching faculty. The right to use the SOFTWARE for commercial purposes is expressly excluded.

ecCST Controller Algorithm

6 SPECIAL AGREEMENTS

7 PROPRIETARY RIGHTS / COPYRIGHT

EC is and remains the sole owner of the copyright for all SOFTWARE and documentation material which is included in the licensed object or which accompanies it. All copies of SOFTWARE in whole or in part, shall contain all copyright and proprietary notices in the originals. LICENSEE shall not copy the SOFTWARE, including code and documentation, in whole or in part, except copies for backup or archival purposes as described in 2, without written consent of EC. In addition to this, LICENSEE shall not make the SOFTWARE available to third parties or enable to use the SOFTWARE in a matter not covered by this agreement. If LICENSEE' employees or third parties, whom LICENSEE permitted access to s SOFTWARE and documentation, infringe the copyright or pass on the SOFTWARE or documentation, in whole or in part, to unauthorized persons, LICENSEE will prosecute the responsible persons, with expectable funds, at the expense of its own and after first request.

Status: 2010-06-25

Page 59 of 62

ExpertControl, 2003-2010

_______________________________________________________________
If third parties take illegal possession of the SOFTWARE, in whole or in part, LICENSEE will inform EC immediately in written form.

ecCST Controller Algorithm

8 GENERAL PROVISIONS

This agreement contains the entire understanding of the parties and may be modified only by written instrument signed by both parties. If any parts of this agreement are or become void, the validity of the other parts of this agreement shall stay untouched. The void paragraphs of this agreement have to be replaced or supplied by a formulation appropriate to the general sense of this agreement. All provisions regarding indemnification, warranty, liability and limits thereon and protection of proprietary rights, shall survive termination of this agreement, as shall all provisions regarding payment of amounts due at the time of termination. Place of jurisdiction for claims of LICENSEE against EC is the seat of EC, for claims of EC against LICENSEE the seat of LICENSEE. LICENSEE shall take appropriate action by instruction, agreement or otherwise with any persons permitted access to the SOFTWARE, so as to enable LICENSEE to satisfy its obligations under this agreement. By opening the package containing the SOFTWARE, the person who opens the package as LICENSEE or in representation of the LICENSEE, indicates that he read and understood this agreement and that he accepts the terms of this agreement. Furthermore he accepts that this agreement contains the entire understanding of the parties. Other or supplementary provisions on LICENSEE' order forms, etc. have no s impact on this license agreement. --------------------------------------

9 ACCEPTANCE OF AGREEMENT

Status: 2010-06-25

Page 60 of 62

ExpertControl, 2003-2010

_______________________________________________________________

ecCST Controller Algorithm

15.2 B Forms
1.

Two forms are printed on the following pages. Form 1: Registration In order to profit from the ExpertControl GmbH user support service including e.g. information about reported errors, information about available updates, ... it is necessary that all new users return the registration form. Please use the form also if the contact person changes, to assure all information goes to the right person without time delay. 2. Form 2: Suggestions for Improvement If you have any suggestions for extending or improving the software, please let us know using the second form. By doing so all users can benefit from your experience and your suggestions. If required, please copy and fill in the form, and send it via FAX to ExpertControl GmbH. Thank you ! ExpertControl GmbH

Status: 2010-06-25

Page 61 of 62

ExpertControl, 2003-2010

_______________________________________________________________ Form 1:
Product:

ecCST Controller Algorithm


Registration

Product Name and Version: _______________________ License Number: ________________________________

First registration Change of contact person Name of contact person up to now: _______________________________________________________ Name: Company/Organization: Department: Address: Telephone: Fax: _______________________________________ _______________________________________ _______________________________________ _______________________________________ _______________________________________ _______________________________________

Form 2:
Product:

Suggestions for Improvement


Product Name and Version: _______________________ License Number: ________________________________

Name: Company/Organization: Department: Address: Telephone: Fax:

_______________________________________ _______________________________________ _______________________________________ _______________________________________ _______________________________________ _______________________________________

Description of improvement proposals: Please send this form to ExpertControl GmbH GERMANY Address: see www.expertcontrol.com

Fax: +49 (0) 8152 / 90 99 214

Status: 2010-06-25

Page 62 of 62

ExpertControl, 2003-2010

Potrebbero piacerti anche