Source code for psj_lib.devices.base.capabilities.pcf

"""Pre-control factor capability."""

from .piezo_capability import PiezoCapability


[docs] class PreControlFactor(PiezoCapability): """Configure pre-control factor for feedforward control. The Pre-Control Factor (PCF) provides feedforward compensation to improve control system response. It anticipates required control action based on the setpoint change, reducing settling time and tracking error. PCF is added to the PID controller output to provide faster initial response to setpoint changes. Example: >>> pcf = channel.pre_control_factor >>> # Set moderate pre-control >>> await pcf.set(0.5) >>> # Query current value >>> value = await pcf.get() >>> print(f"PCF: {value}") Note: - Typical range: 0.0 (no feedforward) to 1.0 (full feedforward) - Higher values = faster response but potential overshoot - Only active in closed-loop mode - Interacts with PID parameters - Device-specific implementation and range """ CMD_VALUE = "PCF_VALUE"
[docs] async def set(self, value: float) -> None: """Set the pre-control factor value. Args: value: Pre-control factor (typically 0.0 to 1.0) Example: >>> # Conservative feedforward >>> await channel.pre_control_factor.set(0.3) >>> # Aggressive feedforward >>> await channel.pre_control_factor.set(0.8) Note: - Exact range is device-specific - Higher values improve response speed - Too high may cause overshoot - Tune in conjunction with PID parameters """ await self._write(self.CMD_VALUE, [value])
[docs] async def get(self) -> None: """Get the current pre-control factor value. Returns: Current PCF value (device-specific units, typically 0.0-1.0) Example: >>> pcf_value = await channel.pre_control_factor.get() >>> print(f"Feedforward factor: {pcf_value}") """ return await self._write(self.CMD_VALUE)