PDA

Просмотр полной версии : Формула



Safron
15.02.2011, 07:38
Всем привет. Пытаюсь работать с формулами. Частенько выдаёт "Ошибка синтаксиса". Где можно прочитать о правилах синтаксиса?Пытаюсь в одном поле формулы ввести : При превышении некоего порогового значения двух сигналов воспринимать это как ИСТИНА (оценка РАБОТАЕТ или СТОИТ агрегат) и тут же ввести, по результату этой формулы ИСТИНА, функцию моточасов. Не получается-проблемы с синтаксисом.

SCADAMaster
15.02.2011, 08:12
В справочной системе есть описание синтаксиса (всех функций)
Напишите здесь вашу формулу.

Safron
15.02.2011, 12:37
В справочной системе есть описание ФБ и функций, а синтаксиса я не нашёл. Как правильно записать ?
Если Расход >=5 И Давление >=7, то Значение 1 = ИСТИНА
AbsArchDiscreteCounterTime [Значение1, Начало, Конец ]

И всё уместить в поле одной формулы.
Может быть как-то можно обойтись без промежуточного "Значение 1" ?

SCADAMaster
15.02.2011, 13:10
В одной формуле все сделать не получится. Ведь функция AbsArchDiscreteCounterTime работает с архивом.
Сделайте событие, в него пропишите формулу:
Давление >= 5 И Расход >= 7
Поставьте у события флаг "Архивировать".
Сделайте расчет в него пропишите:
AbsArchDiscreteCounterTime( Событие_1,Время_начала,DateTime( ) )
Событие_1 - архивное событие
Время_начала - команда времени начала архива
DateTime() - команда получения текущего времени (конец архива).

Функция "Если" описана в справке.
Синтаксис такой:
Если(Переменная_1=1,10, 20 )
Если Переменная_1=1, то Результат расчета будет равен 10, иначе 20

Safron
17.02.2011, 12:12
ОК. Спасибо. Возник следующий вопрос. В "AbsArchDiscreteCounterTime" результат вещественный. В свойствах не меняется. Есть ли какие-нибудь функции преобразования типов из одного в другой. В моём случае из вещественного во временной..Спасибо

Safron
17.02.2011, 13:24
И ещё...Почему формула "ЕСЛИ ( Мотоминуты =60, Моточасы=Моточасы +1, Моточасы= Моточасы )" возвращает результат тип логический, а не целый как я установил в свойствах всех переменных? И как правильно реализовать подобный алгоритм?

SCADAMaster
17.02.2011, 13:52
Возник следующий вопрос. В "AbsArchDiscreteCounterTime" результат вещественный.
На выходе - количество секунд. Чтобы преобразователь количество секунд во время можно воспользоваться функцией Sec2Time.
Тогда команда будет выглядеть так:
Sec2Time( AbsArchDiscreteCounterTime( Событие_1,Время_начала,DateTime( )) )


И как правильно реализовать подобный алгоритм?
Правильно так:
ЕСЛИ ( Мотоминуты =60, Моточасы +1, Моточасы )

Safron
17.02.2011, 20:08
Принято. Уже работает. Спасибо.