Микроконтроллерная система взвешивания танков с жидким хлором

Таблица 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


Страницы: 1, 2, 3, 4, 5, 6, 7



Реклама
В соцсетях
бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты