Mitsubishi MC
MC 프로토콜(3E 프레임)로 Mitsubishi MELSEC PLC에 접속합니다. 디바이스 코드, 십진과 십육진 번호 매김, 그리고 읽기 길이.
Mitsubishi MC 드라이버는 MC 프로토콜로 Mitsubishi MELSEC PLC와 이야기하며, TCP 위의 이진 3E 프레임을 씁니다. Q, L, iQ 계열이 말하는 그 프레임입니다. 값의 주소는 익숙한 MELSEC 디바이스 표기로 적습니다. D100이나 M50처럼 디바이스 코드에 번호를 붙인 것입니다. Connector에서 Mitsubishi MC 드라이버 아래에 장치를 추가하십시오. 패널은 이 프로토콜이 쓰는 칸만 보여 줍니다.
연결
| 칸 | 뜻 | 기본값 |
|---|---|---|
| 호스트 | PLC 이더넷 인터페이스의 IP 주소나 호스트 이름. | 비어 있음 |
| 포트 | MC 프로토콜 연결의 TCP 포트이며 1에서 65535까지입니다. 칸이 비어 있으면 5007이 회색으로 보이고 장치는 그 포트로 호출됩니다. 0으로 저장된 장치도 똑같이 보입니다. | 5007 |
장치 머리글은 조립된 endpoint를 보여 줍니다. 예를 들어 mcp://192.168.0.20:5007입니다. 이 드라이버에는 읽기 주기 칸이 없습니다. 그 태그는 1초에 한 번 읽힙니다. PLC 쪽에는 고른 포트에 TCP와 이진 코드의 MC 프로토콜(SLMP) 연결이 있어야 합니다. 어디서 만드는지는 PLC 준비에 있습니다.
PLC 준비
MELSEC CPU는 프로젝트가 만든 연결에서만 MC 프로토콜을 제공하며, Ethernet 포트가 허용하지 않으면 RUN 중의 쓰기를 거부합니다. 설정은 엔지니어링 도구에서 하고 파라미터와 함께 CPU에 씁니다(Online > Write to PLC). CPU는 시작할 때 이것을 읽으므로, 쓴 다음에는 CPU를 리셋하거나 전원을 껐다 켜십시오.
| 설정 | GX Works3(iQ-R, iQ-F) | GX Works2(Q, L) | 설정이 없으면 |
|---|---|---|---|
| 장치의 포트에서 TCP로 받는 MC 연결 | Module Parameter > Ethernet Port > Basic Settings > External Device Configuration: SLMP Connection Module을 표로 끌어다 놓고 Protocol은 TCP, Port No.는 장치의 포트로 설정합니다. | PLC Parameter > Built-in Ethernet Port Setting > Open Setting: Protocol TCP, Open System MC Protocol, Host Station Port No.에 장치의 포트를 넣은 줄을 만듭니다. | CPU가 그 포트의 연결을 거부하고 장치는 오프라인으로 남습니다. |
| Communication Data Code를 이진으로 | Module Parameter > Ethernet Port > Basic Settings: Binary. | PLC Parameter > Built-in Ethernet Port Setting: Binary Code. | CPU가 ASCII 문자로 답하거나 아예 답하지 않으며, 어떤 태그도 읽히지 않습니다. |
| RUN 중 쓰기 허용 | iQ-R: Module Parameter > Ethernet Port > Basic Settings의 Enable/Disable Online Change를 Enable All (SLMP)로. | PLC Parameter > Built-in Ethernet Port Setting의 Enable online change (FTP, MC Protocol) 체크. | CPU는 읽기에는 정상적으로 응답하지만, RUN 중에는 모든 쓰기를 종료 코드 0x0055로 거부합니다. |
Q나 L CPU는 포트 5000부터 5009까지를 스스로 쓰므로, 그 MC 연결에는 장치의 기본값인 5007을 줄 수 없습니다. 5010 같은 다른 포트를 주고 장치의 포트에도 그 번호를 입력하십시오. GX Works2는 Host Station Port No.를 16진수로 보여 줄 수 있으며, 그때 5010은 1392입니다. 데이터 코드는 Ethernet 포트 전체에 하나이므로, 그 포트에서 CPU와 ASCII로 통신하는 다른 프로그램도 이진으로 바꿔야 합니다.
CPU가 포트를 거부하거나, ASCII로 답하거나, RUN 중의 쓰기를 거부하면, 장치 페이지가 어떤 설정인지를 이 단계와 장치가 접속하는 포트와 함께 알림으로 알려 줍니다. 알림은 CPU가 받아들이면 저절로 사라집니다. RUN 중에 거부된 쓰기는 쓰기가 거부된 태그를 밝힙니다. 진단 로그와 에이전트도 같은 단계를 읽습니다.
주소 지정
Mitsubishi 태그의 주소는 태그 신호원 카드의 두 칸으로 적습니다.
| 칸 | 뜻 | 받는 값 | 기본값 |
|---|---|---|---|
| 디바이스 주소 | MELSEC 디바이스 코드와 번호이며 예를 들어 D100입니다. 필수입니다. |
자유 입력 | 비어 있음 |
| 읽기 길이 (바이트, 비우면 자동) | 읽을 때마다 옮길 바이트 수입니다. 비우면 데이터 형식이 읽기 크기를 정합니다. | 1 이상, 또는 비움 | 비어 있음 |
주소는 대소문자를 구별하지 않고 가장 긴 코드가 이깁니다. 그래서 SD100은 스텝 릴레이 S가 아니라 특수 레지스터 100입니다. Mitsubishi가 십육진으로 번호를 매기는 디바이스, 곧 X, Y, B, W, SB, SW, DX, DY에서는 번호가 십육진이고, 그 밖의 모든 디바이스에서는 십진입니다(X1F는 입력 0x1F입니다). 받아들이는 디바이스 코드는 이렇습니다.
| 코드 | 디바이스 | 번호 매김 |
|---|---|---|
M |
내부 릴레이 | 십진 |
SM |
특수 릴레이 | 십진 |
L |
래치 릴레이 | 십진 |
F |
어넌시에이터 | 십진 |
V |
에지 릴레이 | 십진 |
S |
스텝 릴레이 | 십진 |
X |
입력 | 십육진 |
Y |
출력 | 십육진 |
B |
링크 릴레이 | 십육진 |
SB |
특수 링크 릴레이 | 십육진 |
DX |
다이렉트 입력 | 십육진 |
DY |
다이렉트 출력 | 십육진 |
D |
데이터 레지스터 | 십진 |
SD |
특수 레지스터 | 십진 |
R |
파일 레지스터 | 십진 |
ZR |
확장 파일 레지스터 | 십진 |
W |
링크 레지스터 | 십육진 |
SW |
특수 링크 레지스터 | 십육진 |
Z |
인덱스 레지스터 | 십진 |
TC / TS / TN |
타이머 코일 / 접점 / 현재값 | 십진 |
SC / SS / SN |
적산 타이머 코일 / 접점 / 현재값 | 십진 |
CC / CS / CN |
카운터 코일 / 접점 / 현재값 | 십진 |
바탕에 있는 MC 라이브러리는 코드 TT, TM, CT, CM, A도 받아들입니다. 신호원 카드의 읽기 전용 신호원 주소 (버스) 줄은 편집하는 대로 조립된 주소를 보여 줍니다.
데이터 형식
데이터 형식 선택 목록은 드라이버가 다룰 수 있는 네 형식을 내놓습니다.
| 데이터 형식 | 자동 읽기 길이 | 비고 |
|---|---|---|
| Boolean | 1바이트 | 비트 디바이스에서는 이름으로 부른 그 릴레이 하나, 워드 디바이스에서는 0이 아닌 모든 워드 |
| Int32 | 4바이트 | 이어지는 16비트 워드 둘이며 예를 들어 D100과 D101입니다 |
| Float | 4바이트 | IEEE 단정밀도를 담은, 이어지는 워드 둘 |
| String | 16바이트 | 읽기 버퍼의 첫 NUL까지의 글자 |
워드 데이터는 MELSEC 고유의 리틀 엔디언 순서로 들어오고 저절로 해독됩니다. 바이트 순서 선택은 없습니다. 32비트 값은 이어지는 워드 디바이스 둘에 걸칩니다. 16자보다 긴 문자열이라면 읽기 길이를 저장된 글자를 담을 만큼 올리십시오. 읽기 길이는 바이트 수이고 프로토콜은 16비트 워드 단위로 옮기므로, 홀수 길이는 마지막 바이트를 담는 워드까지 올림합니다.
비트 디바이스, 곧 드라이버가 한 번에 릴레이 하나씩 읽는 디바이스는 X, Y, M, L, F, V, B, S, TS, TC, SS, SC, CS, CC, SB, DX, DY입니다. 거기에 놓인 부울 태그는 입력한 그 주소에 대해서만 답하고 다른 무엇에 대해서도 답하지 않습니다. 그 밖의 코드는 모두 워드 디바이스이며, 타이머나 카운터의 현재값(TN, SN, CN)과 링크 레지스터(W, SW)도 여기에 듭니다. 거기서는 워드 전체가 판단하므로 0x0100을 담은 D100은 true로 읽힙니다.
PLC가 거부한 읽기(범위의 끝을 넘어선 주소 등)는 그 태그를 값 없이 남기고, 오류가 종료 코드와 매뉴얼에서의 뜻을 알려 줍니다. 예를 들어 end code 0xC056 (the request goes past the last address of the device)입니다. 장치의 다른 태그는 계속 읽습니다.
쓰기
접근이 읽기와 쓰기이거나 쓰기 전용인 태그는 읽기가 쓰는 것과 같은 디바이스 주소에 쓸 수 있습니다. 비트 디바이스에 대한 부울 쓰기는 이름으로 부른 릴레이 하나를 세우거나 지우며 그 이웃은 건드리지 않습니다. 그 밖의 것은 모두 온전한 16비트 워드로 씁니다. Int32와 Float은 워드 둘, 워드 디바이스 위의 부울은 워드 하나, 문자열은 태그의 읽기 길이 전체이며 앞에는 글자의 UTF-8 바이트가, 그 뒤에는 0이 놓이고 마지막 워드까지 올림합니다. 그래서 긴 글자 위에 짧은 글자를 쓰면 값 전체가 바뀌고 예전 것은 하나도 남지 않습니다. 선언된 길이에 들어가지 않는 글자는 크기에 맞게 잘리는 대신, 진단 로그에 길이가 적힌 채 거부됩니다. 새 태그는 읽기 전용으로 시작합니다.
PLC가 거부한 쓰기는 거부로 돌아오고, 같은 방식으로 종료 코드와 그 뜻을 알려 줍니다. CPU가 RUN 중이어서 거부된 쓰기(종료 코드 0x0055)는 그것을 허용하는 설정과 함께 장치 페이지에도 나옵니다(PLC 준비 참고).
장치 검색
이 드라이버의 MC 프로토콜에는 브로드캐스트 검색이 없으므로 Connector는 장치 검색 단추를 보여 주지 않습니다. 장치와 주소는 손으로 추가하십시오.
알아 두면 좋은 것
- 이 드라이버의 모든 태그는 1초 주기로 고정되어 읽힙니다. 보통의 읽기 주기 칸은 나오지 않습니다.
- 이 드라이버는 이진 3E 프레임만 쓰고 ASCII는 쓰지 않습니다. ASCII 코드로 설정된 연결에서는 아무것도 읽지 못합니다(PLC 준비 참고).
- 닿지 않는 PLC는 시작할 때 아무 비용도 들이지 않습니다. 장치는 배경에서 계속 다시 시도하고, 연결이 이루어질 때까지 그 태그는 품질이 나쁜 것으로 읽힙니다.
- TCP 연결이 열리기까지 5초, 각 요청의 응답을 기다리는 데 10초가 주어집니다. 연결을 받아들이고도 제때 답하지 않는 PLC는 닿지 않는 PLC처럼 연결을 끊고 다시 시도합니다. 그 오류는 포트와 흔한 두 가지 이유를 밝힙니다. 포트가 ASCII 코드로 설정된 Q나 L CPU는 이진 요청에 아무것도 답하지 않으며, 그 포트에서 MC 프로토콜을 쓰지 않는 장비도 답하지 않습니다.