本项目是一个简简单单的移频轨道电路仿真课设,基于 ZPW-2000 移频轨道电路 的列车仿真系统。系统使用 Python 编程语言和 PyQt6 框架实现,旨在通过直观的图形界面展示列车仿真运行过程。项目包含轨道信号仿真、列车实时速度显示、限速控制以及轨道电路状态等功能,便于用户理解和学习轨道电路原理及其控制逻辑。
- 动态显示列车位置、速度、剩余时间、限速等信息。
- 支持列车起始轨道、初始速度和位置的用户自定义设置。
- 提供仿真控制按钮,包括:
- 开始仿真
- 暂停仿真
- 继续仿真
- 倍速控制滑块,支持从 0.1x 到 11x 的动态倍速调整。
- 模拟 ZPW-2000 轨道电路的 低频信号 和 载频信号。
- 轨道信号状态与列车位置联动,动态更新轨道信号灯状态:
- 红色:停车信号。
- 黄色:限速信号。
- 绿色:通行信号。
- 支持自定义绘制轨道的状态与方向(左倾或右倾斜线)。
- 动态更新列车在轨道上的位置、速度、尾部轨道信息等。
- 支持多个列车的仿真运行,避免轨道占用冲突。
- 实现了轨道信号对列车速度的限速控制:
- 无限速模式
- 限速 160 km/h 模式
- 限速 80 km/h 模式
- 紧急停车模式
- 轨道状态:
- 各轨道占用情况(空闲/占用)。
- 低频信号和载频信号动态更新。
- 列车状态:
- 列车实时速度(km/h)。
- 列车限速显示。
- 剩余距离和到达时间。
- 使用 Qt Designer 设计界面,保存为
.ui文件,通过pyuic转换为 Python 代码。 - 固定窗口分辨率:1366 x 768。
- 主要组件:
- 按钮:
开始仿真、暂停仿真等。 - 滑块:控制时间倍速(范围:-10 ~ 10)。
- 标签:显示列车限速、时速、剩余距离等信息。
- 输入框:设置列车初始速度与位置。
- 下拉框:选择列车编组(如 4M4T、5M7T)。
- 按钮:
- 使用 PyQt6 的 QTimer 定时器实现仿真循环。
- 核心逻辑:
- 更新列车头部和尾部轨道信息。
- 动态计算列车速度、限速及剩余距离。
- 联动更新轨道信号灯及轨道状态显示。
- 使用 PyQt6 的 QPainter 实现轨道斜线绘制,支持颜色、方向和粗细的动态调整。
- 自定义控件(
CustomWidget)用以显示轨道状态。
- Python >= 3.9
- 安装依赖库:
- PyQt6
- PyQt6-tools(用于运行 Qt Designer)
- 创建虚拟环境:
conda create -n zpw2000_simulation python=3.9 conda activate zpw2000_simulation
- 安装依赖:
pip install PyQt6 pip install pyqt6-tools
- 运行程序:
python main.py
├── main.py # 主程序入口,控制仿真逻辑
├── QtGui
│ ├── simulationUi.py # 由 Qt Designer 转换生成的 UI 文件
│ └── simulationUi.ui # Qt Designer 设计的界面文件
├── README.md # 项目说明文档
├── requirements.txt # 依赖库清单
└── LICENSE # 开源协议
- 启动程序后,加载主界面,用户可以设置列车的初始轨道、速度和位置。
- 功能模块:
- 轨道状态:显示轨道信号灯和低频信号。
- 列车状态:实时更新速度、限速和距离等信息。
- 仿真控制:通过按钮和滑块控制仿真进度。
- 开始仿真:
- 按下
开始仿真按钮,列车开始按照设置的初始状态运行。 - 轨道信号灯会根据列车位置动态变化。
- 按下
- 倍速调整:
- 拖动倍速滑块,调整时间倍速,支持加速和减速。
- 暂停与继续:
- 仿真运行中,可按下
暂停仿真按钮暂停,再次按下恢复运行。
- 仿真运行中,可按下
本项目遵循 GPL v3.0 开源协议。若需闭源开发,请考虑使用 PySide6 替代 PyQt6。
- 界面优化:
- 增加动态轨道图和列车动画。
- 支持全屏模式和分辨率自适应布局。
- 功能扩展:
- 添加轨道占用冲突检测和报警功能。
- 实现更多轨道信号模式(如车站信号)。
- 性能优化:
- 使用多线程处理复杂仿真逻辑,提升运行效率。
如有任何问题或建议,请联系:
- 作者:ChlorophyTeio
- 邮箱:
chlorophyimo@gmail.com - 开源地址:here
Thanks♪(・ω・)ノ