Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
Раздел объявлений Локальные переменные POU объявляются в разделе объявлений редактора программного компо- нента. Такими переменными могут быть входные и выходные переменные, переменные, одновре- менно являющиеся входными и выходными, локальные переменные, сохраняемые переменные и константы. Обратите внимание на возможность создания шаблонов для глобальных переменных, типов данных, функций, функциональных блоков и программ (См. 'Файл' 'Создать по шаблону' - 'File' 'New from template'). Синтаксис, используемый при объявлении переменных, соответствует стандарту МЭК61131-3. Ре- комендации по наименованию приведены в приложении J. Редактор раздела объявлений Входные переменные Входные переменные POU объявляются между ключевыми словами VAR_INPUT и END_VAR. Значения этих переменных передаются в POU, при его вызове. Пример: VAR_INPUT iIn1:INT (*Входная переменная*) END_VAR Выходные переменные Выходные переменные POU объявляются между ключевыми словами VAR_OUTPUT и END_VAR. Через эти переменные POU передает данные в вызывающий его блок, который может читать их, даже не вызывая POU. Редакторы CoDeSys CoDeSys V2.3 5-4 Пример: VAR_OUTPUT iOut1:INT (* Выходная переменная*) END_VAR Входные и выходные переменные Объявляются между ключевыми словами VAR_IN_OUT и END_VAR. Эти переменные можно ис- пользовать как входные и как выходные. Внимание: В отличие от ранее описанных переменных эти переменные передаются по ссылке, а не по значе- нию. Поэтому такая переменная не должна быть константой и не допускает прямого обращения: <имя экземпляра >. Пример: VAR_IN_OUT iInOut1:INT; (* Входная и выходная переменная *) END_VAR Локальные переменные Объявляются между ключевыми словами VAR и END_VAR. Их можно использовать только в том POU, в котором они объявлены. При выходе из POU значения этих переменных пропадают и не доступны извне. Пример: VAR iLoc1:INT; (* Локальная переменная*) END_VAR Реманентные переменные Такие переменные сохраняют свои значения при определенных сбоях в системе. Они бывают со- храняемые и постоянные. Сохраняемые переменные обозначаются ключевым словом RETAIN. Эти переменные сохраняют свои значения, даже если произошла авария питания (выключение и включение) контроллера, что равносильно команде сброс ('Онлайн' 'Сброс' - 'Online' 'Reset''). Значения RETAIN переменных со- храняются в энергонезависимой памяти. Сохраняемые (Retain) переменные будут инициализированы заново при ' Онлайн ' ' Сброс (холод- ный) ' (' Online ' ' Reset (cold) ') и ' Онлайн ' ' Сброс (заводской) ' (' Online ' ' Reset (original) '), а также при загрузке программы в отличие от постоянных (Persistent) переменных. Постоянные переменные обозначаются ключевым словом PERSISTENT. В отличие от сохраняемых переменных эти переменные сохраняют свои значения только при загрузке кода новой программы, но не при выключении питания или любом сбросе. Значения постоянных переменных размещают- ся вне энергонезависимого ОЗУ. Переменные PERSISTENT можно включить в RETAIN объявления. - = переменная переинициализируется, x = значение сохраняется Онлайн команда VAR VAR RETAIN VAR PERSIS- TENT VAR RETAIN PERSISTENT VAR PERSISTENT RETAIN Сброс (Reset) - X - x Редакторы CoDeSys CoDeSys V2.3 5-5 Сброс холодный (Reset cold) - - - - Сброс заводской (Reset origin) - - - - Загрузка (Download) - - x x Горячее обновление (Online Change) x X x x Пример: VAR RETAIN iRem1:INT; (* Сохраняемая переменная*) END_VAR Внимание: • Если локальная переменная объявлена как VAR RETAIN, то она будет размещена в энергонезависимой области как глобальная. • Если локальная переменная функционального блока объявлена VAR RETAIN, то все его данные цели- ком помещаются в энергонезависимую область памяти, но обслуживаться как VAR RETAIN будет только данная переменная. • Если локальная переменная функции объявлена VAR RETAIN, то это не дает никакого эффекта. Пере- менная не будет помещена в энергонезависимую область памяти! Аналогичное объявление PERSISTENT также не дает желаемого эффекта! Константы, типизированные литеры Константы обозначаются ключевым словом CONSTANT. Их можно объявлять локально и гло- бально. Синтаксис: VAR CONSTANT <Идентификатор>:<Тип>:=<начальное значение> END_VAR Пример: VAR CONSTANT _iCon1:INT:=12; (* Константа*) END_VAR Правила создания констант и использования типизированных литер можно найти в приложении B. Внешние переменные Глобальные переменные, которые должны быть импортированы в POU, объявляются с помощью ключевого слова EXTERNAL. Такая переменная появляется в окне просмотра переменных в режи- ме Онлайн. Если описания внешней переменная в POU и в разделе глобальных переменных не совпадают, то при компиляции появляется ошибка "Declaration of '' does not match global declaration!" Если внешняя переменная не описана в разделе глобальных переменных, то при компиляции появ- ляется ошибка "Unkown global variable: ''!" Редакторы CoDeSys CoDeSys V2.3 5-6 Пример: VAR_EXTERNAL iVarExt1:INT:=12; (* Внешняя переменная *) END_VAR Зарезервированные слова Все зарезервированные слова записываются заглавными буквами. Их нельзя использовать в качест- ве имен переменных. Например: VAR, VAR_CONSTANT, IF, NOT, INT. Объявление переменных Переменные объявляются следующим образом: <Идентификатор> {AT <Адрес>}:<Тип> {:=<начальное значение>}; Части, заключенные в фигурных скобках, необязательны. Имена переменных не должны содержать пробелов и специальных символов, должны объявляться только один раз и не должны совпадать с зарезервированными словами. Регистр букв в имени пе- ременной не имеет значения, т.е. переменные Var1, VAR1 и var1 не различаются. В именах пере- менных допустим знак подчеркивания. Переменные A_BCD и AB_CD считаются разными. Иден- тификатор не должен содержать подряд более одного символа подчеркивания. Длина индентифика- тора неограничена, все символы являются значимыми. Все переменные и типы данных можно инициализировать. Для этого используется оператор “:=”. Переменные простейших типов инициализируются константами. По умолчанию все переменные инициализируются нулем. Пример: iVar1:INT:=12; (* Переменная типа INT, инициализируемая числом 12*) Если вы хотите поместить переменную по определенному адресу, то нужно объявить ее с ключе- вым словом AT. Для быстрого объявления переменных используйте режим быстрого ввода. В функциональных блоках можно объявлять переменные, используя неполный адрес. Чтобы ис- пользовать такую переменную в экземпляре функционального блока, она должна быть описана в разделе “ Конфигурация переменных ” ( Variable configuration ). Обратите внимание на возможность использования автоматического объявления переменных. Ключевое слово AT Если вы хотите поместить переменную по определенному адресу, то нужно объявить ее с ключе- вым словом AT. Преимущество такого объявления состоит в том, что можно дать значащее имя любому адресу и изменять значение по этому адресу где угодно (например, в разделе объявлений). Заметьте, что переменная, описывающая вход, не доступна для записи. Кроме того, объявление AT допустимо лишь для глобальных и локальных переменных, но не для входных или выходных пере- менных POU. Пример: xCounterHeat7 AT %QX0.0: BOOL; wLightcabinetimpulse AT %IW2: WORD; xDownload AT %MX2.2: BOOL; Редакторы CoDeSys CoDeSys V2.3 5-7 Если логическая переменная имеет адрес типа Byte, Word или Dword, она занимает целый байт, а не один бит! “ Вставка” “Ключевое слово” (“Insert” ”Declaration keywords”) Вы можете использовать эту команду для получения списка и быстрого ввода ключевых слов, до- пускаемых в разделе объявлений POU. После того как ключевое слово будет выбрано из списка, оно будет вставлено в текущую позицию курсора. Также этот же список можно получить, если открыть Ассистент вводв (Input Assistant) Объявления ” ( Declaration ). “ Вставка” “Типы” (“Insert” ”Types”) С помощью этой команды можно получить список и осуществить быстрый ввод доступных типов. Этот же список можно получить и при использовании Ассистента ввода Типы разделены на несколько категорий: § Стандартные типы (Standard types): BOOL, BYTE и т.д. § Пользовательские типы (User Defined types): структуры, перечисления и т.д. § Стандартные функциональные блоки (Standard Function Blocks). § Пользовательские функциональные блоки (User defined Function blocks). CoDeSys поддерживает все стандартные типы МЭК1131-3. Выделение цветом Все редакторы выделяют переменные соответствующим цветом при их объявлении или использо- вании. Это позволяет быстро находить синтаксические ошибки в программе. Если вы случайно за- были закрыть комментарий или ошиблись, вводя зарезервированное слово, то вы сразу заметите это. Используются следующие цвета: Синий Ключевые слова Зеленый Комментарии в текстовых редакторах Розовый Специальные константы (например, TRUE/FALSE, T#3s,%IX0.0) Красный Ошибки ввода (например, неверные временные константы, ключевые слова, запи- санные строчными буквами) Черный Переменные, константы, операторы. Режим быстрого ввода Редактор раздела объявлений позволяет использовать режим быстрого набора. Эта функция выпол- няется, если вы заканчиваете ввод строки сочетанием клавиш Поддерживаются следующие сокращения: • Все идентификаторы в этой строке преобразуются в объявления • Тип этих идентификаторов определяется словом, которым заканчивается строка. B или Bool переменные будут объявлены как BOOL Редакторы CoDeSys CoDeSys V2.3 5-8 I или Int переменные будут объявлены как INT R или Real переменные будут объявлены как REAL S или String переменные будут объявлены как STRING • В других случаях (тип неуказан) переменные будут объявлены как BOOL (см. пример 1). По- следнее слово в строке понимается как идентификатор. • Любая константа, в зависимости от типа объявления, будет преобразована в начальное значе- ние переменной (примеры 2 и 3). • К адресу будет добавлено ключевое слово AT (пример 4). • Текст после точки с запятой будет превращен в комментарий (пример 4). • Все другие символы игнорируются (пример 5). Примеры: Быстрый ввод: Объявление: 1 A A: BOOL; 2 A B I 2 A, B: INT := 2; 3 ST S 2; A string ST:STRING(2); (* A string *) 4 X %MD12 R 5 Real Number X AT %MD12: REAL := 5.0;(* Real Number*) 5 B ! B: BOOL; Автоматическое объявление переменных Если поставлен флаг “ Автообъявление ” ( Autodeclaration ) в диалоговом окне “ Опции ” “ Редак- тор ” ( Editor Options ), то при вводе имен еще не объявленных переменных в любом редакторе бу- дет появляться окно объявления переменных. С помощью этого диалогового окна можно объявить новую переменную. Диалоговое окно для объявления переменных В списке “ Класс ” ( Class ) выберите класс объявляемой переменной: локальная переменная (VAR), входная переменная (VAR_INPUT), выходная переменная (VAR_OUTPUT), входная/выходная пе- ременная (VAR_IN_OUT), глобальная переменная (VAR_GLOBAL). Устанавливая флаги CONSTANT, RETAIN или PERSISTENT, вы помещаете переменную в соот- ветствующий раздел. Имя объявляемой переменной нужно ввести в поле “ Имя ” ( Name ). По умолчанию тип переменной будет BOOL (поле Тип). Кнопка открывает диалог “ Ассистент ввода ” ( Input Assistant ), кото- рый позволяет выбрать тип из списка предложенных. Объявление массивов. Редакторы CoDeSys CoDeSys V2.3 5-9 Если выбран тип данных ARRAY, то появиться диалог для ввода границ массива. Диалог задания границ массива при автоматическом объявлении переменных Для каждого из трех возможных индексов массива (столбец Разм. - Dim.) можно вводить началь- ный (Start) и конечный (End) индекс соответствующего измерения массива. Тип элементов массива вводится в поле “Тип” (Type). При этом удобно использовать Ассистент ввода (Input Assistant), ко- торый вызывается при нажатии кнопки После закрытия этого диалога объявленная переменная появится в поле “ Тип ” ( Type ). Пример: ARRAY [1..5, 1..3] OF INT. В поле “ Начальное значение ” ( Initial Value ) вы можете задать начальное значение переменной. Если переменная это массив или структура, вы можете открыть специальный диалог, нажав кнопку или Для массива такой диалог представляет собой список элементов; при щелчке мышкой после надпи- си “:=” появляется поле для ввода начального значения элемента. При инициализации структуры ее элементы изображаются в виде дерева. Тип и начальное значение каждого элемента находятся в скобках. При щелчке мышкой после надписи “:=” появляется поле для ввода начального значения элемента. Если компонента структуры – массив, то, чтобы увидеть его элементы, щелкните мышкой на знаке "плюс" перед именем массива. Теперь начальные значе- ния элементов этого массива можно редактировать. После закрытия диалога начальные значения элементов массива или структуры изображаются в поле Initial value в соответствии со стандартом МЭК. Пример: x:=5,field:=2,3,struct2:=(a:=2,b:=3) В поле “ Адрес ” ( Address ) задается адрес переменной (объявление AT) При необходимости можно вставить комментарий. Переход к следующей строке осуществляется нажатием сочетания клавиш После нажатия кнопки OK переменная будет объявлена в соответствующем разделе объявлений. Примечание: Диалог объявления переменной можно также вызвать командой 'Правка' 'Авто объявление' ('Edit' 'Auto Declare'). Если в режиме Онлайн курсор стоит на имени переменной, то можно вызвать окно Autodeclare Номера строк в редакторе объявлений. В режиме оффлайн, щелкнув по номеру строки, можно выделить строку целиком. Редакторы CoDeSys CoDeSys V2.3 5-14 ввода и разделах объявлений. Директива влияет на мониторинг переменной в окне объявления со- ответствующего POU. Используемая глобальная константа показывается под соответствующей структурной переменной. Данную директиву нужно вводить в отдельной строке объявления структуры. Точка с запятой в конце этой строки не нужна. Синтаксис: {bitaccess Идентификатор глобальной константы, которая должна быть определена в спи- ске глобальных переменных. Значение глобальной константы. Комментарий Обратите внимание: опция 'Замена констант' - 'Replace constants' (категория ‘Генератор кода’ (Build)) должна быть активна! Пример применения данной директивы см. «Приложение В: Операнды в CoDeSys» раздел «Пере- менные», «Доступ к битам в переменных». Директива управления линковкой компонентов По умолчанию программный компонент POU (программа, функция, функциональный блок) или компонент определения типа данных (DUT) которые не использованы в проекте, исключаются при линковке кода проекта. Однако, может потребоваться чтобы некая функция (возможно из библио- теки) должна загружаться в контроллер даже если она не вызывается в проекте явно (например, функция контроля, вызываемая системой исполнения). В этом случае в любом месте раздела объяв- лений POU или в DUT нужно поместить директиву {link} которая вынудит линковщик включить компонент в код проекта. Директивы управления отображением объявлений в библиотеках В процессе создания библиотеки в CoDeSys, вы можете управлять тем, какие части раздела объяв- лений должны быть видны или не видны в Менеджере Библиотек при включении данной библиоте- ки в проект. Данные директивы не влияют на отображение при редактировании библиотеки. Их цель – скрыть от пользователя определенные детали реализации. Директивы {library private} и {li- brary public} действуют на все строки ниже и взаимно отменяют одна другую. Синтаксис директив: {library public} :отображать нижеследующие элементы в Менеджере Библиотек. {library private} :не отображать нижеследующие элементы. Пример: ниже дан фрагмент раздела объявлений библиотеки. Комментарий "(* видно всем*)" бу- дет виден в Менеджере Библиотек, а комментарий "(* это не для всех*)" не будет отображаться. Переменные local и in3 также не будут отображаться: {library public}(* видно всем *) {library private} (*это не для всех*) {library public} FUNCTION afun : BOOL VAR_INPUT in: BOOL; END_VAR {library private} |