Перегрузка программы

Взаимодействие задач, выполняющихся в контроллере управления с отладчиком программ на языке TехноCи

Отдельного рассмотрения заслуживают средства восстановления после различного рода сбоев и аварийных ситуаций.

Для взаимодействия с отладчиком в контроллере управления порождается специальная задача, приоритет которой ниже любой из задач TехноCи. Поэтому общение с отладчиком выполняется в тот момент, когда задача TехноCи полностью завершает свой программный цикл (если, конечно, при этом остается время для работы отладчика) или находится в состоянии останова. Этим гарантируется неразрывность действий, выполняемых над данными в задаче TехноCи, так как все изменения значений переменных при помощи отладчика выполняются вне программного цикла любой из задач TехноCи. Однако такое взаимодействие с отладчиком не позволяет прервать зациклившуюся задачу TехноCи по инициативе оператора.

Прерывание задачи выполняется интерпретатором автоматически следующим образом: после выполнения очередных 1000 базовых конструкций интерпретатора (эти конструкции являются некоторым аналогом команд языка Ассемблера, в которые компилируется исходная программа на TехноCи) анализируется общее время выполнения текущего цикла программы. И если это время в 5 раз превысило значение параметра INTERVAL, заданного в директиве #PRAGMA, задача снимается с выполнения с выдачей соответствующего сообщения.

Другая ситуация, связанная с переполнением стека задачи, также обнаруживается автоматически и задача снимается с выполнения с выдачей соответствующего сообщения.

Перегрузка программ на языке TехноCи в контроллере управления

Одной из самых привлекательных особенностей системы программирования TехноCи является возможность внесения изменений в выполняющиеся задачи TехноCи без остановки процесса управления в контроллере, а также без перекомпоновки операционной системы. Такая возможность есть прямое следствие реализации языка TехноCи как интерпретирующей системы.

При замене программы в ней можно выполнять любые изменения. Можно добавлять описание новых переменных, функций и секций, или, наоборот, удалять старые. Можно увеличивать или уменьшать размерности массивов, можно изменять любой исполнительный оператор программы. Задача, которая заменяет текущую задачу, воспринимает значения всех текстуально совпадающих глобальных описаний как свои начальные значения. Описания должны совпадать по своим именам и типам. Также будет восстановлена вся информация по именованным функциональным блокам и именованным функциям выдачи технологических сообщений. Необходимо помнить, что информация в непоименованных функциональных блоках и непоименованных функциях выдачи технологических сообщений не будет восстановлена из текущей выполняемой задачи.

Программа "чувствует" операцию перегрузки, так как элемент SYS.NEW_PROG управляющей структуры примет значение 1, если на следующем программном цикле будет выполняться замененная программа. После замены программы значение элемента SYS.NEW_PROG вновь станет нулевым. Анализируя этот элемент, программа также может предусмотреть определенные действия для правильного поведения перегруженной программы. Количество перегрузок задач содержит поле структуры SYS.CNT_NEW_PROG.

При нажатии на клавишу ALT+R в отладчике выполняется смена программы в контроллере управления. Имя файла должно задаваться без символов расширения и пути каталога. В каталоге станции отображения, заданном параметром PATH конфигурационного файла, должны содержаться соответствующие файл с расширением ".s" и ".run"; в контроллере управления в его каталоге должен содержаться только файл с расширением ".run". Данная операция удобна для изменения отлаживаемой программы и ее замены без остановки процесса управления и перегенерации управляющей системы.

При нажатии на клавишу ALT+A в отладчике выполняется добавление новой задачи в контроллер управления. В поле ввода осуществляется ввод имени загружаемого файла (".run"), но без указания его расширения. В случае успешного добавления задача в контроллере управления будет находиться в состоянии ожидания первого запуска, а конфигурационные файлы будут автоматически скорректированы. Данная операция удобна для расширения функций контроллера управления за счет задач, которые могут быть созданы в будущем и включены в процесс управления без остановки этого процесса и перегенерации управляющей системы.

Выполнение загрузки программ в контроллер осуществляется с использованием монитора-оболочки, подобной Norton Commander, что обеспечивает внесения изменений в выполняющиеся задачи TехноCи без остановки процесса управления в контроллере. Монитор обеспечивает полный файловый обмен между узлами сети (в том числе и с пассивным контроллером в режиме дублирования).