문서의 이전 판입니다!
목차
MPINO STUDIO2 · Modbus RTU로 HMI 연결하기
← STUDIO2 설치와 시작 · 다음: LS산전 Cnet →
설치한 MPINO STUDIO2에서 MPINO-8A4R-S의 내부 메모리만 쓰는 프로그램을 만듭니다. HMI는 Modbus RTU Master, 제품은 Slave입니다. 실제 입출력 단자는 사용하지 않습니다.
1. 새 프로젝트와 내부 메모리
- 파일 → 새로 만들기에서
MPINO-8A4R(T)-S를 선택하고HMI_First_Test.mp2로 저장합니다. - 설정 → 메모리 영역 설정에서 P는
64, M·D·C·T·R은 각각16으로 설정합니다. 이 숫자는 주소가 아니라 개수입니다. - 설정 → 래더 핀맵 설정에서 물리 입력·출력 핀의 사용을 모두 해제합니다. 이번 프로그램은 내부
M과D만 사용합니다.
다른 제품은 통신 단자가 다를 수 있습니다. 제품별 채널 표에서 실제 제품의 포트를 확인합니다.
2. 래더 한 줄과 main 코드
왼쪽 탐색기의 래더 → ladderLoop에서 1행 1열에 NO 접점(F2) M0, 1행 2열에 출력 코일(F9) M1을 넣습니다. M1은 내부 비트이므로 실제 릴레이 출력이 아닙니다.
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]; }
D0는 1초마다 0~99를 반복합니다. HMI가 D1에 숫자를 쓰면 D2가 그 값을 따라갑니다. M0을 켜면 래더가 M1을 켭니다. 통신 초기화·요청 처리 코드는 STUDIO2가 통신 설정에서 생성하므로 이 코드에 ImodbusRTUInit()이나 ImodbusRTU()를 추가하지 않습니다.
3. 실행 → 통신
| 그림 번호 | 항목 | 입력값 |
|---|---|---|
| ① | 채널 | Serial1 — 이 제품의 RS-232 |
| ② | 프로토콜 | Modbus RTU Slave |
| ③ | Slave ID | 1 |
| ④ | 통신속도 | 9600 |
| ⑤·⑥·⑦ | 데이터 비트·정지 비트·패리티 | 8 · 1 · 없음 |
실행 → 통신에서 위 값으로 설정하고 Ctrl+S로 저장합니다. HMI 쪽은 실제 연결한 RS-232 포트에서 Modbus RTU Master로 같은 국번과 통신 조건을 설정합니다.
4. 빌드·업로드와 HMI 주소
- 실행 → 빌드(
Ctrl+R)를 실행하고 빌드 출력의 성공 메시지를 확인합니다. - 상태바에서 제품용 MP 다운로드 케이블의 PC COM 포트를 고른 뒤 실행 → 업로드(
Ctrl+U)를 실행합니다. 업로드 포트와 HMI용Serial1은 서로 다른 연결입니다. - HMI의 숫자 3개와 비트 스위치·램프를 아래 메모리에 연결합니다. 숫자는 부호 있는 16비트 정수 1워드, 소수점 0, 배율 1로 설정하고 입력 범위는
0~9999로 둡니다.
| HMI 요소 | STUDIO2 메모리 | Modbus 영역 | 요청 안의 0 기반 주소 |
|---|---|---|---|
| 1초마다 변하는 숫자 | D0 | Holding Register | 2000 |
| 숫자 입력 | D1 | Holding Register | 2001 |
| 입력값을 돌려주는 숫자 | D2 | Holding Register | 2002 |
| 스위치와 확인 램프 | M0 | Coil | 1000 |
| 래더 결과 확인용 램프 | M1 | Coil | 1001 |
이 주소는 STUDIO2 생성 코드의 0 기반 주소입니다. HMI 편집기가 1 기반 번호나 4xxxx 표기를 쓰면 해당 HMI 드라이버 규칙에 맞춰 입력합니다. HMI 주소 입력 방식에서 변환 순서를 확인할 수 있습니다.
이번 예제의 물리적 HMI 송수신은 사용하는 HMI 모델·케이블에 따라 별도로 확인해야 합니다. 동일 Serial1을 래더 모니터링이나 사용자 시리얼 코드에 중복 지정하지 않습니다.
