Codesys (824048), страница 27
Текст из файла (страница 27)
Фиксированные значенияотображаются красным.CoDeSys V2.35-11Редакторы CoDeSys5.2.3 Директивы компилятораДирективы используются для установки свойств переменных, касающихся компиляции. Их можно использовать в текстах программ и в разделе объявлений переменных.Директива записывается в фигурных скобках, причем регистр букв здесь не важен:{<Директива >}Если компилятор не понимает эту директиву, то она интерпретируется как обычный комментарий. Однако появляется предупреждение: „Ignore compiler directive ‚<Instruction text>’!“В зависимости от типа и параметров директивы она действует на строке, на которой она написана, илина всех последующих строках до директивы, ее отменяющей.
Если отменяющей директивы нет, то онадействует во всем разделе.Директива может следовать сразу за именем переменной, причем открывающие и закрывающие скобкидолжны находиться на одной строке.В настоящее время CoDeSys принимает следующие директивы:−{flag} инициализация, мониторинг и управление символьным файлом−{bitaccess...} битовый доступ−{parameter..}, {template...}, {instance...} создание вхождений для Менеджера параметров−{nonpersistent} исключение данных из PERSISTENTДирективы инициализации, мониторинга и управления символьным файломСинтаксис директивы:{flag [<flags>] [off|on]}<flag> - комбинация следующих флагов:NoinitПеременная не инициализируетсяNowatchНе производится мониторинг переменнойNoreadПеременная экспортируется в символьный файл без разрешения чтенияNowriteПеременная экспортируется в символьный файл без разрешения записиnoread, nowriteПеременная не экспортируется в символьный файлС помощью модификатора “on”директива включается и действует на все последующие объявления доее отключения другой директивой или с помощью ”off” {flag off}.
Без этих модификаторов директивадействует только на текущей строке.Примеры:Инициализация и мониторинг:Переменная a не инициализируется и не просматривается. Переменная b не инициализируется:VARa : INT {flag noinit, nowatch};b : INT {flag noinit };CoDeSys V2.35-12Редакторы CoDeSysEND_VARVAR{flag noinit, nowatch on}a : INT;{flag noinit on}b : INT;{flag off}END_VARНи одна из переменных не инициализируется:{flag noinit on}VARa : INT;b : INT;END_VAR{flag off}VAR{flag noinit on}a : INT;b : INT;{flag off}END_VARРазмещение переменных в символьном файле:Флаги “noread” и ”nowrite” используются для ограничения прав доступа к переменным. По умолчаниюпеременная обладает теми свойствами доступа, которые определены для POU, в котором она объявлена. Если переменная не доступна ни для чтения, ни для записи, то в символьный файл она не экспортируется.Пример:Если для POU установлено разрешение записи и чтения переменных, то переменная a экспортируется сразрешением записи, а переменная b не экспортируется вообще:VARa : INT {flag noread};b : INT {flag noread, nowrite};END_VARVAR{ flag noread on}a : INT;{ flag noread, nowrite on}b : INT;{flag off}END_VARНи переменная a, ни переменная b не экспортируются в символьный файл:{ flag noread, nowrite on }VARa : INT;b : INT;END_VAR{flag off}VAR{ flag noread, nowrite on}a : INT;b : INT;{flag off}END_VARCoDeSys V2.35-13Редакторы CoDeSysДействие одной директивы накладывается на действие другой:Пример: (Для всех POU установлено разрешение записи и чтения переменных)a : afb;...FUNCTION_BLOCK afBVARb : bfb {flag nowrite};c : INT;END_VAR...FUNCTION_BLOCK bfBVARd : INT {flag noread};e : INT {flag nowrite};END_VARПеременные a, c экспортируются с разрешением чтения и записи.Переменные b, e экспортируются без разрешения записи.Переменная d экспортируется без разрешения чтения.Директива битового доступа {bitaccess...}Используется для корректного отображения переменной, осуществляющей битовый доступ посредством глобальной константы.
Она применяется в ассистенте ввода, в функции интеллектуального ввода иразделах объявлений. Директива влияет на мониторинг переменной в окне объявления соответствующего POU. Используемая глобальная константа показывается под соответствующей структурной переменной.Данную директиву нужно вводить в отдельной строке объявления структуры.
Точка с запятой в концеэтой строки не нужна.Синтаксис:{bitaccess <Global Constant> <Bitnumber> '<comment>'}<GlobalConstant>:Идентификатор глобальной константы, которая должна быть определена в спискеглобальных переменных.<Bitnumber>:Значение глобальной константы.<comment>КомментарийОбратите внимание: опция 'Replace constants' (категория Build) должна быть активна!Пример применения данной директивы см.
«Приложение В: Операнды в CoDeSys» раздел «Переменные», «Доступ к битам в переменных».Директивы создания вхождений для Менеджера параметровВключение таких директив в объявление переменных позволяет добавлять элементы списка управляемого Менеджером параметров (Parameter Manager). Наличие Менеджера параметров в среде программирования CoDeSys определяется целевой платформой. Поддержка Менеджера параметров включаетсяCoDeSys V2.35-14Редакторы CoDeSysспециальным флагом на страничке сетевых опций Networkfunctionality в настройках целевой платформы.Синтаксис:• Директива заключена в фигурные скобки, регистр ввода не учитывается: { <Инструкция>}.
Еслиона включена в «нормальное» объявление переменной, то должна стоять до заверщающей точки с запятой.• Директивы, использующие интерфейс VAR_CONFIG, должны вводиться отдельной строкой, безточки с запятой.•Описание ключей записывается через пробел, внутри фигурных скобок.•<name>: имя списка параметров. Если указанный список отсутствует, он будет создан.• <key>: ключ или имя атрибута, т.е.
название столбца в списке параметров ("Name", "Value","Accesslevel" и т.д.). Ключи зависят от типа списка. Определение ключей записывается через пробелы,все вместе заключенные в прямоугольные скобки. Аналогичный синтаксис используется для включения элементов массивов, структур или функциональных блоков (см. 3, ниже).• <value>: значение атрибута, заданное <key>.
Если значение <value> имеет пробелы, то его необходимо заключить в двойные кавычки. Например: accessright="read only".Обратите внимание: директивы компиляции «срабатывают» только при предварительном анализе текста, который выполняется после изменения фокуса ввода, то есть при выходе из окна редактора. Ошибки вводасообщаются только при полной компиляции.Директивы определяют следующие вхождения:1. Вхождения в списки типа 'Variables'(a) из раздела объявлений программ и списков глобальных переменных:Вхождение в список типа 'Variables' для переменной из объявлений PROGRAM или VAR_GLOBAL задается следующим образом:{parameter list=<name> [ <key>=<value> <key>=<value> ...прочие ключи ] }Пример: Переменная bvar объявлена в программе. Она должна входить в список параметров parlist1(типа 'Variables') с именем bvar1, значением 102, индексом 16#1200 и подиндексом 16#2l.VARbvar:INT{parameter list=parlist1 [name=bvar1 value=102 index=16#1200subindex=16#1 ] };END_VAR(б) из объявления интерфейса VAR_CONFIG:Вхождение в список типа 'Variables' для переменной из окна VAR_CONFIG (вне зависимости от определения конфигурационной переменной) задается следующим образом:{parameter list=<name> path=<path> [ <key>=<value> <key>=<value> ...
прочие ключи ] }<path> путь к переменной, например, "PLC_PRG.act1.var_x"Пример: Для переменной var_x an создается вхождение в список "varlist1", символьное имя – "xvar".VAR_CONFIGCoDeSys V2.35-15Редакторы CoDeSys{parameter list=varlist1 path=PLC_PRG.act1.var_x [ name=xvar ] }END_VAR2. Вхождения в списки типа 'Template' через функциональные блоки и структурыДиректива в объявлениях функциональных блоков или структур позволяет создавать вхождения в списки типа: 'Template':{template list=<name> [ <key>=<value> <key>=<value> ...
прочие ключи ] }Пример: переменная strvar, являющаяся элементом структуры "stru1", должна входить в список"templ1" типа 'Template'; символьное имя "struvar1", уровень доступа "low":TYPE stru :STRUCTivar:INT;strvar:STRING{template list=vorl1 [member=struvar1 accesslevel=low]};END_STRUCTEND_TYPE3. Вхождения в списки типа ' Instance'(для массивов переменных структуры или функциональногоблока)(a) из раздела объявлений программ и списков глобальных переменных:При объявлении массивов, функциональных блоков или элементов структуры можно задать вхождениев список типа 'Instance':{instance list=<name> template=<template> baseindex=<index>basesubindex=<subindex>[<key>=<значение первого элемента> <key>=< значение первого элемента>...прочие ключи первого элемента ] | [ <key>=<значение второго элемента> <key>=< значение второго элемента > ..
прочиеключи второго элемента ] | [ключи последующих элементов]}<key>=<value> <key>=<value>...следующие ключи ] }Для массивов ключ "template" будет определен автоматически с помощью неявного шаблона "ARRAY".Для структур и функциональных блоков соответствующий шаблон должен быть создан в Менеджерепараметров и должен быть частью заданного здесь определения.Для каждого отдельного элемента структуры, массива или функционального блока может быть предопределено собственное индивидуальное вхождение в список параметров. Например: вместо единогоопределения "name" можно указать собственное определение [name=<имя_элемента>] для каждогоэлемента.Определение ключей для каждого отдельного элемента (заключается в квадратные скобки) выполняется в строке, разделенной пробелами.