Структурированный текст: циклические операции, программы сложных расчетов, дополнения сложной логики.
Диаграммы функциональных блоков: контроль и аварийная сигнализация, управление двигателями и клапанами, аналоговое регулирование. Диаграммы функциональных последовательностей: управление пуском - остановом, управление периодическими процессами.
Информационное и программное обеспечение АСУТП.
Информационное обеспечение (ИО) – единая система классификации и кодирования технологической и технико-экономической информации, справочная и оперативная информация. ИО должно иметь структурную иерархическую организацию.
Программное обеспечение (ПО), состоящее из общего (стандартного) и специального. Общее программное обеспечение – организующие и транслирующие программы, библиотеки стандартных программ и т.д. Специальное программное обеспечение – программы контроля и управления, реализующие функции АСУ ТП.
Требования к стандартному ПО. Для реализации задач РСУ используется программное обеспечение, функционирующее в среде многозадачной операционной системы реального времени (ОС РВ).
Сетевые программные средства, обеспечивающие объединение подсистем управления, операторских станций и средств архивирования данных в единую систему, должны реализовывать загрузку и управление запуском задач, обеспечивать обмен между задачами и базами данных, и предоставлять доступ к периферийным устройствам.
Система управления должна иметь возможность оперативного конфигурирования прикладного программного обеспечения в процессе функционирования АСУТП.
Все ошибочные ситуации, возникающие при работе программ, должны диагностироваться, сопровождаться сообщениями, и не должны вызывать нарушений в работе СУ.
Прикладное программное обеспечение АСУТП должно обеспечить реализацию требуемых алгоритмов контроля, регулирования и защиты, отображения информации, сигнализации и архивирования данных.
Алгоритмы управления должны иметь возможность переконфигурирования, и реализовываться через библиотечные блочные структуры.
В состав стандартной библиотеки языка функциональных алгоритмических блоков программно-технического комплекса входят следующие алгоритмы:1. Аналоговый параметр.2. Задвижка.3. Переключатель1. Функциональный алгоритмический блок "Аналоговый параметр".Вид алгоритмического блока предоставлен на рис. 1. Данный алгоритмический блок предназначен для организации интерфейса между пользователем и аналоговыми параметрами технологического процесса путем отображения значений полученных от аналоговых датчиков на мнемосхеме АРМ, а так же сигнализации при выходе данных параметров за допустимые пределы.
Входные переменные | |||
Название сигнала | Тип переменной | Описание | Значения сигналов |
PS_input | WORD | Значение АЦП | Значение АЦП, которое поступает на контроллер от модуля в шестнадцатеричном коде и затем преобразуется в реальное значение |
PS_mode | WORD | Текущий режим | Текущий режим |
LG_sim_value | REAL | Значение при симуляции* | Значение при симуляции, которая моет быть запущена для отладки. Выставляется вручную на входе блока. |
PR_sample_time | REAL | Время между вызовами программы | значение |
PR_HA_value | REAL | Значение верхней аварийной границы | значение |
PR_HW_value | REAL | Значение верхней предупредительной границы | значение |
PR_LW_value | REAL | Значение нижней предупредительной границы | значение |
PR_LA_value | REAL | Значение нижней аварийной границы | значение |
PR_max | REAL | Шкала датчика максимум | значение |
PR_min | REAL | Шкала датчика минимум | значение |
PR_change | REAL | Изменение | значение |
PR_deadband | REAL | Гистерезис | значение |
HL_Set | INT | Режим, настройки, прочее | |
HL_Command | INT | Команда | 1 – включить симуляцию 2 – выключить симуляцию 3 –включить верхнюю аварийную границу 4 – выключить верхнюю аварийную границу 5 – включить верхнюю предупредительную границу 6 – выключить верхнюю предупредительную границу 7 – включить нижнюю предупредительную границу 8 – выключить нижнюю предупредительную границу 9 – включить нижнюю аварийную границу 10 – выключить нижнюю аварийную границу 11 – включить симуляцию качества 12 – выключить симуляцию качества |
Выходные переменные | |||
Название сигнала | Тип переменной | Описание | Значения сигналов |
HL_Mode | INT | Режим | |
HL_STEP | INT | Состояние | |
HL_Status | WORD | Статус | 0* - симуляция; 1 - верхняя аварийная граница 2 - верхняя предупредительная граница 3 - нижняя предупредительная граница 4 – нижняя аварийная граница 5 – 0-20мА 6 – 4-20мА 7 – температурный датчик 8 – неисправность датчика |
HL_Impact | WORD | Резерв | не используется (резерв) |
HL_Alarms | DWORD | Биты аварий | 0 – нижняя аварийная граница 1 – нижняя предупредительная граница 2 – верхняя предупредительная граница 3 – верхняя аварийная граница 4 – неисправность датчика |
PS_value | REAL | Значение сигнала | значение |
PS_current | REAL | Текущее | значение |
PS_quality | BOOL | Качество | 0 - нет сигнала ; 1 - сигнал по качеству |
LG_HA | BOOL | Верхняя аварийная граница | 0 - нет сигнала ; 1 - верхняя аварийная граница |
LG_HW | BOOL | Верхняя предупредительная граница | 0 - нет сигнала ; 1 - верхняя предупредительная граница |
LG_LW | BOOL | Нижняя предупредительная граница | 0 - нет сигнала ; 1 - нижняя предупредительная граница |
LG_LA | BOOL | Нижняя аварийная граница | 0 - нет сигнала ; 1 - нижняя аварийная граница |

Входные переменные | |||
Название сигнала | Тип переменной | Опсиание | Значения сигналов |
PS_opened | BOOL | Концевой выключатель открытия | 1 – нет сигнала концевого выключателя открытия; 0 – есть сигнал концевого выключателя открытия |
PS_closed | BOOL | Концевой выключатель закрытия | 1 – нет сигнала концевого выключателя закрытия; 0 – есть сигнал концевого выключателя закрытия |
PS_opened_q | BOOL | Качество сигнала концевого выключателя открытия | 0 –диагностика сигнала концевого выключателя открытия – нормальное качество сигнала; 1 – диагностика сигнала концевого выключателя открытия – плохое качество сигнала |
PS_closed_q | BOOL | Качество сигнала концевого выключателя закрытия | 0 –диагностика сигнала концевого выключателя закрытия – нормальное качество сигнала; 1 – диагностика сигнала концевого выключателя закрытия – плохое качество сигнала |
PP_pr_open | BOOL | Защита запрет открытия | 0 – открытие разрешено; 1 – открытие запрещено |
PP_pr_close | BOOL | Защита запрет закрытия | 0 – закрытие разрешено; 1 – закрытие запрещено |
PP_pr_stop | BOOL | Защита запрет стоп | 0 - останов разрешен; 1 - останов запрещен |
PP_open | BOOL | Защита открыть | 0 - защита не активна; 1 - открытие от защиты |
PP_close | BOOL | Защита закрыть | 0 - защита не активна; 1 - закрытие от защиты |
PP_stop | BOOL | Защита остановить | 0 - защита не активна; 1 - стоп от защиты |
LG_in | WORD | Управление от логики (ФГУ) | 0 - включить; 1 - закрыть; 2 - открыть; 3 - стоп |
LG_on | BOOL | Включить автоматический режим (ФГУ) | 0 - выключен; 1 - включен |
LG_open | BOOL | Открыть от логики (от ФГУ) | 0 - нет действия; 1 - открыть от логики |
LG_close | BOOL | Закрыть от логики (от ФГУ) | 0 - нет действия; 1 - закрыть от логики |
LG_stop | BOOL | Стоп от логики (от ФГУ) | 0 - нет действия; 1 - стоп от логики |
LC_on | BOOL | Включить местный режим | 0 - нет действия; 1 - включить местный режим |
LC_open | BOOL | По месту открыть | 0 - нет действия; 1 - по месту открыть |
LC_close | BOOL | По месту закрыть | 0 - нет действия; 1 - по месту закрыть |
LC_stop | BOOL | По месту стоп | 0 - нет действия; 1 - по месту стоп |
PR_sample_time | REAL | Время между вызовами программы | значение в секундах |
PR_time_open_tr | REAL | Время размыкания с концевого выключателя при открытии (время, за которое пропадает сигнал наличия концевого выключателя) | значение в секундах |
PR_time_open | REAL | Время открытия | значение в секундах |
PR_time_close_tr | REAL | Время размыкания концевого выключателя при закрытии (время, за которое пропадает сигнал наличия концевого выключателя) | значение в секундах |
PR_time_close | REAL | Время закрытия | значение в секундах |
HL_Set | INT | Режим, настройки, прочее | 1 - ремонт; 2 - местный; 3 - автомат; 4 - дистанционный; 10 - квитирование; 11 - включить диагностику; 12 - выключить диагностику; 99 - автонастройка |
HL_Command | INT | Команда | 101 - открыть; 102-закрыть; 103 - стоп |
Выходные переменные | |||
Название сигнала | Тип переменной | Опсиание | Значения сигналов |
HL_Mode | INT | Режим | 1 - ремонт; 2 - местный; 3 - автомат; 4 - дистанционный |
HL_STEP | INT | Состояние | 1 - открыта; 2 - размыкание концевого выключателя открытия; 3 - закрывается; 4 - закрыта; 5 - размыкание концевого выключателя закрытия; 6 - открывается; 7 - промежуточное; 8 - схема разобрана* |
HL_Status | WORD | Статус | 0 - диагностика; 14 – воздействие защит 15 – воздействие ФГУ |
HL_Impact | WORD | Резерв | не используется (резерв) |
HL_Alarms | DWORD | Биты аварий | 0 - превышен интервал ожидания размыкания концевого выключателя открытия; 1 - превышен интервал ожидания замыкания концевого выключателя открытия; 2 - превышен интервал ожидания размыкания концевого выключателя закрытия; 3 - превышен интервал ожидания замыкания концевого выключателя закрытия; 4 - несанкционированный сход концевого выключателя открытия; 5 - несанкционированное открытие; 6 - несанкционированный сход концевого выключателя закрытия; 7 - несанкционированное закрытие; |
LG_output | WORD | Логика выход (выход ФГУ) | 0 - блок доступен для логики; 1 - закрыт; 2 – недоступен для управления; 3 – открыт |
PS_open | BOOL | Открыть | 0 - нет действия; 1 - открыть |
PS_close | BOOL | Закрыть | 0 - нет действия; 1 - закрыть |
PS_stop | BOOL | Стоп | 0 - нет действия; 1 - стоп |
PP_opened | BOOL | Открыто | 0 - нет сигнала; 1 - открыто |
PP_closed | BOOL | Закрыто | 0 - нет сигнала; 1 - закрыто |

Входные переменные | |||
Название сигнала | Тип переменной | Опсиание | Значения сигналов |
PS_on | BOOL | Включено | 0 - включено; 1 - выключено |
PS_off | BOOL | Выключено | 0 - выключено; 1 - включено |
PS_connect | BOOL | Схема собрана (Есть питание) | 0 - схема собрана; 1 - схема разобрана |
PS_IA | REAL | Ток A с ячейки питания | значение |
PS_IB | REAL | Ток B с ячейки питания | значение |
PS_IC | REAL | Ток C с ячейки питания | значение |
PS_mode | BOOL | Испытательное/рабочее положение | 0 - испытательное; 1 - рабочее |
PS_cart | BOOL | Тележка вкачена | 0 - не вкачена; 1 - вкачена |
PS_pp_fault | BOOL | Неисправность защит | 0 - защита исправна; 1 - защита неисправна |
PS_pp_on | BOOL | Срабатывание защит | 0 - защита не активна; 1 - защита сработала |
PS_IA_Q | BOOL | Качество сигнала | 0 - нормальное качество; 1 – плохое качество сигнала |
PS_IB_Q | BOOL | Качество сигнала | 0 - нормальное качество; 1 - плохое качество сигнала |
PS_IC_Q | BOOL | Качество сигнала | 0 – нормальное качество; 1 - плохое качество сигнала |
PP_pr_on | BOOL | Запрет включения от защиты | 0 - защита не активна; 1 - защита активна |
PP_pr_off | BOOL | Запрет отключения от защиты | 0 - защита не активна; 1 - защита активна |
PP_on | BOOL | Включить от защиты | 0 - нет действия; 1 – включение от защиты |
PP_off | BOOL | Выключить от защиты | 0 - нет действия; 1 – выключение от защиты |
LG_on | BOOL | Автоматический режим (управление от ФГУ) | 0 - выключено; 1 - включено |
LG_f_on | BOOL | Автоматика включить (от ФГУ) | 0 - нет действия; 1 - включить автоматический режим |
LG_f_off | BOOL | Автоматика выключить (от ФГУ) | 0 - нет действия; 1 - выключить автоматический режим |
LC_on | BOOL | Местный режим (Управление по месту) | 0 - выключено; 1 - включено |
LC_f_on | BOOL | На месте включить (по месту) | 0 - нет действия; 1 - включить местный режим |
LC_f_off | BOOL | На месте выключить (по месту) | 0 - нет действия; 1 - выключить местный режим |
PR_time_on | REAL | Таймаут (задержка) на включение | значение в секундах |
PR_time_off | REAL | Таймаут (задержка) на отключение | значение в секундах |
HL_Set | INT | Режим, настройки, прочее | 1 - ремонт; 2 - местный; 3 - автомат; 4 - дистанционный; 10 - квитирование; 11 - включить диагностику; 12 - выключить диагностику; 99 - автонастройка |
HL_Command | INT | Команда | 101 - включить; 102-выключить; |
Выходные переменные | |||
Название сигнала | Тип переменной | Опсиание | Значения сигналов |
HL_Mode | INT | Режим | 1 - ремонт; 2 - местный; 3 - автомат; 4 - дистанционный |
HL_STEP | INT | Состояние | 1 – тележка вкачена; 2 – необходим включение; 3 – включение; 4 - включено; 5 – выключение; 6 – рабочее положение; 7 - выключено; 10 - схема разобрана; |
HL_Status | WORD | Статус | 0 – статус диагностики; 14 – воздействие защит |
HL_Impact | WORD | Резерв | не используется (резерв) |
HL_Alarms | DWORD | Биты аварий | 0 – несанкционированное включение 1 – превышен интервал ожидания включения 2 – несанкционированное выключение 3 – превышен интервал ожидания выключения 4 – сработала защита 5 – пришел сигнал «испытательное положение» во время работы 6 – пришел сигнал «рабочее положение» во время испытания 7 – неопределенное состояние |
PS_turn_on | BOOL | Включить | 0 - нет действия; 1 - включить |
PS_turn_off | BOOL | Выключить | 0 - нет действия; 1 - выключить |
LG_output | WORD | Логика выход (выход ФГУ) | 0 – блок доступен для управления 1 - включен 2 – блок недоступен для управления |
Выбор языка определятся не только предпочтениями пользователя, но и смыслом решаемой задачи. Если исходная задача формулируется в терминах последовательной обработки и передачи сигналов, то для нее проще и нагляднее использовать язык FBD. Если задача описывается как последовательность срабатываний некоторых ключей и реле, то для нее нагляднее всего будет язык LD. Для задач, которые изначально формулируются в виде сложного разветвленного алгоритма, удобнее будет язык ST.
Язык ST является текстовым языком высокого уровня и очень сильно напоминает Паскаль:
Листинг 5. Пример программы на языке ST
IF Voltage>220 THEN
Current:=Current - 10; (*Если V>220 В, то уменьшить ток на 10*)
ELSE
Current:=50; Speed:= ON;(*Установить ток 50А и включить мотор*)
END_IF;
Несмотря на это, ST имеет много отличий от языка Паскаль и разработан специально для программирования ПЛК. Он содержит множество конструкций для присвоения значений переменным, для вызова функций и функциональных блоков, для написания выражений условных переходов, выбора операторов, для построения итерационных процессов. Этот язык предназначен в основном для выполнения сложных математических вычислений, описания сложных функций, функциональных блоков и программ.