안녕하세요. (주)이프입니다. 비전검사기를 설비에 붙일 때 가장 많이 시간을 잡아먹는 곳은 의외로 검사 알고리즘이 아니라 PLC 핸드셰이크입니다. 검사는 잘 되는데 가끔 이전 제품의 판정이 읽히거나, 비전 PC 가 꺼졌는데도 라인이 OK 로 흘러가는 일은 대부분 비전 · PLC 신호 연동의 순서와 약속이 어긋나서 생깁니다. 오늘은 장비제어 현장에서 자주 보는 핸드셰이크 설계 실수 5가지와, 시운전 전에 꼭 확인할 체크리스트를 정리합니다.
한 줄 요약
판정을 먼저 쓰고 완료 플래그는 그다음, PLC 는 읽은 뒤 플래그를 되돌리고, 정해진 시간 안에 결과가 없으면 OK 가 아니라 NG 또는 알람입니다.
먼저 짚고 갈 것 : 핸드셰이크는 안전 회로가 아닙니다
장비제어 글에서는 항상 안전부터 말씀드립니다. 비전과 PLC 사이의 판정 신호는 "이 제품이 양품인가" 를 주고받는 생산 정보입니다. 비상정지, 도어 인터록, 작업자 보호 같은 안전 기능은 이 신호에 기대지 말고 설비의 안전 회로에서 따로 처리해야 합니다. 핸드셰이크가 멈추거나 늦어졌을 때 설비가 어떤 상태로 서는지도 기구 · 제어 담당자와 미리 정해 두어야 합니다.
그다음이 판정 신호의 약속입니다. 통신 규격서를 받으면 접속 방향, IP · 포트, 메시지 끝 문자, 메시지 표, 값 형식, 그리고 핸드셰이크 순서까지 여섯 가지를 먼저 표로 정리해 두면 이후 설정이 모두 그 표에서 나옵니다. 오늘 이야기는 그중 마지막 항목, 핸드셰이크 순서에 대한 것입니다.
기본 타이밍 한눈에 보기
워드 두 개(판정 워드, 완료 플래그)로 결과를 넘기는 가장 단순한 구성을 기준으로 설명합니다. 아래 어드레스는 이해를 돕기 위한 예시이며, 실제 값은 현장 PLC 담당자에게 할당받습니다.

| 순서 | 누가 | 무엇을 | 신호 상태 (예시 어드레스) |
|---|---|---|---|
| ① | PLC | 제품이 검사 위치에 오면 검사 시작 신호를 주고 결과 대기 타이머 시작 | 시작 신호 ON, 판정 워드 D2100 = 0 |
| ② | 비전 | 검사 후 판정 워드에 OK=1 또는 NG=2 쓰기 | D2100 = 1 또는 2 |
| ③ | 비전 | ②의 쓰기가 끝난 다음에만 완료 플래그 1 쓰기 | D2101 = 1 |
| ④ | PLC | 완료 플래그를 보고 판정 워드를 읽은 뒤 완료 플래그를 0 으로 되돌림 | D2101 = 0 |
| ⑤ | PLC | 타이머가 끝났는데 완료 플래그가 0 그대로면 최종 NG 또는 알람 | D2101 = 0 유지 → 시간 초과 |
자주 하는 실수 5가지
실수 1. 완료 플래그를 판정보다 먼저(또는 동시에) 쓴다
비전 쪽 프로그램에서 판정 쓰기와 완료 플래그 쓰기를 나란히 두면 실행 순서가 보장되지 않습니다. PLC 가 완료 플래그 1 을 보는 순간 판정 워드가 아직 이전 값이면, 이전 제품의 판정을 지금 제품의 판정으로 읽는 경합이 생깁니다. 재현이 잘 안 되고 가끔만 나타나서 찾기가 가장 어려운 유형입니다.
원칙은 하나입니다. 완료 플래그 쓰기는 반드시 판정 쓰기가 끝난 다음에 실행되도록 연결합니다. Vision Agent 에서는 판정을 쓰는 Signal Write 노드의 Done 출력을 완료 플래그를 쓰는 Signal Write 노드의 Wait 입력에 연결해 순서를 고정합니다. PLC 가 플래그를 보는 시점에 판정값이 이미 확정돼 있어야 읽기 경합이 없습니다.

실수 2. 기존 장비가 쓰는 어드레스와 겹친다
"비어 보이는" 워드를 골라 쓰다가 다른 장비나 기존 프로그램이 같은 영역을 쓰고 있어서 값이 덮어써지는 경우가 있습니다. 판정 워드와 완료 플래그는 기존 장비가 쓰는 영역과 겹치지 않게 PLC 담당자에게 새로 할당받습니다. 할당받은 어드레스는 신호 이름과 함께 I/O 매핑 표에 등록해 두면(예: 판정 = D2100, 완료 = D2101) 시나리오와 PLC 래더가 같은 이름으로 대화할 수 있습니다.
실수 3. PLC 가 완료 플래그를 되돌리지 않는다
완료 플래그를 누가 0 으로 되돌리는지 정하지 않으면, 한 번 1 이 된 플래그가 계속 남습니다. 그러면 다음 제품에서 PLC 는 비전이 아직 검사 중인데도 "결과 있음" 으로 보고 판정 워드를 읽어 버립니다. 이 글의 구성에서는 PLC 가 판정을 읽은 뒤 완료 플래그를 0 으로 되돌리는 것이 약속입니다. 시운전에서 "PLC 가 항상 시간 초과" 가 나면 어드레스 오타와 함께 이 되돌림 동작부터 확인합니다.
실수 4. 시간 초과를 OK 로 넘긴다
가장 위험한 실수입니다. 정해진 시간 안에 완료 플래그가 오지 않았다는 것은 비전 PC 가 꺼져 있거나, 이미지나 시작 신호가 전달되지 않았다는 뜻입니다. 이때 라인을 멈추지 않으려고 OK 로 통과시키면 검사가 없는 것과 같습니다. 시간 초과는 반드시 최종 NG 또는 알람으로 처리합니다. Vision Agent 쪽도 같은 원칙이라, 수신 대기 노드가 시간을 넘기면 조용히 넘어가지 않고 노드 에러로 표면화합니다.
실수 5. 판정값에 0 을 쓴다
OK=0, NG=1 처럼 0 을 판정값으로 쓰면, 비전이 아무것도 쓰지 않은 상태(초기값 0)와 OK 가 구분되지 않습니다. 판정 워드는 OK=1, NG=2 로 두고 0 은 "아직 결과 없음" 으로 남겨 둡니다. 판정 노드의 출력이 OK=1 / NG=0 이라면 계산 노드에서 2 - 판정 으로 바꿔 쓰면 OK=1, NG=2 가 됩니다.
해야 할 것 · 하지 말 것
| 항목 | 하지 말 것 | 이렇게 하세요 |
|---|---|---|
| 쓰기 순서 | 판정과 완료 플래그를 나란히 실행 | 판정 쓰기 Done → 완료 플래그 쓰기 Wait 로 순서 고정 |
| 어드레스 | 비어 보이는 워드를 임의로 사용 | PLC 담당자에게 새로 할당, I/O 매핑에 이름과 함께 등록 |
| 플래그 되돌림 | 누가 0 으로 되돌리는지 미정 | PLC 가 판정을 읽은 뒤 0 으로 되돌림 |
| 시간 초과 | 라인을 멈추지 않으려고 OK 처리 | 최종 NG 또는 알람. 제한 시간은 실제 검사 시간에 여유를 두고 설정 |
| 판정 코드 | OK=0 / NG=1 | OK=1 / NG=2, 0 은 결과 없음 |
| 시작 신호 | 레벨 신호를 계속 켜 둔 채 반복 검사 | 트리거 조건(주소 · 기대값 · 엣지)을 규격서와 맞추기 |
| 문자열 데이터 | 모델명 · 바코드가 깨져도 그대로 진행 | 워드 수와 바이트 순서(상위 · 하위)를 규격서와 대조 |
PLC 래더 예시 : 결과 대기와 시간 초과
기존 검사 장비와 비전 판정을 함께 묶는 구성을 예로 든 래더 흐름입니다. 어드레스와 타이머 값은 모두 예시입니다.
기존검사OK (D2101 = 1) (D2100 = 1) ---| |----------[=]-----------[=]--------------( 최종 OK ) 기존검사NG ---| |------------------------------+----------( 최종 NG ) (D2100 = 2) | ---[=]-----------------------------+ 결과대기 T (D2101 = 0) | ---| |----------[=]----------------+
읽는 순서는 이렇습니다. 결과 대기 타이머(예: 3초)를 시작하고, 완료 플래그가 1 이 되면 판정 워드를 읽어 최종 판정을 낸 뒤 완료 플래그를 0 으로 되돌립니다. 마지막 줄이 핵심으로, 타이머가 끝났는데 완료 플래그가 0 이면 최종 NG 쪽으로 빠집니다.
TCP 통신으로 주고받을 때도 원리는 같습니다
PLC 워드 대신 이더넷 메시지로 시작 명령과 결과를 주고받는 설비도 많습니다. 이때도 같은 약속이 적용됩니다.
| 순서 | 메시지 흐름 (예시) | 설계 포인트 |
|---|---|---|
| ① | 설비 → 비전 : STR;모델명 | 시작 명령에 모델명을 함께 실어 레시피를 맞춤 |
| ② | 비전 → 설비 : ACK 또는 NAK | 모델 미등록 · 세팅 없음이면 가짜 결과 대신 NAK 와 알람 |
| ③ | 비전 → 설비 : RES;결과 | 서버 모드면 같은 연결로 회신하므로 설비가 연결을 유지해야 함 |
| ④ | 설비 → 비전 : ACK | 상대가 결과를 받았는지 확인하는 마지막 단계 |
검사 도중에 같은 시작 명령이 또 들어오면 중복 시작으로 보고 경고 로그를 남긴 뒤 버리는 것이 안전합니다. 응답이 정해진 시간 안에 오지 않을 때는 PLC 와 마찬가지로 에러로 표면화합니다.
AI 에게 핸드셰이크 규격 검토를 맡기는 프롬프트
규격서를 받으면 AI 에게 먼저 빈틈을 찾게 하면 회의 시간이 줄어듭니다. 아래처럼 위의 다섯 가지 실수를 기준으로 검토를 시키면 됩니다. 결과는 반드시 PLC 담당자와 함께 확인합니다.
아래는 비전검사기와 PLC 사이의 신호 규격입니다. 다음 기준으로 빠진 약속이나 위험한 부분을 표로 정리해 주세요. 1. 판정값을 쓴 뒤에 완료 신호를 쓰도록 순서가 정해져 있는가 2. 사용 어드레스가 기존 장비 영역과 겹칠 가능성이 있는가 3. 완료 신호를 누가, 언제 0 으로 되돌리는가 4. 시간 초과 시 처리(NG 또는 알람)가 정의돼 있는가, 제한 시간은 몇 초인가 5. 판정 코드에 0 이 쓰이는가 (0 은 결과 없음으로 남겨야 함) 6. 시작 신호가 엣지인지 레벨인지, 검사 중 중복 시작은 어떻게 처리하는가 모르는 항목은 추측하지 말고 "규격서에 없음" 으로 표시해 주세요. [규격서 내용 붙여넣기]
시운전 전 체크리스트
| 확인 | 항목 | 확인 방법 |
|---|---|---|
| ☐ | 어드레스 할당 | 판정 · 완료 어드레스를 PLC 담당자에게 새로 받았고, 기존 영역과 겹치지 않음을 서로 확인 |
| ☐ | 쓰기 순서 | 판정 쓰기 → 완료 플래그 쓰기 순서가 연결로 고정돼 있음 |
| ☐ | 플래그 되돌림 | PLC 가 판정을 읽은 뒤 완료 플래그를 0 으로 되돌리는 것을 모니터로 확인 |
| ☐ | 시간 초과 | 비전 프로그램을 끈 상태에서 제품을 흘려 최종 NG 또는 알람이 나는지 확인 |
| ☐ | 판정 코드 | OK=1, NG=2 가 각각 들어가고, 0 은 결과 없음으로 처리되는지 확인 |
| ☐ | 연속 사이클 | 제품을 연속으로 흘려 이전 제품의 판정이 읽히지 않는지 확인 |
| ☐ | PLC 없이 사전 시험 | PLC 설정을 시뮬레이션으로 두고 판정 · 완료 쓰기 값을 화면에서 먼저 확인한 뒤 현장 PLC 로 전환 |
| ☐ | 통신 끊김 | 랜선을 뽑았다 꽂아 연결 상태 표시와 자동 재연결, 그동안의 판정 처리를 확인 |
Vision Agent 는 PLC 연결이 끊기면 상태를 즉시 끊김으로 바꾸고 1초부터 최대 10초 간격으로 자동 재연결합니다. 다만 끊긴 동안 들어온 제품을 어떻게 처리할지는 설비 쪽 약속이므로, 위 시간 초과 규칙과 함께 정해 두어야 합니다.
마치며
핸드셰이크 문제는 검사 알고리즘보다 눈에 덜 띄지만, 한 번 어긋나면 불량이 양품으로 흘러가는 결과로 이어집니다. 판정 먼저 · 완료 나중, 겹치지 않는 어드레스, PLC 의 되돌림, 시간 초과는 NG, 0 은 결과 없음. 이 다섯 가지만 규격서에 적어 두어도 시운전 기간이 크게 줄어듭니다. 설비에 비전을 붙이실 계획이라면 규격서 초안 단계부터 함께 검토해 드립니다.
홈페이지 : www.intelligentfactory.co.kr/business/platform
☎ 070-7543-2022 · ✉ hssong@intelligentfactory.co.kr · 🌐 www.intelligentfactory.co.kr
아래 QR 코드를 카카오톡으로 스캔하시면 바로 상담이 연결됩니다.




