사용자 프로토콜은 Modbus를 쓰지 않는 장치(CO2 센서, 바코드ㆍQR 리더, ASCII 명령으로 통신하는 인버터ㆍ온도 조절기, 숫자 표시기 등)와 장비가 정해진 바이트 모양으로 데이터를 주고받게 하는 기능입니다(V1.3.0부터). 주고받을 바이트의 모양과 보내는 때를 사용자 프로토콜 창에서 정하면, 장비가 프로그램과 함께 그 통신을 실행합니다. 래더에서 PUTㆍGET으로 바이트를 하나씩 다루지 않아도 되며, 받은 값은 체크섬까지 맞은 뒤에 지정한 메모리에 들어갑니다.
UPTRIG 펑션으로 원하는 순간에 거래를 한 번 실행할 수 있습니다. 결과는 상태 칸과 완료 비트로 확인할 수 있습니다.사용자 프로토콜은 장비의 시리얼 채널(통신포트1~통신포트3)에 정합니다. 사용할 수 있는 통신포트 수는 기종을 따릅니다.
| 통신포트 | 기종 |
|---|---|
| 통신포트1 | MPS-8A4R(T)-S · MPS-8A8R(T)-S · MPS-16A8R(T)-R2 · MPS-16A16R(T) |
| 통신포트1~통신포트3 | MPS-8A8R · MPS-16A8R(T) · MPS-16A8R8T · MPA 시리즈 |
통신포트에 연결되는 단자(RS-232ㆍRS-485ㆍUART)와 커넥터 그림은 제품 페이지에서 확인해주시기 바랍니다: MPS-8A4R-S · MPS-8A4T-S · MPS-8A8R-S · MPS-8A8T-S · MPS-16A16R · MPS-8A8R · MPS-16A8R · MPS-16A8R8T · MPA Series. MPA 시리즈는 통신포트1이 RS-232, 통신포트2가 RS-485, 통신포트3이 UART입니다.
7-E-1)도 사용할 수 있습니다.FINI를 실행하면 통신포트3(시리얼 3)이 꺼집니다(7세그먼트 표시 참고). 7세그먼트와 함께 쓸 때는 사용자 프로토콜을 통신포트1ㆍ통신포트2에 정해주시기 바랍니다.사용자 프로토콜은 통신포트마다 프레임과 거래로 정합니다.
| 통신 모양 | 시작 | 동작 | 쓰임 예 |
|---|---|---|---|
| 묻고 받기 | 주기ㆍ래더 UPTRIGㆍ값이 바뀔 때 | 보낼 프레임을 보내고 받을 프레임을 기다립니다. | CO2 센서, 인버터 상태 읽기, 온도 조절기 |
| 받기만 | 늘 듣기 | 맞는 프레임이 오면 값을 넣습니다. 보내지 않습니다. | 바코드ㆍQR 리더, 연속 출력 저울 |
| 받으면 답하기 | 늘 듣기 | 맞는 프레임이 오면 정한 답 프레임을 바로 보냅니다. | PC 프로그램, Modbus가 없는 HMI |
| 보내기만 | 주기ㆍ래더 UPTRIGㆍ값이 바뀔 때 | 보낼 프레임을 보내고 응답을 기다리지 않습니다. | 숫자 표시기, 프린터, 설정 명령 |
장비에서는 다음과 같이 실행됩니다.
사용자 프로토콜을 쓰는 시리얼 채널은 모드가 User Protocol이고 이 채널을 다운로드에 사용이 꺼져 있어야 합니다.
User Protocol로 골라도 되고, 그대로 두어도 됩니다. 사용자 프로토콜 창에서 확인을 누르면 Normal 모드였던 포트는 User Protocol로 바뀌고, 그 포트의 다운로드 사용이 꺼집니다.Normal이 아닌 다른 모드(예: Modbus RTU Slave)로 정한 포트는 저절로 바꾸지 않습니다. 사용자 프로토콜 창 위에 표시되는 사용자 프로토콜로 바꾸기를 눌러야 바뀝니다.Normal 모드로 돌아갑니다.UPTRIG 번호 칸에서 사용자 프로토콜 열기를 눌러도 열립니다(아래).창은 열어 둔 채 래더를 편집할 수 있습니다. 통신포트에 정의가 없으면 + 이 포트에 만들기와 본보기 목록이 표시됩니다.
| 본보기 | 들어가는 내용 |
|---|---|
| CO2·가스 센서 — 1 초마다 묻기 | 묻고 받기(1초 주기) 거래와 영점 명령을 UPTRIG 3으로 보내는 보내기만 거래. 2진 값 D100, 2의 보수 합 체크섬 |
| CO2·가스 센서 — 받기만 (센서 통신 예제 · 센서가 혼자 보낼 때) | 같은 CO2 응답 프레임을 요청 없이 늘 듣는 받기만 거래 |
| 바코드·QR 리더 | 받기만 거래. 끝 문자 CR LF까지의 글자열을 D200부터 넣고 글자 수를 D190에 넣음 |
| 인버터·온도 조절기 (ASCII 국번 명령) | 묻고 받기(0.5초 주기). ASCII 10진ㆍ16진 값, 합 체크섬(ASCII 16진 2자리), NAK 오류 응답 |
본보기의 이름과 칸(D100ㆍM100 등)은 넣은 뒤 자유롭게 고칠 수 있습니다. 정의가 있는 포트에도 + 본보기에서 불러오기…로 더할 수 있으며, 이름이 겹치면 뒤에 번호가 붙습니다.
9600 · 8-N-1)이 함께 표시됩니다.| 키 | 동작 |
|---|---|
Ctrl+Enter | 확인 |
Esc | 창 닫기. 고친 내용이 있으면 고친 내용을 버릴까요?를 묻습니다. |
Ctrl+Z / Ctrl+Y | 창 안에서 고친 내용을 한 단계씩 되돌리거나 다시 합니다. 되돌릴 것이 없으면 프로그램 전체의 실행취소ㆍ다시 실행으로 넘어갑니다. |
Ctrl+S | 프로젝트 저장. 확인 전에 창에서 고친 내용은 저장되지 않습니다. |
Ctrl+T / Ctrl+M | 다운로드 / 모니터링 |
← → · Alt+← Alt+→ · Delete · Insert | 칩 띠에서 칩 사이 이동 · 칩 옮기기 · 칩 지우기 · 칩 더하기 |
Ctrl+Z는 그 칸의 입력을 되돌립니다. 같은 칸에 이어서 입력한 글자는 한 단계로 되돌아갑니다.Ctrl+Z)로 확인 전 정의로 되돌릴 수 있습니다.프레임은 바이트 순서대로 놓인 칩(필드)으로 만듭니다. 칩 아래에는 바이트 자리(1번째부터)가 표시되고, 체크섬 칩을 고르면 체크섬이 계산하는 범위가 띠에 칠해집니다. 칩 띠 끝의 +를 눌러 필드 종류를 고르면 칩이 더해집니다.
| 필드 | 보낼 때 | 받을 때 |
|---|---|---|
| 고정 | 적은 바이트를 그대로 보냅니다. | 같은 바이트여야 이 프레임으로 봅니다(칩에 같아야 함으로 표시). |
| 값 | PLC 칸의 값을 정한 형식의 바이트로 바꿔 보냅니다. | 바이트를 값으로 바꿔 PLC 칸에 넣습니다. |
| 글자열 | PLC 칸의 글자를 보냅니다. | 받은 글자를 PLC 칸에 넣고, 글자 수를 따로 넣을 수 있습니다. |
| 건너뜀 | 채움 바이트를 정한 수만큼 보냅니다. | 그 자리의 바이트는 보지 않습니다. |
| 길이 | 정한 필드들의 바이트 수를 넣어 보냅니다. | 실제 바이트 수와 맞는지 확인하고, 길이가 바뀌는 프레임의 끝을 정합니다. |
| 체크섬 | 계산해 넣습니다. | 계산해 맞춰 봅니다(칩에 맞춰 봄으로 표시). 틀리면 값을 넣지 않습니다. |
바이트 칸에는 16진, 큰따옴표 글자, 제어 문자 이름을 빈칸으로 띄어 적어주시기 바랍니다. 아래에 실제 바이트와 바이트 수가 표시됩니다.
| 적는 법 | 예 | 바이트 |
|---|---|---|
| 16진 두 자리 | FF 01 86 | FF 01 86 |
| 큰따옴표 글자(ASCII) | “01R” | 30 31 52 |
제어 문자 이름(NUL~USㆍSPㆍDEL) | STX ETX CR LF ACK NAK | 02 03 0D 0A 06 15 |
반복(*N, 1~255) | 00*5 | 00 00 00 00 00 |
한 칩에는 255바이트까지 적을 수 있습니다. ASCII 밖의 글자는 16진으로 적어야 합니다. FF는 16진 바이트 0xFF로 읽습니다(폼 피드 제어 문자 이름으로 쓰지 않습니다).
PLC 주소에 값을 주고받을 칸(예: D100)이나 심볼 이름을 적고 형식을 골라주시기 바랍니다.
| 형식 | 설정 | 예 |
|---|---|---|
| 2진 | 바이트 수 1ㆍ2ㆍ4, 순서(큰 끝 먼저ㆍ작은 끝 먼저), 부호(없음ㆍ있음) | 2바이트 큰 끝 먼저: 01 9A ↔ 410 |
| ASCII 10진 | 자릿수(1~10, 비우면 가변), 채움(0 채움ㆍ공백), 부호(없음ㆍ음수만 -ㆍ늘 +/-), 소수 자리(0~9), 소수점(안 찍음ㆍ찍음) | 4자리 0 채움: 100 ↔ “0100” · 소수 자리 2ㆍ찍음: 1234 ↔ “12.34” |
| ASCII 16진 | 자릿수, 보낼 때 글자(대문자ㆍ소문자) | 4자리: 6699 ↔ “1A2B” |
| BCD | 바이트 수 1ㆍ2ㆍ4, 순서 | 2바이트: 1234 ↔ 12 34 |
| REAL | 순서(4바이트 실수) | 실수 칸(R 등)과 주고받습니다. |
+ㆍ-, 정한 자리보다 짧은 소수(“12.3” → 1230)는 읽습니다. 숫자가 아닌 글자나 정한 소수 자리보다 긴 0이 아닌 소수(“12.345”)가 오면 값을 넣지 않고 상태 칸이 값 바꾸기 실패(F4)가 됩니다. 가변 자릿수는 받을 때 1~12글자입니다.0x7F보다 큰 바이트는 맨 위 비트가 사라집니다. 7 데이터 비트 포트에서 2진 값ㆍ0x7F보다 큰 고정 바이트를 쓰면 칩이 붉게 표시됩니다.D200의 아래 바이트 = 첫 글자).CR LF)가 나올 때까지 최대 N글자를 받습니다. 늘 N 글자는 언제나 N글자입니다. N은 1~255입니다.형식(2진 1바이트ㆍ2진 2바이트ㆍASCII 10진ㆍASCII 16진)과 세는 범위(필드 몇 번부터 몇 번까지)를 정해주시기 바랍니다. 보낼 때는 그 범위의 바이트 수를 넣고, 받을 때는 실제 바이트 수와 맞는지 확인합니다. 장치가 바이트 수에 다른 수를 더해 보낸다면 보정 (더할 수)에 그 수를 적어주시기 바랍니다.
| 종류 | 계산 |
|---|---|
| 합 (8 비트) · 합 (16 비트) | 범위의 바이트를 더한 값의 아래 8비트ㆍ16비트 |
| 2의 보수 합 | 바이트 합의 2의 보수(합을 0x100에서 뺀 값) |
| 1의 보수 합 | 바이트 합의 비트를 뒤집은 값 |
| XOR (BCC) | 범위의 바이트를 XOR한 값 |
| CRC-16 | 아래 갈래 중 하나 또는 직접 정한 값 |
| LRC | 범위의 ASCII 16진 글자를 두 글자씩 바이트로 바꿔 더한 합의 2의 보수(Modbus ASCII 방식) |
CRC-16은 장치마다 계산 갈래가 다릅니다. CRC-16 갈래를 고르면 다항식ㆍ처음 값ㆍ입력 반사ㆍ출력 반사ㆍ끝 XOR 다섯 칸이 채워지고, 문자열 “123456789”로 계산한 확인값이 표시됩니다. 확인값이 장치 설명서의 check 값과 같은 갈래를 골라주시기 바랍니다. 다섯 칸 중 하나를 고치면 직접 정함이 됩니다.
| 갈래 | 다항식 | 처음 값 | 반사(입력ㆍ출력) | 끝 XOR | 확인값 |
|---|---|---|---|---|---|
| MODBUS | 8005 | FFFF | 예 | 0000 | 4B37 |
| CCITT-FALSE | 1021 | FFFF | 아니오 | 0000 | 29B1 |
| XMODEM | 1021 | 0000 | 아니오 | 0000 | 31C3 |
| KERMIT | 1021 | 0000 | 예 | 0000 | 2189 |
| X-25 | 1021 | FFFF | 예 | FFFF | 906E |
| ARC | 8005 | 0000 | 예 | 0000 | BB3D |
| USB | 8005 | FFFF | 예 | FFFF | B4C8 |
| DNP | 3D65 | 0000 | 예 | FFFF | EA82 |
넣는 모양의 기본값은 MODBUS만 작은 끝 먼저이고, 나머지 갈래는 모두 큰 끝 먼저입니다.
받는 프레임이 어디서 끝나는지는 프레임 모양에서 정해지며, 칩 띠 위에 끝 알기: …로 표시됩니다.
| 표시 | 끝을 정하는 것 |
|---|---|
| 끝 알기: 고정 길이 N | 모든 필드의 길이가 정해진 프레임 |
| 끝 알기: 길이 필드(필드 N) | 앞에 있는 길이 필드의 값 |
| 끝 알기: 끝 문자 … | 길이가 바뀌는 필드 바로 뒤의 고정 바이트(예: CR LF, ETX) |
| 끝 알기: N ms 조용하면 | 프레임의 끝 조용한 시간 (ms) 동안 바이트가 오지 않음 |
| 끝 알기: 알 수 없음 | 끝을 정할 수 없어 고칠 곳으로 표시됩니다. |
끝 조용한 시간 (ms)은 프레임을 고르면 오른쪽 속성에 표시되며, 20~10000 ms로 정할 수 있습니다(비우면 쓰지 않음). 길이를 알 수 없는 마지막 필드는 이 시간만큼 조용하면 끝난 것으로 봅니다. 받다 만 바이트가 남은 채 회선이 100 ms 이상 조용할 때도 그 바이트를 앞에서부터 버립니다.
창 아래 미리보기에는 보낼 프레임의 바이트가 16진으로 표시됩니다(값 칸은 0, 길이와 체크섬은 계산한 값). 그 아래 입력칸에 장치가 보낸 바이트를 한 줄에 하나씩 붙여 넣으면 받을 프레임으로 해석해 필드마다 값과 결과를 표시합니다. 16진(FF 86 01)과 STX “01” ETX 같은 고정 바이트 표기를 모두 쓸 수 있습니다.
| 결과 | 뜻 |
|---|---|
| ✓ … | 고정 바이트ㆍ길이ㆍ체크섬이 모두 맞습니다. ✓ 뒤에 필드마다 들어갈 값이 표시됩니다(그림 12). 값 필드가 없는 프레임은 이 프레임이 맞습니다로 표시됩니다. |
| … 덜 왔습니다 | 프레임이 끝나려면 바이트가 더 와야 합니다. |
| ✕ … 번째 바이트가 정한 고정 바이트와 다릅니다 | 이 프레임이 아닙니다. |
| ✕ 체크섬 — 기대 … | 체크섬이 틀립니다. 계산한 값이 함께 표시됩니다. |
| ✕ … 값으로 바꿀 수 없습니다 | 숫자가 아니거나 칸에 들어가지 않습니다. |
장치 설명서에 체크섬 방식이 없거나 확인값이 맞지 않을 때 사용합니다. 장치가 실제로 보낸 프레임을 둘 이상 붙여 넣어주시기 바랍니다. 체크섬이 틀리면 체크섬 종류ㆍCRC-16 갈래ㆍ넣는 모양ㆍ범위 시작을 바꿔 가며 모든 표본에 맞는 조합을 저절로 찾아, 맞는 갈래 찾기 줄에 후보마다 «…» 로 바꾸기 단추를 표시합니다. 표본이 하나면 우연히 맞는 조합이 있을 수 있으므로 «…» 로 바꾸기는 표본이 둘 이상일 때만 켜집니다. 바꾼 내용은 확인을 눌러야 정의에 들어갑니다.
거래 목록에서 거래를 고르면 가운데 위에 거래 설정이, 그 아래에 보낼 프레임과 받을 프레임의 칩 띠가 표시됩니다.
| 항목 | 기본값 | 설명 |
|---|---|---|
| 이름 | 통신 모양 이름 | 거래의 이름입니다. 포트 안에서 겹치지 않아야 합니다. |
| 통신 모양 | — | 묻고 받기ㆍ받기만ㆍ받으면 답하기ㆍ보내기만 |
| 시작 | 주기 | 묻고 받기ㆍ보내기만: 주기ㆍ래더 UPTRIG 번호ㆍ값이 바뀔 때 · 받기만ㆍ받으면 답하기: 늘 듣기 |
| 주기 (ms) | 1000 | 10 ms~1시간. 지난번 시작부터 셉니다. |
| 번호 | 1 | 래더 UPTRIG의 번호(1~255) |
| 볼 칸 · 칸 수 | — | 값이 바뀔 때: 볼 칸부터 칸 수(1~32)만큼의 값이 바뀌면 보냅니다. 장비가 시작할 때도 한 번 보냅니다. |
| 응답 대기 (ms) | 200 | 묻고 받기에서 응답을 기다리는 시간(20~60000 ms) |
| 다시 시도 | 2 | 응답이 없거나 틀린 응답만 왔을 때 다시 보내는 횟수(0~10) |
| 상태 칸 | 비움(안 씀) | 거래 결과를 받을 워드 주소(아래) |
| 완료 비트 | 비움(안 씀) | 거래가 끝나면 한 스캔 동안 켜지는 비트 주소 |
| 받은 수 칸 | 비움(안 씀) | 받기만ㆍ받으면 답하기: 맞는 프레임을 받을 때마다 1씩 늘어나는 워드 주소(65535 다음은 0) |
상태 칸은 워드 하나로, 그 거래의 마지막 결과를 나타냅니다.
| 값(16진) | 화면 표시 | 뜻 |
|---|---|---|
0000 | 아직 한 번도 성공 못 함 | 장비가 켜진 뒤 이 거래가 아직 한 번도 끝나지 않았습니다. 이 정의가 장비 프로그램에 없을 때도 0입니다. |
0001 | 마지막 거래 성공 | 마지막 거래가 오류 없이 끝났습니다. |
F000 | 응답 없음(F0) | 응답이 오지 않았습니다. |
F100 | 체크섬 틀림(F1) | 체크섬이 맞지 않는 응답이 왔습니다. |
F200 | 모양이 다른 바이트만 왔습니다(F2) | 받을 프레임과 모양이 다른 바이트만 왔습니다. |
F300 | 회선 바쁨(F3) | 송신이 진행되지 않아 보내지 못했습니다. |
F400 | 값 바꾸기 실패(F4) | 받은 값이 숫자가 아니거나 칸에 들어가지 않습니다. 보낼 값을 프레임으로 만들 수 없을 때도 F4입니다. |
F500 | 수신 버퍼 넘침(F5) | 응답을 기다리는 동안 수신 버퍼가 넘쳤습니다. |
F600 | 오류 응답(F6) | 오류 응답으로 정한 프레임(NAK 등)을 받았습니다. |
포트마다 정하는 설정으로, 새 포트는 켜져 있습니다.
거래의 시작을 래더 UPTRIG 번호로 정하면, 래더의 UPTRIG 펑션이 그 거래를 실행합니다. 버튼을 눌렀을 때만 설정 명령을 보내거나, 필요할 때만 값을 읽을 때 사용합니다.
UPTRIG 펑션을 넣고 같은 번호를 적어주시기 바랍니다. 펑션 판 Serialport 분류의 UPTRIG: Start User Protocol Trigger를 고르거나, 펑션 삽입 창(Ctrl+E)에 UPTRIG 3처럼 입력해 넣을 수 있습니다.
UPTRIG의 번호 칸을 고치면 사용자 프로토콜에 정한 트리거 번호가 통신포트ㆍ거래 이름과 함께 표시되며, 눌러서 고를 수 있습니다. 같은 자리의 사용자 프로토콜 열기를 누르면 사용자 프로토콜 창이 열립니다.
UPTRIG의 입력이 꺼짐에서 켜짐으로 바뀔 때마다 그 번호의 거래를 한 번 실행합니다. 입력을 켜 둔 채로는 다시 실행하지 않습니다.UPTRIG의 번호는 1~255의 상수이고 사용자 프로토콜에 그 번호로 시작하는 거래가 있어야 합니다. 아니면 칸이 붉게 표시되고 컴파일되지 않습니다. 반대로 트리거 번호를 정한 거래에 맞는 UPTRIG가 래더에 없으면 «트리거 번호 3 을(를) 부르는 UPTRIG 칸이 없어 이 거래는 시작되지 않습니다» 경고가 표시됩니다.사용자 프로토콜 창은 고칠 곳을 칩ㆍ칸을 붉게 하거나 주황색으로 표시하고, 창 아래 줄에 첫 문장을 표시합니다. 문장을 누르면 그 자리로 이동하며, N 건 더를 누르면 모든 문장이 펼쳐집니다. 붉은 고칠 곳이 있으면 고칠 곳 N — 고치기 전에는 프로그램을 만들지 않습니다가 표시되고 다운로드할 수 없습니다. 고칠 곳이 있어도 확인은 눌러지므로 쓰던 정의를 잃지 않습니다.
래더와 다른 기능에서는 다음 경우를 검사합니다.
| 경우 | 표시 |
|---|---|
같은 통신포트에 PUTㆍGETㆍPUT_LENㆍGET_LEN을 씀 | 채널이 상수면 붉은 칸, 변수면 경고. 같은 수신 버퍼를 둘이 읽으면 주고받는 바이트가 섞입니다. |
| 래더가 사용자 프로토콜이 받는 칸에 씀 | 경고. 래더가 쓴 값은 다음에 받을 때 덮어씁니다. |
| 받는 칸끼리 겹침 · 상태ㆍ완료ㆍ받은 수 칸이 받는 칸과 겹침 | 경고 |
| Modbus 장비 표나 장비 시계(RTC) 블록이 쓰는 칸과 겹침 | 경고 |
포트 모드가 User Protocol이 아님 · 모드는 User Protocol인데 정의가 없음 · 다운로드 사용이 켜짐 | 오류. 사용자 프로토콜 창에서 확인을 누르면 대부분 함께 고쳐집니다. |
| 장비의 램이 모자람 · 프로그램이 플래시를 넘침 | 오류. 포트ㆍ거래ㆍ프레임이나 메모리 영역 크기를 줄여야 합니다. |
| 프레임이 255바이트를 넘거나 필드가 32개를 넘음 | 오류 |
| 송수신 버퍼가 프레임보다 작음 | 오류. 설정 → 데이터 메모리의 SERIAL 칸에서 버퍼를 늘리거나 프레임을 줄여야 합니다. |
사용자 프로토콜이 쓰는 칸은 찾기ㆍ모두 바꾸기ㆍ인스펙터의 쓰인 자리ㆍ사용한 데이터에도 표시됩니다. 모두 바꾸기로 주소를 바꾸면 사용자 프로토콜의 칸도 함께 바뀝니다.
시뮬레이션 중에는 각 통신포트의 사용자 프로토콜에 가상 상대가 붙고, 창에 시뮬 가상 상대 보기가 더해집니다. 장치 없이 래더의 동작과 상태 칸ㆍ완료 비트를 확인할 수 있습니다.
시뮬레이션에는 확인을 누른 정의만 들어갑니다. 고칠 곳이 있는 정의는 시뮬레이션되지 않습니다. 회선 바쁨(F3)ㆍ수신 버퍼 넘침(F5)은 시뮬레이션되지 않으며, 스캔 시간과 상대 장치의 처리 시간도 들지 않습니다. 가상 상대의 설정은 저장되지 않습니다.
모니터링 중에 사용자 프로토콜 창을 열면, 상태 칸을 정한 거래의 카드에 마지막 결과가 표시됩니다. 받기만ㆍ받으면 답하기 거래는 받은 수 칸의 값과 마지막으로 늘어난 뒤 지난 시간도 표시됩니다. 상태는 고른 통신포트의 거래만 읽습니다.
카드의 표시는 상태 칸 표의 화면 표시와 같습니다. 표시된 상태를 믿을 수 없을 때는 회색으로 그 까닭이 표시됩니다.
| 회색 표시 | 뜻 |
|---|---|
| 장비 프로그램이 다름 | 장비의 프로그램이 지금 문서와 다를 수 있습니다. 다운로드하면 읽습니다. |
| 다운로드 전 설정 | 모니터링을 시작할 때의 정의에 없는 거래입니다. 확인하고 다운로드한 뒤 모니터링을 다시 시작하면 읽습니다. |
| PLC 응답 없음 · 값 모름 · 새 값이 안 옴 · 값 모름 | 모니터 통신에서 새 값이 오지 않습니다. |
| 제한 모니터 · 못 읽음 | 프로그램 검사 오류가 있는 동안에는 사용자 메모리의 상태 칸을 읽지 않습니다. |
| 이 칸을 런타임이 쓰지 않음 | 사용자 프로토콜이 쓰지 않는 값입니다. 장비 프로그램이 다르거나 래더가 이 칸에 씁니다. |
시뮬레이션 중에는 카드에 가상이 함께 표시되며, 확인하지 않은 거래는 확인 전 설정, 멈춘 시뮬레이션은 시뮬레이션 멈춤 · …으로 표시됩니다.
포트의 모니터 중 통신 기록을 켜고 확인을 누른 뒤 다운로드하면, 모니터링 중 통신 기록 보기에 장비가 그 통신포트로 보내고 받은 바이트가 줄마다 표시됩니다. 통신 기록을 켜면 장비의 램과 플래시를 조금 더 씁니다.
→는 장비가 보낸 바이트, ←는 받은 바이트입니다. 줄은 장비가 주고받은 차례로 놓이며, 시각은 PC가 기록을 읽은 때입니다.✓ D100 = 410 · ✓ 체크섬 DF)이 표시됩니다.‹STX›처럼 표시됩니다.PC 직접 시험은 PLC 대신 PC의 COM 포트(USB-RS485ㆍUSB-RS232 변환기 등)로 장치와 직접 주고받는 기능입니다. 장치를 PLC에 연결하기 전에 프레임과 체크섬이 맞는지 확인할 때 사용합니다. 창에서 고친 정의(확인 전 내용)로 시험하며, 데스크톱 앱에서만 사용할 수 있습니다.
COM10 — USB Serial Port»처럼 장치 이름이 함께 표시되고, 블루투스 포트는 «COM23 (Bluetooth)»로 표시됩니다. 처음에는 (포트를 고르세요)가 표시되며, 지난번에 이 통신포트에서 연 COM이 있으면 미리 골라집니다. 새로 읽기로 목록을 다시 읽습니다.
아래 예제는 MPS-8A8R의 통신포트1~통신포트3에 본보기 셋을 하나씩 정한 구성입니다. 다른 기종은 통신포트 번호만 바꿔 같은 방법으로 사용할 수 있습니다.
통신포트1(9600 · 8-N-1)에 CO2 센서를 연결해 1초마다 농도를 읽고, 버튼 입력으로 영점 명령을 보내는 예제입니다.
User Protocol 모드로 바뀝니다.| 렁 | 입력 | 펑션 | 하는 일 |
|---|---|---|---|
| 0 | M3(a 접점) | UPTRIG 3 | M3이 켜질 때 영점 명령을 한 번 보냅니다. |
| 프레임 | 바이트 |
|---|---|
| CO2 요청 | FF 01 86 00 00 00 00 00 79 (고정 FFㆍ01ㆍ86ㆍ00*5 + 2의 보수 합, 2번째부터) |
| CO2 응답 | FF 86 + 농도 2바이트(큰 끝 먼저 → D100) + 건너뜀 4 + 2의 보수 합 |
| 영점 명령 | FF 01 87 00 00 00 00 00 78 |
센서가 FF 86 01 9A 00 00 00 00 DF를 보내면 D100은 410(ppm)이 되고, 상태 칸 D101은 0001(10진 1), 완료 비트 M100은 한 스캔 켜집니다.
통신포트2(9600 · 8-N-1)에 바코드 리더를 연결해, 읽은 글자를 D200부터 받는 예제입니다.
| 항목 | 값 |
|---|---|
| 프레임 «바코드» | 글자열(D200 · 끝 문자 전까지 · 최대 32 · 받은 글자 수 D190) + 고정 CR LF |
| 거래 «바코드 받기» | 받기만 · 늘 듣기 · 완료 비트 M101 · 받은 수 칸 D191 |
리더가 ILOGICS-1234와 CR LF를 보내면 D190은 12가 되고, D200부터 두 글자씩(D200 = IㆍL) 들어갑니다. M101이 한 스캔 켜지고 D191이 1 늘어납니다. 빈 줄(CR LF만)이 오면 글자 수 0인 프레임으로 받습니다.
통신포트3(9600 · 7-E-1)에 국번 01인 ASCII 명령 장치를 연결해, 번지 100의 값을 0.5초마다 D11로 읽는 예제입니다.
| 렁 | 입력 | 펑션 | 하는 일 |
|---|---|---|---|
| 0 | @ON | MOVE 100 D10 | 읽을 번지 100을 D10에 넣습니다. |
| 프레임 | 모양 | 예 |
|---|---|---|
| 국번 요청 | STX “01” “R” + 번지(ASCII 10진 4자리 · D10) + ETX + 합(8 비트) ASCII 16진 2자리(2번째부터) | 02 “01R0100” 03 “77” |
| 국번 응답 | ACK “01” “R” + 값(ASCII 16진 4자리 · D11) + ETX + 합(8 비트) ASCII 16진 2자리(2번째부터) | 06 “01R03E8” 03 “96” → D11 = 1000 |
| 국번 오류 (NAK) | NAK “01” ETX | 받으면 상태 칸 D12 = F600 |
거래 «국번 읽기»는 묻고 받기, 주기 500 ms, 응답 대기 300 ms, 다시 시도 3, 상태 칸 D12입니다. 이 본보기는 글자 사이 틈 괜찮음이 꺼져 있어 요청을 한 번에 이어서 보냅니다.
| 증상 | 확인할 항목 |
|---|---|
상태 칸이 계속 0000 | 다운로드한 프로그램에 사용자 프로토콜이 들어 있는지, 거래 시작이 트리거면 래더의 UPTRIG 입력이 꺼짐 → 켜짐으로 바뀌었는지 확인해주시기 바랍니다. |
F000(응답 없음) | PC 직접 시험으로 같은 프레임에 장치가 답하는지 확인해주시기 바랍니다. 답하면 통신포트 번호와 단자(RS-232ㆍRS-485ㆍUART), RS-485의 +ㆍ- 배선, 통신 포트 설정을 확인해주시기 바랍니다. 장치의 응답이 늦으면 응답 대기를 늘려주시기 바랍니다. |
F100(체크섬 틀림) | 장치가 보낸 바이트를 둘 이상 붙여 넣어 맞는 체크섬 갈래 찾기로 확인해주시기 바랍니다. |
F200(모양이 다른 바이트만 옴) | 장치가 보낸 바이트를 미리보기에 붙여 넣어 몇 번째 바이트가 다른지 확인해주시기 바랍니다. 국번ㆍ머리 바이트, 데이터 비트(7ㆍ8)와 패리티를 확인해주시기 바랍니다. |
F400(값 바꾸기 실패) | 미리보기에서 값 필드의 형식(자릿수ㆍ소수 자리ㆍ16진)과 PLC 칸의 크기를 확인해주시기 바랍니다. |
F500(수신 버퍼 넘침) | 보레이트에 비해 스캔 시간이 길면 한 스캔 사이에 수신 버퍼보다 많은 바이트가 쌓입니다. 스캔 시간을 줄이거나 설정 → 데이터 메모리의 SERIAL 칸에서 수신 버퍼를 늘려주시기 바랍니다. 128바이트 버퍼와 115200 bps에서는 스캔 시간이 약 11 ms를 넘지 않아야 합니다. |
| 요청은 나가는데 장치가 답하지 않음(글자 사이 틈) | 장치가 글자 사이의 틈을 허용하지 않을 수 있습니다. 포트의 글자 사이 틈 괜찮음을 끄고 다운로드해 다시 확인해주시기 바랍니다. |
| 긴 바코드가 뒷부분만 들어옴 | 글자열의 최대 글자 수보다 긴 코드가 오면 뒤쪽 최대 글자 수만큼만 들어갑니다. N을 가장 긴 코드보다 크게 정해주시기 바랍니다. |
| 잡음이 있는데 값이 들어옴 | 장비는 패리티 오류를 검사하지 않습니다. 체크섬이 있는 프레임으로 정의해주시기 바랍니다. |
| PC 직접 시험에서 포트가 열리지 않음 | 모니터링ㆍ다운로드나 다른 프로그램이 그 COM을 쓰고 있지 않은지 확인해주시기 바랍니다. |
UPTRIG를 쓴 .mpx 프로젝트는 V1.2.0 이하에서 열 수 없습니다.