我偶然发现了一个使用 CANopen 的有趣解决方案。设备安装在 DIN 导轨上,主站通过 TBUS 连接器连接到多个从站。在这种情况下,它们的排列方式应如下:|M| - |S1| - |S2| - ... - |Sn|。
同时,主机能够以某种方式确定从设备与总线的确切物理连接顺序,并将其显示在用户界面上。每个设备都会根据物理顺序自动分配一个逻辑ID(不同于节点ID),并在与服务器通信时使用该逻辑ID。这几乎实现了“即插即用”的效果,无需额外的手动配置即可更换或添加设备。
我知道如何利用 LSS 自动分配节点 ID。但我想知道如何确定设备连接到总线的物理顺序。也许有人遇到过类似的情况,可以告诉我如何实现?
仅靠 CAN 总线是不行的。
我设计过类似的系统,在我的例子中,我通过在 CAN 总线外部添加额外的信号来解决这个问题。基本上,所有节点之间都采用“菊花链”信号连接,每个节点串联一个晶体管。每个节点在收到来自前一个节点的外部信号的 OK 之前,不会通过 CAN 向主节点报告,这使得它们按顺序启动,并使主节点始终知道物理顺序。