Witam,
mając nawet wiele układów w tej magistrali, jeśli zdecydujesz się np na takie rozwiązanie, że jeden z nich będzie masterem i to on będzie zarządzał magistralą to możesz to zorganizować np w taki sposób:
Wybierasz sobie Mastera i to on cyklicznie co jakiś ustalony przez ciebie czas odpytuje (adresując uprzednio zapytanie) kolejne układy typu Slave. Jeśli Slave widzi, że przychodzi zapytanie ale nie ma w nim jego adresu to siedzi poprostu cicho
Oczywiście nic nie stoi na przeszkodzie aby Slave w czasie zapytania od Mastera i po udzieleniu mu odpowiedzi - sam nie zapytał o coś Mastera i poczekał na odpowiedź - po czym dopiero wysłałby do Mastera info, że to już wszystko i on zwalnia magistralę. Wtedy Master ponawia cykl - zapytaniem do kolejnego Slave'a
.... jeśli natomiast koniecznie chciałbyś mieć możliwość aby każdy mógł gadać z każdym w "dowolnej" chwili tak aby nie było kolizji to można to zrobić także w oparciu o poprzedni model, tzn Master wysyła zapytanie do SLAVE'a i udziela mu czasu w magistrali do momentu gdy nie załatwi on swoich spraw czyli nie zada pytań tym układom z których potrzebuje zassać jakieś dane. Po zrobieniu wszystkiego zwraca kontrolę do Mastera a ten jeśli sam nie ma żadnych pytań to przekazuje "pałeczkę" lub określa się taką wymianę zezwolenia "żeton" lub "token" do kolejnage Slave'a. Oczywiście trzeba sobie założyć jakieś maksymalne długie czasy w ciągu których taki Slave może gadać na magistrali i jeśli je przekroczy to Master się wkurzy i po upłynięciu czasu TimeOut zabierze mu TOKEN, może to spowodować kolizję, ale w każdego Slave'a trzeba wbudować mechanizm, że gdy dojdzie do kolizji to ma przestać nadawać, i uznać że stracił TOKEN czyli buzia w kubeł i siedzieć cicho

- to jest też ważne w przypadku gdy poprostu taki Slave gdy otrzyma akurat TOKEN - umrze, spali się itp
.... oczywiście to jest tylko jakaś propozycja, choć podobna do rozwiązania w sieciach ArcNet. W nich jest tak, że każdy układ w magistrali po kolei dostaje TOKEN - robi swoje i przekazuje go następnemu o wyższym adresie. A ten o najwyższym adresie po załatwieniu swoich spraw przekazuje go pod najniższy adres poza zerowym, który służy do rozgłaszania ... to tak w ogólnym skrócie

...
jak więc widzisz wszystko zależy od twojej inwencji a napisanie do tego jakiegoś softu nie powinno graniczyć z cudem. Trzeba tylko albo opracować swój własny standard, czasem prosty - taki na swoje potrzeby albo skorzystać z gotowca jak zdaje się ModBus itp..
ja taki protokół opieram na tzw ramkach. Tzn każda informacja przesyłana jest w postaci ramki o konkretnej strukturze gdzie np na początku są jakieś 2 znaczniki startu, później adres układu dla którego jest ona przeznaczona, potem komenda, potem ilość bajtów danych, które teraz będą lecieć a zaraz po tej ilości właśnie bajty tych danych

a na końcu jedna albo ze dwie sumy kontrolne
pozdrawiam