fix: rebuild MES as compilable go-zero+ent backend (renamed bj_power_mes), restore 3 workstation projects from pristine original, align naming; all Go projects go build clean
This commit is contained in:
+375
-248
@@ -1,336 +1,463 @@
|
||||
package constants
|
||||
|
||||
// ============================================================================
|
||||
// 本文件为磨床自动化单元新项目的常量定义。
|
||||
// ============================================================================
|
||||
import "sort"
|
||||
|
||||
// === 工件分类 ===
|
||||
|
||||
// === 工件分类(WorkpieceCategory) ===
|
||||
// TODO: 根据实际工件类型补充,当前仅占位
|
||||
type WorkpieceCategory string
|
||||
|
||||
const (
|
||||
// TODO: 替换为实际工件分类(如方形件、圆形件等)
|
||||
WorkpieceCategory_General WorkpieceCategory = "GENERAL"
|
||||
// 方形件:需要在转台上换向
|
||||
WorkpieceCategory_Square WorkpieceCategory = "SQUARE"
|
||||
WorkpieceCategory_AVM107 WorkpieceCategory = "A6VM107"
|
||||
WorkpieceCategory_AVM160 WorkpieceCategory = "A6VM160"
|
||||
WorkpieceCategory_AVM200 WorkpieceCategory = "A6VM200"
|
||||
)
|
||||
|
||||
// === 设备类型编码(EquipmentTypeCode) ===
|
||||
// 磨床自动化单元设备清单:
|
||||
// - DOCK: 接驳台(左42+右42共84工位,AGV暂不对接,预留HTTP接口)
|
||||
// - GRINDER: 磨床(1台,1工位,支持换料exchange)
|
||||
// - TURN_TABLE: 换向机构(1工位,用于方形件换向)
|
||||
// - AIR_BLOW: 清洗(复用Wash信号M2130-M2139,机器人放料→启动清洗→等待完成→取回)
|
||||
// - FULL_CHECK: 全检台(6工位,纯人工检测,输出"该位置处理完成"通用Done信号)
|
||||
// - CACHE: 缓存台(6工位,全检台满时暂存,等全检台有空位后回流)
|
||||
func (WorkpieceCategory) Values() []string {
|
||||
return []string{
|
||||
string(WorkpieceCategory_AVM107),
|
||||
string(WorkpieceCategory_AVM160),
|
||||
string(WorkpieceCategory_AVM200),
|
||||
}
|
||||
}
|
||||
|
||||
// MomDockMap MOM 接驳台 → 工件分类的硬编码映射
|
||||
// - 接驳台 1-4 专用于 A6VM107
|
||||
// - 接驳台 5-8 专用于 A6VM160
|
||||
// - 接驳台 9-10 专用于 A6VM200
|
||||
//
|
||||
// 注意:抽检台即全检台,文档中的"抽检台"是全检台的别名,不单独建模
|
||||
// 同 category 同时占用的接驳台数即额度(107=4 / 160=4 / 200=2)。
|
||||
var MomDockMap = map[int]WorkpieceCategory{
|
||||
1: WorkpieceCategory_AVM107,
|
||||
2: WorkpieceCategory_AVM107,
|
||||
3: WorkpieceCategory_AVM107,
|
||||
4: WorkpieceCategory_AVM107,
|
||||
5: WorkpieceCategory_AVM160,
|
||||
6: WorkpieceCategory_AVM160,
|
||||
7: WorkpieceCategory_AVM160,
|
||||
8: WorkpieceCategory_AVM160,
|
||||
9: WorkpieceCategory_AVM200,
|
||||
10: WorkpieceCategory_AVM200,
|
||||
}
|
||||
|
||||
// MomDocksByCategory 反查表:category → 该 category 专属接驳台号列表(按号码升序)
|
||||
var MomDocksByCategory = func() map[WorkpieceCategory][]int {
|
||||
out := map[WorkpieceCategory][]int{}
|
||||
for dockNo, cat := range MomDockMap {
|
||||
out[cat] = append(out[cat], dockNo)
|
||||
}
|
||||
for _, v := range out {
|
||||
sort.Ints(v) // map 遍历无序 → 排序保证调度稳定
|
||||
}
|
||||
return out
|
||||
}()
|
||||
|
||||
// === 设备类型编码 ===
|
||||
|
||||
type EquipmentTypeCode string
|
||||
|
||||
const (
|
||||
// EquipmentTypeCode_Dock - 接驳台(Dock),工件入线/出线位置,每个接驳台42工位
|
||||
EquipmentTypeCode_Dock EquipmentTypeCode = "DOCK"
|
||||
// EquipmentTypeCode_Grinder - 磨床(Grinder),核心加工设备,1工位,支持换料
|
||||
// 有料用GrinderExchangeReq,无料用GrinderPlaceReq,有料判断由EquipmentSlot.status决定
|
||||
EquipmentTypeCode_Grinder EquipmentTypeCode = "GRINDER"
|
||||
// EquipmentTypeCode_TurnTable - 换向机构(TurnTable),单工位,用于方形工件换向
|
||||
// 流程:放换向机构→PLC自动旋转→收到TurnTablePlaceDone信号→取回放入磨床
|
||||
EquipmentTypeCode_TurnTable EquipmentTypeCode = "TURN_TABLE"
|
||||
// EquipmentTypeCode_AirBlow - 清洗(AirBlow)
|
||||
// 流程:机器人放料→发WashStartReq→等待WashCompleteDone→机器人取回
|
||||
EquipmentTypeCode_AirBlow EquipmentTypeCode = "AIR_BLOW"
|
||||
// EquipmentTypeCode_Cache - 缓存台(Cache),6工位暂存缓冲位
|
||||
// 全检台放满时临时放置已磨削未检测工件。
|
||||
// 缓存台无独立PLC信号,回流由软件逻辑触发:全检台检测完成后,机器人取走已检工件,
|
||||
// 全检台出现空位,调度器将缓存台上的工件重新调度到全检台。
|
||||
EquipmentTypeCode_Cache EquipmentTypeCode = "CACHE"
|
||||
// EquipmentTypeCode_FullCheck - 全检台(FullCheck),6工位,纯人工检测
|
||||
// 机器人放料后发 FullCheckPlaceDoneRequestInspect (M2102) 通知PLC可开始检测,
|
||||
// 检测完成后 PLC 发 FullCheckInspectDone (M2098) 通知软件取料。
|
||||
EquipmentTypeCode_FullCheck EquipmentTypeCode = "FULL_CHECK"
|
||||
// EquipmentTypeCode_Robot - 搬运机器人,串行互斥执行工件搬运,slotCount=0 无加工槽位
|
||||
EquipmentTypeCode_Robot EquipmentTypeCode = "ROBOT"
|
||||
// EquipmentTypeCode_TempSlot - 夹爪(TempSlot),机器人的持料虚拟位置,
|
||||
// 非物理设备:工件被机器人夹持期间归属此位置,slotCount=0
|
||||
EquipmentTypeCode_TempSlot EquipmentTypeCode = "TEMP_SLOT"
|
||||
EquipmentTypeCode_CNC EquipmentTypeCode = "CNC"
|
||||
EquipmentTypeCode_WashingMachine EquipmentTypeCode = "WASHER_HP"
|
||||
EquipmentTypeCode_Deburr EquipmentTypeCode = "DEBURR"
|
||||
EquipmentTypeCode_CleaningLine EquipmentTypeCode = "CLEANING_LINE"
|
||||
EquipmentTypeCode_Inspection EquipmentTypeCode = "INSPECTION"
|
||||
EquipmentTypeCode_Sampling EquipmentTypeCode = "SAMPLING"
|
||||
EquipmentTypeCode_Marking EquipmentTypeCode = "MARKING"
|
||||
EquipmentTypeCode_TempStore EquipmentTypeCode = "TEMP_STORE"
|
||||
EquipmentTypeCode_Robot EquipmentTypeCode = "ROBOT"
|
||||
)
|
||||
|
||||
// === 槽位状态(SlotStatus) ===
|
||||
// 设备/接驳台/缓存台上每个槽位的占用状态。
|
||||
// 状态机:EMPTY → OCCUPIED(上料/搬运中)→ PROCESSING(加工中,如磨床/全检)→ DONE(完成待取)→ EMPTY
|
||||
func (EquipmentTypeCode) Values() []string {
|
||||
return []string{
|
||||
string(EquipmentTypeCode_CNC),
|
||||
string(EquipmentTypeCode_WashingMachine),
|
||||
string(EquipmentTypeCode_Deburr),
|
||||
string(EquipmentTypeCode_CleaningLine),
|
||||
string(EquipmentTypeCode_Inspection),
|
||||
string(EquipmentTypeCode_Sampling),
|
||||
string(EquipmentTypeCode_Marking),
|
||||
string(EquipmentTypeCode_TempStore),
|
||||
string(EquipmentTypeCode_Robot),
|
||||
}
|
||||
}
|
||||
|
||||
// === 批处理模式 ===
|
||||
|
||||
type BatchMode string
|
||||
|
||||
const (
|
||||
BatchMode_None BatchMode = "NONE"
|
||||
BatchMode_FullBatch BatchMode = "FULL_BATCH"
|
||||
)
|
||||
|
||||
func (BatchMode) Values() []string {
|
||||
return []string{
|
||||
string(BatchMode_None),
|
||||
string(BatchMode_FullBatch),
|
||||
}
|
||||
}
|
||||
|
||||
// === 槽位状态 ===
|
||||
|
||||
type SlotStatus string
|
||||
|
||||
const (
|
||||
SlotStatus_Empty SlotStatus = "EMPTY" // 空槽位
|
||||
SlotStatus_Occupied SlotStatus = "OCCUPIED" // 已占用,工件在槽位上等待/已到位
|
||||
SlotStatus_Processing SlotStatus = "PROCESSING" // 正在加工/检测中(磨床磨削中、全检检测中、清洗中)
|
||||
SlotStatus_Done SlotStatus = "DONE" // 本工位加工完成,等待机器人取走
|
||||
SlotStatus_Empty SlotStatus = "EMPTY"
|
||||
SlotStatus_Occupied SlotStatus = "OCCUPIED"
|
||||
SlotStatus_Done SlotStatus = "DONE"
|
||||
)
|
||||
|
||||
// === 产线状态(LineStatus,前端 systemStatus.lineStatus 枚举) ===
|
||||
type LineStatus string
|
||||
func (SlotStatus) Values() []string {
|
||||
return []string{
|
||||
string(SlotStatus_Empty),
|
||||
string(SlotStatus_Occupied),
|
||||
string(SlotStatus_Done),
|
||||
}
|
||||
}
|
||||
|
||||
const (
|
||||
LineStatus_Idle LineStatus = "idle" // 空闲:无运行中工单
|
||||
LineStatus_Emergency LineStatus = "emergency" // 紧急:有 PROCESSING 槽位(加工/检测中)
|
||||
LineStatus_Paused LineStatus = "paused" // 暂停:有未确认报警或暂停工单
|
||||
LineStatus_Running LineStatus = "running" // 运行中:有活跃工单
|
||||
)
|
||||
// === 工序类型 ===
|
||||
|
||||
// === 旧引擎 job_step 快照状态(新蓝图不复刻,仅终态清理/防御用) ===
|
||||
type JobStepStatus string
|
||||
|
||||
const (
|
||||
JobStepStatus_Error JobStepStatus = "error"
|
||||
JobStepStatus_Completed JobStepStatus = "completed"
|
||||
)
|
||||
|
||||
// === 设备占用标识(OccupiedBy) ===
|
||||
// 仅接驳台使用,ROBOT/AGV/MANUAL 互斥占用
|
||||
type OccupiedBy string
|
||||
|
||||
const (
|
||||
OccupiedBy_Robot OccupiedBy = "ROBOT" // 机器人正在取放接驳台工件
|
||||
OccupiedBy_AGV OccupiedBy = "AGV" // AGV 正在进线
|
||||
OccupiedBy_Manual OccupiedBy = "MANUAL" // 人工占用(故障排查/维护)
|
||||
)
|
||||
|
||||
// === 工序类型(StepType) ===
|
||||
// 磨床单元新工艺路线(新流程版):
|
||||
//
|
||||
// OP10 DOCK_LOAD 接驳台上料(机器人取毛坯)
|
||||
// 有料判断由EquipmentSlot.status决定
|
||||
// OP20 GRIND 磨床磨削
|
||||
// 有料用GrinderExchangeReq,无料用GrinderPlaceReq
|
||||
// OP30 AIR_BLOW 清洗(机器人放料→发WashStartReq→等WashCompleteDone→取回)
|
||||
// 复用Wash信号M2130-M2139
|
||||
// OP40 FULL_CHECK 全检台检测(机器人放料→等待检测完成→取回)
|
||||
// 纯人工检测,不区分OK/NG;全检台满时先放缓存台
|
||||
// OP50 CACHE_STAGE 缓存台暂存(全检台满时暂存,等全检台有空位后软件调度回流)
|
||||
// 缓存台无独立PLC信号,回流由调度器运行时判断
|
||||
// OP60 DOCK_UNLOAD 接驳台下料(成品放回接驳台)
|
||||
type StepType string
|
||||
|
||||
const (
|
||||
// StepType_Operation - 设备加工工序(磨削、清洗、全检等需要设备执行的步骤)
|
||||
StepType_Operation StepType = "OPERATION"
|
||||
// StepType_BufferStage - 缓存台暂存步骤,工件在缓存台等待
|
||||
StepType_Operation StepType = "OPERATION"
|
||||
StepType_BufferStage StepType = "BUFFER_STAGE"
|
||||
// StepType_Decision - 决策步骤,根据条件分支选择下一工序
|
||||
StepType_Decision StepType = "DECISION"
|
||||
// StepType_AirBlow - 机器人末端气吹清洁步骤,占用机器人,无设备信号握手
|
||||
StepType_AirBlow StepType = "AIR_BLOW"
|
||||
// StepType_LoadDock - 从接驳台上料(取毛坯)
|
||||
StepType_LoadDock StepType = "LOAD_DOCK"
|
||||
// StepType_UnloadDock - 下料到接驳台(放回成品)
|
||||
StepType_UnloadDock StepType = "UNLOAD_DOCK"
|
||||
StepType_Decision StepType = "DECISION"
|
||||
StepType_FinalScan StepType = "FINAL_SCAN"
|
||||
StepType_Judge StepType = "JUDGE"
|
||||
StepType_LaserMark StepType = "LASER_MARK"
|
||||
StepType_UnloadDock StepType = "UNLOAD_DOCK"
|
||||
)
|
||||
|
||||
// === 工件状态(JobStatus) ===
|
||||
// 工件(job)生命周期状态,EventLoop是唯一状态写路径。
|
||||
func (StepType) Values() []string {
|
||||
return []string{
|
||||
string(StepType_Operation),
|
||||
string(StepType_BufferStage),
|
||||
string(StepType_Decision),
|
||||
string(StepType_FinalScan),
|
||||
string(StepType_Judge),
|
||||
string(StepType_LaserMark),
|
||||
string(StepType_UnloadDock),
|
||||
}
|
||||
}
|
||||
|
||||
// === 工件(Job)状态 ===
|
||||
|
||||
type JobStatus string
|
||||
|
||||
const (
|
||||
JobStatus_Created JobStatus = "CREATED" // 已创建,尚未上线
|
||||
JobStatus_InHandling JobStatus = "IN_HANDLING" // 机器人/PLC正在搬运
|
||||
JobStatus_Processing JobStatus = "PROCESSING" // 设备加工/检测中
|
||||
JobStatus_WaitingUnload JobStatus = "WAITING_UNLOAD" // 本工序完成,等待取走
|
||||
JobStatus_OnBuffer JobStatus = "ON_BUFFER" // 在缓存台暂存
|
||||
|
||||
JobStatus_WaitingDecision JobStatus = "WAITING_DECISION" // 等待检测判定
|
||||
JobStatus_WaitingReorient JobStatus = "WAITING_REORIENT" // 等待转台换向
|
||||
JobStatus_Completed JobStatus = "COMPLETED" // 已完成下线
|
||||
JobStatus_Scrapped JobStatus = "SCRAPPED" // 已报废/不合格
|
||||
JobStatus_Suspended JobStatus = "SUSPENDED" // 已暂停
|
||||
// 以下三个为防御性常量:现行代码不写这些状态,仅用于识别历史数据残留
|
||||
// (如旧引擎取消工单/异常终态的 job),终态判定时统一拦截防误推进。
|
||||
JobStatus_Error JobStatus = "ERROR" // 异常终态(历史数据防御)
|
||||
JobStatus_Failed JobStatus = "FAILED" // 失败终态(历史数据防御)
|
||||
JobStatus_Cancelled JobStatus = "CANCELLED" // 取消终态(历史数据防御)
|
||||
JobStatus_Created JobStatus = "CREATED"
|
||||
JobStatus_Processing JobStatus = "PROCESSING"
|
||||
JobStatus_WaitingUnload JobStatus = "WAITING_UNLOAD"
|
||||
JobStatus_OnBuffer JobStatus = "ON_BUFFER"
|
||||
JobStatus_WaitingDecision JobStatus = "WAITING_DECISION"
|
||||
JobStatus_Completed JobStatus = "COMPLETED"
|
||||
JobStatus_Scrapped JobStatus = "SCRAPPED"
|
||||
JobStatus_Suspended JobStatus = "SUSPENDED"
|
||||
JobStatus_WaitingWaste JobStatus = "WAITING_WASTE"
|
||||
JobStatus_Cancelled JobStatus = "CANCELLED"
|
||||
)
|
||||
|
||||
// === 工单状态(WorkOrderStatus) ===
|
||||
func (JobStatus) Values() []string {
|
||||
return []string{
|
||||
string(JobStatus_Created),
|
||||
string(JobStatus_Processing),
|
||||
string(JobStatus_WaitingUnload),
|
||||
string(JobStatus_OnBuffer),
|
||||
string(JobStatus_WaitingDecision),
|
||||
string(JobStatus_Completed),
|
||||
string(JobStatus_Scrapped),
|
||||
string(JobStatus_Suspended),
|
||||
string(JobStatus_WaitingWaste),
|
||||
string(JobStatus_Cancelled),
|
||||
}
|
||||
}
|
||||
|
||||
// === 质检结果(内窥镜/抽检共用) ===
|
||||
|
||||
type QCResult string
|
||||
|
||||
const (
|
||||
QCResult_Pass QCResult = "PASS"
|
||||
QCResult_Fail QCResult = "FAIL"
|
||||
)
|
||||
|
||||
func (QCResult) Values() []string {
|
||||
return []string{
|
||||
string(QCResult_Pass),
|
||||
string(QCResult_Fail),
|
||||
}
|
||||
}
|
||||
|
||||
// === 工单状态 ===
|
||||
|
||||
type WorkOrderStatus string
|
||||
|
||||
const (
|
||||
WorkOrderStatus_Created WorkOrderStatus = "CREATED" // 已创建,尚未启动
|
||||
WorkOrderStatus_InProgress WorkOrderStatus = "IN_PROGRESS" // 生产中,有活跃Job在运行
|
||||
WorkOrderStatus_Paused WorkOrderStatus = "PAUSED" // 已暂停,所有Job挂起
|
||||
WorkOrderStatus_Completed WorkOrderStatus = "COMPLETED" // 已完成,所有Job终态
|
||||
WorkOrderStatus_Cancelled WorkOrderStatus = "CANCELLED" // 已取消,非终态Job全部报废
|
||||
WorkOrderStatus_Error WorkOrderStatus = "ERROR" // 异常,需人工介入
|
||||
WorkOrderStatus_Reported WorkOrderStatus = "REPORTED" // MOM业务:已向MOM报工完成,工单完全结束
|
||||
WorkOrderStatus_Created WorkOrderStatus = "CREATED"
|
||||
WorkOrderStatus_InProgress WorkOrderStatus = "IN_PROGRESS"
|
||||
WorkOrderStatus_Pausing WorkOrderStatus = "PAUSING"
|
||||
WorkOrderStatus_Cancelling WorkOrderStatus = "CANCELLING"
|
||||
WorkOrderStatus_Paused WorkOrderStatus = "PAUSED"
|
||||
WorkOrderStatus_Completed WorkOrderStatus = "COMPLETED"
|
||||
WorkOrderStatus_Cancelled WorkOrderStatus = "CANCELLED"
|
||||
WorkOrderStatus_Error WorkOrderStatus = "ERROR"
|
||||
)
|
||||
|
||||
// === 设备状态(EquipmentStatus) ===
|
||||
func (WorkOrderStatus) Values() []string {
|
||||
return []string{
|
||||
string(WorkOrderStatus_Created),
|
||||
string(WorkOrderStatus_Pausing),
|
||||
string(WorkOrderStatus_InProgress),
|
||||
string(WorkOrderStatus_Cancelling),
|
||||
string(WorkOrderStatus_Paused),
|
||||
string(WorkOrderStatus_Completed),
|
||||
string(WorkOrderStatus_Cancelled),
|
||||
string(WorkOrderStatus_Error),
|
||||
}
|
||||
}
|
||||
|
||||
// === 设备状态 ===
|
||||
|
||||
type EquipmentStatus string
|
||||
|
||||
const (
|
||||
EquipmentStatus_Idle EquipmentStatus = "IDLE" // 空闲,无工件在加工
|
||||
EquipmentStatus_Loading EquipmentStatus = "LOADING" // 机器人正在上料(PLC握手阶段)
|
||||
EquipmentStatus_Processing EquipmentStatus = "PROCESSING" // 设备加工中(磨床磨削中、全检检测中)
|
||||
EquipmentStatus_Unloading EquipmentStatus = "UNLOADING" // 机器人正在下料
|
||||
EquipmentStatus_Fault EquipmentStatus = "FAULT" // 设备故障,需人工排查
|
||||
EquipmentStatus_Offline EquipmentStatus = "OFFLINE" // 设备离线,PLC通讯中断
|
||||
EquipmentStatus_Idle EquipmentStatus = "IDLE"
|
||||
EquipmentStatus_Loading EquipmentStatus = "LOADING"
|
||||
EquipmentStatus_Processing EquipmentStatus = "PROCESSING"
|
||||
EquipmentStatus_Unloading EquipmentStatus = "UNLOADING"
|
||||
EquipmentStatus_Fault EquipmentStatus = "FAULT"
|
||||
EquipmentStatus_Offline EquipmentStatus = "OFFLINE"
|
||||
)
|
||||
|
||||
// === 位置类型(PositionType) ===
|
||||
func (EquipmentStatus) Values() []string {
|
||||
return []string{
|
||||
string(EquipmentStatus_Idle),
|
||||
string(EquipmentStatus_Loading),
|
||||
string(EquipmentStatus_Processing),
|
||||
string(EquipmentStatus_Unloading),
|
||||
string(EquipmentStatus_Fault),
|
||||
string(EquipmentStatus_Offline),
|
||||
}
|
||||
}
|
||||
|
||||
// === 位置类型 ===
|
||||
|
||||
type PositionType string
|
||||
|
||||
const (
|
||||
PositionType_OnEquipment PositionType = "ON_EQUIPMENT" // 设备槽位(磨床/转台/全检/缓存)
|
||||
PositionType_OnDock PositionType = "ON_DOCK" // 接驳台
|
||||
PositionType_OnCache PositionType = "ON_CACHE" // 缓存台(从ON_BUFFER独立出来)
|
||||
PositionType_OnEquipment PositionType = "ON_EQUIPMENT"
|
||||
PositionType_OnBuffer PositionType = "ON_BUFFER"
|
||||
PositionType_OnDock PositionType = "ON_DOCK"
|
||||
)
|
||||
|
||||
// === 任务状态(TaskStatus) ===
|
||||
// PLC动作任务状态(发Req→等Done→清信号)
|
||||
func (PositionType) Values() []string {
|
||||
return []string{
|
||||
string(PositionType_OnEquipment),
|
||||
string(PositionType_OnBuffer),
|
||||
string(PositionType_OnDock),
|
||||
}
|
||||
}
|
||||
|
||||
// === 手持工具类型 ===
|
||||
|
||||
type ToolType string
|
||||
|
||||
const (
|
||||
ToolType_Scanner ToolType = "SCANNER"
|
||||
ToolType_Laser ToolType = "LASER"
|
||||
)
|
||||
|
||||
func (ToolType) Values() []string {
|
||||
return []string{
|
||||
string(ToolType_Scanner),
|
||||
string(ToolType_Laser),
|
||||
}
|
||||
}
|
||||
|
||||
// === 任务状态 ===
|
||||
|
||||
type TaskStatus string
|
||||
|
||||
const (
|
||||
TaskStatus_Created TaskStatus = "CREATED" // 任务已创建,等待调度
|
||||
TaskStatus_Dispatched TaskStatus = "DISPATCHED" // 任务已下发到Worker,等待执行
|
||||
TaskStatus_Running TaskStatus = "RUNNING" // PLC动作执行中(已写Req,等待Done)
|
||||
TaskStatus_Success TaskStatus = "SUCCESS" // 任务执行成功
|
||||
TaskStatus_Failed TaskStatus = "FAILED" // 任务执行失败
|
||||
TaskStatus_Timeout TaskStatus = "TIMEOUT" // 任务执行超时
|
||||
TaskStatus_Created TaskStatus = "CREATED"
|
||||
TaskStatus_Dispatched TaskStatus = "DISPATCHED"
|
||||
TaskStatus_Running TaskStatus = "RUNNING"
|
||||
TaskStatus_Success TaskStatus = "SUCCESS"
|
||||
TaskStatus_Failed TaskStatus = "FAILED"
|
||||
TaskStatus_Timeout TaskStatus = "TIMEOUT"
|
||||
)
|
||||
|
||||
// === 工站状态(StationStatus) ===
|
||||
func (TaskStatus) Values() []string {
|
||||
return []string{
|
||||
string(TaskStatus_Created),
|
||||
string(TaskStatus_Dispatched),
|
||||
string(TaskStatus_Running),
|
||||
string(TaskStatus_Success),
|
||||
string(TaskStatus_Failed),
|
||||
string(TaskStatus_Timeout),
|
||||
}
|
||||
}
|
||||
|
||||
// === 工站状态 ===
|
||||
|
||||
type StationStatus string
|
||||
|
||||
const (
|
||||
StationStatus_Idle StationStatus = "IDLE" // 工站空闲,可接收新工件
|
||||
StationStatus_Busy StationStatus = "BUSY" // 工站忙碌,所有槽位已占用/加工中
|
||||
StationStatus_Waiting StationStatus = "WAITING" // 工站等待,等待机器人或PLC信号
|
||||
StationStatus_Fault StationStatus = "FAULT" // 工站故障,需人工介入
|
||||
StationStatus_Offline StationStatus = "OFFLINE" // 工站离线,通讯中断
|
||||
StationStatus_Idle StationStatus = "IDLE"
|
||||
StationStatus_Busy StationStatus = "BUSY"
|
||||
StationStatus_Waiting StationStatus = "WAITING"
|
||||
StationStatus_Fault StationStatus = "FAULT"
|
||||
StationStatus_Offline StationStatus = "OFFLINE"
|
||||
|
||||
// 兼容旧命名
|
||||
StationStatus_Processing = StationStatus_Busy
|
||||
StationStatus_Done = StationStatus_Waiting
|
||||
StationStatus_Error = StationStatus_Fault
|
||||
)
|
||||
|
||||
// === 报警等级(AlarmLevel) ===
|
||||
func (StationStatus) Values() []string {
|
||||
return []string{
|
||||
string(StationStatus_Idle),
|
||||
string(StationStatus_Busy),
|
||||
string(StationStatus_Waiting),
|
||||
string(StationStatus_Fault),
|
||||
string(StationStatus_Offline),
|
||||
}
|
||||
}
|
||||
|
||||
// === 报警等级 ===
|
||||
|
||||
type AlarmLevel string
|
||||
|
||||
const (
|
||||
AlarmLevel_INFO AlarmLevel = "INFO" //普通信息级报警,仅记录无停机风险
|
||||
AlarmLevel_WARN AlarmLevel = "WARN" // 警告级报警,轻微异常,产线可继续运行
|
||||
AlarmLevel_ERROR AlarmLevel = "ERROR" // 错误级报警,设备局部故障,需干预
|
||||
AlarmLevel_CRITICAL AlarmLevel = "CRITICAL" // 严重故障级报警,整机紧急停机
|
||||
AlarmLevel_INFO AlarmLevel = "INFO"
|
||||
AlarmLevel_WARN AlarmLevel = "WARN"
|
||||
AlarmLevel_ERROR AlarmLevel = "ERROR"
|
||||
AlarmLevel_CRITICAL AlarmLevel = "CRITICAL"
|
||||
)
|
||||
|
||||
// === 报警状态(AlarmStatus) ===
|
||||
func (AlarmLevel) Values() []string {
|
||||
return []string{
|
||||
string(AlarmLevel_INFO),
|
||||
string(AlarmLevel_WARN),
|
||||
string(AlarmLevel_ERROR),
|
||||
string(AlarmLevel_CRITICAL),
|
||||
}
|
||||
}
|
||||
|
||||
// === 报警状态 ===
|
||||
|
||||
type AlarmStatus string
|
||||
|
||||
const (
|
||||
AlarmStatus_ACTIVE AlarmStatus = "ACTIVE" // 报警当前持续触发中
|
||||
AlarmStatus_ACKED AlarmStatus = "ACKED" // 报警已人工确认,但故障未消除
|
||||
AlarmStatus_CLEARED AlarmStatus = "CLEARED" // 报警故障已消除
|
||||
AlarmStatus_ACTIVE AlarmStatus = "ACTIVE"
|
||||
AlarmStatus_ACKED AlarmStatus = "ACKED"
|
||||
AlarmStatus_CLEARED AlarmStatus = "CLEARED"
|
||||
)
|
||||
|
||||
// === 人工交互类型(ManualActionType) ===
|
||||
// 磨床单元需要人工介入的场景
|
||||
func (AlarmStatus) Values() []string {
|
||||
return []string{
|
||||
string(AlarmStatus_ACTIVE),
|
||||
string(AlarmStatus_ACKED),
|
||||
string(AlarmStatus_CLEARED),
|
||||
}
|
||||
}
|
||||
|
||||
// === 人工交互类型 ===
|
||||
|
||||
type ManualActionType string
|
||||
|
||||
const (
|
||||
// ManualActionType_InspectionDecision - 全检NG,需要人工判定放行/报废
|
||||
ManualActionType_ScanFailed ManualActionType = "SCAN_FAILED"
|
||||
ManualActionType_RecoveryRequired ManualActionType = "RECOVERY_REQUIRED"
|
||||
ManualActionType_InspectionDecision ManualActionType = "INSPECTION_DECISION"
|
||||
// ManualActionType_RecoveryRequired - 异常恢复(断电重启后状态不一致)
|
||||
ManualActionType_RecoveryRequired ManualActionType = "RECOVERY_REQUIRED"
|
||||
// ManualActionType_FaultConfirm - 设备故障确认
|
||||
ManualActionType_FaultConfirm ManualActionType = "FAULT_CONFIRM"
|
||||
ManualActionType_FaultConfirm ManualActionType = "FAULT_CONFIRM"
|
||||
)
|
||||
|
||||
// === 人工交互状态(ManualActionStatus) ===
|
||||
func (ManualActionType) Values() []string {
|
||||
return []string{
|
||||
string(ManualActionType_ScanFailed),
|
||||
string(ManualActionType_RecoveryRequired),
|
||||
string(ManualActionType_InspectionDecision),
|
||||
string(ManualActionType_FaultConfirm),
|
||||
}
|
||||
}
|
||||
|
||||
// === 人工交互状态 ===
|
||||
|
||||
type ManualActionStatus string
|
||||
|
||||
const (
|
||||
ManualActionStatus_PENDING ManualActionStatus = "PENDING" // 等待人工处理
|
||||
ManualActionStatus_RESOLVED ManualActionStatus = "RESOLVED" // 人工操作已完成处置
|
||||
ManualActionStatus_EXPIRED ManualActionStatus = "EXPIRED" // 人工操作超时未处理
|
||||
ManualActionStatus_PENDING ManualActionStatus = "PENDING"
|
||||
ManualActionStatus_RESOLVED ManualActionStatus = "RESOLVED"
|
||||
ManualActionStatus_EXPIRED ManualActionStatus = "EXPIRED"
|
||||
)
|
||||
|
||||
// === 恢复决策(RecoveryDecision) ===
|
||||
func (ManualActionStatus) Values() []string {
|
||||
return []string{
|
||||
string(ManualActionStatus_PENDING),
|
||||
string(ManualActionStatus_RESOLVED),
|
||||
string(ManualActionStatus_EXPIRED),
|
||||
}
|
||||
}
|
||||
|
||||
// === 恢复决策 ===
|
||||
|
||||
type RecoveryDecision string
|
||||
|
||||
const (
|
||||
RecoveryDecision_RESUME RecoveryDecision = "RESUME" // 故障处理完成,恢复自动生产
|
||||
RecoveryDecision_WAIT_UNLOAD RecoveryDecision = "WAIT_UNLOAD" // 等待取走当前工件后再恢复
|
||||
RecoveryDecision_SUSPEND RecoveryDecision = "SUSPEND" // 长期暂停产线,等待人工介入
|
||||
RecoveryDecision_SCRAP RecoveryDecision = "SCRAP" // 当前工件判定报废,清空后重启
|
||||
RecoveryDecision_RESUME RecoveryDecision = "RESUME"
|
||||
RecoveryDecision_WAIT_UNLOAD RecoveryDecision = "WAIT_UNLOAD"
|
||||
RecoveryDecision_SUSPEND RecoveryDecision = "SUSPEND"
|
||||
RecoveryDecision_SCRAP RecoveryDecision = "SCRAP"
|
||||
)
|
||||
|
||||
// === 工单来源(WorkOrderSource) ===
|
||||
func (RecoveryDecision) Values() []string {
|
||||
return []string{
|
||||
string(RecoveryDecision_RESUME),
|
||||
string(RecoveryDecision_WAIT_UNLOAD),
|
||||
string(RecoveryDecision_SUSPEND),
|
||||
string(RecoveryDecision_SCRAP),
|
||||
}
|
||||
}
|
||||
|
||||
// === 托盘状态 ===
|
||||
|
||||
type PalletStatus string
|
||||
|
||||
const (
|
||||
PalletStatus_PendingDelivery PalletStatus = "PENDING_DELIVERY"
|
||||
PalletStatus_PendingProcess PalletStatus = "PENDING_PROCESS"
|
||||
PalletStatus_Processing PalletStatus = "PROCESSING"
|
||||
PalletStatus_Completed PalletStatus = "COMPLETED"
|
||||
PalletStatus_Reported PalletStatus = "REPORTED"
|
||||
PalletStatus_Departed PalletStatus = "DEPARTED"
|
||||
)
|
||||
|
||||
func (PalletStatus) Values() []string {
|
||||
return []string{
|
||||
string(PalletStatus_PendingDelivery),
|
||||
string(PalletStatus_PendingProcess),
|
||||
string(PalletStatus_Processing),
|
||||
string(PalletStatus_Completed),
|
||||
string(PalletStatus_Reported),
|
||||
string(PalletStatus_Departed),
|
||||
}
|
||||
}
|
||||
|
||||
// === 工单来源 ===
|
||||
|
||||
type WorkOrderSource string
|
||||
|
||||
const (
|
||||
WorkOrderSource_Manual WorkOrderSource = "MANUAL" // 工单由操作人员手动创建
|
||||
WorkOrderSource_MOM WorkOrderSource = "MOM" // 工单由上层 MOM 制造管理系统下发
|
||||
WorkOrderSource_SYSTEM WorkOrderSource = "SYSTEM"
|
||||
WorkOrderSource_MOM WorkOrderSource = "MOM"
|
||||
)
|
||||
|
||||
// === PLC信号名称常量(Signal Names) ===
|
||||
// 所有PLC信号名称集中在此,避免魔法字符串散落在代码中。
|
||||
// 信号名称必须与DB signal表中的name字段完全一致。
|
||||
const (
|
||||
// --- 相机 Camera (M2020-M2029) ---
|
||||
SigCameraShootReq = "CameraShootReq"
|
||||
SigCameraShootDone = "CameraShootDone"
|
||||
SigCameraShootTray = "CameraShootTray"
|
||||
SigCameraWorkType = "CameraWorkType" // 工件类型(product_type.id),每组动作前必写
|
||||
|
||||
// --- 接驳台 Dock (M2000-M2029) ---
|
||||
SigDockFetchReq = "DockFetchReq"
|
||||
SigDockFetchDone = "DockFetchDone"
|
||||
SigDockFetchPos = "DockFetchPos"
|
||||
SigDockFetchTray = "DockFetchTray"
|
||||
SigDockPlaceReq = "DockPlaceReq"
|
||||
SigDockPlaceDone = "DockPlaceDone"
|
||||
SigDockPlacePos = "DockPlacePos"
|
||||
SigDockPlaceTray = "DockPlaceTray"
|
||||
|
||||
// --- 磨床 Grinder (M2030-M2059) ---
|
||||
SigGrinderFetchReq = "GrinderFetchReq"
|
||||
SigGrinderFetchDone = "GrinderFetchDone"
|
||||
SigGrinderPlaceReq = "GrinderPlaceReq"
|
||||
SigGrinderPlaceDone = "GrinderPlaceDone"
|
||||
SigGrinderExchangeReq = "GrinderExchangeReq"
|
||||
SigGrinderExchangeDone = "GrinderExchangeDone"
|
||||
SigGrinderMachiningDone = "GrinderMachiningDone" // PLC→PC 磨削完成信号
|
||||
|
||||
// --- 换向机构 TurnTable (M2060-M2079) ---
|
||||
SigTurnTableFetchReq = "TurnTableFetchReq"
|
||||
SigTurnTableFetchDone = "TurnTableFetchDone"
|
||||
SigTurnTablePlaceReq = "TurnTablePlaceReq"
|
||||
SigTurnTablePlaceDone = "TurnTablePlaceDone"
|
||||
// 换向机构用于方形件换向:放换向机构→PLC自动旋转→TurnTablePlaceDone→取回
|
||||
|
||||
// --- 全检台 FullCheck (M2090-M2109) ---
|
||||
SigFullCheckFetchReq = "FullCheckFetchReq"
|
||||
SigFullCheckFetchPos = "FullCheckFetchPos"
|
||||
SigFullCheckInspectDone = "FullCheckInspectDone" // PLC→PC 检测完成在取放料位
|
||||
SigFullCheckFetchDone = "FullCheckFetchDone"
|
||||
SigFullCheckPlaceReq = "FullCheckPlaceReq"
|
||||
SigFullCheckPlacePos = "FullCheckPlacePos"
|
||||
SigFullCheckPlaceDoneRequestInspect = "FullCheckPlaceDoneRequestInspect" // PC→PLC 放料完成请求人工检验
|
||||
SigFullCheckDetecting = "FullCheckDetecting" // PLC→PC 人工检验中
|
||||
SigFullCheckPlaceDone = "FullCheckPlaceDone"
|
||||
// 全检一步换料(PLC M2081 取位置 → M2082 放位置 → M2080 请求 → M2089 完成)
|
||||
SigFullCheckExchangeFetchPos = "FullCheckExchangeFetchPos"
|
||||
SigFullCheckExchangePlacePos = "FullCheckExchangePlacePos"
|
||||
SigFullCheckExchangeReq = "FullCheckExchangeReq"
|
||||
SigFullCheckExchangeDone = "FullCheckExchangeDone"
|
||||
|
||||
// --- 缓存台 Cache (M2110-M2129) ---
|
||||
SigCacheFetchReq = "CacheFetchReq"
|
||||
SigCacheFetchPos = "CacheFetchPos"
|
||||
SigCacheFetchDone = "CacheFetchDone"
|
||||
SigCachePlaceReq = "CachePlaceReq"
|
||||
SigCachePlacePos = "CachePlacePos"
|
||||
SigCachePlaceDone = "CachePlaceDone"
|
||||
// 缓存台无独立PLC信号,回流由软件调度触发:全检台有空位时从缓存台取料
|
||||
|
||||
// --- 气吹清洁 AirBlow (复用Wash信号地址 M2130-M2139) ---
|
||||
// 新流程:气吹清洁机构复用原Wash信号地址,机器人放料→发WashStartReq→等待AirBlowCompleteDone→机器人取回
|
||||
// 等待信号名必须与 signal 表 name 一致(AirBlowCompleteDone,PLC_清洗完成 M2139),
|
||||
// 信号轮询器按 name 匹配任务等待,旧名 WashCompleteDone 已不在信号表中。
|
||||
SigAirBlowStartReq = "WashStartReq" // 复用WashStartReq信号(软件_工件清洗 M2130)
|
||||
SigAirBlowCompleteDone = "AirBlowCompleteDone" // 等待信号名,与 signal 表 name 一致(M2139)
|
||||
)
|
||||
func (WorkOrderSource) Values() []string {
|
||||
return []string{
|
||||
string(WorkOrderSource_SYSTEM),
|
||||
string(WorkOrderSource_MOM),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
package constants
|
||||
|
||||
// ============================================================================
|
||||
// 手动模拟 go install github.com/zeromicro/go-zero/tools/goctl/enumgen@latest
|
||||
// 让constants看起来更整洁
|
||||
// ============================================================================
|
||||
|
||||
func (WorkpieceCategory) Values() []string {
|
||||
return []string{
|
||||
string(WorkpieceCategory_General),
|
||||
string(WorkpieceCategory_Square),
|
||||
}
|
||||
}
|
||||
|
||||
func (EquipmentTypeCode) Values() []string {
|
||||
return []string{
|
||||
string(EquipmentTypeCode_Dock),
|
||||
string(EquipmentTypeCode_Grinder),
|
||||
string(EquipmentTypeCode_TurnTable),
|
||||
string(EquipmentTypeCode_AirBlow),
|
||||
string(EquipmentTypeCode_Cache),
|
||||
string(EquipmentTypeCode_FullCheck),
|
||||
string(EquipmentTypeCode_Robot),
|
||||
}
|
||||
}
|
||||
|
||||
func (SlotStatus) Values() []string {
|
||||
return []string{
|
||||
string(SlotStatus_Empty),
|
||||
string(SlotStatus_Occupied),
|
||||
string(SlotStatus_Processing),
|
||||
string(SlotStatus_Done),
|
||||
}
|
||||
}
|
||||
|
||||
func (StepType) Values() []string {
|
||||
return []string{
|
||||
string(StepType_Operation),
|
||||
string(StepType_BufferStage),
|
||||
string(StepType_Decision),
|
||||
string(StepType_AirBlow),
|
||||
string(StepType_LoadDock),
|
||||
string(StepType_UnloadDock),
|
||||
}
|
||||
}
|
||||
|
||||
func (JobStatus) Values() []string {
|
||||
return []string{
|
||||
string(JobStatus_Created),
|
||||
string(JobStatus_InHandling),
|
||||
string(JobStatus_Processing),
|
||||
string(JobStatus_WaitingUnload),
|
||||
string(JobStatus_OnBuffer),
|
||||
string(JobStatus_WaitingDecision),
|
||||
string(JobStatus_WaitingReorient),
|
||||
string(JobStatus_Completed),
|
||||
string(JobStatus_Scrapped),
|
||||
string(JobStatus_Suspended),
|
||||
}
|
||||
}
|
||||
|
||||
func (WorkOrderStatus) Values() []string {
|
||||
return []string{
|
||||
string(WorkOrderStatus_Created),
|
||||
string(WorkOrderStatus_InProgress),
|
||||
string(WorkOrderStatus_Paused),
|
||||
string(WorkOrderStatus_Completed),
|
||||
string(WorkOrderStatus_Cancelled),
|
||||
string(WorkOrderStatus_Error),
|
||||
string(WorkOrderStatus_Reported),
|
||||
}
|
||||
}
|
||||
|
||||
func (EquipmentStatus) Values() []string {
|
||||
return []string{
|
||||
string(EquipmentStatus_Idle),
|
||||
string(EquipmentStatus_Loading),
|
||||
string(EquipmentStatus_Processing),
|
||||
string(EquipmentStatus_Unloading),
|
||||
string(EquipmentStatus_Fault),
|
||||
string(EquipmentStatus_Offline),
|
||||
}
|
||||
}
|
||||
|
||||
func (PositionType) Values() []string {
|
||||
return []string{
|
||||
string(PositionType_OnEquipment),
|
||||
string(PositionType_OnDock),
|
||||
string(PositionType_OnCache),
|
||||
}
|
||||
}
|
||||
|
||||
func (TaskStatus) Values() []string {
|
||||
return []string{
|
||||
string(TaskStatus_Created),
|
||||
string(TaskStatus_Dispatched),
|
||||
string(TaskStatus_Running),
|
||||
string(TaskStatus_Success),
|
||||
string(TaskStatus_Failed),
|
||||
string(TaskStatus_Timeout),
|
||||
}
|
||||
}
|
||||
|
||||
func (StationStatus) Values() []string {
|
||||
return []string{
|
||||
string(StationStatus_Idle),
|
||||
string(StationStatus_Busy),
|
||||
string(StationStatus_Waiting),
|
||||
string(StationStatus_Fault),
|
||||
string(StationStatus_Offline),
|
||||
}
|
||||
}
|
||||
func (AlarmLevel) Values() []string {
|
||||
return []string{
|
||||
string(AlarmLevel_INFO),
|
||||
string(AlarmLevel_WARN),
|
||||
string(AlarmLevel_ERROR),
|
||||
string(AlarmLevel_CRITICAL),
|
||||
}
|
||||
}
|
||||
|
||||
func (AlarmStatus) Values() []string {
|
||||
return []string{
|
||||
string(AlarmStatus_ACTIVE),
|
||||
string(AlarmStatus_ACKED),
|
||||
string(AlarmStatus_CLEARED),
|
||||
}
|
||||
}
|
||||
|
||||
func (ManualActionType) Values() []string {
|
||||
return []string{
|
||||
string(ManualActionType_InspectionDecision),
|
||||
string(ManualActionType_RecoveryRequired),
|
||||
string(ManualActionType_FaultConfirm),
|
||||
}
|
||||
}
|
||||
|
||||
func (ManualActionStatus) Values() []string {
|
||||
return []string{
|
||||
string(ManualActionStatus_PENDING),
|
||||
string(ManualActionStatus_RESOLVED),
|
||||
string(ManualActionStatus_EXPIRED),
|
||||
}
|
||||
}
|
||||
|
||||
func (RecoveryDecision) Values() []string {
|
||||
return []string{
|
||||
string(RecoveryDecision_RESUME),
|
||||
string(RecoveryDecision_WAIT_UNLOAD),
|
||||
string(RecoveryDecision_SUSPEND),
|
||||
string(RecoveryDecision_SCRAP),
|
||||
}
|
||||
}
|
||||
|
||||
func (WorkOrderSource) Values() []string {
|
||||
return []string{
|
||||
string(WorkOrderSource_Manual),
|
||||
string(WorkOrderSource_MOM),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user