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

Ответить
xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26.10.2017{, 16:29}
Репутация: 0
Откуда: Санкт-Петербург

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

#1

Сообщение xmaxzzz » 20.04.2018{, 22:58}

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

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

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

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

Не могу разобраться. подскажите пожалуйста как реализовать. Спасибо1

starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

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

#2

Сообщение starshoy81 » 20.04.2018{, 23:35}

xmaxzzz, должен быть один "главный" в котором меняется значения, все остальные берут значения переменных с "главного". Плюс, не надо сначала изменять переменную, а потом спрашивать её же. Она уже и так изменена.

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

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

#3

Сообщение Sancho » 21.04.2018{, 09:04}

starshoy81 писал(а):
20.04.2018{, 23:35}
должен быть один "главный" в котором меняется значения,
Не согласен.
xmaxzzz,
В начале, на первой плате, при старте единожды( плата по условию start=0, в плате start=1) присваивайте переменным и модбас регистрам значения из памяти.
Далее в цикле из модбаса -> переменной, потом меню, потом переменная -> модбас.
Вопрос лишь в правильной последовательности действий -и всё будет работать.
Также немаловажную роль играет правильность работы УД - что-бы он 0 при старте не слал, а сначала считывал...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26.10.2017{, 16:29}
Репутация: 0
Откуда: Санкт-Петербург

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

#4

Сообщение xmaxzzz » 21.04.2018{, 12:13}

Sancho писал(а):
21.04.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.10.2017{, 16:29}
Репутация: 0
Откуда: Санкт-Петербург

Опять RS485 и ModBus

#5

Сообщение xmaxzzz » 17.05.2018{, 21:01}

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

и дальше по кругу. Как сделать правильно?

KSP
Лейтенант
Сообщения: 304
Зарегистрирован: 18.09.2015{, 14:00}
Репутация: 28
Откуда: Саратов
Имя: Сергей

Опять RS485 и ModBus

#6

Сообщение KSP » 18.05.2018{, 10:33}

Я всегда все проверяю на УНО с шилдом, поэтому как бы я сделал: ЕПРОМ в принципе не нужен в переменной можно задать стартовое значение это и будет ЕПРОМ сейчас задано 5, по модбас значения будут переписываться каждый раз при их изменении, а вот с меню нужна кнопка "Записать" в комментариях написано. У меня все прекрасно работает проверил Qmodbus. Что не поймете пишите.
Вложения
Переменная и память.flp
(318.85 КБ) 97 скачиваний
S

xmaxzzz
Рядовой
Сообщения: 49
Зарегистрирован: 26.10.2017{, 16:29}
Репутация: 0
Откуда: Санкт-Петербург

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

#7

Сообщение xmaxzzz » 23.06.2018{, 10:12}

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

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

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

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

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

Ответить

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