Hydraulic Technology Functions

Revolutionizing Hydraulic System Performance with Cutting-Edge Technology Functions

HydroXForce: Master Position, Speed and Force Control

Unlock the full potential of your hydraulic systems with our advanced technology function HydroXForce, specifically designed for single-axis applications. This powerful PLC function enhances hydraulic axis control across two versatile modes to suit your precise requirements:

Mode 1: Position and Speed Control

  • Manage the position and speed of your hydraulic axis with defined parameters for speed, acceleration, and jerk.
  • Ideal for applications requiring accurate positioning and smooth motion profiles.

Mode 2: Pressure/Force Control

  • Achieve precise control of pressure or force with a specified pressure/force rate of change.
  • Perfect for tasks that demand consistent force application or pressure regulation.

HydroXForce provides seamless automatic transitions between position and force control, backed by a sophisticated algorithm that ensures smooth and bump-free operation. This means you can switch between controlling position and force without interrupting your process or compromising on performance. HydroXForce is ideal for a wide range of machines that utilize a single hydraulic axis, such as: Hydraulic presses, injection molding machines, hydraulic lifts and elevators, material testing machines and robotic actuators.

Why Choose HydroXForce?

  • Incorporating Closed and Open-Loop Control Algorithms: Incorporating both closed and open-loop control algorithms, HydroXForce PLC Technology Function block delivers exceptional accuracy, stability, and robustness.
  • Advanced Trajectory Generator: At its core, HydroXForce features a powerful trajectory generator that plans the ideal motion profile using a trapezoidal acceleration profile. This approach delivers smooth and precise positioning and force control.
  • Multiple Control Modes: Operate in Position and Force/Pressure Mode. Each mode is tailored to specific motion control requirements, providing you with maximum flexibility to suit your application.
  • Compatibility with Various Hydraulic Axis Types: This PLC technology function is designed for easy parameterization and is compatible with various hydraulic axis types, such as double-acting, single-acting, and plunger cylinders connected to linear servo or proportional valves.
  • Universal PLC Compatibility: Forget about specialized technology CPUs! HydroXForce runs seamlessly on real-time PLC platforms including Siemens S7, Siemens TIA Portal, Rockwell Studio AIO, Rockwell RSLogix 5000, Rexroth IndraWorks, B&R Automation Studio, and Beckhoff TwinCAT, all while delivering the same high performance across the board.
  • Seamless Integration with Existing PLC Programs: The HydroXForce PLC function can be easily purchased and directly integrated into your existing PLC programs. This allows for effortless scaling and enhancement of your current automation systems without the need for extensive reprogramming or system overhauls.

  • Simplified Commissioning and Parameterization: With comprehensive input/output documentation and practical examples, HydroXForce makes commissioning and parameterization incredibly straightforward. This reduces setup time and ensures a smooth transition from installation to operation, empowering your team to get up and running quickly with minimal effort.

Description

The HydroXForce PLC function block is an advanced and robust controller designed for the precise management of position and force within hydraulic axes. This function block is engineered to support a wide range of hydraulic cylinders, including single-acting, plunger, double-acting, and double-acting double rod cylinders, seamlessly integrating with linear servo or proportional valves. With its versatile input parameters, the HydroXForce block can operate in either position or force control mode.

The internal trajectory generator enables the controller to utilize not only the closed-loop algorithm but also the open-loop control algorithm simultaneously. This integration allows for rapid, precise, and stable adjustments in position and force control, enhancing the performance and reliability of your hydraulic system. Users can specify parameters such as target position, velocity, acceleration, jerk for axis motion, and target force, force rate, and force acceleration for force control, tailoring the system’s response to meet specific application requirements.

Ease of parameterization and commissioning is a key advantage of the HydroXForce, making it accessible for users to implement and operate. Furthermore, the block provides valuable monitoring outputs, such as position, velocity, and acceleration trajectories, along with a busy signal to indicate active movements. These outputs are crucial for comprehensive system diagnostics and streamline troubleshooting processes during operation.

The diagram illustrates how the HydroXForce function integrates into the overall control system, highlighting its role in achieving precise and reliable position control of the cylinder.

1 2
Operation modes Position control Force/Pressure Control
Table 1: Different operation modes of the HydroXForce function bock

Block Diagram

Inputs Description

The sample time, in second, of the cyclic interrupt task of the plc at which the function is running. A higher sampling frequency allows for more precise control.

Is used to define the upper limit of the CtrlOut to a specific value. We recommend to set this limit at 100. This setting essentially represents the highest level of opening for the servo or proportional valve, expressed as a percentage in one direction.

Is used to define the lower limit of the CtrlOut to a specific value. We recommend to set this limit at −100. This setting essentially represents the highest level of opening for the servo or proportional valve, expressed as a percentage in another direction.

Recommendation: When using a linear servo or proportional valve, it’s advised to restrict the control signal to a range between −100 and 100. This range signifies the valve’s opening percentage in either direction. Subsequently, these percentage values must be translated to the valve’s physical input, which might be represented in current or voltage terms. In figure 1 and 2 are common mappings from output to valve input shown.


Figure1: CtrlOut against valveinput −10mA to 10mA



Figure2: CtrlOut against valve input 4mA to 20mA

The input represents the current measured position of the hydraulic cylinder. It is used in the error signal calculation of the internal controller. It should be provided in the same unit as TgtPos.

The measured position value provided to ActPos must be sampled at a rate at least as fast as the cycle time of the Cycle Interrupt Task in which the function block operates. This requirement is critical for real-time position control.

The ActFr input is designated for the measured force of the hydraulic axis. It is imperative that the force is measured and inputted in the same unit as the TgtFr input. This function block uses the force value for both monitoring and controlling the force exerted by the hydraulic axis.

The measured force value provided to ActFr must be sampled at a rate at least as fast as the cycle time of the Cycle Interrupt Task in which the function block operates. This requirement is critical for real-time force control and monitoring.

Actual Pressure value measured in bar on the piston side of the hydraulic cylinder. It is used to adapt the dynamics of the position controller to the load borne by the hydraulic axis. This ensures that the hydraulic axis exhibits consistent control behavior regardless of the load it carries. 

Important: If the hydraulic axis’s pressure is not being measured, enter a default value of -1 in the ActPr input. This action will effectively deactivate the pressure-dependent dynamic calculation of controller.

Input the high-pressure line hydraulic  control value of the valve in bar. This is not a measured value but a fixed constant.

Input the Low-pressure line value of the hydraulic control valve in bar. This is not a measured value but a fixed constant.

This input determines the maximum allowable rate of change in velocity for the position trajectory. It is measured in the same unit as TgtPos per second squared. This parameter needs to be customized based on the specific system requirements. MaxAccSetPnt plays a critical role in regulating the acceleration of the hydraulic cylinder as it follows the trajectory towards the target position. See figure 3.

JerkSetPnt controls the abruptness or smoothness of motion by regulating the rate of change of acceleration. It is measured in the same unit as TgtPos per second cubed. Adjusting JerkSetPnt al lows users to customize the motion profile according to their desired level of abruptness or smooth ness. For example, if the maximum acceleration needs to be achieved within half a second, the JerkSetPnt value should be set to double the maximum acceleration value. See figure 3.



Figure 3: General behavior of the inputs MaxAccSetPnt and JerkSetPnt

It represents the amplification factor of the P-controller within the position controller. A higher Kp Pos value can enhance control accuracy. However, caution is advised: setting the KpPos value excessively high may render the closed-loop system unstable. For optimal results and to maintain system stability, it’s recommended to initiate with a modest KpPos value and incrementally adjust upwards to achieve the desired precision. See this section for optimal adjustment.

It relates to the P-controller (Position  controller) within the function block, which is capable of dynamically altering the constant KpPos factor. This adjustment ensures that the hydraulic cylinder exhibits consistent control behavior regardless of the load it bears. The dynamic value of the KpPos factors is calculated based on the pressure on the piston side of the cylinder. If the cylinder lacks a pressure sensor, the controller operates with a constant Kp value. Through the MaxKpAmp input, users can set the upper limit of the amplification for this constant Kp value. We recommend setting it between 4 and 5.

Important: If the hydraulic cylinder’s pressure is not being measured, enter a default value of -1 in the ActPr input. This action will effectively deactivate the pressure-dependent dynamic calculation of Kp .

KiPos stands for the amplification factor of the I-controller within the position controller. A KiPos value set to zero effectively deactivates the I-controller. While a higher KiPos value results in swifter error integration, enhancing overall accuracy, it can also introduce increased oscillations in the closed loop system. For best performance, it’s advisable to commence with a low KiPos value and gradually increase it until the desired accuracy level is reached, balancing precision with system stability. See this section for optimal adjustment.

This input determines the behavior of the I-Controller. When set to False , the I-Controller remains continuously active. If set to True , the I-Controller operates only in the steady state, deactivating during the hydraulic axis movement. We advise setting this input to true, as allowing the I-Controller to function solely in the steady state often provides superior stability and accuracy for hydraulic axes. This approach typically minimizes, if not eliminates, significant overshoots and, by enabling an increase in the Ki factor, greatly enhances accuracy.

GainFwdSpdCtrl is a system parameter that adds a constant value for positive velocities to the control signal, improving trajectory tracking. It reduces the error signal and facilitates smoother following of the desired trajectory. The optimal positive feedforward value depends on the hardware and system dynamics, which can be determined through measurement and analysis, as illustrated in this section.

GainBwdSpdCtrl is a system parameter that adds a constant value for negative velocities to the control signal, improving trajectory tracking. It reduces the error signal and facilitates smoother following of the desired trajectory. The optimal positive feedforward value depends on the hardware and system dynamics, which can be determined through measurement and analysis, as illustrated in this section.

This input sets the maximum allowable acceleration of the force, effectively shaping the force trajectory. It’s measured in the same units as TgtFr , but on a per second squared basis, underscoring its role in adjusting the system’s dynamics to match particular requirements. Importantly, the force rate, measured in N/s, represents the first derivative of force, indicating how quickly the force changes over time. Meanwhile, force acceleration, denoted in N/s2, is the second derivative of force, reflecting the rate of change of the force rate itself. FrMaxAccSetPnt is crucial in managing how rapidly the hydraulic cylinder’s force accelerates, facilitating a controlled and precise progression towards the target force. See figure 4.

This parameter modulates the transition dynamics of force application, dictating the rapidity or gradualness by controlling the rate at which force acceleration changes. Expressed in the same units as TgtFr but per cubic second, adjusting the FrJerkSetPnt enables users to finely tune the force trajectory to achieve the preferred level of abruptness or smoothness in force adjustments. This flexibility allows for precise control over the force application, ensuring both responsiveness and smooth operation. See figure 4.


Figure 4: General behavior of the input FrMaxAccSetPnt and FrJerkSetPnt

Refer to the description of input Mode.

See figure 5: Between T = 0.0 and T = 1.24s, ActFr < SwitchPos2Fr . So the function block is in position control. After T = 1.24s, ActFr > SwitchPos2Fr so the function block switches automatically to force control. 


Figure 5: Switch from position to force control mode

This input represents the amplification factor of the P-controller within the force controller. A higher KpFr value can enhance control accuracy. However, caution is advised: setting the KpFr value excessively high may render the closed-loop system unstable. For optimal results and to maintain system stability, it’s recommended to initiate with a modest value and incrementally adjust upwards to achieve the desired precision. See this section for optimal adjustment.

It relates to the P-controller (Force controller) within the function block, which is capable of dynamically altering the constant KpFr factor. This adjustment ensures that the hydraulic cylinder exhibits consistent control behavior regardless of the load it bears. The dynamic value of the KpFr factors is calculated based on the pressure on the piston side of the cylinder. If the cylinder lacks a pressure sensor, the controller operates with a constant Kp value (in this case set ActPr to -1). Through the MaxKpAmp input, users can set the upper limit of the amplification for this constant Kp value. We recommend setting it between 4 and 5.

Important: If the hydraulic cylinder’s pressure is not being measured, enter a default value of -1 in the ActPr input. This action will effectively deactivate the pressure-dependent dynamic calculation of KpFr .

This input represents the amplification factor of the I-controller within the force controller. A higher KiFr value can enhance control accuracy. However, caution is advised: setting the KiFr value excessively high may render the closed-loop system unstable. For optimal results and to maintain system stability, it’s recommended to initiate with a modest value and incrementally adjust upwards to achieve the desired precision. See this section for optimal adjustment.

This input determines the behavior of the I-Controller. When set to False , the I-Controller remains continuously active. If set to True , the I-Controller operates only in the steady state, deactivating during the hydraulic axis movement. We advise setting this input to true, as allowing the I-Controller to function solely in the steady state often provides superior stability and accuracy for hydraulic axes. This approach typically minimizes, if not eliminates, significant overshoots and, by enabling an increase in the KiFr factor, greatly enhances accuracy.

It serves as a feedforward control factor during force control. This factor introduces a static component into the control signal during the build-up of force. It enhances the responsiveness and accuracy of the force control process. See this section for optimal adjustment.

It serves as a feedforward control factor during force control. This factor introduces a static com ponent into the control signal during the reduction of force. It enhances the responsiveness and accuracy of the force control process. See this section for optimal adjustment

This input controls the activation or deactivation of the function. When this input signal is turned off (False ), the function no longer responds to changes in the setpoints and does not generate any trajectory. The monitoring signal PosTrj reflects the current position and FrTrj reflects the current force, while the other monitoring signals are set to zero. In addition, when the function is deactivated, the CtrlOut is set to zero, indicating that there is no valve movement caused by the controller, as shown in table 2.

CtrlOut PosTrj SpdTrj AccTrj FrTrj FrRateTrj FrAccTrj
Enb = True, Mode = 1 calculated based by the position control algorithm calculated by position trajectory generator calculated by speed trajectory generator calculated by acceleration trajectory generator reflects the current force 0.0 0.0
Enb = True, Mode = 2, ActFr< SwitchPos2Fr calculated based by the position control algorithm calculated by position trajectory generator calculated by speed trajectory generator calculated by acceleration trajectory generator reflects the current force 0.0 0.0
Enb = True, Mode = 2, ActFr> SwitchPos2Fr calculated based by the force control algorithm reflects actual position 0.0 0.0 calculated by force trajectory generator calculated by force trajectory generator calculated by force trajectory generator
Enb = Flase 0.0 reflects actual position 0.0 0.0 reflects actual force 0.0 0.0
Table 2: Output signals with the different modes of the controller

The function block can operate in either position control or force control mode, depending on the Mode input setting. This versatility allows the block to adapt its behavior to meet specific application requirements.

Mode=1: In this mode, the function block operates in position control. There is no monitoring of force values; the system focuses solely on achieving and maintaining the target position. Mode=2: Initially, the function block operates in position control mode, similar to Mode 1. However, in Mode 2, the current force value at the ActFr input is continuously monitored. If the actual force exceeds the threshold specified by the SwitchPos2Fr input, the function block automatically switches from position control to force control. This transition ensures that the system can adapt to changing load conditions without manual intervention as shown in table 2.

Important Notes: In Mode 1, there is no force monitoring. The system does not react to changes in force; it remains dedicated to position control regardless of any force applied. In Mode 2, the switch from position to force control occurs only once when the actual force surpasses the SwitchPos2Fr threshold. It’s crucial to understand that if the actual force falls below the SwitchPos2Fr threshold after switching to force control, the function block does not revert back to position control. This behavior is designed to maintain stability and prevent constant switching between modes under fluctuating force conditions.

The input allows users to specify the desired target position for the hydraulic cylinder. It can be defined in any unit appropriate for the application (e.g., meters, centimeters, millimeters, micrometer). When TgtPos recognizes a change, the function generates a trajectory from the current position to the specified target. The internal position controller ensures that the cylinder follows this trajectory accurately.

Important: It’s essential to understand that any changes to the TgtPos , MaxSpdSetPnt , MaxAccSetPnt and JerkSetPnt during axis movement are internally ignored by the block. The block responds to changes only when PosTrj matches TgtPos . The Busy output serves as an indicator of the block’s readiness: When the Busy output of the block is logicaly True , it indicates that the cylinder is in motion, and the controller will not respond to new setpoints. Conversely, if it is logically False , the cylinder is in a steady state, allowing the controller to react to new setpoints. See figure 8.



Figure 8: General behavior of the position controller.

This input sets the maximum speed allowed for the position trajectory generated by the internal generator. It is defined in the same unit as the TgtPos input, per second. This parameter ensures that the hydraulic cylinder moves at a controlled speed while reaching the target position. This sets the top speed for the hydraulic axis during movement. However, factors like distance, acceleration MaxAccSetPnt , and jerk JerkSetPnt might make it go slower than this speed. See figure 9.



Figure 9: General behavior of the input MaxSpdSetPnt

The input allows users to specify the desired target force for the hydraulic cylinder. It can be defined in any unit appropriate for the application (e.g., N, kN, MN). When TgtFr recognizes a change and the function is in force control mode, the function generates a trajectory from the current force to the specified target. The internal controller ensures that the current force follows this trajectory accurately. When the function block is deactivated, changes to this input is without function.

Important: It is essential to understand that any changes to the TgtFr , FrMaxSpdSetPnt, FrMaxAccSetPnt and FrJerkSetPnt during force adjusment are internally ignored by the block. The block responds to changes only when FrTrj matches TgtFr . The Busy output serves as an indicator of the block’s readiness: When the Busy output of the block is logicaly True , it indicates that the cylinder force is in transition, and the controller will not respond to new setpoints. Conversely, if it is logically False , the cylinder is in a steady state, allowing the controller to react to new setpoints.

See figure 9: at T = 3.23s, FrTrj exactly equals 700N (it was the target force at the beginiging). Exactly at this time point the Busy output set to false and the FrTrj goes to the new target TgtFr = 500N.



Figure 9: Reaction of the controller with a new setpoint while moving.

This parameter defines the maximum rate at which the force can change, as determined by the internal trajectory generator, and is measured in the same units per second as the TgtFr input. It governs the pace at which the hydraulic axis approaches the designated target force, ensuring a smooth and controlled force adjustment. Although this setting establishes the upper limit of the force change rate, the actual rate may be influenced by additional factors such as the total force adjustment required, FrMaxAccSetPnt , and FrJerkSetPnt , potentially resulting in a slower adjustment than the maximum specified rate.

This input serves as a means of adjusting the control signal in both the activated and deactivated states of the controller. When the controller is enabled, the value is added to the control signal, allowing for an additional offset. This enables manual control of the cylinder’s position in conjunction with the controller’s output. In the deactivated state, where the controller output is fixed at zero, the input can be used as a direct means of manual control, independently influencing the cylinder’s behavior. It provides a convenient way to switch between automatic and manual operation of the cylinder.

Output Description

This is the primary output of the block, indicating the valve’s opening value. When confined within the range of −100 and +100, this value denotes the valve’s opening percentage in one or another direction. It is essential to map this percentage to the valve’s physical input, which may be quantified in terms of current or voltage. See figure 1 and figure 2.

The PosTrj output provides information about the desired position trajectory that the hydraulic cylinder should follow. It represents the path from the current position (ActPos ) to the target position (TgtPos ). This output is mainly used for monitoring and visualization purposes, allowing users to observe the planned trajectory of the cylinder’s movement.

Note: If the Enb input is set to false, the PosTrj will match the current position ActPos of the hydraulic axis. See table 2.

The SpdTrj output represents the velocity trajectory which the hydraulic cylinder should follow. It starts and ends at zero and is limited by the MaxSpdSetPnt input. This output is primarily used for monitoring purposes.

Note: If the Enb input is set to false, the SpdTrj will default to zero. See table 2.

The AccTrj output represents the velocity trajectory which the hydraulic cylinder should follow. It starts and ends at zero and is limited by the MaxAccSetPnt input. This output is primarily used for monitoring purposes.

Note: If the Enb input is set to false, the AccTrj will default to zero. See table 2.

It represents the force trajectory, a dynamic profile detailing the planned progression of force over time. This output is critical for visualizing and understanding how the force is intended to evolve throughout the operation, based on the current input parameters and desired end goal. This output is mainly used for monitoring and visualization purposes, allowing users to observe the planned trajectory of the force exerted by the hydraulic axis.

Note: If the Enb input is set to false, the FrTrj will match the current force ActFr of the hydraulic axis. See table 2.

It delineates the trajectory of the force rate, illustrating the speed at which the force is programmed to change over time within the force controller. It provides a clear representation of how rapidly or slowly the force is expected to evolve, aiding in the optimization of force control strategies for enhanced performance and responsiveness. It starts and ends at zero and is limited by the FrMaxSpdSetPnt input. This output is primarily used for monitoring purposes. See figure 4

Note: If the Enb input is set to false, the FrRateTrj will default to zero. See Table 2.

It indicates the force acceleration trajectory, providing a time-based profile of the expected acceleration rates of force. It starts and ends at zero and is limited by the MaxAccSetPnt input. This output is primarily used for monitoring purposes. See figure 4

 Note: If the Enb input is set to false, the FrAccTrj will default to zero. See table 2.

This output reflects the block’s responsiveness to new setpoints. If the hydraulic cylinder is moving or under force transition, the Busy output becomes True , indicating that the block is not responding to changes in setpoints. The block resumes responsiveness when PosTrj aligns with TgtPos in position control or FrTrj aligns with TgtFr in force control, at which point the Busy output switches to False , signaling readiness to accept setpoint modifications. 

Frequently Asked Questions (FAQ)

To halt the axis while it’s moving, simply set the Enb Input to logical false. Doing this makes the CtrlOut immediately drop to zero, leading to the valve closing and consequently stopping the movement.

If you wish to assign a new target position (TgtPos) during the axis’s operation, you must first halt the movement using the Enb input. After stopping, wait for a specific delay (a few tens to hundreds of milliseconds depending on the specific axis) to ensure the axis has fully settled. Once stationary, you can then input the new TgtPos .

How to Configure HydroXForce Position Control Parameters

This guide provides detailed instructions on how to set up and configure the Technology Block HydroXForce for precise positioning tasks of a hydraulic axis. 

Important for all examples: The values of control parameters provided in the following sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.

  • Cyclic Interrupt task Setup: Ensure that the Technology Block is called within a cyclic interrupt task in your PLC. The feedbacks for the actual position, actual force and actual pressure must be read at least as frequently as the cycle time of the this cyclic interrupt task.
  • Sampling Time: The task cycle time should be relatively fast, depending on the required accuracy and and the dynamic of your hydraulic system. A sampling time of 1 to 5 milliseconds is a good starting point.
  • Consistency in Units: Before configuring the block, decide on the units you will use for the system. These units must remain consistent throughout the configuration. For example, if you choose millimeters for the linear axis, then all related variables should be in millimeters: Actual Position [mm], Target Position [mm], Speed Setpoint [ mm/s ], Acceleration Setpoint [ mm/s 2 ], and Jerk [ mm/s 3 ].  The same principle applies to force units. Decide whether to use Newtons (N), kilonewtons (kN), or meganewtons (MN), and keep this consistent for all force-related variables.
  • Other Unit Options: You can choose other units, such as meters, centimeters, micrometers for the linear axis. The key is to select a unit system and maintain consistency across all parameters and modes.
  • Sample Time: Enter the PLC’s task cycle time (in seconds) into the SampleTime input.
  • Max and Min Output: Define the maximum and minimum output of the Technology Block using MaxOut and MinOut , for example -100 to 100.

Switch the block to Mode 1. Using the setpoint structure PosTrjPar, TgtPos and MaxSpdSetPnt, define a target position with corresponding speed, acceleration, and jerk setpoints. Ensure that all setpoints (speed,acceleration, jerk) are greater than zero.

  • KpPos Setting: Initially, enter a small value for KpPos of the PosCtrlPar structure.
  • Other Control Parameters: You can leave other control parameters at zero for now; they will be adjusted later

Start the tuning process with the KpPos value by setting it to a minimal level. Then, specify a position target using the TgtPos and enable the controller. Ideally, adjust KpPos so that, during the movement the actual position runs parallel with the position trajectory output (PosTrj ) at certain moments. If KpPos is too low, the actual position might never gets paralleled with the position trajectory.



Figure 10: Reaction of the controler with the parameters KpPos = 10; KiPos = 0; GainFwdSpdCtrl = 0 and GainBwdSpdCtrl = 0.

In Figure 10, it is observable that during the movement, the ActPos and PosTrj are never parallel. This indicates that the KpPos value is too small.

Important for all examples: The values of control parameters provided in the this sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.

  • Incremental KpPos Adjustments: Gradually increase the KpPos value. After each increment, execute a new movement by defining an appropriate target position.
  • Objective: Continue this process until the position trajectory (PosTrj ) and the actual position are parallel, indicating proper tuning.



    Figure 11: Reaction of the controler with the parameters KpPos = 25; KiPos = 0; GainFwdSpdCtrl = 0; GainBwdSpdCtrl = 0 and GainAccCtrl = 0.

According Figure 11 when the KpPos increased to 25, the PosTrj and ActPos now run parallel during movement, indicating that the KpPos has been optimally adjusted for the current conditions.

  • Execute a Positive Movement: Run a positive movement of the hydraulic axis.
  • Read Controller output: At a point where the actual position and the position trajectory (PosTrj ) are parallel, read the value of CtrlOut.
  • Calculate GainFwdSpdCtrl: Divide the CtrlOut by the set speed value (MaxSpdSetPnt ). The result is the value you should enter into GainFwdSpdCtrl of the structure PosCtrlPar. In the example shown in figure 14. The MaxSpdSetPnt was set to 5 [mm/s]. The CtrlOut is 21.85 see figure 12) .
    The value for GainFwdSpdCtrl is then calculated by: GainFwdSpdCtrl => 21.85/5= 4.37



Figure 12: Adjusting the feedforward parameters based on the system’s response to a control input.

Important for all examples: The values of control parameters provided in the this sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.

  • Repeat Step 8: Perform the same process as in Step 8, but with a negative movement of the hydraulic axis.
  • Calculate and Set Gain: Write the resulting value into GainBwdSpdCtrl of the strucutre PosCtrlPar .

GainBwdSpdCtrl => 34.15/5= 6.83

Important for all examples: The values of control parameters provided in the this sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.



Figure 13: System behavior with well-adjusted Kp, Feedforwards and Ki parameters.

For setting KiPos , we suggest setting the ModeIntCntrl input to True , ensuring that the I-controller is active only in steady states. Then, observe the persistent control deviation of the position and incrementally increase KiPos until you are satisfied with the controller’s accuracy.

  • Optimal Configuration: Once the Kp , feedforward parameters, and Ki are tuned, the position controller is optimally set.
  • Run Movements in Modes 1: You can now move the hydraulic axis in Modes 1 with any target positions, speeds, accelerations, and jerks that your mechanics can handle, without needing to adjust the PosCtrlPar values again.

Note: If, despite proper parameter adjustment, overshooting is observed in the control behavior (as shown in figure 14), it is an indication that the dynamics of the Position Trajectory are faster than your machine’s maximum capability. Therefore, you should reduce the MaxAccSetPnt and JerkSetPnt parameters.


Figure 14: Overshoot despite proper parameter adjustment.

How to Configure HydroXForce Force Control Parameters

This guide provides detailed instructions on how to set up and configure the Technology Block HydroXForce for precise force control tasks of a hydraulic axis. 

Important for all examples: The values of control parameters provided in the following sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.

Prerequisite: Ensure that the control parameters in Mode 1 (Position Control) are optimally tuned, as described in this Section.

Steps to Configure Force Control Parameters:

  1. Set the Function Block to Mode 2:

    • Switch the function block to Mode 2 to enable force control capabilities.
    • Define a Target Position (TgtPos) that is beyond the load to ensure the actuator moves towards the load.
    • Set a low value for the MaxSpdSetPnt to achieve a soft contact with the load and prevent a large force jump. This gentle approach minimizes sudden force spikes when the actuator makes contact.
  2. Define Target Force Parameters:

  3. Set the Force Threshold:

    • Use the SwitchPos2Fr input to define a threshold force.
    • When the actual force exceeds this threshold, the system will automatically switch from Position Control to Force Control.
  • KpFr Setting: Initially, enter a small value for KpFr of the FrCtrlPar structure.
  • Other Control Parameters: You can leave other force control parameters at zero for now; they will be adjusted later

Start the tuning process with the KpFr value by setting it to a minimal level and icrease it step by step.  Ideally, adjust KpPos so that, during the movement the actual force runs parallel with the force trajectory output (FrTrj) at certain moments. If KpFr is too low, the actual force might never gets paralleled with the force trajectory . See figure 15.



Figure 15: Reaction of the controller with the parameters KpFr = 0.002; KiFr = 0; FrGainFwdSpdCtrl = 0 and FrGainBwdSpdCtrl = 0.

Important for all examples: The values of control parameters provided in the this sections are solely as examples to illustrate the approach for setting control parameters. Under no circumstances should these values be directly applied to your machine, not even as initial starting points. The control parameters must be explicitly adjusted for each machine individually.

  • Incremental KpFr Adjustments: Gradually increase the KpFr  value. After each increment, execute a new movement .
  • Objective: Continue this process until the force trajectory (FrTrj) and the actual force are parallel, indicating proper tuning. 



Figure 16: Reaction of the controller with the parameters KpFr = 0.007; KiFr = 0; FrGainFwdSpdCtrl = 0 and FrGainBwdSpdCtrl = 0.
According Figure 18 when the KpFr increased to 0.007, the FrTrj and ActFr now run parallel during Force transition, indicating that the KpFr has been optimally adjusted for the current conditions.

After setting the KpFr value, read the value of CtrlOut at any point where ActFr and FrTrj run parallel during force transition and divide it by FrMaxSpdSetPnt . Enter the resulting value into the GainFwdSpdCtrl input. As shown in figure 16:

FrGainFwdSpdCtrl= 0.83 / 350 = 0.0023

Repeat the same process when reducing the force, without changing the KpFr value. Divide CtrlOut by FrMaxSpdSetPnt and enter this result into the FrGainBwdSpdCtrl input. After setting FrGainFwdSpdCtrl and FrGainBwdSpdCtrl the force control behavior should be much better, as seen in figure 17.



Figure 17: Reaction of the controller with the parameters KpFr = 0.007; KiFr = 0; FrGainFwdSpdCtrl = 0.0023 and FrGainBwdSpdCtrl = 0.0023.

For setting KiFr , we suggest setting the ModeIntCntrl input to one, ensuring that the Icontroller is active only in steady states. Then, observe the persistent control deviation of the force and incrementally increase KiFr until you are satisfied with the controller’s accuracy.



Figure 18: Reaction of the controller with the parameters KpFr = 0.007; KiFr = 0.5; FrGainFwdSpdCtrl = 0.0023 and FrGainBwdSpdCtrl = 0.0023.

When all parameters are adjusted as described, the system should be able to closely follow the desired force trajectory, as illustrated in figure 18.

Address List

Halow-Tech GmbH

Company Registration Number: HRB 101539
Amtsgericht Duesseldorf