现场程序优化
This commit is contained in:
@@ -85,6 +85,8 @@ namespace DeviceCommand.Devices
|
||||
/// 轴使能控制
|
||||
/// </summary>
|
||||
/// <param name="axis">轴编号 (1 - 6)</param>
|
||||
/// <param name="enable">true: 使能轴, false: 禁用轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisEnableAsync(int axis, bool enable, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -105,6 +107,8 @@ namespace DeviceCommand.Devices
|
||||
/// 读取指定轴的使能状态
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>true: 已使能, false: 未使能</returns>
|
||||
public async Task<bool> GetAxisEnableAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -125,6 +129,7 @@ namespace DeviceCommand.Devices
|
||||
/// <param name="xPos">X轴原点位置 (范围: 0 ~ 50000)</param>
|
||||
/// <param name="yPos">Y轴原点位置 (范围: 0 ~ 50000)</param>
|
||||
/// <param name="zPos">Z轴原点位置 (范围: 0 ~ 20000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetHomePositionAsync(int xPos, int yPos, int zPos, CancellationToken ct = default)
|
||||
{
|
||||
if (xPos < 0 || xPos > 50000)
|
||||
@@ -144,6 +149,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 批量查询当前 X、Y、Z 三轴设定的原点位置值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>返回包含三轴原点位置的元组 (X, Y, Z)</returns>
|
||||
public async Task<(int X, int Y, int Z)> GetHomePositionAsync(CancellationToken ct = default)
|
||||
{
|
||||
@@ -163,6 +169,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置回原点定位速度(带 0 - 100000 范围检查)
|
||||
/// </summary>
|
||||
/// <param name="speed">回原点定位速度 (范围: 0 - 100000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetHomePositionSpeedAsync(int speed, CancellationToken ct = default)
|
||||
{
|
||||
if (speed < 0 || speed > 100000)
|
||||
@@ -174,6 +182,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询当前设定的回原点定位速度
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前回原点定位速度值</returns>
|
||||
public async Task<int> GetHomePositionSpeedAsync(CancellationToken ct = default)
|
||||
{
|
||||
ushort[] registers = await ReadHoldingRegistersAsync(_slaveAddress, ADDR_HD_HOME_POS_SPEED, 2, ct);
|
||||
@@ -188,6 +198,8 @@ namespace DeviceCommand.Devices
|
||||
/// 设置指定轴的运行速度(带 0 - 100000 范围检查)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="speed">运行速度 (范围: 0 - 100000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisSpeedAsync(int axis, int speed, CancellationToken ct = default)
|
||||
{
|
||||
if (speed < 0 || speed > 100000)
|
||||
@@ -207,6 +219,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取指定轴当前设定的运行速度
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前设定的运行速度值</returns>
|
||||
public async Task<int> GetAxisSpeedAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -227,6 +242,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 写入指定轴的目标位置(动态安全校验:目标位置不能超过 [轴最大物理极限 - 当前轴原点设置值])
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="targetPos">目标位置</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisTargetPositionAsync(int axis, int targetPos, CancellationToken ct = default)
|
||||
{
|
||||
var (xHome, yHome, zHome) = await GetHomePositionAsync(ct);
|
||||
@@ -272,6 +290,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取指定轴当前设定的目标指定位置
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前设定的目标位置值</returns>
|
||||
public async Task<int> GetAxisTargetPositionAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -293,6 +314,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置系统紧停锁定状态 (true: 锁定激活, false: 解除锁定)
|
||||
/// </summary>
|
||||
/// <param name="state">true: 锁定激活, false: 解除锁定</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetEStopStateAsync(bool state, CancellationToken ct = default)
|
||||
{
|
||||
await WriteSingleCoilAsync(_slaveAddress, ADDR_M_ESTOP, state, ct);
|
||||
@@ -301,6 +324,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置指定轴的停止控制状态 (true: 持续输出停止信号, false: 释放停止信号)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="state">true: 持续输出停止信号, false: 释放停止信号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetStopStateAsync(int axis, bool state, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -317,6 +343,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 全局回零(安全校验版:先检查回原点速度是否为 0,为0则拒绝触发)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task HomeAsync(CancellationToken ct = default)
|
||||
{
|
||||
int currentSpeed = await GetHomePositionSpeedAsync(ct);
|
||||
@@ -331,6 +358,7 @@ namespace DeviceCommand.Devices
|
||||
/// 单轴指定位置启动(含速度判定、使能自动补齐、动作目标位置独立范围校验)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task StartSingleAxisAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort startAddress;
|
||||
@@ -388,6 +416,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 三轴同时启动(全开:严格校验全部运行轴速度、批量检测与补正1~6号轴使能、联动校验三轴目标范围极限)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task StartAllAxesAsync(CancellationToken ct = default)
|
||||
{
|
||||
// 1. 一次性读取三轴速度,严禁任何一轴速度为 0
|
||||
@@ -493,6 +522,8 @@ namespace DeviceCommand.Devices
|
||||
/// 读取指定轴的绝对位置(相对原点的实时位置,只读)
|
||||
/// </summary>
|
||||
/// <param name="axis">轴编号 (1-6)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>指定轴的绝对位置值</returns>
|
||||
public async Task<int> GetAbsolutePositionAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -516,6 +547,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 批量读取 1-6 轴的绝对位置(一次性读取 22 个寄存器,高效)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>返回 6 轴绝对位置元组</returns>
|
||||
public async Task<(int Axis1, int Axis2, int Axis3, int Axis4, int Axis5, int Axis6)> GetAllAbsolutePositionsAsync(CancellationToken ct = default)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user