컴퓨터 지식 네트워크 - 노트북 지식 - RS232, RS485, RS422, 직렬 포트 및 핸드쉐이크에 대한 자세한 설명

RS232, RS485, RS422, 직렬 포트 및 핸드쉐이크에 대한 자세한 설명

컴퓨터 또는 컴퓨터와 단말기 간의 데이터 전송에는 직렬 통신과 병렬 통신의 두 가지 방법이 있습니다. 직렬 통신 방식은 여러 회선의 특성 불일치를 피할 수 있어 회선 사용량이 적고 비용이 저렴하며, 특히 장거리 전송에 널리 사용됩니다.

직렬 통신에서는 서로 다른 장치를 쉽게 연결하여 통신할 수 있도록 두 통신 당사자 모두 표준 인터페이스를 사용해야 합니다. RS-232-C 인터페이스(EIA RS-232-C라고도 함)는 현재 가장 일반적으로 사용되는 직렬 통신 인터페이스입니다.

RS-232-C는 EIA(전자산업협회)에서 개발한 직렬 물리적 인터페이스 표준입니다. RS는 영어로 "Recommended Standard"의 약어이고, 232는 식별번호, C는 수정횟수를 의미하며, 이는 RS232(1969)의 최신 수정본을 의미합니다. 그 이전에는 RS232B와 RS232A가 있었습니다.

1970년 전자산업협회(EIA)가 벨시스템, 모뎀 제조사, 컴퓨터 단말기 제조사와 공동으로 개발한 직렬통신 표준이다. 전체 이름은 "DTE(데이터 단말 장비)와 DCE(데이터 통신 장비) 간의 직렬 바이너리 데이터 교환 인터페이스에 대한 기술 표준"입니다.

EIA-RS-232C는 전기적 특성, 논리 레벨 및 다양한 신호 라인 기능을 지정합니다. ?

TxD 및 RxD에서: 논리 1(MARK) = -3V ~ -15V, 논리 0(SPACE) = 3 ~ +15V ? RTS, CTS, DSR, DTR 및 DCD와 같은 제어 라인에서 :?

신호가 유효함(연결됨, ON 상태, 양의 전압) = 3V~ 15V?

신호가 유효하지 않음(연결되지 않음, OFF 상태, 음의 전압) = -3V ~- 15V?

기기의 전원 공급에 따라 -5, -10, -12, -15 등의 레벨이 가능합니다.

RS-232C는 커넥터의 물리적 특성을 정의하지 않기 때문에 DB-25, DB-15, DB-9 등 다양한 유형의 커넥터가 등장했으며 핀 정의도 다릅니다. . 최근에는 핀 할당이 다양하기는 하지만 8핀 RJ-45 유형 커넥터가 더욱 보편화되었습니다.

EIA/TIA 561 표준에는 핀 할당 방법이 명시되어 있지만 Dave Yost가 발명하여 Unix 컴퓨터에서 널리 사용되는 "Yost Serial Device Wiring Standard") 및 기타 여러 장치에서는 이러한 방법을 사용하지 않습니다. 이 배선 표준. 다음 표에는 일반적으로 사용되는 RS-232의 신호 및 핀 할당이 나열되어 있습니다.

신호 주석은 DTE 장비의 관점에서 나온 것이며 TD, DTR 및 RTS 신호는 관점에서 나온 것입니다. DTE 장비의 RD, DSR, CTS, DCD 및 RI 신호는 DCE에 의해 생성됩니다.

PC의 RS-232 포트는 9핀 핀 소켓이다. 일부 장치에서 PC에 연결하는 데 사용하는 RS-232 인터페이스는 상대방의 전송 제어 신호를 사용하지 않으므로 "데이터 TXD 보내기", "데이터 RXD 받기" 및 "신호 접지 GND"의 세 가지 인터페이스 라인만 필요합니다. .

모든 RS-232 신호는 공통 접지를 공유하므로 3개의 전선만으로 양방향 인터페이스를 만들 수 있습니다. 불균형 회로로 인해 RS-232는 두 장치 간의 기본 전압 이동에 매우 민감합니다.

신호의 상승 및 하강 기간에 대해 RS-232는 상대적으로 제어 능력이 떨어지며 누화 문제가 발생하기 쉽습니다. 단거리(15m 이내) 통신에는 RS-232를 권장합니다. 비대칭 회로로 인해 RS-232 인터페이스 케이블은 일반적으로 연선으로 만들어지지 않습니다.

RS-232-C 표준에서 규정하는 데이터 전송 속도는 초당 50, 75, 100, 150, 300, 600, 1200, 2400, 4800, 9600, 19200 baud이며, 드라이버는 이를 허용합니다. 2500pF 용량성 부하, 통신 거리는 이 용량에 의해 제한됩니다.

예를 들어 150pF/m 통신 케이블을 사용하는 경우 최대 통신 거리는 15m이며, 케이블 1m당 정전 용량을 줄이면 통신 거리를 늘릴 수 있습니다. 전송 거리가 짧은 또 다른 이유는 RS-232가 단일 종단 신호 전송이기 때문에 접지 노이즈 및 ***모드 간섭을 억제할 수 없는 등의 문제가 있기 때문에 일반적으로 20m 이내의 통신에 사용됩니다.

RS-232C 표준에서는 코드 요소 왜곡이 4보다 작을 때 전송 케이블 길이가 50피트가 되어야 한다고 규정하고 있습니다. 실제로 4의 코드 요소 왜곡은 매우 보수적입니다. 10~20의 코드 요소 왜곡 범위에서 작업하는 사용자는 약 99명이므로 실제 사용 시 최대 거리는 50피트 이상이 될 것입니다. 미국 DEC 회사에서는 코드 요소 왜곡을 10피트까지 허용한다고 규정하고 있습니다. 다음과 같은 실험 결과가 얻어졌다.

그 중 1번 케이블은 쉴드 케이블, 모델 DECP.NO.9107723 3쌍의 연선이 있고, 각 쌍은 22# AWG로 구성되어 있으며 쉴딩으로 덮여있습니다. 그물. 케이블 2번은 비차폐입니다. 모델 DECP.NO.9105856-04는 22#AWG 4코어 케이블입니다.

RS-232 표준에서는 문자가 일련의 비트로 차례로 전송됩니다. 가장 오래 사용되는 인코딩 형식은 비동기식 시작-정지 형식으로, 시작 비트와 7 또는 8개의 데이터 비트(패리티 비트일 수 있음), 그리고 2개의 정지 비트를 사용합니다. 따라서 문자를 전송하려면 10비트가 필요하며 전체 전송 속도, 즉 신호를 보내는 속도를 10으로 나누는 것이 좋은 효과입니다.

직렬 통신에는 소프트웨어 설정의 여러 설정이 필요합니다. 가장 일반적인 설정에는 전송 속도, 패리티 및 정지 비트가 포함됩니다. 전송 속도는 한 장치에서 다른 장치로 전송되는 전송 속도, 즉 초당 비트 수(bit/s)를 나타냅니다. 일반적인 전송 속도는 300, 1200, 2400, 9600, 19200 등의 비트/초입니다. 일반적으로 통신 양단의 장치는 동일한 전송 속도로 설정되어야 하지만 일부 장치에서는 전송 속도를 자동으로 감지하도록 설정할 수도 있습니다.

패리티는 데이터의 정확성을 확인하는 데 사용됩니다. 패리티 검사는 일반적으로 사용되지 않습니다. 사용하는 경우 홀수 또는 짝수 검사일 수 있습니다. 패리티 검사는 전송된 각 바이트를 수정하여 작동합니다(전송된 바이트를 제한할 수도 있음).

패리티 검사를 수행하지 않으면 데이터가 변경되지 않습니다. 짝수 패리티에서는 패리티 비트가 그에 따라 1 또는 0으로 설정되므로(보통 가장 높은 또는 가장 낮은 비트) 전송되는 모든 숫자(문자 및 검사 숫자 포함), 숫자 "1"의 개수는 짝수입니다.

홀수 패리티에서는 전송되는 모든 숫자(문자 및 검사 숫자 포함)에서 "1"의 개수가 홀수입니다. 패리티 검사는 수신자가 전송에 오류가 있는지 확인하는 데 사용할 수 있습니다. 특정 바이트의 "1" 수가 올바르지 않으면 이 바이트 전송에 오류가 있는 것입니다. 패리티가 정확하면 오류가 발생하지 않았거나 짝수 개의 오류가 발생한 것입니다.

정지 비트는 각 바이트 전송 후에 전송되며 수신 하드웨어를 재동기화하는 데 사용됩니다.

D/P/S는 직렬 통신 소프트웨어 설정의 일반적인 기호 표현입니다. 8/N/1(매우 일반적)은 8비트 데이터, 패리티 없음 및 1비트 정지 비트를 나타냅니다. 데이터 비트는 7, 8 또는 9로 설정할 수 있고 패리티 비트는 없음(N), 홀수(O) 또는 짝수(E)로 설정할 수 있으며 패리티 비트는 데이터의 비트를 사용할 수 있습니다.

따라서 8/E/1은 ***8 데이터 비트를 나타내며 그 중 하나는 패리티 비트로 사용됩니다.

정지 비트는 1, 1.5 또는 2비트일 수 있습니다(1.5는 전송 속도가 60wpm인 텔레타이프라이터에 사용됨).

핸드쉐이킹 신호나 데이터 무결성 검사를 전송해야 할 경우 추가 설정이 필요합니다. 일반적인 조합은 RTS/CTS, DTR/DSR 또는 XON/XOFF입니다(실제로 커넥터 핀은 사용되지 않지만 특수 문자는 데이터 스트림에 삽입됩니다).

송신자가 데이터를 보내는 시기를 제어하기 위해 수신자는 송신자에게 XON/XOFF 신호를 보냅니다. 이 신호는 전송된 데이터의 전송 방향과 반대입니다. XON 신호는 수신자가 더 많은 데이터를 수신할 준비가 되었음을 발신자에게 알리고, XOFF 신호는 수신자가 다시 준비될 때까지 데이터 전송을 중지하라고 발신자에게 알립니다. XON/XOFF 사용은 일반적으로 더 이상 사용되지 않으며 이를 대체하려면 RTS/CTS 제어 흐름을 사용하는 것이 좋습니다.

XON/XOFF는 단말간 동작하는 in-band 방식이지만 양쪽 끝에서 이 프로토콜을 지원해야 하며 갑자기 시작할 경우 혼란이 있을 수 있습니다.

XON/XOFF는 함께 동작할 수 있습니다 3선 인터페이스. RTS/CTS는 원래 한 번에 하나의 모뎀만 데이터를 보낼 수 있는 텔레타이프라이터와 모뎀 간의 반이중 협력 통신을 위해 설계되었습니다. 터미널은 전송 요청 신호를 보낸 다음 모뎀이 전송 가능 신호로 응답할 때까지 기다려야 합니다. RTS/CTS는 하드웨어를 통해 핸드셰이킹을 달성하지만 고유한 장점도 있습니다. ?

RS-232 장치 및 통신 기술이 수년간 개선된 후 RS-232의 통신 거리가 크게 늘어났습니다. RS-232 인터페이스 표준은 이전에 등장했기 때문에 필연적으로 다음과 같은 네 가지 점을 포함하여 단점이 있습니다.

(1) 인터페이스의 신호 레벨이 상대적으로 높기 때문에 칩이 손상되기 쉽습니다. 인터페이스 회로이며, TTL 레벨과 호환되지 않기 때문에 TTL 회로에 연결하려면 레벨 변환 회로가 필요합니다.

(2) 전송 속도가 낮습니다. 비동기 전송 중 전송 속도는 20Kbps입니다. 이제 16C550과 같은 새로운 UART 칩을 사용하여 전송 속도가 115.2Kbps에 도달했습니다.

(3) 인터페이스는 신호 라인과 신호 리턴 라인을 사용하여 접지 전송 형태를 형성합니다. 이러한 유형의 접지 전송은 ***모드 간섭을 생성하기 쉽기 때문에 노이즈에 강합니다. 약한 간섭.

(4) 전송 거리에는 제한이 있습니다. 표준 최대 전송 거리는 50m이지만 실제로는 15m 정도에서만 사용할 수 있습니다. ?

RS-232 직렬 포트 표준의 한계에 대응하여 사람들은 RS-422 및 RS-485 인터페이스 표준을 제안했습니다. RS-485/422는 평형 전송과 차동 수신을 사용하여 통신을 달성합니다. 송신측에서는 직렬 포트의 TTL 레벨 신호를 차동 신호 A 및 B로 변환하여 출력하고, 케이블 전송 후 수신측에서는 차동 신호를 TTL로 복원합니다. 레벨 신호.

전송 라인은 일반적으로 연선을 사용하고 차동 전송이므로 모드 간섭에 매우 강합니다. 버스 트랜시버는 매우 민감하며 200mV만큼 낮은 전압도 감지할 수 있습니다. 따라서 전송된 신호는 수천 미터 떨어진 곳에서도 복구가 가능합니다. ?

드라이버가 ±7V ***모드 전압을 출력할 수 있나요?

수신기의 입력 저항 RIN≥12kΩ?

입력의 커패시턴스 단자는 50pF 이하입니까?

노드 수가 32개이고 종단 저항이 120Ω으로 구성되면 드라이버는 여전히 최소 1.5V의 전압을 출력할 수 있습니다(종단 저항의 크기는 종단 저항의 크기와 관련됨). 사용된 연선의 매개 변수)?

송신 끝: 논리 "1"은 두 라인 사이의 전압 차이로 표시됩니다(2 ~ 6). 논리 "0"은 전압 차이로 표시됩니다. 두 줄 사이는 - (2 ~ 6) V입니다.

수신기의 입력 감도는 200mV입니다(예: (V )-(V-) ≥ 0.2V, 신호 "0" 표시, (V )-(V-) ≤ -0.2V, 신호 표시) " 1") ?

RS-485의 최대 데이터 전송 속도는 10Mbps이며, 최대 통신 거리는 약 1219M입니다. 전송 속도는 전송 거리에 반비례합니다. 10Kb/S의 전송 속도. 최대 통신 거리.

하지만 RS-485는 PC의 RS-232 포트와 통신하는 경우가 많기 때문에 실제 최대 속도는 115.2Kbps이다. 그리고 속도가 너무 높으면 RS-485 전송 거리가 줄어들기 때문에 약 9600bps 이하인 경우가 많습니다. ?

RS-485 인터페이스는 밸런스 드라이버와 차동 수신기의 조합을 사용하여 향상된 간섭 방지 기능, 즉 우수한 소음 방지 간섭 기능을 갖추고 있습니다. RS-485는 반이중 작업 모드를 채택하고 다중 지점 데이터 통신을 지원합니다.

RS-485 버스 네트워크 토폴로지는 일반적으로 터미널 일치 버스 구조를 채택합니다. 즉, 버스는 다양한 노드를 직렬로 연결하는 데 사용되며 링 또는 스타 네트워크는 지원되지 않습니다. 스타 구조를 사용해야 하는 경우 485 리피터 또는 485 허브를 사용해야 합니다. RS-485/422 버스는 일반적으로 최대 32개의 노드를 지원합니다. 특수 485 칩을 사용하면 128 또는 256개의 노드에 도달할 수 있으며 가장 큰 버스는 400개의 노드를 지원할 수 있습니다.

RS-485의 국제 표준에는 RS485의 인터페이스 커넥터 표준이 규정되어 있지 않으므로 터미널 블록이나 DB-9, DB-25 및 기타 커넥터를 사용할 수 있습니다.

1. 간섭 방지: RS485 인터페이스는 밸런스 드라이버와 차동 수신기의 조합을 사용하여 잡음 방지 간섭이 우수합니다. RS232 인터페이스는 신호 라인과 신호 반환 라인을 사용하여 접지된 전송 형태를 형성합니다. 이 접지된 전송은 아날로그 간섭을 받기 쉽습니다.

2. 전송 거리: RS485 인터페이스의 표준 최대 전송 거리는 1200미터(9600bps에서)이며 실제로는 3000미터에 도달할 수 있습니다. RS232의 전송 거리는 제한되어 있습니다. 표준 최대 전송 거리는 실제로 약 15m에서만 사용할 수 있습니다.

3. 통신 기능: RS-485 인터페이스를 사용하면 최대 128개의 트랜시버를 버스에 연결할 수 있습니다. 사용자는 단일 RS-485 인터페이스를 사용하여 장치 네트워크를 쉽게 설정할 수 있습니다. RS-232는 일대일 통신만 가능합니다.

4. 전송 속도: RS-232 전송 속도는 비동기 전송 중 전송 속도가 20Kbps입니다. RS-485의 최대 데이터 전송 속도는 10Mbps입니다.

5. 신호선: RS485 인터페이스로 구성된 반이중 네트워크에는 일반적으로 신호선이 2개만 필요합니다. RS-232 포트는 일반적으로 RXD, TXD, GND 세 가지 라인만 사용합니다.

6. 전기 레벨 값: RS-485의 논리 "1"은 두 라인(2~6) 사이의 전압 차이로 표시됩니다. V 논리 "0"은 전압 차이로 표시됩니다. - (2~6) V는 두 줄 사이를 의미합니다. RS-232-C에서는 모든 신호선의 전압이 음의 논리 관계를 갖습니다. 즉, 논리 "1", -5~-15V, 논리 "0" 5~15V입니다.

RS-422의 전기적 성능은 RS-485와 거의 같습니다. 주요 차이점은 다음과 같습니다.

(1) RS-485에는 2개의 신호 라인(송수신용 A 및 B)이 있습니다. RS-485는 수신과 전송을 위해 두 개의 선만 사용하기 때문에 동시에(반이중) 수신과 전송할 수 없습니다.

(2) RS-422에는 4개의 신호 라인이 있습니다. 2개는 송신용(Y, Z)이고 2개는 수신용(A, B)입니다. RS-422는 수신과 송신이 분리되어 있기 때문에 동시에(full duplex) 수신과 송신이 가능합니다.

(3) 다중 기계 통신을 지원하는 RS-422의 경우 Y-A를 RS-485의 A로 단락시키고, RS-422의 Z-B를 RS-485의 B로 단락시킬 수 있습니다. RS-485로 쉽게 변환됩니다. ?

많은 사람들은 RS-422 직렬 인터페이스가 RS-485 직렬 인터페이스의 전이중 버전이라고 잘못 생각하는 경우가 많습니다. 실제로 전기적 특성에는 많은 차이가 있습니다.*** 아날로그 전압 범위와 수신기 입력 저항으로 인해 두 표준이 서로 다른 애플리케이션에 적합합니다.

RS-485 직렬 인터페이스 드라이버는 RS-422 직렬 인터페이스 애플리케이션에 사용할 수 있습니다. RS-485 직렬 인터페이스는 모든 RS-422 직렬 인터페이스 성능 매개변수를 충족하지만 그 반대는 성립하지 않기 때문입니다. . RS-485 직렬 인터페이스 드라이버의 경우 최대 아날로그 전압의 출력 범위는 -7V ~ 12V이며, RS-422 직렬 인터페이스 드라이버의 경우 이 성능 지수는 ±7V에 불과합니다. RS-422 직렬 인터페이스 수신기의 최소 입력 저항은 4KΩ이고 RS-485 직렬 인터페이스 수신기의 최소 입력 저항은 12KΩ입니다.

1. RS-422에는 4개의 신호 라인이 있습니다. 2개는 송신용(Y, Z)이고 2개는 수신용(A, B)입니다. RS-422는 수신과 송신이 분리되어 있기 때문에 동시에(full duplex) 수신과 송신이 가능합니다.

2. RS-485에는 전송 및 수신을 위한 A와 B라는 두 개의 데이터 라인만 있습니다. RS-485는 수신과 전송을 위해 두 개의 선만 사용하기 때문에 동시에(반이중) 수신과 전송할 수 없습니다.

UART는 범용 비동기식 수신기/송신기(Universal Asynchronous Receiver/Transmitter)로, 일반적으로 UART라고 불리는 비동기식 수신 및 송신기이며 장치 간 비동기 통신을 위한 핵심 모듈입니다. UART는 데이터 버스와 직렬 포트 간의 직렬/병렬 및 병렬/직렬 변환을 처리하고 프레임 형식을 규정합니다. 통신 당사자가 동일한 프레임 형식과 전송 속도를 사용하는 한 클럭 신호를 공유할 수 있습니다. 앞으로 이 경우 두 개의 신호선(Rx 및 Tx)만 사용하여 통신 프로세스를 완료할 수 있으므로 비동기 직렬 통신이라고도 합니다.

직렬 포트는 컴퓨터의 매우 일반적인 장치와 통신하기 위한 프로토콜입니다(범용 직렬 버스 또는 USB와 혼동하지 마십시오). 대부분의 컴퓨터에는 두 개의 RS232 기반 직렬 포트가 있습니다. 직렬 포트는 계측 장비를 위한 일반적인 통신 프로토콜이기도 합니다. 많은 GPIB 호환 장치에는 RS-232 포트도 있습니다. 동시에 직렬 통신 프로토콜을 사용하여 원격 수집 장치에서 데이터를 얻을 수도 있습니다.

직렬 통신의 개념은 매우 간단합니다. 직렬 포트는 비트 단위로 바이트를 보내고 받습니다. 바이트별 병렬 통신보다 속도는 느리지만 직렬 포트는 한 회선에서 데이터를 보내고 다른 회선에서 데이터를 수신할 수 있습니다. 간단하며 장거리 통신이 가능합니다. 예를 들어, IEEE488은 병렬 통신 상태를 정의할 때 전체 장비 라인이 20미터를 초과해서는 안 되며, 두 장치 사이의 길이가 직렬 포트의 경우 2미터를 초과해서는 안 된다고 규정하고 있으며, 길이는 최대 1,200미터까지 가능합니다.

일반적으로 직렬 포트는 ASCII 코드 문자 전송에 사용됩니다. 통신은 (1) 접지, (2) 전송, (3) 수신의 3개 와이어를 사용하여 수행됩니다. 직렬 통신은 비동기식이므로 포트는 한 회선에서 데이터를 보내고 다른 회선에서 데이터를 수신할 수 있습니다. 다른 회선은 핸드쉐이킹에 사용되지만 필수는 아닙니다. 직렬 통신의 가장 중요한 매개변수는 전송 속도, 데이터 비트, 정지 비트 및 패리티입니다. 두 포트가 통과하려면 다음 매개변수가 일치해야 합니다.

이는 통신 속도를 측정하는 매개변수입니다. 초당 전송되는 비트 수를 나타냅니다. 예를 들어 300보드는 초당 300비트를 보내는 것을 의미합니다. 클럭 주기를 언급할 때 전송 속도를 의미합니다. 예를 들어 프로토콜에 4800 전송 속도가 필요한 경우 클럭은 4800Hz입니다. 이는 데이터 라인의 직렬 통신 샘플링 속도가 4800Hz임을 의미합니다. 전화선의 일반적인 전송 속도는 14400, 28800 및 36600입니다.

전송 속도는 이 값보다 훨씬 클 수 있지만 전송 속도는 거리에 반비례합니다. 높은 전송 속도는 서로 매우 가까이 배치된 계측기 간의 통신에 자주 사용됩니다. 일반적인 예는 GPIB 장치의 통신입니다.

이는 통신의 실제 데이터 비트를 측정한 것입니다. 컴퓨터가 정보 패킷을 보낼 때 실제 데이터는 8비트가 아니며 표준 값은 5, 7, 8비트입니다. 설정 방법은 보내려는 정보에 따라 다릅니다. 예를 들어, 표준 ASCII 코드는 0~127(7비트)입니다. 확장 ASCII 코드는 0~255(8비트)입니다. 데이터가 단순 텍스트(표준 ASCII 코드)를 사용하는 경우 패킷당 7비트의 데이터가 사용됩니다. 각 패킷은 시작/중지 비트, 데이터 비트 및 패리티 비트를 포함하여 바이트를 나타냅니다. 실제 데이터 비트는 선택한 통신 프로토콜에 따라 달라지므로 "패킷"이라는 용어는 모든 통신 상황을 나타냅니다.

단일 패킷의 마지막 비트를 나타내는 데 사용됩니다. 일반적인 값은 1, 1.5, 2비트입니다. 데이터는 전송 라인에서 시간이 측정되고 각 장치에는 자체 시계가 있으므로 통신 중에 두 장치 간에 작은 비동기화가 발생할 수 있습니다. 따라서 정지 비트는 전송의 끝을 나타낼 뿐만 아니라 컴퓨터에 시계 동기화를 수정할 수 있는 기회도 제공합니다. 정지 비트에 사용할 수 있는 비트가 많을수록 다양한 클록 동기화에 대한 허용 범위는 커지지만 동시에 데이터 전송 속도는 느려집니다.

직렬 통신의 간단한 오류 감지 방법입니다. 오류 감지 모드에는 짝수, 홀수, 높음, 낮음의 네 가지가 있습니다. 물론 체크 숫자가 없을 수도 있습니다. 짝수 및 홀수 패리티의 경우 직렬 포트는 전송된 데이터가 짝수 또는 홀수 논리 하이 비트를 갖도록 보장하는 값을 사용하여 패리티 비트(데이터 비트 다음 1비트)를 설정합니다. 예를 들어, 데이터가 011이면 짝수 패리티의 경우 패리티 비트는 0이므로 논리적으로 높은 비트 수가 짝수가 됩니다. 홀수 패리티인 경우 패리티 비트가 1로 설정되므로 논리적 상위 비트는 3개가 됩니다. 높은 비트와 낮은 비트는 실제로 데이터를 확인하지 않으며 단순히 검증을 위해 논리를 높거나 낮게 설정합니다. 이를 통해 수신 장치는 비트의 상태를 알 수 있고, 잡음이 통신을 방해하는지 또는 전송 및 수신된 데이터가 동기화되지 않았는지 확인할 수 있는 기회를 갖게 됩니다.

RS-232 패스스루를 사용하면 Tx, Rx 및 접지의 세 전선을 간단하게 연결할 수 있습니다. 그러나 데이터 전송의 경우 양 당사자는 데이터 타이밍에 동일한 전송 속도를 사용해야 합니다. 이 접근 방식은 대부분의 애플리케이션에 충분하지만 수신기에 과부하가 걸리는 상황에서는 사용이 제한됩니다. 이때 직렬 포트의 핸드셰이크 기능이 필요합니다. 이 섹션에서는 RS-232 핸드셰이크의 가장 일반적인 세 ​​가지 형태인 소프트웨어 핸드셰이크, 하드웨어 핸드셰이크 및 Xmodem에 대해 설명합니다.

우리가 논의하는 첫 번째 유형의 핸드셰이크는 소프트웨어 핸드셰이크입니다. GPIB가 명령 문자열을 사용하는 방식과 유사하게 실제 데이터가 제어 문자인 경우 일반적으로 사용됩니다. 여전히 세 가지 필수 라인이 있습니다: Tx, Rx 및 접지선 전송 라인의 제어 문자는 일반 문자와 다르지 않으므로 SetXModem 기능을 사용하면 사용자가 두 제어 문자 XON 및 OXFF의 사용을 활성화하거나 비활성화할 수 있습니다. 이러한 문자는 송신자가 일시 중지되도록 하기 위해 통신에서 수신자가 전송합니다.

예: 발신자가 높은 전송 속도로 데이터를 보낸다고 가정합니다. 전송 중에 수신자는 CPU가 다른 작업으로 바쁘기 때문에 입력 버퍼가 가득 찼음을 발견합니다. 전송을 일시적으로 중지하기 위해 수신기는 입력 버퍼가 빌 때까지 XOFF를 보냅니다. 일반적인 값은 10진수 19 또는 16진수 13입니다.

수신자가 수신할 준비가 되면 통신을 계속하기 위해 XON을 보냅니다. 일반적인 값은 10진수 17 또는 16진수 11입니다. 입력 버퍼가 절반쯤 차면 LabWindows는 XOFF를 보냅니다. 또한 XOFF 전송이 중단되면 LabWindows는 버퍼가 75%와 90%에 도달할 때 XOFF를 보냅니다. 분명히 전송이 계속되도록 하려면 발신자가 이 코드를 따라야 합니다.

두 번째는 하드웨어 와이어 핸드셰이크를 사용하는 것입니다. Tx 및 Rx 라인과 마찬가지로 RTS/CTS와 DTR/DSR은 함께 작동하며 하나는 출력으로, 다른 하나는 입력으로 작동합니다. 첫 번째 라인 세트는 RTS(전송 요청) 및 CTS(전송 지우기)입니다.

수신자가 데이터를 수신할 준비가 되면 RTS 라인을 High로 설정하여 송신자도 준비가 되면 CTS를 High로 설정하여 데이터를 보낼 예정임을 나타냅니다. 또 다른 라인 세트는 DTR(Data Terminal Ready) 및 DSR(Data Set Ready)입니다.

현재는 주로 모뎀 통신에 사용됩니다. 직렬 포트와 모뎀이 상태를 통신할 수 있도록 합니다. 예: 모뎀이 PC로부터 데이터를 수신할 준비가 되면 DTR 라인을 높게 설정하여 전화선에 대한 연결이 설정되었음을 나타냅니다. 읽기 DSR 라인이 높게 설정되고 PC가 데이터 전송을 시작합니다. 간단한 규칙은 DTR/DSR은 시스템이 통신할 준비가 되었음을 나타내는 데 사용되고 RTS/CTS는 단일 데이터 패킷 전송에 사용된다는 것입니다.

LabWindows에서 SetCTSMode 함수는 하드웨어 핸드셰이크 사용을 활성화하거나 비활성화합니다. CTS 모드가 활성화된 경우 LabWindows는 다음 규칙을 사용합니다: PC가 데이터를 보낼 때: RS-232 라이브러리는 데이터를 보내기 전에 CTS 라인 하이를 감지해야 합니다.

PC가 데이터를 수신할 때:

포트가 열려 있고 입력 큐가 데이터를 수신할 수 있는 경우 라이브러리 기능은 RTS 및 DTR을 높게 설정합니다.

입력 대기열이 90% 차면 라이브러리 함수는 RTS를 낮게 설정하지만 DTR을 높게 유지합니다.

포트 대기열이 거의 비어 있으면 라이브러리 기능은 RTS를 높게 설정하지만 DRT를 높게 유지합니다.

포트가 닫혀 있으면 라이브러리 함수는 RTS 및 DTR을 낮게 설정합니다.

논의된 마지막 핸드셰이크는 XModem 파일 전송 프로토콜이라고 합니다. 이 프로토콜은 모뎀 통신에서 매우 일반적입니다. XModem 프로토콜은 모뎀 통신에 일반적으로 사용되지만 이 프로토콜을 따르는 다른 장치와의 통신에 직접 사용할 수 있습니다. LabWindows에서 실제 XModem 애플리케이션은 사용자에게 숨겨져 있습니다. PC 및 기타 장치가 XModem 프로토콜을 사용하는 한 LabWindows의 XModem 기능은 파일 전송에 사용됩니다. 기능은 XModemConfig, XModemSend 및 XModemReceive입니다.

XModem은 start_of_data, end_of_data, neg_ack, wait_delay, start_delay, max_tries, packet_size 매개변수가 있는 프로토콜을 사용합니다. 이러한 매개변수는 두 통신 당사자 모두가 인식해야 합니다. 표준 XModem에는 표준 정의가 있습니다. 그러나 특정 요구 사항을 충족하기 위해 XModemConfig 기능을 통해 수정할 수 있습니다.

이러한 매개변수의 사용법은 수신자가 보낸 neg_ack 문자에 따라 결정됩니다. 이는 송신자에게 데이터를 수신할 준비가 되었음을 알립니다. 제한 시간 매개변수 start_delay를 사용하여 전송 시도를 시작합니다. 시간 초과 시도가 max_ties 횟수를 초과하거나 수신자가 보낸 start_of_data가 수신되면 전송자는 시도를 중지합니다. start_of_data가 발신자로부터 수신되면 수신자는 후속 정보 패킷을 읽습니다.

패킷에는 패킷 수, 오류 확인을 위한 패킷 수의 보완, packet_size 바이트 단위의 실제 패킷 크기 및 추가 오류 확인을 위한 합계 확인 값이 포함됩니다. 데이터를 읽은 후 수신자는 wait_delay를 호출한 다음 송신자에게 응답을 보냅니다. 보낸 사람이 응답을 받지 못하면 응답을 받거나 최대 재전송 횟수 max_tries를 초과할 때까지 패킷을 다시 보냅니다. 응답이 수신되지 않으면 발신자는 데이터 전송이 실패했음을 사용자에게 알립니다.

데이터는 pack_size 바이트 단위로 패킷으로 보내야 하므로 마지막 데이터 패킷을 보낼 때 데이터 패킷을 채울 만큼 데이터가 부족할 경우 나중에 ASCII 코드 NULL(0) 바이트를 채운다. 이로 인해 원래 데이터보다 더 많은 데이터가 수신됩니다.

XModem의 경우 XON/XOFF를 사용하지 마십시오. XModem 발신자가 보낸 패킷 수가 XON/OFF 제어 문자 값으로 증가하여 통신 오류를 일으킬 수 있기 때문입니다.

上篇: QQ 스페이스 프리 스킨과 플레이어 코드가 좋은 사람은 누구인가요? 下篇: 왜 Cool Life Network에 들어갈 수 없나요?
관련 내용