Simple-Scada 2 > Ваши вопросы
На каком устройстве должны храниться данные?
(1/1)
rolex_737:
Здравствуйте. Совсем запутался.
На стороне контроллера (или возможно скады) есть переменная - например, открыть форточку при температуре 20 градусов.
Собственно вопрос: где должна храниться эта переменная, чтобы с ней начал работать контроллер?
- это значение должно из БД скады непосредственно передаться в eeprom контроллера, а от туда в его ОЗУ;
- или оно должно быть в eeprom контроллера. От туда контроллер и скада забрали это значение к себе. (Контроллер в ОЗУ, скада на экран пользователя). Дальше из скады это значение меняется, пишется новое значение в eeprom контроллера, перегоняется в его ОЗУ и т.д.;
- или вообще все неправильно?
Т.е. к чему весь разговор...
Выключили систему. Заново включили 220В. Как дальше должны погулять данные, чтобы система включилась в последнем состоянии, а не в дефолтном?
Или, пользователь запутался во всех цифрах и ему надо вернуться к заводским настройкам. Он нажимает кнопку Reset. А что должно произойти дальше с этими переменными?
pan2000:
Первый вариант хранения данных
Для Simple-Scada:
SCA_temp - индикация температуры;
SCA_set - уставка оператора.
ОРС-сервер периодически опрашивает пару этих переменных, передавая данные в Scada.
Данные записанные в SCA_set передаются в переменную PLC_set контроллера.
Для контроллера:
PLC_temp - измеренная температура, в ОЗУ;
PLC_set - уставка температуры, в ОЗУ;
PLC_EE_set - уставка температуры в EEPEOM;
PLC_FACT_set - заводская уставка в EEPEOM или памяти программ.
1. При включении контроллера уставка температуры в EEPROM переписывается в уставку температуры PLC_EE_set -> PLC_set. Эта операция может выполнятся встроенным ПО контроллера (сохраняемая переменная) или программно при инициализации.
2. Далее, в цикле выполняется основная часть программы, а данные передаются в Scada, в частности PLC_set -> SCA_set.
При вводе новой уставки однократно происходит передача SCA_set -> PLC_set, а при отсутствии сохраняемых переменных ещё и PLC_set -> PLC_EE_set.
3. При выключении контроллера и наличии сохраняемых переменных выполняется передача данных PLC_set -> PLC_EE_set.
Операция "RESET" выполняет следующие передачи данных: PLC_FACT_set -> PLC_EE_set, PLC_FACT_set -> PLC_set.
В случае если контроллер позволяет без проблем читать данные из EEPROM и частота обновления уставки небольшая (ресурс записи EEPROM), то можно выполнять сравнение с PLC_EE_set, а переменную PLC_set исключить.
Пример во вложении.
Второй вариант хранения данных
Значения заводской уставки и уставки можно хранить и в Scada: SCA_set как сохраняемую переменную, а SCA_FACT_set в файле или скрипте.
В этом случае Scada постоянно проверяет наличие связи с контроллером и при обнаружении передает данные контроллеру SCA_set -> PLC_set, в свою очередь контроллер при включении начинает проверять переменную PLC_set на достоверность и только после состоявшейся проверки переходит к выполнению основной части программы.
Различие в вариантах хранения определяет различие поведения всей системы при включении питания, так в первом случае достаточно включить контроллер и система начнет функционировать в предыдущем режиме, во втором - необходимо включить и Scada и контроллер.
Первый вариант предпочтителен как по поведению при включении, так и тем, что заводские установки "упакованы" в контроллер.
rolex_737:
Признаться честно, не ожидал, что получу настолько "полный" ответ.
Огромное Вам спасибо (pan2000):
- за потраченное личное время на написание проекта, со всеми комментариями и визуальной картинкой;
- за "разжеванный с пояснениями" ответ.
rolex_737:
--- Цитата: pan2000 от 11 Марта 2019, 03:55:29 ---При вводе новой уставки однократно происходит передача SCA_set -> PLC_set, а при отсутствии сохраняемых переменных ещё и PLC_set -> PLC_EE_set.
3. При выключении контроллера и наличии сохраняемых переменных выполняется передача данных PLC_set -> PLC_EE_set.
--- Конец цитаты ---
Если я правильно понял, это сделано (не сразу в eeprom, а только после выключения...) для того, чтобы "не убить" eeprom от частоты обновления данных?
Другими словами, надо ставить батарейку на контроллер, датчик на наличие питания и относительно него, записывать в физическую память;
или вместо eeprom, использовать стороннюю память с батарейкой (если не ошибаюсь, что-то типа clock memory называется, а-ля bios в ПК)
Навигация
Перейти к полной версии