====== 동작 확인과 문제 해결 ====== [[guide:hmi_connection|HMI 연결]] · [[guide:hmi_connection:screen|HMI 화면 만들기]] 제품 프로그램과 HMI 화면은 별도로 전송해야 합니다. 전송 후에는 먼저 두 장치의 통신 조건과 화면 주소가 맞는지 확인해주시기 바랍니다. 그런 다음 내부 메모리의 읽기·쓰기 결과를 순서대로 살펴봐주시기 바랍니다. 화면에 사용하는 ''D0/D1/D2/M0''의 **실제 요청 주소**는 선택한 [[guide:hmi_connection:screen#주소_입력_방식_확인|개발 방식·프로토콜 주소표]]를 따릅니다. 실물 HMI 모델이 지정되지 않았으므로 메뉴와 오류 표시 위치는 해당 제조사 설명서를 확인해주시기 바랍니다. ===== 1. 제품과 HMI 설정 확인 ===== ^ 확인할 것 ^ 일치해야 하는 내용 ^ | 연결 | 같은 전기 인터페이스와 실제 배선한 Serial 포트 | | 통신 | 프로토콜·국번·속도·데이터/패리티/정지 비트 | | 메모리 | 개발 방식과 프로토콜에 맞는 M / D 주소 | | 화면 | 숫자는 16비트 정수, M은 비트 | | 전송 | 제품 프로그램 업로드와 HMI 화면 다운로드 완료. STUDIO2는 하단 업로드 로그 정상 종료 확인 | 제품 쪽은 **Arduino IDE의 업로드 완료 표시** 또는 **STUDIO2 하단 패널의 업로드 로그 정상 종료**로 판정해주시기 바랍니다. STUDIO2의 빌드 성공만으로 제품 업로드 완료를 판단해서는 안 됩니다. HMI 쪽 다운로드 성공 여부와 외부 장치 통신 상태는 **사용하는 HMI 제조사·편집기의 안내에 따라** 확인해주시기 바랍니다. 먼저 제품과 HMI의 두 전송이 모두 성공했는지 확인해주시기 바랍니다. ===== 2. 제품의 값 읽기 ===== 여기부터는 앞에서 설명한 주소와 통신 설정을 이용한 **간단한 동작 확인**입니다. 읽기 → 숫자 쓰기 → 비트 쓰기 순서로 확인해주시기 바랍니다. HMI의 **통신 확인 숫자 D0**가 1초마다 증가하는지 확인해주시기 바랍니다. ''99'' 다음은 ''0''입니다. HMI 갱신 주기에 따라 중간 숫자가 건너뛰어 보일 수 있습니다. ===== 3. 값을 보내고 돌려받기 ===== {{ :guide:hmi_connection:revision2:value-transfer.gif?420 |D1에 입력값을 쓰고 제품이 D2에 복사한 다음 HMI가 D2를 읽는 동작 원리 }} - **입력값 D1**에 ''1234''를 입력하고 확정해주시기 바랍니다. - **제품에서 돌려준 값 D2**도 ''1234''로 바뀌는지 확인해주시기 바랍니다. - ''7'', ''9999'', ''0''도 입력해 확인해주시기 바랍니다. ===== 4. 비트 읽기·쓰기 확인 ===== 시험 스위치를 누를 때마다 별도의 **M0 램프**가 ON/OFF로 바뀌는지 확인해주시기 바랍니다. STUDIO2의 ''M1'' 램프를 추가했다면 래더 결과도 동일하게 바뀝니다. 실습 메모리는 내부 M/D이며 실제 릴레이 출력은 사용하지 않습니다. 예제는 제품이 시작할 때 메모리를 초기화합니다. 전원을 다시 켜면 숫자와 스위치를 다시 시험해주시기 바랍니다. ===== 5. 증상별 확인 위치 ===== ^ 증상 ^ 먼저 열어 볼 위치와 확인할 값 ^ | 응답 없음 / timeout | [[guide:hmi_connection:wiring|제품 채널·RS-232/485 결선]]의 실제 포트와 배선 → 같은 페이지의 통신 프로토콜 선택 절에서 프로토콜·국번·속도·8N1 → HMI 편집기의 외부 장치 상태 | | D0가 0으로 고정 | HMI 숫자 요소가 [[guide:hmi_connection:screen#hmi_프로젝트와_외부_장치_만들기|제품 외부 장치]]를 읽는지 → 제품 업로드 완료 → 선택한 프로토콜의 ''D0'' 주소 | | 값이 한 칸씩 어긋남 | [[guide:hmi_connection:screen#주소_입력_방식_확인|Modbus 주소 입력 방식]]의 0 기반·1 기반 규칙. Cnet·MC에는 적용하지 않음 | | 다른 값이 표시됨 | 선택한 프로토콜 페이지의 SDK/STUDIO2 주소표 → HMI 드라이버의 Coil·Holding Register 또는 Cnet·MC 장치 영역 | | 입력창만 바뀌고 D2는 그대로 | [[guide:hmi_connection:screen#숫자_표시와_입력_설정|화면 요소 설정]]의 외부 ''D1'' 쓰기·''D2'' 읽기 → 제품 프로그램의 ''D[2] = D[1]'' 또는 STUDIO2 main | | 쓴 값이 바로 지워짐 | 업로드한 스케치의 ''loop()'' 또는 STUDIO2의 ''ladderLoop''·''main''이 ''D1/M0''를 반복 초기화하거나 덮어쓰는지 | | 숫자가 비정상적으로 큼 | HMI 숫자 요소의 16비트 1워드·배율 1·소수점 0 및 드라이버의 바이트 교환 설정 | | 스위치 모양만 바뀜 | [[guide:hmi_connection:screen#스위치와_램프_설정|스위치·램프 설정]]에서 외부 ''M0'' 쓰기와 별도 ''M0'' 읽기가 모두 지정됐는지 | | 잠깐 되다가 끊김 | 제품 코드의 긴 ''delay'', HMI 통신용 ''Serial1''을 다른 코드·모니터링도 사용하는지 | | Modbus 주소 오류 | 선택한 Modbus 페이지의 시작 주소·요청 개수·메모리 할당 개수, HMI 드라이버의 요청 영역 | | 제품 업로드 실패 | [[guide:hmi_connection:arduino|Arduino IDE 설치·보드·COM]] 또는 [[guide:hmi_connection:studio2|STUDIO2 설치·제품 선택]]과 다운로드 케이블·드라이버 | **''D0'' 읽기부터** 확인한 뒤 ''D1 → D2'' 숫자 쓰기, 마지막으로 ''M0'' 비트를 시험해주시기 바랍니다. 통신 자체가 되지 않으면 주소를 바꾸기 전에 포트·배선·프로토콜·국번·통신 형식을 대조해주시기 바랍니다. ===== 6. 문의할 때 준비할 자료 ===== 제품 모델·개발 프로그램·SDK 버전, HMI 제조사·정확한 모델·편집기 버전, 사용한 시리얼 포트와 단자 배선 사진, 프로토콜·국번·속도·8N1 및 외부 장치 주소 화면, 오류 메시지와 ''D0/D1→D2/M0'' 중 어느 시험까지 되는지를 준비해주시기 바랍니다.