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 в ПК)

Навигация

[0] Главная страница сообщений

Перейти к полной версии
Mobile View