RS485 버스는 단일 칩 마이크로 컴퓨터에 직접 연결할 수 있습니까? 아니면 485 대 232 인터페이스가 필요한가요?
그림 1 RS485 통신 인터페이스 다이어그램
2 하드웨어 회로 설계는 문제에주의를 기울여야합니다.
2. 1 회로 기본 원리
한 노드의 하드웨어 회로 설계는 1 과 같습니다. 이 회로는 RS-485 인터페이스 칩 SN75LBC 184 를 사용하며 단일 전원 Vcc 를 사용하여 +3 ~+5.5 V 범위 내에서 정상적으로 작동할 수 있으며 일반 RS-485 칩에 비해 번개의 충격뿐만 아니라 견딜 수 있습니다. 칩에는 최대 400 V 의 순간 펄스 전압을 견딜 수 있는 4 개의 순간 과전압 보호 튜브가 통합되어 있어 번개 손상을 방지하는 장치의 신뢰성을 크게 높일 수 있습니다. 환경이 열악한 일부 장소에서는 추가 보호 요소 없이 송전선로에 직접 액세스할 수 있습니다. 또한 이 칩은 입력부가 열려 있을 때 출력이 높기 때문에 수신기 입력부의 케이블이 열려 있을 때 시스템의 정상적인 작동에 영향을 주지 않습니다. 또한 입력 임피던스는 RS485 표준의 두 배 (≥ 24 kω) 이므로 버스에 64 개의 트랜시버를 연결할 수 있습니다. 칩 내부에는 기울기 제한 드라이버가 설계되어 출력 신호의 가장자리가 너무 가파르지 않고 전송선에도 고주파 성분이 많이 생기지 않아 전자기 간섭을 효과적으로 억제한다. 그림 1 에서 4-4-1 옵토 커플러 TLP52 1 은 SN75LBC 184 와의 전기 연결이 전혀 없으므로 작업 신뢰성이 향상됩니다. 기본 원칙은 다음과 같습니다. 단일 칩 P 1.6=0 일 때 옵토 커플러의 발광 다이오드 발광, 광전 트랜지스터 전도, 출력 고전압 (+5 V), RS485 인터페이스 칩의 de 측 선택 전송 허용입니다. 단일 칩 P 1.6= 1 에서 옵토 커플러의 발광 다이오드는 발광하지 않고, 광 트랜지스터는 통하지 않고, 저전압 (0 V) 를 출력합니다. RS485 인터페이스 칩의 RE 터미널을 선택하여 수신을 허용합니다. SN75LBC 184 의 R 측 (수신측) 과 D 측 (송신측) 의 원리는 위와 유사합니다.
2.2 DE RS-485 제어 터미널 설계
RS-485 버스 기반 반이중 통신 시스템에서는 한 번에 하나의 노드만 버스에 데이터를 전송할 수 있으며 다른 모든 노드는 수신 상태여야 합니다. 둘 이상의 노드가 동시에 버스에 데이터를 전송하면 모든 발신자의 데이터 전송이 실패합니다. 따라서 시스템의 각 노드에 대한 하드웨어 설계에서는 먼저 노드가 버스에 데이터를 전송하는 비정상적인 상황으로 인한 버스 데이터 충돌을 최소화해야 합니다. MCS5 1 시리즈 마이크로 컨트롤러를 예로 들어 보겠습니다. I/O 포트는 시스템이 재설정될 때 고평을 출력하기 때문에, I/O 포트가 RS-485 인터페이스 칩의 구동에 직접 연결된 경우, CPU 가 재설정될 때 DE 가 고평이 되어 이 노드가 송신됩니다. 이 시점에서 버스의 다른 노드가 데이터를 전송하는 경우 데이터 전송은 중단되고 실패하며, 한 노드의 장애로 인해 전체 버스의 통신이 차단되어 전체 시스템의 정상적인 작동에 영향을 미칠 수도 있습니다. 통신의 안정성과 신뢰성을 고려하여 각 노드의 설계에서 RS485 버스 인터페이스 칩을 제어하는 송신 핀은 de 측의 역논리로 설계되어야 합니다. 즉, 제어 핀이 논리 "1" 인 경우 DE 끝은 "0" 입니다. 제어 핀이 논리 "0" 이면 DE 끝은 "1" 입니다. 그림 1 에서 CPU 의 핀 P 1.6 은 옵토 커플러를 통해 DE 측으로 구동되므로 SN75LBC 184 는 제어 핀이 고평이거나 비정상적으로 재설정될 때 수신 상태를 유지할 수 있습니다. 이것은 전체 시스템의 신뢰할 수있는 통신을위한 토대를 마련했습니다.
또한 회로에는 1 워치독 MAX8 13L 이 있어 노드에 데드 사이클 또는 기타 장애가 발생할 경우 프로그램을 자동으로 재설정하여 RS-485 버스 제어를 전달할 수 있습니다. 이렇게 하면 전체 시스템이 하나의 노드 장애로 인해 버스를 독점하지 않아 전체 시스템이 마비되지 않습니다.
2.3 버스 충돌 방지 설계
노드에서 버스를 사용해야 하는 경우 신뢰할 수 있는 버스 통신을 위해 전송할 데이터가 있을 때 먼저 버스를 수신합니다. 하드웨어 인터페이스에서 먼저 RS-485 인터페이스 칩의 데이터 수신 핀을 반대로 한 다음 CPU 의 인터럽트 핀 INT0 에 연결합니다. 그림 1 에서 INT0 은 옵토 커플러의 출력에 연결됩니다. 데이터가 버스에서 전송 중일 때 SN75LBC 184 의 데이터 수신측 (R 측) 은 변화의 높낮이를 표시합니다. 생성된 CPU 하강 인터럽트 (쿼리 모드도 사용 가능) 를 사용하여 버스가 "사용 중" 인지, 즉 버스에 노드가 통신하고 있는지 여부를 알 수 있습니다. 공짜라면 버스 사용권을 얻을 수 있어 버스 충돌 문제를 잘 해결했다. 이를 바탕으로 다양한 메시지의 우선 순위를 정의하여 우선 순위가 높은 메시지가 먼저 전송되도록 함으로써 시스템의 실시간 성능을 더욱 향상시킬 수 있습니다. 이 작동 모드를 사용하면 시스템에 마스터-슬레이브 노드가 없으며 각 노드가 버스에 동등하게 액세스하여 단일 노드에 대한 과도한 통신 부담을 효과적으로 방지할 수 있습니다. 버스 활용도와 시스템 통신 효율성이 크게 향상되어 시스템의 개별 노드에 장애가 발생하더라도 다른 노드의 정상적인 통신과 정상적인 작동에 영향을 주지 않고 시스템의 실시간 응답이 향상됩니다. 이렇게 하면 시스템의 "위험" 이 분산되어 시스템의 작업 신뢰성과 안정성이 어느 정도 향상됩니다.
2.4 RS-485 출력 회로 설계
그림 1 에서 VD 1 ~ VD4 는 RS-485 표준을 준수하는 신호 제한 다이오드입니다. VD 1 및 VD3 은 12 V, VD2 및 VD4 는 7 V 를 가져와 신호 범위가 -7 ~+ 12 V 로 제한되도록 합니다. 회로의 특수한 상황 (예: 한 노드의 RS-485 칩이 단락된 경우) 을 고려하여 버스의 다른 내선에 영향을 미치는 통신을 방지하기 위해 SN75LBC 184 의 신호 출력측에서 두 개의 20ω 저항 R 1 및 R2 를 연결하여 기본 하드웨어 장애가 발생하지 않도록 합니다. 응용 시스템 엔지니어링의 현장 건설에서는 통신 캐리어가 꼬인 쌍선이고 특성 임피던스가 약 1 20ω이므로 회로를 설계할 때 RS485 네트워크 전송선의 시작과 끝에 각각 1 개의 일치 저항을 연결해야 합니다 (그림/KLOC-0)
2.5 시스템 전원 선택
단일 칩 마이크로 컴퓨터와 RS-485 로 구성된 측정 및 제어 네트워크의 경우 각 노드에 독립적으로 전원을 공급하는 방안을 우선적으로 고려해야 하며, 전원 회로는 RS-485 신호선과 동일한 멀티 코어 케이블을 사용할 수 없습니다. RS-485 신호 케이블의 경우 평평한 직선 대신 0.75 mm2 이상의 단면으로 꼬인 쌍선을 선택해야 합니다. 선형 전원 공급 장치인 TL750L05 는 스위칭 전원 공급 장치보다 더 적합합니다. TL750L05 에는 출력 콘덴서가 있어야 합니다. 출력 콘덴서가 없는 경우 출력 끝의 전압은 들쭉날쭉한 웨이브 모양이며 들쭉날쭉한 파동의 상승은 입력 전압에 따라 달라집니다. 출력 커패시턴스를 늘리면 이 현상을 억제할 수 있다.
3 소프트웨어 프로그래밍
SN75LBC 184 수신 모드에서 A 와 B 는 입력이고 R 은 출력입니다. 전송 모드에서 d 는 입력이고 a 와 b 는 출력입니다. 전송 방향이 한 번 변경되면 입력이 변경되지 않으면 입력 상태가 한 번 변경될 때까지 출력이 임의 상태가 됩니다. 분명히 전송 모드에서 수신 모드로 전환한 후 A 와 B 의 상태가 변경되기 전에 R 이 낮으면 첫 번째 데이터가 시작될 때 R 이 여전히 낮습니다. CPU 는 이때 시작 비트가 없는 것으로 간주하고 첫 번째 하강이 나타날 때까지 첫 번째 데이터 수신을 시작하지 않으면 수신 오류가 발생할 수 있습니다. 수신 모드에서 전송 모드로 전환한 후 D 가 변경되기 전에 A 와 B 사이의 전압이 낮으면 첫 번째 데이터 시작 비트를 보낼 때 A 와 B 사이의 전압이 여전히 낮고 A 와 B 핀에 시작 비트가 없으면 전송 오류도 발생할 수 있습니다. 이러한 결과를 극복하기 위한 해결책은 호스트가 여러 가장자리 변경 사항 (예: 55H, 0AAH) 을 포함하여 두 개의 동기화 단어를 연속적으로 전송하는 것입니다 (첫 번째는 수신 오류로 인해 무시될 수 있음). 동기화 단어가 수신되면 수신기에서 데이터를 전송하여 올바른 통신을 보장할 수 있습니다.
보다 안정적으로 작동하려면 데이터를 보내고 수신하기 전에 RS485 버스의 상태 전환을 연기해야 합니다. 제어 끝을 "1" 으로 설정하여 약 0.5 ms 를 연기한 후 유효한 데이터를 보내는 것이 좋습니다. 데이터 전송이 완료되면 0.5 ms 를 더 연기하고 제어 터미널을 "0" 으로 설정합니다. 이러한 처리를 통해 버스가 상태를 전환할 때 안정적인 작업 과정을 가질 수 있습니다. 데이터 통신 프로그램의 기본 프로세스는 그림 2 에 나와 있습니다.
그림 2 데이터 통신 프로그램 기본 흐름도
단일 칩 통신 노드의 프로그램은 기본적으로 미리 정의된 섹션, 초기화 섹션, 마스터 프로그램 섹션, 장치 상태 감지 섹션, 프레임 수신 섹션 및 프레임 전송 섹션의 6 가지 주요 부분으로 나눌 수 있습니다. 미리 정의된 섹션은 주로 통신에 사용되는 핸드쉐이킹 신호, 장치 정보를 저장하는 버퍼 및 노드 장치 번호를 저장하는 변수를 정의합니다. 디바이스 상태 감지 섹션은 프로그램 초기화 후 하드웨어 장애가 발생할 경우 응답할 수 있어야 합니다. 마스터 프로그램 섹션은 명령 프레임을 수신하고 명령의 내용에 따라 적절하게 응답할 수 있어야 합니다. 편폭을 단축하기 위해서, 여기는 주 프로그램의 코드만 제시한다. 다음과 같습니다.
/* 마스터 프로세스 */
While( 1) {// 주 루프
If (recv _ cmd (& Type)==0) // 프레임 오류 또는 프레임 주소가 로컬과 다릅니다.
//주소가 일치하지 않습니다. 현재 프레임을 삭제하고 반환합니다.
계속;
스위치 (유형) {
Case __ACTIVE_: // 호스트가 클라이언트의 존재 여부를 묻습니다.
Send_data(__OK_, 0, dbuf); //회신 메시지 보내기
깨뜨리다
시나리오 __GETDATA_:
Len = strlen (dbuf);
Send_data(__STATUS_, len, dbuf); //상태 정보 보내기
깨뜨리다
기본값:
깨뜨리다 //잘못된 명령 유형, 현재 프레임을 삭제하고 반환합니다.
}
}
4 결론
RS-485 는 RS-232 보다 더 길고 최대 3000 m 까지 전송되는 차등 레벨 전송 신호를 사용하기 때문에 산업용 어플리케이션에 적합합니다. 그러나 CAN 버스와 같은 고급 필드 산업 버스와 비교할 때 오류를 처리하는 능력은 여전히 약간 뒤떨어져 있으므로 데이터 오류를 피하기 위해 소프트웨어 섹션에서 특수 설계가 필요합니다. 또한 시스템의 데이터 중복량이 많기 때문에 속도가 높은 애플리케이션에서는 RS-485 버스를 사용하기에 적합하지 않습니다. RS-485 버스에는 몇 가지 단점이 있지만 회로 설계가 간단하고, 가격이 저렴하며, 제어가 편리하기 때문에 디테일만 잘 처리하면 일부 엔지니어링 어플리케이션에서 좋은 역할을 할 수 있습니다. 결론적으로, 신뢰성을 해결하는 관건은 프로젝트가 시작되기 전에 취할 수 있는 모든 조치를 고려하고, 프로젝트 후반까지 기다리지 않고 근본적으로 문제를 해결하는 것이다.