Довелось мне Modbus реализовывать в синтезируемом процессоре в плис. Думаю.... да зачем мне проц грузить модбасом? Считать там интервалы в 1,5 и в 3,5 символов. Сделал контроллер Modbus аппаратный. Т.е. приходит пакет, контроллер принимает, проц вообще не участвует в приеме. после пакета прошло времени в 3,5 символа и если между байтами внутри пакета не было пауз в 1,5 символа и если совпал crc и если адрес "мой", то контроллер выставляет прерывание процессору. процессор знает в каком месте его озу лежит готовый принятый пакет. Проц парсит пакет, обрабатывает, записывает в определённое место озу ответ и дает контроллеру "старт". Контроллер выплёвывает ответ в уарт, сам считает и отправляет crc. Контроллер сам управляет ногами DE/RE драйвера RS485. С таким контроллером работать с модбасом - ну просто красота. Доставляет.
Протокол не новый и достаточно распространённый, не менее чем CAN. Но если нету плис - то и нету контроллера. вот и возник вопрос - не придумали ли ещё готовый, законченный контроллер MODBUS в каком нить SOIC-8? Или может существует какой-нибудь АРМ в котором есть аппаратный контроллер modbus?
|