V těch úvodních odstavcích by chtělo rozlišit, o kterém CANu se mluví.
CAN má totiž několik běžně používaných fyzických vrstev: to, co popisujete, je ISO 11898-2 (tzv. High-speed CAN). Vedle toho ale existuje (a běžně se používá) standard ISO 11898-3 (tzv. Fault-tolerant CAN, nebo taky Low-speed), který je sice pomalejší, ale jinak nemá žádné z uvedených nevýhod: může mít topologii libovolnou (třeba hvězdu), zakončení neřešíte, a nejen že funguje obousměrně i když jeden drát ustřihnete a druhý nahradíte vlhkou prádelní šňůrou, ale i Vám transceivery řeknou, v kterém segmentu sítě došlo k poruše :-)
S pomalým CANem se právě často setkávám u fotovoltaiky a smart home projektů. Díky aktivnímu řízení konců to krásně zvládá odrazy a další jevy v různě pospojované síti, akorát je to pomalejší (125 kHz, ale v praxi spíš vyšší desítky).
Zde zřejmě dochází k míchání jablek s hruškama. CAN 2.0B neznačí komunikační rychlost, ale verzi protokolu.
* CAN 2.0A popisuje rámec s 11-bitový can-id.
* CAN 2.0B popisuje rozšířený rámec s 29-bitovým can-id.
A ani jedna z variant nepodporuje 2 Mbps. Max. rychlost standardního CANu je 1 Mbps. Vyšší rychlosti podporuje jen CAN-FD.
A čo povite po tomto?
22. 7. 2021
Na výrobu jedného auta je totiž potrebných až zhruba 1 500 čipov.
https://touchit.sk/arval-slovakia-akutny-nedostatok-cipov-zasadne-predlzuje-dodavku-novych-aut/355981
a Ford Focus uses roughly 300 semiconductor chips, whereas the electric Mach-e utilizes almost 3,000 semiconductor chips
https://www.google.com/search?q=how+many+chips+in+a+electric+car&client=firefox-b-d&sxsrf=ALiCzsadLvkfZVDOXYCyC7MeV3ABdF4tcQ%3A1660055158431&ei=dm7yYqO6GaKF9u8P99GCuA0&oq=How+many+chips+in+a+EV&gs_lcp=Cgdnd3Mtd2l6EAEYATIFCAAQywEyBggAEB4QFjoECCMQJzoRCC4QgAQQsQMQgwEQxwEQ0QM6CwgAEIAEELEDEIMBOggIABCABBCxAzoFCAAQgAQ6EQguEIAEELEDEIMBEMcBEK8BOgsILhCABBCxAxCDAToFCC4QgAQ6CAguEIAEENQCOg4ILhCABBCxAxCDARDUAjoFCC4QywFKBAhBGABKBAhGGABQkAVYkGFgonhoAHAAeACAAWuIAZgPkgEEMjEuMpgBAKABAcABAQ&sclient=gws-wiz
This Car Runs on Code (rok 2010)
The avionics system in the F-22 Raptor, the current U.S. Air Force frontline jet fighter, consists of about 1.7 million lines of software code. The F-35 Joint Strike Fighter, scheduled to become operational in 2010, will require about 5.7 million lines of code to operate its onboard systems. And Boeing’s new 787 Dreamliner, scheduled to be delivered to customers in 2010, requires about 6.5 million lines of software code to operate its avionics and onboard support systems
radio and navigation system in the current S-class Mercedes-Benz requires over 20 million lines of code alone and that the car contains nearly as many ECUs as the new Airbus A380 (excluding the plane’s in-flight entertainment system). Software in cars is only going to grow in both amount and complexity. Late last year, the business research firm Frost & Sullivan estimated that cars will require 200 million to 300 million lines of software code in the near future
https://www.bu.edu/smartlighting/files/2010/01/IEEE-Spectrum_-This-Car-Runs-on-Code.pdf
9. 8. 2022, 16:30 editováno autorem komentáře
To je bulvár, srovnávat počet řádků v avionice (která je auditovaná, certifikovaná) s infotainmentem, do kterého se prostě nasype Linux, Qt a QtWebKit ve kterém se sesmolí nějaké mizerné ale laciné UI.
Jasně že to levnější a méně kritické bude mít objemnější kód, protože to vyjde podstatně levněji než mít 100% custom firmware na míru. A to říkám jako někdo, kdo se psaním nesmírně předraženého firmwaru na míru živí :-)
Pro připojení ke sběrnici CAN je v GNU/Linuxu obecně výhodnější použít převodník a SW tak, aby to bylo možné využít přes obecné rozhraní SocketCAN. Nad ním je postavená celá škála nástrojů nástrojů, ať již nízkoúrovňové pro nastavení a monitoring (can-utils, candump, cangen, ...), dále přístup z Qt z oficiálního buildu, z Pythonu (zde je i podpora pro alternativní připojení jak na GNU/Linuxu tak na WIndows). Z dalších třeba CANdevStudio, CanFestival, WireShark, ....
Pro návrh řídicích aplikací lze pak použít buď v automobilovém průmyslu často používaný Matlab/Simulink, ke kterému nabízíme RT target s korektně řešeným během pod pereemp RT jádry LinTarget.
Nebo lze použít pro grafický návrh řídicích aplikací pro GNU/Linux otevřený pysimCoder. Pro ten jsme přidali target i pro NuttX a v NuttXu jsme přidali podporu CANu třeba pro imxRT (Teensy 4.0) a levné čipy ESP32C3 a kolegové z Esspresifu náš driver portovali i pro čipy na Xtense.
Doporučuji tedy spíše adaptéry, které mají rozhraní přímo podporované v Linux mainline jádru, např. 8devices usb2can_korlan nebo i na ty levné, které se na USB tváří jen jako sériový port a mají rozumný, ideálně otevřený HW použít slcan.c. Právě v současném začleňovacím okně byl přidaný SocketCAN driver i pro ELM327. Out of tree driver zde.
Pro profesionálnější připojení ke sběrnici CAN FD třeba z FPGA nebo vlastního SoC pak se můžeme nabídnout vlastní open-source CTU CAN FD řadič. Driver právě vyšel Linux v mainline 5.19 (mainline dokumentace) VHDL návrh a driver pro starší jádra v hlavním repozitáři projektu https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core.
Desítky dalších profesionálních i experimentálních projektů na ČVUT FEL týkajících se sběrnice CAN zde https://canbus.pages.fel.cvut.cz/. Integrace do Xilinx Zynq, Intel FPGA, emulace CAN a CAN FD v QEMU.
Přehled přednášek a článků s odkazy na videa a další zdroje na přehledu pro studenty a další zájemce v přehledovém seznamu Open Technologies Research Education and Exchange Services.
jasne CANfestival je na protokol CANOpen
Ale čo mňa na CAN kartách najviac štvalo to, že
SJA 1000 je pinovo kompatibilná s
PCA82C200
ale PCA82C200 nevie CAN2.0 a potom zlosť,keď na karte s SJA1000 nefungujú 2Mbis/s. Až potom zistíte, že SJA 1000 je v doske pre už nevyrábaný radič PCA82C200 a teda funguje v kompatibilnom režime
s ním. Adlink uvádzal kartu ako SJA1000-kovú kartu
Tohle všechno už je hotové. Netřeba vynalézat kolo. Pro práci s CAN v Pythonu lze doporučit python-can, který podporuje spoustu CAN adaptérů a zároveň i standardní SocketCAN.
Pro vyšší CAN-based protokolovou vrstvu - CANopen - je tu: "pip install canopen".
Viz https://python-can.readthedocs.io/en/master/interfaces.html
Ďakujem za pekný a praktický "úvodný" článok do problematiky CAN.
Pri CAN si často spomeniem na property based testing "evangelist-u", John Hughes-a a jeho prednášku, kde spomenul pekný príklad testovania. Bola to vpodstate CAN špecifikácia (kde našli nejaké rozpory) a implementácie rôznych výrobcov (aj tam našli pár pekných chýb). Video je tuná: https://www.youtube.com/watch?v=hXnS_Xjwk2Y (aspoň si myslím, že toto je ono)
PS: Nejaký jednoduchý HW pre "sledovanie" vozového parku neexistuje? Niečo, čo "funguje out of-the-box"? (mám skúsenosť s Ruptela a Teltonika zariadeniami. Všetko pekné, ale vyžaduje windows SW, manuálnu konfiguráciu a IT človeka pri inštalácii)