이더넷 통신 시운전 중 상대 PC나 HMI에서는 데이터를 보냈다고 하는데 PLC 디바이스 값은 바뀌지 않는 경우가 있습니다. Ping은 정상이고 접속 상태도 이상 없어 보이지만 D, M, W 같은 PLC 주소에는 값이 들어오지 않는 상황입니다. 이때는 통신 전체가 안 되는 문제로 보기보다, 쓰기 권한, 데이터 형식, 주소 지정, 파라미터 반영 여부를 순서대로 확인해야 합니다.
통신은 되는데 값만 안 들어오는 상황
현장에서 “통신이 안 된다”고 말하는 경우가 많지만, 실제로는 통신이 완전히 끊긴 상태가 아닐 수 있습니다.
예를 들어 상대 장비가 PLC 데이터를 읽는 것은 되는데, PLC에 값을 쓰는 것만 안 되는 경우가 있습니다. 이 경우에는 배선이나 IP 설정보다 쓰기 허용 조건, 데이터 코드, 디바이스 주소, 프로토콜 설정을 먼저 보는 것이 빠릅니다.
상태를 구분하면 다음과 같습니다.
| 증상 | 우선 확인 항목 |
|---|---|
| Ping이 안 됨 | IP, 서브넷, 케이블, 허브, 방화벽 |
| 접속이 안 됨 | 포트 번호, TCP/UDP, Active/Unpassive |
| 읽기는 됨 | 기본 통신 연결은 성립 가능 |
| 쓰기만 안 됨 | 쓰기 허용 설정, 주소, 권한, 데이터 코드 |
| 값이 들어왔다가 사라짐 | PLC 내부 로직에서 덮어쓰기 여부 |
| 값이 이상하게 들어옴 | Binary/ASCII, 워드 순서, 데이터 타입 |
통신 연결과 PLC 디바이스 값 반영은 같은 문제가 아닙니다. 연결이 정상이어도 PLC가 외부 쓰기를 허용하지 않거나, 상대가 잘못된 주소로 쓰고 있으면 값은 들어오지 않습니다.
1단계 주소와 디바이스 종류를 다시 맞춘다
가장 먼저 확인할 것은 상대 장비가 쓰는 주소와 내가 보고 있는 PLC 주소가 같은지입니다.
현장에서는 상대가 D100에 쓴다고 했는데 PLC에서는 D1000을 보고 있거나, 상대는 M 영역에 쓰고 있는데 PLC에서는 D 영역만 확인하는 경우가 있습니다.
또한 미쓰비시 PLC는 디바이스 종류에 따라 주소 체계가 다를 수 있습니다. X, Y, B, W처럼 16진수 주소 체계를 쓰는 영역과 D, M처럼 10진수 기준으로 보는 영역을 혼동하면 서로 다른 주소를 보고 있을 수 있습니다.
확인할 항목은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| 디바이스 종류 | D, M, W, B 중 어느 영역인지 확인 |
| 시작 주소 | 상대 장비가 쓰는 시작 주소와 PLC 모니터 주소 일치 확인 |
| 주소 진수 | 10진수와 16진수 표기 혼동 여부 확인 |
| 데이터 길이 | 1워드인지, 여러 워드인지 확인 |
| 비트·워드 구분 | M 같은 비트 영역인지, D 같은 워드 영역인지 확인 |
주소가 하나만 틀려도 통신은 정상인데 값이 안 들어오는 것처럼 보입니다. 그래서 가장 먼저 같은 주소를 보고 있는지부터 확인해야 합니다.
2단계 데이터 코드 Binary와 ASCII를 확인한다
미쓰비시 이더넷 통신에서는 데이터 코드 설정을 확인해야 합니다. 상대 장비가 Binary 방식으로 데이터를 보내는데 PLC 설정이 ASCII 기준이거나, 반대로 PLC는 Binary로 기다리는데 상대가 ASCII로 보내면 값이 정상적으로 해석되지 않을 수 있습니다.
이 경우 통신 패킷은 들어오지만 PLC에서 기대한 값으로 반영되지 않거나, 이상한 값으로 보일 수 있습니다.
| 구분 | 의미 |
|---|---|
| Binary | 데이터를 바이너리 값으로 처리 |
| ASCII | 숫자나 문자를 ASCII 코드 형태로 처리 |
| 불일치 시 | 값 깨짐, 해석 오류, 쓰기 실패처럼 보일 수 있음 |
특히 PC 프로그램에서 직접 MC 프로토콜이나 Socket 데이터를 구성하는 경우에는 Binary/ASCII 설정을 반드시 맞춰야 합니다. 상대 담당자에게 실제 송신 프레임이 Binary인지 ASCII인지 확인하는 것이 좋습니다.
3단계 Enable Online Change 설정을 확인한다
읽기는 되는데 쓰기만 안 되는 상황이라면 Enable Online Change 설정을 확인해야 합니다.
이 설정은 외부 장비가 PLC 디바이스 값을 변경할 수 있는지와 관련된 항목입니다. 읽기만 허용되고 쓰기가 막힌 상태라면 상대 장비는 정상적으로 접속해도 PLC 내부 값은 바뀌지 않을 수 있습니다.
확인할 내용은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| Enable Online Change | 외부 쓰기 허용 여부 확인 |
| 쓰기 대상 디바이스 | 해당 디바이스가 외부 쓰기 가능한 영역인지 확인 |
| PLC 운전 상태 | RUN 중 쓰기 허용 조건 확인 |
| 보안 설정 | 쓰기 제한 또는 보호 설정 여부 확인 |
| 상위 프로그램 권한 | PC/HMI 쪽 쓰기 명령 권한 확인 |
외부 장비에서 PLC 값을 쓴다는 것은 단순 통신보다 위험도가 높은 동작입니다. 따라서 쓰기 허용 설정이 막혀 있으면 읽기는 되지만 쓰기만 안 되는 상황이 발생할 수 있습니다.
4단계 PLC 내부 로직이 값을 덮어쓰는지 확인한다
외부에서 값이 실제로 들어오지만 PLC 로직에서 바로 0으로 덮어쓰는 경우도 있습니다.
예를 들어 상위 PC가 D100에 값을 쓰는데, PLC 프로그램 어딘가에서 매 스캔 MOV K0 D100을 실행하고 있다면 모니터에서는 값이 안 들어오는 것처럼 보입니다. 실제로는 들어왔다가 바로 지워지는 상태입니다.
확인할 항목은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| 해당 주소 검색 | D100, M100 등 쓰기 대상 주소를 전체 검색 |
| MOV 초기화 | 매 스캔 0 또는 기본값을 쓰는 로직 확인 |
| BMOV/FMOV | 넓은 범위 복사로 해당 영역이 덮이는지 확인 |
| 자동 초기화 | 운전 시작, 알람, 리셋 조건에서 초기화되는지 확인 |
| HMI 쓰기 | HMI나 다른 장비가 같은 주소를 쓰는지 확인 |
값이 순간적으로 들어왔다가 사라지는 증상이라면 통신보다 PLC 내부 로직을 먼저 의심해야 합니다.
5단계 쓰기 영역을 따로 분리한다
외부 장비가 쓰는 영역은 PLC 내부에서 사용하는 영역과 분리하는 것이 좋습니다.
예를 들어 PC에서 쓰는 영역을 D1000~D1099로 정하고, PLC 내부 연산 영역은 D2000 이후로 나누는 방식입니다. 외부 입력값은 바로 출력 조건에 사용하지 말고, 검증 후 내부 사용 영역으로 옮기는 구조가 안전합니다.
| 영역 | 용도 |
|---|---|
| 외부 쓰기 영역 | PC, HMI, 상위 장비가 값을 쓰는 영역 |
| 검증 영역 | 범위, 형식, 변경 여부 확인 |
| 내부 사용 영역 | PLC 시퀀스에서 실제 사용하는 값 |
| 결과 응답 영역 | PLC가 상위 장비에 돌려주는 상태값 |
| 에러 영역 | 통신 이상, 범위 오류, 쓰기 오류 표시 |
외부에서 들어온 값이 바로 동작 출력으로 이어지면 위험할 수 있습니다. 쓰기 영역과 실제 제어 영역 사이에는 확인 로직을 두는 것이 좋습니다.
6단계 포트와 프로토콜을 다시 확인한다
값이 안 들어오는 문제는 Open Setting의 포트와 프로토콜 설정에서도 발생할 수 있습니다.
접속은 되었지만 상대 장비가 기대한 프로토콜과 PLC 설정이 다르면 데이터가 정상 반영되지 않습니다. 예를 들어 상대는 MC 프로토콜로 D 영역을 쓰고 있는데 PLC 설정이나 포트 용도가 Socket 수신용으로 구성되어 있다면 의도대로 처리되지 않을 수 있습니다.
확인할 항목은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| TCP/UDP | 상대 장비와 동일한 방식인지 확인 |
| Active/Unpassive | 접속 주체가 맞는지 확인 |
| MC Protocol | 상대가 MC 프로토콜로 쓰는지 확인 |
| Socket 통신 | 사용자 정의 데이터라면 수신 처리 로직 확인 |
| 포트 번호 | 상대가 접속한 포트와 PLC Open Setting 포트 일치 확인 |
| 진수 표기 | 포트 번호 10진수/16진수 혼동 여부 확인 |
연결 상태만 보고 정상이라고 판단하지 말고, 그 연결이 어떤 프로토콜을 처리하는 포트인지 확인해야 합니다.
7단계 방화벽과 보안 정책을 확인한다
PC나 상위 시스템에서 데이터를 보냈다고 해도 실제 패킷이 PLC까지 도달하지 않을 수 있습니다.
특히 회사 노트북, 보안 프로그램, 산업용 방화벽, 네트워크 정책이 적용된 환경에서는 특정 포트나 쓰기 방향 패킷이 차단될 수 있습니다.
확인할 항목은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| PC 방화벽 | 송수신 포트 허용 여부 확인 |
| 보안 프로그램 | 산업용 통신 차단 여부 확인 |
| 네트워크 장비 | 라우터, 방화벽, VLAN 정책 확인 |
| 포트 허용 | 실제 사용하는 TCP/UDP 포트 허용 여부 확인 |
| 테스트 도구 | 포트 연결, 패킷 송수신 여부 확인 |
Ping이 된다고 모든 통신이 허용되는 것은 아닙니다. Ping은 되지만 특정 포트 데이터는 차단될 수 있습니다.
8단계 파라미터 반영과 재기동 여부를 확인한다
미쓰비시 PLC 설정은 화면에서 값을 바꿨다고 바로 적용되는 것이 아닐 수 있습니다. PLC Write를 했는지, 파라미터가 실제 PLC에 반영되었는지, 전원 재투입이나 리셋이 필요한지 확인해야 합니다.
현장에서는 설정을 바꿨는데도 이전 설정으로 동작하는 경우가 있습니다. 이때는 통신 조건을 계속 수정하기보다 적용 절차를 먼저 확인해야 합니다.
| 확인 항목 | 설명 |
|---|---|
| PLC Write | 변경된 파라미터를 PLC에 전송했는지 확인 |
| 전원 재투입 | 전원 OFF/ON 또는 리셋 필요 여부 확인 |
| 모듈 재시작 | 이더넷 모듈 설정 반영 여부 확인 |
| 설정값 재확인 | 온라인 상태에서 실제 설정을 다시 확인 |
| 접속 재시도 | 상대 장비 프로그램도 재접속했는지 확인 |
설정 변경 후에는 PLC뿐 아니라 상대 PC 프로그램도 재접속이 필요할 수 있습니다. 기존 연결이 이전 설정으로 유지되는 경우가 있기 때문입니다.
9단계 상대 장비가 실제로 쓰고 있는지 확인한다
상대방은 보냈다고 하지만 실제로는 읽기만 하고 있거나, 쓰기 명령이 실패하고 있을 수도 있습니다.
PC 프로그램이나 HMI 쪽에서 쓰기 성공 응답을 확인해야 합니다. 단순히 버튼을 눌렀다는 것과 PLC에 쓰기 명령이 성공했다는 것은 다릅니다.
확인할 항목은 다음과 같습니다.
| 확인 항목 | 설명 |
|---|---|
| 쓰기 명령 실행 여부 | 실제 Write 명령이 나가는지 확인 |
| 쓰기 성공 응답 | 상대 프로그램에서 성공 응답을 받았는지 확인 |
| 쓰기 주소 | 상대 프로그램의 대상 주소 확인 |
| 데이터 길이 | 쓰는 워드 수 또는 비트 수 확인 |
| 에러 로그 | 상대 장비의 통신 에러 코드 확인 |
상대 프로그램 로그를 확인하면 PLC 문제인지 PC 프로그램 문제인지 빠르게 나눌 수 있습니다.
현장 체크리스트
값이 안 들어올 때는 다음 순서로 확인하는 것이 좋습니다.
| 순서 | 점검 항목 |
|---|---|
| 1 | 상대가 쓰는 디바이스 종류와 주소 확인 |
| 2 | 주소 진수와 데이터 길이 확인 |
| 3 | Binary/ASCII 데이터 코드 확인 |
| 4 | Enable Online Change 또는 쓰기 허용 설정 확인 |
| 5 | PLC 내부에서 해당 주소를 덮어쓰는 로직 확인 |
| 6 | Open Setting의 포트, TCP/UDP, 프로토콜 확인 |
| 7 | PC 방화벽과 보안 정책 확인 |
| 8 | PLC Write와 전원 재투입 여부 확인 |
| 9 | 상대 프로그램의 쓰기 성공 응답 확인 |
| 10 | 실제 PLC 모니터에서 값 변화 확인 |
이 순서대로 보면 불필요하게 배선이나 전체 네트워크 설정을 다시 건드리는 시간을 줄일 수 있습니다.
값이 안 들어올 때의 판단 기준
이더넷 통신에서 상대는 값을 썼다고 하는데 PLC 주소가 바뀌지 않는다면, 먼저 통신 연결과 쓰기 반영을 분리해서 봐야 합니다.
Ping이 되고 접속 상태가 정상이라면 배선이나 IP 문제보다는 주소, 데이터 형식, 쓰기 권한, 내부 로직 덮어쓰기, 파라미터 반영 문제일 가능성이 높습니다.
읽기는 되는데 쓰기만 안 된다면 Enable Online Change 같은 쓰기 허용 설정을 먼저 확인해야 합니다. 값이 순간적으로 들어왔다가 사라진다면 PLC 내부에서 해당 주소를 초기화하거나 다른 값으로 덮어쓰는 로직을 찾아야 합니다.
또한 상대가 쓰는 주소와 PLC에서 보는 주소가 같은지, D와 M 같은 디바이스 종류가 맞는지, Binary/ASCII 데이터 코드가 맞는지 확인해야 합니다. 포트 번호와 프로토콜이 맞더라도 데이터 형식이나 쓰기 권한이 틀리면 값은 정상 반영되지 않습니다.
시운전은 가능한 원인을 하나씩 제거하는 과정입니다. 통신 연결이 확인되었다면 그다음은 쓰기 권한, 데이터 주소, 데이터 코드, 내부 로직, 설정 반영 여부를 순서대로 확인하는 것이 가장 빠릅니다.