주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

TCP/IP 클라이언트 Receive 블록과 TCP/IP 서버 MATLAB 간 통신

이 예제는 tcpserver 함수와 TCP/IP Receive 블록을 사용하여 MATLAB®에서 TCP/IP 서버와 TCP/IP 클라이언트를 생성한 후, TCP/IP 프로토콜을 통해 이들 간에 데이터를 전송하는 방법을 보여줍니다. 이 예제는 세 가지 다른 방법으로 실행할 수 있습니다.

  • 단일 MATLAB 세션 내에서.

  • 동일한 컴퓨터에서 두 개의 MATLAB 세션 사이.

  • 동일한 서브넷에 속한 서로 다른 컴퓨터의 두 MATLAB 세션 사이.

이 예제를 단일 MATLAB 세션에서 실행하려면 아무런 수정도 할 필요가 없습니다. 동일한 MATLAB 세션에서 서버와 클라이언트를 모두 생성합니다.

동일한 컴퓨터 또는 서로 다른 두 대의 컴퓨터에서 두 개의 MATLAB 세션으로 이 예제를 실행하려면 각 MATLAB 세션에서 지정된 섹션을 실행해야 합니다. 서버 세션콜백 함수 섹션을 첫 번째 MATLAB 세션의 하나의 MATLAB 스크립트로 복사합니다. 두 번째 MATLAB 세션에서 클라이언트 세션의 Simulink® 모델을 엽니다. 서버 세션 스크립트를 먼저 실행한 후 클라이언트 세션 모델을 실행하십시오. 클라이언트가 서버에 연결을 시도하기 전에 반드시 서버를 생성해야 하기 때문입니다.

두 개의 MATLAB 세션을 사용할 때는 서버 세션server.ServerAddressserver.ServerPort 값을 복사하여 클라이언트 세션 내 TCP/IP 클라이언트 Receive 블록의 원격 주소포트 파라미터 값으로 사용하십시오.

서버 세션

이 세션에서는 클라이언트 연결 요청을 수신 대기하는 tcpserver 객체를 생성합니다. 클라이언트가 접속한 후 데이터를 전송합니다.

호스트 이름과 주소 찾기

서버가 생성된 컴퓨터의 호스트 이름과 주소를 찾으세요. 클라이언트는 이 주소를 사용해 서버에 연결합니다.

[~,hostname] = system("hostname");
hostname = string(strtrim(hostname));
address = resolvehost(hostname,"address");

서버 생성

머신의 주소와 포트 5000을 사용하여 tcpserver 객체를 생성합니다. TCP/IP 서버와 클라이언트를 동일한 MATLAB 세션에서 실행하는 경우, 주소를 localhost로 지정할 수 있습니다.

TCP/IP 클라이언트가 서버에 연결할 때 데이터를 쓰는 connectionFcn라는 콜백 함수를 만듭니다. ConnectionChangedFcn 속성을 콜백 함수 connectionFcn로 설정합니다. 이 예제의 끝에서 connectionFcn 함수를 찾을 수 있습니다.

server = tcpserver(address,5000,ByteOrder="big-endian",ConnectionChangedFcn=@connectionFcn)
server = 
  TCPServer with properties:

        ServerAddress: "169.254.80.80"
           ServerPort: 5000
            Connected: 0
        ClientAddress: ""
           ClientPort: []
    NumBytesAvailable: 0

  Show all properties, functions

클라이언트 세션

이 세션에서는 TCP/IP 클라이언트 Receive 블록으로 모델을 실행하여 서버에 연결하십시오. 클라이언트 블록은 서버에서 전송된 데이터를 읽습니다.

클라이언트 생성

모델을 열고 타임아웃을 5초로 설정하십시오.

두 개의 MATLAB 세션을 사용할 경우, 서버 세션server.ServerAddressserver.ServerPort 값을 복사하여 TCP/IP 클라이언트 Receive 블록의 원격 주소포트 값으로 지정하십시오.

다음 명령을 사용하여 모델을 엽니다.

open_system("demoinstrsl_tcpipServerCommunication");

모델의 블록 파라미터에서 원격 주소포트 값을 지정할 수 있습니다. 다음 명령을 사용하여 이러한 파라미터의 값을 지정할 수도 있습니다.

set_param("demoinstrsl_tcpipServerCommunication/TCP//IP Receive",Host=server.ServerAddress,Port=num2str(server.ServerPort),Timeout="5")

다음 명령을 사용하여 TCP/IP 클라이언트 모델을 실행하십시오.

sim("demoinstrsl_tcpipServerCommunication.slx");

모델 저장 및 닫기

이 모델은 연결된 TCP/IP 서버에서 TCP/IP 클라이언트 Receive 블록으로 전송된 데이터를 표시합니다. 이 예시에서 서버는 사인파를 기록하도록 구성되어 있습니다.

작업을 완료한 후 다음 명령어를 사용하여 모델을 저장하고 닫으십시오.

save_system("demoinstrsl_tcpipServerCommunication.slx")
close_system("demoinstrsl_tcpipServerCommunication");

콜백 함수

이 연결 콜백 함수는 연결된 TCP/IP 클라이언트에 이진 데이터를 쓰기 위해 write를 호출합니다.

function connectionFcn(src, ~)
if src.Connected
    freq = 1;   % frequency (Hz)
    time = (0:1/(freq*100):1);
    amp = 1;    % amplitude (V)
    phi = 0;    % phase
    data = amp*sin(2*pi*freq*time+phi);
    write(src,data,"double");
end
end

참고 항목

| |

도움말 항목