Files
bj_power/bj_power_mes/constants/constants.go
T

337 lines
17 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package constants
// ============================================================================
// 本文件为磨床自动化单元新项目的常量定义。
// ============================================================================
// === 工件分类(WorkpieceCategory ===
// TODO: 根据实际工件类型补充,当前仅占位
type WorkpieceCategory string
const (
// TODO: 替换为实际工件分类(如方形件、圆形件等)
WorkpieceCategory_General WorkpieceCategory = "GENERAL"
// 方形件:需要在转台上换向
WorkpieceCategory_Square WorkpieceCategory = "SQUARE"
)
// === 设备类型编码(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工位,全检台满时暂存,等全检台有空位后回流)
//
// 注意:抽检台即全检台,文档中的"抽检台"是全检台的别名,不单独建模
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"
)
// === 槽位状态(SlotStatus ===
// 设备/接驳台/缓存台上每个槽位的占用状态。
// 状态机:EMPTY → OCCUPIED(上料/搬运中)→ PROCESSING(加工中,如磨床/全检)→ DONE(完成待取)→ EMPTY
type SlotStatus string
const (
SlotStatus_Empty SlotStatus = "EMPTY" // 空槽位
SlotStatus_Occupied SlotStatus = "OCCUPIED" // 已占用,工件在槽位上等待/已到位
SlotStatus_Processing SlotStatus = "PROCESSING" // 正在加工/检测中(磨床磨削中、全检检测中、清洗中)
SlotStatus_Done SlotStatus = "DONE" // 本工位加工完成,等待机器人取走
)
// === 产线状态(LineStatus,前端 systemStatus.lineStatus 枚举) ===
type LineStatus string
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_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"
)
// === 工件状态(JobStatus ===
// 工件(job)生命周期状态,EventLoop是唯一状态写路径。
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" // 取消终态(历史数据防御)
)
// === 工单状态(WorkOrderStatus ===
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报工完成,工单完全结束
)
// === 设备状态(EquipmentStatus ===
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通讯中断
)
// === 位置类型(PositionType ===
type PositionType string
const (
PositionType_OnEquipment PositionType = "ON_EQUIPMENT" // 设备槽位(磨床/转台/全检/缓存)
PositionType_OnDock PositionType = "ON_DOCK" // 接驳台
PositionType_OnCache PositionType = "ON_CACHE" // 缓存台(从ON_BUFFER独立出来)
)
// === 任务状态(TaskStatus ===
// PLC动作任务状态(发Req→等Done→清信号)
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" // 任务执行超时
)
// === 工站状态(StationStatus ===
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" // 工站离线,通讯中断
)
// === 报警等级(AlarmLevel ===
type AlarmLevel string
const (
AlarmLevel_INFO AlarmLevel = "INFO" //普通信息级报警,仅记录无停机风险
AlarmLevel_WARN AlarmLevel = "WARN" // 警告级报警,轻微异常,产线可继续运行
AlarmLevel_ERROR AlarmLevel = "ERROR" // 错误级报警,设备局部故障,需干预
AlarmLevel_CRITICAL AlarmLevel = "CRITICAL" // 严重故障级报警,整机紧急停机
)
// === 报警状态(AlarmStatus ===
type AlarmStatus string
const (
AlarmStatus_ACTIVE AlarmStatus = "ACTIVE" // 报警当前持续触发中
AlarmStatus_ACKED AlarmStatus = "ACKED" // 报警已人工确认,但故障未消除
AlarmStatus_CLEARED AlarmStatus = "CLEARED" // 报警故障已消除
)
// === 人工交互类型(ManualActionType ===
// 磨床单元需要人工介入的场景
type ManualActionType string
const (
// ManualActionType_InspectionDecision - 全检NG,需要人工判定放行/报废
ManualActionType_InspectionDecision ManualActionType = "INSPECTION_DECISION"
// ManualActionType_RecoveryRequired - 异常恢复(断电重启后状态不一致)
ManualActionType_RecoveryRequired ManualActionType = "RECOVERY_REQUIRED"
// ManualActionType_FaultConfirm - 设备故障确认
ManualActionType_FaultConfirm ManualActionType = "FAULT_CONFIRM"
)
// === 人工交互状态(ManualActionStatus ===
type ManualActionStatus string
const (
ManualActionStatus_PENDING ManualActionStatus = "PENDING" // 等待人工处理
ManualActionStatus_RESOLVED ManualActionStatus = "RESOLVED" // 人工操作已完成处置
ManualActionStatus_EXPIRED ManualActionStatus = "EXPIRED" // 人工操作超时未处理
)
// === 恢复决策(RecoveryDecision ===
type RecoveryDecision string
const (
RecoveryDecision_RESUME RecoveryDecision = "RESUME" // 故障处理完成,恢复自动生产
RecoveryDecision_WAIT_UNLOAD RecoveryDecision = "WAIT_UNLOAD" // 等待取走当前工件后再恢复
RecoveryDecision_SUSPEND RecoveryDecision = "SUSPEND" // 长期暂停产线,等待人工介入
RecoveryDecision_SCRAP RecoveryDecision = "SCRAP" // 当前工件判定报废,清空后重启
)
// === 工单来源(WorkOrderSource ===
type WorkOrderSource string
const (
WorkOrderSource_Manual WorkOrderSource = "MANUAL" // 工单由操作人员手动创建
WorkOrderSource_MOM WorkOrderSource = "MOM" // 工单由上层 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
)