문서의 이전 판입니다!
MPINO STUDIO2 · LS산전 Cnet으로 HMI 연결하기
← Modbus RTU 실습 · STUDIO2 시작으로
앞의 HMI_First_Test.mp2를 LS산전 Cnet Slave로 바꿉니다. 보드, 내부 래더, main 코드는 그대로 사용하고 HMI 쪽 드라이버와 주소도 Cnet에 맞춥니다.
| 순서 | 할 일 | 이번 실습값 |
|---|---|---|
| 1 | 프로젝트 복사 | HMI_Cnet_Test.mp2로 다른 이름 저장 |
| 2 | 실행 → 통신 | Serial1, LS산전 Cnet Slave, 국번 1, 9600 bps, 8N1 |
| 3 | main·래더 확인 | M0→M1, D0 증가, D1→D2 복사 |
| 4 | 빌드·업로드 | 새 통신 설정으로 다시 빌드하고 제품에 업로드 |
1. 통신 프로토콜 변경
- Modbus RTU 실습을 마친 프로젝트를 열어 파일 → 다른 이름으로 저장에서
HMI_Cnet_Test.mp2로 저장합니다. - 실행 → 통신을 열고
Serial1의 프로토콜을 LS산전 Cnet Slave로 바꿉니다. - Slave ID
1, 통신속도9600, 데이터 비트8, 정지 비트1, 패리티없음을 확인하고Ctrl+S로 저장합니다.
이 보드의 Serial1은 RS-232입니다. HMI도 실제 연결한 RS-232 포트와 LS Cnet 요청을 보내는 드라이버를 선택합니다. HMI 모델별 드라이버 이름과 주소 입력칸은 해당 HMI 설명서를 확인합니다.
2. 내부 래더와 코드 확인
설정 → 메모리 영역 설정은 P 64, M·D·C·T·R 각각 16이고, 래더 핀맵 설정의 물리 핀 사용은 모두 해제한 상태입니다. 래더 → ladderLoop는 NO 접점 M0 → 출력 코일 M1 한 줄입니다.
Arduino Code → main의 전체 코드는 다음과 같습니다. 통신 함수는 STUDIO2가 생성하므로 ICnetMem()·ICnetInit()·ICnet()을 직접 넣지 않습니다.
#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초마다 증가하고, HMI가 쓴 D1은 D2로 복사됩니다. HMI가 M0을 바꾸면 래더 결과 M1을 확인할 수 있습니다. D는 부호 있는 16비트 정수입니다.
3. Cnet HMI 주소
STUDIO2가 생성하는 Cnet 프레임 처리기는 % 뒤의 메모리 영역·자료형·10진 주소를 읽습니다. 이번 실습에서는 비트에 MX, 16비트 워드에 DW를 사용합니다.
| HMI 요소 | 내부 메모리 | Cnet 변수 문자열 | 동작 |
|---|---|---|---|
| 1초마다 변하는 숫자 | D0 | %DW0 | 읽기 |
| 숫자 입력 | D1 | %DW1 | 읽기·쓰기 |
| 입력값을 돌려주는 숫자 | D2 | %DW2 | 읽기 |
| 스위치와 확인 램프 | M0 | %MX00000 | 쓰기·읽기 |
| 래더 결과 확인용 램프 | M1 | %MX00001 | 읽기 |
예를 들어 %MX00001의 숫자 00001은 내부 M[1]을 가리킵니다. %DW1은 D[1]입니다. HMI 편집기가 %를 자동으로 붙이거나 자릿수를 지정하는 경우에는 실제 요청의 변수 문자열이 위와 같아지도록 HMI 드라이버 설명서를 확인합니다. Modbus의 Coil 1000·Holding Register 2000은 Cnet 주소가 아닙니다.
숫자 3개는 16비트 정수 1워드·소수점 0·배율 1로 설정하고 입력값 범위는 0~9999로 제한합니다. 스위치는 M0을 토글로 쓰고 별도 램프로 다시 읽습니다. 이 프로그램은 물리 출력을 제어하지 않습니다.
4. 다시 빌드하고 확인
- 실행 → 빌드(
Ctrl+R)에서 오류가 없는지 확인합니다. - 상태바에서 제품용 다운로드 케이블의 PC COM 포트를 선택하고 실행 → 업로드(
Ctrl+U)합니다. - HMI도 Cnet 드라이버, 국번
1,9600/8N1로 저장·전송합니다. 제품의Serial1은 HMI 통신에만 사용합니다. - 실물 연결 후
D0가 1초마다 변하는지,D1을 쓰면D2가 따라가는지,M0스위치와M1램프가 함께 변하는지 확인합니다.
STUDIO2 설치본 SDK를 사용한 코드 생성·컴파일까지 확인한 예제입니다. 실물 HMI의 특정 드라이버와 케이블 동작은 별도 검증 대상입니다.
