Motor Stall (simple)#

Controller overview#

The simple motor stall model implements a simplified single-phase residential air conditioner stall model (motor type d). The ‘run’ and ‘stall’ behaviors are modeled by simply converting the model type from constant power to constant impedance load. When the voltage at the point of common coupling falls below ‘v_stall’, the model is converted to constant impedance (with p and q multiplier used to represent the jump in p and q consumption). This mimics the stall bebahior of the motor reasonably well.

Alternative text

In this implementation, stall and reconnect timers are implemented using stochastic variables instead of the transfer function implmented in the full model. This simpler models scales really well (tested with a hundred thousand instances on a single machine) when compared to the complete motor stall model

Alternative text

Controller model#

pydantic model PyDSS.pyControllers.models.MotorStallSimpleSettings[source]#

Show JSON schema
{
   "title": "MotorStallSimpleSettings",
   "type": "object",
   "properties": {
      "p_fault": {
         "default": 3.5,
         "description": "Active power multiplier post fault.",
         "maximum": 5.0,
         "minimum": 3.0,
         "title": "P Fault",
         "type": "number"
      },
      "q_fault": {
         "default": 5.0,
         "description": "Reactive power multiplier post fault.",
         "maximum": 7.0,
         "minimum": 3.0,
         "title": "Q Fault",
         "type": "number"
      },
      "v_stall": {
         "default": 0.55,
         "description": "Per unit voltage below which the motor will stall.",
         "maximum": 0.58,
         "minimum": 0.53,
         "title": "V Stall",
         "type": "number"
      },
      "t_protection": {
         "default": 0.95,
         "description": "Time [sec] after stall the motor will disconnect.",
         "maximum": 15.0,
         "minimum": 0.0,
         "title": "T Protection",
         "type": "number"
      },
      "t_reconnect": {
         "default": 6.0,
         "description": "Time duration [sec] after which the motor will reconnect.",
         "maximum": 7.0,
         "minimum": 5.0,
         "title": "T Reconnect",
         "type": "number"
      }
   }
}

Fields:
field p_fault: float = 3.5#

Active power multiplier post fault.

Constraints:
  • ge = 3.0

  • le = 5.0

field q_fault: float = 5.0#

Reactive power multiplier post fault.

Constraints:
  • ge = 3.0

  • le = 7.0

field t_protection: float = 0.95#

Time [sec] after stall the motor will disconnect.

Constraints:
  • ge = 0.0

  • le = 15.0

field t_reconnect: float = 6.0#

Time duration [sec] after which the motor will reconnect.

Constraints:
  • ge = 5.0

  • le = 7.0

field v_stall: float = 0.55#

Per unit voltage below which the motor will stall.

Constraints:
  • ge = 0.53

  • le = 0.58

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

Usage example#