AN451
무선 M-버스 소프트웨어 구현
소개
이 애플리케이션 노트에서는 Silicon Labs C8051 MCU 및 EZRadioPRO®를 사용한 Silicon Labs의 무선 M-Bus 구현에 대해 설명합니다. 무선 M-버스는 868MHz 주파수 대역을 사용하는 검침 애플리케이션을 위한 유럽 표준입니다.
레이어 쌓기
무선 M-Bus는 3레이어 OSI 모델의 하위 집합인 7레이어 IEC 모델을 사용합니다(그림 1 참조).
물리(PHY) 계층은 EN 13757-4에 정의되어 있습니다. 물리 계층은 비트가 인코딩 및 전송되는 방식, RF 모뎀 특성(칩 속도, 프리앰블 및 동기화 워드), RF 매개변수(변조, 중심 주파수 및 주파수 편차)를 정의합니다.
PHY 계층은 하드웨어와 펌웨어의 조합을 사용하여 구현됩니다. EZRadioPRO는 모든 RF 및 모뎀 기능을 수행합니다. EZRadioPRO는 패킷 핸들러와 함께 FIFO 모드에서 사용됩니다. MbusPhy.c 모듈은 SPI 인터페이스, 인코딩/디코딩, 블록 읽기/쓰기 및 패킷 처리를 제공하고 트랜시버 상태를 관리합니다.
M-Bus 데이터 링크 계층은 MbusLink.c 모듈에서 구현됩니다. M-Bus 애플리케이션 프로그래밍 인터페이스는 메인 스레드의 애플리케이션 계층에서 호출할 수 있는 공용 함수로 구성됩니다. MbusLink 모듈은 데이터 링크 계층도 구현합니다. 데이터 링크 계층은 애플리케이션 TX 버퍼의 데이터를 형식화하고 MbusPhy TX 버퍼로 복사하여 필요한 헤더와 CRC를 추가합니다.
애플리케이션 계층 자체는 M-버스 펌웨어의 일부가 아닙니다. 애플리케이션 계층은 전송을 위해 다양한 데이터의 형식을 지정하는 방법을 정의합니다. 대부분의 계량기는 한두 가지 유형의 데이터만 전송하면 됩니다. 모든 종류의 데이터를 계량기에 수용하기 위해 대량의 코드를 추가하면 계량기에 불필요한 코드와 비용이 추가됩니다. 라이브러리나 헤더를 구현하는 것이 가능할 수도 있습니다. file 데이터 유형의 전체 목록이 있습니다. 그러나 대부분의 계량 고객은 어떤 종류의 데이터를 전송해야 하는지 정확히 알고 있으며 세부 형식 지정에 대한 표준을 참조할 수 있습니다. 범용 판독기 또는 스니퍼는 PC GUI에서 완전한 애플리케이션 데이터 유형 세트를 구현할 수 있습니다. 이러한 이유로 애플리케이션 계층은 ex를 사용하여 구현됩니다.amp미터 및 판독기에 대한 응용 프로그램입니다.
필수 표준
- EN 13757-4
EN 13757-4
계량기 통신 시스템 및 계량기 원격 검침 시스템
파트 4: 무선 측정기 판독
868MHz ~ 870MHz SRD 대역에서 작동하기 위한 복사계 판독값 - EN 13757-3
계량기 통신 시스템 및 계량기 원격 검침 시스템
3부: 전용 애플리케이션 계층 - IEC 60870-2-1:1992
원격제어 장비 및 시스템
파트 5: 전송 프로토콜
섹션 1:링크 전송 절차 - IEC 60870-1-1:1990
원격제어 장비 및 시스템
파트 5: 전송 프로토콜
섹션 1: 전송 프레임 형식
정의
- M-버스—M-Bus는 유럽의 검침용 유선 표준입니다.
- 무선 M-버스—유럽의 검침 애플리케이션을 위한 무선 M-버스.
- 물리—물리적 계층은 데이터 비트와 바이트가 인코딩되고 전송되는 방식을 정의합니다.
- API—응용 프로그래머 인터페이스.
- 링크-데이터 링크 계층은 블록과 프레임이 전송되는 방법을 정의합니다.
- CRC—순환 중복 검사.
- FSK—주파수 편이 키잉.
- 칩-전송되는 데이터의 최소 단위. 하나의 데이터 비트는 여러 칩으로 인코딩됩니다.
- 기준 치수-AC 코드 소스 .c file.
M-버스 PHY 기능 설명
프리앰블 시퀀스
M-버스 사양에 명시된 프리앰블 시퀀스는 0과 1이 교대로 나타나는 정수입니다. 1은 더 높은 주파수로 정의되고 0은 더 낮은 주파수로 정의됩니다.
nx (01)
Si443x의 프리앰블 옵션은 XNUMX과 XNUMX이 교대로 구성되는 정수 니블 수입니다.
nx (1010)
추가 선행 프리앰블이 있는 프리앰블은 문제가 되지 않지만, 동기화 워드와 페이로드가 1비트 잘못 정렬될 수 있습니다.
해결책은 변조 제어 2 레지스터(0x71)에 엔진 비트를 설정하여 전체 패킷을 반전시키는 것입니다. 이렇게 하면 프리앰블, 동기화 워드 및 TX/RX 데이터가 반전됩니다. 따라서 TX 데이터를 쓰거나 RX 데이터를 읽을 때 데이터가 반전되어야 합니다. 또한 동기화 워드는 Si443x 동기화 워드 레지스터에 쓰기 전에 반전됩니다.
동기화 워드
EN-13757-4에서 요구하는 동기화 워드는 모드 S 및 모드 R의 경우 18칩, 모델 T의 경우 10칩입니다. Si443x의 동기화 워드는 1~4바이트입니다. 그러나 동기화 단어 앞에는 항상 프리앰블이 오기 때문에 프리앰블의 마지막 443비트는 동기화 단어의 일부로 간주될 수 있습니다. 따라서 첫 번째 동기화 단어는 XNUMX과 XNUMX의 세 번의 반복으로 채워집니다. 동기화 워드는 SiXNUMXx 레지스터에 쓰기 전에 보완됩니다.
표 1. 모드 S 및 모드 R의 동기화 워드
EN 13757-4 | 00 | 01110110 | 10010110 | 이진법 |
00 | 76 | 96 | 마녀 | |
패드 (01) x 3 | 01010100 | 01110110 | 10010110 | 이진법 |
54 | 76 | 96 | 마녀 | |
보어 | 10101011 | 10001001 | 01101001 | 이진법 |
AB | 89 | 69 | 마녀 |
표 2. 모드 T 미터와 기타 미터의 동기화 워드
동조 | 동조 | 동조 |
단어 | 단어 | 단어 |
3 | 2 | 1 |
프리앰블 길이 전송
최소 프리앰블은 네 가지 작동 모드에 대해 지정됩니다. 지정된 것보다 긴 서문을 갖는 것은 허용됩니다. 프리앰블용 칩 443개를 빼면 Si0x 프리앰블용 최소 칩 수가 제공됩니다. 구현에서는 프리앰블 감지 및 상호 운용성을 향상시키기 위해 모든 짧은 프리앰블 모드에서 프리앰블의 두 가지 추가 니블을 추가합니다. 긴 서문이 있는 모드 S의 서문은 매우 깁니다. 따라서 최소 프리앰블이 사용됩니다. 니블 단위의 프리앰블 길이는 프리앰블 길이(34x3) 레지스터에 기록됩니다. 프리앰블 길이 레지스터는 전송 시에만 프리앰블을 결정합니다. 최소 사양과 프리앰블 길이 설정은 표 XNUMX에 요약되어 있습니다.
표 3. 전송 프리앰블 길이
EN-13757-4 최저한의 | Si443x 프리앰블 설정 | 동조 단어 | 총 | 추가의 | |||
nx (01) | 작은 조각 | 간식 | 작은 조각 | 작은 조각 | 작은 조각 | 작은 조각 | |
모드 S 짧은 프리앰블 | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
모드 S 긴 프리앰블 | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
모드 T(미터-기타) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
모드 R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
수신을 위한 최소 프리앰블은 프리앰블 감지 제어 레지스터(0x35)에 의해 결정됩니다. 수신 시 지정된 최소 프리앰블에서 동기 워드의 비트 수를 빼서 사용 가능한 프리앰블을 결정해야 합니다. 수신기의 최소 정착 시간은 AFC가 활성화된 경우 16칩이고 AFC가 비활성화된 경우 8칩입니다. 또한 프리앰블 감지 제어 레지스터의 최소 설정을 결정하기 위해 사용 가능한 프리앰블에서 수신기 정착 시간을 뺍니다.
잘못된 프리앰블의 확률은 프리앰블 감지 제어 레지스터의 설정에 따라 달라집니다. 8개 칩으로 짧게 설정하면 몇 초마다 잘못된 프리앰블이 감지될 수 있습니다. 권장되는 20개 칩 설정으로 잘못된 프리앰블 감지가 발생하지 않습니다. 모드 R 및 모드 SL의 프리앰블 길이는 권장 설정을 사용할 만큼 충분히 깁니다.
프리앰블이 20개 이상의 칩을 감지하도록 하면 이점이 거의 없습니다.
프리앰블이 짧은 Model S와 Model T에서는 AFC가 비활성화됩니다. 이렇게 하면 수신기 정착 시간이 줄어들고 프리앰블 감지 설정이 더 길어집니다. AFC가 비활성화되면 모드 T는 권장 설정인 20개 칩을 사용할 수 있습니다. 짧은 프리앰블이 있는 Model S에는 4니블 또는 20칩 설정이 사용됩니다. 이로 인해 이 모델의 잘못된 프리앰블 감지 확률이 약간 높아집니다.
표 4. 프리앰블 감지
EN-13757-4 최저한의 | 동조 단어 | 쓸 수 있는 전문 | RX 정착 | 감지하다 분 | Si443x 프리앰블 감지 설정 | |||
nx (01) | 작은 조각 | 작은 조각 | 작은 조각 | 작은 조각 | 작은 조각 | 간식 | 작은 조각 | |
모드 S 짧은 프리앰블 | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
모델 S 긴 서문 | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
모델 T(미터-기타) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
모드 R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*메모: AFC 비활성화됨 |
수신기는 지정된 최소 프리앰블을 사용하여 송신기와 상호 운용되도록 구성됩니다. 이를 통해 수신기는 모든 M 버스 호환 송신기와 상호 운용됩니다.
무선 M-Bus 사양에서는 모드 S1에 대해 최소 558개 칩의 매우 긴 프리앰블이 필요합니다. 프리앰블을 전송하는 데 약 17ms가 소요됩니다. Si443x는 그렇게 긴 프리앰블을 필요로 하지 않으며 긴 프리앰블의 이점을 얻지 못합니다. 긴 프리앰블은 모드 S2에서는 선택 사항으로 표시되지만 Si443x에서는 긴 프리앰블을 사용할 이유가 없습니다. 단방향 통신이 필요한 경우 모드 T1은 더 짧은 프리앰블, 더 높은 데이터 속도 및 더 긴 배터리 수명을 제공합니다. 모드 S2를 사용한 양방향 통신이 필요한 경우 짧은 프리앰블을 권장합니다.
긴 프리앰블이 있는 Model S의 감지 임계값은 짧은 프리앰블이 있는 Model S에 대해 전송된 프리앰블 니블 수보다 길다는 점에 유의하세요. 이는 긴 프리앰블 모드 S 수신기가 짧은 프리앰블 모드 S 송신기에서 프리앰블을 감지하지 않음을 의미합니다. 이는 긴 프리앰블 모드 S 수신기가 긴 프리앰블로부터 이점을 얻으려면 필요합니다.
짧은 프리앰블 모드 S 수신기는 프리앰블을 감지하고 짧은 프리앰블 모드 S 모두에서 패킷을 수신합니다.
송신기 및 긴 프리앰블 모드 S 송신기; 따라서 일반적으로 검침기는 짧은 프리앰블 모드 S 수신기 구성을 사용해야 합니다.
인코딩/디코딩
무선 M-버스 사양에는 두 가지 다른 인코딩 방법이 필요합니다. 맨체스터 인코딩은 모드 S 및 모드 R에 사용됩니다. 맨체스터 인코딩은 모델 T의 상대방-미터 링크에도 사용됩니다. 모델 T 미터-기타 링크는 3개 인코딩 중 6개를 사용합니다.
1. 맨체스터 인코딩/디코딩
맨체스터 인코딩은 간단하고 저렴한 모뎀을 사용하여 강력한 클록 복구 및 추적을 제공하기 위해 역사적으로 RF 시스템에서 일반적이었습니다. 그러나 Si443x와 같은 최신 고성능 라디오에는 맨체스터 인코딩이 필요하지 않습니다. 맨체스터 인코딩은 주로 기존 표준과의 호환성을 위해 지원되지만 맨체스터 인코딩을 사용하지 않으면 Si443x의 데이터 속도가 사실상 두 배가 됩니다.
Si443x는 하드웨어에서 전체 패킷의 맨체스터 인코딩 및 디코딩을 지원합니다. 불행하게도 동기화 단어는 맨체스터 인코딩이 아닙니다. 동기화 단어에 대해 잘못된 맨체스터 시퀀스가 의도적으로 선택되었습니다. 이로 인해 맨체스터 인코딩은 Si443x를 포함한 대부분의 기존 라디오와 호환되지 않습니다. 결과적으로 맨체스터 인코딩 및 디코딩은 MCU에서 수행되어야 합니다. 인코딩되지 않은 데이터의 각 바이트는 XNUMX개의 데이터 비트로 구성됩니다. 맨체스터 인코딩을 사용하면 각 데이터 비트가 XNUMX칩 기호로 인코딩됩니다. 인코딩된 데이터는 한 번에 XNUMX개의 칩을 무선 FIFO에 기록해야 하므로 한 번에 하나의 데이터 니블이 인코딩되어 FIFO에 기록됩니다.
표 5. 맨체스터 인코딩
데이터 | Ox12 | 0x34 | 바이트 | ||
Ox1 | 0x2 | 0x3 | 0x4 | 간식 | |
1 | 10 | 11 | 100 | 이진법 | |
칩 | 10101001 | 10100110 | 10100101 | 10011010 | 이진법 |
선입선출(FIFO) | 옥스A9 | 옥스A6 | 옥스A5 | 옥스9A | 마녀 |
전송될 각 바이트는 한 번에 한 바이트씩 인코딩 바이트 기능에 전달됩니다. 인코딩 바이트 함수는 인코딩 니블 함수를 두 번 호출합니다. 먼저 가장 중요한 니블에 대해 호출한 다음 가장 중요하지 않은 니블에 대해 호출합니다.
소프트웨어에서의 맨체스터 인코딩은 어렵지 않습니다. 최상위 비트부터 시작하여 "01" 칩 시퀀스로 인코딩됩니다. 10은 "16" 칩 시퀀스로 인코딩됩니다. 이는 루프를 사용하고 각 기호에 대해 XNUMX비트를 이동하여 쉽게 수행할 수 있습니다. 그러나 각 니블에 대해 간단한 XNUMX개 항목 조회 테이블을 사용하는 것이 더 빠릅니다. encode Manchester nibble 함수는 데이터 니블을 인코딩한 다음 이를 FIFO에 씁니다. 반전된 프리앰블 요구 사항을 고려하기 위해 FIFO에 쓰기 전에 칩이 반전됩니다.
수신 시 FIFO의 각 바이트는 8개의 칩으로 구성되며 하나의 데이터 니블로 디코딩됩니다. 블록 읽기 기능은 FIFO에서 한 번에 한 바이트씩 읽고 바이트 디코딩 기능을 호출합니다. 반전된 프리앰블 요구 사항을 고려하기 위해 FIFO에서 읽은 후 칩이 반전됩니다. 맨체스터(Manchester) 인코딩 칩의 각 바이트는 한 조각의 데이터로 디코딩됩니다. 디코딩된 니블은 쓰기 니블 RX 버퍼 기능을 사용하여 RX 버퍼에 기록됩니다.
인코딩과 디코딩 모두 한 번에 하나의 데이터 니블이 즉시 수행된다는 점에 유의하세요. 버퍼로 인코딩하려면 인코딩되지 않은 데이터 크기의 두 배에 해당하는 추가 버퍼가 필요합니다. 인코딩 및 디코딩은 지원되는 가장 빠른 데이터 속도(초당 100개 칩)보다 훨씬 빠릅니다. Si443x는 FIFO에 대한 다중 바이트 읽기 및 쓰기를 지원하므로 단일 바이트 읽기 및 쓰기만 사용하면 약간의 오버헤드가 있습니다. 오버헤드는 10개의 인코딩된 칩에 대해 약 100μs입니다. 이점은 512바이트의 RAM 절약입니다.
2. XNUMX개 중 XNUMX개 인코딩 디코딩
EN-13757-4에 지정된 Three-out-of-Six 인코딩 방법은 MCU의 펌웨어에도 구현됩니다. 이 인코딩은 미터에서 다른 미터로의 고속(초당 100k 칩) 모드 T에 사용됩니다. Model T는 무선 계량기 중 가장 짧은 전송 시간과 가장 긴 배터리 수명을 제공합니다.
전송될 데이터의 각 바이트는 두 개의 니블로 나뉩니다. 가장 중요한 니블이 먼저 인코딩되어 전송됩니다. 다시 말하지만, 이는 인코딩 니블 함수를 두 번 호출하는 인코딩 바이트 함수를 사용하여 구현됩니다.
각 데이터 니블은 8칩 기호로 인코딩됩니다. XNUMX개 칩 기호의 시퀀스는 XNUMX칩 FIFO에 기록되어야 합니다.
인코딩 중에 6바이트의 데이터가 6개의 니블로 인코딩됩니다. 각 니블은 XNUMX칩 기호입니다. XNUMX개의 XNUMX칩 기호는 XNUMX바이트로 집계됩니다.
표 6. XNUMX개 중 XNUMX개 인코딩
데이터 | 0x12 | 0x34 | 바이트 | ||||
Ox1 | 0x2 | 0x3 | 0x4 | 간식 | |||
칩 | 15 | 16 | 13 | 34 | 8진법 | ||
1101 | 1110 | 1011 | 11100 | 이진법 | |||
선입선출(FIFO) | 110100 | 11100010 | 11011100 | 이진법 | |||
0x34 | 옥스E2 | 옥스DC | 마녀 |
소프트웨어에서 16중 XNUMX 인코딩은 XNUMX개의 중첩된 함수를 사용하여 구현됩니다. 인코딩 바이트 함수는 인코딩 니블 함수를 두 번 호출합니다. 인코딩 니블 기능은 XNUMX개 칩 기호에 대한 조회 테이블을 사용하고 해당 기호를 Shift Three of Six 기능에 씁니다. 이 기능은 소프트웨어에서 XNUMX칩 시프트 레지스터를 구현합니다. 기호는 시프트 레지스터의 최하위 바이트에 기록됩니다. 레지스터가 왼쪽으로 두 번 이동합니다. 이것은 세 번 반복됩니다. 시프트 레지스터의 상위 바이트에 완전한 바이트가 있으면 반전되어 FIFO에 기록됩니다.
데이터의 각 바이트는 1.5바이트로 인코딩되므로 처음에 인코딩된 바이트가 정확하도록 시프트 레지스터를 지우는 것이 중요합니다. 패킷 길이가 홀수인 경우 모든 바이트를 인코딩한 후에도 시프트 레지스터에는 여전히 하나의 니블이 남아 있습니다. 이는 다음 섹션에서 설명하는 것처럼 포스트앰블로 처리됩니다.
인코딩된 64개 중 16개를 디코딩하는 것은 반대 절차입니다. 디코딩 시 XNUMX개의 인코딩된 바이트가 XNUMX개의 데이터 바이트로 디코딩됩니다. 소프트웨어 시프트 레지스터는 디코딩된 데이터의 바이트를 집계하는 데 다시 사용됩니다. XNUMX개 항목의 역순 조회 테이블이 디코딩에 사용됩니다. 이는 더 적은 사이클을 사용하지만 더 많은 코드 메모리를 사용합니다. 해당 기호에 대한 XNUMX개 항목 조회 테이블을 검색하는 데는 상당히 오랜 시간이 걸립니다.
포스트앰블
무선 M-버스 사양에는 포스트앰블 또는 트레일러에 대한 특정 요구 사항이 있습니다. 모든 모드에서 최소 칩은 8개, 최대 칩은 XNUMX개입니다. FIFO의 최소 원자 단위는 XNUMX바이트이므로 모드 S와 모드 R에는 XNUMX칩 트레일러가 사용됩니다. 모드 T 포스트앰블은 패킷 길이가 짝수인 경우 XNUMX칩이고, 패킷 길이가 홀수인 경우 XNUMX칩입니다. 홀수 패킷 길이에 대한 XNUMX칩 포스트앰블은 최소 XNUMX개의 교번 칩을 갖는 요구 사항을 충족합니다.
표 7. 포스트앰블 길이
포스트앰블 길이(칩) | |||||
분 | 최대 | 구현 | 칩 순서 | ||
모드 S | 2 | 8 | 8 | 1010101 | |
모드 T | 2 | 8 | 4 | (이상한) | 101 |
8 | (심지어) | 1010101 | |||
모드 R | 2 | 8 | 8 | 1010101 |
패킷 핸들러
Si443x의 패킷 핸들러는 가변 패킷 폭 모드 또는 고정 패킷 폭 모드에서 사용할 수 있습니다. 가변 패킷 폭 모드에는 동기화 단어 뒤에 패킷 길이 바이트와 선택적 헤더 바이트가 필요합니다. 수신 시 라디오는 길이 바이트를 사용하여 유효한 패킷의 끝을 결정합니다. 전송 시 라디오는 헤더 바이트 뒤에 길이 필드를 삽입합니다.
무선 M-버스 프로토콜의 L 필드는 Si443x 길이 필드에 사용할 수 없습니다. 첫째, L 필드는 실제 패킷 길이가 아닙니다. CRC 바이트 또는 인코딩을 포함하지 않는 링크 계층 페이로드 바이트 수입니다. 둘째, L 필드 자체는 맨체스터 인코딩 또는 모드 T 미터에 대한 XNUMX개 중 XNUMX개 인코딩을 사용하여 인코딩됩니다.
구현에서는 전송 및 수신 모두에 대해 고정 패킷 너비 모드의 패킷 처리기를 사용합니다. 전송 시 PHY 계층은 전송 버퍼의 L 필드를 읽고 포스트앰블을 포함하여 인코딩된 바이트 수를 계산합니다. 전송될 인코딩된 바이트의 총 수는 패킷 길이 레지스터(0x3E)에 기록됩니다.
수신 시 처음 두 개의 인코딩된 바이트가 디코딩되고 L 필드가 수신 버퍼에 기록됩니다. L-필드는 수신할 인코딩된 바이트 수를 계산하는 데 사용됩니다. 그러면 수신될 인코딩된 바이트 수가 패킷 길이 레지스터(0x3E)에 기록됩니다. 포스트앰블은 폐기됩니다.
MCU는 L 필드를 디코딩하고, 인코딩된 바이트 수를 계산하고, 가능한 가장 짧은 패킷 길이가 수신되기 전에 패킷 길이 레지스터에 값을 써야 합니다. PHY 계층에 허용되는 가장 짧은 L-필드는 9이며, 인코딩되지 않은 12바이트를 제공합니다. 이는 모델 T에 대해 18개의 인코딩된 바이트를 제공합니다. 처음 16바이트는 이미 디코딩되었습니다. 따라서 패킷 길이 레지스터는 100kbps 또는 1.28밀리초의 8051바이트 시간으로 업데이트되어야 합니다. 20 MIPS에서 실행되는 XNUMX의 경우 이는 문제가 되지 않습니다.
수신되는 바이트 수에는 홀수 패킷 길이의 모드 T 패킷에 사용되는 255칩 포스트앰블을 제외하고 포스트앰블이 포함되지 않습니다. 따라서 수신기는 모델 T의 홀수 길이 패킷을 제외하고는 포스트앰블을 필요로 하지 않습니다. 이 포스트앰블은 인코딩된 바이트의 정수를 제공하는 데에만 필요합니다. 포스트앰블의 내용은 무시됩니다. 따라서 포스트앰블이 전송되지 않으면 0개의 노이즈 칩이 수신되고 무시됩니다. 인코딩된 바이트의 총 개수는 XNUMX(XNUMXxFF)로 제한되므로 구현 시 다양한 모드에 대한 최대 L 필드가 제한됩니다.
표 8. 패킷 크기 제한
인코딩됨 | 디코딩됨 | M버스 | ||||
바이트 | 바이트 | L-필드 | ||||
12월 | 마녀 | 12월 | 마녀 | 12월 | 마녀 | |
모드 S | 255 | FF | 127 | 7 화씨 | 110 | 6E |
모드 T(미터-기타) | 255 | FF | 169 | A9 | 148 | 94 |
모드 R | 255 | FF | 127 | 7 화씨 | 110 | 6E |
이러한 제한은 일반적으로 무선 측정기의 일반적인 사용 사례보다 훨씬 높습니다. 가능한 최고의 배터리 수명을 얻으려면 패킷 길이를 작게 유지해야 합니다.
또한 사용자는 수신해야 하는 최대 L 필드(USER_RX_MAX_L_FIELD)를 지정할 수 있습니다. 이는 수신 버퍼(USER_RX_BUFFER_SIZE)에 필요한 크기를 결정합니다.
최대 255개의 L 필드를 지원하려면 290바이트의 수신 버퍼와 최대 581개의 맨체스터 인코딩 바이트가 필요합니다. 패킷 처리기를 비활성화해야 하며 이 경우 패킷 길이 레지스터를 사용할 수 없습니다. 이는 가능하지만 가능하면 패킷 처리기를 사용하는 것이 더 편리합니다.
FIFO 사용
Si4431은 전송 및 수신을 위한 64바이트 FIFO를 제공합니다. 인코딩된 바이트 수가 255개이므로 인코딩된 패킷 전체가 64바이트 버퍼에 맞지 않을 수 있습니다.
전염
전송 시 인코딩된 총 바이트 수가 계산됩니다. 포스트앰블을 포함하여 인코딩된 바이트의 총 수가 64바이트 미만인 경우 전체 패킷이 FIFO에 기록되고 패킷 전송 인터럽트만 활성화됩니다. 대부분의 짧은 패킷은 한 번의 FIFO 전송으로 전송됩니다.
인코딩된 바이트 수가 64보다 큰 경우 패킷을 전송하려면 여러 FIFO 전송이 필요합니다. 처음 64바이트는 FIFO에 기록됩니다. 패킷 전송 및 TX FIFO 거의 비어 있음 인터럽트가 활성화됩니다. TX FIFO 거의 비어 있음 임계값은 16바이트(25%)로 설정됩니다. 각 IRQ 이벤트가 발생하면 상태 2 레지스터가 읽혀집니다. Packet Sent 비트가 먼저 확인되고, 패킷이 완전히 전송되지 않은 경우 다음 48바이트의 인코딩된 데이터가 FIFO에 기록됩니다. 이는 모든 인코딩된 바이트가 기록되고 패킷 전송 인터럽트가 발생할 때까지 계속됩니다.
1. 접수
수신 시 처음에는 Sync Word 인터럽트만 활성화됩니다. 동기화 워드를 수신한 후 동기화 워드 인터럽트가 비활성화되고 FIFO 거의 가득 참 인터럽트가 활성화됩니다. FIFO 거의 가득 참 임계값은 처음에 2바이트로 설정됩니다. 첫 번째 FIFO 거의 가득 참 인터럽트는 두 개의 길이 바이트가 수신된 시기를 아는 데 사용됩니다. 길이가 수신되면 길이가 디코딩되고 인코딩된 바이트 수가 계산됩니다. 그러면 RX FIFO 거의 가득 참 임계값이 48바이트로 설정됩니다. RX FIFO가 거의 가득 차고 유효한 패킷 인터럽트가 활성화되었습니다. 다음 IRQ 이벤트가 발생하면 상태 1 레지스터가 읽혀집니다. 먼저 Valid Packet 비트를 확인한 다음 FIFO Almost Full 비트를 확인합니다. RX FIFO 거의 가득 참 비트만 설정된 경우 FIFO에서 다음 48바이트를 읽습니다. 유효한 패킷 비트가 설정되면 패킷의 나머지 부분이 FIFO에서 읽혀집니다. MCU는 읽은 바이트 수를 추적하고 마지막 바이트 이후 읽기를 중지합니다.
데이터 링크 계층
데이터 링크 계층 모듈은 13757-4:2005 호환 링크 계층을 구현합니다. LINK(데이터 링크 계층)는 PHY(물리 계층)와 AL(애플리케이션 계층) 사이에 인터페이스를 제공합니다.
데이터링크 계층은 다음과 같은 기능을 수행합니다.
- PHY와 AL 간 데이터를 전송하는 기능 제공
- 나가는 메시지에 대한 CRC를 생성합니다.
- 수신 메시지에서 CRC 오류를 감지합니다.
- 물리적 주소 지정 제공
- 양방향 통신 모드에 대한 전송을 승인합니다.
- 프레임 데이터 비트
- 수신 메시지에서 프레이밍 오류를 감지합니다.
링크 레이어 프레임 형식
EN 13757-4:2005에 사용된 무선 M-Bus 프레임 형식은 IEC3-3-60870의 FT5(프레임 유형 2) 프레임 형식에서 파생되었습니다. 프레임은 하나 이상의 데이터 블록으로 구성됩니다. 각 블록에는 16비트 CRC 필드가 포함됩니다. 첫 번째 블록은 L-필드, C-필드, M-필드, A-필드를 포함하는 12바이트의 고정 길이 블록입니다.
- L-필드
L-필드는 링크 계층 데이터 페이로드의 길이입니다. 여기에는 L 필드 자체나 CRC 바이트가 포함되지 않습니다. 여기에는 L 필드, C 필드, M 필드 및 A 필드가 포함됩니다. 이는 PHY 페이로드의 일부입니다.
인코딩된 바이트 수가 255바이트로 제한되어 있으므로 M 필드에 지원되는 최대 값은 맨체스터 인코딩 데이터의 경우 110바이트이고 모드 T Three-Out-of-Six 인코딩 데이터의 경우 148바이트입니다.
링크 계층은 전송 시 L-필드 계산을 담당합니다. 링크 계층은 수신 시 L 필드를 사용합니다.
L-필드는 PHY 페이로드 길이나 인코딩된 바이트 수를 나타내지 않습니다. 전송 시 PHY는 PHY 페이로드 길이와 인코딩된 바이트 수를 계산합니다. 수신 시 PHY는 L 필드를 디코딩하고 디코딩할 바이트 수를 계산합니다. - C-필드
C 필드는 프레임 제어 필드입니다. 이 필드는 프레임 유형을 식별하고 링크 데이터 교환 서비스 프리미티브에 사용됩니다. C 필드는 프레임 유형(SEND, CONFIRM, REQUEST 또는 RESPOND)을 나타냅니다. SEND 및 REQUEST 프레임의 경우 C 필드는 CONFIRM 또는 RESPOND가 예상되는지 여부를 나타냅니다.
기본 Link TX 기능을 사용하는 경우 C의 모든 값을 사용할 수 있습니다. 링크 서비스 프리미티브를 사용할 때 C 필드는 EN 13757-4:2005에 따라 자동으로 채워집니다. - M-필드
M 필드는 제조업체의 코드입니다. 제조업체는 다음 주소로 3자리 코드를 요청할 수 있습니다. web 주소: http://www.dlms.com/flag/INDEX.HTM 5자리 코드의 각 문자는 0비트로 인코딩됩니다. 40비트 코드는 ASCII 코드에서 5x15("A")을 빼면 얻을 수 있습니다. XNUMX비트 코드 XNUMX개가 연결되어 XNUMX비트가 됩니다. 최상위 비트는 XNUMX입니다. - A필드
주소 필드는 각 장치에 대한 고유한 6바이트 주소입니다. 고유 주소는 제조업체에서 할당해야 합니다. 각 장치에 고유한 6바이트 주소가 있는지 확인하는 것은 각 제조업체의 책임입니다. 전송 및 요청 프레임의 주소는 측정기 또는 기타 장치의 자체 주소입니다. 확인 및 응답 데이터 프레임은 원래 장치의 주소를 사용하여 전송됩니다. - CI분야
CI 필드는 애플리케이션 헤더이며 애플리케이션 데이터 페이로드의 데이터 유형을 지정합니다. EN13757-4:2005에서는 제한된 수의 값을 지정하지만 Link Service Primitives에서는 모든 값을 사용할 수 있습니다. - 한국어:
CRC는 EN13757-4:2005에 지정되어 있습니다.
CRC 다항식은 다음과 같습니다.
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
M-Bus CRC는 각 16바이트 블록에 대해 계산됩니다. 결과적으로 16바이트의 데이터마다 전송되는 데 18바이트가 필요합니다.
추가 정보
링크 레이어 구현에 대한 자세한 내용은 "AN452: 무선 M-Bus 스택 프로그래머 가이드"를 참조하세요.
전원 관리
그림 2는 계량기의 전력 관리 타임라인을 보여줍니다.amp모드 T1을 사용합니다.
에너지를 절약하려면 가능할 때마다 MCU는 절전 모드에 있어야 합니다. 이 전에서amp즉, RTC가 실행 중일 때, 무선 크리스탈 시작을 기다릴 때, FIFO에서 전송할 때 MCU는 절전 모드입니다. MCU는 포트 일치 깨우기에 연결된 EZRadioPRO IRQ 신호에서 깨어납니다.
한 블록보다 긴 메시지를 전송할 때 MCU는 FIFO를 채우기 위해 깨어나고(거의 비어 있는 FIFO 인터럽트를 기준으로) 다시 절전 모드로 전환해야 합니다.
MCU는 ADC에서 읽을 때 저전력 발진기 또는 버스트 모드 발진기에서 실행되는 유휴 모드에 있어야 합니다. ADC에는 SAR 시계가 필요합니다.
사용하지 않을 때 EZRadioPRO는 SDN 핀이 하이로 구동된 상태에서 종료 모드에 있어야 합니다. 이를 위해서는 MCU에 유선 연결이 필요합니다. EZ Radio Pro 레지스터는 종료 모드에서 유지되지 않습니다. 따라서 EZRadioPro는 RTC 간격마다 초기화됩니다. 무선을 초기화하는 데는 100μs 미만이 걸리고 400nA가 절약됩니다. 그 결과 10초 간격을 기준으로 10μJ의 에너지가 절약됩니다.
EZRadioPRO 크리스털은 POR에 약 16ms가 걸립니다. 이는 약 XNUMX개 블록에 대한 CRC를 계산하기에 충분한 길이입니다. 크리스털이 안정화되기 전에 모든 CRC가 완료되면 MCU는 다시 절전 모드로 전환됩니다. 암호화가 필요한 경우 수정 발진기를 기다리는 동안 암호화도 시작할 수 있습니다.
MCU는 대부분의 작업에 대해 저전력 발진기를 사용하여 20MHz에서 실행되어야 합니다. 정확한 시간 초과가 필요한 작업은 절전 모드 대신 정밀 발진기와 유휴 모드를 사용해야 합니다. RTC는 대부분의 작업에 충분한 해상도를 제공합니다. T2 미터 ex의 전원 관리 타임라인amp파일 애플리케이션은 그림 3에 나와 있습니다.
트랜시버 구현은 측정기가 깨어나고 리더가 없는 일반적인 경우에 맞게 최적화되어야 합니다. 최소/최대 ACK 타임아웃은 C8051F930 RTC를 사용하고 MCU를 절전 모드로 전환하는 것이 가능하도록 충분히 길다.
절전 모드를 사용할 필요가 없는 주 전원 또는 USB 전원 리더를 위한 빌드 옵션이 제공됩니다. 절전 모드 대신 유휴 모드가 사용되므로 USB 및 UART가 MCU를 방해할 수 있습니다.
단순 스튜디오
MCU 및 무선 도구, 문서, 소프트웨어, 소스 코드 라이브러리 등에 대한 원클릭 액세스입니다. Windows에서 사용 가능,
맥과 리눅스!
![]() | ![]() | ![]() | ![]() |
IoT 포트폴리오 www.silabs.com/IoT | SW/HW www.silabs.com/simplicity | 품질 www.silabs.com/quality | 지원 및 커뮤니티 커뮤니티.실랩스.com |
부인 성명
Silicon Labs는 Silicon Labs 제품을 사용하거나 사용하려는 시스템 및 소프트웨어 구현자에게 사용 가능한 모든 주변 장치 및 모듈에 대한 최신, 정확하고 심층적인 문서를 고객에게 제공하고자 합니다. 특성화 데이터, 사용 가능한 모듈 및 주변 장치, 메모리 크기 및 메모리 주소는 각 특정 장치를 참조하며 제공되는 "일반적인" 매개변수는 다른 애플리케이션에서 다를 수 있으며 실제로 다릅니다. 애플리케이션 examp여기에 설명된 파일은 단지 설명을 위한 것입니다. Silicon Labs는 여기에 포함된 제품 정보, 사양 및 설명을 추가 통지 및 제한 없이 변경할 수 있는 권리를 보유하며 포함된 정보의 정확성이나 완전성에 대해 보증하지 않습니다. Silicon Labs는 여기에 제공된 정보의 사용 결과에 대해 어떠한 책임도 지지 않습니다. 본 문서는 집적 회로를 설계하거나 제조하기 위해 본 문서에 따라 부여된 저작권 라이센스를 암시하거나 표현하지 않습니다. 이 제품은 Silicon Labs의 구체적인 서면 동의 없이 생명 유지 시스템 내에서 사용하도록 설계되거나 승인되지 않았습니다. "생명 지원 시스템"은 생명 및/또는 건강을 지원하거나 유지하기 위한 모든 제품 또는 시스템으로, 이것이 실패할 경우 심각한 개인 부상이나 사망을 초래할 것으로 합리적으로 예상할 수 있습니다. Silicon Labs 제품은 군사용으로 설계되거나 승인되지 않았습니다. Silicon Labs 제품은 어떠한 경우에도 핵무기, 생물학 무기, 화학 무기 또는 그러한 무기를 운반할 수 있는 미사일을 포함하되 이에 국한되지 않는 대량 살상 무기에 사용되어서는 안 됩니다.
상표 정보
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® 및 Silicon Labs 로고®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro 로고 및 그 조합, "세계에서 가장 에너지 친화적인 마이크로컨트롤러", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® 및 기타 제품은 Silicon Labs의 상표 또는 등록 상표입니다. ARM, CORTEX, Cortex-M3 및 엄지 손가락은 ARM Holdings의 상표 또는 등록 상표입니다. Keil은 ARM Limited의 등록 상표입니다. 여기에 언급된 기타 모든 제품 또는 브랜드 이름은 해당 소유자의 상표입니다.
실리콘 연구소 주식회사
400 웨스트 세자르 차베스
오스틴, 텍사스 78701
미국
http://www.silabs.com
문서 / 리소스
![]() | SILICON LABS 무선 M-BUS 소프트웨어 구현 AN451 [PDF 파일] 사용자 가이드 SILICON LABS, C8051, MCU 및 EZRadioPRO, 무선 M-버스, 무선, M-BUS, 소프트웨어, 구현, AN451 |