MC 프로토콜(SLMP) 프레임 해석기
MC 프로토콜(SLMP) 3E·4E 프레임을 HEX 나 ASCII 로 붙여 넣으면 머리 칸·명령·디바이스·점 수·값·종료 코드를 풀어 줍니다. 요청 프레임 만들기도 함께.
자주 묻는 것
이진과 ASCII 는 어떻게 가리나요?
HEX 로 읽혀서 첫 2바이트가 50 00(3E 요청)·D0 00(3E 응답)·54 00(4E 요청)·D4 00(4E 응답)이면 이진으로, 글자가 5000·D000·5400·D400 으로 시작하면 ASCII 로 봅니다. «500000FF…» 처럼 둘 다 될 수 있으면 머리의 데이터 길이 칸이 실제 뒤따르는 길이와 맞는 쪽을 고릅니다. ASCII 프레임을 HEX 로 적은 것(35 30 30 30 …)도 ASCII 로 풉니다.
왜 응답에 디바이스 번호가 없나요?
MC 프로토콜의 응답은 종료 코드 뒤에 값만 싣습니다. 어느 디바이스의 값인지는 짝 요청을 봐야 알 수 있어서, «짝 요청» 칸에 요청을 넣으면 D100·D101 … 처럼 붙여 보여 줍니다. 없으면 16비트 워드로만 나눠 보여 줍니다.
이진에서 03FF 가 FF 03 으로 보입니다
이진 코드는 숫자를 작은 자리 바이트부터 보냅니다(리틀 엔디언). I/O 번호 03FF 는 FF 03, 길이 12 는 0C 00, 명령 0401 은 01 04 입니다. ASCII 코드는 16진 글자를 큰 자리부터 쓰므로 «03FF» 그대로입니다.
«PortDock PLC Simulator 가 답할 종료 코드» 는 무엇인가요?
요청을 PortDock PLC Simulator 의 처리 규칙(점 수 한도·디바이스 코드·데이터 길이)으로 따져 본 결과입니다. 디바이스 크기(점 수)를 넘는 번호(C056)와 «자기 국 요청만 받기»(C05F), 모니터 등록 전의 모니터 실행(C05D, 0.6.0 부터)은 앱 상태에 따라 달라서 여기서는 따지지 않습니다. 실제 PLC 는 기종·설정에 따라 다르게 답할 수 있습니다.
종료 코드 (이 해석기가 설명하는 것)
| 코드 | 이름 | PortDock PLC Simulator 가 이 코드로 답하는 경우 |
|---|---|---|
| C050 | ASCII 변환 불가 | ASCII 코드에 16진이 아닌 글자, 10진 디바이스 번호에 A~F |
| C051 | 점 수 범위 밖(워드) | 일괄 읽기·쓰기 워드 점 수가 0 이거나 960 초과 |
| C052 | 점 수 범위 밖(비트) | 일괄 읽기·쓰기 비트 점 수가 0 이거나 이진 7168·ASCII 3584 초과 |
| C053 | 랜덤 점 수 범위 밖(비트) | 랜덤 쓰기 비트 점 수가 0 이거나 188(서브 0003 은 94) 초과 |
| C054 | 랜덤 점 수 범위 밖(워드) | 랜덤 읽기·쓰기 워드·더블워드 점 수가 0 이거나 한도 초과 |
| C056 | 주소 범위 밖 | 디바이스 크기(점 수)를 넘는 번호 |
| C057 | 요청 길이 불일치 | 머리의 요청 데이터 길이가 실제 뒤따르는 길이와 다름 |
| C059 | 명령·서브 명령 틀림 | 구현하지 않은 명령·서브 명령 |
| C05B | 디바이스 지정 틀림 | 모르는 디바이스 코드, 워드 디바이스를 비트 단위로 |
| C05C | 요청 데이터 틀림 | 루프백 데이터 수가 1~960 밖, 원격 조작의 모드 값이 틀림 |
| C05D | 모니터 등록 전 실행 | 모니터 등록(0801) 전에 모니터 실행(0802) |
| C05F | 접근 대상 틀림 | 다른 국 요청(«자기 국 요청만 받기» 켬) |
| C060 | 비트 값 틀림 | 비트 쓰기 값이 0·1 이 아님 |
| C061 | 데이터 길이 불일치 | 명령 데이터가 점 수보다 짧거나 김 |
이름은 MELSEC iQ-R Ethernet User's Manual (Application) SH-081257ENG 3.5 «List of Error Codes» 의 설명을 줄인 것입니다. 어느 조건에 어느 코드를 쓸지는 PortDock PLC Simulator 가 고른 것이며, 실제 PLC·모듈과 다를 수 있습니다.
디바이스 코드
| 디바이스 | 이름 | 이진 코드 | 번호 | 종류 |
|---|---|---|---|---|
| X | 입력 | 9C | 16진 | 비트 |
| Y | 출력 | 9D | 16진 | 비트 |
| M | 내부 릴레이 | 90 | 10진 | 비트 |
| L | 래치 릴레이 | 92 | 10진 | 비트 |
| F | 어넌시에이터 | 93 | 10진 | 비트 |
| B | 링크 릴레이 | A0 | 16진 | 비트 |
| SM | 특수 릴레이 | 91 | 10진 | 비트 |
| D | 데이터 레지스터 | A8 | 10진 | 워드 |
| W | 링크 레지스터 | B4 | 16진 | 워드 |
| R | 파일 레지스터 | AF | 10진 | 워드 |
| ZR | 파일 레지스터(연번) | B0 | 16진 | 워드 |
| SD | 특수 레지스터 | A9 | 10진 | 워드 |
| TS | 타이머 접점 | C1 | 10진 | 비트 |
| TC | 타이머 코일 | C0 | 10진 | 비트 |
| TN | 타이머 현재값 | C2 | 10진 | 워드 |
| CS | 카운터 접점 | C4 | 10진 | 비트 |
| CC | 카운터 코일 | C3 | 10진 | 비트 |
| CN | 카운터 현재값 | C5 | 10진 | 워드 |
근거
- SLMP Reference Manual SH(NA)-080956ENG — 4장 메시지 형식(머리·길이·종료 코드·오류 정보), 5.2 디바이스 코드와 0401·1401·0403·1402, 5.9 루프백
- MELSEC Communication Protocol Reference Manual SH-080008 — 5장 이더넷 메시지(3E·4E 프레임)
- MELSEC iQ-R Ethernet User's Manual (Application) SH-081257ENG — 3.5 List of Error Codes — C050~C061 의 뜻
미쓰비시 전기의 공개 매뉴얼(SLMP·MC 프로토콜)을 기준으로 만든 해석기이며, 제휴 관계가 아닙니다.
칸마다 풀이는 가이드 MC 프로토콜 3E 이진 프레임 읽는 법, 종료 코드는 MC 종료 코드 확인 순서 를 보세요.
PLC 없이 자기 프로그램의 통신을 시험하려면 PortDock PLC Simulator — PLC 없이 MC 프로토콜 통신 시험하기.
Wireshark·pktmon 으로 뜬 캡처 파일을 통째로 보려면(요청·응답 짝, 응답 시간, 무응답) 산업 통신 pcap 해석기 를 쓰세요. 표의 행을 누르면 이 해석기로 그 프레임을 넘겨 줍니다.