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:
SunYF
2026-08-27 10:56:41 +08:00
parent 380715f8a9
commit 371b494c54
523 changed files with 67923 additions and 24758 deletions
+375 -248
View File
@@ -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 一致(AirBlowCompleteDonePLC_清洗完成 M2139),
// 信号轮询器按 name 匹配任务等待,旧名 WashCompleteDone 已不在信号表中。
SigAirBlowStartReq = "WashStartReq" // 复用WashStartReq信号(软件_工件清洗 M2130)
SigAirBlowCompleteDone = "AirBlowCompleteDone" // 等待信号名,与 signal 表 name 一致(M2139
)
func (WorkOrderSource) Values() []string {
return []string{
string(WorkOrderSource_SYSTEM),
string(WorkOrderSource_MOM),
}
}
-160
View File
@@ -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),
}
}