# C_SFB_DC 功能块分析报告

## 基本信息

| 项目 | 内容 |
|------|------|
| 功能块名称 | C_SFB_DC |
| 功能描述 | Speed Feedback Detection（速度反馈检测-直流传动） |
| 最后修改 | 2016.01.05 |
| 作者 | GaoWeidi |
| 页数 | 1页（9个程序段） |

> **注意**：源代码文件中的功能名称注释为"C_SFB"，文件名为C_SFB_DC，表示直流传动版本。

## 功能概述

C_SFB_DC是一个速度反馈检测功能块，用于检测直流传动设备的运行状态。该功能块通过速度反馈信号计算速度百分比，并与设定值比较，判断设备是否正在运行。

### 应用场景
- **直流传动监控**：监控直流电机运行状态
- **速度检测**：检测电机是否达到设定速度
- **运行判断**：判断设备是否正在运行
- **速度计算**：计算线速度和距离增量

### 功能特点
1. **速度百分比计算**：计算实际速度与额定速度的百分比
2. **线速度计算**：根据转速计算线速度
3. **距离增量计算**：计算每个扫描周期的距离增量
4. **运行状态检测**：检测设备是否正在运行
5. **正反转检测**：检测设备的运行方向

## 思维导图

```mermaid
graph TD
    A[C_SFB_DC 速度反馈检测] --> B[输入处理模块]
    A --> C[计算模块]
    A --> D[检测模块]
    A --> E[输出模块]
    
    B --> B1[SFB 速度反馈]
    B --> B2[TOPN 额定转速]
    B --> B3[DIA 辊径]
    B --> B4[GEAR 减速比]
    B --> B5[CSPD 检测速度]
    
    C --> C1[速度百分比]
    C --> C2[转速RPM]
    C --> C3[线速度MPS]
    C --> C4[距离增量D_L]
    
    D --> D1[正向检测F]
    D --> D2[反向检测R]
    D --> D3[延时滤波]
    
    E --> E1[RUN 运行状态]
    E --> E2[RPM 转速]
    E --> E3[MPS 线速度]
    
    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#f5e1ff
    style D fill:#e1ffe1
    style E fill:#ffe1e1
```

## 流程路径描述

### 速度计算路径：
开始 → 读取SFB → 计算SPDX → 计算RPM → 计算MPS → 计算D_L
**功能**: 计算速度相关的各个参数

### 运行检测路径：
开始 → 比较SPDX与CSPD → 输出F/R → 延时滤波 → 输出RUN
**功能**: 检测设备是否正在运行

## 逐帧功能分析

### Rung 1: 速度百分比计算

**功能描述**: 计算实际速度与额定速度的百分比

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| SFB | 速度反馈 | REAL | 数值 |
| TOPN | 额定转速 | REAL | 设定值 |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| SPDX | 速度百分比 | REAL |
| RPM | 转速 | REAL |

**触发逻辑**:
- SPDX = (SFB / TOPN) × 100.0
- RPM = SFB

**功能实现**: 
使用DIV_REAL和MUL_REAL计算速度百分比，并保存RPM值。

### Rung 2: 线速度计算

**功能描述**: 根据转速计算线速度

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| RPM | 转速 | REAL | 数值 |
| DIA | 辊径 | REAL | 设定值 |
| GEAR | 减速比 | REAL | 设定值 |
| SEL | 选择信号 | BOOL | TRUE/FALSE |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| MPS | 线速度(m/s) | REAL |

**触发逻辑**:
- MPS = (RPM × DIA × GEAR × π) / 60.0

**功能实现**: 
1. 调用C_NSWR选择π或1.0
2. 调用C_MUL4进行四值乘法
3. 使用DIV_REAL除以60得到线速度

### Rung 3: 距离增量计算

**功能描述**: 计算每个扫描周期的距离增量

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| SCN | 扫描次数 | INT | 数值 |
| MPS | 线速度 | REAL | 数值 |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| D_L | 距离增量(mm) | REAL |

**触发逻辑**:
- D_L = MPS × (SCN限幅) / 1000.0

**功能实现**: 
1. 调用C_LIMI限制扫描次数在1~160范围内
2. 转换为实数并乘以MPS
3. 除以1000得到毫米单位的距离增量

### Rung 4-5: 正向检测

**功能描述**: 检测速度是否超过正向阈值

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| SPDX | 速度百分比 | REAL | 数值 |
| CSPD | 检测速度阈值 | REAL | 设定值 |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| F | 正向标志 | BOOL |
| F_TOF | 正向延时 | BOOL |

**触发逻辑**:
- IF SPDX ≥ CSPD THEN F = TRUE
- 使用TOF延时500ms

### Rung 6-7: 反向检测

**功能描述**: 检测速度是否低于反向阈值

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| SPDX | 速度百分比 | REAL | 数值 |
| CSPD | 检测速度阈值 | REAL | 设定值 |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| R | 反向标志 | BOOL |
| R_TOF | 反向延时 | BOOL |

**触发逻辑**:
- IF SPDX ≤ (1/CSPD) THEN R = TRUE
- 使用TOF延时500ms

### Rung 8: 运行状态输出

**功能描述**: 输出运行状态

**输入条件**:
| 信号名称 | 信号描述 | 信号类型 | 触发值 |
|----------|----------|----------|--------|
| F_TOF | 正向延时 | BOOL | TRUE |
| R_TOF | 反向延时 | BOOL | FALSE |

**输出功能**:
| 信号名称 | 信号描述 | 信号类型 |
|----------|----------|----------|
| RUN | 运行状态 | BOOL |

**触发逻辑**:
- RUN = F_TOF AND NOT R_TOF

## 触发条件总结

### 正向检测条件
- **SPDX ≥ CSPD**: 速度超过正向阈值
- **延时500ms**: TOF断电延时

### 反向检测条件
- **SPDX ≤ 1/CSPD**: 速度低于反向阈值
- **延时500ms**: TOF断电延时

### 运行输出条件
- **F_TOF = TRUE AND R_TOF = FALSE**: 正向运行中

## 实现功能总结

### 主要功能
1. **速度百分比计算**: 计算实际速度与额定速度的百分比
2. **线速度计算**: 根据转速计算线速度
3. **距离增量计算**: 计算每个扫描周期的距离增量
4. **运行状态检测**: 检测设备是否正在运行

### 计算公式
| 参数 | 公式 | 说明 |
|------|------|------|
| SPDX | (SFB/TOPN)×100 | 速度百分比 |
| MPS | (RPM×DIA×GEAR×π)/60 | 线速度 |
| D_L | MPS×SCN/1000 | 距离增量 |

## 关键信号说明

| 信号名称 | 信号描述 | 信号类型 | 用途 |
|----------|----------|----------|------|
| SFB | 速度反馈 | REAL | 速度输入 |
| TOPN | 额定转速 | REAL | 额定值 |
| DIA | 辊径 | REAL | 机械参数 |
| GEAR | 减速比 | REAL | 机械参数 |
| CSPD | 检测速度 | REAL | 检测阈值 |
| SPDX | 速度百分比 | REAL | 计算结果 |
| RPM | 转速 | REAL | 输出转速 |
| MPS | 线速度 | REAL | 输出线速度 |
| D_L | 距离增量 | REAL | 输出距离 |
| RUN | 运行状态 | BOOL | 运行输出 |

## 调试技巧

### 调试步骤
1. 检查SFB输入是否正常
2. 验证TOPN、DIA、GEAR参数设置
3. 监控SPDX计算是否正确
4. 检查RUN输出状态

### 常见问题
1. **RUN不输出**: 检查CSPD阈值设置
2. **速度不准**: 检查DIA和GEAR参数
3. **距离增量异常**: 检查SCN扫描次数

### 监控信号列表
- SFB（速度反馈）
- SPDX（速度百分比）
- MPS（线速度）
- RUN（运行状态）
