две сети Modbus на NodeMcu (software com + hardware com)

с двумя вариантами настройки параметров последовательного порта (9600-SERIAL_8N1 и 9600-SERIAL_8N2)

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
duser
Рядовой
Сообщения: 11
Зарегистрирован: 17.08.2018{, 21:09}
Репутация: 0
Имя: Сергей

две сети Modbus на NodeMcu (software com + hardware com)

#1

Сообщение duser » 27.08.2018{, 22:48}

Уважаемый автор FLProg (Сергей Глушенко) и другие знатоки !

Помогите советами по правильному построению сети Modbus на основе NodeMcu V3 Lua WI-FI в проекте FLProg (версия 3.1.2).
Необходимо считывать данные по RS485 (модуль на MAX485) с 4-х Modbus-устройств с двумя вариантами настройки параметров последовательного порта (9600-SERIAL_8N1 и 9600-SERIAL_8N2) и отправлять данные в Blynk и через Modbus TCP на удалённый OPC-сервер.
Не смог задать параметры 8N2 (кроме скорости 9600) в FLProg, поскольку автором программы был задан единственный вариант конфигурации: 8N1 .
Пришлось править скетч в Arduino IDE, добавляя запись типа SoftwareSerial swSerial.begin(9600, SERIAL_8N2).
Далее в ходе реализации проекта на основе аппаратного последовательного порта после компиляции столкнулся с ошибками при проверке (см. фрагмент скетча).
СпойлерПоказать
:372: error: 'UCSR0A' was not declared in this scope
UCSR0A=UCSR0A |(1 << TXC0);
^
pr7:372: error: 'TXC0' was not declared in this scope
UCSR0A=UCSR0A |(1 << TXC0);
^
exit status 1
'UCSR0A' was not declared in this scope

Пытался реализовать проект на программном последовательном порту, ошибки при проверке скетча исчезли, но выяснилось, что программная реализация умеет только скорость менять и работает только на приём в формате 9600-SERIAL_8N1, который изменить нельзя даже в Arduino IDE (библиотека не позволяет).
Может есть какая-то новая библиотека для создания нескольких полноценных программных последовательных портов на NodeMcu V3 Lua WI-FI в проекте FLProg (в крайнем случае, в Arduino IDE ?
В общем, требуется подключить к контроллеру две платы RS485 (модуль на MAX485) и развернуть на двух последовательных портах NodeMcu две сети Modbus с двумя вариантами настройки параметров последовательного порта (9600-SERIAL_8N1 и 9600-SERIAL_8N2).

Ну или подскажите, как решить проблему компиляции и как добавить ещё один порт, который умеет работать с двумя стоповыми битами. :)
Последний раз редактировалось duser 28.08.2018{, 19:44}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

две сети Modbus на NodeMcu (software com + hardware com)

#2

Сообщение Sancho » 28.08.2018{, 08:55}

Проект, приложенный, здорово помогает в повторении ошибки и поиска решения. Рисовать проект с нуля для повторения у меня нет никакого желания.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

duser
Рядовой
Сообщения: 11
Зарегистрирован: 17.08.2018{, 21:09}
Репутация: 0
Имя: Сергей

две сети Modbus на NodeMcu (software com + hardware com)

#3

Сообщение duser » 28.08.2018{, 19:25}

Sancho писал(а):
28.08.2018{, 08:55}
Проект, приложенный, здорово помогает в повторении ошибки и поиска решения. Рисовать проект с нуля для повторения у меня нет никакого желания.
Извините, что сразу не приложил файл проекта FLProg (версия 3.1.2).
NodeMCU_Modbus_Owen.flp
обрезанный проект (только одна сеть Modbus без Blynk)
(54.46 КБ) 58 скачиваний
Полная версия проекта слишком большая и не загружается сюда.

для объяснения сложившейся ситуации :

Пользователь создал проект в FLProg-е 3.1.2 с заявленной полной поддержкой платы NodeMcu V3 Lua WI-FI (микроконтроллер ESP8266), использовав аппаратный последовательный порт, и после нажатия кнопки "Компилировать", был сгенерирован скетч для Arduino
NodeMCU_Modbus_Owen.ino
скетч для Arduino
(12.49 КБ) 67 скачиваний
, который не прошёл дальнейшую проверку в Arduino IDE : вышло одно сообщение об ошибке
'UCSR0A' was not declared in this scope _.jpg
сообщение об ошибке
, а после задекларирования в скетче соответствующей логической переменной 'UCSR0A', другое сообщение об ошибке, которая была исправлена таким же образом. Однако эти "танцы с бубном" позволили прошить контроллер, но проект так и остался не работоспособен.

Если бы не эти ошибки, то можно было бы изменить в скетче настройки параметров последовательного порта с 9600-SERIAL_8N1 на 9600-SERIAL_8N2, и, вероятно, всё бы заработало так, как надо, хотя бы для одной сети Modbus.

Вся фишка в том, что после замены в FLProg аппаратного последовательного порта на программный, сообщение об ошибке при проверке скетча не появляется ни разу.

duser
Рядовой
Сообщения: 11
Зарегистрирован: 17.08.2018{, 21:09}
Репутация: 0
Имя: Сергей

две сети Modbus на NodeMcu (software com + hardware com)

#4

Сообщение duser » 30.08.2018{, 12:38}

Sancho !
А-а-У-у , где вы ???

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

две сети Modbus на NodeMcu (software com + hardware com)

#5

Сообщение Sancho » 31.08.2018{, 12:05}

duser, Тут я.
Вопрос: вам нужен пин управления по rtu приём/передача? Поставьте "нет" - будет без ошибок.

Отправлено спустя 4 минуты 55 секунд:
Покупайте платы такого формата
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Andrew54321
Рядовой
Сообщения: 2
Зарегистрирован: 28.08.2018{, 14:17}
Репутация: 0
Имя: ANDREI

две сети Modbus на NodeMcu (software com + hardware com)

#6

Сообщение Andrew54321 » 02.09.2018{, 22:41}

Sancho,
У меня подобная проблема в проекте FLProg. Некорректно генерируется рабочий код Modbus/RTU на hardwareSerial и при компиляции в Ардуино ИДЕ выдается ошибка = "UCSR0A was not declared in this scope".

Хотелось бы уточнить - о каком пине управления RTU идет речь и где поставить ему значение "нет" ?
Что-то в настройках FLProga такой опции не заметил.

Заранее благодарен

Аватара пользователя
Rovki
Полковник
Сообщения: 4875
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

две сети Modbus на NodeMcu (software com + hardware com)

#7

Сообщение Rovki » 02.09.2018{, 23:31}

НЕ работают совместно два режима АР+ STA (точка доступа и клиент) ,тоесть в этом случае работает только точка доступа . По отдельности работают два режима .
Электронщик до мозга костей и не только

Ответить

Вернуться в «Спросить у знатоков»