Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
c. За ним следует подчеркивание, префикс типа и основное имя. Пример: VAR CONSTANT c_uiSyncID: UINT := 16#80; END_VAR Префиксы глобальных переменных (g) и глобальных констант (gc) отделяются подчеркивани- ем. Дополнительный префикс вводится для библиотек: Приложение J: Рекомендации по наименованию CoDeSys V2.3 10-103 Примеры: VAR_GLOBAL CAN_g_iTest: INT; END_VAR VAR_GLOBAL CONSTANT CAN_gc_dwExample: DWORD; END_VAR Идентификаторы пользовательских типов (DUT) Наименование структур образуется из префикса библиотеки (например: CAN), подчеркивания и возможно более короткой основы имени (например: SDOTelegram). В комментарии приводится префикс, принятый для образования имен переменных данного типа. Примеры: TYPE CAN_SDOTelegram : (* префикс: sdo *) STRUCT wIndex:WORD; bySubIndex:BYTE; byLen:BYTE; abyData: ARRAY [0..3] OF BYTE; END_STRUCT END_TYPE Перечисления начинаются с имени библиотеки (например: CAL) и следующего за подчеркивани- ем наименования с заглавной буквы. Пример: TYPE CAL_Day :( CAL_MONDAY, CAL_TUESDAY, CAL_WEDNESDAY, CAL_THIRSDAY, CAL_FRIDAY, CAL_SATURDAY, CAL_SUNDAY); Объявление: eToday: CAL_Day; Идентификаторы функций, функциональных блоков и программ (POU) Имена для функций, функциональных блоков и программ образуются из префикса имени библио- теки (например: CAN), подчеркивания и краткой выразительной основы (например: SendTelegram). Как и для переменных, первая буква каждого слова должна быть заглавной. Реко- мендуется составлять имена POU из глагола и существительного. Приложение J: Рекомендации по наименованию CoDeSys V2.3 10-104 Пример: FUNCTION_BLOCK CAN_SendTelegram (* префикс: canst *) В разделе объявлений должно быть дано краткое описание POU в виде комментария. Также все входы и выходы необходимо снабдить комментариями. Для функциональных блоков необходимо сразу указать префикс, который будет использоваться при создании экземпляров. Для действий нет специального префикса. Но действия, которые должны вызываться только из самого блока (приватные), получают префикс „prv_“. Каждая функция должна иметь хотя бы один параметр, для совместимости с предыдущими вер- сиями CoDeSys. Внешние функции не должны возвращать структуру. Идентификаторы визуализаций При наименовании визуализаций необходимо учитывать только одно: их имена не должны совпа- дать с именами POU в проекте. В противном случае, могут возникнуть затруднения при переклю- чении визуализаций. Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-105 Приложение K: Ошибки и предупреждения компилятора Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-106 Если при компиляции проекта обнаружены ошибки или предупреждения, то соответствующие им сообщения будут отображены в окне сообщений. Клавиша Предупреждения 1100 "Неизвестная функция '<имя>' в библиотеке." Используется внешняя библиотека. Проверьте, все ли функции, присутствующие в .hex file, опре- делены в .lib file. 1101 "Неразрешенный символ '<символ>'." Генератор кода предполагает POU с именем <символ>, неопределенный в проекте. Определите функцию/программу с таким именем. 1102 "Ошибка в интерфейсе '<символ>'." Генератор кода предполагает функцию с именем <символ> и имеющую один скалярный вход, ли- бо программу с именем <символ> и не имеющую входов и выходов. 1103 "Константа '<имя>' по адресу '<адрес>' превышает границу 16K страницы!" Строковая константа превышает 16K-границу страницы. Система не имеет таких ограничений. Свяжитесь с изготовителем ПЛК. 1200 "Задача '<имя>', вызов '<имя>': переменные общего доступа в списке параметров не обновлены" Переменные, которые используются при вызове функциональных блоков в конфигурации задач, не перечисляются в списке перекрестных ссылок. 1300 "Файл '<имя>' не найден" Файл, на который указывает объект глобальных переменных, не существует. Проверьте правиль- ность указания пути. 1301 "Analyze-библиотека не найдена! Соответствующий код не может быть сгенерирован" Функция анализа используется, но библиотека analyzation.lib отсутствует. Добавьте в проект эту библиотеку. Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-107 1302 "Добавлены новые функции, отсутствующие в системе. Горячее обновление невозможно!" С момента последней загрузки вы подключили библиотеку, содержащую функции, отсутствую- щие в системе. Перезагрузите проект полностью. 1400 "Неизвестная директива (pragma) '<имя>' проигнорирована!" Данная директива ‘pragma’ не поддерживается компилятором. См. "Директивы компилятора". 1401 "Структура '<имя>' не содержит никаких элементов" Структура не содержит элементов, но переменные этого типа занимают 1 байт памяти. 1410 "'RETAIN' и 'PERSISTENT' не имеют смысла в функциях" Объявленные внутри функции локальные RETAIN и PERSISTENT-переменные размещаются в обычной области локальных переменных. 1411 "Переменная конфигурации '<имя>' не изменяется ни в одной задаче" Верхний уровень экземпляра переменной не участвует в вызове ни одной задачи, поэтому она не копируется из образа процесса. Пример: Variable Configuration: VAR_CONFIG plc_prg.aprg.ainst.in AT %IB0 : INT; END_VAR plc_prg: index := INDEXOF(aprg); На программу aprg есть ссылка, но нет вызова. Поэтому plc_prg.aprg.ainst. никогда не примет акту- альное значение %IB0. 1412 "Нестандартный символ '<имя>' в директиве {имя}" Вы используете недопустимую в данном месте, либо некорректно записанную директиву компи- лятора 'pragma'. 1413 "'<имя>' неверный ключ в директиве '<имя>'. Ключ будет проигнорирован" Указан несуществующий список параметров. Используйте менеджер параметров для выбора доступных списков. 1414 " Слишком много определений в директиве '<имя>'" Pragma содержит определений больше (в скобках), чем есть элементов в соответствующем масси- ве, функциональном блоке или структуре. Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-108 1415 "’<имя>’ (<число>): литерал '<число>' относится к нескольким перечислениям" В объявлении перечисления <имя> одинаковые числа использованы для более чем одного элемен- та (например: TYPE aenum (a:=1, b:=1); END_TYPE). 1500 "Выражение не содержит присваивания. Код не будет сгенерирован." Результат выражения нигде не использован. Поэтому код выражения не генерируется. 1501 "Строковую константу, передаваемую как 'VAR_IN_OUT' '<имя>' нельзя перезаписывать!" Такая константа не может быть записана в POU, поскольку нет возможности определить ее раз- мер. 1502 "Переменная '<имя>' имеет то же имя, что и POU. POU не будет вызван!" Переменная имеет одинаковое с POU имя. Пример: PROGRAM a VAR_GLOBAL a: INT; END_VAR a; (* Вместо вызова POU загружается переменная. *) 1503 "The POU ‘<имя>’ не имеет выходов. Результату присвоено значение 'TRUE'" Выход POU, неимеющего определенных выходов, соединен в FBD. Автоматически присваивание дает TRUE. 1504 "’<имя>’ (‘<число>’): выражение может быть не выполнено в связи с вычислением логиче- ского выражения " Возможно, не все ветви логического выражения будут вычисляться. Пример: IF a AND funct(TRUE) THEN .... Если а равно FALSE, то funct не будет вызвана. 1505 "Зависимое разветвление в '<имя>'! Ветвь может быть не вызвана!" Первый вход POU равен FALSE, поэтому выражения в боковой ветви других входов не будут вы- числяться. Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-109 1506 "Переменная '<имя>' имеет то же имя, что и локальное действие. Действие не будет вызва- но!" Переменная имеет то же имя, что и действие. Действие не вызывается. Переименуйте переменную или действие. 1507 "Экземпляр '<имя>' имеет то же имя, что и функция. Экземпляр не будет вызван." Вы вызываете в ST экземпляр, имеющий одинаковое с функцией имя. Будет вызвана функция. Ис- пользуйте разные имена. И фун 1509 "'<имя>' ('<число>'): Функции обратного вызова должны начинаться с 'Callback'" Попытка использовать функцию callback, имя которой не начинается с “callback”. Это может вы- звать ошибки в работе на RISC процессорах Motorola 68K! 1550 "Несколько вызовов POU '<имя>' в одной цепи могут вызвать побочные эффекты" Несколько вызовов одного POU в одной цепи могут дать побочные эффекты. 1600 "Неясно, какой DB открыт (генерируемый код может быть ошибочным)" Исходная Siemens-программа не содержит инструкции выбора DB. 1700 "Вход не подсоединен" Входной элемент CFC не имеет присваивания. Поэтому код не генерируется. 1750 "Шаг '<имя>': минимальное время больше максимального!" Откройте диалог 'Step attributes' данного шага и проверьте задание макс. и мин. времён. 1800 "<имя>(элемент #<номер элемента>): неверное наблюдаемое выражение '<имя>'" Элемент визуализации содержит выражение, которое невозможно вычислить. Проверьте имена и заместители в выражении. 1801 "'<имя> (число): вход в выражении '<имя>' невозможен" В конфигурации визуализации объекта в качестве входного поля указано выражение. Здесь допускается только переменная. Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-110 1802 "<Объект визуализации>(номер элемента): растровое изображение '<имя>' не найдено" Проверьте, существует ли указанный растровый рисунок. 1803 "'<имя>'('<число>'): печать не работает в целевой и web-визуализации" Вывод на печать задан как действие при тревоге. Это не будет работать в Web- и Target- визуализации. 1804 "'<имя>'('<число>'): шрифт '<имя>' не поддерживается целевым устройством" В визуализации вы использовали шрифт, неподдерживаемый целевой платформой. См. категорию Визуализация в опциях платформы. 1805 "'<имя>'('<число>'): должна быть включена целевая установка 'Сохранять данные трендов в ПЛК'" Вы используете элемент сохранения данных трендов, но эта опция отключена в категории Визуа- лизации в опциях платформы. 1806 "'<имя>'('<число>'): должна быть включена целевая установка 'Обработка тревог в ПЛК'" Вы используете элемент "тревога" в визуализации, но эта опция отключена в категории Визуали- зация в опциях платформы. 1807 "<имя> (<число>): окно тревожных сообщений не поддерживается в целевой визуализации" Обратите внимание, что действие "сообщение" не поддерживается в целевой визуализации! 1808 "'<имя>'('<число>'): Полигон содержит слишком много точек для целевой визуализации. Измените настройки платформы или переконфигурируйте элемент" Полигон содержит слишком много точек для целевой визуализации. По умолчанию допускается 512 точек. Измените этот параметр в настройках платформы или переконфигурируйте элемент. 1809 "'<имя> ('<число>'): не найдена вызываемая визуализация" Указанная визуализация не найдена, проверьте правильность наименования и ее наличие. 1850 "Входная переменная %IB<число> используется в задаче '<имя>' но обновляется в другой задаче" Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-111 Проверьте, какие задачи используют данную переменную, и убедитесь, что это не может привести к нежелательным эффектам. Как правило, обновление переменной выполняется в задаче с наи- высшим приоритетом. 1851 "Выходная переменная %IQ<число> используется в задаче '<имя>' но обновляется в другой задаче" Проверьте, какие задачи используют данную переменную, и убедитесь, что это не может привести к нежелательным эффектам. Как правило, обновление переменной выполняется в задаче с наи- высшим приоритетом. 1852 "CanOpenMaster в событийной задаче '<имя>' не может быть вызван циклично! Установите параметр модуля UpdateTask!" CanOpen Master вызывается из указанной задачи, управляемой событием. Если вы хотите заста- вить его работать циклически, то задайте соответствующую задачу посредством параметра UpdateTask в диалоге dialog 'Module parameters' конфигуратора ПЛК. 1853 "PDO (индекс: '<число>') в событийной задаче '<имя>' не может быть вызван циклично." Данный PDO управляется указанной задачей, управляемой событием. Но если вы хотите получить ее циклические вызовы, то нужно присвоить PDO соответствующую циклическую задачу, то есть поместить в нее ссылки на ввод-вывод. 1900 "POU '<имя>' не применяется в библиотеке" Начальный POU (т.е. PLC_PRG) не доступен, если проект используется как библиотека. 1901 "Переменные общего доступа и конфигурационные переменные не записываются в библиотеку!" Переменные общего доступа и конфигурируемые переменные не записываются в библиотеку. 1902 "'<имя>': библиотека не подходит для данной платформы или повреждена!" Файл .obj сгенерирован для другого устройства. 1903 "<имя>: библиотека повреждена" Данный файл не удовлетворяет требованиям формата библиотеки выбранной платформы. 1904 "Константа '<имя>' перекрывает константу с таким же именем в библиотеке" В вашем проекте определена константа, имеющая то же имя, что и в присоединенной библиотеке. Библиотечная переменная будет переопределена! Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-112 1970 "Менеджер параметров: список '<имя>', столбец '<имя>', значение '<имя>' невозможно им- портировать!" Проверьте вхождения файла импорта *.prm, не соответствующие текущей конфигурации Менед- жера параметров. 1980 "Глобальные сетевые переменные '<имя>' '<имя>': одновременное чтение и запись могут привести к потере данных!" В конфигурации списка сетевых ('Global variables list' → 'Properties') переменных включена опция 'Read' and 'Write'. Это может привести к потере данных в процессе коммуникации. 1990 "Не определен 'VAR_CONFIG' для '<имя>'" Для данной переменной не определен адрес в Variable_Configuration (VAR_CONFIG). Откройте окно Variable_Configuration в разделе ресурсов (Resources) и введите соответствующее определе- ние (используйте команду 'Insert 'All instance paths'). 2500 "Задача ' В Task configuration определена циклическая задача, для которой не задано время цикла. Задайте соответствующее время в диалоге 'Taskattributes' параметр "Interval". Ошибки 3100 "Код слишком длинный. Максимальный размер: '<число>' байт (<число>K)" Достигнут максимальный размер кода программы. Уменьшите размер проекта. 3101 "Недостаточно памяти данных. Максимальный размер: '<число>' байт (<число>K)" Недостаточно памяти данных. Уменьшите число использованных в приложении данных. 3110 "Ошибочный формат файла библиотеки '<имя>'." Файл .hex не соответствует формату INTEL Hex. 3111 "Библиотека '<имя>' слишком большая. Максимальный размер: 64K" Файл .hex превышает допустимый размер. 3112 "Файл библиотеки содержит неперемещаемые инструкции" Приложение K: Ошибки и предупреждения компилятора CoDeSys V2.3 10-113 Файл .hex содержит неперемещаемые инструкции. Код библиотеки не может быть скомпонован. 3113 "Код библиотеки перекрывает таблицу функций." Область кода и таблицы функций пересекаются. 3114 "Библиотека использует более одного сегмента" Таблицы и код в .hex файле используют более одного сегмента. 3115 "Нельзя присваивать константу переменной VAR_IN_OUT. Несовместимые типы данных." Внутренний формат указателя строковых констант не может быть преобразован во внутренний формат указателя для VAR_IN_OUT, потому что данные используют указатели "near", а строко- вые константы " huge" или "far". Если можно, измените опции целевой платформы. 3116 "Таблица функций перекрывает код библиотеки или выходит за границы сегмента" Код 166x: Внешняя библиотека не может быть использована с данными опциями платформы. Пе- рекомпилируйте библиотеку с соответствующими параметрами. 3117 "<имя> ( Данное выражение слишком сложное для обработки посредством доступных регистров. Умень- шите вложенность выражения, используйте промежуточные переменные. 3120 "Размер текущего сегмента превышает 64K" Полученный код сегмента больше, чем 64K. Возможно, слишком много кода инициализации. 3121 "POU слишком велик" POU не должен превышать 64K. 3122 "Код инициализации слишком длинный. Макс. размер: 64K" Код инициализации функции либо переменных не должен превышать 64K. |