guide:hmi_connection:arduino:mc
문서의 이전 판입니다!
Arduino IDE · Mitsubishi MC 1C로 HMI 연결
HMI 연결 전체 순서 · Arduino IDE 방식 선택
MPINO-8A4R-S · RS-232 Serial1 · 국번 1 · 9600 bps · 8N1 실습입니다. 이 SDK의 MC Slave는 MELSEC A호환 1C 프레임 Format 1 직렬 ASCII 요청을 처리합니다. HMI 드라이버에서 프레임 형식과 Sum Check 사용을 맞춥니다. 일반적인 MC 3E/4E 프레임 또는 MC TCP 드라이버로는 이 예제를 연결할 수 없습니다.
1. HMI 화면에 지정할 주소
| 화면 요소 | SDK 메모리 | 1C 요청의 디바이스·주소 | 요청 명령 |
|---|---|---|---|
| 통신 확인 숫자 | D0 | D0000 | 워드 읽기 WR, 0~99 반복 |
| 숫자 입력 | D1 | D0001 | 워드 쓰기 WW, 0~9999 |
| 되돌린 값 | D2 | D0002 | 워드 읽기 WR, D1과 같음 |
| 시험 스위치·램프 | M0 | M0000 | 비트 쓰기 BW·읽기 BR |
표의 D0000·M0000은 코어가 수신하는 1C 요청의 디바이스 코드와 4자리 10진 주소입니다. HMI 편집기의 표시 형식은 드라이버마다 다르므로 실제 요청이 이 주소를 가리키는지 확인합니다. 숫자는 16비트 정수·소수점 0자리·배율 1, D1 입력은 0~9999, M0 스위치는 유지형 토글과 별도의 읽기 램프로 설정합니다.
2. 새 스케치에 전체 코드 입력
#include <Arduino.h> unsigned long lastTick = 0; void setup() { IMcMem(0, 0, 16, 16); // X/Y 미사용, M0, D0~D2 포함 IMcAdr(0, 0, 0, 0); // 외부 주소도 0부터 IMcInit(Serial1, 1, 9600); lastTick = millis(); } void loop() { if (M == nullptr || D == nullptr) return; IMcProtocol(); unsigned long now = millis(); if (now - lastTick >= 1000UL) { lastTick = now; D[0] = (D[0] >= 99) ? 0 : D[0] + 1; } if (D[1] > 9999) D[1] = 9999; D[2] = D[1]; }
IMcMem()은 시작할 때 메모리를 만들고, IMcProtocol()은 매 반복에서 HMI 요청을 처리합니다. 이 스케치는 실제 입력·릴레이 핀을 사용하지 않습니다.
3. 검증·업로드 후 동작 확인
- 스케치를 저장하고 Arduino IDE의 검증을 실행합니다.
- 도구 → 보드와 업로드 COM 포트를 확인한 뒤 업로드합니다. 설치·업로드 안내
- HMI 프로젝트를 HMI에 전송한 뒤 제품과 HMI 전원을 켭니다.
| 확인 | 정상 동작 |
|---|---|
| D0 | 숫자가 약 1초마다 바뀌고 99 다음 0이 표시됨 |
| D1 → D2 | 예를 들어 1234를 입력하면 D2에도 1234가 표시됨 |
| M0 | 스위치를 누를 때마다 별도 램프가 ON/OFF로 바뀜 |
통신이 안 되면 먼저 1C Format 1·Sum Check와 국번을 확인하고, 동작 확인과 문제 해결의 결선·속도를 대조합니다.
guide/hmi_connection/arduino/mc.1791204274.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1
