Сценарии Control являются программами, которые позволяют выполнять широчайший спектр задач в системе «КАСКАД Цифра». Они используются в самых разных ситуациях для выполнения разнообразных задач:
Графическая анимация, манипуляции с точками данных и многое другое в сценариях событий графических объектов (в Менеджере пользовательского интерфейса времени выполнения: UI)
Для сценариев времени выполнения и инициализации предусмотрен Менеджер сценариев Control(CTRL)
В этом случае некоторые такие менеджеры могут одновременно существовать в системе «КАСКАД Цифра», поэтому важной задачей является выбор менеджера, в котором выполняется отлаживаемый сценарий. Так как некоторые сценарии могут выполняться в каждом менеджере, также необходимо выбрать соответствующий сценарий (см. Выбор сценария).
Откройте панель CTRLdbg-sel.pnl (<путь_КАСКАД>/panels/vision), которую вы будете использовать для выбора отлаживаемого менеджера.
Рисунок. Панель для выбора менеджера
Which manager do you want to debug (Какой менеджер вы хотите отладить): в выпадающем списке представлен перечень менеджеров, из числа которых необходимо сделать выбор.
Cancel (Отмена) Закрывает панель.
ПРИМЕЧАНИЕ
То, что вы на самом деле здесь делаете — это выбор «коммуникационной точки данных» (см. Подробная информация об отладчике CTRL Debugger). Отладчик управляет выполнением программы в выбранном менеджере через коммуникационную точку данных. Поэтому необходимый менеджер может быть исследован только в том случае, если для него была создана коммуникационная точка данных. Как только точка данных будет создана, связанный с ней менеджер будет включен в список для выбора.
После выбора необходимого менеджера (или точнее точки данных), немедленно откроется реальная Панель отладчика.
В окне Info (Информация) отображается информация о сценариях, потоках, и прочие сведения о выбранном менеджере. Содержимое окна не обновляется до тех пор, пока не будет выполнен щелчок кнопкой мыши на соответствующей команде.
После выбора менеджера на панели CTRLdbg-sel.pnl отладчик CTRL Debugger запустится автоматически. В зависимости от выбранного менеджера, в окне Info (Информация) может отображаться следующая информация.
СОДЕРЖИМОЕ ОКНА INFO (ИНФОРМАЦИЯ) ДЛЯ МЕНЕДЖЕРА СЦЕНАРИЕВ CTRL
Например, если производится отладка менеджера сценариев CTRL под номером 1, в окне Info (Информация) отладчика после запуска будет отображаться следующая информация.
ScriptId: 0;archiv_client.ctl
Данная информация указывает, что в интерпретаторе CTRL Interpreter имеется только один сценарий, и этот сценарий имеет номер 0. Исходный код был считан из файла «archiv_client.ctl».
СОДЕРЖИМОЕ ОКНА INFO (ИНФОРМАЦИЯ) ДЛЯ UI (ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА)
Если производится отладка пользовательского интерфейса, на дисплей выводится информация следующего вида:
ScriptId: 1; Panel: CTRLdebugger.pnl [] Grafikobject: 1 [result] Script: Сообщение
После номера сценария снова выдается справочная информация об источнике сценария. Она включает номер сценария, панель, в которой работает сценарий, графические объекты и информацию о том, какое действие (событие) вызвало выполнение сценария.
Об источнике выводится такая же информация, как и в средство просмотра журналов Log viewer при возникновении ошибки в сценариях менеджера CTRL (см. Обработка ошибок)
СОДЕРЖИМОЕ ОКНА INFO (ИНФОРМАЦИЯ) ДЛЯ UI (ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА)
Если в выбранном менеджере в сценарии в настоящее время активен поток, то около номера сценария отображается номер потока. В примере после номера потока следуют функции main() и work(), которые имеются в сценарии.
ScriptId: 1; current thread: 1; Panel: examples/trend [] Grafikobjekt 21 [] Script: EventClick ThreadId: 1 function: work function: main
Менеджер может сразу выполнить несколько сценариев CTRL, и в активном сценарии может быть несколько потоков. В отладчике возможно определить только один сценарий для исследования, и в выбранном сценарии возможно иметь дело только с одним потоком.
Для того, чтобы просмотреть, какие сценарии обнаружены отлаживаемым менеджером, щелкните кнопкой мыши на «Scripts» (Сценарии).
Рисунок. Отладчик CTRL Debugger со списком сценариев менеджера UI_1.
КАК ВЫБРАТЬ СЦЕНАРИЙ: Щелкните кнопкой мыши на «Scripts» (Сценарии) на панели с кнопками — все сценарии текущего менеджера отобразятся в окне Info (Информация) справа.Для выбора сценария выполните двойной щелчок кнопкой мыши на строке, начинающейся «ScriptId:…» — в окне Source (Источник) будет отображен исходный код сценария.
ПРИМЕЧАНИЕ
Если в выбранной строке также содержится информация о текущем потоке, то данный поток также будет выбран автоматически.
КАК ВЫБРАТЬ ПОТОК:
Чтобы просмотреть, какие потоки содержатся в выбранном сценарии, щелкните кнопкой мыши на «Info Script» (Информация о сценарии).В окне Info (Информация) будут выведены следующие сведения:
ScriptId: 0; current thread: 0;test.ctl ThreadId: 0 function: main
В данном примере в настоящее время выполняется поток с номером 0.
Дважды щелкните кнопкой мыши на строке «ThreadId: 0″, чтобы выбрать этот поток.
ПРИМЕЧАНИЕ
Для того, чтобы просмотреть, какой сценарий и какой поток выбраны в настоящее время, щелкните кнопкой мыши на экранной кнопке Current» (Текущий).
КАК ВЫБРАТЬ БИБЛИОТЕКИ CTRL:
1. Щелкните кнопкой мыши на «Other Info» (Дополнительная информация) и выберите Libs (Библиотеки).
2. Для отображения исходного кода библиотеки CTRL дважды щелкните кнопкой мыши на соответствующей строке в окне Info (Информация).
Отладчик CTRL Debugger помогает отлаживать сценарии CTRL. Вы можете отлаживать сценарии для менеджеров CTRL и менеджеров пользовательского интерфейса. У вас есть возможность устанавливать точки останова, изменять значения переменных или отлаживать отдельные потоки.
Разделы справочной системы содержат дополнительную информацию:
Так как отладчик во время отладки воздействует на действующий менеджер (см. также Пример), между менеджерами должна быть установлена соответствующая связь. Это является функцией коммуникационных точек данных.
Эти точки данных используются для передачи отладочных команд CTRL и откликов на них между отладчиком CTRL Debugger и отлаживаемым менеджером.
Диаграмма: Связи между сценариями, библиотеками и потоками
Точки данных имеют всего 2 элемента: один для команды (command: string), и второй для результата (result: dyn_string).
Для точек данных действует следующее соглашение о присвоении имен (<x> обозначает номер менеджера):
Имя
Менеджер
_CtrlDebug_CTRL_<x>
Для менеджеров CTRL
_CtrlDebug_UI_<x>
Для менеджеров пользовательского интерфейса UI
Для каждого менеджера, который может быть выбран в панели CTRLdbg-sel.pnl, существует точка данных. Для ряда менеджеров коммуникационные точки данных уже установлены по умолчанию. Если вам необходимы дополнительные менеджеры, то для них необходимо установить точки данных вручную.
Обычно сценарии выполняются в течение долей секунды, и поэтому после запуска сценария щелчком кнопки мыши часто невозможно достаточно быстро остановить выполнение сценария. Однако имеется возможность устанавливать точки останова. Если затем снова запустить сценарий, он будет выполняться до первой установленной точки останова. С помощью кнопки Step (Шаг) имеется возможность продолжить выполнение сценария в пошаговом режиме.
Выбрав сценарий или поток, существует возможность получить различную информацию, или выполнить сценарий в пошаговом режиме.
КАК РАБОТАТЬ С ПОТОКАМИ ИЛИ СЦЕНАРИЯМИ
В следующем примере будет использоваться циклический сценарий панели examples/trend, используемой в качестве образца для примера. Скопируйте панель в директорию вашего проекта. Откройте панель в модуле Vision и щелкните кнопкой мыши на Start (Пуск). В точку данных ExampleDP_Trend1 отправляются случайные числа, и выводятся на диаграмме тренда.
1. Откройте отладчик CTRL Debugger для менеджера UI_1 (если ваш менеджер пользовательского интерфейса UI имеет номер 1).
2. Щелкните кнопкой мыши на ScriptID или на номере потока панели тренда.
3. Чтобы приостановить выполнение сценария/потока, щелкните кнопкой мыши на кнопке Break (Пауза). В окне Info (Информация) отобразится номер строки, на которой было приостановлено выполнение сценария. Выполнение сценария остановлено. Тренд продолжает выводиться как прямая линия.
4. Для возобновления выполнения щелкните кнопкой мыши на Continue (Продолжить) . Сразу после этого тренд снова начнет получать случайные значения и выдавать соответствующий график.
5. Чтобы продолжить выполнение сценария в пошаговом режиме от инструкции к инструкции, снова щелкните кнопкой мыши на Break (Пауза), и затем на кнопку Step (Шаг). В окне Info (Информация) снова будет отображаться номер строки. Сценарии содержат цикл с предусловием, который теперь будет выполняться в пошаговом режиме: первый шаг — строка 28, следующий шаг — строка 29, строка 30 и так далее.
КАК УСТАНОВИТЬ/УДАЛИТЬ ТОЧКУ ОСТАНОВА
Чтобы прервать выполнение сценария в определенных точках имеется возможность устанавливать точки останова:
1. Для того, чтобы установить точку останова на определенную позицию, щелкните кнопкой мыши в левой колонке окна Source (Источник) на необходимой строке.
2. Установленная точка останова обозначается красной звездочкой.
3. Выполнение сценария прекращается ПЕРЕД выполнением первой инструкции выбранной строки.
4. Для удаления точки останова необходимо просто снова щелкнуть кнопкой мыши на точке останова в окне Source (Источник).
В многострочных командах устанавливайте точку останова на последней строке.
В функциях, не возвращающих значений, устанавливайте точки останова там, где необходимо остановить выполнение.
В функциях, возвращающих значения, установка точек останова не работает.
Для просмотра информации о всех установленных точках останова выберите «Other Info/Breakpoints» (Дополнительная информация/Точки останова).
ИНФОРМАЦИЯ О ПОТОКЕ
1. Для отображения информации о текущих локальных переменных и другой информации по выбранному потоку щелкните кнопкой мыши на «Info Thread» (Информация о потоке).
2. Отображаемая информация будет иметь примерно следующий вид:
ThreadId: 1 next work 1970.01.01 01:00:00.000 local variables: int n = 0 string userBit = «» dyn_string names = <…> 3 items
Информация
Значение
ThreadId
отображает номер текущего потока
next work
указывает, когда интерпретатор CTRL Interpreter должен будет снова обработать этот поток (дата, указанная выше, означает, что поток должен быть обработан немедленно)
local variables
список локальный переменных приведен ниже с указанием типа данных и значения
int n = 0
переменная типа «integer»
string userbit = «»
строковая переменная, переменная содержит данные типа «string», которые всегда заключаются в кавычки.
dyn_string names = <..> 3 items
Для данных типов «dyn_» отображается только количество элементов. Чтобы отобразить содержимое этих переменных, необходимо выполнить двойной щелчок кнопкой мыши на строке, содержащей переменную типа «dyn_». Например, информация, отображаемая в окне Info (Информация) для переменной типа «dyn_string» может иметь следующий вид:1: «Start» 2: «Stop» 3: «Filter»
КАК УСТАНАВЛИВАТЬ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ
Во время отладки для проведения корректировок или тестового прогона в пошаговом режиме имеется возможность устанавливать различные значения переменных.
ВНИМАНИЕ
Эти переменные фактически установлены в работающем менеджере. Поэтому, если не принять никаких мер по предотвращению, то их значения будут переданы в процесс, работающих в настоящий момент.
1. В командной строке введите команду со следующим синтаксисом:
set <variable_name> <value>
2. Для примера введите «set n 5», чтобы установить переменной «n» значение 5.
ПРИМЕЧАНИЕ
Значения элементов с полями или массивами данных типа (dyn/dyn_dyn) не могут быть заданы вручную в отладчике.
КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ИНФОРМАЦИЮ
Щелкните кнопкой мыши на кнопку Other Info (Дополнительная информация) и выберите один из пунктов.
Будет выведен список доступной информации. Отклик на каждый запрос будет появляться в окне Info (Информация). Некоторые из пунктов также могут быть выбраны с помощью кнопок (См. панель отладчика CTRL Debugger ).
Информация
Значение
Libs
Отображаются все библиотеки CTRL, которые загружены
Globals
Отображаются все глобальные переменные менеджера
Breakpoints
Отображаются все установленные точки останова
Script Modules
Отображается информация об активных моделях сценариев, таких как timedFunc(), operatingHours(), и т.п. Модули сценариев работают в фоновом режиме как модули CTRL, скорее как «скомпилированный поток». Это функции, которые запускаются из менеджера CTRL.
Connections (Подключения)
Отображается информация об dpConnect(), alertConnect() или queryConnect() для текущего сценария.
Окно исходного кода Source (Источник)(с левой стороны)
Окно информации Info (Информация)(с правой стороны)
Выше этих областей располагается панель с кнопками для доступа к различным функциям отладчика.
При запуске отладчик CTRL Debugger сообщает пользователю информацию о том, какие существуют сценарии в выбранном менеджере (например, менеджер CTRL_1). Вы можете повторно вывести эту информацию когда пожелаете, щелкнув мышкой на кнопку «Scripts» (Сценарии).
Рисунок. Корневая панель отладчика CTRL Debugger
Поле для ввода под кнопкой Break (Пауза) (в самом верху слева) отображает выбранный менеджер. Сразу за ним — номер файла и источник для менеджеров сценариев. Для менеджеров UI (пользовательского интерфейса) появится только <internal> в качестве источника, и -1 в качестве номера файла.
Информационное окно Info (Информация) используется для отображения широкого спектра информации, в частности содержимого переменных и т.п.
Затемненная полоса указывает либо выбранную строку, либо текущую позицию (например, при использовании кнопок Step или Line)
Поле для ввода над информационным окном Info (Информация) используется для ручного ввода команд отладчика, отклик на которые отображается в информационном окне Info (см. Отладка сценария).
ВНИМАНИЕ
В Пользовательском Интерфейсе, некоторые сценарии отображаются только после первого выполнения. Это касается всех сценариев, которые не запускаются на выполнение при открытии панели. Интерпретатор CTRL Interpreter обнаруживает сценарии и отображает их как «присутствующие» только после того, как они начинают работать. Сценарии также могут исчезнуть из списка программных источников, доступных для отладки (например, при закрытии панели).
Также на панели имеются следующие кнопки:
Break (Пауза): прерывает поток, исполняемый в текущий момент (ветку программы)
Continue (Продолжить): продолжает выполнение потока, исполнение которого было прервано
Step (Шаг): выполняет следующую инструкцию в текущем потоке.
ПРИМЕЧАНИЕ
Функции, возвращаемое значение которых используется в выражениях, выполняются за один шаг, например, строковые функции, возвращаемое значение которых подвергается дальнейшей обработке. (Это может означать, что за один «Шаг» выполняется более одной инструкции).
Line (Линия): считывает и отображает текущую позицию строки выбранного потока, окно Source (Источник) обновляется таким образом, чтобы отобразить текущую строку (выделенную черной полосой). Данная функция также может использоваться без остановки сценария.
Scripts (Сценарии): отображаются все возможные сценарии в менеджере (сценарии событий, связанные со щелчком мыши (Click-Event), и которые еще не запущены на выполнение, в списке не отображаются)
Current (Текущий): Отображается, какой сценарий и какой поток выбраны в настоящее время.
Info Script (Информация о сценарии): отображается вся доступная информация о текущем сценарии
Info Thread (Информация о потоке): отображается вся доступная информация о текущем потоке
Other Info (Дополнительная информация): предоставляет информацию о Libs, Globals, Breakpoints, Script Modules и Connections (библиотеках, глобальных переменных, точках останова, модулях сценариев, подключениях, см. Отладка сценария)
Help: открывается страница справочной системы. Краткая справка по командам появляется при наведении курсора на кнопку в отладчике (см. Отладка сценария)
«Close» («Закрыть»): удаляются все точки останова, и перед закрытием окна отладчика менеджеру выдается команда «Continue (Продолжить)«.
ПРИМЕЧАНИЕ
Если работа отладчика CTRL Debugger будет просто прервана, то отлаживаемые менеджеры останутся в состоянии отладки, например в состоянии останова или в режиме пошагового выполнения. Однако если эти менеджеры перезапустить, они вернутся в состояние нормальной работы.
Отладчик CTRL Debugger является средством отладки для языка программирования Control системы «КАСКАД Цифра». Вы имеете возможность:
Использовать отладчик CTRL Debugger для просмотра сценариев CTRL, которые выполняются на средствах пользовательского интерфейса или на средствах менеджера сценариев CTRL.
Определять точки останова, которые сообщают работающему менеджеру, что при достижении определенной строки необходимо произвести останов.
Выполнять инструкции в пошаговом режиме, и устанавливать значения переменных.
Просматривать и устанавливать значения переменных во время выполнения.
Производить отладку сценариев, независимо от того, где в системе «КАСКАД Цифра» запущен менеджер и сценарий, даже в распределенной системе.
ВНИМАНИЕ
Отладчик не производит проверку того, имеет ли работающая система действующие подключения к технологическому оборудованию. Так как процесс отладки может повлиять на ход операций в режиме выполнения, пользователь обязан лично убедиться, что редактирование приложения не будет представлять опасности.