# 启动网关
cd gateway
mvn spring-boot:run
# 启动PLC服务(端口10018)
cd mes-processes/mes-plcSend
mvn spring-boot:run
cd mes-web
npm install
npm run dev
| 路径 | 说明 |
|---|---|
mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java |
任务执行引擎(核心) |
mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java |
大车设备逻辑处理器 |
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/DeviceCoordinationService.java |
设备协调服务 |
mes-common/serverBase/src/main/java/com/mes/exception/GlobalExceptionHandler.java |
全局异常处理 |
| 路径 | 说明 |
|---|---|
mes-web/src/main.js |
应用入口 |
mes-web/src/router/index.js |
路由配置 |
mes-web/src/utils/request.js |
HTTP请求封装 |
mes-web/public/config.js |
服务器地址配置 |
定义设备类型常量
java // DeviceConfig.DeviceType public static final String NEW_DEVICE = "新设备类型";
创建设备逻辑处理器
```java
@Component
public class NewDeviceLogicHandler extends BaseDeviceLogicHandler {
@Override
public String getDeviceType() {
return DeviceConfig.DeviceType.NEW_DEVICE;
}
@Override
protected DevicePlcVO.OperationResult doExecute(...) {
// 实现逻辑
}
}
```
配置设备逻辑参数(前端)
json { "deviceLogic": { "timeout": 5000, "customParam": "value" } }
创建Vue组件
vue <!-- mes-web/src/views/newModule/NewPage.vue --> <template> <div>新页面</div> </template>
添加路由
javascript // mes-web/src/router/index.js { path: '/newModule/newPage', name: 'newPage', component: () => import('../views/newModule/NewPage.vue') }
添加API接口
javascript // mes-web/src/api/newModule.js export function getNewData() { return request.get('/api/newModule/data') }
| 设备类型 | 常量 | 处理器 | 说明 |
|---|---|---|---|
| 大车设备 | LOAD_VEHICLE |
LoadVehicleLogicHandler |
多实例协调,MES任务处理 |
| 大理片笼 | LARGE_GLASS |
LargeGlassLogicHandler |
格子范围配置 |
| 卧转立扫码 | WORKSTATION_SCANNER |
HorizontalScannerLogicHandler |
定时扫描,数据落库 |
| 卧转立 | WORKSTATION_TRANSFER |
HorizontalTransferLogicHandler |
30s缓冲,批量处理 |
| 卧式缓存 | GLASS_STORAGE |
GlassStorageLogicHandler |
已实现,当前不使用 |
Controller → Service → TaskExecutionEngine → DeviceInteraction/Handler → PLC
设备A完成 → 数据传递 → 设备B读取 → 设备B执行 → 状态同步
GET /device/config/list - 设备列表POST /device/config/create - 创建设备PUT /device/config/update - 更新设备DELETE /device/config/delete/{id} - 删除设备GET /device/group/list - 设备组列表POST /device/group/create - 创建设备组POST /device/group/{groupId}/devices - 添加设备到组POST /device/task/start - 启动任务GET /device/task/list - 任务列表GET /device/task/{taskId} - 任务详情POST /device/task/{taskId}/cancel - 取消任务GET /task/notification/sse?taskId=xxx - 监听指定任务GET /task/notification/sse/all - 监听所有任务原因:大车设备状态存储在内存中,服务重启后丢失
解决:扩展支持数据库持久化
检查:
- 设备状态(在线/离线)
- PLC连接状态
- 设备协调检查
- 查看任务步骤详情
原因:连接超时(30分钟)
解决:前端重新连接
检查:
- 设备类型是否正确
- extraParams.deviceLogic 配置是否正确
- Handler是否已注册(查看日志)
@Autowired
private DeviceLogicHandlerFactory factory;
Set<String> types = factory.getSupportedDeviceTypes();
TaskExecutionEngine 日志DeviceCoordinationService 日志mes-parent (父模块)
├── mes-common (公共模块)
│ ├── springSecurity (安全)
│ ├── serverBase (基础服务)
│ ├── communication (通信)
│ └── model (数据模型)
├── mes-processes (业务流程)
│ └── mes-plcSend (PLC服务)
└── gateway (API网关)
依赖关系:
- mes-plcSend 依赖 springSecurity 和 serverBase
- serverBase 依赖 model
- gateway 独立运行
| 配置文件 | 位置 | 说明 |
|---|---|---|
| 后端主配置 | mes-processes/mes-plcSend/src/main/resources/application.yml |
PLC服务配置 |
| 前端配置 | mes-web/public/config.js |
服务器地址 |
| 路由配置 | mes-web/src/router/index.js |
前端路由 |
| 数据库迁移 | mes-processes/mes-plcSend/src/main/resources/db/migration/ |
数据库脚本 |
interaction/impl/interaction/vehicle/)coordination/ 子包项目详细报告.mdmes-processes/mes-plcSend/README.mdmes-processes/mes-plcSend/ARCHITECTURE.md最后更新:2025年