Click here follow the steps to fix Codesys Error 3611 and related errors.
|
|
To Fix (Codesys Error 3611) error you need to |
|
Step 1: |
|
---|---|
Download (Codesys Error 3611) Repair Tool |
|
Step 2: |
|
Click the «Scan» button | |
Step 3: |
|
Click ‘Fix All‘ and you’re done! | |
Compatibility:
Limitations: |
Codesys Error 3611 Error Codes are caused in one way or another by misconfigured system files
in your windows operating system.
If you have Codesys Error 3611 errors then we strongly recommend that you
Download (Codesys Error 3611) Repair Tool.
This article contains information that shows you how to fix
Codesys Error 3611
both
(manually) and (automatically) , In addition, this article will help you troubleshoot some common error messages related to Codesys Error 3611 error code that you may receive.
Note:
This article was updated on 2023-06-02 and previously published under WIKI_Q210794
Contents
- 1. What is Codesys Error 3611 error?
- 2. What causes Codesys Error 3611 error?
- 3. How to easily fix Codesys Error 3611 errors
What is Codesys Error 3611 error?
The Codesys Error 3611 error is the Hexadecimal format of the error caused. This is common error code format used by windows and other windows compatible software and driver vendors.
This code is used by the vendor to identify the error caused. This Codesys Error 3611 error code has a numeric error number and a technical description. In some cases the error may have more parameters in Codesys Error 3611 format .This additional hexadecimal code are the address of the memory locations where the instruction(s) was loaded at the time of the error.
What causes Codesys Error 3611 error?
The Codesys Error 3611 error may be caused by windows system files damage. The corrupted system files entries can be a real threat to the well being of your computer.
There can be many events which may have resulted in the system files errors. An incomplete installation, an incomplete uninstall, improper deletion of applications or hardware. It can also be caused if your computer is recovered from a virus or adware/spyware
attack or by an improper shutdown of the computer. All the above actives
may result in the deletion or corruption of the entries in the windows
system files. This corrupted system file will lead to the missing and wrongly
linked information and files needed for the proper working of the
application.
How to easily fix Codesys Error 3611 error?
There are two (2) ways to fix Codesys Error 3611 Error:
Advanced Computer User Solution (manual update):
1) Start your computer and log on as an administrator.
2) Click the Start button then select All Programs, Accessories, System Tools, and then click System Restore.
3) In the new window, select «Restore my computer to an earlier time» option and then click Next.
4) Select the most recent system restore point from the «On this list, click a restore point» list, and then click Next.
5) Click Next on the confirmation window.
6) Restarts the computer when the restoration is finished.
Novice Computer User Solution (completely automated):
1) Download (Codesys Error 3611) repair utility.
2) Install program and click Scan button.
3) Click the Fix Errors button when scan is completed.
4) Restart your computer.
How does it work?
This tool will scan and diagnose, then repairs, your PC with patent
pending technology that fix your windows operating system registry
structure.
basic features: (repairs system freezing and rebooting issues , start-up customization , browser helper object management , program removal management , live updates , windows structure repair.)
Подборка по базе: Leopard LS 50-10 Руководство пользователя и инструкция по устано, LS50_10_plus Руководство пользователя и инструкция по установке , Руководство пользователя.docx, Руководство пользователя Учет посещаемости и успеваемости студен, Индивидуальный план развития под руководством наставника в форме, Детский массаж. Поэтапное руководство.pdf, Инструкция для пользователя по подключению к АИС Расчет через FT, Руководство пользователя 7.docx, Работа в АИС СГО под функцией пользователя Учитель (1+).pdf, Приложение 5. Методическое руководство к дидактическому матер
3571
«Библиотека ‘SysLibCallback’ не включена в проект! Невозможно сгенерировать системные
события.»
Для управления задачами по событиям нужна библиотека SysLibCallback.lib. Включите библиоте- ку в проект или измените конфигурацию.
3575
«Задача <‘name>’: время цикла должно быть кратно <число> µs.»
Поправьте время цикла задачи в диалоге Taskattributes. Эта величина должна быть кратна времени системного ‘тика’ вашей целевой системы.
3600
«Неявные переменные не найдены!»
Дайте команду ‚Rebuild all’. Если это не поможет, свяжитесь с изготовителем ПЛК
3601
«<имя> — зарезервированное имя переменной»
Имя данной переменной зарезервировано генератором кода, измените его.
3610
» ‘<имя>’ не поддерживается»
Данное свойство не поддерживается в установленной целевой системе.
3611
«Неверная директория компиляции ‘<имя>'»
В ‚Project’ ‚Options’ ‚Directories’ задана несуществующая директория для файлов компилятора.
3612
«Превышено максимальное количество POU (<число>)! Компиляция прервана.»
В проекте используется слишком много POU. Измените максимум POU в Target Settings / Memory
Layout.
3613
«Компиляция отменена»
Компиляция прервана пользователем.
3614
«Проект не содержит POU с именем ‘<имя>’ (главная процедура) или не определена конфи-
гурация задач»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-125
Создайте главный POU (т.е. PLC_PRG) или задайте конфигурацию задач.
3615
«<имя> (главная процедура) должна быть типа program»
Главный POU (т.е. PLC_PRG) должен иметь тип программа.
3616
«Программы не должны быть реализованы во внешних библиотеках»
Проект, который предполагается сохранить, как внешнюю библиотеку, содержит программы. Они не будут доступны в библиотеке.
3617
«Недостаточно памяти»
Увеличьте размер виртуальной памяти вашего компьютера.
3618
«Битовый доступ не поддерживается текущим генератором кода!»
Битовый доступ не поддерживается генератором кода данной целевой системы.
3619
«Разные версии объектного файла ‘<имя>’ и библиотеки ‘<имя>’!»
Убедитесь, что файлы *.lib и *.obj или *.hex соответствуют одной версии библиотеки. Проверьте даты создания этих файлов.
3620
«POU ‘<имя>
не может содержаться внутри библиотеки»
Вы пытаетесь сохранить библиотеку в формате версии 2.1. В этой версии библиотека не может со- держать PLC_PRG, удалите или переименуйте его.
3621
«Невозможно записать файл компиляции ‘<имя>'»
Вероятнее всего, в директории, указанной для файлов компилятора, уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права дос- тупа.
3622
«Невозможно создать символьный файл ‘<имя>'»
Вероятнее всего, в директории, указанной для символьных файлов (обычно это директория проек- та), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права доступа.
3623
«Невозможно записать файл загрузочного проекта ‘<имя>'»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-126
Вероятнее всего, в директории, указанной для загрузочных файлов (специфичных для целевой платформы), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите дан- ный файл либо измените ему права доступа.
3624
«Настройка целевой платформы <установка1>=<значение> несовместима с <установ-
ка2>=<значение>»
Проверьте и исправьте данные установки в диалоге Targetsettings dialogs (вкладка Resources). Если они недоступны для редактирования, то обратитесь к изготовителю контроллера.
3700
«POU с именем ‘<имя>’ уже включен в библиотеку ‘<имя>'»
Имя POU проекта уже использовано в библиотеке, измените его.
3701
«Имя, используемое в интерфейсе, отличается от имени POU»
Используйте команду ‘Project’ ‘Rename object’ для изменения памяти POU в организаторе объек- тов либо измените имя в окне объявления POU. Имя POU следует за одним из ключевых слов:
PROGRAM, FUNCTION или FUNCTIONBLOCK.
3702
«Список идентификаторов переполнен»
Не более 100 идентификаторов могут быть использованы при объявлении одной переменной.
3703
«Повторное определение идентификатора ‘<имя>'»
Убедитесь, что только один идентификатор ‘<имя>’ присутствует в разделе объявлений POU.
3704
«Рекурсия данных: «
->
-> .. ->
«»
Применен недопустимый вызов экземпляром функционального блока самого себя.
3705
«<имя>: VAR_IN_OUT недопустим в POU верхнего уровня, если не задана конфигурация за-
дач»
Создайте конфигурацию задач или убедитесь, что переменные VAR_IN_OUT не используются в
PLC_PRG.
3720
«После слова ‘AT’ должен идти адрес»
После ключевого слова AT должен быть указан корректный адрес.
3721
«Только ‘VAR’ и ‘VAR_GLOBAL’ можно помещать по адресам»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-127
Поместите объявление в область VAR или VAR_GLOBAL.
3722
«По битовым адресам доступны только переменные типа ‘BOOL'»
Только переменные типа BOOL могут адресовать биты. Измените адрес или тип переменной.
3726
«Константы нельзя размещать по прямым адресам»
Константы нельзя располагать по прямым адресам.
3727
«По этому адресу нельзя размещать массив»
Объявление может быть произведено по указанному адресу. Измените адрес.
3728
«Неверный адрес: ‘<адрес>'»
Указанный адрес не определен для заданной конфигурации ПЛК. Измените адрес или конфигура- цию ПЛК.
3729
«Неверный тип ‘<имя>’ по адресу: ‘<имя>’ «
Переменная данного типа не может быть размещена по указанному адресу. Например: адрес AT
%IB1:WORD; не допустим, если включено выравнивание по четным адресам. Данная ошибка мо- жет возникнуть при попытке разместить массив по недопустимому прямому адресу.
3740
«Неверный тип: ‘<имя>’ «
Ошибка в типе данных объявления.
3741
«Требуется указание типа»
Ключевое слово или оператор использован вместо типа данных
3742
«Необходимо значение перечисления»
В определении перечисления пропущен идентификатор после скобки либо разделитель.
3743
«Необходимо целое число»
Перечисления можно инициализировать только целыми значениями (INT).
3744
«Константа перечисления ‘<имя>’ уже определена»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-128
Проверьте соблюдение следующих правил при объявлении перечислений:
•
Все значения в одном перечислении должны быть уникальны.
•
Во всех глобальных перечислениях все значения должны быть уникальны.
•
Во всех локальных перечислениях все значения должны быть уникальны.
3745
«Переменные с ограниченным диапазоном допустимы только для Integers!»
Переменные с ограниченным диапазоном образуются только на целочисленных типах.
3746
«Диапозон ‘<имя>’ неприменим для типа данных ‘<имя>'»
Один из пределов диапазона выходит за область значений базового типа.
3747
«Неизвестная длина строки: ‘<имя>'»
Для определения длины строки используется ошибочная константа.
3748
«Размерность массива не должна превышать 3»
Нельзя использовать массивы с размерностью более трех. Используйте ARRAY OF ARRAY при необходимости.
3749
«Нижняя граница ‘<имя>’ не задана»
Не задана константа, определяющая нижнюю границу диапазона.
3750
«Верхняя граница ‘<имя>’ не задана»
Не задана константа, определяющая верхнюю границу диапазона.
3751
«Неверная длина строки ‘<количество символов>'»
Заданный размер строки превышает допустимый в данной целевой системе.
3752
«Размерность вложенного массива не должна превышать 9»
Массив может быть 1- 2- или 3-мерный. Размерность можно еще увеличить путем вложений мас- сивов (например, «arr: ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2,
0..2] OF DINT». Максимальная размерность не должна превышать 9. Данная ошибка говорит о превышении этого ограничения. Уменьшите вложенность массивов.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-129
3760
«Неверное начальное значение»
Используйте для инициализации значение, совместимое с типом переменной. Изменяя объявле- ние, воспользуйтесь диалогом объявлений переменных (Shift/F2 или ‘Edit»Autodeclare’).
3761
«Переменные ‘VAR_IN_OUT’ не могут иметь начальных значений.»
Удалите инициализацию в объявлении переменной VAR_IN_OUT.
3780
«Здесь должно быть: ‘VAR’, ‘VAR_INPUT’, ‘VAR_OUTPUT’ или ‘VAR_IN_OUT'»
В следующей за определением имени POU строке должно быть одно из перечисленных ключевых слов.
3781
«Необходим ‘END_VAR’ или идентификатор»
Введите корректное определение END_VAR в данной строке окна объявлений.
3782
«Ошибочное окончание инструкции или объявления»
В разделе объявлений: добавьте ключевое слово END_VAR в конце раздела.
В разделе кода: добавьте инструкцию, завершающую команду (например, END_IF).
3783
«Необходим ‘END_STRUCT’ или идентификатор»
Проверьте правильность окончания определения типа.
3784
«Текущее целевое устройство не поддерживает аттрибут <имя аттрибута>»
Данная целевая система не поддерживает переменные такого типа (например, RETAIN, PERSIS-
TENT)
3800
«Недостаточно памяти для глобальных переменных. Увеличьте объем доступной памяти в
опциях проекта.»
Увеличьте число сегментов в опциях диалога Project’ ‚Options’ ‚Build’.
3801
«Переменная ‘<имя>’ слишком велика (<число> байт)»
Переменная использует тип, занимающий более одного сегмента
Размер сегмента определяется настройкой целевой платформы. Если вы не нашли этого парамет- ра в опциях памяти, свяжитесь с изготовителем ПЛК.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-130
3802
«Недостаточно энергонезависимой памяти. Переменная ‘<имя>’, <число> байт.»
Израсходована вся память Retain переменных. Размер этой области определяется настройкой це- левой платформы. Если вы не нашли этого параметра в опциях памяти, свяжитесь с изготовителем
ПЛК (обратите внимание: если хотя бы одна переменная функционального блока объявлена как
Retain, то все данные экземпляра сохраняются в Retain области!)
3803
«Недостаточно общей памяти данных. Переменная ‘<имя>’, ‚<число>’ байт.»
Израсходована вся память глобальных переменных. Размер этой области определяется настройкой целевой платформы. Если вы не нашли этого параметра в опциях памяти, свяжитесь с изготовите- лем ПЛК
3820
«‘VAR_OUTPUT’ и ‘VAR_IN_OUT’ недопустимы в функциях»
В функциях нельзя использовать выходы или входы-выходы.
3821
«В функции должен быть, по крайней мере, один вход»
Функция должна иметь как минимум один параметр.
3840
«Неизвестная глобальная переменная ‘<имя>’!»
В POU используется глобальная переменная VAR_EXTERNAL, необъявленная в списке глобаль- ных.
3841
«Объявление элемента ‘<имя>’ не совпадает с его глобальным объявлением!»
Тип переменной в объявлении VAR_EXTERNAL не совпадает с типом в списке глобальных объ- явлений.
3850
«Объявление развернутой структуры ‘<имя>’ внутри структуры ‘<имя>’ недопустимо!»
Такое определение структуры нарушает распределение памяти. Измените определение соответст- вующим образом.
3900
«Несколько подчеркиваний в идентификаторе»
Удалите повторное подчеркивание в идентификаторе.
3901
«Максимальное количество числовых полей в адресе — 4»
Попытка присваивания по прямому адресу, содержащему более 4-х уровней (например,
%QB0.1.1.0.1).
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-131
3902
«Ключевые слова должны быть напечатаны заглавными буквами»
Используйте заглавные буквы в ключевых словах или включите опцию ‚Autoformat’ in ‚Project’
‚Options’.
3903
«Неверная константа длительности»
Нотация константы не соответствует МЭК 61131-3.
3904
«Переполнение длительности»
Заданное значение длительности нельзя преобразовать во внутренний формат. Максимальное значение длительности: t#49d17h2m47s295ms.
3905
«Неверный формат даты»
Нотация константы не соответствует МЭК 61131-3.
3906
«Неверная константа времени дня»
Нотация константы не соответствует МЭК 61131-3.
3907
«Неверная константа даты и времени»
Нотация константы не соответствует МЭК 61131-3.
3908
«Неверная строковая константа»
Строковая константа содержит недопустимый символ.
4000
«Отсутствует идентификатор»
В этой позиции должен быть корректный идентификатор
4001
«Переменная ‘<имя>’ не объявлена»
Объявите переменную локально или глобально.
4010
«Несоответствие типов: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Проверьте, какой тип данных требуется этому оператору, и измените тип или используйте другую переменную.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-132
4011
«Несоответствие операнда ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Тип актуального параметра не может быть автоматически преобразован в тип формального пара- метра. Используйте другую переменную или явное преобразование типов.
4012
«Несоответствие параметра ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в
‘<имя>’.»
Значение ошибочного типа присваивается входной переменной ‘<имя>. Замените переменную или укажите соответствующий префикс константы.
4013
«Несоответствие выхода ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Значение ошибочного типа присваивается выходной переменной ‘<имя>. Замените переменную или укажите соответствующий префикс константы.
4014
«Типизированный литерал: невозможно перевести ‘<имя>’ в ‘<имя>'»
Тип константы не соответствует заданному префиксу.
Например: SINT#255
4015
«Тип данных ‘<имя>’ недопустим для прямого битового доступа»
Прямая битовая адресация допускается только с целыми типами или битовыми строками, но не для прямоадресуемых переменных. Возможно, вы используете переменную типа REAL/LREAL или константу
., либо прямоадресуемую переменную.
4016
«Индекс бита ‘<число>’ превышает допустимый для типа ‘<имя>'»
Вы пытаетесь использовать бит, не определенный для данного типа переменных.
4017
«‘MOD’ не определен для ‘REAL'»
Оператор MOD применим только для целых типов.
4020
«Операндом для ‘ST’, ‘STN’, ‘S’, ‘R’ должна быть переменная или прямой адрес доступные по
записи»
Замените первый операнд переменной, имеющей доступ на запись.
4021
«Переменная ‘<имя>’ не имеет доступа по записи»
Замените переменную на другую, имеющую доступ на запись.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-133
4022
«Необходим операнд»
Добавьте операнд команды.
4023
«После ‘+’ или ‘-‘ должно стоять число»
Введите число.
4024
«Небходим или или … перед ‘<имя>'»
Задайте значимый операнд в указанной позиции.
4025
«Необходимы символы ‘:=’ или ‘=>’ перед ‘<имя>'»
Введите один из двух операторов в указанной позиции.
4026
«Для ‘BITADR’ необходим битовый адрес или переменная по битовому адресу»
Используйте корректный битовый адрес (т.е. %IX0.1).
4027
«Требуется целое число или символьная константа»
Введите число или идентификатор переменной.
4028
«‘INI’-оператору необходим экземпляр функционального блока»
Проверьте тип переменной, для которой используется оператор №1.
4029
«Функция не может вызывать сама себя.»
Функция не должна вызывать сама себя.
Используйте промежуточные переменные.
4030
«Выражения и константы недопустимы в качестве операнда для ‘ADR'»
Для выражений и констант извлечение адреса невозможно.
4031
«‘ADR’ нельзя использовать для битового адреса! Вместо него используйте ‘BITADR’.»
Используйте BITADR. Заметьте, что BITADR не дает физический адрес памяти.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-134
4032
«Для ‘<имя>’ недостаточно ’<число>’ операндов. Необходимо, по крайней мере, ‘<число>’»
Проверьте число операндов для данного оператора и добавьте недостающие.
4033
«’<число>’ операндов это слишком много для ‘<имя>’. Нужно не более ‘<число>’»
Проверьте число операндов для данного оператора и уберите лишние.
4034
«Деление на 0»
Вы пытаетесь выполнить деление на 0 с константами. Если вы намеренно хотите спровоцировать деление на ноль при исполнении, используйте переменную.
4035
«Нельзя использовать ADR для ‘VAR CONSTANT’, если активирована опция ‘Замещение
Продолжаем повествование о прагма-выражениях, которые были описаны в обзорной статье. Напомню что условные прагмы влияют на генерацию кода во время прекомпиляции и компиляции, но не во время исполнения программы. С помощью условных прагм вы влияете, учитывается ли код реализации при компиляции. Например, вы можете сделать это зависимым от того, объявлена ли определенная переменная, существует ли определенный функциональный блок и т.д.
Прагма {define}
Имеет синтаксис:
{define <identifier> <string>}
Задает какой либо идентификатор, который в последствии будет использоваться. Стоит помнить про область видимости. Данный идентификатор будет виден только в пределах того места где он был определен прагмой {define}.
Определение возможно только в разделе кода.
Чтобы было понятнее приложу скриншоты объявления и результаты выполнения.
Если вы заметили, то там еще есть флаги для идентификаторов С и D, С объявлен в глобальных данных, а D в POU программа, где мы и вызываем этот FB.
Прагма {undefine}
Оператор {define} идентификатора <identifier> отменяется, и с этого момента идентификатор снова становится неопределенным. Прагма игнорируется, если указанный идентификатор вообще не определен.
Рассмотрим несколько идентификаторов.
В результате выполнения все хорошо скомпилировалось и все биты были взведены.
Теперь мы немного усложним данные директивы.
Логика здесь в следующем. Если нет C, то определяем идентификатор D.
Прагмы для условной компиляции
Назначение условных прагм - повлиять на генерацию кода в процессе пре-компиляции или в процессе компиляции. Язык реализации ST поддерживает эти прагмы. Это как раз те условия, что мы писали выше. Единственное, что в блоке {IF} есть специальные операторы, которые позволяют нам гибко контролировать условия компиляции.
Оператор defined(<identifier>)
Этот оператор приводит к тому, что выражению присваивается значение ИСТИНА. Требование состоит в том, чтобы идентификатор <identifier> был определен с помощью инструкции {define} и не определялся снова после этого с помощью инструкции {undefine}; в противном случае возвращается ЛОЖЬ.
Примером этому служит все что было выше.
Оператор defined (variable: variable)
Этот оператор приводит к тому, что выражению присваивается значение ИСТИНА, если переменная объявлена в текущей области; в противном случае возвращается ЛОЖЬ.
Если мы возьмем и напишем следующий код:
И попытаемся скомпилировать данную программу, то получим сообщение:
Следует только объявить данную переменную, как все скомпилируется без сообщения и переменной rSum будет присвоено значение 5.
Оператор defined (type: identifire)
Возвращает TRUE когда у нас есть объявленная переменная с соответствующим пользовательским типом данных.
Например: Нам требуется понять есть ли в данном функциональном блоке переменная с каким-то определенным пользовательским типом.
В исходном коде у нас есть и данный тип и прагма условие и какие-то действия.
Никогда не присваивайте значения каким-то объявленным переменным во время прагма выражений для условной компиляции если вы не полностью осознаете последствия.
При выполнении кода у нас будет присвоено значение равное 45.
В то же время стоит помнить
Прагма выражения чувствительны к регистру
И если type вдруг изменится на TYPE то мы получим ошибку
А теперь почему не стоит инициализировать значения переменных при проверки типов. Допустим если мы все оставим как у меня, то может получится следующая ошибка.
Компилятор нам разумеется сообщит об ошибке, но не всегда, особенно если пользовательские типы совпадут.
Оператор defined (pou: <pou name> )
Условный оператор возвращает TRUE если есть FB или Action с таким именем.
Вопрос. Какое значение будет у переменной xInit в следующем примере:
Когда я только начал разбираться, то был уверен, что xInit будет FALSE, однако:
Весь фокус заключался в том, что у меня в проекте есть POU TCPLogic. Так что данное условие удобно применять при проверки целостности. а все ли мы подтянули из нужных нам библиотек.
Оператор defined (task: <identifire)
Возвращает True если мы имеем task с нужным именем.
Рассмотрим список моих задач
В нем есть ровно две задачи. Одна основная другая на визуализацию. В FB я создам условие, при котором, если будет отсутствовать в проекте необходимый TASK, переменная xError станет True.
Так как TASK с идентификатором MainTask1 у меня нет, то мы получили ошибку.
Оператор defined (IsSimulationMode)
Возвращает True, Когда мы находимся в режиме симуляции(эмуляции).
Ну тут даже не нужен пример.
Оператор defined (IsLittleEndian)
Наверно самая нужная прагма, которая позволяет нам правильно представлять данные.
Итог
В данной статье я описал половину доступных прагма операторов для условных выражений. В следующий раз у нас будет остаток и еще чуть чуть про пользовательские прагма-выражения, т.к. они очень нужны. Это всего лишь теоретический материал. Найдете ли вы ему практическое применение неизвестно, но я убежден, что каждый должен отлично знать инструмент на котором работает.
Как я могу выбросить стандартные системные исключения (и, если возможно, создать собственные исключения и выбросить их тоже).
Самое простое, что приходит в голову, — это просто разделить переменную на ноль, но в лучшем случае это просто уловка.
Я нашел упоминания о функции AppGenerateException
в библиотеке CmpApp
, но не могу найти для нее ни документации, ни примеров. Может ли кто-нибудь указать мне на какую-то документацию по этому поводу?
1 ответ
Лучший ответ
Из любопытства я проверил AppGenerateException
и убедился, что он работает. Получил некоторую помощь от этой справочной страницы Codesys .
Я по-прежнему считаю, что это не лучший способ добиться того, что вам нужно, но он может сработать.
К сожалению, у меня 64-битная система, а TRY..CATCH пока не работает в других, кроме 32-битных систем, насколько мне известно, поэтому я не смог проверить отлов.
Добавьте следующие библиотеки:
- CmpApp
- SysExcept
Тогда кажется, что следующий код работает. Установите для ThrowErr
значение true, чтобы получить системное исключение.
PROGRAM PRG_TestThrow
VAR CONSTANT
MY_PRIVATE_EXCEPTION : DWORD := 32001;
END_VAR
VAR
ThrowErr : BOOL; //Set this to TRUE to throw an error
//The next two are for getting App instance
_pApp : POINTER TO CmpApp.APPLICATION;
_Result : SysExcept.SysTypes.RTS_IEC_RESULT;
END_VAR
//Get App instance
_pApp := AppGetCurrent(pResult := ADR(_Result));
IF ThrowErr THEN
ThrowErr := FALSE;
IF _pApp <> 0 THEN
//Throw divide by zero exception
AppGenerateException(pApp:=_pApp, ulException:=RtsExceptions.RTSEXCPT_DIVIDEBYZERO);
//You could use probably any available number as your own custom exception.
//For example the following works BUT not sure if it's ok to this.
//AppGenerateException(pApp:=_pApp, ulException:=MY_PRIVATE_EXCEPTION);
//See RtsExceptions type for available exception codes.
//For my Codesys version, it has largest exception number of 0x2000 so all larger number are free (for now...)
END_IF
END_IF
Кажется, что можно использовать любой пользовательский код исключения, например:
AppGenerateException(pApp:=_pApp, ulException:=MY_PRIVATE_EXCEPTION);
Но это не задокументировано, поэтому я буду осторожен.
1
Quirzo
4 Июн 2020 в 08:48
Если это не поможет, свяжитесь с изготовителем ПЛКCoDeSys V2.310-123Приложение J: Ошибки и предупреждения компилятора3601″<name> is a reserved variable name»Имя данной переменной зарезервировано генератором кода, измените его.3610″ ‘<Name>’ is not supported»Данное свойство не поддерживается в установленной целевой системе.3611″The given compile directory ‘<name>’ is invalid»В ‚Project’ ‚Options’ ‚Directories’ задана несуществующая директория для файлов компилятора.3612″Maximum number of POUs (<number>) exceeded! Compile is aborted.»В проекте используется слишком много POU.
Измените максимум POU в Target Settings / MemoryLayout.3613″Build canceled»Компиляция прервана пользователем.3614″Project must contain a POU named ‘<name>’ (main routine) or a taskconfiguration»Создайте главный POU (т.е. PLC_PRG) или задайте конфигурацию задач.3615″<Name> (main routine) must be of type program»Главный POU (т.е. PLC_PRG) должен иметь тип программа.3616″Programs musn’t be implemented in external libraries»Проект, который предполагается сохранить как внешнюю библиотеку? содержит программы.
Они небудут доступны в библиотеке.3617″Out of memory»Увеличьте размер виртуальной памяти вашего компьютера.CoDeSys V2.310-124Приложение J: Ошибки и предупреждения компилятора3618″BitAccess not supported in current code generator!»Битовый доступ не поддерживается генератором кода данной целевой системы.3619″Object file ‘<name>’ and library ‘<name>’ have different versions!»Убедитесь, что файлы *.lib и *.obj resp. *.hex соответствуют одной версии библиотеки.
Проверьте даты создания этих файлов.3620″The POU ‘<name>’ must not be present inside a library»Вы пытаетесь сохранить библиотеку в формате версии 2.1. В этой версии библиотека не может содержать PLC_PRG, удалите или переименуйте его.3621″Cannot write compile file ‘<name>’»Вероятнее всего, в директории, указанной для файлов компилятора, уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права доступа.3622″The symbol file ‘<name>’ could not be created»Вероятнее всего, в директории, указанной для символьных файлов (обычно это директория проекта),уже имеется файл с таким именем, имеющий атрибут «Только чтение «.
Удалите данный файл либоизмените ему права доступа.3623″Cannot write boot project file ‘<name>’»Вероятнее всего, в директории, указанной для загрузочных файлов (специфичных для целевой платформы), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файллибо измените ему права доступа.3624″Target setting <targetsetting1>=<set value> not compatible with <targetsetting2>=<set value>»Проверьте и исправьте данные установки в диалоге Targetsettings dialogs (вкладка Resources). Если онинедоступны для редактирования, то обратитесь к изготовителю контроллера.3700» POU with name ‘<name>’ is already in library ‘<name>’»Имя POU проекта уже использовано в библиотеке, измените его.CoDeSys V2.310-125Приложение J: Ошибки и предупреждения компилятора3701″Name used in interface is not identical with POU Name»Используйте команду ‘Project’ ‘Rename object’ для изменения памяти POU в организаторе объектовлибо измените имя в окне объявления POU.
Имя POU следует за одним из ключевых слов: PROGRAM, FUNCTION или FUNCTIONBLOCK.3702″Overflow of identifier list»Не более 100 идентификаторов могут быть использованы при объявлении одной переменной.3703″Duplicate definition of identifier ‘<Name>’»Убедитесь, что только один идентификатор ‘<Name>’ присутствует в разделе объявлений POU.3704″data recursion: «<POU 0> -> <POU 1> -> .. -> <POU 0>»»Применен не допустимый вызов экземпляром функционального блока самого себя.3705″<Name>: VAR_IN_OUT in Top-Level-POU not allowed, if there is no Task-Configuration»Создайте конфигурацию задач или убедитесь, что переменные VAR_IN_OUT не используются вPLC_PRG.3720″Address expected after ‘AT’»После ключевого слова AT должен быть указан корректный адрес.3721″Only ‘VAR’ and ‘VAR_GLOBAL’ can be located to addresses»Поместите объявление в область VAR или VAR_GLOBAL.3722″Only ‘BOOL’ variables allowed on bit addresses»Только переменные типа BOOL могут адресовать биты.
Измените адрес или тип переменной.3726″Constants can not be laid on direct addresses»Константы нельзя располагать по прямым адресам.CoDeSys V2.310-126Приложение J: Ошибки и предупреждения компилятора3727″No array declaration allowed on this address»Объявление может быть произведено по указанному адресу. Измените адрес.3728″Invalid address: ‘<address>’»Указанный адрес не определен для заданной конфигурации ПЛК. Измените адрес или конфигурациюПЛК.3729″Invalid type ‘<name>’ at address: ‘<Name>’ «Переменная данного типа не может быть размещена по указанному адресу.
Например: адрес AT%IB1:WORD; не допустим, если включено выравнивание по четным адресам. Данная ошибка можетвозникнуть при попытке разместить массив по недопустимому прямому адресу.3740″Invalid type: ‘<Name>’ «Ошибка в типе данных объявления.3741″Expecting type specification»Ключевое слово или оператор использован вместо типа данных3742″Enumeration value expected»В определении перечисления пропущен идентификатор после скобки либо разделитель.3743″Integer number expected»Перечисления можно инициализировать только целыми значениями (INT).3744″Enum constant ‘<name>’ already defined»Проверьте соблюдение следующих правил при объявлении перечислений:•Все значения в одном перечислении должны быть уникальны.•Во всех глобальных перечислениях все значения должны быть уникальны.•Во всех локальных перечислениях все значения должны быть уникальны.CoDeSys V2.310-127Приложение J: Ошибки и предупреждения компилятора3745″Subranges are only allowed on Integers!»Переменные с ограниченным диапазоном образуются только на целочисленных типах.3746″Subrange ‘<name>’ is not compatible with Type ‘<name>’»Один из пределов диапазона выходит за область значений базового типа.3747″unknown string length: ‘<name>’»Для определения длины строки используется ошибочная константа.3748″More than three dimensions are not allowed for arrays»Нельзя использовать массивы с размерностью более трех.
Используйте ARRAY OF ARRAY при необходимости.3749″lower bound ‘<name>’ not defined»Не задана константа, определяющая нижнюю границу диапазона.3750″upper bound ‘<name>’ not defined»Не задана константа, определяющая верхнюю границу диапазона.3751″Invalid string length ‘<number of characters>’»Заданный размер строки превышает допустимый в данной целевой системе.3752“More than 9 dimensions are not allowed for nested arrays»Массив может быть 1- 2- или 3-мерный. Размерность можно еще увеличить путем вложений массивов(например, «arr: ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2, 0..2] OFDINT».
Максимальная размерность не должна превышать 9. Данная ошибка говорит о превышенииэтого ограничения. Уменьшите вложенность массивов.3760″Error in initial value»CoDeSys V2.310-128Приложение J: Ошибки и предупреждения компилятораИспользуйте для инициализации значение, совместимое с типом переменной. Изменяя объявление,воспользуйтесь диалогом объявлений переменных (Shift/F2 или ‘Edit»Autodeclare’).3761″‘VAR_IN_OUT’ variables must not have an initial value.»Удалите инициализацию в объявлении переменной VAR_IN_OUT.3780″‘VAR’, ‘VAR_INPUT’, ‘VAR_OUTPUT’ or ‘VAR_IN_OUT’ expected»В следующей за определением имени POU строке должно быть одно из перечисленных ключевыхслов.3781″‘END_VAR’ or identifier expected»Введите корректное определение END_VAR в данной строке окна объявлений.3782″Unexpected end»В разделе объявлений: добавьте ключевое слово END_VAR в конце раздела.В разделе кода: добавьте инструкцию, заканчивающую команду (например, END_IF).3783″END_STRUCT’ or identifier expected»Проверьте правильность окончания определения типа.3784″The current target doesn’t support attribute <attribute name>»Данная целевая система не поддерживает переменные такого типа (например, RETAIN, PERSISTENT)3800″The global variables need too much memory.
Increase the available memory in the project options.»Увеличьте число сегментов в опциях диалога Project’ ‚Options’ ‚Build’.3801″The variable ‘<Name>’ is too big. (<size> byte)»Переменная использует тип, занимающий более одного сегментаРазмер сегмента определяется настройкой целевой платформы. Если вы не нашли этого параметра вопциях памяти, свяжитесь с изготовителем ПЛК.CoDeSys V2.310-129Приложение J: Ошибки и предупреждения компилятора3802″Out of retain memory. Variable ‘<name>’, <number> bytes.»Израсходована вся память Retain переменных.
Если это не поможет, свяжитесь с изготовителем ПЛКCoDeSys V2.310-123Приложение J: Ошибки и предупреждения компилятора3601″<name> is a reserved variable name»Имя данной переменной зарезервировано генератором кода, измените его.3610″ ‘<Name>’ is not supported»Данное свойство не поддерживается в установленной целевой системе.3611″The given compile directory ‘<name>’ is invalid»В ‚Project’ ‚Options’ ‚Directories’ задана несуществующая директория для файлов компилятора.3612″Maximum number of POUs (<number>) exceeded! Compile is aborted.»В проекте используется слишком много POU.
Измените максимум POU в Target Settings / MemoryLayout.3613″Build canceled»Компиляция прервана пользователем.3614″Project must contain a POU named ‘<name>’ (main routine) or a taskconfiguration»Создайте главный POU (т.е. PLC_PRG) или задайте конфигурацию задач.3615″<Name> (main routine) must be of type program»Главный POU (т.е. PLC_PRG) должен иметь тип программа.3616″Programs musn’t be implemented in external libraries»Проект, который предполагается сохранить как внешнюю библиотеку? содержит программы.
Они небудут доступны в библиотеке.3617″Out of memory»Увеличьте размер виртуальной памяти вашего компьютера.CoDeSys V2.310-124Приложение J: Ошибки и предупреждения компилятора3618″BitAccess not supported in current code generator!»Битовый доступ не поддерживается генератором кода данной целевой системы.3619″Object file ‘<name>’ and library ‘<name>’ have different versions!»Убедитесь, что файлы *.lib и *.obj resp. *.hex соответствуют одной версии библиотеки.
Проверьте даты создания этих файлов.3620″The POU ‘<name>’ must not be present inside a library»Вы пытаетесь сохранить библиотеку в формате версии 2.1. В этой версии библиотека не может содержать PLC_PRG, удалите или переименуйте его.3621″Cannot write compile file ‘<name>'»Вероятнее всего, в директории, указанной для файлов компилятора, уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права доступа.3622″The symbol file ‘<name>’ could not be created»Вероятнее всего, в директории, указанной для символьных файлов (обычно это директория проекта),уже имеется файл с таким именем, имеющий атрибут «Только чтение «.
Удалите данный файл либоизмените ему права доступа.3623″Cannot write boot project file ‘<name>'»Вероятнее всего, в директории, указанной для загрузочных файлов (специфичных для целевой платформы), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файллибо измените ему права доступа.3624″Target setting <targetsetting1>=<set value> not compatible with <targetsetting2>=<set value>»Проверьте и исправьте данные установки в диалоге Targetsettings dialogs (вкладка Resources). Если онинедоступны для редактирования, то обратитесь к изготовителю контроллера.3700» POU with name ‘<name>’ is already in library ‘<name>'»Имя POU проекта уже использовано в библиотеке, измените его.CoDeSys V2.310-125Приложение J: Ошибки и предупреждения компилятора3701″Name used in interface is not identical with POU Name»Используйте команду ‘Project’ ‘Rename object’ для изменения памяти POU в организаторе объектовлибо измените имя в окне объявления POU.
Имя POU следует за одним из ключевых слов: PROGRAM, FUNCTION или FUNCTIONBLOCK.3702″Overflow of identifier list»Не более 100 идентификаторов могут быть использованы при объявлении одной переменной.3703″Duplicate definition of identifier ‘<Name>'»Убедитесь, что только один идентификатор ‘<Name>’ присутствует в разделе объявлений POU.3704″data recursion: «<POU 0> -> <POU 1> -> .. -> <POU 0>»»Применен не допустимый вызов экземпляром функционального блока самого себя.3705″<Name>: VAR_IN_OUT in Top-Level-POU not allowed, if there is no Task-Configuration»Создайте конфигурацию задач или убедитесь, что переменные VAR_IN_OUT не используются вPLC_PRG.3720″Address expected after ‘AT'»После ключевого слова AT должен быть указан корректный адрес.3721″Only ‘VAR’ and ‘VAR_GLOBAL’ can be located to addresses»Поместите объявление в область VAR или VAR_GLOBAL.3722″Only ‘BOOL’ variables allowed on bit addresses»Только переменные типа BOOL могут адресовать биты.
Измените адрес или тип переменной.3726″Constants can not be laid on direct addresses»Константы нельзя располагать по прямым адресам.CoDeSys V2.310-126Приложение J: Ошибки и предупреждения компилятора3727″No array declaration allowed on this address»Объявление может быть произведено по указанному адресу. Измените адрес.3728″Invalid address: ‘<address>'»Указанный адрес не определен для заданной конфигурации ПЛК. Измените адрес или конфигурациюПЛК.3729″Invalid type ‘<name>’ at address: ‘<Name>’ «Переменная данного типа не может быть размещена по указанному адресу.
Например: адрес AT%IB1:WORD; не допустим, если включено выравнивание по четным адресам. Данная ошибка можетвозникнуть при попытке разместить массив по недопустимому прямому адресу.3740″Invalid type: ‘<Name>’ «Ошибка в типе данных объявления.3741″Expecting type specification»Ключевое слово или оператор использован вместо типа данных3742″Enumeration value expected»В определении перечисления пропущен идентификатор после скобки либо разделитель.3743″Integer number expected»Перечисления можно инициализировать только целыми значениями (INT).3744″Enum constant ‘<name>’ already defined»Проверьте соблюдение следующих правил при объявлении перечислений:•Все значения в одном перечислении должны быть уникальны.•Во всех глобальных перечислениях все значения должны быть уникальны.•Во всех локальных перечислениях все значения должны быть уникальны.CoDeSys V2.310-127Приложение J: Ошибки и предупреждения компилятора3745″Subranges are only allowed on Integers!»Переменные с ограниченным диапазоном образуются только на целочисленных типах.3746″Subrange ‘<name>’ is not compatible with Type ‘<name>'»Один из пределов диапазона выходит за область значений базового типа.3747″unknown string length: ‘<name>'»Для определения длины строки используется ошибочная константа.3748″More than three dimensions are not allowed for arrays»Нельзя использовать массивы с размерностью более трех.
Используйте ARRAY OF ARRAY при необходимости.3749″lower bound ‘<name>’ not defined»Не задана константа, определяющая нижнюю границу диапазона.3750″upper bound ‘<name>’ not defined»Не задана константа, определяющая верхнюю границу диапазона.3751″Invalid string length ‘<number of characters>'»Заданный размер строки превышает допустимый в данной целевой системе.3752“More than 9 dimensions are not allowed for nested arrays»Массив может быть 1- 2- или 3-мерный. Размерность можно еще увеличить путем вложений массивов(например, «arr: ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2, 0..2] OFDINT».
Максимальная размерность не должна превышать 9. Данная ошибка говорит о превышенииэтого ограничения. Уменьшите вложенность массивов.3760″Error in initial value»CoDeSys V2.310-128Приложение J: Ошибки и предупреждения компилятораИспользуйте для инициализации значение, совместимое с типом переменной. Изменяя объявление,воспользуйтесь диалогом объявлений переменных (Shift/F2 или ‘Edit»Autodeclare’).3761″‘VAR_IN_OUT’ variables must not have an initial value.»Удалите инициализацию в объявлении переменной VAR_IN_OUT.3780″‘VAR’, ‘VAR_INPUT’, ‘VAR_OUTPUT’ or ‘VAR_IN_OUT’ expected»В следующей за определением имени POU строке должно быть одно из перечисленных ключевыхслов.3781″‘END_VAR’ or identifier expected»Введите корректное определение END_VAR в данной строке окна объявлений.3782″Unexpected end»В разделе объявлений: добавьте ключевое слово END_VAR в конце раздела.В разделе кода: добавьте инструкцию, заканчивающую команду (например, END_IF).3783″END_STRUCT’ or identifier expected»Проверьте правильность окончания определения типа.3784″The current target doesn’t support attribute <attribute name>»Данная целевая система не поддерживает переменные такого типа (например, RETAIN, PERSISTENT)3800″The global variables need too much memory.
Increase the available memory in the project options.»Увеличьте число сегментов в опциях диалога Project’ ‚Options’ ‚Build’.3801″The variable ‘<Name>’ is too big. (<size> byte)»Переменная использует тип, занимающий более одного сегментаРазмер сегмента определяется настройкой целевой платформы. Если вы не нашли этого параметра вопциях памяти, свяжитесь с изготовителем ПЛК.CoDeSys V2.310-129Приложение J: Ошибки и предупреждения компилятора3802″Out of retain memory. Variable ‘<name>’, <number> bytes.»Израсходована вся память Retain переменных.
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
1 |
|
14.05.2015, 22:11. Показов 12090. Ответов 10
Добрый день.
0 |
91 / 86 / 12 Регистрация: 08.08.2013 Сообщений: 667 |
|
14.05.2015, 23:01 |
2 |
На вкладке «онлайн» галочка «Режим эмуляции» стоит?
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
14.05.2015, 23:31 [ТС] |
3 |
Спасибо, заработало!! Добавлено через 13 минут
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
14.05.2015, 23:59 [ТС] |
4 |
Или просто вход А = выход В Миниатюры
0 |
Почетный модератор 28040 / 15773 / 982 Регистрация: 15.09.2009 Сообщений: 67,752 Записей в блоге: 78 |
|
15.05.2015, 08:29 |
5 |
онлайн — логин
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
15.05.2015, 08:48 [ТС] |
6 |
Совершенно верно, уважаемый. Но как увидеть изменение значений выходов?
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
15.05.2015, 08:55 [ТС] |
7 |
Вот Миниатюры
0 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
15.05.2015, 08:56 [ТС] |
8 |
Вход А изменяю, выход В не меняется…
0 |
Почетный модератор 28040 / 15773 / 982 Регистрация: 15.09.2009 Сообщений: 67,752 Записей в блоге: 78 |
|
15.05.2015, 08:57 |
9 |
не нужно. двойной щелчок — ctrl+F7
1 |
0 / 0 / 0 Регистрация: 14.05.2015 Сообщений: 7 |
|
15.05.2015, 09:20 [ТС] |
10 |
O my god, заработалааа! Спасибо! Добавлено через 12 минут
0 |
91 / 86 / 12 Регистрация: 08.08.2013 Сообщений: 667 |
|
15.05.2015, 10:06 |
11 |
сверху, там где объявляются переменные типа ton1:ton;
0 |