Commit 3e6eede0 LN

文档优化

1 个父辈 6ba77d49
# IO控制 API 文档 # IO控制 API 文档
## 文档信息
| 项目 | 内容 |
|------|------|
| 版本 | 1.1.0 |
| 状态 | 正式版 |
| 编写日期 | 2025-12-18 |
| 最后更新 | 2025-12-18 |
| 编写人 | MIMO 开发团队 |
## 更新日志
| 版本 | 日期 | 更新内容 | 编写人 |
|------|------|----------|--------|
| 1.1.0 | 2025-12-18 | 根据实际代码更新接口定义 | MIMO 开发团队 |
| 1.0.0 | 2025-12-16 | 初始版本 | MIMO 开发团队 |
## 1. 概述 ## 1. 概述
本文档详细介绍了 SISO 系统中 IO 控制相关的 API 接口,包括 IO 管理器接口、IO 信号读写方法、状态监控以及相关数据结构。这些 API 提供了对系统输入输出信号的统一管理和控制功能。 本文档详细介绍了 MIMO 系统中 IO 控制相关的 API 接口,包括 IO 管理器接口 `I_IOManager`。这些 API 提供了对系统输入输出信号的统一管理和控制功能。
## 2. IO管理器接口 ## 2. IO管理器接口
...@@ -11,262 +28,73 @@ ...@@ -11,262 +28,73 @@
`I_IOManager` 是 IO 控制模块的核心接口,定义了对 IO 信号进行管理和操作的基本方法。 `I_IOManager` 是 IO 控制模块的核心接口,定义了对 IO 信号进行管理和操作的基本方法。
```csharp ```csharp
public interface I_IOManager namespace DeviceLibrary
{ {
#region 初始化与关闭 public interface I_IOManager
{
/// <summary>
/// 初始化IO管理器
/// </summary>
/// <returns>初始化是否成功</returns>
bool Initialize();
/// <summary>
/// 使用指定配置初始化IO管理器
/// </summary>
/// <param name="configPath">配置文件路径</param>
/// <returns>初始化是否成功</returns>
bool Initialize(string configPath);
/// <summary>
/// 关闭IO管理器,释放资源
/// </summary>
void Close();
#endregion
#region 单个IO操作
/// <summary>
/// 读取输入信号状态
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <returns>IO点状态,true表示信号有效,false表示信号无效</returns>
bool ReadInput(int ioId);
/// <summary>
/// 写入输出信号状态
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <param name="value">要写入的状态值,true表示信号有效,false表示信号无效</param>
/// <returns>写入是否成功</returns>
bool WriteOutput(int ioId, bool value);
/// <summary>
/// 切换输出信号状态
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <returns>切换是否成功</returns>
bool ToggleOutput(int ioId);
#endregion
#region 批量IO操作
/// <summary>
/// 批量读取输入信号状态
/// </summary>
/// <param name="ioIds">要读取的IO点ID列表</param>
/// <returns>IO点ID与状态值的映射字典</returns>
Dictionary<int, bool> ReadInputs(List<int> ioIds);
/// <summary>
/// 批量写入输出信号状态
/// </summary>
/// <param name="ioValues">IO点ID与要写入状态值的映射字典</param>
/// <returns>写入是否全部成功</returns>
bool WriteOutputs(Dictionary<int, bool> ioValues);
/// <summary>
/// 读取所有输入信号状态
/// </summary>
/// <returns>所有输入IO点ID与状态值的映射字典</returns>
Dictionary<int, bool> ReadAllInputs();
/// <summary>
/// 读取所有输出信号状态
/// </summary>
/// <returns>所有输出IO点ID与状态值的映射字典</returns>
Dictionary<int, bool> ReadAllOutputs();
#endregion
#region IO信息获取
/// <summary>
/// 获取所有IO点信息
/// </summary>
/// <returns>IO点信息列表</returns>
List<IOInfo> GetAllIOs();
/// <summary>
/// 根据IO点ID获取IO点信息
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <returns>IO点信息对象,如果未找到返回null</returns>
IOInfo GetIOInfo(int ioId);
/// <summary>
/// 根据IO点名获取IO点信息
/// </summary>
/// <param name="ioName">IO点名</param>
/// <returns>IO点信息对象,如果未找到返回null</returns>
IOInfo GetIOInfoByName(string ioName);
#endregion
#region IO映射
/// <summary>
/// 根据IO点名获取IO点ID
/// </summary>
/// <param name="ioName">IO点名</param>
/// <returns>IO点ID,如果未找到返回-1</returns>
int GetIOIdByName(string ioName);
/// <summary>
/// 根据IO点ID获取IO点名
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <returns>IO点名,如果未找到返回空字符串</returns>
string GetIONameById(int ioId);
#endregion
#region 事件处理
/// <summary>
/// 注册IO状态变化事件处理器
/// </summary>
/// <param name="ioId">IO点ID,传入-1表示监听所有IO点变化</param>
/// <param name="handler">事件处理函数,参数为IO点ID和新状态值</param>
void RegisterIOChangeHandler(int ioId, Action<int, bool> handler);
/// <summary>
/// 注销IO状态变化事件处理器
/// </summary>
/// <param name="ioId">IO点ID,传入-1表示注销所有IO点的处理器</param>
/// <param name="handler">事件处理函数,如果为null则注销该IO点的所有处理器</param>
void UnregisterIOChangeHandler(int ioId, Action<int, bool> handler = null);
#endregion
#region 高级功能
/// <summary>
/// 设置输出点闪烁
/// </summary>
/// <param name="ioId">IO点ID</param>
/// <param name="onTimeMs">亮的时间(毫秒)</param>
/// <param name="offTimeMs">灭的时间(毫秒)</param>
/// <param name="repeatCount">闪烁次数,0表示无限循环</param>
/// <returns>设置是否成功</returns>
bool BlinkOutput(int ioId, int onTimeMs, int offTimeMs, int repeatCount = 0);
/// <summary>
/// 停止输出点闪烁
/// </summary>
/// <param name="ioId">IO点ID,传入-1表示停止所有闪烁的输出点</param>
/// <returns>停止是否成功</returns>
bool StopBlinkOutput(int ioId = -1);
/// <summary> /// <summary>
/// 延时输出 /// 连接IO设备列表
/// </summary> /// </summary>
/// <param name="ioId">IO点ID</param> bool ConnectionIOList(List<string> dIODeviceNameList);
/// <param name="value">要写入的状态值</param>
/// <param name="delayMs">延时时间(毫秒)</param>
/// <returns>设置是否成功</returns>
bool DelayedWriteOutput(int ioId, bool value, int delayMs);
#endregion
}
```
## 3. 数据结构
### 3.1 IOInfo 类
`IOInfo` 类用于表示 IO 点的属性和配置信息。
```csharp
public class IOInfo
{
/// <summary> /// <summary>
/// IO点ID /// 读取所有DI信号
/// </summary> /// </summary>
public int Id { get; set; } void ReadAllDI(string deviceName, byte slaveId);
/// <summary> /// <summary>
/// IO点名 /// 读取所有DO信号
/// </summary> /// </summary>
public string Name { get; set; } void ReadAllDO(string deviceName, byte slaveId);
/// <summary> /// <summary>
/// IO点类型(输入/输出) /// 写入单个DO信号 (带延时)
/// </summary> /// </summary>
public IOType Type { get; set; } void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value, int time);
/// <summary> /// <summary>
/// IO点描述 /// 写入单个DO信号
/// </summary> /// </summary>
public string Description { get; set; } void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value);
/// <summary> /// <summary>
/// 物理地址 /// 获取DI信号值
/// </summary> /// </summary>
public string PhysicalAddress { get; set; } IO_VALUE GetDIValue(string deviceName, byte slaveID, ushort v);
/// <summary> /// <summary>
/// 是否反转(取反) /// 获取DO信号值
/// </summary> /// </summary>
public bool IsInverted { get; set; } IO_VALUE GetDOValue(string deviceName, byte slaveID, ushort v);
/// <summary> /// <summary>
/// 默认 /// 根据配置对象获取IO
/// </summary> /// </summary>
public bool DefaultValue { get; set; } IO_VALUE GetIOValue(ConfigIO configIO);
/// <summary> /// <summary>
/// 是否是安全相关IO /// 关闭所有DO
/// </summary> /// </summary>
public bool IsSafetyRelated { get; set; } void CloseAllDO();
/// <summary> /// <summary>
/// 当前值(仅用于信息展示,不保证实时性) /// 关闭所有连接
/// </summary> /// </summary>
public bool CurrentValue { get; set; } void CloseAllConnection();
}
} }
``` ```
### 3.2 枚举类型 ### 2.2 数据类型
#### 3.2.1 IOType 枚举 #### IO_VALUE 枚举
表示 IO 点类型。
```csharp ```csharp
public enum IOType public enum IO_VALUE
{ {
/// <summary> LOW = 0,
/// 输入点 HIGH = 1,
/// </summary> None = 2
Input = 0,
/// <summary>
/// 输出点
/// </summary>
Output = 1,
/// <summary>
/// 模拟输入
/// </summary>
AnalogInput = 2,
/// <summary>
/// 模拟输出
/// </summary>
AnalogOutput = 3
} }
``` ```
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 1. 概述 ## 1. 概述
本文档详细描述了SISO系统中的Layer5(边缘计算层)和Layer6(设备控制层)的架构设计、组件关系和实现方式。这两层是系统与物理设备交互的核心,负责设备控制、数据采集和边缘计算处理。 本文档详细描述了MIMO系统中的Layer5(边缘计算层)和Layer6(设备控制层)的架构设计、组件关系和实现方式。这两层是系统与物理设备交互的核心,负责设备控制、数据采集和边缘计算处理。
## 2. Layer6 (设备控制层) ## 2. Layer6 (设备控制层)
...@@ -20,19 +20,13 @@ ...@@ -20,19 +20,13 @@
#### 目录结构 #### 目录结构
``` ```
DeviceLibrary/ Core/
├── Interfaces/ # 设备抽象接口 ├── Devices/ # 设备控制层 (DeviceLibrary)
│ ├── IAxisManager.cs # 轴管理器接口 │ ├── Axis/ # 轴控制相关 (IAxisManager, AxisManager)
│ ├── I_IOManager.cs # IO管理器接口 │ ├── IO/ # IO控制相关 (I_IOManager, IOManager)
│ ├── I_SafetyDevice.cs # 安全设备接口 │ ├── Sensors/ # 传感器实现 (WeightSensor, Camera)
│ └── IRobot.cs # 机器人接口 │ ├── Controllers/ # 控制器封装 (AxisBean)
├── Implementations/ # 具体实现 │ └── Common/ # 通用设备定义
│ ├── Axis/ # 轴控制相关实现
│ ├── IO/ # IO控制相关实现
│ ├── Sensors/ # 传感器实现
│ └── Actuators/ # 执行器实现
├── Helpers/ # 辅助工具类
└── Configs/ # 设备配置文件
``` ```
### 2.2 主要模块说明 ### 2.2 主要模块说明
...@@ -84,20 +78,20 @@ DeviceLibrary/ ...@@ -84,20 +78,20 @@ DeviceLibrary/
#### 目录结构 #### 目录结构
``` ```
TheMachine/ Core/
├── Core/ # 核心业务逻辑 ├── MachineControl/ # 机器控制核心
│ ├── MainMachine.cs # 主机器控制逻辑 │ ├── MainMachine.cs # 主机器控制逻辑 (Partial Class)
│ ├── RobotManage.cs # 机器人管理逻辑 │ ├── RobotManage.cs # 机器人/全局配置管理 (Singleton)
│ └── BoxTransport.cs # 料箱传输控制逻辑 │ └── Components/ # MainMachine的分部类实现
├── Controllers/ # 控制器 │ ├── MainMachine_String.cs # 料串进出逻辑
├── AxisControl.cs # 轴控制界面控制器 ├── MainMachine_Clamp.cs # 取放料逻辑
├── IOControls.cs # IO控制界面控制器 ├── MainMachine_Store.cs # 库位管理逻辑
└── SettingControl.cs # 设置界面控制器 └── ...
├── Services/ # 服务层 ├── BusinessLogic/ # 业务逻辑
│ ├── JobManagement/ # 任务管理服务 │ ├── BoxTransport.cs # ReelTransport 类定义 (料盘搬运核心逻辑)
│ ├── StateManagement/ # 状态管理服务 │ ├── MoveInfo.cs # 运动步骤状态封装 (MoveStep Enum)
│ └── EventProcessing/ # 事件处理服务 │ └── JobList.cs # 任务队列逻辑
└── Utils/ # 工具类 └── DataProcessing/ # 数据处理
``` ```
### 3.2 主要功能模块 ### 3.2 主要功能模块
...@@ -194,4 +188,4 @@ Layer5和Layer6之间采用以下通信机制: ...@@ -194,4 +188,4 @@ Layer5和Layer6之间采用以下通信机制:
## 8. 总结 ## 8. 总结
Layer5和Layer6作为SISO系统的核心组成部分,通过清晰的分层设计和接口定义,实现了设备控制和边缘计算功能的有效分离和协作。这种设计使得系统具有良好的可维护性、可扩展性和可靠性,能够满足工业自动化场景的需求。
\ No newline at end of file \ No newline at end of file
Layer5和Layer6作为MIMO系统的核心组成部分,通过清晰的分层设计和接口定义,实现了设备控制和边缘计算功能的有效分离和协作。这种设计使得系统具有良好的可维护性、可扩展性和可靠性,能够满足工业自动化场景的需求。
\ No newline at end of file \ No newline at end of file
# SISO系统架构概述 # MIMO系统架构概述
## 1. 系统简介 ## 1. 系统简介
SISO(Single Input Single Output)系统是一个工业自动化控制平台,用于管理和控制各类工业设备,包括运动轴、传感器、执行器等。系统采用分层架构设计,实现了设备控制、数据处理、业务逻辑和用户交互的有效分离。 MIMO(SMD BOX MIMO G2)系统是一个先进的工业自动化控制平台,用于管理和控制各类工业设备,包括运动轴、传感器、执行器等。系统采用分层架构设计,实现了设备控制、数据处理、业务逻辑和用户交互的有效分离。
## 2. 整体架构 ## 2. 整体架构
### 2.1 分层架构 ### 2.1 分层架构
SISO系统采用经典的分层架构设计,从上到下依次分为以下几层: MIMO系统采用经典的分层架构设计,从上到下依次分为以下几层:
1. **表现层(Layer 1-2)**:用户界面和交互组件 1. **表现层(Layer 1-2)**:用户界面和交互组件 (`UI` 目录)
2. **应用层(Layer 3-4)**:业务应用和功能模块 2. **应用层(Layer 3-4)**:业务应用和功能模块
3. **边缘计算层(Layer 5)**:数据处理和业务逻辑 3. **边缘计算层(Layer 5)**:数据处理和业务逻辑 (`Core/MachineControl`)
4. **设备控制层(Layer 6)**:设备抽象和控制接口 4. **设备控制层(Layer 6)**:设备抽象和控制接口 (`Core/Devices`)
5. **设备层(Layer 7)**:物理设备和硬件接口 5. **设备层(Layer 7)**:物理设备和硬件接口
本文档主要关注系统的Layer5和Layer6部分。 本文档主要关注系统的Layer5和Layer6部分。
...@@ -24,35 +24,31 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几 ...@@ -24,35 +24,31 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几
``` ```
┌─────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────┐
│ 表现层 (Layer 1-2) │ 表现层 (UI)
│ ┌───────────────┐ ┌───────────────┐ │ │ ┌───────────────┐ ┌───────────────┐ │
│ │ 主界面 │ │ 配置界面 │ │ │ │ MainForm │ │ Controls │ │
│ └───────┬───────┘ └───────┬───────┘ │ │ └───────┬───────┘ └───────┬───────┘ │
│ │ │ │ │ │ │ │
└──────────┼──────────────────┼───────────────────┘ └──────────┼──────────────────┼───────────────────┘
│ │ │ │
┌──────────┼──────────────────┼───────────────────┐ ┌──────────┼──────────────────┼───────────────────┐
│ │ │ │ │ │ │ │
│ ┌───────▼───────┐ ┌───────▼───────┐ │
│ │ 应用服务 │ │ 业务模块 │ │
│ └───────┬───────┘ └───────┬───────┘ │
│ │ │ │
│ └──────────┬───────┘ │ │ └──────────┬───────┘ │
│ │ │ │ │ │
│ 边缘计算层 (Layer 5) │ 边缘计算层 (Core/MachineControl, BusinessLogic)
│ ┌─────────────────▼─────────────────┐ │ │ ┌─────────────────▼─────────────────┐ │
│ │ MainMachine (主控) │ │ │ │ MainMachine (主控) │ │
│ ├─────────────────┬─────────────────┤ │ │ ├─────────────────┬─────────────────┤ │
│ │ RobotManage │ BoxTransport │ │ │ RobotManage │ ReelTransport │
│ └─────────────────┴─────────────────┘ │ │ └─────────────────┴─────────────────┘ │
│ │ │ │ │ │
│ ┌──────────┴──────────┐ │ │ ┌──────────┴──────────┐ │
│ │ │ │ │ │ │ │
└──────────┼─────────────────────┼───────────────┘ └──────────┼─────────────────────┼───────────────
│ │ │ │
┌──────────▼─────────┐ ┌─────────▼─────────┐ ┌──────────▼─────────┐ ┌─────────▼─────────┐
│ 设备控制层 │ │ 设备控制层 │ │ 设备控制层 │ │ 设备控制层 │
│ (Layer 6 - 轴控) │ │ (Layer 6 - IO) │ (Devices/Axis) │ │ (Devices/IO)
│ ┌─────────────┐ │ │ ┌─────────────┐ │ │ ┌─────────────┐ │ │ ┌─────────────┐ │
│ │ AxisManager │ │ │ │ IOManager │ │ │ │ AxisManager │ │ │ │ IOManager │ │
│ └─────────────┘ │ │ └─────────────┘ │ │ └─────────────┘ │ │ └─────────────┘ │
...@@ -66,23 +62,25 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几 ...@@ -66,23 +62,25 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几
## 3. 主要功能模块 ## 3. 主要功能模块
### 3.1 设备控制层 (Layer 6) ### 3.1 设备控制层 (Core/Devices)
设备控制层负责提供统一的设备抽象和控制接口,主要包括: 设备控制层负责提供统一的设备抽象和控制接口,主要包括:
- **轴控制**:管理运动轴的状态和运动 - **Axis**`IAxisManager` 及其实现,管理运动轴。
- **IO控制**:管理输入输出信号 - **IO**`I_IOManager` 及其实现,管理 IO 信号。
- **传感器管理**:处理各类传感器数据 - **Controllers**:具体硬件控制器的实现(如 `HC`, `dauxiKS107`)。
- **执行器控制**:控制各类执行器动作 - **Camera**:相机设备控制。
### 3.2 边缘计算层 (Layer 5) ### 3.2 边缘计算层 (Core/MachineControl)
边缘计算层负责处理设备数据、实现业务逻辑和协调设备交互,主要包括: 边缘计算层负责处理设备数据、实现业务逻辑和协调设备交互,主要包括:
- **机器控制**:协调各设备完成整体任务流程 - **MainMachine**:系统主控逻辑入口,作为部分类(Partial Class)实现,集成了多个子功能模块。
- **任务管理**:管理和调度各类任务 - **状态机管理**:通过 `MoveInfo` 对象管理多个并行的业务流程(如 `StringMoveInfo`, `ClampMoveInfo`, `StoreMoveInfo`)。
- **状态监控**:监控系统和设备状态 - **流程协调**:协调料串机构、取放料机构和库位调度之间的交互。
- **数据处理**:对采集的数据进行处理和分析 - **RobotManage**:单例管理器,持有 `MainMachine` 实例和全局配置,负责系统级别的状态管理。
- **ReelTransport**:专注于料盘在库位、校准位和IO口之间的搬运逻辑(实现于 `BoxTransport.cs`)。
- **Components**:各类机器组件的具体逻辑实现(如 `MainMachine_Store`, `MainMachine_Clamp`)。
## 4. 技术架构 ## 4. 技术架构
...@@ -130,4 +128,4 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几 ...@@ -130,4 +128,4 @@ SISO系统采用经典的分层架构设计,从上到下依次分为以下几
## 7. 总结 ## 7. 总结
SISO系统采用分层架构设计,实现了设备控制和业务逻辑的有效分离,具有良好的可维护性、可扩展性和可靠性。系统的Layer5和Layer6部分作为连接应用层和物理设备的桥梁,在系统中扮演着至关重要的角色。
\ No newline at end of file \ No newline at end of file
MIMO系统采用分层架构设计,实现了设备控制和业务逻辑的有效分离,具有良好的可维护性、可扩展性和可靠性。系统的Layer5和Layer6部分作为连接应用层和物理设备的桥梁,在系统中扮演着至关重要的角色。
\ No newline at end of file \ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 1. 概述 ## 1. 概述
本文档详细说明SISO系统中相机设备的配置方法,包括配置文件格式、参数说明以及配置示例。相机配置文件采用JSON格式,存储在`DeviceLibrary/Config/`目录下。 本文档详细说明MIMO系统中相机设备的配置方法,包括配置文件格式、参数说明以及配置示例。相机配置文件采用JSON格式,存储在`DeviceLibrary/Config/`目录下。
## 2. 配置文件格式 ## 2. 配置文件格式
...@@ -247,21 +247,13 @@ ...@@ -247,21 +247,13 @@
### 5.1 配置文件位置 ### 5.1 配置文件位置
相机配置文件存储在以下位置: 相机配置文件存储在执行目录的 `Config/` 文件夹下。
```
DeviceLibrary/
└── Config/
├── CameraA.json
├── CameraB.json
└── ...
```
### 5.2 配置加载流程 ### 5.2 配置加载流程
1. 系统启动时,`Camera.cs`类会扫描`Config`目录下的所有相机配置文件 1. 系统启动时,`CodeManager` 类会加载配置。
2. 根据配置文件中的信息初始化相应的相机设备 2. 自动寻找 `Config/IPCamera.json` 并初始化相机。
3. 如果配置文件不存在或格式错误,系统将使用默认配置 3. 加载 `Config/coverroi.json` 获取ROI信息。
### 5.3 配置修改方法 ### 5.3 配置修改方法
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
## 1. 概述 ## 1. 概述
本文档详细说明SISO系统中设备通信的配置方法,包括通信协议、配置文件格式、参数说明以及配置示例。设备通信配置对于系统各组件间的正常协作至关重要,用户应根据实际网络环境和设备情况正确配置相关参数。 本文档详细说明MIMO系统中设备通信的配置方法,包括通信协议、配置文件格式、参数说明以及配置示例。设备通信配置对于系统各组件间的正常协作至关重要,用户应根据实际网络环境和设备情况正确配置相关参数。
## 2. 通信架构 ## 2. 通信架构
SISO系统采用分层通信架构,主要包括以下几种通信方式: MIMO系统采用分层通信架构,主要包括以下几种通信方式:
- **控制器通信**:与运动控制器之间的通信 - **控制器通信**:与运动控制器之间的通信
- **设备通信**:与各类传感器、执行器的通信 - **设备通信**:与各类传感器、执行器的通信
...@@ -160,80 +160,31 @@ SISO系统采用分层通信架构,主要包括以下几种通信方式: ...@@ -160,80 +160,31 @@ SISO系统采用分层通信架构,主要包括以下几种通信方式:
## 4. 设备通信配置参数说明 ## 4. 设备通信配置参数说明
### 4.1 EtherCAT配置参数 ### 4.1 常用PRO配置参数
| 参数 | 类型 | 说明 | 是否必需 |
|-----|------|-----|--------|
| Master.Id | Integer | 主站ID | 是 |
| Master.Name | String | 主站名称 | 是 |
| Master.Port | Integer | 网络端口号 | 是 |
| Master.CycleTime | Integer | 通信周期时间(μs) | 是 |
| Master.Priority | String | 通信优先级 | 是 |
| Slave.Id | Integer | 从站ID | 是 |
| Slave.Name | String | 从站名称 | 是 |
| Slave.VendorId | Hex | 厂商ID | 是 |
| Slave.ProductCode | Hex | 产品代码 | 是 |
| Slave.Alias | Integer | 别名 | 否 |
| Slave.Position | Integer | 位置 | 是 |
### 4.2 Modbus配置参数
| 参数 | 类型 | 说明 | 是否必需 |
|-----|------|-----|--------|
| Port | String/Integer | 串口名称或TCP端口 | 是 |
| BaudRate | Integer | 波特率(RTU模式) | 是(RTU模式) |
| DataBits | Integer | 数据位(RTU模式) | 是(RTU模式) |
| StopBits | Integer | 停止位(RTU模式) | 是(RTU模式) |
| Parity | String | 校验位(RTU模式) | 是(RTU模式) |
| IpAddress | String | IP地址(TCP模式) | 是(TCP模式) |
| Timeout | Integer | 通信超时时间(ms) | 是 |
| Slave.Id | Integer | 从站ID | 是 |
| Slave.Name | String | 从站名称 | 是 |
| Slave.FunctionCode | Integer | 功能码 | 是 |
| Slave.StartingRegister | Integer | 起始寄存器地址 | 是 |
| Slave.RegisterCount | Integer | 寄存器数量 | 是 |
### 4.3 网络通信配置参数
| 参数 | 类型 | 说明 | 是否必需 |
|-----|------|-----|--------|
| Port | Integer | 网络端口号 | 是 |
| IpAddress | String | IP地址(客户端) | 是(客户端) |
| MaxConnections | Integer | 最大连接数 | 是 |
| BufferSize | Integer | 缓冲区大小 | 是 |
| Timeout | Integer | 超时时间(ms) | 是 |
| EnableSsl | Boolean | 是否启用SSL | 否 |
| AutoReconnect | Boolean | 是否自动重连 | 否 |
| ReconnectInterval | Integer | 重连间隔(ms) | 否 |
| Path | String | WebSocket路径 | 是(WebSocket) |
| HeartbeatInterval | Integer | 心跳间隔(ms) | 否(WebSocket) |
## 5. 配置文件管理 | 参数名 | 说明 |
|-----|-----|
### 5.1 配置文件位置 | Humiture_Port | 温湿度传感器连接的COM端口 |
| AIDevice_IP | 模拟量采集模块的IP地址 |
| AIDI*_Addr | 模拟量输入通道地址 |
配置文件通常存储在以下位置: ### 4.2 EtherCAT/Motion 参数
- 主配置目录: `/Config/Communication/` EtherCAT通信参数(如PDO映射、周期)通常在控制卡固件或底层驱动代码中固定,用户主要通过 `AXIS` 配置项调整轴号映射和运动参数。
- EtherCAT配置: `/Config/Communication/EtherCAT.xml`
- Modbus配置: `/Config/Communication/Modbus.json`
- 网络通信配置: `/Config/Communication/Network.json`
### 5.2 配置文件加载流程 ## 5. 配置文件管理
1. 系统启动时,自动加载通信配置文件 ### 5.1 配置文件位置
2. 验证配置文件格式和参数有效性
3. 根据配置初始化通信模块
4. 建立与各设备的通信连接
5. 监控通信状态,处理异常情况
### 5.3 动态配置更新 所有通信相关配置均包含在主配置文件中:
- `Core/Config/Config.csv`
系统支持运行时动态更新通信配置: ### 5.2 配置修改
- 通过API接口更新配置 1. 使用文本编辑器或Excel打开 `Config.csv`
- 通过Web界面更新配置 2. 找到 `PRO` 类型行。
- 配置更新后自动重新连接设备 3. 修改对应属性值(第5列)。
4. 保存文件并重启软件生效。
## 6. 通信诊断与故障排除 ## 6. 通信诊断与故障排除
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 1. 概述 ## 1. 概述
本文档提供了SISO系统常见故障的诊断步骤和解决方案,旨在帮助技术人员快速识别和解决系统运行中遇到的问题。故障排除应遵循系统化的方法,从基础检查开始,逐步深入分析,最终解决问题。 本文档提供了MIMO系统常见故障的诊断步骤和解决方案,旨在帮助技术人员快速识别和解决系统运行中遇到的问题。故障排除应遵循系统化的方法,从基础检查开始,逐步深入分析,最终解决问题。
## 2. 故障诊断基本流程 ## 2. 故障诊断基本流程
...@@ -111,14 +111,11 @@ ...@@ -111,14 +111,11 @@
### 7.1 日志级别说明 ### 7.1 日志级别说明
| 级别 | 说明 | 示例 | | 级别 | 说明 | 对应代码 |
|-----|------|------| |-----|------|------|
| FATAL | 致命错误,导致系统崩溃 | 硬件故障、核心服务崩溃 | | alarm | 报警,系统停止或需要立即处理 | `MsgLevel.alarm` |
| ERROR | 严重错误,影响系统功能 | 通信失败、设备连接断开 | | warning | 警告,可能影响流程但不致命 | `MsgLevel.warning` |
| WARN | 警告信息,可能导致问题 | 参数异常、资源不足 | | info | 一般信息,记录流程状态 | `MsgLevel.info` |
| INFO | 一般信息,记录重要事件 | 系统启动、模块加载 |
| DEBUG | 调试信息,用于问题诊断 | 函数调用、变量值 |
| TRACE | 详细跟踪信息,记录执行流程 | 代码路径、执行步骤 |
### 7.2 日志文件位置 ### 7.2 日志文件位置
...@@ -128,34 +125,31 @@ ...@@ -128,34 +125,31 @@
- 设备日志: `/Logs/Device/` - 设备日志: `/Logs/Device/`
- 错误日志: `/Logs/Error/` - 错误日志: `/Logs/Error/`
### 7.3 关键错误代码含义 ### 7.3 系统错误代码 (ErrInfo & AlarmInfo)
#### 7.3.1 通信错误代码 #### 7.3.1 常见错误枚举 (ErrInfo)
| 错误代码 | 说明 | 可能原因 | | 错误代码/枚举 | 说明 | 解决方案 |
|---------|------|--------| |---------|------|--------|
| ECOM001 | 连接失败 | 网络问题、目标不可达 | | `X09_BoxNotDetect` | 料叉传感器未检测到料盘 | 检查X30/X09传感器,确认料盘是否在位,手动确认或清除障碍 |
| ECOM002 | 超时错误 | 响应缓慢、网络延迟 | | `SuddenStop` | 急停按钮被按下或运动报警 | 检查急停按钮状态,检查轴运动是否受阻 |
| ECOM003 | 数据传输错误 | 协议不匹配、数据损坏 | | `RunBtn` | 运行按钮相关错误 | 检查操作面板按钮状态 |
| ECOM004 | 配置错误 | 参数设置不正确、配置文件损坏 | | `Res0008` | 服务器连接异常 | 检查网络连接,确认上位机服务是否启动 |
#### 7.3.2 设备错误代码 #### 7.3.2 报警类型 (AlarmInfo)
| 错误代码 | 说明 | 可能原因 | 系统内部定义的报警类型(AlarmType):
|---------|------|--------|
| EDEV001 | 设备未连接 | 电源问题、物理连接断开 |
| EDEV002 | 设备响应错误 | 设备故障、参数错误 |
| EDEV003 | 设备超时 | 通信问题、设备繁忙 |
| EDEV004 | 设备异常 | 内部错误、硬件故障 |
#### 7.3.3 系统错误代码 | 类型ID | 类别 | 详细说明 |
|---|---|---|
| 0 | 消息 | 原点返回、复位消息 |
| 1 | 总体错误 | 急停、气压不足、盘错乱 |
| 2 | 运动轴错误 | 轴1-4报警(旋转、升降、进出、压紧)、电缸报警 |
| 3 | IO报警 | 信号超时 |
| 错误代码 | 说明 | 可能原因 | #### 7.3.3 汇川(Huichuan)伺服报警
|---------|------|--------|
| ESYS001 | 初始化失败 | 配置错误、依赖缺失 | 系统通过 `HCBoardManager.GetAxisErrorDetail` 获取伺服驱动器的详细报警代码。请参考汇川伺服驱动器手册查询具体报警代码(如 E-xxx)。
| ESYS002 | 资源不足 | 内存不足、CPU过载 |
| ESYS003 | 访问权限错误 | 权限设置问题、用户权限不足 |
| ESYS004 | 文件操作错误 | 文件不存在、权限问题、磁盘空间不足 |
## 8. 预防性维护 ## 8. 预防性维护
......
# SISO系统用户手册 # MIMO系统用户手册
## 1. 简介 ## 1. 简介
### 1.1 文档目的 ### 1.1 文档目的
本文档旨在为SISO系统的操作人员提供全面的操作指南,包括系统概述、安装配置、日常操作、维护保养及故障处理等内容,帮助用户正确、安全、高效地使用本系统。 本文档旨在为MIMO系统的操作人员提供全面的操作指南,包括系统概述、安装配置、日常操作、维护保养及故障处理等内容,帮助用户正确、安全、高效地使用本系统。
### 1.2 适用对象 ### 1.2 适用对象
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
| 术语 | 解释说明 | | 术语 | 解释说明 |
|-----|--------| |-----|--------|
| SISO | Single Input Single Output,单输入单输出系统 | | MIMO | Multiple Input Multiple Output,多输入多输出系统 |
| PLC | Programmable Logic Controller,可编程逻辑控制器 | | PLC | Programmable Logic Controller,可编程逻辑控制器 |
| HMI | Human Machine Interface,人机界面 | | HMI | Human Machine Interface,人机界面 |
| EtherCAT | 工业以太网通信协议 | | EtherCAT | 工业以太网通信协议 |
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
### 2.1 系统功能 ### 2.1 系统功能
SISO系统是一个集运动控制、设备管理、数据采集和监控于一体的工业自动化控制系统,主要功能包括: MIMO系统是一个集运动控制、设备管理、数据采集和监控于一体的工业自动化控制系统,主要功能包括:
- 多轴运动控制 - 多轴运动控制
- 设备IO管理 - 设备IO管理
...@@ -481,13 +481,16 @@ IO监控界面用于监控和控制输入输出信号,主要功能包括: ...@@ -481,13 +481,16 @@ IO监控界面用于监控和控制输入输出信号,主要功能包括:
### 9.4 常见报警及处理 ### 9.4 常见报警及处理
| 报警代码 | 报警描述 | 可能原因 | 处理方法 | 系统报警分为以下几类(AlarmType):
|---------|--------|---------|--------|
| ALM001 | 轴位置超限 | 限位开关触发或软限位设置不当 | 检查机械位置,调整限位设置 | | 类型ID | 类别 | 描述 | 处理建议 |
| ALM002 | 伺服驱动器报警 | 伺服故障或参数设置错误 | 检查伺服驱动器报警代码,参考伺服手册处理 | |---|---|---|---|
| ALM003 | 通信超时 | 网络故障或设备无响应 | 检查网络连接,重启通信设备 | | 0 | 消息 | 原点返回、复位等提示信息 | 无需特殊处理,确认即可 |
| ALM004 | 电源电压异常 | 电源波动或故障 | 检查电源系统,必要时更换电源 | | 1 | 总体错误 | 急停被按下、气压不足、料盘错乱等 | 检查急停按钮、气源压力或料盘状态 |
| ALM005 | 温度过高 | 环境温度过高或冷却系统故障 | 改善通风条件,检查冷却系统 | | 2 | 运动轴错误 | 轴伺服报警、位置超限等 | 检查对应轴的机械状态和驱动器报警代码,清除报警后复位 |
| 3 | IO报警 | 信号超时、传感器未检测到等 | 检查相关传感器和气缸状态 |
具体的伺服报警代码(如E-xxx)请参考伺服驱动器手册。
## 10. 附录 ## 10. 附录
...@@ -533,18 +536,17 @@ IO监控界面用于监控和控制输入输出信号,主要功能包括: ...@@ -533,18 +536,17 @@ IO监控界面用于监控和控制输入输出信号,主要功能包括:
### 10.3 联系方式 ### 10.3 联系方式
**技术支持热线**:400-123-4567 **技术支持热线**:400-XXX-XXXX
**邮箱**:support@siso-system.com **邮箱**:support@mimo-system.com
**网站**:www.siso-system.com **网站**:www.mimo-system.com
**服务时间**:周一至周五 9:00-18:00 **服务时间**:周一至周五 9:00-18:00
### 10.4 版本历史 ### 10.4 版本历史
| 版本号 | 更新日期 | 更新内容 |
|-------|--------|--------|
| 1.0.0 | 2023-01-15 | 初始版本 |
| 1.1.0 | 2023-03-20 | 新增功能和性能优化 |
| 1.2.0 | 2023-06-10 | 修复已知问题,增强稳定性 |
\ No newline at end of file \ No newline at end of file
| 版本号 | 更新日期 | 更新内容 |
|-------|--------|--------|
| 1.0.0 | 2025-12-18 | MIMO系统初始版本 |
| 0.9.0 | 2023-01-15 | 原型版本 |
\ No newline at end of file \ No newline at end of file
...@@ -320,10 +320,6 @@ ...@@ -320,10 +320,6 @@
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Core\Core.csproj">
<Project>{bb23296c-aa1d-45c6-9fa6-5a37b2abfe9b}</Project>
<Name>Core</Name>
</ProjectReference>
<ProjectReference Include="..\Infrastructure\Common\Common.csproj"> <ProjectReference Include="..\Infrastructure\Common\Common.csproj">
<Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project> <Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project>
<Name>Common</Name> <Name>Common</Name>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!