• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение Использование функций SDK в Arduino IDE

Dmitry P

New member
Добрый день!
Прошу помощи знающих. Дошел до глубокого копания ESP... Сделал прошивку для одного из промышленных протоколов (MODBUS TCP) на Arduino ESP-12 - работала нормально. Перенес на ESP-01 - полет нормальный. Потом после некоторых доработок (сохранение настроек EEPROM, проверка шлюза раз в минуту) - решил проверить опять на ESP-12. и начинаются чудеса. То вылазит exception's, то зависает при вызове проверки шлюза.
Но это присказка. Хочу перевести ESP по совету pvvx в режим G, а не могу понять, как функцию из SDK wifi_set_phy_mode() засунуть в скетч. Решил начать с малого и посмотреть wifi_get_phy_mode(). но и с ней не получается... Посмотрел пример из другой ветки с readvdd33() - все равно не пойму. такой функции нет в доках и в user_interface.h - а компилится нормально...
Подскажите, как правильно использовать функции из SDK?
 

pvvx

Активный участник сообщества
Прошу помощи знающих. Дошел до глубокого копания ESP... Сделал прошивку для одного из промышленных протоколов (MODBUS TCP) на Arduino ESP-12 - работала нормально.
Добрый вечер!
А исходники выложить можно "для народу"?
Я так и не успел слепить шлюз MODBUS TCP - RS-485, но оно нужно и со временем будет...
 

Dmitry P

New member
Конечно, могу выложить. У меня два варианта:
1. Arduino Nano+ESP-01 (AT команды). основная обработка MODBUS ведется на Arduino, на ESP только TCP сервер. Все решение работает достаточно успешно 3 месяца в полевых условиях через OpenWRT+3G+VPN. На верхнем уровне - MasterSCADA
2. Всё полностью на ESP через Arduino IDE. Проверено пока только в домашних условиях, дорабатываю.

Какой выложить?
PS. Для MODBUS реализована только 3 функция на чтение группы регистров, и 16 - на запись.
PPS. Из меня программист еще тот, так что код - чуть менее, чем ужастен :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Конечно, могу выложить. У меня два варианта:
1. Arduino Nano+ESP-01 (AT команды). основная обработка MODBUS ведется на Arduino, на ESP только TCP сервер. Все решение работает достаточно успешно 3 месяца в полевых условиях через OpenWRT+3G+VPN. На верхнем уровне - MasterSCADA
2. Всё полностью на ESP через Arduino IDE. Проверено пока только в домашних условиях, дорабатываю.

Какой выложить?
PS. Для MODBUS реализована только 3 функция на чтение группы регистров, и 16 - на запись.
PPS. Из меня программист еще тот, так что код - чуть менее, чем ужастен :)
Куда угодно и что угодно кинте. Функции MODBUS частенько нужны народу... Вдруг кто соберется писать на Arduino - будет какая-то подсказка и база. Я всё равно буду писать на СИ в UDK c возможностью доступа к переменным Modbus через Web + полные клиент и сервер с бриджем что со стороны RS-485, что с TCP, выводом графиков + накоплений + логов и минимальных функций ПЛК :) ... но надо доковырять (дореверсить) китайскую libmain.a, чтобы выкинуть её полностью из проекта (иначе работать модуль не может - причин и китай-багов для этого там много. пример: протирание дырки во flash при средней работе модуля в течении нескольких месяцев и т.д.). (TCP MODBUS пример уже есть в Web свалке и работает, но не включен в хидерах и не задана таблица отображаемых переменных и функций по их смене/чтению, но пример дан).
 
Последнее редактирование:

Dmitry P

New member
Все остальные задачи - графика, тренды, алармы хорошо решаются SCADA, поэтому я на них и не замахивался...
 

pvvx

Активный участник сообщества
Все остальные задачи - графика, тренды, алармы хорошо решаются SCADA, поэтому я на них и не замахивался...
В смартфоне? На Андроиде? Без загрузки спец ПО и оплаты его (всё на диске по web c модуля) ? :)
 

Dmitry P

New member
да. Есть и так и так.
Для Windows - очень неплохая штука - MasterSCADA (32 точки - бесплатно) или без ограничений, но работает час, в том числе и интернет-клиент есть. Modbus - OPC сервер на 32 точки - тоже бесплатно.
Для андроида - словацкий (или чешский) проект mySCADA. для небольших проектов - достаточно. Разумеется, с определенными ограничениями.
У меня mySCADA крутится на планшете за 3 т.р., собирает данные с двух Arduino+ESP01, восемь датчиков температуры. Измеряют температуру подшипников в жестких условиях - высокий уровень вибраций (вибросита для сортировки руды).
Планшет стоит у операторов.
Данные через 3G и VPN передаются на сервер раз в секунду.
Так как температура меняется не быстро (минуты), выпадение нескольких посылок на сервере не критично - важен тренд.
Защита по температуре крутится на Arduino.
 
Последнее редактирование:

Dmitry P

New member
Причем mySCADA состоит из двух частей - разработка конфигурации - мнемосхем и трендов ведется на Windows клиенте, потом загружается на смарт. А на смарте фактически только показывает картинку и данные с модбаса забирает.
 

Georgiy

New member
Добрый день!
Прошу помощи знающих. Дошел до глубокого копания ESP... Сделал прошивку для одного из промышленных протоколов (MODBUS TCP) на Arduino ESP-12 - работала нормально. Перенес на ESP-01 - полет нормальный. Потом после некоторых доработок (сохранение настроек EEPROM, проверка шлюза раз в минуту) - решил проверить опять на ESP-12. и начинаются чудеса. То вылазит exception's, то зависает при вызове проверки шлюза.
Но это присказка. Хочу перевести ESP по совету pvvx в режим G, а не могу понять, как функцию из SDK wifi_set_phy_mode() засунуть в скетч. Решил начать с малого и посмотреть wifi_get_phy_mode(). но и с ней не получается... Посмотрел пример из другой ветки с readvdd33() - все равно не пойму. такой функции нет в доках и в user_interface.h - а компилится нормально...
Подскажите, как правильно использовать функции из SDK?
Поделитесь, как решили вопрос свой? Я так и не врублюсь как использовать функции SDK в скетче....
 
Сверху Снизу