Пишем КРУГОЛ-программу Разработка программы осуществляется в интегрированной среде разработки «КРУГОЛ». Выполняет программу модуль «Ядро КРУГОЛа» среды исполнения SCADA «КРУГ-2000».
Для того чтобы модуль «Ядро КРУГОЛа» «понял», какие программы он должен исполнять, необходимо в базу данных АСУ ТП добавить информацию о выполняемых КРУГОЛ- программах.
В начале загружаем интегрированную среду разработки «КРУГОЛ» (рисунок 4.3.1)
58 Глава 4. Первые шаги
Рисунок 4.3.1 – Запуск интегрированной среды разработки «КРУГОЛ»
Создаем новый проект и новую программу. Каксоздатьновыйпроектдляразработкипрограммы?
| Ваши действия 🡆
| Где выбрать 🡆
| Что выбрать/ Задать значение
| Комментарий
| 1
| Создайте новый проект
|
меню «Файл»
|
Новый проект
| Откроется окно
«Создание проекта»
|
2
|
Задайте свойства проекта
(рисунок 4.3.2)
|
окно
«Создание проекта»
| Файл проекта – Учебный _1 Папка –
задайте путь (там же, где и база данных!) Платформа –
Среда исполнения КРУГОЛ 2.2 Windows
|
После задания параметров нажмите «ОК»
| 3
| Создайте новую программу
| меню «Файл»
| Новый
| Откроется окно
«Создать…»
|
4
| Задайте свойства
программы (рисунок 4.3.3)
| окно
«Создать…»
| Тип программы – СТ Имя файла – Учебная
| После задания
параметров нажмите «ОК»
| Конфигурируем станцию оператора 59
Рисунок 4.3.2 – Создание проекта ИСР «КРУГОЛ»
Рисунок 4.3.3 – Создание новой учебной программы на языке СТ
60 Глава 4. Первые шаги
Теперь все готово для реализации алгоритма имитации технологического процесса на языке СТ. Программа«Учебная»
В соответствие с функционированием разрабатываемой АСУ ТП обмен между станцией оператора и УСО осуществляется данными, значения которых характеризуют состояние насоса, задвижки, уровень жидкости и температуру в резервуаре, давление в трубопроводе, а также определяют команды оператора («Включить насос», «Открыть задвижку» и другие).
Этим данным соответствуют технологические переменные базы данных. Изменяя их значения, мы, тем самым, меняем состояние технологического процесса и описываем реакцию системы на действия оператора.
Таким образом, алгоритм программы «Учебная» – имитатора технологического процесса – сводится к изменению значений переменных БД при наступлении определенных событий. ВсамомначалепрограммыКруголдолженузнатьтекущеевремяидату
Текст программы
| Комментарий
| Программа Учебная Начало (пц1,пц2,пц3)=stime() (пц11,пц12,пц13)=sdate()
| Время и дата используются в программе Кругол для формирования Времени и даты возникновения аварии. получаем текущее время (час: мин: сек)
получаем текущую дату (год: месяц: день)
|
Алгоритмуправленияработойнасоса
Текст программы
| Комментарий
| :Состояние насоса
|
| Если дв1=1
| Если команда «Включить»
| {
|
| вд1=1
| Включить насос – установить состояние насоса
| }
| «Включен»
| Иначе
| В противном случае
| {
|
| вд1=0
| Отключить насос – установить состояние «Отключен»
| }
|
|
Алгоритмуправленияработойзадвижки
Текст программы
| Комментарий
| :Состояние задвижки
|
| Если дв2=1
{
вд3=0 вкл тс1
Если тс1>3
{
вд2=1 дв2=0 выкл тс1
тс1=0
| Если команда «Открыть задвижку»: Состояние задвижки «Закрыта» = ложь
Включить таймер – задвижка мгновенно не открывается! Если прошло время, необходимое для открытия задвижки Состояние задвижки «Открыта» = истина
«Сбросить» команду «Открыть задвижку» Выключить таймер
Обнулить таймер
| Конфигурируем станцию оператора 61
}
}
|
| Если дв3=1
{
вд2=0 вкл тс2
Если тс2>3
{
вд3=1 дв3=0 выкл тс2 тс2=0
}
}
| Если команда «Закрыть задвижку»: Состояние задвижки «Открыта» = ложь
Включить таймер – задвижка мгновенно не закрывается! Если прошло время, необходимое для закрытия задвижки Состояние задвижки «Закрыта» = истина
«Сбросить» команду «Закрыть задвижку» Выключить таймер
Обнулить таймер
|
Алгоритмизмененияуровняврезервуаре
Текст программы
| Комментарий
| :Уровень в резервуаре
|
| Если вд1=1
| Если состояние насоса «Включен»
| {
| значение атрибута а28 («Текущее значение до
| ва1.a28=ва1.а28+1
| обработки в контроллере») увеличивается –
| }
| уровень растёт
| Если вд2=1
| Если состояние задвижки «Открыта»
| {
|
| ва1.a28=ва1.а28-2
| Уровень падает
| }
|
|
Алгоритмимитациитемпературы
Текст программы
| Комментарий
| :Температура в резервуаре ва2=20+cos(ва2)
| Имитация значения температуры в резервуаре
|
Алгоритмимитациидавления
Текст программы
| Комментарий
| :Давление на выходе насоса
|
| Если вд1=1
| Если насос включен
| {
|
| ва3=cos(ва3)
| давление есть
| }
|
| Иначе
| В противном случае
| {
|
| ва3=0
| давления нет
| }
|
| Конецпрограммы«Учебная»
Текст программы
| Комментарий
| Защиты Выход
Конец
| Вызов процедуры «Защиты»
| 62 Глава 4. Первые шаги
Процедура«Защиты»
Процедура «Защиты» должна обрабатывать предупредительные и предаварийные ситуации в состоянии технологического процесса.
В рамках учебной АСУ ТП процедура должна выполнять следующее:
При достижении уровня жидкости в резервуаре верхней предупредительной границы (ВПГ) или нижней предупредительной границы (НПГ) цвет барграфа становится желтым При достижении уровня жидкости в резервуаре верхней предаварийной границы (ВАГ) насос выключается и задвижка открывается. Цвет барграфа – красный При достижении уровня жидкости в резервуаре нижней предаварийной границы (НАГ) задвижка закрывается и насос включается. Цвет барграфа – красный.
В самом начале процедуры «Защиты» текущее время и дату преобразовываем в вещественный формат. Время и дата используются в программе Кругол для формирования Времени и даты возникновения аварии. Алгоритмпроцедуры«Защиты»
Текст программы
| Комментарий
| Процедура Защиты Начало пв1=цв(пц1) пв2=цв(пц2) пв3=цв(пц3)
пв11=цв(пц11-2000) пв12=цв(пц12) пв13=цв(пц13)
| Текущее время и дату преобразовываем в вещественный формат
Час Минуты Секунды Год
Месяц День
|
Если ва1>ва1.а16
{
дв1=0 дв2=1 Если тс11<1
{
рв2 =пв1*10000+ пв2*100+ пв3
рв2.a9=пв13*10000+пв12*100+ пв11
}
вкл тс11
}
| Если уровень больше верхней предаварийной границы (атрибут а16), отключить насос и открыть задвижку:
«Даем» команду «Отключить» (насос)
«Даем» команду «Открыть задвижку» Включить таймер:
Для однократной обработки аварийной ситуации фиксируем время аварии в формате:
«ЧЧММСС» «ДДММГГ»
Включаем таймер
|
Если ва1<ва1.а15
{
дв1=1 дв3=1
Если тс11<1
{
рв2 =пв1*10000+пв2*100+ пв3
рв2.a9=пв13*10000+пв12*100
+пв11
}
| Если уровень меньше нижней предаварийной границы (атрибут а15), включить насос и закрыть задвижку
«Даем» команду «Включить» (насос)
«Даем» команду «Закрыть задвижку» Для однократной обработки аварийной ситуации:
Фиксируем время аварии в формате:
«ЧЧММСС» «ДДММГГ»
| Конфигурируем станцию оператора 63
Текст программы
| Комментарий
| вкл тс11
}
Если тс11>10
{
выкл тс11 тс11=0 пц5=ппд(3) Если пц5=0 {
message("Сформирован протокол пред- и послеаварийной ситуации")
}
Иначе { message("Ошибка формирования протокола пред- и послеаварийной ситуации") }
}
| Включаем таймер Через 10 секунд после аварии формируем протокол:
Выключаем таймер Обнуляем таймер
«Даем» команду «Сформировать протокол предаварийных ситуаций»
|
Если вд1=1
{
рв1=рв1+1
}
| Подсчет наработки насоса
Если насос включен – увеличить наработку насоса
| Иначе
{
рв1=0
}
Выход Конец
| В противном случае – обнулить наработку насоса
| Полный программный текст проекта «Учебный_1» приведен в приложении В «Программа учебная».
После создания программы сохраните ее исходный текст в том же каталоге, где находиться база данных!
Выполните трансляцию проекта. На рисунке 4.3.4 показана структура проекта «Учебный_1» и результат его трансляции.
64 Глава 4. Первые шаги
Рисунок 4.3.4 – Проект «Учебный_1» Процедура ПД (формирование печатных документов) будет рассмотрена далее, в разделе 5.2.3.
Формирование списка программ в базе данных Открываем Генератор базы данных и загружаем базу данных учебной АСУТП.
В дереве объектов выбираем меню «Система», в открывшейся форме в блоке «Ядро КРУГОЛа» с помощью кнопки добавляем программу в таблицу и задаем атрибуты программы: Номер – 1, Имя – Учебная. (рисунок 4.3.5). Затем сохраняем базу данных.
Конфигурируем станцию оператора 65
Рисунок 4.3.5 – Задаем название программы
|