轴旋转 设置转速并启动,例 当前转速 CurrentVel = 0 RPM , 设置 目标转速 TargetVel = 1000 RPM , 目标加速度 TargetAcc = 100 RPM/s, 在仿真模式下,需要执行10秒。达到目标转速。
//------------------------------------------------------------------------
/// <summary>
/// 主轴旋转( 大于0正转 , 小于0反转 , 等于0停转 )
/// </summary>
/// <param name="Vel">[输入] 目标转速 , 默认加/减速度为10倍转速 , 加加速度为100倍转速</param>
/// <returns></returns>
FUNC_STATUS OBJ_AxisSpin::Axis_Spin( double TargetRPM ,double TargetRPMAcc)
{
......
// 2. for simulation
if (ON == JDigital_Read_Mem( Point_D_Sim() ) ) {
JAnalog_Write(Point_A_RotVel(), TargetRPM);
JAnalog_Write(Point_A_RotAcc(), TargetRPMAcc);
JAnalog_Write(Point_A_RotDec(), TargetRPMAcc);
JAnalog_Write(Point_A_RotJerk(), TargetRPMAcc * 10);
//
if (TargetRPMAcc == 0) TargetRPMAcc = 1;
double cur_vel = JAnalog_Read( Point_A_ActRotVel() );
double per_time = 0.1;
int loop_count = (int)( fabs( TargetRPM / TargetRPMAcc ) / per_time);
double per_vel = ( TargetRPM - cur_vel ) / loop_count;
start_time = JTime_Get();
while ( !EXIT_FLAG )
{
if (loop_count <= 0) break;
cur_vel += per_vel;
JAnalog_Write(Point_A_ActRotVel() , cur_vel );
if (!JTimer_Wait_Seconds(per_time)) goto ABORT_LABEL;
loop_count--;
}
m_data->CurSV = TargetRPM;
JAnalog_Write( Point_A_ActRotVel(), TargetRPM );
JPrint(FUNCTION_NAME, "End Axis_Spin Ctrl - %s [simulation]", IO_HEAD() );
return FUNC_STATUS::SYS_SUCCESS;
}
......
}