반응형

https://youtube.com/live/JL3EbpJGT1A

(전반적인흐름)
1.처음에는 포괄적으로 TCP, UDP통신등을 Ethernet으로 하는 방법을 알아낸다!
2.최종적으로는 modbus tcp프로토콜을 구현해낸다!
3.초반에는 문자열 포멧(사람이 읽을수 있는 문자)을 기반으로한 통신을 한다!(CSV, JSON)
4.후반에는 byte stream형식으로 서버와 클라이언트가 데이터를 주고받는다!
5.통신의 최소단위는 byte인데, 내가 보내고자하는 데이터가 2바이트 이상의 형식이라면 형변환을 해야한다!
(byte배열에서 일정부분을 int나 float로 변환하는 방법을 알아야하고, 반대로 int나 float를 byte배열로 바꾸는 방법을 이해해야한다)
6.최종적으로 하려는 modbus tcp는 byte stream형식이다!

(필요한라이브러리)
1.Ethernet2(1.0.3버전)

(깨알지식)
1.아두이노와 W5500은 SPI통신으로 제어된다!
2.아두이노의 기본라이브러리중에 Ethernet라이브러리가 있는데 이 라이브러리가 W5500하고 잘 호환되지 않아서 누군가 별도로 만들어놓은 Ethernet2라는 라이브러를 활용하도록 한다!(녹칸다가 이 내용을 알게된 시점 이후로 수정이 되었는지는 모름)
3.나중에 아두이노를 이더넷에 연결하고 뭔가 산업용 느낌으로 제어할경우 아두이노의 역할은 주로 서버(server)에 해당한다!
4.서버(server)라는 용어는 슬레이브(slave)와 동일하다!
5.원격제어하는 프로그램은 클라이언트(clinet)의 역할을하고 클라이언트는 마스터(master)와 동일하다!
6.C#윈폼으로 만들고자 하는 프로그램이 결국 마스터이자 클라이언트가 되는것이다!
7.아두이노를 이더넷으로 공유기에 연결하며 동적으로IP주소를 할당받는 방법과 고정적인IP주소를 할당받는 방식이있다! 
8.일반적으로 산업용 장비는 고정IP를 할당받는다!
9.내가 가진 인터넷공유기의 IP할당가능한 내역을 미리 알고있어야함!
10.C#윈폼은 visual studio라고 검색해서 설치해서 사용하면 공짜로 사용할 수 있음!(상업적으로는 안됨)
11.최신버전은 visual studio 2022버전인데 녹칸다는 2019버전을 활용함!
12.원래 C#쪽에서 TCP연결을 할때 연결이 되어있는지 아닌지를 체크하기 위해서 기본골격을 thread로 구현을 하는게 옳으나 녹칸다는 예제의 난이도를 낮추기 위해서 최대한 쉬운방식으로 구현하고자함!
13.C#윈폼에 1밀리초간격으로 실행되는 타이머를 추가하고 1밀리초마다 C#윈폼에 TCP수신버퍼를 체크해서 데이터가 있으면 읽어와서 richtextbox에 로그형식으로 출력함!
14.만약에 아두이노가 C#쪽으로 전송하는 데이터의 전송간격이 1밀리초보다 더 빠르다면 문제가 발생할 수 있음!

(서버가 클라이언트로 데이터를 전송하는 함수)
client.write(바이트배열, 보내고자하는 길이);

(611편에서 해야할 내용)
마스터와 슬레이브를 TCP로 연결하고 다양한 명령어를 이용해서 LED의 밝기를 제어한다던지, 센서값을 읽어와서 GUI로 출력한다던지 그런예제를 여러가지 만들어볼것!

(예제)
1.아두이노에 이더넷모듈을 연결하고 TCP 서버로 작동되도록하고 C#윈폼으로 만든 GUI프로그램을 TCP클라이언트로 작동되도록해서 양방향으로 문자열을 주고받는 방법을 보이시오!
   클라이언트가 서버쪽으로 보낼때 종료문자로 \n을 지정함!
   서버가 클라이언트로 보낼때 종료문자로 \n을 지정함!

610-1(기본문자열주고받기_.txt
0.00MB
example610_1.zip
0.04MB


2.아두이노의 2번핀에 LED가 1개 연결되어있을때 C#윈폼에서 뭔가 데이터를 전송해서 LED를 제어하고 LED의 상태를 수신받아서 화면에 출력하시오!

610-2(led1개 간단제어하기).txt
0.00MB
example610_2.zip
0.04MB

반응형
Posted by 덕력킹
,