условие (выражение)

условие (выражение)

Сообщение a16 » Пт ноя 02, 2012 4:13 pm

Добрый день. Помогите новичку пожалуйста разобраться с условием(выражением).
Итак, есть теги: "TagName_HiValue" (верхняя граница), "TagName_LoValue" (нижняя граница) и "TagName_Value"
Подразумевается что во все эти теги можно ввести значения из WindowViewer, при внесении значения в "TagName_Value" нужно проверять верхнюю/нижнюю границы, если в диапозон проходит, то записывать новое значение, если нет - то оставить старое значение.
(TagName_HiValue) > (TagName_Value) and (TagName_LoValue) < (TagName_Value) then ...
Или же это можно реализовать только с помощью скрипта? Если да, то не могли бы вы привести пример.
Спасибо.
a16
 
Сообщения: 5
Зарегистрирован: Пт ноя 02, 2012 3:53 pm

Re: условие (выражение)

Сообщение Генератор зла » Пт ноя 02, 2012 5:21 pm

В Tagname Dictionary на нужную переменную (TagName_Value) установите поля MinEU/MaxEU равные TagName_LoValue/TagName_HiValue. И всё будет проверяться автоматом.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: условие (выражение)

Сообщение a16 » Пт ноя 02, 2012 6:03 pm

Генератор зла писал(а):В Tagname Dictionary на нужную переменную (TagName_Value) установите поля MinEU/MaxEU равные TagName_LoValue/TagName_HiValue. И всё будет проверяться автоматом.


Спасибо за скорый ответ. Но суть в том, что значения по тегам TagName_LoValue/TagName_HiValue будут меняться постоянно на различные и поэтому такой вариант не подходит. Так же в Tagname Dictionary эти параметры может менять разработчик АСУТП, а в итоге хотелось оставить эту обязанность, например оператору, используя только формы WindowViewer'a.

А записывать из WindowViewer'a в поля MinEU/MaxEU к этому тегу не получается - поскольку это поле тэгов имеет атрибут «только на чтение».
a16
 
Сообщения: 5
Зарегистрирован: Пт ноя 02, 2012 3:53 pm

Re: условие (выражение)

Сообщение Генератор зла » Пт ноя 02, 2012 6:12 pm

a16 писал(а):Но суть в том...

Суть в том, что поля Tag.MaxEU, Tag.MinEU, Tag.MaxRaw, Tag.MinRaw являются полями Read/Write, что значит, что из Window Viewer Вы можете их менять до посинения :)
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: условие (выражение)

Сообщение Генератор зла » Пт ноя 02, 2012 6:17 pm

Но если Вас не устраивает это решение - делайте через промежуточную переменную.
Tag_Entered - связан с полем ввода.
Script DataChange (TagEntered)
if TagEntered <= Tag_LoValue and TagEntered >= Tag_HiValue then Tag_Value = Tag_Entered; EndIf;
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: условие (выражение)

Сообщение a16 » Пт ноя 02, 2012 6:29 pm

Генератор зла писал(а):
a16 писал(а):Но суть в том...

Суть в том, что поля Tag.MaxEU, Tag.MinEU, Tag.MaxRaw, Tag.MinRaw являются полями Read/Write, что значит, что из Window Viewer Вы можете их менять до посинения :)


Возможно я что-то делаю не так, извините. При попытке создания TagName_Value.MinEU / TagName_Value.MaxEU WindowsMaker выдает ошибку что этот тег -"is not writeable".

А за второй способ с помощью скрипта, премного благодарен :P Буду пробовать.
a16
 
Сообщения: 5
Зарегистрирован: Пт ноя 02, 2012 3:53 pm

Re: условие (выражение)

Сообщение a16 » Чт ноя 29, 2012 2:07 pm

А есть ли где-нибудь различные примеры скриптов для InTouch? (Кроме как в документе ITScriptsAndLogic_ru_10_300408.pdf) (на Англ.языке тоже приветствуется)
Спасибо.
a16
 
Сообщения: 5
Зарегистрирован: Пт ноя 02, 2012 3:53 pm

Re: условие (выражение)

Сообщение Генератор зла » Пт ноя 30, 2012 5:12 pm

a16 писал(а):При попытке создания TagName_Value.MinEU / TagName_Value.MaxEU WindowsMaker выдает ошибку что этот тег -"is not writeable".

А их не надо создавать. При создании тега TagName_Value у него автоматически появляется поле MinEU, доступное через "."
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: условие (выражение)

Сообщение a16 » Вт дек 04, 2012 6:44 pm

WindowScripts:
DIM Avr AS Real;
DIM Avr1 AS Discrete;
DIM Avr2 AS Discrete;
DIM Avr3 AS Discrete;
DIM Avr4 AS Discrete;
DIM Avr5 AS Discrete;
DIM TagName1 AS Integer;
DIM TagName2 AS Integer;
DIM TagName3 AS Integer;
DIM TagName4 AS Integer;
DIM TagName5 AS Integer;

AverageTag = (TagName1 + TagName2 + TagName3 + TagName4 + TagName5) / Avr;
Avr = Avr1 + Avr2 + Avr3 + Avr4 + Avr5;
IF SuccessTag1 == 0 THEN Avr1=0; TagName1=0; ELSE Avr1=1;
ENDIF;
IF SuccessTag2 == 0 THEN Avr2=0; TagName2=0; ELSE Avr2=1;
ENDIF;
IF SuccessTag3 == 0 THEN Avr3=0; TagName3=0; ELSE Avr3=1;
ENDIF;
IF SuccessTag4 == 0 THEN Avr4=0; TagName4=0; ELSE Avr4=1;
ENDIF;
IF SuccessTag5 == 0 THEN Avr5=0; TagName5=0; ELSE Avr5=1;
ENDIF;

Скрипт работает, без той части которую я выделил "красным" (где объявлены переменные, кол-во тегов в лицензии ограничено). Что я делаю не так? Подскажите пожалуйста.
a16
 
Сообщения: 5
Зарегистрирован: Пт ноя 02, 2012 3:53 pm

Re: условие (выражение)

Сообщение Генератор зла » Вт дек 04, 2012 11:13 pm

Работает. Видимо, в Tagname Dictionary уже описаны теги Avr, Avr1, ...
Переменные, а не теги (!!!), объявляемые в скриптах через оператор DIM, являются локальными переменными скрипта и не подпадают под лицензирование.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19