Files
LinuxMotion/MotionLib/Src/Axis.cpp
T
chen 0587f7ac6c feat: 实现 Axis 核心属性与 MC_Power 功能块
- Axis: 新增运动学/功率/错误管理属性(_position 等 10+ 项)
- Axis: 新增 doPower()/readState()/cycle() 接口骨架
- MC_Power: 实现功率使能功能块(边沿检测 + 状态输出)
- GlobalResource: 新增 CreateAxis/GetAxisRefById 全局轴管理
- App/CMakeLists.txt: 添加 GlobalResource.cpp 源文件
- docs: 更新 Axis 属性清单与 MC_Power 设计文档
2026-07-03 10:01:06 +00:00

96 lines
1.5 KiB
C++

/**
* @file Axis.cpp
* @author
* @brief
* @version 0.1
* @date 2026-07-02
*
* @copyright Copyright (c) 2026
*
*/
#include <string>
#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;
}
}