Encontrei uma solução interessante que utiliza CANopen. Os dispositivos são montados em um trilho DIN, e o mestre é conectado a vários escravos por meio de conectores TBUS. Neste caso, eles devem ser organizados da seguinte forma: |M| - |S1| - |S2| - ... - |Sn|.
Ao mesmo tempo, de alguma forma, a unidade principal consegue determinar a ordem exata da conexão física dos dispositivos escravos ao barramento e exibi-la na interface do usuário. Cada dispositivo recebe automaticamente um ID lógico (diferente do ID do nó), dependendo da ordem física, que é então usado na comunicação com o servidor. Isso proporciona um efeito virtualmente "plug & play", permitindo que um dispositivo seja substituído ou adicionado sem a necessidade de configuração manual adicional.
Entendo como é possível atribuir IDs de nó automaticamente usando LSS. Mas gostaria de saber como determinar a ordem física de conexão dos dispositivos ao barramento. Alguém já passou por algo semelhante e pode me dizer como implementar isso?