PDA

Просмотр полной версии : Запись в БД (дубли)



Fre5h
07.01.2015, 22:52
Здравствуйте всем. Вот и пришло время сменить СКАДУ на отечественную. Выбрал MasterScada. Стал изучать.
Возник вопрос по записи значений в БД MSSQL 2008 через хранимую процедуру. Все связи настроил. Процедуру написал. Запись значений идет, но ...

Вопрос в следующем
Из документации:

дополнительный вход «Выполнять» - когда на нем «Ложь» процедура перестает выполняться

Связал данный вход с кнопкой на мнемосхеме. При нажатии кнопки происходит запись в БД, но если держать её зажатой достаточно долго, то хранимая процедура выполнится несколько раз и в БД появятся дубли (несколько строк с одинаковыми значениями). Если же нажать кнопку слишком быстро (НО НАЖАТЬ), то вход «Выполнять» вообще не включается и в итоге запись в БД не происходит, а это грозит потерей этих данных в реальном проекте, что недопустимо.

1) Каким образом можно организовать запись значения в БД только один раз?
2) Каким образом избежать потери данных?

Заранее спасибо.

UPD. Разобрался с 1). Нужно было выставить опрос у процедуры в мастерскаде "По изменению входов".
Остался второй вопрос, добавил в дерево объектов кнопку с фиксацией и выставил ей время фиксации 5 сек. Но все равно, иногда при быстром нажатии кнопки (на мнемосхеме она переходит в состояние "нажата" на 5сек.) значение её выхода не изменяется (все время "Выкл"). Непонимаю :confused:

SCADAMaster
08.01.2015, 09:52
Не используйте эту кнопку.
Создайте команду типа "Дискретный" и вытащите ее на мнемосхему - она станет кнопкой. Нажатие на такую кнопку будет приводить к импульсу длительностью в 1 цикл (можно сделать больше).

Fre5h
08.01.2015, 11:56
Не используйте эту кнопку.
Создайте команду типа "Дискретный" и вытащите ее на мнемосхему - она станет кнопкой. Нажатие на такую кнопку будет приводить к импульсу длительностью в 1 цикл (можно сделать больше).

Спасибо, заработало.