Логика изменения переменной

Ответить
xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26 окт 2017, 16:29
Откуда: Санкт-Петербург

Логика изменения переменной

Сообщение xmaxzzz »

Добрый день подскажите по логике:

Есть переменная "Целевая температура"

Эта переменная должна меняться из меню контроллера + из "умного дома" по modbus

Если сделать сначала отправку - из переменной в модбас (чтобы "Умный дом" знал значение), а потом получение значения из модбаса (чтобы принять значение из "УД" в переменную - оно перезаписывается значением из ардуинки и периодически дрюкается туда-сюда.

Не могу разобраться. подскажите пожалуйста как реализовать. Спасибо1
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Логика изменения переменной

Сообщение starshoy81 »

[ref]xmaxzzz[/ref], должен быть один "главный" в котором меняется значения, все остальные берут значения переменных с "главного". Плюс, не надо сначала изменять переменную, а потом спрашивать её же. Она уже и так изменена.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Логика изменения переменной

Сообщение Sancho »

starshoy81 писал(а): 20 апр 2018, 23:35должен быть один "главный" в котором меняется значения,
Не согласен.
[ref]xmaxzzz[/ref],
В начале, на первой плате, при старте единожды( плата по условию start=0, в плате start=1) присваивайте переменным и модбас регистрам значения из памяти.
Далее в цикле из модбаса -> переменной, потом меню, потом переменная -> модбас.
Вопрос лишь в правильной последовательности действий -и всё будет работать.
Также немаловажную роль играет правильность работы УД - что-бы он 0 при старте не слал, а сначала считывал...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26 окт 2017, 16:29
Откуда: Санкт-Петербург

Логика изменения переменной

Сообщение xmaxzzz »

Sancho писал(а): 21 апр 2018, 09:04
Т.е создаю плату 1 и переменную START_PLATA1, условие запуска платы START_PLATA1 = 0

Внутри платы

1. START_PLATA = 1 (чтобы запускалась один раз)
2. REEPROM -> ПУНКТ_МЕНЮ (Целевая темп) - все храню в нем, без переменной)
3. REEPROM -> Modbus_tag (Целевая темп)

Т.е стартовые значения (те что были до перезагрузки) записаны в УД (модбас) и в меню

Далее на Плате 2:

Читаем из Modbus_tag -> Меню (если значение изменилось)

Блок меню где меняем значение кнопками

Блок терморегулятора

Записываем из Меню -> Modbus-tag и EEPROM (если значение изменилось)

ТАК РАБОТАЕТ!

Спасибо за светлые мысли буду тестировать!
xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26 окт 2017, 16:29
Откуда: Санкт-Петербург

Опять RS485 и ModBus

Сообщение xmaxzzz »

KSP писал(а): 10 май 2018, 09:33Смотреть капитально проекты времени не хватает, но на вскидку, что бросилось в глаза слейв №3 плата 1 и 3 переменная "гистерезис полов". На 1 плате Вы его считываете из памяти , а на 3 записываете по модбас, т.е эта переменная уже будет прыгать.
А можете подсказать логику работы с данной переменной, задача - переменная может читаться/писаться с УД + из меню самого контроллера кнопками, моя логика -
1) читаем перменную из ЕПРОМ при старте контроллера 1 раз
2) Получаем по Моббас и если изменилась - записываем
3)Работа с меню (если меняется кнопками) - записываем
4)Отправляем измененное значение по Модбас

и дальше по кругу. Как сделать правильно?
KSP
Лейтенант
Сообщения: 305
Зарегистрирован: 18 сен 2015, 14:00
Откуда: Саратов
Имя: Сергей
Поблагодарили: 1 раз

Опять RS485 и ModBus

Сообщение KSP »

Я всегда все проверяю на УНО с шилдом, поэтому как бы я сделал: ЕПРОМ в принципе не нужен в переменной можно задать стартовое значение это и будет ЕПРОМ сейчас задано 5, по модбас значения будут переписываться каждый раз при их изменении, а вот с меню нужна кнопка "Записать" в комментариях написано. У меня все прекрасно работает проверил Qmodbus. Что не поймете пишите.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
S
xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26 окт 2017, 16:29
Откуда: Санкт-Петербург

Логика изменения переменной

Сообщение xmaxzzz »

Возвращаясь к вопросу выше:

На данный момент проблема такая:
При получении значения переменной по модбас из УД в контроллер, в УД обратно уходит предыдущее значение переменной.
И она периодически прыгает при изменении.

Логика: Считываем по модбас из УД -> Работаем с переменной (читаем, изменяем) -> отправляем по Модбас в УД

Как я понимаю в момент когда переменная летит из УД в контроллер, УД считывает из контроллера еще старое значение.

Какие есть варианты? Спасибо!
Ответить

Вернуться в «переменные»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей