분류 전체보기 7

[Insight] 개발의 절반은 '디버깅'이다

개발자로서 연차가 쌓이면서 바뀌는 습관이 하나 있습니다. 예전에는 "어떻게 하면 이 기능을 빨리 구현할까?"를 고민했다면, 이제는 "이 기능이 멈췄을 때, 어떻게 하면 빨리 원인을 찾을 수 있을까?"를 먼저 고민한다는 점입니다.특히 하드웨어를 제어하는 장비 개발 분야에서, 코드가 '도는 것'은 시작에 불과합니다. 진짜 싸움은 현장에서 예기치 않은 이유로 '멈췄을 때' 시작됩니다. 오늘은 제가 프로젝트를 진행하며 뼈저리게 느낀 '디버깅을 위한 개발 철학'과, 새로 합류하는 팀원들에게 꼭 해주는 이야기를 나누려 합니다. 1. 미래의 나를 구하는 '방어적 코딩' 우리는 종종 'Happy Path(모든 조건이 완벽한 상황)'만을 가정하고 코드를 짭니다. "센서는 당연히 켜져 있겠지", "통신 케이블은 연결되어 ..

[Motion Control] 1. 모션 라이브러리의 이해와 제어 보드별(Adlink, ACS, Ajin) 특징

오랜만에 블로그에 글을 씁니다. 그동안 바쁜 일들도 있었지만, 무엇보다 게으름이 가장 큰 적이었네요. 게으름에서 벗어나고자 다시 키보드를 잡았습니다.오늘은 장비 제어의 핵심인 '모션 제어(Motion Control)'의 기본 개념과, 개발자에게 가장 중요한 '모션 라이브러리'에 대해 이야기해 보겠습니다. 특히 제가 현업에서 직접 다뤄본 Adlink, ACS, Ajin 보드들의 특징도 가감 없이 비교해 보겠습니다.1. 모션 제어(Motion Control)란?반도체, 디스플레이 등 정밀 부품을 조립하거나 검사하는 장비를 보면, 가장 눈에 띄는 것이 바로 실제 움직임이 일어나는 '이송 시스템' 입니다.모션(Motion): 물체가 한 점에서 다른 점으로 이동하는 '운동'제어(Control): 원하는 방향과 위..

Motion & Control 2025.11.23

[Trouble & Debug Note] 잉크 도팅 튐 현상, '코일부 개조'로 잡았습니다 (feat. 완제품의 배신)

검사장비에서 불량(NG) 제품에 잉크 마킹을 할 때, 잉크가 튀는(Splatter) 현상은 매우 고질적인 문제입니다. 이 글은 잉크 튐 현상을 잡기 위해 소프트웨어(펄스 시간)와 전기적 제어(속도)를 모두 테스트했으나, 결국 액추에이터 자체인 코일부의 물리적 개조에 도달하기까지의 트러블슈팅 기록입니다. 1. 문제 현상 및 목표목표: 아래 사진처럼 깔끔하고 일정한 원형의 잉크 도트를 찍는 것.문제: 실제 도팅 시, 잉크가 제자리에 맺히지 않고 주변으로 심하게 튀었습니다.2. 문제의 핵심: "분사(Jet)"가 아닌 "스탬프(Stamp)" 방식트러블슈팅에 앞서, 이 잉크젯(DieMark)의 동작 원리를 파악해야 했습니다.이 제품은 잉크를 '분사(Jetting)'하는 방식이 아니었습니다.**솔레노이드 코일(Co..

SkaldLogger: MFC GUI를 위한 투명 오버레이 로거 개발 기록

Vision & Inspection, Motion & Control 장비의 HMI(제어 GUI)를 개발하다 보면, 수많은 컴포넌트의 상태를 실시간으로 확인해야 할 때가 많습니다.1. 프로젝트의 목표: GUI와 로그의 공존디버깅 시 로그를 확인하는 기존 방식은 번거롭습니다.AfxMessageBox: 프로그램을 일시 정지시키고 GUI를 가립니다.별도의 로그 다이얼로그: 메인 GUI의 중요 부분을 가려서, 로그를 볼 때마다 창을 옮겨야 합니다.Visual Studio 출력 창: (OutputDebugString) GUI와 시선이 분리되어 실시간성이 떨어집니다.이 문제를 해결하기 위해, "기존 제어 GUI를 가리지 않고, GUI를 조작하는 동시에 실시간 로그를 확인할 수 있는 투명 오버레이" 로거를 개발하는 것..

왜 나는 고성능 검사장비에 구형 X299 플랫폼을 고집하는가?

1. "아니, 지금 X299라고요?"최신 고성능 검사 장비 PC를 맞춘다고 할 때, 대부분은 최신 인텔 코어 i9(14세대)이나 AMD 라이젠 9, 혹은 쓰레드 리퍼를 떠올릴 것입니다. 하지만 저는 오늘도 "구형"으로 취급받는 인텔 X299 플랫폼을 장바구니에 담습니다."고리타분하다"고 할 수도 있지만, 여기에는 수많은 장비를 조립하고 디버깅하며 얻은 명확한 이유가 있습니다. 이 글은 최신 PC가 오히려 검사장비에서 성능 저하를 일으키는 이유와, HEDT(High-End Desktop) 플랫폼, 특히 X299가 여전히 강력한 현역인 이유에 대한 기술 리포트입니다. 2. 검사장비 PC의 첫 번째 관문, PCIe Lane일반적인 게이밍 PC와 검사장비 PC의 가장 큰 차이는 '확장성'입니다. 검사장비에는 ..

ETC./Tech Journal 2025.11.02

[Insight] 장비 제어 소프트웨어 개발자란?

장비 제어 소프트웨어 개발자, 기계의 언어를 설계하는 사람저는 자동화 장비를 만드는 일을 합니다.그중에서도 장비 제어 소프트웨어(Equipment Control Software) 개발이 제 역할입니다.쉽게 말하면,"기계가 언제 움직이고, 어디로 가며, 어떤 순서로 동작해야 하는가"를소프트웨어로 설계하고 구현하는 일입니다.1. 기계가 움직이기까지장비 제어 소프트웨어는 단순히 모터를 돌리고 IO를 제어하는 수준이 아닙니다.하나의 장비가 움직이기 위해서는 수십, 때로는 수백 개의 센서와 액추에이터가순서와 조건에 맞춰 정확히 연동되어야 합니다.이걸 가능하게 하는 게 바로 제어 로직(Sequence Logic)입니다.예를 들어,실린더가 먼저 내려와야 하고,그 신호가 감지되면 모터가 이동하고,위치가 안정되면 카메라..

“좋은 엔지니어는 빠른 사람이 아니라, 일관된 사람이다”

좋은 엔지니어는 빠른 사람이 아니라, 일관된 사람이다현장에서 일하다 보면 늘 빠른 사람이 눈에 들어옵니다.코드를 금방 짜고, 시운전도 남들보다 먼저 끝내는 사람.처음엔 그런 사람이 부럽습니다.하지만 시간이 지나면, 결국 믿음이 가는 사람은 따로 있습니다.일관된 사람입니다. 일관성이란 게 뭘까비전이나 모션 쪽 일을 하다 보면,하루에도 같은 세팅을 수십 번 반복합니다.그런데 이상하게도,어제 잘 되던 게 오늘은 미세하게 다를 때가 있습니다.그때 진짜 실력은 속도보다 기준을 지키는 힘에서 나옵니다.환경이 조금 달라도 결과가 크게 흔들리지 않게 만드는 사람,그게 결국 신뢰를 받습니다.빠른 것보다 중요한 것빠른 사람은 늘 주목받습니다.그런데 그 속도가 계속 유지되지는 않습니다.조금만 상황이 바뀌면,오히려 다른 사람..

Career & Growth 2025.10.15