Страница 1 из 1
modbus slave
Добавлено: 03 май 2017, 16:15
amkuznecov
не работает 1 слейв, второй в норме
Arduino: 1.8.1 (Windows 10), Плата:"Arduino Nano, ATmega328"
pr94:245: error: redefinition of 'bool _modbuseSetSlEnable1_SlId'
exit status 1
redefinition of 'bool _modbuseSetSlEnable1_SlId'
Добавлено (03.05.2017, 16:15)
---------------------------------------------
Два раза объявляет
modbuseSetSlEnable1_SlId
modbuseSetSlEnable1_SlId
Я так понимаю должно быть
modbuseSetSlEnable1_SlId
modbuseSetSlEnable2_SlId
????
modbus slave
Добавлено: 26 май 2017, 20:05
ecoins
MODBUS
Начали пробовать подключение оборудования ОВЕН и выявились серьезные проблемы с драйвером MODBUS.
Приложена тестовая программа:
Опрашивает один канал только при двух условиях:
1. Не включен еще один канал - (плата №2 отключена, если включить её - перестаёт считывать температуру).
2. Если включается дисплей - в программе пин 6 соединить с GND - перестаёт считывать температуру.
-------
ОТДЕЛЬНО №1.
Сделан опрос каждого действия:
1. Задача 1 - переписывание регистров 4 мкс (фактчиески меньше);
2. Задача 2 - формирование сообщений 920 мкс;
3. Задача 3 - вывод в UART (примерно 25 символов) - 16 мкс;
4. Задача 4 - вывод на дисплей (8 символов) - 13150 мкс (13 мс).
Дисплей LCD 4x20, подключен через i2c. Ну очень много - в некоторых реальных программах лучше не использовать, так как задержка уже 5 мс (200Гц) заметно на глаз и слух.
ОТДЕЛЬНО №2.
Очень полезно оказывается измерение времени задач - избавляет от многих заблуждений при отладке и настройки программ с кнопками, светодиодами, зуммером и т.п.
Но приходиться использовать два собственных пользовательских блоков (в программе присутствуют) и вводить дополнительную плата - иначе без вмешательства автора Сергея не получается.
Сергей, ПРОСЬБА! Сделай пожалуйста блок на выходе которого будет только один параметр - время исполнения текущей платы.
Добавлено (26.05.2017, 20:05)
---------------------------------------------
По двум Slave.
Неожиданно поняли, что Slave для внешнего МАСТЕРА может быть только один.
ОЧЕНЬ ЖАЛЬ.
А было бы здорово иметь несколько.
У МАСТЕРА устройств может быть несколько - это понятно.
modbus slave
Добавлено: 26 май 2017, 20:20
Rovki
ecoins писал(а):Неожиданно поняли, что Slave для внешнего МАСТЕРА может быть только один.
ПР200 может быть 2 слейвами ,но это наверное определяется возможностью МК.
modbus slave
Добавлено: 28 май 2017, 07:27
ecoins
Mega2560 (или что поновее Due) c пятью Serial (один программный, остальные аппаратные) + SPI мог бы дополнительно к основной программе выполнять роль коммуникатора. На одном порте могли бы сидеть и модули Овена.
Технические вроде ничего не мешает сделать несколько Slave в FLProg, но обмен надо делать по прерываниям.
Разработчик в своих реализациях прерывания не использует (или избегает этого по каким-то соображениям, например для простоты переноса программ на разные контроллеры).
В нынешней реализации ModBus я обнаружил программные задержки - а это засада... Есть и Serial.flush и delay(5).
------
Мог бы попробовать предложить улучшенное решение - но без автора его не перенести в систему (если только как пользовательский блок, но там много своих ограничений) и как критически отнесётся к этому автор?
Да и С++ далеко не на профессиональном уровне, но что-то писать удается.
_______
Пока экспериментируем и изучаем углубленно существующие для Arduino драйверы Modbus - там тоже не все здорово...