logo SILIKON LABS

AN451
IMPLEMENTASI PERANGKAT LUNAK M-BUS NIRKABEL

Perkenalan

Catatan aplikasi ini menjelaskan implementasi Silicon Labs dari M-Bus Nirkabel menggunakan Silicon Labs C8051 MCU dan EZRadioPRO®. Wireless M-bus adalah Standar Eropa untuk aplikasi pembacaan meter menggunakan pita frekuensi 868 MHz.

Lapisan Tumpukan

Wireless M-Bus menggunakan model IEC 3-layer, yang merupakan subset dari model OSI 7-layer (lihat Gambar 1).

SILICON LABS Implementasi Perangkat Lunak M-BUS Nirkabel AN451Lapisan Fisik (PHY) didefinisikan dalam EN 13757-4. Lapisan fisik mendefinisikan bagaimana bit dikodekan dan ditransmisikan, karakteristik modem RF (kecepatan chip, pembukaan, dan kata sinkronisasi), dan parameter RF (modulasi, frekuensi pusat, dan penyimpangan frekuensi).
Lapisan PHY diimplementasikan menggunakan kombinasi perangkat keras dan firmware. EZRadioPRO melakukan semua fungsi RF dan modem. EZRadioPRO digunakan dalam mode FIFO dengan handler paket. Modul MbusPhy.c menyediakan antarmuka SPI, encoding/decoding, blok baca/tulis, dan penanganan paket serta mengelola status transceiver.
Lapisan link Data M-Bus diimplementasikan dalam modul MbusLink.c. Antarmuka Pemrograman Aplikasi M-Bus terdiri dari fungsi publik yang dapat dipanggil dari lapisan aplikasi di utas utama. Modul MbusLink juga mengimplementasikan Layer Data Link. Lapisan Data link akan memformat dan menyalin data dari buffer TX aplikasi ke buffer MbusPhy TX, menambahkan header dan CRC yang diperlukan.
Lapisan Aplikasi itu sendiri bukan bagian dari firmware M-bus. Lapisan aplikasi mendefinisikan bagaimana berbagai macam data diformat untuk transmisi. Kebanyakan meter hanya perlu mengirimkan satu atau dua jenis data. Menambahkan sejumlah besar kode untuk mengakomodasi segala jenis data ke meteran akan menambah kode dan biaya yang tidak perlu ke meteran. Mungkin layak untuk mengimplementasikan perpustakaan atau header file dengan daftar tipe data yang lengkap. Namun, sebagian besar pelanggan pengukuran tahu persis jenis data yang mereka perlukan untuk dikirim dan dapat merujuk ke standar untuk detail pemformatan. Pembaca atau sniffer universal mungkin mengimplementasikan satu set lengkap tipe data aplikasi pada GUI PC. Untuk alasan ini, lapisan aplikasi diimplementasikan menggunakan example aplikasi untuk meter dan pembaca.

Standar yang Diperlukan
  1. ID 13757-4
    ID 13757-4
    Sistem komunikasi untuk meter dan pembacaan meter jarak jauh
    Bagian 4: Pembacaan meter nirkabel
    Pembacaan radiometer untuk operasi di pita SRD 868 MHz hingga 870 MHz
  2. ID 13757-3
    Sistem komunikasi untuk meter dan pembacaan meter jarak jauh
    Bagian 3: Lapisan aplikasi khusus
  3. IEC 60870-2-1:1992
    Peralatan dan sistem telekontrol
    Bagian 5: Protokol transmisi
    Bagian 1: Prosedur transmisi tautan
  4. IEC 60870-1-1:1990
    Peralatan dan sistem telekontrol
    Bagian 5: Protokol transmisi
    Bagian 1: Format bingkai transmisi
Definisi
  • M-Bus—M-Bus adalah standar kabel untuk pembacaan meter di Eropa.
  • M-Bus Nirkabel—M-Bus nirkabel untuk aplikasi pembacaan meter di Eropa.
  • PENDIDIKAN—Physical Layer mendefinisikan bagaimana bit dan byte data dikodekan dan ditransmisikan.
  • API—Antarmuka Pemrogram Aplikasi.
  • TAUTAN-Data Link Layer mendefinisikan bagaimana blok dan frame ditransmisikan.
  • KKR—Pemeriksaan Redundansi Siklik.
  • FSK—Kunci Pergeseran Frekuensi.
  • keping—Unit terkecil dari data yang ditransmisikan. Satu bit data dikodekan sebagai beberapa chip.
  • Modul-Sumber kode AC .c file.

Deskripsi Fungsional M-Bus PHY

Urutan Pembukaan

Urutan Pembukaan yang ditentukan oleh spesifikasi M-bus adalah bilangan bulat bolak-balik nol dan satu. Satu didefinisikan sebagai frekuensi yang lebih tinggi, dan nol didefinisikan sebagai frekuensi yang lebih rendah.
nx (01)
Opsi Pembukaan untuk Si443x adalah bilangan bulat dari camilan yang terdiri dari satu dan nol bergantian.
nx (1010)
Pembukaan dengan pendahuluan tambahan tidak akan menjadi masalah, tetapi, kemudian, kata sinkronisasi dan muatan akan tidak selaras satu bit.
Solusinya adalah membalikkan seluruh paket dengan mengatur bit mesin di register Modulation Control 2 (0x71). Ini akan membalikkan pembukaan, kata sinkronisasi, dan data TX/RX. Akibatnya, data harus dibalik saat menulis data TX atau membaca data RX. Juga, kata sinkronisasi dibalik sebelum menulis ke register Kata Sinkronisasi Si443x.

Kata Sinkronisasi

Kata sinkronisasi yang diperlukan oleh EN-13757-4 adalah 18 chip untuk Mode S dan Mode R atau 10 chip untuk Model T. Kata sinkronisasi untuk Si443x adalah 1 hingga 4 byte. Namun, karena kata sinkronisasi selalu didahului oleh pembukaan, enam bit terakhir dari pembukaan dapat dianggap sebagai bagian dari kata sinkronisasi; jadi, kata sinkronisasi pertama diisi oleh tiga pengulangan nol diikuti oleh satu. Kata sinkronisasi dilengkapi sebelum menulis ke register Si443x.
Tabel 1. Kata Sinkronisasi untuk Mode S dan Mode R

ID 13757-4 00 01110110 10010110 biner
00 76 96 hex
pad dengan (01) x 3 01010100 01110110 10010110 biner
54 76 96 hex
melengkapi 10101011 10001001 01101001 biner
AB 89 69 hex

Tabel 2. Sinkronisasi Kata untuk Mode T Meter ke Other

SINKRONKAN SINKRONKAN SINKRONKAN
KATA KATA KATA
3 2 1
Panjang Pembukaan Transmit

Pembukaan minimum ditentukan untuk empat mode operasi yang berbeda. Pembukaan lebih panjang dari yang ditentukan dapat diterima. Mengurangi enam chip untuk pembukaan memberikan jumlah minimum chip untuk pembukaan Si443x. Implementasinya menambahkan dua tambahan preamble di semua mode preamble pendek untuk meningkatkan deteksi preamble dan interoperabilitas. Pembukaan pada Mode S dengan pembukaan yang panjang sangat panjang; jadi, pembukaan minimum yang digunakan. Panjang preamble dalam nibble ditulis ke register Preamble Length (0x34). Register panjang pembukaan menentukan pembukaan pada transmisi saja. Spesifikasi minimum dan pengaturan panjang pembukaan dirangkum dalam Tabel 3.
Tabel 3. Panjang Pembukaan Transmit

ID-13757-4
minimum
Pembukaan Si443x
Setel
Sinkronisasi
Kata
Total tambahan
nx (01) keripik camilan keripik keripik keripik keripik
Pembukaan singkat Mode S 15 30 8 32 6 38 8
Pembukaan panjang Mode S 279 558 138 552 6 558 0
Mode T (meter-lainnya) 19 38 10 40 6 46 8
Modus R 39 78 20 80 6 86 8

Pembukaan minimum untuk penerimaan ditentukan oleh register Kontrol Deteksi Pembukaan (0x35). Setelah penerimaan, jumlah bit dalam kata sinkronisasi harus dikurangi dari pembukaan minimum yang ditentukan untuk menentukan pembukaan yang dapat digunakan. Waktu penyelesaian minimum penerima adalah 16-chip jika AFC diaktifkan atau 8-chip jika AFC dinonaktifkan. Waktu penyelesaian penerima juga dikurangi dari pembukaan yang dapat digunakan untuk menentukan pengaturan minimum untuk register Kontrol Deteksi Pembukaan.

Probabilitas pembukaan palsu tergantung pada pengaturan register Kontrol Deteksi Pembukaan. Pengaturan singkat 8-chip dapat menyebabkan pembukaan palsu yang terdeteksi setiap beberapa detik. Pengaturan 20 chip yang direkomendasikan membuat deteksi pembukaan palsu menjadi peristiwa yang tidak mungkin terjadi. Panjang pembukaan untuk Mode R dan Mode SL cukup panjang untuk pengaturan yang disarankan untuk digunakan.
Ada sedikit manfaat untuk membuat deteksi pembukaan lebih dari 20 chip.
AFC dinonaktifkan untuk Model S dengan pembukaan pendek dan Model T. Ini mengurangi waktu penyelesaian penerima dan memungkinkan pengaturan deteksi pembukaan yang lebih lama. Dengan AFC dinonaktifkan, Mode T dapat menggunakan pengaturan 20 chip yang disarankan. Pengaturan 4 camilan atau 20 chip digunakan untuk Model S dengan pembukaan singkat. Hal ini membuat kemungkinan deteksi pembukaan palsu sedikit lebih tinggi untuk model ini.
Tabel 4. Deteksi Pembukaan

ID-13757-4
minimum
Sinkronisasi
Kata
dapat digunakan
pembukaan
Penyetelan RX Mendeteksi
menit
Pembukaan Si443x
Pengaturan Deteksi
nx (01) keripik keripik keripik keripik keripik camilan keripik
Pembukaan singkat Mode S 15 30 6 24 8* 16 4 16
Pembukaan panjang Model S 279 558 6 552 16 536 5 20
Model T (meter-lainnya) 19 38 6 32 8* 24 5 20
Modus R 39 78 6 72 16 56 5 20
*Catatan: AFC dinonaktifkan

Penerima dikonfigurasi untuk beroperasi dengan pemancar menggunakan pembukaan minimum yang ditentukan. Ini memastikan penerima akan beroperasi dengan pemancar yang sesuai dengan M-bus.
Spesifikasi Wireless M-Bus membutuhkan pembukaan yang sangat panjang untuk Mode S1 minimal 558 chip. Ini akan memakan waktu sekitar 17 ms hanya untuk mengirimkan pembukaan. Si443x tidak memerlukan pembukaan yang panjang dan tidak mengambil manfaat dari pembukaan yang panjang. Sementara pembukaan panjang dicatat sebagai opsional untuk Mode S2, tidak ada alasan untuk menggunakan pembukaan panjang dengan Si443x. Jika komunikasi satu arah diinginkan, Mode T1 akan memberikan pembukaan yang lebih pendek, kecepatan data yang lebih tinggi, dan masa pakai baterai yang lebih lama. Jika komunikasi dua arah menggunakan Mode S2 diperlukan, pembukaan singkat disarankan.
Perhatikan bahwa ambang deteksi untuk Model S dengan pembukaan yang panjang lebih panjang dari jumlah camilan yang ditransmisikan untuk Model S dengan pembukaan yang pendek. Ini berarti bahwa penerima Mode S preamble yang panjang tidak akan mendeteksi sebuah preamble dari pemancar Mode S preamble yang pendek. Ini diperlukan jika penerima Mode S pembukaan yang panjang akan menerima manfaat dari pembukaan yang panjang.
Perhatikan bahwa penerima Mode S preamble pendek akan mendeteksi preamble dan menerima paket dari kedua preamble pendek Mode S
pemancar dan pemancar Mode S pembukaan panjang; jadi, secara umum, pembaca meteran harus menggunakan konfigurasi penerima Mode S pembukaan singkat.

Pengkodean/Dekodean

Spesifikasi Wireless M-bus memerlukan dua metode pengkodean yang berbeda. Pengkodean Manchester digunakan untuk Mode S dan Mode R. Pengkodean Manchester juga digunakan untuk tautan meter-ke-lain di Model T. Tautan meter-ke-lain Model T menggunakan 3 dari 6 pengkodean.
1. Enkode/Dekode Manchester
Encoding Manchester secara historis umum dalam sistem RF untuk menyediakan pemulihan jam yang kuat dan pelacakan menggunakan modem yang sederhana dan murah. Namun, radio performa tinggi modern seperti Si443x tidak memerlukan encoding Manchester. Encoding Manchester didukung terutama untuk kompatibilitas dengan standar yang ada, tetapi kecepatan data untuk Si443x secara efektif digandakan jika tidak menggunakan encoding Manchester.
Si443x mendukung encoding dan decoding Manchester dari seluruh paket dalam perangkat keras. Sayangnya, kata sinkronisasi tidak dikodekan Manchester. Urutan Manchester yang tidak valid sengaja dipilih untuk kata sinkronisasi. Ini membuat pengkodean Manchester tidak kompatibel dengan sebagian besar radio yang ada, termasuk Si443x. Akibatnya, encoding dan decoding Manchester harus dilakukan oleh MCU. Setiap byte pada data yang tidak dikodekan terdiri dari delapan bit data. Menggunakan pengkodean Manchester, setiap bit data dikodekan menjadi simbol dua chip. Karena data yang dikodekan harus ditulis ke radio FIFO delapan chip sekaligus, satu gigitan data dikodekan dan ditulis ke FIFO pada satu waktu.
Tabel 5. Pengkodean Manchester

data Ox12 ukuran 0x34 byte dalam bahasa inggris
Ox1 ukuran 0x2 ukuran 0x3 ukuran 0x4 camilan
1 10 11 100 biner
kepingan 10101001 10100110 10100101 10011010 biner
Waktu tempuh 15 menit SapiA9 SapiA6 SapiA5 Sapi9A hex

Setiap byte yang akan ditransmisikan dilewatkan satu byte pada satu waktu ke fungsi byte encode. Fungsi encode byte akan memanggil fungsi encode nibble dua kali, pertama untuk nibble yang paling signifikan dan kemudian untuk nibble yang paling tidak signifikan.
Pengkodean Manchester dalam perangkat lunak tidak sulit. Mulai dari bit yang paling signifikan, satu dikodekan sebagai urutan chip "01". Sebuah nol dikodekan sebagai urutan chip "10". Ini dapat dengan mudah dicapai dengan menggunakan loop dan menggeser dua bit untuk setiap simbol. Namun, lebih cepat menggunakan tabel pencarian 16 entri sederhana untuk setiap gigitan. Fungsi encode Manchester nibble mengkodekan sebuah nibble data kemudian menulisnya ke FIFO. Chip dibalik sebelum menulis ke FIFO untuk memperhitungkan persyaratan pembukaan terbalik.
Saat menerima, setiap byte dalam FIFO terdiri dari delapan chip dan diterjemahkan menjadi satu nibble data. Fungsi blok baca membaca satu byte pada satu waktu dari FIFO dan memanggil fungsi dekode byte. Chip dibalik setelah membaca dari FIFO untuk memperhitungkan persyaratan pembukaan terbalik. Setiap byte chip yang disandikan Manchester didekodekan ke dalam satu gigitan data. Nibble yang didekodekan ditulis ke buffer RX menggunakan fungsi buffer RX write nibble.
Perhatikan bahwa baik yang dikodekan dan dekode dilakukan satu gigitan data pada satu waktu dengan cepat. Encoding ke buffer akan membutuhkan buffer tambahan dua kali ukuran data yang tidak dikodekan. Encoding dan decoding jauh lebih cepat daripada kecepatan data tercepat yang didukung (100 k chip per detik). Karena Si443x mendukung pembacaan dan penulisan beberapa byte ke FIFO, ada sedikit overhead dalam menggunakan hanya membaca dan menulis byte tunggal. Overhead adalah sekitar 10 s untuk 100 chip yang disandikan. Manfaatnya adalah penghematan RAM sebesar 512 byte.
2. Tiga dari Enam Encoding Decoding
Metode encoding Three-out-of-Six yang ditentukan dalam EN-13757-4 juga diimplementasikan dalam firmware pada MCU. Pengkodean ini digunakan untuk kecepatan tinggi (100 k chip per detik) Mode T dari meter ke yang lain. Model T memberikan waktu transmisi terpendek dan masa pakai baterai terpanjang untuk meteran nirkabel.
Setiap byte data yang akan ditransmisikan dibagi menjadi dua nibble. Nibble yang paling signifikan dikodekan dan ditransmisikan terlebih dahulu. Sekali lagi, ini diimplementasikan menggunakan fungsi encode byte yang memanggil fungsi encode nibble dua kali.
Setiap gigitan data dikodekan menjadi simbol enam chip. Urutan simbol enam chip harus ditulis ke FIFO 8 chip.
Selama pengkodean, dua byte data dikodekan sebagai empat camilan. Setiap gigitan adalah simbol 6-chip. Empat simbol 6chip dikumpulkan sebagai tiga byte.
Tabel 6. Tiga dari Enam Pengkodean

data ukuran 0x12 ukuran 0x34 byte dalam bahasa inggris
Ox1 ukuran 0x2 ukuran 0x3 ukuran 0x4 camilan
kepingan 15 16 13 34 oktal
1101 1110 1011 11100 biner
Waktu tempuh 15 menit 110100 11100010 11011100 biner
ukuran 0x34 SapiE2 OkDC hex

Dalam perangkat lunak, pengkodean tiga dari enam diimplementasikan menggunakan tiga fungsi bersarang. Fungsi encode byte akan memanggil fungsi encode nibble dua kali. Fungsi encode nibble menggunakan tabel pencarian untuk simbol enam keping dan menulis simbol ke fungsi Shift Tiga dari Enam. Fungsi ini mengimplementasikan register geser 16-chip dalam perangkat lunak. Simbol ditulis ke byte paling tidak signifikan dari register geser. Register digeser ke kiri dua kali. Ini diulang tiga kali. Ketika byte lengkap hadir di byte atas register geser, itu dibalik dan ditulis ke FIFO.
Karena setiap byte data dikodekan sebagai satu setengah byte yang dikodekan, penting untuk mengosongkan register geser terlebih dahulu sehingga byte yang dikodekan pertama benar. Jika panjang paket adalah angka ganjil, setelah mengkodekan semua byte, masih akan ada satu gigitan tersisa di register geser. Ini ditangani dengan postamble seperti yang dijelaskan di bagian berikutnya.
Decoding tiga dari enam dikodekan adalah prosedur sebaliknya. Saat decoding, tiga byte yang dikodekan didekode menjadi dua byte data. Register geser perangkat lunak sekali lagi digunakan untuk mengumpulkan byte data yang didekodekan. Tabel pencarian terbalik 64-entri digunakan untuk decoding. Ini menggunakan lebih sedikit siklus tetapi lebih banyak memori kode. Mencari tabel pencarian 16-entri untuk simbol yang sesuai membutuhkan waktu lebih lama.
Posting
Spesifikasi M-bus Nirkabel memiliki persyaratan khusus untuk postamble atau trailer. Untuk semua mode, minimum adalah dua chip, dan maksimum adalah delapan chip. Karena unit atom minimum untuk FIFO adalah satu byte, sebuah trailer 8-chip digunakan untuk Mode S dan Mode R. Postamble Mode T adalah delapan chip jika panjang paket genap atau empat chip jika panjang paket ganjil. Postamble empat chip untuk panjang paket ganjil memenuhi persyaratan memiliki setidaknya dua chip bergantian.
Tabel 7. Panjang Postamble

Panjang Postamble (keripik)
menit maks Pelaksanaan urutan chip
Modus S 2 8 8 1010101
Modus T 2 8 4 (aneh) 101
8 (bahkan) 1010101
Modus R 2 8 8 1010101
Penanganan Paket

Handler paket pada Si443x dapat digunakan dalam mode lebar paket variabel atau mode lebar paket tetap. Mode lebar paket variabel memerlukan byte panjang paket setelah kata sinkronisasi dan byte header opsional. Setelah penerimaan, Radio akan menggunakan byte panjang untuk menentukan akhir paket yang valid. Pada transmisi, radio akan menyisipkan bidang panjang setelah byte header.
Bidang L untuk protokol M-bus nirkabel tidak dapat digunakan untuk bidang panjang Si443x. Pertama, bidang L bukanlah panjang paket yang sebenarnya. Ini adalah jumlah byte muatan lapisan tautan yang tidak termasuk byte atau penyandian CRC. Kedua, bidang L itu sendiri dikodekan menggunakan pengkodean Manchester atau pengkodean Tiga dari Enam untuk Mode T meter ke yang lain.
Implementasinya menggunakan packet handler dalam mode lebar paket tetap untuk transmisi dan penerimaan. Setelah transmisi, lapisan PHY akan membaca bidang L di buffer transmisi dan menghitung jumlah byte yang dikodekan, termasuk postamble. Jumlah total byte yang dikodekan untuk ditransmisikan ditulis ke register Panjang Paket (0x3E).
Setelah penerimaan, dua byte pertama yang dikodekan didekodekan, dan bidang-L ditulis ke buffer penerima. Bidang L digunakan untuk menghitung jumlah byte yang dikodekan yang akan diterima. Jumlah byte yang dikodekan yang akan diterima kemudian ditulis ke register Panjang Paket (0x3E). Postamble dibuang.
MCU harus memecahkan kode bidang-L, menghitung jumlah byte yang dikodekan, dan menulis nilai ke register Panjang Paket sebelum panjang paket sesingkat mungkin diterima. Bidang L terpendek yang diizinkan untuk lapisan PHY adalah 9, memberikan 12 byte yang tidak dikodekan. Ini memberikan 18 byte yang dikodekan untuk Model T. Dua byte pertama telah didekodekan. Dengan demikian, register Panjang paket harus diperbarui dalam waktu 16-byte pada 100 kbps atau 1.28 milidetik. Ini bukan masalah untuk 8051 yang berjalan pada 20 MIPS.
Jumlah byte yang akan diterima tidak termasuk postamble, kecuali postamble empat chip yang digunakan untuk paket Mode T dengan panjang paket ganjil. Dengan demikian, penerima tidak memerlukan postamble, kecuali untuk paket panjang ganjil Model T. Postamble ini diperlukan hanya untuk memberikan bilangan bulat dari byte yang dikodekan. Isi postamble diabaikan; jadi, jika postamble tidak ditransmisikan, empat chip noise akan diterima dan diabaikan. Karena jumlah total byte yang dikodekan dibatasi hingga 255 (0xFF), implementasi membatasi bidang-L maksimum untuk mode yang berbeda.
Tabel 8. Batas Ukuran Paket

dikodekan diterjemahkan Bus M
byte dalam bahasa inggris byte dalam bahasa inggris Bidang-L
Desember hex Desember hex Desember hex
Modus S 255 FF 127 7 F 110 6E
Mode T (meter-lainnya) 255 FF 169 A9 148 94
Modus R 255 FF 127 7 F 110 6E

Batasan ini biasanya jauh di atas kasus penggunaan tipikal untuk pengukur nirkabel. Panjang paket harus dijaga agar tetap kecil untuk mendapatkan masa pakai baterai sebaik mungkin.
Selain itu, pengguna dapat menentukan bidang L maksimum yang harus diterima (USER_RX_MAX_L_FIELD). Ini menentukan ukuran yang diperlukan untuk menerima buffer (USER_RX_BUFFER_SIZE).
Mendukung bidang L maksimum 255 akan membutuhkan buffer penerimaan 290 byte dan maksimum 581 byte yang dikodekan Manchester. Handler paket perlu dinonaktifkan dan register Panjang Paket tidak dapat digunakan dalam kasus itu. Hal ini layak dilakukan, tetapi akan lebih mudah menggunakan penangan paket, jika memungkinkan.

Penggunaan FIFO

Si4431 menyediakan FIFO 64 byte untuk transmisi dan penerimaan. Karena jumlah byte yang dikodekan adalah 255, seluruh paket yang disandikan mungkin tidak muat dalam buffer 64-byte.
Penularan
Pada transmisi, jumlah total byte yang dikodekan dihitung. Jika jumlah total byte yang dikodekan, termasuk postamble, kurang dari 64 byte, seluruh paket ditulis ke FIFO dan hanya interupsi paket yang dikirim yang diaktifkan. Sebagian besar paket pendek akan dikirim dalam satu transfer FIFO.
Jika jumlah byte yang dikodekan lebih besar dari 64, beberapa transfer FIFO akan diperlukan untuk mengirim paket. 64 byte pertama ditulis ke FIFO. Interupsi Paket Terkirim dan TX FIFO Hampir Kosong diaktifkan. Ambang TX FIFO Hampir Kosong diatur ke 16 byte (25%). Pada setiap acara IRQ, register status 2 dibaca. Bit Paket Terkirim diperiksa terlebih dahulu, dan, jika paket belum sepenuhnya terkirim, 48 byte berikutnya dari data yang dikodekan ditulis ke FIFO. Ini berlanjut sampai semua byte yang dikodekan telah ditulis dan interupsi Paket Terkirim terjadi.
1. Penerimaan
Pada penerimaan, awalnya, hanya interupsi Sync Word yang diaktifkan. Setelah menerima kata sinkronisasi, interupsi kata sinkronisasi dinonaktifkan dan interupsi FIFO Hampir Penuh diaktifkan. Ambang batas hampir penuh FIFO awalnya diatur ke 2 byte. Interupsi FIFO Hampir Penuh pertama digunakan untuk mengetahui kapan dua byte panjang telah diterima. Setelah panjang diterima, panjangnya didekodekan dan jumlah byte yang dikodekan dihitung. Ambang batas hampir Penuh RX FIFO kemudian diatur ke 48 byte. RX FIFO hampir penuh dan interupsi Paket Valid diaktifkan. Pada acara IRQ berikutnya, register status 1 dibaca. Pertama, bit Valid Packet dicentang, dan kemudian bit FIFO Almost Full dicentang. Jika hanya bit RX FIFO Hampir Penuh yang diatur, 48 byte berikutnya dibaca dari FIFO. Jika bit paket yang valid diset, sisa paket dibaca dari FIFO. MCU melacak berapa banyak byte yang telah dibaca dan berhenti membaca setelah byte terakhir.

Lapisan Data Link

Modul lapisan tautan data mengimplementasikan lapisan tautan yang sesuai dengan 13757-4:2005. Lapisan data link (LINK) menyediakan antarmuka antara lapisan fisik (PHY) dan lapisan aplikasi (AL).
Lapisan Data Link melakukan fungsi berikut:

  • Menyediakan fungsi yang mentransfer data antara PHY dan AL
  • Menghasilkan CRC untuk pesan keluar
  • Mendeteksi kesalahan CRC dalam pesan masuk
  • Menyediakan pengalamatan fisik
  • Mengakui transfer untuk mode komunikasi dua arah
  • Membingkai bit data
  • Mendeteksi kesalahan pembingkaian dalam pesan masuk
Format Bingkai Lapisan Tautan

Format bingkai M-Bus Nirkabel yang digunakan dalam EN 13757-4:2005 diturunkan dari format bingkai FT3 (Tipe Bingkai 3) dari IEC60870-5-2. Frame terdiri dari satu atau lebih blok data. Setiap blok mencakup bidang CRC 16-bit. Bock pertama adalah blok dengan panjang tetap 12 byte yang mencakup bidang-L, bidang-C, bidang-M, dan bidang-A.

  1. Bidang-L
    Bidang L adalah panjang payload data lapisan Link. Ini tidak termasuk bidang-L itu sendiri atau salah satu byte CRC. Itu tidak termasuk bidang-L, bidang-C, bidang-M, dan bidang-A. Ini adalah bagian dari muatan PHY.
    Karena jumlah byte yang disandikan dibatasi hingga 255 byte, nilai maksimum yang didukung untuk bidang-M adalah 110 byte untuk data yang disandikan Manchester dan 148 byte untuk data yang disandikan Mode T Three-Out-of-Six.
    Layer Link bertanggung jawab untuk menghitung L-field pada transmisi. Link-layer akan menggunakan L-field pada penerimaan.
    Perhatikan bahwa bidang-L tidak menunjukkan panjang muatan PHY atau jumlah byte yang disandikan. Setelah transmisi, PHY akan menghitung panjang payload PHY dan jumlah byte yang dikodekan. Setelah diterima, PHY akan mendekode bidang L dan menghitung jumlah byte yang akan didekode.
  2. Bidang-C
    Bidang C adalah bidang kontrol bingkai. Bidang ini mengidentifikasi jenis bingkai dan digunakan untuk primitif layanan pertukaran data tautan. Kolom C menunjukkan jenis bingkai – KIRIM, KONFIRMASI, PERMINTAAN, atau RESPON. Dalam kasus bingkai KIRIM dan PERMINTAAN, bidang C menunjukkan apakah CONFIRM atau RESPOND diharapkan.
    Saat menggunakan fungsi Link TX dasar, nilai C apa pun dapat digunakan. Saat menggunakan Link Service Primitives, bidang C diisi secara otomatis menurut EN 13757-4:2005.
  3. Bidang-M
    Bidang-M adalah kode pabrikan. Produsen dapat meminta kode tiga huruf dari berikut ini web alamat: http://www.dlms.com/flag/INDEX.HTM Setiap karakter dari kode tiga huruf dikodekan sebagai lima bit. Kode 5-bit dapat diperoleh dengan mengambil kode ASCII dan mengurangi 0x40 ("A"). Tiga kode 5-bit digabungkan untuk membuat 15-bit. Bit yang paling signifikan adalah nol.
  4. Jauh
    Bidang alamat adalah alamat 6-byte unik untuk setiap perangkat. Alamat unik harus diberikan oleh pabrikan. Setiap produsen bertanggung jawab untuk memastikan bahwa setiap perangkat memiliki alamat 6-byte yang unik. Alamat untuk bingkai Kirim dan Permintaan adalah alamat meteran atau perangkat lain. Bingkai data konfirmasi dan respons dikirim menggunakan alamat perangkat asal.
  5. Bidang CI
    Bidang CI adalah header aplikasi dan spesifik jenis data dalam payload data aplikasi. Sementara EN13757-4:2005 menentukan jumlah nilai yang terbatas, Link Service Primitives akan mengizinkan nilai apa pun untuk digunakan.
  6. CRC
    CRC ditentukan dalam EN13757-4:2005.
    Polinomial CRC adalah:
    X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
    Perhatikan bahwa M-Bus CRC dihitung pada setiap blok 16-byte. Hasilnya adalah bahwa setiap 16 byte data membutuhkan 18 byte untuk ditransmisikan,
Informasi Tambahan

Untuk informasi tambahan tentang Implementasi Lapisan Tautan, lihat “AN452: Panduan Pemrogram Stack M-Bus Nirkabel”.

Manajemen Daya

Gambar 2 menunjukkan garis waktu manajemen daya untuk meteran example menggunakan Mode T1.

MCU harus dalam mode Tidur bila memungkinkan untuk menghemat energi. Di mantan iniample, MCU sedang tidur ketika RTC sedang berjalan, ketika menunggu kristal radio start-up, dan ketika mentransmisikan dari FIFO. MCU akan bangun dari sinyal EZRadioPRO IRQ yang terhubung ke bangun Port Match.
Saat mengirimkan pesan lebih dari satu blok, MCU harus bangun untuk mengisi FIFO (berdasarkan interupsi FIFO yang hampir kosong) dan kemudian kembali tidur.
MCU harus dalam mode Idle berjalan dari osilator daya rendah atau osilator burst-mode saat membaca dari ADC. ADC membutuhkan jam SAR.
Saat tidak digunakan, EZRadioPRO harus dalam mode Shutdown dengan pin SDN yang digerakkan tinggi. Ini membutuhkan koneksi bawaan ke MCU. Register EZ Radio Pro tidak disimpan dalam mode mati; jadi, EZRadioPro diinisialisasi pada setiap interval RTC. Inisialisasi Radio membutuhkan waktu kurang dari 100 s dan menghemat 400 nA. Ini menghasilkan penghematan energi 10 J, berdasarkan interval 10 detik.
Kristal EZRadioPRO membutuhkan waktu sekitar 16 ms untuk POR. Ini cukup lama untuk menghitung CRC sekitar delapan blok. MCU akan kembali tidur jika menyelesaikan semua CRC sebelum kristal stabil. Jika enkripsi diperlukan, itu juga dapat dimulai sambil menunggu osilator kristal.
MCU harus berjalan pada 20 MHz menggunakan osilator daya rendah untuk sebagian besar tugas. Tugas yang memerlukan batas waktu yang tepat harus menggunakan osilator presisi dan mode siaga, bukan mode tidur. RTC memberikan resolusi yang cukup untuk sebagian besar tugas. Garis waktu manajemen daya untuk meteran T2 exampaplikasi le ditunjukkan pada Gambar 3.

Implementasi transceiver harus dioptimalkan untuk kasus normal saat meter bangun dan tidak ada pembaca. Batas waktu ACK minimum/maksimum cukup lama sehingga memungkinkan untuk menggunakan RTC C8051F930 dan mengalihkan MCU ke mode tidur.
Opsi build disediakan untuk pembaca daya listrik atau USB yang tidak perlu menggunakan mode tidur. Mode idle akan digunakan sebagai pengganti tidur sehingga USB dan UART dapat mengganggu MCU.

SILICON LABS Implementasi Perangkat Lunak M-BUS Nirkabel AN451-1

Studio Kesederhanaan
Akses sekali klik ke MCU dan alat nirkabel, dokumentasi, perangkat lunak, pustaka kode sumber & lainnya. Tersedia untuk Windows,
Mac dan Linux!

Portofolio IoT Kualitas
Portofolio IoT
www.silabs.com/IoT
SW/HW
www.silabs.com/kesederhanaan
Kualitas
www.silabs.com/kualitas
Dukungan dan Komunitas
komunitas.silabs.com

Penafian
Silicon Labs bermaksud untuk menyediakan dokumentasi terkini, akurat, dan mendalam bagi pelanggan mengenai semua periferal dan modul yang tersedia bagi pelaksana sistem dan perangkat lunak yang menggunakan atau bermaksud menggunakan produk Silicon Labs. Data karakterisasi, modul dan periferal yang tersedia, ukuran memori dan alamat memori merujuk pada setiap perangkat tertentu, dan parameter “Khas” yang disediakan dapat dan memang bervariasi dalam berbagai aplikasi. Contoh aplikasiampfile yang dijelaskan di sini hanya untuk tujuan ilustrasi. Silicon Labs berhak untuk membuat perubahan tanpa pemberitahuan lebih lanjut dan pembatasan informasi produk, spesifikasi, dan deskripsi di sini, dan tidak memberikan jaminan keakuratan atau kelengkapan informasi yang disertakan. Silicon Labs tidak bertanggung jawab atas konsekuensi penggunaan informasi yang diberikan di sini. Dokumen ini tidak menyiratkan atau mengungkapkan lisensi hak cipta yang diberikan di bawah ini untuk merancang atau membuat sirkuit terpadu apa pun. Produk tidak dirancang atau diizinkan untuk digunakan dalam Sistem Pendukung Kehidupan mana pun tanpa persetujuan tertulis khusus dari Silicon Labs. “Sistem Pendukung Kehidupan” adalah setiap produk atau sistem yang dimaksudkan untuk mendukung atau menopang kehidupan dan/atau kesehatan, yang, jika gagal, dapat secara wajar diharapkan mengakibatkan cedera atau kematian pribadi yang signifikan. Produk Silicon Labs tidak dirancang atau disahkan untuk aplikasi militer. Produk Silicon Labs dalam keadaan apa pun tidak boleh digunakan dalam senjata pemusnah massal termasuk (namun tidak terbatas pada) senjata nuklir, biologi, atau kimia, atau rudal yang mampu mengirimkan senjata tersebut.
Informasi Merek Dagang
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs®, dan logo Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, logo Energy Micro dan kombinasinya, “mikrokontroler paling ramah energi di dunia”, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress®, dan lainnya adalah merek dagang atau merek dagang terdaftar dari Silicon Labs. ARM, CORTEX, Cortex-M3, dan jempol adalah merek dagang atau merek dagang terdaftar dari ARM Holdings. Keil adalah merek dagang terdaftar dari ARM Limited. Semua produk atau nama merek lain yang disebutkan di sini adalah merek dagang dari pemiliknya masing-masing.logo SILIKON LABS

Laboratorium Silikon Inc.
400 Cesar Chavez Barat
Austin, TX 78701
Amerika Serikat
http://www.silabs.com

Dokumen / Sumber Daya

SILICON LABS Implementasi Perangkat Lunak M-BUS Nirkabel AN451 [Bahasa Indonesia:] Panduan Pengguna
SILICON LABS, C8051, MCU, dan, EZRadioPRO, M-bus Nirkabel, Nirkabel, M-BUS, Perangkat Lunak, Implementasi, AN451

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *