HMI · HANDSHAKE

HMI Command와 Status를 같은 비트로 쓰면 왜 꼬일까?

HMI에서 Start를 눌렀다고 설비가 실제 Run 상태가 된 것은 아닙니다. “사용자가 요청했다”와 “PLC가 조건을 확인해 실제 운전 중이다”를 같은 비트로 표현하면 화면과 설비 상태가 쉽게 어긋납니다.

HMICommandStatusHandshakeRun

Command는 요청, Status는 결과입니다

예를 들어 HMI의 M100 Start_CMD는 운전을 요청하는 비트이고, PLC의 M200 Run_STS는 인터록을 통과해 실제 운전 상태가 됐음을 나타내는 비트로 분리할 수 있습니다. 이 구조에서는 Start 버튼을 눌러도 Fault가 있으면 Run_STS가 켜지지 않습니다.

Ownership flow
HMI Start_CMD→PLC Permissive→Run Logic→Run_STS → HMI

같은 비트를 쓰면 화면이 거짓말할 수 있습니다

버튼 비트 자체를 램프에도 쓰면 사용자가 Start를 누르는 순간 HMI는 “운전 중”처럼 보일 수 있습니다. 하지만 실제 출력은 인터록 때문에 꺼져 있을 수 있습니다. 특히 네트워크 지연이나 PLC 재시작이 섞이면 이 차이가 더 커집니다.

실무 패턴

역할예시소유자
운전 요청Start_CMDHMI → PLC
정지 요청Stop_CMDHMI → PLC
운전 상태Run_STSPLC → HMI
고장 상태Fault_STSPLC → HMI

Momentary 버튼은 펄스/ACK도 고려합니다

버튼이 통신 문제로 오래 ON되거나 반복 처리되지 않도록 PLC에서 상승엣지로 받거나, Command와 Acknowledge를 분리하는 방식도 사용할 수 있습니다. 중요한 건 HMI가 최종 설비 상태를 “결정”하지 않게 하는 것입니다.

ENGINEER DISCUSSION

현업에서는 어떻게 쓰시나요?

회로·인터록·주소·시운전 관점의 반론과 개선안을 남겨주세요. 모든 글과 답글은 승인 후 공개됩니다.

서버 rate limit · 승인제 · 공개 전 검토

엔지니어 토론을 불러오는 중…