BISA atau tidak BISA? Atau mengapa saya membutuhkan jaringan mikrokontroler?

Saya harus bertanya pada diri sendiri pertanyaan ini sekitar sepuluh tahun yang lalu atau lebih. Pekerjaan yang harus dilakukan adalah memberikan kehidupan kedua ke ruang kontrol. Ini adalah hal semacam itu di seluruh dinding, terdiri dari bola lampu dan sakelar dengan sakelar. Saya pikir saya tidak akan salah berasumsi bahwa perisai telah dilakukan sejak munculnya bohlam, karena sakelar pada saat itu mungkin sudah diketahui. Dan keinginan untuk kecantikan, secara umum, datang kepada orang-orang dari zaman kuno yang jauh.


Sekarang banyak yang lebih suka tampilan panel daripada perisai. Tetapi apakah akan ada mayoritas penggemar layar tergantung pada banyak hal yang tidak kita ketahui. Tapi sekarang ini bukan tentang itu.


Siapa pun yang dapat berbicara tentang kabel listrik selama lima menit akan segera memberi tahu saya bahwa perisai terdiri dari panel datar tempat sakelar dan bohlam ditempatkan, serta sebuah kotak dengan banyak kabel. Bagaimanapun, bola lampu tanpa kabel hanya cocok untuk mematahkannya dengan bodoh atau, jika Anda muncul secara kreatif dan menghidupkan imajinasi Anda, letakkan di tempat paling ingin tahu di mulut Anda dan segera cari tahu di mana ruang gawat darurat.


Itu saja, sekelompok kabel meninggalkan kotak ke sakelar dan lampu, hanya umbi yang kecil. Rupanya, cucu dari bola lampu terkenal Ilyich.


Dan sekarang, saya ingat, melihat keluar jendela, dan ada abad ke-21. Oleh karena itu, perlu untuk melakukan semuanya secara baru dan dengan cara yang berbeda. Alih-alih lampu - LED ekonomis. Alih-alih kabel - kabel. Alih-alih satu laci - banyak, banyak laci kecil, pengontrol, oleh karena itu.


Ternyata jika setiap pengontrol dapat melayani empat LED dan dua sakelar, maka ini akan terlihat optimal. Maksudku, tidak terlalu menakutkan. Dan jika bus listrik dan bus informasi melewati semua pengendali, hanya ada empat kabel, maka rahmat tertentu akan muncul. Ternyata pengendali akan membutuhkan 104 buah. Dengan cara yang ramah, di sini akan perlu untuk berpose dan memecahkan masalah salesman keliling. Dan kemudian, mungkin, pengendali akan menghabiskan lebih sedikit. Tapi itu tidak baik.


Pada saat itu saya sudah tahu apa itu CAN dan tingkat rasa hormat saya kepada Bosch jauh lebih tinggi daripada koki restoran yang layak atau ibu rumah tangga yang rapi. Dan produsen mobil BMW, saya yakin, bahkan pergi mengunjungi insinyur Bosch.


Jaringan Area Pengendali, seperti yang akan dikatakan orang asing, menurut saya, sebagai solusi teknis, muncul dari keinginan untuk melakukan sesuatu, akhirnya, dengan baik. Saya tidak akan bersembunyi, Anda tidak akan merasakan semua pesona hasil karya insinyur segera ketika Anda menguasai dua volume standar, tetapi jauh kemudian. Saat Anda berbicara dengan saksi mata, wawancarai saksi. Sekarang ada lebih banyak volume, tetapi mungkin Anda dapat segera mulai dari yang ketiga, karena sekarang disebut CAN_FD. Namun, biarkan saya melanjutkan.


Bahkan sebelum tabrakan dengan perisai, saya harus menghadapi keputusan rekayasa orang lain tentang penggunaan CAN, serta membuat kesalahan saya. Kesalahan biasanya muncul di antara instruksi membaca dan mempelajari deskripsi. Nah, itu baru kedua kalinya mereka terlihat seperti menyapu.


Sekarang beberapa ribu kata untuk pembaca, yang toleran terhadap kutu buku dan tidak menganggap mereka musuh.


BISA dapat diinstal di mana RS485 sebelumnya bekerja pada kabel twisted pair. Twisted pair bukanlah kondisi yang sangat diperlukan, cukup mudah untuk membandingkan. Menggunakan kabel twisted pair, via CAN, serta melalui RS485, Anda dapat mengirim pesan dari pengontrol kontrol ke slave dan menerima respons. Kesamaannya mencolok, tetapi mari kita lebih fokus pada perbedaan. Beberapa perbedaan mungkin membawa tanda minus bagi sebagian pembaca. Tetapi saya akan menyarankan mereka untuk tidak marah, tetapi untuk mengingat hukum Lomonosov.


Berkat organisasi protokol yang sinkron, resolusi tabrakan pada bus diimplementasikan dalam perangkat keras, on the fly, sehingga untuk berbicara. Di bawah ini dicatat apa yang menyebabkan dan apa yang membuat insinyur gelisah.


Anda dapat menerima pesan tanpa permintaan.
Tidak perlu menunggu sampai jawabannya siap, Anda dapat bertanya kepada orang lain saat ini.
Kontroler budak juga dapat bertanya dan mendapatkan jawaban.
Karena operasi sinkron, panjang bus CAN berbanding terbalik dengan kecepatan transmisi atau sesuatu seperti itu.
Kecepatan maksimum adalah 1 MBaud (10 - dalam perjalanan).
Pengirim tahu bahwa pesan belum terdistorsi selama transmisi segera setelah bit terakhir. Lebih tepatnya, semua orang di bus tahu ini.
Jika pesan terdistorsi untuk satu, upaya itu tidak dihitung oleh semua.
Jika pesan dikirim ke bus, pelanggan tidak akan menerimanya hanya dengan syarat pesan itu rusak.
Jumlah pengontrol di bus tidak boleh melebihi 127.


Panjang pesan dibatasi. Mereka terdiri dari pengidentifikasi, indikator panjang dalam byte dan blok data, dengan byte persis seperti yang ditunjukkan. Ada beberapa bit layanan lagi, tetapi mari kita tetap diam tentang mereka, karena layanan harus tidak mengganggu. Pengidentifikasi mungkin berukuran 11 atau 29 bit. Blok data dapat berisi dari 0 hingga 8 byte (64 - dalam perjalanan).


Untuk spesifiknya, saya akan berikan beberapa angka. Jika Anda ingin bekerja pada kecepatan 1Mbaud, maka panjang bus tidak boleh lebih dari 35 meter (beberapa lebih suka 40, yaitu, lebih panas). Jika Anda perlu mengirimkan sesuatu pada jarak 8 km, maka kecepatannya tidak boleh lebih dari 5 kbaud. Ngomong-ngomong, pembaca berhak bertanya mengapa kilobod, dan bukan kilobit? Karena tidak semua baud menjadi bit. Sesuatu seperti itu.


Bagaimana saya bisa membuang semua bahan rahasia ini? Mereka yang melihat permainan dadu dalam segala hal akan segera ingat bahwa ada hal yang luar biasa seperti CANopen dan banyak lagi kombinasi dan singkatan yang indah dan tidak ada yang dapat menemukan kembali roda. Jadi saya sering ingin menjawab: β€œBukankah telur goreng dari dua telur, yang banyak dimasak untuk sarapan sendiri, terlihat seperti sepeda? Mengapa tidak pergi ke layanan makanan dan mengambil telur dadar? " Tapi saya lebih baik diam dan melanjutkan tanpa terganggu oleh teriakan dari penonton.


Pada masa itu, ketika pengidentifikasi 29 bit belum ditemukan, hanya ada 11 bit. Beberapa mulai menggunakannya untuk menjejalkan nama (nomor) dari tipe data yang diinginkan di sana. Lainnya digunakan sebagai alamat pengontrol yang sedang diakses. Keduanya masuk akal. Misalnya, Anda mungkin bertanya ini:


  • Dan beri kami, sayangku, sebuah chateau tahun ketiga belas dalam satu liter kemasan kertas.

Atau lebih:


  • Bungkus saya, tolong, apa yang tersembunyi di rak bawah Anda di sebelah kanan.
    Omong-omong, di CAN desain ini juga dapat berfungsi:


  • Berbohong pada semua orang! Dan Anda dengan cepat memasukkan semuanya dari rak ke dalam tas saya.
    Namun desain ini sering tidak digunakan, karena setelah Anda harus menunggu sebentar.
    Tunggu hingga semua jawaban diurutkan satu per satu dan tersedia untuk pengontrol yang meminta. Kami sudah meninggalkan film, jika itu.
    Dalam kasus saya, saya akan senang dengan varian pengenal sebagai alamat. Dari 11 bit, 7 diperlukan, dan 4 lebih tersisa untuk membuat beberapa pesan lebih mendesak daripada yang lain, serta menandai beberapa pengendali sebagai yang utama.
    Beberapa ketidaknyamanan bermigrasi di sini dari RS485, yaitu, alamat harus ditetapkan secara manual pada setiap pengontrol. Kemudian periksa dan instal ulang. Dan mungkin kembali ke langkah sebelumnya dan ulangi.
    Untungnya, pada saat itu dua keadaan sudah ada.



Pertama, pengenal 29-bit telah muncul. Dan yang kedua adalah banyak produsen mikrokontroler mulai mempertimbangkan kondisi bahwa setiap chip memiliki nomor unik dan agak panjang sebagai bentuk yang baik.


Sekarang, dalam pengidentifikasi panjang, 24 bit dapat dialokasikan dengan aman untuk alamat unik. Lima lainnya tetap, untuk memastikan bahwa kereta berbeda dalam urgensi, arah (di sana, belakang), kehadiran mobil restoran dan mobil dengan peningkatan kenyamanan.


Jika Anda berhenti bermain-main dan menjadi serius, hubungi agen pengendali bawahan, dan bos lainnya, maka Anda dapat membuat tabel. Dia akan ditampilkan nanti.


Sedikit lagi tentang pengalamatan. Jumlah chip yang unik, sebagai suatu peraturan, menghabiskan sejumlah bit lebih dari 24, misalnya, 96 dengan STM32FXXX. Oleh karena itu, Anda harus mendapatkan 24 dari 96. Saya memilih operasi XOR. Anda dapat memilih sesuatu yang lain, tetapi sedikit masalah akan tetap ada. Ini adalah kecocokan alamat setelah pengurangan.


Kemungkinan masalah ini sangat kecil, tetapi memang begitu. Ini bisa dipecahkan, tetapi menambah pekerjaan untuk installer. Di sini harus diingat bahwa pesan CAN mungkin tidak mengandung data sama sekali. Ini berguna bagi kita saat memutuskan. Ini terdiri dari tindakan berikut.


Pengendali pengendali (bos) mengirimkan permintaan siaran yang harus ditanggapi oleh semua agen (ini adalah permintaan dengan alamat nol). Membalas pesan dengan nol panjang data dan alamat yang cocok tidak akan merusak satu sama lain, tetapi akan mencapai bos dalam bentuk satu.


Sekarang tinggal menghitung berapa banyak jawaban yang telah diterima dan berapa banyak seharusnya. Jika kedua angka ini bertepatan, maka semuanya beres. Jika ada lebih sedikit jawaban daripada pengontrol, maka ada kebetulan alamat dan ada pekerjaan untuk pengatur. Dan jika ada lebih banyak jawaban daripada pengontrol, maka Anda perlu memikirkan disertasi, karena Anda berada di ambang penemuan.


Jika perubahan panjang pesan dianggap sebagai beberapa variasi maknanya, maka Anda bisa mendapatkan fitur tambahan, yang akan saya ceritakan nanti jika ibu saya tidak menelepon untuk makan.


Hal lain yang menarik adalah bahwa jika Anda menggunakan pengidentifikasi pendek dan panjang pada saat yang sama, Anda bisa mendapatkan, misalnya, mengatasi permintaan grup atau menyiarkan sebagian. Tapi kita belum akan mendalaminya.


Mari kita kembali ke pengkodean pengenal.


Untuk keperluan pengalamatan, 24 bit dialokasikan dalam pengenal yang diperluas, dan enam dalam pengidentifikasi standar. Alamat dengan nilai 0x000000 disiarkan untuk pengenal yang diperluas. Untuk pengidentifikasi standar, alamat null (6 bit) juga dianggap disiarkan. Lima bit terkemuka (tinggi) dalam pengidentifikasi panjang dan pendek disebut header, memengaruhi makna pesan dan dilambangkan dengan huruf NVADR:



Tentu saja, untuk panel kontrol, perlu untuk mengimplementasikan hanya sebagian dari skema ini. Dalam proyek pertama dengan perisai (atau pada perisai, bagaimana?) Chip Cortex dari NXP digunakan, dan dalam proyek-proyek berikut (ada beberapa) M0 dari STMicroelectronics sudah digunakan.


Beberapa kata tentang penggunaan pengidentifikasi pendek. Keenam bit yang dialokasikan untuk mengatasi tidak mengatasi controller, tetapi grup. Pada awalnya, grup ini memiliki nol untuk semua orang. Selanjutnya, agen dikonfigurasikan, setelah itu beberapa atau semua dari mereka menjadi anggota kelompok mereka. Sekarang permintaan ke grup, kami mendapat tanggapan dari agen yang telah kami kumpulkan di grup ini.


Sekarang, sedikit tentang apa yang ditambahkan jika Anda menafsirkan pesan dengan panjang data yang berbeda secara berbeda. Sebagai contoh, permintaan panjang nol sangat membantu ketika men-debug, seperti yang disebutkan di atas. Permintaan dengan panjang 3 melayani ruang variabel 16384 byte. Permintaan dengan panjang 4 melakukan hal yang sama, tetapi ditujukan untuk agen gateway yang melayani bus CAN tingkat kedua. Bus ini dapat terdiri dari satu atau dua agen, tetapi beberapa kilometer jauhnya.


Kueri dengan panjang 5 dan 6, juga dimaksudkan untuk ruang variabel dua-byte berukuran 4194304. Dua bit tidak digunakan untuk pengalamatan. Satu bit mengontrol baca-tulis. Lainnya menandakan kesalahan.


Selanjutnya, 7 dan 8 melayani kata empat byte. Ada juga 4.194.304.


Ruang-ruang ini umum untuk semua agen. Masing-masing, tergantung pada tujuannya, hanya menggunakan segmen ruang variabel. Pengontrol untuk mengukur suhu pada dua titik ditunjukkan pada foto. Ini untuk debugging dan pengujian.



Kontroler dihubungkan dengan kabel datar untuk 6 core. Ganda digunakan untuk makanan. Chip dua puluh kaki adalah STM32F042.


Di sisi sebaliknya adalah MAX3051, driver CAN dalam paket SOT23-8.
Nah, panggilan ibu untuk makan.

Source: https://habr.com/ru/post/id455620/


All Articles