Методические указания по заданию

 

1. Требуемые целые и действительные тэги создать либо с помощью кнопки New диалогового окна Tagname Dictionary (рис. 18), либо непосредственно при задании анимационных связей в поле TagnameTagname.

Необходимо создать следующие тэги для заданного учебного задания.

Имя тэга (Tagname)   Тип тэга (Type) Начальное значение (Initial Value) Мин. значение (Min Value) Мак. значение (Max Value)
Flow_1 Memory Real
Flow_2 Memory Real
Flow_3 Memory Real
Flow_4 Memory Real
Flow_5 Memory Real
Flow_6 Memory Real
Level_1 Memory Real
Level_2 Memory Real
Level_set_1 Memory Real
Level_set_2 Memory Real
Volume_all Memory Real
Time_1 Memory Int
Time_2 Memory Int
Time_3 Memory Int
Time_set_1 Memory Int
Time_set_2 Memory Int
Time_set_3 Memory Int

Для созданных тэгов организуем вывод на экран при помощи анимационной связи User Inputs –Analog.

2. Программа моделирования DDE-сервера находиться по следующему пути «d:\user\intoch\dde_test.exe». Программа является генератором случайных чисел, внешний вид представлен на рис. 54.

Рис. 54. Внешний вид программы DDE-сервера.

В своем проекте создайте тэг «dde_time», при помощи этого тэга получим значение времени из DDE-сервера. Для тэга зададим тип I/O Message, для типов I/O необходимо задать имя доступа (Access Name). В окне добавления имени канала доступа зададим:

- произвольное имя канала доступа (Access Name);

- сетевое имя (Node Name) оставим пустым;

- именем приложения (Application Name) будет являться имя программы без расширения: dde_test;

- именем группы (Topic Name) будет являться следующее: DDETopic1;

Далее в диалоговом окне свойств тэга в поле Item нужно ввести имя переменной из программы моделирования DDE-сервера: DDE_TimeString.

3. Нарисуйте прямоугольник и задайте ему анимационную связь User Inputs – String и задайте Tagname для расхода: Flow_1.Comment. Внутри прямоугольника поместите какой-либо символ (текст) со связью Value Display – String.

4. Показатель уровня выполняется при помощи анимационной связи Percent Fill – Vertical. Где именем тэга для первой емкости будет тэг Level_1, а для второй емкости тэг Level_2, пример вертикального заполнения показан на рис. 54.

Рис. 54. Пример задания анимационной связи процентной заливки

Для создания ползунка сначала нарисуйте стрелку при помощи библиотеки Symbol Factory и становите ее как показано на рис. 55. Далее выберите анимационную связь Sliders и настройте ее на тэг Level_set_1 (для первой емкости).

 
 

 

 


Рис. 55. Настройка анимационной связи Sliders.


Задание 4. Скрипты в InTouch.

 

Цель работы:

 

Получение начальных навыков работы с языком сценариев InTouch. Изучение особенностей программирования Quick-Function.

 

Теоретические положения

 

Типы сриптов Scripts.

 

Скрипты в InTouch - это программные фрагменты, активизируемые по событиям (по нажатию клавиши, кнопки, открытию окна, изменению значения переменной и т. д.). Порядок выполнения скриптов зависит от приложения.

В InTouch различают несколько типов скриптов:

- Application Scripts(скрипты уровня приложения) относятся ко всему приложению и используются для запуска других приложений, имитации технологических процессов, вычисления значений переменных и т.д. Существует три типа сценариев приложения:

- On Startup-выполняется однократно при запуске приложения.

- While Running- выполняется непрерывно с заданной частотой, пока приложение выполняется.

- On Shutdown-выполняется однократно при завершении работы приложения.

Когда выбирается сценарий While Running, становится активным поле Every 0 Milliseconds. В этом поле нужно ввести время в миллисекундах, через которое сценарий будет выполняться повторно.

- Window Scripts(скрипты уровня окна) связываются с конкретным окном. Существует три типа таких сценариев:

- On Show -выполняется однократно при открытии окна.

- While Showing -выполняется непрерывно через заданный интервал, пока окно открыто.

- On Hide -выполняется однократно при сворачивании окна.

- Key Scripts(клавишные скрипты) привязываются к какой-либо клавише или комбинации клавиш клавиатуры. Это может быть полезным при создании каких-либо глобальных для всего приложения функций (возврат в главное окно, окончание сеанса работы с приложением и т. д.). Существует три типа сценариев клавиши:

- On Key Down -выполняется один раз при первом нажатии клавиши.

- While Down -выполняется непрерывно с заданным интервалом, пока нажата клавиша.

- On Key Up -выполняется один раз при отпускании клавиши.

- Touch Pushbutton Action Scripts(скрипты, запускаемые кнопками) очень похожи на клавишные скрипты и связываются с объектами, которые будут использоваться в качестве исполнительных кнопок. Эти скрипты запускаются при каждом нажатии на объект-кнопку.

- Condition Scripts(скрипты по изменению логического выражения) связываются с логической переменной или выражением, которое будет принимать значения либо "истина", либо "ложь". Логические скрипты могут содержать в себе и аналоговые переменные.

Существует четыре типа сценария условия:

- On True -выполняется однократно, когда условие становится истинным.

- On False -выполняется однократно, когда условие становится ложным.

- While True -выполняется непрерывно, пока условие остается истинным.

- While False -выполняется непрерывно, пока условие остается ложным.

- Data Change Scripts(скрипты по изменению данных) связываются либо с переменной, либо с полем переменной. Эти скрипты исполняются только один раз, когда значение переменной либо поля меняется на величину, превышающую значение допуска, заданного в словаре переменных.

- ActiveX Event(скрипты событий ActiveX) предназначены для поддержки механизма реакции на события в ActiveX - объектах. С каждым событием может быть связан один скрипт типа ActiveX Event, запускающийся в WindowViewer во время исполнения приложения.

- Quick Function- скрипты, которые могут вызываться из других скриптов и использоваться в выражениях при определении динамических свойств объектов.

 

Диалоги редактора, открываемые при создании скриптов различных типов, имеют небольшие отличия. Вызов диалога редактора скриптов в окне WindowMaker осуществляется командой Special/Scripts с последующим выбором типа создаваемого или редактируемого скрипта. Для этого можно также воспользоваться окном Application Explorer, выбрав папку Scripts. На рис. 56 приведен диалог Application Scripts (скрипты уровня приложения).

Рис. 56. Редактор скриптов Application Scripts (уровень приложения)

Редактор скриптов InTouch поддерживает два типа скриптов: простые и сложные. Простые скрипты - это скрипты, содержащие операторы присваивания, сравнения, простые математические функции и т. д. Сложные скрипты позволяют выполнять различные логические операции типа IF - THEN - ELSE, а также могут включать циклы типа FOR - NEXT.

Справа, в поле Functions, размещены клавиши вызова списков различных групп встроенных функций. Доступ к спискам встроенных функций возможен также командой Insert/Functions с последующим выбором группы функций.

 

Встроенные функции

 

В пакете InTouch имеется набор встроенных функций, которые могут быть связаны с командами или использованы в скриптах для выполнения самых различных задач.

Все встроенные функции разбиты на четыре группы:

- String... - для обработки различных символьных строк и переменных;

- Math... - математические функции;

- System... - системные функции;

- Misc... - функции для работы с алармами распределенных систем, трендами, печатью и др.

Вызов списка функций группы осуществляется нажатием соответствующей клавиши.

 

Использование Ouick-функций.

 

QuickFunctions хранятся в том приложении, в котором были созданы. Вызывая Quick-функции из других сценариев или выражений, вы можете создать сценарий один раз и использовать его повторно сколько угодно раз. Повторное использование этих сценариев снижает трудозатраты разработчика, поскольку отпадает необходимость в дублировании кода, не нужно копировать его и вставлять в другие сценарии. Повторяемый код хранится в одном сценарии и в одном месте, позволяя тем самым обновлять все экземпляры сценария за один сеанс редактирования. Quick-функции могут быть определены как асинхронные, т.е. при выполнении приложения они будут работать в фоновом режиме, не мешая основному процессу WindowViewer. Это позволяет WindowViewer выполнять особенно длительные операции, например, запросы к базе данных SQL, раздельно от основного хода программы. В качестве имен аргументов Quick-функций нельзя использовать имена тэгов. Имена тэгов имеют более высокий приоритет, чем такие же имена аргументов, и потому сценарий будет выполняться некорректно. Имя аргумента не влияет на счетчик использования тэгов, поскольку рассматривается системой как локальная переменная. При вызове Quick-функции в поле Expression должен содержаться оператор CALL вызова функций, каждая из которых, в свою очередь, должна иметь в качестве последнего оператора RETURN для возврата результата в вызывающее выражение. Когда встречается RETURN, выполнение Quick-функции немедленно прерывается. Возвращаемые данные могут быть дискретного, целого и действительного типа.

 

Содержание задания.

 

1. Обеспечить автоматический режим работы объекта, состоящий из следующих этапов:

1. Заполнение емкости 1 из двух трубопроводов. Заполнение емкости начинается после открытия одного из клапанов.

2. . При достижении заданного оператором уровня в емкости 1, начинается режим отстаивания.

3. После окончания заданного времени реакции, начинается опорожнение емкости 1 в емкость 2 при помощи клапана 3, и одновременно открываются клапана подачи компонентов сверху емкости 2.

4. . При достижении заданного оператором уровня в емкости 2, начинается режим перемешивания.

5. После окончания заданного времени перемешивания, начинается режим отстаивания в емкости 2.

6. После окончания заданного времени реакции, начинается опорожнение емкости 2 при помощи клапана 6. После опорожнения емкости 2 начинается заново заполнение емкости 1.

2. По формуле зависимости объема заполнения бака от уровня наполнения с помощью QuickFunction вычислить объем заполнения емкостей 1 и 2, а также общий объем готовой продукции за все циклы работы объекта.

3. Для клапанов задать открытие и закрытие и цветом показать работу клапана.