О методах отладки программ автоматизированных систем управления технологическими процессами
Отладку программного обеспечения АСУ ТП традиционно осуществляют по классической схеме (снизу—вверх) в следующей последовательности: автономная программ в статике; комплексная — подсистем и системы в статике, а также в динамике без подключения к реальному объекту и с реальными объектами.
Автономная отладка систем управления технологическими процессами — это отладка отдельных подпрограмм и стандартных модулей либо без взаимодействия с другими подпрограммами, либо при наличии взаимодействия с небольшой группой программ, решающих некоторую частную задачу.
Автономную отладку систем управления технологическими процессами подразделяют на три этапа: ручной отладки без использования вычислительных машин; отладки на универсальных и отладки на управляющих программируемых логических контроллерах (ПЛК). Второй этап может отсутствовать.
При ручной отладке ПО программируемых логических контроллеров (ПЛК) автоматизированных систем, спроектированного на автокоде, решаются следующие задачи: проверка записи программы на соответствие синтаксическим и семантическим правилам выбранного языка; логики программы на соответствие ТЗ и структурной схеме; основных логических маршрутов обработки информации; уточнение содержания и структуры входной и выходной информации и способа сопряжения проверяемого модуля с другими по информации и управлению; подготовка и предварительная проверка программ по тестам, используемым при автономной отладке на программируемых логических контроллерах (ПЛК).
Для повышения методичности процесса отладки систем управления технологическими процессами применяют различные бланки и таблицы, содержащие следующие разделы:
- цель отдельных этапов отладки и план их проведения по каждому модулю;
- структурную схему;
- макет программы, записанный на соответствующем языке; состав исходной информации;
- контролируемые величины и точки (зоны контроля); состав результирующей информации.
В результате просмотра текста программы автоматизированных систем при ручном контроле проверяют следующие факторы:
- соответствие переходов в тексте программы логике ТЗ (спецификациям); последовательность расчета, запоминания и использования переменных величин;
- правильность использования данных;
- состав исходной информации при включении ЦВМ и при изменении режимов функционирования и возможность решения задачи при этих условиях.
После трансляции и устранения синтаксических ошибок, выявленных при трансляции, наступают этапы автономной отладки на ЦВМ. Отладка систем управления технологическими процессами начинается с проверки прохождения частных тестов и носит итерационный характер с постепенным усложнением тестов.
Прежде чем приступить к локализации причины неработоспособности программы, следует определить ее природу — является ли она следствие ошибки: аппаратуры, операционной системы, компилятора или специального ПО. При обнаружении ошибки в специальном ПО возникает вопрос, в какой его части находится ошибка. Ответ на этот вопрос обычно удается найти методом исключения из рассмотрения маловероятных источников ошибки. Рекомендуется проверить, является ли ошибка повторяющейся и устойчивой, такие ошибки легче обнаружить. Классическими способами отладки являются дампинг памяти и трассировка.
Дампинг памяти (распечатки содержимого оперативной памяти) является самым распространенным способом отладки автоматизированных систем. Полезность этого способа, существенно зависит от своевременности распечатки, удобства чтения (что зависит от выбора формата — предпочтителен алфавитно-цифровой фор. мат). Рекомендуется сохранять распечатки (дампы) для последующего анализа при поиске других ошибок. Использование дампов существенно усложняется, если программы пользуются общей областью памяти. В таких случаях дамп показывает последнюю записанную информацию, а следы предыдущих действий других подпрограмм будут утеряны.
Трассировка или моментальная фотография автоматизированных систем - разновидность дампа оперативной памяти. Трассировочные средства позволяют распечатывать содержимое определенных ячеек памяти (переменных, параметров связи и т. п.) в моменты или при условиях, указанных программистом. Существуют следующие разновидности трассировок систем управления технологическими процессами:
- для подпрограммы — для отпечатки индикационных признаков каждой ситуации, в которой осуществляется вызов конкретной подпрограммы (желательно печатать все аргументы, представленные в подпрограмме, и признаки того, осуществила ли подпрограмма нормальный выход);
- для переменной — для распечатки значений указанных переменных, элементов данных, областей рабочей памяти, массивов и т. п.;
- для оператора — как вынужденное средство после того, как все другие виды отладочных приемов не дают результата (в этом виде распечатки выдаются значения всех переменных (регистров), которые затрагиваются некоторым программным оператором как до, так и после выполнения этого оператора);
- для терминала — показывает все входные и выходные сообщения для конкретного терминала или группы терминалов;
- по времени — в АСУ ТП иногда трудно понять, что нужно прослеживать, так как ошибку трудно привязать к какой-либо подпрограмме или конкретной переменной (для этого случая используют трассировочную программу, периодически печатающую (или записывающую на диск) содержимое выбранных участков памяти);
- условные — работают при выполнении тех или иных условий (например, «пришел сигнал А и переменная В положительна» и т. п.).
Комплексная отладка подсистем и системы в статике. Проверяется и корректируется сопряжение отдельных автономно отлаженных программ автоматизированных систем по информации и управлению в некоторые фиксированные моменты времени. При этом устанавливается тождественность входных и выходных связей сопрягаемых частей (как по информации, так и по управлению). Этот этап отличается от последующих полным игнорированием реального времени включения программ операционной системой и реальной динамики взаимодействия подсистем. Функционирование этих подсистем имитируется информацией, подготавливаемой в составе тестов. Реальный объект систем управления технологическими процессами к контуру управления и обработки данных не подключен. Все обратные связи разомкнуты либо представлены упрощенно. Система прерывания выключена.
Комплексная отладка системы в динамике без подключения к реальному объекту (с использованием программных или физических имитаторов автоматизированных систем) обеспечивает:
проверкой отладку начального режима включения системы при отсутствии информации от внешних терминалов;
- проверку взаимодействия задач системы с подсистемой сбора и обработки информации, в состав которой входят устройства связи с объектом, а также с подпрограммами обмена информацией;
- проверку взаимодействия задач при работающей операционной системе с включенной системой прерывания, т. е. реакций на инициативные сигналы;
- проверку взаимодействия при имитации различных критических ситуаций, с целью подтверждения устойчивости функционирования.
Комплексная отладка системы с реальным объектом — завершающий этап отладки автоматизированных систем. При этом корректируется взаимодействие программного обеспечения в реальном масштабе времени и уточняется автономное решение задач АСУ ТП в реальных условиях. Проверяются и отлаживаются система функционального контроля, системы контроля подсистем передачи данных, а также всего комплекса средств, обеспечивающих устойчивость ПО программируемых логических контроллеров (ПЛК).
На этом этапе происходит уточнение целей управления, выбранных методов решения задач АСУ ТП, используемых математических моделей и способов реализации ПО, приводящее к пересмотру проектных решений и повторению этапов проектирования.
Эффективным отладочным средством на этапе динамической отладки является диалоговая отладочная система реального времени с использованием языков высокого уровня. Такая система обычно обеспечивает следующее:
- Операторы или команды для установления и изъятия контрольных
точек в любом месте программы. При достижении программой этой точки ее текущее, состояние «замораживается» и управление передается программисту. Точка устанавливается заданием номера оператора относительно какой-либо метки или входной точки. Следовательно, отладочная система должна иметь доступ к таблице символов или к исходному тексту программы. Проблема значительно упрощается при работе с интерпретирующими трансляторами (типа языка БЕЙСИК).
Расширением простой контрольной точки является контрольная точка с условиями. Например, введение параметра N может означать, что выход с передачей управления человеку должен осуществляться только после N-го прохода точки.
- Способность системы возвращать управление программисту в случае установления факта наличия ошибки (например, при попытке извлечь квадратный корень из отрицательного числа, при превышении границ массива и т. п.). Компилятор должен генерировать отладочный код так, чтобы выполнение программы отслеживалось как можно тщательней.
Если произошла ошибка, программисту автоматизированных систем должно быть выдано ясное диагностическое сообщение. Информация, необходимая для прослеживания источника ошибки, должна выдаваться в терминах исходного языка, т. е. должно быть указано место относительно метки в конкретной программе. Полезным является использование механизма защиты переменной или массива — система сообщает о любой попытке использовать эти элементы.
- Средства анализа и изменения любого элемента данных в программе после того, как ее состояние «заморожено» и управление передано программисту. Для этого в простейшем случае может понадобиться выполнение операторов назначения или печати, из чего следует, что система должна быть в состоянии вызвать компилятор. Более сложные операции могут, например, использовать операторы цикла для распечатки элементов массива.
Язык отладочной системы автоматизированных систем обычно оказывается шире исходного языка. Например, могут понадобиться последние N наборов параметров, с которыми происходил вызов какой-либо процедуры и т. п.
- Возможность перезапуска программы автоматизированных систем не обязательно с той точки, где она прервана.
- Средства для изъятия, замены и вставки новых частей в программы систем управления технологическими процессами. Идеальным случаем является возможность получить требуемые изменения немедленно. Если программа хранится в скомпилированной форме, единственным способом внесения изменений является редактирование символьного текста и перекомпиляции (повторная трансляция). Если в системе используется интерпретатор, то модификация программы легко реализуема.
Однако при использовании интерпретатора скорость выполнения программы резко уменьшается. Используют смешанный способ: одна часть программы скомпилирована, другая — интерпретируется в процессе выполнения. При этом первый прогон программы при отладке осуществляется в режиме интерпретации. После отладки основных подпрограмм, они компилируются в дальнейшей модификации могут быть подвергнуты только интерпретируемые части программы. Постепенно, по мере отладки, все ПО переводится в скомпилированную форму.
- Средства получения статистической информации о поведении программы (список операторов и подпрограмм, которые не выполнялись, список неиспользованных переменных и др.).
- Средства конструирования тестового обрамления. В качестве средства общения с программистом обычно используется видеотерминал.