Platform-Independent Software Concepts

 PI pursues a platform-independent and hardware-independent concept in the design of the motion control software. This approach has proven its worth and is even flexible for future enhancements. The following points distinguish this concept:


  • Simple installation of the software
  • A uniform, graphical interface for all connected controllers and axes
  • Simple handling of parameters for all stages
  • Standardized command language, General Command Set (GCS), for all controllers
  • Standardized programming interfaces (API) for all common programming languages
  • Simple implementation of customer-specific requirements

General Command Set (GCS)

The General Command Set (GCS) ensures a maximum compatibility between all PI positioning systems as well as smooth (trouble-free) updates and upgrades. GCS offers a standardized set of commands which is independent of the connected controller or the drive principle used.

Starting up and programming, therefore, becomes much easier: Various positioning systems can be operated at the same time and new systems can be integrated with minimal programming effort. Thanks to GCS, the development of customer-specific applications is also simplified while being less prone to errors since the commands are identical in syntax and function for all supported devices.

The currently available version of GCS is GCS2.

The GCS concept comprises the following points:


  • Standardized, human-readable command syntax
  • Standardized error codes
  • Standardized parameter names
  • A single NI LabVIEW driver set for all systems
  • A single programming library for all text-based languages
  • Standardized user programs
  • One parameter database for all supported axes

Preset Parameters for Startup

All necessary parameters to operate a system made of a stage and a controller are determined at the factory.


  • With all controllers for motor drives, the mechanical and servo-control parameters are stored in a parameter database. For operation, the mechanics for the appropriate controller just has to be selected from a list.
  • With piezo systems, the controller and the mechanics are only delivered in pairs, or the properties are stored in an ID chip. The controller recognizes the mechanics and automatically uses the settings stored in the database for it.

Automation of Procedures Using Macros

Many applications require automated motion sequence. The user can specify the appropriate sequence of motion commands using macros.

  • Commands, included in the General Command Set (GCS), are used for commanding the motions.
  • A series of GCS commands can be stored as a macro on the PC as well as on most controllers.
  • The processing or the stopping of a macro can be subject to conditions. In addition, loops can be realized for example.
  • Macros can call up themselves or other macros at several nesting levels.
  • Variables can be used in macros and input signals can be evaluated for conditions and variables.
  • For the standalone operation any macro can be defined as the autostart macro. This macro will automatically start with every switch-on or reboot of the controller.

The following example, where Axis X is initialized after the controller is switched on and two positions are approached, shows how simple this is. The "STRATUP" macro is automatically initialized when starting the controller.

Examples for using GCS macros



"STARTUP" MacroInitialize the Axis
SVO X 1Switch on the servo mode for axis X
FRF XStart a reference move for axis X
WAC ONT? X = 1Wait, until the reference move of the X axis has been completed
Use variables to define the left and right target position
"MOVLR" MacroMoving the axis to the left or right target position
MAC START MOVWAI $ {LEFT}Start "MOVWAI" macro with the value for the "LEFT" variable
MAC START MOVWAI ${RIGHT}Start "MOVWAI" macro with the value for the "RIGHT" variable
"MOVWAI" Macro Moving the X Axis to the Target Position
MOV X $1Moving the X axis to the position which was given as an argument when calling up the macro
WAC ONT? X = 1Wait, until the X axis has reached the target position

For more complex tasks which the controller has to carry out independently, the user can use scripts based on Python. These unite the power of the Python programming language with the flexibility of PI's GCS commands.