产线报警之后的前 200 毫秒
复合3 跳三跳:分类异常 → 评估影响 → 决定停不停,比人转头还快
产线控制柜里跑的那一层。报警一响,它要在人反应过来之前先把决定做完。
为什么要快 产线节拍是 12 件/分钟。每犹豫一分钟就是 12 件半成品。而这条线必须在本地跑完 —— 车间网络断了它还得工作。
接线长什么样
判断层和计算层之间没有依赖,所以它们并行发 —— 串起来等于白花一个来回。
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
6 个问题一次前向答完,不是问 6 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一跳(共 3 跳)
当时的情况
一段话,和你真的会拿到的一样
3 号工位轴承温度 78℃(正常 45℃ 以下),伴有周期性异响,已持续 6 分钟。备件库 2 套同型号轴承,更换一次停机 45 分钟。当前班次还剩 4 小时,订单积压 1800 件,产线节拍 12 件/分钟。
这条流水线上的 3 跳
后一跳问什么,由前一跳的结果决定 —— 所以它们必须串行,也正因为串行,每一跳的快慢才会被乘起来。
- 第 1 跳 · 这是哪一类异常
分类错了后面全错。机械、电气、物料三条分支的处置完全不同。
选一个这属于哪一类异常?机械(轴承、传动、润滑)电气(电机、控制、传感器)物料(来料尺寸、批次差异)软件(程序、通讯)以上都不是是 / 否是否涉及人身安全? - 第 2 跳 · 还能撑多久
上一跳定了是机械问题、且不涉及人身安全,这一跳才有「要不要撑一撑」这个选项。涉及安全的话根本不问这一跳 —— 直接停。
选一个能不能撑到班次结束?可以撑到下班再修降速运行可以撑撑不住,会扩大损坏以上都不是打个档继续运行的风险可控需要盯着很高要算的那个数停机换轴承要少产多少件
- 停机时长45 min
- 产线节拍12 1/min
展开这一步
#0 = 45 min (停机时长) #1 = 12 1/min (产线节拍) n0 = MUL(#0, #1) result = @n0
「停 45 分钟」和「少 540 件」是两句话,而排产的人只认后一句。少的件数还要跟积压的 1800 件比 —— 这个比较必须建立在一个算对的数上。
- 第 3 跳 · 现在就停,还是等一等
前两跳的结论合起来才构成这个决定。单看任何一跳都给不出答案。
选一个现在应当怎么做?立刻停机更换降速运行,班次结束再换维持现状,加强监测以上都不是是 / 否是否需要立刻通知班组长?
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
6 个问题一次前向答完,不是问 6 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一跳(共 3 跳)
接进你的系统
下面就是这一页真正发出去的东西。把 state 换成你的场景、criteria 换成你的动作集, 它就是你的了。
POST /v1/systemone
{
"model": "memorylake-c1",
"state": "3 号工位轴承温度 78℃(正常 45℃ 以下),伴有周期性异响,已持续 6 分钟。备件库 2 套同型号轴承,更换一次停机 45 分钟。当前班次还剩 4 小时,订单积压 1800 件,产线节拍 …",
"questions": {
"kind": {
"type": "choice",
"instructions": "这属于哪一类异常?",
"criteria": {
"mechanical": "机械(轴承、传动、润滑)",
"electrical": "电气(电机、控制、传感器)",
"material": "物料(来料尺寸、批次差异)",
"software": "软件(程序、通讯)",
"other": "以上都不是"
}
},
"safety": {
"type": "noul",
"instructions": "是否涉及人身安全?"
}
}
}回来的是 {answers: {key: {value, probs}}} ——不用再写一个解析器去猜模型想说什么, 也不用为「它这次多说了一句」写兜底。
"停机换轴承要少产多少件": {
"type": "number",
"unit": "1"
}
→ { "value": ..., "unit": ..., "exact": true }数值问题和其它问题写在同一个 questions 里, 一次请求一起答完。返回的 exact: true 表示 这个值可以直接拿去跟阈值比大小。