|
@@ -170,6 +170,7 @@ namespace MECF.Framework.Common.Simulator
|
|
|
private void MotorMotionSimulator(KeyValuePair<string, SimulatorMotionData> motor)
|
|
|
{
|
|
|
SimulatorMotionData motionData = motor.Value;
|
|
|
+ string name = motor.Key;
|
|
|
//上电检查
|
|
|
if (!motionData.SwitchSignal) return;
|
|
|
if (motionData.HomingSignal)
|
|
@@ -178,7 +179,7 @@ namespace MECF.Framework.Common.Simulator
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- PositionOperation(motionData);
|
|
|
+ PositionOperation(motionData, name);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -202,7 +203,7 @@ namespace MECF.Framework.Common.Simulator
|
|
|
/// GoToPosition操作
|
|
|
/// </summary>
|
|
|
/// <param name="data"></param>
|
|
|
- private void PositionOperation(SimulatorMotionData motionData)
|
|
|
+ private void PositionOperation(SimulatorMotionData motionData, string name)
|
|
|
{
|
|
|
if (motionData.MotionSignal)
|
|
|
{
|
|
@@ -213,7 +214,9 @@ namespace MECF.Framework.Common.Simulator
|
|
|
if (motionData.ActualPosition < motionData.TargetPosition)
|
|
|
{
|
|
|
//motionData.ActualPosition += (motionData.ActualVelocity * TIMER_INTERVAL / 1000);
|
|
|
- motionData.ActualPosition += ((motorStep / MOTOR_STEP_FACTOR < 100) ? 100 : motorStep / MOTOR_STEP_FACTOR);
|
|
|
+ int step = 100;
|
|
|
+ if (name.Contains("LS")) step = 1000;
|
|
|
+ motionData.ActualPosition += ((motorStep / MOTOR_STEP_FACTOR < step) ? step : motorStep / MOTOR_STEP_FACTOR);
|
|
|
bool fwdLimit = motionData.FwdSoftLimit != 0 ? motionData.ActualPosition >= motionData.FwdSoftLimit : false;
|
|
|
if (fwdLimit || motionData.ActualPosition >= motionData.TargetPosition)
|
|
|
{
|
|
@@ -227,7 +230,9 @@ namespace MECF.Framework.Common.Simulator
|
|
|
//反向运动
|
|
|
else if (motionData.ActualPosition > motionData.TargetPosition)
|
|
|
{
|
|
|
- motionData.ActualPosition -= ((motorStep / MOTOR_STEP_FACTOR < 100) ? 100 : motorStep / MOTOR_STEP_FACTOR);
|
|
|
+ int step = 100;
|
|
|
+ if (name.Contains("LS")) step = 1000;
|
|
|
+ motionData.ActualPosition -= ((motorStep / MOTOR_STEP_FACTOR < step) ? step : motorStep / MOTOR_STEP_FACTOR);
|
|
|
//motionData.ActualPosition -= (motionData.ActualVelocity * TIMER_INTERVAL / 1000);
|
|
|
bool revLimit = motionData.RevSoftLimit != 0 ? motionData.ActualPosition <= motionData.RevSoftLimit : false;
|
|
|
if (revLimit || motionData.ActualPosition <= motionData.TargetPosition)
|