Таблица 4.2- Продолжение
|
Название продукта |
Bridge WIEV |
cimplisity HMI |
FIX |
iFIX Dynamics |
iconics Genesys |
Sitect 6.0 |
RealFlex for QNX |
Sitex for QNX |
Trase Mode 5/04 |
Simatic WinCC |
|
UNIX |
|
+ |
|
|
|
|
|
|
|
|
|
VMS |
|
+ |
|
|
|
|
|
|
|
|
В н е д р е н и е |
|||||||||||
16. |
Стоимость (у.е.) |
3980-7972 |
300-14000 |
900-13000 |
2000-11000 |
480-11000 |
655-10855 |
2425-11200 |
1370-10150 |
590-2799 |
1140-13560 |
17. |
Рыночная полит |
5 |
5 |
5 |
5 |
5 |
4 |
3 |
4 |
5 |
5 |
В о з м о ж н о с т и с р е д ы р а з р а б о т к и |
|||||||||||
18. |
Язык прогр. сцен |
LabView |
WBA |
свой |
WBA |
WBA |
яз. сце-нариев |
CSL |
CBL |
ТехноAL |
ANSI C |
19. |
Граф. язык |
LabView |
|
|
|
IEC 61131-3 |
IEC 61131-3 |
SFC, LD, FBD |
SFC, LD, FBD |
ТехноFBD |
|
20. |
Пакет компл авт |
|
+ |
BATCH |
BATCH |
|
+ |
+ |
+ |
+ |
+ |
Все пакеты имеют возможность симуляции, разработки и тестирования/отладки в режиме on-Line, распределённой разработки, расширения инструментальными пакетами (toolkits), позволяющих создавать драйверы в/в, графические объекты и т.п. |
|||||||||||
К о н ф и г у р и р о в а н и е с и с т е м ы |
|||||||||||
21. |
Макс. ч-ло т. в/в |
∞ |
∞ |
∞ |
∞ |
∞ |
61405 |
128000 |
65000 |
1024000 |
64К |
Во всех пакетах любой узел может быть сервером в/в, сервером трендов, во всех пакетах (кроме Bridge View) выполняется конфигурируемость по числу точек ввода/вывода |
|||||||||||
С о п р о в о ж д е н и е / э к с п л у а т а ц и я |
|||||||||||
22. |
Рыночный стаж |
4 |
29 |
16 |
3 |
1,5 |
9 |
15 |
4 |
10 |
10 |
23. |
Простота исполь |
10 |
10 |
8 |
10 |
8 |
10 |
9 |
9 |
10 |
10 |
24. |
Время обучения |
5 дн. |
1 день |
3 дня |
3 дня |
10 дн. |
4 дня |
3 дня |
3 дня |
1 день |
7 дн. |
25. |
К-во инсталляци |
|
|
|
|
|
|
|
|
|
|
|
в мире |
? |
1000000 |
110000 |
1000 |
12000 |
100000 |
1500 |
700 |
4000 |
10000 |
4.2.2 Характеристика выбранной SCADA-системы
Citect обладает функциональными характеристиками, надежностью и производительностью, которые позволяют разрабатывать как интегрированные системы уровня предприятия, так и производительные автономные приложения.
С самого начала Citect проектировался и разрабатывался как средство реализации всех требований предприятия в виде единой интегрированной системы. Единый программный пакет содержит все необходимые компоненты, устраняющие как необходимость использования дополнительного программного обеспечения, так и фрагментацию данных. Первый же пакет Citect для Windows, установленный в 1992 году, поднял планку для SCADA-систем на базе ПК на новый уровень производительности: 33000 точек дискретного ввода, 16000 точек аналогового ввода, 4000 аналитических кривых, 50 операторских станций, резервирование в стиле распределенных DCS-систем, общая база данных, конфигурирование с любого компьютера и скорость вывода информации на дисплей менее 2-х секунд.
Высокая степень автоматизации операций, функциональная полнота, контроль качества и тестирование гарантируют максимальную возможную надежность Citect, который благодаря этому может использоваться в различных ответственных приложениях атомной энергетики, авиации и других областях.
Среда исполнения организована как «клиент-серверная» архитектура
Файловый сервер – представляет собой центральное хранилище файлов, выдающее по запросу клиента необработанные данные. Клиент сам обрабатывает и фильтрует информацию (локально), что создает большую нагрузку на сеть. В отличие от этого в клиент - серверной архитектуре большая часть по обработке данных выполняется сервером, так что клиент может запрашивать только нужную информацию. Это значит, что по сети передаются только пакеты "полезных данных" меньшего размера, что существенно уменьшает нагрузку на сеть.
Основа надежности клиент - серверной архитектуры – это Виртуальная Сеть Данных (VDN – Virtual Data Network).
Реализовать все возможности клиент-серверной архитектуры можно только на уровне задач. Каждая задача при этом должна исполнять только одну роль – клиента или сервера – и взаимодействовать с другими задачами посредством клиент-серверных взаимосвязей.
В Citect есть пять основных типов задач:
- взаимодействие с устройствами ввода/вывода;
- контроль аварийных состояний (тревог);
- отчеты;
- графики;
- отображение информации.
Задача управления вводом/выводом выполняет все операции по обмену данными с устройствами ввода/вывода "по поручению" остальных задач. Для них задача управления вводом/выводом – это один из серверов (а сами задачи – его клиенты).
Сервер тревог собирает и сортирует всю информацию, получаемую им от сервера ввода/вывода. Если на экране виден список тревог, то это означает, что задача отображения запрашивает у сервера данные о конкретных тревогах.
Если на экран что-либо выводится, то это значит, что задача Отображения (клиент) запрашивает какие-либо данные у задачи управления вводом/выводом (сервера). Сервер ввода/вывода собирает и сортирует все исходные данные, но клиенту Отображения передает только запрошенную информацию.
Серверы графиков и отчетов работают аналогично серверам ввода/вывода и тревог, предоставляя своим клиентам обработанную информацию.
Если в отчет включены графики или данные об тревогах, то сервер отчетов начинает выступать по отношению к серверам трендов и тревог как клиент. В процессе подготовки отчета сервер отчетов обращается к другим серверам за необходимой информацией.
Поскольку каждый сервер предназначен для поддержки нескольких клиентов, то добавление нового дисплейного клиента выполняется всего несколькими щелчками мыши на новом компьютере – без какого-либо вмешательства в действия существующей системы. Все клиенты отображения получают информацию от одного и того же сервера ввода/вывода. Таким образом, на базе локальной сети создается виртуальная сеть – без каких-либо потерь функциональных возможностей.
Если в системе есть дополнительные сервера, то они могут использоваться для повышения избыточности архитектуры. Например, если в систему добавляется резервный сервер тревог, то он всегда будет готов взять на себя управление в случае отказа основного.
Даже если все задачи будут исполняться на нескольких компьютерах, объединенных в одну локальную сеть, взаимоотношения между клиентами и серверами останутся теми же самыми – клиент-серверная архитектура.
Одним из наиболее важных факторов, влияющих на построение быстродействующего и эффективного клиент-серверного приложения, является минимизация объемов возвращаемой сервером информации. По мере возрастания объемов хранимых данных преимущества клиент-серверной архитектуры становятся все более и более очевидными.
Преимущества централизованной обработки в том, что все данные хранятся и обрабатываются в одном и том же месте. В отличие от нее распределенная обработка позволяет распределять вычислительную нагрузку по нескольким компьютерам. Citect обеспечивает преимущества обоих подходов.
Citect позволяет реализовать в системной архитектуре: гибкость и масштабируемость.
Гибкость – это возможность модификации системной архитектуры. Вместо того, чтобы привязывать пользователя к какой-либо одной схеме, Citect дает ему возможность самому выбирать архитектуру – использовать все лучшее, что есть в централизованной и распределенной обработке.
С самого начала ориентированный на клиент-серверные архитектуры, Citect функционально состоит из следующих пяти отдельных задач:
- Ввод/Вывод – управление и оптимизация всех операций по обмену данными.
- Тревоги – мониторинг всех тревог: аналоговых, дискретных, SPC.
- Отчеты – управление, планирование и подготовка отчетов.
- Графики – Сбор, сохранение и построение графиков на основе статистических данных.
- Отображение – человеко-машинный интерфейс, взаимодействующий со всеми остальными задачами для поддержания вывода информации на дисплей (обновления вывода и исполнения команд).
Все задачи исполняются независимо друг от друга. Благодаря этой уникальной архитектуре пользователь имеет возможность сопоставлять каждой задаче свой компьютер. В частности, одна машина может быть выделена для вывода информации и создания отчетов, а другая – для вывода данных, обслуживания ввода/вывода и построения графиков.
В сетевых системах Citect обеспечивает применение централизованной базы данных. Наличие всего одной общей базы – это огромное преимущество, поскольку в этом случае все изменения выполняются всего в одном месте (а используются везде).
4.3 Создание визуального интерфейса
На рисунке 4.5 изображено главное окно технологического процесса. Данное окно является стандартным шаблоном меню в SETECT, которое появляется при запуске программы. На нем представлены кнопки перехода к окнам отображения технологического процесса, а также выход из SCADA-системы. В верхнем правом углу отображается текущая дата и время.
Рисунок 4.5 - Меню системы
На рисунке 4.6 изображено окно процесса эликтролиза. Представлена мнемосхема включает в себя: дистиллятор; емкость приема дистиллята; емкость приготовления электролита; питательный бак оснащенные датчиками, электролизеры, разделительные колонны, промыватели газов и колонны регулирования давления.
В точках контроля находятся панели отображения параметров. В зависимости от приближения значения данных к придельному значению, индикаторы меняют цвет:
- зеленый –норма;
- желтый – приближение к границе;
- красный – критическая ситуация.
Ввод задающих значений осуществляется непосредственно в ячейки индикаторов.
При достижении критических значений система выводит предупреждения о опасности и способы их устранения (рисунок 4.7).
Отображенные на экране исполнительные механизмы: кран, насос, вентиляторы, при срабатывании изменяют зеленный цвет на серый. Возможен переход из автоматического режима в ручной.
В нижней части экрана расположены клавиши перехода к остальным окнам.
Рисунок 4.6 – Мнемосхема ТП
Данные срабатывания тревог автоматически заносятся в архив. Просмотр параметров текущего режима возможно виде одиночного графика (Рисунок 4.8). На рисунке 4.9 представлена страница аппаратных сигнализаторов, на которой отображаются данные архива.
Рисунок 4.7 – Сообщения «Аварийная ситуация»
Рисунок 4.8 – Одиночный тренд.
Рисунок 4.9 – Страница аппаратных сигнализаторов
Рисунок 4.10– Протокол действия оператора
ЗАКЛЮЧЕНИЕ
В ходе выполнения магистерской диссертации в соответствии с поставленным заданием была создана многофункциональная автоматизированная система управления, обеспечивающая безопасную эксплуатацию оборудования и протекание технологического процесса производства водорода.
Для этого был проведен анализ технологического процесс исследование технологического процесса получения водорода методом электролиза как объект автоматизации и управления. Выбраны контролируемые и регулируемые параметры, разработана техническая структура АСУТП.
Методом объектно-ориентированного анализа построена модель обеспечения безопасности процесса в виде технологических алгоритмов. (выбраны и обоснованы информативные параметры и управляющие воздействия; определены их взаимосвязи).
Разработана модель и программное обеспечение симулятора (имитатора), позволяющий в режиме реального времени исследовать процесс и технологию управления им. Это позволяет организовать отладку ПО в лабораторных условиях. Симулятор используется также для обучения персонала.
На базе Citect-Scada разработано прикладное программное обеспечение для АРМ оператора.
СПИСОК ЛИТЕРАТУРЫ
1. Якименко Л. М., Модылевская И. Д., Ткачек З. А. Электролиз воды. – М.: Химия, 1970. – 264 с.
2. Водород. Свойства, получение, хранение, транспортирование, применение. Справочник /Д. Ю. Гамбург, В. П. Семенов, Н. Ф. Дубовкин, Л. Н. Смирнова; Под ред. Д. Ю. Гамбург, Н. Ф. Дубовкин. – М.: Химия, 1989. – 672 с.
3. Иоффе В. Б. Основы производства водорода. – Л.: ГОСТОПТЕХИЗДАТ, 1960. – 430 с.
4. Технологический регламент ООО «Салаватстекло».–2003.– 150 с.
5. Серебрянский Ф. З. Электролизеры для производства водорода и кислорода. Химическое и нефтеперерабатывающее машиностроение. – М.: ЦИНТИХИМНЕФТЕМАШ, 1969. – 49 с.
6. Якименко Л. М. Получение водорода, кислорода и щелочей. – М.: Химия, 1974. – 552 с.
7. Клюев А. С. И др; Под ред. Клюева А. С. Проектирование систем автоматизации технологических процессов: Справоч. пособие – М.: Энергия, 1980. – 512 с.
8. Кулаков М. В. Технологические измерения и приборы для химических производств. М.: Машиностроение, 1974. – 464 с.
9. Фарзане Н. Г., Илясов Л. В., Азим-заде А. Ю. Технологические измерения и приборы. - М.: Высшая школа, 1989. – 465 с.
10. Каталоги компании «ICOS».
11. Макаренко В. Г. Схемы автоматизации. Учебное пособие к курсовому и дипломному проектированию. ЮРГТУ (НПИ) – Новочеркасск, 1999. – 48 с.
12. Каталоги компании «МЕТРАН».
13. Стефании Е. П. Основы построения АСУТП. – М.: Энергоиздат, 1982. – 349 с.
14. Р. А. Нейдорф, А. В. Ситников. Моделирование химико-технологических процессов на ЭВМ. – Новочеркасск, 1986.
15. СанПиН 2.2.1/2.1.1.1200-03 «Санитарно-защитные зоны и санитарная классификация предприятий».
16. НПБ 105-95 «Определение категорий помещений и зданий по взрывопожарной и пожарной опасности».
17. СНиП 21-01-97 «Пожарная безопасность зданий и сооружений».
18. СНиП 31-03-2001 «Огнеопасность зданий и сооружений».
19. СНиП 23-05-95 «Строительные нормы и правила РФ. Естественное и искусственное освещение».
20. СН 2.2.4/2.1.8.566-96 «Производственная вибрация, вибрация в помещениях жилых и общественных зданиях».
21. СН 2.2.4/2.1.8.562-96 «Шум на рабочих местах, в помещениях жилых, общественных зданий и на территории жилой застройки».
22. ГОСТ 12.1.019-79 (2001) «Электробезопасность».
23. ГОСТ 12.1.044-89 «Пожароопасность веществ и материалов. Номенклатура показателей и методы определения».
24. СН 2.2.2.542-96 «Эргономические требования и требования безопасности».
25. НПБ 155-96 «Пожарная техника. Огнетушители переносные. Основные показатели и номенклатура».
26. В. К. Беклешов. Технико-экономическое обоснование дипломных проектов. – М.: «Высшая школа», 1991.
27. В. П. Свечкарев. Системы автоматизации и управления технологическими процессами и производствами. Новочеркасск 2001.
28. Л. Н. Липатов. Типовые процессы химической технологии как объекты управления. М.: Химия, 1973.
ПРИЛОЖЕНИЕ А
(Справочное)
Листинг Сicode – программы «Обеспечение безопасности процесса»
string DO_vkl[31]="DO_2","DO_4","DO_6","DO_8","DO_10","DO_12","DO_14","DO_16","DO_18","DO_20",
"DO_22","DO_24","DO_26","DO_28","DO_30","DO_32","DO_34","DO_36","DO_38","DO_40",
"DO_42","DO_44","DO_64","DO_66","DO_69","DO_71","DO_77","DO_79","DO_81","DO_83","DO_85";
string DI_vkl_otkl[31]="DI_41","DI_42","DI_43","DI_44","DI_45","DI_46","DI_47","DI_48","DI_49","DI_50",
"DI_51","DI_52","DI_53","DI_54","DI_55","DI_56","DI_57","DI_58","DI_59","DI_60",
"DI_61","DI_62","DI_73","DI_74","DI_93","DI_94","DI_65","DI_66","DI_75","DI_67","DI_68";
string DO_otkl[31]="DO_1", "DO_3", "DO_5", "DO_7", "DO_9", "DO_11", "DO_13", "DO_15", "DO_17", "DO_19",
"DO_21", "DO_23", "DO_25", "DO_27", "DO_29", "DO_31", "DO_33", "DO_35", "DO_37", "DO_39",
"DO_41", "DO_43","DO_63","DO_67","DO_68","DO_70","DO_76","DO_78","DO_80","DO_82","DO_84";
/* string DI_otkl[31]="DI_41", "DI_42", "DI_43", "DI_44", "DI_45", "DI_46", "DI_47", "DI_48", "DI_49", "DI_50",
"DI_51", "DI_52", "DI_53", "DI_54", "DI_55", "DI_56", "DI_57", "DI_58", "DI_59", "DI_60",
"DI_61", "DI_62","DI_73","DI_74","DI_93","DI_94","DI_65","DI_66","DI_75","DI_67","DI_68"; */
/*string DO_zakr[9]="DO_64","DO_66","DO_69","DO_71","DO_77","DO_79","DO_81","DO_83","DO_85";
string DI_zakr[9]="DI_73","DI_74","DI_93","DI_94","DI_65","DI_66","DI_75","DI_67","DI_68";
string DO_otkr[9]="DO_63","DO_67","DO_68","DO_70","DO_76","DO_78","DO_80","DO_82","DO_84";
string DI_otkr[9]="DI_73","DI_74","DI_93","DI_94","DI_65","DI_66","DI_75","DI_67","DI_68";
*/
//******************************************************************************
string DO_zakr_otkr[8]="DO_87","DO_88","DO_72","DO_73","DO_75","DO_102","DO_103","DO_104";
string DI_zakr_otkr[8]="DI_85","DI_86","DI_00","DI_00","DI_69","DI_70","DI_71","DI_72";
INT pr_start=0;
INT NewVal_DO_otkl[31];
INT Val_DO_otkl[31];
INT NewVal_DO_vkl[31];
INT Val_DO_vkl[31];
INT NewVal_DO_zakr_otkr[8];
INT Val_DO_zakr_otkr[8];
FUNCTION podygrish()
INT i;
IF pr_start=0 THEN
FOR i=0 TO 30 DO
Val_DO_vkl[i]=TagRead(DO_vkl[i]);
IF Val_DO_vkl[i]=1 THEN TagWrite(DI_vkl_otkl[i],1); TagWrite(DO_vkl[i],0); END
Val_DO_otkl[i]=TagRead(DO_otkl[i]);
IF Val_DO_otkl[i]=1 THEN TagWrite(DI_vkl_otkl[i],0); TagWrite(DO_otkl[i],0); END
// Val_DO_vkl[i]=TagRead(DO_vkl[i]);
NewVal_DO_otkl[i]=0;
NewVal_DO_vkl[i]=0;
END
pr_start=1;
end
//========================================================
FOR i=0 TO 30 DO
NewVal_DO_otkl[i]=TagRead(DO_otkl[i]);
if NewVal_DO_otkl[i] <> Val_DO_otkl[i] then
Val_DO_otkl[i] = NewVal_DO_otkl[i];
if NewVal_DO_otkl[i]=1 then
TagWrite(DI_vkl_otkl[i],0);
TagWrite(DO_otkl[i],0);
NewVal_DO_otkl[i]=0;
Val_DO_otkl[i]=0;
end
end
END
FOR i=0 TO 30 DO
NewVal_DO_vkl[i]=TagRead(DO_vkl[i]);
if NewVal_DO_vkl[i] <> Val_DO_vkl[i] then
Val_DO_vkl[i] = NewVal_DO_vkl[i];
if NewVal_DO_vkl[i]=1 then
TagWrite(DI_vkl_otkl[i],1);
TagWrite(DO_vkl[i],0);
NewVal_DO_vkl[i]=0;
Val_DO_vkl[i]=0;
end
end
END
//****************************************************************************
FOR i=0 TO 7 DO
NewVal_DO_zakr_otkr[i]=TagRead(DO_zakr_otkr[i]);
if NewVal_DO_zakr_otkr[i] <> Val_DO_zakr_otkr[i] then
Val_DO_zakr_otkr[i] = NewVal_DO_zakr_otkr[i];
if NewVal_DO_zakr_otkr[i]=1 then
TagWrite(DI_zakr_otkr[i],1);
else
TagWrite(DI_zakr_otkr[i],0);
end
end
END
//*************************************************
if DO_89=1 then DI_87=1;DO_89=0; end
if DO_90=1 then DI_88=1;DO_90=0; end
if DO_91=1 then DI_89=1;DO_91=0; end
if DO_92=1 then DI_87=0;DI_88=0;DI_89=0;DO_92=0; end
END
FUNCTION
Set_ust1()
PageSetInt(1,AI_1_Low);
PageSetInt(2,AI_2_Low);
PageSetInt(3,AI_3_Low);
PageSetInt(4,AI_4_Low);
PageSetInt(5,AI_5_Low);
PageSetInt(6,AI_6_Low);
PageSetInt(7,AI_8_Low);
PageSetInt(8,AI_9_Low);
PageSetInt(9,AI_10_Low);
PageSetInt(10,AI_11_Low);
PageSetInt(11,AI_12_Low);
PageSetInt(12,AI_13_Low);
PageSetInt(13,AI_14_Low);
PageSetInt(14,AI_17_Low);
PageSetInt(15,AI_18_Low);
PageSetInt(16,AI_19_Low);
PageSetInt(17,AI_20_Low);
PageSetInt(18,AI_21_Low);
PageSetInt(19,AI_22_Low);
PageSetInt(20,AI_23_Low);
PageSetInt(21,AI_24_Low);
PageSetInt(22,AI_25_Low);
PageSetInt(23,AI_26_Low);
PageSetInt(31,AI_1_Norma);
PageSetInt(32,AI_2_Norma);
PageSetInt(33,AI_3_Norma);
PageSetInt(34,AI_4_Norma);
PageSetInt(35,AI_5_Norma);
PageSetInt(36,AI_6_Norma);
PageSetInt(37,AI_8_Norma);
PageSetInt(38,AI_9_Norma);
PageSetInt(39,AI_10_Norma);
PageSetInt(40,AI_11_Norma);
PageSetInt(41,AI_12_Norma);
PageSetStr(42,AI_13_Norma);
PageSetStr(43,AI_14_Norma);
PageSetStr(44,AI_17_Norma);
PageSetInt(45,AI_18_Norma);
PageSetInt(46,AI_19_Norma);
PageSetInt(47,AI_20_Norma);
PageSetInt(48,AI_21_Norma);
PageSetInt(49,AI_22_Norma);
PageSetInt(50,AI_23_Norma);
PageSetInt(51,AI_24_Norma);
PageSetInt(52,AI_25_Norma);
PageSetInt(53,AI_26_Norma);
PageSetInt(61,AI_1_High);
PageSetInt(62,AI_2_High);
PageSetInt(63,AI_3_High);
PageSetInt(64,AI_4_High);
PageSetInt(65,AI_5_High);
PageSetInt(66,AI_6_High);
PageSetInt(67,AI_8_High);
PageSetInt(68,AI_9_High);
PageSetInt(69,AI_10_High);
PageSetInt(70,AI_11_High);
PageSetInt(71,AI_12_High);
PageSetStr(72,AI_13_High);
PageSetStr(73,AI_14_High);
PageSetStr(74,AI_17_High);
PageSetInt(75,AI_18_High);
PageSetInt(76,AI_19_High);
PageSetInt(77,AI_20_High);
PageSetInt(78,AI_21_High);
PageSetInt(79,AI_22_High);
PageSetInt(80,AI_23_High);
PageSetInt(81,AI_24_High);
PageSetInt(82,AI_25_High);
PageSetInt(83,AI_26_High);
END
//=================файл vozv_page.ci========================
INT
FUNCTION
vozv_page(STRING NamePage)
INT vozv;
IF PageInfo(0)=NamePage THEN
vozv=1;
ELSE
vozv=0;
END
RETURN vozv;
END
//========================================================
NT hFont1,hFont;
INT hFormkach=-1;
//================файл F_parameter.ci =================
INT
FUNCTION
F_parameter(REAL Parameter, REAL niz, REAL verx)
INT Col;
IF ((Parameter < niz) OR (Parameter > verx)) THEN
Col=1;
ELSE
Col=0;
END
RETURN Col;
END
//---------------------------------------------
INT
FUNCTION
F_vyxod(REAL Param_vxod, REAL Param_vyxod)
INT Col;
IF (Abs(Param_vxod-Param_vyxod)>=Delta_t) THEN
Col=1;
ELSE
Col=0;
END
RETURN Col;
END
//---------------------------------------------
INT
FUNCTION
F_parameter4(REAL Parameter, REAL niz)
INT Col;
IF Parameter < niz THEN
Col=1;
ELSE
Col=0;
END
RETURN Col;
END
//---------------------------------------------
INT
FUNCTION
F_parameterv(REAL Parameter, REAL verx)
INT Col;
IF Parameter >= verx THEN
Col=1;
ELSE
Col=0;
END
RETURN Col;
END
//-----------------------------------------
INT
FUNCTION F_parameter2(INT Parameter,INT hi)
INT Color;
IF (Parameter > hi) THEN
Color=1;
ELSE
Color=0;
END