<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>성원기술 | 머신비전 트리거&amp;middot;동기화 솔루션</title>
    <link>https://swtec.tistory.com/</link>
    <description>머신비전 트리거 체배&amp;middot;분배&amp;middot;생성(ETIO), 신호 데이터 로거(Signal Scope), 조명&amp;middot;카메라&amp;middot;엔코더 통합제어 솔루션 &amp;mdash; 성원기술
제품 문의: kiwi@swtec.co.kr | TEL 031-479-6530</description>
    <language>ko</language>
    <pubDate>Wed, 24 Jun 2026 09:38:01 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>성원기술 SWTec</managingEditor>
    <image>
      <title>성원기술 | 머신비전 트리거&amp;middot;동기화 솔루션</title>
      <url>https://tistory1.daumcdn.net/tistory/8087308/attach/f054463249674f879fbe0e1f4888ec17</url>
      <link>https://swtec.tistory.com</link>
    </image>
    <item>
      <title>트리거분배기 설치 방법 완전 정리 ETIO2444 / ETIO2888 / Signal Scope</title>
      <link>https://swtec.tistory.com/209</link>
      <description>&lt;div style=&quot;all:revert;font-family:'Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif;color:#1a1f2e;line-height:1.75;max-width:100%;box-sizing:border-box&quot;&gt;

&lt;style&gt;
.sg-wrap{all:revert;font-family:'Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif;color:#1a1f2e;line-height:1.75;max-width:680px;margin:0 auto;padding:0 0 60px}
.sg-wrap *{box-sizing:border-box}
.sg-eyebrow{display:inline-block;font-size:11px;font-weight:700;letter-spacing:0.12em;background:#0D1B3E;color:#00c8ff;padding:4px 12px;border-radius:4px;margin-bottom:14px}
.sg-title{font-size:26px;font-weight:700;color:#0D1B3E;line-height:1.35;margin-bottom:10px}
.sg-sub{font-size:14px;color:#4a5568;margin-bottom:32px;line-height:1.7}
.sg-sec-label{font-size:10px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:#00c8ff;margin-bottom:4px}
.sg-sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:8px;padding-bottom:10px;border-bottom:1px solid #dde3ed;margin-top:48px}
.sg-sec-desc{font-size:14px;color:#4a5568;margin-bottom:20px;line-height:1.8}
.sg-badge{display:inline-flex;align-items:center;background:#0D1B3E;color:#00c8ff;font-size:11px;font-weight:700;padding:4px 12px;border-radius:20px;margin-bottom:14px}
.sg-prep-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
.sg-prep-card{background:#f7f8fa;border:1px solid #dde3ed;border-radius:10px;padding:16px 18px}
.sg-prep-title{font-size:12px;font-weight:700;color:#0D1B3E;margin-bottom:8px}
.sg-prep-item{font-size:13px;color:#4a5568;margin-bottom:4px;padding-left:12px;position:relative}
.sg-prep-item::before{content:&quot;·&quot;;color:#00c8ff;font-weight:700;position:absolute;left:0}
.sg-warn{display:flex;gap:10px;background:#fff8e6;border-left:4px solid #f5c842;padding:12px 16px;margin:14px 0;font-size:13px;color:#7a5800;line-height:1.65;border-radius:0 8px 8px 0}
.sg-tip{display:flex;gap:10px;background:#e6faff;border-left:4px solid #00c8ff;padding:12px 16px;margin:14px 0;font-size:13px;color:#005f7a;line-height:1.65;border-radius:0 8px 8px 0}
.sg-step-list{display:flex;flex-direction:column;gap:28px}
.sg-step{display:grid;grid-template-columns:44px 1fr;gap:0 14px}
.sg-step-num{width:34px;height:34px;background:#0D1B3E;color:#fff;font-size:13px;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}
.sg-step-title{font-size:15px;font-weight:700;color:#0D1B3E;margin-bottom:6px}
.sg-step-desc{font-size:13px;color:#4a5568;line-height:1.75;margin-bottom:10px}
.sg-tbl-wrap{overflow-x:auto;margin:10px 0;-webkit-overflow-scrolling:touch}
.sg-tbl{width:100%;border-collapse:collapse;font-size:12px;min-width:360px}
.sg-tbl th{background:#0D1B3E;color:#fff;padding:8px 11px;text-align:left;font-weight:600;font-size:11px}
.sg-tbl td{padding:7px 11px;border-bottom:1px solid #dde3ed;color:#1a1f2e;vertical-align:top}
.sg-tbl tr:nth-child(even) td{background:#f7f8fa}
.sg-tbl .hl td{background:#e6faff !important;font-weight:600}
.sg-mono{font-family:Consolas,monospace;font-size:11px;color:#0D1B3E}
.sg-diagram{background:#f7f8fa;border:1px solid #dde3ed;border-radius:12px;padding:16px;margin:14px 0}
.sg-diagram svg{display:block;width:100%;height:auto}
.sg-diagram-cap{font-size:11px;color:#8896aa;text-align:center;margin-top:8px}
.sg-wave-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.sg-wave-card{border:1px solid #dde3ed;border-radius:10px;overflow:hidden}
.sg-wave-hd{padding:7px 11px;display:flex;align-items:center;gap:7px;border-bottom:1px solid #dde3ed;background:#f7f8fa}
.sg-wave-title{font-size:12px;font-weight:700;color:#0D1B3E}
.sg-pill{font-size:9px;font-weight:700;padding:2px 7px;border-radius:20px}
.sg-ok{background:#E1F5EE;color:#085041}
.sg-no{background:#fdf0ea;color:#712B13}
.sg-er{background:#fef0f0;color:#791F1F}
.sg-dl{background:#fdf3e0;color:#633806}
.sg-wave-ft{padding:7px 11px;border-top:1px solid #dde3ed;font-size:11px;color:#4a5568;line-height:1.5;display:flex;gap:5px}
.sg-legend{display:flex;gap:12px;flex-wrap:wrap;padding:9px 12px;background:#f7f8fa;border:1px solid #dde3ed;border-radius:8px;margin-top:10px}
.sg-li{display:flex;align-items:center;gap:5px}
.sg-ll{width:15px;height:2px;border-radius:1px;display:inline-block}
.sg-lt{font-size:11px;color:#4a5568}
.sg-faq-list{display:flex;flex-direction:column;gap:10px}
.sg-faq-item{border:1px solid #dde3ed;border-radius:8px;overflow:hidden}
.sg-faq-q{background:#f7f8fa;padding:12px 15px;font-size:13px;font-weight:700;color:#0D1B3E;display:flex;gap:8px}
.sg-faq-q::before{content:&quot;Q.&quot;;color:#00c8ff;flex-shrink:0}
.sg-faq-a{padding:11px 15px 11px 38px;font-size:13px;color:#4a5568;line-height:1.75;border-top:1px solid #dde3ed}
.sg-cta{background:#0D1B3E;color:#fff;border-radius:12px;padding:24px;margin-top:44px}
.sg-cta-title{font-size:15px;font-weight:700;color:#fff;margin-bottom:6px}
.sg-cta-desc{font-size:13px;color:rgba(255,255,255,0.65);line-height:1.7}
.sg-cta-contact{font-size:12px;color:#00c8ff;margin-top:4px}
.sg-tag-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:28px}
.sg-tag{font-size:12px;padding:4px 11px;border-radius:20px;background:#f7f8fa;border:1px solid #dde3ed;color:#4a5568}
@media(max-width:520px){
  .sg-prep-grid{grid-template-columns:1fr}
  .sg-wave-grid{grid-template-columns:1fr}
  .sg-step{grid-template-columns:38px 1fr}
  .sg-title{font-size:22px}
}
&lt;/style&gt;

&lt;div class=&quot;sg-wrap&quot;&gt;

&lt;!-- 헤더 --&gt;
&lt;div class=&quot;sg-eyebrow&quot;&gt;공장눈썰미 · 머신비전 설치 가이드&lt;/div&gt;
&lt;h2 class=&quot;sg-title&quot;&gt;트리거분배기 설치 방법 완전 정리&lt;br&gt;ETIO-2444 / ETIO-2888 / Signal Scope&lt;/h2&gt;
&lt;p class=&quot;sg-sub&quot;&gt;배선부터 소프트웨어 설정까지 — 현장 기준 단계별 가이드&lt;/p&gt;

&lt;!-- 목차 --&gt;
&lt;div style=&quot;background:#f7f8fa;border:1px solid #dde3ed;border-left:4px solid #0D1B3E;border-radius:0 8px 8px 0;padding:18px 22px;margin-bottom:36px&quot;&gt;
  &lt;div style=&quot;font-size:13px;font-weight:700;color:#0D1B3E;margin-bottom:10px&quot;&gt;  목차&lt;/div&gt;
  &lt;ol style=&quot;padding-left:18px;margin:0&quot;&gt;
    &lt;li style=&quot;font-size:13px;color:#4a5568;margin-bottom:4px&quot;&gt;공통 준비사항&lt;/li&gt;
    &lt;li style=&quot;font-size:13px;color:#4a5568;margin-bottom:4px&quot;&gt;ETIO-2444 설치 — 신호 흐름 / 배선 / 드라이버 / 소프트웨어&lt;/li&gt;
    &lt;li style=&quot;font-size:13px;color:#4a5568;margin-bottom:4px&quot;&gt;ETIO-2888 설치 — SSR 릴레이 출력 추가&lt;/li&gt;
    &lt;li style=&quot;font-size:13px;color:#4a5568;margin-bottom:4px&quot;&gt;Signal Scope (TAG-SCP32) — LAN 연결 / 파형 분석&lt;/li&gt;
    &lt;li style=&quot;font-size:13px;color:#4a5568&quot;&gt;자주 묻는 설치 질문&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;!-- ① 준비사항 --&gt;
&lt;div class=&quot;sg-sec-label&quot;&gt;Preparation&lt;/div&gt;
&lt;h3 class=&quot;sg-sec-title&quot;&gt;공통 준비사항&lt;/h3&gt;
&lt;div class=&quot;sg-prep-grid&quot;&gt;
  &lt;div class=&quot;sg-prep-card&quot;&gt;
    &lt;div class=&quot;sg-prep-title&quot;&gt;  PC 권장 사양&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;Windows 10 64bit 권장&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;Windows 7 32bit 이상 지원&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;Intel i3 이상, RAM 2GB 이상&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sg-prep-card&quot;&gt;
    &lt;div class=&quot;sg-prep-title&quot;&gt;⚡ 전원 사양&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;ETIO-2444: DC 12 ~ 24V&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;ETIO-2888: DC 12 ~ 24V&lt;/div&gt;
    &lt;div class=&quot;sg-prep-item&quot;&gt;Signal Scope: DC 24V 2.5A (어댑터 동봉)&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sg-warn&quot;&gt;⚠️&amp;nbsp; 전원 케이블은 장비에 먼저 연결 후 전원 인가 / 제거 시에는 전원 먼저 OFF 후 케이블 분리&lt;/div&gt;

&lt;!-- ② ETIO-2444 --&gt;
&lt;div class=&quot;sg-sec-label&quot;&gt;Product 01&lt;/div&gt;
&lt;h3 class=&quot;sg-sec-title&quot;&gt;ETIO-2444 설치&lt;/h3&gt;
&lt;div class=&quot;sg-badge&quot;&gt;트리거 4채널 · USB · 광절연&lt;/div&gt;
&lt;p class=&quot;sg-sec-desc&quot;&gt;엔코더 신호를 받아 최대 4채널 트리거를 Line Drive(RS-422) 방식으로 출력하는 기본 모델입니다.&lt;/p&gt;

&lt;div class=&quot;sg-step-list&quot;&gt;

  &lt;!-- Step 1 --&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;1&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;신호 흐름 이해&lt;/div&gt;
      &lt;p class=&quot;sg-step-desc&quot;&gt;배선 전 전체 흐름 파악이 실수를 줄입니다. 카메라 종류에 따라 Frame Grabber 필요 여부가 달라집니다.&lt;/p&gt;
      &lt;!-- 신호 흐름도 --&gt;
      &lt;div class=&quot;sg-diagram&quot;&gt;
        &lt;svg viewBox=&quot;0 0 660 290&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
          &lt;defs&gt;&lt;marker id=&quot;sg-arr&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M2 1L8 5L2 9&quot; fill=&quot;none&quot; stroke=&quot;context-stroke&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
          &lt;text x=&quot;76&quot; y=&quot;16&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;입력단&lt;/text&gt;
          &lt;text x=&quot;296&quot; y=&quot;16&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;트리거 컨트롤러&lt;/text&gt;
          &lt;text x=&quot;516&quot; y=&quot;16&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;출력단&lt;/text&gt;
          &lt;line x1=&quot;16&quot; y1=&quot;22&quot; x2=&quot;644&quot; y2=&quot;22&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot; stroke-dasharray=&quot;4,4&quot;/&gt;
          &lt;!-- 입력 --&gt;
          &lt;rect x=&quot;16&quot; y=&quot;36&quot; width=&quot;118&quot; height=&quot;50&quot; rx=&quot;7&quot; fill=&quot;#eef1f6&quot; stroke=&quot;#0D1B3E&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;75&quot; y=&quot;57&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot; fill=&quot;#0D1B3E&quot; font-family=&quot;sans-serif&quot;&gt;컨베이어&lt;/text&gt;
          &lt;text x=&quot;75&quot; y=&quot;72&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;+ 엔코더&lt;/text&gt;
          &lt;text x=&quot;75&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; font-size=&quot;8&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;5V Line Drive A+/A− B+/B−&lt;/text&gt;
          &lt;rect x=&quot;16&quot; y=&quot;152&quot; width=&quot;118&quot; height=&quot;40&quot; rx=&quot;7&quot; fill=&quot;#eef1f6&quot; stroke=&quot;#0D1B3E&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;75&quot; y=&quot;177&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot; fill=&quot;#0D1B3E&quot; font-family=&quot;sans-serif&quot;&gt;PLC / 센서&lt;/text&gt;
          &lt;text x=&quot;75&quot; y=&quot;204&quot; text-anchor=&quot;middle&quot; font-size=&quot;8&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;IO Input 12~24V&lt;/text&gt;
          &lt;rect x=&quot;16&quot; y=&quot;232&quot; width=&quot;118&quot; height=&quot;34&quot; rx=&quot;7&quot; fill=&quot;#fdf3e0&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;75&quot; y=&quot;254&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;DC 12~24V 전원&lt;/text&gt;
          &lt;!-- ETIO --&gt;
          &lt;rect x=&quot;176&quot; y=&quot;32&quot; width=&quot;236&quot; height=&quot;226&quot; rx=&quot;11&quot; fill=&quot;#e6faff&quot; stroke=&quot;#00c8ff&quot; stroke-width=&quot;1.2&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;56&quot; text-anchor=&quot;middle&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#0D1B3E&quot; font-family=&quot;sans-serif&quot;&gt;ETIO-2444&lt;/text&gt;
          &lt;text x=&quot;294&quot; y=&quot;72&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;트리거 컨트롤러&lt;/text&gt;
          &lt;rect x=&quot;194&quot; y=&quot;84&quot; width=&quot;200&quot; height=&quot;26&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.6&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;101&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;Encoder 입력 (D-Sub 15핀)&lt;/text&gt;
          &lt;rect x=&quot;194&quot; y=&quot;120&quot; width=&quot;200&quot; height=&quot;36&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.6&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;136&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;FPGA&lt;/text&gt;
          &lt;text x=&quot;294&quot; y=&quot;150&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;트리거 생성 / IO 제어&lt;/text&gt;
          &lt;rect x=&quot;194&quot; y=&quot;166&quot; width=&quot;200&quot; height=&quot;24&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.6&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;182&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;IO Input 4ch / Output 4ch&lt;/text&gt;
          &lt;rect x=&quot;194&quot; y=&quot;200&quot; width=&quot;200&quot; height=&quot;24&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.6&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;216&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;USB 2.0 → PC 설정&lt;/text&gt;
          &lt;!-- 출력 카메라 --&gt;
          &lt;rect x=&quot;456&quot; y=&quot;36&quot; width=&quot;106&quot; height=&quot;30&quot; rx=&quot;7&quot; fill=&quot;#f0effd&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;509&quot; y=&quot;56&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#3C3489&quot; font-family=&quot;sans-serif&quot;&gt;카메라 ch1~4&lt;/text&gt;
          &lt;rect x=&quot;456&quot; y=&quot;78&quot; width=&quot;106&quot; height=&quot;30&quot; rx=&quot;7&quot; fill=&quot;#f0effd&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;509&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; fill=&quot;#534AB7&quot; font-family=&quot;sans-serif&quot;&gt;5V Line Drive&lt;/text&gt;
          &lt;rect x=&quot;456&quot; y=&quot;168&quot; width=&quot;106&quot; height=&quot;36&quot; rx=&quot;7&quot; fill=&quot;#eaf3fd&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;509&quot; y=&quot;183&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;검사 PC&lt;/text&gt;
          &lt;text x=&quot;509&quot; y=&quot;198&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;비전 소프트웨어&lt;/text&gt;
          &lt;!-- 화살표 --&gt;
          &lt;line x1=&quot;134&quot; y1=&quot;61&quot; x2=&quot;174&quot; y2=&quot;100&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr)&quot;/&gt;
          &lt;line x1=&quot;134&quot; y1=&quot;172&quot; x2=&quot;174&quot; y2=&quot;184&quot; stroke=&quot;#8896aa&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;4,3&quot; marker-end=&quot;url(#sg-arr)&quot;/&gt;
          &lt;line x1=&quot;134&quot; y1=&quot;249&quot; x2=&quot;174&quot; y2=&quot;222&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;3,3&quot; marker-end=&quot;url(#sg-arr)&quot;/&gt;
          &lt;line x1=&quot;412&quot; y1=&quot;112&quot; x2=&quot;454&quot; y2=&quot;51&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr)&quot;/&gt;
          &lt;line x1=&quot;412&quot; y1=&quot;140&quot; x2=&quot;454&quot; y2=&quot;93&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr)&quot;/&gt;
          &lt;path d=&quot;M294 224 L294 268 L454 268 L454 192&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;4,3&quot; marker-end=&quot;url(#sg-arr)&quot; fill=&quot;none&quot;/&gt;
          &lt;rect x=&quot;186&quot; y=&quot;256&quot; width=&quot;216&quot; height=&quot;18&quot; rx=&quot;4&quot; fill=&quot;#fff8e6&quot; stroke=&quot;#f5c842&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;294&quot; y=&quot;269&quot; text-anchor=&quot;middle&quot; font-size=&quot;8.5&quot; fill=&quot;#7a5800&quot; font-family=&quot;sans-serif&quot;&gt;⚠ GND 반드시 공통 연결&lt;/text&gt;
        &lt;/svg&gt;
        &lt;div class=&quot;sg-diagram-cap&quot;&gt;ETIO-2444 신호 흐름 — 엔코더 → 트리거 컨트롤러 → 카메라 4ch → 검사 PC&lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 카메라 분기 --&gt;
      &lt;p class=&quot;sg-step-desc&quot; style=&quot;margin-top:14px&quot;&gt;카메라 인터페이스 종류에 따라 Frame Grabber 필요 여부가 달라집니다.&lt;/p&gt;
      &lt;div class=&quot;sg-diagram&quot;&gt;
        &lt;svg viewBox=&quot;0 0 660 228&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
          &lt;defs&gt;&lt;marker id=&quot;sg-arr2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M2 1L8 5L2 9&quot; fill=&quot;none&quot; stroke=&quot;context-stroke&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
          &lt;rect x=&quot;14&quot; y=&quot;54&quot; width=&quot;122&quot; height=&quot;122&quot; rx=&quot;10&quot; fill=&quot;#e6faff&quot; stroke=&quot;#00c8ff&quot; stroke-width=&quot;1&quot;/&gt;
          &lt;text x=&quot;75&quot; y=&quot;76&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot; fill=&quot;#0D1B3E&quot; font-family=&quot;sans-serif&quot;&gt;ETIO-2444&lt;/text&gt;
          &lt;text x=&quot;75&quot; y=&quot;91&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;트리거 출력&lt;/text&gt;
          &lt;text x=&quot;75&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#4a5568&quot; font-family=&quot;sans-serif&quot;&gt;5V Line Drive&lt;/text&gt;
          &lt;line x1=&quot;136&quot; y1=&quot;92&quot; x2=&quot;136&quot; y2=&quot;188&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;1&quot;/&gt;
          &lt;line x1=&quot;136&quot; y1=&quot;102&quot; x2=&quot;158&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;1&quot;/&gt;
          &lt;line x1=&quot;136&quot; y1=&quot;166&quot; x2=&quot;158&quot; y2=&quot;166&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;1&quot;/&gt;
          &lt;!-- 경로 A --&gt;
          &lt;text x=&quot;162&quot; y=&quot;68&quot; font-size=&quot;9&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;경로 A — Frame Grabber 불필요&lt;/text&gt;
          &lt;rect x=&quot;162&quot; y=&quot;76&quot; width=&quot;104&quot; height=&quot;32&quot; rx=&quot;7&quot; fill=&quot;#f0effd&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;214&quot; y=&quot;90&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#3C3489&quot; font-family=&quot;sans-serif&quot;&gt;GigE / USB3&lt;/text&gt;
          &lt;text x=&quot;214&quot; y=&quot;103&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#534AB7&quot; font-family=&quot;sans-serif&quot;&gt;카메라&lt;/text&gt;
          &lt;line x1=&quot;136&quot; y1=&quot;102&quot; x2=&quot;160&quot; y2=&quot;92&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.2&quot; marker-end=&quot;url(#sg-arr2)&quot;/&gt;
          &lt;rect x=&quot;352&quot; y=&quot;76&quot; width=&quot;104&quot; height=&quot;32&quot; rx=&quot;7&quot; fill=&quot;#eaf3fd&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;404&quot; y=&quot;90&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;검사 PC&lt;/text&gt;
          &lt;text x=&quot;404&quot; y=&quot;103&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;LAN / USB 직결&lt;/text&gt;
          &lt;line x1=&quot;266&quot; y1=&quot;92&quot; x2=&quot;350&quot; y2=&quot;92&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr2)&quot;/&gt;
          &lt;rect x=&quot;496&quot; y=&quot;80&quot; width=&quot;70&quot; height=&quot;18&quot; rx=&quot;9&quot; fill=&quot;#E1F5EE&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;0.5&quot;/&gt;
          &lt;text x=&quot;531&quot; y=&quot;93&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#085041&quot; font-family=&quot;sans-serif&quot;&gt;직결 가능 ✓&lt;/text&gt;
          &lt;!-- 구분선 --&gt;
          &lt;line x1=&quot;162&quot; y1=&quot;142&quot; x2=&quot;600&quot; y2=&quot;142&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot; stroke-dasharray=&quot;3,3&quot;/&gt;
          &lt;text x=&quot;162&quot; y=&quot;139&quot; font-size=&quot;9&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;경로 B — Frame Grabber 필수&lt;/text&gt;
          &lt;!-- 경로 B --&gt;
          &lt;rect x=&quot;162&quot; y=&quot;150&quot; width=&quot;104&quot; height=&quot;32&quot; rx=&quot;7&quot; fill=&quot;#fdf0ea&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;214&quot; y=&quot;164&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#712B13&quot; font-family=&quot;sans-serif&quot;&gt;Camera Link&lt;/text&gt;
          &lt;text x=&quot;214&quot; y=&quot;177&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#993C1D&quot; font-family=&quot;sans-serif&quot;&gt;CoaXPress&lt;/text&gt;
          &lt;line x1=&quot;136&quot; y1=&quot;166&quot; x2=&quot;160&quot; y2=&quot;166&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.2&quot; marker-end=&quot;url(#sg-arr2)&quot;/&gt;
          &lt;rect x=&quot;306&quot; y=&quot;150&quot; width=&quot;104&quot; height=&quot;32&quot; rx=&quot;7&quot; fill=&quot;#fdf3e0&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;358&quot; y=&quot;164&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#633806&quot; font-family=&quot;sans-serif&quot;&gt;Frame Grabber&lt;/text&gt;
          &lt;text x=&quot;358&quot; y=&quot;177&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#854F0B&quot; font-family=&quot;sans-serif&quot;&gt;Matrox 등&lt;/text&gt;
          &lt;line x1=&quot;266&quot; y1=&quot;166&quot; x2=&quot;304&quot; y2=&quot;166&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr2)&quot;/&gt;
          &lt;rect x=&quot;450&quot; y=&quot;150&quot; width=&quot;94&quot; height=&quot;32&quot; rx=&quot;7&quot; fill=&quot;#eaf3fd&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;0.8&quot;/&gt;
          &lt;text x=&quot;497&quot; y=&quot;164&quot; text-anchor=&quot;middle&quot; font-size=&quot;10&quot; font-weight=&quot;700&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;검사 PC&lt;/text&gt;
          &lt;text x=&quot;497&quot; y=&quot;177&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#185FA5&quot; font-family=&quot;sans-serif&quot;&gt;PCIe 슬롯&lt;/text&gt;
          &lt;line x1=&quot;410&quot; y1=&quot;166&quot; x2=&quot;448&quot; y2=&quot;166&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; marker-end=&quot;url(#sg-arr2)&quot;/&gt;
          &lt;path d=&quot;M136 200 L136 212 L358 212 L358 184&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;4,3&quot; marker-end=&quot;url(#sg-arr2)&quot; fill=&quot;none&quot;/&gt;
          &lt;text x=&quot;244&quot; y=&quot;222&quot; text-anchor=&quot;middle&quot; font-size=&quot;8&quot; fill=&quot;#534AB7&quot; font-family=&quot;sans-serif&quot;&gt;트리거 입력 (LVDS_AUX_IN0+/−)&lt;/text&gt;
          &lt;rect x=&quot;567&quot; y=&quot;154&quot; width=&quot;78&quot; height=&quot;18&quot; rx=&quot;9&quot; fill=&quot;#fef0f0&quot; stroke=&quot;#E24B4A&quot; stroke-width=&quot;0.5&quot;/&gt;
          &lt;text x=&quot;606&quot; y=&quot;167&quot; text-anchor=&quot;middle&quot; font-size=&quot;9&quot; fill=&quot;#791F1F&quot; font-family=&quot;sans-serif&quot;&gt;FG 필수 ⚠&lt;/text&gt;
        &lt;/svg&gt;
        &lt;div class=&quot;sg-diagram-cap&quot;&gt;GigE·USB3 → PC 직결 / Camera Link·CoaXPress → Frame Grabber 경유 필수&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- Step 2 --&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;2&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;엔코더 배선 (D-Sub 15핀 Female)&lt;/div&gt;
      &lt;p class=&quot;sg-step-desc&quot;&gt;E40S8 기준: Black→A1+, Red→A1−, White→B1+, Gray→B1−, Brown→5Vdc, Blue→GND&lt;/p&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;핀&lt;/th&gt;&lt;th&gt;신호명&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;5Vdc&lt;/td&gt;&lt;td&gt;엔코더 전원 (5V 출력)&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;A1+&lt;/td&gt;&lt;td&gt;엔코더 1 A상 +&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;A1−&lt;/td&gt;&lt;td&gt;엔코더 1 A상 −&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;B1+&lt;/td&gt;&lt;td&gt;엔코더 1 B상 +&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;B1−&lt;/td&gt;&lt;td&gt;엔코더 1 B상 −&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Z1+&lt;/td&gt;&lt;td&gt;엔코더 1 Z상 +&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Z1−&lt;/td&gt;&lt;td&gt;엔코더 1 Z상 −&lt;/td&gt;&lt;/tr&gt;
          &lt;tr class=&quot;hl&quot;&gt;&lt;td class=&quot;sg-mono&quot;&gt;10,15&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;GND&lt;/td&gt;&lt;td&gt;신호용 GND — 반드시 연결&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- Step 3 --&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;3&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;트리거 출력 배선 — Matrox Frame Grabber 연결 예&lt;/div&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;ETIO 핀&lt;/th&gt;&lt;th&gt;Matrox DB-15&lt;/th&gt;&lt;th&gt;신호&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;3,6,9,12 (+)&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;4번&lt;/td&gt;&lt;td&gt;LVDS_AUX_IN0+&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;2,5,8,11 (−)&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;5번&lt;/td&gt;&lt;td&gt;LVDS_AUX_IN0−&lt;/td&gt;&lt;/tr&gt;
          &lt;tr class=&quot;hl&quot;&gt;&lt;td class=&quot;sg-mono&quot;&gt;1,4,7,10 (GND)&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;7번&lt;/td&gt;&lt;td&gt;GND — 반드시 연결&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
      &lt;div class=&quot;sg-warn&quot;&gt;⚠️&amp;nbsp; GND 미연결 시 노이즈 발생 — 이로 인한 고장은 무상 수리 대상이 되지 않습니다.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- Step 4 --&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;4&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;USB 드라이버 설치&lt;/div&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;단계&lt;/th&gt;&lt;th&gt;내용&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;①&lt;/td&gt;&lt;td&gt;USB 연결 → 장치관리자 → &quot;Generic Bulk Device&quot; 확인&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;②&lt;/td&gt;&lt;td&gt;우클릭 → 속성 → 드라이버 업데이트 → 제공 폴더 선택&lt;/td&gt;&lt;/tr&gt;
          &lt;tr class=&quot;hl&quot;&gt;&lt;td class=&quot;sg-mono&quot;&gt;③&lt;/td&gt;&lt;td&gt;&quot;TivaWare Bulk Devices&quot; 표시 시 설치 완료&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
      &lt;div class=&quot;sg-tip&quot;&gt; &amp;nbsp; ETIOChecker 실행 오류 시 제공 폴더의 &lt;strong&gt;vc_redist.x64.exe&lt;/strong&gt;를 먼저 설치하세요.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- Step 5 --&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;5&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;소프트웨어 설정 (ETIOc_ControllerV2.exe)&lt;/div&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;항목&lt;/th&gt;&lt;th&gt;선택지&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;트리거 모드&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Encoder Trigger&lt;/td&gt;&lt;td&gt;엔코더 신호로 트리거 생성 (일반 라인)&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Virtual Encoder&lt;/td&gt;&lt;td&gt;내부 가상 엔코더 1Hz~500KHz&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;IO Bypass&lt;/td&gt;&lt;td&gt;IO Input 신호 직통 출력&lt;/td&gt;&lt;/tr&gt;
          &lt;tr class=&quot;hl&quot;&gt;&lt;td&gt;체배&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;x4 권장&lt;/td&gt;&lt;td&gt;x16·x32는 속도 가변 환경 오동작 가능&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;저장&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Write&lt;/td&gt;&lt;td&gt;EEPROM 저장 — 전원 재인가 후에도 유지&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ③ ETIO-2888 --&gt;
&lt;div class=&quot;sg-sec-label&quot;&gt;Product 02&lt;/div&gt;
&lt;h3 class=&quot;sg-sec-title&quot;&gt;ETIO-2888 설치&lt;/h3&gt;
&lt;div class=&quot;sg-badge&quot;&gt;트리거 8채널 · SSR 릴레이 출력 · USB&lt;/div&gt;
&lt;p class=&quot;sg-sec-desc&quot;&gt;엔코더·트리거 배선은 ETIO-2444와 동일합니다. 트리거 8채널 + SSR 릴레이 출력이 추가됩니다.&lt;/p&gt;
&lt;div class=&quot;sg-step-list&quot;&gt;
  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;+&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;SSR Output 추가 배선 (0~48V, 최대 1.5A)&lt;/div&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;핀&lt;/th&gt;&lt;th&gt;신호명&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;1,2&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;OUT_SSR1_A/B&lt;/td&gt;&lt;td&gt;SSR 채널 1&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;3,4&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;OUT_SSR2_A/B&lt;/td&gt;&lt;td&gt;SSR 채널 2&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;5~8&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;OUT_SSR3~4&lt;/td&gt;&lt;td&gt;채널 3~4 동일 구조&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td class=&quot;sg-mono&quot;&gt;별도 커넥터&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;OUT_SSR5~8&lt;/td&gt;&lt;td&gt;채널 5~8&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
      &lt;div class=&quot;sg-warn&quot;&gt;⚠️&amp;nbsp; Relay Output 지연: Ton 최대 0.5ms, Toff 최대 0.1ms — 고속 라인에서는 Line Drive 방식 권장&lt;/div&gt;
      &lt;div class=&quot;sg-tip&quot;&gt; &amp;nbsp; 전용 소프트웨어 &lt;strong&gt;ETIO2888_Agent.exe&lt;/strong&gt; 사용. Group Reset / Trigger Mix Mode / Relay Output 기능 추가 제공&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ④ Signal Scope --&gt;
&lt;div class=&quot;sg-sec-label&quot;&gt;Product 03&lt;/div&gt;
&lt;h3 class=&quot;sg-sec-title&quot;&gt;Signal Scope (TAG-SCP32) 설치&lt;/h3&gt;
&lt;div class=&quot;sg-badge&quot;&gt;20채널 신호 분석 · 1Gbps LAN · 24시간 로깅&lt;/div&gt;
&lt;p class=&quot;sg-sec-desc&quot;&gt;트리거 기능 + 20채널 파형 분석. USB 대신 1Gbps LAN으로 PC와 연결합니다.&lt;/p&gt;
&lt;div class=&quot;sg-step-list&quot;&gt;

  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;1&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;입력 신호 종류 및 LAN 연결&lt;/div&gt;
      &lt;div class=&quot;sg-tbl-wrap&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;입력 방식&lt;/th&gt;&lt;th&gt;채널&lt;/th&gt;&lt;th&gt;전압&lt;/th&gt;&lt;th&gt;용도&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;Line Drive (RS-422)&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;4ch&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;5V&lt;/td&gt;&lt;td&gt;고속 신호 최대 10MHz&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Opto Input&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;8ch&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;12~24V&lt;/td&gt;&lt;td&gt;PLC, 일반 센서&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Schmitt Input&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;8ch&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;5~24V&lt;/td&gt;&lt;td&gt;노이즈 환경 센서&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
      &lt;div class=&quot;sg-tip&quot;&gt; &amp;nbsp; TAG_Signal_Viewer.exe 실행 → Connect → 시리얼 넘버 선택 → Connect. IP 충돌 시 &lt;strong&gt;Re-alloc IP&lt;/strong&gt;로 자동 재할당&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;sg-step&quot;&gt;
    &lt;div class=&quot;sg-step-num&quot;&gt;2&lt;/div&gt;
    &lt;div&gt;
      &lt;div class=&quot;sg-step-title&quot;&gt;파형 분석 — 정상 vs 이상 4가지 패턴&lt;/div&gt;
      &lt;p class=&quot;sg-step-desc&quot;&gt;아래 4가지 패턴을 숙지하면 현장 트러블슈팅 시간을 크게 줄일 수 있습니다.&lt;/p&gt;
      &lt;div class=&quot;sg-wave-grid&quot;&gt;
        &lt;!-- ① 정상 --&gt;
        &lt;div class=&quot;sg-wave-card&quot;&gt;
          &lt;div class=&quot;sg-wave-hd&quot;&gt;&lt;span class=&quot;sg-wave-title&quot;&gt;① 정상 라인&lt;/span&gt;&lt;span class=&quot;sg-pill sg-ok&quot;&gt;NORMAL&lt;/span&gt;&lt;/div&gt;
          &lt;svg viewBox=&quot;0 0 300 112&quot; width=&quot;100%&quot; style=&quot;display:block;background:#f7f8fa&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;6&quot; x2=&quot;42&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;105&quot; y1=&quot;6&quot; x2=&quot;105&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;168&quot; y1=&quot;6&quot; x2=&quot;168&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;231&quot; y1=&quot;6&quot; x2=&quot;231&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;288&quot; y1=&quot;6&quot; x2=&quot;288&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;text x=&quot;42&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;0ms&lt;/text&gt;
            &lt;text x=&quot;168&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;4ms&lt;/text&gt;
            &lt;text x=&quot;288&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;8ms&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;17&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#1D9E75&quot; font-family=&quot;sans-serif&quot;&gt;Enc A&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;36&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#378ADD&quot; font-family=&quot;sans-serif&quot;&gt;Enc B&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;55&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#7F77DD&quot; font-family=&quot;sans-serif&quot;&gt;Trig&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;74&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#D85A30&quot; font-family=&quot;sans-serif&quot;&gt;IO In&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;93&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;IO Out&lt;/text&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;23&quot; x2=&quot;288&quot; y2=&quot;23&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;42&quot; x2=&quot;288&quot; y2=&quot;42&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;61&quot; x2=&quot;288&quot; y2=&quot;61&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;80&quot; x2=&quot;288&quot; y2=&quot;80&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;99&quot; x2=&quot;288&quot; y2=&quot;99&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;1.3&quot; points=&quot;42,20 58,20 58,9 73,9 73,20 89,20 89,9 105,9 105,20 121,20 121,9 136,9 136,20 152,20 152,9 168,9 168,20 184,20 184,9 199,9 199,20 215,20 215,9 231,9 231,20 247,20 247,9 262,9 262,20 288,20&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; points=&quot;42,39 50,39 50,28 65,28 65,39 81,39 81,28 97,28 97,39 113,39 113,28 128,28 128,39 144,39 144,28 160,28 160,39 176,39 176,28 191,28 191,39 207,39 207,28 223,28 223,39 239,39 239,28 254,28 254,39 270,39 270,28 286,28 286,39 288,39&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.5&quot; points=&quot;42,58 45,58 45,47 52,47 52,58 73,58 73,47 80,47 80,58 105,58 105,47 112,47 112,58 136,58 136,47 143,47 143,58 168,58 168,47 175,47 175,58 199,58 199,47 206,47 206,58 231,58 231,47 238,47 238,58 262,58 262,47 269,47 269,58 288,58&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;1.2&quot; points=&quot;42,77 87,77 87,68 209,68 209,77 288,77&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1.2&quot; points=&quot;42,96 91,96 91,87 213,87 213,96 288,96&quot;/&gt;
          &lt;/svg&gt;
          &lt;div class=&quot;sg-wave-ft&quot;&gt;&lt;span style=&quot;color:#1D9E75&quot;&gt;✓&lt;/span&gt;&lt;span&gt;Enc A/B 90° 위상차, 트리거 정확한 주기, IO 동기화&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- ② 노이즈 --&gt;
        &lt;div class=&quot;sg-wave-card&quot;&gt;
          &lt;div class=&quot;sg-wave-hd&quot;&gt;&lt;span class=&quot;sg-wave-title&quot;&gt;② 노이즈 유입&lt;/span&gt;&lt;span class=&quot;sg-pill sg-no&quot;&gt;NOISE&lt;/span&gt;&lt;/div&gt;
          &lt;svg viewBox=&quot;0 0 300 112&quot; width=&quot;100%&quot; style=&quot;display:block;background:#f7f8fa&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;6&quot; x2=&quot;42&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;105&quot; y1=&quot;6&quot; x2=&quot;105&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;168&quot; y1=&quot;6&quot; x2=&quot;168&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;231&quot; y1=&quot;6&quot; x2=&quot;231&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;288&quot; y1=&quot;6&quot; x2=&quot;288&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;text x=&quot;42&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;0ms&lt;/text&gt;
            &lt;text x=&quot;168&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;4ms&lt;/text&gt;
            &lt;text x=&quot;288&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;8ms&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;17&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#1D9E75&quot; font-family=&quot;sans-serif&quot;&gt;Enc A&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;36&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#378ADD&quot; font-family=&quot;sans-serif&quot;&gt;Enc B&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;55&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#7F77DD&quot; font-family=&quot;sans-serif&quot;&gt;Trig&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;74&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#D85A30&quot; font-family=&quot;sans-serif&quot;&gt;IO In&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;93&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;IO Out&lt;/text&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;23&quot; x2=&quot;288&quot; y2=&quot;23&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;42&quot; x2=&quot;288&quot; y2=&quot;42&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;61&quot; x2=&quot;288&quot; y2=&quot;61&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;80&quot; x2=&quot;288&quot; y2=&quot;80&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;99&quot; x2=&quot;288&quot; y2=&quot;99&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;rect x=&quot;90&quot; y=&quot;6&quot; width=&quot;8&quot; height=&quot;17&quot; fill=&quot;rgba(226,75,74,0.13)&quot; rx=&quot;1&quot;/&gt;
            &lt;rect x=&quot;140&quot; y=&quot;6&quot; width=&quot;8&quot; height=&quot;17&quot; fill=&quot;rgba(226,75,74,0.13)&quot; rx=&quot;1&quot;/&gt;
            &lt;rect x=&quot;196&quot; y=&quot;6&quot; width=&quot;8&quot; height=&quot;17&quot; fill=&quot;rgba(226,75,74,0.13)&quot; rx=&quot;1&quot;/&gt;
            &lt;rect x=&quot;244&quot; y=&quot;6&quot; width=&quot;8&quot; height=&quot;17&quot; fill=&quot;rgba(226,75,74,0.13)&quot; rx=&quot;1&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;1.3&quot; points=&quot;42,20 58,20 58,9 73,9 73,20 90,20 90,9 94,20 97,9 101,20 105,20 105,9 121,9 121,20 136,20 136,9 141,20 144,9 147,20 152,20 152,9 168,9 168,20 184,20 184,9 197,20 199,9 202,20 215,20 215,9 231,9 231,20 244,20 244,9 248,20 251,9 254,20 262,20 262,9 278,9 278,20 288,20&quot;/&gt;
            &lt;line x1=&quot;94&quot; y1=&quot;6&quot; x2=&quot;94&quot; y2=&quot;21&quot; stroke=&quot;#E24B4A&quot; stroke-width=&quot;0.8&quot; stroke-dasharray=&quot;2,2&quot;/&gt;
            &lt;line x1=&quot;143&quot; y1=&quot;6&quot; x2=&quot;143&quot; y2=&quot;21&quot; stroke=&quot;#E24B4A&quot; stroke-width=&quot;0.8&quot; stroke-dasharray=&quot;2,2&quot;/&gt;
            &lt;line x1=&quot;199&quot; y1=&quot;6&quot; x2=&quot;199&quot; y2=&quot;21&quot; stroke=&quot;#E24B4A&quot; stroke-width=&quot;0.8&quot; stroke-dasharray=&quot;2,2&quot;/&gt;
            &lt;line x1=&quot;249&quot; y1=&quot;6&quot; x2=&quot;249&quot; y2=&quot;21&quot; stroke=&quot;#E24B4A&quot; stroke-width=&quot;0.8&quot; stroke-dasharray=&quot;2,2&quot;/&gt;
            &lt;text x=&quot;94&quot; y=&quot;10&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;!&lt;/text&gt;
            &lt;text x=&quot;143&quot; y=&quot;10&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;!&lt;/text&gt;
            &lt;text x=&quot;199&quot; y=&quot;10&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;!&lt;/text&gt;
            &lt;text x=&quot;249&quot; y=&quot;10&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;!&lt;/text&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; points=&quot;42,39 50,39 50,28 65,28 65,39 81,39 81,28 97,28 97,39 113,39 113,28 128,28 128,39 144,39 144,28 160,28 160,39 176,39 176,28 191,28 191,39 207,39 207,28 223,28 223,39 239,39 239,28 254,28 254,39 270,39 270,28 286,28 286,39 288,39&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.5&quot; points=&quot;42,58 45,58 45,47 52,47 52,58 73,58 73,47 80,47 80,58 105,58 105,47 112,47 112,58 136,58 136,47 143,47 143,58 168,58 168,47 175,47 175,58 199,58 199,47 206,47 206,58 231,58 231,47 238,47 238,58 262,58 262,47 269,47 269,58 288,58&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;1.2&quot; points=&quot;42,77 87,77 87,68 209,68 209,77 288,77&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1.2&quot; points=&quot;42,96 91,96 91,87 213,87 213,96 288,96&quot;/&gt;
          &lt;/svg&gt;
          &lt;div class=&quot;sg-wave-ft&quot;&gt;&lt;span style=&quot;color:#D85A30&quot;&gt;△&lt;/span&gt;&lt;span&gt;Enc A 스파이크 → GND 미연결 또는 케이블 실드 불량&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- ③ 누락 --&gt;
        &lt;div class=&quot;sg-wave-card&quot;&gt;
          &lt;div class=&quot;sg-wave-hd&quot;&gt;&lt;span class=&quot;sg-wave-title&quot;&gt;③ 트리거 누락&lt;/span&gt;&lt;span class=&quot;sg-pill sg-er&quot;&gt;MISS&lt;/span&gt;&lt;/div&gt;
          &lt;svg viewBox=&quot;0 0 300 112&quot; width=&quot;100%&quot; style=&quot;display:block;background:#f7f8fa&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;6&quot; x2=&quot;42&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;105&quot; y1=&quot;6&quot; x2=&quot;105&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;168&quot; y1=&quot;6&quot; x2=&quot;168&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;231&quot; y1=&quot;6&quot; x2=&quot;231&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;288&quot; y1=&quot;6&quot; x2=&quot;288&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;text x=&quot;42&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;0ms&lt;/text&gt;
            &lt;text x=&quot;168&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;4ms&lt;/text&gt;
            &lt;text x=&quot;288&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;8ms&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;17&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#1D9E75&quot; font-family=&quot;sans-serif&quot;&gt;Enc A&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;36&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#378ADD&quot; font-family=&quot;sans-serif&quot;&gt;Enc B&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;55&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#7F77DD&quot; font-family=&quot;sans-serif&quot;&gt;Trig&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;74&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#D85A30&quot; font-family=&quot;sans-serif&quot;&gt;IO In&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;93&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;IO Out&lt;/text&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;23&quot; x2=&quot;288&quot; y2=&quot;23&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;42&quot; x2=&quot;288&quot; y2=&quot;42&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;61&quot; x2=&quot;288&quot; y2=&quot;61&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;80&quot; x2=&quot;288&quot; y2=&quot;80&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;99&quot; x2=&quot;288&quot; y2=&quot;99&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;rect x=&quot;105&quot; y=&quot;42&quot; width=&quot;63&quot; height=&quot;19&quot; fill=&quot;rgba(226,75,74,0.1)&quot; rx=&quot;1&quot;/&gt;
            &lt;rect x=&quot;199&quot; y=&quot;42&quot; width=&quot;63&quot; height=&quot;19&quot; fill=&quot;rgba(226,75,74,0.1)&quot; rx=&quot;1&quot;/&gt;
            &lt;text x=&quot;136&quot; y=&quot;54&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;누락 구간&lt;/text&gt;
            &lt;text x=&quot;230&quot; y=&quot;54&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#E24B4A&quot; font-family=&quot;sans-serif&quot;&gt;누락 구간&lt;/text&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;1.3&quot; points=&quot;42,20 58,20 58,9 73,9 73,20 89,20 89,9 105,9 105,20 121,20 121,9 136,9 136,20 152,20 152,9 168,9 168,20 184,20 184,9 199,9 199,20 215,20 215,9 231,9 231,20 247,20 247,9 262,9 262,20 288,20&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; points=&quot;42,39 50,39 50,28 65,28 65,39 81,39 81,28 97,28 97,39 113,39 113,28 128,28 128,39 144,39 144,28 160,28 160,39 176,39 176,28 191,28 191,39 207,39 207,28 223,28 223,39 239,39 239,28 254,28 254,39 270,39 270,28 286,28 286,39 288,39&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.5&quot; points=&quot;42,58 45,58 45,47 52,47 52,58 73,58 73,47 80,47 80,58 105,58 168,58 168,47 175,47 175,58 199,58 262,58 262,47 269,47 269,58 288,58&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;1.2&quot; points=&quot;42,77 87,77 87,68 209,68 209,77 288,77&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1.2&quot; points=&quot;42,96 91,96 91,87 213,87 213,96 288,96&quot;/&gt;
          &lt;/svg&gt;
          &lt;div class=&quot;sg-wave-ft&quot;&gt;&lt;span style=&quot;color:#E24B4A&quot;&gt;✕&lt;/span&gt;&lt;span&gt;특정 구간 트리거 소멸 → 카운터 Lock 또는 Working Area 설정 오류&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- ④ 지연 --&gt;
        &lt;div class=&quot;sg-wave-card&quot;&gt;
          &lt;div class=&quot;sg-wave-hd&quot;&gt;&lt;span class=&quot;sg-wave-title&quot;&gt;④ 타이밍 지연&lt;/span&gt;&lt;span class=&quot;sg-pill sg-dl&quot;&gt;DELAY&lt;/span&gt;&lt;/div&gt;
          &lt;svg viewBox=&quot;0 0 300 112&quot; width=&quot;100%&quot; style=&quot;display:block;background:#f7f8fa&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;6&quot; x2=&quot;42&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;105&quot; y1=&quot;6&quot; x2=&quot;105&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;168&quot; y1=&quot;6&quot; x2=&quot;168&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;231&quot; y1=&quot;6&quot; x2=&quot;231&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;line x1=&quot;288&quot; y1=&quot;6&quot; x2=&quot;288&quot; y2=&quot;102&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.5&quot;/&gt;
            &lt;text x=&quot;42&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;0ms&lt;/text&gt;
            &lt;text x=&quot;168&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;4ms&lt;/text&gt;
            &lt;text x=&quot;288&quot; y=&quot;110&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#8896aa&quot; font-family=&quot;sans-serif&quot;&gt;8ms&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;17&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#1D9E75&quot; font-family=&quot;sans-serif&quot;&gt;Enc A&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;36&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#378ADD&quot; font-family=&quot;sans-serif&quot;&gt;Enc B&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;55&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#7F77DD&quot; font-family=&quot;sans-serif&quot;&gt;Trig&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;74&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#D85A30&quot; font-family=&quot;sans-serif&quot;&gt;IO In&lt;/text&gt;
            &lt;text x=&quot;38&quot; y=&quot;93&quot; text-anchor=&quot;end&quot; font-size=&quot;7&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;IO Out&lt;/text&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;23&quot; x2=&quot;288&quot; y2=&quot;23&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;42&quot; x2=&quot;288&quot; y2=&quot;42&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;61&quot; x2=&quot;288&quot; y2=&quot;61&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;80&quot; x2=&quot;288&quot; y2=&quot;80&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;line x1=&quot;42&quot; y1=&quot;99&quot; x2=&quot;288&quot; y2=&quot;99&quot; stroke=&quot;#dde3ed&quot; stroke-width=&quot;0.4&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#1D9E75&quot; stroke-width=&quot;1.3&quot; points=&quot;42,20 58,20 58,9 73,9 73,20 89,20 89,9 105,9 105,20 121,20 121,9 136,9 136,20 152,20 152,9 168,9 168,20 184,20 184,9 199,9 199,20 215,20 215,9 231,9 231,20 247,20 247,9 262,9 262,20 288,20&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#378ADD&quot; stroke-width=&quot;1.3&quot; points=&quot;42,39 50,39 50,28 65,28 65,39 81,39 81,28 97,28 97,39 113,39 113,28 128,28 128,39 144,39 144,28 160,28 160,39 176,39 176,28 191,28 191,39 207,39 207,28 223,28 223,39 239,39 239,28 254,28 254,39 270,39 270,28 286,28 286,39 288,39&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#7F77DD&quot; stroke-width=&quot;1.5&quot; points=&quot;42,58 52,58 52,47 59,47 59,58 81,58 81,47 88,47 88,58 113,58 113,47 120,47 120,58 144,58 144,47 151,47 151,58 176,58 176,47 183,47 183,58 207,58 207,47 214,47 214,58 239,58 239,47 246,47 246,58 270,58 270,47 277,47 277,58 288,58&quot;/&gt;
            &lt;line x1=&quot;45&quot; y1=&quot;45&quot; x2=&quot;52&quot; y2=&quot;45&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1&quot;/&gt;
            &lt;polygon points=&quot;52,42 56,45 52,48&quot; fill=&quot;#BA7517&quot;/&gt;
            &lt;text x=&quot;72&quot; y=&quot;44&quot; text-anchor=&quot;middle&quot; font-size=&quot;7&quot; fill=&quot;#BA7517&quot; font-family=&quot;sans-serif&quot;&gt;+0.3ms 지연&lt;/text&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#D85A30&quot; stroke-width=&quot;1.2&quot; points=&quot;42,77 87,77 87,68 209,68 209,77 288,77&quot;/&gt;
            &lt;polyline fill=&quot;none&quot; stroke=&quot;#BA7517&quot; stroke-width=&quot;1.2&quot; points=&quot;42,96 91,96 91,87 213,87 213,96 288,96&quot;/&gt;
          &lt;/svg&gt;
          &lt;div class=&quot;sg-wave-ft&quot;&gt;&lt;span style=&quot;color:#BA7517&quot;&gt;◷&lt;/span&gt;&lt;span&gt;트리거 지연 출력 → Relay Output 지연(Ton 최대 0.5ms)&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;sg-legend&quot;&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span class=&quot;sg-ll&quot; style=&quot;background:#1D9E75&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;Encoder A&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span class=&quot;sg-ll&quot; style=&quot;background:#378ADD&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;Encoder B&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span class=&quot;sg-ll&quot; style=&quot;background:#7F77DD&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;트리거 출력&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span class=&quot;sg-ll&quot; style=&quot;background:#D85A30&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;IO Input&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span class=&quot;sg-ll&quot; style=&quot;background:#BA7517&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;IO Output&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;sg-li&quot;&gt;&lt;span style=&quot;width:15px;height:2px;border-top:2px dashed #E24B4A;display:inline-block&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sg-lt&quot;&gt;이상 구간&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;sg-tbl-wrap&quot; style=&quot;margin-top:14px&quot;&gt;&lt;table class=&quot;sg-tbl&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;기능&lt;/th&gt;&lt;th&gt;버튼&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;연속 기록&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Logging&lt;/td&gt;&lt;td&gt;지속 기록 → .sscp 저장 (블랙박스 모드)&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;단발 캡처&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Triggering&lt;/td&gt;&lt;td&gt;설정 조건으로 한 번 캡처&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;구간 측정&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Calc Start/End&lt;/td&gt;&lt;td&gt;마우스 클릭 → Shift+클릭 → 시간차 표시&lt;/td&gt;&lt;/tr&gt;
          &lt;tr class=&quot;hl&quot;&gt;&lt;td&gt;저장&lt;/td&gt;&lt;td class=&quot;sg-mono&quot;&gt;Write&lt;/td&gt;&lt;td&gt;EEPROM 저장 — 전원 재인가 후에도 유지&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ⑤ FAQ --&gt;
&lt;div class=&quot;sg-sec-label&quot;&gt;FAQ&lt;/div&gt;
&lt;h3 class=&quot;sg-sec-title&quot;&gt;자주 묻는 설치 질문&lt;/h3&gt;
&lt;div class=&quot;sg-faq-list&quot;&gt;
  &lt;div class=&quot;sg-faq-item&quot;&gt;
    &lt;div class=&quot;sg-faq-q&quot;&gt;드라이버 설치 후 PC에서 인식이 안 됩니다.&lt;/div&gt;
    &lt;div class=&quot;sg-faq-a&quot;&gt;장치관리자에서 &quot;Generic Bulk Device&quot;로 표시된 상태면 드라이버가 아직 미적용입니다. 제공된 드라이버 폴더에서 수동 설치를 진행하세요. vc_redist.x64.exe를 먼저 설치해야 하는 경우도 있습니다.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sg-faq-item&quot;&gt;
    &lt;div class=&quot;sg-faq-q&quot;&gt;트리거 LED는 점등되는데 카메라가 동작하지 않습니다.&lt;/div&gt;
    &lt;div class=&quot;sg-faq-a&quot;&gt;트리거 출력 GND와 Frame Grabber GND 미연결이 가장 흔한 원인입니다. 배선을 확인하고 카메라 소프트웨어의 트리거 모드가 &quot;하드웨어 트리거&quot;로 설정되어 있는지도 확인하세요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sg-faq-item&quot;&gt;
    &lt;div class=&quot;sg-faq-q&quot;&gt;x16, x32 체배 사용 시 트리거가 흔들립니다.&lt;/div&gt;
    &lt;div class=&quot;sg-faq-a&quot;&gt;x16, x32 체배는 신호를 분석해 가상 펄스를 추가 생성합니다. 속도 가변 환경 또는 백래시(Backlash) 있는 환경에서는 오동작할 수 있습니다. x4 체배 사용을 권장합니다.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sg-faq-item&quot;&gt;
    &lt;div class=&quot;sg-faq-q&quot;&gt;Signal Scope가 네트워크에서 검색되지 않습니다.&lt;/div&gt;
    &lt;div class=&quot;sg-faq-a&quot;&gt;PC와 같은 서브넷인지 확인 후 Scan Device를 다시 눌러보세요. IP 충돌 시 Re-alloc IP 버튼으로 자동 재할당할 수 있습니다.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sg-faq-item&quot;&gt;
    &lt;div class=&quot;sg-faq-q&quot;&gt;ETIOc_ControllerV2와 ETIOChecker를 동시에 실행할 수 있나요?&lt;/div&gt;
    &lt;div class=&quot;sg-faq-a&quot;&gt;불가능합니다. USB 통신 하나로 제어되기 때문에 두 프로그램 동시 실행 시 충돌이 발생합니다. 하나만 실행하세요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- CTA --&gt;
&lt;div class=&quot;sg-cta&quot;&gt;
  &lt;div class=&quot;sg-cta-title&quot;&gt;설치 중 막히는 부분이 있으신가요?&lt;/div&gt;
  &lt;div class=&quot;sg-cta-desc&quot;&gt;라인 구성 정보와 함께 문의 주시면 실무 기반으로 안내해 드립니다.&lt;/div&gt;
  &lt;div class=&quot;sg-cta-contact&quot;&gt;  kiwi@swtec.co.kr&lt;/div&gt;
  &lt;div class=&quot;sg-cta-contact&quot;&gt;  031-479-6530&lt;/div&gt;
  &lt;div class=&quot;sg-cta-contact&quot;&gt;  swtec.tistory.com&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sg-tag-row&quot;&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#트리거분배기설치&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#트리거분배기배선&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#ETIO설치&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#머신비전설치&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#카메라트리거설정&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#트리거분배기사용법&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#엔코더트리거&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#머신비전장비&lt;/span&gt;
  &lt;span class=&quot;sg-tag&quot;&gt;#공장자동화&lt;/span&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;</description>
      <category>제품 기술 이야기/장비 설계</category>
      <category>etio</category>
      <category>etio2444</category>
      <category>etio2888</category>
      <category>FPGA트리거분배기</category>
      <category>signalscope</category>
      <category>동기화오류</category>
      <category>엔코더신호처리</category>
      <category>정밀트리거</category>
      <category>트리거분배기</category>
      <category>트리거제어기</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/209</guid>
      <comments>https://swtec.tistory.com/209#entry209comment</comments>
      <pubDate>Tue, 23 Jun 2026 15:09:03 +0900</pubDate>
    </item>
    <item>
      <title>정밀 검사 트리거 체인 설계 &amp;mdash; 두 계층으로 나눠 본 결정성 비교</title>
      <link>https://swtec.tistory.com/208</link>
      <description>&lt;div class=&quot;swtec-trig&quot;&gt;
&lt;style&gt;
.swtec-trig { all: revert; }
.swtec-trig * { all: revert; box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; }
.swtec-trig { font-family: 'Noto Sans KR', sans-serif !important; max-width: 800px !important; margin: 0 auto !important; padding: 0 0 40px !important; color: #1a2332 !important; line-height: 1.75 !important; }
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');

.swtec-trig .hero { background: #0D1B3E !important; border-radius: 16px !important; padding: 36px 30px !important; margin-bottom: 30px !important; }
.swtec-trig .hero .badge { display: inline-block !important; font-family: 'Space Mono', monospace !important; font-size: 12px !important; color: #00c8ff !important; letter-spacing: 2px !important; padding: 5px 14px !important; border: 1px solid rgba(0,200,255,0.4) !important; border-radius: 20px !important; margin-bottom: 16px !important; }
.swtec-trig .hero h1 { font-size: 25px !important; font-weight: 700 !important; color: #ffffff !important; line-height: 1.4 !important; margin-bottom: 10px !important; }
.swtec-trig .hero p { font-size: 15px !important; color: #9fb3d1 !important; }

.swtec-trig .lead { background: #E6F1FB !important; border-left: 4px solid #185FA5 !important; border-radius: 10px !important; padding: 18px 22px !important; margin-bottom: 34px !important; }
.swtec-trig .lead p { color: #0C447C !important; font-size: 15px !important; }
.swtec-trig .lead b { font-weight: 700 !important; }

.swtec-trig h2 { font-size: 20px !important; font-weight: 700 !important; color: #0D1B3E !important; margin: 38px 0 8px !important; padding-left: 13px !important; border-left: 4px solid #00c8ff !important; }
.swtec-trig .sub { font-size: 14px !important; color: #5a6b85 !important; margin-bottom: 18px !important; padding-left: 13px !important; }

.swtec-trig table { width: 100% !important; border-collapse: collapse !important; margin: 14px 0 !important; font-size: 13.5px !important; }
.swtec-trig th { background: #0D1B3E !important; color: #ffffff !important; font-weight: 500 !important; padding: 11px 12px !important; text-align: left !important; }
.swtec-trig th.win { background: #143063 !important; }
.swtec-trig td { padding: 11px 12px !important; border-bottom: 1px solid #e3e8ef !important; color: #34425a !important; vertical-align: top !important; }
.swtec-trig tr.best td { background: #E6F8FC !important; }
.swtec-trig td.lab { font-weight: 700 !important; color: #0D1B3E !important; white-space: nowrap !important; }
.swtec-trig .pick { display: inline-block !important; font-size: 11px !important; font-weight: 700 !important; color: #0a6e7a !important; background: #b9eef5 !important; padding: 2px 8px !important; border-radius: 5px !important; margin-left: 6px !important; }
.swtec-trig .drop { font-size: 11px !important; color: #993535 !important; }

.swtec-trig .card { background: #ffffff !important; border: 1px solid #e3e8ef !important; border-radius: 12px !important; padding: 20px 22px !important; margin: 14px 0 !important; }
.swtec-trig .card h3 { font-size: 16px !important; font-weight: 700 !important; color: #0D1B3E !important; margin-bottom: 8px !important; }
.swtec-trig .card p { font-size: 14px !important; color: #404d63 !important; margin-bottom: 6px !important; }
.swtec-trig .card .why { font-size: 13px !important; color: #993535 !important; margin-top: 6px !important; }
.swtec-trig .card.good { border-color: #00c8ff !important; border-width: 2px !important; }
.swtec-trig .card.good .why { color: #0a6e7a !important; }

.swtec-trig .flow { background: #0D1B3E !important; border-radius: 12px !important; padding: 24px 22px !important; margin: 18px 0 !important; }
.swtec-trig .flow .step { font-family: 'Space Mono', monospace !important; font-size: 13px !important; color: #b3c2da !important; padding: 5px 0 !important; }
.swtec-trig .flow .step .x { color: #ff6b6b !important; }
.swtec-trig .flow .step .o { color: #00c8ff !important; font-weight: 700 !important; }
.swtec-trig .flow .arrow { color: #5a6b85 !important; padding: 6px 0 6px 16px !important; font-size: 13px !important; }
.swtec-trig .flow .head { font-size: 13px !important; color: #ffffff !important; font-weight: 700 !important; margin: 10px 0 6px !important; }
.swtec-trig .flow .head:first-child { margin-top: 0 !important; }

.swtec-trig .gloss { background: #F4F7FB !important; border-radius: 12px !important; padding: 20px 24px !important; margin: 20px 0 !important; }
.swtec-trig .gloss h3 { font-size: 15px !important; font-weight: 700 !important; color: #0D1B3E !important; margin-bottom: 12px !important; }
.swtec-trig .gloss dl { display: block !important; }
.swtec-trig .gloss .row { padding: 8px 0 !important; border-bottom: 1px solid #e0e6ee !important; }
.swtec-trig .gloss .row:last-child { border-bottom: none !important; }
.swtec-trig .gloss dt { font-family: 'Space Mono', monospace !important; font-size: 13.5px !important; font-weight: 700 !important; color: #185FA5 !important; margin-bottom: 2px !important; }
.swtec-trig .gloss dd { font-size: 13px !important; color: #404d63 !important; line-height: 1.6 !important; }

.swtec-trig .summary { background: #0D1B3E !important; border-radius: 12px !important; padding: 24px !important; margin-top: 18px !important; }
.swtec-trig .summary .r { display: flex !important; gap: 12px !important; padding: 9px 0 !important; border-bottom: 1px solid rgba(255,255,255,0.1) !important; }
.swtec-trig .summary .r:last-child { border-bottom: none !important; }
.swtec-trig .summary .k { font-family: 'Space Mono', monospace !important; font-size: 13px !important; color: #00c8ff !important; min-width: 110px !important; flex-shrink: 0 !important; font-weight: 700 !important; }
.swtec-trig .summary .v { font-size: 13.5px !important; color: #d4ddec !important; }

.swtec-trig .cta { background: linear-gradient(135deg, #0D1B3E, #143063) !important; border-radius: 12px !important; padding: 26px !important; margin-top: 26px !important; text-align: center !important; }
.swtec-trig .cta h3 { font-size: 17px !important; color: #ffffff !important; font-weight: 700 !important; margin-bottom: 14px !important; }
.swtec-trig .cta a { color: #00c8ff !important; text-decoration: none !important; }
.swtec-trig .cta .line { font-size: 14px !important; color: #b3c2da !important; padding: 4px 0 !important; }

@media (max-width: 600px) {
  .swtec-trig table { font-size: 12px !important; }
  .swtec-trig th, .swtec-trig td { padding: 8px 7px !important; }
  .swtec-trig .hero h1 { font-size: 21px !important; }
}
&lt;/style&gt;
&lt;div class=&quot;hero&quot;&gt;&lt;span class=&quot;badge&quot;&gt;SIGNAL PROCESSING ARCHITECTURE&lt;/span&gt;
&lt;h1&gt;트리거, 누가 만들고 무엇으로 만드나&lt;br /&gt;Windows &amp;middot; PLC &amp;middot; FPGA &amp;middot; MCU 정리&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정밀 검사 트리거 체인 설계 &amp;mdash; 두 계층으로 나눠 본 결정성 비교&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;lead&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 &amp;middot;&lt;/b&gt; 트리거 성능은 '평균 속도'가 아니라 &lt;b&gt;지터의 상한이 보장되는가(결정성)&lt;/b&gt;로 평가해야 합니다. 그리고 이 판단은 두 계층으로 나눠야 헷갈리지 않습니다. ① 누가 타이밍을 주관하는가(제어 주체), ② 그 트리거 장비는 무엇으로 만들었는가(내부 칩).&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;평가 기준 &amp;mdash; 왜 평균이 아닌가&lt;/h2&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;예: 라인속도 1m/s, 요구 정밀도 &amp;plusmn;5&amp;micro;m &amp;rarr; 허용 시간오차 = 5&amp;micro;m &amp;divide; 1m/s = 5&amp;micro;s. 트리거 지터가 5&amp;micro;s를 넘으면 사양 미달. ms급 지터를 갖는 방식은 이 지점에서 탈락합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;계층 A &amp;mdash; 트리거를 누가 주관하는가&lt;/h2&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;시스템 타임라인의 마스터를 무엇이 점유하느냐의 문제. (제어 주체)&lt;/p&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;① Windows OS&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PC 프로그램으로 트리거를 만드는 방식. 가장 저렴하지만, OS가 수백 개 작업을 번갈아 처리하느라 트리거 명령이 비주기적으로 밀립니다. 백신&amp;middot;업데이트&amp;middot;드라이버 인터럽트가 끼어드는 순간을 막을 구조가 없습니다.&lt;/p&gt;
&lt;p class=&quot;why&quot; data-ke-size=&quot;size16&quot;&gt;응답 10~100ms / 지터 &amp;plusmn;5~50ms &amp;rarr; WCET 미보장, 고속 라인 부적합&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;② PLC&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설비 제어의 표준 장비. 단, 트리거는 PLC가 설계된 용도가 아닙니다. PLC는 '입력 읽기 &amp;rarr; 연산 &amp;rarr; 출력'을 한 바퀴 도는 스캔 방식이라, 그 주기보다 짧은 신호는 놓치고 출력이 주기에 묶여 흔들립니다.&lt;/p&gt;
&lt;p class=&quot;why&quot; data-ke-size=&quot;size16&quot;&gt;응답 1~10ms / 지터 스캔 주기 의존 &amp;rarr; &amp;micro;s 제어 불가, 신호 손실 위험&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;card good&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;③ FPGA&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령을 순서대로 실행하는 게 아니라, 회로 자체가 트리거 동작만 전담합니다. 스케줄러도, 스캔 주기도, OS도 없어 끼어들 일이 없습니다. 정해진 신호를 정해진 타이밍에 매번 똑같이 내보냅니다.&lt;/p&gt;
&lt;p class=&quot;why&quot; data-ke-size=&quot;size16&quot;&gt;응답 &amp;lt;1&amp;micro;s / 지터 &amp;lt;100ns / 10ns 분해능 &amp;rarr; 결정적 타이밍 (채택)&lt;/p&gt;
&lt;/div&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&quot;win&quot;&gt;제어 주체&lt;/th&gt;
&lt;th class=&quot;win&quot;&gt;응답&lt;/th&gt;
&lt;th class=&quot;win&quot;&gt;지터(p-p)&lt;/th&gt;
&lt;th class=&quot;win&quot;&gt;결정성&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lab&quot;&gt;Windows OS&lt;/td&gt;
&lt;td&gt;10~100ms&lt;/td&gt;
&lt;td&gt;&amp;plusmn;5~50ms&lt;/td&gt;
&lt;td class=&quot;drop&quot;&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lab&quot;&gt;PLC&lt;/td&gt;
&lt;td&gt;1~10ms&lt;/td&gt;
&lt;td&gt;&amp;asymp; 스캔주기&lt;/td&gt;
&lt;td class=&quot;drop&quot;&gt;주기 종속&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;best&quot;&gt;
&lt;td class=&quot;lab&quot;&gt;FPGA&lt;span class=&quot;pick&quot;&gt;채택&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;1&amp;micro;s&lt;/td&gt;
&lt;td&gt;&amp;lt;100ns&lt;/td&gt;
&lt;td&gt;컴파일타임 확정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;계층 B &amp;mdash; 그 분배기, 무엇으로 만드나&lt;/h2&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;&quot;FPGA가 좋다&quot;가 결론나도, 실제 트리거 분배기 장비가 MCU냐 FPGA냐로 또 갈립니다. (내부 칩)&lt;/p&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MCU 기반 분배기 &amp;mdash; 겉만 하드웨어&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCU(소형 컴퓨터 칩)도 결국 프로그램을 한 줄씩 순차 실행합니다. 여러 신호가 몰리면 밀리고, 가감속 구간에서 엔코더 역방향 펄스가 들어오면 카운터가 언더플로우(0이 넘쳐 최대값으로 리셋)되며 제품 없는 곳에서 트리거를 쏘는 고스트 트리거가 발생합니다.&lt;/p&gt;
&lt;p class=&quot;why&quot; data-ke-size=&quot;size16&quot;&gt;순차 실행 &amp;middot; 백래시 시 카운트 붕괴 &amp;rarr; 고스트 트리거 위험&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;card good&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;FPGA 기반 분배기 &amp;mdash; 진짜 정밀&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔코더 디코딩&amp;middot;체배&amp;middot;카운터&amp;middot;임계 판정&amp;middot;출력이 각각 독립 회로로 병렬 동작합니다. 백래시가 와도 Compensational 로직이 역방향분을 추적해 정확한 위치만 트리거. 펌웨어 패치가 아니라 카운팅 로직의 구조적 설계입니다.&lt;/p&gt;
&lt;p class=&quot;why&quot; data-ke-size=&quot;size16&quot;&gt;병렬 로직 &amp;middot; Compensational 백래시 보상 &amp;rarr; 고스트 트리거 원천 차단&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;전체 그림 &amp;mdash; 두 번 다 FPGA&lt;/h2&gt;
&lt;div class=&quot;flow&quot;&gt;
&lt;div class=&quot;head&quot;&gt;계층 A &amp;middot; 제어 주체&lt;/div&gt;
&lt;div class=&quot;step&quot;&gt;&lt;span class=&quot;x&quot;&gt;✕&lt;/span&gt; Windows OS &amp;rarr; WCET 미보장, ms급 지터&lt;/div&gt;
&lt;div class=&quot;step&quot;&gt;&lt;span class=&quot;x&quot;&gt;✕&lt;/span&gt; PLC &amp;rarr; 스캔주기 위상 종속, &amp;micro;s 불가&lt;/div&gt;
&lt;div class=&quot;step&quot;&gt;&lt;span class=&quot;o&quot;&gt;✓ FPGA&lt;/span&gt; &amp;rarr; WCET 확정, &amp;lt;100ns 지터&lt;/div&gt;
&lt;div class=&quot;arrow&quot;&gt;&amp;darr; FPGA 마스터 확정&lt;/div&gt;
&lt;div class=&quot;head&quot;&gt;계층 B &amp;middot; 분배기 구현&lt;/div&gt;
&lt;div class=&quot;step&quot;&gt;&lt;span class=&quot;x&quot;&gt;✕&lt;/span&gt; MCU 기반 &amp;rarr; 순차 실행, 고스트 트리거&lt;/div&gt;
&lt;div class=&quot;step&quot;&gt;&lt;span class=&quot;o&quot;&gt;✓ FPGA 기반&lt;/span&gt; &amp;rarr; 병렬 로직, Compensational 차단&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gloss&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  용어 주석&lt;/h3&gt;
&lt;div class=&quot;row&quot;&gt;Jitter (지터)같은 조건을 반복해도 신호 도착 시간이 매번 흔들리는 정도. 작을수록 정밀. p-p는 peak-to-peak(최대~최소 폭).&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;Latency (레이턴시)입력 신호가 들어온 시점부터 트리거가 출력될 때까지의 지연 시간.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;WCETWorst-Case Execution Time. '최악의 경우에도 이 시간 안에 끝난다'는 보장값. 결정성의 핵심 지표.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;결정성 (Determinism)평균이 아니라 최악의 경우에도 타이밍이 일정하게 보장되는 성질.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;GPOSGeneral-Purpose OS. Windows처럼 범용 작업에 최적화된 운영체제. 실시간 보장이 목적이 아님.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;스캔 사이클 (Scan Cycle)PLC가 '입력 읽기 &amp;rarr; 연산 &amp;rarr; 출력'을 한 바퀴 도는 주기. 이 주기에 트리거 타이밍이 묶임.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;FPGAField-Programmable Gate Array. 원하는 동작을 하드웨어 회로로 직접 합성하는 칩. 병렬&amp;middot;결정적 처리에 최적.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;MCUMicro Controller Unit. 작은 컴퓨터 칩. 프로그램을 순차 실행하므로 부하가 몰리면 타이밍이 밀림.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;Compensational역방향(백래시) 펄스를 보상 카운트해, 정방향이 역방향분을 초과해야 트리거를 재개하는 모드. 고스트 트리거 차단.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;Ghost Trigger (고스트 트리거)제품이 없는데 카운트 오류로 잘못 발생하는 트리거. 같은 위치 중복 촬영의 원인.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;Backlash (백래시)모터가 멈추거나 방향이 바뀔 때 살짝 역방향으로 튀는 현상. 카운트를 엉키게 함.&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;Galvanic Isolation전기적 절연. 외부 단락이 나도 고가 카메라까지 손상되지 않도록 회로를 분리.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;핵심 요약&lt;/h2&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;평가 기준&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;평균 지연이 아니라 지터 상한(WCET 결정성)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;Windows&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;OS 지연&amp;middot;백그라운드 간섭 &amp;rarr; ms급 비결정성&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;PLC&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;스캔 주기 종속 &amp;rarr; &amp;micro;s 트리거 불가, 신호 손실&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;MCU&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;순차 실행 &amp;rarr; 백래시 시 고스트 트리거&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;FPGA&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;병렬 회로 &amp;rarr; 10ns 분해능, 결정적 타이밍&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;r&quot;&gt;&lt;span class=&quot;k&quot;&gt;결론&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;제어 주체&amp;middot;분배기 양 계층 모두 FPGA가 답&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;FPGA 기반 트리거 솔루션 &amp;mdash; 성원기술&lt;/h3&gt;
&lt;div class=&quot;line&quot;&gt;ETIO &amp;middot; ETL &amp;middot; SCP-3D 모두 FPGA 구현&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;✉ &lt;a href=&quot;mailto:kiwi@swtec.co.kr&quot;&gt;kiwi@swtec.co.kr&lt;/a&gt; &amp;nbsp;|&amp;nbsp; ☎ 031-479-6530&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;  &lt;a href=&quot;https://swtec.tistory.com&quot;&gt;swtec.tistory.com&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>제품 기술 이야기/기초 원리</category>
      <category>Backlash</category>
      <category>compensational</category>
      <category>galvanic</category>
      <category>gpos</category>
      <category>jitter</category>
      <category>WCET</category>
      <category>결정성</category>
      <category>레이턴시</category>
      <category>정밀트리거</category>
      <category>지터</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/208</guid>
      <comments>https://swtec.tistory.com/208#entry208comment</comments>
      <pubDate>Tue, 23 Jun 2026 12:30:55 +0900</pubDate>
    </item>
    <item>
      <title>엔코더트리거 ETIO-2444, 동기화 완성</title>
      <link>https://swtec.tistory.com/207</link>
      <description>&lt;div class=&quot;swtec-etio&quot;&gt;
&lt;style&gt;
.swtec-etio { all: revert; }
.swtec-etio * { all: revert; box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; }
.swtec-etio { font-family: 'Noto Sans KR', sans-serif !important; max-width: 800px !important; margin: 0 auto !important; padding: 0 0 40px !important; color: #1a2332 !important; line-height: 1.7 !important; }
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');

.swtec-etio .hero { background: #0D1B3E !important; border-radius: 16px !important; padding: 40px 32px !important; text-align: center !important; margin-bottom: 32px !important; }
.swtec-etio .hero .badge { display: inline-block !important; font-family: 'Space Mono', monospace !important; font-size: 13px !important; color: #00c8ff !important; letter-spacing: 2px !important; padding: 6px 16px !important; border: 1px solid rgba(0,200,255,0.4) !important; border-radius: 20px !important; margin-bottom: 18px !important; }
.swtec-etio .hero h1 { font-size: 30px !important; font-weight: 700 !important; color: #ffffff !important; margin-bottom: 12px !important; line-height: 1.35 !important; }
.swtec-etio .hero p { font-size: 16px !important; color: #9fb3d1 !important; }

.swtec-etio .oneliner { background: #E6F1FB !important; border-left: 4px solid #185FA5 !important; border-radius: 10px !important; padding: 20px 24px !important; margin-bottom: 36px !important; }
.swtec-etio .oneliner strong { color: #0C447C !important; font-weight: 700 !important; }
.swtec-etio .oneliner p { color: #0C447C !important; font-size: 15px !important; }

.swtec-etio h2 { font-size: 21px !important; font-weight: 700 !important; color: #0D1B3E !important; margin: 40px 0 18px !important; padding-left: 14px !important; border-left: 4px solid #00c8ff !important; }

.swtec-etio .flow { background: #0D1B3E !important; border-radius: 14px !important; padding: 28px 24px !important; margin-bottom: 16px !important; }
.swtec-etio .flow svg { width: 100% !important; height: auto !important; display: block !important; }

.swtec-etio .cards { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 16px !important; margin-bottom: 20px !important; }
.swtec-etio .card { background: #ffffff !important; border: 1px solid #e3e8ef !important; border-radius: 14px !important; padding: 22px !important; }
.swtec-etio .card .num { font-family: 'Space Mono', monospace !important; font-size: 13px !important; font-weight: 700 !important; color: #00c8ff !important; background: #0D1B3E !important; width: 30px !important; height: 30px !important; border-radius: 8px !important; display: flex !important; align-items: center !important; justify-content: center !important; margin-bottom: 14px !important; }
.swtec-etio .card h3 { font-size: 17px !important; font-weight: 700 !important; color: #0D1B3E !important; margin-bottom: 4px !important; }
.swtec-etio .card .en { font-family: 'Space Mono', monospace !important; font-size: 12px !important; color: #7a8aa3 !important; margin-bottom: 12px !important; display: block !important; }
.swtec-etio .card p { font-size: 14px !important; color: #404d63 !important; line-height: 1.65 !important; }
.swtec-etio .card .tag { display: inline-block !important; font-size: 12px !important; font-weight: 500 !important; color: #3B6D11 !important; background: #EAF3DE !important; padding: 3px 10px !important; border-radius: 6px !important; margin-top: 10px !important; }

.swtec-etio .pills { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; margin-bottom: 12px !important; }
.swtec-etio .pill { background: #ffffff !important; border: 1px solid #d5dce6 !important; border-radius: 10px !important; padding: 12px 16px !important; flex: 1 1 calc(50% - 5px) !important; min-width: 200px !important; }
.swtec-etio .pill b { display: block !important; font-size: 14px !important; font-weight: 700 !important; color: #0D1B3E !important; margin-bottom: 2px !important; }
.swtec-etio .pill span { font-size: 13px !important; color: #5a6b85 !important; }

.swtec-etio .fit { background: #F4F7FB !important; border-radius: 12px !important; padding: 22px 24px !important; margin-bottom: 12px !important; }
.swtec-etio .fit li { font-size: 14px !important; color: #34425a !important; list-style: none !important; padding: 7px 0 7px 24px !important; position: relative !important; }
.swtec-etio .fit li::before { content: &quot;✓&quot; !important; position: absolute !important; left: 0 !important; color: #00a3d4 !important; font-weight: 700 !important; }

.swtec-etio .summary { background: #0D1B3E !important; border-radius: 14px !important; padding: 26px !important; margin-top: 16px !important; }
.swtec-etio .summary .row { display: flex !important; gap: 12px !important; padding: 9px 0 !important; border-bottom: 1px solid rgba(255,255,255,0.1) !important; }
.swtec-etio .summary .row:last-child { border-bottom: none !important; }
.swtec-etio .summary .k { font-family: 'Space Mono', monospace !important; font-size: 13px !important; color: #00c8ff !important; min-width: 130px !important; flex-shrink: 0 !important; font-weight: 700 !important; }
.swtec-etio .summary .v { font-size: 14px !important; color: #d4ddec !important; }

.swtec-etio .cta { background: linear-gradient(135deg, #0D1B3E, #143063) !important; border-radius: 14px !important; padding: 28px !important; margin-top: 28px !important; text-align: center !important; }
.swtec-etio .cta h3 { font-size: 18px !important; color: #ffffff !important; font-weight: 700 !important; margin-bottom: 16px !important; }
.swtec-etio .cta a { color: #00c8ff !important; text-decoration: none !important; font-weight: 500 !important; }
.swtec-etio .cta .line { font-size: 14px !important; color: #b3c2da !important; padding: 4px 0 !important; }

@media (max-width: 600px) {
  .swtec-etio .cards { grid-template-columns: 1fr !important; }
  .swtec-etio .hero h1 { font-size: 24px !important; }
}
&lt;/style&gt;
&lt;div class=&quot;hero&quot;&gt;&lt;span class=&quot;badge&quot;&gt;ENCODER TRIGGER GENERATOR&lt;/span&gt;
&lt;h1&gt;ETIO-2444&lt;br /&gt;카메라 타이밍, 이걸로 잡습니다&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔코더 신호를 받아 카메라가 정확한 위치에서 찍게 만드는 컨트롤러&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;oneliner&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 줄 정의 &amp;middot;&lt;/b&gt; 엔코더 신호를 입력받아, 원하는 위치&amp;middot;간격마다 카메라 트리거를 만들어주는 FPGA 기반 정밀 트리거 컨트롤러입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어떻게 연결되나요?&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;신호 흐름도 (3).png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcQpz/dJMcad3tFUp/ksJ3FFYxc6G3239kU8dD4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcQpz/dJMcad3tFUp/ksJ3FFYxc6G3239kU8dD4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcQpz/dJMcad3tFUp/ksJ3FFYxc6G3239kU8dD4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcQpz%2FdJMcad3tFUp%2FksJ3FFYxc6G3239kU8dD4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;2048&quot; data-filename=&quot;신호 흐름도 (3).png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;핵심 기능 4가지&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;타임라인 대조.png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0CZda/dJMcageTaBj/ZyltNpXokJVg5lcCw5xwR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0CZda/dJMcageTaBj/ZyltNpXokJVg5lcCw5xwR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0CZda/dJMcageTaBj/ZyltNpXokJVg5lcCw5xwR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0CZda%2FdJMcageTaBj%2FZyltNpXokJVg5lcCw5xwR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;2048&quot; data-filename=&quot;타임라인 대조.png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div class=&quot;cards&quot;&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;div class=&quot;num&quot;&gt;01&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지연 없는 트리거&lt;/h3&gt;
&lt;span class=&quot;en&quot;&gt;Zero Delay&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FPGA로 신호를 직접 처리해 OS 지연을 차단. 10ns 단위 정밀 제어로 속도가 변해도 정확한 시점을 보장합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;div class=&quot;num&quot;&gt;02&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;영역 트리거 (특허)&lt;/h3&gt;
&lt;span class=&quot;en&quot;&gt;Working Area&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검사가 필요한 구간에서만 트리거를 출력. 빈 구간은 건너뛰어 데이터와 소프트웨어 부담을 줄입니다.&lt;/p&gt;
&lt;span class=&quot;tag&quot;&gt;특허 인정 기능&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;num&quot;&gt;03&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;체배&lt;/h3&gt;
&lt;span class=&quot;en&quot;&gt;Multiply &amp;times;4 / &amp;times;16 / &amp;times;32&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔코더 신호를 최대 32배로. 1kHz 엔코더를 32kHz 트리거로 만들어 분해능이 부족해도 촘촘한 검사가 가능합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;card&quot;&gt;
&lt;div class=&quot;num&quot;&gt;04&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;백래시 보정&lt;/h3&gt;
&lt;span class=&quot;en&quot;&gt;Compensational Mode&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모터 역방향 튐을 보정. 정방향으로 충분히 움직여야 트리거를 내보내 같은 위치 중복 촬영(유령 트리거)을 막습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;위치 궤적.png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mi0Fg/dJMcajbwsKe/d7HNQECqKzDm3TlJ3tkCrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mi0Fg/dJMcajbwsKe/d7HNQECqKzDm3TlJ3tkCrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mi0Fg/dJMcajbwsKe/d7HNQECqKzDm3TlJ3tkCrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMi0Fg%2FdJMcajbwsKe%2Fd7HNQECqKzDm3TlJ3tkCrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;2048&quot; data-filename=&quot;위치 궤적.png&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;2048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;이런 점도 좋아요&lt;/h2&gt;
&lt;div class=&quot;pills&quot;&gt;
&lt;div class=&quot;pill&quot;&gt;&lt;b&gt;Galvanic Isolation&lt;/b&gt;&lt;span&gt;외부 단락에도 카메라 보호&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pill&quot;&gt;&lt;b&gt;디지털 노이즈 필터&lt;/b&gt;&lt;span&gt;주변 전기 노이즈 오인 차단&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pill&quot;&gt;&lt;b&gt;4채널 독립 출력&lt;/b&gt;&lt;span&gt;카메라 4대 개별 제어&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pill&quot;&gt;&lt;b&gt;EEPROM 저장&lt;/b&gt;&lt;span&gt;전원 꺼져도 설정 유지&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이런 현장에 맞아요&lt;/h2&gt;
&lt;div class=&quot;fit&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라인스캔 / 에어리어스캔 검사를 쓰는 현장&lt;/li&gt;
&lt;li&gt;엔코더 기반으로 카메라 트리거를 거는 모든 라인&lt;/li&gt;
&lt;li&gt;속도가 변하는 라인에서 정확한 위치 촬영이 필요한 경우&lt;/li&gt;
&lt;li&gt;검사 구간만 골라 찍고 싶은 경우 (Working Area)&lt;/li&gt;
&lt;li&gt;백래시로 유령 트리거가 발생하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;핵심 정리&lt;/h2&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;div class=&quot;row&quot;&gt;&lt;span class=&quot;k&quot;&gt;Zero Delay&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;FPGA 직접 제어로 10ns 정밀 트리거&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;&lt;span class=&quot;k&quot;&gt;Working Area&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;검사 구간만 골라 찍는 특허 기능&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;&lt;span class=&quot;k&quot;&gt;Multiply&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;엔코더 신호 4 / 16 / 32배 체배&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;&lt;span class=&quot;k&quot;&gt;Compensational&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;백래시 보정으로 유령 트리거 차단&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;&lt;span class=&quot;k&quot;&gt;Protection&lt;/span&gt;&lt;span class=&quot;v&quot;&gt;전기적 절연 + 노이즈 필터 + 4채널 독립&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제품 도입 &amp;middot; 기술 문의&lt;/h3&gt;
&lt;div class=&quot;line&quot;&gt;✉ &lt;a href=&quot;mailto:kiwi@swtec.co.kr&quot;&gt;kiwi@swtec.co.kr&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;☎ 031-479-6530&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>제품 기술 이야기/장비 설계</category>
      <category>Backlash</category>
      <category>etio</category>
      <category>etio2444</category>
      <category>노이즈</category>
      <category>백래쉬보정</category>
      <category>엔코더분배기</category>
      <category>체배</category>
      <category>트리거분배기</category>
      <category>트리거생성</category>
      <category>트리거컨트롤러</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/207</guid>
      <comments>https://swtec.tistory.com/207#entry207comment</comments>
      <pubDate>Mon, 22 Jun 2026 14:34:06 +0900</pubDate>
    </item>
    <item>
      <title>트리거가 가끔 빠질 때 해결하는 방법</title>
      <link>https://swtec.tistory.com/206</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#0a1628 60%,#041220 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(0,232,122,.06)}
.hero .label{font-family:'Space Mono',monospace;color:#00e87a;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span.g{color:#00e87a}
.hero h1 span.r{color:#EF4444}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.g{color:#00e87a}
.kpi-val.b{color:#00c8ff}
.kpi-val.r{color:#EF4444}
.kpi-lbl{font-size:12px;color:#64748b}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#00e87a;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#00e87a;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 스토리 */
.story-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0}
.story-box .s-date{font-family:'Space Mono',monospace;font-size:10px;color:#00e87a;letter-spacing:.15em;margin-bottom:14px}
.story-line{display:flex;gap:12px;margin-bottom:10px;align-items:flex-start}
.story-line:last-child{margin-bottom:0}
.s-who{font-size:11px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:64px;margin-top:2px;font-family:'Space Mono',monospace}
.s-who.r{color:#EF4444}
.s-who.g{color:#00e87a}
.s-who.y{color:#FBBF24}
.s-say{font-size:13px;color:#94a3b8;line-height:1.65}
.s-say b{color:#fff}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00e87a;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00a896}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #EF4444;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#EF4444}

/* 블랙박스 비유 */
.blackbox{display:flex;gap:0;margin:20px 0;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0;position:relative}
.bb-card{flex:1;padding:24px 20px;text-align:center}
.bb-card.no{background:linear-gradient(135deg,#FFF1F2,#ffe4e6)}
.bb-card.yes{background:linear-gradient(135deg,#f0fdf9,#ccfbef)}
.bb-card.no::after{content:'';position:absolute;top:0;bottom:0;right:50%;width:3px;background:linear-gradient(180deg,#EF4444,#dc2626)}
.bb-card.yes::after{content:'';position:absolute;top:0;bottom:0;left:50%;width:3px;background:linear-gradient(180deg,#00e87a,#00a896)}
.bb-vs{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;width:40px;height:40px;background:#0D1B3E;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;color:#fff;box-shadow:0 0 0 4px #f8fafc}
.bb-icon{font-size:32px;margin-bottom:10px;display:block}
.bb-title{font-size:15px;font-weight:800;margin-bottom:8px}
.bb-card.no .bb-title{color:#dc2626}
.bb-card.yes .bb-title{color:#00a896}
.bb-items{list-style:none;display:flex;flex-direction:column;gap:5px}
.bb-items li{font-size:13px;color:#475569;line-height:1.5;display:flex;align-items:center;justify-content:center;gap:5px}
.bb-result{display:inline-block;margin-top:10px;font-size:11px;font-weight:700;padding:4px 12px;border-radius:20px}
.bb-card.no .bb-result{background:#EF4444;color:#fff}
.bb-card.yes .bb-result{background:#00a896;color:#fff}

/* 파형 오실로스코프 */
.scope{background:#0D1B3E;border-radius:10px;padding:22px 24px;margin:20px 0;overflow:hidden}
.scope-title{font-family:'Space Mono',monospace;font-size:11px;color:#00e87a;letter-spacing:.12em;margin-bottom:16px}
.scope-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:500px){.scope-grid{grid-template-columns:1fr}}
.scope-ch{background:#071220;border-radius:8px;padding:14px 16px;border:1px solid #1e2d40}
.scope-ch-label{font-family:'Space Mono',monospace;font-size:10px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.scope-ch-label .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.scope-ch-label.enc .dot{background:#00c8ff}
.scope-ch-label.trg .dot{background:#00e87a}
.scope-ch-label.noise .dot{background:#EF4444}
.scope-ch-label.dir .dot{background:#FBBF24}
.scope-ch-name{font-size:11px}
.scope-ch-label.enc .scope-ch-name{color:#00c8ff}
.scope-ch-label.trg .scope-ch-name{color:#00e87a}
.scope-ch-label.noise .scope-ch-name{color:#EF4444}
.scope-ch-label.dir .scope-ch-name{color:#FBBF24}
.wave-bg{height:40px;background:#050e1a;border-radius:4px;position:relative;overflow:hidden;margin-bottom:6px}
/* 정상 파형 */
.wave-enc{position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(90deg,transparent 0px,transparent 8px,rgba(0,200,255,0.6) 8px,rgba(0,200,255,0.6) 10px,transparent 10px,transparent 18px)}
/* 트리거 정상 */
.wave-trg{position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(90deg,transparent 0px,transparent 18px,rgba(0,232,122,0.7) 18px,rgba(0,232,122,0.7) 20px,transparent 20px,transparent 38px)}
/* 노이즈 */
.wave-noise{position:absolute;top:0;left:0;right:0;bottom:0}
.wave-noise::before{content:'';position:absolute;top:30%;left:40%;width:20%;height:40%;background:rgba(239,68,68,0.5);border-radius:2px}
.wave-noise::after{content:'';position:absolute;top:10%;left:40%;width:20%;height:80%;background:repeating-linear-gradient(90deg,rgba(239,68,68,0.3) 0px,rgba(239,68,68,0.7) 2px,transparent 2px,transparent 4px);border-radius:2px}
/* 방향반전 */
.wave-dir{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,rgba(251,191,36,0.5) 0%,rgba(251,191,36,0.5) 45%,rgba(239,68,68,0.7) 45%,rgba(239,68,68,0.7) 55%,rgba(251,191,36,0.3) 55%,rgba(251,191,36,0.3) 100%)}
.wave-result{font-size:11px;font-weight:700}
.wave-result.ok{color:#00e87a}
.wave-result.err{color:#EF4444}

/* QA 카드 */
.qa-list{display:flex;flex-direction:column;gap:10px;margin:20px 0}
.qa-item{border-radius:8px;overflow:hidden}
.qa-q{background:#fff8f6;border-left:3px solid #EF4444;padding:12px 16px;font-size:14px;color:#9a3412;font-style:italic}
.qa-a{background:#f0fdf9;border-left:3px solid #00e87a;padding:12px 16px;font-size:13px;color:#065f46;line-height:1.65}
.qa-a b{color:#00a896}

/* 스펙 */
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
@media(max-width:500px){.spec-grid{grid-template-columns:1fr}}
.sc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px 18px;border-top:2px solid #00e87a}
.sc-label{font-family:'Space Mono',monospace;font-size:10px;color:#00a896;font-weight:700;margin-bottom:5px}
.sc-val{font-size:15px;font-weight:700;color:#0D1B3E;margin-bottom:3px}
.sc-desc{font-size:12px;color:#64748b;line-height:1.55}

/* 결론 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px;margin:20px 0;border-left:4px solid #00e87a}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#00e87a}
.conclusion .hl2{color:#00c8ff}

.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00e87a}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00e87a;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .blackbox{flex-direction:column}
  .bb-vs{display:none}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;Signal Scope &amp;middot; 파형 분석 &amp;middot; 간헐적 트리거 누락&lt;/div&gt;
&lt;h1&gt;분명히 트리거를 보냈는데&lt;br /&gt;&lt;span class=&quot;r&quot;&gt;이미지가 가끔 빠집니다&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;g&quot;&gt;파형을 보면 보입니다&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;재현도 안 되고, 원인도 모르는 간헐적 누락.&lt;br /&gt;블랙박스 없이는 사고 원인을 밝힐 수 없습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val g&quot;&gt;20ch&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;동시 캡처 채널&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;10ns&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;최소 샘플링 주기&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val r&quot;&gt;16,384&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;최대 샘플 저장&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재현이 안 되는 간헐적 트리거 누락의 3가지 실제 원인&lt;/li&gt;
&lt;li&gt;블랙박스 비유로 이해하는 파형 기록의 필요성&lt;/li&gt;
&lt;li&gt;Signal Scope 파형으로 원인을 찾는 방법&lt;/li&gt;
&lt;li&gt;현장에서 오실로스코프 없이 바로 파형 보는 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 스토리 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;STORY&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;아무도 못 찾는 오류&lt;/div&gt;
&lt;div class=&quot;story-box&quot;&gt;
&lt;div class=&quot;s-date&quot;&gt;INCIDENT LOG &amp;mdash; 간헐적 트리거 누락 3주차&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;&lt;b&gt;하루에 5~6번&lt;/b&gt; 이미지가 빠집니다. 그 위치는 검사가 안 된 거잖아요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;설비팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;트리거 신호 확인했는데 정상 출력되고 있어요. 카메라도 이상 없고요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who g&quot;&gt;소프트팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;재현을 해보려고 했는데 그날은 또 멀쩡하더라고요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who y&quot;&gt;라인장&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;재시작하면 당분간 괜찮은데... 또 생기고, 또 재시작하고...&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;&lt;b&gt;언제, 왜 빠지는지 아무도 모르는 게 문제입니다.&lt;/b&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;기록이 없으면 원인을 밝힐 수 없습니다.&lt;/b&gt; 누락이 생기는 그 순간 무슨 신호가 오고 갔는지 &amp;mdash; 파형 기록이 있어야 원인을 찾을 수 있습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 비유 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;블랙박스 없는 사고 조사&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;교통사고가 났습니다. 목격자도 없고, 블랙박스도 없습니다. 차체 손상만 보고 사고 원인을 밝혀야 합니다. 가능할까요?&lt;/p&gt;
&lt;div class=&quot;blackbox&quot;&gt;
&lt;div class=&quot;bb-vs&quot;&gt;VS&lt;/div&gt;
&lt;div class=&quot;bb-card no&quot;&gt;&lt;span class=&quot;bb-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;bb-title&quot;&gt;블랙박스 없음&lt;/div&gt;
&lt;ul class=&quot;bb-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;차체 손상만 확인 가능&lt;/li&gt;
&lt;li&gt;사고 순간 기록 없음&lt;/li&gt;
&lt;li&gt;원인 추정만 가능&lt;/li&gt;
&lt;li&gt;재발 방지 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb-result&quot;&gt;원인 불명&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;bb-card yes&quot;&gt;&lt;span class=&quot;bb-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;bb-title&quot;&gt;블랙박스 있음&lt;/div&gt;
&lt;ul class=&quot;bb-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사고 순간 영상 확인&lt;/li&gt;
&lt;li&gt;속도&amp;middot;방향 데이터 기록&lt;/li&gt;
&lt;li&gt;정확한 원인 특정&lt;/li&gt;
&lt;li&gt;재발 방지 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb-result&quot;&gt;원인 특정&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Signal Scope = 트리거 누락의 블랙박스&lt;/b&gt;&lt;br /&gt;누락이 발생한 순간의 엔코더&amp;middot;트리거&amp;middot;외부 입력 신호를 모두 기록합니다. 파형을 보면 원인이 보입니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 파형 분석 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;파형으로 찾아낸 3가지 실제 원인&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;현장에서 Signal Scope 파형 분석으로 찾아낸 간헐적 트리거 누락 원인은 대부분 세 가지 중 하나입니다.&lt;/p&gt;
&lt;div class=&quot;scope&quot;&gt;
&lt;div class=&quot;scope-title&quot;&gt;▶ SIGNAL SCOPE &amp;mdash; 채널별 파형 캡처&lt;/div&gt;
&lt;div class=&quot;scope-grid&quot;&gt;
&lt;div class=&quot;scope-ch&quot;&gt;
&lt;div class=&quot;scope-ch-label noise&quot;&gt;
&lt;div class=&quot;dot&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;scope-ch-name&quot;&gt;CH1 &amp;mdash; 노이즈 유입&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;wave-bg&quot;&gt;
&lt;div class=&quot;wave-noise&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wave-result err&quot;&gt;✗ 특정 구간 노이즈 스파이크 감지&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;scope-ch&quot;&gt;
&lt;div class=&quot;scope-ch-label dir&quot;&gt;
&lt;div class=&quot;dot&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;scope-ch-name&quot;&gt;CH2 &amp;mdash; 방향 신호 반전&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;wave-bg&quot;&gt;
&lt;div class=&quot;wave-dir&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wave-result err&quot;&gt;✗ 누락 순간 방향 신호 반전 확인&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;scope-ch&quot;&gt;
&lt;div class=&quot;scope-ch-label enc&quot;&gt;
&lt;div class=&quot;dot&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;scope-ch-name&quot;&gt;CH3 &amp;mdash; 엔코더 정상&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;wave-bg&quot;&gt;
&lt;div class=&quot;wave-enc&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wave-result ok&quot;&gt;✓ 정상 패턴 &amp;mdash; 원인 아님&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;scope-ch&quot;&gt;
&lt;div class=&quot;scope-ch-label trg&quot;&gt;
&lt;div class=&quot;dot&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;scope-ch-name&quot;&gt;CH4 &amp;mdash; 트리거 정상&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;wave-bg&quot;&gt;
&lt;div class=&quot;wave-trg&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wave-result ok&quot;&gt;✓ 정상 출력 &amp;mdash; 원인 아님&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;qa-list&quot;&gt;
&lt;div class=&quot;qa-item&quot;&gt;
&lt;div class=&quot;qa-q&quot;&gt;&quot;충방전 전환 순간에만 누락이 생깁니다&quot;&lt;/div&gt;
&lt;div class=&quot;qa-a&quot;&gt;&amp;rarr; &lt;b&gt;스위칭 노이즈가 엔코더 신호 라인에 유입.&lt;/b&gt; 파형에서 노이즈 스파이크 구간과 누락 타이밍이 일치. 케이블 분리 배선으로 해결.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;qa-item&quot;&gt;
&lt;div class=&quot;qa-q&quot;&gt;&quot;라인 감속 구간에서만 간헐적으로 빠집니다&quot;&lt;/div&gt;
&lt;div class=&quot;qa-a&quot;&gt;&amp;rarr; &lt;b&gt;감속 중 엔코더 방향 신호가 순간 반전.&lt;/b&gt; 트리거 카운터가 리셋되면서 누락 발생. 파형에서 반전 구간 특정 가능.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;qa-item&quot;&gt;
&lt;div class=&quot;qa-q&quot;&gt;&quot;동력 케이블 근처 배선 구간에서만 오류납니다&quot;&lt;/div&gt;
&lt;div class=&quot;qa-a&quot;&gt;&amp;rarr; &lt;b&gt;유도 노이즈가 신호 라인에 유입.&lt;/b&gt; 해당 채널 파형에서 고주파 노이즈 패턴 확인. 쉴드 케이블 교체로 해결.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 스펙 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;Signal Scope 주요 기능&lt;/div&gt;
&lt;div class=&quot;spec-grid&quot;&gt;
&lt;div class=&quot;sc&quot;&gt;
&lt;div class=&quot;sc-label&quot;&gt;SAMPLING&lt;/div&gt;
&lt;div class=&quot;sc-val&quot;&gt;10ns ~ 61&amp;micro;s&lt;/div&gt;
&lt;div class=&quot;sc-desc&quot;&gt;최대 100MHz 샘플링 &amp;mdash; 나노초 단위 신호 변화 캡처&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sc&quot;&gt;
&lt;div class=&quot;sc-label&quot;&gt;CHANNELS&lt;/div&gt;
&lt;div class=&quot;sc-val&quot;&gt;20채널 동시&lt;/div&gt;
&lt;div class=&quot;sc-desc&quot;&gt;엔코더&amp;middot;트리거&amp;middot;외부 입력 동시 캡처 &amp;mdash; 채널 간 상관관계 분석&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sc&quot;&gt;
&lt;div class=&quot;sc-label&quot;&gt;STORAGE&lt;/div&gt;
&lt;div class=&quot;sc-val&quot;&gt;16,384 샘플&lt;/div&gt;
&lt;div class=&quot;sc-desc&quot;&gt;자동 연속 저장 + 타임스탬프 &amp;mdash; 간헐적 오류 놓치지 않음&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sc&quot;&gt;
&lt;div class=&quot;sc-label&quot;&gt;VIEWER&lt;/div&gt;
&lt;div class=&quot;sc-val&quot;&gt;PC 실시간 확인&lt;/div&gt;
&lt;div class=&quot;sc-desc&quot;&gt;TAG_Signal_Viewer &amp;mdash; 현장에서 별도 장비 없이 파형 분석&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;별도 오실로스코프 불필요&lt;/b&gt; &amp;mdash; Signal Scope가 NSync에 하드웨어로 내장. 현장에서 바로 파형 확인 가능.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;현장에 블랙박스가 필요합니다&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;기록이 없으면 원인을 밝힐 수 없습니다&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간헐적 트리거 누락은 &lt;span class=&quot;hl&quot;&gt;설정 변경이나 재시작으로 해결되지 않습니다.&lt;/span&gt; 누락이 발생하는 순간의 신호를 캡처하고, 어떤 신호가 어떤 패턴으로 이상해지는지 파형으로 확인하는 것이 유일한 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노이즈 유입인지, 방향 신호 반전인지, 케이블 배선 문제인지 &amp;mdash; 파형을 보기 전에는 원인을 특정할 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl2&quot;&gt;현장에서 별도 장비 없이 바로 파형을 보고 원인을 찾을 수 있는 것.&lt;/span&gt; 그것이 Signal Scope가 현장에 있어야 하는 이유입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;재현이 안 되는 트리거 누락, 혼자 찾으려 하지 마세요&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 라인 구성과 누락 패턴을 알려주시면 파형 분석으로 원인을 같이 찾아드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=Signal Scope 트리거누락 분석 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지검사</category>
      <category>간혈적오류</category>
      <category>머신비전디버깅</category>
      <category>머신비전트리거</category>
      <category>비전검사오류</category>
      <category>신호스코프</category>
      <category>엔코더신호</category>
      <category>트리거누락</category>
      <category>트리거동기화</category>
      <category>파형분석</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/206</guid>
      <comments>https://swtec.tistory.com/206#entry206comment</comments>
      <pubDate>Thu, 18 Jun 2026 13:44:24 +0900</pubDate>
    </item>
    <item>
      <title>다채널 카메라, 조명 동기화 방법</title>
      <link>https://swtec.tistory.com/205</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#0a1628 60%,#061020 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(0,200,255,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#00c8ff;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span.b{color:#00c8ff}
.hero h1 span.r{color:#EF4444}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.b{color:#00c8ff}
.kpi-val.g{color:#00a896}
.kpi-val.r{color:#EF4444}
.kpi-lbl{font-size:12px;color:#64748b}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#00c8ff;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 스토리 */
.story-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0}
.story-box .s-date{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;letter-spacing:.15em;margin-bottom:14px}
.story-line{display:flex;gap:12px;margin-bottom:10px;align-items:flex-start}
.story-line:last-child{margin-bottom:0}
.s-who{font-size:11px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:64px;margin-top:2px;font-family:'Space Mono',monospace}
.s-who.r{color:#EF4444}
.s-who.g{color:#00a896}
.s-who.y{color:#FBBF24}
.s-say{font-size:13px;color:#94a3b8;line-height:1.65}
.s-say b{color:#fff}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #EF4444;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#EF4444}

/* 오케스트라 비유 */
.orchestra{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;margin:20px 0}
.orch-top{background:#0D1B3E;padding:16px 22px;display:flex;align-items:center;gap:10px}
.orch-top span{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;letter-spacing:.15em}
.orch-body{display:flex;gap:0}
.orch-col{flex:1;padding:20px 18px;border-right:1px solid #e2e8f0;text-align:center}
.orch-col:last-child{border-right:none}
.orch-icon{font-size:28px;margin-bottom:8px;display:block}
.orch-role{font-size:11px;font-weight:700;color:#64748b;margin-bottom:4px;letter-spacing:.05em}
.orch-name{font-size:13px;font-weight:700;color:#0D1B3E;margin-bottom:4px}
.orch-desc{font-size:11px;color:#94a3b8;line-height:1.5}
.orch-arrow{display:flex;align-items:center;padding:0 4px;color:#00c8ff;font-size:16px;flex-shrink:0}

/* 레이어 정합 시각화 */
.layer-viz{margin:20px 0}
.lv-label{font-size:11px;font-weight:700;letter-spacing:.12em;margin-bottom:10px;font-family:'Space Mono',monospace}
.lv-label.bad{color:#EF4444}
.lv-label.good{color:#00a896}
.lv-box{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px 20px;margin-bottom:8px;overflow:hidden}
.lv-layers{display:flex;flex-direction:column;gap:6px}
.lv-layer{height:28px;border-radius:4px;display:flex;align-items:center;padding:0 12px;font-size:12px;font-weight:700;color:#fff;position:relative}
.lv-layer.anode{background:linear-gradient(90deg,#1E40AF,#3b82f6)}
.lv-layer.cathode{background:linear-gradient(90deg,#166534,#22c55e)}
.lv-layer.sep{background:linear-gradient(90deg,#92400e,#f59e0b)}
.lv-layer.bad-shift{margin-left:14px}
.lv-layer.bad-shift2{margin-left:6px}
.lv-err{font-size:11px;color:#EF4444;margin-top:6px;display:flex;align-items:center;gap:6px}
.lv-err::before{content:'✗';font-weight:700}
.lv-ok{font-size:11px;color:#00a896;margin-top:6px;display:flex;align-items:center;gap:6px}
.lv-ok::before{content:'✓';font-weight:700}

.vs-div{display:flex;align-items:center;gap:12px;margin:16px 0}
.vs-div::before,.vs-div::after{content:'';flex:1;height:1px;background:#e2e8f0}
.vs-div span{font-family:'Space Mono',monospace;font-size:11px;color:#94a3b8;padding:4px 12px;border:1px solid #e2e8f0;border-radius:20px;background:#fff}

/* 플로우 */
.flow-label{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:8px;display:block}
.flow-label.bad{color:#EF4444}
.flow-label.good{color:#00c8ff}
.flow-row{display:flex;align-items:stretch;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0;margin-bottom:10px}
.flow-row.bad .fn{background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .fn{background:#f0fdfa;border-right:1px solid #ccf4ee}
.fn{flex:1;padding:14px 8px;text-align:center}
.fn:last-child{border-right:none}
.fn-top{height:3px;margin:-14px -8px 10px;display:block}
.flow-row.bad .fn-top{background:#EF4444}
.flow-row.good .fn-top{background:#00a896}
.fn-top.c{background:#00c8ff}
.fn-icon{font-size:18px;margin-bottom:5px;display:block}
.fn-name{font-size:11px;font-weight:700;color:#0D1B3E;margin-bottom:3px;display:block}
.fn-sub{font-size:10px;color:#64748b;display:block}
.farr{display:flex;align-items:center;padding:0 5px;font-size:13px;flex-shrink:0}
.flow-row.bad .farr{color:#EF4444;background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .farr{color:#00c8ff;background:#f0fdfa;border-right:1px solid #ccf4ee}

/* 채널 구성표 */
.ch-table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0;margin:16px 0}
.ch-table thead th{padding:10px 14px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;border-bottom:2px solid #e2e8f0;text-align:left;background:#f8fafc;color:#64748b}
.ch-table thead th.cb{color:#00c8ff;border-bottom-color:#00c8ff;background:rgba(0,200,255,0.04)}
.ch-table tbody td{padding:10px 14px;border-bottom:1px solid #f1f5f9;color:#334155;vertical-align:middle}
.ch-table tbody tr:last-child td{border-bottom:none}
.ch-table tbody td.lbl{font-weight:700;color:#0D1B3E}
.ch-table tbody td.val{color:#00c8ff;font-weight:700;font-family:'Space Mono',monospace}
.ch-badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px}
.ch-badge.a{background:#EFF6FF;color:#1E40AF}
.ch-badge.b{background:#F0FDF4;color:#166534}
.ch-badge.c{background:#FFF7ED;color:#92400e}

/* 결론 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px;margin:20px 0;border-left:4px solid #00c8ff}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#00c8ff}
.conclusion .hl2{color:#00e87a}

.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .orch-body{flex-direction:column}
  .orch-col{border-right:none;border-bottom:1px solid #e2e8f0}
  .orch-arrow{display:none}
  .flow-row{flex-direction:column}
  .farr{display:none}
  .fn{border-right:none;border-bottom:1px solid #e2e8f0}
  .fn:last-child{border-bottom:none}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;2차전지 적층 공정 &amp;middot; 멀티채널 검사 &amp;middot; 동기화&lt;/div&gt;
&lt;h1&gt;카메라 &lt;span class=&quot;b&quot;&gt;3대&lt;/span&gt;, 전부 최고 사양인데&lt;br /&gt;&lt;span class=&quot;r&quot;&gt;왜 이미지가 안 맞지?&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;각자 실력이 아무리 좋아도 지휘자가 없으면 소음입니다.&lt;br /&gt;채널이 따로 놀면 아무리 좋은 장비도 의미가 없습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val r&quot;&gt;3대&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;동시 운용 카메라&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;8ch&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;카메라 트리거 채널&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val g&quot;&gt;16ch&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;조명 독립 제어&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카메라 3대가 찍은 이미지 위치가 왜 조금씩 다른지&lt;/li&gt;
&lt;li&gt;멀티채널에서 출발점이 달라지면 생기는 정합 오차&lt;/li&gt;
&lt;li&gt;오케스트라 비유로 이해하는 단일 클럭의 중요성&lt;/li&gt;
&lt;li&gt;양극&amp;middot;음극&amp;middot;세퍼레이터 동시 검사 구성 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 스토리 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;STORY&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;최고 사양, 최고 가격, 근데 이미지가 안 맞는다&lt;/div&gt;
&lt;div class=&quot;story-box&quot;&gt;
&lt;div class=&quot;s-date&quot;&gt;INSPECTION REPORT &amp;mdash; 적층 라인 멀티카메라 검증&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;설비팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;카메라 3대 다 최고 사양으로 맞췄습니다. 해상도도 동일하고요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who g&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;근데 양극&amp;middot;음극&amp;middot;세퍼레이터 이미지를 겹쳐보면 &lt;b&gt;위치가 조금씩 다릅니다.&lt;/b&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who y&quot;&gt;소프트팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;트리거 딜레이 맞춰봤는데 고속에서는 또 틀어지더라고요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;설비팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;카메라 성능 문제가 아닌 것 같은데... 뭐가 문제죠?&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;카메라 성능이 문제가 아닙니다. 세 카메라가 찍는 순간이 정말 같은 시점인지, 그리고 같은 위치를 기준으로 찍고 있는지가 문제입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 비유 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;지휘자 없는 오케스트라&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;세계 최고의 바이올리니스트, 첼리스트, 피아니스트를 모아놓아도 지휘자가 없으면 소음이 됩니다. 각자 실력이 아무리 좋아도 같은 박자에서 출발하지 않으면 연주가 되지 않습니다.&lt;/p&gt;
&lt;div class=&quot;orchestra&quot;&gt;
&lt;div class=&quot;orch-top&quot;&gt;&lt;span&gt;오케스트라 &amp;rarr; 머신비전 대응 구조&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;orch-body&quot;&gt;
&lt;div class=&quot;orch-col&quot;&gt;&lt;span class=&quot;orch-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;orch-role&quot;&gt;악기 = 카메라&lt;/div&gt;
&lt;div class=&quot;orch-name&quot;&gt;카메라 3대&lt;/div&gt;
&lt;div class=&quot;orch-desc&quot;&gt;각자 최고 사양&lt;br /&gt;각자 다른 레이어 담당&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;orch-arrow&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;orch-col&quot;&gt;&lt;span class=&quot;orch-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;orch-role&quot;&gt;악보 = 조명&lt;/div&gt;
&lt;div class=&quot;orch-name&quot;&gt;조명 16ch&lt;/div&gt;
&lt;div class=&quot;orch-desc&quot;&gt;레이어마다&lt;br /&gt;다른 조명 조건&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;orch-arrow&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;orch-col&quot; style=&quot;background: rgba(0,200,255,0.04); border-top: 2px solid #00c8ff;&quot;&gt;&lt;span class=&quot;orch-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;orch-role&quot;&gt;지휘자 = FPGA&lt;/div&gt;
&lt;div class=&quot;orch-name&quot;&gt;단일 클럭&lt;/div&gt;
&lt;div class=&quot;orch-desc&quot;&gt;모든 채널이&lt;br /&gt;같은 박자에서 출발&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;지휘자(FPGA)가 없으면&lt;/b&gt; &amp;mdash; 각자 신호를 받아서 찍는 구조에서는 아무리 맞춰도 미세한 차이가 생깁니다. 출발점이 하나여야 도착점도 하나가 됩니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 레이어 정합 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;채널이 따로 놀면 생기는 레이어 정합 오차&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;적층 라인에서 전극이 이송되는 속도가 빠를수록, 채널 간 트리거 시점 차이가 이미지 위치 오차로 나타납니다.&lt;/p&gt;
&lt;div class=&quot;layer-viz&quot;&gt;
&lt;div class=&quot;lv-label bad&quot;&gt;▶ 기존 구조 &amp;mdash; 채널마다 출발점이 달라 위치 오차 발생&lt;/div&gt;
&lt;div class=&quot;lv-box&quot;&gt;
&lt;div class=&quot;lv-layers&quot;&gt;
&lt;div class=&quot;lv-layer anode&quot;&gt;양극 (카메라 1 &amp;mdash; 기준)&lt;/div&gt;
&lt;div class=&quot;lv-layer cathode bad-shift2&quot;&gt;음극 (카메라 2 &amp;mdash; 6&amp;micro;s 지연)&lt;/div&gt;
&lt;div class=&quot;lv-layer sep bad-shift&quot;&gt;세퍼레이터 (카메라 3 &amp;mdash; 14&amp;micro;s 지연)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;lv-err&quot;&gt;세 이미지를 겹치면 레이어 위치가 어긋남 &amp;mdash; 정합 불가&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vs-div&quot;&gt;&lt;span&gt;VS&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;layer-viz&quot;&gt;
&lt;div class=&quot;lv-label good&quot;&gt;▶ SWTEC 구조 &amp;mdash; 단일 클럭에서 동시 출발, 정합 오차 없음&lt;/div&gt;
&lt;div class=&quot;lv-box&quot;&gt;
&lt;div class=&quot;lv-layers&quot;&gt;
&lt;div class=&quot;lv-layer anode&quot;&gt;양극 (카메라 1)&lt;/div&gt;
&lt;div class=&quot;lv-layer cathode&quot;&gt;음극 (카메라 2)&lt;/div&gt;
&lt;div class=&quot;lv-layer sep&quot;&gt;세퍼레이터 (카메라 3)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;lv-ok&quot;&gt;세 이미지 출발점 동일 &amp;mdash; 완벽한 레이어 정합&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 구성 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;ETLr-30816-6 멀티채널 구성&lt;/div&gt;
&lt;span class=&quot;flow-label good&quot;&gt;▶ 양극&amp;middot;음극&amp;middot;세퍼레이터 동시 검사 플로우&lt;/span&gt;
&lt;div class=&quot;flow-row good&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더 3ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;위치 직접 입력&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top c&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt;⚡&lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;ETLr FPGA&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;단일 클럭&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라 8ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;동시 출력&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 16ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;Sequential&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table class=&quot;ch-table&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;레이어&lt;/th&gt;
&lt;th&gt;카메라&lt;/th&gt;
&lt;th&gt;조명 모드&lt;/th&gt;
&lt;th class=&quot;cb&quot;&gt;채널 할당&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;양극&lt;/td&gt;
&lt;td&gt;카메라 1&lt;/td&gt;
&lt;td&gt;&lt;span class=&quot;ch-badge a&quot;&gt;투과 조명&lt;/span&gt;&lt;/td&gt;
&lt;td class=&quot;val&quot;&gt;TRG 1 / L1~4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;음극&lt;/td&gt;
&lt;td&gt;카메라 2&lt;/td&gt;
&lt;td&gt;&lt;span class=&quot;ch-badge b&quot;&gt;사광 조명&lt;/span&gt;&lt;/td&gt;
&lt;td class=&quot;val&quot;&gt;TRG 2 / L5~8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;세퍼레이터&lt;/td&gt;
&lt;td&gt;카메라 3&lt;/td&gt;
&lt;td&gt;&lt;span class=&quot;ch-badge c&quot;&gt;동축 조명&lt;/span&gt;&lt;/td&gt;
&lt;td class=&quot;val&quot;&gt;TRG 3 / L9~12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Sequential Mode&lt;/b&gt; &amp;mdash; 각 카메라 촬상 순간에 해당 조명만 점등. 채널 간 크로스토크 없음.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;지휘자가 있어야 오케스트라가 됩니다&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;카메라 성능이 문제가 아니었습니다&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양극&amp;middot;음극&amp;middot;세퍼레이터 동시 검사에서 이미지 정합의 핵심은 &lt;span class=&quot;hl&quot;&gt;모든 채널이 같은 시점에 같은 위치를 찍는 것&lt;/span&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;채널마다 트리거 출발점이 다르면 이 조건을 만족할 수 없습니다. 카메라 사양을 높여도, 딜레이를 아무리 맞춰도 근본적으로 해결되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl2&quot;&gt;카메라&amp;middot;조명&amp;middot;엔코더 전 채널이 하나의 FPGA 클럭에서 출발하는 구조.&lt;/span&gt; 그것이 멀티채널 적층 검사의 기본 조건입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;멀티카메라 이미지 정합이 안 맞는 현장이라면&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 카메라&amp;middot;조명 채널 구성을 알려주시면 단일 클럭 통합 구성을 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=멀티채널 적층검사 동기화 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지적층</category>
      <category>동기화오류</category>
      <category>머신비전멀티채널</category>
      <category>멀티채널비전</category>
      <category>멀티카메라동기화</category>
      <category>배터리셀적층</category>
      <category>배터리적층</category>
      <category>비전검사채널</category>
      <category>양극음극세퍼레이터</category>
      <category>적층공정검사</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/205</guid>
      <comments>https://swtec.tistory.com/205#entry205comment</comments>
      <pubDate>Thu, 18 Jun 2026 13:39:05 +0900</pubDate>
    </item>
    <item>
      <title>오후 2시만 되면불량률이 올라가는공장의 미스터리</title>
      <link>https://swtec.tistory.com/204</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;시간이 아닌 날씨에 영향을 받는 환경도 있고, 각 생산현장마다 특이한 문제들이 생기고 있습니다.&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;그 상황 중에 한가지 사례를 소개합니다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#1a1200 60%,#2d1f00 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(251,191,36,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#FBBF24;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span.y{color:#FBBF24}
.hero h1 span.b{color:#00c8ff}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.y{color:#FBBF24}
.kpi-val.b{color:#00c8ff}
.kpi-val.g{color:#00a896}
.kpi-lbl{font-size:12px;color:#64748b}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#FBBF24;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#FBBF24;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 스토리 대화 */
.story-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0}
.story-box .s-date{font-family:'Space Mono',monospace;font-size:10px;color:#FBBF24;letter-spacing:.15em;margin-bottom:14px}
.story-line{display:flex;gap:12px;margin-bottom:10px;align-items:flex-start}
.story-line:last-child{margin-bottom:0}
.s-who{font-size:11px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:64px;margin-top:2px;font-family:'Space Mono',monospace}
.s-who.y{color:#FBBF24}
.s-who.g{color:#00a896}
.s-say{font-size:13px;color:#94a3b8;line-height:1.65}
.s-say b{color:#fff}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fffbeb;border:1px solid #fde68a;border-left:3px solid #FBBF24;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#92400e}

/* 수사 카드 */
.suspect-list{display:flex;flex-direction:column;gap:10px;margin:20px 0}
.suspect{display:flex;align-items:center;gap:0;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}
.sus-who{padding:14px 18px;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;min-width:120px;border-right:1px solid #e2e8f0;background:#f8fafc}
.sus-check{padding:14px 16px;font-size:13px;color:#334155;flex:1;border-right:1px solid #e2e8f0}
.sus-result{padding:14px 14px;font-size:12px;font-weight:700;min-width:80px;text-align:center}
.sus-result.pass{background:#F0FDF4;color:#166534}
.sus-result.fail{background:#FFF1F2;color:#be123c}
.sus-result.q{background:#fffbeb;color:#92400e}

/* 시간대 그래프 */
.time-graph{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:20px 22px;margin:20px 0}
.tg-title{font-size:13px;font-weight:700;color:#0D1B3E;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.tg-title::before{content:' ';font-size:14px}
.tg-rows{display:flex;flex-direction:column;gap:10px}
.tg-row{display:flex;align-items:center;gap:12px}
.tg-time{font-family:'Space Mono',monospace;font-size:11px;color:#64748b;min-width:56px;flex-shrink:0}
.tg-bar-wrap{flex:1;background:#f1f5f9;border-radius:4px;height:20px;position:relative;overflow:hidden}
.tg-bar{height:100%;border-radius:4px;display:flex;align-items:center;padding-left:8px;font-size:11px;font-weight:700;color:#fff;transition:width 0.3s}
.tg-bar.high{background:linear-gradient(90deg,#00a896,#00c8ff)}
.tg-bar.mid{background:linear-gradient(90deg,#f59e0b,#FBBF24)}
.tg-bar.low{background:linear-gradient(90deg,#EF4444,#dc2626)}
.tg-pct{font-family:'Space Mono',monospace;font-size:11px;font-weight:700;min-width:40px;text-align:right}
.tg-pct.high{color:#00a896}
.tg-pct.mid{color:#f59e0b}
.tg-pct.low{color:#EF4444}

/* 원인 비교 */
.cause-compare{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}
@media(max-width:500px){.cause-compare{grid-template-columns:1fr}}
.cc-card{border-radius:10px;padding:20px}
.cc-card.bad{background:#fffbeb;border:1.5px solid #FBBF24}
.cc-card.good{background:#E6F7F5;border:1.5px solid #00A896}
.cc-icon{font-size:24px;margin-bottom:8px;display:block}
.cc-title{font-size:13px;font-weight:700;margin-bottom:10px}
.cc-card.bad .cc-title{color:#92400e}
.cc-card.good .cc-title{color:#028090}
.cc-items{list-style:none;display:flex;flex-direction:column;gap:6px}
.cc-items li{font-size:13px;color:#334155;display:flex;align-items:flex-start;gap:6px;line-height:1.5}
.cc-items li::before{content:'·';font-weight:700;flex-shrink:0}
.cc-card.bad .cc-items li::before{color:#FBBF24}
.cc-card.good .cc-items li::before{color:#00A896}

/* NSync 기능 카드 */
.nsync-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
@media(max-width:500px){.nsync-grid{grid-template-columns:1fr}}
.nc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px 18px;border-top:2px solid #00a896}
.nc-label{font-family:'Space Mono',monospace;font-size:10px;color:#00a896;font-weight:700;margin-bottom:5px}
.nc-val{font-size:14px;font-weight:700;color:#0D1B3E;margin-bottom:3px}
.nc-desc{font-size:12px;color:#64748b;line-height:1.55}

/* 파형 시각화 */
.waveform{background:#0D1B3E;border-radius:10px;padding:22px 24px;margin:20px 0}
.wf-title{font-family:'Space Mono',monospace;font-size:11px;color:#FBBF24;letter-spacing:.1em;margin-bottom:16px}
.wf-row{margin-bottom:14px}
.wf-row:last-child{margin-bottom:0}
.wf-label{font-size:11px;color:#64748b;margin-bottom:6px;font-family:'Space Mono',monospace}
.wf-bar-bg{background:#1e2d40;border-radius:4px;height:24px;position:relative;overflow:hidden}
.wf-fill{height:100%;border-radius:4px;position:relative;display:flex;align-items:center;padding-left:10px}
.wf-fill.old{background:linear-gradient(90deg,rgba(251,191,36,.3),rgba(251,191,36,.6));width:100%}
.wf-fill.new{background:linear-gradient(90deg,#00a896,#00c8ff);width:90%}
.wf-text{font-size:11px;font-weight:700;color:#fff}
.wf-marker{position:absolute;right:10%;top:0;bottom:0;width:2px;background:#00c8ff;opacity:0.8}
.wf-marker-label{position:absolute;right:calc(10% + 4px);top:50%;transform:translateY(-50%);font-size:10px;color:#00c8ff;font-weight:700;white-space:nowrap}
.wf-shutter{margin-top:4px;font-size:11px;color:#00e87a;text-align:right;padding-right:4px}

/* 결론 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px;margin:20px 0;border-left:4px solid #FBBF24}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#FBBF24}
.conclusion .hl2{color:#00c8ff}

.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .suspect{flex-direction:column}
  .sus-who{border-right:none;border-bottom:1px solid #e2e8f0;min-width:unset;width:100%}
  .sus-check{border-right:none;border-bottom:1px solid #e2e8f0}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;파우치&amp;middot;캔 배터리 검사 &amp;middot; 조명 광량 &amp;middot; NSync&lt;/div&gt;
&lt;h1&gt;오후 2시만 되면&lt;br /&gt;&lt;span class=&quot;y&quot;&gt;불량률이 올라가는&lt;/span&gt;&lt;br /&gt;공장의 미스터리&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;측정하지 않으면 변하고 있다는 것조차 모릅니다.&lt;br /&gt;범인은 생각보다 가까운 곳에 있었습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val y&quot;&gt;PM 14:00&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;불량률 상승 시작&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;90%&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;NSync 셔터 기준점&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val g&quot;&gt;실시간&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;파형 모니터링&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간대별로 불량률이 달라지는 미스터리의 정체&lt;/li&gt;
&lt;li&gt;반사율 높은 소재가 조명 변화에 민감한 이유&lt;/li&gt;
&lt;li&gt;전류를 고정해도 광량이 변하는 두 가지 원인&lt;/li&gt;
&lt;li&gt;실시간 파형 측정으로 항상 최적 밝기를 유지하는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 스토리 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;STORY&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;오후 2시의 미스터리&lt;/div&gt;
&lt;div class=&quot;story-box&quot;&gt;
&lt;div class=&quot;s-date&quot;&gt;QUALITY LOG &amp;mdash; 주간 불량률 분석&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who y&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;이상합니다. 오전엔 불량률 0.3%인데 &lt;b&gt;오후 2시 넘어가면 1.2%로 올라가요.&lt;/b&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;설비팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;카메라 확인했는데 이상 없고요. 트리거 신호도 정상입니다.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who g&quot;&gt;생산팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;원자재 로트도 같고, 작업자도 같아요. 뭐가 달라지는 거죠?&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who y&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;&lt;b&gt;재시작하면 다시 괜찮아집니다.&lt;/b&gt; 근데 또 오후가 되면...&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;모든 것이 정상처럼 보입니다. 그런데 시간이 지날수록 무언가가 달라지고 있습니다. 달라지는 게 뭔지 아무도 측정하고 있지 않았습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 수사 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;용의자를 하나씩 제거해봤습니다&lt;/div&gt;
&lt;div class=&quot;suspect-list&quot;&gt;
&lt;div class=&quot;suspect&quot;&gt;
&lt;div class=&quot;sus-who&quot;&gt;  카메라&lt;/div&gt;
&lt;div class=&quot;sus-check&quot;&gt;프리런 모드 이미지 선명도 확인 &amp;mdash; 이상 없음&lt;/div&gt;
&lt;div class=&quot;sus-result pass&quot;&gt;무죄&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;suspect&quot;&gt;
&lt;div class=&quot;sus-who&quot;&gt;⚡ 트리거&lt;/div&gt;
&lt;div class=&quot;sus-check&quot;&gt;신호 레벨&amp;middot;극성&amp;middot;출력 여부 확인 &amp;mdash; 이상 없음&lt;/div&gt;
&lt;div class=&quot;sus-result pass&quot;&gt;무죄&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;suspect&quot;&gt;
&lt;div class=&quot;sus-who&quot;&gt;  원자재&lt;/div&gt;
&lt;div class=&quot;sus-check&quot;&gt;동일 로트, 동일 공급사 &amp;mdash; 변동 없음&lt;/div&gt;
&lt;div class=&quot;sus-result pass&quot;&gt;무죄&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;suspect&quot;&gt;
&lt;div class=&quot;sus-who&quot;&gt;  조명&lt;/div&gt;
&lt;div class=&quot;sus-check&quot;&gt;전류값 설정 확인 &amp;mdash; 변동 없음. 하지만...&lt;/div&gt;
&lt;div class=&quot;sus-result q&quot;&gt;보류&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;조명 전류는 고정이었습니다. 하지만 실제 광량은 측정하지 않고 있었습니다.&lt;/b&gt;&lt;br /&gt;전류가 같아도 실제 밝기가 다를 수 있습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 원인 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;전류를 고정해도 광량이 변하는 이유&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;LED 조명의 밝기는 두 가지 이유로 계속 변합니다. 둘 다 전류 설정과 무관합니다.&lt;/p&gt;
&lt;div class=&quot;time-graph&quot;&gt;
&lt;div class=&quot;tg-title&quot;&gt;가동 시간별 실제 광량 변화 (동일 전류 조건)&lt;/div&gt;
&lt;div class=&quot;tg-rows&quot;&gt;
&lt;div class=&quot;tg-row&quot;&gt;
&lt;div class=&quot;tg-time&quot;&gt;09:00&lt;/div&gt;
&lt;div class=&quot;tg-bar-wrap&quot;&gt;
&lt;div class=&quot;tg-bar high&quot; style=&quot;width: 95%;&quot;&gt;가동 시작&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-pct high&quot;&gt;100%&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-row&quot;&gt;
&lt;div class=&quot;tg-time&quot;&gt;11:00&lt;/div&gt;
&lt;div class=&quot;tg-bar-wrap&quot;&gt;
&lt;div class=&quot;tg-bar mid&quot; style=&quot;width: 85%;&quot;&gt;온도 상승&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-pct mid&quot;&gt;89%&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-row&quot;&gt;
&lt;div class=&quot;tg-time&quot;&gt;14:00&lt;/div&gt;
&lt;div class=&quot;tg-bar-wrap&quot;&gt;
&lt;div class=&quot;tg-bar low&quot; style=&quot;width: 72%;&quot;&gt;열 포화&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-pct low&quot;&gt;76%&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-row&quot;&gt;
&lt;div class=&quot;tg-time&quot;&gt;재시작&lt;/div&gt;
&lt;div class=&quot;tg-bar-wrap&quot;&gt;
&lt;div class=&quot;tg-bar high&quot; style=&quot;width: 95%;&quot;&gt;냉각 후 복귀&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tg-pct high&quot;&gt;100%&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cause-compare&quot;&gt;
&lt;div class=&quot;cc-card bad&quot;&gt;&lt;span class=&quot;cc-icon&quot;&gt; ️&lt;/span&gt;
&lt;div class=&quot;cc-title&quot;&gt;원인 1 &amp;mdash; 온도 상승&lt;/div&gt;
&lt;ul class=&quot;cc-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LED는 온도가 오를수록 발광 효율 저하&lt;/li&gt;
&lt;li&gt;가동 5시간 후 광량 최대 30% 감소&lt;/li&gt;
&lt;li&gt;재시작 &amp;rarr; 냉각 &amp;rarr; 일시 복귀 패턴&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;cc-card bad&quot;&gt;&lt;span class=&quot;cc-icon&quot;&gt;⏳&lt;/span&gt;
&lt;div class=&quot;cc-title&quot;&gt;원인 2 &amp;mdash; 노화&lt;/div&gt;
&lt;ul class=&quot;cc-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LED는 사용 시간 누적으로 서서히 어두워짐&lt;/li&gt;
&lt;li&gt;6개월 후 초기 대비 광량 20~40% 저하&lt;/li&gt;
&lt;li&gt;검사 파라미터가 조금씩 맞지 않아짐&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;반사율 높은 소재(알루미늄 파우치&amp;middot;캔)에서 이 문제가 더 심각한 이유&lt;/b&gt;&lt;br /&gt;일반 소재는 광량 10% 변화 &amp;rarr; 이미지 밝기 변화 소폭&lt;br /&gt;반사 소재는 광량 10% 변화 &amp;rarr; 이미지 밝기 변화 &lt;b&gt;2~3배 증폭&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 NSync --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;측정해야 알 수 있고, 알아야 잡을 수 있습니다&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;NSync는 조명에 실제로 흐르는 전류 파형을 실시간으로 측정합니다. 전류가 최대치의 &lt;b&gt;90%에 도달하는 순간&lt;/b&gt;을 감지하고, 바로 그때 카메라 셔터를 내립니다.&lt;/p&gt;
&lt;div class=&quot;waveform&quot;&gt;
&lt;div class=&quot;wf-title&quot;&gt;▶ 실시간 파형 &amp;mdash; 셔터 타이밍 비교&lt;/div&gt;
&lt;div class=&quot;wf-row&quot;&gt;
&lt;div class=&quot;wf-label&quot;&gt;기존 방식 &amp;mdash; 고정 딜레이 기준 셔터&lt;/div&gt;
&lt;div class=&quot;wf-bar-bg&quot;&gt;
&lt;div class=&quot;wf-fill old&quot;&gt;&lt;span class=&quot;wf-text&quot;&gt;전류 파형 (온도&amp;middot;노화에 따라 변동)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wf-shutter&quot; style=&quot;color: #ef4444;&quot;&gt;✗ 셔터 타이밍 = 설정값 기준 (실제 광량 무관)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wf-row&quot;&gt;
&lt;div class=&quot;wf-label&quot;&gt;NSync &amp;mdash; 실측 90% 기준 셔터&lt;/div&gt;
&lt;div class=&quot;wf-bar-bg&quot;&gt;
&lt;div class=&quot;wf-fill new&quot;&gt;&lt;span class=&quot;wf-text&quot;&gt;실측 전류 파형&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;wf-marker&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;wf-marker-label&quot;&gt;90%&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wf-shutter&quot;&gt;✓ 셔터 타이밍 = 실측 90% 도달 순간&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;nsync-grid&quot;&gt;
&lt;div class=&quot;nc&quot;&gt;
&lt;div class=&quot;nc-label&quot;&gt;REAL-TIME&lt;/div&gt;
&lt;div class=&quot;nc-val&quot;&gt;파형 실시간 측정&lt;/div&gt;
&lt;div class=&quot;nc-desc&quot;&gt;조명 상태를 수치로 확인 &amp;mdash; 이상 징후 즉시 감지&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;nc&quot;&gt;
&lt;div class=&quot;nc-label&quot;&gt;AUTO SHUTTER&lt;/div&gt;
&lt;div class=&quot;nc-val&quot;&gt;90% 도달 시 자동 셔터&lt;/div&gt;
&lt;div class=&quot;nc-desc&quot;&gt;온도&amp;middot;노화 무관 &amp;mdash; 항상 최적 밝기에서 촬영&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;nc&quot;&gt;
&lt;div class=&quot;nc-label&quot;&gt;ALARM&lt;/div&gt;
&lt;div class=&quot;nc-val&quot;&gt;조명 열화 경보&lt;/div&gt;
&lt;div class=&quot;nc-desc&quot;&gt;교체 시점을 데이터로 사전 확인 &amp;mdash; 갑작스러운 불량 예방&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;nc&quot;&gt;
&lt;div class=&quot;nc-label&quot;&gt;LOGGING&lt;/div&gt;
&lt;div class=&quot;nc-val&quot;&gt;이력 자동 저장&lt;/div&gt;
&lt;div class=&quot;nc-desc&quot;&gt;시간대별 광량 변화 추적 &amp;mdash; 원인 분석 데이터 확보&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;오후 2시의 범인, 이제 찾을 수 있습니다&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;측정하지 않으면 변하고 있다는 것조차 모릅니다&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조명 전류를 고정하는 것만으로는 충분하지 않습니다. &lt;span class=&quot;hl&quot;&gt;실제 광량은 온도와 노화에 의해 계속 변합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반사율 높은 알루미늄 파우치&amp;middot;캔 소재에서는 이 변화가 이미지에 더 크게 나타납니다. 시간대별 검출률 차이, 주기적인 파라미터 재조정, 조명 교체 후 일시적 개선. 모두 같은 원인입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl2&quot;&gt;실제 광량을 실시간으로 측정하고, 그 측정값 기준으로 셔터를 내리는 구조.&lt;/span&gt; 그것이 오후 2시의 미스터리를 푸는 방법입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;시간대별로 검출률이 달라지는 현장이라면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 조명 구성과 증상을 알려주시면 광량 피드백 방식 도입을 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=NSync 광량피드백 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지외관검사</category>
      <category>머신비전조명</category>
      <category>반사소재검사</category>
      <category>배터리셀검사</category>
      <category>배터리캔검사</category>
      <category>비전검사불량</category>
      <category>조명광량</category>
      <category>조명노화</category>
      <category>조명동기화</category>
      <category>파우치배터리검사</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/204</guid>
      <comments>https://swtec.tistory.com/204#entry204comment</comments>
      <pubDate>Thu, 18 Jun 2026 13:31:54 +0900</pubDate>
    </item>
    <item>
      <title>속도가 바뀌면 검사기가 불안정한 이유!! 이게 맞아?</title>
      <link>https://swtec.tistory.com/203</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#1a0520 60%,#0a0a2e 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(239,68,68,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#EF4444;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span.r{color:#EF4444}
.hero h1 span.b{color:#00c8ff}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.r{color:#EF4444}
.kpi-val.b{color:#00c8ff}
.kpi-val.g{color:#00a896}
.kpi-lbl{font-size:12px;color:#64748b}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#EF4444;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#EF4444;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 스토리 대화 */
.story-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0}
.story-box .s-date{font-family:'Space Mono',monospace;font-size:10px;color:#EF4444;letter-spacing:.15em;margin-bottom:14px}
.story-line{display:flex;gap:12px;margin-bottom:10px;align-items:flex-start}
.story-line:last-child{margin-bottom:0}
.s-who{font-size:11px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:64px;margin-top:2px;font-family:'Space Mono',monospace}
.s-who.r{color:#EF4444}
.s-who.g{color:#00a896}
.s-say{font-size:13px;color:#94a3b8;line-height:1.65}
.s-say b{color:#fff}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #EF4444;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#EF4444}

/* 딜레마 카드 */
.dilemma{display:flex;gap:0;margin:20px 0;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0;position:relative}
.dl-card{flex:1;padding:24px 20px;text-align:center;position:relative}
.dl-card.up{background:linear-gradient(135deg,#FFF1F2,#ffe4e6);border-right:none}
.dl-card.down{background:linear-gradient(135deg,#EFF6FF,#dbeafe);border-left:none}
.dl-card::after{content:'';position:absolute;top:0;bottom:0;width:3px}
.dl-card.up::after{right:0;background:linear-gradient(180deg,#EF4444,#dc2626)}
.dl-card.down::after{left:0;background:linear-gradient(180deg,#1E40AF,#3b82f6)}
.dl-vs-center{
  position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%);
  z-index:2;
  width:40px;height:40px;
  background:#0D1B3E;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:'Space Mono',monospace;
  font-size:11px;font-weight:700;color:#fff;
  box-shadow:0 0 0 4px #f8fafc;
}
.dl-icon{font-size:32px;margin-bottom:10px;display:block}
.dl-title{font-size:17px;font-weight:800;margin-bottom:8px;letter-spacing:-0.01em}
.dl-card.up .dl-title{color:#dc2626}
.dl-card.down .dl-title{color:#1E40AF}
.dl-items{list-style:none;display:flex;flex-direction:column;gap:5px}
.dl-items li{font-size:13px;color:#475569;line-height:1.5;display:flex;align-items:center;justify-content:center;gap:5px}
.dl-items li::before{content:'·';font-weight:700}
.dl-card.up .dl-items li::before{color:#EF4444}
.dl-card.down .dl-items li::before{color:#1E40AF}
.dl-result{display:inline-block;margin-top:10px;font-size:11px;font-weight:700;padding:4px 12px;border-radius:20px}
.dl-card.up .dl-result{background:#EF4444;color:#fff}
.dl-card.down .dl-result{background:#1E40AF;color:#fff}

/* 속도 타임라인 */
.timeline{display:flex;flex-direction:column;gap:0;margin:20px 0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}
.tl-item{display:flex;align-items:center;gap:0;border-bottom:1px solid #f1f5f9}
.tl-item:last-child{border-bottom:none}
.tl-speed{font-family:'Space Mono',monospace;font-size:13px;font-weight:700;padding:14px 16px;min-width:110px;border-right:1px solid #f1f5f9;color:#0D1B3E}
.tl-bar-wrap{flex:1;padding:14px 16px;display:flex;align-items:center;gap:10px}
.tl-bar{height:8px;border-radius:4px}
.tl-bar.ok{background:#00a896}
.tl-bar.warn{background:#f59e0b}
.tl-bar.danger{background:#EF4444}
.tl-label{font-size:12px;font-weight:600;flex-shrink:0}
.tl-label.ok{color:#166534}
.tl-label.warn{color:#92400e}
.tl-label.danger{color:#dc2626}
.tl-freq{font-family:'Space Mono',monospace;font-size:11px;color:#64748b;padding:14px 16px;min-width:80px;text-align:right;border-left:1px solid #f1f5f9}

/* 플로우 */
.flow-label{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:8px;display:block}
.flow-label.bad{color:#EF4444}
.flow-label.good{color:#00c8ff}
.flow-row{display:flex;align-items:stretch;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0;margin-bottom:10px}
.flow-row.bad .fn{background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .fn{background:#f0fdfa;border-right:1px solid #ccf4ee}
.fn{flex:1;padding:14px 8px;text-align:center}
.fn:last-child{border-right:none}
.fn-top{height:3px;margin:-14px -8px 10px;display:block}
.flow-row.bad .fn-top{background:#EF4444}
.flow-row.good .fn-top{background:#00a896}
.fn-top.c{background:#00c8ff}
.fn-icon{font-size:18px;margin-bottom:5px;display:block}
.fn-name{font-size:11px;font-weight:700;color:#0D1B3E;margin-bottom:3px;display:block}
.fn-sub{font-size:10px;color:#64748b;display:block}
.farr{display:flex;align-items:center;padding:0 5px;font-size:13px;flex-shrink:0}
.flow-row.bad .farr{color:#EF4444;background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .farr{color:#00c8ff;background:#f0fdfa;border-right:1px solid #ccf4ee}

.vs-div{display:flex;align-items:center;gap:12px;margin:16px 0}
.vs-div::before,.vs-div::after{content:'';flex:1;height:1px;background:#e2e8f0}
.vs-div span{font-family:'Space Mono',monospace;font-size:11px;color:#94a3b8;padding:4px 12px;border:1px solid #e2e8f0;border-radius:20px;background:#fff}

/* 조명 모드 카드 */
.mode-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:16px 0}
@media(max-width:500px){.mode-grid{grid-template-columns:1fr}}
.mode-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;border-top:2px solid #00c8ff;text-align:center}
.mode-icon{font-size:22px;margin-bottom:6px;display:block}
.mode-name{font-size:12px;font-weight:700;color:#0D1B3E;margin-bottom:4px}
.mode-desc{font-size:11px;color:#64748b;line-height:1.5}
.mode-tag{display:inline-block;font-size:10px;padding:2px 8px;border-radius:20px;background:#EFF6FF;color:#1E40AF;margin-top:5px}

/* 결론 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px;margin:20px 0;border-left:4px solid #EF4444}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#EF4444}
.conclusion .hl2{color:#00c8ff}

.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .flow-row{flex-direction:column}
  .farr{display:none}
  .fn{border-right:none;border-bottom:1px solid #e2e8f0}
  .fn:last-child{border-bottom:none}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;2차전지 전극 코팅 &amp;middot; 고속 라인 &amp;middot; 동기화&lt;/div&gt;
&lt;h1&gt;&lt;span class=&quot;r&quot;&gt;속도 올리면 불량&lt;/span&gt; 나고&lt;br /&gt;&lt;span class=&quot;b&quot;&gt;불량 잡으면 속도&lt;/span&gt; 못 올리고&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;설정을 아무리 바꿔도 해결이 안 된다면&lt;br /&gt;설정 문제가 아닌 구조 문제입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val r&quot;&gt;100m/min&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;코팅 라인 이송 속도&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;16.7kHz&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;트리거 주파수 (0.1mm피치)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val g&quot;&gt;16ch&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;조명 독립 제어&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;속도와 품질이 동시에 안 되는 구조적 이유&lt;/li&gt;
&lt;li&gt;100m/min에서 소프트웨어 트리거가 한계에 부딪히는 시점&lt;/li&gt;
&lt;li&gt;코팅 검사에서 조명 동기화가 중요한 이유&lt;/li&gt;
&lt;li&gt;속도와 검출률을 동시에 잡는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 스토리 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;STORY&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;셋 다 맞는데, 왜 불량이 나올까&lt;/div&gt;
&lt;div class=&quot;story-box&quot;&gt;
&lt;div class=&quot;s-date&quot;&gt;WEEKLY MEETING &amp;mdash; 생산&amp;middot;품질&amp;middot;설비 3자 회의&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;생산팀장&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;라인 속도 올려야 합니다. 이번 달 목표 물량이 있으니까요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who g&quot;&gt;품질팀장&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;속도 올리면 불량 검출률이 떨어져요. &lt;b&gt;핀홀 놓치는 거 확인됐습니다.&lt;/b&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;설비팀장&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;트리거 딜레이 조정해봤는데 안 되더라고요. 설정 문제가 아닌 것 같아요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who r&quot;&gt;생산팀장&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;그럼 어떻게 하라는 거예요?&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;결론&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;셋 다 맞습니다. 그리고 셋 다 &lt;b&gt;진짜 원인을 모르고 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;dilemma&quot;&gt;
&lt;div class=&quot;dl-vs-center&quot;&gt;VS&lt;/div&gt;
&lt;div class=&quot;dl-card up&quot;&gt;&lt;span class=&quot;dl-icon&quot;&gt;⚡&lt;/span&gt;
&lt;div class=&quot;dl-title&quot;&gt;속도 &amp;uarr;&lt;/div&gt;
&lt;ul class=&quot;dl-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생산 목표 달성&lt;/li&gt;
&lt;li&gt;트리거 주파수 증가&lt;/li&gt;
&lt;li&gt;소프트웨어 지연 누적&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;dl-result&quot;&gt;불량 검출률 &amp;darr;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;dl-card down&quot;&gt;&lt;span class=&quot;dl-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;dl-title&quot;&gt;검출률 &amp;uarr;&lt;/div&gt;
&lt;ul class=&quot;dl-items&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;품질 기준 충족&lt;/li&gt;
&lt;li&gt;속도 제한 필요&lt;/li&gt;
&lt;li&gt;생산 목표 미달&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;dl-result&quot;&gt;생산 목표 미달&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;이 딜레마는 설정 변경으로 해결되지 않습니다.&lt;/b&gt;&lt;br /&gt;속도가 빨라질수록 소프트웨어 처리 지연이 트리거 주기를 침범하는 구조적 문제입니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 원인 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;100m/min에서 트리거 하나의 무게&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;코팅 라인 이송 속도 100m/min = 초당 &lt;b&gt;1,667mm&lt;/b&gt;. 검사 해상도 0.1mm 피치 기준 트리거 주파수는 &lt;b&gt;16.7kHz&lt;/b&gt;. 트리거 하나의 주기는 &lt;b&gt;60&amp;micro;s&lt;/b&gt;.&lt;/p&gt;
&lt;div class=&quot;timeline&quot;&gt;
&lt;div class=&quot;tl-item&quot;&gt;
&lt;div class=&quot;tl-speed&quot;&gt;60 m/min&lt;/div&gt;
&lt;div class=&quot;tl-bar-wrap&quot;&gt;
&lt;div class=&quot;tl-bar ok&quot; style=&quot;width: 30%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;tl-label ok&quot;&gt;SW 처리 가능&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;tl-freq&quot;&gt;1 kHz&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tl-item&quot;&gt;
&lt;div class=&quot;tl-speed&quot;&gt;100 m/min&lt;/div&gt;
&lt;div class=&quot;tl-bar-wrap&quot;&gt;
&lt;div class=&quot;tl-bar warn&quot; style=&quot;width: 60%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;tl-label warn&quot;&gt;지연 시작&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;tl-freq&quot;&gt;16.7 kHz&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tl-item&quot;&gt;
&lt;div class=&quot;tl-speed&quot;&gt;150 m/min&lt;/div&gt;
&lt;div class=&quot;tl-bar-wrap&quot;&gt;
&lt;div class=&quot;tl-bar danger&quot; style=&quot;width: 85%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;tl-label danger&quot;&gt;누락 발생&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;tl-freq&quot;&gt;25 kHz&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;tl-item&quot;&gt;
&lt;div class=&quot;tl-speed&quot;&gt;200 m/min&lt;/div&gt;
&lt;div class=&quot;tl-bar-wrap&quot;&gt;
&lt;div class=&quot;tl-bar danger&quot; style=&quot;width: 100%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;span class=&quot;tl-label danger&quot;&gt;검사 불가&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;tl-freq&quot;&gt;33 kHz&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;소프트웨어 트리거의 한계&lt;/b&gt; &amp;mdash; 속도가 올라갈수록 처리 지연이 가변적으로 발생.&lt;br /&gt;어떤 트리거는 제때 나가고, 어떤 트리거는 수 &amp;micro;s 늦게 나갑니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 조명 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;코팅 검사에서 조명 동기화가 중요한 이유&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;코팅 결함마다 잘 보이는 조명 조건이 다릅니다. 하나의 라인에서 여러 조명 조건을 동시에 운용해야 하는 이유입니다.&lt;/p&gt;
&lt;div class=&quot;mode-grid&quot;&gt;
&lt;div class=&quot;mode-card&quot;&gt;&lt;span class=&quot;mode-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;mode-name&quot;&gt;투과 조명&lt;/div&gt;
&lt;div class=&quot;mode-desc&quot;&gt;핀홀 &amp;middot; 기포 검출에 최적&lt;/div&gt;
&lt;span class=&quot;mode-tag&quot;&gt;Continuous&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;mode-card&quot;&gt;&lt;span class=&quot;mode-icon&quot;&gt; &lt;/span&gt;
&lt;div class=&quot;mode-name&quot;&gt;사광 조명&lt;/div&gt;
&lt;div class=&quot;mode-desc&quot;&gt;표면 이물 &amp;middot; 스크래치 검출&lt;/div&gt;
&lt;span class=&quot;mode-tag&quot;&gt;Sequential&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;mode-card&quot;&gt;&lt;span class=&quot;mode-icon&quot;&gt;⭕&lt;/span&gt;
&lt;div class=&quot;mode-name&quot;&gt;동축 조명&lt;/div&gt;
&lt;div class=&quot;mode-desc&quot;&gt;코팅 두께 편차 검출&lt;/div&gt;
&lt;span class=&quot;mode-tag&quot;&gt;Switching&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;조명이 카메라 셔터와 동기화되지 않으면&lt;/b&gt; &amp;mdash; 조명 A가 켜져야 할 순간에 카메라가 찍히지 않거나, 조명이 꺼진 순간에 셔터가 내려옵니다. 그 이미지는 검사 데이터로 쓸 수 없습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 솔루션 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;속도와 검출률, 둘 다 잡는 구조&lt;/div&gt;
&lt;span class=&quot;flow-label bad&quot;&gt;▶ 기존 구조 &amp;mdash; 속도 올리면 트리거가 밀린다&lt;/span&gt;
&lt;div class=&quot;flow-row bad&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;PC 수신&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;PC / SW&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;가변 지연&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 CTR&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;별도 제어&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;타이밍 편차&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;속도 &amp;uarr; = 지연 &amp;uarr; = 검출률 &amp;darr;&lt;/b&gt; 이 공식이 설정으로 깨지지 않습니다&lt;/div&gt;
&lt;div class=&quot;vs-div&quot;&gt;&lt;span&gt;VS&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;flow-label good&quot;&gt;▶ SWTEC 구조 &amp;mdash; 속도가 올라가도 트리거가 밀리지 않는다&lt;/span&gt;
&lt;div class=&quot;flow-row good&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더 3ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;직접 입력&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top c&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt;⚡&lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;ETLr FPGA&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;단일 클럭&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 16ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;시퀀스 제어&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라 8ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;100ns 고정&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;속도가 올라가도 트리거 구조 자체가 바뀌지 않습니다&lt;/b&gt;&lt;br /&gt;FPGA 처리는 소프트웨어 처리 용량에 영향을 받지 않습니다&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;속도와 품질, 둘 다 포기 안 하셔도 됩니다&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;딜레마의 진짜 원인&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생산팀, 품질팀, 설비팀. &lt;span class=&quot;hl&quot;&gt;셋 다 맞았습니다.&lt;/span&gt; 그리고 셋 다 진짜 원인을 몰랐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속도가 올라갈수록 소프트웨어 기반 트리거의 처리 지연이 커집니다. 이 지연은 설정으로 보정할 수 없습니다. 구조를 바꿔야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl2&quot;&gt;엔코더&amp;middot;카메라&amp;middot;조명이 하나의 FPGA 클럭에서 출발하면&lt;/span&gt; 속도가 200m/min으로 올라가도 트리거 구조 자체가 흔들리지 않습니다. 속도와 검출률, 둘 다 잡을 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;속도를 올리면 검출률이 떨어지는 현장이라면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 라인 속도와 검사 피치를 알려주시면 적합한 트리거 구성을 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=코팅라인 고속동기화 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지제조</category>
      <category>2차전지품질</category>
      <category>고속라인검사</category>
      <category>머신비전동기화</category>
      <category>배터리전극</category>
      <category>비전트리거</category>
      <category>전극고팅검사</category>
      <category>코팅공정</category>
      <category>코팅불량</category>
      <category>핀홀검사</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/203</guid>
      <comments>https://swtec.tistory.com/203#entry203comment</comments>
      <pubDate>Thu, 18 Jun 2026 09:53:33 +0900</pubDate>
    </item>
    <item>
      <title>2차전지 불량 47건인데 우리는 문제없다고 할 때</title>
      <link>https://swtec.tistory.com/202</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#1a0a00 60%,#2d1000 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(255,107,53,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#FF6B35;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span{color:#FF6B35}
.hero h1 span.b{color:#00c8ff}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.a{color:#FF6B35}
.kpi-val.b{color:#00c8ff}
.kpi-val.c{color:#00a896}
.kpi-lbl{font-size:12px;color:#64748b}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#FF6B35;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#FF6B35;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 스토리 대화 */
.story-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0}
.story-box .s-date{font-family:'Space Mono',monospace;font-size:10px;color:#FF6B35;letter-spacing:.15em;margin-bottom:14px}
.story-line{display:flex;gap:12px;margin-bottom:10px;align-items:flex-start}
.story-line:last-child{margin-bottom:0}
.s-who{font-size:11px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:60px;margin-top:2px;font-family:'Space Mono',monospace}
.s-say{font-size:13px;color:#94a3b8;line-height:1.65}
.s-say b{color:#fff}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #FF6B35;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#FF6B35}

/* 비교 플로우 */
.flow-label{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:8px;display:block}
.flow-label.bad{color:#FF6B35}
.flow-label.good{color:#00c8ff}
.flow-row{display:flex;align-items:stretch;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0;margin-bottom:10px}
.flow-row.bad .fn{background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .fn{background:#f0fdfa;border-right:1px solid #ccf4ee}
.fn{flex:1;padding:14px 8px;text-align:center}
.fn:last-child{border-right:none}
.fn-top{height:3px;margin:-14px -8px 10px;display:block}
.flow-row.bad .fn-top{background:#FF6B35}
.flow-row.good .fn-top{background:#00a896}
.fn-top.c{background:#00c8ff}
.fn-icon{font-size:18px;margin-bottom:5px;display:block}
.fn-name{font-size:11px;font-weight:700;color:#0D1B3E;margin-bottom:3px;display:block}
.fn-sub{font-size:10px;color:#64748b;display:block}
.farr{display:flex;align-items:center;padding:0 5px;font-size:13px;flex-shrink:0}
.flow-row.bad .farr{color:#FF6B35;background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .farr{color:#00c8ff;background:#f0fdfa;border-right:1px solid #ccf4ee}

.vs-div{display:flex;align-items:center;gap:12px;margin:16px 0}
.vs-div::before,.vs-div::after{content:'';flex:1;height:1px;background:#e2e8f0}
.vs-div span{font-family:'Space Mono',monospace;font-size:11px;color:#94a3b8;padding:4px 12px;border:1px solid #e2e8f0;border-radius:20px;background:#fff}

/* 속도 테이블 */
.speed-tbl{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0;margin:16px 0}
.speed-tbl thead th{padding:10px 14px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;border-bottom:2px solid #e2e8f0;text-align:left;background:#f8fafc;color:#64748b}
.speed-tbl tbody td{padding:10px 14px;border-bottom:1px solid #f1f5f9;color:#334155;vertical-align:middle}
.speed-tbl tbody tr:last-child td{border-bottom:none}
.speed-tbl tbody td.danger{color:#dc2626;font-weight:700}
.speed-tbl tbody td.warn{color:#FF6B35;font-weight:600}
.speed-tbl tbody td.ok{color:#166534;font-weight:600}
.speed-tbl tbody td.lbl{font-weight:700;color:#0D1B3E}

/* 스펙 카드 */
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
@media(max-width:500px){.spec-grid{grid-template-columns:1fr}}
.spec-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px 18px;border-top:2px solid #00c8ff}
.spec-label{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;font-weight:700;margin-bottom:5px}
.spec-val{font-size:15px;font-weight:700;color:#0D1B3E;margin-bottom:3px}
.spec-desc{font-size:12px;color:#64748b;line-height:1.55}

/* 결론 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px;margin:20px 0;border-left:4px solid #FF6B35}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#FF6B35}
.conclusion .hl2{color:#00c8ff}

.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .flow-row{flex-direction:column}
  .farr{display:none}
  .fn{border-right:none;border-bottom:1px solid #e2e8f0}
  .fn:last-child{border-bottom:none}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;2차전지 노칭 공정 &amp;middot; 탭 위치 검사 &amp;middot; 엔코더 트리거&lt;/div&gt;
&lt;h1&gt;탭 불량 &lt;span&gt;47건&lt;/span&gt;&lt;br /&gt;아무도 자기 잘못이&lt;br /&gt;아니라고 했다&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;트리거는 나가고 있었습니다. 위치를 모른 채로.&lt;br /&gt;위치를 모르는 트리거는 트리거가 아닙니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val a&quot;&gt;&amp;plusmn;0.1mm&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;탭 위치 허용 오차&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;100ns&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;트리거 지연 고정&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val c&quot;&gt;1MHz&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;엔코더 최대 입력&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;탭 위치 불량이 반복되는데 원인을 못 찾는 이유&lt;/li&gt;
&lt;li&gt;엔코더 없이 트리거를 쏘면 생기는 위치 오차&lt;/li&gt;
&lt;li&gt;소프트웨어 경유 트리거의 구조적 한계&lt;/li&gt;
&lt;li&gt;하드웨어 엔코더 직결로 위치 오차를 없애는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 스토리 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;STORY&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;월요일 아침, 불량 리포트 47건&lt;/div&gt;
&lt;div class=&quot;story-box&quot;&gt;
&lt;div class=&quot;s-date&quot;&gt;MON 09:00 &amp;mdash; 주간 회의&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;설비팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;저희 장비 이상 없습니다. 트리거 신호 정상 출력 확인했어요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;소프트팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;설정 건드린 거 없고요. 어제까지 잘 됐는데요.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;품질팀&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;&quot;그럼 왜 탭 위치 불량이 &lt;b&gt;47건&lt;/b&gt;이나 나오는 거죠?&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;story-line&quot;&gt;&lt;span class=&quot;s-who&quot;&gt;침묵&lt;/span&gt;&lt;span class=&quot;s-say&quot;&gt;3주째 같은 회의. 같은 결론 없음.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;카메라도 정상, 조명도 정상, 트리거도 나가고 있습니다. 근데 이미지마다 탭이 조금씩 다른 위치에 찍힙니다. 어느 날 한 엔지니어가 물었습니다.&lt;/p&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;&quot;트리거가 나갈 때, 전극이 정확히 어느 위치에 있는지 누가 알고 있나요?&quot;&lt;/b&gt;&lt;br /&gt;아무도 대답하지 못했습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 원인 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;위치를 모르는 트리거의 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;탭 위치 검사는 전극이 이송되는 &lt;b&gt;위치를 기준으로&lt;/b&gt; 트리거를 발생시켜야 합니다. 전극이 정확히 몇 mm 이동했을 때 카메라가 찍어야 하는지가 결정되어야 탭 위치를 정확하게 측정할 수 있습니다.&lt;/p&gt;
&lt;span class=&quot;flow-label bad&quot;&gt;▶ 기존 구조 &amp;mdash; 위치 정보가 소프트웨어를 경유&lt;/span&gt;
&lt;div class=&quot;flow-row bad&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;위치 펄스&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;PC / SW&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;처리 지연 발생&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt;⚡&lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;트리거 출력&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;이미 위치 틀어짐&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;잘못된 위치 촬상&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;소프트웨어 처리 지연 = 전극이 이미 수백&amp;micro;m 더 이동한 후 촬상&lt;/b&gt;&lt;br /&gt;탭 위치 허용 오차 &amp;plusmn;0.1mm라면 이 지연만으로 검사가 무의미해집니다&lt;/div&gt;
&lt;div class=&quot;vs-div&quot;&gt;&lt;span&gt;VS&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;flow-label good&quot;&gt;▶ SWTEC 구조 &amp;mdash; 엔코더를 FPGA가 직접 처리&lt;/span&gt;
&lt;div class=&quot;flow-row good&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더 3ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;직접 입력&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top c&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt;⚡&lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;ETLr FPGA&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;즉시 처리&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라 8ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;정확한 위치&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 16ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;100ns 동시&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;소프트웨어 경유 없음&lt;/b&gt; &amp;rarr; 위치 정보와 트리거가 하나의 클럭에서 처리 &amp;rarr; 탭 위치 오차 제거&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 속도별 분석 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;라인 속도별 트리거 주파수와 위험 구간&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;노칭 라인 이송 속도가 올라갈수록 소프트웨어 처리 한계가 드러납니다.&lt;/p&gt;
&lt;table class=&quot;speed-tbl&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;이송 속도&lt;/th&gt;
&lt;th&gt;검사 피치&lt;/th&gt;
&lt;th&gt;트리거 주파수&lt;/th&gt;
&lt;th&gt;SW 트리거&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;60 m/min&lt;/td&gt;
&lt;td&gt;1mm&lt;/td&gt;
&lt;td&gt;1 kHz&lt;/td&gt;
&lt;td class=&quot;ok&quot;&gt;처리 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;120 m/min&lt;/td&gt;
&lt;td&gt;0.5mm&lt;/td&gt;
&lt;td&gt;4 kHz&lt;/td&gt;
&lt;td class=&quot;warn&quot;&gt;지연 시작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;lbl&quot;&gt;200 m/min&lt;/td&gt;
&lt;td&gt;0.2mm&lt;/td&gt;
&lt;td&gt;16 kHz&lt;/td&gt;
&lt;td class=&quot;danger&quot;&gt;위치 오차 필연&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 스펙 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;ETLr-30816-6 핵심 스펙&lt;/div&gt;
&lt;div class=&quot;spec-grid&quot;&gt;
&lt;div class=&quot;spec-card&quot;&gt;
&lt;div class=&quot;spec-label&quot;&gt;ENCODER INPUT&lt;/div&gt;
&lt;div class=&quot;spec-val&quot;&gt;3ch / 1MHz&lt;/div&gt;
&lt;div class=&quot;spec-desc&quot;&gt;최대 32배 체배 지원 &amp;mdash; 저분해능 엔코더도 고정밀 트리거 가능&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;spec-card&quot;&gt;
&lt;div class=&quot;spec-label&quot;&gt;TRIGGER OUTPUT&lt;/div&gt;
&lt;div class=&quot;spec-val&quot;&gt;8ch / 500kHz&lt;/div&gt;
&lt;div class=&quot;spec-desc&quot;&gt;카메라 트리거 8채널 동일 클럭 출력&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;spec-card&quot;&gt;
&lt;div class=&quot;spec-label&quot;&gt;OUTPUT DELAY&lt;/div&gt;
&lt;div class=&quot;spec-val&quot;&gt;100ns 이내&lt;/div&gt;
&lt;div class=&quot;spec-desc&quot;&gt;SW 경유 없음 &amp;mdash; FPGA 하드와이어 고정&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;spec-card&quot;&gt;
&lt;div class=&quot;spec-label&quot;&gt;TRIGGER COUNTER&lt;/div&gt;
&lt;div class=&quot;spec-val&quot;&gt;32bit&lt;/div&gt;
&lt;div class=&quot;spec-desc&quot;&gt;누락 발생 시 수치로 즉시 확인 가능&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;위치 정보와 트리거가 하나로 묶여야 합니다&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;탭 불량 47건의 진짜 원인&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리거는 나가고 있었습니다. &lt;span class=&quot;hl&quot;&gt;위치를 모른 채로.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔코더 신호를 소프트웨어가 받아서 트리거를 만드는 구조에서는, 라인 속도가 올라갈수록 위치 오차가 누적됩니다. 이 오차는 &lt;b&gt;설정으로 보정할 수 없습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl2&quot;&gt;엔코더를 하드웨어에서 직접 받아 FPGA가 즉시 트리거를 만드는 구조.&lt;/span&gt; 위치 정보와 트리거가 하나의 클럭 안에서 처리될 때, 비로소 탭 위치 오차를 의미 있게 측정할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;탭 위치 불량, 원인을 못 찾고 계신다면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 라인 속도와 검사 피치를 알려주시면 엔코더 트리거 구성을 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=탭위치불량 엔코더트리거 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지검사</category>
      <category>노칭공정</category>
      <category>머신비전</category>
      <category>배터리제조</category>
      <category>비전검사</category>
      <category>엔코더트리거</category>
      <category>전극검사</category>
      <category>탭위치불량</category>
      <category>트리거동기화</category>
      <category>품질관리자동화</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/202</guid>
      <comments>https://swtec.tistory.com/202#entry202comment</comments>
      <pubDate>Thu, 18 Jun 2026 09:39:36 +0900</pubDate>
    </item>
    <item>
      <title>이미지 촬상이 안될 때 점검 방법</title>
      <link>https://swtec.tistory.com/201</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

.hero{background:linear-gradient(135deg,#0D1B3E 0%,#061a30 60%,#041220 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(0,200,255,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#00c8ff;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span{color:#00c8ff}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#00c8ff;margin-top:7px;flex-shrink:0}

.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* 원인 카드 */
.cause-list{display:flex;flex-direction:column;gap:12px;margin:16px 0}
.cause-card{background:#fff;border-radius:10px;padding:18px 20px;border:1px solid #e2e8f0;display:flex;gap:16px;align-items:flex-start}
.cause-card.warn{border-left:3px solid #f97316}
.cause-card.ok{border-left:3px solid #00c8ff}
.cause-num{font-family:'Space Mono',monospace;font-size:13px;font-weight:700;color:#00c8ff;flex-shrink:0;min-width:28px;margin-top:2px}
.cause-card.warn .cause-num{color:#f97316}
.cause-body h5{font-size:14px;font-weight:700;color:#0D1B3E;margin-bottom:5px}
.cause-body p{font-size:13px;color:#64748b;line-height:1.65}
.cause-tag{display:inline-block;font-size:11px;padding:2px 10px;border-radius:20px;margin-top:6px}
.cause-tag.blue{background:#EFF6FF;color:#1E40AF}
.cause-tag.orange{background:#FFF7ED;color:#c2410c}
.cause-tag.green{background:#F0FDF4;color:#166534}

/* 점검 체크리스트 */
.checklist{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:20px 22px;margin:16px 0}
.checklist h4{font-size:13px;font-weight:700;color:#0D1B3E;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.checklist h4::before{content:'✓';color:#00c8ff;font-size:14px}
.check-items{display:flex;flex-direction:column;gap:8px}
.check-item{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:#475569;line-height:1.55}
.check-item::before{content:'□';color:#cbd5e1;font-size:14px;flex-shrink:0;margin-top:1px}

/* callout */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #f97316;border-radius:0 8px 8px 0;padding:16px 20px;margin:16px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#f97316}

/* 증상 QA */
.symptom-list{display:flex;flex-direction:column;gap:10px;margin:16px 0}
.symptom-item{border-radius:8px;overflow:hidden}
.symptom-q{background:#fff8f6;border-left:3px solid #f97316;padding:12px 16px;font-size:14px;color:#9a3412;font-style:italic}
.symptom-a{background:#EFF6FF;border-left:3px solid #00c8ff;padding:12px 16px;font-size:13px;color:#1e3a5f;line-height:1.65}

/* 결론 박스 */
.conclusion{background:#0D1B3E;border-radius:10px;padding:28px 28px;margin:20px 0;border-left:4px solid #00c8ff}
.conclusion h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:14px}
.conclusion p{color:#94a3b8;font-size:14px;line-height:1.85;margin-bottom:10px}
.conclusion p:last-child{margin-bottom:0}
.conclusion b{color:#fff}
.conclusion .hl{color:#00c8ff}

/* 점검 순서 플로우 */
.flow-steps{display:flex;flex-direction:column;gap:0;margin:20px 0}
.flow-step{display:flex;gap:16px;align-items:flex-start;padding:14px 0;border-bottom:1px solid #f1f5f9;position:relative}
.flow-step:last-child{border-bottom:none}
.fs-num{width:36px;height:36px;border-radius:50%;background:#EFF6FF;border:2px solid #00c8ff;display:flex;align-items:center;justify-content:center;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;color:#00c8ff;flex-shrink:0}
.fs-body h5{font-size:14px;font-weight:700;color:#0D1B3E;margin-bottom:3px}
.fs-body p{font-size:13px;color:#64748b;line-height:1.6}
.fs-badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:4px;margin-top:4px}
.fs-badge.pass{background:#F0FDF4;color:#166534}
.fs-badge.fail{background:#FFF1F2;color:#be123c}

/* CTA */
.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
  .cause-card{flex-direction:column;gap:8px}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;Machine Vision &amp;middot; 트러블슈팅 &amp;middot; 현장 점검&lt;/div&gt;
&lt;h1&gt;머신비전 촬상이 안 될 때&lt;br /&gt;&lt;span&gt;원인별 점검 순서와 해결 방법&lt;/span&gt;&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;설정은 다 맞는 것 같은데 이미지가 안 나온다면,&lt;br /&gt;이 순서대로 확인해보세요. 결국은 동기화 문제입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;촬상 불량 원인 5가지와 현장 점검 순서&lt;/li&gt;
&lt;li&gt;카메라 &amp;middot; 트리거 &amp;middot; 조명 &amp;middot; 엔코더별 체크리스트&lt;/li&gt;
&lt;li&gt;재현이 안 되는 간헐적 오류의 진짜 원인&lt;/li&gt;
&lt;li&gt;동기화가 해결의 끝이자 시작인 이유&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 점검 순서 플로우 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;OVERVIEW&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;점검은 이 순서대로&lt;/div&gt;
&lt;div class=&quot;flow-steps&quot;&gt;
&lt;div class=&quot;flow-step&quot;&gt;
&lt;div class=&quot;fs-num&quot;&gt;01&lt;/div&gt;
&lt;div class=&quot;fs-body&quot;&gt;
&lt;h5&gt;카메라 자체 이상&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프리런 모드로 이미지 확인 &amp;rarr; 정상이면 다음 단계&lt;/p&gt;
&lt;span class=&quot;fs-badge pass&quot;&gt;이미지 나오면 PASS&lt;/span&gt; &lt;span class=&quot;fs-badge fail&quot;&gt;안 나오면 카메라&amp;middot;케이블 점검&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;flow-step&quot;&gt;
&lt;div class=&quot;fs-num&quot;&gt;02&lt;/div&gt;
&lt;div class=&quot;fs-body&quot;&gt;
&lt;h5&gt;트리거 신호 이상&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신호 레벨 &amp;middot; 극성 &amp;middot; 실제 출력 여부 확인&lt;/p&gt;
&lt;span class=&quot;fs-badge fail&quot;&gt;오실로스코프로 신호 직접 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;flow-step&quot;&gt;
&lt;div class=&quot;fs-num&quot;&gt;03&lt;/div&gt;
&lt;div class=&quot;fs-body&quot;&gt;
&lt;h5&gt;조명 점등 타이밍 이상&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검은 이미지 &amp;rarr; 셔터와 조명 딜레이 미스매치&lt;/p&gt;
&lt;span class=&quot;fs-badge fail&quot;&gt;연속 점등 모드로 조명 상태 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;flow-step&quot;&gt;
&lt;div class=&quot;fs-num&quot;&gt;04&lt;/div&gt;
&lt;div class=&quot;fs-body&quot;&gt;
&lt;h5&gt;엔코더 연동 이상&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔코더 기반 트리거 미발생 &amp;middot; 고속 시 누락&lt;/p&gt;
&lt;span class=&quot;fs-badge fail&quot;&gt;A/B 상 신호 &amp;middot; 최대 주파수 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;flow-step&quot;&gt;
&lt;div class=&quot;fs-num&quot;&gt;05&lt;/div&gt;
&lt;div class=&quot;fs-body&quot;&gt;
&lt;h5&gt;간헐적 동기화 오류&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 4가지 정상인데 오류 반복 &amp;rarr; 동기화 구조 문제&lt;/p&gt;
&lt;span class=&quot;fs-badge fail&quot;&gt;하드웨어 통합 동기화 필요&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;카메라 자체 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;가장 먼저 카메라를 &lt;b&gt;프리런(Free Run) 모드&lt;/b&gt;로 설정해 외부 트리거 없이 촬영해봅니다. 이미지가 들어오면 카메라 자체는 정상입니다.&lt;/p&gt;
&lt;div class=&quot;checklist&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;점검 체크리스트&lt;/h4&gt;
&lt;div class=&quot;check-items&quot;&gt;
&lt;div class=&quot;check-item&quot;&gt;카메라 전원 정상 공급 여부&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;GigE / USB 케이블 연결 상태&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;카메라 IP가 PC 네트워크 대역과 일치하는지&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;카메라 드라이버 &amp;middot; SDK 버전 호환성&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;프리런 모드에서 이미지 수신 여부&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;프리런에서 이미지가 나온다면&lt;/b&gt; &amp;rarr; 카메라 이상 아님. 트리거 단계로 이동&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;트리거 신호 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;외부 트리거 모드에서 신호가 제대로 전달되지 않으면 촬상이 이루어지지 않습니다. 세 가지를 순서대로 확인합니다.&lt;/p&gt;
&lt;div class=&quot;cause-list&quot;&gt;
&lt;div class=&quot;cause-card warn&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;①&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;신호 레벨 불일치&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카메라가 요구하는 전압과 실제 입력 전압이 다를 때 발생. 5V 요구 카메라에 3.3V 신호가 들어오면 트리거로 인식 불가.&lt;/p&gt;
&lt;span class=&quot;cause-tag orange&quot;&gt;전압 레벨 직접 측정 필요&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cause-card warn&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;②&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;트리거 극성 설정 오류&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이징 엣지 / 폴링 엣지 설정이 반대로 되어 있는 경우. 소프트웨어에서 트리거 극성 설정 반드시 확인.&lt;/p&gt;
&lt;span class=&quot;cause-tag orange&quot;&gt;Rising / Falling Edge 설정 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cause-card ok&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;③&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;신호가 실제로 출력되는지 확인&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어에서 트리거를 보낸다고 해도 하드웨어에서 실제 출력이 안 되는 경우 있음. 오실로스코프나 LED 테스터로 직접 확인이 가장 확실.&lt;/p&gt;
&lt;span class=&quot;cause-tag blue&quot;&gt;오실로스코프로 출력 단자 직접 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;조명 점등 타이밍 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;이미지는 들어오는데 &lt;b&gt;완전히 검게 나온다면&lt;/b&gt; 조명이 꺼진 상태에서 촬영되고 있는 것입니다. 스트로브 타이밍 미스매치가 원인입니다.&lt;/p&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;증상으로 원인 구분하기&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;이미지가 아예 안 들어옴 &amp;rarr; 트리거 신호 문제&lt;br /&gt;이미지는 들어오는데 완전히 검음 &amp;rarr; 조명 타이밍 문제&lt;br /&gt;이미지가 들어오는데 밝기가 불균일 &amp;rarr; 조명 노화 또는 전류 불안정&lt;/div&gt;
&lt;div class=&quot;checklist&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;점검 체크리스트&lt;/h4&gt;
&lt;div class=&quot;check-items&quot;&gt;
&lt;div class=&quot;check-item&quot;&gt;카메라 노출 시간과 조명 점등 구간이 겹치는지 확인&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;조명 컨트롤러 딜레이 설정값 점검&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;조명을 연속 점등 모드로 켜서 육안으로 밝기 확인&lt;/div&gt;
&lt;div class=&quot;check-item&quot;&gt;조명 노화 여부 &amp;mdash; 교체 후 밝기 변화 확인&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 04&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;엔코더 연동 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;엔코더 기반 트리거를 사용하는 라인에서 엔코더 신호가 제대로 들어오지 않으면 트리거 자체가 발생하지 않습니다.&lt;/p&gt;
&lt;div class=&quot;cause-list&quot;&gt;
&lt;div class=&quot;cause-card warn&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;①&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;엔코더 케이블 &amp;middot; 신호 이상&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A/B 상 신호 정상 여부, 케이블 단선 &amp;middot; 노이즈 유입 확인.&lt;/p&gt;
&lt;span class=&quot;cause-tag orange&quot;&gt;A/B 상 파형 오실로스코프 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cause-card warn&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;②&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;최대 주파수 초과&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라인 속도가 빠를수록 엔코더 펄스 주파수가 높아짐. 컨트롤러 처리 한계를 초과하면 트리거 누락 발생.&lt;/p&gt;
&lt;span class=&quot;cause-tag orange&quot;&gt;체배 설정 낮추기 또는 고속 처리 하드웨어 교체&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cause-card ok&quot;&gt;
&lt;div class=&quot;cause-num&quot;&gt;③&lt;/div&gt;
&lt;div class=&quot;cause-body&quot;&gt;
&lt;h5&gt;엔코더 분해능 설정 불일치&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템에서 설정한 분해능과 실제 엔코더 분해능이 다르면 트리거 간격이 어긋남.&lt;/p&gt;
&lt;span class=&quot;cause-tag blue&quot;&gt;엔코더 사양서와 설정값 대조 확인&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 05 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 05&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;간헐적 오류 &amp;mdash; 가장 찾기 어려운 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;위 네 가지를 모두 확인했는데도 특정 조건에서만 오류가 반복된다면 &lt;b&gt;동기화 구조 문제&lt;/b&gt;를 의심해야 합니다.&lt;/p&gt;
&lt;div class=&quot;symptom-list&quot;&gt;
&lt;div class=&quot;symptom-item&quot;&gt;
&lt;div class=&quot;symptom-q&quot;&gt;&quot;라인 속도를 올리면 오류가 많아집니다&quot;&lt;/div&gt;
&lt;div class=&quot;symptom-a&quot;&gt;&amp;rarr; 속도가 높아질수록 소프트웨어 경유 지연이 트리거 주기를 침범. 하드웨어 단 처리 필요.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;symptom-item&quot;&gt;
&lt;div class=&quot;symptom-q&quot;&gt;&quot;특정 시간대에만 발생하고 재현이 안 됩니다&quot;&lt;/div&gt;
&lt;div class=&quot;symptom-a&quot;&gt;&amp;rarr; 소프트웨어 처리 지연이 가변적으로 발생하는 전형적인 패턴. 설정으로 해결 불가.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;symptom-item&quot;&gt;
&lt;div class=&quot;symptom-q&quot;&gt;&quot;한 채널은 정상인데 다른 채널만 오류가 납니다&quot;&lt;/div&gt;
&lt;div class=&quot;symptom-a&quot;&gt;&amp;rarr; 채널 간 클럭 출발점이 달라 타이밍 편차 발생. 단일 클럭 통합 처리 구조로 해결.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;symptom-item&quot;&gt;
&lt;div class=&quot;symptom-q&quot;&gt;&quot;재시작하면 당분간 정상인데 또 오류가 납니다&quot;&lt;/div&gt;
&lt;div class=&quot;symptom-a&quot;&gt;&amp;rarr; 소프트웨어 누적 지연이 리셋되면서 일시 정상. 구조적 원인이므로 반드시 재발.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;공통 원인&lt;/b&gt; &amp;mdash; 카메라 트리거는 PC에서, 조명은 별도 컨트롤러에서.&lt;br /&gt;두 신호의 출발점이 다르면 속도가 빨라질수록 타이밍 편차가 쌓입니다.&lt;br /&gt;소프트웨어 설정으로는 이 문제를 근본적으로 해결할 수 없습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;CONCLUSION&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;동기화가 해결의 끝이자 시작&lt;/div&gt;
&lt;div class=&quot;conclusion&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;결국은 동기화 문제입니다&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;촬상 불량의 원인을 하나씩 짚어왔지만, 현장에서 반복되는 간헐적 오류의 대부분은 결국 &lt;b&gt;동기화 문제&lt;/b&gt;로 귀결됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카메라가 찍는 타이밍, 조명이 켜지는 타이밍, 제품이 지나가는 위치 정보. 이 세 가지가 &lt;span class=&quot;hl&quot;&gt;하나의 클럭 아래 묶여야&lt;/span&gt; 비로소 안정적인 촬상이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조명 컨트롤러를 교체하거나 트리거 딜레이를 조정하는 방식으로는 근본 원인을 해결할 수 없습니다. &lt;b&gt;카메라, 조명, 엔코더를 하나의 하드웨어에서 통합 처리하는 구조&lt;/b&gt;가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;hl&quot;&gt;동기화를 하드웨어 수준에서 해결하는 것.&lt;/span&gt;&lt;br /&gt;그것이 촬상 불량 문제의 끝이자, 안정적인 머신비전 시스템의 시작입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;촬상 불량 원인을 찾지 못하고 계신다면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 라인 구성과 증상을 알려주시면 원인 파악과 동기화 솔루션 구성을 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=촬상불량 원인 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/현장이슈 해결사례</category>
      <category>2차전지검사</category>
      <category>동기화오류</category>
      <category>머신비전</category>
      <category>머신비전점검</category>
      <category>멀티커런트</category>
      <category>엔코더연동</category>
      <category>오버드라이브</category>
      <category>이미지이상</category>
      <category>촬상불량</category>
      <category>카메라트리거</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/201</guid>
      <comments>https://swtec.tistory.com/201#entry201comment</comments>
      <pubDate>Wed, 17 Jun 2026 16:19:30 +0900</pubDate>
    </item>
    <item>
      <title>듀얼이미징이 흔들리는 이유 - 듀얼스캔(DualScan)</title>
      <link>https://swtec.tistory.com/200</link>
      <description>&lt;div&gt;
&lt;style&gt;
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Space+Mono:wght@400;700&amp;display=swap');
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Noto Sans KR',sans-serif;background:#f8fafc;color:#1e293b;line-height:1.7}
.wrap{max-width:780px;margin:0 auto;padding:0 16px 60px}

/* 히어로 */
.hero{background:linear-gradient(135deg,#0D1B3E 0%,#061a30 60%,#041220 100%);border-radius:12px;padding:40px 36px;margin-bottom:36px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;right:-30px;bottom:-30px;width:200px;height:200px;border-radius:50%;background:rgba(0,200,255,.08)}
.hero .label{font-family:'Space Mono',monospace;color:#00c8ff;font-size:10px;letter-spacing:.2em;margin-bottom:14px}
.hero h1{color:#fff;font-size:26px;font-weight:700;line-height:1.35;margin-bottom:14px}
.hero h1 span{color:#00c8ff}
.hero .sub{color:#94a3b8;font-size:14px;line-height:1.7}

/* KPI 바 */
.kpi-bar{display:flex;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:36px;overflow:hidden}
.kpi-item{flex:1;padding:18px 20px;text-align:center;border-right:1px solid #e2e8f0}
.kpi-item:last-child{border-right:none}
.kpi-val{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;margin-bottom:4px}
.kpi-val.a{color:#00c8ff}
.kpi-val.b{color:#00a896}
.kpi-val.c{color:#f59e0b}
.kpi-lbl{font-size:12px;color:#64748b}

/* summary */
.summary{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:22px 24px;margin-bottom:36px}
.summary h3{font-size:13px;color:#64748b;font-weight:500;margin-bottom:12px}
.summary ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.summary ul li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#334155}
.summary ul li::before{content:'';width:6px;height:6px;border-radius:50%;background:#00c8ff;margin-top:7px;flex-shrink:0}

/* 섹션 공통 */
.section{margin-bottom:44px}
.sec-tag{font-family:'Space Mono',monospace;font-size:10px;color:#00c8ff;letter-spacing:.15em;margin-bottom:8px}
.sec-title{font-size:20px;font-weight:700;color:#0D1B3E;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid #e2e8f0}
.body-text{font-size:15px;color:#334155;line-height:1.85;margin-bottom:14px}

/* callout 박스 */
.callout{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #00c8ff;border-radius:0 8px 8px 0;padding:18px 22px;margin:18px 0;font-size:14px;color:#334155;line-height:1.8}
.callout b{color:#00c8ff}
.callout-warn{background:#fff8f6;border:1px solid #fde8df;border-left:3px solid #f97316;border-radius:0 8px 8px 0;padding:18px 22px;margin:18px 0;font-size:14px;color:#334155;line-height:1.8}
.callout-warn b{color:#f97316}

/* 문제 카드 */
.issue-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
@media(max-width:500px){.issue-grid{grid-template-columns:1fr}}
.ic{background:#fff;border-radius:10px;padding:18px 20px;border:1px solid #e2e8f0;border-top:2px solid #f97316}
.ic-num{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;color:#f97316;letter-spacing:.12em;margin-bottom:8px}
.ic h5{font-size:14px;font-weight:700;color:#0D1B3E;margin-bottom:6px;line-height:1.4}
.ic p{font-size:13px;color:#64748b;line-height:1.65}

/* 플로우 비교 */
.flow-compare{display:flex;flex-direction:column;gap:16px;margin:20px 0}
.flow-label{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:8px}
.flow-label.bad{color:#f97316}
.flow-label.good{color:#00c8ff}
.flow-row{display:flex;align-items:stretch;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}
.flow-row.bad .fn{background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .fn{background:#f0fdfa;border-right:1px solid #ccf4ee}
.fn{flex:1;padding:14px 10px;text-align:center;position:relative}
.fn:last-child{border-right:none}
.fn-top{height:3px;margin:-14px -10px 10px;display:block}
.flow-row.bad .fn-top{background:#f97316}
.flow-row.good .fn-top{background:#00a896}
.fn-top.center{background:#00c8ff}
.fn-icon{font-size:20px;margin-bottom:6px;display:block}
.fn-name{font-size:12px;font-weight:700;color:#0D1B3E;margin-bottom:3px;display:block}
.fn-sub{font-size:10px;color:#64748b;display:block}
.farr{display:flex;align-items:center;padding:0 6px;font-size:14px;background:#f8fafc;flex-shrink:0}
.flow-row.bad .farr{color:#f97316;background:#fff8f6;border-right:1px solid #fde8df}
.flow-row.good .farr{color:#00c8ff;background:#f0fdfa;border-right:1px solid #ccf4ee}

.vs-divider{display:flex;align-items:center;gap:12px;margin:4px 0}
.vs-divider::before,.vs-divider::after{content:'';flex:1;height:1px;background:#e2e8f0}
.vs-divider span{font-family:'Space Mono',monospace;font-size:11px;color:#94a3b8;padding:4px 12px;border:1px solid #e2e8f0;border-radius:20px;background:#fff}

/* 솔루션 카드 */
.sol-card{border-radius:10px;padding:24px 26px;margin-bottom:14px;position:relative;overflow:hidden}
.sol-card.etlr{background:#EFF6FF;border:1.5px solid #1E40AF}
.sol-card.nsync{background:#E6F7F5;border:1.5px solid #00A896}
.sol-badge{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.1em;padding:4px 12px;border-radius:20px;margin-bottom:12px}
.sol-card.etlr .sol-badge{background:#DBEAFE;color:#1E40AF}
.sol-card.nsync .sol-badge{background:#CCFBEF;color:#028090}
.sol-card h3{font-size:17px;font-weight:700;margin-bottom:6px}
.sol-card.etlr h3{color:#1E40AF}
.sol-card.nsync h3{color:#028090}
.sol-sub{font-size:13px;color:#64748b;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid rgba(0,0,0,.08);display:block}
.sol-list{list-style:none;display:flex;flex-direction:column;gap:9px}
.sol-list li{font-size:14px;color:#334155;display:flex;align-items:flex-start;gap:8px;line-height:1.6}
.sol-list li::before{content:'✓';font-weight:700;flex-shrink:0;margin-top:1px}
.sol-card.etlr .sol-list li::before{color:#1E40AF}
.sol-card.nsync .sol-list li::before{color:#00A896}
.sol-verdict{margin-top:16px;padding:12px 16px;border-radius:6px;font-size:13px;font-weight:600;line-height:1.6}
.sol-card.etlr .sol-verdict{background:#DBEAFE;color:#1E40AF}
.sol-card.nsync .sol-verdict{background:#CCFBEF;color:#028090}

/* 비교표 */
.cmp-table{width:100%;border-collapse:collapse;margin:20px 0;font-size:13px;background:#fff;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}
.cmp-table thead th{padding:12px 16px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;border-bottom:2px solid #e2e8f0;text-align:left;background:#f8fafc;color:#64748b}
.cmp-table thead th.c-etlr{color:#1E40AF;border-bottom-color:#1E40AF;background:#EFF6FF}
.cmp-table thead th.c-nsync{color:#028090;border-bottom-color:#00A896;background:#E6F7F5}
.cmp-table tbody td{padding:11px 16px;border-bottom:1px solid #f1f5f9;color:#64748b;vertical-align:middle}
.cmp-table tbody tr:last-child td{border-bottom:none}
.cmp-table tbody td.c-lbl{color:#1e293b;font-weight:600}
.cmp-table tbody td.c-etlr{color:#1E40AF;font-weight:600;background:#f8fbff}
.cmp-table tbody td.c-nsync{color:#028090;font-weight:600;background:#f0fdf9}

/* 요약 마무리 */
.summary-box{background:#0D1B3E;border-radius:10px;padding:24px 28px;margin:20px 0;border-left:4px solid #00c8ff}
.summary-box p{color:#94a3b8;font-size:14px;line-height:1.8;margin-bottom:10px}
.summary-box p:last-child{margin-bottom:0}
.summary-box b{color:#fff}
.summary-box .highlight{color:#00c8ff}

/* CTA */
.cta{background:#0D1B3E;border-radius:12px;padding:28px;margin-top:40px;border-left:4px solid #00c8ff}
.cta h4{color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.cta p{color:#94a3b8;font-size:13px;margin-bottom:18px;line-height:1.7}
.cta-links{display:flex;gap:10px;flex-wrap:wrap}
.cta-links a{padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none}
.cta-links .btn-main{background:#00c8ff;color:#0a0c0f}
.cta-links .btn-sub{background:rgba(255,255,255,.08);color:#94a3b8;border:1px solid rgba(255,255,255,.15)}

@media(max-width:560px){
  .kpi-bar{flex-direction:column}
  .kpi-item{border-right:none;border-bottom:1px solid #e2e8f0}
  .kpi-item:last-child{border-bottom:none}
  .flow-row{flex-direction:column}
  .farr{display:none}
  .fn{border-right:none;border-bottom:1px solid #e2e8f0}
  .fn:last-child{border-bottom:none}
  .hero{padding:28px 22px}
  .hero h1{font-size:21px}
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;wrap&quot;&gt;&lt;!-- 히어로 --&gt;
&lt;div class=&quot;hero&quot;&gt;
&lt;div class=&quot;label&quot;&gt;Machine Vision &amp;middot; 2차전지 검사 &amp;middot; 듀얼 이미징&lt;/div&gt;
&lt;h1&gt;조명 컨트롤러만 바꿔선&lt;br /&gt;&lt;span&gt;절대 안 됩니다&lt;/span&gt;&lt;br /&gt;&amp;mdash; 카메라 &amp;middot; 조명 &amp;middot; 엔코더 통합&lt;/h1&gt;
&lt;p class=&quot;sub&quot; data-ke-size=&quot;size16&quot;&gt;80kHz 이상 라인에서 듀얼 이미징이 흔들리는 이유.&lt;br /&gt;세 신호가 하나의 하드웨어에서 출발해야 합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- KPI --&gt;
&lt;div class=&quot;kpi-bar&quot;&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val a&quot;&gt;100ns&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;출력 지연 고정&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val b&quot;&gt;500kHz&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;카메라 트리거&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;kpi-item&quot;&gt;
&lt;div class=&quot;kpi-val c&quot;&gt;16ch&lt;/div&gt;
&lt;div class=&quot;kpi-lbl&quot;&gt;조명 채널&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 요약 --&gt;
&lt;div class=&quot;summary&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글에서 다루는 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;듀얼 이미징이 고속 라인에서 실패하는 구조적 이유&lt;/li&gt;
&lt;li&gt;카메라&amp;middot;조명&amp;middot;엔코더가 분리됐을 때 생기는 4가지 문제&lt;/li&gt;
&lt;li&gt;FPGA 통합 처리로 동기화 문제를 해결하는 방식&lt;/li&gt;
&lt;li&gt;ETLr-30816-6과 NSync 중 어떤 상황에 무엇을 선택하나&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SECTION 01 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 01&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;듀얼 이미징이 뭔지부터 짚고 가겠습니다&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;듀얼 이미징은 카메라 한 대로 트리거를 홀수&amp;middot;짝수로 나눠, 두 개의 조명을 교번 점등하면서 서로 다른 조명 조건의 이미지를 동시에 얻는 기술입니다.&lt;/p&gt;
&lt;div class=&quot;callout-warn&quot;&gt;&lt;b&gt;동작 원리&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;홀수 트리거 &amp;rarr; 조명 A 점등 &amp;rarr; 카메라 셔터 &amp;rarr; 이미지 ①&lt;br /&gt;짝수 트리거 &amp;rarr; 조명 B 점등 &amp;rarr; 카메라 셔터 &amp;rarr; 이미지 ②&lt;br /&gt;&lt;br /&gt;80kHz 기준 트리거 주기 = &lt;b&gt;12.5&amp;micro;s&lt;/b&gt;.&lt;br /&gt;이 안에서 세 신호가 나노초 단위로 맞물려야 합니다.&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;조명 컨트롤러를 바꾸고, 트리거 설정을 다시 잡아도 이미지 1번과 2번이 뒤섞입니다. &lt;b&gt;설정 문제가 아닙니다. 구조의 문제입니다.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- SECTION 02 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 02&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;분리 구성에서 생기는 4가지 문제&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;시장의 많은 조명 전용 컨트롤러는 카메라 신호를 직접 만들지 못합니다. 카메라 트리거는 PC나 프레임그래버에서 따로 발생시키고, 조명은 그 신호를 받아 따라갑니다.&lt;/p&gt;
&lt;div class=&quot;issue-grid&quot;&gt;
&lt;div class=&quot;ic&quot;&gt;
&lt;div class=&quot;ic-num&quot;&gt;ISSUE 01&lt;/div&gt;
&lt;h5&gt;카메라를 제어 못 하는 조명 컨트롤러&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조명만 켜고 끌 뿐, 카메라 셔터 신호를 직접 생성하지 못합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ic&quot;&gt;
&lt;div class=&quot;ic-num&quot;&gt;ISSUE 02&lt;/div&gt;
&lt;h5&gt;소프트웨어 경유 지연&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PC &amp;rarr; 프레임그래버 &amp;rarr; 조명 컨트롤러 경로에서 지연이 매 순간 달라집니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ic&quot;&gt;
&lt;div class=&quot;ic-num&quot;&gt;ISSUE 03&lt;/div&gt;
&lt;h5&gt;엔코더 신호 미연결&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제품 위치 정보 없이 트리거를 쏘면 위치 편차가 이미지 품질 편차로 이어집니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ic&quot;&gt;
&lt;div class=&quot;ic-num&quot;&gt;ISSUE 04&lt;/div&gt;
&lt;h5&gt;동기 오류 재현 불가&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간헐적 오류는 조명&amp;middot;카메라 어디가 문제인지 파악 자체가 어렵습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 03 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 03&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;세 신호가 다른 출발점에서 시작하는 것&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;80kHz 라인에서 트리거 하나의 주기는 12.5&amp;micro;s입니다. 이 짧은 시간 안에 소프트웨어 지연이 가변적으로 끼어들면 홀짝 시퀀스가 흐트러집니다.&lt;/p&gt;
&lt;div class=&quot;flow-compare&quot;&gt;
&lt;div&gt;
&lt;div class=&quot;flow-label bad&quot;&gt;▶ 기존 구조 &amp;mdash; 신호 출발점이 분산&lt;/div&gt;
&lt;div class=&quot;flow-row bad&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;PC 수신&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;PC / F.G.&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;SW 처리&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 CTR&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;조명만 제어&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;별도 트리거&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout-warn&quot; style=&quot;margin-top: 10px;&quot;&gt;&lt;b&gt;소프트웨어 지연이 가변 개입&lt;/b&gt; &amp;rarr; 홀짝 시퀀스 붕괴 &amp;rarr; 이미지 혼선&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vs-divider&quot;&gt;&lt;span&gt;VS&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;flow-label good&quot;&gt;▶ SWTEC 구조 &amp;mdash; 하나의 FPGA에서 동시 출발&lt;/div&gt;
&lt;div class=&quot;flow-row good&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;엔코더 3ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;직접 입력&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top center&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt;⚡&lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;ETLr FPGA&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;단일 클럭&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;조명 16ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;100ns 이내&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;farr&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;span class=&quot;fn-top&quot;&gt;&lt;/span&gt;&lt;span class=&quot;fn-icon&quot;&gt; &lt;/span&gt;&lt;span class=&quot;fn-name&quot;&gt;카메라 8ch&lt;/span&gt;&lt;span class=&quot;fn-sub&quot;&gt;동시 출력&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;callout&quot; style=&quot;margin-top: 10px;&quot;&gt;&lt;b&gt;같은 클럭에서 출발&lt;/b&gt; &amp;rarr; SW 지연 원천 차단 &amp;rarr; 홀짝 시퀀스 안정&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 04 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 04&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;현장 요구 수준에 따라 두 가지 선택지&lt;/div&gt;
&lt;p class=&quot;body-text&quot; data-ke-size=&quot;size16&quot;&gt;고속 트리거 안정화가 목적인지, 촬영 품질 검증까지 필요한지에 따라 선택이 달라집니다.&lt;/p&gt;
&lt;div class=&quot;sol-card etlr&quot;&gt;&lt;span class=&quot;sol-badge&quot;&gt;정밀 트리거 우선&lt;/span&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ETLr-30816-6&lt;/h3&gt;
&lt;span class=&quot;sol-sub&quot;&gt;카메라 &amp;middot; 조명 &amp;middot; 엔코더를 하나의 FPGA로 통합 처리&lt;/span&gt;
&lt;ul class=&quot;sol-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카메라 트리거 8ch + 조명 16ch 동일 클럭 출력&lt;/li&gt;
&lt;li&gt;엔코더 3ch 직접 입력 (최대 1MHz) &amp;mdash; 위치 기반 트리거&lt;/li&gt;
&lt;li&gt;출력 지연 100ns 이내 고정 &amp;mdash; SW 경유 없음&lt;/li&gt;
&lt;li&gt;카메라 트리거 최대 500kHz 안정 동작&lt;/li&gt;
&lt;li&gt;32bit 트리거 카운터 &amp;mdash; 누락 수치 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;sol-verdict&quot;&gt;&quot;지금 트리거가 정확하게 나가고 있는가&quot; &amp;mdash; 하드웨어 수준에서 보장&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sol-card nsync&quot;&gt;&lt;span class=&quot;sol-badge&quot;&gt;촬영 품질 검증 포함&lt;/span&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NSync 나노싱크&lt;/h3&gt;
&lt;span class=&quot;sol-sub&quot;&gt;ETLr 기반에 실시간 파형 분석 + 광량 피드백 셔터 추가&lt;/span&gt;
&lt;ul class=&quot;sol-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 파형 확인 &amp;mdash; 조명&amp;middot;컨트롤러 어디 문제인지 즉시 파악&lt;/li&gt;
&lt;li&gt;전류 90% 도달 순간 셔터 &amp;mdash; 조명 노화&amp;middot;온도 변화 무관&lt;/li&gt;
&lt;li&gt;펄스마다 골든타임 실시간 측정 (1회성 캘리브 아님)&lt;/li&gt;
&lt;li&gt;조명 열화 경보 &amp;mdash; 교체 시점 데이터로 사전 확인&lt;/li&gt;
&lt;li&gt;4ch 독립 트리거 &amp;mdash; 채널 간 편차 없는 동시 촬상&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;sol-verdict&quot;&gt;&quot;찍힌 이미지가 최적 조건인가&quot; &amp;mdash; 실시간 파형으로 검증&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SECTION 05 --&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;div class=&quot;sec-tag&quot;&gt;SECTION 05&lt;/div&gt;
&lt;div class=&quot;sec-title&quot;&gt;한눈에 보는 기능 비교&lt;/div&gt;
&lt;table class=&quot;cmp-table&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;조명 전용 CTR&lt;/th&gt;
&lt;th class=&quot;c-etlr&quot;&gt;ETLr-30816-6&lt;/th&gt;
&lt;th class=&quot;c-nsync&quot;&gt;NSync&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;카메라 트리거 생성&lt;/td&gt;
&lt;td&gt;❌ 불가&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;✓ 8채널&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓ 4채널 독립&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;엔코더 직접 입력&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;✓ 3ch / 1MHz&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;동기화 방식&lt;/td&gt;
&lt;td&gt;SW 경유 (가변)&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;FPGA 100ns 고정&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;FPGA + 광량 피드백&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;듀얼 이미징&lt;/td&gt;
&lt;td&gt;❌ 구조적 불가&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;✓&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;트리거 누락 감지&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;✓ 32bit&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;실시간 파형 확인&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;광량 기반 자동 셔터&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓ 90% 자동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;c-lbl&quot;&gt;조명 열화 경보&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-etlr&quot;&gt;❌&lt;/td&gt;
&lt;td class=&quot;c-nsync&quot;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 마무리 --&gt;
&lt;div class=&quot;summary-box&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조명 전용 컨트롤러는 조명을 켜고 끄는 장치입니다.&lt;/b&gt; 듀얼 이미징은 카메라, 조명, 엔코더가 하나의 클럭 아래 묶인 통합 동기화 시스템을 요구합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;highlight&quot;&gt;정밀 트리거가 우선이라면&lt;/span&gt; &amp;rarr; ETLr-30816-6으로 시작&lt;br /&gt;&lt;span class=&quot;highlight&quot;&gt;촬영 결과까지 검증이 필요하다면&lt;/span&gt; &amp;rarr; NSync가 그 다음 선택&lt;/p&gt;
&lt;/div&gt;
&lt;!-- CTA --&gt;
&lt;div class=&quot;cta&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;현장 라인 구성에 맞는 제품이 궁금하다면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 라인 속도, 카메라&amp;middot;조명 채널 수를 알려주시면 ETLr&amp;middot;NSync 중 어떤 방식이 맞는지, 또는 병행 구성이 필요한지 검토해드립니다.&lt;/p&gt;
&lt;div class=&quot;cta-links&quot;&gt;&lt;a class=&quot;btn-main&quot; href=&quot;mailto:kiwi@swtec.co.kr?subject=듀얼이미징 동기화 문의 (블로그 유입)&quot;&gt;✉ 이메일로 문의하기&lt;/a&gt; &lt;a class=&quot;btn-sub&quot; href=&quot;tel:031-479-6530&quot;&gt;  031-479-6530&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>현장 문제 해결/2차전지_디스플레이</category>
      <category>2차전지검사</category>
      <category>ENVIT</category>
      <category>FPGA제어</category>
      <category>led조명제어</category>
      <category>고속동기화</category>
      <category>듀얼이미징</category>
      <category>머신비전</category>
      <category>배터리셀검사</category>
      <category>스트로브컨트롤러</category>
      <category>카메라트리거</category>
      <author>성원기술 SWTec</author>
      <guid isPermaLink="true">https://swtec.tistory.com/200</guid>
      <comments>https://swtec.tistory.com/200#entry200comment</comments>
      <pubDate>Wed, 17 Jun 2026 13:45:32 +0900</pubDate>
    </item>
  </channel>
</rss>