现场优化7

This commit is contained in:
2026-08-27 11:08:36 +08:00
parent 38f594e4aa
commit 6a59552bc7
10 changed files with 1198 additions and 70 deletions
+19 -46
View File
@@ -510,13 +510,6 @@ namespace DeviceCommand.Devices
if (hasModifiedEnable)
await Task.Delay(100, );
// 3. 获取三轴原点及当前设定的目标指定位置
var (xHome, yHome, zHome) = await ();
int xTarget = await (1, );
int yTarget = await (2, );
int zTarget = await (3, );
await WriteSingleCoilAsync(_slaveAddress, ADDR_M_X_START, true, );
await WriteSingleCoilAsync(_slaveAddress, ADDR_M_Y_START, true, );
await WriteSingleCoilAsync(_slaveAddress, ADDR_M_Z_START, true, );
@@ -568,15 +561,23 @@ namespace DeviceCommand.Devices
// 3. 启动三轴联动
await ();
// 5. 到达后更新当前位置(累加偏移)
_originX += X偏移量;
_originY += Y偏移量;
_originZ += Z偏移量;
bool IsArrived= await (,);
if (IsArrived)
{
// 5. 到达后更新当前位置(累加偏移)
_originX += X偏移量;
_originY += Y偏移量;
_originZ += Z偏移量;
await ();
}
else
{
var pos = await ();
_originX += pos.Axis1;
_originY += pos.Axis6;
_originZ += pos.Axis2;
await ();
}
}
public async Task ( CancellationToken = default)
{
@@ -702,40 +703,12 @@ namespace DeviceCommand.Devices
throw new TimeoutException($"等待 {超时秒数} 秒后,三轴仍未到达机械零点");
}
/// <summary>
/// 轮询等待三轴绝对位置到达指定的待定位置(容差 ±10),超时则抛出异常
/// </summary>
/// <param name="xTarget">X轴目标位置</param>
/// <param name="yTarget">Y轴目标位置</param>
/// <param name="zTarget">Z轴目标位置</param>
/// <param name="超时秒数">最大等待时间(秒)</param>
/// <param name="取消令牌">取消令牌</param>
private async Task (int xTarget, int yTarget, int zTarget, int , CancellationToken = default)
{
var deadline = DateTime.Now.AddSeconds();
while (DateTime.Now < deadline)
{
.ThrowIfCancellationRequested();
var pos = await ();
if (Math.Abs(pos.Axis1 - xTarget) <= 10
&& Math.Abs(pos.Axis6 - yTarget) <= 10
&& Math.Abs(pos.Axis2 - zTarget) <= 10)
return;
await Task.Delay(100, );
}
throw new TimeoutException($"等待 {超时秒数} 秒后,三轴仍未到达待定位置 (X:{xTarget}, Y:{yTarget}, Z:{zTarget})");
}
/// <summary>
/// 轮询等待三轴绝对位置均到达各自设定的目标位置(容差 ±10),超时则抛出异常
/// </summary>
/// <param name="超时秒数">最大等待时间(秒)</param>
/// <param name="取消令牌">取消令牌</param>
public async Task (int , CancellationToken = default)
public async Task<bool> (int , CancellationToken = default)
{
var targetX = await (1, );
var targetY = await (2, );
@@ -751,7 +724,7 @@ namespace DeviceCommand.Devices
if (Math.Abs(pos.Axis1 - targetX) <= 10
&& Math.Abs(pos.Axis6 - targetY) <= 10
&& Math.Abs(pos.Axis2 - targetZ) <= 10)
return;
return true;
await Task.Delay(100, );
}