可以还是不能? 还是为什么需要微控制器网络?

我不得不问自己这个问题大约十年前或更早。 要做的工作是使控制室重获新生。 在整个墙壁上都是这样,由灯泡和带开关的开关组成。 我想自从灯泡问世以来就一直假设屏蔽罩一直是正确的,因为那时的开关可能已经为人所知。 通常,渴望美丽的人来自远古的人们。


现在,许多人会更喜欢显示面板而不是屏蔽罩。 但是,是否会有大多数的展示粉丝取决于我们很多未知因素。 但是现在这不是这个。


任何可以讲五分钟的电线的人都会立即告诉我,屏蔽层由放置开关和灯泡的平板以及带有多根电线的盒子组成。 毕竟,没有电线的灯泡只能适合愚蠢地将其打破,或者,如果您创造性地提出来并发挥您的想象力,请将其放在最好奇的地方,并迅速找出急诊室在哪里。


仅此而已,一束电线将盒子留在开关和灯泡上,只有灯泡很小。 显然,是著名的灯泡Ilyich的孙女。


我记得现在,看着窗外,就是21世纪。 因此,有必要以不同的方式重新进行所有操作。 代替灯泡-经济的LED。 代替电线-接线。 因此,代替一个抽屉-许多很多的小抽屉,控制器。


事实证明,如果每个控制器可以为四个LED和两个开关提供服务,那么这将是最佳选择。 我的意思是,并不那么恐怖。 如果电源总线和信息总线通过所有控制器,则只有四根电线,则将出现一定的宽限期。 事实证明,控制器将需要104件。 以友好的方式,这里有必要摆姿势和解决旅行商的问题。 然后,也许控制器会花更少的钱。 但这不是好的。


到那时,我已经知道CAN是什么,我对Bosch的尊重程度远高于体面的餐厅厨师或整洁的家庭主妇。 我敢肯定,宝马汽车制造商甚至去拜访了博世的工程师。


在我看来,正如外国人所说,管制员区域网络作为一种技术解决方案,源于人们对做某件事的渴望,最终,一切都很好。 我不会隐瞒,当您掌握了两卷标准时,您将不会立刻感受到工程师工作成果的所有魅力,但是要花很多时间。 与目击者交谈时,采访证人。 现在有更多的卷,但是也许您可以立即从第三个卷开始,因为现在称为CAN_FD。 但是,让我继续。


甚至在与屏蔽碰撞之前,我还不得不遇到其他人在使用CAN方面的工程决策,并且犯了我的错误。 错误通常出现在阅读说明和学习说明之间。 好吧,只有第二次他们看起来像耙子。


现在,对于那些容忍书呆子而不认为自己是敌人的读者来说,这是几千个单词。


可以将RS485安装在以前使用双绞线电缆的地方。 双绞线不是必不可少的条件,比较起来很方便。 使用双绞线电缆,CAN以及RS485,您可以将消息从控制控制器发送到从站并接收响应。 相似之处令人惊讶,但让我们更好地关注差异。 对于某些读者,某些差异可能带有负号。 但是我建议他们不要沮丧,而要回顾罗蒙诺索夫的法律。


得益于协议的同步组织,可以说,总线上的冲突解决是在硬件中动态实现的。 下面指出这将导致什么,以及给不安的工程师带来什么。


您可以不经请求就收到一条消息。
无需等待答案准备就绪,此时您可以询问其他人。
从控制器也可以询问并获得答案。
由于同步操作,CAN总线的长度与传输速度成反比。
最高速度为1 MBaud(途中为10)。
发送方知道在紧接最后一位之后的传输过程中消息并未失真。 更确切地说,公交车上的每个人都知道这一点。
如果该消息失真了一个,则该尝试将不被所有人计算在内。
如果该消息已发送到总线,则订户将仅在该消息已损坏的情况下才接收它。
总线上的控制器数量不应超过127。


消息的长度受到限制。 它们由一个标识符,一个长度指示符(以字节为单位)和一个数据块组成,该数据块与指示的字节数完全相同。 还有一些服务位,但请保持安静,因为该服务应该不会太麻烦。 标识符的大小可以为11或29位。 数据块可以包含0到8个字节(途中为64个字节)。


具体来说,我会给出一些数字。 如果您想以1Mbaud的速度工作,则总线长度不应超过35米(有些人更喜欢40米,也就是更热)。 如果您需要在8 km的距离上传输某些东西,则速度不应超过5 kbaud。 顺便说一句,读者有权问为什么是千百种而不是千百种? 因为并非所有波特都变成比特。 这样的东西。


我该如何处置所有这些绝密成分? 那些在所有方面都看过骰子游戏的人会立即记住,有一个很棒的事物,例如CANopen以及许多更漂亮的组合和缩写,没有什么可以重新发明轮子的。 所以我经常想回答:“难道不是两个人自己煮早餐的两个鸡蛋里的煎鸡蛋看起​​来像自行车吗? 为什么不去餐饮服务吃煎蛋卷呢?” 但是我最好保持沉默,并继续前进,不要被听众的喊叫分散注意力。


在那些日子里,当尚未发明29位标识符时,只有11位。 一些人开始使用它在此处填充所需数据类型的名称(数字)。 其他用作正在访问的控制器的地址。 两者都有道理。 例如,您可能会问:


  • 亲爱的,给我们装一公升纸包装的十三年城堡。

大概:


  • 请给我包起来,右边底部搁板中隐藏的是什么。
    顺便说一句,在CAN中,该设计也可以工作:


  • 对所有人撒谎! 您很快便将书架上的所有物品都放进了我的书包。
    但是这种设计通常不使用,因为之后您必须等待一段时间。
    等待所有答案一一列出并提供给请求控制器。 如果已经,我们已经离开了电影。
    就我而言,我对标识符作为地址的变体感到满意。 在这11位中,需要7位,还剩下4位,以使某些消息比其他消息更紧急,并将某些控制器标记为主要控制器。
    某些不便之处是从RS485迁移过来的,也就是说,必须在每个控制器上手动设置地址。 然后检查并重新安装。 也许返回上一步并重复。
    幸运的是,到那时,已经存在两种情况。



首先,一个29位的标识符已经出现。 其次,许多微控制器制造商开始考虑每个芯片都有其唯一且相当长的数量这一良好形式的条件。


现在,在长标识符中,可以安全地将24位分配给唯一地址。 另外还有5辆,以确保火车在紧迫性,方向(向后,向后),餐厅车和舒适度更高的车方面有所不同。


如果您停止鬼混而变得严肃,请致电下属控制员代理,然后致电其他老板,则可以创建表。 她将稍后再显示。


有关寻址的更多信息。 通常,唯一的芯片号占用的位数远远超过24,例如,使用STM32FXXX的位数为96。 因此,您需要以某种方式获得96个中的24个。我选择了XOR操作。 您可以选择其他选项,但是仍然会出现一些问题。 这些是归约后的地址匹配。


发生此问题的可能性非常小,但是确实如此。 它可以解决,但会增加安装程序的工作量。 在此必须记住,CAN消息可能根本不包含数据。 这对我们做出决定很有用。 它由以下操作组成。


控制控制器(老板)发送所有代理必须响应的广播请求(这是一个零地址请求)。 数据长度为零且地址匹配的回复消息不会互相破坏,而是以一个的形式到达老板。


现在剩下的工作是计算已收到多少个答案,应该收到多少个答案。 如果这两个数字重合,则说明一切正常。 如果答案少于控制器,则地址是重合的,并且调节器会起作用。 如果答案比控制器多,那么您需要考虑一篇论文,因为您正处于发现的边缘。


如果将消息长度的变化视为其含义的某种变化,则可以获取其他功能,如果妈妈不打电话吃饭,我稍后会告诉您。


另一个有趣的一点是,如果同时使用长标识符和短标识符,则可以获取例如组地址或部分广播的请求。 但是我们还不会深入。


让我们回到标识符的编码。


为了寻址,在扩展标识符中分配了24位,在标准标识符中分配了6位。 将为扩展标识符广播一个值为0x000000的地址。 对于标准标识符,空地址(其6位)也被视为广播。 长标识符和短标识符中的五个前导(高)位称为标头,影响消息的含义,并用字母NVADR表示:



当然,对于控制面板,仅需要实施该方案的一部分。 在第一个带屏蔽的项目中(或在屏蔽层上,对吗?),使用了NXP的Cortex芯片,在下一个项目中(有一些),则使用了意法半导体的M0。


关于使用简短标识符的几句话。 分配用于寻址的那六个位不寻址控制器,而是寻址组。 开始时,该组的所有人零。 接下来,配置代理,然后将它们中的一些或全部成为其组的成员。 现在向小组提出了要求,我们得到了我们在该小组中收集的那些特工的回复。


现在,介绍一下如果您以不同的数据长度来解释消息时所添加的内容。 例如,如上所述,零长度查询对调试很有帮助。 长度为3的请求为16384字节的可变空间提供服务,长度为4的请求也提供相同的服务,但该请求用于服务于第二层CAN总线的网关代理。 该公交车可以包含一个或两个代理,但相距几公里。


同样,长度为5和6的查询也用于空间大小为4194304的两个字节的变量的空间。两位不用于寻址。 一位控制读写。 另一个发出错误信号。


接下来,7和8服务于四个字节的字。 还有4,194,304。


这些空间是所有代理程序共有的。 根据目的,它们每个仅使用变量空间的一部分。 照片中显示了用于测量两点温度的控制器。 这是用于调试和测试。



控制器通过6芯扁平电缆连接。 双重用于食物。 二十英尺的芯片是STM32F042。


背面是S30523-8封装的CAN驱动器MAX3051。
好吧,妈妈打电话吃饭。

Source: https://habr.com/ru/post/zh-CN455620/


All Articles