Compare commits

...

27 Commits

Author SHA1 Message Date
Cui Hongwei
e1ec0213f5 chore: run telemetry cleanup on page start 2026-07-28 09:47:27 +08:00
Cui Hongwei
d2136d125b chore: tune telemetry retention 2026-07-28 09:36:11 +08:00
Cui Hongwei
679c6c0af5 feat: add qingan dashboard telemetry 2026-07-28 09:32:25 +08:00
Cui Hongwei
a43a13b178 chore: save qingan dashboard before telemetry 2026-07-28 08:49:26 +08:00
Cui Hongwei
ff62f3fa47 fix: shorten marker device names 2026-07-19 10:40:33 +08:00
Cui Hongwei
cbe3cae3bd fix: tighten equipment status layout 2026-07-19 10:32:53 +08:00
Cui Hongwei
1c5a2e5b7c fix: disable alarm chart refresh animation 2026-07-19 10:26:49 +08:00
Cui Hongwei
2b6055c825 feat: connect equipment status to current data 2026-07-19 10:00:28 +08:00
Cui Hongwei
3d084891f4 feat: connect device history to database 2026-07-19 09:46:22 +08:00
Cui Hongwei
5f667fb8cf feat: connect alarm events to database 2026-07-19 09:33:01 +08:00
Cui Hongwei
73b653e1b7 feat: connect storage matrix to database 2026-07-19 09:26:09 +08:00
Cui Hongwei
c1787b9ea2 feat: connect line monitor to database 2026-07-19 09:17:34 +08:00
Cui Hongwei
fe9f445073 feat: update simulation mode rate and camera views 2026-07-13 16:56:58 +08:00
Cui Hongwei
74f640a05f chore: save simulation iframe rate config 2026-07-13 16:30:51 +08:00
Cui Hongwei
b96bd8976b feat: update QingAn dashboard units and camera views 2026-07-11 13:47:09 +08:00
Cui Hongwei
4d72a72541 chore: save dashboard state before unit updates 2026-07-08 19:52:21 +08:00
Cui Hongwei
b6d85869a6 feat: add iframe camera postMessage for view switching (长地轨/短地轨/关节) 2026-06-26 10:03:52 +08:00
Cui Hongwei
73bd71ce5b chore: snapshot before adding view camera postMessage 2026-06-26 10:03:06 +08:00
Cui Hongwei
36523914a7 docs: add PLC data vs dashboard gap analysis 2026-06-25 09:45:52 +08:00
Cui Hongwei
86c750601e docs: update feature doc - replace task log with device history, add alarm chart, match current UI 2026-06-25 09:09:39 +08:00
Cui Hongwei
81fc5c3bdf docs: rewrite dashboard feature doc for customer-facing presentation 2026-06-25 09:05:43 +08:00
Cui Hongwei
0ddf23a160 chore: checkpoint before scada visual polish 2026-06-25 08:45:26 +08:00
Cui Hongwei
01b5e7b5ef checkpoint before scada visual polish 2026-06-24 17:08:42 +08:00
Cui Hongwei
a69d0caac8 fix: add transparent=true param to iframe URL for transparent 3D model background 2026-06-24 14:54:01 +08:00
Cui Hongwei
833e256e6b refactor: fullscreen iframe layout - 3D model as background with overlay panels 2026-06-24 14:50:50 +08:00
Cui Hongwei
e12a7b0828 fix: make central iframe transparent with semi-transparent panel background 2026-06-24 14:43:27 +08:00
Cui Hongwei
56a0c6bc82 chore: snapshot before iframe transparency fix 2026-06-24 14:42:30 +08:00
27 changed files with 6668 additions and 3189 deletions

View File

@@ -1,6 +1,8 @@
window.dt_Config = { window.dt_Config = {
titleText: '智能制造数字孪生系统', titleText: '智能制造数字孪生系统',
iframeAddress: 'http://localhost:10061/', iframeAddress: 'http://localhost:10061/#?transparent=true',
dtIframe: 'http://localhost:10061/',
smIframe: 'http://localhost:10061/#?dmtmode=SM&autoPlayRate=5&autoPlayCraftCode=',
autoPlayCraftCode: 'E8077755-9B85-46A1-9B8A-85083C00DF26',
serverAddress: 'http://127.0.0.1:10057/submit/MESCommonBase.ashx' serverAddress: 'http://127.0.0.1:10057/submit/MESCommonBase.ashx'
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

@@ -438,8 +438,8 @@
min-height: 0; min-height: 0;
overflow: hidden; overflow: hidden;
background: background:
linear-gradient(180deg, rgba(6, 14, 25, 0.12), rgba(6, 14, 25, 0.28)), radial-gradient(ellipse at center, rgba(17, 110, 180, 0.08), transparent 50%),
rgba(8, 18, 32, 0.7); linear-gradient(180deg, rgba(6, 14, 25, 0.08), rgba(8, 18, 32, 0.22));
} }
.model-stage { .model-stage {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -1,22 +1,13 @@
import Vue from 'vue' import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import DaLuJiaTV1 from '@/views/DaLuJiaTV1.vue' import qingAn from '@/views/qingAn.vue'
import DaLuJiaTV2 from '@/views/DaLuJiaTV2.vue'
Vue.use(Router) Vue.use(Router)
export const constantRouterMap = [ export const constantRouterMap = [
{ {
path: '/', path: '/',
name: 'DaLuJiaTV1', name: 'qingAn',
component: DaLuJiaTV1, component: qingAn,
meta: {
keepAlive: true
}
},
{
path: '/TV2',
name: 'DaLuJiaTV2',
component: DaLuJiaTV2,
meta: { meta: {
keepAlive: true keepAlive: true
} }

View File

@@ -1,925 +0,0 @@
<!-- eslint-disable vue/max-attributes-per-line -->
<template>
<div
id="screen"
class="qa-screen"
:style="{
width: `${style.width}px`,
height: `${style.height}px`,
transform: style.transform
}"
>
<div class="title-png">
<span class="title-text">产线通讯信号可视化监控看板</span>
<div class="df-header__right">
<div class="df-header__timebar">
<span class="df-header__year">{{ headerDateCn }}</span>
<span class="df-header__time">{{ headerTime }}</span>
</div>
</div>
</div>
<div class="leftLine"></div>
<div class="rightLine"></div>
<main class="qa-dashboard">
<section class="qa-main-grid">
<div class="qa-column qa-column-left">
<section class="qa-panel qa-panel--combined">
<div class="left-title-header">
<span class="left-title-text">线体联动监控</span>
</div>
<div class="qa-panel-body qa-scroll">
<div v-for="row in lineMonitorRows" :key="row.name" class="monitor-card">
<div class="monitor-head">
<div class="monitor-title">
<strong>{{ row.name }}</strong>
<p>{{ row.summary }}</p>
</div>
<span class="status-pill" :class="`status-pill--${row.type}`">{{ row.status }}</span>
</div>
<div class="monitor-main">
<div class="monitor-task">
<span>任务流向</span>
<strong>{{ row.start }} -> {{ row.end }}</strong>
<p>{{ row.recipe }} / {{ row.pallet }} / {{ row.part }}</p>
</div>
<div class="monitor-signals">
<div v-for="signal in row.signals" :key="signal.label" class="signal-item">
<span class="dot" :class="`dot--${signal.color}`"></span>
<span>{{ signal.label }}</span>
</div>
</div>
</div>
<div class="monitor-flow">
<span class="monitor-flow-label">反馈流程</span>
<div class="steps">
<span v-for="step in row.steps" :key="step.label" class="step" :class="`step--${step.state}`">
{{ step.label }}
</span>
</div>
</div>
</div>
</div>
</section>
</div>
<section class="qa-model-panel">
<iframe v-if="iframeAddress" class="model-frame" :src="iframeAddress" title="三维模型"></iframe>
<div v-else class="model-placeholder">等待配置三维模型地址</div>
</section>
<div class="qa-column qa-column-right">
<section class="qa-panel">
<div class="right-title-header">
<span class="right-title-text">加工设备状态</span>
</div>
<div class="qa-panel-body qa-scroll">
<div
v-for="item in equipmentList"
:key="item.name"
class="equipment-row"
:class="{ 'equipment-row--alarm': item.type === 'alarm' }"
>
<strong class="equipment-name">{{ item.name }}</strong>
<div class="equipment-program">
<span>目标</span>
<b>{{ item.target }}</b>
</div>
<div class="equipment-program">
<span>实际</span>
<b>{{ item.actual }}</b>
</div>
<div class="equipment-tags">
<span v-for="tag in item.tags" :key="tag.text" class="status-pill status-pill--compact" :class="`status-pill--${tag.type}`">
{{ tag.text }}
</span>
</div>
<span class="status-pill equipment-status" :class="`status-pill--${item.type}`">{{ item.status }}</span>
</div>
</div>
</section>
<section class="qa-panel">
<div class="right-title-header">
<span class="right-title-text">辅助设备状态</span>
</div>
<div class="qa-panel-body qa-scroll">
<div class="assist-grid">
<div v-for="item in assistList" :key="item.name" class="assist-card">
<div class="assist-title">
<strong>{{ item.name }}</strong>
<span class="status-pill" :class="`status-pill--${item.type}`">{{ item.status }}</span>
</div>
<div class="assist-flow">
<span v-for="tag in item.tags" :key="tag.text" class="status-pill status-pill--compact" :class="`status-pill--${tag.type}`">
{{ tag.text }}
</span>
</div>
</div>
</div>
</div>
</section>
</div>
</section>
<section class="qa-bottom-grid">
<section class="qa-panel">
<div class="center-title-header">
<span>物料库位矩阵</span>
</div>
<div class="qa-panel-body qa-panel-body--storage">
<div class="storage-groups">
<div v-for="group in storageGroups" :key="group.name" class="storage-card">
<div class="storage-head">
<strong>{{ group.name }}</strong>
<span>{{ group.filled }} / {{ group.total }}</span>
</div>
<div class="slots">
<span v-for="slot in group.slots" :key="slot.name" class="slot" :class="{ 'slot--filled': slot.filled }">
{{ slot.name }}
</span>
</div>
</div>
</div>
</div>
</section>
<section class="qa-panel">
<div class="center-title-header">
<span>报警与异常事件</span>
</div>
<div class="qa-panel-body qa-scroll">
<div v-for="event in alarmEvents" :key="event.time + event.device" class="event-row">
<span>{{ event.time }}</span>
<strong>{{ event.device }}</strong>
<span class="status-pill" :class="`status-pill--${event.type}`">{{ event.level }}</span>
<p>{{ event.message }}</p>
</div>
</div>
</section>
<section class="qa-panel">
<div class="center-title-header">
<span>任务日志</span>
</div>
<div class="qa-panel-body qa-scroll">
<div v-for="log in taskLogs" :key="log.time + log.text" class="log-row">
<span>{{ log.time }}</span>
<p>{{ log.text }}</p>
</div>
</div>
</section>
</section>
</main>
</div>
</template>
<script>
export default {
name: 'DaLuJiaTV1',
data() {
return {
style: {
width: 1920,
height: 1080,
transform: 'scaleY(1) scaleX(1) translate(-50%, -50%)'
},
headerDateCn: '',
headerTime: '',
iframeAddress: '',
clockTimer: null,
resizeHandler: null,
lineMonitorRows: [
{
name: '长地轨',
summary: '自动模式 / 允许接任务 / PCS 在线',
status: '执行中',
type: 'on',
start: '01',
end: '06',
recipe: 'RCP-01',
pallet: 'Pallet-A',
part: '长轴',
signals: [
{ label: 'PCS 运行', color: 'green' },
{ label: '允许接任务', color: 'green' },
{ label: '自动模式', color: 'green' },
{ label: '急停未触发', color: 'gray' }
],
steps: [
{ label: 'FLAG', state: 'done' },
{ label: 'READY', state: 'done' },
{ label: 'BUSY', state: 'active' },
{ label: 'COMPLETE', state: 'idle' }
]
},
{
name: '短地轨',
summary: '自动模式 / 允许接任务 / PCS 在线',
status: '准备就绪',
type: 'ok',
start: '03',
end: '09',
recipe: 'RCP-09',
pallet: 'Pallet-C',
part: '短轴',
signals: [
{ label: 'PCS 运行', color: 'green' },
{ label: '允许接任务', color: 'green' },
{ label: '自动模式', color: 'green' },
{ label: '急停未触发', color: 'gray' }
],
steps: [
{ label: 'FLAG', state: 'done' },
{ label: 'READY', state: 'active' },
{ label: 'BUSY', state: 'idle' },
{ label: 'COMPLETE', state: 'idle' }
]
},
{
name: '关节机器人',
summary: '人工确认中 / 自动待恢复 / PCS 在线',
status: '异常中断',
type: 'alarm',
start: '02',
end: '04',
recipe: 'RCP-11',
pallet: 'Pallet-B',
part: '长轴',
signals: [
{ label: 'PCS 运行', color: 'green' },
{ label: '允许接任务', color: 'green' },
{ label: '自动待恢复', color: 'yellow' },
{ label: '急停未触发', color: 'gray' }
],
steps: [
{ label: 'FLAG', state: 'done' },
{ label: 'READY', state: 'done' },
{ label: 'BUSY', state: 'error' },
{ label: 'COMPLETE', state: 'idle' }
]
}
],
equipmentList: [
{ name: 'F500', target: '1202', actual: '1202', status: '正常', type: 'ok', tags: [{ text: '上料完成', type: 'ok' }, { text: '下料完成', type: 'ok' }, { text: '运行中', type: 'on' }] },
{ name: 'L2000LSY', target: '2206', actual: '2206', status: '正常', type: 'ok', tags: [{ text: '上料完成', type: 'ok' }, { text: '下料完成', type: 'ok' }, { text: '待命', type: 'idle' }] },
{ name: 'L2100SY', target: '3301', actual: '3298', status: '预警', type: 'warn', tags: [{ text: '程序待同步', type: 'warn' }, { text: '运行中', type: 'on' }] },
{ name: '新日', target: '4108', actual: '4108', status: '正常', type: 'ok', tags: [{ text: '上料就绪', type: 'ok' }, { text: '下料等待', type: 'idle' }, { text: '运行中', type: 'on' }] },
{ name: 'MAZAK', target: '-', actual: '-', status: '异常', type: 'alarm', tags: [{ text: '上料就绪', type: 'ok' }, { text: '运行中', type: 'on' }, { text: '报警', type: 'alarm' }] },
{ name: 'YKD5132H', target: '5104', actual: '5104', status: '正常', type: 'ok', tags: [{ text: '上料就绪', type: 'ok' }, { text: '下料就绪', type: 'ok' }, { text: '待命', type: 'idle' }] }
],
assistList: [
{ name: '打标机', status: '待机中', type: 'ok', tags: [{ text: '开机中', type: 'ok' }, { text: 'START=0', type: 'idle' }, { text: 'BUSY=0', type: 'idle' }] },
{ name: '清洗机', status: '打标完成保持', type: 'on', tags: [{ text: '开机中', type: 'ok' }, { text: 'START 已触发', type: 'warn' }, { text: 'BUSY=1', type: 'on' }] },
{ name: '桁架', status: '待命', type: 'idle', tags: [{ text: '开机中', type: 'ok' }, { text: '等待任务', type: 'idle' }, { text: 'IDLE=1', type: 'idle' }] },
{ name: '测量仪', status: '运行中', type: 'on', tags: [{ text: '上料就绪', type: 'ok' }, { text: 'BUSY=1', type: 'on' }, { text: '等待下料', type: 'idle' }] },
{ name: '复测工位', status: '错误', type: 'alarm', tags: [{ text: '复测等待', type: 'warn' }, { text: 'ERROR=1', type: 'alarm' }, { text: '下料未就绪', type: 'idle' }] }
],
storageGroups: [
{
name: 'A 库区',
total: 9,
filled: 6,
slots: this.createSlots(['S1', 'S2', 'S4', 'S6', 'S7', 'S9'], 9)
},
{
name: 'B 库区',
total: 9,
filled: 6,
slots: this.createSlots(['S1', 'S3', 'S4', 'S6', 'S8', 'S9'], 9)
},
{
name: 'C 库区',
total: 6,
filled: 4,
slots: this.createSlots(['S1', 'S3', 'S5', 'S6'], 6)
}
],
alarmEvents: [
{ time: '10:26', device: 'MAZAK', level: '严重', type: 'alarm', message: 'ALARM=1建议定位机床侧运行条件。' },
{ time: '10:22', device: '测量仪', level: '严重', type: 'alarm', message: '测量流程中断,等待复测确认。' },
{ time: '10:18', device: 'L2100SY', level: '警告', type: 'warn', message: '目标程序与实际程序不一致。' },
{ time: '10:12', device: '关节机器人', level: '警告', type: 'warn', message: '自动模式待恢复,需要人工确认。' }
],
taskLogs: [
{ time: '10:31', text: '长地轨从 01 工位向 06 工位搬运,机器人保持 BUSY。' },
{ time: '10:29', text: '短地轨任务已下发READY=1等待进入 BUSY。' },
{ time: '10:24', text: '关节机器人在测量仪工位异常中断ERROR=1。' },
{ time: '10:21', text: 'F500 上料完成L2000LSY 下料完成,任务链路继续派发。' }
]
}
},
mounted() {
this.iframeAddress = window.dt_Config && window.dt_Config.iframeAddress ? window.dt_Config.iframeAddress : ''
this.updateTime()
this.setScale()
this.clockTimer = setInterval(this.updateTime, 1000)
this.resizeHandler = () => this.setScale()
window.addEventListener('resize', this.resizeHandler)
},
beforeDestroy() {
if (this.clockTimer) {
clearInterval(this.clockTimer)
this.clockTimer = null
}
if (this.resizeHandler) {
window.removeEventListener('resize', this.resizeHandler)
this.resizeHandler = null
}
},
methods: {
createSlots(filledNames, total) {
return Array.from({ length: total }, (_, index) => {
const name = `S${index + 1}`
return {
name,
filled: filledNames.includes(name)
}
})
},
setScale() {
const scaleX = window.innerWidth / this.style.width
const scaleY = window.innerHeight / this.style.height
this.style.transform = `scaleY(${scaleY}) scaleX(${scaleX}) translate(-50%, -50%)`
},
updateTime() {
const now = new Date()
const pad = value => String(value).padStart(2, '0')
this.headerDateCn = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`
this.headerTime = `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`
}
}
}
</script>
<style>
html,
body,
#app {
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
background: #06101f;
}
</style>
<style scoped>
.qa-screen {
position: fixed;
left: 50%;
top: 50%;
transform-origin: 0 0;
overflow: hidden;
color: #e8f3ff;
font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif;
background: #06101f url("/png/背景底图.png") no-repeat center center;
background-size: cover;
}
.qa-screen::before {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at 25% 22%, rgba(42, 151, 255, 0.18), transparent 28%),
radial-gradient(circle at 74% 26%, rgba(39, 217, 128, 0.08), transparent 26%),
linear-gradient(180deg, rgba(2, 9, 22, 0.35), rgba(3, 13, 31, 0.66));
pointer-events: none;
}
.title-png {
position: absolute;
top: 0;
left: 0;
z-index: 40;
width: 100%;
height: 100px;
background-image: url("/png/top1.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
pointer-events: none;
display: flex;
justify-content: center;
}
.title-text {
margin-right: 37px;
color: #fff;
font-size: 37px;
font-weight: 700;
line-height: 70px;
text-align: center;
text-shadow: 0 0 18px rgba(97, 215, 255, 0.45);
}
.df-header__right {
position: absolute;
top: 30px;
right: 30px;
width: 236px;
}
.df-header__timebar {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 18px;
color: #ffffff;
}
.df-header__year {
font-size: 16px;
opacity: 0.9;
}
.df-header__time {
font-size: 22px;
font-weight: 700;
}
.leftLine,
.rightLine {
position: absolute;
top: 50px;
z-index: 30;
width: 54px;
height: 1020px;
background-size: 100% 100%;
background-position: center;
pointer-events: none;
}
.leftLine {
left: 10px;
background-image: url("/png/左边条.png");
}
.rightLine {
right: 10px;
background-image: url("/png/右边条.png");
}
.qa-dashboard {
position: absolute;
z-index: 2;
left: 64px;
right: 64px;
top: 100px;
bottom: 26px;
display: grid;
grid-template-rows: minmax(0, 1fr) 248px;
gap: 12px;
}
.qa-main-grid {
display: grid;
grid-template-columns: 360px minmax(0, 1fr) 360px;
gap: 12px;
min-height: 0;
}
.qa-column {
min-height: 0;
display: grid;
gap: 12px;
}
.qa-column-left {
grid-template-rows: minmax(0, 1fr);
}
.qa-column-right {
grid-template-rows: minmax(0, 1fr) 236px;
}
.qa-panel,
.qa-model-panel {
min-height: 0;
overflow: hidden;
border: 1px solid rgba(91, 180, 255, 0.36);
background: linear-gradient(180deg, rgba(17, 52, 98, 0.68) 0%, rgba(7, 26, 56, 0.72) 100%);
box-shadow:
inset 0 0 22px rgba(37, 111, 184, 0.25),
0 10px 30px rgba(0, 0, 0, 0.26);
}
.qa-panel-body {
height: calc(100% - 42px);
padding: 10px 12px 12px;
box-sizing: border-box;
}
.qa-panel-body--storage {
padding: 8px 10px 10px;
}
.qa-scroll {
overflow: auto;
}
.qa-scroll::-webkit-scrollbar {
width: 6px;
}
.qa-scroll::-webkit-scrollbar-thumb {
background: rgba(111, 212, 255, 0.22);
}
.left-title-header,
.right-title-header,
.center-title-header {
height: 42px;
display: flex;
align-items: center;
padding: 0 18px;
box-sizing: border-box;
}
.left-title-header {
justify-content: flex-start;
background: url("/png/left.png") no-repeat center center;
background-size: 100% 100%;
}
.right-title-header {
justify-content: flex-end;
padding-right: 24px;
background: url("/png/right.png") no-repeat center center;
background-size: 100% 100%;
}
.center-title-header {
border-bottom: 1px solid rgba(114, 206, 255, 0.16);
background: linear-gradient(90deg, rgba(25, 72, 128, 0.45), rgba(8, 24, 46, 0.12));
}
.left-title-text,
.right-title-text,
.center-title-header span {
color: #ffffff;
font-size: 17px;
font-weight: 700;
}
.right-title-text {
text-align: right;
}
.status-pill {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 9px;
border-radius: 999px;
color: #aac4d8;
background: rgba(255, 255, 255, 0.06);
font-size: 12px;
white-space: nowrap;
}
.status-pill--compact {
padding: 2px 7px;
font-size: 11px;
}
.status-pill--ok {
color: #8effc2;
background: rgba(39, 217, 128, 0.18);
}
.status-pill--on {
color: #9be7ff;
background: rgba(49, 166, 255, 0.18);
}
.status-pill--warn {
color: #ffe08b;
background: rgba(243, 198, 78, 0.18);
}
.status-pill--alarm {
color: #ff98a3;
background: rgba(255, 93, 108, 0.18);
}
.status-pill--idle {
color: #b6c7d5;
background: rgba(255, 255, 255, 0.06);
}
.qa-model-panel {
position: relative;
background:
linear-gradient(180deg, rgba(6, 14, 25, 0.14), rgba(6, 14, 25, 0.36)),
rgba(8, 18, 32, 0.7);
}
.model-frame,
.model-placeholder {
position: absolute;
inset: 0;
}
.model-frame {
width: 100%;
height: 100%;
border: 0;
}
.model-placeholder {
display: flex;
align-items: center;
justify-content: center;
color: #77d9ff;
font-size: 24px;
background: radial-gradient(circle at center, rgba(37, 111, 184, 0.24), rgba(4, 12, 28, 0.92));
}
.monitor-card,
.equipment-row,
.assist-card,
.storage-card,
.event-row,
.log-row {
border: 1px solid rgba(114, 206, 255, 0.16);
background: rgba(5, 20, 44, 0.66);
box-shadow: inset 0 0 14px rgba(42, 133, 205, 0.12);
}
.monitor-card {
margin-bottom: 10px;
padding: 11px 12px;
}
.monitor-head,
.assist-title,
.storage-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
}
.monitor-title strong {
display: block;
color: #fff;
font-size: 18px;
}
.monitor-title p,
.monitor-task p {
margin: 4px 0 0;
color: #9fc3dc;
font-size: 12px;
line-height: 1.4;
}
.monitor-main {
margin-top: 10px;
display: grid;
grid-template-columns: 128px minmax(0, 1fr);
gap: 10px;
align-items: start;
}
.monitor-task {
padding: 8px 9px;
background: rgba(0, 0, 0, 0.24);
}
.monitor-task span,
.monitor-flow-label,
.equipment-program span,
.storage-head span {
color: #9fc3dc;
font-size: 12px;
}
.monitor-task strong {
display: block;
margin-top: 6px;
color: #fff;
font-size: 20px;
}
.monitor-signals {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px 10px;
}
.signal-item {
display: flex;
align-items: center;
gap: 7px;
min-width: 0;
color: #cde5f7;
font-size: 13px;
}
.dot {
flex: 0 0 auto;
width: 10px;
height: 10px;
border-radius: 50%;
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.04);
}
.dot--green { background: #2be085; }
.dot--blue { background: #35b2ff; }
.dot--yellow { background: #f3c64e; }
.dot--red { background: #ff5d6c; }
.dot--gray { background: #5b6d81; }
.monitor-flow {
margin-top: 12px;
}
.steps {
margin-top: 8px;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.step {
position: relative;
padding-top: 21px;
color: #9fc3dc;
font-size: 11px;
text-align: center;
}
.step::before {
content: "";
position: absolute;
top: 0;
left: 50%;
width: 12px;
height: 12px;
transform: translateX(-50%);
border-radius: 50%;
background: #5b6d81;
}
.step--done::before {
background: #2be085;
box-shadow: 0 0 12px rgba(39, 217, 128, 0.45);
}
.step--active::before {
background: #35b2ff;
box-shadow: 0 0 12px rgba(49, 166, 255, 0.55);
}
.step--error::before {
background: #ff5d6c;
box-shadow: 0 0 12px rgba(255, 93, 108, 0.5);
}
.equipment-row {
display: grid;
grid-template-columns: 72px 48px 48px minmax(0, 1fr) 60px;
align-items: center;
gap: 8px;
min-height: 52px;
margin-bottom: 8px;
padding: 8px 10px;
}
.equipment-row--alarm {
border-color: rgba(255, 93, 108, 0.4);
background: rgba(64, 8, 20, 0.48);
}
.equipment-name {
min-width: 0;
color: #fff;
font-size: 13px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.equipment-program {
display: flex;
flex-direction: column;
}
.equipment-program b {
margin-top: 4px;
color: #fff;
font-size: 13px;
}
.equipment-tags,
.assist-flow {
display: flex;
flex-wrap: wrap;
gap: 5px;
min-width: 0;
}
.equipment-status {
justify-self: end;
}
.assist-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.assist-card {
padding: 11px;
min-height: 92px;
}
.assist-title {
margin-bottom: 10px;
}
.qa-bottom-grid {
display: grid;
grid-template-columns: 1.2fr 1fr 1fr;
gap: 12px;
min-height: 0;
}
.storage-groups {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
align-items: start;
}
.storage-card {
min-width: 0;
padding: 9px;
}
.storage-head {
margin-bottom: 8px;
}
.slots {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-auto-rows: 30px;
gap: 6px;
}
.slot {
display: flex;
align-items: center;
justify-content: center;
height: 30px;
color: #9fc3dc;
border: 1px solid rgba(114, 206, 255, 0.14);
background: rgba(255, 255, 255, 0.03);
font-size: 12px;
}
.slot--filled {
color: #e8fbff;
background: linear-gradient(180deg, rgba(49, 166, 255, 0.26), rgba(39, 217, 128, 0.2));
box-shadow: inset 0 0 0 1px rgba(126, 233, 255, 0.18);
}
.event-row {
display: grid;
grid-template-columns: 48px 74px 48px 1fr;
align-items: center;
gap: 8px;
min-height: 38px;
margin-bottom: 8px;
padding: 8px 10px;
font-size: 12px;
}
.event-row p,
.log-row p {
margin: 0;
color: #d5edf8;
line-height: 1.35;
}
.log-row {
display: grid;
grid-template-columns: 52px 1fr;
gap: 8px;
margin-bottom: 8px;
padding: 9px 10px;
font-size: 12px;
}
.event-row > span:first-child,
.log-row > span {
color: #65ddff;
font-weight: 700;
}
</style>

File diff suppressed because it is too large Load Diff

3812
src/views/qingAn.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -26,6 +26,11 @@ module.exports = {
} }
} }
} }
},
configureWebpack: {
output: {
hashFunction: 'sha256'
}
} }
// publicPath: '/GQMobile/' // publicPath: '/GQMobile/'
} }

View File

@@ -0,0 +1,63 @@
# 01-功能内容
更新时间2026-06-24
来源文档:`产线通讯信号可视化看板设计说明.md`
## 1. 看板目标
本看板用于把 `通讯变量列表.xlsx` 中的产线通讯信号转化为 16:9 大屏可视化页面。核心目标不是单纯展示静态页面,而是把线体状态、机器人任务、物料库位、设备状态、报警事件、任务日志和三维模型联动起来,形成一块可持续接入真实数据的数字孪生监控看板。
当前主页面为:`src/views/DaLuJiaTV1.vue`
当前模型入口通过 `window.dt_Config.iframeAddress` 配置,默认设计说明中建议先使用 `https://www.baidu.com` 占位,后续替换为真实三维模型地址。
## 2. 页面区域
| 区域 | 位置 | 功能内容 | 当前实现建议 |
|---|---|---|---|
| 顶部标题栏 | 页面顶部 | 系统名称、当前日期时间、可扩展通讯状态/报警数量 | 保留系统标题和时间,顶部 KPI 根据当前视觉要求暂不显示 |
| 左侧运行态势区 | 左侧 | 线体状态、任务流向、机器人反馈流程 | 合并为 `线体联动监控`,减少重复表达 |
| 中央三维模型区 | 中心 | iframe 三维模型,后续可加透明 HUD | 当前按用户要求保留纯 iframe不叠加无用悬浮元素 |
| 右侧设备监控区 | 右侧 | 加工设备状态、辅助设备状态 | 标题右对齐,与左侧标题形成对称 |
| 底部物料与事件区 | 底部 | 物料库位矩阵、报警与异常事件、任务日志 | 库位矩阵需完整显示 9/9/6 格 |
## 3. 核心数据范围
| 数据表 | 主要对象 | 用途 |
|---|---|---|
| 线体状态 | 长地轨、短地轨、关节机器人 | 判断在线、自动、允许接任务、急停 |
| 任务数据 | 长地轨、短地轨、关节机器人 | 展示起点、终点、配方、托盘、零件类型、反馈流程 |
| 物料库数据 | 长地轨、短地轨、关节物料库 | 展示库位是否有件,统计库位占用情况 |
| 设备数据 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H、打标机、清洗机、测量仪 | 展示程序号、上下料、运行、报警、打标、清洗、测量状态 |
## 4. 功能模块清单
| 模块编号 | 模块名称 | 功能内容 | 数据/信号 | 验收要点 |
|---|---|---|---|---|
| M01 | 顶部标题栏 | 展示系统名称和当前时间 | 系统时间 | 标题清晰,时间每秒刷新 |
| M02 | 全局状态 KPI | 在线单元、自动模式、可接任务、急停、执行中任务、当前报警 | PCS_RUN、AUTO_ACTIVE、ALLOW_TASK、EMG、BUSY、ERROR、ALARM | 当前阶段可选;如恢复,需避免顶部拥挤 |
| M03 | 线体联动监控 | 单元状态、任务流向、反馈流程合并展示 | PCS_RUN、ALLOW_TASK、AUTO_ACTIVE、EMG、START_POS、END_POS、READY、BUSY、ERROR、COMPLETE | 一行/一卡表达一个单元,避免任务编号重复占位 |
| M04 | 中央三维模型 iframe | 嵌入三维产线模型 | `window.dt_Config.iframeAddress` | iframe 填满中间区域,不被无用浮层遮挡 |
| M05 | 模型透明 HUD | 设备标签、任务路径、报警定位 | 设备/任务/报警信号 | 当前按用户要求暂不显示,后续按需恢复 |
| M06 | 加工设备状态 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H 列表 | D_PROG_NO、A_PROG_NO、UPLOAD/UNLOAD、BUSY、ALARM | 最右状态列不被挤压,报警整行高亮 |
| M07 | 辅助设备状态 | 打标机、清洗机、桁架、测量仪、复测工位 | NORMAL、START、BUSY、IDLE、ERROR、UPLOAD_READY、UNLOAD_READY | 卡片紧凑显示,标题右对齐 |
| M08 | 物料库位矩阵 | A/B/C 库区库位状态 | S1_YES 至 S9_YES、S1_YES 至 S6_YES | A/B 库区完整显示 3x3C 库区完整显示 2x3 |
| M09 | 报警与异常事件 | 展示严重/警告/提示事件 | EMG、ERROR、ALARM、程序不一致、任务超时 | 事件包含时间、设备、级别、内容 |
| M10 | 任务日志 | 记录任务创建、启动、执行、完成、异常 | TASK_NO、FLAG、READY、BUSY、COMPLETE、ERROR | 不再强制展示 #1024 等临时编号 |
| M11 | 交互联动 | 单元、设备、报警、任务之间联动 | 模块状态集合 | 后续实现点击联动/弹窗时补充 |
## 5. 状态色规则
| 状态 | 颜色 | 应用范围 |
|---|---|---|
| 正常 / 在线 / 完成 | 绿色 | PCS_RUN、READY、COMPLETE、IDLE、上下料完成 |
| 运行中 / 忙碌 | 蓝色 | BUSY、自动运行中、当前任务执行 |
| 等待 / 未触发 | 灰色 | 无任务、默认 0、未触发 |
| 预警 / 不一致 | 黄色 | 程序号不一致、人工确认、待同步 |
| 报警 / 急停 / 错误 | 红色 | EMG、ERROR、ALARM |
## 6. 当前内容边界
1. 当前页面先使用模拟数据结构,后续用真实通讯数据替换数组即可。
2. 中央 iframe 不读取内部 DOM跨域时只能通过外部信号数据驱动周边面板或 HUD。
3. 顶部 KPI 和模型 HUD 在原设计中存在,但当前根据界面调整要求暂时移除或不显示。
4. 线体、任务、反馈三类信息已经合并为一个联动模块,后续不再拆回三个孤立面板,除非业务明确要求。

View File

@@ -0,0 +1,121 @@
# 02-程序开发步骤
更新时间2026-06-24
适用项目:`D:\5ITlearning\DT_TV\QingAnVue2TV`
## 1. 开发原则
1. 保持 Vue2 + Vue CLI 技术栈,不引入新框架。
2. 大屏以 1920x1080 固定画布开发,通过缩放适配窗口。
3. 优先复用老项目已有视觉资源,例如 `public/png/top1.png`、左右标题条、背景底图、边框条。
4. 中央三维模型以 iframe 为核心画面,周边面板服务于模型,不抢主视觉。
5. 每轮改动后必须至少执行一次构建验证;涉及布局时补充截图验收。
6. 不提交用户未确认的无关删除或配置变更。
## 2. 阶段划分
| 阶段 | 目标 | 主要工作 | 产出 |
|---|---|---|---|
| P0 | 备份与清理准备 | git 建仓/远程备份、识别核心页面、确认可删资产 | 可回滚提交点 |
| P1 | 遗留资源清理 | 删除 DMT/DMT_WEB 和未引用 src 内容,精简依赖 | 干净项目骨架 |
| P2 | 需求梳理 | 阅读设计说明、拆模块、建立任务矩阵 | `01-06` 管理文档 |
| P3 | 页面结构搭建 | 用老看板壳子承载新看板内容 | `DaLuJiaTV1.vue` 主布局 |
| P4 | 模块实现 | 实现线体、设备、库位、报警、日志模块 | 可运行的静态/模拟数据页面 |
| P5 | 数据接入 | 将模拟数组替换为接口/通讯变量数据 | 数据映射层、刷新逻辑 |
| P6 | 交互联动 | 单元高亮、设备详情、报警定位、任务追踪 | 可交互看板 |
| P7 | 视觉与适配 | 1920x1080、1600x900 等视口检查 | 截图和问题清单 |
| P8 | 验收与交付 | 构建、截图、台账、决策记录补齐 | 可交付版本 |
## 3. 推荐开发顺序
### 3.1 基础检查
```powershell
git -c safe.directory=D:/5ITlearning/DT_TV/QingAnVue2TV -C D:\5ITlearning\DT_TV\QingAnVue2TV status --short
npm run build
```
检查项:
- `src/views/DaLuJiaTV1.vue` 是否为主页面。
- `src/router/index.js` 是否仍指向 `DaLuJiaTV1`
- `public/config.js``iframeAddress` 是否为期望模型地址。
- 是否存在用户未处理的工作区变更。
### 3.2 页面骨架
1. 保留顶部标题与时间。
2. 左侧使用 `线体联动监控`,将线体状态、任务流向、反馈流程合并为单元卡片。
3. 中央使用 iframe保持纯净画面。
4. 右侧放 `加工设备状态``辅助设备状态`,标题右对齐。
5. 底部放 `物料库位矩阵``报警与异常事件``任务日志`
### 3.3 数据结构
推荐在 `data()` 中按模块建立数组:
| 数据对象 | 用途 |
|---|---|
| `lineMonitorRows` | 左侧线体联动监控,一条数据代表一个单元 |
| `equipmentList` | 加工设备状态列表 |
| `assistList` | 辅助设备状态卡片 |
| `storageGroups` | 物料库位矩阵 |
| `alarmEvents` | 报警与异常事件 |
| `taskLogs` | 任务日志 |
后续真实数据接入时,建议新增转换函数,不直接把接口结构写进模板。
### 3.4 样式实现
1. 使用固定画布:`width: 1920px; height: 1080px`
2. 使用 `setScale()` 按窗口缩放。
3. 固定面板尺寸,避免动态内容撑乱布局。
4. 所有列表行使用固定列宽、`minmax(0, 1fr)``text-overflow`
5. 库位格子使用固定 `grid-auto-rows`,确保 3x3 完整显示。
### 3.5 验证流程
每轮完成后执行:
```powershell
npm run build
```
如涉及布局,启动或复用本地服务:
```powershell
npm run serve
```
浏览器检查:
- `http://127.0.0.1:8084/`
- 1920x1080 或等比例视口。
- 重点检查文字重叠、滚动条、格子缺失、右侧状态挤压、iframe 是否被遮挡。
## 4. 代码落点
| 文件 | 用途 |
|---|---|
| `src/views/DaLuJiaTV1.vue` | 新项目主看板页面 |
| `src/views/DaLuJiaTV2.vue` | 老页面/参考页,非当前主改动对象 |
| `src/router/index.js` | 路由入口 |
| `public/config.js` | iframe 地址和服务地址配置 |
| `public/png/` | 老项目视觉素材 |
| `work/working1/` | 需求、推进、验收和决策文档 |
## 5. 提交建议
每个阶段建议单独提交:
1. `docs: add dashboard working documents`
2. `feat: implement signal dashboard layout`
3. `fix: refine dashboard panel layout`
4. `chore: prune unused legacy dashboard assets`
提交前不要把以下内容误带入,除非用户明确确认:
- 用户手动删除的压缩包或旧文档。
- 临时截图。
- 本地日志文件。
- 未确认的 `public/config.js` 改动。

View File

@@ -0,0 +1,36 @@
# 03-推进台账
更新时间2026-06-24
说明:本台账用于记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。后续每轮继续追加,不覆盖旧记录。
## 推进记录
| 轮次 | 日期 | 目标 | 已完成 | 变更文件/范围 | 验证 | 下一步 | 状态 |
|---|---|---|---|---|---|---|---|
| R001 | 2026-06-24 | 清理 DMT/DMT_WEB 遗留内容 | 删除 DMT_WEB、DMT 组件和 three 依赖,保留当前看板必要代码 | `public/DMT_WEB``src/components/DMT``package.json` 等 | `npm run build` 通过 | 继续清理 src 未用内容 | 已完成 |
| R002 | 2026-06-24 | 大清理 src 无关内容 | 保留 `DaLuJiaTV1.vue``DaLuJiaTV2.vue`、路由、请求工具等核心文件,删除旧页面/旧 store/旧 assets | `src/``package.json` | `npm run build` 通过 | 基于 demo 做新看板 | 已完成 |
| R003 | 2026-06-24 | 远程备份 | 创建/配置 Gitea 远程仓库并推送主分支 | git remote、master | git push 成功 | 新页面融合 | 已完成 |
| R004 | 2026-06-24 | 融合 demo 和老看板风格 | 用老看板标题、背景、边框素材承载新项目内容 | `src/views/DaLuJiaTV1.vue` | `npm run build` 通过 | 视觉删减与布局调整 | 已完成 |
| R005 | 2026-06-24 | 删除无用顶部说明和 iframe 浮层 | 删除顶部 KPI/说明、删除 iframe 上 HUD/标签/路径线、修复底部旧“设备运行履历”标题图重叠 | `src/views/DaLuJiaTV1.vue` | `npm run build` 通过 | 左侧模块合并 | 已完成 |
| R006 | 2026-06-24 | 删除 TV2 按钮并合并左侧模块 | 删除 TV2 按钮;将线体状态、任务、反馈合并为 `线体联动监控` | `src/views/DaLuJiaTV1.vue` | `npm run build` 通过 | 压紧左侧、修正库位/右侧挤压 | 已完成 |
| R007 | 2026-06-24 | 优化线体联动监控与布局问题 | 删除临时任务号 `#1024/#2048/#3086`;将左侧改为单元卡片;固定库位格尺寸;右侧标题右对齐;调整加工设备列宽 | `src/views/DaLuJiaTV1.vue` | `npm run build` 通过Playwright/Chrome 截图无 console error | 继续根据截图压缩左/右侧高度并接入真实数据 | 待复核 |
| R008 | 2026-06-24 | 建立工作文档体系 | 根据设计说明生成 01-06 六份文档 | `work/working1/*.md` | 文件写入后读取确认 | 后续每轮同步维护文档 | 进行中 |
## 当前工作区提醒
截至本记录创建时,工作区存在以下非本轮文档事项,需要提交前确认:
| 项目 | 状态 | 处理建议 |
|---|---|---|
| `src/views/DaLuJiaTV1.vue` | 已修改 | 属于当前看板迭代,可单独提交 |
| `public/config.js` | 曾出现修改 | 提交前确认是否为用户期望模型地址 |
| `work/` | 未跟踪 | 本轮新增管理文档,可提交 |
| `public/产线通讯信号可视化看板设计说明.md` 删除记录 | 需确认 | 不要误提交,除非确认迁移到 `work/working1` 后删除旧文件 |
| `dist.7z``docs/*` 删除记录 | 历史工作区状态 | 未经确认不处理 |
## 追加规则
1. 每轮新增一行 `Rxxx`,不要修改历史事实。
2. `验证` 必须写具体命令或截图路径。
3. `下一步` 只写一个最直接动作,避免泛泛而谈。
4. 文件变更范围必须写到文件或目录级别。

View File

@@ -0,0 +1,49 @@
# 04-任务矩阵
更新时间2026-06-24
说明:本矩阵用于记录所有任务编号、状态、验收标准,防止重复做。
## 状态定义
| 状态 | 含义 |
|---|---|
| TODO | 尚未开始 |
| DOING | 正在处理 |
| REVIEW | 已实现,等待用户或截图复核 |
| DONE | 已完成并通过验收 |
| HOLD | 暂停,等待外部输入或用户确认 |
## 任务列表
| 任务编号 | 模块 | 任务内容 | 状态 | 验收标准 | 关联文件 |
|---|---|---|---|---|---|
| T-001 | 项目清理 | 删除 DMT_WEB 和无用 DMT 相关内容 | DONE | 构建通过,当前页面不引用 DMT_WEB | `public/``src/``package.json` |
| T-002 | 项目清理 | 清理 `src` 下与当前项目无关内容 | DONE | 仅保留当前两张大屏及必要入口/工具 | `src/` |
| T-003 | 版本备份 | 创建远程仓库并推送 | DONE | 远程 master 可回滚 | git remote |
| T-004 | 页面主框架 | 用老看板视觉壳子承载新看板 | DONE | 标题、背景、边框与老风格一致 | `DaLuJiaTV1.vue``public/png/` |
| T-005 | 顶部标题栏 | 展示系统标题和时间 | DONE | 标题居中,时间正常刷新 | `DaLuJiaTV1.vue` |
| T-006 | 顶部 KPI | 在线单元、自动模式、报警等 KPI | HOLD | 用户已要求删除顶部说明/KPI后续如恢复需重新确认 | `DaLuJiaTV1.vue` |
| T-007 | 左侧联动 | 将线体状态、任务监控、反馈流程合并 | REVIEW | 一个模块表达三个单元,减少重复内容 | `DaLuJiaTV1.vue` |
| T-008 | 任务编号 | 删除临时任务号 `#1024/#2048/#3086` | REVIEW | 页面不再出现这些临时编号 | `DaLuJiaTV1.vue` |
| T-009 | 中央 iframe | 保留纯 iframe 模型区 | REVIEW | iframe 填满主区域,无无用浮层 | `DaLuJiaTV1.vue``public/config.js` |
| T-010 | 模型 HUD | 设备标签、路径、报警浮层 | HOLD | 用户当前要求删除 iframe 上悬浮元素;后续按真实需求恢复 | `DaLuJiaTV1.vue` |
| T-011 | 加工设备状态 | 展示 6 台加工设备状态 | REVIEW | 最右状态列不被挤压,报警行高亮 | `DaLuJiaTV1.vue` |
| T-012 | 辅助设备状态 | 展示打标、清洗、桁架、测量、复测状态 | REVIEW | 标题右对齐,卡片内容不溢出 | `DaLuJiaTV1.vue` |
| T-013 | 右侧标题对称 | 加工/辅助设备标题靠右 | REVIEW | 与左侧标题视觉对称 | `DaLuJiaTV1.vue` |
| T-014 | 物料库位矩阵 | A/B 为 3x3C 为 2x3 | REVIEW | A/B 最底部 3 格完整显示C 6 格完整显示 | `DaLuJiaTV1.vue` |
| T-015 | 报警事件 | 展示时间、设备、级别、事件内容 | REVIEW | 严重/警告颜色区分,文本不遮挡 | `DaLuJiaTV1.vue` |
| T-016 | 任务日志 | 展示任务关键节点 | REVIEW | 不依赖临时任务编号也能表达任务流转 | `DaLuJiaTV1.vue` |
| T-017 | 数据映射 | 建立 Excel 通讯变量到页面数据的转换层 | TODO | 不在模板里硬编码接口字段;有转换函数和空值处理 | 待定 |
| T-018 | 真实数据接入 | 接入接口、WebSocket 或轮询数据 | TODO | 1 秒或指定周期刷新,异常可恢复 | 待定 |
| T-019 | 单元联动 | 点击单元后联动模型、设备和事件 | TODO | 点击长地轨/短地轨/关节后相关区域高亮/筛选 | `DaLuJiaTV1.vue` |
| T-020 | 设备详情 | 点击设备显示详情弹窗 | TODO | 展示设备名、所属单元、信号值、地址、最近状态 | 待定 |
| T-021 | 报警定位 | 报警事件定位到模型和设备 | TODO | 点击事件后模型/设备高亮 | 待定 |
| T-022 | 适配验收 | 1920x1080 和 1600x900 截图检查 | DOING | 无明显遮挡、溢出、缺格、重叠 | 截图、浏览器记录 |
| T-023 | 工作文档 | 创建 01-06 六份文档 | DOING | 文件存在、内容可读、可继续追加维护 | `work/working1/*.md` |
## 防重复规则
1. 做新需求前先查本矩阵,已有任务只更新状态,不新建重复任务。
2. 用户要求删除的功能进入 `HOLD`,不从代码里反复恢复。
3. 每个 `REVIEW` 任务必须补验收截图或用户确认后才能改为 `DONE`
4. 涉及真实数据接入时,先新增数据映射任务,再写 UI。

View File

@@ -0,0 +1,91 @@
# 05-验收证据
更新时间2026-06-24
说明本文件记录命令、页面、job_id、report_id、PDF、截图等验收证据。没有的证据明确写“暂无”避免以后误以为已经做过。
## 1. 构建验证
| 时间 | 命令 | 结果 | 备注 |
|---|---|---|---|
| 2026-06-24 | `npm run build` | 通过 | Vue CLI 构建成功,存在资源体积 warning |
| 2026-06-24 14:33:31 | `npm run build` | 通过 | 输出 `DONE Build complete. The dist directory is ready to be deployed.` |
已知 warning
- `chunk-vendors` 体积较大。
- `png/背景底图.png` 等图片资源超过 webpack 推荐体积。
- Browserslist 数据过期。
这些 warning 不阻断当前功能验收,但后续性能优化可单独建任务。
## 2. 本地页面验证
| 项目 | 内容 |
|---|---|
| 本地服务 | `npm run serve` |
| 访问地址 | `http://127.0.0.1:8084/` |
| 页面 | `DaLuJiaTV1.vue` |
| 验证点 | 页面可打开、无 console error、中文渲染正常、模块布局可见 |
## 3. 截图证据
| 时间 | 工具 | 路径 | 验证内容 |
|---|---|---|---|
| 2026-06-24 | Playwright + 系统 Chrome | `C:\Users\86156\AppData\Local\Temp\qingan-dashboard-check.png` | 页面截图,无 console error检查左侧联动、右侧设备状态、底部库位矩阵 |
注意:临时目录截图可能会被系统清理。正式验收截图建议复制到:
```text
D:\5ITlearning\DT_TV\QingAnVue2TV\work\working1\evidence\
```
## 4. Git 证据
近期提交记录示例:
| commit | 说明 |
|---|---|
| `a69d0ca` | fix: add transparent=true param to iframe URL for transparent 3D model background |
| `833e256` | refactor: fullscreen iframe layout - 3D model as background with overlay panels |
| `e12a7b0` | fix: make central iframe transparent with semi-transparent panel background |
| `56a0c6b` | chore: snapshot before iframe transparency fix |
| `26cb102` | chore: update config, vue component, and add new html page |
提交前应再次执行:
```powershell
git -c safe.directory=D:/5ITlearning/DT_TV/QingAnVue2TV -C D:\5ITlearning\DT_TV\QingAnVue2TV status --short
```
## 5. 当前工作区证据
截至本文档创建时,已观察到的工作区状态包括:
| 状态 | 文件/目录 | 说明 |
|---|---|---|
| M | `src/views/DaLuJiaTV1.vue` | 当前看板主页面迭代中 |
| M | `public/config.js` | iframe 地址等配置可能被调整,提交前需确认 |
| ?? | `work/` | 工作文档目录,本文档属于该目录 |
| D | `public/产线通讯信号可视化看板设计说明.md` | 旧位置文档删除记录,提交前需确认是否保留删除 |
## 6. job_id / report_id / PDF
| 类型 | 当前状态 | 说明 |
|---|---|---|
| job_id | 暂无 | 当前未接入外部任务平台 |
| report_id | 暂无 | 当前未生成自动化测试报告编号 |
| PDF | 暂无 | 当前仅生成 Markdown 工作文档 |
| 自动化测试报告 | 暂无 | 后续可引入 Playwright 截图报告 |
## 7. 验收清单
| 验收项 | 标准 | 当前状态 |
|---|---|---|
| 构建 | `npm run build` 成功 | 通过 |
| 页面访问 | `http://127.0.0.1:8084/` 可打开 | 通过 |
| 中文显示 | 页面中文不乱码 | 通过 |
| 左侧联动监控 | 无临时任务号,表达紧凑 | 待用户复核 |
| 物料库位矩阵 | 9/9/6 格完整显示 | 待用户复核 |
| 加工设备状态 | 最右状态列不挤出 | 待用户复核 |
| 右侧标题 | 加工/辅助设备标题靠右 | 待用户复核 |
| iframe | 中央模型区不被无用浮层遮挡 | 待用户复核 |

View File

@@ -0,0 +1,96 @@
# 06-决策记录
更新时间2026-06-24
说明:记录关键决策和原因,后续变更时不反复争论同一个问题。新增决策请继续追加 ADR 编号。
## ADR-001采用老看板视觉壳子承载新项目内容
| 项目 | 内容 |
|---|---|
| 决策 | 使用旧 `DaLuJiaTV1.vue` 的标题、背景、边框、左右标题条等视觉风格,承载新“产线通讯信号可视化监控看板”内容 |
| 原因 | 用户明确要求结合老项目样式;老项目素材已经适配大屏风格,能降低重新设计成本 |
| 影响 | 新页面仍保持蓝色工业大屏风格;后续模块样式应继续沿用这一套视觉语言 |
## ADR-002中央区域以 iframe 三维模型为主画面
| 项目 | 内容 |
|---|---|
| 决策 | 中央区域保留 iframe地址来自 `window.dt_Config.iframeAddress` |
| 原因 | 设计说明明确要求三维模型为核心视觉iframe 便于替换真实模型地址 |
| 影响 | 前端不直接读取 iframe 内部对象;跨域情况下所有联动通过外部信号数据驱动 |
## ADR-003当前阶段删除 iframe 上无用悬浮元素
| 项目 | 内容 |
|---|---|
| 决策 | 暂时删除 iframe 上方 HUD、设备标签、路径线、说明框等悬浮元素 |
| 原因 | 用户明确反馈“那些元素没有用”;当前阶段先保证主模型区干净 |
| 影响 | 设计说明中的模型 HUD 进入 HOLD后续需要真实设备位置/交互需求后再恢复 |
## ADR-004顶部 KPI 当前不显示
| 项目 | 内容 |
|---|---|
| 决策 | 删除顶部 `Industrial signal board`、在线单元、通讯状态、任务节拍等 KPI/说明卡片 |
| 原因 | 用户明确要求删除这些内容,且顶部区域占用视觉空间 |
| 影响 | 顶部只保留标题和时间;如未来恢复 KPI需重新设计为不拥挤的紧凑样式 |
## ADR-005线体状态、任务、反馈合并为“线体联动监控”
| 项目 | 内容 |
|---|---|
| 决策 | 不再拆成 `线体状态总览``机器人任务监控``机器人反馈流程` 三个独立面板,而是按单元合并展示 |
| 原因 | 三个模块本质上是同一单元的状态、任务和反馈三个角度,拆开会重复表达并占空间 |
| 影响 | 左侧每个单元一卡,按“单元状态 -> 任务流向 -> 反馈流程”组织 |
## ADR-006删除临时任务号显示
| 项目 | 内容 |
|---|---|
| 决策 | 页面不再展示 `#1024``#2048``#3086` 等临时任务号 |
| 原因 | 用户认为这些文字没用;当前模拟数据阶段任务号容易形成误导 |
| 影响 | 任务日志和任务卡片改用流向、配方、托盘、零件、反馈状态表达任务 |
## ADR-007右侧标题靠右与左侧形成对称
| 项目 | 内容 |
|---|---|
| 决策 | `加工设备状态``辅助设备状态` 标题右对齐 |
| 原因 | 用户明确要求右侧标题应靠右,与左侧 `线体联动监控` 对称 |
| 影响 | 后续右侧新增模块标题也应默认右对齐 |
## ADR-008物料库位格子使用固定高度不使用自适应正方形
| 项目 | 内容 |
|---|---|
| 决策 | 库位格使用固定行高,确保 A/B 3x3 和 C 2x3 完整显示 |
| 原因 | 自适应正方形在底部区域高度有限时会隐藏最下面一行 |
| 影响 | 库位格更扁平,但信息完整性优先于正方形比例 |
## ADR-009加工设备状态行使用固定列宽和状态列右对齐
| 项目 | 内容 |
|---|---|
| 决策 | 加工设备行采用固定列:设备名、目标、实际、状态标签组、综合状态 |
| 原因 | 用户反馈最右侧元素被挤到一边;固定列可避免状态列错位或溢出 |
| 影响 | 标签数量较多时在中间标签区换行,最右综合状态保持对齐 |
## ADR-010工作文档进入 `work/working1`
| 项目 | 内容 |
|---|---|
| 决策 | 将功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录保存到 `work/working1` |
| 原因 | 用户要求建立连续推进文档;该目录与设计说明同级,便于管理 |
| 影响 | 后续每轮开发应同步更新 `03-推进台账.md``04-任务矩阵.md``05-验收证据.md``06-决策记录.md` |
## 后续新增决策模板
```markdown
## ADR-011决策标题
| 项目 | 内容 |
|---|---|
| 决策 | 这里写最终选择 |
| 原因 | 这里写为什么这样做 |
| 影响 | 这里写后续开发需要遵守什么 |
```

View File

@@ -0,0 +1,750 @@
线体状态
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 软件状态 PCS_RUN PCS运行 DB47.DBX169.2 0 Boolean RW
2 线体状态 ALLOW_TASK 允许接收任务 DB47.DBX168.0 0 Boolean RW 发任务前提
4 线体状态 AUTO_ACTIVE 自动模式 DB47.DBX168.1 0 Boolean RW 发任务前提
5 线体状态 EMG 急停激活 DB47.DBX168.2 0 Boolean RW
短地轨 1 软件状态 PCS_RUN PCS运行 DB28.DBX10.0 0 Boolean RW
2 线体状态 ALLOW_TASK 允许接收任务 DB28.DBX0.4 0 Boolean RW 发任务前提
4 线体状态 AUTO_ACTIVE 自动模式 DB28.DBX0.1 0 Boolean RW 发任务前提
5 线体状态 EMG 急停激活 DB28.DBX0.2 0 Boolean RW
关节 1 软件状态 PCS_RUN PCS运行 DB47.DBX204.0 0 Boolean RW
2 线体状态 ALLOW_TASK 允许接收任务 DB47.DBX200.3 0 Boolean RW 发任务前提
4 线体状态 AUTO_ACTIVE 自动模式 DB47.DBX200.1 0 Boolean RW 发任务前提
5 线体状态 EMG 急停激活 DB47.DBX200.2 0 Boolean RW
任务数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 机器人任务 TASK_NO 任务编号 DB47.DBW0 0 Short RW
2 机器人任务 START_POS 起始位置 DB47.DBW2 0 Short RW 给出机器人位置的伺服信号
3 机器人任务 END_POS 结束位置 DB47.DBW6 0 Short RW
4 机器人任务 RECIPE_CODE 配方号 DB47.STRING18.128 NULL String RW
5 机器人任务 PALLET_TYPE 托盘类型 DB47.DBW14 0 Short RW
27 机器人任务 FLAG 启动 DB47.DBX148.0 0 Boolean RW
28 机器人反馈 READY 准备好 DB47.DBX150.0 0 Boolean RW
29 机器人反馈 BUSY 忙碌 DB47.DBX150.1 0 Boolean RW
30 机器人反馈 ERROR 错误 DB47.DBX150.2 0 Boolean RW
31 机器人反馈 COMPLETE 完成 DB47.DBX150.3 0 Boolean RW
短地轨 1 机器人任务 TASK_NO 任务编号 DB47.DBW0 0 Short RW
2 机器人任务 START_POS 起始位置 DB47.DBW2 0 Short RW
3 机器人任务 END_POS 结束位置 DB47.DBW6 0 Short RW
4 机器人任务 RECIPE_CODE 配方号 DB47.STRING24.128 NULL String RW
5 机器人任务 PALLET_TYPE 托盘类型 DB47.DBW18 0 Short RW
6 机器人任务 PART_KIND 零件类型 DB47.DBW20 0 Short RW 1长轴 2短轴
23 机器人任务 FLAG 启动 DB47.DBX154.0 0 Boolean RW
24 机器人反馈 READY 准备好 DB47.DBX156.0 0 Boolean RW
25 机器人反馈 BUSY 忙碌 DB47.DBX156.1 0 Boolean RW
26 机器人反馈 ERROR 错误 DB47.DBX156.2 0 Boolean RW
27 机器人反馈 COMPLETE 完成 DB47.DBX156.3 0 Boolean RW
关节 1 机器人任务 TASK_NO 任务编号 DB47.DBW0 0 Short RW
2 机器人任务 START_POS 起始位置 DB47.DBW2 0 Short RW
3 机器人任务 END_POS 结束位置 DB47.DBW4 0 Short RW
4 机器人任务 RECIPE_CODE 配方号 DB47.STRING6.128 NULL String RW
5 机器人任务 PALLET_TYPE 托盘类型 DB47.DBW136 0 Short RW
6 机器人任务 PART_KIND 零件类型 DB47.DBW138 0 Short RW 1长轴 2短轴
19 机器人任务 FLAG 启动 DB47.DBX180.0 0 Boolean RW
20 机器人反馈 READY 准备好 DB47.DBX184.0 0 Boolean RW
21 机器人反馈 BUSY 忙碌 DB47.DBX184.1 0 Boolean RW
22 机器人反馈 ERROR 错误 DB47.DBX184.2 0 Boolean RW
23 机器人反馈 COMPLETE 完成 DB47.DBX184.3 0 Boolean RW
预调台数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 预调台请求 S1_INI_REQUEST 预调台1请求原位 DB74.DBX0.0 0 Boolean RW 预调台12分别对应哪个
2 预调台请求 S1_END_REQUEST 预调台1请求终位 DB74.DBX0.1 0 Boolean RW
3 预调台请求 S1_PALLET_CODE 预调台1托盘编号 DB74.STRING2.32 NULL String RW
4 预调台请求 S2_INI_REQUEST 预调台2请求原位 DB74.DBX132.0 0 Boolean RW
5 预调台请求 S2_END_REQUEST 预调台2请求终位 DB74.DBX132.1 0 Boolean RW
6 预调台请求 S2_PALLET_CODE 预调台2托盘编号 DB74.STRING128.32 NULL String RW
7 预调台反馈 S1_INI_COMPLETE 预调台1原位到位 DB74.DBX272.0 0 Boolean RW 线体外
8 预调台反馈 S1_END_COMPLETE 预调台1终位到位 DB74.DBX272.1 0 Boolean RW 线体内
9 预调台反馈 S1_PALLET 预调台1有托盘 DB74.DBX273.3 0 Boolean RW
10 预调台反馈 S1_UPLOAD 预调台1允许放 DB74.DBX272.2 0 Boolean RW
11 预调台反馈 S1_UNLOAD 预调台1允许取 DB74.DBX272.3 0 Boolean RW
12 预调台反馈 S2_INI_COMPLETE 预调台2原位到位 DB74.DBX272.4 0 Boolean RW 线体外
13 预调台反馈 S2_END_COMPLETE 预调台2终位到位 DB74.DBX272.5 0 Boolean RW 线体内
14 预调台反馈 S2_PALLET 预调台2有托盘 DB74.DBX273.4 0 Boolean RW
15 预调台反馈 S2_UPLOAD 预调台2允许放 DB74.DBX272.6 0 Boolean RW
16 预调台反馈 S2_UNLOAD 预调台2允许取 DB74.DBX272.7 0 Boolean RW
17 预调台反馈 PHOTO_OK 相机结果OK DB74.DBX273.0 0 Boolean RW
18 预调台反馈 PHOTO_NG 相机结果NG DB74.DBX273.1 0 Boolean RW
19 预调台反馈 AIR_PRESSURE 预调台气压正常 DB74.DBX273.2 0 Boolean RW
短地轨 1 预调台请求 S1_INI_REQUEST 预调台1请求原位 预留 0 Boolean RW 预调台12分别对应哪个
2 预调台请求 S1_END_REQUEST 预调台1请求终位 预留 0 Boolean RW
3 预调台请求 S1_PALLET_CODE 预调台1托盘编号 预留 NULL String RW
4 预调台请求 S2_INI_REQUEST 预调台2请求原位 预留 0 Boolean RW
5 预调台请求 S2_END_REQUEST 预调台2请求终位 预留 0 Boolean RW
6 预调台请求 S2_PALLET_CODE 预调台2托盘编号 预留 NULL String RW
7 预调台反馈 S1_INI_COMPLETE 预调台1原位到位 DB12.DBX0.4 0 Boolean RW
8 预调台反馈 S1_END_COMPLETE 预调台1终位到位 DB12.DBX0.5 0 Boolean RW
9 预调台反馈 S1_UPLOAD 预调台1允许放 DB12.DBX0.6 0 Boolean RW 短地轨没有预调台12有托盘信号
10 预调台反馈 S1_UNLOAD 预调台1允许取 DB12.DBX0.7 0 Boolean RW
11 预调台反馈 S2_INI_COMPLETE 预调台2原位到位 DB12.DBX1.0 0 Boolean RW
12 预调台反馈 S2_END_COMPLETE 预调台2终位到位 DB12.DBX1.1 0 Boolean RW
13 预调台反馈 S2_UPLOAD 预调台2允许放 DB12.DBX1.2 0 Boolean RW
14 预调台反馈 S2_UNLOAD 预调台2允许取 DB12.DBX1.3 0 Boolean RW
15 预调台反馈 PHOTO_OK 相机结果OK DB12.DBX1.4 0 Boolean RW
16 预调台反馈 PHOTO_NG 相机结果NG DB12.DBX1.5 0 Boolean RW
17 预调台反馈 AIR_PRESSURE 预调台气压正常 DB12.DBX1.6 0 Boolean RW
关节 1 预调台请求 S1_INI_REQUEST 预调台1请求原位 DB10.DBX0.0 0 Boolean RW 预调台12分别对应哪个
2 预调台请求 S1_END_REQUEST 预调台1请求终位 DB10.DBX0.1 0 Boolean RW
3 预调台请求 S1_PALLET_CODE 预调台1托盘编号 DB10.STRING2.32 NULL String RW
4 预调台请求 S2_INI_REQUEST 预调台2请求原位 DB10.DBX0.3 0 Boolean RW
5 预调台请求 S2_END_REQUEST 预调台2请求终位 DB10.DBX0.4 0 Boolean RW
6 预调台请求 S2_PALLET_CODE 预调台2托盘编号 DB10.STRING36.32 NULL String RW
7 预调台反馈 S1_INI_COMPLETE 预调台1原位到位 DB10.DBX72.0 0 Boolean RW
8 预调台反馈 S1_END_COMPLETE 预调台1终位到位 DB10.DBX72.1 0 Boolean RW
9 预调台反馈 S1_UPLOAD 预调台1允许放 DB10.DBX72.4 0 Boolean RW 关节没有预调台12有托盘信号
10 预调台反馈 S1_UNLOAD 预调台1允许取 DB10.DBX72.5 0 Boolean RW
11 预调台反馈 S2_INI_COMPLETE 预调台2原位到位 DB10.DBX72.2 0 Boolean RW
12 预调台反馈 S2_END_COMPLETE 预调台2终位到位 DB10.DBX72.3 0 Boolean RW
13 预调台反馈 S2_UPLOAD 预调台2允许放 DB10.DBX72.6 0 Boolean RW
14 预调台反馈 S2_UNLOAD 预调台2允许取 DB10.DBX72.7 0 Boolean RW
15 预调台反馈 PHOTO_OK 相机结果OK DB10.DBX73.4 0 Boolean RW
16 预调台反馈 PHOTO_NG 相机结果NG DB10.DBX73.5 0 Boolean RW
17 预调台反馈 AIR_PRESSURE 预调台气压正常 DB10.DBX73.0 0 Boolean RW
AGV数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 PCS请求 UP_ENTER_REQUEST 上料AGV请求进入 DB83.DBX0.0 0 Boolean RW
2 PLC反馈 UP_ENTER_ALLOW 允许上料AGV进入 DB83.DBX6.0 0 Boolean RW
3 PCS反馈 UP_ENTER_ARRIVAL 上料AGV接驳到位 DB83.DBX0.1 0 Boolean RW
4 PLC反馈 UP_ENTER_COMPLETE 上料AGV接驳完成 DB83.DBX6.1 0 Boolean RW AGV收到信号后开始顶升托盘
5 PCS请求 UP_LEAVE_REQUEST 上料AGV请求离开 DB83.DBX0.2 0 Boolean RW PLC收到信号后夹紧托盘
6 PLC反馈 UP_LEAVE_ALLOW 允许上料AGV离开 DB83.DBX6.2 0 Boolean RW
7 PCS反馈 UP_LEAVE_ARRIVAL 上料AGV离开到位 DB83.DBX0.3 0 Boolean RW
8 PLC反馈 UP_LEAVE_COMPLETE 上料AGV离开完成 DB83.DBX6.3 0 Boolean RW
9 PCS请求 UPLOAD_REQUEST 上料AGV请求上料 DB83.DBX0.4 0 Boolean RW
10 PLC反馈 UPLOAD_ALLOW 允许上料AGV上料 DB83.DBX6.4 0 Boolean RW
11 PCS请求 UNLOAD_REQUEST 取料AGV请求取料 DB83.DBX0.5 0 Boolean RW
12 PLC反馈 UNLOAD_ALLOW 允许取料AGV取料 DB83.DBX6.5 0 Boolean RW
13 PCS请求 UN_ENTER_REQUEST 取料AGV请求进入 DB83.DBX0.6 0 Boolean RW
14 PLC反馈 UN_ENTER_ALLOW 允许取料AGV进入 DB83.DBX6.6 0 Boolean RW
15 PCS反馈 UN_ENTER_ARRIVAL 取料AGV接驳到位 DB83.DBX0.7 0 Boolean RW
16 PLC反馈 UN_ENTER_COMPLETE 取料AGV接驳完成 DB83.DBX6.7 0 Boolean RW
17 PCS请求 UN_LEAVE_REQUEST 取料AGV请求离开 DB83.DBX1.0 0 Boolean RW
18 PLC反馈 UN_LEAVE_ALLOW 允许取料AGV离开 DB83.DBX7.0 0 Boolean RW
19 PCS反馈 UN_LEAVE_ARRIVAL 取料AGV离开到位 DB83.DBX1.1 0 Boolean RW
20 PLC反馈 UN_LEAVE_COMPLETE 取料AGV离开完成 DB83.DBX7.1 0 Boolean RW
21 PLC反馈 AGV_YES 接驳站有托盘 DB50.DBX110.0 0 Boolean RW
22 PLC反馈 AGV_NO 接驳站无托盘 DB50.DBX110.1 0 Boolean RW
23 PLC反馈 AGV_ERROR 接驳站错误 DB50.DBX110.2 0 Boolean RW
短地轨 1 PCS请求 UP_ENTER_REQUEST 上料AGV请求进入 DB13.DBX0.0 0 Boolean RW 常给
2 PLC反馈 UP_ENTER_ALLOW 允许上料AGV进入 DB13.DBX0.1 0 Boolean RW
3 PCS反馈 UP_ENTER_ARRIVAL 上料AGV接驳到位 DB13.DBX0.2 0 Boolean RW
4 PLC反馈 UP_ENTER_COMPLETE 上料AGV接驳完成 DB13.DBX0.3 0 Boolean RW
5 PCS请求 UP_LEAVE_REQUEST 上料AGV请求离开 DB13.DBX0.4 0 Boolean RW
6 PLC反馈 UP_LEAVE_ALLOW 允许上料AGV离开 DB13.DBX0.5 0 Boolean RW
7 PCS反馈 UP_LEAVE_ARRIVAL 上料AGV离开到位 DB13.DBX0.6 0 Boolean RW
8 PLC反馈 UP_LEAVE_COMPLETE 上料AGV离开完成 DB13.DBX0.7 0 Boolean RW 加光栅(常给)
9 PCS请求 UPLOAD_REQUEST 上料AGV请求上料 DB13.DBX1.0 0 Boolean RW (人工调度发,不是自动的任务)
10 PLC反馈 UPLOAD_ALLOW 允许上料AGV上料 DB13.DBX1.1 0 Boolean RW (人工调度发,不是自动的任务)
11 PCS请求 UNLOAD_REQUEST 取料AGV请求取料 DB13.DBX1.2 0 Boolean RW
12 PLC反馈 UNLOAD_ALLOW 允许取料AGV取料 DB13.DBX1.3 0 Boolean RW
13 PCS请求 UN_ENTER_REQUEST 取料AGV请求进入 DB13.DBX1.4 0 Boolean RW
14 PLC反馈 UN_ENTER_ALLOW 允许取料AGV进入 DB13.DBX1.5 0 Boolean RW
15 PCS反馈 UN_ENTER_ARRIVAL 取料AGV接驳到位 DB13.DBX1.6 0 Boolean RW
16 PLC反馈 UN_ENTER_COMPLETE 取料AGV接驳完成 DB13.DBX1.7 0 Boolean RW
17 PCS请求 UN_LEAVE_REQUEST 取料AGV请求离开 DB13.DBX2.0 0 Boolean RW
18 PLC反馈 UN_LEAVE_ALLOW 允许取料AGV离开 DB13.DBX2.1 0 Boolean RW
19 PCS反馈 UN_LEAVE_ARRIVAL 取料AGV离开到位 DB13.DBX2.2 0 Boolean RW
20 PLC反馈 UN_LEAVE_COMPLETE 取料AGV离开完成 DB13.DBX2.3 0 Boolean RW 加光栅(常给)
21 PLC反馈 AGV_YES 接驳站有托盘 0 Boolean RW
22 PLC反馈 AGV_NO 接驳站无托盘 0 Boolean RW
23 PLC反馈 AGV_ERROR 接驳站错误 0 Boolean RW
关节 1 PCS请求 UP_ENTER_REQUEST 上料AGV请求进入 DB16.DBX0.0 0 Boolean RW
2 PLC反馈 UP_ENTER_ALLOW 允许上料AGV进入 DB16.DBX2.0 0 Boolean RW
3 PCS反馈 UP_ENTER_ARRIVAL 上料AGV接驳到位 DB16.DBX0.1 0 Boolean RW
4 PLC反馈 UP_ENTER_COMPLETE 上料AGV接驳完成 DB16.DBX2.1 0 Boolean RW
5 PCS请求 UP_LEAVE_REQUEST 上料AGV请求离开 DB16.DBX0.2 0 Boolean RW
6 PLC反馈 UP_LEAVE_ALLOW 允许上料AGV离开 DB16.DBX2.2 0 Boolean RW
7 PCS反馈 UP_LEAVE_ARRIVAL 上料AGV离开到位 DB16.DBX0.3 0 Boolean RW
8 PLC反馈 UP_LEAVE_COMPLETE 上料AGV离开完成 DB16.DBX2.3 0 Boolean RW
9 PCS请求 UPLOAD_REQUEST 上料AGV请求上料 DB16.DBX0.4 0 Boolean RW
10 PLC反馈 UPLOAD_ALLOW 允许上料AGV上料 DB16.DBX2.4 0 Boolean RW
11 PCS请求 UNLOAD_REQUEST 取料AGV请求取料 DB16.DBX0.5 0 Boolean RW
12 PLC反馈 UNLOAD_ALLOW 允许取料AGV取料 DB16.DBX2.5 0 Boolean RW
13 PCS请求 UN_ENTER_REQUEST 取料AGV请求进入 DB16.DBX0.6 0 Boolean RW
14 PLC反馈 UN_ENTER_ALLOW 允许取料AGV进入 DB16.DBX2.6 0 Boolean RW
15 PCS反馈 UN_ENTER_ARRIVAL 取料AGV接驳到位 DB16.DBX0.7 0 Boolean RW
16 PLC反馈 UN_ENTER_COMPLETE 取料AGV接驳完成 DB16.DBX2.7 0 Boolean RW
17 PCS请求 UN_LEAVE_REQUEST 取料AGV请求离开 DB16.DBX1.0 0 Boolean RW
18 PLC反馈 UN_LEAVE_ALLOW 允许取料AGV离开 DB16.DBX3.0 0 Boolean RW
19 PCS反馈 UN_LEAVE_ARRIVAL 取料AGV离开到位 DB16.DBX1.1 0 Boolean RW
20 PLC反馈 UN_LEAVE_COMPLETE 取料AGV离开完成 DB16.DBX3.1 0 Boolean RW
21 PLC反馈 AGV_YES 接驳站有托盘 0 Boolean RW
22 PLC反馈 AGV_NO 接驳站无托盘 0 Boolean RW
23 PLC反馈 AGV_ERROR 接驳站错误 0 Boolean RW
分拣台数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 分拣台 S1_YES 分拣台1有托盘 DB50.DBX113.0 0 Boolean RW 分拣台123分别对应哪个
2 分拣台 S1_NO 分拣台1无托盘 DB50.DBX113.1 0 Boolean RW
3 分拣台 S1_ERROR 分拣台1错误 DB50.DBX113.2 0 Boolean RW
4 分拣台 S2_YES 分拣台2有托盘 DB50.DBX114.0 0 Boolean RW 托盘是空托盘还是有料托盘,有信号吗
5 分拣台 S2_NO 分拣台2无托盘 DB50.DBX114.1 0 Boolean RW
6 分拣台 S2_ERROR 分拣台2错误 DB50.DBX114.2 0 Boolean RW
7 分拣台 S3_YES 分拣台3有托盘 DB50.DBX115.0 0 Boolean RW
8 分拣台 S3_NO 分拣台3无托盘 DB50.DBX115.1 0 Boolean RW
9 分拣台 S3_ERROR 分拣台3错误 DB50.DBX115.2 0 Boolean RW
短地轨 1 分拣台 S1_YES 分拣台1有托盘 DB50.DBX113.0 0 Boolean RW
2 分拣台 S1_NO 分拣台1无托盘 DB50.DBX113.1 0 Boolean RW
3 分拣台 S1_ERROR 分拣台1错误 DB50.DBX113.2 0 Boolean RW
4 分拣台 S2_YES 分拣台2有托盘 DB50.DBX114.0 0 Boolean RW
5 分拣台 S2_NO 分拣台2无托盘 DB50.DBX114.1 0 Boolean RW
6 分拣台 S2_ERROR 分拣台2错误 DB50.DBX114.2 0 Boolean RW
关节 1 分拣台 S1_YES 分拣台1有托盘 DB17.DBX2.2 0 Boolean RW
2 分拣台 S1_NO 分拣台1无托盘 DB17.DBX2.3 0 Boolean RW
3 分拣台 S1_ERROR 分拣台1错误 DB17.DBX2.4 0 Boolean RW
4 分拣台 S2_YES 分拣台2有托盘 DB17.DBX2.5 0 Boolean RW
5 分拣台 S2_NO 分拣台2无托盘 DB17.DBX2.6 0 Boolean RW
6 分拣台 S2_ERROR 分拣台2错误 DB17.DBX2.7 0 Boolean RW
物料库数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 物料库 S1_YES 库位1有件 DB50.DBX101.0 0 Boolean RW 库位1-9分别对应哪个位置
2 物料库 S2_YES 库位2有件 DB50.DBX102.0 0 Boolean RW
3 物料库 S3_YES 库位3有件 DB50.DBX103.0 0 Boolean RW
4 物料库 S4_YES 库位4有件 DB50.DBX104.0 0 Boolean RW
5 物料库 S5_YES 库位5有件 DB50.DBX105.0 0 Boolean RW
6 物料库 S6_YES 库位6有件 DB50.DBX106.0 0 Boolean RW
7 物料库 S7_YES 库位7有件 DB50.DBX107.0 0 Boolean RW
8 物料库 S8_YES 库位8有件 DB50.DBX108.0 0 Boolean RW
9 物料库 S9_YES 库位9有件 DB50.DBX109.0 0 Boolean RW
短地轨 1 物料库 S1_YES 库位1有件 DB50.DBX101.0 0 Boolean RW
2 物料库 S2_YES 库位2有件 DB50.DBX102.0 0 Boolean RW
3 物料库 S3_YES 库位3有件 DB50.DBX103.0 0 Boolean RW
4 物料库 S4_YES 库位4有件 DB50.DBX104.0 0 Boolean RW
5 物料库 S5_YES 库位5有件 DB50.DBX105.0 0 Boolean RW
6 物料库 S6_YES 库位6有件 DB50.DBX106.0 0 Boolean RW
7 物料库 S7_YES 库位7有件 DB50.DBX107.0 0 Boolean RW
8 物料库 S8_YES 库位8有件 DB50.DBX108.0 0 Boolean RW
9 物料库 S9_YES 库位9有件 DB50.DBX109.0 0 Boolean RW
关节 1 物料库 S1_YES 库位1有件 DB17.DBX0.0 0 Boolean RW
2 物料库 S2_YES 库位2有件 DB17.DBX0.3 0 Boolean RW
3 物料库 S3_YES 库位3有件 DB17.DBX0.6 0 Boolean RW
4 物料库 S4_YES 库位4有件 DB17.DBX1.1 0 Boolean RW
5 物料库 S5_YES 库位5有件 DB17.DBX1.4 0 Boolean RW
6 物料库 S6_YES 库位6有件 DB17.DBX1.7 0 Boolean RW
设备数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨
2 F500 A_PROG_NO 实际程序号 DB57.DBW10 0 Short RW
11 F500 UPLOAD_COMPLETE 上料完成 DB57.DBX13.4 0 Boolean RW
12 F500 UNLOAD_COMPLETE 下料完成 DB57.DBX13.5 0 Boolean RW
13 F500 BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
18 F500 ALARM 报警 DB57.DBX13.1 0 Boolean RW
21 L2000LSY A_PROG_NO 实际程序号 DB57.DBW30 0 Short RW
30 L2000LSY UPLOAD_COMPLETE 上料完成 DB57.DBX33.4 0 Boolean RW
31 L2000LSY UNLOAD_COMPLETE 下料完成 DB57.DBX33.5 0 Boolean RW
32 L2000LSY BUSY 自动运行中 DB57.DBX32.4 0 Boolean RW
37 L2000LSY ALARM 报警 DB57.DBX33.1 0 Boolean RW
40 L2100SY A_PROG_NO 实际程序号 DB57.DBW50 0 Short RW
49 L2100SY UPLOAD_COMPLETE 上料完成 DB57.DBX53.4 0 Boolean RW
50 L2100SY UNLOAD_COMPLETE 下料完成 DB57.DBX53.5 0 Boolean RW
51 L2100SY BUSY 自动运行中 DB57.DBX52.4 0 Boolean RW
56 L2100SY ALARM 报警 DB57.DBX53.1 0 Boolean RW
1 打标机 NORMAL 开机中 0 Boolean RW 打标动作是什么样的
2 打标机 START 开始打标 DB84.DBX0.3 0 Boolean RW 打标机上有无零件信号
3 打标机 BUSY 打标中 0 Boolean RW
4 打标机 IDLE 待机中 DB84.DBX0.0 0 Boolean RW
短地轨
2 新日 A_PROG_NO 实际程序号 DB57.DBW10 0 Short RW
8 新日 UPLOAD_READY 上料就绪 DB57.DBX12.1 0 Boolean RW 上料请求
9 新日 UNLOAD_READY 下料就绪 DB57.DBX12.2 0 Boolean RW 下料请求
10 新日 BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
15 新日 ALARM 报警 DB57.DBX13.1 0 Boolean RW
18 MAZAK A_PROG_NO 实际程序号 不需要 0 Short RW
24 MAZAK UPLOAD_READY 上料就绪 DB57.DBX34.1 0 Boolean RW
25 MAZAK UNLOAD_READY 下料就绪 DB57.DBX34.2 0 Boolean RW
26 MAZAK BUSY 自动运行中 DB57.DBX34.4 0 Boolean RW
31 MAZAK ALARM 报警 DB57.DBX35.1 0 Boolean RW
1 打标机 NORMAL 开机中 DB14.DBX4.0 0 Boolean RW
2 打标机 START 开始打标 DB14.DBX4.1 0 Boolean RW 1秒脉冲
3 打标机 BUSY 打标中 DB14.DBX4.2 0 Boolean RW 打标完成后一直为1
4 打标机 IDLE 待机中 DB14.DBX4.3 0 Boolean RW 开机后一直处于待机中
关节
2 YKD5132H A_PROG_NO 实际程序号 0 Short RW
7 YKD5132H UPLOAD_READY 上料就绪 DB57.DBX12.1 0 Boolean RW
8 YKD5132H UNLOAD_READY 下料就绪 DB57.DBX12.2 0 Boolean RW
9 YKD5132H BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
14 YKD5132H ALARM 报警 DB57.DBX13.1 0 Boolean RW
1 打标机 NORMAL 开机中 DB19.DBX0.0 0 Boolean RW
2 打标机 START 开始打标 DB19.DBX0.1 0 Boolean RW
3 打标机 BUSY 打标中 DB19.DBX0.2 0 Boolean RW
4 打标机 IDLE 待机中 DB19.DBX0.3 0 Boolean RW
4 清洗机 BUSY 运行中 DB25.DBX2.3 0 Boolean RW
5 清洗机 ERROR 错误 DB25.DBX2.4 0 Boolean RW
6 清洗机 UPLOAD_READY 上料就绪 DB25.DBX2.5 0 Boolean RW
7 清洗机 UNLOAD_READY 下料就绪 DB25.DBX2.6 0 Boolean RW
4 测量仪 BUSY 运行中 DB19.DBX2.3 0 Boolean RW
5 测量仪 ERROR 错误 DB19.DBX2.4 0 Boolean RW
6 测量仪 UPLOAD_READY 上料就绪 DB19.DBX6.3 0 Boolean RW
7 测量仪 UNLOAD_READY 下料就绪 DB19.DBX6.4 0 Boolean RW
机床数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 F500 D_PROG_NO 目标程序号 DB57.DBW0 0 Short RW
2 F500 A_PROG_NO 实际程序号 DB57.DBW10 0 Short RW
3 F500 PROG_SELECT 程序选择 DB57.DBX2.0 0 Boolean RW 1秒脉冲
4 F500 PROG_CYC_START 程序启动 DB57.DBX2.1 0 Boolean RW 1秒脉冲
5 F500 AUTO_ONLINE 自动联线 DB57.DBX2.2 0 Boolean RW
6 F500 FIRST 首件 DB57.DBX2.3 0 Boolean RW
7 F500 LAST 排空 DB57.DBX2.4 0 Boolean RW
8 F500 PROG_SELECT_READY 程序选择就绪 DB57.DBX12.0 0 Boolean RW "机床内各轴伺服没有
内部需要动作吗"
9 F500 UPLOAD_READY 上料就绪 DB57.DBX12.1 0 Boolean RW
10 F500 UNLOAD_READY 下料就绪 DB57.DBX12.2 0 Boolean RW
11 F500 UPLOAD_COMPLETE 上料完成 DB57.DBX13.4 0 Boolean RW
12 F500 UNLOAD_COMPLETE 下料完成 DB57.DBX13.5 0 Boolean RW
13 F500 BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
14 F500 COMPLETE 加工完成 DB57.DBX12.5 0 Boolean RW
15 F500 DOOR_OPEN 门开 DB57.DBX12.6 0 Boolean RW
16 F500 DOOR_CLOSE 门关 DB57.DBX12.7 0 Boolean RW
17 F500 EMG 急停 DB57.DBX13.0 0 Boolean RW
18 F500 ALARM 报警 DB57.DBX13.1 0 Boolean RW
19 F500 NORMAL 通讯正常 DB57.DBX13.2 0 Boolean RW
20 L2000LSY D_PROG_NO 目标程序号 DB57.DBW20 0 Short RW
21 L2000LSY A_PROG_NO 实际程序号 DB57.DBW30 0 Short RW
22 L2000LSY PROG_SELECT 程序选择 DB57.DBX22.0 0 Boolean RW 1秒脉冲
23 L2000LSY PROG_CYC_START 程序启动 DB57.DBX22.1 0 Boolean RW 1秒脉冲
24 L2000LSY AUTO_ONLINE 自动联线 DB57.DBX22.2 0 Boolean RW
25 L2000LSY FIRST 首件 DB57.DBX22.3 0 Boolean RW
26 L2000LSY LAST 排空 DB57.DBX22.4 0 Boolean RW
27 L2000LSY PROG_SELECT_READY 程序选择就绪 DB57.DBX32.0 0 Boolean RW
28 L2000LSY UPLOAD_READY 上料就绪 DB57.DBX32.1 0 Boolean RW
29 L2000LSY UNLOAD_READY 下料就绪 DB57.DBX32.2 0 Boolean RW
30 L2000LSY UPLOAD_COMPLETE 上料完成 DB57.DBX33.4 0 Boolean RW
31 L2000LSY UNLOAD_COMPLETE 下料完成 DB57.DBX33.5 0 Boolean RW
32 L2000LSY BUSY 自动运行中 DB57.DBX32.4 0 Boolean RW
33 L2000LSY COMPLETE 加工完成 DB57.DBX32.5 0 Boolean RW
34 L2000LSY DOOR_OPEN 门开 DB57.DBX32.6 0 Boolean RW
35 L2000LSY DOOR_CLOSE 门关 DB57.DBX32.7 0 Boolean RW
36 L2000LSY EMG 急停 DB57.DBX33.0 0 Boolean RW
37 L2000LSY ALARM 报警 DB57.DBX33.1 0 Boolean RW
38 L2000LSY NORMAL 通讯正常 DB57.DBX33.2 0 Boolean RW
39 L2100SY D_PROG_NO 目标程序号 DB57.DBW40 0 Short RW
40 L2100SY A_PROG_NO 实际程序号 DB57.DBW50 0 Short RW
41 L2100SY PROG_SELECT 程序选择 DB57.DBX42.0 0 Boolean RW 1秒脉冲
42 L2100SY PROG_CYC_START 程序启动 DB57.DBX42.1 0 Boolean RW 1秒脉冲
43 L2100SY AUTO_ONLINE 自动联线 DB57.DBX42.2 0 Boolean RW
44 L2100SY FIRST 首件 DB57.DBX42.3 0 Boolean RW
45 L2100SY LAST 排空 DB57.DBX42.4 0 Boolean RW
46 L2100SY PROG_SELECT_READY 程序选择就绪 DB57.DBX52.0 0 Boolean RW
47 L2100SY UPLOAD_READY 上料就绪 DB57.DBX52.1 0 Boolean RW
48 L2100SY UNLOAD_READY 下料就绪 DB57.DBX52.2 0 Boolean RW
49 L2100SY UPLOAD_COMPLETE 上料完成 DB57.DBX53.4 0 Boolean RW
50 L2100SY UNLOAD_COMPLETE 下料完成 DB57.DBX53.5 0 Boolean RW
51 L2100SY BUSY 自动运行中 DB57.DBX52.4 0 Boolean RW
52 L2100SY COMPLETE 加工完成 DB57.DBX52.5 0 Boolean RW
53 L2100SY DOOR_OPEN 门开 DB57.DBX52.6 0 Boolean RW
54 L2100SY DOOR_CLOSE 门关 DB57.DBX52.7 0 Boolean RW
55 L2100SY EMG 急停 DB57.DBX53.0 0 Boolean RW
56 L2100SY ALARM 报警 DB57.DBX53.1 0 Boolean RW
57 L2100SY NORMAL 通讯正常 DB57.DBX53.2 0 Boolean RW
短地轨 1 新日 D_PROG_NO 目标程序号 DB57.DBW0 0 Short RW
2 新日 A_PROG_NO 实际程序号 DB57.DBW10 0 Short RW
3 新日 PROG_SELECT 程序选择 DB57.DBX2.0 0 Boolean RW 1秒脉冲
4 新日 PROG_CYC_START 程序启动 DB57.DBX2.1 0 Boolean RW 1秒脉冲
5 新日 AUTO_ONLINE 自动联线 DB57.DBX2.2 0 Boolean RW
6 新日 PROG_RESET 程序复位 DB57.DBX2.3 0 Boolean RW
7 新日 PROG_SELECT_READY 程序选择就绪 DB57.DBX12.0 0 Boolean RW 机床准备好
8 新日 UPLOAD_READY 上料就绪 DB57.DBX12.1 0 Boolean RW 上料请求
9 新日 UNLOAD_READY 下料就绪 DB57.DBX12.2 0 Boolean RW 下料请求
10 新日 BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
11 新日 COMPLETE 加工完成 无此信号 0 Boolean RW
12 新日 DOOR_OPEN 门开 DB57.DBX12.6 0 Boolean RW
13 新日 DOOR_CLOSE 门关 DB57.DBX12.7 0 Boolean RW
14 新日 EMG 急停 DB57.DBX13.0 0 Boolean RW
15 新日 ALARM 报警 DB57.DBX13.1 0 Boolean RW
16 新日 NORMAL 通讯正常 DB57.DBX13.2 0 Boolean RW 机床联机信号
17 MAZAK D_PROG_NO 目标程序号 不需要 0 Short RW
18 MAZAK A_PROG_NO 实际程序号 不需要 0 Short RW
19 MAZAK PROG_SELECT 程序选择 不需要 0 Boolean RW 1秒脉冲
20 MAZAK PROG_CYC_START 程序启动 DB57.DBX24.1 0 Boolean RW 1秒脉冲
21 MAZAK AUTO_ONLINE 自动联线 DB57.DBX24.2 0 Boolean RW
22 MAZAK PROG_RESET 程序复位 DB57.DBX24.3 0 Boolean RW
23 MAZAK PROG_SELECT_READY 程序选择就绪 DB57.DBX34.0 0 Boolean RW 可切换程序
24 MAZAK UPLOAD_READY 上料就绪 DB57.DBX34.1 0 Boolean RW
25 MAZAK UNLOAD_READY 下料就绪 DB57.DBX34.2 0 Boolean RW
26 MAZAK BUSY 自动运行中 DB57.DBX34.4 0 Boolean RW
27 MAZAK COMPLETE 加工完成 无此信号 0 Boolean RW 无
28 MAZAK DOOR_OPEN 门开 DB57.DBX34.6 0 Boolean RW
29 MAZAK DOOR_CLOSE 门关 DB57.DBX34.7 0 Boolean RW
30 MAZAK EMG 急停 DB57.DBX35.0 0 Boolean RW
31 MAZAK ALARM 报警 DB57.DBX35.1 0 Boolean RW
32 MAZAK NORMAL 通讯正常 DB57.DBX35.2 0 Boolean RW
33 MAZAK FIRST 首件上料 DB57.DBX35.4 0 Boolean RW
关节 1 YKD5132H D_PROG_NO 目标程序号 0 Short RW
2 YKD5132H A_PROG_NO 实际程序号 0 Short RW
3 YKD5132H PROG_SELECT 程序选择 0 Boolean RW 1秒脉冲
4 YKD5132H PROG_CYC_START 程序启动 DB57.DBX2.1 0 Boolean RW 1秒脉冲
5 YKD5132H AUTO_ONLINE 自动联线 DB57.DBX2.2 0 Boolean RW
6 YKD5132H PROG_SELECT_READY 程序选择就绪 0 Boolean RW
7 YKD5132H UPLOAD_READY 上料就绪 DB57.DBX12.1 0 Boolean RW
8 YKD5132H UNLOAD_READY 下料就绪 DB57.DBX12.2 0 Boolean RW
9 YKD5132H BUSY 自动运行中 DB57.DBX12.4 0 Boolean RW
10 YKD5132H COMPLETE 加工完成 0 Boolean RW
11 YKD5132H DOOR_OPEN 门开 DB57.DBX12.6 0 Boolean RW
12 YKD5132H DOOR_CLOSE 门关 DB57.DBX12.7 0 Boolean RW
13 YKD5132H EMG 急停 DB57.DBX13.0 0 Boolean RW
14 YKD5132H ALARM 报警 DB57.DBX13.1 0 Boolean RW
15 YKD5132H NORMAL 通讯正常 DB57.DBX13.2 0 Boolean RW
夹头数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 F500 CHUCK1_CODE 夹头1编号实时 DB64.DBW64 0 Short RW 横
2 F500 CHUCK2_CODE 夹头2编号实时 DB64.DBW66 0 Short RW 竖
3 F500 CHUCK1_D 目标夹头1 DB78.DBB222 0 Byte RW 主F500横
4 F500 CHUCK2_D 目标夹头2 DB78.DBB223 0 Byte RW 主F500竖
5 F500 CHUCK1_COMPLETE 夹头1更换完成 DB78.DBX214.0 0 Boolean RW
6 F500 CHUCK2_COMPLETE 夹头2更换完成 DB78.DBX214.1 0 Boolean RW
7 L2000LSY CHUCK1_CODE 夹头1编号实时 DB64.DBW68 0 Short RW 主
8 L2000LSY CHUCK2_CODE 夹头2编号实时 DB64.DBW70 0 Short RW 副
9 L2000LSY CHUCK1_D 目标夹头1 RW 准备放进机床里的夹头编号
10 L2000LSY CHUCK2_D 目标夹头2 RW 准备放进机床里的夹头编号
11 L2000LSY CHUCK1_COMPLETE 夹头1更换完成 DB78.DBX214.2 0 Boolean RW
12 L2000LSY CHUCK2_COMPLETE 夹头2更换完成 DB78.DBX214.3 0 Boolean RW
13 L2100SY CHUCK1_CODE 夹头1编号实时 DB64.DBW72 0 Short RW 主
14 L2100SY CHUCK2_CODE 夹头2编号实时 DB64.DBW74 0 Short RW 副
15 L2100SY CHUCK1_D 目标夹头1 RW 准备放进机床里的夹头编号
16 L2100SY CHUCK2_D 目标夹头2 RW 准备放进机床里的夹头编号
17 L2100SY CHUCK1_COMPLETE 夹头1更换完成 DB78.DBX214.4 0 Boolean RW
18 L2100SY CHUCK2_COMPLETE 夹头2更换完成 DB78.DBX214.5 0 Boolean RW
短地轨 1 MAZAK CHUCK_CODE 夹头编号(实时) DB14.DBW0 0 Short RW 机床里的夹头信号
2 MAZAK CHUCK_D 目标夹头 DB14.DBW14 0 Short RW 准备放进机床里的夹头编号
3 MAZAK CHUCK_COMPLETE 夹头更换完成 DB14.DBX2.0 0 Boolean RW 1秒脉冲
夹头库数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 夹头库 S1_YES 夹头位1有件 DB78.DBX101.0 0 Boolean RW 夹头编号对应哪个位置
2 夹头库 S1_NO 夹头位1无件 DB78.DBX101.1 0 Boolean RW
3 夹头库 S1_ERROR 夹头位1错误 DB78.DBX101.2 0 Boolean RW
4 夹头库 S2_YES 夹头位2有件 DB78.DBX102.0 0 Boolean RW
5 夹头库 S2_NO 夹头位2无件 DB78.DBX102.1 0 Boolean RW
6 夹头库 S2_ERROR 夹头位2错误 DB78.DBX102.2 0 Boolean RW
7 夹头库 S3_YES 夹头位3有件 DB78.DBX103.0 0 Boolean RW
8 夹头库 S3_NO 夹头位3无件 DB78.DBX103.1 0 Boolean RW
9 夹头库 S3_ERROR 夹头位3错误 DB78.DBX103.2 0 Boolean RW
10 夹头库 S4_YES 夹头位4有件 DB78.DBX104.0 0 Boolean RW
11 夹头库 S4_NO 夹头位4无件 DB78.DBX104.1 0 Boolean RW
12 夹头库 S4_ERROR 夹头位4错误 DB78.DBX104.2 0 Boolean RW
13 夹头库 S5_YES 夹头位5有件 DB78.DBX105.0 0 Boolean RW
14 夹头库 S5_NO 夹头位5无件 DB78.DBX105.1 0 Boolean RW
15 夹头库 S5_ERROR 夹头位5错误 DB78.DBX105.2 0 Boolean RW
16 夹头库 S6_YES 夹头位6有件 DB78.DBX106.0 0 Boolean RW
17 夹头库 S6_NO 夹头位6无件 DB78.DBX106.1 0 Boolean RW
18 夹头库 S6_ERROR 夹头位6错误 DB78.DBX106.2 0 Boolean RW
19 夹头库 S7_YES 夹头位7有件 DB78.DBX107.0 0 Boolean RW
20 夹头库 S7_NO 夹头位7无件 DB78.DBX107.1 0 Boolean RW
21 夹头库 S7_ERROR 夹头位7错误 DB78.DBX107.2 0 Boolean RW
22 夹头库 S8_YES 夹头位8有件 DB78.DBX108.0 0 Boolean RW
23 夹头库 S8_NO 夹头位8无件 DB78.DBX108.1 0 Boolean RW
24 夹头库 S8_ERROR 夹头位8错误 DB78.DBX108.2 0 Boolean RW
25 夹头库 S9_YES 夹头位9有件 DB78.DBX109.0 0 Boolean RW
26 夹头库 S9_NO 夹头位9无件 DB78.DBX109.1 0 Boolean RW
27 夹头库 S9_ERROR 夹头位9错误 DB78.DBX109.2 0 Boolean RW
28 夹头库 S10_YES 夹头位 10 有件 DB78.DBX110.0 0 Boolean RW
29 夹头库 S10_NO 夹头位 10 无件 DB78.DBX110.1 0 Boolean RW
30 夹头库 S10_ERROR 夹头位 10 错误 DB78.DBX110.2 0 Boolean RW
31 夹头库 S11_YES 夹头位 11 有件 DB78.DBX111.0 0 Boolean RW
32 夹头库 S11_NO 夹头位 11 无件 DB78.DBX111.1 0 Boolean RW
33 夹头库 S11_ERROR 夹头位 11 错误 DB78.DBX111.2 0 Boolean RW
34 夹头库 S12_YES 夹头位 12 有件 DB78.DBX112.0 0 Boolean RW
35 夹头库 S12_NO 夹头位 12 无件 DB78.DBX112.1 0 Boolean RW
36 夹头库 S12_ERROR 夹头位 12 错误 DB78.DBX112.2 0 Boolean RW
37 夹头库 S13_YES 夹头位 13 有件 DB78.DBX113.0 0 Boolean RW
38 夹头库 S13_NO 夹头位 13 无件 DB78.DBX113.1 0 Boolean RW
39 夹头库 S13_ERROR 夹头位 13 错误 DB78.DBX113.2 0 Boolean RW
40 夹头库 S14_YES 夹头位 14 有件 DB78.DBX114.0 0 Boolean RW
41 夹头库 S14_NO 夹头位 14 无件 DB78.DBX114.1 0 Boolean RW
42 夹头库 S14_ERROR 夹头位 14 错误 DB78.DBX114.2 0 Boolean RW
43 夹头库 S15_YES 夹头位 15 有件 DB78.DBX115.0 0 Boolean RW
44 夹头库 S15_NO 夹头位 15 无件 DB78.DBX115.1 0 Boolean RW
45 夹头库 S15_ERROR 夹头位 15 错误 DB78.DBX115.2 0 Boolean RW
46 夹头库 S16_YES 夹头位 16 有件 DB78.DBX116.0 0 Boolean RW
47 夹头库 S16_NO 夹头位 16 无件 DB78.DBX116.1 0 Boolean RW
48 夹头库 S16_ERROR 夹头位 16 错误 DB78.DBX116.2 0 Boolean RW
49 夹头库 S17_YES 夹头位 17 有件 DB78.DBX117.0 0 Boolean RW
50 夹头库 S17_NO 夹头位 17 无件 DB78.DBX117.1 0 Boolean RW
51 夹头库 S17_ERROR 夹头位 17 错误 DB78.DBX117.2 0 Boolean RW
52 夹头库 S18_YES 夹头位 18 有件 DB78.DBX118.0 0 Boolean RW
53 夹头库 S18_NO 夹头位 18 无件 DB78.DBX118.1 0 Boolean RW
54 夹头库 S18_ERROR 夹头位 18 错误 DB78.DBX118.2 0 Boolean RW
55 夹头库 S19_YES 夹头位 19 有件 DB78.DBX119.0 0 Boolean RW
56 夹头库 S19_NO 夹头位 19 无件 DB78.DBX119.1 0 Boolean RW
57 夹头库 S19_ERROR 夹头位 19 错误 DB78.DBX119.2 0 Boolean RW
58 夹头库 S20_YES 夹头位 20 有件 DB78.DBX120.0 0 Boolean RW
59 夹头库 S20_NO 夹头位 20 无件 DB78.DBX120.1 0 Boolean RW
60 夹头库 S20_ERROR 夹头位 20 错误 DB78.DBX120.2 0 Boolean RW
61 夹头库 S21_YES 夹头位 21 有件 DB78.DBX121.0 0 Boolean RW
62 夹头库 S21_NO 夹头位 21 无件 DB78.DBX121.1 0 Boolean RW
63 夹头库 S21_ERROR 夹头位 21 错误 DB78.DBX121.2 0 Boolean RW
64 夹头库 S22_YES 夹头位 22 有件 DB78.DBX122.0 0 Boolean RW
65 夹头库 S22_NO 夹头位 22 无件 DB78.DBX122.1 0 Boolean RW
66 夹头库 S22_ERROR 夹头位 22 错误 DB78.DBX122.2 0 Boolean RW
67 夹头库 S23_YES 夹头位 23 有件 DB78.DBX123.0 0 Boolean RW
68 夹头库 S23_NO 夹头位 23 无件 DB78.DBX123.1 0 Boolean RW
69 夹头库 S23_ERROR 夹头位 23 错误 DB78.DBX123.2 0 Boolean RW
70 夹头库 S24_YES 夹头位 24 有件 DB78.DBX124.0 0 Boolean RW
71 夹头库 S24_NO 夹头位 24 无件 DB78.DBX124.1 0 Boolean RW
72 夹头库 S24_ERROR 夹头位 24 错误 DB78.DBX124.2 0 Boolean RW
73 夹头库 S25_YES 夹头位 25 有件 DB78.DBX125.0 0 Boolean RW
74 夹头库 S25_NO 夹头位 25 无件 DB78.DBX125.1 0 Boolean RW
75 夹头库 S25_ERROR 夹头位 25 错误 DB78.DBX125.2 0 Boolean RW
76 夹头库 S26_YES 夹头位 26 有件 DB78.DBX126.0 0 Boolean RW
77 夹头库 S26_NO 夹头位 26 无件 DB78.DBX126.1 0 Boolean RW
78 夹头库 S26_ERROR 夹头位 26 错误 DB78.DBX126.2 0 Boolean RW
79 夹头库 S27_YES 夹头位 27 有件 DB78.DBX127.0 0 Boolean RW
80 夹头库 S27_NO 夹头位 27 无件 DB78.DBX127.1 0 Boolean RW
81 夹头库 S27_ERROR 夹头位 27 错误 DB78.DBX127.2 0 Boolean RW
82 夹头库 S28_YES 夹头位 28 有件 DB78.DBX128.0 0 Boolean RW
83 夹头库 S28_NO 夹头位 28 无件 DB78.DBX128.1 0 Boolean RW
84 夹头库 S28_ERROR 夹头位 28 错误 DB78.DBX128.2 0 Boolean RW
85 夹头库 S29_YES 夹头位 29 有件 DB78.DBX129.0 0 Boolean RW
86 夹头库 S29_NO 夹头位 29 无件 DB78.DBX129.1 0 Boolean RW
87 夹头库 S29_ERROR 夹头位 29 错误 DB78.DBX129.2 0 Boolean RW
88 夹头库 S30_YES 夹头位 30 有件 DB78.DBX130.0 0 Boolean RW
89 夹头库 S30_NO 夹头位 30 无件 DB78.DBX130.1 0 Boolean RW
90 夹头库 S30_ERROR 夹头位 30 错误 DB78.DBX130.2 0 Boolean RW
91 夹头库 S31_YES 夹头位 31 有件 DB78.DBX131.0 0 Boolean RW
92 夹头库 S31_NO 夹头位 31 无件 DB78.DBX131.1 0 Boolean RW
93 夹头库 S31_ERROR 夹头位 31 错误 DB78.DBX131.2 0 Boolean RW
94 夹头库 S32_YES 夹头位 32 有件 DB78.DBX132.0 0 Boolean RW
95 夹头库 S32_NO 夹头位 32 无件 DB78.DBX132.1 0 Boolean RW
96 夹头库 S32_ERROR 夹头位 32 错误 DB78.DBX132.2 0 Boolean RW
97 夹头库 S33_YES 夹头位 33 有件 DB78.DBX133.0 0 Boolean RW
98 夹头库 S33_NO 夹头位 33 无件 DB78.DBX133.1 0 Boolean RW
99 夹头库 S33_ERROR 夹头位 33 错误 DB78.DBX133.2 0 Boolean RW
100 夹头库 S34_YES 夹头位 34 有件 DB78.DBX134.0 0 Boolean RW
101 夹头库 S34_NO 夹头位 34 无件 DB78.DBX134.1 0 Boolean RW
102 夹头库 S34_ERROR 夹头位 34 错误 DB78.DBX134.2 0 Boolean RW
103 夹头库 S35_YES 夹头位 35 有件 DB78.DBX135.0 0 Boolean RW
104 夹头库 S35_NO 夹头位 35 无件 DB78.DBX135.1 0 Boolean RW
105 夹头库 S35_ERROR 夹头位 35 错误 DB78.DBX135.2 0 Boolean RW
106 夹头库 S36_YES 夹头位 36 有件 DB78.DBX136.0 0 Boolean RW
107 夹头库 S36_NO 夹头位 36 无件 DB78.DBX136.1 0 Boolean RW
108 夹头库 S36_ERROR 夹头位 36 错误 DB78.DBX136.2 0 Boolean RW
109 夹头库 S37_YES 夹头位 37 有件 DB78.DBX137.0 0 Boolean RW
110 夹头库 S37_NO 夹头位 37 无件 DB78.DBX137.1 0 Boolean RW
111 夹头库 S37_ERROR 夹头位 37 错误 DB78.DBX137.2 0 Boolean RW
112 夹头库 S38_YES 夹头位 38 有件 DB78.DBX138.0 0 Boolean RW
113 夹头库 S38_NO 夹头位 38 无件 DB78.DBX138.1 0 Boolean RW
114 夹头库 S38_ERROR 夹头位 38 错误 DB78.DBX138.2 0 Boolean RW
115 夹头库 S39_YES 夹头位 39 有件 DB78.DBX139.0 0 Boolean RW
116 夹头库 S39_NO 夹头位 39 无件 DB78.DBX139.1 0 Boolean RW
117 夹头库 S39_ERROR 夹头位 39 错误 DB78.DBX139.2 0 Boolean RW
118 夹头库 S40_YES 夹头位 40 有件 DB78.DBX140.0 0 Boolean RW
119 夹头库 S40_NO 夹头位 40 无件 DB78.DBX140.1 0 Boolean RW
120 夹头库 S40_ERROR 夹头位 40 错误 DB78.DBX140.2 0 Boolean RW
121 夹头库 S41_YES 夹头位 41 有件 DB78.DBX141.0 0 Boolean RW
122 夹头库 S41_NO 夹头位 41 无件 DB78.DBX141.1 0 Boolean RW
123 夹头库 S41_ERROR 夹头位 41 错误 DB78.DBX141.2 0 Boolean RW
124 夹头库 S42_YES 夹头位 42 有件 DB78.DBX142.0 0 Boolean RW
125 夹头库 S42_NO 夹头位 42 无件 DB78.DBX142.1 0 Boolean RW
126 夹头库 S42_ERROR 夹头位 42 错误 DB78.DBX142.2 0 Boolean RW
127 夹头库 S43_YES 夹头位 43 有件 DB78.DBX143.0 0 Boolean RW
128 夹头库 S43_NO 夹头位 43 无件 DB78.DBX143.1 0 Boolean RW
129 夹头库 S43_ERROR 夹头位 43 错误 DB78.DBX143.2 0 Boolean RW
130 夹头库 S44_YES 夹头位 44 有件 DB78.DBX144.0 0 Boolean RW
131 夹头库 S44_NO 夹头位 44 无件 DB78.DBX144.1 0 Boolean RW
132 夹头库 S44_ERROR 夹头位 44 错误 DB78.DBX144.2 0 Boolean RW
133 夹头库 S45_YES 夹头位 45 有件 DB78.DBX145.0 0 Boolean RW
134 夹头库 S45_NO 夹头位 45 无件 DB78.DBX145.1 0 Boolean RW
135 夹头库 S45_ERROR 夹头位 45 错误 DB78.DBX145.2 0 Boolean RW
136 夹头库 S46_YES 夹头位 46 有件 DB78.DBX146.0 0 Boolean RW
137 夹头库 S46_NO 夹头位 46 无件 DB78.DBX146.1 0 Boolean RW
138 夹头库 S46_ERROR 夹头位 46 错误 DB78.DBX146.2 0 Boolean RW
139 夹头库 S47_YES 夹头位 47 有件 DB78.DBX147.0 0 Boolean RW
140 夹头库 S47_NO 夹头位 47 无件 DB78.DBX147.1 0 Boolean RW
141 夹头库 S47_ERROR 夹头位 47 错误 DB78.DBX147.2 0 Boolean RW
142 夹头库 S48_YES 夹头位 48 有件 DB78.DBX148.0 0 Boolean RW
143 夹头库 S48_NO 夹头位 48 无件 DB78.DBX148.1 0 Boolean RW
144 夹头库 S48_ERROR 夹头位 48 错误 DB78.DBX148.2 0 Boolean RW
145 夹头库 S49_YES 夹头位 49 有件 DB78.DBX149.0 0 Boolean RW
146 夹头库 S49_NO 夹头位 49 无件 DB78.DBX149.1 0 Boolean RW
147 夹头库 S49_ERROR 夹头位 49 错误 DB78.DBX149.2 0 Boolean RW
148 夹头库 S50_YES 夹头位 50 有件 DB78.DBX150.0 0 Boolean RW
149 夹头库 S50_NO 夹头位 50 无件 DB78.DBX150.1 0 Boolean RW
150 夹头库 S50_ERROR 夹头位 50 错误 DB78.DBX150.2 0 Boolean RW
151 夹头库 S51_YES 夹头位 51 有件 DB78.DBX151.0 0 Boolean RW
152 夹头库 S51_NO 夹头位 51 无件 DB78.DBX151.1 0 Boolean RW
153 夹头库 S51_ERROR 夹头位 51 错误 DB78.DBX151.2 0 Boolean RW
154 夹头库 S52_YES 夹头位 52 有件 DB78.DBX152.0 0 Boolean RW
155 夹头库 S52_NO 夹头位 52 无件 DB78.DBX152.1 0 Boolean RW
156 夹头库 S52_ERROR 夹头位 52 错误 DB78.DBX152.2 0 Boolean RW
157 夹头库 S53_YES 夹头位 53 有件 DB78.DBX153.0 0 Boolean RW
158 夹头库 S53_NO 夹头位 53 无件 DB78.DBX153.1 0 Boolean RW
159 夹头库 S53_ERROR 夹头位 53 错误 DB78.DBX153.2 0 Boolean RW
160 夹头库 S54_YES 夹头位 54 有件 DB78.DBX154.0 0 Boolean RW
161 夹头库 S54_NO 夹头位 54 无件 DB78.DBX154.1 0 Boolean RW
162 夹头库 S54_ERROR 夹头位 54 错误 DB78.DBX154.2 0 Boolean RW
163 夹头库 S55_YES 夹头位 55 有件 DB78.DBX155.0 0 Boolean RW
164 夹头库 S55_NO 夹头位 55 无件 DB78.DBX155.1 0 Boolean RW
165 夹头库 S55_ERROR 夹头位 55 错误 DB78.DBX155.2 0 Boolean RW
166 夹头库 S56_YES 夹头位 56 有件 DB78.DBX156.0 0 Boolean RW
167 夹头库 S56_NO 夹头位 56 无件 DB78.DBX156.1 0 Boolean RW
168 夹头库 S56_ERROR 夹头位 56 错误 DB78.DBX156.2 0 Boolean RW
169 夹头库 S57_YES 夹头位 57 有件 DB78.DBX157.0 0 Boolean RW
170 夹头库 S57_NO 夹头位 57 无件 DB78.DBX157.1 0 Boolean RW
171 夹头库 S57_ERROR 夹头位 57 错误 DB78.DBX157.2 0 Boolean RW
172 夹头库 S58_YES 夹头位 58 有件 DB78.DBX158.0 0 Boolean RW
173 夹头库 S58_NO 夹头位 58 无件 DB78.DBX158.1 0 Boolean RW
174 夹头库 S58_ERROR 夹头位 58 错误 DB78.DBX158.2 0 Boolean RW
175 夹头库 S59_YES 夹头位 59 有件 DB78.DBX159.0 0 Boolean RW
176 夹头库 S59_NO 夹头位 59 无件 DB78.DBX159.1 0 Boolean RW
177 夹头库 S59_ERROR 夹头位 59 错误 DB78.DBX159.2 0 Boolean RW
178 夹头库 S60_YES 夹头位 60 有件 DB78.DBX160.0 0 Boolean RW
179 夹头库 S60_NO 夹头位 60 无件 DB78.DBX160.1 0 Boolean RW
180 夹头库 S60_ERROR 夹头位 60 错误 DB78.DBX160.2 0 Boolean RW
181 夹头库 S61_YES 夹头位 61 有件 DB78.DBX161.0 0 Boolean RW
182 夹头库 S61_NO 夹头位 61 无件 DB78.DBX161.1 0 Boolean RW
183 夹头库 S61_ERROR 夹头位 61 错误 DB78.DBX161.2 0 Boolean RW
184 夹头库 S62_YES 夹头位 62 有件 DB78.DBX162.0 0 Boolean RW
185 夹头库 S62_NO 夹头位 62 无件 DB78.DBX162.1 0 Boolean RW
186 夹头库 S62_ERROR 夹头位 62 错误 DB78.DBX162.2 0 Boolean RW
187 夹头库 S63_YES 夹头位 63 有件 DB78.DBX163.0 0 Boolean RW
188 夹头库 S63_NO 夹头位 63 无件 DB78.DBX163.1 0 Boolean RW
189 夹头库 S63_ERROR 夹头位 63 错误 DB78.DBX163.2 0 Boolean RW
190 夹头库 S64_YES 夹头位 64 有件 DB78.DBX164.0 0 Boolean RW
191 夹头库 S64_NO 夹头位 64 无件 DB78.DBX164.1 0 Boolean RW
192 夹头库 S64_ERROR 夹头位 64 错误 DB78.DBX164.2 0 Boolean RW
短地轨 1 夹头库 S1_YES 夹头位1有件 0 Boolean RW
2 夹头库 S1_NO 夹头位1无件 0 Boolean RW
3 夹头库 S1_ERROR 夹头位1错误 0 Boolean RW
4 夹头库 S2_YES 夹头位2有件 0 Boolean RW
5 夹头库 S2_NO 夹头位2无件 0 Boolean RW
6 夹头库 S2_ERROR 夹头位2错误 0 Boolean RW
7 夹头库 S3_YES 夹头位3有件 0 Boolean RW
8 夹头库 S3_NO 夹头位3无件 0 Boolean RW
9 夹头库 S3_ERROR 夹头位3错误 0 Boolean RW
10 夹头库 S4_YES 夹头位4有件 0 Boolean RW
11 夹头库 S4_NO 夹头位4无件 0 Boolean RW
12 夹头库 S4_ERROR 夹头位4错误 0 Boolean RW
13 夹头库 S5_YES 夹头位5有件 0 Boolean RW
14 夹头库 S5_NO 夹头位5无件 0 Boolean RW
15 夹头库 S5_ERROR 夹头位5错误 0 Boolean RW
16 夹头库 S6_YES 夹头位6有件 0 Boolean RW
17 夹头库 S6_NO 夹头位6无件 0 Boolean RW
18 夹头库 S6_ERROR 夹头位6错误 0 Boolean RW
19 夹头库 S7_YES 夹头位7有件 0 Boolean RW
20 夹头库 S7_NO 夹头位7无件 0 Boolean RW
21 夹头库 S7_ERROR 夹头位7错误 0 Boolean RW
22 夹头库 S8_YES 夹头位8有件 0 Boolean RW
23 夹头库 S8_NO 夹头位8无件 0 Boolean RW
24 夹头库 S8_ERROR 夹头位8错误 0 Boolean RW
25 夹头库 S9_YES 夹头位9有件 0 Boolean RW
26 夹头库 S9_NO 夹头位9无件 0 Boolean RW
27 夹头库 S9_ERROR 夹头位9错误 0 Boolean RW
28 夹头库 S10_YES 夹头位 10 有件 0 Boolean RW
29 夹头库 S10_NO 夹头位 10 无件 0 Boolean RW
30 夹头库 S10_ERROR 夹头位 10 错误 0 Boolean RW
31 夹头库 S11_YES 夹头位 11 有件 0 Boolean RW
32 夹头库 S11_NO 夹头位 11 无件 0 Boolean RW
33 夹头库 S11_ERROR 夹头位 11 错误 0 Boolean RW
34 夹头库 S12_YES 夹头位 12 有件 0 Boolean RW
35 夹头库 S12_NO 夹头位 12 无件 0 Boolean RW
36 夹头库 S12_ERROR 夹头位 12 错误 0 Boolean RW
37 夹头库 S13_YES 夹头位 13 有件 0 Boolean RW
38 夹头库 S13_NO 夹头位 13 无件 0 Boolean RW
39 夹头库 S13_ERROR 夹头位 13 错误 0 Boolean RW
40 夹头库 S14_YES 夹头位 14 有件 0 Boolean RW
41 夹头库 S14_NO 夹头位 14 无件 0 Boolean RW
42 夹头库 S14_ERROR 夹头位 14 错误 0 Boolean RW
43 夹头库 S15_YES 夹头位 15 有件 0 Boolean RW
44 夹头库 S15_NO 夹头位 15 无件 0 Boolean RW
45 夹头库 S15_ERROR 夹头位 15 错误 0 Boolean RW
46 夹头库 S16_YES 夹头位 16 有件 0 Boolean RW
47 夹头库 S16_NO 夹头位 16 无件 0 Boolean RW
48 夹头库 S16_ERROR 夹头位 16 错误 0 Boolean RW
49 夹头库 S17_YES 夹头位 17 有件 0 Boolean RW
50 夹头库 S17_NO 夹头位 17 无件 0 Boolean RW
51 夹头库 S17_ERROR 夹头位 17 错误 0 Boolean RW
52 夹头库 S18_YES 夹头位 18 有件 0 Boolean RW
53 夹头库 S18_NO 夹头位 18 无件 0 Boolean RW
54 夹头库 S18_ERROR 夹头位 18 错误 0 Boolean RW
55 夹头库 S19_YES 夹头位 19 有件 0 Boolean RW
56 夹头库 S19_NO 夹头位 19 无件 0 Boolean RW
57 夹头库 S19_ERROR 夹头位 19 错误 0 Boolean RW
58 夹头库 S20_YES 夹头位 20 有件 0 Boolean RW
59 夹头库 S20_NO 夹头位 20 无件 0 Boolean RW
60 夹头库 S20_ERROR 夹头位 20 错误 0 Boolean RW
61 夹头库 S21_YES 夹头位 21 有件 0 Boolean RW
62 夹头库 S21_NO 夹头位 21 无件 0 Boolean RW
63 夹头库 S21_ERROR 夹头位 21 错误 0 Boolean RW
64 夹头库 S22_YES 夹头位 22 有件 0 Boolean RW
65 夹头库 S22_NO 夹头位 22 无件 0 Boolean RW
66 夹头库 S22_ERROR 夹头位 22 错误 0 Boolean RW
67 夹头库 S23_YES 夹头位 23 有件 0 Boolean RW
68 夹头库 S23_NO 夹头位 23 无件 0 Boolean RW
69 夹头库 S23_ERROR 夹头位 23 错误 0 Boolean RW
70 夹头库 S24_YES 夹头位 24 有件 0 Boolean RW
71 夹头库 S24_NO 夹头位 24 无件 0 Boolean RW
72 夹头库 S24_ERROR 夹头位 24 错误 0 Boolean RW
73 夹头库 S25_YES 夹头位 25 有件 0 Boolean RW
74 夹头库 S25_NO 夹头位 25 无件 0 Boolean RW
75 夹头库 S25_ERROR 夹头位 25 错误 0 Boolean RW
76 夹头库 S26_YES 夹头位 26 有件 0 Boolean RW
77 夹头库 S26_NO 夹头位 26 无件 0 Boolean RW
78 夹头库 S26_ERROR 夹头位 26 错误 0 Boolean RW
79 夹头库 S27_YES 夹头位 27 有件 0 Boolean RW
80 夹头库 S27_NO 夹头位 27 无件 0 Boolean RW
81 夹头库 S27_ERROR 夹头位 27 错误 0 Boolean RW
82 夹头库 S28_YES 夹头位 28 有件 0 Boolean RW
83 夹头库 S28_NO 夹头位 28 无件 0 Boolean RW
84 夹头库 S28_ERROR 夹头位 28 错误 0 Boolean RW
85 夹头库 S29_YES 夹头位 29 有件 0 Boolean RW
86 夹头库 S29_NO 夹头位 29 无件 0 Boolean RW
87 夹头库 S29_ERROR 夹头位 29 错误 0 Boolean RW
88 夹头库 S30_YES 夹头位 30 有件 0 Boolean RW
89 夹头库 S30_NO 夹头位 30 无件 0 Boolean RW
90 夹头库 S30_ERROR 夹头位 30 错误 0 Boolean RW
91 夹头库 S31_YES 夹头位 31 有件 0 Boolean RW
92 夹头库 S31_NO 夹头位 31 无件 0 Boolean RW
93 夹头库 S31_ERROR 夹头位 31 错误 0 Boolean RW
94 夹头库 S32_YES 夹头位 32 有件 0 Boolean RW
95 夹头库 S32_NO 夹头位 32 无件 0 Boolean RW
96 夹头库 S32_ERROR 夹头位 32 错误 0 Boolean RW
打标机数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
长地轨 1 打标机 NORMAL 开机中 0 Boolean RW 打标动作是什么样的
2 打标机 START 开始打标 DB84.DBX0.3 0 Boolean RW 打标机上有无零件信号
3 打标机 BUSY 打标中 0 Boolean RW
4 打标机 IDLE 待机中 DB84.DBX0.0 0 Boolean RW
短地轨 1 打标机 NORMAL 开机中 DB14.DBX4.0 0 Boolean RW
2 打标机 START 开始打标 DB14.DBX4.1 0 Boolean RW 1秒脉冲
3 打标机 BUSY 打标中 DB14.DBX4.2 0 Boolean RW 打标完成后一直为1
4 打标机 IDLE 待机中 DB14.DBX4.3 0 Boolean RW 开机后一直处于待机中
关节 1 打标机 NORMAL 开机中 DB19.DBX0.0 0 Boolean RW
2 打标机 START 开始打标 DB19.DBX0.1 0 Boolean RW
3 打标机 BUSY 打标中 DB19.DBX0.2 0 Boolean RW
4 打标机 IDLE 待机中 DB19.DBX0.3 0 Boolean RW
清洗机数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
关节 1 清洗机 NORMAL 通讯正常 DB25.DBX2.0 0 Boolean RW
2 清洗机 AUTO 联机状态 DB25.DBX0.1 0 Boolean RW
3 清洗机 READY 准备好 DB25.DBX2.2 0 Boolean RW
4 清洗机 BUSY 运行中 DB25.DBX2.3 0 Boolean RW
5 清洗机 ERROR 错误 DB25.DBX2.4 0 Boolean RW
6 清洗机 UPLOAD_READY 上料就绪 DB25.DBX2.5 0 Boolean RW
7 清洗机 UNLOAD_READY 下料就绪 DB25.DBX2.6 0 Boolean RW
测量仪数据
单元 序号 类型 英文名称 中文名称 地址 初始值 值类型 读写属性 备注
关节 1 测量仪 NORMAL 通讯正常 DB19.DBX2.0 0 Boolean RW
2 测量仪 AUTO 联机状态 DB19.DBX6.0 0 Boolean RW
3 测量仪 READY 准备好 DB19.DBX6.1 0 Boolean RW
4 测量仪 BUSY 运行中 DB19.DBX2.3 0 Boolean RW
5 测量仪 ERROR 错误 DB19.DBX2.4 0 Boolean RW
6 测量仪 UPLOAD_READY 上料就绪 DB19.DBX6.3 0 Boolean RW
7 测量仪 UNLOAD_READY 下料就绪 DB19.DBX6.4 0 Boolean RW

View File

@@ -0,0 +1,274 @@
# PLC数据与看板内容匹配分析
分析对象:
- 客户PLC点位文档`07-功能确认.md`
- 当前看板页面:`src/views/DaLuJiaTV1.vue`
- 当前看板模块:线体任务联动状态、加工设备状态、辅助设备状态、物料库位矩阵、报警与异常事件、设备运行履历、顶部视角按钮
## 1. 总体结论
客户目前提供的PLC点位能够支撑看板中大部分“实时状态类”内容包括线体是否在线、是否允许接任务、自动模式、急停、机器人任务号、起止位置、配方号、托盘类型、零件类型、机器人握手反馈、库位有无料、设备忙碌/报警/上下料就绪等。
但当前看板中有几类内容不能直接由现有PLC点位一次性满足需要数据库、采集服务或客户补充字段
1. **产量**现有点位没有直接的设备产量计数器。加工设备状态里的“产量”需要通过任务完成、下料完成、COMPLETE上升沿等事件计算并落库。
2. **报警事件文本**:现有点位只有 `ALARM``ERROR``EMG` 等布尔信号,没有报警代码、报警文本、报警发生时间。报警与异常事件模块需要采集服务根据点位变化生成事件。
3. **24小时设备运行履历**PLC能提供当前状态但24小时履历必须由采集服务按分钟或按状态变化记录到数据库再由页面读取。
4. **关机状态**:目前多数加工设备只有 `BUSY``ALARM`、上下料信号,没有明确的“开机/在线/心跳”信号。若要区分“关机”和“待机”,需要客户补充设备在线/开机/心跳点位,或由通讯中断推断。
5. **程序一致性**PLC提供实际程序号 `A_PROG_NO`,但页面若要判断“目标程序与实际程序不一致”,还需要目标程序号或配方号到程序号的映射关系。
## 2. 模块匹配矩阵
| 看板模块 | 当前显示内容 | 07文档可用数据 | 满足度 | 说明 |
| --- | --- | --- | --- | --- |
| 线体任务联动状态 | 长地轨、短地轨、关节机器人状态;当前任务;起止工位;接任务条件;当前阶段 | `PCS_RUN``ALLOW_TASK``AUTO_ACTIVE``EMG``TASK_NO``START_POS``END_POS``RECIPE_CODE``PALLET_TYPE``PART_KIND``FLAG``READY``BUSY``ERROR``COMPLETE` | 高 | 能支撑当前模块。需要补充工位编号字典、托盘类型字典、零件类型字典。长地轨任务中未看到 `PART_KIND`,若需要显示长轴/短轴,需要确认来源。 |
| 加工设备状态 | 设备名称、产量、运行条件、状态 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H 的 `A_PROG_NO`、上下料完成/就绪、`BUSY``ALARM` | 中 | 状态和运行条件可支撑;产量没有直接点位,需要计算;程序一致性需要目标程序来源。 |
| 辅助设备状态 | 长地轨打标机、短地轨打标机、关节打标机、清洗机、测量仪状态 | 打标机 `NORMAL``START``BUSY``IDLE`;清洗机 `BUSY``ERROR`、上下料就绪;测量仪 `BUSY``ERROR`、上下料就绪 | 中高 | 可支撑状态显示。长地轨打标机文档中 `NORMAL``BUSY` 地址为空,需要客户确认。 |
| 物料库位矩阵 | 长地轨库区9个库位、短地轨库区9个库位、关节库区6个库位有料/无料 | `S1_YES``S9_YES`,关节 `S1_YES``S6_YES` | 高 | 可直接支撑。需要确认长地轨和短地轨是否真的共用 `DB50.DBX101.0``DB50.DBX109.0`还是不同PLC/不同上下文。还需要库位编号到现场位置的映射。 |
| 报警与异常事件 | 时间、设备、级别、事件内容 | 设备 `ALARM`,辅助设备 `ERROR`,机器人 `ERROR`,线体 `EMG` | 中低 | 可判断是否报警,但缺报警代码、报警文本、报警等级、开始/结束时间。建议采集服务在信号上升沿生成报警事件。 |
| 设备运行履历 | 24小时设备状态甘特图关机、运行、待机、报警 | `BUSY``ALARM``ERROR``NORMAL``IDLE``PCS_RUN` 等当前状态信号 | 中 | 当前状态可判断24小时履历必须落库。关机状态需要明确开机/在线/心跳点位,否则只能按通讯状态或 `NORMAL=0` 推断。 |
| 顶部视角按钮 | 长地轨视角、短地轨视角、关节视角 | 无PLC点位要求 | 不依赖PLC | 属于前端/DMT相机视角控制不需要PLC数据。 |
## 3. 当前看板字段逐项判断
### 3.1 线体任务联动状态
可满足:
- PCS在线`PCS_RUN`
- 自动模式:`AUTO_ACTIVE`
- 允许接任务:`ALLOW_TASK`
- 急停/安全异常:`EMG`
- 当前任务编号:`TASK_NO`
- 任务流向:`START_POS``END_POS`
- 配方号:`RECIPE_CODE`
- 托盘类型:`PALLET_TYPE`
- 零件类型:`PART_KIND`,短地轨和关节已有,长地轨需要确认
- 当前阶段:可由 `FLAG``READY``BUSY``ERROR``COMPLETE` 推导
建议规则:
- `ERROR=1``EMG=1`:异常中断
- `BUSY=1`:执行中
- `READY=1``BUSY=0`:准备就绪
- `ALLOW_TASK=1``AUTO_ACTIVE=1``PCS_RUN=1``EMG=0`:可接任务
- `COMPLETE=1`:任务完成,可显示完成保持或等待下一任务
需要补充确认:
- `START_POS``END_POS` 对应的工位名称字典
- `PALLET_TYPE` 对应的托盘名称字典
- `PART_KIND` 的字典是否全线统一
- 长地轨是否需要 `PART_KIND`,如果需要,从哪里取
### 3.2 加工设备状态
可满足:
- F500实际程序号、上料完成、下料完成、运行中、报警
- L2000LSY实际程序号、上料完成、下料完成、运行中、报警
- L2100SY实际程序号、上料完成、下料完成、运行中、报警
- 新日:实际程序号、上料就绪、下料就绪、运行中、报警
- MAZAK上料就绪、下料就绪、运行中、报警实际程序号标注为不需要
- YKD5132H实际程序号、上料就绪、下料就绪、运行中、报警
不能直接满足:
- 产量:未看到直接产量计数器
- 目标程序号:未看到目标程序号点位
- 程序一致性:只有实际程序号,不足以独立判断
建议处理:
- 页面保留“产量”可以,但数据来源应由采集服务计算:
- 方案A设备 `UNLOAD_COMPLETE``UNLOAD_READY` 上升沿计数
- 方案B机器人任务 `COMPLETE` 上升沿按目标设备归属计数
- 方案C客户补充每台设备的产量计数器页面直接读取
- 程序一致性建议由 `RECIPE_CODE` 或生产任务中的目标程序号,与设备 `A_PROG_NO` 比对。
- 若客户暂时不能提供产量,建议把“产量”暂时改为“程序号”,或在接口层返回计算产量。
### 3.3 辅助设备状态
可满足:
- 短地轨打标机:`NORMAL``START``BUSY``IDLE`
- 关节打标机:`NORMAL``START``BUSY``IDLE`
- 清洗机:`BUSY``ERROR``UPLOAD_READY``UNLOAD_READY`
- 测量仪:`BUSY``ERROR``UPLOAD_READY``UNLOAD_READY`
部分缺口:
- 长地轨打标机 `NORMAL``BUSY` 地址为空,需要客户补齐或确认是否不采集。
- 打标机 `START` 可能是短脉冲,不能直接作为状态长期显示,需要采集服务捕获边沿或只用于事件记录。
建议状态规则:
- 打标机:`BUSY=1` 显示运行中;`IDLE=1` 显示待机;`NORMAL=0` 显示关机或离线;如后续有错误点位,优先显示报警。
- 清洗机/测量仪:`ERROR=1` 显示报警;`BUSY=1` 显示运行中;`UPLOAD_READY``UNLOAD_READY` 显示等待上下料;否则显示待机。
### 3.4 物料库位矩阵
可满足:
- 长地轨库区9个库位 `S1_YES``S9_YES`
- 短地轨库区9个库位 `S1_YES``S9_YES`
- 关节库区6个库位 `S1_YES``S6_YES`
需要确认:
- 长地轨和短地轨库区在文档中使用相同地址 `DB50.DBX101.0``DB50.DBX109.0`。需要确认是否为同一个PLC地址空间下的重复还是Excel转换时上下文丢失。
- 每个 `S1``S9` 对应现场哪个实际库位、工位、料框位置。
建议:
- 页面可以继续显示库位矩阵。
- 可以增加库位统计:占用数、空位数、占用率。
- 若客户能提供物料类型或托盘号,可进一步显示“有料但类型未知/长轴/短轴”等状态。
### 3.5 报警与异常事件
现有点位可作为报警源:
- 线体:`EMG`
- 机器人:`ERROR`
- 加工设备:`ALARM`
- 清洗机/测量仪:`ERROR`
- 打标机:目前未看到明确错误点位
当前缺口:
- 没有报警代码
- 没有报警文本
- 没有报警等级
- 没有报警开始时间、恢复时间
建议实现:
- 采集服务保存报警事件表,而不是页面直接读当前布尔值。
- 每个报警布尔点从 `0 -> 1` 时生成一条事件,记录:时间、设备、点位、事件名称、等级、是否恢复。
-`1 -> 0` 时记录恢复时间。
建议报警等级:
- 严重:急停 `EMG`、机器人 `ERROR`、设备 `ALARM`、清洗机/测量仪 `ERROR`
- 警告:程序不一致、上下料等待超时、允许接任务条件不满足
- 提示:任务完成、等待上游/下游放行
### 3.6 设备运行履历
可用当前PLC信号生成实时状态
- 报警:`ALARM=1``ERROR=1`
- 运行:`BUSY=1`
- 待机:`IDLE=1``READY=1`、或无报警且无运行
- 关机:需要 `NORMAL=0``PCS_RUN=0`、通讯断开、或客户补充开机/在线信号
当前缺口:
- 现有PLC只提供当前状态不提供历史。
- 页面要显示24小时履历必须由后端或采集服务按分钟存储状态。
建议数据库表:
| 字段 | 说明 |
| --- | --- |
| device_code | 设备编码 |
| device_name | 设备名称 |
| state | off/run/standby/alarm |
| start_time | 状态开始时间 |
| end_time | 状态结束时间 |
| source_tags | 参与判断的PLC点位 |
建议状态优先级:
`报警 > 运行 > 待机 > 关机/离线`
## 4. 建议新增或优化的看板内容
基于客户目前PLC点位建议优先考虑以下内容
1. **线体接任务条件指示**
- 展示 `PCS_RUN``ALLOW_TASK``AUTO_ACTIVE``EMG` 四个条件。
- 适合放在线体任务联动状态中,能快速判断为什么不能发任务。
2. **机器人握手信号诊断**
- 展示 `FLAG``READY``BUSY``ERROR``COMPLETE`
- 当前页面已经精简过,如果现场调试需要,可以做成点击详情或悬浮面板,不一定常驻主屏。
3. **程序号核对**
- 设备侧 `A_PROG_NO` 已有。
- 如果能拿到目标程序号,可新增“程序一致/不一致”提示。
- 如果拿不到目标程序号,页面不建议直接写“程序不一致”,避免误导。
4. **库位占用统计**
- 当前库位矩阵已具备点位基础。
- 可增加每个库区的占用数、空位数、占用率。
5. **报警事件列表**
- 当前布尔点足够做基础报警事件。
- 需要采集服务生成事件文本例如“MAZAK 报警信号触发”“关节机器人 ERROR=1”“长地轨急停激活”。
6. **设备运行履历**
- 当前页面已有模块。
- 必须配套状态落库否则只能显示当前状态不能显示24小时历史。
7. **生产/产量统计**
- 现有PLC文档不直接提供产量。
- 建议客户补充产量计数器,或确认用哪个完成信号作为计数依据。
- 没有确认前看板上“产量”应标注为接口计算值而不是PLC直采值。
## 5. 需要客户补充确认的问题清单
1. 是否有每台加工设备的**产量计数器**?如果没有,是否允许用 `UNLOAD_COMPLETE``UNLOAD_READY` 或机器人 `COMPLETE` 上升沿计算产量?
2. 是否有每台设备的**开机/在线/心跳**信号?用于区分“关机”和“待机”。
3. 是否有**报警代码、报警文本、报警等级**?如果没有,是否接受由点位名称生成简化报警事件?
4. 是否有**目标程序号**或 `RECIPE_CODE -> A_PROG_NO` 的映射表?用于判断程序一致性。
5. 长地轨打标机的 `NORMAL``BUSY` 地址为空,是否需要补充?
6. 长地轨任务是否有 `PART_KIND`?如果没有,长轴/短轴从哪里判断?
7. 长地轨和短地轨物料库位是否共用 `DB50.DBX101.0``DB50.DBX109.0`?如果不是,需要提供真实地址。
8. `START_POS``END_POS` 的工位编号字典是什么?
9. `PALLET_TYPE` 的托盘类型字典是什么?
10. PLC点位虽然标注 `RW`看板是否只读建议看板侧默认只读不向PLC写入。
11. 数据采集周期要求是多少状态看板建议1秒级刷新运行履历可按状态变化或1分钟粒度落库。
## 6. 对当前看板的落地建议
### 建议保留
- 线体任务联动状态
- 加工设备状态
- 辅助设备状态
- 物料库位矩阵
- 报警与异常事件
- 设备运行履历
- 顶部视角按钮
### 建议调整数据口径
- 加工设备状态中的“产量”应明确为“接口计算产量”当前PLC文档不能直接支撑。
- 报警与异常事件应由采集服务生成事件,不应只读当前报警位。
- 设备运行履历应由数据库提供24小时历史不应只依赖页面前端模拟。
### 建议新增后端/数据库能力
1. PLC当前快照表保存每个点位当前值。
2. 状态变化事件表:保存报警、任务阶段、设备运行状态变化。
3. 设备分钟状态表或状态区间表支撑24小时运行履历。
4. 产量统计表:按设备、班次、日期统计产量。
5. 字典表:工位、托盘类型、零件类型、设备编码、点位含义、报警等级。
## 7. 数据满足度结论
当前PLC点位对看板的支撑度可以概括为
- **实时状态显示:基本满足**
- **任务联动显示:基本满足**
- **库位矩阵显示:满足**
- **设备运行/报警当前状态:基本满足**
- **产量显示:不直接满足,需要计算或补点**
- **报警事件列表:部分满足,需要事件化**
- **24小时运行履历部分满足需要历史落库**
- **程序一致性:部分满足,需要目标程序或映射表**
因此,当前数据可以支撑看板进入联调,但在正式交付前,需要重点确认“产量、报警事件、运行履历、关机状态、程序一致性”这五类数据口径。

View File

@@ -0,0 +1,222 @@
# 庆安产线数字孪生监控看板 — 功能说明
更新日期2026-06-25
---
本看板将生产线上的设备运行信号、机器人搬运任务、物料库位状态、报警事件和三维产线模型整合到一块大屏上,帮助车间管理和生产调度人员实时掌握整条产线的运行情况。
---
## 1. 页面整体布局
看板采用 1920×1080 分辨率大屏设计,上下共三行、中间分三列,各区域分工如下:
| 区域 | 位置 | 展示内容 |
|---|---|---|
| 标题栏 | 页面顶部 | 系统名称、模式切换按钮、当前日期时间、视角切换按钮 |
| 线体任务联动状态 | 左侧 | 长地轨、短地轨、关节机器人三大单元的线体信号、任务信息和握手状态 |
| 三维产线模型 | 中央(全屏背景) | 产线三维数字模型,随视角按钮切换观察角度 |
| 加工设备状态 | 右侧上方 | 六台主要加工设备的产量、联动信号和运行状态 |
| 辅助设备状态 | 右侧下方 | 打标机、清洗机、桁架、测量仪等辅助设备的运行状态 |
| 物料库位矩阵 | 底部左侧 | 三个库区的物料存放情况,一眼看出哪些库位有料、哪些空着 |
| 报警与异常事件 | 底部中间 | 报警频次统计图 + 实时报警事件列表 |
| 设备运行履历 | 底部右侧 | 15 台设备的 24 小时运行状态时间轴 |
---
## 2. 顶部控制区
### 2.1 孪生模式 / 仿真模式
页面左上角有两个模式按钮:**孪生模式** 和 **仿真模式**
| 按钮 | 用途 |
|---|---|
| **孪生模式** | 点击后,三维区域展示真实产线的数字孪生画面,设备状态由产线 PLC 实时数据驱动,即车间现场正在发生的实时情况。 |
| **仿真模式** | 点击后,三维区域切换到离线仿真画面,可用于方案推演、操作培训或对外演示,不依赖现场设备运行。 |
> 两个模式互斥,同一时间只有一个处于激活状态。当前激活的按钮有高亮光效,一眼就能识别。
### 2.2 长地轨视角 / 短地轨视角 / 关节视角
页面右上角有三个视角切换按钮,分别对应产线三大作业单元:
| 按钮 | 三维画面切换到的区域 | 该区域包含的设备 |
|---|---|---|
| **长地轨视角** | 长地轨线体区域 | 长地轨机器人、长地轨库区、F500、L2000LSY、L2100SY |
| **短地轨视角** | 短地轨线体区域 | 短地轨机器人、短地轨库区、新日、MAZAK |
| **关节视角** | 关节机器人区域 | 关节机器人、关节库区、YKD5132H、清洗机、测量仪 |
> 点击按钮后,中央三维画面自动切换到对应区域的最佳观察角度。当前选中的按钮高亮显示,便于确认正在看哪个单元。
### 2.3 实时时钟
标题栏右侧显示当前日期和时间,每秒自动刷新,方便核对数据时效。
---
## 3. 线体任务联动状态(左侧)
本模块集中展示长地轨、短地轨、关节机器人三大核心单元的实时运行情况。每个单元以一张独立卡片呈现,包含四部分信息:
**① 单元综合状态**
卡片顶部显示单元名称(如"长地轨")和当前综合状态。状态根据多项信号综合判定,例如:
- **可派发任务**:单元在线、自动模式、允许接任务,一切正常可派发
- **执行中**:机器人正在执行搬运任务
- **准备就绪**:机器人已就绪,等待任务下发
- **异常中断**:发生错误或急停,需要人工介入
**② 当前任务信息**
展示机器人正在执行的搬运任务详情:
- 任务编号
- 起止位置(如 `01 → 06`),即从哪里搬到哪里
- 配方号、托盘类型、零件类型(长轴/短轴)
**③ 线体状态信号**
四个核心指示灯,判断单元是否具备接任务条件:
- PCS 运行(亮 = 在线,灭 = 离线)
- 允许接收任务(亮 = 可以接任务)
- 自动模式(亮 = 自动运行中)
- 急停状态(亮红 = 急停已激活,正常时为灰色)
> 四个条件全部满足PCS 在线 + 允许接任务 + 自动模式 + 无急停)时,单元可正常派发任务。任意一项不满足都能快速定位原因。
**④ 任务握手信号**
展示机器人与 PLC 之间的任务握手流程FLAG任务下发→ READY就绪→ BUSY执行中→ ERROR异常→ COMPLETE完成。每个信号以指示灯形式呈现当前生效的信号高亮异常信号红色闪烁一眼就能判断任务走到了哪个阶段、卡在哪一步。
---
## 4. 三维产线模型(中央)
页面中央区域嵌入整条产线的三维数字模型,是看板的视觉核心。三维模型中可直观看到设备与机器人的空间布局和运行状态。
三维模型支持以下操作:
- 点击顶部**视角按钮**,画面自动聚焦到长地轨、短地轨或关节区域
- 点击**模式按钮**,在孪生(真实数据驱动)和仿真(离线演示)之间切换
---
## 5. 加工设备状态(右侧上方)
展示六台主要加工设备的实时运行数据:
| 设备 | 所属单元 | 监控内容 |
|---|---|---|
| F500 | 长地轨 | 产量、上料/下料完成信号、运行/报警状态 |
| L2000LSY | 长地轨 | 产量、上料/下料完成信号、运行/报警状态 |
| L2100SY | 长地轨 | 产量、上料/下料完成信号、运行/报警状态 |
| 新日 | 短地轨 | 产量、上料/下料就绪信号、运行/报警状态 |
| MAZAK | 短地轨 | 产量、上料/下料就绪信号、运行/报警状态 |
| YKD5132H | 关节 | 产量、上料/下料就绪信号、运行/报警状态 |
每台设备以一行展示,从左到右依次为:设备名称 → 当前产量 → 联动信号标签 → 运行状态标签。
状态颜色含义:
- 绿色 = 正常、就绪、完成
- 蓝色 = 运行中
- 黄色 = 预警(需关注)
- 红色 = 报警(需立即处理)
> 报警设备整行红色高亮。设备列表支持自动滚动,鼠标悬浮时暂停,方便逐行查看。
---
## 6. 辅助设备状态(右侧下方)
展示打标机、清洗机、测量仪等辅助设备的运行状态:
| 设备 | 监控内容 |
|---|---|
| 打标机 | 开机信号、打标进行中、待机等待任务 |
| 清洗机 | 运行中、上料就绪、下料就绪、是否有错误 |
| 桁架 | 开机信号、运行/待机状态 |
| 测量仪 | 运行中、上料就绪、下料就绪、是否有错误 |
| 复测工位 | 复测等待、是否有错误 |
每台设备一行,显示设备名称、联动信号标签和综合状态标签。状态判定规则:报警优先于运行、运行优先于待机,确保最严重的状态不被掩盖。
---
## 7. 物料库位矩阵(底部左侧)
展示三个库区的物料存放情况:
| 库区 | 库位数 | 对应线体 |
|---|---|---|
| A 库区 | 9 个S1S9 | 长地轨线体的物料缓存区 |
| B 库区 | 9 个S1S9 | 短地轨线体的物料缓存区 |
| C 库区 | 6 个S1S6 | 关节机器人的物料缓存区 |
每个库位以方格显示:
- **绿色高亮** = 有料
- **灰色暗框** = 空位
每个库区顶部标注有料数量和总数(如"6 / 9"),管理人员扫一眼就能判断各库区剩余容量,合理安排物料配送。
---
## 8. 报警与异常事件(底部中间)
本模块从两个维度展示报警信息:
**① 报警频次统计图**
顶部柱状图按报警次数从高到低排列,展示当前报警最多的设备和机器人,帮助管理人员识别高频故障点。图表自动适配数据范围,柱形越高表示该设备报警越频繁。
**② 实时报警事件列表**
列表展示每条报警的关键信息:
- **时间**:报警发生时间
- **设备**:报警来源
- **事件内容**:简要描述发生了什么
报警来源覆盖整条产线:
- 加工设备报警
- 机器人执行错误
- 急停激活
- 清洗机/测量仪异常
> 事件列表自动滚动刷新。鼠标悬浮时暂停滚动。报警恢复后,对应记录从列表中清除。
---
## 9. 设备运行履历(底部右侧)
以 24 小时时间轴的形式,展示 15 台设备过去一天内的运行状态变化,直观反映每台设备的工作节奏和异常时段。
**显示设备范围**长地轨机器人、短地轨机器人、关节机器人、F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H、打标机3 台)、清洗机、测量仪。
**四种运行状态**,以不同颜色区分:
| 状态 | 颜色 | 含义 |
|---|---|---|
| 关机 | 灰色 | 设备未开机或离线 |
| 待机 | 黄色 | 设备在线但未执行加工任务 |
| 运行 | 绿色 | 设备正在执行加工或搬运任务 |
| 报警 | 红色 | 设备发生报警,需要人工处理 |
**时间轴**:横轴为 24 小时刻度00:00 → 04:00 → 08:00 → 12:00 → 16:00 → 20:00 → 24:00每台设备对应一行状态条不同颜色段表示该时段所处的运行状态。
> 通过时间轴,可以快速发现设备是否长期待机(黄色占比过高)、是否频繁报警(红色段集中)、关机时段是否合理等问题。设备列表支持自动滚动,鼠标悬浮暂停。
---
## 10. 数据来源说明
看板上展示的实时数据来源于产线 PLC 控制系统,通过数据采集服务实时获取:
| 数据类型 | 包含信号 | 刷新频率 |
|---|---|---|
| 线体运行状态 | PCS 在线、自动模式、允许接任务、急停 | 约 1 秒 |
| 机器人任务 | 任务号、起止位置、配方、托盘类型、零件类型 | 约 1 秒 |
| 机器人握手 | FLAG、READY、BUSY、ERROR、COMPLETE | 约 1 秒 |
| 设备状态 | 运行中、报警、上下料就绪/完成 | 约 12 秒 |
| 物料库位 | 各库位有料/无料 | 约 13 秒 |
| 报警事件 | 设备报警、错误、急停 | 实时推送 |
> 产量数据、24 小时设备运行履历等统计类数据,由后端采集系统根据 PLC 信号变化进行累计计算和落库后提供。

View File

@@ -0,0 +1,152 @@
# 生产线数字孪生系统 — 技术协议
更新日期2026-06-25
---
为规范甲方生产线数字孪生系统的开发、实施与交付工作,明确甲乙双方的技术责任、工作内容、技术标准及验收要求,确保项目保质、保量、按期完成,甲乙双方本着平等自愿、公平诚信的原则,经友好协商,达成本技术协议。
本协议作为双方项目合作、验收、售后的技术依据,与主合同具有同等法律效力。
---
## 1. 项目概况
### 1.1 项目名称
生产线数字孪生系统
### 1.2 项目背景
本项目针对甲方 **3 个自动化生产工作岛**,搭建专属生产线数字孪生系统。通过三维建模、虚实映射、实时数据交互、仿真模拟、可视化监控等技术,构建与物理产线完全同步的虚拟数字化场景,实现产线设备动作仿真、布局优化、工艺验证、实时监控等功能,助力甲方实现生产过程数字化、可视化、智能化管控,提升产线调试效率、生产稳定性与整体产能。
### 1.3 项目范围
本次数字孪生系统覆盖甲方 3 个生产工作岛全部核心设备、自动化控制系统及配套装置,包含模型处理、孪生仿真、模拟验证、可视化监控、设备动作映射、技术参数、实施标准、验收要求、售后运维等全部技术内容。
**设备清单(共 12 项):**
| 序号 | 设备名称 | 品牌 / 型号 | 控制系统 | 数量 |
|---|---|---|---|---|
| 1 | 车削中心(带动力刀塔) | WIA / L2100SY | fanuc 32i-modelB 2017 | 1 台 |
| 2 | 磨床 | studer / S33 | — | 1 台 |
| 3 | 数控车床 | 马扎克 / QSM250L/1000 | 马扎克 2015 | 1 台 |
| 4 | 加工中心 | WIA / F500 | fanuc-i 系列 2015 | 1 台 |
| 5 | 车铣复合中心 | WIA / L2000LSY | fanuc-i 系列 2015 | 1 台 |
| 6 | 插齿机 | 长机科技 / YKD5132H-1270 | SINUMERIK 828D | 1 台 |
| 7 | 中心孔研磨机 | 新日 / 2MK8012 | — | 1 台 |
| 8 | 精密测量设备 | 业纳 / CS608 Pro | — | 1 台 |
| 9 | KUKA 机器人系统 | KUKA / KR210R2700 | KRC4 | 1 台 |
| 10 | 超声波清洗设备 | — | S7-200 PLC | 1 台 |
| 11 | 西门子自动化控制系统 | 1511-1 pn | PLC | 1 套 |
| 12 | 西门子自动化控制系统 | 1214c | PLC | 2 套 |
---
## 2. 技术目标
本项目以 **1:1 实景还原**为目标,提供产线的数字孪生,实现设备数据与工艺模型的集成,确保三维模型与设备运动基本同步,支持关键数据高频率采集与场景流畅渲染,并提供数字孪生看板展示。
---
## 3. 技术内容
系统构建与物理产线 1:1 复刻、动作逻辑同步的虚拟孪生场景,实现物理实体与虚拟场景的实时互动。物理设备运行状态、动作、参数可实时映射至虚拟场景;虚拟场景可完成仿真调试、工艺验证、布局优化。
### 3.1 模型确认与导入
- 乙方安排专业技术人员与甲方对接,逐台核对 3 个工作岛所有设备工业模型并确认
- 支持主流工业三维模型格式STEP、IGS、STL 等)导入系统
### 3.2 模型简化
- 在保留设备核心结构、运动部件、外观特征、工艺关键结构的前提下,对模型非关键冗余结构、细碎配件进行轻量化简化处理
- 简化后模型不影响设备动作仿真、干涉检查、精度验证、布局展示等核心功能,同时降低系统运行负载,保障场景流畅运行
- 支持模型简化等级自定义调整,可根据展示、仿真、调试不同场景切换模型精度
- 简化后的模型需经甲方核验确认,确保满足生产仿真及可视化使用需求
### 3.3 布局规划
- 系统支持虚拟场景内设备拖拽、位移、旋转、间距调整,可灵活调整 3 个工作岛所有设备的布局位置
- 支持产线布局方案保存、调整,供甲方择优使用
### 3.4 全维度数字孪生仿真
基于 1:1 虚拟孪生场景,复刻物理产线全生产逻辑,实现虚实实时同步,完整还原产线生产运行全过程。
#### 3.4.1 设备动作孪生复刻
系统需精准还原所有核心设备的真实动作逻辑、运动轨迹、运行节奏:
| 类别 | 动作要求 |
|---|---|
| 机床类 | 所有数控机床、加工中心、磨床、插齿机等设备的开关门动作、各轴精准运动,运动行程、速度、轨迹与物理设备完全一致 |
| 机器人 | KUKA 机器人全轨迹运动、抓取、搬运、上下料、对接工位等全套动作复刻 |
| 机器人附属 | 抓手拆卸、更换、校准动作全流程仿真,匹配实际换爪工艺逻辑 |
> 所有动作支持实时同步、单步调试、循环演示,动作响应精准、无错位、无丢步。
### 3.5 可视化看板监控
| 序号 | 要求 | 说明 |
|---|---|---|
| ① | 一体化三维监控看板 | 融合数字孪生与数据可视化技术,实现产线、设备、工艺、数据的全方位、实时、动态监控 |
| ② | 三维场景漫游 | 支持三维场景漫游、视角切换、设备聚焦查看 |
| ③ | 核心数据展示 | 设备启停状态、轴运动参数、生产节拍、产量数据、设备运行负荷、异常报警信息、工序完成进度 |
| ④ | 异常弹窗预警 | 支持异常情况实时弹窗预警 |
> 具体展示内容根据甲方要求调整,展示的数据需能够采集到或甲方能够提供。
### 3.6 数据交互与接口
- 系统支持与甲方西门子自动化控制系统、KUKA 机器人控制系统、各数控设备控制系统数据对接
- 采用标准化工业协议传输数据(各控制系统需提供相关接口,如需购买和开通由甲方负责)
- 数据交互满足实时性、完整性、安全性要求,支持数据传输,物理设备数据实时上传孪生系统
---
## 4. 人员与变更管理
- 本项目的变更必须由双方协商一致,并以书面形式确定
- 乙方配备的技术人员必须得到甲方认可,对于甲方不认可的技术人员,乙方应及时调整
---
## 5. 交付物
| 序号 | 交付内容 |
|---|---|
| 1 | 完整可运行的生产线数字孪生系统一套 |
| 2 | 处理后的三维模型源文件 |
---
## 6. 验收标准
| 指标 | 要求 |
|---|---|
| 数据实时性 | 设备状态、动作、参数更新延迟 **≤ 200ms**,虚实同步无明显卡顿、滞后 |
| 数据采集频率 | **< 2s** |
| 页面响应速度 | **< 2s** |
---
## 7. 质量保证
验收合格后质保期 **一年**
---
## 8. 知识产权
- 本软件的著作权为乙方所有,甲方对软件具有永久使用权
- 开发过程中甲方提供的所有数据、模型、接口等技术资料,乙方仅限用于本项目开发
- 未经乙方同意,甲方不得将本软件复制或提供给任何第三方使用,不得对软件进行反向工程、反向编译、反汇编或传播至互联网
- 乙方保留追究甲方法律责任的权利
---
## 9. 其他
- 本技术协议为项目专属技术依据,未尽事宜由双方协商补充,补充协议与本协议具有同等效力
- 本协议一式两份,甲乙双方各执一份,双方签字盖章后生效

View File

@@ -0,0 +1,131 @@
/*
庆安数字孪生可视化看板 - 前端埋点数据库对象
目标数据库DDV_AQ
用途:
1. 创建前端埋点日志表 dbo.TV_前端埋点事件日志
2. 创建写入存储过程 dbo.TV_前端埋点事件_写入
3. 创建清理存储过程 dbo.TV_前端埋点事件日志_清理
4. 前端页面启动时调用清理过程,小批量清理 365 天以前的数据
*/
IF OBJECT_ID(N'dbo.TV_前端埋点事件日志', N'U') IS NULL
BEGIN
CREATE TABLE dbo.[TV_前端埋点事件日志]
(
[ID] BIGINT IDENTITY(1,1) NOT NULL CONSTRAINT [PK_TV_前端埋点事件日志] PRIMARY KEY,
[app_id] NVARCHAR(100) NOT NULL,
[app_version] NVARCHAR(50) NULL,
[env] NVARCHAR(20) NULL,
[page_path] NVARCHAR(500) NULL,
[referrer] NVARCHAR(500) NULL,
[trace_id] NVARCHAR(100) NULL,
[session_id] NVARCHAR(100) NULL,
[user_id] NVARCHAR(100) NULL,
[timestamp] BIGINT NULL,
[client_ip] NVARCHAR(64) NULL,
[client_info] NVARCHAR(MAX) NULL,
[event_type] NVARCHAR(50) NOT NULL,
[event_name] NVARCHAR(100) NOT NULL,
[event_level] NVARCHAR(20) NULL,
[event_data] NVARCHAR(MAX) NULL,
[duration_ms] INT NULL,
[success] BIT NULL,
[error_code] NVARCHAR(100) NULL,
[error_message] NVARCHAR(MAX) NULL,
[create_time] DATETIME2(0) NOT NULL CONSTRAINT [DF_TV_前端埋点事件日志_create_time] DEFAULT SYSDATETIME()
);
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TV_前端埋点事件日志_create_time' AND object_id = OBJECT_ID(N'dbo.TV_前端埋点事件日志'))
CREATE INDEX [IX_TV_前端埋点事件日志_create_time] ON dbo.[TV_前端埋点事件日志]([create_time] DESC);
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TV_前端埋点事件日志_trace_id' AND object_id = OBJECT_ID(N'dbo.TV_前端埋点事件日志'))
CREATE INDEX [IX_TV_前端埋点事件日志_trace_id] ON dbo.[TV_前端埋点事件日志]([trace_id]);
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TV_前端埋点事件日志_session_time' AND object_id = OBJECT_ID(N'dbo.TV_前端埋点事件日志'))
CREATE INDEX [IX_TV_前端埋点事件日志_session_time] ON dbo.[TV_前端埋点事件日志]([session_id], [timestamp]);
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TV_前端埋点事件日志_event_time' AND object_id = OBJECT_ID(N'dbo.TV_前端埋点事件日志'))
CREATE INDEX [IX_TV_前端埋点事件日志_event_time] ON dbo.[TV_前端埋点事件日志]([event_name], [create_time] DESC);
GO
CREATE OR ALTER PROCEDURE dbo.[TV_前端埋点事件日志_清理]
@retention_days INT = 365,
@batch_size INT = 2000,
@return_result BIT = 1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @safe_retention_days INT = CASE WHEN ISNULL(@retention_days, 365) < 1 THEN 365 ELSE @retention_days END;
DECLARE @safe_batch_size INT = CASE WHEN ISNULL(@batch_size, 2000) < 1 THEN 2000 ELSE @batch_size END;
DECLARE @cutoff_time DATETIME2(0) = DATEADD(DAY, -@safe_retention_days, SYSDATETIME());
DELETE TOP (@safe_batch_size)
FROM dbo.[TV_前端埋点事件日志]
WHERE [create_time] < @cutoff_time;
DECLARE @deleted_count INT = @@ROWCOUNT;
IF @return_result = 1
BEGIN
SELECT N'1' AS result, @deleted_count AS deleted_count, @cutoff_time AS cutoff_time;
END;
END;
GO
CREATE OR ALTER PROCEDURE dbo.[TV_前端埋点事件_写入]
@app_id NVARCHAR(100),
@app_version NVARCHAR(50) = NULL,
@env NVARCHAR(20) = NULL,
@page_path NVARCHAR(500) = NULL,
@referrer NVARCHAR(500) = NULL,
@trace_id NVARCHAR(100) = NULL,
@session_id NVARCHAR(100) = NULL,
@user_id NVARCHAR(100) = NULL,
@timestamp NVARCHAR(30) = NULL,
@client_ip NVARCHAR(64) = NULL,
@client_info NVARCHAR(MAX) = NULL,
@event_type NVARCHAR(50),
@event_name NVARCHAR(100),
@event_level NVARCHAR(20) = NULL,
@event_data NVARCHAR(MAX) = NULL,
@duration_ms NVARCHAR(30) = NULL,
@success NVARCHAR(10) = NULL,
@error_code NVARCHAR(100) = NULL,
@error_message NVARCHAR(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @success_bit BIT = NULL;
IF NULLIF(LTRIM(RTRIM(@success)), N'') IS NOT NULL
BEGIN
SET @success_bit = CASE
WHEN UPPER(LTRIM(RTRIM(@success))) IN (N'1', N'TRUE', N'YES', N'') THEN 1
ELSE 0
END;
END;
INSERT INTO dbo.[TV_前端埋点事件日志]
(
[app_id], [app_version], [env], [page_path], [referrer],
[trace_id], [session_id], [user_id], [timestamp], [client_ip],
[client_info], [event_type], [event_name], [event_level], [event_data],
[duration_ms], [success], [error_code], [error_message]
)
VALUES
(
NULLIF(@app_id, N''), NULLIF(@app_version, N''), NULLIF(@env, N''), NULLIF(@page_path, N''), NULLIF(@referrer, N''),
NULLIF(@trace_id, N''), NULLIF(@session_id, N''), NULLIF(@user_id, N''), TRY_CONVERT(BIGINT, NULLIF(@timestamp, N'')), NULLIF(@client_ip, N''),
NULLIF(@client_info, N''), NULLIF(@event_type, N''), NULLIF(@event_name, N''), NULLIF(@event_level, N''), NULLIF(@event_data, N''),
TRY_CONVERT(INT, NULLIF(@duration_ms, N'')), @success_bit, NULLIF(@error_code, N''), NULLIF(@error_message, N'')
);
SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS ID, N'1' AS result, N'写入成功' AS message;
END;
GO

View File

@@ -0,0 +1,234 @@
# 技术协议、看板与 PLC 点位差异及补充清单
更新日期2026-06-25
---
## 1. 分析范围
本清单用于把三类资料放在一起核对,方便后续和客户确认数据边界、功能边界和需要补充的接口资料。
| 来源 | 文件 / 页面 | 用途 |
|---|---|---|
| 技术协议 | `10-技术协议.md` | 判断合同或技术范围中承诺了哪些数字孪生、三维仿真、数据展示和接口能力 |
| PLC 点位 | `07-功能确认.md` | 判断客户当前提供的 PLC 点位是否能支撑协议和看板数据 |
| 当前看板 | `src/views/DaLuJiaTV1.vue` | 判断已经做在页面上的模块、字段和交互 |
| 已有分析 | `08-PLC数据与看板内容匹配分析.md``09-看板功能说明.md` | 作为前期功能拆解和数据口径参考 |
总体结论:
1. 当前看板已经覆盖了协议中“可视化监控看板”的主体框架,包括三维区域、线体任务联动、加工设备状态、辅助设备状态、库位矩阵、报警事件、报警频次、设备运行履历、孪生 / 仿真模式按钮、视角按钮。
2. 当前 PLC 点位可以支撑大部分“实时状态类”展示,例如线体状态、任务编号、起止位置、配方号、托盘类型、机器人握手信号、设备运行 / 报警 / 上下料就绪、库位有无料。
3. 技术协议里更深的“1:1 动作孪生、轴运动参数、设备负荷、三维漫游 / 聚焦、布局拖拽保存、仿真调试、工艺验证”等内容,当前看板没有完整实现,当前 PLC 点位也没有完全覆盖,需要客户补充 CNC、KUKA、三维模型和接口资料。
4. 看板中有一些统计类、事件类和历史类内容PLC 点位只能提供当前瞬时状态,不能直接提供最终结果,必须由采集服务 / 后端数据库计算和落库。
---
## 2. 技术协议中有、当前看板未完整实现的功能
| 协议功能 | 当前看板状态 | 现有 PLC 点位是否支撑 | 需要向客户确认 / 索要 |
|---|---|---|---|
| 1:1 实景还原、完整数字孪生系统 | 目前页面预留中心 iframe 三维区域,但看板侧只负责嵌入与周边数据面板;没有看到完整三维模型导入、模型校验、设备动作驱动逻辑 | PLC 点位只解决部分状态信号,不解决三维模型本身 | 全部设备、线体、工装、夹头库、库位、机器人、清洗机、测量仪、打标机的最终三维模型;现场坐标 / 布局图;模型命名规则;设备 ID 与 PLC 点位映射 |
| 三维模型确认与导入,支持 STEP / IGS / STL | 当前看板未体现模型导入工具,只读取 `window.dt_Config.iframeAddress` | 与 PLC 无关 | 客户是否只要求交付处理后的模型,还是要求页面具备模型导入功能;需要客户提供源模型文件和最终确认版本 |
| 模型轻量化、简化等级自定义切换 | 当前看板未做模型轻量化等级切换 | 与 PLC 无关 | 是否需要在系统里做“高精度 / 展示 / 调试”模型精度切换;各档模型数量、格式、验收标准 |
| 虚拟场景设备拖拽、移动、旋转、间距调整、布局保存 | 当前看板未做布局编辑功能 | 与 PLC 无关 | 是否属于本次交付必做项;如果要做,需要保存格式、权限、布局方案数量、是否允许现场人员编辑 |
| 机床开关门动作、各轴精确运动、行程 / 速度 / 轨迹一致 | 当前看板加工设备状态只显示产量、联动信号、综合状态;未显示轴运动、门状态、速度轨迹 | PLC 提供了部分机床 `DOOR_OPEN``DOOR_CLOSE``BUSY``ALARM``NORMAL`、上下料就绪 / 完成,但没有轴坐标、轴速度、主轴转速、负荷、进给、刀具等连续参数 | 每台 CNC 的轴位置、轴速度、主轴转速、主轴负载、进给倍率、门状态、卡盘 / 夹紧状态、程序运行状态;确认这些从 PLC 取还是从 CNC 系统接口取 |
| KUKA 机器人全轨迹、抓取、搬运、上下料、对接工位动作复刻 | 当前看板显示三个单元的任务编号、起止位置、配方、托盘、握手状态;未显示机器人关节 / TCP 位置和真实轨迹 | PLC 提供 `TASK_NO``START_POS``END_POS``FLAG``READY``BUSY``ERROR``COMPLETE`,能支撑任务阶段,不足以支撑真实轨迹 | KUKA 关节角、TCP 位姿、程序名 / 程序段、夹爪开合、抓件有无、到位点、报警码KUKA 与系统对接方式、刷新周期、权限 |
| 机器人附件:夹爪拆卸、更换、校准动作全流程仿真 | 当前看板未显示夹爪 / 夹头更换流程 | PLC 中有部分“夹头数据”和“夹头库”点位,例如夹头编号、目标夹头、更换完成、夹头位有件 / 错误;但这些更像机床夹头 / 夹头库,不等同于 KUKA 夹爪拆装校准全流程 | 需要客户确认“夹头数据”是否就是协议中的机器人附件数据;如果不是,需要补充机器人夹爪编号、夹爪锁紧 / 解锁、换爪到位、校准完成、夹爪异常等点位 |
| 动作实时同步、单步调试、循环演示 | 当前看板只有孪生 / 仿真模式按钮,未见单步、暂停、循环演示、动作调试控制 | PLC 当前点位多为状态 / 任务 / 反馈,未提供仿真控制命令和离线演示数据 | 是否必须做单步调试和循环演示;若需要,客户需提供动作脚本、仿真流程、控制权限、写入 PLC 的边界,或确认仅在离线仿真系统内部实现 |
| 虚拟场景仿真调试、工艺验证、布局优化 | 当前看板未做仿真排程、节拍推演、工艺验证结果、布局优化工具 | PLC 点位不能直接支撑,属于仿真模型和业务规则 | 工艺路线、节拍参数、设备动作时长、缓存容量、物流规则、AGV / 机器人调度规则、布局约束、仿真验收指标 |
| 三维场景漫游、视角切换、设备聚焦查看 | 当前看板有长地轨 / 短地轨 / 关节视角按钮,但 `changeView` 目前只改前端选中状态,未看到向 iframe 发送视角切换命令 | 与 PLC 无关 | 三维页面是否提供 `postMessage`、URL 参数或 JS API需要视角 ID、设备 ID、聚焦相机点位、漫游控制方式 |
| 核心数据展示:设备启停状态 | 当前加工 / 辅助设备状态已做综合状态展示 | 基本支撑。机床有 `BUSY``ALARM``NORMAL``EMG`,清洗机 / 测量仪有 `NORMAL``AUTO``READY``BUSY``ERROR`,打标机有 `NORMAL``START``BUSY``IDLE`,但长地轨打标机部分地址为空 | 补齐长地轨打标机 `NORMAL``BUSY` 地址;确认 `NORMAL=0` 是关机、离线还是通讯异常 |
| 核心数据展示:轴运动参数 | 当前看板未显示 | 当前 PLC 点位没有轴坐标 / 速度 / 轨迹连续数据 | 每台机床和机器人轴参数清单,含点位地址、单位、量程、刷新周期 |
| 核心数据展示:生产节拍 | 当前看板未做独立节拍模块 | PLC 没有直接节拍字段,可通过任务开始 / 完成、加工完成、上下料完成事件计算 | 需要客户确认节拍定义:按设备加工周期、机器人搬运周期、整线节拍还是订单节拍;确认用哪个完成信号计时 |
| 核心数据展示:产量数据 | 当前加工设备状态显示“产量” | PLC 没有直接产量计数器;可用 `COMPLETE``UNLOAD_COMPLETE`、机器人 `COMPLETE` 上升沿计算,但需要规则 | 客户提供设备产量计数器,或确认用哪个信号作为计数依据;确认班次、清零、补录、重复计数处理规则 |
| 核心数据展示:设备运行负荷 | 当前看板未显示负荷 | 当前 PLC 点位没有负荷数据 | 主轴负载、轴负载、机器人负载 / 电流、设备负荷百分比等数据接口 |
| 核心数据展示:异常报警信息 | 当前看板有报警事件列表和报警频次柱状图 | PLC 有 `ALARM``ERROR``EMG` 等布尔量,可以判断有无异常,但没有报警码、报警文本、等级、开始 / 恢复时间 | 报警码、报警文本、报警等级、报警来源、发生时间、恢复时间;若客户无法提供,需确认是否接受由采集服务按点位名称生成简化报警事件 |
| 核心数据展示:工序完成进度 | 当前看板未做工序进度条或工序百分比 | PLC 有部分任务阶段、程序启动、加工完成、上下料就绪 / 完成,但没有完整工序步骤进度 | 工序步骤定义、每步开始 / 完成信号、当前工序号、进度百分比或可计算规则 |
| 异常弹窗预警 | 当前看板有报警模块,但未见实时弹窗机制 | PLC 可触发报警布尔量;弹窗内容仍缺报警码 / 文本 / 等级 | 弹窗规则:哪些报警弹窗、弹窗优先级、是否自动关闭、是否需要确认、是否需要声音 / 大屏闪烁 |
| 与 Siemens、KUKA、CNC 控制系统数据对接 | 当前看板还没有真实接口层,只是前端 mock 数据 | 07 文档主要是 PLC 点位,未体现 KUKA 和各 CNC 的直接接口协议细节 | PLC 访问方式、IP、DB 权限、读写边界KUKA 接口方式Fanuc / Mazak / Sinumerik / Studer 等 CNC 接口方式;是否需要采购 / 开通授权 |
| 数据实时性:状态 / 动作 / 参数延迟不大于 200ms | 当前前端没有实测证据 | PLC 点位能否达到取决于采集链路、协议、服务端和三维渲染链路 | 客户确认必须 200ms 的数据范围提供网络环境、PLC 通讯周期、CNC / KUKA 接口刷新周期;后续需要联调测试记录 |
| 数据采集频率小于 2s | 当前前端说明按 1-2s 刷新,但还未接真实采集服务 | PLC 点位本身具备读取基础,采集频率需由接口链路验证 | 采集周期要求、点位总量、并发读取方式、历史落库粒度 |
---
## 3. 技术协议设备清单与当前看板 / PLC 点位差异
| 协议设备 | 当前看板是否展示 | PLC 点位是否提供 | 差异 / 处理建议 |
|---|---:|---:|---|
| WIA / L2100SY | 已展示 | 已提供 | 看板显示产量、联动信号、状态;协议要求的轴参数、负荷、真实动作轨迹未提供 |
| Studer / S33 磨床 | 未展示 | 未在 07 点位中明确看到 | 协议有该设备,但当前看板和 PLC 点位没有对应项;需要客户确认是否纳入本次看板和采集范围 |
| Mazak / QSM250L / 1000 | 已展示为 MAZAK | 已提供部分 | MAZAK 的目标 / 实际程序号标注为“不需要”,`COMPLETE` 标注“无此信号”;若要产量和程序一致性,需要另定规则 |
| WIA / F500 | 已展示 | 已提供 | 可支撑状态、上下料、门、报警、通讯正常;轴参数和负荷未提供 |
| WIA / L2000LSY | 已展示 | 已提供 | 可支撑状态、上下料、门、报警、通讯正常;轴参数和负荷未提供 |
| YKD5132H-1270 | 已展示 | 部分地址为空 | `D_PROG_NO``A_PROG_NO``PROG_SELECT``PROG_SELECT_READY``COMPLETE` 地址为空,需客户补齐或确认不用 |
| 新日 / 2MK8012 | 已展示为“新日” | 已提供部分 | `COMPLETE` 标注“无此信号”,产量需另行计算 |
| 业纳 / CS608 Pro 测量设备 | 已展示为“测量仪” | 已提供 | 可支撑运行、错误、上下料就绪测量结果、OK / NG、测量值、报告号未提供 |
| KUKA / KR210R2700 机器人系统 | 当前看板按长地轨、短地轨、关节三个任务单元展示 | PLC 提供三组任务 / 握手信号 | 协议写 1 套 KUKA当前看板按 3 个单元展示;需要客户确认实际机器人数量、单元划分和点位归属 |
| 超声波清洗设备 | 已展示为“清洗机” | 已提供 | 可支撑运行、错误、上下料就绪;清洗工艺参数、槽温、液位、清洗时长未提供 |
| Siemens 1511-1 PN PLC | 未作为设备展示 | PLC 点位来源之一 | 如需显示 PLC 通讯状态,需要提供采集服务状态或 PLC 心跳 / 通讯质量 |
| Siemens 1214C PLC x2 | 未作为设备展示 | PLC 点位来源之一 | 同上,需要确认是否在看板显示 PLC 控制系统在线状态 |
| 三台打标机 | 已展示:长地轨、短地轨、关节打标机 | 短地轨、关节点位较完整;长地轨部分地址为空 | 技术协议设备清单未单独列打标机,但看板和 PLC 点位中有;建议确认是否属于配套设备范围 |
---
## 4. 看板中已有、但 PLC 点位未直接提供或支撑不足的内容
| 看板内容 | 页面位置 | PLC 支撑情况 | 需要补充 / 确认 |
|---|---|---|---|
| 孪生模式 / 仿真模式按钮 | 顶部左侧 | PLC 不提供,也不一定需要 PLC属于前端与三维系统 / 仿真系统交互 | 需要三维系统提供模式切换接口;确认孪生模式读实时 PLC仿真模式读离线仿真还是脚本数据 |
| 长地轨 / 短地轨 / 关节视角按钮 | 顶部右侧 | PLC 不提供,也不需要 PLC | 需要三维 iframe 提供视角切换 API、视角 ID、设备聚焦点 |
| 中心三维 iframe | 中央区域 | PLC 只能提供驱动数据,不提供三维场景 | 需要客户或三维侧提供可访问地址、模型资源、数据驱动接口和跨页面通信协议 |
| 加工设备“产量” | 加工设备状态 | PLC 没有直接产量计数器 | 提供每台设备产量计数器,或确认由采集服务按 `COMPLETE` / `UNLOAD_COMPLETE` / 机器人 `COMPLETE` 上升沿计算 |
| 报警事件的时间、设备、事件内容 | 报警与异常事件 | PLC 只有当前报警 / 错误布尔量,不提供事件文本和时间 | 需要后端事件表;或由采集服务在点位 0->1 时生成报警事件,并维护恢复时间 |
| 报警频次 Top5 | 报警与异常事件柱状图 | PLC 不直接提供统计结果 | 需要后端按报警事件表统计,可按当班 / 当日 / 最近 24 小时配置 |
| 设备运行履历 24 小时甘特图 | 设备运行履历 | PLC 只提供当前状态,不提供历史 | 需要采集服务按分钟或状态变化落库,生成 `关机 / 运行 / 待机 / 报警` 状态区间 |
| 设备“关机”状态 | 设备运行履历 | 部分设备有 `NORMAL`,但“关机 / 离线 / 通讯异常”含义未完全明确 | 需要客户确认 `NORMAL=0` 的含义;最好提供设备电源、在线、心跳或通讯质量信号 |
| 程序不一致类报警 | 报警 mock 数据中出现过 | 07 点位中 F500 / L2000LSY / L2100SY / 新日有 `D_PROG_NO``A_PROG_NO`MAZAK 标注“不需要”YKD5132H 程序号地址为空;当前看板未专门展示程序一致性 | 需要客户确认各设备目标程序、实际程序、配方号映射关系和是否需要报警 |
| 清洗机下料等待超时 | 报警 mock 数据中出现过 | PLC 有 `UNLOAD_READY`,但没有等待开始时间和超时阈值 | 需要后端按信号持续时间计算;客户确认阈值和报警规则 |
| 关节机器人自动模式待恢复人工确认 | 报警 mock 数据中出现过 | 有 `AUTO_ACTIVE``ALLOW_TASK``ERROR` 等状态,但没有“人工确认”专用点位 | 需要确认这是通过自动模式缺失推断,还是有专门确认 / 复位信号 |
| 任务流向文字名称 | 线体任务联动状态 | PLC 提供 `START_POS``END_POS` 数字 | 需要工位编号字典,把 01、02、06 等数字映射成现场工位名称 |
| 托盘类型文字 | 线体任务联动状态 | PLC 提供 `PALLET_TYPE` 数字 | 需要托盘类型字典,例如空托盘、长轴托盘、短轴托盘等 |
| 零件类型 | 线体任务联动状态 | 短地轨、关节有 `PART_KIND`;长地轨未看到 `PART_KIND` | 需要确认长地轨是否固定为长轴,或补充 `PART_KIND` 点位 |
| 物料库位占用率 / 有料数量 | 物料库位矩阵 | 可以由 `S*_YES` 计算,但长地轨和短地轨库位地址看起来重复 | 需要确认长地轨和短地轨是否确实共用地址,还是 Excel 转换丢失上下文;需要库位编号与现场位置映射 |
| 测量仪报警事件与结果 | 辅助设备状态 / 报警 | PLC 有 `ERROR``BUSY`、上下料就绪,但没有测量结果 | 如果看板要展示质量或测量结论需要测量值、OK / NG、报告号、工件号 |
| 设备负荷、轴参数、节拍、工序进度 | 技术协议要求,但当前看板暂未做完整模块 | 当前 PLC 点位不足 | 需要额外接口和业务规则,见第 6 节索要清单 |
---
## 5. PLC 点位中已有、但当前看板尚未充分利用的内容
这部分不是“必须马上做”,但它们已经在客户点位里出现,后续如果要让看板更贴近技术协议,可以优先考虑。
| PLC 点位内容 | 当前看板状态 | 可扩展功能建议 |
|---|---|---|
| 预调台请求 / 反馈、托盘编号、相机 OK / NG、气压正常 | 当前看板未展示 | 可增加“预调台 / 上料准备状态”小模块,显示托盘到位、相机结果、气压异常 |
| AGV 接驳请求、允许、到位、完成、接驳站有托盘 / 错误 | 当前看板未展示 | 可在线体任务联动里增加“AGV 接驳阶段”或异常提示,用于判断任务卡在哪个环节 |
| 分拣台有托盘、允许放 / 取、错误 | 当前看板只显示物料库位矩阵,未显示分拣台 | 可扩展为“分拣台 / 缓存位状态”,辅助判断上下游堵塞 |
| 机床 `D_PROG_NO``A_PROG_NO`、程序选择、程序启动、自动联线、首件、排空 | 当前看板只显示状态和产量 | 可增加程序一致性、首件 / 排空状态、自动联线状态,但需要确认是否适合大屏常驻 |
| 机床门开 / 门关、急停、通讯正常 | 当前加工设备状态未单独显示 | 可用于更准确地判断关机、待机、报警和运行条件;也可驱动三维机床门动作 |
| 夹头编号、目标夹头、夹头更换完成 | 当前看板未展示 | 可做“夹头 / 工装状态”或用于三维换夹头动作孪生 |
| 夹头库 1-64 位有件 / 错误 | 当前看板未展示 | 可增加夹头库矩阵,和物料库位矩阵类似;也可用于工装缺料 / 错位报警 |
| 清洗机 `NORMAL``AUTO``READY` | 当前辅助设备状态只展示部分标签 | 可提升清洗机综合状态判定准确性 |
| 测量仪 `NORMAL``AUTO``READY` | 当前辅助设备状态只展示部分标签 | 可提升测量仪综合状态判定准确性 |
---
## 6. 建议向客户索要的数据与资料清单
### 6.1 三维模型与场景资料
| 需要资料 | 用途 | 优先级 |
|---|---|---|
| 12 项协议设备及实际配套设备的最终三维模型源文件 | 完成 1:1 数字孪生和模型轻量化 | 高 |
| 现场总布局图、设备坐标、机器人基坐标、库位坐标、工位坐标 | 保证三维场景与现场一致 | 高 |
| 设备、工位、库位、机器人、夹头库的统一编码表 | 建立 PLC 点位、三维对象、看板名称之间的映射 | 高 |
| 视角切换和设备聚焦的相机点位清单 | 让长地轨 / 短地轨 / 关节视角按钮真正控制三维画面 | 高 |
| 三维 iframe 通信协议 | 让看板按钮能调用三维模式切换、视角切换、设备聚焦 | 高 |
| 模型轻量化验收标准 | 明确哪些细节必须保留,避免后期反复返工 | 中 |
### 6.2 PLC / CNC / KUKA 接口数据
| 需要补充 | 当前缺口 | 用途 |
|---|---|---|
| 每台设备产量计数器,或确认产量计算信号 | 当前没有直接产量点位 | 支撑加工设备产量、班次统计、日报 |
| 报警码、报警文本、报警等级、报警恢复时间 | 当前只有 `ALARM` / `ERROR` / `EMG` 布尔量 | 支撑报警事件、报警 Top5、弹窗预警、报表 |
| 设备在线 / 开机 / 心跳 / 通讯质量 | 当前部分设备只有 `NORMAL`,含义需确认 | 区分关机、离线、待机、通讯异常 |
| CNC 轴位置、轴速度、主轴转速、主轴负载、进给倍率 | 当前 PLC 没有连续运动参数 | 支撑协议里的轴运动参数和设备负荷 |
| KUKA 关节角、TCP 位姿、程序状态、夹爪状态、抓件有无 | 当前只有任务号和握手信号 | 支撑机器人真实轨迹和抓取搬运动作孪生 |
| 工序步骤、当前工序、工序开始 / 完成信号 | 当前只能看到任务和部分完成信号 | 支撑工序完成进度 |
| 长地轨打标机 `NORMAL``BUSY` 地址 | 07 点位中地址为空 | 支撑长地轨打标机状态 |
| YKD5132H 程序号、程序选择就绪、加工完成地址 | 07 点位中部分地址为空 | 支撑 YKD5132H 程序、产量、状态判断 |
| MAZAK 产量 / 完成信号替代规则 | `COMPLETE` 标注无此信号 | 支撑 MAZAK 产量 |
| Studer / S33 点位 | 技术协议有07 点位和看板未体现 | 确认是否纳入本项目 |
| 清洗机工艺参数:槽温、液位、清洗时间、清洗完成 | 当前只有基础状态 | 若协议要求工艺参数展示,需要补充 |
| 测量仪测量结果OK / NG、测量值、报告号、工件号 | 当前只有基础状态 | 若后续要展示质量数据,需要补充 |
| `START_POS` / `END_POS` 工位字典 | 当前只有数字 | 让任务流向一眼能看懂 |
| `PALLET_TYPE` 托盘类型字典 | 当前只有数字 | 让托盘类型变成可读文字 |
| `PART_KIND` 零件类型字典,以及长地轨来源 | 长地轨未看到 `PART_KIND` | 支撑长轴 / 短轴判断 |
| 长地轨 / 短地轨物料库地址重复确认 | 两个库区看起来都用 `DB50.DBX101.0``DB50.DBX109.0` | 防止库位矩阵接错数据 |
| 夹头库短地轨地址补齐 | 07 点位中短地轨夹头库大量地址为空 | 若做夹头库矩阵必须补齐 |
### 6.3 业务规则与验收口径
| 需要确认 | 原因 |
|---|---|
| 看板是否只读 PLC | 07 点位很多标注 `RW`,但大屏建议只读,避免误写现场设备 |
| 产量统计口径 | 不同信号计数会导致产量差异,需要客户确认 |
| 报警等级划分 | 当前 PLC 布尔量不带等级,需要客户给规则或接受系统默认规则 |
| 设备状态优先级 | 建议为 `报警 > 运行 > 待机 > 关机 / 离线`,需客户确认 |
| 设备运行履历落库粒度 | 建议状态变化即落库,另可每分钟补采样 |
| 生产节拍定义 | 协议要求节拍,但需明确按设备、机器人、整线还是任务计算 |
| 仿真模式数据来源 | 需要确认来自离线脚本、仿真软件、数据库历史回放,还是三维系统内部演示 |
| 异常弹窗规则 | 需要明确哪些报警弹窗、是否需要确认、是否自动恢复 |
| 200ms 实时性适用范围 | 三维动作同步、PLC 状态展示、历史统计不应混用同一实时性标准 |
---
## 7. 建议补做功能优先级
### P0正式联调前必须确认
| 编号 | 事项 | 目的 |
|---|---|---|
| P0-01 | 补齐设备 / 工位 / 库位 / 托盘 / 零件类型字典 | 保证看板文字可读,不只是数字点位 |
| P0-02 | 确认产量计算规则或补充产量点位 | 保证加工设备“产量”不是 mock |
| P0-03 | 建立报警事件生成规则 | 保证报警列表和报警 Top5 可以从实时信号生成 |
| P0-04 | 建立设备状态判定规则 | 保证运行、待机、报警、关机含义统一 |
| P0-05 | 确认三维 iframe 通信方式 | 保证模式按钮和视角按钮真正生效 |
| P0-06 | 补齐长地轨打标机、YKD5132H、库位重复等点位疑问 | 防止关键设备状态接错或缺失 |
### P1为满足技术协议应补做
| 编号 | 事项 | 目的 |
|---|---|---|
| P1-01 | 三维视角切换、设备聚焦、孪生 / 仿真模式联动 | 对齐协议中的三维漫游和视角切换 |
| P1-02 | 设备运行履历真实落库 | 对齐看板中的 24 小时履历,替换 mock 数据 |
| P1-03 | 异常弹窗预警 | 对齐协议中的异常实时弹窗 |
| P1-04 | 程序一致性 / 自动联线 / 门状态等机床细节展示 | 利用现有机床 PLC 点位,提高现场可用性 |
| P1-05 | 预调台、AGV 接驳、分拣台状态补充展示 | 利用现有点位,增强任务卡点分析能力 |
| P1-06 | 夹头 / 夹头库状态展示 | 对应协议中的附件 / 工装动作和工艺验证能力 |
### P2需要额外接口后再做
| 编号 | 事项 | 前置条件 |
|---|---|---|
| P2-01 | CNC 轴运动参数、主轴 / 轴负荷展示 | 客户提供 CNC 接口或 PLC 转发点位 |
| P2-02 | KUKA 真实轨迹和 TCP / 关节数据驱动三维 | 客户提供 KUKA 接口 |
| P2-03 | 工序进度、节拍分析、负荷分析 | 客户确认工艺步骤和节拍口径 |
| P2-04 | 布局拖拽、方案保存、仿真验证 | 客户确认是否纳入本次交付及验收方式 |
| P2-05 | 测量结果和质量数据展示 | 客户提供测量仪结果接口 |
| P2-06 | 清洗工艺参数展示 | 客户提供清洗机温度、液位、时长、完成等数据 |
---
## 8. 可直接发给客户的补充问题清单
1. 技术协议中的 Studer / S33 磨床是否纳入本次看板和数据采集?如果纳入,请提供对应 PLC / CNC 点位。
2. 协议写 1 套 KUKA 机器人系统,但 PLC 点位和看板按长地轨、短地轨、关节三个单元展示。请确认实际机器人数量、单元划分和点位归属。
3. 请提供每台加工设备的产量计数器;如果没有,请确认用哪个完成信号作为产量计数依据。
4. 请提供报警码、报警文本、报警等级和报警恢复时间;如果设备侧无法提供,请确认是否接受由系统按布尔点位生成简化报警。
5. 请提供设备开机 / 在线 / 心跳 / 通讯质量点位,或确认 `NORMAL=0` 是否可以作为关机 / 离线判断。
6. 请提供 CNC 轴位置、轴速度、主轴转速、负荷等数据接口;如果无法提供,请确认协议中的“轴运动参数、设备负荷”是否改为不展示。
7. 请提供 KUKA 机器人关节角、TCP 位姿、夹爪状态、抓件有无、程序状态、报警码等接口;如果无法提供,请确认三维机器人动作是否只按任务阶段模拟。
8. 请确认夹头数据是否等同于协议中的“机器人附件 / 夹爪拆装更换校准”数据;若不是,请补充夹爪更换和校准点位。
9. 请补齐长地轨打标机 `NORMAL``BUSY` 地址。
10. 请补齐 YKD5132H 目标程序号、实际程序号、程序选择、程序选择就绪、加工完成等空地址,或确认这些字段不采集。
11. 请确认 MAZAK 是否确实没有加工完成信号;如没有,请提供产量 / 完成判定替代规则。
12. 请确认长地轨和短地轨物料库位是否共用 `DB50.DBX101.0``DB50.DBX109.0` 地址;如果不是,请提供正确地址。
13. 请提供 `START_POS``END_POS` 的工位编号字典。
14. 请提供 `PALLET_TYPE` 托盘类型字典。
15. 请确认长地轨是否需要显示零件类型;如果需要,请提供 `PART_KIND` 或其他来源。
16. 请提供三维系统 iframe 的控制接口,包括模式切换、视角切换、设备聚焦、设备状态驱动、报警定位等。
17. 请确认孪生模式和仿真模式的数据来源分别是什么,以及是否允许看板向 PLC 写入控制信号。
18. 请确认 200ms 实时性要求适用于哪些数据三维动作、PLC 状态、报警、统计、历史履历是否分别验收。
19. 请提供设备运行履历的历史数据要求:保存周期、保存粒度、查询范围、班次划分。
20. 请确认异常弹窗预警规则:哪些报警弹窗、优先级、是否需要人工确认、恢复后是否自动关闭。
---
## 9. 当前结论
当前看板的“监控大屏展示层”已经比较完整适合进入数据联调准备阶段但如果严格按技术协议验收仍然存在明显缺口主要集中在三维动作孪生、CNC / KUKA 深层接口、轴运动参数、设备负荷、仿真调试、布局编辑、报警事件化、历史落库和产量统计规则。
建议下一步先把 P0 问题和客户确认清楚,尤其是产量、报警、设备在线、三维 iframe 控制接口、设备字典、空地址和重复地址。P0 确认后当前看板可以较快接入真实数据P1 / P2 则建议作为技术协议履约范围和二次开发计划单独确认避免后期因为“PLC 点位没有提供”导致页面功能无法落地。

View File

@@ -0,0 +1,623 @@
# 产线通讯信号可视化看板设计说明
## 1. 设计目标
本看板用于把 `通讯变量列表.xlsx` 中的产线通讯信号转化为一块可视化大屏的信息架构。设计重点不是绘制具体页面,而是定义大屏应包含的模块、指标、数据来源、状态规则和内容呈现方式,便于后续直接交给前端开发或低代码平台实现。
大屏核心视觉为中间三维模型区,通过 `iframe` 嵌入三维产线模型。当前占位 URL 使用:
```text
https://www.baidu.com
```
后续替换为实际三维模型地址即可。
## 2. 数据范围
Excel 中包含 4 类数据表:
| 数据表 | 主要对象 | 用途 |
|---|---|---|
| 线体状态 | 长地轨、短地轨、关节 | 判断各单元是否在线、是否自动、是否允许接收任务、是否急停 |
| 任务数据 | 长地轨、短地轨、关节机器人 | 展示任务编号、起点、终点、配方、托盘、零件类型、执行反馈 |
| 物料库数据 | 长地轨、短地轨、关节物料库 | 展示各库位是否有件,统计库位占用率 |
| 设备数据 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H、打标机、清洗机、测量仪 | 展示设备运行、报警、上下料、程序号、打标、清洗和测量状态 |
## 3. 整体布局建议
### 3.1 页面结构
建议采用 16:9 大屏布局,适配 1920x1080、2560x1440 等分辨率。
页面由以下区域组成:
| 区域 | 位置 | 内容 |
|---|---|---|
| 顶部标题栏 | 页面顶部 | 系统名称、当前时间、通讯状态、在线单元数量、报警数量 |
| 左侧运行态势区 | 左侧纵向 | 线体状态、任务流转、机器人反馈 |
| 中央三维模型区 | 页面中心 | iframe 三维模型、透明浮层状态标签、任务路径提示 |
| 右侧设备监控区 | 右侧纵向 | 加工设备、打标机、清洗机、测量仪状态 |
| 底部物料与事件区 | 页面底部 | 物料库位矩阵、报警事件、任务日志、节拍指标 |
### 3.2 中央 iframe 三维模型区
中央区域为视觉焦点,应放置三维产线模型 iframe。
实现要求:
1. iframe 铺满中央模型容器,默认 URL 为 `https://www.baidu.com`
2. iframe 上方叠加图表和状态标签时,图表容器应使用半透明背景,不能完全遮挡三维模型。
3. 图表、设备标签、任务路线应作为 HUD 浮层覆盖在 iframe 上方。
4. 对只展示信息、不需要点击的浮层,可设置 `pointer-events: none`,避免阻挡三维模型交互。
5. 对需要点击的设备标签、报警弹窗、任务详情按钮,应单独设置 `pointer-events: auto`
6. 中央区域不要再画静态产线平面图,三维模型是主画面,其他模块只做透明叠加或周边信息面板。
建议层级:
| 层级 | 内容 | 说明 |
|---|---|---|
| 底层 | iframe 三维模型 | 实际三维产线场景 |
| 中层 | 设备状态点位、任务路径、库位占用提示 | 半透明 HUD |
| 上层 | 选中设备详情、报警弹窗、任务卡片 | 可交互信息层 |
## 4. 顶部标题栏模块
### 4.1 系统标题
标题建议:
```text
产线通讯信号可视化监控看板
```
副标题可展示:
```text
长地轨 / 短地轨 / 关节机器人 / 加工设备 / 物料库联动监控
```
### 4.2 全局状态 KPI
顶部建议展示 6 个核心指标:
| 指标 | 数据来源 | 计算规则 |
|---|---|---|
| 在线单元 | PCS_RUN | 长地轨、短地轨、关节中 PCS_RUN=1 的数量 |
| 自动模式 | AUTO_ACTIVE | AUTO_ACTIVE=1 的单元数量 |
| 可接收任务 | ALLOW_TASK | ALLOW_TASK=1 的单元数量 |
| 急停数量 | EMG | EMG=1 的单元数量 |
| 执行中任务 | BUSY | 机器人反馈 BUSY=1 的任务数 |
| 当前报警 | ERROR / ALARM | 机器人 ERROR=1 或设备 ALARM=1 的数量 |
### 4.3 状态色规则
| 状态 | 颜色建议 | 说明 |
|---|---|---|
| 正常 / 在线 / 完成 | 绿色 | PCS_RUN、READY、COMPLETE、IDLE |
| 运行中 / 忙碌 | 蓝色 | BUSY、自动运行中、打标中 |
| 等待 / 未触发 | 灰色 | 默认 0 或无任务 |
| 预警 / 不一致 | 黄色 | 目标程序号与实际程序号不一致 |
| 报警 / 急停 / 错误 | 红色 | EMG、ERROR、ALARM |
## 5. 左侧运行态势区
### 5.1 线体状态总览模块
展示对象:
- 长地轨
- 短地轨
- 关节
每个单元展示 4 个状态灯:
| 中文名称 | 英文名称 | 地址示例 | 展示方式 |
|---|---|---|---|
| PCS运行 | PCS_RUN | 长地轨 DB47.DBX169.2;短地轨 DB28.DBX10.0;关节 DB47.DBX204.0 | 在线 / 离线状态灯 |
| 允许接收任务 | ALLOW_TASK | 长地轨 DB47.DBX168.0;短地轨 DB28.DBX0.4;关节 DB47.DBX200.3 | 任务准入标识 |
| 自动模式 | AUTO_ACTIVE | 长地轨 DB47.DBX168.1;短地轨 DB28.DBX0.1;关节 DB47.DBX200.1 | 自动 / 手动标识 |
| 急停激活 | EMG | 长地轨 DB47.DBX168.2;短地轨 DB28.DBX0.2;关节 DB47.DBX200.2 | 红色急停告警 |
模块内容建议:
- 三行单元卡片,每行一个单元。
- 左侧为单元名称,中间为四个状态灯,右侧为综合状态。
- 综合状态优先级:急停 > 离线 > 不允许任务 > 手动模式 > 正常。
-`ALLOW_TASK=1``AUTO_ACTIVE=1``EMG=0` 时,显示“可派发任务”。
### 5.2 机器人任务监控模块
展示对象:
- 长地轨机器人任务
- 短地轨机器人任务
- 关节机器人任务
展示字段:
| 字段 | 英文名称 | 类型 | 展示建议 |
|---|---|---|---|
| 任务编号 | TASK_NO | Short | 当前任务主编号 |
| 起始位置 | START_POS | Short | 显示为起点编号,可在三维模型中高亮 |
| 结束位置 | END_POS | Short | 显示为终点编号,可在三维模型中高亮 |
| 配方号 | RECIPE_CODE | String | 显示当前加工/搬运配方 |
| 托盘类型 | PALLET_TYPE | Short | 转换为托盘类型标签 |
| 零件类型 | PART_KIND | Short | 1=长轴2=短轴;长地轨无该字段可显示“-” |
| 启动 | FLAG | Boolean | 显示任务启动信号是否已下发 |
模块内容建议:
- 使用三张任务卡片分别展示长地轨、短地轨、关节。
- 卡片顶部显示任务编号和执行状态。
- 中部显示“起点 -> 终点”的流向。
- 底部显示配方、托盘类型、零件类型。
- 当 START_POS 或 END_POS 有效时,在中央三维模型浮层中同步显示任务路径提示。
### 5.3 机器人反馈状态模块
机器人反馈字段:
| 字段 | 中文名称 | 展示规则 |
|---|---|---|
| READY | 准备好 | 绿色“就绪” |
| BUSY | 忙碌 | 蓝色“执行中” |
| ERROR | 错误 | 红色“异常” |
| COMPLETE | 完成 | 绿色“已完成” |
综合状态判定:
| 条件 | 状态文案 |
|---|---|
| ERROR=1 | 异常 |
| BUSY=1 | 执行中 |
| READY=1 且 BUSY=0 | 就绪 |
| COMPLETE=1 | 已完成 |
| 全部为 0 | 待机 / 未连接 |
建议用横向流程条展示:
```text
任务下发 FLAG -> READY -> BUSY -> COMPLETE
```
如果 `ERROR=1`,流程条中断并高亮错误节点。
## 6. 中央三维模型透明叠加区
### 6.1 iframe 模型容器
容器描述:
- 中央主区域占页面宽度约 48%-56%。
- 高度从顶部标题栏下方延伸到底部信息区上方。
- 内嵌 iframe 占满容器。
- iframe 初始地址使用 `https://www.baidu.com`
前端实现建议:
```html
<div class="model-stage">
<iframe src="https://www.baidu.com" class="model-frame"></iframe>
<div class="hud-layer">
<!-- 透明图表、设备标签、任务路径 -->
</div>
</div>
```
透明叠加样式建议:
```css
.model-stage {
position: relative;
overflow: hidden;
}
.model-frame {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: 0;
}
.hud-layer {
position: absolute;
inset: 0;
pointer-events: none;
}
.hud-panel {
background: rgba(8, 18, 32, 0.42);
border: 1px solid rgba(120, 210, 255, 0.35);
backdrop-filter: blur(4px);
}
.hud-panel.interactive {
pointer-events: auto;
}
```
### 6.2 三维模型浮动标签
建议在三维模型上按设备位置叠加状态标签:
| 标签对象 | 显示内容 |
|---|---|
| 长地轨 | PCS运行、自动模式、允许任务、当前任务编号 |
| 短地轨 | PCS运行、自动模式、允许任务、当前任务编号 |
| 关节 | PCS运行、自动模式、允许任务、当前任务编号 |
| F500 | 程序号、自动运行中、上料完成、下料完成、报警 |
| L2000LSY | 程序号、自动运行中、上料完成、下料完成、报警 |
| L2100SY | 程序号、自动运行中、上料完成、下料完成、报警 |
| 新日 | 程序号、上料就绪、下料就绪、自动运行中、报警 |
| MAZAK | 上料就绪、下料就绪、自动运行中、报警 |
| YKD5132H | 上料就绪、下料就绪、自动运行中、报警 |
| 打标机 | 开机中、开始打标、打标中、待机中 |
| 清洗机 | 运行中、错误、上料就绪、下料就绪 |
| 测量仪 | 运行中、错误、上料就绪、下料就绪 |
标签设计:
- 默认显示小型状态点和设备名称。
- 鼠标悬停或点击后展开信号详情。
- 报警设备标签闪烁红边,但不遮挡 iframe 主体。
- 任务相关设备可显示动态连线或箭头方向。
### 6.3 任务路径叠加
当任务数据中的 `START_POS``END_POS` 有值时,在三维模型上展示搬运路径:
```text
起始位置 START_POS -> 结束位置 END_POS
```
建议内容:
- 路径线使用半透明蓝色。
- 当前任务执行中时,路径上显示流动光点。
- 任务完成时路径短暂变绿后淡出。
- 任务错误时路径变红,并在错误位置显示机器人名称。
## 7. 右侧设备监控区
### 7.1 加工设备状态模块
设备分组:
| 单元 | 设备 |
|---|---|
| 长地轨 | F500、L2000LSY、L2100SY |
| 短地轨 | 新日、MAZAK |
| 关节 | YKD5132H |
展示字段:
| 字段 | 中文名称 | 展示建议 |
|---|---|---|
| D_PROG_NO | 目标程序号 | 显示为“目标程序” |
| A_PROG_NO | 实际程序号 | 显示为“实际程序” |
| UPLOAD_COMPLETE | 上料完成 | 长地轨设备使用 |
| UNLOAD_COMPLETE | 下料完成 | 长地轨设备使用 |
| UPLOAD_READY | 上料就绪 | 短地轨、关节设备使用 |
| UNLOAD_READY | 下料就绪 | 短地轨、关节设备使用 |
| BUSY | 自动运行中 | 蓝色运行状态 |
| ALARM | 报警 | 红色报警状态 |
模块内容建议:
- 设备以紧凑列表展示,每台设备一行。
- 每行包含设备名称、程序号、上下料状态、运行状态、报警状态。
- `D_PROG_NO``A_PROG_NO` 不一致时显示黄色“程序待同步”。
- `ALARM=1` 时整行红色高亮,并推送到底部事件列表。
### 7.2 打标机状态模块
覆盖对象:
- 长地轨打标机
- 短地轨打标机
- 关节打标机
字段:
| 字段 | 中文名称 | 说明 |
|---|---|---|
| NORMAL | 开机中 | 设备开机状态 |
| START | 开始打标 | 可作为动作触发信号 |
| BUSY | 打标中 | 正在执行打标 |
| IDLE | 待机中 | 可接收打标任务 |
展示建议:
- 使用小型工序卡片展示三台打标机。
- 状态优先级:打标中 > 开始打标 > 待机中 > 开机中 > 离线。
- 短地轨备注中提到 `START` 为 1 秒脉冲,前端需要做状态保持或事件记录,避免脉冲太短看不到。
- 短地轨 `BUSY` 备注为打标完成后一直为 1建议页面文案不要简单写“打标中”可结合 `IDLE` 或事件时间显示为“打标完成/保持信号”。
### 7.3 清洗机与测量仪模块
关节单元包含清洗机和测量仪。
字段:
| 设备 | 字段 | 中文名称 |
|---|---|---|
| 清洗机 | BUSY | 运行中 |
| 清洗机 | ERROR | 错误 |
| 清洗机 | UPLOAD_READY | 上料就绪 |
| 清洗机 | UNLOAD_READY | 下料就绪 |
| 测量仪 | BUSY | 运行中 |
| 测量仪 | ERROR | 错误 |
| 测量仪 | UPLOAD_READY | 上料就绪 |
| 测量仪 | UNLOAD_READY | 下料就绪 |
展示建议:
- 用两个并列状态卡片展示。
- 卡片顶部显示设备名称和综合状态。
- 中部显示“上料就绪 / 运行中 / 下料就绪”的流程。
- 如果 `ERROR=1`,流程变红,并在事件区生成异常记录。
## 8. 底部物料与事件区
### 8.1 物料库位矩阵模块
物料库信号:
- 长地轨S1_YES 至 S9_YES共 9 个库位。
- 短地轨S1_YES 至 S9_YES共 9 个库位。
- 关节S1_YES 至 S6_YES共 6 个库位。
展示建议:
| 单元 | 库位数量 | 展示方式 |
|---|---:|---|
| 长地轨 | 9 | 3x3 库位矩阵 |
| 短地轨 | 9 | 3x3 库位矩阵 |
| 关节 | 6 | 2x3 库位矩阵 |
库位状态:
| 信号值 | 状态 | 显示 |
|---|---|---|
| 1 | 有件 | 绿色/蓝色实心块 |
| 0 | 空位 | 暗色空框 |
统计指标:
- 总库位数24。
- 有件数量:所有 `S*_YES=1` 的数量。
- 空库位数量:总库位数 - 有件数量。
- 库位占用率:有件数量 / 总库位数。
交互建议:
- 点击库位显示所属单元、库位编号、信号地址、当前状态。
- 库位状态变化时可短暂闪烁,提示物料流转。
- 中央三维模型上可同步高亮对应库位。
### 8.2 报警与异常事件模块
事件来源:
| 事件类型 | 触发信号 |
|---|---|
| 急停事件 | EMG=1 |
| 机器人错误 | ERROR=1 |
| 加工设备报警 | ALARM=1 |
| 清洗机/测量仪错误 | ERROR=1 |
| 程序不一致 | D_PROG_NO != A_PROG_NO |
| 任务异常 | FLAG=1 后长时间未 READY、BUSY 或 COMPLETE |
事件列表字段:
- 时间
- 单元
- 设备
- 事件级别
- 事件内容
- 信号名称
- 信号地址
- 当前值
事件级别:
| 级别 | 条件 |
|---|---|
| 严重 | EMG=1、ALARM=1、ERROR=1 |
| 警告 | 程序号不一致、任务超时 |
| 提示 | 状态切换、任务完成、库位变化 |
### 8.3 任务日志模块
基于任务数据记录关键节点:
| 节点 | 触发条件 |
|---|---|
| 任务创建 | TASK_NO 变化 |
| 任务启动 | FLAG=1 |
| 机器人就绪 | READY=1 |
| 任务执行中 | BUSY=1 |
| 任务完成 | COMPLETE=1 |
| 任务异常 | ERROR=1 |
日志内容建议:
```text
10:21:08 长地轨 任务#1024 起点 1 -> 终点 6 配方 RCP-01 已启动
10:21:11 长地轨 机器人进入 BUSY
10:22:03 长地轨 任务#1024 COMPLETE
```
## 9. 数据映射明细
### 9.1 线体状态映射
| 单元 | PCS运行 | 允许接收任务 | 自动模式 | 急停激活 |
|---|---|---|---|---|
| 长地轨 | PCS_RUN / DB47.DBX169.2 | ALLOW_TASK / DB47.DBX168.0 | AUTO_ACTIVE / DB47.DBX168.1 | EMG / DB47.DBX168.2 |
| 短地轨 | PCS_RUN / DB28.DBX10.0 | ALLOW_TASK / DB28.DBX0.4 | AUTO_ACTIVE / DB28.DBX0.1 | EMG / DB28.DBX0.2 |
| 关节 | PCS_RUN / DB47.DBX204.0 | ALLOW_TASK / DB47.DBX200.3 | AUTO_ACTIVE / DB47.DBX200.1 | EMG / DB47.DBX200.2 |
### 9.2 任务数据映射
| 单元 | 任务字段 | 反馈字段 |
|---|---|---|
| 长地轨 | TASK_NO、START_POS、END_POS、RECIPE_CODE、PALLET_TYPE、FLAG | READY、BUSY、ERROR、COMPLETE |
| 短地轨 | TASK_NO、START_POS、END_POS、RECIPE_CODE、PALLET_TYPE、PART_KIND、FLAG | READY、BUSY、ERROR、COMPLETE |
| 关节 | TASK_NO、START_POS、END_POS、RECIPE_CODE、PALLET_TYPE、PART_KIND、FLAG | READY、BUSY、ERROR、COMPLETE |
### 9.3 物料库映射
| 单元 | 库位信号 | 地址范围 |
|---|---|---|
| 长地轨 | S1_YES 至 S9_YES | DB50.DBX101.0 至 DB50.DBX109.0 |
| 短地轨 | S1_YES 至 S9_YES | DB50.DBX101.0 至 DB50.DBX109.0 |
| 关节 | S1_YES 至 S6_YES | DB17.DBX0.0、DB17.DBX0.3、DB17.DBX0.6、DB17.DBX1.1、DB17.DBX1.4、DB17.DBX1.7 |
### 9.4 设备数据映射
| 单元 | 设备 | 核心信号 |
|---|---|---|
| 长地轨 | F500 | D_PROG_NO、A_PROG_NO、UPLOAD_COMPLETE、UNLOAD_COMPLETE、BUSY、ALARM |
| 长地轨 | L2000LSY | D_PROG_NO、A_PROG_NO、UPLOAD_COMPLETE、UNLOAD_COMPLETE、BUSY、ALARM |
| 长地轨 | L2100SY | D_PROG_NO、A_PROG_NO、UPLOAD_COMPLETE、UNLOAD_COMPLETE、BUSY、ALARM |
| 长地轨 | 打标机 | NORMAL、START、BUSY、IDLE |
| 短地轨 | 新日 | D_PROG_NO、A_PROG_NO、UPLOAD_READY、UNLOAD_READY、BUSY、ALARM |
| 短地轨 | MAZAK | D_PROG_NO、A_PROG_NO、UPLOAD_READY、UNLOAD_READY、BUSY、ALARM |
| 短地轨 | 打标机 | NORMAL、START、BUSY、IDLE |
| 关节 | YKD5132H | D_PROG_NO、A_PROG_NO、UPLOAD_READY、UNLOAD_READY、BUSY、ALARM |
| 关节 | 打标机 | NORMAL、START、BUSY、IDLE |
| 关节 | 清洗机 | BUSY、ERROR、UPLOAD_READY、UNLOAD_READY |
| 关节 | 测量仪 | BUSY、ERROR、UPLOAD_READY、UNLOAD_READY |
## 10. 页面模块清单
| 模块编号 | 模块名称 | 位置 | 主要内容 |
|---|---|---|---|
| M01 | 顶部总览 KPI | 顶部 | 在线单元、自动模式、允许任务、急停、执行中任务、报警数量 |
| M02 | 线体状态总览 | 左上 | 长地轨、短地轨、关节状态灯 |
| M03 | 机器人任务卡片 | 左中 | 任务编号、起点、终点、配方、托盘、零件类型 |
| M04 | 机器人反馈流程 | 左下 | FLAG、READY、BUSY、COMPLETE、ERROR |
| M05 | 三维模型 iframe | 中央 | iframe 嵌入三维产线,当前使用百度 URL |
| M06 | 模型透明 HUD | 中央叠加 | 设备标签、任务路径、报警点位、库位提示 |
| M07 | 加工设备状态 | 右上 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H |
| M08 | 辅助设备状态 | 右中 | 打标机、清洗机、测量仪 |
| M09 | 物料库位矩阵 | 底部左 | 长地轨 9 格、短地轨 9 格、关节 6 格 |
| M10 | 报警事件列表 | 底部中 | 急停、错误、报警、程序不一致 |
| M11 | 任务日志 | 底部右 | 任务创建、启动、执行、完成、异常 |
## 11. 关键交互设计
### 11.1 单元联动
点击长地轨、短地轨或关节任意模块时:
- 左侧任务卡片高亮对应单元。
- 中央三维模型高亮对应区域。
- 右侧设备列表筛选对应单元设备。
- 底部事件列表优先显示该单元事件。
### 11.2 设备详情弹窗
点击设备标签或设备列表行时,弹出设备详情:
- 设备名称
- 所属单元
- 综合状态
- 全部信号当前值
- 信号地址
- 最近状态变化时间
- 最近报警时间
### 11.3 报警定位
当出现 `EMG=1``ERROR=1``ALARM=1`
- 顶部报警数增加。
- 对应模块红色高亮。
- 中央三维模型设备标签出现红色告警标识。
- 底部报警事件列表新增记录。
- 点击事件可定位到中央模型上的对应设备。
### 11.4 任务追踪
`TASK_NO` 变化:
- 创建新的任务日志。
- 左侧任务卡片更新。
- 中央模型显示起点和终点。
- `FLAG=1` 后显示“已启动”。
- `BUSY=1` 后显示“执行中”。
- `COMPLETE=1` 后显示“已完成”。
- `ERROR=1` 后显示“异常中断”。
## 12. 内容文案建议
### 12.1 状态文案
| 原始信号 | 页面文案 |
|---|---|
| PCS_RUN=1 | PCS运行 |
| PCS_RUN=0 | PCS未运行 |
| ALLOW_TASK=1 | 允许接收任务 |
| ALLOW_TASK=0 | 禁止接收任务 |
| AUTO_ACTIVE=1 | 自动模式 |
| AUTO_ACTIVE=0 | 非自动模式 |
| EMG=1 | 急停激活 |
| READY=1 | 机器人就绪 |
| BUSY=1 | 执行中 |
| ERROR=1 | 发生错误 |
| COMPLETE=1 | 任务完成 |
| ALARM=1 | 设备报警 |
### 12.2 空数据文案
| 场景 | 文案 |
|---|---|
| 无任务 | 暂无任务 |
| 无报警 | 暂无报警 |
| 无物料 | 空库位 |
| 信号未接入 | 信号未接入 |
| 地址为空 | 地址待确认 |
## 13. 前端实现注意事项
1. iframe 需要独立层级,图表和状态层作为透明 HUD 覆盖。
2. 周边面板可以使用半透明深色背景,但中央三维模型区域应尽量保持通透。
3. 报警、急停、错误类信号必须优先展示,不能被任务状态覆盖。
4. `START` 等脉冲信号建议在前端或服务端记录边沿事件,否则大屏刷新周期可能捕捉不到。
5. `D_PROG_NO``A_PROG_NO` 可做程序一致性校验。
6. Excel 中部分地址为空或写有“不需要”,页面应显示为“地址待确认”或“不接入”,不要误判为异常。
7. 长地轨和短地轨物料库地址目前相同,开发前需要确认是否确实共用地址或只是模板复制。
8. 所有 Boolean 信号建议统一转换为 0/1、false/true 两种可识别格式,避免前端状态判断不一致。
9. 看板建议保留数据刷新时间例如“最后刷新HH:mm:ss”。
10. 三维模型 iframe 如果跨域,前端不能直接读取 iframe 内部对象,只能通过外部信号数据驱动浮层。
## 14. 推荐数据刷新策略
| 数据类型 | 刷新周期 | 说明 |
|---|---:|---|
| 线体状态 | 1 秒 | 用于快速发现急停、离线、自动模式变化 |
| 任务状态 | 1 秒 | 用于展示任务流转 |
| 设备状态 | 1-2 秒 | 用于加工设备状态展示 |
| 物料库位 | 1-3 秒 | 用于库位变化展示 |
| 报警事件 | 实时 / 1 秒 | 建议后端生成事件流 |
| 历史统计 | 30-60 秒 | 用于节拍、占用率、趋势统计 |
## 15. 后续可扩展内容
后续如果有更多数据源,可以继续增加:
- 产量统计:当前班次完成数、日完成数、合格数、不良数。
- 节拍分析:单任务平均耗时、最长等待环节、设备利用率。
- OEE 指标:可用率、性能、质量、综合效率。
- 能耗监控:设备用电、气压、液压、温度等。
- 维护提醒:报警频次、设备运行时长、保养倒计时。
- 任务回放:按时间轴回放任务路径和信号变化。
## 16. 交付结论
本设计将 Excel 中的通讯变量拆解为“线体状态、机器人任务、物料库位、设备状态、报警事件、任务日志”六类核心信息,并以中央 iframe 三维模型为主画面,通过透明 HUD 叠加图表和状态标签。
后续开发时,只需要把 `https://www.baidu.com` 替换为真实三维模型地址,并将各模块绑定到 Excel 中定义的信号地址,即可形成完整的产线通讯信号可视化看板。

Binary file not shown.