[카테고리:] PLC/Automation

PLC/자동제어 카테고리는 산업 자동화 현장에서 사용하는 PLC 제어, 전장 설계, 산업용 통신, 서보·모션, 제어반 제작과 관련된 실무 내용과 자동화 산업 현장 인사이트를 정리합니다. 현장 시운전과 유지보수 과정에서 자주 발생하는 문제, 전시회와 설비 트렌드에서 확인한 내용을 기준으로 작성합니다.

  • [실무] GX Works2 Open Setting 표 해석 (Send / Receive / Unpassive 차이)

    GX Works2에서 Ethernet Open Setting 표를 처음 보면 Protocol, Open Method, Fixed Buffer, Send, Receive, Procedure Exist 같은 항목이 한꺼번에 보여 혼동하기 쉽습니다. 하지만 핵심은 복잡하지 않습니다. TCP인지 UDP인지, PLC가 먼저 접속하는지 상대 장비가 접속하는지, 그리고 데이터가 어느 방향으로 흐르는지만 구분하면 Open Setting 표를 훨씬 쉽게 해석할 수 있습니다.

    Open Setting을 이해해야 하는 이유

    이더넷 통신은 포트 번호만 맞춘다고 끝나지 않습니다. 같은 포트 번호를 사용해도 TCP와 UDP가 다르면 통신 방식이 다르고, PLC가 접속하는지 상대 장비가 접속하는지에 따라 Active와 Unpassive 설정이 달라집니다.

    또한 MC 프로토콜처럼 하나의 연결에서 읽기와 쓰기를 모두 처리할 수 있는 구조가 있는 반면, 사용자 정의 Socket 통신처럼 송신과 수신 방향을 직접 나누어 구성해야 하는 경우도 있습니다.

    Open Setting을 제대로 이해하지 못하면 다음과 같은 문제가 발생할 수 있습니다.

    문제 상황주요 원인
    상대가 접속하지 못함Active/Unpassive 설정 오류
    포트는 열었는데 데이터가 안 들어옴Send/Receive 방향 설정 오류
    통신은 붙지만 값이 안 바뀜프로토콜 또는 데이터 주소 불일치
    연결 자원이 부족함불필요하게 Send/Receive를 여러 줄로 분리
    간헐적으로 데이터 누락UDP 사용 조건과 데이터 보증 구조 미확인

    Open Setting은 단순히 표를 채우는 작업이 아니라 상대 장비와 통신 약속을 맞추는 과정입니다.

    TCP와 UDP의 차이

    Protocol 항목에서 가장 먼저 구분해야 하는 것은 TCP와 UDP입니다.

    TCP는 연결을 맺고 데이터를 주고받는 방식입니다. 상대방과 연결 상태를 확인하고, 데이터 송수신 과정에서 안정성을 확보하기 쉽습니다. PC, HMI, 서버, 검사 장비와의 통신에서는 TCP를 사용하는 경우가 많습니다.

    UDP는 연결 절차 없이 데이터를 보내는 방식입니다. 구조가 단순하고 빠르게 주고받을 수 있지만, 상대가 데이터를 받았는지 확인하는 절차가 약합니다. 따라서 데이터 누락이 문제가 되는 구조에서는 별도 확인 로직을 구성해야 합니다.

    구분TCPUDP
    통신 방식연결 후 송수신연결 절차 없이 송수신
    데이터 확인연결 상태와 응답 확인 가능별도 확인 구조 필요
    안정성상대적으로 높음상대적으로 낮음
    실무 사용PC, HMI, 서버, MC 프로토콜 통신단순 주기 전송, 일부 장비 간 데이터 교환
    주의점연결 관리 필요데이터 누락과 순서 관리 주의

    특별한 이유 없이 속도만 보고 UDP를 선택하면 나중에 데이터 누락이나 순서 문제로 디버깅이 길어질 수 있습니다. 안정적인 데이터 교환이 중요하다면 TCP부터 검토하는 것이 일반적입니다.

    Open Method는 접속 주체를 정하는 항목이다

    Open Method는 누가 먼저 접속을 시작하는지와 관련된 항목입니다.

    PLC가 상대방 IP와 포트로 먼저 접속하면 Active 구조입니다. 반대로 PLC가 포트를 열어두고 상대 장비의 접속을 기다리면 Unpassive 구조로 볼 수 있습니다. Fullpassive는 접속 허용 대상을 더 제한적으로 관리할 때 사용되는 구조로 이해할 수 있습니다.

    항목의미실무 사용 예
    ActivePLC가 상대 IP로 먼저 접속PLC가 PC 서버나 측정 장비로 접속해야 할 때
    UnpassivePLC가 대기하고 상대가 접속HMI, PC, 바코드 장비가 PLC로 접속할 때
    Fullpassive지정 조건의 상대 접속만 허용접속 대상을 제한해야 하는 설비

    중요한 것은 어떤 방식이 항상 정답이라는 것이 아닙니다. 상대 장비가 먼저 데이터를 보내는 구조인지, PLC가 요청해서 데이터를 가져오는 구조인지에 따라 선택이 달라집니다.

    상대 담당자가 “PLC 쪽 포트 열어주세요”라고 말했다면 대부분 PLC가 대기하는 구조를 의미합니다. 이 경우 Unpassive 설정을 검토하게 됩니다. 반대로 PLC가 상대 PC 프로그램으로 먼저 접속해야 한다면 Active 구조를 봐야 합니다.

    Fixed Buffer의 Send와 Receive 의미

    Fixed Buffer 설정에서는 데이터가 어느 방향으로 흐르는지 확인해야 합니다.

    Send는 PLC에서 외부 장비로 데이터를 보내는 방향입니다. Receive는 외부 장비에서 PLC로 들어오는 데이터를 받는 방향입니다.

    항목의미실무 사용 예
    SendPLC에서 외부 장비로 데이터 전송PLC가 판정 결과, 상태값, 요청 프레임 송신
    Receive외부 장비에서 PLC로 데이터 수신바코드, 검사 결과, 계측값 수신
    Procedure Exist정해진 절차에 따라 읽기·쓰기 처리MC 프로토콜 통신에서 자주 사용

    Socket 통신처럼 사용자가 직접 데이터를 보내고 받는 구조에서는 Send와 Receive를 분리해서 생각해야 합니다. 반면 MC 프로토콜처럼 상대 장비가 PLC 디바이스를 읽고 쓰는 구조에서는 Procedure Exist를 사용하는 경우가 많습니다.

    Procedure Exist는 언제 사용하는가

    Procedure Exist는 정해진 통신 절차에 따라 데이터 읽기와 쓰기를 처리하는 구조에서 사용됩니다. MC 프로토콜을 사용할 때 자주 접하는 설정입니다.

    MC 프로토콜은 상대 장비가 PLC의 D, M, W 같은 디바이스를 읽거나 쓰는 구조로 많이 사용됩니다. 이 경우 하나의 연결 안에서 읽기와 쓰기가 모두 처리될 수 있으므로, 불필요하게 Send와 Receive를 따로 여러 줄 구성할 필요가 없는 경우가 많습니다.

    구분적합한 구조
    MC 프로토콜로 PC/HMI가 PLC를 읽고 씀TCP + Unpassive + Procedure Exist
    PLC가 특정 문자열을 직접 보냄Send 검토
    외부 장비가 문자열을 PLC로 보냄Receive 검토
    사용자 정의 데이터 송수신Socket 구조와 Send/Receive 방향 확인

    통신 설정에서 중요한 것은 항목 이름을 외우는 것이 아니라, 실제 데이터 흐름을 먼저 정리하는 것입니다.

    실무에서 자주 쓰는 설정 조합

    현장에서 자주 사용하는 조합은 몇 가지로 정리할 수 있습니다.

    용도자주 쓰는 조합
    PC 또는 HMI가 PLC 디바이스를 읽고 쓰는 구조TCP + Unpassive + Procedure Exist
    PLC가 PC 서버로 먼저 접속하는 구조TCP + Active
    외부 장비가 PLC로 문자열을 보내는 구조TCP 또는 UDP + Unpassive + Receive
    PLC가 외부 장비로 주기 데이터를 보내는 구조TCP 또는 UDP + Send
    PLC 간 단순 데이터 교환현장 조건에 따라 TCP 또는 UDP 선택

    처음 설정하는 경우에는 상대 장비가 MC 프로토콜로 PLC 값을 읽고 쓰는 구조인지 먼저 확인하는 것이 좋습니다. 이 구조라면 TCP + Unpassive + Procedure Exist 조합이 가장 먼저 검토되는 경우가 많습니다.

    다만 장비마다 요구하는 통신 구조가 다르므로, 실제 적용 시에는 상대 장비 매뉴얼과 프로그램 담당자의 요구 조건을 기준으로 결정해야 합니다.

    상대 장비가 먼저 보내는 구조와 PLC가 요청하는 구조

    Open Setting에서 가장 많이 헷갈리는 부분은 상대 장비가 데이터를 먼저 보내는지, PLC가 요청해서 데이터를 가져오는지입니다.

    바코드 리더기처럼 스캔이 완료되면 장비가 PLC로 문자열을 보내는 구조가 있습니다. 이 경우 PLC는 대기하고 있다가 데이터를 받아야 하므로 Receive 구조를 검토합니다.

    반대로 PLC가 특정 시점에 측정 장비나 PC 서버로 요청을 보내고 응답을 받는 구조도 있습니다. 이 경우 PLC가 먼저 접속하거나 송신 조건을 만들어야 하므로 Active 또는 Send 구조를 검토합니다.

    구조설정 판단
    상대 장비가 PLC로 접속PLC는 Unpassive 대기
    PLC가 상대 장비로 접속PLC는 Active 검토
    상대 장비가 데이터를 먼저 보냄Receive 방향 확인
    PLC가 데이터를 먼저 보냄Send 방향 확인
    PC/HMI가 PLC 디바이스를 읽고 씀Procedure Exist 검토

    통신은 “누가 먼저 말을 거는가”와 “데이터가 어느 방향으로 흐르는가”를 나누어 봐야 합니다.

    포트 번호는 진수 표기를 확인한다

    Open Setting에서 포트 번호를 입력할 때 10진수와 16진수 표기를 혼동하면 통신이 붙지 않습니다.

    상대 PC 담당자가 5000번 포트라고 말했는데, PLC 설정창이 16진수 입력 기준이라면 그대로 5000을 넣으면 안 될 수 있습니다. 10진수 5000은 16진수로 1388입니다.

    확인 항목설명
    상대가 말한 포트 번호보통 10진수인지 확인
    PLC 설정창 입력 방식10진수인지 16진수인지 확인
    실제 열리는 포트상대가 접속할 포트와 일치하는지 확인
    중복 포트같은 포트를 다른 설정에서 사용 중인지 확인

    포트 번호는 숫자 하나만 틀려도 접속이 되지 않습니다. Open Setting에서 포트 번호를 입력할 때는 반드시 입력 진수를 확인해야 합니다.

    불필요한 채널 낭비를 줄여야 한다

    통신 설정을 잘 모르면 Send와 Receive를 각각 열어두거나, 같은 상대 장비에 여러 줄을 불필요하게 설정하는 경우가 있습니다.

    그러나 MC 프로토콜처럼 하나의 연결에서 읽기와 쓰기를 모두 처리할 수 있는 구조라면 여러 연결을 만들 필요가 없는 경우가 많습니다. 불필요한 연결은 포트 관리와 유지보수를 어렵게 만들고, 연결 자원을 낭비할 수 있습니다.

    채널을 구성할 때는 다음을 확인합니다.

    확인 항목설명
    하나의 연결로 처리 가능한지MC 프로토콜 구조 확인
    Send/Receive 분리가 필요한지사용자 정의 Socket 통신 여부 확인
    같은 상대 IP가 중복되는지목적별 포트 분리 필요성 확인
    실제 사용하는 포트인지미사용 설정 제거
    주석이 있는지각 Open Setting의 용도 표시

    Open Setting은 많이 열수록 좋은 것이 아닙니다. 필요한 통신 구조만 명확하게 열어두는 것이 관리에 유리합니다.

    현장에서 자주 틀리는 Open Setting 실수

    Open Setting에서 자주 발생하는 실수는 다음과 같습니다.

    실수결과
    TCP/UDP를 잘못 선택상대 장비와 통신 방식 불일치
    Active/Unpassive를 반대로 설정서로 접속을 기다리거나, 서로 접속을 시도함
    Send/Receive 방향을 잘못 설정데이터가 들어와도 처리되지 않음
    포트 번호 진수 혼동상대는 맞게 접속했지만 PLC는 다른 포트 대기
    MC 프로토콜인데 불필요하게 Send/Receive 분리연결 자원 낭비와 설정 복잡도 증가
    상대 IP 미확인Active 접속 실패 또는 잘못된 장비와 통신
    설정 반영 누락PLC Write 또는 재기동 누락으로 이전 설정 유지

    통신이 안 될 때는 설정값을 계속 바꾸기보다, 위 항목을 기준으로 하나씩 확인하는 것이 좋습니다.

    Open Setting 확인 순서

    GX Works2에서 Open Setting을 확인할 때는 다음 순서로 보는 것이 좋습니다.

    순서확인 항목
    1상대 장비가 TCP인지 UDP인지 확인
    2PLC가 먼저 접속하는지, 상대 장비가 접속하는지 확인
    3MC 프로토콜인지 Socket 통신인지 확인
    4Send, Receive, Procedure Exist 중 필요한 방식 선택
    5PLC IP와 상대 IP 확인
    6포트 번호와 입력 진수 확인
    7같은 포트를 중복 사용하지 않는지 확인
    8설정 목적을 주석으로 남김
    9PLC Write 후 설정 반영 여부 확인
    10접속 상태와 송수신 데이터를 모니터링

    이 순서대로 보면 표의 각 항목이 따로 보이지 않고 하나의 통신 구조로 연결됩니다.

    상대방에게 확인할 질문

    Open Setting을 잡기 전에 상대방에게 다음 항목을 확인하면 설정 시간을 줄일 수 있습니다.

    질문목적
    TCP인가요, UDP인가요?Protocol 선택
    PLC가 기다리면 되나요?Active/Unpassive 판단
    사용하는 프로토콜은 MC인가요, Socket인가요?Procedure Exist 또는 Send/Receive 판단
    데이터를 누가 먼저 보내나요?Send/Receive 방향 판단
    포트 번호는 몇 번인가요?Port No. 입력
    포트 번호는 10진수 기준인가요?Hex 입력 실수 방지
    상대 IP는 무엇인가요?Active 접속 또는 제한 접속 설정
    읽고 쓸 PLC 주소는 어디인가요?데이터 영역 정리

    이 질문에 답이 정리되면 Open Setting 표에 넣어야 할 값도 자연스럽게 결정됩니다.

    Open Setting 해석 정리

    GX Works2 Open Setting은 TCP/UDP, Active/Unpassive, Send/Receive 같은 항목이 함께 있어 처음에는 복잡해 보입니다. 하지만 실제로는 통신 방식, 접속 주체, 데이터 방향, 프로토콜을 정리하는 표입니다.

    TCP는 안정적인 연결형 통신이고, UDP는 연결 절차가 없는 비연결형 통신입니다. Active는 PLC가 먼저 접속하는 구조이고, Unpassive는 PLC가 포트를 열고 상대 접속을 기다리는 구조입니다. Send는 PLC가 외부로 데이터를 보내는 방향이고, Receive는 외부 장비에서 PLC로 들어오는 데이터를 받는 방향입니다. Procedure Exist는 MC 프로토콜처럼 정해진 절차에 따라 읽기와 쓰기를 처리하는 구조에서 자주 사용됩니다.

    처음 설정할 때는 값을 외우기보다 상대 장비와 통신 구조를 먼저 정리해야 합니다. 누가 먼저 접속하는지, 누가 먼저 데이터를 보내는지, MC 프로토콜인지 Socket 통신인지, 포트 번호는 10진수인지 16진수인지 확인하면 Open Setting 표의 대부분은 자연스럽게 결정됩니다.

    통신은 설정을 많이 넣는 것이 아니라 필요한 약속만 정확히 맞추는 작업입니다. Open Setting을 구성한 뒤에는 PLC Write와 설정 반영 여부, 접속 상태, 송수신 데이터까지 함께 확인해야 실제 통신이 정상인지 판단할 수 있습니다.

  • [실무] “포트 열어주세요” 들었을 때 바로 확인할 것들

    PLC 앞에서 이더넷 통신을 준비하다 보면 상대 PC나 상위 시스템 담당자로부터 “포트 열어주세요”라는 말을 듣는 경우가 있습니다. 처음에는 PLC 설정 문제인지, PC 방화벽 문제인지, 공유기 설정 문제인지 혼동하기 쉽습니다. 하지만 이 말의 핵심은 통신을 시작하기 전에 접속 방식, 포트 번호, 프로토콜, IP 주소를 서로 맞추자는 의미에 가깝습니다.

    포트를 연다는 말의 의미

    “포트를 열어주세요”라는 말은 상황에 따라 의미가 조금 다를 수 있습니다. PLC가 상대방 접속을 기다리는 구조일 수도 있고, PC 방화벽에서 특정 포트를 허용해야 하는 상황일 수도 있으며, 공유기나 네트워크 장비에서 포트 포워딩이 필요한 경우도 있습니다.

    PLC 현장에서 자주 만나는 의미는 다음과 같습니다.

    상대 프로그램이 PLC로 접속할 예정이므로, PLC 쪽에서 특정 포트 번호를 열어두고 대기해야 한다는 의미입니다.

    즉, PLC가 먼저 상대방 PC로 접속하는 것이 아니라, 상대방이 PLC로 들어올 수 있도록 PLC가 통신 대기 상태를 만들어 두는 구조입니다.

    이 구조를 이해하면 통신 설정 방향이 명확해집니다. PLC가 먼저 접속하는지, 상대방이 PLC로 접속하는지에 따라 Open Setting, 상대 IP 설정, 재접속 조건, 프로그램 처리 방식이 달라지기 때문입니다.

    먼저 접속 주체를 확인해야 한다

    이더넷 통신에서 가장 먼저 확인할 것은 누가 먼저 접속하는지입니다.

    PLC가 먼저 상대 PC나 서버로 접속하면 Active 방식에 가깝고, PLC가 포트를 열고 기다리면 Passive 방식에 가깝습니다. 미쓰비시 GX Works 설정에서는 Unpassive, Active, UDP, TCP 같은 표현이 함께 나오기 때문에 처음 보면 혼동하기 쉽습니다.

    구분의미
    PLC가 대기상대방이 PLC IP와 포트로 접속
    PLC가 접속PLC가 상대 IP와 포트로 먼저 접속
    TCP연결을 맺고 데이터 송수신
    UDP연결 절차 없이 데이터 송수신
    MC Protocol미쓰비시 표준 프로토콜 사용
    Socket사용자 정의 데이터 송수신 구조

    “포트 열어주세요”라는 요청을 받으면 바로 설정창을 열기보다 먼저 접속 주체를 확인해야 합니다.

    TCP인지 UDP인지 확인한다

    포트 번호를 정하기 전에 TCP인지 UDP인지 확인해야 합니다. 같은 포트 번호를 사용하더라도 TCP와 UDP는 통신 방식이 다릅니다.

    TCP는 연결을 맺은 뒤 데이터를 주고받는 방식입니다. 데이터 도착 여부와 연결 상태를 관리할 수 있어 상위 PC, 서버, 검사 장비, HMI 연동에서 많이 사용됩니다.

    UDP는 연결 절차 없이 데이터를 보내는 방식입니다. 구조는 단순하지만 상대가 받았는지 확인하는 절차가 약하므로, 장비 특성과 프로토콜 구조에 따라 사용 여부를 판단해야 합니다.

    구분TCPUDP
    연결 방식접속 후 송수신접속 절차 없이 송수신
    안정성상대적으로 높음구조가 단순함
    상태 관리연결 상태 확인 가능별도 상태 관리 필요
    사용 예PC 서버, HMI, 검사 장비단순 송수신, 일부 장비 전용 통신

    현장에서 별도 설명이 없다면 TCP를 사용하는 경우가 많지만, 반드시 상대 장비 또는 PC 프로그램 담당자에게 확인해야 합니다.

    Active와 Passive를 구분한다

    통신에서 Active와 Passive는 누가 먼저 접속하느냐의 문제입니다.

    PLC가 Active라면 PLC가 상대방 IP와 포트로 먼저 접속합니다. 이 경우 PLC 설정에는 상대 IP 주소와 상대 포트 번호가 정확히 들어가야 합니다.

    PLC가 Passive라면 PLC는 자기 포트를 열어두고 기다립니다. 상대방 PC나 장비가 PLC IP와 포트 번호로 접속합니다. 이 경우 PLC는 대기 포트 번호를 열어두는 설정이 중요합니다.

    구분PLC 역할확인할 항목
    ActivePLC가 먼저 접속상대 IP, 상대 포트, 재접속 조건
    PassivePLC가 접속 대기PLC IP, PLC 포트, 상대 접속 방식
    UDP연결 개념이 약함송신 대상 IP, 포트, 수신 포트
    TCP연결 상태 중요접속 주체, 포트 오픈, 연결 유지

    상대방이 “포트 열어주세요”라고 말했다면 보통 PLC가 Passive로 대기하는 구조일 가능성이 있습니다. 다만 현장마다 표현이 다를 수 있으므로 반드시 확인해야 합니다.

    프로토콜을 확인한다

    포트가 열려 있어도 프로토콜이 다르면 통신은 정상 처리되지 않습니다. 포트는 통신이 들어오는 문이고, 프로토콜은 그 문으로 들어온 데이터를 어떻게 해석할지 정하는 규칙입니다.

    미쓰비시 PLC 이더넷 통신에서는 다음과 같은 방식을 자주 봅니다.

    구분설명
    MC Protocol미쓰비시 PLC 디바이스를 읽고 쓰는 표준 방식
    Socket 통신사용자 정의 문자열 또는 바이너리 데이터 송수신
    전용 프로토콜장비 제조사에서 정한 형식 사용
    Modbus TCP일부 장비와 연동 시 사용
    ASCII 통신문자열 기반 장비와 연동 시 사용

    예를 들어 상대 PC가 MC Protocol로 D 영역을 읽으려는 것인지, 아니면 PLC가 Socket으로 특정 문자열을 주고받아야 하는지에 따라 설정과 로직이 완전히 달라집니다.

    따라서 포트 번호만 맞추면 끝난다고 보면 안 됩니다. 포트, 접속 방식, 프로토콜, 데이터 형식을 함께 맞춰야 합니다.

    IP 주소를 먼저 고정한다

    이더넷 통신에서는 PLC IP와 상대 장비 IP를 명확히 정해야 합니다.

    PLC가 서버처럼 대기하는 구조라면 상대방은 PLC IP로 접속합니다. 이때 PLC IP가 DHCP처럼 변할 수 있는 구조라면 통신이 불안정해질 수 있습니다. 현장 설비에서는 일반적으로 PLC IP를 고정으로 사용하는 것이 관리에 유리합니다.

    확인할 항목은 다음과 같습니다.

    항목확인 내용
    PLC IPPLC에 설정된 고정 IP 확인
    상대 IPPC, 서버, 검사 장비 IP 확인
    서브넷 마스크같은 네트워크 대역인지 확인
    게이트웨이다른 네트워크 대역 통신 시 필요 여부 확인
    중복 IP같은 IP를 쓰는 장비가 없는지 확인

    통신이 안 될 때는 포트보다 먼저 ping이나 네트워크 연결 상태를 확인해야 하는 경우도 있습니다. 같은 대역에 있는지, IP 충돌이 없는지, 물리 링크가 살아 있는지 먼저 봐야 합니다.

    포트 번호는 10진수와 16진수를 구분한다

    PLC 설정에서 포트 번호를 입력할 때 10진수와 16진수 표기 때문에 문제가 생기는 경우가 있습니다.

    상대방이 “5000번 포트”라고 말했는데, PLC 설정창에서는 16진수 입력을 요구하는 경우가 있습니다. 이때 5000을 그대로 넣는지, 16진수로 변환해 넣어야 하는지 확인하지 않으면 포트가 맞지 않습니다.

    예를 들어 10진수 5000은 16진수로 1388입니다. 설정창 기준을 확인하지 않으면 상대는 5000번으로 접속하는데 PLC는 다른 포트를 열고 기다리는 상황이 될 수 있습니다.

    확인 항목설명
    상대가 준 포트 번호10진수 기준인지 확인
    PLC 설정창 입력 방식10진수 입력인지 16진수 입력인지 확인
    실제 오픈 포트PLC가 어떤 포트를 대기 중인지 확인
    방화벽 허용 포트PC 또는 네트워크 장비 설정과 일치하는지 확인

    포트 번호는 숫자 하나만 틀려도 통신이 되지 않습니다. 특히 10진수와 16진수 변환 여부는 반드시 확인해야 합니다.

    데이터 주소를 확인한다

    상대방이 PLC로 접속해서 데이터를 읽거나 쓰려면 어느 디바이스를 사용할지 정해야 합니다.

    예를 들어 D100부터 10워드를 읽을 것인지, M100부터 비트 상태를 볼 것인지, W 영역을 통신용으로 사용할 것인지 미리 합의해야 합니다.

    확인할 항목은 다음과 같습니다.

    항목예시
    읽기 영역D100~D199, M100~M199
    쓰기 영역D200~D299, M200~M299
    데이터 단위비트, 워드, 더블워드
    바이트 순서상위·하위 바이트 또는 워드 순서
    문자열 여부ASCII, 길이, 종료 문자
    쓰기 권한상대 장비가 PLC에 값을 써도 되는지

    읽기는 되는데 쓰기가 안 되는 경우에는 PLC 설정에서 온라인 변경, 쓰기 허용, 프로토콜 권한, 방화벽, 프로그램 인터락 조건을 함께 확인해야 합니다.

    GX Works에서 확인할 항목

    미쓰비시 PLC 기준으로 이더넷 통신을 준비할 때는 네트워크 파라미터와 Open Setting을 확인해야 합니다.

    프로젝트와 CPU 종류에 따라 메뉴명은 다를 수 있지만, 일반적으로 다음 항목을 확인합니다.

    항목확인 내용
    PLC IP 설정PLC 고정 IP와 서브넷 확인
    Open SettingTCP/UDP, Active/Passive 방식 확인
    ProtocolMC Protocol, Socket 등 확인
    Port No.포트 번호와 입력 진수 확인
    상대 IPActive 방식일 때 상대 IP 확인
    송수신 방식Send/Receive, Unpassive 등 의미 확인
    Write 허용상대 장비가 PLC에 쓰기 가능한지 확인
    설정 반영PLC Write 후 재기동 필요 여부 확인

    Open Setting 표는 처음 보면 어렵지만, 결국 어떤 방식으로 열고, 누가 접속하고, 어떤 프로토콜로 데이터를 주고받을지를 정리하는 화면입니다.

    상대방에게 먼저 물어볼 항목

    현장에서 통신 담당자와 말이 어긋나면 설정 시간이 길어집니다. 포트를 열어달라는 말을 들었을 때는 다음 항목을 먼저 확인하는 것이 좋습니다.

    질문이유
    TCP인가요, UDP인가요?통신 방식이 다르기 때문
    누가 먼저 접속하나요?Active/Passive 설정 결정
    사용할 프로토콜은 무엇인가요?MC Protocol인지 Socket인지 결정
    PLC가 대기하면 되나요?포트 오픈 구조 확인
    사용할 포트 번호는 몇 번인가요?Open Setting 입력값 결정
    포트 번호는 10진수 기준인가요?16진수 입력 실수 방지
    상대방 IP는 무엇인가요?Active 또는 방화벽 설정 확인
    어떤 PLC 주소를 읽고 쓰나요?데이터 맵 정리 필요

    이 질문을 먼저 던지면 설정창을 반복해서 수정하는 시간을 줄일 수 있습니다.

    PLC에서 준비할 항목

    상대방과 조건을 맞췄다면 PLC 쪽에서는 다음 항목을 준비합니다.

    준비 항목설명
    PLC IP고정 IP 설정
    포트 번호상대방과 합의한 포트로 설정
    Open SettingTCP/UDP, Active/Passive, Protocol 설정
    데이터 영역읽기·쓰기용 D, M, W 영역 정리
    쓰기 인터락외부에서 쓰는 값이 바로 출력으로 이어지지 않도록 관리
    상태 확인접속 상태, 수신 완료, 에러 상태 모니터링
    설정 반영PLC Write 및 필요 시 재기동

    특히 외부 장비가 PLC 값을 쓰는 구조라면, 그 값이 출력 조건에 바로 연결되지 않도록 중간 검증 로직을 두는 것이 좋습니다. 상위 PC에서 잘못된 값이 들어와도 설비가 바로 동작하지 않도록 제한값과 인터락을 두어야 합니다.

    방화벽과 네트워크 장비도 확인한다

    PLC 설정이 맞아도 PC 방화벽이나 네트워크 장비에서 포트가 막혀 있으면 통신이 되지 않을 수 있습니다.

    PLC가 Passive로 대기하고 PC가 접속하는 구조라면 PC 쪽 방화벽보다 PLC까지의 네트워크 경로가 중요합니다. 반대로 PLC가 PC 프로그램으로 접속해야 하는 구조라면 PC 방화벽에서 해당 포트를 허용해야 할 수 있습니다.

    확인할 항목은 다음과 같습니다.

    항목설명
    PC 방화벽PC가 서버 역할을 할 때 포트 허용 필요
    공유기·라우터다른 네트워크 대역이면 포트 포워딩 필요 여부 확인
    스위치 허브물리 링크와 VLAN 구성 확인
    보안 장비산업용 방화벽 또는 차단 정책 확인
    테스트 도구ping, telnet, 포트 스캐너 등으로 연결성 확인

    설비 내부망에서는 단순한 경우가 많지만, 공장 네트워크나 사무망과 연결될 때는 네트워크 보안 정책을 함께 확인해야 합니다.

    포트 오픈 요청을 받았을 때 점검 순서

    현장에서 바로 확인할 순서는 다음과 같습니다.

    순서확인 항목
    1PLC와 상대 장비 IP 확인
    2TCP인지 UDP인지 확인
    3누가 먼저 접속하는지 확인
    4MC Protocol인지 Socket인지 확인
    5사용할 포트 번호와 진수 확인
    6Open Setting에 조건 입력
    7읽기·쓰기 데이터 주소 확정
    8PLC Write 후 설정 반영
    9상대방 접속 시도 확인
    10접속 상태와 송수신 데이터 확인

    이 순서대로 확인하면 “포트를 열어달라”는 요청을 받았을 때 어디부터 봐야 할지 명확해집니다.

    포트 설정 정리

    “포트 열어주세요”라는 말은 단순히 설정창에서 숫자 하나를 넣으라는 뜻이 아닙니다. 통신 방식, 접속 주체, 프로토콜, IP 주소, 포트 번호, 데이터 주소를 서로 맞추자는 의미입니다.

    PLC가 대기하는 구조인지, PLC가 먼저 접속하는 구조인지에 따라 설정은 달라집니다. TCP와 UDP도 다르고, MC Protocol과 Socket 통신도 처리 방식이 다릅니다. 포트 번호는 10진수와 16진수 입력 방식까지 확인해야 합니다.

    현장에서 통신을 빠르게 붙이려면 설정부터 만지기보다 상대방에게 필요한 정보를 먼저 받아야 합니다. TCP/UDP, Active/Passive, 프로토콜, IP, 포트 번호, 데이터 주소가 정리되면 GX Works의 Open Setting에서 무엇을 넣어야 하는지 훨씬 명확해집니다.

    통신은 장비 성능보다 약속을 맞추는 과정이 먼저입니다. 포트와 접속 방식만 정확히 맞춰도 이더넷 통신 문제의 상당 부분은 빠르게 좁힐 수 있습니다.

  • [실무] PLC 통신 배선, 설정 이상없으면 이제 데이터 처리 단계입니다 버퍼 메모리부터 봅니다

    PLC 시리얼 통신에서 배선과 파라미터를 모두 맞췄는데도 데이터가 정상적으로 들어오지 않는 경우가 있습니다. 이때부터는 통신 모듈 안에 들어온 데이터를 PLC CPU가 어떻게 읽고, 어디에 저장하고, 언제 처리하는지를 확인해야 합니다. 통신 LED가 깜빡이는 것과 PLC 로직에서 데이터를 정상적으로 사용하는 것은 별개의 문제입니다.

    배선과 설정 다음은 데이터 처리다

    시리얼 통신 문제는 보통 배선, 파라미터, 데이터 처리 순서로 확인합니다.

    배선이 틀리면 신호가 오가지 않습니다. 파라미터가 틀리면 신호가 있어도 서로 해석하지 못합니다. 배선과 파라미터가 맞는데도 데이터가 이상하다면, 그다음은 수신 완료 조건, 버퍼 메모리, 데이터 이동 명령, 초기화 타이밍을 확인해야 합니다.

    통신 점검 순서를 간단히 정리하면 다음과 같습니다.

    구분핵심 확인주요 증상
    배선Tx/Rx, A/B, SG, 종단저항LED 무반응, 응답 없음
    파라미터Baud Rate, Parity, Data Bit, Stop BitLED는 움직이나 값 깨짐
    프로토콜MC, Modbus, Non-procedure, 국번응답 없음, 의미 없는 데이터
    데이터 처리수신 완료, 버퍼 읽기, 초기화일부 데이터만 수신, 이전 데이터 잔류
    로직 타이밍송신 후 수신 대기, 완료 후 리셋간헐적 통신, 데이터 누락

    본 글은 미쓰비시 PLC와 GX Works 환경에서 시리얼 통신 데이터를 처리할 때 자주 확인하는 항목을 실무 기준으로 정리한 내용입니다. 실제 명령어 이름, 버퍼 메모리 주소, 완료 비트, 에러 비트는 사용하는 CPU와 통신 모듈에 따라 달라질 수 있으므로 적용 전 해당 모듈 매뉴얼을 확인해야 합니다.

    버퍼 메모리는 통신 데이터가 머무는 영역이다

    통신 모듈은 외부 장비와 데이터를 주고받습니다. 하지만 외부에서 들어온 데이터가 곧바로 PLC의 D 영역에 자동으로 들어오는 것은 아닙니다.

    통신 모듈 내부에는 수신 데이터, 송신 데이터, 상태 정보, 에러 코드 등을 저장하는 영역이 있습니다. 이를 버퍼 메모리로 볼 수 있습니다.

    PLC CPU는 이 버퍼 메모리에 접근해 필요한 데이터를 가져오거나, 보낼 데이터를 넣어 통신 모듈이 송신하도록 만들어야 합니다.

    개념은 다음과 같습니다.

    구분의미
    수신 버퍼외부 장비에서 들어온 데이터가 임시로 저장되는 영역
    송신 버퍼외부 장비로 보낼 데이터가 준비되는 영역
    상태 버퍼수신 완료, 송신 완료, 에러 상태 등을 확인하는 영역
    CPU D 영역PLC 로직에서 실제로 사용하는 데이터 영역

    통신이 붙었다는 것은 신호가 오간다는 뜻이고, 데이터를 제대로 쓴다는 것은 버퍼와 D 영역 사이의 이동이 정확하다는 뜻입니다.

    FROM과 TO의 기본 개념

    미쓰비시 PLC에서 지능형 기능 모듈이나 통신 모듈의 버퍼 메모리에 접근할 때는 FROM, TO 계열 명령을 사용하는 경우가 있습니다.

    FROM은 모듈의 버퍼 메모리에서 데이터를 읽어 PLC CPU 쪽 디바이스로 가져오는 역할을 합니다. TO는 PLC CPU 쪽 데이터를 모듈의 버퍼 메모리로 쓰는 역할을 합니다.

    명령 개념역할
    FROM통신 모듈 버퍼에서 PLC D 영역으로 데이터 읽기
    TOPLC D 영역에서 통신 모듈 버퍼로 데이터 쓰기
    읽기 대상수신 데이터, 상태 정보, 에러 코드
    쓰기 대상송신 데이터, 명령 데이터, 제어 정보

    다만 모든 프로젝트에서 FROM/TO를 직접 다루는 것은 아닙니다. 사용하는 모듈, 라이브러리, 프로그램 방식에 따라 전용 명령어나 전용 펑션을 사용할 수도 있습니다.

    G.INPUT과 G.OUTPUT을 사용하는 경우

    프로젝트나 모듈 구성에 따라 G.INPUT, G.OUTPUT 같은 전용 명령어 또는 전용 펑션을 사용해 데이터를 처리하는 경우가 있습니다.

    일반적으로 G.OUTPUT은 송신 데이터를 외부 장비로 보내는 동작에 사용하고, G.INPUT은 수신된 데이터를 PLC 내부 디바이스로 가져오는 동작에 사용합니다.

    예를 들어 G.OUTPUT U0 D100 M10은 U0 모듈을 대상으로 D100부터 준비된 데이터를 송신하는 형태로 볼 수 있습니다. G.INPUT U0 D200 M20은 U0 모듈에서 수신된 데이터를 D200부터 저장하는 형태로 볼 수 있습니다.

    이 표현은 프로젝트 구성과 명령어 형식에 따라 달라질 수 있으므로, 실제 사용 시에는 해당 모듈의 명령어 형식과 인수 의미를 확인해야 합니다.

    송신과 수신은 조건을 나누어야 한다

    통신 로직에서 자주 발생하는 문제는 송신과 수신을 무조건 상시 실행하는 구조입니다.

    상대 장비에 요청을 보내고, 상대 장비가 응답할 시간을 기다린 뒤, 수신 완료 신호가 들어왔을 때 데이터를 읽어야 합니다. 송신과 수신의 타이밍이 정리되지 않으면 아직 데이터가 다 들어오기 전에 읽거나, 이전 데이터를 다시 읽는 문제가 생길 수 있습니다.

    기본 흐름은 다음과 같습니다.

    단계처리 내용
    1송신 조건 발생
    2송신 데이터 준비
    3G.OUTPUT 또는 송신 명령 실행
    4송신 완료 확인
    5상대 장비 응답 대기
    6수신 완료 신호 확인
    7G.INPUT 또는 수신 명령 실행
    8수신 데이터 처리
    9완료 비트와 임시 데이터 정리

    이 흐름이 없으면 통신은 되는 것처럼 보여도 데이터가 깨지거나 누락될 수 있습니다.

    수신 완료 신호 기준으로 데이터를 읽어야 한다

    시리얼 통신은 데이터가 순차적으로 들어옵니다. 문자열 장비나 바코드 리더기처럼 여러 문자로 구성된 데이터를 받는 경우, 데이터가 한 번에 완성되어 들어오는 것이 아니라 문자 단위로 차례대로 들어옵니다.

    따라서 수신 도중에 데이터를 읽으면 절반만 들어온 문자열이나 이전 데이터가 섞인 값을 읽을 수 있습니다.

    수신 데이터는 반드시 수신 완료 신호를 기준으로 읽어야 합니다.

    상태처리 기준
    수신 대기수신 완료 비트가 ON될 때까지 대기
    수신 완료완료 비트 ON 시 데이터 읽기 실행
    데이터 처리D 영역으로 이동된 데이터 검사 또는 변환
    처리 완료완료 플래그 정리, 다음 수신 준비
    초기화필요 시 수신 버퍼 또는 임시 영역 정리

    수신 완료 조건 없이 SM400 같은 상시 ON 조건으로 계속 데이터를 읽으면, 아직 완성되지 않은 데이터를 가져올 가능성이 있습니다.

    데이터가 깨지는 원인

    통신 데이터가 깨지는 원인은 배선이나 파라미터만이 아닙니다. 데이터 처리 타이밍이 맞지 않아도 값이 깨질 수 있습니다.

    대표적인 원인은 다음과 같습니다.

    원인설명
    수신 중간에 읽음전체 데이터가 들어오기 전에 D 영역으로 이동
    수신 완료 비트 미확인완료 조건 없이 상시 읽기 실행
    이전 데이터 미초기화새 데이터와 이전 데이터가 섞임
    수신 길이 계산 오류실제 데이터 길이보다 짧거나 길게 읽음
    종료 문자 처리 오류CR, LF 등 종료 조건을 잘못 해석
    송수신 중복 실행응답 대기 중 다시 송신이 발생
    버퍼 오버런수신 데이터를 처리하기 전에 다음 데이터가 들어옴

    데이터가 깨질 때는 통신선이나 파라미터만 보지 말고, 수신 완료 비트와 데이터 읽기 타이밍을 반드시 확인해야 합니다.

    바코드 수신 로직의 기본 흐름

    바코드 리더기나 문자열 장비와 통신할 때는 수신 완료 기준의 흐름이 중요합니다.

    기본적인 수신 처리 흐름은 다음과 같이 구성할 수 있습니다.

    단계내용
    대기바코드 리딩 완료 또는 수신 완료 비트 대기
    수신완료 신호가 들어왔을 때 수신 데이터를 D 영역으로 이동
    검사수신 길이, 시작 문자, 종료 문자, 데이터 형식 확인
    변환ASCII 문자열을 숫자 또는 내부 코드로 변환
    판정기준 데이터와 비교해 OK/NG 판단
    초기화수신 완료 비트, 임시 버퍼, 요청 플래그 정리
    재대기다음 바코드 수신 준비

    이 구조에서 가장 중요한 것은 완료 신호가 들어온 한 번의 타이밍에 데이터를 읽고, 처리 후 다음 수신을 위해 상태를 정리하는 것입니다.

    상시 읽기보다 이벤트 기준 읽기가 안전하다

    수신 데이터를 상시로 읽는 구조는 단순해 보이지만, 실제로는 데이터 깨짐과 이전 값 잔류 문제를 만들 수 있습니다.

    반대로 수신 완료 신호, 송신 완료 신호, 에러 신호 같은 이벤트를 기준으로 처리하면 로직 흐름이 명확해집니다.

    방식특징
    상시 읽기구현은 단순하지만 수신 중간 데이터까지 읽을 수 있음
    완료 신호 기준 읽기데이터 완성 후 처리하므로 안정적
    타이머 지연 읽기보조적으로 사용할 수 있으나 완료 신호보다 불확실
    고정 길이 읽기데이터 길이가 항상 일정할 때 사용 가능
    종료 문자 기준 읽기CR, LF 등 종료 문자가 있는 문자열 통신에 적합

    시리얼 통신에서는 상대 장비가 데이터를 다 보냈다는 기준을 어떻게 잡을지가 중요합니다. 완료 비트, 수신 바이트 수, 종료 문자 조건 중 어떤 방식을 사용할지 정해야 합니다.

    수신 데이터 저장 영역을 분리한다

    통신 데이터를 처리할 때는 수신 원본 영역, 변환 영역, 판정 영역을 분리하는 것이 좋습니다.

    예를 들어 D200부터는 수신 원본 데이터, D300부터는 변환 후 숫자 데이터, D400부터는 판정 결과나 상위 전송 데이터처럼 나누어 관리할 수 있습니다.

    영역사용 목적
    수신 원본 영역통신 모듈에서 가져온 원본 데이터 저장
    임시 처리 영역문자 변환, 길이 계산, 비교 작업
    결과 영역OK/NG, 품번, 수량, 판정 코드 저장
    송신 영역상대 장비 또는 상위 장비로 보낼 데이터
    상태 영역수신 완료, 송신 완료, 에러 코드 관리

    한 D 영역을 수신, 변환, 표시, 송신에 모두 섞어 사용하면 데이터가 언제 바뀌었는지 추적하기 어렵습니다.

    송신 데이터도 완료 조건을 봐야 한다

    수신만 중요한 것이 아닙니다. 송신도 완료 조건을 확인해야 합니다.

    송신 명령을 실행한 뒤에는 송신 완료 비트나 에러 비트를 확인하고 다음 단계로 넘어가야 합니다. 송신 완료를 확인하지 않고 계속 송신 명령을 반복하면 상대 장비가 중복 명령을 받거나 통신 버퍼가 꼬일 수 있습니다.

    송신 로직에서 확인할 항목은 다음과 같습니다.

    확인 항목설명
    송신 요청어떤 조건에서 송신을 시작하는지 확인
    송신 데이터 준비보내기 전 데이터 영역이 완성되었는지 확인
    송신 실행상승엣지 또는 1회성 조건으로 실행되는지 확인
    송신 완료완료 비트가 들어왔는지 확인
    송신 에러타임아웃, 프레임 오류 등 확인
    다음 단계완료 후 수신 대기로 넘어가는지 확인

    통신 명령은 매 스캔 반복 실행하는 구조보다 요청, 실행, 완료, 정리 순서가 있는 상태 흐름으로 만드는 것이 안정적입니다.

    통신 로직에서 자주 발생하는 실수

    통신 데이터 처리 단계에서 자주 발생하는 실수는 다음과 같습니다.

    실수결과
    완료 신호 없이 G.INPUT 실행데이터 일부만 읽거나 이전 데이터와 섞임
    송신 명령을 매 스캔 실행중복 송신 또는 상대 장비 응답 혼선
    수신 버퍼 초기화 누락이전 데이터가 남아 새 데이터와 혼동
    수신 길이 확인 누락짧은 데이터나 비정상 데이터도 정상 처리
    에러 비트 확인 안 함통신 실패 상태를 정상으로 판단
    채널 또는 모듈 번호 착오다른 포트의 데이터만 확인
    D 영역 중복 사용수신값이 다른 로직에서 덮어써짐

    통신은 신호가 보이는 것만으로 정상이라고 판단하면 안 됩니다. 요청과 응답, 완료와 초기화가 순서대로 맞아야 합니다.

    통신 데이터 처리 체크리스트

    배선과 파라미터가 맞는데도 데이터가 정상적으로 처리되지 않을 때는 다음 항목을 확인합니다.

    점검 항목확인 내용
    모듈 번호G.INPUT/G.OUTPUT 또는 FROM/TO 대상 모듈이 맞는지
    채널실제 통신 채널과 로직에서 사용하는 채널이 일치하는지
    수신 완료완료 비트를 기준으로 데이터를 읽는지
    송신 완료송신 완료 후 다음 단계로 넘어가는지
    수신 길이실제 데이터 길이와 읽는 길이가 맞는지
    종료 조건CR, LF 또는 고정 길이 조건이 맞는지
    초기화처리 후 완료 비트와 임시 영역을 정리하는지
    에러 코드통신 에러 상태를 확인하고 분기하는지
    D 영역수신, 변환, 결과, 송신 영역이 분리되어 있는지
    실행 조건통신 명령이 매 스캔 중복 실행되지 않는지

    이 항목을 확인하면 통신이 붙었는데 데이터가 이상한 경우의 원인을 좁힐 수 있습니다.

    통신 데이터 처리 단계 정리

    RS232/RS485 통신은 배선과 파라미터를 맞추는 것에서 끝나지 않습니다. 통신 모듈 안에 들어온 데이터를 PLC CPU가 언제 읽고, 어디에 저장하고, 어떤 조건에서 처리하는지가 중요합니다.

    통신 모듈의 버퍼 메모리는 외부 장비와 CPU 사이에서 데이터를 임시로 보관하는 영역입니다. PLC는 FROM/TO 또는 G.INPUT/G.OUTPUT 같은 명령을 이용해 데이터를 읽고 써야 합니다. 실제 명령어와 버퍼 주소는 사용하는 모듈과 프로젝트 구성에 따라 달라질 수 있으므로 매뉴얼 기준으로 확인해야 합니다.

    데이터가 깨지는 가장 흔한 원인 중 하나는 수신 완료 전에 데이터를 읽는 것입니다. 시리얼 통신은 데이터가 순차적으로 들어오기 때문에 완료 비트, 수신 길이, 종료 문자 조건을 기준으로 데이터를 읽어야 합니다.

    송신 역시 요청, 실행, 완료, 에러 확인, 정리 순서로 구성해야 합니다. 통신 명령을 상시 실행하거나 수신 버퍼를 정리하지 않으면 중복 송신, 이전 데이터 잔류, 부분 수신 문제가 생길 수 있습니다.

    통신 LED가 깜빡인다면 이제부터는 로직 안에서 데이터가 어떻게 이동하는지를 봐야 합니다. 배선, 파라미터, 프로토콜을 확인한 뒤에는 버퍼 메모리와 수신 완료 신호 기준의 데이터 처리 구조를 점검하는 것이 다음 단계입니다.