/// <summary> /// Vypne motor /// </summary> public void disable() { disposeSimulateTicker(); if (timerObserver != null) { timerObserver.Stop(); } state = MotorState.disabled; stateObserver.motorStateChanged(MotorState.disabled, "", id, 0, 0, 0, 0); }
/// <summary> /// Inicializace motoru /// </summary> /// <param name="connector">connector sběrnice</param> /// <param name="stateObserver">posluchač stavu motoru</param> /// <param name="nodeNumber">číslo node</param> /// <param name="id">id motoru</param> /// <param name="mode">defaultní nastavení módu</param> /// <param name="reverse">příznak obrácení směru točení</param> /// <param name="multiplier">násobitel otáček v případě, že je motor za převodovkou</param> /// <param name="positionVeocity">rychlost motoru v otáčkách při pozicování</param> /// <param name="positionAceleration">zrychlení motoru v otáčkách při pozicování</param> /// <param name="positionDeceleration">zpomalení motoru v otáčkách při pozicování</param> /// <param name="velocity">maximální rychlost motoru při rychlostním řízení</param> /// <param name="aceleration">zrychlení motoru při rychlostním řízení</param> /// <param name="deceleration">zpomalení motoru při rychlostním řízení</param> public void inicialize(DeviceManager connector, IStateObserver stateObserver, Action motorErrorOccuredObserver, int nodeNumber, MotorId id, MotorMode mode, bool reverse, int multiplier, uint positionVelocity, uint positionAceleration, uint positionDeceleration, uint velocity, uint aceleration, uint deceleration) { try { this.mode = mode; this.stateObserver = stateObserver; this.motorErrorOccuredObserver = motorErrorOccuredObserver; this.id = id; this.multiplier = multiplier; if (reverse) { rev = -1; } motor = connector.CreateDevice(Convert.ToUInt16(nodeNumber)); stateHandler = motor.Operation.MotionInfo; sm = motor.Operation.StateMachine; if (sm.GetFaultState()) { sm.ClearFault(); } sm.SetEnableState(); maxSpeed = (int)velocity; velocityHandler = motor.Operation.ProfileVelocityMode; velocityHandler.SetVelocityProfile(aceleration, deceleration); positionHandler = motor.Operation.ProfilePositionMode; positionHandler.SetPositionProfile(positionVelocity, positionAceleration, positionDeceleration); homingHandler = motor.Operation.HomingMode; changeMode(mode); setStateObserver(); state = MotorState.enabled; stateObserver.motorStateChanged(MotorState.enabled, "", id, 0, 0, 0, 0); targetPosition = stateHandler.GetPositionIs(); targetAngle = getAngleFromPosition(targetPosition); } catch (DeviceException e) { sm = null; disableStateObserver(); state = MotorState.error; stateObserver.motorStateChanged(MotorState.error, String.Format("{0}\nError: {1}", e.ErrorMessage, errorDictionary.getComunicationErrorMessage(e.ErrorCode)), id, 0, 0, 0, 0); } }
/// <summary> /// Inicializace motoru /// </summary> /// <param name="connector">connector sběrnice</param> /// <param name="stateObserver">posluchač stavu motoru</param> /// <param name="nodeNumber">číslo node</param> /// <param name="id">id motoru</param> /// <param name="mode">defaultní nastavení módu</param> /// <param name="reverse">příznak obrácení směru točení</param> /// <param name="multiplier">násobitel otáček v případě, že je motor za převodovkou</param> /// <param name="positionVeocity">rychlost motoru v otáčkách při pozicování</param> /// <param name="positionAceleration">zrychlení motoru v otáčkách při pozicování</param> /// <param name="positionDeceleration">zpomalení motoru v otáčkách při pozicování</param> /// <param name="velocity">maximální rychlost motoru při rychlostním řízení</param> /// <param name="aceleration">zrychlení motoru při rychlostním řízení</param> /// <param name="deceleration">zpomalení motoru při rychlostním řízení</param> public void inicialize(DeviceManager connector, IStateObserver stateObserver, Action motorErrorOccuredObserver, int nodeNumber, MotorId id, MotorMode mode, bool reverse, int multiplier, uint positionVelocity, uint positionAceleration, uint positionDeceleration, uint velocity, uint aceleration, uint deceleration) { this.mode = mode; this.stateObserver = stateObserver; this.motorErrorOccuredObserver = motorErrorOccuredObserver; this.id = id; this.multiplier = multiplier; if (reverse) { rev = -1; } changeMode(mode); setStateObserver(); state = MotorState.enabled; stateObserver.motorStateChanged(MotorState.enabled, "", id, 0, 0, 0, 0); }
/// <summary> /// Inicializace motoru /// </summary> /// <param name="connector">connector sběrnice</param> /// <param name="stateObserver">posluchač stavu motoru</param> /// <param name="nodeNumber">číslo node</param> /// <param name="id">id motoru</param> /// <param name="mode">defaultní nastavení módu</param> /// <param name="reverse">příznak obrácení směru točení</param> /// <param name="multiplier">násobitel otáček v případě, že je motor za převodovkou</param> /// <param name="positionVeocity">rychlost motoru v otáčkách při pozicování</param> /// <param name="positionAceleration">zrychlení motoru v otáčkách při pozicování</param> /// <param name="positionDeceleration">zpomalení motoru v otáčkách při pozicování</param> /// <param name="velocity">maximální rychlost motoru při rychlostním řízení</param> /// <param name="aceleration">zrychlení motoru při rychlostním řízení</param> /// <param name="deceleration">zpomalení motoru při rychlostním řízení</param> public void inicialize(DeviceManager connector, IStateObserver stateObserver, Action motorErrorOccuredObserver, int nodeNumber, MotorId id, MotorMode mode, bool reverse, int multiplier, uint positionVelocity, uint positionAceleration, uint positionDeceleration, uint velocity, uint aceleration, uint deceleration) { try { this.mode = mode; this.stateObserver = stateObserver; this.motorErrorOccuredObserver = motorErrorOccuredObserver; this.id = id; this.multiplier = multiplier; if (reverse) { rev = -1; } motor = connector.CreateDevice(Convert.ToUInt16(nodeNumber)); stateHandler = motor.Operation.MotionInfo; sm = motor.Operation.StateMachine; if (sm.GetFaultState()) sm.ClearFault(); sm.SetEnableState(); maxSpeed = (int)velocity; velocityHandler = motor.Operation.ProfileVelocityMode; velocityHandler.SetVelocityProfile(aceleration, deceleration); positionHandler = motor.Operation.ProfilePositionMode; positionHandler.SetPositionProfile(positionVelocity, positionAceleration, positionDeceleration); homingHandler = motor.Operation.HomingMode; changeMode(mode); setStateObserver(); state = MotorState.enabled; stateObserver.motorStateChanged(MotorState.enabled, "", id, 0, 0, 0, 0); targetPosition = stateHandler.GetPositionIs(); targetAngle = getAngleFromPosition(targetPosition); } catch (DeviceException e) { sm = null; disableStateObserver(); state = MotorState.error; stateObserver.motorStateChanged(MotorState.error, String.Format("{0}\nError: {1}", e.ErrorMessage, errorDictionary.getComunicationErrorMessage(e.ErrorCode)), id, 0, 0, 0, 0); } }
/// <summary> /// Přepnutí módu motoru /// </summary> /// <param name="mode">mód</param> public void changeMode(MotorMode mode) { this.mode = mode; if (velocityHandler != null && positionHandler != null && homingHandler != null) { try { switch (mode) { case MotorMode.velocity: velocityHandler.ActivateProfileVelocityMode(); break; case MotorMode.position: positionHandler.ActivateProfilePositionMode(); break; case MotorMode.homing: homingHandler.ActivateHomingMode(); break; } } catch (DeviceException e) { state = MotorState.error; stateObserver.motorStateChanged(MotorState.error, String.Format("{0}\nError: {1}", e.ErrorMessage, errorDictionary.getComunicationErrorMessage(e.ErrorCode)), id, 0, 0, 0, 0); motorErrorOccuredObserver(); } } }