pvvx
Активный участник сообщества
У кого есть уже готовый софт.драйвер на ESP8266 для работы с внешним драйвером шины RS-485, учитывающим время переключение шины на прием/передачу и прочие правильные межпакетные паузы?
Основные проблемы:
При 115200 у нас время вывода одного символа по RS-232/485 (если задано 10 бит: 1 старт + 8 дата + 1 стоп) составляет 10/115200=0.000087 сек = 87 мкс. На такую паузу стандартный таймер может не отрабатывать в SDK, т.к. множество процедур исполняются дольше (не отдают управление в ets_run()). Возможно использовать аппаратный таймер TIMER0 c включением на NMI вектор. Но тогда и UART надо переопределять на NMI вектор...
Modbus RS-485 требует вычисления межсимвольных интервалов в 1.5 и 4.5 времени вывода символа, а так-же задержек, связанных с "устаканиваем" эха и прочих коммутационных помех в процессе переключения шины на ввод и вывод (зависят от драйвера шины RS-485)...
Делаю проект типа "сетевой бридж Modbus TCP" c установками по WEB HTTP (и по порту modbus TCP со спец. адресом устройства). В дальнейшем предполагающий расширение на работу ESP8266 как простого ПЛК c панелью оператора по HTTP...
Гнать халтуру, типа как в Ардуино и прочих "народных" проектах охоты нет. Т.к. уже достигнута определенная стабильность сборки LwIP для спец. Web + кусков SDK (примерно как тут - meSDK, если использовать правильно...).
PS: Открытость исходников проекта будет определятся наличием предоставления информации для него другими, в данной теме.
Основные проблемы:
При 115200 у нас время вывода одного символа по RS-232/485 (если задано 10 бит: 1 старт + 8 дата + 1 стоп) составляет 10/115200=0.000087 сек = 87 мкс. На такую паузу стандартный таймер может не отрабатывать в SDK, т.к. множество процедур исполняются дольше (не отдают управление в ets_run()). Возможно использовать аппаратный таймер TIMER0 c включением на NMI вектор. Но тогда и UART надо переопределять на NMI вектор...
Modbus RS-485 требует вычисления межсимвольных интервалов в 1.5 и 4.5 времени вывода символа, а так-же задержек, связанных с "устаканиваем" эха и прочих коммутационных помех в процессе переключения шины на ввод и вывод (зависят от драйвера шины RS-485)...
Делаю проект типа "сетевой бридж Modbus TCP" c установками по WEB HTTP (и по порту modbus TCP со спец. адресом устройства). В дальнейшем предполагающий расширение на работу ESP8266 как простого ПЛК c панелью оператора по HTTP...
Гнать халтуру, типа как в Ардуино и прочих "народных" проектах охоты нет. Т.к. уже достигнута определенная стабильность сборки LwIP для спец. Web + кусков SDK (примерно как тут - meSDK, если использовать правильно...).
PS: Открытость исходников проекта будет определятся наличием предоставления информации для него другими, в данной теме.
Последнее редактирование: