통신
시리얼 통신
직렬(Serial) 통신은 대게 하나의 신호선을 이용하여데이터를 주고받는 통신을 일컬어 지칭합니다.
비동기식 | SCI(Serial Communication Interface) Transceiver에 따라 RS232C, RS423, RS422, RS485로 구분 |
---|---|
동기식 | - SPI(Serial Pheripharal Interface) - I2C(Inter Integrated Circuit) |
0V(=0) 에서 3.3V 또는 5V(=1)
RS-232
+12V(=0) 에서 -12V(=1)
RS 232C
두 개의 제어장치가 1:1로 접속
전이중(full duplex)방식의 직렬 접속
추가로 선을 사용하여 하드웨어적으로 제어할 수 있음.
RS232방식은 노이즈 (NOISE)의 영향을 받기 쉬운 단점이 있습니다.
따라서 RS422이나 전류통신 방식인 20mA current loop방식 혹은, 더 나아가 광통신을 이용합니다.
전이중(full duplex)방식의 직렬 접속
추가로 선을 사용하여 하드웨어적으로 제어할 수 있음.
RS232방식은 노이즈 (NOISE)의 영향을 받기 쉬운 단점이 있습니다.
따라서 RS422이나 전류통신 방식인 20mA current loop방식 혹은, 더 나아가 광통신을 이용합니다.
RS 485
2선식 RS485 특징
- 2개의 통신선 사용
- Multi-drop이 가능하다.(1:N 통신)
- 2선로 양끝에 종단 저항 처리
- ~ 32개 정도의 장비를 하나의 포트에 연결 할 수 있습니다.
- 1000m의 거리를 쉴드된 트위스트 페어선 이동시 1MB/S 속도로 전송할 수 있습니다.
RS 422
4선식 특징
- 4개의 통신선 사용
- 각각의 2선로에 종단 저항 처리
- 물리적 인터페이스의 경우 RS422은 5개의 핀으로 구성
RS 232, 485, 422 비교
Specification | RS232C | RS422 | RS485 |
---|---|---|---|
동작모드 | Single-Ended | Differential | Differential |
최대 Driver/Receiver 수 | 1 Driver | 1 Driver | 32 Driver |
1 Receiver | 32 Receiver | 32 Receiver | |
최대 통달거리 | 약 15m | 약 1.2km | 약 1.2km |
최고 통신속도 | 20 Kb/s | 10 Mb/s | 10 Mb/s |
지원 전송방식 | Full Duplex | Full Duplex | Helf Duplex |
최대 출력전압 | ±25V | -0.25V to +6V | -7V to +12V |
최대 입력전압 | ±15V | -7V TO +7V | -7V to +12V |
Modbus protocal
RTI(Remote Terminal Unit) Mode
03(0×03) Read Holding Registers
기능 코드3은 출력 데이터 값을 읽는 기능으로 데이터는 16비트 크기이고,시작 번지와 개수로 입력하면 응답으로 해당번지부터 요구한 개수 만큼의 출력 데이터가 응답 됨.
Request | Function code | 1Byte | 0×03 |
---|---|---|---|
Starting Address | 2Byte | 0×0000 to 0×FFFF | |
Quantity of Register | 2Byte | 1 to 125 (0×7D) | |
Response | Function code | 1Byte | 0×03 |
Byte count | 1Byte | 2×N* | |
Register value | N*×2Byte | ||
*N = Quantity of Registers | |||
Error | Error code | 1Byte | 0×83 |
Exception code | 1Byte | 01 or 02 or 03 or 04 |
Request | Response | ||
---|---|---|---|
Field Name | (Hex) | Field Name | (Hex) |
Fuction | 03 | Fuction | 03 |
Starting Adress Hi | 00 | Byte Count | 06 |
Starting Address Lo | 6B | Register value Hi (108) | 02 |
No. of Registers Hi | 00 | Register value Lo (108) | 2B |
No. of Registers Lo | 03 | Register value Hi (109) | 00 |
Register value Lo (109) | 00 | ||
Register value Hi (110) | 00 | ||
Register value Lo (110) | 64 |
04(0×04) Read Input Registers
기능 코드4는 입력 상태 값을 읽는 기능으로 데이터는 16비트 크기이고,시작번지와 개수로 입력하면 응답으로 해당번지부터 요구한 개수 만큼의 입력데이터가 응답 됨.
Request | Function code | 1Byte | 0×04 |
---|---|---|---|
Starting Address | 2Byte | 0×0000 to 0×FFFF | |
Quantity of Register | 2Byte | 0×0001 to 0×007D | |
Response | Function code | 1Byte | 0×04 |
Byte count | 1Byte | 2×N* | |
Register value | N*×2Byte | ||
*N = Quantity of Registers | |||
Error | Error code | 1Byte | 0×84 |
Exception code | 1Byte | 01 or 02 or 03 or 04 |
Request | Response | ||
---|---|---|---|
Field Name | (Hex) | Field Name | (Hex) |
Fuction | 04 | Fuction | 04 |
Starting Adress Hi | 00 | Byte Count | 02 |
Starting Address Lo | 08 | Input Reg.9 Hi | 00 |
Quantity of Input Reg. Hi | 00 | Input Reg.9 Lo | 0A |
Quantity of Input Reg. Lo | 01 |
06(0×06) Write Single Registers
기능 코드6은 하나의 16비트 크기의 출력 값을 쓰는 기능으로해당 번지와 데이터를 전송하면 같은 형태로 응답 함.
Request | Function code | 1Byte | 0×06 |
---|---|---|---|
Register Address | 2Byte | 0×0000 to 0×FFFF | |
Register Value | 2Byte | 0×0000 to 0×FFFF | |
Response | Function code | 1Byte | 0×04 |
Register Address | 2Byte | 0×0000 to 0×FFFF | |
Register value | 2Byte | 0×0000 to 0×FFFF | |
Error | Error code | 1Byte | 0×83 |
Exception code | 1Byte | 01 or 02 or 03 or 04 |
Request | Response | ||
---|---|---|---|
Field Name | (Hex) | Field Name | (Hex) |
Fuction | 06 | Fuction | 06 |
Register Adress Hi | 00 | Register Adress Hi | 00 |
Register Adress Lo | 01 | Register Adress Lo | 01 |
Register Value Hi | 03 | Register Value Lo | 03 |
16 (0×10) Write Multiple Registers
기능 코드16은 다수의 16비트 크기의 출력 값을 쓰는 기능으로시작 번지와 개수 및 여러 데이터를 전송하면 시작 번지와 개수로 응답 함.
Request | Function code | 1Byte | 0×10 |
---|---|---|---|
Starting Address | 2Byte | 0×0000 to 0×FFFF | |
Quantity of Registers | 2Byte | 0×0001 to 0×FF7B | |
Byte Count | 1Byte | 2×N* | |
Register Value | N*×2Bytes | value | |
*N = Quantity of Registers | |||
Response | Function code | 1Byte | 0×10 |
Starting Address | 2Byte | 0×0000 to 0×FFFF | |
Quantity of Registers | 2Byte | 1 to 123(0×7B) | |
Error | Error code | 1Byte | 0×90 |
Exception code | 1Byte | 01 or 02 or 03 or 04 |
Request | Response | ||
---|---|---|---|
Field Name | (Hex) | Field Name | (Hex) |
Fuction | 10 | Fuction | 10 |
Starting Adress Hi | 00 | Starting Adress Hi | 00 |
Starting Adress Lo | 01 | Starting Adress Lo | 01 |
Quantity of Registers Hi | 00 | Quantity of Registers Hi | 00 |
Quantity of Registers Lo | 02 | Quantity of Registers Lo | 02 |
Byte Count | 04 | ||
Register Value Hi | 00 | ||
Register Value Lo | 0A | ||
Register Value Hi | 01 | ||
Register Value Lo | 02 |
Ascill code
제어문자 공백문자 구두점 숫자 알파벳10진 | 16진 | 문자 | 10진 | 16진 | 문자 | 10진 | 16진 | 문자 | 10진 | 16진 | 문자 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0×00 | NUL | 32 | 00×20 | SP | 64 | 0×40 | @ | 96 | 0×60 | ' |
1 | 0×01 | SOH | 33 | 00×21 | ! | 65 | 00×41 | A | 97 | 00×61 | a |
2 | 0×02 | STX | 34 | 00×22 | " | 66 | 00×42 | B | 98 | 00×62 | b |
3 | 0×03 | ETX | 35 | 00×23 | # | 67 | 00×43 | C | 99 | 00×63 | c |
4 | 0×04 | EOT | 36 | 00×24 | $ | 68 | 00×44 | D | 100 | 00×64 | d |
5 | 0×05 | ENQ | 37 | 00×25 | % | 69 | 00×45 | E | 101 | 00×65 | e |
6 | 0×06 | ACK | 38 | 00×26 | & | 70 | 00×46 | F | 102 | 00×66 | f |
7 | 0×07 | BEL | 39 | 00×27 | ' | 71 | 00×47 | G | 103 | 00×67 | g |
8 | 0×08 | BS | 40 | 00×28 | ( | 72 | 00×48 | H | 104 | 00×68 | h |
9 | 0×09 | HT | 41 | 00×29 | ) | 73 | 00×49 | I | 105 | 00×69 | i |
10 | 0×0A | LF | 42 | 00×2A | ) | 74 | 00×4A | J | 106 | 00×6A | j |
11 | 0×0B | VT | 43 | 00×2B | * | 75 | 00×4B | K | 107 | 00×6B | k |
12 | 0×0C | FF | 44 | 00×2C | + | 76 | 00×4C | L | 108 | 00×6C | l |
13 | 0×0D | CR | 45 | 00×2D | - | 77 | 00×4D | M | 109 | 00×6D | m |
14 | 0×0E | SO | 46 | 00×2E | . | 78 | 00×4E | N | 110 | 00×6E | n |
15 | 0×0F | SI | 47 | 00×2F | / | 79 | 00×4F | O | 111 | 00×6F | o |
16 | 0×10 | DEL | 48 | 00×30 | 0 | 80 | 00×50 | P | 112 | 00×70 | p |
17 | 0×11 | DC1 | 49 | 00×31 | 1 | 81 | 00×51 | Q | 113 | 00×71 | q |
18 | 0×12 | DC2 | 50 | 00×32 | 2 | 82 | 00×52 | R | 114 | 00×72 | r |
19 | 0×13 | DC3 | 51 | 00×33 | 3 | 83 | 00×53 | S | 115 | 00×73 | s |
20 | 0×14 | DC4 | 52 | 00×34 | 4 | 84 | 00×54 | T | 116 | 00×74 | t |
21 | 0×15 | NAK | 53 | 00×35 | 5 | 85 | 00×55 | U | 117 | 00×75 | u |
22 | 0×16 | SYN | 54 | 00×36 | 6 | 86 | 00×56 | V | 118 | 00×76 | v |
23 | 0×17 | ETB | 55 | 00×37 | 7 | 87 | 00×57 | W | 119 | 00×77 | w |
24 | 0×18 | CAN | 56 | 00×38 | 8 | 88 | 00×58 | X | 120 | 00×78 | x |
25 | 0×19 | EM | 57 | 00×39 | 9 | 89 | 00×59 | Y | 121 | 00×79 | y |
26 | 0×1A | SUB | 58 | 00×3A | : | 90 | 00×5A | Z | 122 | 00×7A | z |
27 | 0×1B | ESC | 59 | 00×3B | ; | 91 | 00×5B | [ | 123 | 00×7B | { |
28 | 0×1C | FS | 60 | 00×3B | < | 92 | 00×5C | \ | 124 | 00×7C | | |
29 | 0×1D | GS | 61 | 00×3D | = | 93 | 00×5D | ] | 125 | 00×7D | } |
30 | 0×1E | RS | 62 | 00×3E | > | 94 | 00×5E | ^ | 126 | 00×7E | ~ |
31 | 0×1F | US | 63 | 00×3F | ? | 95 | 00×5F | _ | 127 | 00×7F | DEL |