/// <summary> /// Pohnutí s motorem o daný krok /// </summary> /// <param name="step">krok posunutí v qc</param> public void move(int step) { if (positionHandler != null && stateHandler != null) { try { int position = stateHandler.GetPositionIs() + (step * rev * multiplier); moveToPosition(position); } 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(); } } }
/// <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) { 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); } }