Changeset 377

Show
Ignore:
Timestamp:
02/27/2006 11:47:53 AM (3 years ago)
Author:
Martin
Message:

Added "smooth(0, ...)" to if-clauses in the blocks:
- Blocks.Continuous.LimIntegrator
- Blocks.Nonlinear.Limiter
- Blocks.Nonlinear.VariableLimiter
- Blocks.Nonlinear.DeadZone

Location:
Modelica/trunk/Blocks
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • Modelica/trunk/Blocks/Continuous.mo

    r371 r377  
    286286             "  y = " + String(y) + ", outMin = " + String(outMin) + ", outMax = " + String(outMax)); 
    287287    else 
    288        der(y) = if y < outMin and u < 0 or y > outMax and u > 0 then 0 else k*u; 
     288       der(y) = smooth(0,if y < outMin and u < 0 or y > outMax and u > 0 then 0 else k*u); 
    289289    end if; 
    290290  end LimIntegrator; 
  • Modelica/trunk/Blocks/Nonlinear.mo

    r371 r377  
    110110                 "  u = " + String(u) + ", uMin = " + String(uMin) + ", uMax = " + String(uMax)); 
    111111        else 
    112            y = if u > uMax then uMax else if u < uMin then uMin else u; 
     112           y = smooth(0,if u > uMax then uMax else if u < uMin then uMin else u); 
    113113        end if; 
    114114      end Limiter; 
     
    194194             "  u = " + String(u) + ", uMin = " + String(uMin) + ", uMax = " + String(uMax)); 
    195195    else 
    196        y = if u > uMax then uMax else if u < uMin then uMin else u; 
     196       y = smooth(0,if u > uMax then uMax else if u < uMin then uMin else u); 
    197197    end if; 
    198198  end VariableLimiter; 
     
    200200      block DeadZone "Provide a region of zero output"  
    201201        parameter Real uMax=1 "Upper limits of dead zones"; 
    202         parameter Real uMin(max=uMax) = -uMax "Lower limits of dead zones"; 
     202        parameter Real uMin=-uMax "Lower limits of dead zones"; 
    203203        parameter Boolean deadZoneAtInit = true  
    204204      "= false, if dead zone is ignored during initializiation (i.e., y=u)"; 
     
    264264              style(color=10)))); 
    265265      equation  
     266        assert(uMax >= uMin, "DeadZone: Limits must be consistent. However, uMax (=" + String(uMax) + 
     267                             ") < uMin (=" + String(uMin) + ")"); 
     268     
    266269        if initial() and not deadZoneAtInit then 
    267270           y = u; 
    268271        else 
    269            y = if u > uMax then u - uMax else if u < uMin then u - uMin else 0; 
     272           y = smooth(0,if u > uMax then u - uMax else if u < uMin then u - uMin else 0); 
    270273        end if; 
    271274      end DeadZone;