Skip to content

gds_control.dsl.elements

Control system element declarations -- frozen Pydantic models for user-facing declarations.

Bases: BaseModel

A plant state variable.

Maps to: GDS Mechanism (state update f) + Entity (state X). Receives control ports from driving controllers, emits state port.

Source code in packages/gds-control/gds_control/dsl/elements.py
class State(BaseModel, frozen=True):
    """A plant state variable.

    Maps to: GDS Mechanism (state update f) + Entity (state X).
    Receives control ports from driving controllers, emits state port.
    """

    name: str
    initial: float | None = None

Bases: BaseModel

Exogenous signal — reference setpoint or disturbance.

Maps to: GDS BoundaryAction (exogenous input U). Emits a reference port; has no internal inputs.

Source code in packages/gds-control/gds_control/dsl/elements.py
class Input(BaseModel, frozen=True):
    """Exogenous signal — reference setpoint or disturbance.

    Maps to: GDS BoundaryAction (exogenous input U).
    Emits a reference port; has no internal inputs.
    """

    name: str

Bases: BaseModel

Observation: reads state variables, emits measurement.

Maps to: GDS Policy (observation g). Receives state ports from observed states, emits measurement port.

Source code in packages/gds-control/gds_control/dsl/elements.py
class Sensor(BaseModel, frozen=True):
    """Observation: reads state variables, emits measurement.

    Maps to: GDS Policy (observation g).
    Receives state ports from observed states, emits measurement port.
    """

    name: str
    observes: list[str] = Field(default_factory=list)

Bases: BaseModel

Control law: reads sensors/inputs, emits control signal.

Maps to: GDS Policy (decision logic g). Receives measurement/reference ports, emits control port.

Source code in packages/gds-control/gds_control/dsl/elements.py
class Controller(BaseModel, frozen=True):
    """Control law: reads sensors/inputs, emits control signal.

    Maps to: GDS Policy (decision logic g).
    Receives measurement/reference ports, emits control port.
    """

    name: str
    reads: list[str] = Field(default_factory=list)
    drives: list[str] = Field(default_factory=list)