This function plots the Stribeck curve approximation which is implemented in the contact block.
In order to calculate the friction forces without further discontinuous events, which would decrease the simulation speed and impede controller design, we use the continuously differentiable friction model of Makkar et al. [3]. They introduced the following function of the relative velocity to approximate the friction coefficient of the characteristic Stribeck curve.
To set the unknown constants gamma_i we use five parameters, which can be seen in the figure. The parameters mue_s and mue_k denote the coefficients of static and kinetic friction. The limit velocity v_e1 and v_e2 define the beginning of mixed and viscous friction. The latter is described by the proportionality factor k_v. To display the current curve attune the inputs of the function.
function plotFrictionCurve import SI = Modelica.SIunits; input SI.CoefficientOfFriction mue_k = 0.03 "coefficient of kinetic friction" annotation( Dialog(group = "Stribeck curve")); input SI.CoefficientOfFriction mue_s = 0.04 "coefficient of static friction" annotation( Dialog(group = "Stribeck curve")); input Real k_v(unit = "s2/m") = 0 "gradient of viscous friction" annotation( Dialog(group = "Stribeck curve")); input SI.Velocity v_e1 = 0.01 "limit velocity of static friction" annotation( Dialog(group = "Stribeck curve")); input SI.Velocity v_e2 = 0.1 "limit velocity of kinetic friction" annotation( Dialog(group = "Stribeck curve")); input Real gamma1 = (mue_s - tanh(2*v_e1/v_e2)*gamma4 - k_v*2*v_e1)/(tanh(2*v_e1/v_e1) - tanh(2*v_e1/v_e2)) - gamma4 "friction parameter 1" annotation( Dialog(tab = "Friction model")); input Real gamma2 = 2/v_e1 "friction parameter 2" annotation( Dialog(tab = "Friction model")); input Real gamma3 = 3/v_e2 "friction parameter 3" annotation( Dialog(tab = "Friction model")); input Real gamma4 = mue_k - k_v*v_e2 "friction parameter 4" annotation( Dialog(tab = "Friction model")); input Real gamma5 = gamma2 "friction parameter 5" annotation( Dialog(tab = "Friction model")); input Real gamma6 = k_v "friction parameter 6" annotation( Dialog(tab = "Friction model")); end plotFrictionCurve;