사용자 도구

사이트 도구


guide:hmi_connection:studio2

문서의 이전 판입니다!


02-B · MPINO STUDIO2로 HMI 프로그램 만들기

HMI 연결 전체 순서 · 이전: 결선

MPINO STUDIO2에서는 실행 → 통신에서 HMI 통신을 설정하고, Arduino Code와 Ladder Logic에서 같은 메모리를 사용합니다. 이 실습은 Arduino Code로 숫자를 만들고 래더로 내부 비트를 복사합니다. 실제 입출력 단자는 사용하지 않습니다.

1. 새 프로젝트와 메모리 설정

  1. 파일 → 새로 만들기에서 MPINO-8A4R-S에 해당하는 MPINO-8A4R(T)-S를 선택합니다.
  2. Ctrl+S로 HMI_First_Test.mp2라는 이름으로 저장합니다.
  3. 설정 → 메모리 영역 설정을 엽니다.
  4. 이번 실습은 P 64, M 16, D 16, C 16, T 16, R 16으로 설정합니다. 숫자는 주소가 아니라 메모리 개수입니다.
  5. 설정을 적용하고 저장합니다.
  6. 설정 → 래더 핀맵 설정에서 실제 입출력 핀의 사용을 모두 해제한 상태로 둡니다. 이 실습에는 실제 핀을 연결하지 않습니다.

실제 보드 선택 화면

메모리 설정 상세는 메모리 이해하기를 확인합니다. M0/M1은 내부 비트, D0 ~ D2는 내부 숫자 메모리입니다. Arduino 핀 D0와 내부 메모리 D0는 다른 개념입니다.

2. 실행 → 통신 설정

실제 통신 설정 화면. 그림의 기본 속도 대신 이번 실습에서는 9600을 선택합니다.

그림 번호 항목 MPINO-8A4R-S 실습값
① 채널 Serial1 — RS-232
② 프로토콜 Modbus RTU Slave
③ Slave ID 1
④ 통신속도 9600
⑤ 데이터 비트 8
⑥ 정지 비트 1
⑦ 패리티 없음
  1. 실행 → 통신을 엽니다.
  2. 실제 배선한 채널을 고릅니다. 다른 제품은 제품별 채널 표를 확인합니다.
  3. 위 표대로 설정하고 창을 닫은 뒤 Ctrl+S로 저장합니다.

기본 속도 115200을 그대로 두지 않고 9600으로 바꿉니다. 설정을 변경해도 이미 업로드된 제품 프로그램은 즉시 바뀌지 않습니다. 마지막 단계에서 다시 빌드·업로드합니다.

3. 내부 비트 래더 한 줄 만들기

왼쪽 탐색기에서 래더 → ladderLoop를 엽니다. M0 접점 → M1 코일 한 줄을 만듭니다. HMI가 변경한 내부 비트를 다른 내부 비트에 복사하는 회로입니다.

  1. 1행 1열을 선택하고 NO 접점 또는 F2를 누릅니다.
  2. 접점을 더블클릭하거나 Enter를 누르고 주소에 M0를 입력합니다.
  3. 1행 2열을 선택하고 출력 코일 또는 F9를 누릅니다.
  4. 코일의 주소에 M1을 입력합니다.
  5. 회로의 주소가 아래 그림처럼 M0 → M1인지 확인합니다.

내부 메모리 M0 접점을 M1 코일에 연결하는 래더 구성. 실제 핀 출력은 사용하지 않습니다.

이름이 출력 코일이어도 주소가 내부 비트 M1이면 물리 릴레이 출력이 아닙니다. 이 실습에 P32 같은 실제 출력 주소를 넣지 않습니다. 기존 첫 프로젝트의 P0 → P32 회로를 복사하지 않습니다.

4. main의 Arduino Code 입력

왼쪽 탐색기의 Arduino Code → main을 열고 아래 전체 코드로 바꿉니다.

#include "mpino_runtime.h"
#include "ladder_generated.h"
 
unsigned long lastTick = 0;
 
void setup() {
  M[0] = false;
  M[1] = false;
  D[0] = 0;
  D[1] = 0;
  D[2] = 0;
  lastTick = millis();
}
 
void loop() {
  ladderLoop();
  unsigned long now = millis();
  if (now - lastTick >= 1000UL) {
    lastTick = now;
    D[0] = (D[0] + 1) % 100;
  }
  D[2] = D[1];
}

ladderLoop()는 위에서 만든 내부 비트 회로를 매번 실행합니다. D0는 1초마다 증가하고, D2는 HMI가 쓴 D1을 복사합니다. 긴 delay()를 사용하지 않습니다.

통신 초기화와 요청 처리는 실행 → 통신 설정으로 생성됩니다. 이 프로젝트에 SDK용 ImodbusRTUMem()·ImodbusRTUInit()·ImodbusRTU()를 추가하지 않습니다. STUDIO2가 준비한 메모리를 재할당하거나 같은 포트를 다른 코드가 초기화하면 충돌할 수 있습니다.

5. 빌드와 업로드

  1. Ctrl+S로 프로젝트를 저장합니다.
  2. 실행 → 빌드를 실행하고 오류가 없는지 확인합니다.
  3. 상태바에서 제품에 연결한 MP 다운로드 케이블의 PC 포트를 선택합니다.
  4. 실행 → 업로드를 실행하고 완료 메시지를 확인합니다.
  5. 업로드가 끝나면 HMI의 실제 RS-232 통신 케이블과 제품 전원을 확인합니다.

HMI용 Serial1은 제품의 통신 채널이고, 업로드 포트는 PC의 COM 포트입니다. 같은 Serial1을 다른 Arduino Code나 래더 모니터링 통신에 동시에 지정하지 않습니다. 포트 사용 관계와 첫 프로젝트의 빌드·업로드에서 자세히 확인할 수 있습니다.

6. 이 프로젝트의 HMI 주소

STUDIO2 내장 Modbus 통신 프레임의 0 기반 주소입니다. Arduino IDE SDK 예제의 0/1/2와 다릅니다.

화면 요소 메모리 영역·주소
통신 확인 숫자 D0 Holding Register 2000
입력값 D1 Holding Register 2001
제품에서 돌려준 값 D2 Holding Register 2002
시험 스위치 / 시험 램프 M0 Coil 1000
선택: 래더 결과를 보는 추가 램프 M1 Coil 1001

M1 램프를 추가하면 접점과 코일로 만든 래더 결과도 확인할 수 있습니다. 첫 화면의 필수 요소는 D0/D1/D2/M0입니다.

HMI가 실제로 사용할 수 있는 메모리 개수는 프로젝트 설정을 따릅니다. 주소 구간 M 1000 ~ 1999와 D 2000 ~ 2999가 모든 프로젝트에 해당 메모리를 1000개씩 할당한다는 뜻은 아닙니다. 이번 실습에서 M·D는 각각 16개입니다.

D는 부호 있는 16비트 정수로 다루며, 이번 숫자 입력은 0 ~ 9999로 제한합니다. HMI에서 16비트 1워드·소수점 0·배율 1로 맞춥니다. 주소를 1 기반이나 4xxxx로 입력하는 드라이버는 주소 표기 안내를 확인합니다.

7. 확인한 범위

이 실습 프로젝트는 STUDIO2 설치본의 ILOGICS 보드 패키지로 MPINO-8A4R-S 대상 코드 생성·컴파일을 확인했습니다. 실물 HMI 연결은 별도의 확인 단계입니다. 사용하는 HMI의 드라이버·단자·주소 입력 규칙을 확인한 뒤 아래 단계로 진행합니다.

다음: 03 · HMI 화면 만들기 →

guide/hmi_connection/studio2.1791188300.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki