Access Control I/O Automation
출입 통제 장비의 입출력을 자동으로 제어해 사람 대신 신호를 넣고 결과를 확인합니다.
공개 중 · MIT 라이선스
구성 › 시스템 구성
명령과 확인을 한 경로로
시험 스크립트가 REST API로 명령을 보내면 제어 프로그램이 Modbus TCP 프레임을 만들어 릴레이 모듈에 전송합니다. 릴레이 모듈은 접점을 닫아 X1100C에 도어 신호를 넣고, X1100C의 릴레이 출력을 디지털 입력으로 읽어 같은 경로로 돌려줍니다.
신호를 넣는 경로와 결과를 읽는 경로가 한 시스템 안에서 이어지므로, 시험 스크립트는 사람이 장비를 지켜보지 않아도 통과 여부를 판정합니다. 제어 프로그램은 데스크톱 화면과 REST API 서버를 함께 실행하므로, 같은 장비를 화면에서 직접 조작하거나 스크립트로 제어할 수 있습니다.
릴레이 모듈은 Waveshare의 Modbus POE ETH Relay (B)이며, 장비의 전송 프로토콜을 Modbus TCP로 설정해야 연결됩니다. 연결할 장비의 주소와 포트, 유닛 ID는 화면이나 API에서 지정합니다.
사용 › 제어 화면
8채널을 화면에서 바로 제어
릴레이 8채널을 켜기, 끄기, 전환, 펄스로 제어하고, 디지털 입력 8채널의 상태를 2초마다 읽어 표시합니다. 모든 채널을 한 번에 켜거나 끄는 버튼과 연결 정보, 동작 기록도 같은 화면에 있습니다.
채널마다 「Door Lock」, 「Door SW」처럼 용도에 맞는 이름을 지정할 수 있고, 이름은 저장되어 다음 실행 때 다시 표시됩니다. 자주 쓰는 채널 조합은 프리셋으로 저장해 한 번에 적용하며, 적용하기 전에 켜질 채널을 빨간 테두리로 미리 표시합니다.
프리셋을 고르기만 해서는 릴레이 상태가 바뀌지 않고, 적용 버튼을 눌러야 장비에 전송합니다. 새 프리셋은 채널을 하나씩 고르거나 현재 릴레이 상태를 불러와 만듭니다. 화면에서 조작하거나 상태를 읽는 중에 통신 오류가 나면 화면에 연결 끊김을 표시하고 채널 표시를 꺼짐으로 초기화합니다.
구현·개발 기술 › Modbus TCP 프레임
라이브러리 없이 바이트 단위로 구현
제어 프로그램은 Modbus 라이브러리를 쓰지 않고 프레임을 바이트 단위로 직접 만듭니다. 프레임을 직접 만들기 때문에 Modbus 표준에 없는 장비 고유 확장(채널 전환 값, 전체 채널 주소, 펄스 주소 영역)까지 그대로 사용할 수 있습니다.
프레임은 7바이트 헤더(MBAP)와 명령 본문(PDU)으로 구성되며, 응답의 입력 상태 1바이트에서 비트 하나가 입력 채널 하나를 나타냅니다. 그림의 응답 값 0x01은 첫 번째 입력만 켜졌다는 뜻이고, 시험에서는 X1100C 릴레이가 동작했다는 판정 근거가 됩니다.
요청마다 번호를 붙여 보내고 헤더에 적힌 길이만큼 응답을 끝까지 읽으며, 장비가 보낸 예외 응답은 오류 코드와 함께 오류로 처리합니다. 장비 주소와 펌웨어 버전도 같은 방식으로 읽습니다.
