사용자 도구

사이트 도구


guide:hmi_connection:arduino

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
guide:hmi_connection:arduino [2026/10/05 17:18] – 만듦 - 바깥 편집 127.0.0.1guide:hmi_connection:arduino [2026/10/25 11:33] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
-====== 02-A · Arduino IDE로 HMI 프로그램 만들기 ======+====== Arduino IDE로 프로그램 작성하기 ======
  
-[[guide:hmi_connection|HMI 연결 전체 순서]] · [[guide:hmi_connection:wiring|이전: 결선]]+[[guide:hmi_connection|HMI 연결]]
  
-===== 1. Arduino IDE와 SDK 준비 =====+~~NOTOC~~
  
-[[guide:getting_started|Arduino IDE로 시작하기]]의 설치·보드 선택·포트 선택을 먼저 완료합니다. **아이로직스 Arduino SDK가 포함된 ILOGICS 보드 패키지**를 사용합니다. 아래 통신 명령어와 전역 ''M'', ''D'' 메모리는 해당 패키지에 포함되어 있습니다.+Arduino IDE 방식은 아이로직스 Arduino SDK의 내장 통신 명령어로 제품 프로그램에서 HMI 요청을 처리합니다. 프로토콜마다 초기화·요청 처리 명령어와 HMI 주소 형식이 다르므로 실제 HMI가 지원하는 방식의 설명을 선택해주시기 바랍니다. 제품 채널과 결선은 [[guide:hmi_connection:wiring|HMI 연결방법]]에서, 화면 구성과 결과 확인은 [[guide:hmi_connection:screen|HMI 화면 만들기]]와 [[guide:hmi_connection:check|동작 확인]]에서 설명합니다.
  
-이 문서의 기준 제품은 **MPINO-8A4R-S**, HMI 통신 채널은 **RS-232 ''Serial1''**입니다. 다른 모델은 [[guide:hmi_connection:wiring#제품의_통신_채널_선택|제품의 통신 채널 표]]를 확인합니다.+아래 설치 방법은 처음 사용하는 경우에 확인해주시기 바랍니다. 설치 뒤 선택한 프로토콜 문서의 끝부분에 있는 간단한 예제를 따라 할 수 있습니다.
  
-===== 2. 실습 프로그램의 메모리 =====+===== 1. 아이로직스 Arduino SDK 설치방법 =====
  
-^ 메모리 ^ 프로그램에서 하는 일 ^ HMI가 하는 일 ^ +{{ :guide:hmi_connection:revision5-dark:sdk-install-flow.svg?420 |Arduino IDE 설치, 아이로직스 SDK 설치, IDE 재실행과 보드 선택 }}
-| ''D[0]'' | 1초마다 증가, ''99'' 다음에 ''0'' | 숫자로 읽기만 함 | +
-| ''D[1]'' | HMI가 써준 값을 보관 | ''0 ~ 9999''를 입력 | +
-| ''D[2]'' | ''D[1]'' 값을 복사 | 돌려받은 값으로 읽기만 함 | +
-| ''M[0]'' | HMI가 써준 ON/OFF 값을 보관 | 시험 스위치로 변경하고 램프로 읽음 |+
  
-===== 3. 새 스케치에 전체 코드 입력 =====+  - [[https://www.arduino.cc/en/software|Arduino 공식 페이지]]에서 **Windows용 Arduino IDE 설치파일**을 내려받아 설치해주시기 바랍니다. 
 +  - [[https://www.ilogics.net/ko-kr/resources/downloads/software/3|아이로직스 Arduino SDK 자료실]]에서 **ARDUINO SDK INSTALL**을 내려받아 실행해주시기 바랍니다. 
 +  - SDK 설치 위치는 Arduino IDE의 **스케치북 폴더 아래 Hardware**로 맞춰주시기 바랍니다. 기본 위치를 바꾸었다면 IDE 환경설정의 스케치북 위치를 확인해주시기 바랍니다. 
 +  - Arduino IDE를 종료하고 다시 실행해주시기 바랍니다. 
 +  - **도구 → 보드 → ILOGICS**에서 제품을 선택해주시기 바랍니다. MPINO-8A4R-S는 **MPINO-8A4R(T)-S**를 선택해주시기 바랍니다. 
 +  - MP 다운로드 케이블을 연결하고 **도구 → 포트**에서 해당 COM 포트를 선택해주시기 바랍니다.
  
-아래 전체 코드를 빈 스케치에 넣습니다. 릴레이 출력이나 입력 핀을 제어하는 코드는 포함하지 않습니다.+{{ :guide:hmi_connection:revision2:board-select-actual.svg?480 |실제 Arduino IDE 보드 선택 화면의 예. 사용하는 제품의 보드 이름을 선택합니다. }}
  
-<code cpp> +보드 선택 창의 **BOARDS**에는 제품 이름을, **PORTS**에는 연결한 케이블의 COM 번호를 지정해주시기 바랍니다. 다른 제품의 케이블·드라이버는 [[guide:getting_started#제품_연결과_com_포트_확인|제품 연결과 COM 포트 확인]]에서 확인할 수 있습니다.
-#include <Arduino.h>+
  
-unsigned long lastTick = 0;+제품 업로드용 COM 포트는 HMI 통신용 ''Serial1''과 구분해야 합니다.
  
-void setup() { +**[[guide:hmi_connection:arduino:modbus|2. Modbus RTU 통신 프로토콜로 연결하기]]**
-  ImodbusRTUMem(16, 16); +
-  ImodbusRTUAdr(0, 0); +
-  ImodbusRTUInit(Serial1, 1, 9600);+
  
-  M[0] = false; +**[[guide:hmi_connection:arduino:cnet|3. LS산전 Cnet 프로토콜로 연결하기]]**
-  D[0] = 0; +
-  D[1] = 0; +
-  D[2] = 0; +
-  lastTick = millis(); +
-}+
  
-void loop() { +**[[guide:hmi_connection:arduino:mc|4. Mitsubishi MC 프로토콜로 연결하기]]**
-  ImodbusRTU(); +
- +
-  unsigned long now = millis(); +
-  if (now - lastTick >= 1000UL) { +
-    lastTick = now; +
-    D[0] = (D[0] + 1) % 100; +
-  } +
- +
-  D[2] = D[1]; +
-} +
-</code> +
- +
-===== 4. 코드의 읽는 순서 ===== +
- +
-^ 코드 ^ 역할 ^ +
-| ''ImodbusRTUMem(16, 16)'' | 내부 비트 M 16개와 워드 D 16개를 통신 시작 전에 준비 | +
-| ''ImodbusRTUAdr(0, 0)'' | M과 D의 외부 시작 주소를 각각 ''0''으로 설정 | +
-| ''ImodbusRTUInit(Serial1, 1, 9600)'' | Serial1에서 국번 1, 9600bps Slave 통신 시작 | +
-| ''ImodbusRTU()'' | HMI 요청을 받아 처리. ''loop()''에서 계속 호출 | +
-| ''millis()'' | 통신을 기다리게 만드는 ''delay(1000)'' 없이 1초 계산 | +
-| ''D[2] = D[1]'' | 제품이 받은 입력값을 다른 주소로 돌려줌 | +
- +
-이 초기화는 8 데이터 비트·패리티 없음·정지 비트 1(**8N1**)을 사용합니다. HMI도 동일하게 설정합니다. +
- +
-''ImodbusRTUMem()''은 ''setup()''에서 한 번만 호출합니다. 실행 중 다시 호출하면 M/D 메모리가 다시 할당되고 기존 값과 다른 통신에서 참조하던 메모리에 영향을 줍니다. 이 실습에서는 다른 통신 프로토콜을 같은 채널에 추가하지 않습니다. +
- +
-===== 5. 검증하고 제품에 업로드 ===== +
- +
-  - 프로젝트를 ''HMI_First_Test'' 같은 이름으로 저장합니다. +
-  - **도구 → 보드**에서 실제 제품에 해당하는 ILOGICS 보드를 선택합니다. +
-  - **도구 → 포트**에서 MP 다운로드 케이블의 업로드 COM 포트를 선택합니다. +
-  - **검증**을 실행하고 컴파일 오류가 없는지 확인합니다. +
-  - **업로드**를 실행하고 완료 메시지를 확인합니다. +
-  - 제품 전원과 HMI 통신 케이블 연결을 확인합니다. +
- +
-''ImodbusRTUInit'' 또는 ''M/D''를 찾지 못한다는 오류가 나면 코드에 임의의 라이브러리를 추가하기 전에 ILOGICS 보드 패키지 설치와 보드 선택을 확인합니다. 업로드 오류는 HMI 주소 문제와 구분하여 [[guide:getting_started|첫 업로드 안내]]를 확인합니다. +
- +
-===== 6. HMI에 설정할 주소 ===== +
- +
-**이 코드에 대응하는 0 기반 통신 주소**입니다. +
- +
-^ HMI 대상 ^ 주소 ^ 읽기 / 쓰기 ^ +
-| 통신 확인 숫자 ''D0'' | Holding Register ''0'' | 읽기 FC03 | +
-| 입력값 ''D1'' | Holding Register ''1'' | 읽기 FC03 / 쓰기 FC06 또는 FC16 | +
-| 제품에서 돌려준 값 ''D2'' | Holding Register ''2'' | 읽기 FC03 | +
-| 시험 스위치·램프 ''M0'' | Coil ''0'' | 읽기 FC01 / 쓰기 FC05 또는 FC15 | +
- +
-예: 국번 ''1'', FC03, 시작 주소 ''0'', 개수 ''3''으로 읽으면 ''D0, D1, D2'' 순서의 세 워드를 받습니다. Coil ''0''과 Holding Register ''0''은 **영역이 달라 서로 다른 메모리**입니다. +
- +
-HMI 편집기가 ''40001'' 같은 표기를 요구하면 [[guide:hmi_connection:screen#주소_입력_방식_확인|주소 표기 변환 안내]]를 확인하세요. STUDIO2용 ''2000''을 이 SDK 예제에 입력하지 않습니다. +
- +
-===== 7. 검증 범위 ===== +
- +
-이 설명서의 예제는 ILOGICS 보드 패키지 대상 컴파일로 확인합니다. 컴파일 확인과 실제 HMI 연결 시험은 별도입니다. 사용 중인 HMI의 드라이버·케이블·전원·단자 번호를 확인한 후 [[guide:hmi_connection:check|네 가지 동작 확인]]을 진행합니다. +
- +
-[[guide:hmi_connection:screen|다음: 03 · HMI 화면 만들기 →]]+
  
guide/hmi_connection/arduino.1791188300.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki