157 lines
3.5 KiB
Markdown
157 lines
3.5 KiB
Markdown
# PLC 模拟模式使用说明
|
||
|
||
## 概述
|
||
|
||
程序现在支持两种 PLC 运行模式:
|
||
- **真实 PLC 模式**(默认):连接到真实的 PLC 硬件设备
|
||
- **模拟模式**:使用软件模拟 PLC 行为,用于开发和测试
|
||
|
||
## 使用方法
|
||
|
||
### 1. 默认模式(真实 PLC)
|
||
|
||
直接运行程序,不带任何参数:
|
||
|
||
```powershell
|
||
python dtmgtApp.py
|
||
```
|
||
|
||
**输出日志**:
|
||
```
|
||
使用真实 PLC 设备
|
||
```
|
||
|
||
### 2. 模拟模式
|
||
|
||
使用 `--mock` 参数启动程序:
|
||
|
||
```powershell
|
||
python dtmgtApp.py --mock
|
||
```
|
||
|
||
**输出日志**:
|
||
```
|
||
启用 PLC 模拟模式
|
||
```
|
||
|
||
## 模拟模式特性
|
||
|
||
在模拟模式下,程序会:
|
||
|
||
✅ **模拟 PLC 寄存器**:
|
||
- 自动初始化模拟寄存器
|
||
- 支持读写寄存器操作
|
||
- 支持线圈(Coil)和保持寄存器(Holding Register)
|
||
|
||
✅ **模拟测试流程**:
|
||
- 自动模拟通道测试过程
|
||
- 支持多方向跌落测试
|
||
- 自动生成测试结果数据
|
||
|
||
✅ **无需硬件**:
|
||
- 不需要真实的 PLC 设备
|
||
- 不需要串口连接
|
||
- 适合开发和调试
|
||
|
||
## 其他命令行参数
|
||
|
||
程序支持以下命令行参数:
|
||
|
||
| 参数 | 类型 | 默认值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `--mock` | flag | False | 启用 PLC 模拟模式 |
|
||
| `--startModbusServer` | flag | True | 启动 Modbus 服务器 |
|
||
| `--modbusServer` | string | "127.0.0.1" | Modbus 服务器地址 |
|
||
| `--modbusServerPort` | int | 5020 | Modbus 服务器端口 |
|
||
| `--no-ui` | flag | False | 不启动 PyQt5 前端界面 |
|
||
| `--port` | int | 5050 | HTTP 服务端口 |
|
||
|
||
## 完整示例
|
||
|
||
### 示例 1:模拟模式 + 自定义端口
|
||
|
||
```powershell
|
||
python dtmgtApp.py --mock --port 8080
|
||
```
|
||
|
||
### 示例 2:真实 PLC + 不启动 UI
|
||
|
||
```powershell
|
||
python dtmgtApp.py --no-ui
|
||
```
|
||
|
||
### 示例 3:模拟模式 + 自定义 Modbus 端口
|
||
|
||
```powershell
|
||
python dtmgtApp.py --mock --modbusServerPort 5021
|
||
```
|
||
|
||
## 代码修改说明
|
||
|
||
### modbus_plc.py
|
||
|
||
```python
|
||
MOCK_MODE = False # 默认使用真实 PLC,通过命令行参数 --mock 启用模拟模式
|
||
```
|
||
|
||
### dtmgtApp.py
|
||
|
||
1. **添加命令行参数**:
|
||
```python
|
||
parser.add_argument('--mock', action='store_true', help="启用 PLC 模拟模式")
|
||
```
|
||
|
||
2. **在 main() 函数中设置模式**:
|
||
```python
|
||
if hasattr(args, 'mock') and args.mock:
|
||
import modbus_plc
|
||
modbus_plc.MOCK_MODE = True
|
||
print_with_timestamp("启用 PLC 模拟模式", color='yellow')
|
||
else:
|
||
print_with_timestamp("使用真实 PLC 设备", color='green')
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
⚠️ **生产环境**:
|
||
- 生产环境必须使用真实 PLC 模式
|
||
- 不要在生产环境中使用 `--mock` 参数
|
||
|
||
⚠️ **测试环境**:
|
||
- 开发测试时可以使用模拟模式
|
||
- 模拟模式下的数据仅供测试,不代表真实测试结果
|
||
|
||
⚠️ **参数检查**:
|
||
- 程序启动时会在日志中明确显示当前使用的模式
|
||
- 请仔细检查日志确认运行模式正确
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 如何确认当前是什么模式?
|
||
|
||
**A**: 查看程序启动时的日志输出:
|
||
- `启用 PLC 模拟模式` → 模拟模式
|
||
- `使用真实 PLC 设备` → 真实模式
|
||
|
||
### Q2: 模拟模式下还需要 PLC 硬件吗?
|
||
|
||
**A**: 不需要。模拟模式完全在软件中运行,无需任何 PLC 硬件或串口连接。
|
||
|
||
### Q3: 如何在代码中检查当前模式?
|
||
|
||
**A**: 检查 `modbus_plc.MOCK_MODE` 变量:
|
||
```python
|
||
import modbus_plc
|
||
if modbus_plc.MOCK_MODE:
|
||
print("当前是模拟模式")
|
||
else:
|
||
print("当前是真实 PLC 模式")
|
||
```
|
||
|
||
## 更新历史
|
||
|
||
- **2025-12-08**: 初始版本
|
||
- 将 MOCK_MODE 默认值改为 False
|
||
- 添加 --mock 命令行参数
|
||
- 添加模式切换日志输出
|