Добрый день подскажите по логике:
Есть переменная "Целевая температура"
Эта переменная должна меняться из меню контроллера + из "умного дома" по modbus
Если сделать сначала отправку - из переменной в модбас (чтобы "Умный дом" знал значение), а потом получение значения из модбаса (чтобы принять значение из "УД" в переменную - оно перезаписывается значением из ардуинки и периодически дрюкается туда-сюда.
Не могу разобраться. подскажите пожалуйста как реализовать. Спасибо1
Логика изменения переменной
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Логика изменения переменной
[ref]xmaxzzz[/ref], должен быть один "главный" в котором меняется значения, все остальные берут значения переменных с "главного". Плюс, не надо сначала изменять переменную, а потом спрашивать её же. Она уже и так изменена.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Логика изменения переменной
Не согласен.
[ref]xmaxzzz[/ref],
В начале, на первой плате, при старте единожды( плата по условию start=0, в плате start=1) присваивайте переменным и модбас регистрам значения из памяти.
Далее в цикле из модбаса -> переменной, потом меню, потом переменная -> модбас.
Вопрос лишь в правильной последовательности действий -и всё будет работать.
Также немаловажную роль играет правильность работы УД - что-бы он 0 при старте не слал, а сначала считывал...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Логика изменения переменной
Т.е создаю плату 1 и переменную START_PLATA1, условие запуска платы START_PLATA1 = 0
Внутри платы
1. START_PLATA = 1 (чтобы запускалась один раз)
2. REEPROM -> ПУНКТ_МЕНЮ (Целевая темп) - все храню в нем, без переменной)
3. REEPROM -> Modbus_tag (Целевая темп)
Т.е стартовые значения (те что были до перезагрузки) записаны в УД (модбас) и в меню
Далее на Плате 2:
Читаем из Modbus_tag -> Меню (если значение изменилось)
Блок меню где меняем значение кнопками
Блок терморегулятора
Записываем из Меню -> Modbus-tag и EEPROM (если значение изменилось)
ТАК РАБОТАЕТ!
Спасибо за светлые мысли буду тестировать!
Опять RS485 и ModBus
А можете подсказать логику работы с данной переменной, задача - переменная может читаться/писаться с УД + из меню самого контроллера кнопками, моя логика -KSP писал(а): 10 май 2018, 09:33Смотреть капитально проекты времени не хватает, но на вскидку, что бросилось в глаза слейв №3 плата 1 и 3 переменная "гистерезис полов". На 1 плате Вы его считываете из памяти , а на 3 записываете по модбас, т.е эта переменная уже будет прыгать.
1) читаем перменную из ЕПРОМ при старте контроллера 1 раз
2) Получаем по Моббас и если изменилась - записываем
3)Работа с меню (если меняется кнопками) - записываем
4)Отправляем измененное значение по Модбас
и дальше по кругу. Как сделать правильно?
-
- Лейтенант
- Сообщения: 305
- Зарегистрирован: 18 сен 2015, 14:00
- Откуда: Саратов
- Имя: Сергей
- Поблагодарили: 1 раз
Опять RS485 и ModBus
Я всегда все проверяю на УНО с шилдом, поэтому как бы я сделал: ЕПРОМ в принципе не нужен в переменной можно задать стартовое значение это и будет ЕПРОМ сейчас задано 5, по модбас значения будут переписываться каждый раз при их изменении, а вот с меню нужна кнопка "Записать" в комментариях написано. У меня все прекрасно работает проверил Qmodbus. Что не поймете пишите.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
S
Логика изменения переменной
Возвращаясь к вопросу выше:
На данный момент проблема такая:
При получении значения переменной по модбас из УД в контроллер, в УД обратно уходит предыдущее значение переменной.
И она периодически прыгает при изменении.
Логика: Считываем по модбас из УД -> Работаем с переменной (читаем, изменяем) -> отправляем по Модбас в УД
Как я понимаю в момент когда переменная летит из УД в контроллер, УД считывает из контроллера еще старое значение.
Какие есть варианты? Спасибо!
На данный момент проблема такая:
При получении значения переменной по модбас из УД в контроллер, в УД обратно уходит предыдущее значение переменной.
И она периодически прыгает при изменении.
Логика: Считываем по модбас из УД -> Работаем с переменной (читаем, изменяем) -> отправляем по Модбас в УД
Как я понимаю в момент когда переменная летит из УД в контроллер, УД считывает из контроллера еще старое значение.
Какие есть варианты? Спасибо!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей