DeviceLibrary-API.md 10.0 KB

DeviceLibrary API 文档

1. 概述

DeviceLibrary 是 SISO 系统中的设备控制层核心库,提供了统一的设备抽象和控制接口,支持各类工业设备的接入和控制。本文档详细介绍了 DeviceLibrary 提供的主要 API 接口及其使用方法。

2. 核心接口

2.1 IAxisManager 接口

轴管理器接口,提供对运动轴的管理和控制功能。

public interface IAxisManager
{
    /// <summary>
    /// 初始化轴管理器
    /// </summary>
    bool Initialize();

    /// <summary>
    /// 关闭轴管理器
    /// </summary>
    void Close();

    /// <summary>
    /// 获取所有轴的信息
    /// </summary>
    List<AxisBean> GetAllAxes();

    /// <summary>
    /// 按轴ID获取轴信息
    /// </summary>
    AxisBean GetAxisById(int axisId);

    /// <summary>
    /// 控制指定轴点动
    /// </summary>
    bool MoveAxisJog(int axisId, double speed, bool isPositive);

    /// <summary>
    /// 停止指定轴运动
    /// </summary>
    bool StopAxis(int axisId);

    /// <summary>
    /// 设置轴位置
    /// </summary>
    bool SetAxisPosition(int axisId, double position);

    /// <summary>
    /// 轴回零
    /// </summary>
    bool HomeAxis(int axisId);

    /// <summary>
    /// 获取轴状态
    /// </summary>
    AxisStatus GetAxisStatus(int axisId);
}

2.2 I_IOManager 接口

IO 管理器接口,提供对 IO 信号的管理和控制功能。

public interface I_IOManager
{
    /// <summary>
    /// 初始化IO管理器
    /// </summary>
    bool Initialize();

    /// <summary>
    /// 关闭IO管理器
    /// </summary>
    void Close();

    /// <summary>
    /// 读取输入信号状态
    /// </summary>
    bool ReadInput(int ioId);

    /// <summary>
    /// 写入输出信号状态
    /// </summary>
    bool WriteOutput(int ioId, bool value);

    /// <summary>
    /// 批量读取输入信号状态
    /// </summary>
    Dictionary<int, bool> ReadInputs(List<int> ioIds);

    /// <summary>
    /// 批量写入输出信号状态
    /// </summary>
    bool WriteOutputs(Dictionary<int, bool> ioValues);

    /// <summary>
    /// 注册IO状态变化事件处理器
    /// </summary>
    void RegisterIOChangeHandler(int ioId, Action<int, bool> handler);
}

2.3 I_SafetyDevice 接口

安全设备接口,提供对安全相关设备的管理和监控功能。

public interface I_SafetyDevice
{
    /// <summary>
    /// 初始化安全设备
    /// </summary>
    bool Initialize();

    /// <summary>
    /// 关闭安全设备
    /// </summary>
    void Close();

    /// <summary>
    /// 获取安全状态
    /// </summary>
    SafetyStatus GetSafetyStatus();

    /// <summary>
    /// 重置安全状态
    /// </summary>
    bool ResetSafetyStatus();

    /// <summary>
    /// 注册安全状态变化事件处理器
    /// </summary>
    void RegisterSafetyStatusChangeHandler(Action<SafetyStatus> handler);
}

2.4 IRobot 接口

机器人设备接口,提供对机器人设备的管理和控制功能。

public interface IRobot
{
    /// <summary>
    /// 初始化机器人
    /// </summary>
    bool Initialize();

    /// <summary>
    /// 关闭机器人
    /// </summary>
    void Close();

    /// <summary>
    /// 获取机器人当前位置
    /// </summary>
    RobotPosition GetCurrentPosition();

    /// <summary>
    /// 移动机器人到指定位置
    /// </summary>
    bool MoveToPosition(RobotPosition position, double speed);

    /// <summary>
    /// 执行机器人程序
    /// </summary>
    bool ExecuteProgram(string programName, Dictionary<string, object> parameters = null);

    /// <summary>
    /// 停止机器人运动
    /// </summary>
    bool StopMotion();

    /// <summary>
    /// 获取机器人状态
    /// </summary>
    RobotStatus GetRobotStatus();
}

3. 具体实现类

3.1 AxisManager 类

轴管理器的具体实现,提供对运动轴的管理和控制。

public class AxisManager : IAxisManager
{
    // 实现 IAxisManager 接口的所有方法
    // ...
}

3.2 IOManager 类

IO 管理器的具体实现,提供对 IO 信号的管理和控制。

public class IOManager : I_IOManager
{
    // 实现 I_IOManager 接口的所有方法
    // ...
}

3.3 Camera 类

相机设备的抽象和控制实现。

public class Camera
{
    /// <summary>
    /// 初始化相机
    /// </summary>
    public bool Initialize(string cameraConfigPath);

    /// <summary>
    /// 关闭相机
    /// </summary>
    public void Close();

    /// <summary>
    /// 开始采集图像
    /// </summary>
    public bool StartAcquisition();

    /// <summary>
    /// 停止采集图像
    /// </summary>
    public void StopAcquisition();

    /// <summary>
    /// 采集单张图像
    /// </summary>
    public Bitmap CaptureImage();

    /// <summary>
    /// 设置相机参数
    /// </summary>
    public bool SetParameter(string paramName, object value);

    /// <summary>
    /// 获取相机参数
    /// </summary>
    public object GetParameter(string paramName);
}

3.4 C8WeightSensor 类

C8系列重量传感器的实现。

public class C8WeightSensor
{
    /// <summary>
    /// 初始化传感器
    /// </summary>
    public bool Initialize(string portName, int baudRate);

    /// <summary>
    /// 关闭传感器
    /// </summary>
    public void Close();

    /// <summary>
    /// 获取当前重量值
    /// </summary>
    public double GetWeight();

    /// <summary>
    /// 零点校准
    /// </summary>
    public bool ZeroCalibration();

    /// <summary>
    /// 量程校准
    /// </summary>
    public bool SpanCalibration(double calibrationWeight);

    /// <summary>
    /// 设置采样频率
    /// </summary>
    public bool SetSamplingRate(int rate);
}

4. 设备通信模块

4.1 ServerCommunication 类

与服务器通信的模块,实现数据上传和命令接收功能。

public class ServerCommunication
{
    /// <summary>
    /// 初始化通信连接
    /// </summary>
    public bool Initialize(string serverAddress, int port);

    /// <summary>
    /// 关闭通信连接
    /// </summary>
    public void Close();

    /// <summary>
    /// 发送数据到服务器
    /// </summary>
    public bool SendData(string data);

    /// <summary>
    /// 注册命令接收事件处理器
    /// </summary>
    public void RegisterCommandReceivedHandler(Action<string> handler);

    /// <summary>
    /// 检查连接状态
    /// </summary>
    public bool IsConnected();
}

5. 辅助工具类

5.1 CodeManager 类

条码管理工具类,提供条码生成和解析功能。

public class CodeManager
{
    /// <summary>
    /// 生成条码
    /// </summary>
    public string GenerateCode(string prefix, int sequenceNumber);

    /// <summary>
    /// 验证条码格式
    /// </summary>
    public bool ValidateCode(string code);

    /// <summary>
    /// 解析条码信息
    /// </summary>
    public CodeInfo ParseCode(string code);
}

5.2 ConfigManager 类

配置管理工具类,提供配置文件的读取和保存功能。

public class ConfigManager
{
    /// <summary>
    /// 从文件加载配置
    /// </summary>
    public static T LoadConfig<T>(string configPath) where T : class, new();

    /// <summary>
    /// 保存配置到文件
    /// </summary>
    public static bool SaveConfig<T>(string configPath, T config) where T : class;

    /// <summary>
    /// 获取默认配置路径
    /// </summary>
    public static string GetDefaultConfigPath(string configName);
}

6. 异常处理

DeviceLibrary 定义了一系列自定义异常类,用于表示不同类型的设备操作异常:

  • DeviceInitializationException:设备初始化异常
  • DeviceCommunicationException:设备通信异常
  • DeviceOperationException:设备操作异常
  • DeviceTimeoutException:设备超时异常

这些异常继承自 DeviceException 基类,可以通过捕获基类来处理所有设备相关异常。

7. 使用示例

7.1 轴控制示例

// 创建并初始化轴管理器
IAxisManager axisManager = new AxisManager();
if (axisManager.Initialize())
{
    try
    {
        // 使轴1以10mm/s的速度正向点动
        axisManager.MoveAxisJog(1, 10.0, true);

        // 延时2秒后停止轴1
        Thread.Sleep(2000);
        axisManager.StopAxis(1);

        // 获取轴1的当前位置
        AxisBean axis = axisManager.GetAxisById(1);
        Console.WriteLine($"Axis 1 current position: {axis.CurrentPosition}");
    }
    catch (DeviceException ex)
    {
        Console.WriteLine($"Device error: {ex.Message}");
    }
    finally
    {
        // 关闭轴管理器
        axisManager.Close();
    }
}

7.2 IO控制示例

// 创建并初始化IO管理器
I_IOManager ioManager = new IOManager();
if (ioManager.Initialize())
{
    try
    {
        // 读取输入点10的状态
        bool inputState = ioManager.ReadInput(10);
        Console.WriteLine($"Input 10 state: {inputState}");

        // 写入输出点5为true
        ioManager.WriteOutput(5, true);

        // 注册IO变化事件处理器
        ioManager.RegisterIOChangeHandler(10, (ioId, value) => {
            Console.WriteLine($"IO {ioId} changed to: {value}");
        });
    }
    catch (DeviceException ex)
    {
        Console.WriteLine($"Device error: {ex.Message}");
    }
    finally
    {
        // 关闭IO管理器
        ioManager.Close();
    }
}

8. 总结

DeviceLibrary 提供了丰富的设备控制和管理 API,支持各类工业设备的接入和控制。通过统一的接口设计和完善的异常处理机制,使得设备操作更加简单、可靠。开发者可以基于这些 API 快速构建自己的工业自动化应用。