사용자 도구

사이트 도구


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 화면에 지정할 주소

D0 통신 확인 숫자, D1 입력, D2 되돌린 값, M0 시험 스위치와 램프

화면 요소 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. 검증·업로드 후 동작 확인

  1. 스케치를 저장하고 Arduino IDE의 검증을 실행합니다.
  2. 도구 → 보드와 업로드 COM 포트를 확인한 뒤 업로드합니다. 설치·업로드 안내
  3. HMI 프로젝트를 HMI에 전송한 뒤 제품과 HMI 전원을 켭니다.

HMI가 D1과 M0를 쓰고 제품의 D2와 M0를 다시 읽어 결과를 확인

확인 정상 동작
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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki