<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Hood-Type Commercial Dishwasher — Engineering Design</title> <style> @import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;500;600;700&family=Share+Tech+Mono&family=Exo+2:wght@300;400;600;800&display=swap'); :root { --bg: #0a0e1a; --panel: #0f1628; --panel2: #141c30; --border: #1e2d4a; --accent: #00c8ff; --accent2: #ff6b00; --accent3: #00ff88; --warn: #ffcc00; --danger: #ff3355; --text: #d0e4f7; --muted: #5a7898; --mono: 'Share Tech Mono', monospace; --head: 'Exo 2', sans-serif; --body: 'Rajdhani', sans-serif; } * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { background: var(--bg); color: var(--text); font-family: var(--body); font-size: 15px; line-height: 1.6; min-height: 100vh; } /* ── HEADER ── */ .header { background: linear-gradient(135deg, #060b18 0%, #0d1829 50%, #060b18 100%); border-bottom: 2px solid var(--accent); padding: 28px 40px; position: relative; overflow: hidden; } .header::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient(0deg, transparent, transparent 39px, rgba(0,200,255,0.04) 40px), repeating-linear-gradient(90deg, transparent, transparent 39px, rgba(0,200,255,0.04) 40px); pointer-events: none; } .header-badge { display: inline-block; background: rgba(0,200,255,0.1); border: 1px solid var(--accent); color: var(--accent); font-family: var(--mono); font-size: 11px; padding: 3px 10px; letter-spacing: 2px; margin-bottom: 10px; } .header h1 { font-family: var(--head); font-size: 32px; font-weight: 800; color: #fff; letter-spacing: 1px; } .header h1 span { color: var(--accent); } .header-sub { font-family: var(--mono); font-size: 13px; color: var(--muted); margin-top: 6px; } .header-meta { display: flex; gap: 24px; margin-top: 14px; flex-wrap: wrap; } .header-meta-item { font-family: var(--mono); font-size: 11px; color: var(--muted); } .header-meta-item strong { color: var(--accent3); } /* ── NAV TABS ── */ .nav-tabs { display: flex; background: var(--panel); border-bottom: 1px solid var(--border); padding: 0 40px; gap: 0; position: sticky; top: 0; z-index: 100; } .tab-btn { background: none; border: none; font-family: var(--head); font-size: 13px; font-weight: 600; color: var(--muted); cursor: pointer; padding: 14px 20px; border-bottom: 3px solid transparent; transition: all .2s; letter-spacing: 1px; text-transform: uppercase; } .tab-btn:hover { color: var(--text); } .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); } /* ── CONTENT SECTIONS ── */ .section { display: none; padding: 32px 40px; } .section.active { display: block; } .section-title { font-family: var(--head); font-size: 22px; font-weight: 800; color: #fff; margin-bottom: 6px; display: flex; align-items: center; gap: 10px; } .section-title .icon { width: 30px; height: 30px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 15px; } .section-desc { color: var(--muted); font-size: 14px; margin-bottom: 28px; font-family: var(--mono); border-left: 3px solid var(--accent); padding-left: 12px; } /* ── CARDS ── */ .card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 20px; margin-bottom: 20px; } .card-title { font-family: var(--head); font-size: 14px; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: 1.5px; margin-bottom: 14px; padding-bottom: 8px; border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; } .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; } @media(max-width:900px) { .grid-2,.grid-3 { grid-template-columns: 1fr; } } /* ── SYSTEM ARCHITECTURE DIAGRAM ── */ .arch-diagram { background: var(--panel2); border: 1px solid var(--border); border-radius: 12px; padding: 24px; margin-bottom: 24px; overflow-x: auto; } .arch-svg { width: 100%; min-width: 820px; height: auto; display: block; } /* ── SPEC TABLE ── */ .spec-table { width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 12px; } .spec-table th { background: rgba(0,200,255,0.08); color: var(--accent); padding: 8px 12px; text-align: left; font-weight: 600; border-bottom: 1px solid var(--border); text-transform: uppercase; letter-spacing: 1px; } .spec-table td { padding: 7px 12px; border-bottom: 1px solid rgba(30,45,74,0.5); color: var(--text); } .spec-table tr:last-child td { border-bottom: none; } .spec-table tr:hover td { background: rgba(0,200,255,0.04); } .tag { display: inline-block; padding: 2px 7px; border-radius: 3px; font-size: 10px; font-weight: 700; letter-spacing: 1px; } .tag-in { background: rgba(0,255,136,0.15); color: var(--accent3); border: 1px solid var(--accent3); } .tag-out { background: rgba(255,107,0,0.15); color: var(--accent2); border: 1px solid var(--accent2); } .tag-ai { background: rgba(0,200,255,0.15); color: var(--accent); border: 1px solid var(--accent); } /* ── CYCLE TIMELINE ── */ .timeline { display: flex; gap: 0; overflow-x: auto; margin: 16px 0; } .timeline-step { flex: 1; min-width: 100px; text-align: center; position: relative; } .timeline-step::after { content: '►'; position: absolute; right: -8px; top: 17px; color: var(--muted); font-size: 12px; z-index: 2; } .timeline-step:last-child::after { display: none; } .step-box { margin: 0 8px; padding: 10px 8px; border-radius: 8px; border: 1px solid var(--border); font-size: 12px; font-family: var(--mono); } .step-num { font-family: var(--head); font-size: 20px; font-weight: 800; margin-bottom: 2px; } .step-name { font-size: 11px; color: var(--text); margin-bottom: 4px; font-weight: 600; } .step-time { font-size: 10px; color: var(--muted); } .s1 { background: rgba(0,200,255,0.08); border-color: var(--accent); } .s1 .step-num { color: var(--accent); } .s2 { background: rgba(255,107,0,0.08); border-color: var(--accent2); } .s2 .step-num { color: var(--accent2); } .s3 { background: rgba(0,255,136,0.08); border-color: var(--accent3); } .s3 .step-num { color: var(--accent3); } .s4 { background: rgba(255,204,0,0.08); border-color: var(--warn); } .s4 .step-num { color: var(--warn); } .s5 { background: rgba(255,51,85,0.08); border-color: var(--danger); } .s5 .step-num { color: var(--danger); } /* ── ELECTRICAL ── */ .elec-svg { width:100%; height: auto; display:block; } /* ── PLC CODE ── */ .plc-code { background: #060d18; border: 1px solid var(--border); border-radius: 8px; padding: 18px 20px; font-family: var(--mono); font-size: 12px; line-height: 1.75; overflow-x: auto; margin-bottom: 16px; white-space: pre; } .kw { color: #569cd6; } .cm { color: #608b4e; } .addr { color: #ce9178; } .func { color: #dcdcaa; } .num { color: #b5cea8; } .str { color: #d69d85; } .coil { color: #ff6b00; font-weight: bold; } .contact { color: var(--accent); } .timer { color: var(--warn); } .ladder-rung { border: 1px solid #1e2d4a; border-radius: 6px; margin-bottom: 12px; overflow: hidden; } .rung-header { background: rgba(0,200,255,0.06); padding: 6px 14px; font-size: 11px; color: var(--muted); letter-spacing: 1px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; } .rung-body { padding: 10px 14px; } /* ── COMPONENT BOX ── */ .comp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px,1fr)); gap: 12px; } .comp-item { background: var(--panel2); border: 1px solid var(--border); border-radius: 8px; padding: 14px; text-align: center; transition: border-color .2s; } .comp-item:hover { border-color: var(--accent); } .comp-icon { font-size: 26px; margin-bottom: 6px; } .comp-label { font-family: var(--head); font-size: 12px; font-weight: 700; color: var(--text); text-transform: uppercase; letter-spacing: 1px; } .comp-spec { font-family: var(--mono); font-size: 10px; color: var(--muted); margin-top: 4px; } /* ── SCROLLBAR ── */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: var(--bg); } ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; } /* ── IO TABLE COLORS ── */ .row-di { background: rgba(0,255,136,0.04); } .row-do { background: rgba(255,107,0,0.04); } .row-ai { background: rgba(0,200,255,0.04); } </style> </head> <body> <!-- HEADER --> <div class="header"> <div class="header-badge">ENGINEERING DESIGN DOCUMENT</div> <h1><span>Hood-Type</span> Commercial Dishwasher System</h1> <div class="header-sub">// ECO Spray Arm Technology Integration — Full System Design</div> <div class="header-meta"> <div class="header-meta-item">Project: <strong>K-ONE-DW-HD-001</strong></div> <div class="header-meta-item">Rev: <strong>A1.0</strong></div> <div class="header-meta-item">Standard: <strong>IEC 60335-2-58 / NSF-3</strong></div> <div class="header-meta-item">Power: <strong>3Ø 380VAC / 50Hz</strong></div> <div class="header-meta-item">Capacity: <strong>60–100 racks/hr</strong></div> </div> </div> <!-- NAV TABS --> <nav class="nav-tabs"> <button class="tab-btn active" onclick="showTab('arch')">① System Architecture</button> <button class="tab-btn" onclick="showTab('elec')">② Electrical Diagram</button> <button class="tab-btn" onclick="showTab('io')">③ PLC I/O List</button> <button class="tab-btn" onclick="showTab('ladder')">④ PLC Program</button> <button class="tab-btn" onclick="showTab('specs')">⑤ Specifications</button> </nav> <!-- ═══════════════════════════════════════════════════════════ --> <!-- TAB 1: SYSTEM ARCHITECTURE --> <!-- ═══════════════════════════════════════════════════════════ --> <section class="section active" id="tab-arch"> <div class="section-title"> <div class="icon" style="background:rgba(0,200,255,0.15)">🏗️</div> System Architecture Overview </div> <div class="section-desc">// Full subsystem block diagram — ECO Spray Arm integrated Hood-Type Commercial Dishwasher</div> <!-- Main Architecture SVG --> <div class="arch-diagram"> <svg class="arch-svg" viewBox="0 0 900 620" xmlns="http://www.w3.org/2000/svg" font-family="'Share Tech Mono',monospace"> <defs> <filter id="glow"><feGaussianBlur stdDeviation="3" result="blur"/><feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge></filter> <marker id="arrow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L0,6 L8,3 z" fill="#00c8ff" opacity="0.8"/> </marker> <marker id="arrow2" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L0,6 L8,3 z" fill="#ff6b00" opacity="0.8"/> </marker> <marker id="arrow3" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L0,6 L8,3 z" fill="#00ff88" opacity="0.8"/> </marker> </defs> <!-- Background grid --> <rect width="900" height="620" fill="#0a0e1a"/> <g stroke="#1e2d4a" stroke-width="0.5" opacity="0.4"> <line x1="0" y1="0" x2="900" y2="0"/> <line x1="0" y1="100" x2="900" y2="100"/> <line x1="0" y1="200" x2="900" y2="200"/> <line x1="0" y1="300" x2="900" y2="300"/> <line x1="0" y1="400" x2="900" y2="400"/> <line x1="0" y1="500" x2="900" y2="500"/> <line x1="0" y1="600" x2="900" y2="600"/> </g> <!-- === POWER SUPPLY === --> <rect x="10" y="10" width="130" height="70" rx="6" fill="#0f1628" stroke="#ffcc00" stroke-width="1.5"/> <text x="75" y="32" fill="#ffcc00" font-size="10" text-anchor="middle" font-weight="bold">POWER SUPPLY</text> <text x="75" y="48" fill="#d0e4f7" font-size="9" text-anchor="middle">3Ø 380VAC/50Hz</text> <text x="75" y="62" fill="#5a7898" font-size="8.5" text-anchor="middle">Main CB + MCCB</text> <!-- === PLC CONTROLLER (CENTER) === --> <rect x="320" y="10" width="260" height="90" rx="8" fill="#0f1628" stroke="#00c8ff" stroke-width="2"/> <text x="450" y="35" fill="#00c8ff" font-size="12" text-anchor="middle" font-weight="bold" filter="url(#glow)">PLC CONTROLLER</text> <text x="450" y="52" fill="#d0e4f7" font-size="10" text-anchor="middle">Siemens S7-1200 (CPU 1214C)</text> <text x="450" y="66" fill="#5a7898" font-size="9" text-anchor="middle">DI:14 DO:10 AI:2 + SM1234</text> <text x="450" y="80" fill="#5a7898" font-size="9" text-anchor="middle">24VDC I/O • PROFINET</text> <!-- === HMI === --> <rect x="680" y="10" width="130" height="70" rx="6" fill="#0f1628" stroke="#00c8ff" stroke-width="1.5"/> <text x="745" y="32" fill="#00c8ff" font-size="10" text-anchor="middle" font-weight="bold">HMI PANEL</text> <text x="745" y="48" fill="#d0e4f7" font-size="9" text-anchor="middle">Siemens KTP700</text> <text x="745" y="62" fill="#5a7898" font-size="8.5" text-anchor="middle">7" Touch • PROFINET</text> <!-- PLC ↔ HMI --> <line x1="680" y1="45" x2="580" y2="45" stroke="#00c8ff" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow)"/> <text x="630" y="39" fill="#00c8ff" font-size="8" text-anchor="middle">PROFINET</text> <!-- Power → PLC --> <line x1="140" y1="45" x2="320" y2="45" stroke="#ffcc00" stroke-width="1.5" marker-end="url(#arrow)"/> <text x="230" y="39" fill="#ffcc00" font-size="8" text-anchor="middle">24VDC</text> <!-- === WASH CHAMBER (CENTER BIG BOX) === --> <rect x="250" y="160" width="400" height="260" rx="10" fill="#0d1520" stroke="#00c8ff" stroke-width="2"/> <text x="450" y="182" fill="#00c8ff" font-size="12" text-anchor="middle" font-weight="bold">WASH CHAMBER</text> <!-- Hood --> <rect x="280" y="190" width="340" height="40" rx="5" fill="#141c30" stroke="#5a7898" stroke-width="1"/> <text x="450" y="205" fill="#d0e4f7" font-size="9" text-anchor="middle">▲ HOOD (Lift Mechanism)</text> <text x="450" y="218" fill="#5a7898" font-size="8" text-anchor="middle">Motor-driven / Counterbalance Spring | LS1: Hood Open | LS2: Hood Closed</text> <!-- Upper Spray Arm --> <rect x="290" y="238" width="320" height="28" rx="5" fill="rgba(0,200,255,0.08)" stroke="#00c8ff" stroke-width="1.5"/> <text x="450" y="250" fill="#00c8ff" font-size="9" text-anchor="middle" font-weight="bold">🌀 UPPER SPRAY ARM</text> <text x="450" y="261" fill="#5a7898" font-size="7.5" text-anchor="middle">ECO Rotating Multi-Nozzle | 6-arm radial | 2.5 bar spray pressure</text> <!-- Rack Rail --> <rect x="290" y="274" width="320" height="20" rx="3" fill="#0f1628" stroke="#5a7898" stroke-width="1" stroke-dasharray="4,2"/> <text x="450" y="288" fill="#5a7898" font-size="8" text-anchor="middle">═══ RACK RAIL (600×500mm DIN basket) ═══</text> <!-- Lower Spray Arm --> <rect x="290" y="302" width="320" height="28" rx="5" fill="rgba(255,107,0,0.08)" stroke="#ff6b00" stroke-width="1.5"/> <text x="450" y="314" fill="#ff6b00" font-size="9" text-anchor="middle" font-weight="bold">🌀 LOWER SPRAY ARM</text> <text x="450" y="325" fill="#5a7898" font-size="7.5" text-anchor="middle">ECO Rotating Multi-Nozzle | 4-arm radial | 3.0 bar spray pressure</text> <!-- Side Rinse Jets --> <rect x="290" y="338" width="320" height="22" rx="3" fill="rgba(0,255,136,0.06)" stroke="#00ff88" stroke-width="1"/> <text x="450" y="353" fill="#00ff88" font-size="8" text-anchor="middle">↔ SIDE RINSE JETS (Final Rinse Booster)</text> <!-- Wash Tank --> <rect x="290" y="368" width="148" height="38" rx="5" fill="#0f1628" stroke="#ff6b00" stroke-width="1.5"/> <text x="364" y="383" fill="#ff6b00" font-size="9" text-anchor="middle" font-weight="bold">WASH TANK</text> <text x="364" y="395" fill="#5a7898" font-size="8" text-anchor="middle">50L | 55–65°C | 9kW HTR</text> <!-- Rinse Tank --> <rect x="462" y="368" width="148" height="38" rx="5" fill="#0f1628" stroke="#00ff88" stroke-width="1.5"/> <text x="536" y="383" fill="#00ff88" font-size="9" text-anchor="middle" font-weight="bold">RINSE BOILER</text> <text x="536" y="395" fill="#5a7898" font-size="8" text-anchor="middle">8L | 82–88°C | 3kW HTR</text> <!-- === LEFT SUBSYSTEMS === --> <!-- Water Supply --> <rect x="10" y="160" width="130" height="60" rx="6" fill="#0f1628" stroke="#00c8ff" stroke-width="1.5"/> <text x="75" y="180" fill="#00c8ff" font-size="10" text-anchor="middle" font-weight="bold">WATER SUPPLY</text> <text x="75" y="195" fill="#d0e4f7" font-size="9" text-anchor="middle">Mains → SV1 Fill Valve</text> <text x="75" y="208" fill="#5a7898" font-size="8" text-anchor="middle">Flow Meter / Float SW</text> <!-- Wash Pump --> <rect x="10" y="240" width="130" height="60" rx="6" fill="#0f1628" stroke="#ff6b00" stroke-width="1.5"/> <text x="75" y="260" fill="#ff6b00" font-size="10" text-anchor="middle" font-weight="bold">WASH PUMP</text> <text x="75" y="274" fill="#d0e4f7" font-size="9" text-anchor="middle">0.75 kW / 3450 RPM</text> <text x="75" y="287" fill="#5a7898" font-size="8" text-anchor="middle">Centrifugal | 3Ø 380V</text> <!-- Rinse Pump --> <rect x="10" y="320" width="130" height="60" rx="6" fill="#0f1628" stroke="#00ff88" stroke-width="1.5"/> <text x="75" y="340" fill="#00ff88" font-size="10" text-anchor="middle" font-weight="bold">RINSE PUMP</text> <text x="75" y="354" fill="#d0e4f7" font-size="9" text-anchor="middle">0.37 kW / 2850 RPM</text> <text x="75" y="367" fill="#5a7898" font-size="8" text-anchor="middle">Centrifugal | 3Ø 380V</text> <!-- Drain Pump --> <rect x="10" y="400" width="130" height="60" rx="6" fill="#0f1628" stroke="#ffcc00" stroke-width="1.5"/> <text x="75" y="420" fill="#ffcc00" font-size="10" text-anchor="middle" font-weight="bold">DRAIN PUMP</text> <text x="75" y="434" fill="#d0e4f7" font-size="9" text-anchor="middle">0.37 kW Submersible</text> <text x="75" y="447" fill="#5a7898" font-size="8" text-anchor="middle">Tank → Floor Drain</text> <!-- === RIGHT SUBSYSTEMS === --> <!-- Detergent Dosing --> <rect x="760" y="160" width="130" height="60" rx="6" fill="#0f1628" stroke="#ff3355" stroke-width="1.5"/> <text x="825" y="180" fill="#ff3355" font-size="10" text-anchor="middle" font-weight="bold">DETERGENT</text> <text x="825" y="193" fill="#d0e4f7" font-size="9" text-anchor="middle">Peristaltic Dosing</text> <text x="825" y="206" fill="#5a7898" font-size="8" text-anchor="middle">3–8 mL/rack • DO1</text> <!-- Rinse Aid Dosing --> <rect x="760" y="240" width="130" height="60" rx="6" fill="#0f1628" stroke="#ff6b00" stroke-width="1.5"/> <text x="825" y="260" fill="#ff6b00" font-size="10" text-anchor="middle" font-weight="bold">RINSE AID</text> <text x="825" y="273" fill="#d0e4f7" font-size="9" text-anchor="middle">Peristaltic Dosing</text> <text x="825" y="286" fill="#5a7898" font-size="8" text-anchor="middle">1–3 mL/rack • DO2</text> <!-- Heating Control --> <rect x="760" y="320" width="130" height="60" rx="6" fill="#0f1628" stroke="#ffcc00" stroke-width="1.5"/> <text x="825" y="340" fill="#ffcc00" font-size="10" text-anchor="middle" font-weight="bold">HEATER CTL</text> <text x="825" y="354" fill="#d0e4f7" font-size="9" text-anchor="middle">SSR Relay Switching</text> <text x="825" y="367" fill="#5a7898" font-size="8" text-anchor="middle">Wash 9kW | Boiler 3kW</text> <!-- Temperature Sensors --> <rect x="760" y="400" width="130" height="60" rx="6" fill="#0f1628" stroke="#00c8ff" stroke-width="1.5"/> <text x="825" y="420" fill="#00c8ff" font-size="10" text-anchor="middle" font-weight="bold">SENSORS</text> <text x="825" y="434" fill="#d0e4f7" font-size="9" text-anchor="middle">PT100 x2 | Float SW x3</text> <text x="825" y="447" fill="#5a7898" font-size="8" text-anchor="middle">Hood LS | Pressure SW</text> <!-- === BOTTOM: ALARM & SAFETY === --> <rect x="320" y="500" width="130" height="60" rx="6" fill="#0f1628" stroke="#ff3355" stroke-width="1.5"/> <text x="385" y="522" fill="#ff3355" font-size="10" text-anchor="middle" font-weight="bold">ALARM SYSTEM</text> <text x="385" y="536" fill="#d0e4f7" font-size="9" text-anchor="middle">Buzzer + Tower Light</text> <text x="385" y="549" fill="#5a7898" font-size="8" text-anchor="middle">Over-temp | Low Water</text> <rect x="470" y="500" width="130" height="60" rx="6" fill="#0f1628" stroke="#ff3355" stroke-width="1.5"/> <text x="535" y="522" fill="#ff3355" font-size="10" text-anchor="middle" font-weight="bold">SAFETY CIRCUIT</text> <text x="535" y="536" fill="#d0e4f7" font-size="9" text-anchor="middle">Hood Interlock</text> <text x="535" y="549" fill="#5a7898" font-size="8" text-anchor="middle">Thermal OL | E-Stop</text> <!-- === FLOW LINES === --> <!-- Water supply → Chamber --> <line x1="140" y1="190" x2="250" y2="250" stroke="#00c8ff" stroke-width="1.5" marker-end="url(#arrow)"/> <!-- Wash Pump → Lower Arm --> <line x1="140" y1="270" x2="290" y2="316" stroke="#ff6b00" stroke-width="1.5" marker-end="url(#arrow2)"/> <!-- Rinse Pump → Rinse Boiler --> <line x1="140" y1="350" x2="290" y2="387" stroke="#00ff88" stroke-width="1.5" marker-end="url(#arrow3)"/> <!-- Drain pump ← wash tank --> <line x1="290" y1="400" x2="140" y2="430" stroke="#ffcc00" stroke-width="1.5" marker-end="url(#arrow)"/> <!-- Detergent → Chamber --> <line x1="760" y1="190" x2="650" y2="280" stroke="#ff3355" stroke-width="1.5" marker-end="url(#arrow)"/> <!-- Rinse Aid → Chamber --> <line x1="760" y1="270" x2="650" y2="355" stroke="#ff6b00" stroke-width="1.5" marker-end="url(#arrow2)"/> <!-- Heater CTL → Chamber --> <line x1="760" y1="350" x2="650" y2="385" stroke="#ffcc00" stroke-width="1.5" marker-end="url(#arrow)"/> <!-- Sensors ← Chamber --> <line x1="650" y1="415" x2="760" y2="430" stroke="#00c8ff" stroke-width="1.5" marker-end="url(#arrow)"/> <!-- PLC → Chamber (control) --> <line x1="450" y1="100" x2="450" y2="160" stroke="#00c8ff" stroke-width="2" stroke-dasharray="6,3" marker-end="url(#arrow)"/> <!-- PLC → Alarm/Safety --> <line x1="400" y1="100" x2="385" y2="500" stroke="#ff3355" stroke-width="1.5" stroke-dasharray="4,3" marker-end="url(#arrow)"/> <line x1="500" y1="100" x2="535" y2="500" stroke="#ff3355" stroke-width="1.5" stroke-dasharray="4,3" marker-end="url(#arrow)"/> <!-- Labels on lines --> <text x="195" y="225" fill="#00c8ff" font-size="7.5" text-anchor="middle">Fill Water</text> <text x="195" y="307" fill="#ff6b00" font-size="7.5" text-anchor="middle">Wash Circuit</text> <text x="195" y="365" fill="#00ff88" font-size="7.5" text-anchor="middle">Rinse Water</text> <text x="200" y="405" fill="#ffcc00" font-size="7.5" text-anchor="middle">Drain</text> </svg> </div> <!-- Wash Cycle Timeline --> <div class="card"> <div class="card-title">🔄 Automated Wash Cycle Sequence</div> <div class="timeline"> <div class="timeline-step"> <div class="step-box s1"> <div class="step-num">1</div> <div class="step-name">PREHEAT</div> <div class="step-time">≤ 10 min (startup)</div> </div> </div> <div class="timeline-step"> <div class="step-box s2"> <div class="step-num">2</div> <div class="step-name">RACK IN / HOOD CLOSE</div> <div class="step-time">Operator action</div> </div> </div> <div class="timeline-step"> <div class="step-box s3"> <div class="step-num">3</div> <div class="step-name">PRE-RINSE</div> <div class="step-time">5 sec (optional)</div> </div> </div> <div class="timeline-step"> <div class="step-box s2"> <div class="step-num">4</div> <div class="step-name">WASH</div> <div class="step-time">60 sec @ 60°C</div> </div> </div> <div class="timeline-step"> <div class="step-box s3"> <div class="step-num">5</div> <div class="step-name">FINAL RINSE</div> <div class="step-time">12 sec @ 85°C</div> </div> </div> <div class="timeline-step"> <div class="step-box s4"> <div class="step-num">6</div> <div class="step-name">DRAIN</div> <div class="step-time">15 sec</div> </div> </div> <div class="timeline-step"> <div class="step-box s5"> <div class="step-num">7</div> <div class="step-name">HOOD OPEN / DONE</div> <div class="step-time">Buzzer + indicator</div> </div> </div> </div> <div style="font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:8px;"> Total Cycle Time: ~90 sec/rack | Throughput: 60–100 racks/hr | ECO Spray Arms active during Steps 3–5 </div> </div> <!-- Key Components --> <div class="card"> <div class="card-title">⚙️ Key Components</div> <div class="comp-grid"> <div class="comp-item"> <div class="comp-icon">🌀</div> <div class="comp-label">ECO Spray Arms</div> <div class="comp-spec">Upper + Lower Rotating<br>Multi-Nozzle Design</div> </div> <div class="comp-item"> <div class="comp-icon">💧</div> <div class="comp-label">Wash Pump</div> <div class="comp-spec">0.75 kW Centrifugal<br>3Ø 380V / 50Hz</div> </div> <div class="comp-item"> <div class="comp-icon">🔥</div> <div class="comp-label">Wash Heater</div> <div class="comp-spec">9 kW Immersion<br>Target: 55–65°C</div> </div> <div class="comp-item"> <div class="comp-icon">☁️</div> <div class="comp-label">Rinse Boiler</div> <div class="comp-spec">3 kW / 8L Tank<br>Target: 82–88°C</div> </div> <div class="comp-item"> <div class="comp-icon">🏠</div> <div class="comp-label">Hood Motor</div> <div class="comp-spec">0.18 kW Gear Motor<br>Linear Actuator</div> </div> <div class="comp-item"> <div class="comp-icon">🧪</div> <div class="comp-label">Dosing Pumps</div> <div class="comp-spec">Peristaltic x2<br>Detergent + Rinse Aid</div> </div> <div class="comp-item"> <div class="comp-icon">🖥️</div> <div class="comp-label">PLC (S7-1200)</div> <div class="comp-spec">CPU 1214C DC/DC/DC<br>+SM1234 AI Module</div> </div> <div class="comp-item"> <div class="comp-icon">📺</div> <div class="comp-label">HMI Panel</div> <div class="comp-spec">Siemens KTP700<br>7" Touchscreen</div> </div> </div> </div> </section> <!-- ═══════════════════════════════════════════════════════════ --> <!-- TAB 2: ELECTRICAL DIAGRAM --> <!-- ═══════════════════════════════════════════════════════════ --> <section class="section" id="tab-elec"> <div class="section-title"> <div class="icon" style="background:rgba(255,204,0,0.15)">⚡</div> Electrical Schematic Diagram </div> <div class="section-desc">// Power distribution, motor control, heating circuits, and 24VDC control wiring</div> <div class="arch-diagram"> <svg viewBox="0 0 920 780" xmlns="http://www.w3.org/2000/svg" font-family="'Share Tech Mono',monospace" style="width:100%;height:auto;display:block;"> <rect width="920" height="780" fill="#0a0e1a"/> <!-- Title Block --> <rect x="10" y="10" width="900" height="36" rx="4" fill="#0f1628" stroke="#1e2d4a"/> <text x="460" y="24" fill="#00c8ff" font-size="11" text-anchor="middle" font-weight="bold">HOOD-TYPE DISHWASHER — ELECTRICAL SCHEMATIC (SINGLE-LINE + CONTROL)</text> <text x="460" y="36" fill="#5a7898" font-size="8.5" text-anchor="middle">Drawing No: K1-DW-E-001 | Rev A | 3Ø 380VAC 50Hz | Control: 24VDC</text> <!-- === INCOMING SUPPLY === --> <text x="30" y="70" fill="#ffcc00" font-size="10" font-weight="bold">L1 L2 L3 N PE</text> <line x1="30" y1="75" x2="30" y2="95" stroke="#ffcc00" stroke-width="2"/> <line x1="60" y1="75" x2="60" y2="95" stroke="#ffcc00" stroke-width="2"/> <line x1="90" y1="75" x2="90" y2="95" stroke="#ffcc00" stroke-width="2"/> <line x1="120" y1="75" x2="120" y2="95" stroke="#5a7898" stroke-width="1.5"/> <line x1="150" y1="75" x2="150" y2="95" stroke="#00ff88" stroke-width="2"/> <!-- Main Circuit Breaker QF0 --> <rect x="20" y="95" width="145" height="40" rx="4" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="92" y="112" fill="#ffcc00" font-size="9" text-anchor="middle" font-weight="bold">QF0 – MAIN MCB</text> <text x="92" y="126" fill="#d0e4f7" font-size="8" text-anchor="middle">4P 63A / 10kA IEC 60947</text> <!-- BUS BAR --> <rect x="10" y="145" width="900" height="16" rx="3" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="460" y="157" fill="#ffcc00" font-size="8" text-anchor="middle">━━━━━━━━━━━━━━━━━ 3Ø 380VAC MAIN BUSBAR ━━━━━━━━━━━━━━━━━</text> <!-- === CIRCUIT BRANCHES === --> <!-- Branch positions: x = 40, 165, 290, 415, 540, 665, 790 --> <!-- C1: Wash Heater --> <line x1="50" y1="161" x2="50" y2="185" stroke="#ff6b00" stroke-width="2"/> <rect x="15" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#ff6b00" stroke-width="1.5"/> <text x="55" y="197" fill="#ff6b00" font-size="8" text-anchor="middle">QF1 3P 32A</text> <text x="55" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Wash Heater</text> <line x1="50" y1="213" x2="50" y2="230" stroke="#ff6b00" stroke-width="2"/> <rect x="15" y="230" width="80" height="22" rx="3" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="55" y="245" fill="#ffcc00" font-size="8" text-anchor="middle">KM1 (SSR)</text> <line x1="50" y1="252" x2="50" y2="268" stroke="#ff6b00" stroke-width="2"/> <rect x="12" y="268" width="86" height="32" rx="3" fill="#141c30" stroke="#ff6b00" stroke-width="1.5"/> <text x="55" y="283" fill="#ff6b00" font-size="9" text-anchor="middle" font-weight="bold">EH1</text> <text x="55" y="295" fill="#5a7898" font-size="7" text-anchor="middle">9kW/380V Wash</text> <!-- C2: Boiler Heater --> <line x1="175" y1="161" x2="175" y2="185" stroke="#ff6b00" stroke-width="2"/> <rect x="140" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#ff6b00" stroke-width="1.5"/> <text x="180" y="197" fill="#ff6b00" font-size="8" text-anchor="middle">QF2 3P 16A</text> <text x="180" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Boiler Heater</text> <line x1="175" y1="213" x2="175" y2="230" stroke="#ff6b00" stroke-width="2"/> <rect x="140" y="230" width="80" height="22" rx="3" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="180" y="245" fill="#ffcc00" font-size="8" text-anchor="middle">KM2 (SSR)</text> <line x1="175" y1="252" x2="175" y2="268" stroke="#ff6b00" stroke-width="2"/> <rect x="137" y="268" width="86" height="32" rx="3" fill="#141c30" stroke="#ff6b00" stroke-width="1.5"/> <text x="180" y="283" fill="#ff6b00" font-size="9" text-anchor="middle" font-weight="bold">EH2</text> <text x="180" y="295" fill="#5a7898" font-size="7" text-anchor="middle">3kW/380V Boiler</text> <!-- C3: Wash Pump Motor --> <line x1="300" y1="161" x2="300" y2="185" stroke="#00c8ff" stroke-width="2"/> <rect x="265" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#00c8ff" stroke-width="1.5"/> <text x="305" y="197" fill="#00c8ff" font-size="8" text-anchor="middle">QF3 3P 6A</text> <text x="305" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Wash Pump</text> <line x1="300" y1="213" x2="300" y2="225" stroke="#00c8ff" stroke-width="2"/> <rect x="265" y="225" width="80" height="22" rx="3" fill="#141c30" stroke="#5a7898" stroke-width="1"/> <text x="305" y="240" fill="#d0e4f7" font-size="8" text-anchor="middle">F1 OL 3.5A</text> <line x1="300" y1="247" x2="300" y2="261" stroke="#00c8ff" stroke-width="2"/> <rect x="265" y="261" width="80" height="22" rx="3" fill="#141c30" stroke="#00c8ff" stroke-width="1.5"/> <text x="305" y="276" fill="#00c8ff" font-size="8" text-anchor="middle">KM3 Contactor</text> <line x1="300" y1="283" x2="300" y2="297" stroke="#00c8ff" stroke-width="2"/> <rect x="270" y="297" width="65" height="30" rx="15" fill="#141c30" stroke="#00c8ff" stroke-width="1.5"/> <text x="302" y="310" fill="#00c8ff" font-size="9" text-anchor="middle" font-weight="bold">M1</text> <text x="302" y="321" fill="#5a7898" font-size="7" text-anchor="middle">0.75kW</text> <!-- C4: Rinse Pump Motor --> <line x1="420" y1="161" x2="420" y2="185" stroke="#00ff88" stroke-width="2"/> <rect x="385" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#00ff88" stroke-width="1.5"/> <text x="425" y="197" fill="#00ff88" font-size="8" text-anchor="middle">QF4 3P 4A</text> <text x="425" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Rinse Pump</text> <line x1="420" y1="213" x2="420" y2="225" stroke="#00ff88" stroke-width="2"/> <rect x="385" y="225" width="80" height="22" rx="3" fill="#141c30" stroke="#5a7898" stroke-width="1"/> <text x="425" y="240" fill="#d0e4f7" font-size="8" text-anchor="middle">F2 OL 2.0A</text> <line x1="420" y1="247" x2="420" y2="261" stroke="#00ff88" stroke-width="2"/> <rect x="385" y="261" width="80" height="22" rx="3" fill="#141c30" stroke="#00ff88" stroke-width="1.5"/> <text x="425" y="276" fill="#00ff88" font-size="8" text-anchor="middle">KM4 Contactor</text> <line x1="420" y1="283" x2="420" y2="297" stroke="#00ff88" stroke-width="2"/> <rect x="392" y="297" width="65" height="30" rx="15" fill="#141c30" stroke="#00ff88" stroke-width="1.5"/> <text x="424" y="310" fill="#00ff88" font-size="9" text-anchor="middle" font-weight="bold">M2</text> <text x="424" y="321" fill="#5a7898" font-size="7" text-anchor="middle">0.37kW</text> <!-- C5: Drain Pump Motor --> <line x1="540" y1="161" x2="540" y2="185" stroke="#ffcc00" stroke-width="2"/> <rect x="505" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="545" y="197" fill="#ffcc00" font-size="8" text-anchor="middle">QF5 1P 6A</text> <text x="545" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Drain Pump</text> <line x1="540" y1="213" x2="540" y2="230" stroke="#ffcc00" stroke-width="2"/> <rect x="505" y="230" width="80" height="22" rx="3" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="545" y="245" fill="#ffcc00" font-size="8" text-anchor="middle">KM5 Contactor</text> <line x1="540" y1="252" x2="540" y2="266" stroke="#ffcc00" stroke-width="2"/> <rect x="512" y="266" width="65" height="30" rx="15" fill="#141c30" stroke="#ffcc00" stroke-width="1.5"/> <text x="544" y="279" fill="#ffcc00" font-size="9" text-anchor="middle" font-weight="bold">M3</text> <text x="544" y="290" fill="#5a7898" font-size="7" text-anchor="middle">0.37kW</text> <!-- C6: Control Transformer --> <line x1="660" y1="161" x2="660" y2="185" stroke="#d0e4f7" stroke-width="2"/> <rect x="625" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#d0e4f7" stroke-width="1.5"/> <text x="665" y="197" fill="#d0e4f7" font-size="8" text-anchor="middle">QF6 1P 6A</text> <text x="665" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Control Pwr</text> <line x1="660" y1="213" x2="660" y2="225" stroke="#d0e4f7" stroke-width="2"/> <rect x="625" y="225" width="80" height="35" rx="3" fill="#141c30" stroke="#5a7898" stroke-width="1"/> <text x="665" y="238" fill="#d0e4f7" font-size="8" text-anchor="middle">T1</text> <text x="665" y="250" fill="#5a7898" font-size="7" text-anchor="middle">380→24VAC</text> <text x="665" y="260" fill="#5a7898" font-size="7" text-anchor="middle">100VA TRAFO</text> <line x1="660" y1="260" x2="660" y2="274" stroke="#00c8ff" stroke-width="2"/> <rect x="625" y="274" width="80" height="28" rx="3" fill="#141c30" stroke="#00c8ff" stroke-width="1.5"/> <text x="665" y="286" fill="#00c8ff" font-size="8" text-anchor="middle">PSU1 SMPS</text> <text x="665" y="298" fill="#5a7898" font-size="7" text-anchor="middle">24VDC / 5A</text> <!-- C7: Hood Motor --> <line x1="790" y1="161" x2="790" y2="185" stroke="#d0e4f7" stroke-width="2"/> <rect x="755" y="185" width="80" height="28" rx="3" fill="#141c30" stroke="#d0e4f7" stroke-width="1.5"/> <text x="795" y="197" fill="#d0e4f7" font-size="8" text-anchor="middle">QF7 1P 4A</text> <text x="795" y="208" fill="#5a7898" font-size="7" text-anchor="middle">Hood Motor</text> <line x1="790" y1="213" x2="790" y2="225" stroke="#d0e4f7" stroke-width="2"/> <rect x="755" y="225" width="80" height="22" rx="3" fill="#141c30" stroke="#d0e4f7" stroke-width="1.5"/> <text x="795" y="240" fill="#d0e4f7" font-size="8" text-anchor="middle">KM6/KM7</text> <text x="795" y="249" fill="#5a7898" font-size="7" text-anchor="middle">FWD/REV</text> <line x1="790" y1="251" x2="790" y2="265" stroke="#d0e4f7" stroke-width="2"/> <rect x="762" y="265" width="65" height="30" rx="15" fill="#141c30" stroke="#d0e4f7" stroke-width="1.5"/> <text x="794" y="278" fill="#d0e4f7" font-size="9" text-anchor="middle" font-weight="bold">M4</text> <text x="794" y="289" fill="#5a7898" font-size="7" text-anchor="middle">0.18kW</text> <!-- ════ 24VDC CONTROL CIRCUIT ════ --> <rect x="10" y="345" width="900" height="16" rx="3" fill="#0f1628" stroke="#00c8ff" stroke-width="1.5"/> <text x="460" y="357" fill="#00c8ff" font-size="8" text-anchor="middle">━━━━━━━━━━━━━━━━━ 24VDC CONTROL BUS (from PSU1) ━━━━━━━━━━━━━━━━━</text> <!-- E-Stop Chain --> <rect x="15" y="375" width="870" height="50" rx="5" fill="#0d1520" stroke="#ff3355" stroke-width="1.5"/> <text x="30" y="393" fill="#ff3355" font-size="9" font-weight="bold">SAFETY INTERLOCK CHAIN:</text> <!-- contacts --> <rect x="30" y="397" width="55" height="20" rx="3" fill="#141c30" stroke="#ff3355"/> <text x="57" y="411" fill="#ff3355" font-size="8" text-anchor="middle">SB-ES1</text> <text x="57" y="419" fill="#5a7898" font-size="6.5" text-anchor="middle">E-STOP NC</text> <text x="100" y="411" fill="#5a7898" font-size="10">⊢</text> <rect x="110" y="397" width="55" height="20" rx="3" fill="#141c30" stroke="#ffcc00"/> <text x="137" y="411" fill="#ffcc00" font-size="8" text-anchor="middle">LS1</text> <text x="137" y="419" fill="#5a7898" font-size="6.5" text-anchor="middle">HOOD CLOSED</text> <text x="180" y="411" fill="#5a7898" font-size="10">⊢</text> <rect x="190" y="397" width="60" height="20" rx="3" fill="#141c30" stroke="#ffcc00"/> <text x="220" y="411" fill="#ffcc00" font-size="8" text-anchor="middle">FS1 H2O</text> <text x="220" y="419" fill="#5a7898" font-size="6.5" text-anchor="middle">WATER LEVEL</text> <text x="265" y="411" fill="#5a7898" font-size="10">⊢</text> <rect x="275" y="397" width="65" height="20" rx="3" fill="#141c30" stroke="#ff3355"/> <text x="307" y="411" fill="#ff3355" font-size="8" text-anchor="middle">OL1/OL2 NC</text> <text x="307" y="419" fill="#5a7898" font-size="6.5" text-anchor="middle">OVERLOAD</text> <text x="355" y="411" fill="#5a7898" font-size="10">──</text> <rect x="745" y="397" width="55" height="20" rx="3" fill="#141c30" stroke="#ff3355"/> <text x="772" y="411" fill="#ff3355" font-size="9" text-anchor="middle" font-weight="bold">KM0</text> <text x="772" y="419" fill="#5a7898" font-size="6.5" text-anchor="middle">SAFETY RLY</text> <text x="820" y="411" fill="#ff3355" font-size="9" text-anchor="middle">( )</text> <text x="845" y="411" fill="#d0e4f7" font-size="8">COIL</text> <!-- PLC I/O Terminal connections --> <rect x="10" y="440" width="900" height="130" rx="6" fill="#0d1520" stroke="#00c8ff" stroke-width="1.5"/> <text x="460" y="458" fill="#00c8ff" font-size="10" text-anchor="middle" font-weight="bold">PLC S7-1200 CPU 1214C — I/O TERMINAL BLOCK</text> <!-- DI Column --> <text x="30" y="478" fill="#00ff88" font-size="9" font-weight="bold">DIGITAL INPUTS (DI)</text> <text x="30" y="491" fill="#5a7898" font-size="8">I0.0 ← SB1 START</text> <text x="30" y="502" fill="#5a7898" font-size="8">I0.1 ← SB2 STOP</text> <text x="30" y="513" fill="#5a7898" font-size="8">I0.2 ← SB-ES1 E-STOP</text> <text x="30" y="524" fill="#5a7898" font-size="8">I0.3 ← LS1 HOOD CLOSED</text> <text x="30" y="535" fill="#5a7898" font-size="8">I0.4 ← LS2 HOOD OPEN</text> <text x="30" y="546" fill="#5a7898" font-size="8">I0.5 ← FS1 WASH TANK LO</text> <text x="30" y="557" fill="#5a7898" font-size="8">I0.6 ← FS2 WASH TANK HI</text> <text x="30" y="568" fill="#5a7898" font-size="8">I1.0 ← FS3 BOILER LO</text> <!-- DO Column --> <text x="250" y="478" fill="#ff6b00" font-size="9" font-weight="bold">DIGITAL OUTPUTS (DO)</text> <text x="250" y="491" fill="#5a7898" font-size="8">Q0.0 → KM3 WASH PUMP</text> <text x="250" y="502" fill="#5a7898" font-size="8">Q0.1 → KM4 RINSE PUMP</text> <text x="250" y="513" fill="#5a7898" font-size="8">Q0.2 → KM5 DRAIN PUMP</text> <text x="250" y="524" fill="#5a7898" font-size="8">Q0.3 → KM1 WASH HEATER</text> <text x="250" y="535" fill="#5a7898" font-size="8">Q0.4 → KM2 BOILER HEATER</text> <text x="250" y="546" fill="#5a7898" font-size="8">Q0.5 → SV1 FILL VALVE</text> <text x="250" y="557" fill="#5a7898" font-size="8">Q0.6 → KM6 HOOD OPEN</text> <text x="250" y="568" fill="#5a7898" font-size="8">Q0.7 → KM7 HOOD CLOSE</text> <text x="250" y="579" fill="#5a7898" font-size="8">Q1.0 → M-DET DETERGENT PUMP</text> <text x="250" y="590" fill="#5a7898" font-size="8">Q1.1 → M-RIN RINSE AID PUMP</text> <!-- AI Column --> <text x="500" y="478" fill="#00c8ff" font-size="9" font-weight="bold">ANALOG INPUTS (AI) — SM1234</text> <text x="500" y="491" fill="#5a7898" font-size="8">AIW64 ← PT100-1 WASH TEMP (4–20mA)</text> <text x="500" y="502" fill="#5a7898" font-size="8">AIW66 ← PT100-2 BOILER TEMP (4–20mA)</text> <text x="500" y="513" fill="#00c8ff" font-size="9" font-weight="bold">ANALOG OUTPUTS (AO)</text> <text x="500" y="524" fill="#5a7898" font-size="8">AQW80 → PID SETPOINT DISPLAY</text> <!-- Notes --> <text x="500" y="548" fill="#ffcc00" font-size="9" font-weight="bold">PROTECTION DEVICES:</text> <text x="500" y="561" fill="#5a7898" font-size="8">• F1 Overload Relay: Wash Pump OL @ 3.5A (IEC 60947-4)</text> <text x="500" y="572" fill="#5a7898" font-size="8">• F2 Overload Relay: Rinse Pump OL @ 2.0A</text> <text x="500" y="583" fill="#5a7898" font-size="8">• Thermal cutout TH1 on wash heater (95°C backup)</text> <text x="500" y="594" fill="#5a7898" font-size="8">• KM3/KM4 mechanical interlock (pump anti-reverse)</text> <!-- Alarm/Indicators --> <text x="15" y="615" fill="#ff3355" font-size="9" font-weight="bold">ALARM / INDICATOR:</text> <rect x="110" y="604" width="55" height="20" rx="3" fill="#141c30" stroke="#ff3355"/> <text x="137" y="617" fill="#ff3355" font-size="8" text-anchor="middle">HL1 RED</text> <text x="137" y="624" fill="#5a7898" font-size="6.5" text-anchor="middle">FAULT</text> <rect x="175" y="604" width="55" height="20" rx="3" fill="#141c30" stroke="#00ff88"/> <text x="202" y="617" fill="#00ff88" font-size="8" text-anchor="middle">HL2 GRN</text> <text x="202" y="624" fill="#5a7898" font-size="6.5" text-anchor="middle">RUNNING</text> <rect x="240" y="604" width="55" height="20" rx="3" fill="#141c30" stroke="#ffcc00"/> <text x="267" y="617" fill="#ffcc00" font-size="8" text-anchor="middle">HL3 YEL</text> <text x="267" y="624" fill="#5a7898" font-size="6.5" text-anchor="middle">PREHEAT</text> <rect x="305" y="604" width="55" height="20" rx="3" fill="#141c30" stroke="#00c8ff"/> <text x="332" y="617" fill="#00c8ff" font-size="8" text-anchor="middle">HL4 BLU</text> <text x="332" y="624" fill="#5a7898" font-size="6.5" text-anchor="middle">CYCLE ON</text> <rect x="375" y="604" width="55" height="20" rx="3" fill="#141c30" stroke="#ff6b00"/> <text x="402" y="614" fill="#ff6b00" font-size="8" text-anchor="middle">BZ1</text> <text x="402" y="623" fill="#5a7898" font-size="7" text-anchor="middle">BUZZER</text> <!-- PE Line --> <text x="750" y="620" fill="#00ff88" font-size="8">PE Bus ── All Motor Frames ── Cabinet ── Ground Stud</text> </svg> </div> <div class="grid-2"> <div class="card"> <div class="card-title">⚡ Circuit Breaker Schedule</div> <table class="spec-table"> <thead><tr><th>Ref</th><th>Circuit</th><th>Rating</th><th>Type</th></tr></thead> <tbody> <tr><td>QF0</td><td>Main Supply</td><td>4P 63A</td><td>MCCB C-Curve</td></tr> <tr><td>QF1</td><td>Wash Heater EH1</td><td>3P 32A</td><td>MCB C-Curve</td></tr> <tr><td>QF2</td><td>Boiler Heater EH2</td><td>3P 16A</td><td>MCB C-Curve</td></tr> <tr><td>QF3</td><td>Wash Pump M1</td><td>3P 6A</td><td>MCB D-Curve</td></tr> <tr><td>QF4</td><td>Rinse Pump M2</td><td>3P 4A</td><td>MCB D-Curve</td></tr> <tr><td>QF5</td><td>Drain Pump M3</td><td>1P 6A</td><td>MCB C-Curve</td></tr> <tr><td>QF6</td><td>Control Transformer</td><td>1P 6A</td><td>MCB C-Curve</td></tr> <tr><td>QF7</td><td>Hood Motor M4</td><td>1P 4A</td><td>MCB D-Curve</td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">🔌 Contactor / SSR Schedule</div> <table class="spec-table"> <thead><tr><th>Ref</th><th>Function</th><th>Type</th><th>Coil</th></tr></thead> <tbody> <tr><td>KM0</td><td>Safety Relay</td><td>Safety Relay 2-CH</td><td>24VDC</td></tr> <tr><td>KM1</td><td>Wash Heater SSR</td><td>SSR 40A 3Ø</td><td>24VDC (PLC Q0.3)</td></tr> <tr><td>KM2</td><td>Boiler Heater SSR</td><td>SSR 25A 3Ø</td><td>24VDC (PLC Q0.4)</td></tr> <tr><td>KM3</td><td>Wash Pump</td><td>Contactor 9A</td><td>24VAC</td></tr> <tr><td>KM4</td><td>Rinse Pump</td><td>Contactor 6A</td><td>24VAC</td></tr> <tr><td>KM5</td><td>Drain Pump</td><td>Contactor 6A</td><td>24VAC</td></tr> <tr><td>KM6/7</td><td>Hood FWD/REV</td><td>Reversing Contactor</td><td>24VAC</td></tr> </tbody> </table> </div> </div> </section> <!-- ═══════════════════════════════════════════════════════════ --> <!-- TAB 3: PLC I/O LIST --> <!-- ═══════════════════════════════════════════════════════════ --> <section class="section" id="tab-io"> <div class="section-title"> <div class="icon" style="background:rgba(0,255,136,0.15)">📋</div> PLC I/O Address List </div> <div class="section-desc">// Siemens S7-1200 CPU 1214C DC/DC/DC — Complete I/O assignment with tag names</div> <div class="card"> <div class="card-title">🟢 Digital Inputs (DI) — 14 Points</div> <table class="spec-table"> <thead><tr><th>Address</th><th>Tag Name</th><th>Description</th><th>Device Ref</th><th>Signal</th><th>Type</th></tr></thead> <tbody> <tr class="row-di"><td>I0.0</td><td>SB_START</td><td>Start Push Button</td><td>SB1 (Green)</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.1</td><td>SB_STOP</td><td>Stop Push Button</td><td>SB2 (Red)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.2</td><td>SB_ESTOP</td><td>Emergency Stop</td><td>SB-ES1 (Yellow)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.3</td><td>LS_HOOD_CLOSED</td><td>Hood Closed Limit Switch</td><td>LS1</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.4</td><td>LS_HOOD_OPEN</td><td>Hood Open Limit Switch</td><td>LS2</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.5</td><td>FS_WASH_LO</td><td>Wash Tank Low Level</td><td>FS1 (Float)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I0.6</td><td>FS_WASH_HI</td><td>Wash Tank High Level</td><td>FS2 (Float)</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.0</td><td>FS_BOILER_LO</td><td>Boiler Low Level</td><td>FS3 (Float)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.1</td><td>OL_WASH_PUMP</td><td>Wash Pump Overload</td><td>F1 (NC)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.2</td><td>OL_RINSE_PUMP</td><td>Rinse Pump Overload</td><td>F2 (NC)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.3</td><td>TH_WASH_OT</td><td>Wash Tank Over-Temperature</td><td>TH1 (NC)</td><td>NC 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.4</td><td>PS_SPRAY</td><td>Spray Pressure Switch (min 1.5bar)</td><td>PS1 (NO)</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.5</td><td>SB_MODE_AUTO</td><td>Auto / Manual Mode Selector</td><td>SA1 Key-Sw</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> <tr class="row-di"><td>I1.6</td><td>SB_MANUAL_WASH</td><td>Manual Wash Override (Maint.)</td><td>SB3</td><td>NO 24VDC</td><td><span class="tag tag-in">DI</span></td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">🔴 Digital Outputs (DO) — 10 Points</div> <table class="spec-table"> <thead><tr><th>Address</th><th>Tag Name</th><th>Description</th><th>Device Ref</th><th>Load</th><th>Type</th></tr></thead> <tbody> <tr class="row-do"><td>Q0.0</td><td>KM3_WASH_PUMP</td><td>Wash Circulation Pump</td><td>KM3 Contactor</td><td>0.75kW M1</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.1</td><td>KM4_RINSE_PUMP</td><td>Rinse Boost Pump</td><td>KM4 Contactor</td><td>0.37kW M2</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.2</td><td>KM5_DRAIN_PUMP</td><td>Drain Pump</td><td>KM5 Contactor</td><td>0.37kW M3</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.3</td><td>KM1_WASH_HTR</td><td>Wash Tank Heater (SSR)</td><td>KM1 SSR 40A</td><td>9kW EH1</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.4</td><td>KM2_BOILER_HTR</td><td>Rinse Boiler Heater (SSR)</td><td>KM2 SSR 25A</td><td>3kW EH2</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.5</td><td>SV1_FILL</td><td>Water Fill Solenoid Valve</td><td>SV1 (24VDC)</td><td>15W Valve</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.6</td><td>KM6_HOOD_UP</td><td>Hood Open (Motor FWD)</td><td>KM6</td><td>0.18kW M4</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q0.7</td><td>KM7_HOOD_DN</td><td>Hood Close (Motor REV)</td><td>KM7</td><td>0.18kW M4</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q1.0</td><td>M_DET_DOSE</td><td>Detergent Dosing Pump</td><td>Peristaltic P1</td><td>24VDC</td><td><span class="tag tag-out">DO</span></td></tr> <tr class="row-do"><td>Q1.1</td><td>M_RIN_DOSE</td><td>Rinse Aid Dosing Pump</td><td>Peristaltic P2</td><td>24VDC</td><td><span class="tag tag-out">DO</span></td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">🔵 Analog Inputs (AI) — SM1234 Module</div> <table class="spec-table"> <thead><tr><th>Address</th><th>Tag Name</th><th>Description</th><th>Sensor</th><th>Range</th><th>Type</th></tr></thead> <tbody> <tr class="row-ai"><td>AIW64</td><td>TT_WASH_TEMP</td><td>Wash Tank Temperature</td><td>PT100 via TX1</td><td>0–100°C → 4–20mA</td><td><span class="tag tag-ai">AI</span></td></tr> <tr class="row-ai"><td>AIW66</td><td>TT_BOILER_TEMP</td><td>Rinse Boiler Temperature</td><td>PT100 via TX2</td><td>0–100°C → 4–20mA</td><td><span class="tag tag-ai">AI</span></td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">💾 Internal Memory / Data Block — DB1</div> <table class="spec-table"> <thead><tr><th>Address</th><th>Tag Name</th><th>Type</th><th>Description</th></tr></thead> <tbody> <tr><td>DB1.DBW0</td><td>STEP</td><td>INT</td><td>Current sequence step (0–10)</td></tr> <tr><td>DB1.DBW2</td><td>FAULT_CODE</td><td>INT</td><td>Active fault code</td></tr> <tr><td>DB1.DBD4</td><td>WASH_TEMP_SCALED</td><td>REAL</td><td>Actual wash temp in °C</td></tr> <tr><td>DB1.DBD8</td><td>BOILER_TEMP_SCALED</td><td>REAL</td><td>Actual boiler temp in °C</td></tr> <tr><td>DB1.DBD12</td><td>WASH_SETPOINT</td><td>REAL</td><td>Wash temp setpoint (default 60.0°C)</td></tr> <tr><td>DB1.DBD16</td><td>BOILER_SETPOINT</td><td>REAL</td><td>Boiler setpoint (default 85.0°C)</td></tr> <tr><td>DB1.DBD20</td><td>CYCLE_COUNT</td><td>DINT</td><td>Total racks washed (lifetime counter)</td></tr> <tr><td>DB1.DBX24.0</td><td>AUTO_MODE</td><td>BOOL</td><td>Auto mode active flag</td></tr> <tr><td>DB1.DBX24.1</td><td>PREHEAT_DONE</td><td>BOOL</td><td>Both temps at setpoint</td></tr> <tr><td>DB1.DBX24.2</td><td>FAULT_ACTIVE</td><td>BOOL</td><td>Any fault condition active</td></tr> <tr><td>DB1.DBX24.3</td><td>CYCLE_RUNNING</td><td>BOOL</td><td>Wash cycle in progress</td></tr> </tbody> </table> </div> </section> <!-- ═══════════════════════════════════════════════════════════ --> <!-- TAB 4: PLC LADDER PROGRAM --> <!-- ═══════════════════════════════════════════════════════════ --> <section class="section" id="tab-ladder"> <div class="section-title"> <div class="icon" style="background:rgba(255,107,0,0.15)">💻</div> PLC Program — Ladder Logic (IEC 61131-3) </div> <div class="section-desc">// Siemens S7-1200 SCL + Ladder Logic — Full wash cycle sequencer + safety interlocks</div> <!-- OB1 Main Program --> <div class="card"> <div class="card-title">📁 Program Structure — OBs & FBs</div> <div class="plc-code"><span class="cm">// ═══════════════════════════════════════════════════════════ // PROJECT : Hood-Type Commercial Dishwasher — K-ONE Industries // PLC : Siemens S7-1200 CPU 1214C DC/DC/DC // SOFTWARE : TIA Portal V17 — SCL + LAD Mixed // VERSION : 1.0 DATE: 2026-03 // ═══════════════════════════════════════════════════════════</span> <span class="kw">ORGANIZATION_BLOCK</span> OB1 <span class="cm">// Main Cyclic Execution (every 10ms)</span> <span class="func">FC_Safety_Check</span>(); <span class="cm">// FC1 — Safety interlock evaluation (highest priority)</span> <span class="func">FC_Temperature_Ctrl</span>(); <span class="cm">// FC2 — Preheat / PID temperature control</span> <span class="func">FC_Sequencer</span>(); <span class="cm">// FC3 — Main wash cycle state machine</span> <span class="func">FC_Alarm_Handler</span>(); <span class="cm">// FC4 — Fault detection and alarm output</span> <span class="kw">END_ORGANIZATION_BLOCK</span></div> </div> <!-- FC1 Safety --> <div class="card"> <div class="card-title">🔴 FC1 — Safety Interlock Chain (Ladder)</div> <div class="ladder-rung"> <div class="rung-header"> <span>RUNG 0001 — E-Stop Master Safety Chain</span> <span style="color:var(--muted)">// Any fault → de-energize KM0 Safety Relay</span> </div> <div class="rung-body"> <div class="plc-code"> |----[<span class="contact">/I0.2</span>]----[<span class="contact">/DB1.DBX24.2</span>]----[<span class="contact"> I1.1</span>]----[<span class="contact"> I1.2</span>]----[<span class="contact"> I1.3</span>]----( <span class="coil">M0.0</span> ) | SB_ESTOP_NC FAULT_ACTIVE_NC OL_WASH OL_RINSE TH_WASH_OT SAFETY_OK</div> </div> </div> <div class="ladder-rung"> <div class="rung-header"> <span>RUNG 0002 — Hood Interlock: Pumps only run when hood is CLOSED</span> <span style="color:var(--muted)">// LS1 = hood closed switch</span> </div> <div class="rung-body"> <div class="plc-code"> |----[<span class="contact"> M0.0</span>]----[<span class="contact"> I0.3</span>]----( <span class="coil">M0.1</span> ) | SAFETY_OK LS_HOOD_CLOSED PUMP_PERMIT |----[<span class="contact"> M0.0</span>]----[<span class="contact"> I0.4</span>]----( <span class="coil">M0.2</span> ) | SAFETY_OK LS_HOOD_OPEN HOOD_OPEN_CONFIRM</div> </div> </div> <div class="ladder-rung"> <div class="rung-header"> <span>RUNG 0003 — Water Low Level: Block heaters if water insufficient</span> </div> <div class="rung-body"> <div class="plc-code"> |----[<span class="contact"> M0.0</span>]----[<span class="contact"> I0.5</span>]----( <span class="coil">M0.3</span> ) <span class="cm">// WATER_OK = safety & not low level</span> | SAFETY_OK FS_WASH_LO_NC WATER_OK</div> </div> </div> </div> <!-- FC2 Temperature --> <div class="card"> <div class="card-title">🌡️ FC2 — Temperature Control (SCL)</div> <div class="plc-code"><span class="kw">FUNCTION</span> FC_Temperature_Ctrl : <span class="kw">VOID</span> <span class="kw">VAR_TEMP</span> wash_temp_real : <span class="kw">REAL</span>; boiler_temp_real: <span class="kw">REAL</span>; <span class="kw">END_VAR</span> <span class="cm">// ── Scale AI raw (0-27648) → °C (0-100°C) ──</span> wash_temp_real := <span class="func">NORM_X</span>(MIN:=<span class="num">0.0</span>, VALUE:=<span class="func">INT_TO_REAL</span>(AIW64), MAX:=<span class="num">27648.0</span>) * <span class="num">100.0</span>; boiler_temp_real:= <span class="func">NORM_X</span>(MIN:=<span class="num">0.0</span>, VALUE:=<span class="func">INT_TO_REAL</span>(AIW66), MAX:=<span class="num">27648.0</span>) * <span class="num">100.0</span>; <span class="cm">// ── Store scaled values to DB ──</span> DB1.WASH_TEMP_SCALED := wash_temp_real; DB1.BOILER_TEMP_SCALED := boiler_temp_real; <span class="cm">// ── Wash Tank Heater Control (ON/OFF Hysteresis ±1°C) ──</span> <span class="kw">IF</span> M0.3 <span class="cm">// WATER_OK</span> <span class="kw">THEN</span> <span class="kw">IF</span> wash_temp_real < (DB1.WASH_SETPOINT - <span class="num">1.0</span>) <span class="kw">THEN</span> Q0.<span class="num">3</span> := <span class="kw">TRUE</span>; <span class="cm">// KM1 Wash Heater ON</span> <span class="kw">ELSIF</span> wash_temp_real >= (DB1.WASH_SETPOINT + <span class="num">1.0</span>) <span class="kw">THEN</span> Q0.<span class="num">3</span> := <span class="kw">FALSE</span>; <span class="cm">// KM1 Wash Heater OFF</span> <span class="kw">END_IF</span>; <span class="cm">// ── Boiler Heater Control ──</span> <span class="kw">IF</span> boiler_temp_real < (DB1.BOILER_SETPOINT - <span class="num">1.0</span>) <span class="kw">THEN</span> Q0.<span class="num">4</span> := <span class="kw">TRUE</span>; <span class="cm">// KM2 Boiler Heater ON</span> <span class="kw">ELSIF</span> boiler_temp_real >= (DB1.BOILER_SETPOINT + <span class="num">1.0</span>) <span class="kw">THEN</span> Q0.<span class="num">4</span> := <span class="kw">FALSE</span>; <span class="cm">// KM2 Boiler Heater OFF</span> <span class="kw">END_IF</span>; <span class="kw">ELSE</span> Q0.<span class="num">3</span> := <span class="kw">FALSE</span>; Q0.<span class="num">4</span> := <span class="kw">FALSE</span>; <span class="cm">// Heaters OFF — no water</span> <span class="kw">END_IF</span>; <span class="cm">// ── Preheat Ready Flag ──</span> DB1.PREHEAT_DONE := (wash_temp_real >= DB1.WASH_SETPOINT - <span class="num">2.0</span>) AND (boiler_temp_real >= DB1.BOILER_SETPOINT - <span class="num">2.0</span>); <span class="kw">END_FUNCTION</span></div> </div> <!-- FC3 Sequencer --> <div class="card"> <div class="card-title">🔄 FC3 — Main Wash Cycle Sequencer (SCL State Machine)</div> <div class="plc-code"><span class="kw">FUNCTION</span> FC_Sequencer : <span class="kw">VOID</span> <span class="cm">// ═══════════════════════════════════════════════════════════ // STEP DEFINITIONS: // 0 = IDLE / STANDBY // 1 = FILL WATER (if tank low) // 2 = PREHEAT WAIT // 3 = READY (awaiting hood close + START) // 4 = PRE-RINSE (5 sec) // 5 = WASH (60 sec — ECO spray arms active) // 6 = DRAIN WASH WATER (15 sec) // 7 = FINAL RINSE (12 sec — boiler water) // 8 = DRAIN RINSE (10 sec) // 9 = HOOD OPEN + CYCLE COMPLETE // 10 = FAULT HOLD // ═══════════════════════════════════════════════════════════</span> <span class="kw">CASE</span> DB1.STEP <span class="kw">OF</span> <span class="cm">// ────────────────────────────────</span> <span class="num">0</span>: <span class="cm">// IDLE — System standby</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">0</span> := <span class="kw">FALSE</span>; Q0.<span class="num">1</span> := <span class="kw">FALSE</span>; Q0.<span class="num">2</span> := <span class="kw">FALSE</span>; <span class="kw">IF</span> NOT I0.<span class="num">5</span> <span class="cm">// FS_WASH_LO triggered — tank low</span> <span class="kw">THEN</span> DB1.STEP := <span class="num">1</span>; <span class="cm">// → Fill water</span> <span class="kw">ELSIF</span> DB1.PREHEAT_DONE <span class="kw">THEN</span> DB1.STEP := <span class="num">3</span>; <span class="cm">// → Ready for cycle</span> <span class="kw">ELSE</span> DB1.STEP := <span class="num">2</span>; <span class="cm">// → Preheat</span> <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">1</span>: <span class="cm">// FILL WATER</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">5</span> := <span class="kw">TRUE</span>; <span class="cm">// SV1 Fill Valve OPEN</span> <span class="kw">IF</span> I0.<span class="num">6</span> <span class="cm">// FS_WASH_HI — tank full</span> <span class="kw">THEN</span> Q0.<span class="num">5</span> := <span class="kw">FALSE</span>; DB1.STEP := <span class="num">2</span>; <span class="kw">END_IF</span>; <span class="cm">// Fault: Fill timeout > 3 min → Step 10</span> <span class="kw">IF</span> <span class="timer">T_FILL_TIMEOUT</span>.Q <span class="kw">THEN</span> DB1.STEP := <span class="num">10</span>; DB1.FAULT_CODE := <span class="num">1</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">2</span>: <span class="cm">// PREHEAT — Wait for temperature</span> <span class="cm">// ────────────────────────────────</span> <span class="cm">// Heaters controlled by FC2 — just wait</span> <span class="kw">IF</span> DB1.PREHEAT_DONE <span class="kw">THEN</span> DB1.STEP := <span class="num">3</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">3</span>: <span class="cm">// READY — Await hood close + START</span> <span class="cm">// ────────────────────────────────</span> <span class="cm">// Close hood if operator pressed START in open state</span> <span class="kw">IF</span> I0.<span class="num">0</span> AND M0.<span class="num">0</span> <span class="cm">// START pressed AND safety OK</span> <span class="kw">THEN</span> Q0.<span class="num">7</span> := <span class="kw">TRUE</span>; <span class="cm">// KM7 Hood Motor — Close</span> <span class="kw">END_IF</span>; <span class="kw">IF</span> I0.<span class="num">3</span> <span class="cm">// Hood CLOSED confirmed</span> <span class="kw">THEN</span> Q0.<span class="num">7</span> := <span class="kw">FALSE</span>; Q1.<span class="num">0</span> := <span class="kw">TRUE</span>; <span class="cm">// Detergent dose pulse START</span> DB1.STEP := <span class="num">4</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">4</span>: <span class="cm">// PRE-RINSE (5 seconds)</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">0</span> := M0.<span class="num">1</span>; <span class="cm">// Wash pump ON (if hood closed)</span> <parameter name="file_text"> Q1.<span class="num">0</span> := <span class="kw">FALSE</span>; <span class="cm">// Detergent pulse ends</span> <span class="timer">T_PRE_RINSE</span>(IN:=<span class="kw">TRUE</span>, PT:=T#5S); <span class="kw">IF</span> <span class="timer">T_PRE_RINSE</span>.Q <span class="kw">THEN</span> DB1.STEP := <span class="num">5</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">5</span>: <span class="cm">// WASH CYCLE (60 seconds — ECO Spray Arms)</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">0</span> := M0.<span class="num">1</span>; <span class="cm">// Wash pump ON → drives ECO spray arm rotation</span> <span class="cm">// Spray arm rotates by water jet reaction — no separate motor needed</span> <span class="cm">// PS1 pressure switch confirms arm is spinning (≥1.5 bar)</span> <span class="kw">IF</span> NOT I1.<span class="num">4</span> <span class="cm">// Spray pressure lost</span> <span class="kw">THEN</span> DB1.FAULT_CODE := <span class="num">3</span>; DB1.STEP := <span class="num">10</span>; <span class="cm">// Fault: Low Pressure</span> <span class="kw">END_IF</span>; <span class="timer">T_WASH</span>(IN:=<span class="kw">TRUE</span>, PT:=T#60S); <span class="kw">IF</span> <span class="timer">T_WASH</span>.Q <span class="kw">THEN</span> Q0.<span class="num">0</span> := <span class="kw">FALSE</span>; DB1.STEP := <span class="num">6</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">6</span>: <span class="cm">// DRAIN WASH WATER (15 seconds)</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">2</span> := <span class="kw">TRUE</span>; <span class="cm">// KM5 Drain Pump ON</span> <span class="timer">T_DRAIN1</span>(IN:=<span class="kw">TRUE</span>, PT:=T#15S); <span class="kw">IF</span> <span class="timer">T_DRAIN1</span>.Q <span class="kw">THEN</span> Q0.<span class="num">2</span> := <span class="kw">FALSE</span>; Q1.<span class="num">1</span> := <span class="kw">TRUE</span>; <span class="cm">// Rinse Aid dose pulse</span> DB1.STEP := <span class="num">7</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">7</span>: <span class="cm">// FINAL HOT RINSE (12 seconds @ 85°C)</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">1</span> := M0.<span class="num">1</span>; <span class="cm">// Rinse pump ON → boiler water through rinse nozzles</span> Q1.<span class="num">1</span> := <span class="kw">FALSE</span>; <span class="cm">// Rinse aid pulse ends</span> <span class="cm">// Verify boiler temp before rinse (NSF-3: min 82°C)</span> <span class="kw">IF</span> DB1.BOILER_TEMP_SCALED < <span class="num">80.0</span> <span class="kw">THEN</span> DB1.FAULT_CODE := <span class="num">4</span>; DB1.STEP := <span class="num">10</span>; <span class="cm">// Fault: Boiler Temp Low</span> <span class="kw">END_IF</span>; <span class="timer">T_RINSE</span>(IN:=<span class="kw">TRUE</span>, PT:=T#12S); <span class="kw">IF</span> <span class="timer">T_RINSE</span>.Q <span class="kw">THEN</span> Q0.<span class="num">1</span> := <span class="kw">FALSE</span>; DB1.STEP := <span class="num">8</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">8</span>: <span class="cm">// DRAIN RINSE WATER (10 seconds)</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">2</span> := <span class="kw">TRUE</span>; <span class="timer">T_DRAIN2</span>(IN:=<span class="kw">TRUE</span>, PT:=T#10S); <span class="kw">IF</span> <span class="timer">T_DRAIN2</span>.Q <span class="kw">THEN</span> Q0.<span class="num">2</span> := <span class="kw">FALSE</span>; DB1.CYCLE_COUNT := DB1.CYCLE_COUNT + <span class="num">1</span>; DB1.STEP := <span class="num">9</span>; <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">9</span>: <span class="cm">// CYCLE COMPLETE — Open Hood</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">6</span> := <span class="kw">TRUE</span>; <span class="cm">// KM6 Hood Motor — Open</span> <span class="kw">IF</span> I0.<span class="num">4</span> <span class="cm">// LS2 Hood OPEN confirmed</span> <span class="kw">THEN</span> Q0.<span class="num">6</span> := <span class="kw">FALSE</span>; DB1.CYCLE_RUNNING := <span class="kw">FALSE</span>; DB1.STEP := <span class="num">0</span>; <span class="cm">// → Back to IDLE</span> <span class="kw">END_IF</span>; <span class="cm">// ────────────────────────────────</span> <span class="num">10</span>: <span class="cm">// FAULT HOLD — All outputs OFF</span> <span class="cm">// ────────────────────────────────</span> Q0.<span class="num">0</span> := <span class="kw">FALSE</span>; Q0.<span class="num">1</span> := <span class="kw">FALSE</span>; Q0.<span class="num">2</span> := <span class="kw">FALSE</span>; Q0.<span class="num">3</span> := <span class="kw">FALSE</span>; Q0.<span class="num">4</span> := <span class="kw">FALSE</span>; Q0.<span class="num">5</span> := <span class="kw">FALSE</span>; DB1.FAULT_ACTIVE := <span class="kw">TRUE</span>; <span class="cm">// Reset via operator STOP button (I0.1)</span> <span class="kw">IF</span> I0.<span class="num">1</span> AND NOT I0.<span class="num">2</span> <span class="cm">// STOP pressed, no E-stop</span> <span class="kw">THEN</span> DB1.FAULT_ACTIVE := <span class="kw">FALSE</span>; DB1.FAULT_CODE := <span class="num">0</span>; DB1.STEP := <span class="num">0</span>; <span class="kw">END_IF</span>; <span class="kw">END_CASE</span>; <span class="kw">END_FUNCTION</span> </div> </div> <!-- FC4 Alarm Handler --> <div class="card"> <div class="card-title">🚨 FC4 — Alarm Handler (Ladder)</div> <div class="ladder-rung"> <div class="rung-header"><span>RUNG 0010 — Fault Code to Tower Light / Buzzer</span></div> <div class="rung-body"> <div class="plc-code"> <span class="cm">// FAULT CODE TABLE:</span> <span class="cm">// 0 = No Fault | 1 = Fill Timeout | 2 = Temp Sensor Error</span> <span class="cm">// 3 = Low Spray Press | 4 = Boiler Temp Low | 5 = Overload Trip</span> <span class="cm">// 6 = Hood Timeout | 9 = E-Stop Active</span> <span class="cm">// Fault active → Red tower light flashing (500ms)</span> |----[ <span class="contact">DB1.DBX24.2</span> ]----[<span class="timer"> T_FLASH.Q</span>]----( <span class="coil">HL1_RED</span> ) | FAULT_ACTIVE 500ms clock RED LIGHT <span class="cm">// Running (no fault) → Green light ON</span> |----[ <span class="contact">DB1.DBX24.3</span> ]----[<span class="contact">/DB1.DBX24.2</span>]----( <span class="coil">HL2_GRN</span> ) | CYCLE_RUNNING NOT_FAULT GREEN LIGHT <span class="cm">// Preheat → Yellow light ON</span> |----[ <span class="contact">DB1.STEP=2</span> ]----( <span class="coil">HL3_YEL</span> ) | STEP==PREHEAT YELLOW LIGHT <span class="cm">// Cycle complete → Buzzer 3 pulses</span> |----[ <span class="contact">DB1.STEP=9</span> ]----[<span class="timer"> T_BUZZ_PULSE.Q</span>]----( <span class="coil">BZ1</span> ) | STEP==COMPLETE 3x 500ms pulses BUZZER <span class="cm">// E-Stop → Continuous buzzer</span> |----[<span class="contact">/I0.2</span>]----( <span class="coil">BZ1</span> ) | ESTOP_NC BUZZER CONTINUOUS</div> </div> </div> </div> </section> <!-- ═══════════════════════════════════════════════════════════ --> <!-- TAB 5: SPECIFICATIONS --> <!-- ═══════════════════════════════════════════════════════════ --> <section class="section" id="tab-specs"> <div class="section-title"> <div class="icon" style="background:rgba(0,255,136,0.15)">📊</div> Technical Specifications </div> <div class="section-desc">// Machine parameters, compliance standards, and performance benchmarks</div> <div class="grid-2"> <div class="card"> <div class="card-title">🏭 Machine Specifications</div> <table class="spec-table"> <tbody> <tr><td>Machine Type</td><td>Hood-Type Pass-Through</td></tr> <tr><td>Rack Size</td><td>600 × 500 mm (DIN standard)</td></tr> <tr><td>Throughput</td><td>60–100 racks/hr</td></tr> <tr><td>Wash Tank Volume</td><td>50 litres</td></tr> <tr><td>Boiler Volume</td><td>8 litres</td></tr> <tr><td>Wash Temperature</td><td>55–65°C (default 60°C)</td></tr> <tr><td>Rinse Temperature</td><td>82–88°C (default 85°C)</td></tr> <tr><td>Wash Cycle Time</td><td>60 seconds</td></tr> <tr><td>Final Rinse Time</td><td>12 seconds</td></tr> <tr><td>Total Cycle Time</td><td>~90 seconds</td></tr> <tr><td>Water Consumption</td><td>2.5–3.5 L/rack</td></tr> <tr><td>Spray Pressure</td><td>Upper: 2.5 bar | Lower: 3.0 bar</td></tr> <tr><td>Machine Dimensions</td><td>650W × 750D × 1450H mm</td></tr> <tr><td>Machine Weight</td><td>~120 kg (dry)</td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">⚡ Electrical Specifications</div> <table class="spec-table"> <tbody> <tr><td>Supply Voltage</td><td>3Ø 380VAC / 50Hz</td></tr> <tr><td>Wash Heater</td><td>9 kW (3Ø immersion)</td></tr> <tr><td>Boiler Heater</td><td>3 kW (1Ø immersion)</td></tr> <tr><td>Wash Pump Motor</td><td>0.75 kW / 3Ø / IP55</td></tr> <tr><td>Rinse Pump Motor</td><td>0.37 kW / 3Ø / IP55</td></tr> <tr><td>Drain Pump Motor</td><td>0.37 kW / 1Ø / IP55</td></tr> <tr><td>Hood Motor</td><td>0.18 kW gear motor</td></tr> <tr><td>Total Connected Load</td><td>~13.7 kW</td></tr> <tr><td>Running Load (typical)</td><td>~10.5 kW</td></tr> <tr><td>Control Voltage</td><td>24 VDC (SMPS)</td></tr> <tr><td>Protection Class</td><td>IP54 (control cabinet)</td></tr> <tr><td>Main Fuse</td><td>63A 3Ø MCCB</td></tr> <tr><td>PLC</td><td>Siemens S7-1200 CPU 1214C</td></tr> <tr><td>HMI</td><td>Siemens KTP700 7" Touch</td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">🌀 ECO Spray Arm Specifications</div> <table class="spec-table"> <tbody> <tr><td>Arm Design</td><td>Reaction-driven rotation (no motor)</td></tr> <tr><td>Upper Arm</td><td>6-jet radial, 450mm diameter</td></tr> <tr><td>Lower Arm</td><td>4-jet radial, 480mm diameter</td></tr> <tr><td>Side Jets</td><td>Fixed, 4-point rinse boosters</td></tr> <tr><td>Nozzle Type</td><td>Fan + pencil jet (dual mode)</td></tr> <tr><td>Rotation Speed</td><td>~30–45 RPM (pressure-driven)</td></tr> <tr><td>Material</td><td>SS316L stainless + PTFE bearings</td></tr> <tr><td>Self-Cleaning</td><td>Flush-back on drain cycle</td></tr> <tr><td>Min. Pressure</td><td>1.5 bar (PS1 switch monitored)</td></tr> <tr><td>Coverage</td><td>360° full-basket sweep</td></tr> </tbody> </table> </div> <div class="card"> <div class="card-title">📋 Standards & Compliance</div> <table class="spec-table"> <tbody> <tr><td>Safety</td><td>IEC 60335-2-58 (Dishwashers)</td></tr> <tr><td>Sanitation</td><td>NSF/ANSI-3 (Commercial Warewash)</td></tr> <tr><td>Electrical</td><td>IEC 60947 (Switchgear)</td></tr> <tr><td>PLC Programming</td><td>IEC 61131-3 (LAD + SCL)</td></tr> <tr><td>Motor Protection</td><td>IEC 60947-4 (Overload Relays)</td></tr> <tr><td>Cabinet Protection</td><td>IP54 (IEC 60529)</td></tr> <tr><td>Pump Rating</td><td>IP55 submersible grade</td></tr> <tr><td>Water Connection</td><td>DN15 (1/2") BSP cold water inlet</td></tr> <tr><td>Drain Connection</td><td>DN50 gravity drain to floor</td></tr> <tr><td>CE Marking</td><td>EU Machinery Directive 2006/42/EC</td></tr> </tbody> </table> </div> </div> <div class="card"> <div class="card-title">🚨 Fault Code Reference</div> <table class="spec-table"> <thead><tr><th>Code</th><th>Description</th><th>Cause</th><th>Action</th></tr></thead> <tbody> <tr><td>0</td><td>No Fault</td><td>Normal operation</td><td>—</td></tr> <tr><td>1</td><td>Fill Timeout</td><td>Water inlet blocked / float fault</td><td>Check SV1, FS1/FS2, water pressure</td></tr> <tr><td>2</td><td>Temp Sensor Error</td><td>PT100 open/short circuit</td><td>Check TX1/TX2 transmitters, AIW wiring</td></tr> <tr><td>3</td><td>Low Spray Pressure</td><td>Pump fault or spray arm blocked</td><td>Check M1 motor, clean spray arms</td></tr> <tr><td>4</td><td>Boiler Temp Low</td><td>Boiler heater failure, low water</td><td>Check EH2, FS3, boiler thermostat</td></tr> <tr><td>5</td><td>Overload Trip</td><td>Motor overloaded or seized</td><td>Reset F1/F2, check motor current</td></tr> <tr><td>6</td><td>Hood Timeout</td><td>Hood motor fault, LS1/LS2 failure</td><td>Check KM6/KM7, LS1, LS2 switches</td></tr> <tr><td>9</td><td>E-Stop Active</td><td>Emergency stop pressed</td><td>Clear cause, release E-stop, press STOP to reset</td></tr> </tbody> </table> </div> </section> <!-- FOOTER --> <div style="background:var(--panel);border-top:1px solid var(--border);padding:16px 40px;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;color:var(--muted);"> <span>K-ONE Industries — Hood Dishwasher Design Doc K1-DW-HD-001 Rev A1.0</span> <span>ECO Spray Arm Technology • PLC: Siemens S7-1200 • IEC 61131-3 Compliant</span> <span style="color:var(--accent)">© 2026 Engineering Design</span> </div> <script> function showTab(id) { document.querySelectorAll('.section').forEach(s => s.classList.remove('active')); document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active')); document.getElementById('tab-' + id).classList.add('active'); event.target.classList.add('active'); } </script> </body> </html>