Arduino IDE · LS Cnet으로 HMI 연결
HMI 연결 전체 순서 · Arduino IDE 방식 선택
LS산전 Cnet에서는 HMI가 Cnet 직렬 요청을 보내고 제품이 Slave로 응답합니다. LS산전·M2I·이지뷰 HMI 편집기에는 D000·M000처럼 M/D 메모리 이름을 입력해주시기 바랍니다. Cnet 요청의 %DW0은 제품의 D0, %MX00000은 M0에 대응합니다.
이 페이지 뒤쪽의 간단한 사용 예는 MPINO-8A4R-S · RS-232 Serial1 · 국번 1 · 9600 bps · 8N1 기준입니다. 채널·결선과 SDK 설치·보드 선택을 확인해주시기 바랍니다. Arduino IDE의 Cnet 예제는 Modbus 예제를 선행하지 않아도 됩니다.
1. HMI 화면에 지정할 주소
| 화면 요소 | SDK 내부 메모리 | HMI 입력 예 | 동작 |
|---|---|---|---|
| 통신 확인 숫자 | D0 | D000 | 16비트 워드 읽기, 0~99 반복 |
| 숫자 입력 | D1 | D001 | 16비트 워드 0~9999 쓰기 |
| 되돌린 값 | D2 | D002 | 16비트 워드 읽기, D1과 같음 |
| 시험 스위치·램프 | M0 | M000 | 비트 토글 쓰기·읽기 |
표의 HMI 입력 예는 LS산전·M2I·이지뷰 기준입니다. 다른 HMI는 선택한 Cnet 드라이버의 주소 입력 형식을 확인해주시기 바랍니다. Modbus 주소 변환표는 Cnet에 적용하지 않습니다. 숫자 형식·스위치·램프의 공통 설정은 HMI 화면 만들기에서 안내합니다.
2. 새 스케치에 전체 코드 입력
다음은 위 Cnet 변수로 내부 메모리 값을 주고받는 간단한 예제입니다. 이 코드는 실제 입력·릴레이 출력 핀을 사용하지 않습니다.
#include <Arduino.h> unsigned long lastTick = 0; void setup() { ICnetMem(16, 16, 0); // M0, D0~D2를 포함; R 영역 미사용 ICnetAdr(0, 0, 0); // 외부 주소도 0부터 ICnetInit(Serial1, 1, 9600); lastTick = millis(); } void loop() { if (M == nullptr || D == nullptr) return; ICnet(); 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]; }
ICnetMem()은 시작할 때 메모리를 만들고, ICnet()은 매 반복에서 HMI 요청을 처리합니다. 이 스케치는 실제 입력·릴레이 핀을 사용하지 않습니다.
3. 검증·업로드 후 HMI 화면 만들기
제품 스케치를 업로드한 뒤 아래 화면 구성 예와 주소표를 참고하여 HMI 요소를 배치해주시기 바랍니다. 그림의 D0·D1·D2·M0은 제품 내부 메모리 이름이며, HMI 편집기 입력값은 위 표의 D000·D001·D002·M000입니다.
- 스케치를 저장하고 Arduino IDE의 검증을 실행해주시기 바랍니다.
- 도구 → 보드와 업로드 COM 포트를 확인한 뒤 업로드해주시기 바랍니다. 설치·업로드 안내
- 제품과 HMI 전원을 켜고 동작 확인과 문제 해결에서 읽기 → 쓰기 → 비트 순서로 시험해주시기 바랍니다.
HMI가 Cnet %DW·%MX 요청을 보내는 드라이버인지 확인해주시기 바랍니다. 정상 결과와 증상별 확인 위치는 동작 확인과 문제 해결에 정리되어 있습니다.
