W dniu 2019-12-28 o 21:39, J.F. pisze:
Wypowiadam się w kontekście RS485 a nie modbus. Można tak zrobić protokół na RS485, że 'natychmiast' ma przyjść potwierdzenie, że ramka dotarła, a odpowiedź na nią (wymagająca np. czasochłnnego wyszukania czegoś w pamięci) zostanie przysłana jako osobna transmisja inicjowana przez drugą stronę. W międzyczasie magistrala jest dostępna dla innych urządzeń, które mogą mieć 'coś do wysłania'. Urządzenie odbierające zna format ramki więc wie który bajt będzie ostatni i może się odezwać zaraz po jego bitach stopu.
Kiedyś dawno testowaliśmy kiedy UART informuje o odebraniu bajtu. Wyszło nam, że zarówno na PC jak i procku już gdzieś w połowie pierwszego bitu stopu (niezależnie czy format jest ustawiony na jeden, czy dwa bity stopu) bajt jest już 'odebrany'. Jeśli w czasie 1.5 bitu stopu da się sprawdzić ramkę (czy do mnie i crc) to praktycznie od razu po jej zakończeniu można zacząć wysyłać potwierdzenie.
Ja nie piszę, że wysyłanie natychmiast potwierdzenia jest rozsądne, piszę tylko, że tak da się zrobić. Według mnie rozsądniejsze (ze względu na zajętość szyny) jest założenie, że ramka doszła i kiedyś tam przyjdzie odpowiedź (nie koniecznie w pierwszej ramce jaka się pojawi). Brak odpowiedzi w określonym czasie to inny temat.
Chyba demonizujesz problem przełączenia kierunku. To trwa tyle ile zbocze sygnału cyfrowego :) P.G.