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 快速构建自己的工业自动化应用。