Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
Директивы создания вхождений для Менеджера параметров Включение таких директив в объявление переменных позволяет добавлять элементы списка управ- ляемого Менеджером параметров (Parameter Manager). Наличие Менеджера параметров в среде программирования CoDeSys определяется целевой платформой. Поддержка Менеджера параметров включается специальным флагом на страничке “ Сетевая функциональность ” ( Networkfunctional- ity ) в настройках целевой платформы. Синтаксис: • Директива заключена в фигурные скобки, регистр ввода не учитывается: { <Инструкция>}. Ес- ли она включена в «нормальное» объявление переменной, то должна стоять до заверщающей точки с запятой. • Директивы, использующие интерфейс VAR_CONFIG, должны вводиться отдельной строкой, без точки с запятой. • Описание ключей записывается через пробел, внутри фигурных скобок. • • "Accesslevel" и т.д.). Ключи зависят от типа списка. Определение ключей записывается через про- белы, все вместе заключенные в прямоугольные скобки. Аналогичный синтаксис используется для включения элементов массивов, структур или функциональных блоков (см. 3, ниже). • Обратите внимание: директивы компиляции «срабатывают» только при предварительном анализе текста, ко- торый выполняется после изменения фокуса ввода, то есть при выходе из окна редактора. Ошибки ввода сообщаются только при полной компиляции. Директивы определяют следующие вхождения: 1. Вхождения в списки типа 'Variables' (a) из раздела объявлений программ и списков глобальных переменных: Вхождение в список типа 'Variables' для переменной из объявлений PROGRAM или VAR_GLOBAL задается следующим образом: {parameter list= Пример: Переменная bvar объявлена в программе. Она должна входить в список параметров parlist1 (типа 'Variables') с именем bvar1, значением 102, индексом 16#1200 и подиндексом 16#2l. VAR Редакторы CoDeSys CoDeSys V2.3 5-16 bvar:INT{parameter list=parlist1 [name=bvar1 value=102 in- dex=16#1200 subindex=16#1 ] }; END_VAR (б) из объявления интерфейса VAR_CONFIG: Вхождение в список типа 'Variables' для переменной из окна VAR_CONFIG (вне зависимости от оп- ределения конфигурационной переменной) задается следующим образом: {parameter list= [ Пример: Для переменной var_x an создается вхождение в список "varlist1", символьное имя – "xvar". VAR_CONFIG {parameter list=varlist1 path=PLC_PRG.act1.var_x [ name=xvar ] } END_VAR 2. Вхождения в списки типа 'Template' через функциональные блоки и структуры Директива в объявлениях функциональных блоков или структур позволяет создавать вхождения в списки типа: 'Template': {template list= Пример: переменная strvar, являющаяся элементом структуры "stru1", должна входить в список "templ1" типа 'Template'; символьное имя "struvar1", уровень доступа "low": TYPE stru : STRUCT ivar:INT; strvar:STRING{template list=vorl1 [member=struvar1 accesslevel=low] }; END_STRUCT END_TYPE 3. Вхождения в списки типа ' Instance' (для массивов переменных структуры или функционально- го блока) (a) из раздела объявлений программ и списков глобальных переменных: При объявлении массивов, функциональных блоков или элементов структуры можно задать вхож- дение в список типа 'Instance': {instance list= [ ...прочие ключи первого элемента ] | [ ...следующие ключи ] } Для массивов ключ "template" будет определен автоматически с помощью неявного шаблона "AR- RAY". Для структур и функциональных блоков соответствующий шаблон должен быть создан в Менеджере параметров и должен быть частью заданного здесь определения. Для каждого отдельного элемента структуры, массива или функционального блока может быть предопределено собственное индивидуальное вхождение в список параметров. Например: вместо единого определения "name" можно указать собственное определение [name=<имя_элемента>] для каждого элемента. Определение ключей для каждого отдельного элемента (заключается в квадратные скобки) выпол- няется в строке, разделенной пробелами. Элементы такого пакета определений автоматически по- лучат индексы в возрастающем порядке. Если нет достаточного числа определений ключей для всех Редакторы CoDeSys CoDeSys V2.3 5-17 элементов массива, структуры или функционального блока, то оставшиеся элементы получат зна- чения от последнего описанного индивидуального элемента (исключение для ключа "name" описа- но выше)! (см. пример 1b). Автоматизация ключа "name" при включении массивов в список параметров: − Если вы не определили имя элемента массива в директиве, то этот и все последующие элемен- ты автоматически получат имена: <Имя POU>_<Имя переменной массива>_<соответствующий числовой индекс массива >. Пример: Переменная ARRVAR [1..8] типа массив INT в PLC_PRG включается в список дирек- тивой pragma. Если ключ "name" не определен в директиве, то элементы массива в списке пара- метров автоматически получают имена от "PLC_PRG_arrvar_1" до "PLC_PRG_arrvar_8". − Если вы определяете директивой некоторое имя "<имя>_<первый числовой индекс массива>" для первого элемента, то последующие элементы массива будут автоматически получать имена “<имя>_<соответствующий числовой индекс>”. Пример: Переменная ARRVAR [1..8] типа массив INT включается в список посредством ди- рективы pragma. Директива указывает [name=xyz_1]“ только для первого элемента массива. Последующие элементы автоматически получают имена от "xyz_2" до "xyz_8". Внимание : Не нужно задавать значения для ключа "Member"; данная колонка заполняется автоматически, при помощи значений индексов массива. Примеры: Пример 1а: Массив "arr_1" включает список "arrinst" типа 'Instance'; все элементы массива в этом списке полу- чают символическое имя "xname_ _1 accesslevel=low ] }; Пример 1б: Для массива arr_1 только имена для элементов с 1 по 4 определяются директивой, элементы с 5 по 8 получают имена автоматически на основе определения для элемента 4, то есть "xname_5" и т.д. до "xname_8". Заметьте, что задания последующих определений ключей для отдельных элементов должны быть включены в эти же квадратные скобки, как показано здесь для прав доступа первого и четвертого элементов: arr_1: ARRAY [1..8] OF INT{instance list=arrinst template=ARRAY baseindex=16#0 basesubindex=16#0 [name=aname accesslevel=high] [name=bname] [name=cname] [name=xname accesslevel=medium]}; Пример 1:Вхождения для массива в списке instance Редакторы CoDeSys CoDeSys V2.3 5-18 Пример 2: Элементы структуры типа "stru1" (состоящей из переменных a,b,c) входят в список типа 'Instance',базирующийся на шаблоне "strulist_temp"; список включает вхождения a,b,c, символиче- ские имена не присваиваются, уровень доступа "high" и значение каждого индекса определяется по шаблону, через 2. Убедитесь, что определенный в директиве шаблон доступен Менеджеру парамет- ров: struvar:stru1{instance list=strulist template=strulist_templ baseindex=16#2 basesubindex=16#0 [accesslevel=high] }; Пример 2: Вхождения для структуры в Template (б) из объявления интерфейса VAR_CONFIG: Вы можете определить вхождения определяемых переменных в список Instance' непосредственно в окне VAR_CONFIG (вне зависимости от других определений конфигурационных переменных). Убедитесь, что определенный в директиве шаблон доступен Менеджеру параметров: {instance list= template= baseindex= Пример: Следующая директива в окне VAR_CONFIG будет создавать вхождения для всех пере- менных для функционального блока "fb1" в списке экземпляров "varinst1" по шаблону "fb1_templ". Для каждого вхождения индекс в соответствии с шаблоном увеличивается на 2 (baseindex), подин- декс не изменяется (basesubindex). Каждое вхождение получает символьное имя "fb1var", которое вы можете изменить в Менеджере параметров: VAR_CONFIG {instance list=varinst1 path=PLC_PRG.fb1 template=fb1_templ baseindex=16#2 basesubindex=16#0 [ name=fb1var ]} END_VAR Редакторы CoDeSys CoDeSys V2.3 5-19 Директива исключения данных из PERSISTENT По умолчанию даже если только одна локальная переменная функционального блока или структу- ры объявлена как PERSISTENT, то все данные экземпляры автоматически будут сохраняться сис- темой исполнения в энергонезависимой области persist.dat. С целью ее экономии можно применить директиву: {nonpersistent} в объявлении функционального блока или структуры. В этом случае, объявление PERSISTENT будет влиять только на указанные в нем переменные. Пример: Для экземпляров данного функционального блока только значения переменных local и fblevel3 бу- дут записываться в энергонезависимую область. FUNCTION_BLOCK FB_Level_2 {nonpersistent} VAR_INPUT bvar_in : BOOL; END_VAR VAR_OUTPUT bvar_out : BOOL; END_VAR VAR ivar2 : INT; END_VAR VAR PERSISTENT local : INT := 33; fblevel3 : FB_Level_3; END_VAR Редакторы CoDeSys CoDeSys V2.3 5-20 5.3 Текстовые редакторы Работа в текстовых редакторах Текстовые редакторы (используемые для написания текстов программ IL и ST) в CoDeSys обеспе- чивают обычные функции текстовых редакторов Windows. Текстовые редакторы поддерживают цветовое синтаксическое выделение. Корректно введенные инструкции выделятся цветом. В режиме замены надпись OV в статусной строке становится черной. Нажимая клавишу , можно переключаться между режимами вставки и замены. Текстовые редакторы ST и IL Наиболее важные команды находятся в контекстном меню, которое появляется при щелчке правой кнопки мыши или при нажатии сочетания клавиш В текстовых редакторах доступны следующие команды меню: “ Вставка” “Оператор” (“Insert” “Operator”) Вызывает список всех доступных для соответствующего языка операторов. Если выбрать оператор из списка и нажать кнопку OK, то выбранный оператор будет добавлен в текущую позицию курсо- ра. “ Вставка” “Операнд” (“Insert” “Operand”) Выводит на экран список всех доступных переменных. Можно выбрать категорию переменных (глобальные, локальные, системные), которые будут изображены в списке. Если операнд выбран и нажата кнопка OK, то выбранный операнд будет вставлен в текущую пози- цию курсора (аналогично работе Ассистента ввода). Редакторы CoDeSys CoDeSys V2.3 5-21 “ Вставка” “Функция” (“Insert” “Function”) Выводит диалоговое окно, в котором вы можете выбрать функцию из списка стандартных или оп- ределенных пользователем функций. Выбранная функция помещается в текущую позицию курсора после нажатия кнопки OK. Если выбран флаг With Argument, то также будут вставлены необходимые входные и выходные пе- ременные. “ Вставка” “Функциональный блок” (“Insert” “Function Block”) Выводит список всех доступных в проекте функциональных блоков. Вы можете выбрать, какие функциональные блоки будут отображены: либо стандартные, либо определенные пользователем. Выбранный функциональный блок помещается в текущую позицию курсора при нажатии клавиши OK. Если выбран флаг With Arguments, то появятся необходимые входные и выходные переменные. Вызов POU c выходными параметрами В текстовых языках ST и IL выходные параметры POU можно связать с какими-либо переменными прямо при вызове POU. Пример: Выходной параметр out1 присваивается переменной a. IL: CAL afbinst(in1:=1, out1=>a) ST: afbinst(in1:=1, out1=>a); Если POU вводится посредством Ассистента ввода ( Текстовые редакторы в режиме Онлайн Текстовые редакторы CoDeSys совмещают типовые функции современных отладчиков. В тексто- вых редакторах поддерживаются такие Онлайн-функции, как установка точек останова и выполне- ние программы по шагам. В режиме Онлайн окно текстового редактора разделяется по вертикали на две части. В левой части окна вы найдете текст программы, а в правой вы увидите значения переменных. Ширину частей можно изменять, перетаскивая мышкой границу между ними. Просмотр значений переменных осуществляется так же, как и в редакторе раздела объявлений. Когда связь с контроллером установлена, на экран выводятся текущие значения переменных: При мониторинге выражений выводится итоговое значение. Например: a AND b отображается со строкой “:=TRUE”, если a и b истинны. Для бит адресуемых переменных выводится значение соответствующего бита (например, a.2 изо- бражается со строкой ":=TRUE”, если a имеет значение 4). Если поместить указатель мыши на переменную, то во всплывающей подсказке будет выведен комментарий, тип и адрес переменной. “ Дополнения” “Опции мониторинга” (“Extras” “Monitoring Options”) Эта команда позволяет изменить настройки окна, в котором вы просматриваете значения перемен- ных. В текстовых редакторах во время мониторинга окно разделяется на две части. Текст програм- мы находится в левой части, а просматриваемые переменные в правой части окна. Редакторы CoDeSys CoDeSys V2.3 5-22 Вы можете установить ширину (Width) окна монитора и интервал (Distance) между двумя перемен- ными в строке. Значение интервала, равное 1 соответствует высоте выбранного шрифта. Обратите внимание, что ширину окон можно оперативно изменять, перетаскивая мышкой границу между ними. Диалог установки опций окна мониторинга Точки останова Т.к. в CoDeSys несколько строк на IL объединяются при компиляции, то точки останова нельзя ус- танавливать в произвольной строке. Точки останова устанавливаются там, где могут измениться либо значения переменных, либо направление выполнения программы. Исключение составляют точки вызова функции. Здесь также можно поставить точку останова. В позициях, находящихся между выше перечисленных, точка останова не имела бы смысла, т. к. здесь не изменяются ни дан- ные, ни направление выполнения программы. В языке IL точки останова можно ставить в следующих позициях: § В начале каждого POU. § На каждом операторе LD,LDN § На каждом операторе JMP, JMPC, JMPCN § На каждой метке § На каждом операторе CAL, CALC, CALCN § На каждом операторе RET, RETC, RETCN § В конце каждого POU § Язык ST допускает следующие позиции точек останова: § На каждой инструкции присваивания § На любой инструкции RETURN и EXIT. § В позициях, где вычисляются условия (WHILE, IF,REPEAT) § В конце POU При установке точки останова, номер соответствующей строчки выделяется цветом, выбранным в опциях проекта. Редакторы CoDeSys CoDeSys V2.3 5-23 Редактор IL c допустимыми позициями точек останова (номера таких строк выделены темно- серым) Как поставить точку останова? Для того чтобы поставить точку останова, щелкните мышкой по номеру строки, в которой вы хоти- те поставить точку останова. Цвет номера строки поменяется с темно-серого на голубой, и точка останова будет установлена в ПЛК. Удаление точек останова Для этого щелкните по номеру строки, в которой установлена точка останова. Устанавливать и удалять точки останова также можно через меню (“ Онлайн ” “ Переключить точ- ку останова ” - “ Online ” “ Toggle Breakpoint ”), нажимая кнопку Что происходит в точках останова Когда точка останова будет достигнута, номер выделенной строки станет красным. Программа бу- дет остановлена в ПЛК. Если программа остановлена, то ее выполнение можно продолжить командой “ Онлайн ” “ Старт ” (“ Online ” “ Run ”). Кроме того, вы можете воспользоваться командами “ Онлайн ” “ Шаг поверху ” (“ Online ” “ Step over ”) и “ Шаг детальный ” ( Step in ) для выполнения программы по шагам. Если пользоваться ко- мандой “ Шаг поверху ” ( Step over ), программа не будет останавливать в точках, вызываемых POU. При вызове команды “ Шаг детальный ” ( Step in ) вы будете по шагам проходить все вызываемые POU. Номер строки в текстовом редакторе Номер строки в текстовом редакторе определяет номер строки текста POU. В режиме оффлайн щелчок по определенному номеру строки приводит к выделению текстовой строки. В режиме Онлайн цвет номера строки определяет, установлена точка останова в этой строке или нет. Вот стандартные установки для каждого цвета: темно-серый: Строка, в которой можно установить точку останова. голубой: Точка останова установлена в этой строке. красный Программа остановлена в этой точке. В режиме Онлайн щелчок мышки по номеру строки позволяет установить или удалить точку оста- нова. |