Пример #1
0
        public ActuatorBase(string name, ActuatorConfig config, IActuatorState initialState = null)
        {
            Config = new ActuatorConfig(config);

            initialState = initialState ?? Config.GetDefaultInitialActuatorState();

            slewRateLimitTool = new SlewRateLimitTool(minValue: 0.0, maxValue: 100.0, initialValue: initialState.PositionInPercent, initialTarget: initialState.TargetPositionInPercent, maxRatePerSec: 0.0);

            UpdateMotionRates();

            privateState = new ActuatorState(initialState);

            logger = new Logging.Logger(name, Logging.LogGate.All);

            if (config.InitialPos.IsTargetPositionValid(allowInBetween: true))
            {
                privateState.TargetPos = privateState.PosState = config.InitialPos;
                privateState.TargetPositionInPercent = privateState.PositionInPercent = GetTargetPositionInPercent(config.InitialPos, mapInBetweenToHalfWay: true);
                privateState.TargetPosStr            = privateState.PosStateStr = config.ToString(config.InitialPos);
            }

            logger.Debug.Emit("Initial state is:{0} [{1} {2:f0}%]", privateState.PosStateStr, privateState.PosState, privateState.PositionInPercent);

            PublishState();
        }
Пример #2
0
 public virtual bool Equals(IActuatorState other)
 {
     return(other != null &&
            TargetPos == other.TargetPos &&
            TargetPosStr == other.TargetPosStr &&
            TargetPositionInPercent == other.TargetPositionInPercent &&
            PosState == other.PosState &&
            PosStateStr == other.PosStateStr &&
            PositionInPercent == other.PositionInPercent
            );
 }
Пример #3
0
        public ActuatorState SetFrom(IActuatorState other)
        {
            if (other != null)
            {
                TargetPos               = other.TargetPos;
                TargetPosStr            = other.TargetPosStr;
                TargetPositionInPercent = other.TargetPositionInPercent;
                PosState          = other.PosState;
                PosStateStr       = other.PosStateStr;
                PositionInPercent = other.PositionInPercent;
            }
            else
            {
                TargetPos               = ActuatorPosition.None;
                TargetPosStr            = TargetPos.ToString();
                TargetPositionInPercent = 0.0;
                PosState          = ActuatorPosition.Undefined;
                PosStateStr       = TargetPos.ToString();
                PositionInPercent = 0.0;
            }

            return(this);
        }
Пример #4
0
 public ActuatorPlugin(string name, ActuatorConfig config, IActuatorState initialState = null)
     : base(name, config, initialState)
 {
 }
Пример #5
0
 public ActuatorState(IActuatorState other)
 {
     SetFrom(other);
 }