차량 인터넷 및 실시간 데이터 스트림 처리의 CAN 버스 프로토콜 소개

CAN 버스란?

CAN(Control Area Network) 버스는 장치 간에 안정적이고 효율적인 데이터 전송을 가능하게 하는 직렬 통신 프로토콜입니다. 차량 내부의 각종 전자 제어 장치를 신경계처럼 연결하여 차량 분야에서 널리 사용되고 있습니다.

CAN 버스는 원래 자동차 애플리케이션을 위해 1980년대에 Bosch가 설계했습니다. 자동차 분야의 요구에 매우 적합한 다중 마스터, 다중 슬레이브, 반이중, 내결함성 프로토콜입니다. 간단하고 저렴하며 신뢰할 수 있고 열악한 환경에서 작동할 수 있습니다. CAN 버스는 쉬운 연결 및 진단을 위해 차량의 모든 전자 제어 장치에 대한 통합 액세스 포인트를 제공합니다.

CAN 버스 데이터는 연결된 장치의 성능과 상태를 반영할 수 있습니다. 그러나 대용량 데이터, 제한된 대역폭, 네트워크 불안정성 등의 요인으로 인해 CAN 버스 데이터를 수집하고 처리하는 것은 어려울 수 있습니다.

이러한 문제를 해결하기 위해 MQTT 프로토콜을 활용하여 네트워크 상태가 좋지 않은 경우 차량 데이터를 클라우드로 적시에 전송할 수 있습니다. EMQX는 CAN 버스 데이터를 수집하기 위해 안정적이고 확장 가능한 MQTT 인프라를 구축할 수 있는 오픈 소스 MQTT 브로커입니다.

CAN 버스 데이터 수집

CAN 버스 개발의 간략한 역사

CAN 버스는 1980년대 초 독일의 다국적 엔지니어링 거대 기업인 Bosch가 자동차 애플리케이션을 위한 효율적인 통신 시스템을 제공하기 위해 개발했으며, 주요 목적은 차량 내부 와이어링 하니스의 복잡성을 단순화하는 것입니다.

1986년에 Bosch는 신뢰성과 견고성으로 인해 자동차 제조업체에서 빠르게 채택한 최초의 CAN 프로토콜을 출시했습니다. 1993년에 ISO-11898 국제 표준이 되었습니다. 프로토콜 진화 프로세스는 대략 다음과 같습니다.

  • 1991: Mercedes-Benz는 W140 S-Class에 CAN 버스를 채택하여 CAN 버스를 채택한 최초의 자동차 회사 중 하나가 되었습니다.
  • 2004: 기존 CAN 네트워크보다 더 높은 데이터 속도와 더 큰 페이로드를 제공하는 CAN FD가 도입되었습니다.
  • 2015: 기존 CAN 및 CAN FD 프로토콜을 구현하는 장치의 적합성 테스트를 위한 적합성 테스트용 테스트 솔루션으로 ISO-16845:2015를 사용합니다.

자동차 분야 외에도 CAN 버스 프로토콜은 산업 자동화 시스템(CANopen) 및 해양 전자 장치(NMEA 2000)와 같은 다른 산업에서도 점차 사용되고 있습니다. 광범위한 적용은 주로 열악한 조건에서 안정적인 작동과 저렴한 구현 비용 때문입니다.

CAN 버스 작동 방식

CAN 버스는 분산 통신 프로토콜입니다. 분산 특성으로 인해 자동차 및 산업 시스템과 같이 높은 신뢰성과 실시간 성능이 필요한 애플리케이션에 이상적입니다.

CAN 네트워크에서 모든 노드는 트위스트 페어 또는 광섬유로 연결됩니다. 각 노드에는 자체 마이크로 컨트롤러가 있으며 수신 및 발신 메시지 처리를 담당합니다. 데이터는 공유 버스의 노드에서 브로드캐스트되며 다른 모든 노드에서 수신할 수 있습니다. 커뮤니케이션 프로세스의 몇 가지 주요 단계는 다음과 같습니다.

  1. 중재: 동시에 데이터를 전송하는 여러 노드로 인해 발생하는 충돌을 피하기 위해 CAN은 메시지 우선 순위에 기반한 중재 프로세스를 채택합니다. 메시지의 식별자 값이 작을수록 우선순위가 높아집니다.
  2. 오류 감지: 내장된 오류 감지 메커니즘은 CAN 네트워크에서 데이터의 무결성을 보장합니다. 이러한 메커니즘에는 순환 중복 검사(CRC), 프레임 검사 시퀀스(FCS) 및 수신 노드 승인 비트가 포함됩니다.
  3. Fault Confinement: 노드가 전송 중에 오류나 실패를 감지하면 문제가 해결될 때까지 "오류 수동" 상태로 들어갑니다. 이 메커니즘은 오류가 전체 시스템 기능을 방해하는 것을 방지합니다.

이러한 기능은 함께 작동하여 CAN 버스가 효율적으로 작동할 수 있도록 하여 차량 또는 공장 자동화 장비와 같은 복잡한 시스템의 구성 요소 간에 안정적인 통신을 보장합니다.

CAN 프로토콜의 메시지 구조

CAN 버스 시스템에서 메시지 구조는 장치 간의 효율적인 통신을 위해 매우 중요합니다. 프로토콜의 데이터 프레임 형식은 식별자, 제어 필드, 데이터 필드 및 오류 감지 메커니즘과 같은 필드로 구성됩니다.

  • 식별자(CAN ID): 네트워크에서 각 메시지의 우선 순위를 결정하는 데 사용되는 고유한 값입니다. 표준 11비트 식별자(CAN 2.0A)는 최대 2048개의 서로 다른 우선 순위를 제공합니다. 확장된 29비트 식별자(CAN 2.0B)는 5억 개 이상의 우선 순위로 더 많은 옵션을 제공합니다.
  • 데이터 길이 코드(DLC): 제어 필드에 있으며 데이터 필드에 포함된 바이트 수를 지정하는 데 사용되며 값 범위는 0~8바이트입니다.
  • 데이터 필드: 노드 간에 전송될 실제 정보를 바이트 단위로 포함합니다.
  • CRC(Cyclic Redundancy Check): 전송 오류를 감지하고 필요한 경우 재전송을 요청하여 통신의 신뢰성을 보장하는 내장된 오류 감지 메커니즘입니다.
  • 승인 슬롯: 메시지가 성공적으로 수신되었거나 오류 시 재전송이 필요했음을 나타내는 승인을 송신 노드로 보내기 위해 수신 노드에서 사용하는 단일 비트입니다.
  • 오류 프레임(Error Frame): 노드가 보내거나 받은 메시지의 문제를 감지했을 때 신호를 보내기 위해 노드가 사용하는 CAN 메시지의 선택적 부분입니다.

CAN의 종류

CAN은 주로 세 가지 유형을 포함합니다.

저속 CAN

내결함성 CAN 또는 ISO 11898-3으로도 알려진 저속 CAN의 최대 전송 속도는 125kbps입니다. 높은 데이터 전송 속도가 필요하지 않은 차체 제어 모듈, 도어록, 창 제어 등과 같이 덜 중요한 시스템에 적합합니다. 주요 특징은 버스의 전선이 끊어져도 계속 정상적으로 작동할 수 있다는 것입니다.

고속 CAN

고속 CAN 또는 ISO 11898-2는 최대 1Mbps의 속도로 전송합니다. 저속 네트워크보다 데이터 전송 속도가 빠르기 때문에 엔진 관리 시스템, 전자 제동 시스템 등 적시 대응이 필요한 애플리케이션에 적합하다. 그러나 저속 네트워크의 내결함성이 없습니다.

CAN FD

2012년 Bosch에서 소개한 CAN FD는 최대 5Mbps의 더 빠른 데이터 전송 속도를 제공하는 동시에 기존 고속 장치와 역호환되는 고속 네트워크의 확장 버전입니다. 이 기술의 주요 장점은 기존 CAN보다 더 큰 부하를 더 효율적으로 전송할 수 있어 점점 더 복잡해지는 최신 차량의 전자 시스템에 이상적이라는 것입니다.

CAN 버스의 장점과 과제

CAN 버스의 주요 이점은 무엇입니까?

CAN 버스 데이터는 차량 성능, 건강 및 행동 특성을 반영할 수 있습니다. CAN 버스 데이터를 클라우드로 수집하는 것은 차량 데이터의 잠재력을 효과적으로 활용하는 방법이며, 빅데이터 분석을 통해 데이터의 가치를 발견할 수 있습니다. 차량에서 수집한 방대한 양의 데이터에 기계 학습, 인공 지능 또는 기타 분석 도구를 적용함으로써 차량 제조업체는 귀중한 정보를 얻고 차량 성능을 최적화하는 데 사용할 수 있습니다.

  • 오류 감지, 제거, 예측: CAN 버스 데이터를 분석하여 장치 및 센서의 이상 또는 잘못된 신호를 식별할 수 있습니다. 이렇게 하면 문제의 근본 원인을 진단하고 더 많은 손상을 일으키거나 보안 문제가 발생하기 전에 해결하는 데 도움이 됩니다. 제조업체는 또한 수집된 데이터를 사용하여 기계 학습 모델을 교육하여 고장을 예측할 수 있습니다.
  • 차량 데이터 시각화: 사용자는 수집된 데이터를 사용하여 대시보드에 포괄적인 데이터를 표시하는 시스템을 구축하여 다양한 차량 및 지표를 필터링, 정렬 및 비교할 수 있습니다. 또한 대시보드는 데이터 분석을 기반으로 경고 및 권장 사항을 제공하여 사용자에게 전체적인 성능 보기를 제공합니다.
  • 차량-도로 조정: 수집된 데이터를 도로 인프라 데이터와 결합하여 차량-도로 조정 시스템을 구축할 수 있습니다.

인공지능 시대에 데이터는 가장 소중한 자산입니다. 차량 데이터를 클라우드로 수집한 후 데이터베이스, 데이터 레이크 등 다양한 데이터 인프라에 배포함으로써 사용자는 데이터를 활용하여 다양한 유형의 애플리케이션을 구현할 수 있습니다.

실시간 데이터 수집의 과제는 무엇입니까?

차량에서 로컬로 CAN 버스 데이터를 수집하는 것은 상당히 성숙했지만 높은 데이터 속도, 낮은 대역폭 및 불안정한 네트워크 환경으로 인해 CAN 버스 데이터를 수집, 처리 및 클라우드로 실시간 전송하는 것은 큰 과제에 직면해 있습니다. 처리를 위해 모든 CAN 버스 데이터를 클라우드로 전송하는 것은 비실용적입니다. 따라서 CAN Bus 데이터를 에지에서 로컬로 수집 및 처리하여 데이터 양을 줄인 후 처리 결과를 실시간으로 클라우드로 전송할 수 있습니다.

이러한 솔루션을 구축하려면 최소한 두 가지 구성 요소가 필요합니다.

  1. 에지 컴퓨팅 엔진: 에지 컴퓨팅 엔진은 필요한 CAN 버스 신호만 수집하고 유연하게 처리하며 실시간으로 MQTT 전송 작업을 트리거할 수 있습니다. LF Edge eKuiper 는 CAN 버스 데이터를 실시간으로 처리하고 분석하는 데 도움이 되는 오픈 소스 에지 컴퓨팅 엔진입니다.
  2. 클라우드의 MQTT 브로커: MQTT 브로커를 사용하면 처리된 CAN 버스 데이터를 실시간으로 클라우드로 전송할 수 있습니다. EMQX는 CAN 버스 데이터를 수집하기 위해 안정적이고 확장 가능한 MQTT 인프라를 구축할 수 있는 오픈 소스 MQTT 브로커입니다.

다음으로 EMQX와 eKuiper를 결합한 전체 솔루션에 대해 자세히 소개하겠습니다.

CAN 버스 데이터 로컬 처리 문제 해결

eKuiper는 CAN 버스 데이터를 실시간으로 처리하고 분석하는 데 도움이 되는 오픈 소스 에지 컴퓨팅 엔진입니다. eKuiper는 CAN 버스에서 생성되는 일반적인 스트림 데이터의 실시간 처리에 적합한 에지 스트림 처리용으로 설계되었습니다. eKuiper는 다음 과제를 해결합니다.

  • CAN Bus 대용량 및 고속 데이터를 실시간으로 효율적으로 처리할 수 있는 능력을 보유합니다. 원하는 신호를 유연하게 필터링, 처리 및 선택하는 기능은 데이터 전송에 필요한 대역폭을 줄입니다.
  • 규칙 처리 및 작업 트리거를 위해 이진 CAN 프레임을 의미 있는 신호로 구문 분석하는 기능. DBC 파일의 동적 로딩을 지원하여 사용자가 DBC 파일을 유연하게 변경하고 엔진을 다시 시작하지 않고도 다른 CAN 버스 장치에 적응할 수 있습니다. 동시에 개발 팀에 노출되지 않고 DBC 파일의 개인 정보 보호 및 보안도 보장합니다.
  • 서로 다른 CAN 프레임의 신호를 유연하게 결합하는 기능을 통해 응용 프로그램에서 사용할 규칙에 따라 완전한 메시지를 구성할 수 있습니다. 또한 사용자는 규칙을 자유롭게 수정하여 다양한 사용자 시나리오 또는 요구 사항 변경에 적응하고 핫 로딩을 지원할 수 있습니다.

튜토리얼: eKuiper를 사용하여 CAN 버스 데이터의 로컬 처리 실현

1단계: CAN 버스에 연결

eKuiper는 CAN 소스 플러그인을 사용하여 CAN 버스에 연결하고 CAN 프레임을 수신합니다. 아래 그림과 같이 CAN 버스 연결의 두 가지 모드를 지원합니다.

eKuiper는 CAN 버스에 연결하기 위한 두 가지 모드를 지원합니다.

  1. socketCan을 통해 CAN 버스에 직접 연결하십시오. SocketCAN은 Linux 네트워크 스택인 Berkeley 소켓 API를 사용하고 CAN 장치 드라이버를 네트워크 인터페이스로 구현합니다. CAN 버스가 Linux 시스템에 연결되면 사용자는 CAN 네트워크 인터페이스를 얻을 수 있습니다. eKuiper에서 사용자는 CAN 네트워크 인터페이스DBC 파일 경로를 지정하여 CAN 스트림을 생성할 수 있습니다 . 그런 다음 모든 규칙을 CAN 스트림에 적용하여 CAN 버스 데이터를 처리할 수 있습니다.
  2. TCP/UDP를 활용하여 게이트웨이를 통해 CAN 버스에 연결합니다. 게이트웨이는 여러 CAN 프레임을 하나의 데이터 패킷으로 결합하고 TCP 또는 UDP를 통해 배치로 보내는 CAN 어댑터일 수 있습니다. 게이트웨이에서 보낸 패킷 형식은 표준화되지 않았으므로 이를 수용하기 위해 플러그인을 수정해야 할 수도 있습니다. eKuiper에서 사용자는 TCP/UDP 주소DBC 파일 경로를 지정하여 CAN 스트림을 생성 할 수 있습니다. 그런 다음 모든 규칙을 CAN 스트림에 적용하여 CAN 버스 데이터를 처리할 수 있습니다.

2단계: CAN 버스 데이터 디코딩

CAN 버스 데이터는 이진 데이터이며 프레임 단위이며 CAN 프레임은 여러 필드로 구성됩니다. CAN 2.0A, CAN 2.0B 및 CAN FD를 포함하여 여러 버전의 CAN 프로토콜이 있습니다. CAN 프레임 형식의 다른 버전은 약간 다릅니다. 아래 그림은 CAN 2.0A 프레임 형식을 보여줍니다.

CAN 2.0A 프레임 형식

그 중 CAN 버스 데이터를 디코딩하는 데 중요한 두 필드가 있습니다.

  1. ID 필드: ID 필드는 CAN 프레임을 식별하는 데 사용됩니다. CAN 2.0A의 ID 필드는 11비트이고 CAN 2.0B 및 CANFD의 ID 필드는 29비트입니다.
  2. 데이터 필드: 데이터 필드는 페이로드이며 실제 데이터를 전달하는 데 사용됩니다. CAN 2.0A 및 CAN 2.0B는 0-8바이트이고 CAN FD는 0-64바이트입니다.

페이로드에서 데이터는 각각 자체 이름, 길이 및 위치가 있는 일련의 신호로 구성됩니다. DBC 파일은 원시 CAN 버스 데이터를 "물리적 값"으로 디코딩하는 정보가 포함된 텍스트 파일입니다. 이 파일은 원시 데이터를 물리적 값으로 변환하는 데 사용되는 신호의 이름, 길이, 위치 및 변환 공식을 정의합니다.

eKuiper에서 사용자는 CAN 버스 데이터를 파싱할 때 사용할 DBC 파일 경로를 지정할 수 있습니다. eKuiper에서 DBC를 구성하는 것은 매우 유연하고 안전합니다.

  • 다중 DBC 파일: 사용자는 디렉토리를 DBC 경로로 선택할 수 있으며 디렉토리의 DBC 파일은 알파벳 순서로 하나씩 로드되고 적용됩니다. 이 접근 방식을 통해 사용자는 별도의 DBC 파일을 통해 신호를 점진적으로 추가하거나 복원할 수 있습니다.
  • 동적 DBC 파일 로드: DBC 파일은 런타임에 로드되며 개발 시 배포할 필요가 없습니다. 이를 통해 사용자는 DBC 파일을 비공개로 안전하게 유지할 수 있습니다.
  • 핫 로딩: 사용자는 엔진을 다시 시작하지 않고도 다른 CAN 버스 장치에 맞게 언제든지 DBC 파일을 변경할 수 있습니다.

eKuiper CAN 소스를 구성한 후 사용자는 CAN 버스 데이터를 수신하고 구문 분석하여 의미 있는 물리적 신호를 추출하는 스트림을 생성할 수 있습니다. 예를 들어, CAN 페이로드는 0x0000000000000000다음 신호로 구문 분석될 수 있습니다.

{
  "signal1": 0,
  "signal2": 0,
  "signal3": 0,
  "signal4": 0,
  "signal5": 0,
  "signal6": 0,
  "signal7": 0,
  "signal8": 0
}

다음으로 사용자는 eKuiper의 강력한 스트림 처리 기능을 사용하여 MQTT에서 데이터를 수신하는 것처럼 구문 분석된 데이터를 유연하게 처리할 수 있습니다.

3단계: CAN 버스 데이터 처리

파싱된 데이터를 얻은 후 eKuiper를 사용하여 다양한 작업을 수행할 수 있습니다. 데이터 전송을 위한 대역폭을 절약하기 위해 관심 있는 신호만 선택할 수 있습니다. 예를 들어 두 개의 신호 signal1와 .signal2

{
  "signal1": 0,
  "signal2": 0
}

이는 eKuiper SQL 문으로 쉽게 달성할 수 있습니다.

SELECT signal1, signal2 FROM canStream

CAN 프레임의 제한된 크기로 인해 여러 CAN 프레임에서 원하는 신호를 추출해야 할 수도 있습니다. 따라서 애플리케이션을 위한 완전한 메시지를 구축하기 위해 필요에 따라 알고리즘을 사용하여 서로 다른 CAN 프레임의 신호를 유연하게 결합할 수 있습니다. 자세한 내용은 데이터 병합 예제에서 확인할 수 있습니다 . 여기서는 signal1을 기본 조건으로 사용하여 데이터를 필터링합니다.

SELECT signal1, latest(signal2) as signal2 FROM canStream WHERE isNull(signal1) = false

또 다른 예로 특정 이벤트가 발생할 때만 데이터를 수집하여 대역폭 소비를 크게 줄일 수 있습니다. 예를 들어, signal1이 100을 초과해야만 데이터를 수집할 수 있습니다.

SELECT signal1, signal2 FROM canStream WHERE signal1 > 100

또한 이러한 처리 규칙은 매우 유연하며 언제든지 수정할 수 있습니다 . 초기 단계에서 필요한 신호가 식별되지 않더라도 걱정할 필요가 없으며 필요에 따라 언제든지 규칙을 조정하고 핫 리로딩을 구현할 수 있습니다.

데이터 수집의 일반적인 사용 외에도 eKuiper는 다음과 같은 다른 시나리오에도 적용될 수 있습니다.

  1. 차량 측의 실시간 및 유연한 규칙 엔진: 특정 조건에 따라 해당 조치를 트리거할 수 있습니다. 예를 들어, 속도가 70mph를 초과하면 자동으로 창문을 닫습니다.
  2. 유연한 지능형 분석: 데이터 및 AI 모델(현재 TF Lite)을 코딩하거나 클라우드에 연결하지 않고도 결합할 수 있습니다. 네트워크 연결 없이도 속도, 타이어 공기압 등의 데이터를 기반으로 주행 패턴을 예측하고 제안하는 등 실시간 데이터 분석이 가능한 기능입니다.
  3. 에지 컴퓨팅: 전송 대역폭을 줄이고 클라우드 컴퓨팅 압력을 줄이며 일정 기간 동안 평균 속도를 계산하고 저장하는 등 데이터를 분석, 재구성 및 변환할 수 있습니다.
  4. 이기종 데이터 통합: 다양한 프로토콜(TCP, UDP, HTTP, MQTT) 및 다양한 형식(CAN, JSON, CSV 등)의 데이터를 유연한 규칙을 통해 구문 분석하고 병합할 수 있습니다.
  5. 메시지 라우팅: 클라우드로 보낼 데이터와 다른 차량 내 애플리케이션에서 사용할 수 있도록 로컬에 저장할 데이터를 결정할 수 있습니다. 예를 들어 GDPR 또는 일부 화이트리스트를 기반으로 한 라우팅입니다.

MQTT를 사용하여 CAN 버스 데이터 수집

EMQX와 같은 MQTT 브로커를 사용하여 CAN 버스 데이터를 수집하면 다음과 같은 이점이 있습니다.

  • 네트워크 오버헤드 감소: MQTT는 바이너리 형식과 최소 헤더를 사용하여 메시지를 인코딩하므로 네트워크 대역폭을 절약하고 데이터 전송 효율성을 높일 수 있습니다.
  • 확장성 향상: 단일 MQTT 브로커는 수천 개의 동시 연결과 초당 수백만 개의 메시지를 지원할 수 있습니다. 이를 통해 성능이나 안정성을 손상시키지 않고 여러 CAN 버스 장치에서 대규모 데이터 수집이 가능합니다.
  • 향상된 보안: MQTT는 TLS/SSL 암호화, 사용자 이름/암호 인증, ACL(액세스 제어 목록)과 같은 여러 보안 메커니즘을 지원하여 무단 데이터 액세스 또는 변조를 방지합니다.
  • 향상된 상호 운용성: MQTT는 개방형 표준을 기반으로 하며 다양한 플랫폼과 언어에서 광범위하게 지원됩니다. 이를 통해 CAN 버스 데이터를 다른 시스템 또는 애플리케이션과 쉽게 통합할 수 있습니다.

또한 EMQX는 다른 많은 기능을 제공하며 eKuiper와 함께 작동하여 사용자가 대역폭을 절약하고 지연을 줄이며 CAN 버스 데이터를 전송할 때 안정성을 향상시킬 수 있습니다.

대역폭 절약

MQTT를 통해 CAN 버스 데이터를 전송할 때 일반적으로 제한된 대역폭으로 약한 네트워크 환경에서 전송해야 합니다. 따라서 데이터의 크기를 최소화해야 합니다.

eKuiper 싱크에서 format옵션을 사용하여 데이터 형식을 지정할 수 있습니다. 기본 형식은 입니다 JSON. 이를 변경하여 protobuf데이터를 이진 형식으로 직렬화하여 데이터 크기를 크게 줄일 수 있습니다. 또한 compress옵션을 사용하여 데이터를 압축 gzip하거나 다른 압축 방법을 사용할 수 있습니다. 이러한 방식으로 데이터 크기를 원래 JSON 데이터보다 훨씬 작게 만들 수 있습니다. 테스트 사례 중 하나에서 데이터를 일괄 전송할 때 데이터 크기를 90% 이상 줄일 수 있습니다.

실시간 데이터

클라우드 애플리케이션의 경우 차량 사고 진단에 사용되는 데이터와 같이 일부 데이터는 시간에 민감합니다. 이 경우 대기 시간을 줄이는 것이 매우 중요합니다. eKuiper 규칙에서 MQTT 싱크를 사용하여 데이터를 EMQX로 신속하게 전송하여 효율적인 데이터 전송 요구를 충족할 수 있습니다.

실시간 시나리오에서 대역폭을 절약하기 위해 위에서 설명한 대로 eKuiper MQTT 싱크에서 직렬화 형식 및 압축 방법을 설정할 수 있습니다. EMQX는 클라우드 애플리케이션이 코드를 작성하지 않고 실시간으로 데이터를 처리할 수 있도록 데이터를 압축 해제하고 역직렬화할 수 있는 규칙 엔진을 제공합니다.

데이터를 파일에 일괄 저장

긴급하게 처리되지 않는 데이터의 경우 파일이나 로컬 데이터베이스에 저장한 다음 일괄적으로 클라우드로 보낼 수 있습니다. 이렇게 하면 더 높은 압축률을 얻을 수 있으므로 더 많은 대역폭을 절약할 수 있습니다. eKuiper 규칙에서는 파일 싱크를 사용하여 데이터를 로컬에 저장하고 압축할 수 있습니다. 파일 싱크는 10분마다 롤링과 같은 파일 롤링 정책 설정을 지원하므로 데이터를 파일에 배치로 저장할 수 있습니다. EMQX는 MQTT로 파일을 전송하는 새로운 기능을 개발하고 있습니다. 이 기능이 완료되면 저장된 파일을 MQTT로 전송할 수 있습니다. 현재 사용자는 다른 도구를 사용하여 파일을 클라우드로 전송할 수 있습니다.

발문

이 기사에서는 eKuiper 및 EMQX를 사용하여 차량에서 클라우드로 CAN 버스 데이터를 수집, 처리 및 전송하는 방법을 소개합니다. 다음 기사에서는 각 단계에 대해 자세히 설명합니다.

저작권 진술: 이 기사는 EMQ의 원본입니다. 재인쇄하려면 출처를 명시하십시오.

원본 링크: https://www.emqx.com/zh/blog/can-bus-how-it-works-pros-and-cons

추천

출처blog.csdn.net/emqx_broker/article/details/131439317