主题:【原创】简要的CAN总线学习笔记 -- Ace
简要的CAN总线学习笔记
ACE
学习完毕我彻底明白了汽车主机厂为什么辣么恐惧互联网行业通过OBD接口的“侵入”,一般人对此不能理解,因为很少有人(包括我)会花时间去仔细看一眼CAN这种日常生活中不常见的“上古神器”。学习之后我对CAN总线的评价是:1、这是一个上古神器,她的目的是低成本组网连接MCS51这样的“低能”单片机。1983年Bosch公司设计她的时候从来就没有考虑过某一天可能有能力超强的计算机会连上去,更没想过互联网这么污的东西可能会接上去;2、这是一个秩序井然、规矩分明的君子们组成的网络“完美世界”。前提是这个网络中的每个节点都是恪守规则的谦谦君子,则一切安好,根本就没有考虑过有一天可能有“捣蛋分子”出现,出现了则无能为力,搞奔溃CAN是很容易的;3、CAN的通信能力极低,低到可笑,40m以内可以做到1mbps,10KM内可以做到5kbps,这还是指总线吞吐能力,而非payload能力,用于纯粹的工业领域简单控制网络是OK的,其他就别指望了,CAN端着一个小锅只能“望洋兴叹”。不要指望H.264或者激光雷达的RAW DATA跑在CAN上,都是根本不可能的。4、始终要牢记,CAN人家原本就是个幼稚园,里面玩耍的是MCS51这样的小盆友们,x86,ARM这些博士后们就不要去捣乱了。
不破不立是现实世界里的黄金定律,够用就好。CAN如果只是用于连接少数数量单片机们用于车控和简单工业控制是够用的。她既不是令牌环网也不是802系列以太网的MACD,她比MACD要原始的多,叫做CSMA/CD –carrier sense multiple access/collision detect,简单说就是一个“官大一级压死人”的军阶系统,每次讲话(占用总线发信息)的时候谁大家就从肩章上最后一颗星星比起,发现有比自己官大就立即闭嘴转入收听模式,一直比出最牛逼的那位,他之后就可以占据总线来一发(发一帧数据)。一切都基于“君子协定”,由于网络中没有“裁判”,万一出现了两个节点的ID级别(故障或者恶意;一个ID编码可以是11bit或者29bit)一样,结果就是两个节点一起发送信息,CAN线上谁也收不到正确的信号。由于缺乏一个控制节点,CAN总线甚至没有网络节点的地址码,理论上信源信宿只有逻辑关系而无法物理区分,这就很要命(我仿佛看到了黑客宿宿们的诡异的蒙娜丽莎微笑)。另外,CAN的标准格式帧只能是44~108bit,扩展格式帧可以是64~128bit,是的,你没有看错,单位是bit,这对MCS51这样的小盆友来说已经是“巨大”且够用了。
小结:在CAN总线上,大家讲的都是言简意赅短小精悍的文言文,因为实在是带宽太小。中国古人用文言文写信也是因为羊皮卷、丝绸、龟壳、竹简太贵太重太麻烦,要是畅所欲言(放上raw data去跑),那真是罄竹难书,大刘的《三体》整一套一大片竹林都得遭殃,出版一万套估计四川的熊猫就得因此全部饿死绝种。CAN总线是美好且原始的共产主义社会,每个人克己奉公,没人有会多吃多占不守规矩,不需要警察也从没考虑防范黑客,如果有了坏分子,也没啥对策。
站在CAN的角度看我们热衷的互联网世界,实在是里面有太多坏粟粟,不仅坏而且说话太快太啰嗦。我们要理解只要汽车的控制权还在车厂手里,只要车厂们自己还没有想清楚怎么协调一致把幼稚园升级到大学级别,OBD盒子的生意必定是不受车厂待见的“Romeo must die”。 ^_^
- 相关回复 上下关系8
🙂【原创】简要的CAN总线学习笔记
🙂CAN本来就是给中控用的 10 時千峰 字1305 2017-09-11 00:38:01
🙂你们搞IT的喜欢浪费带宽,和我们工控的不一样 14 豪哥的江湖 字781 2017-09-11 00:22:55
🙂大带宽大处理量才可能带来更稳定 4 黑传说 字2379 2017-09-28 06:10:01
🙂屁孩不懂别乱说,乱pull egg. 豪哥的江湖 字138 2017-09-28 06:37:33
🙂说的就是工控! 3 黑传说 字562 2017-09-29 03:56:54
🙂你拿服务器和工控硬件比可靠性?佩服佩服 豪哥的江湖 字0 2017-09-29 11:15:50
🙂行了,摩托罗拉砖头机永远是对的,要啥智能手机 1 黑传说 字0 2017-10-04 23:41:32