사용자 도구

사이트 도구


guide:hmi_connection:studio2:cnet

차이

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

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
guide:hmi_connection:studio2:cnet [2026/10/05 23:48] – 바깥 편집 127.0.0.1guide:hmi_connection:studio2:cnet [2026/10/25 11:33] (현재) – 바깥 편집 127.0.0.1
줄 3: 줄 3:
 [[guide:hmi_connection:studio2:modbus|← Modbus RTU 실습]] · [[guide:hmi_connection:studio2|STUDIO2 시작으로]] [[guide:hmi_connection:studio2:modbus|← Modbus RTU 실습]] · [[guide:hmi_connection:studio2|STUDIO2 시작으로]]
  
-앞의 ''HMI_First_Test.mp2''를 **LS산전 Cnet Slave**로 바꿉니다. 보드, 내부 래더, ''main'' 코드는 그대로 사용하고 HMI 쪽 드라이버와 주소도 Cnet에 맞춥니다.+STUDIO2의 LS산전 Cnet Slave에서 Cnet 요청의 ''%DW0''은 내부 ''D0'', ''%MX00000''은 내부 ''M0''에 대응합니다. LS산전·M2I·이지뷰 HMI 편집기에는 Cnet 드라이버를 선택하고 ''D000''·''M000''처럼 M/D 메모리 이름을 입력해주시기 바랍니다. Modbus의 Coil ''1000''·Holding Register ''2000''은 Cnet 주소가 아닙니다. 
 + 
 +뒤의 간단한 전환 예제는 **[[guide:hmi_connection:studio2:modbus|STUDIO2 Modbus RTU 예제]]에서 프로젝트 생성·메모리 설정·래더 작성·''main'' 코드 입력과 첫 빌드·제품 업로드를 마친 뒤** 진행해주시기 바랍니다. Modbus HMI 화면 작성이나 실물 송수신 시험까지 마칠 필요는 없습니다. Arduino IDE의 Cnet 예제에는 이 선행 조건이 없습니다.
  
 ===== 1. 통신 프로토콜 변경 ===== ===== 1. 통신 프로토콜 변경 =====
  
-  - [[guide:hmi_connection:studio2:modbus|Modbus RTU 실습]]을 마친 프로젝트를 열어 **파일 → 다른 이름으로 저장**에서 ''HMI_Cnet_Test.mp2''로 저장합니다. +  - 앞 절의 첫 빌드·제품 업로드까지 마친 ''HMI_First_Test.mp2''를 열어 **파일 → 다른 이름으로 저장**에서 ''HMI_Cnet_Test.mp2''로 저장해주시기 바랍니다. 
-  - **실행 → 통신**을 열고 ''Serial1''의 프로토콜을 **LS산전 Cnet Slave**로 바꿉니다. +  - **실행 → 통신**을 열고 ''Serial1''의 프로토콜을 **LS산전 Cnet Slave**로 바꿔주시기 바랍니다. 
-  - Slave ID ''1'', 통신속도 ''9600'', 데이터 비트 ''8'', 정지 비트 ''1'', 패리티 ''없음''을 확인하고 ''Ctrl+S''로 저장합니다.+  - Slave ID ''1'', 통신속도 ''9600'', 데이터 비트 ''8'', 정지 비트 ''1'', 패리티 ''없음''을 확인하고 ''Ctrl+S''로 저장해주시기 바랍니다.
  
-{{ :products:mpino_studio2:communication-settings-marked.svg?1000 |실제 STUDIO2 통신 설정 화면. 그림의 예시 프로토콜과 기본 115200을 이 페이지의 Cnet·9600으로 변경 }}+**아래 그림은 항목 위치를 보여 주는 초기 화면입니다.** 그림 속 프로토콜 **''없음''**과 속도 **''115200''**은 이 실습값이 아닙니다. 위에서 지정한 **''LS산전 Cnet Slave''·''9600''**을 설정하고 저장해주시기 바랍니다.
  
-HMI 쪽은 [[guide:hmi_connection:wiring#hmi_통신_설정|공통 HMI 통신 설정]]에서 Cnet 드라이버와 연결 포트를 확인합니다.+{{ :products:mpino_studio2:communication-settings-marked.svg?1000 |항목 위치를 보여 주는 초기 화면. 그림 속 프로토콜 '없음'·115200은 예시이며 이 실습에서는 LS산전 Cnet Slave·9600으로 변경합니다. }} 
 + 
 +HMI 쪽은 [[guide:hmi_connection:wiring#통신_프로토콜_선택|공통 통신 프로토콜 선택]]에서 Cnet 드라이버와 연결 포트를 확인해주시기 바랍니다.
  
 ===== 2. 내부 래더와 코드 확인 ===== ===== 2. 내부 래더와 코드 확인 =====
줄 21: 줄 25:
 {{ :guide:hmi_connection:revision5-dark:internal-ladder.svg?420 |실제 출력 없이 내부 M0을 M1로 복사하는 래더 }} {{ :guide:hmi_connection:revision5-dark:internal-ladder.svg?420 |실제 출력 없이 내부 M0을 M1로 복사하는 래더 }}
  
-**Arduino Code → main**의 전체 코드는 다음과 같습니다. 통신 함수는 STUDIO2가 생성하므로 ''ICnetMem()''·''ICnetInit()''·''ICnet()''을 직접 넣지 않습니다.+**Arduino Code → main**의 내용은 [[guide:hmi_connection:studio2:modbus#래더_한_줄과_main_코드|선행 Modbus 실습의 전체 코드]]와 동일하게 유지해주시기 바랍니다. 통신 함수는 STUDIO2가 생성하므로 ''ICnetMem()''·''ICnetInit()''·''ICnet()''을 직접 넣지 않습니다.
  
-<code cpp> +내부 메모리 ''D0''는 1초마다 증가하고, HMI가 ''D001''에 쓴 값은 내부 ''D1''에서 ''D2''로 복사됩니다. HMI가 ''M000''을 바꾸면 내부 래더 결과 ''M1''을 HMI의 ''M001''에서 확인할 수 있습니다. ''D''는 **부호 있는 16비트 정수**입니다.
-#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]; +
-} +
-</code> +
- +
-''D0''는 1초마다 증가하고, HMI가 쓴 ''D1''은 ''D2''로 복사됩니다. HMI가 ''M0''을 바꾸면 래더 결과 ''M1''을 확인할 수 있습니다. ''D''는 **부호 있는 16비트 정수**입니다.+
  
 ===== 3. Cnet HMI 주소 ===== ===== 3. Cnet HMI 주소 =====
  
-STUDIO2가 생성하는 Cnet 프레임 처리기는 ''%'' 뒤의 **메모리 영역·자료형·10진 주소**를 읽습니다. 이번 실습에서는 비트에 ''MX'', 16비트 워드에 ''DW''를 사용합니다. +^ HMI 요소 ^ STUDIO2 내부 메모리 ^ HMI 입력 예 ^ 동작 ^ 
- +| 1초마다 변하는 숫자 | ''D0'' | ''D000'' | 읽기 | 
-^ HMI 요소 ^ 내부 메모리 ^ Cnet 변수 문자열 ^ 동작 ^ +| 숫자 입력 | ''D1'' | ''D001'' | 읽기·쓰기 | 
-| 1초마다 변하는 숫자 | ''D0'' | ''%DW0'' | 읽기 | +| 입력값을 돌려주는 숫자 | ''D2'' | ''D002'' | 읽기 | 
-| 숫자 입력 | ''D1'' | ''%DW1'' | 읽기·쓰기 | +| 스위치와 확인 램프 | ''M0'' | ''M000'' | 쓰기·읽기 | 
-| 입력값을 돌려주는 숫자 | ''D2'' | ''%DW2'' | 읽기 | +| 래더 결과 확인용 램프 | ''M1'' | ''M001'' | 읽기 |
-| 스위치와 확인 램프 | ''M0'' | ''%MX00000'' | 쓰기·읽기 | +
-| 래더 결과 확인용 램프 | ''M1'' | ''%MX00001'' | 읽기 |+
  
-예를 들어 ''%MX00001''의 숫자 ''00001''은 내부 ''M[1]''을 가리킵니다. ''%DW1''은 ''D[1]''입니다. HMI 편집기가 ''%''를 자동으로 붙이거나 자릿수를 지정하는 경우에는 **실제 요청의 변수 문자열**이 위와 같아지도록 HMI 드라이버 설명서를 확인합니다. Modbus의 Coil ''1000''·Holding Register ''2000''은 Cnet 주소가 아닙니다.+표의 HMI 입력 예는 LS산전·M2I·이지뷰 기준입니다. 다른 HMI는 선택한 Cnet 드라이버의 주소 입력 형식을 확인해주시기 바랍니다. Modbus의 Coil ''1000''·Holding Register ''2000''은 Cnet 주소가 아닙니다.
  
-숫자 3개는 **16비트 정수 1워드·소수점 0·배율 1**로 설정하고 입력값 범위는 ''0~9999''로 제한합니다. 스위치는 ''M0''을 토글로 쓰고 별도 램프로 다시 읽습니다. 이 프로그램은 물리 출력을 제어하지 않습니다.+숫자 3개는 **16비트 정수 1워드·소수점 0·배율 1**로 설정하고 입력값 범위는 ''0~9999''로 제한해주시기 바랍니다. 스위치는 ''M000''을 토글로 쓰고 별도 램프로 다시 읽도록 설정해주시기 바랍니다. 이 프로그램은 물리 출력을 제어하지 않습니다.
  
 ===== 4. 다시 빌드하고 확인 ===== ===== 4. 다시 빌드하고 확인 =====
  
-  - **실행 → 빌드**(''Ctrl+R'')에서 오류가 없는지 확인합니다. +  - **실행 → 빌드**(''Ctrl+R'')에서 오류가 없는지 확인해주시기 바랍니다. 
-  - 상태바에서 제품용 다운로드 케이블의 PC COM 포트를 선택하고 **실행 → 업로드**(''Ctrl+U'')합니다. +  - 상태바에서 제품용 다운로드 케이블의 PC COM 포트를 선택하고 **실행 → 업로드**(''Ctrl+U'')를 실행해주시기 바랍니다. 하단 패널의 업로드 로그가 **정상 종료**되는지 확인해주시기 바랍니다. 포트와 로그 위치는 [[products:mpino_studio2:first_project#포트_선택과_업로드|포트 선택과 업로드]]를 참고해주시기 바랍니다. 
-  - HMI도 Cnet 드라이버, 국번 ''1'', ''9600/8N1''로 저장·전송합니다. 제품의 ''Serial1''은 HMI 통신에만 사용합니다. +  - [[guide:hmi_connection:screen|HMI 화면 만들기]]에서 Cnet 드라이버를 선택하고 위 표의 HMI 입력 예에 따라 ''D000''~''D002''와 ''M000''·''M001''을 지정한 뒤, 국번 ''1'', ''9600/8N1''로 저장·전송해주시기 바랍니다. 제품의 ''Serial1''은 HMI 통신에만 사용합니다. 
-  - 실물 연결 후 ''D0''가 1초마다 변하는지, ''D1''을 쓰면 ''D2''가 따라가는지, ''M0'' 스위치와 ''M1'' 램프가 함께 변하는지 확인합니다.+  - 실물 연결 후 [[guide:hmi_connection:check|동작 확인과 문제 해결]]에서 ''D000'' 읽기 → ''D001'' 쓰기·''D002'' 읽기 → ''M000/M001'' 비트 순서로 확인해주시기 바랍니다.
  
 STUDIO2 설치본 SDK를 사용한 코드 생성·컴파일까지 확인한 예제입니다. **실물 HMI의 특정 드라이버와 케이블 동작은 별도 검증 대상**입니다. STUDIO2 설치본 SDK를 사용한 코드 생성·컴파일까지 확인한 예제입니다. **실물 HMI의 특정 드라이버와 케이블 동작은 별도 검증 대상**입니다.
  
-[[guide:hmi_connection:studio2|STUDIO2 프로그램 작성 순서로 돌아가기]]+[[guide:hmi_connection:screen|HMI 화면 만들기 →]] · [[guide:hmi_connection:check|동작 확인과 문제 해결 →]]
  
guide/hmi_connection/studio2/cnet.1791211730.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki