# PLC-PROFINET-monitor **Repository Path**: openwcs/plc-profinet-monitor ## Basic Information - **Project Name**: PLC-PROFINET-monitor - **Description**: PROFINET Monitor - PLC 通信监控系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-01-08 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PROFINET Monitor - PLC 通信监控系统 一个基于 PyQt5 的 PLC 通信监控界面,支持连接西门子 PLCSIM 和 S7-1200/1500 PLC。 ![Python](https://img.shields.io/badge/Python-3.8+-blue.svg) ![PyQt5](https://img.shields.io/badge/PyQt5-5.15+-green.svg) ![License](https://img.shields.io/badge/License-MIT-yellow.svg) ![预览](images/1.png) ![预览](images/2.gif) ## ✨ 功能特点 ### 🔌 通信功能 - 支持连接西门子 PLCSIM (模拟器) - 支持连接真实 S7-1200/1500 PLC - 支持 PROFINET 协议通信 - 自动模拟模式 (未安装 snap7 时) ### 📊 监控功能 - 数字量输入 (DI) 实时显示 - 数字量输出 (DO) 控制开关 - 模拟量数据仪表盘显示 - 实时波形图 - 变量监控表格 - 系统日志记录 ### 🎨 界面特点 - 科技感深色主题 - 自定义 LED 指示灯控件 - 动画仪表盘 - 渐变进度条 - 滑动开关 - 实时波形显示 ## 📁 项目结构 ``` code/ ├── main.py # 主程序入口 ├── requirements.txt # 依赖列表 ├── README.md # 说明文档 │ ├── plc_comm/ # PLC 通信模块 │ ├── __init__.py │ └── s7_client.py # S7 通信客户端 │ ├── widgets/ # 自定义控件 │ ├── __init__.py │ └── custom_widgets.py # LED、仪表盘等控件 │ └── styles/ # 样式文件 └── cyber_theme.qss # 科技感主题样式 ``` ## 🚀 快速开始 ### 1. 安装依赖 ```bash cd code pip install -r requirements.txt ``` ### 2. 运行程序 ```bash python main.py ``` ### 3. 连接 PLC 1. 点击 **"连接"** 按钮 2. 在弹出的对话框中配置: - IP 地址: PLC 的 IP 地址 - PLC 类型: PLCSIM / S7-1200 / S7-1500 - 机架号: 通常为 0 - 槽号: S7-1200/1500 为 1,S7-300/400 为 2 3. 点击 **"确定"** 连接 ## 📋 使用说明 ### 模拟模式 如果未安装 `python-snap7` 库,程序将自动进入模拟模式: - 模拟数据会自动生成 - 可以测试界面功能 - 无需真实 PLC 硬件 ### 数据读写 1. 切换到 **"数据读写"** 选项卡 2. 选择存储区 (DB/I/Q/M) 3. 设置地址偏移和数据类型 4. 点击 **"读取"** 或 **"写入"** ### 变量监控 1. 切换到 **"变量监控"** 选项卡 2. 查看预定义变量的实时值 3. 可以添加/删除监控变量 ## 🔧 配置 PLCSIM ### TIA Portal 设置 1. 创建 S7-1200/1500 项目 2. 配置 PLC IP 地址 (如 192.168.0.1) 3. 启动 PLCSIM 仿真 4. 将 PLC 切换到 RUN 模式 ### 数据块配置 程序默认监控以下地址: | 变量名 | 地址 | 数据类型 | 说明 | |--------|------|----------|------| | Speed | DB1.DBD0 | Real | 电机速度 | | Temperature | DB1.DBD4 | Real | 温度 | | Pressure | DB1.DBD8 | Real | 压力 | | Counter | DB1.DBW12 | Int | 计数器 | | DI_0~7 | I0.0~I0.7 | Bool | 数字量输入 | | DO_0~7 | Q0.0~Q0.7 | Bool | 数字量输出 | 请在 TIA Portal 中创建对应的 DB1 数据块。 ## 🎯 自定义控件 ### LEDIndicator - LED 指示灯 ```python from widgets import LEDIndicator led = LEDIndicator(color="green", size=30) led.turn_on() # 点亮 led.turn_off() # 熄灭 led.toggle() # 切换 led.start_blink() # 闪烁 led.start_breathing() # 呼吸效果 ``` ### GaugeWidget - 仪表盘 ```python from widgets import GaugeWidget gauge = GaugeWidget(min_value=0, max_value=100, title="温度") gauge.set_unit("°C") gauge.set_value(75.5) gauge.set_thresholds(70, 85) # 警告/危险阈值 ``` ### DataCard - 数据卡片 ```python from widgets import DataCard card = DataCard(title="速度", value="0", unit="RPM") card.set_value("1500") card.set_color("#00ff88") ``` ### ToggleSwitch - 开关 ```python from widgets import ToggleSwitch switch = ToggleSwitch() switch.toggled.connect(lambda checked: print(f"开关: {checked}")) ``` ### WaveformWidget - 波形图 ```python from widgets import WaveformWidget waveform = WaveformWidget(buffer_size=200) waveform.set_range(0, 100) waveform.add_value(50) # 添加数据点 ``` ## 🛠️ 故障排除 ### 连接失败 1. 检查 IP 地址是否正确 2. 确认 PLCSIM 已启动并运行 3. 检查防火墙设置 4. 确认 PLC 类型和槽号设置正确 ### snap7 安装问题 Windows: ```bash pip install python-snap7 ``` 如果安装失败,程序会自动使用模拟模式。 ### 界面显示问题 确保安装了 PyQt5: ```bash pip install PyQt5 ``` ## 📝 更新日志 ### v1.0.0 (2026-01) - 初始版本发布 - 支持 S7-1200/1500/PLCSIM 连接 - 科技感 UI 界面 - 自定义控件库 ## 📄 许可证 MIT License ## 联系人: ***UKIOT*** ## 🤝 贡献 欢迎提交 Issue 和 Pull Request!