/** * @file Axis.cpp * @author * @brief * @version 0.1 * @date 2026-07-02 * * @copyright Copyright (c) 2026 * */ #include #include "Types.h" #include "Axis.h" namespace plcopen { Axis::Axis(UINT axisNo, std::string name) { _ref.axisNo = axisNo; _ref.axisName = std::move(name); _ref.axis = this; } void Axis::cycle() { if (_errorStop) return; if (!_powerEnabled) return; switch (_state) { case MC_AXIS_STATE::Disabled : { break; } case MC_AXIS_STATE::Standstill : { break; } case MC_AXIS_STATE::Stopping : { break; } // 独立运动 case MC_AXIS_STATE::DiscreteMotion : { break; } // 持续运动 case MC_AXIS_STATE::ContinuousMotion : { break; } // 同步运动 case MC_AXIS_STATE::SynchronizedMotion : { break; } // 回零 case MC_AXIS_STATE::Homing : { break; } default: { break; } } } void Axis::doPower(bool en) { if(en) { _powerEnabled = true; } else { _powerEnabled = false; _activeCommand.type = MotionCommandType::None; _velocity = 0.0; _acceleration = 0.0; _errorStop = false; _state = MC_AXIS_STATE::Disabled; } } MC_AXIS_STATE Axis::readState() { return _state; } }