Ошибка 3612 codesys

  • I am using CoDeSys V2.3.9.22 with the installed target for ABB AC500 eCo. I also use Oscat’s library. When compiling I get a error 3612 » POU number is greater than 512 ». Where can I change the maximum number of POU? In the Target Settings -> Memory Layout Maximum number of POU’s is 512 and gray ie. Not to be changed. What should I do?

  • 2 ways to solve this:
    1: try to manage the memory allocation.
    2: As oscat is very big, try to cut out unused pieces of the lib.; load it as library in your program and delete portions not used.
    3: take the TXT version of oscat and copy some portions into a new library or into a new one.
    mind that it is often a whole bunch of functions that are calling others like a PID is calling a P and I function etc.

  • shooter hat geschrieben:
    2 ways to solve this:
    1: try to manage the memory allocation.
    2: As oscat is very big, try to cut out unused pieces of the lib.; load it as library in your program and delete portions not used.
    3: take the TXT version of oscat and copy some portions into a new library or into a new one.
    mind that it is often a whole bunch of functions that are calling others like a PID is calling a P and I function etc.

    thanks Mr. Shooter for solution.

    I cut unused pieces of Oscat lib (and some others) then debug whole thing and now
    my project is working.


Log in to post a comment.

  • banzai35

    I am using CoDeSys V2.3.9.22 with the installed target for ABB AC500 eCo. I also use Oscat’s library. When compiling I get a error 3612 » POU number is greater than 512 ». Where can I change the maximum number of POU? In the Target Settings -> Memory Layout Maximum number of POU’s is 512 and gray ie. Not to be changed. What should I do?

  • shooter

    2 ways to solve this:
    1: try to manage the memory allocation.
    2: As oscat is very big, try to cut out unused pieces of the lib.; load it as library in your program and delete portions not used.
    3: take the TXT version of oscat and copy some portions into a new library or into a new one.
    mind that it is often a whole bunch of functions that are calling others like a PID is calling a P and I function etc.

  • banzai35

    shooter hat geschrieben:
    2 ways to solve this:
    1: try to manage the memory allocation.
    2: As oscat is very big, try to cut out unused pieces of the lib.; load it as library in your program and delete portions not used.
    3: take the TXT version of oscat and copy some portions into a new library or into a new one.
    mind that it is often a whole bunch of functions that are calling others like a PID is calling a P and I function etc.

    thanks Mr. Shooter for solution.

    I cut unused pieces of Oscat lib (and some others) then debug whole thing and now
    my project is working.


Log in to post a comment.

  • В этой теме 5 ответа, 5 участника, последнее обновление 8 лет, 2 месяцев назад da Серхио Бертана.

Просмотр 6 сообщений — с 1 по 6 (из 6 всего)

  • автор

    После

  • Декабрь 1, 2014 в 11: 02 утра
    #35683

    Я видел, что в Codesys «Настройки цели», относящиеся к цели »ELSIST Slimline Mps052 »можно изменить размер различных запоминающих устройств ПЛК. Какие допустимые пределы?

    Декабрь 3, 2014 в 7: 33 утра
    #38566

    В Codesys «Target settings» — «Memory layout» вы можете изменить размер областей памяти ПЛК (Скриншот).

    Для «кодовой» памяти ограничение практически продиктовано пространством, доступным в файловой системе, что может быть проверено, например, командой Telnet с командой «dir», где получается количество «свободных байтов». Однако совет не использовать все это для ПЛК.

    Для памяти данных необходимо убедиться, что сумма областей Global, Memory, Input, Output и («количество POU» x 12 байтов) не превышает максимум 16 # 10000. Количество ПМ также может изменяться.

    Февраль 27, 2015 в 3: 08 вечера
    #38770

    По возможности мне понадобится отображение памяти для адресации внутренних переменных. Остается понять, существует ли другая область памяти для сохраняемых переменных (как это видно из целевой настройки) или сохраняемые переменные должны быть объявлены в той же области.

    Февраль 27, 2015 в 3: 12 вечера
    #38771

    Как видно изручной экстракт Есть 3 области памяти RAM данных, эти три области независимы друг от друга.

    Память глобальных переменных (54 Kb), где размещены все задаваемые пользователем мнемонические переменные.
    Память для размещения переменных (4 Кб), где размещены все переменные с пользовательскими адресами.
    Сохранить память (8 Kb)где переменные, определенные как retain, расположены.

    Март 23, 2015 в 11: 25 утра
    #38842

    Анонимный

    неактивный

    Для нового проекта мне нужно использовать известные библиотеки OSCAT, как базовую версию OSCAT, так и сеть OSCAT, но при компиляции проекта я сталкиваюсь с ошибкой «Ошибка 3612: превышено максимальное количество ПМ (512). Компиляция прервана «. Я попытался просмотреть неиспользуемые блоки, но проблема в том, что некоторые FB, даже если они не используются, внутренне связаны с функциональными блоками, которые я собираюсь использовать.

    Единственный способ, который позволяет компиляцию без ошибок, — это очевидный способ увеличить максимальное количество POU в целевом параметре, установив его, например, на 2048, программа компилируется без ошибок. Используя «SlimLine Codesys Base CPU Module », какие технические проблемы может вызвать моя установка?

    Март 23, 2015 в 1: 04 вечера
    #38843

    Конечно, можно увеличить количество управляемых ПМ, просто определите новое значение в целевых настройках (Скриншот). Единственная мера предосторожности, указанная в предыдущем посте, — не превышать лимит доступной памяти. Поэтому, если вы увеличиваете количество ПМ, вам нужно уменьшить область памяти (я советую вам уменьшить область глобальной памяти). Помните, как упоминалось ранее, что для каждой ПМ требуется 12 байтов памяти.

    Таким образом, если вы увеличите количество POU с 1536 до 2048, вам придется уменьшить глобальную область памяти на 18432 байта.

  • автор

    После

Просмотр 6 сообщений — с 1 по 6 (из 6 всего)

  • Вы должны войти в систему, чтобы ответить на эту тему.

Если это не поможет, свяжитесь с изготовителем ПЛК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 переменных.


Подборка по базе: Детский массаж. Поэтапное руководство.pdf, Инструкция для пользователя по подключению к АИС Расчет через FT, Руководство пользователя 7.docx, Работа в АИС СГО под функцией пользователя Учитель (1+).pdf, Приложение 5. Методическое руководство к дидактическому матер, РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО ПРОВЕДЕНИЮ ЭКСПЕРТИЗЫ ЗАЯВОК.docx, Практическая работа. Составление руководства пользователя ис.doc, Методическое руководство.docx, Памятка пользователя в МИС.pdf, Базисное руководство по психотерапии.pdf


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’, если активирована опция ‘Замещение

Click here follow the steps to fix Codesys Error 3611 and related errors.

Instructions

 

To Fix (Codesys Error 3611) error you need to
follow the steps below:

Step 1:

 
Download
(Codesys Error 3611) Repair Tool
   

Step 2:

 
Click the «Scan» button
   

Step 3:

 
Click ‘Fix All‘ and you’re done!
 

Compatibility:
Windows 7, 8, Vista, XP
Download Size: 6MB
Requirements: 300 MHz Processor, 256 MB Ram, 22 MB HDD

Limitations:
This download is a free evaluation version. To unlock all features and tools, a purchase is required.

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-05-30 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.)

Если это не поможет, свяжитесь с изготовителем ПЛК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 переменных.

Errors 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 «Expecting or or … before »» Enter a valid operand at the named position. «Expecting ‘:=’ or ‘=>’ before »» Enter one of the both operators at the named position. «‘BITADR’ expects a bit address or a variable on a bit address»Use a valid bit address (e.g. %IX0.1). «Integer number or symbolic constant expected» Enter a integer number or the identifier of a valid constant. «‘INI’ operator needs function block instance or data unit type instance» Check the data type of the variable, for which the INI operator is used. «Nested calls of the same function are not possible.» At not reentrant target systems and in simulation mode a function call may not contain a call of itself as a parameter. Example: fun1(a,fun1(b,c,d),e); Use a intermediate table. «Expressions and constants are not allowed as operands of ‘ADR’» Replace the constant or the expression by a variable or a direct address. «‘ADR’ is not allowed on bits! Use ‘BITADR’ instead.» Use BITADR. Please Note: The BITADR function does not return a physical memory address. «’’ operands are too few for ». At least ‘’ are needed» Check how many operands the named operator requires and add the missing operands. «’’ operands are too many for ». At least ‘’ are needed» Check how many operands the named operator requires and remove the surplus operands. «Division by 0» You are using a division by 0 in a constant expression. If you want to provocate a runtime error, use – if applicable — a variable with the value 0. 10-118 <strong>CoDeSys</strong> V2.3

Appendix J: Compiler Errors and Warnings 4035 «ADR must not be applied on ‘VAR CONSTANT’ if ‘replaced constants’ is activated» An address access on constants for which the direct values are used, is not possible. If applicable, deactivate the option ‚Replace Constants’ in ‚Project’ ‚Options’ ‚Build’. 4040 «Label » is not defined» Define a label with the name or change the name to that of a defined label. 4041 4042 4043 4050 4051 4052 «Duplicate definition of label »» The label ‘< Name>’ is multiple defined in the POU. Rename the label or remove one of the definitions. «No more than labels in sequence are allowed» The number of jump labels is limited to ». Insert a dummy instruction. «Format of label invalid. A label must be a name optionally followed by a colon.»The label name is not valid or the colon is missing in the definition. «POU ‘%s’ is not defined» Define a POU with the name » using the command ‘Project’ ‘Add Object’ or change » to the name of a defined POU. «‘%s’ is no function» Use instead of a function name which is defined in the project or in the libraries. «» must be a declared instance of FB »» Use an instance of data type » which is defined in the project or change the type of to ». 4053 «» is no valid box or operator» Replace » by the name of a POU or an operator defined in the project. 4054 «POU name expected as parameter of ‘INDEXOF’» The given paramter is not a valid POU name. 4060 «‘VAR_IN_OUT’ parameter » of » needs variable with write access as input» To VAR_IN_OUT parameters variables with write access have to be handed over, because a VAR_IN_OUT can be modified within the POU. <strong>CoDeSys</strong> V2.3 10-119

  • Page 1 and 2:

    User Manual for PLC Programming wit

  • Page 3 and 4:

    Content 1 A Brief Introduction to C

  • Page 5 and 6:

    8 The License Manager 8-1 8.1.1 Cre

  • Page 7 and 8:

    A Brief Introduction to CoDeSys 1 A

  • Page 9:

    A Brief Introduction to CoDeSys 1.3

  • Page 12 and 13:

    Project Components… The call of a

  • Page 14 and 15:

    Project Components… Calling a fun

  • Page 16 and 17:

    Project Components… In FBD : PLC_

  • Page 18 and 19:

    Languages… Data types Visualizati

  • Page 20 and 21:

    Languages… LDN BOOL2 (*save the n

  • Page 22 and 23:

    Languages… BOOL2 := FALSE; END_CA

  • Page 24 and 25:

    Languages… FOR loop • If the va

  • Page 26 and 27:

    Languages… 2.2.3 Sequential Funct

  • Page 28 and 29:

    Languages… An example for an IEC

  • Page 30 and 31:

    Languages… is stored in the branc

  • Page 32 and 33:

    Languages… Contact Each network i

  • Page 34 and 35:

    Debugging, Online Functions… Moni

  • Page 37 and 38:

    Chapter 3 — We Write a Little Progr

  • Page 39 and 40:

    3 — We Write a Little Program For t

  • Page 41 and 42:

    3 — We Write a Little Program At fi

  • Page 43 and 44:

    3 — We Write a Little Program Actio

  • Page 45 and 46:

    3 — We Write a Little Program Progr

  • Page 47 and 48:

    3 — We Write a Little Program The n

  • Page 49 and 50:

    3 — We Write a Little Program The r

  • Page 51:

    3 — We Write a Little Program CoDeS

  • Page 54 and 55:

    The Main Window… In order to see

  • Page 56 and 57:

    Project Options… • Log • Buil

  • Page 58 and 59:

    Project Options… Autodeclaration:

  • Page 60 and 61:

    Project Options… If you have chos

  • Page 62 and 63:

    Project Options… Here the comment

  • Page 64 and 65:

    Project Options… Using the option

  • Page 66 and 67:

    Project Options… Local: The POU w

  • Page 68 and 69:

    Managing Projects… ‘File’ ‘Open’

  • Page 70 and 71:

    Managing Projects… implementation

  • Page 72 and 73:

    Managing Projects… ‘File’ ‘Print’

  • Page 74 and 75:

    Managing Projects… Window for pas

  • Page 76 and 77:

    Managing Projects… Translate proj

  • Page 78 and 79:

    Managing Projects… If a translati

  • Page 80 and 81:

    Managing Projects… Dialog box for

  • Page 82 and 83:

    Managing Projects… Please Note: I

  • Page 84 and 85:

    Managing Projects… If the report

  • Page 86 and 87:

    Managing Projects… 4.3.1 ‘Project

  • Page 88 and 89:

    Managing Projects… Dialog ‘Login’

  • Page 90 and 91:

    Managing Projects… Dialog showing

  • Page 92 and 93:

    Managing Projects… Label Version

  • Page 94 and 95:

    Managing Objects in a Project… ‘N

  • Page 96 and 97:

    Managing Objects in a Project… Di

  • Page 98 and 99:

    Managing Objects in a Project… On

  • Page 100 and 101:

    General Editing Functions… 4.5 Ge

  • Page 102 and 103:

    General Editing Functions… ‘Edit’

  • Page 104 and 105:

    General Online Functions… ‘Edit’

  • Page 106 and 107:

    General Online Functions… VAR PER

  • Page 108 and 109:

    General Online Functions… Before

  • Page 110 and 111:

    General Online Functions… Dialog

  • Page 112 and 113:

    General Online Functions… ‘Online

  • Page 114 and 115:

    Window set up… 4.7 Window set up.

  • Page 117 and 118:

    5 — Editors in CoDeSys 5 Editors in

  • Page 119 and 120:

    5 — Editors in CoDeSys Input Variab

  • Page 121 and 122:

    5 — Editors in CoDeSys con1:INT:=12

  • Page 123 and 124:

    5 — Editors in CoDeSys • All iden

  • Page 125 and 126:

    5 — Editors in CoDeSys In the onlin

  • Page 127 and 128:

    5 — Editors in CoDeSys If the POU h

  • Page 129 and 130:

    5 — Editors in CoDeSys ‘Insert’ ‘Op

  • Page 131 and 132:

    5 — Editors in CoDeSys IL Editor wi

  • Page 133 and 134:

    5 — Editors in CoDeSys 5.3.2 The Ed

  • Page 135 and 136:

    5 — Editors in CoDeSys of the netwo

  • Page 137 and 138:

    5 — Editors in CoDeSys Depending on

  • Page 139 and 140:

    5 — Editors in CoDeSys ‘Extras’ ‘Se

  • Page 141 and 142:

    5 — Editors in CoDeSys All editors

  • Page 143 and 144:

    5 — Editors in CoDeSys The contact

  • Page 145 and 146:

    5 — Editors in CoDeSys The coil now

  • Page 147 and 148:

    5 — Editors in CoDeSys ‘Insert’ ‘Pa

  • Page 149 and 150:

    5 — Editors in CoDeSys setting is d

  • Page 151 and 152:

    5 — Editors in CoDeSys If IEC steps

  • Page 153 and 154:

    5 — Editors in CoDeSys 2. Text fiel

  • Page 155 and 156:

    5 — Editors in CoDeSys ‘Extras’ ‘Se

  • Page 157 and 158:

    5 — Editors in CoDeSys ‘Extras’ ‘Co

  • Page 159 and 160:

    5 — Editors in CoDeSys ‘Extras’ ‘Or

  • Page 161 and 162:

    5 — Editors in CoDeSys Example: Sel

  • Page 163:

    5 — Editors in CoDeSys PINs in macr

  • Page 166 and 167:

    Global Variables, Variable Configur

  • Page 168 and 169:

    Global Variables, Variable Configur

  • Page 170 and 171:

    Global Variables, Variable Configur

  • Page 172 and 173:

    Library Manager… variable. You ca

  • Page 174 and 175:

    Log… Remove Library With the ‘Edi

  • Page 176 and 177:

    PLC Configuration Storing the proje

  • Page 178 and 179:

    PLC Configuration All modules start

  • Page 180 and 181:

    PLC Configuration Modul id: The Mod

  • Page 182 and 183:

    PLC Configuration 6.5.5 Configurati

  • Page 184 and 185:

    PLC Configuration The GSD file pert

  • Page 186 and 187:

    PLC Configuration Basisparameter di

  • Page 188 and 189:

    PLC Configuration The Properties bu

  • Page 190 and 191:

    PLC Configuration 6.5.7 Configurati

  • Page 192 and 193:

    PLC Configuration given Guard COB-I

  • Page 194 and 195:

    PLC Configuration cyclic — synchron

  • Page 196 and 197:

    PLC Configuration CAN settings of a

  • Page 198 and 199:

    Target Settings Target-Support-Pack

  • Page 200 and 201:

    Task Configuration… • A task na

  • Page 202 and 203:

    Task Configuration… may be extend

  • Page 204 and 205:

    Watch and Receipt Manager… The sc

  • Page 206 and 207:

    Watch and Receipt Manager… Watch

  • Page 208 and 209:

    Sampling Trace Dialog Box for Trace

  • Page 210 and 211:

    Sampling Trace Display of the Sampl

  • Page 212 and 213:

    Sampling Trace ‘Load Values’ Be awa

  • Page 214 and 215:

    Parameter Manager 6.10.1 Dialog Tar

  • Page 216 and 217:

    Parameter Manager 6.11.2 Der Parame

  • Page 218 and 219:

    Parameter Manager Now close the tem

  • Page 220 and 221:

    Parameter Manager attributes. To en

  • Page 222 and 223:

    PLC Browser In a selection box the

  • Page 224 and 225:

    Tools %V If NAME is a variable name

  • Page 226 and 227:

    Tools The table lists all tools for

  • Page 228 and 229:

    Tools Parameter Path of the file wh

  • Page 230 and 231:

    Tools Mark the entry ‘Tools’ in the

  • Page 232 and 233:

    Tools • a project data base for w

  • Page 235 and 236:

    8 — The License Manager 8 The Licen

  • Page 237 and 238:

    9 — DDE Communication with CoDeSys

  • Page 239 and 240:

    9 — DDE Communication with CoDeSys

  • Page 241 and 242:

    APPENDIX 10 APPENDIX Appendix A: IE

  • Page 243 and 244:

    IEC Operators and additional norm e

  • Page 245 and 246:

    IEC Operators and additional norm e

  • Page 247 and 248:

    IEC Operators and additional norm e

  • Page 249 and 250:

    IEC Operators and additional norm e

  • Page 251 and 252:

    IEC Operators and additional norm e

  • Page 253 and 254:

    IEC Operators and additional norm e

  • Page 255 and 256:

    IEC Operators and additional norm e

  • Page 257 and 258:

    IEC Operators and additional norm e

  • Page 259 and 260:

    IEC Operators and additional norm e

  • Page 261 and 262:

    IEC Operators and additional norm e

  • Page 263 and 264:

    IEC Operators and additional norm e

  • Page 265 and 266:

    Appendix B: Operands in CoDeSys App

  • Page 267 and 268:

    Appendix B: Operands in CoDeSys $P

  • Page 269:

    Appendix B: Operands in CoDeSys %QB

  • Page 272 and 273:

    Standard data types Time Data Types

  • Page 274 and 275:

    Defined data types FUNCTION CheckBo

  • Page 276 and 277:

    Defined data types References For e

  • Page 279 and 280:

    Appendix D: CoDeSys Libraries Appen

  • Page 281 and 282:

    Appendix D: CoDeSys Libraries LD CO

  • Page 283 and 284:

    Appendix D: CoDeSys Libraries Examp

  • Page 285 and 286:

    Appendix D: CoDeSys Libraries CLK :

  • Page 287 and 288:

    Appendix D: CoDeSys Libraries Examp

  • Page 289 and 290:

    Appendix D: CoDeSys Libraries As so

  • Page 291 and 292:

    Appendix D: CoDeSys Libraries Decla

  • Page 293 and 294:

    Appendix D: CoDeSys Libraries Examp

  • Page 295 and 296:

    Appendix D: CoDeSys Libraries A P-c

  • Page 297 and 298:

    Appendix D: CoDeSys Libraries IN of

  • Page 299 and 300:

    Appendix D: CoDeSys Libraries If th

  • Page 301 and 302:

    Appendix E: Operators and Library M

  • Page 303 and 304:

    Appendix E: Operators and Library M

  • Page 305:

    Appendix E: Operators and Library M

  • Page 308 and 309: Command File (cmdfile) Commands onl
  • Page 310 and 311: Command File (cmdfile) Commands dir
  • Page 312 and 313: Command File (cmdfile) Commands ‘Co
  • Page 315 and 316: Appendix G: Siemens Import Appendix
  • Page 317 and 318: Appendix G: Siemens Import BE, BEA,
  • Page 319: Appendix G: Siemens Import redirect
  • Page 322 and 323: Command File (cmdfile) Commands 10.
  • Page 324 and 325: Command File (cmdfile) Commands Tar
  • Page 326 and 327: Command File (cmdfile) Commands Tar
  • Page 328 and 329: Command File (cmdfile) Commands Tar
  • Page 330 and 331: Command File (cmdfile) Commands 10.
  • Page 332 and 333: Command File (cmdfile) Commands 10.
  • Page 334 and 335: Key Combinations ‘File’ ‘Print’ ‘Fi
  • Page 336 and 337: Key Combinations ‘Insert’ ‘Step-Tra
  • Page 339 and 340: Appendix J: Compiler Errors and War
  • Page 341 and 342: Appendix J: Compiler Errors and War
  • Page 343 and 344: Appendix J: Compiler Errors and War
  • Page 345 and 346: Appendix J: Compiler Errors and War
  • Page 347 and 348: Appendix J: Compiler Errors and War
  • Page 349 and 350: Appendix J: Compiler Errors and War
  • Page 351 and 352: Appendix J: Compiler Errors and War
  • Page 353 and 354: Appendix J: Compiler Errors and War
  • Page 355 and 356: Appendix J: Compiler Errors and War
  • Page 357: Appendix J: Compiler Errors and War
  • Page 361 and 362: Appendix J: Compiler Errors and War
  • Page 363 and 364: Appendix J: Compiler Errors and War
  • Page 365 and 366: Appendix J: Compiler Errors and War
  • Page 367 and 368: Appendix J: Compiler Errors and War
  • Page 369 and 370: Appendix J: Compiler Errors and War
  • Page 371 and 372: Appendix J: Compiler Errors and War
  • Page 373: Appendix J: Compiler Errors and War
  • Page 376 and 377: Errors Changing connections 5-40 Cr
  • Page 378 and 379: Errors Set as project configuration
  • Page 380 and 381: Errors Insert Label in CFC 5-38 Ins
  • Page 382 and 383: Errors Function 5-13 Function Block
  • Page 384 and 385: Errors Cut/Copy/Paste line 6-55 Del
  • Page 386 and 387: Errors SFCTip 2-19 SFCTipMode 2-19
  • Page 388: Errors Window 4-62 Window Arrange S

Компилятор выдает ошибку для следующей программы. Я не могу это решить.

Это система Codesys, пишущая на языке ST. Я хочу управлять электромагнитным клапаном, используя битовую операцию.

CanRx := can_getDatabox (CAN_2, 10, ADR(CanRx_data), ADR(CanRxNumBytes));
Rx_test_1 := CanRx_data[1];
Rx_test_2 := CanRx_data[2];
Rx_test_3 := CanRx_data[3];
Rx_test_4 := CanRx_data[4];

IF(Rx_test_1 & 4 = 4)THEN
  out (OUT_1_POH_CL, 1500);
  ELSE IF(Rx_test_1 & 8 = 8)THEN
  out (OUT_1_POH_CL, 0);
END_IF

Ошибка компилятора:

 Error: 4011:Callback_MAIN_Task(XX): Type mismatch in parameter 1 of 'AND':Cannot convert 'INT' to 'ANY_BIT'  
 Error: 4024:Callback_MAIN_Task(XX): Expecting END_IF_before"

2 ответа

Я смог решить это сам. Я использовал AND вместо &, использовал ELSIF вместо ELSEIF. Вот правильный код.

Rx_test_1 : BYTE;

IF ((Rx_test_1 AND 1) =1) THEN
   statement1;
ELSIF (( Rx_test_1 AND 2) =1) THEN
   statement2;
ELSIF (( Rx_test_1 AND 4) =1) THEN
   statement3;
ELSE
   statement4;
END_IF


1

Taro NAKAMURA
20 Ноя 2020 в 13:45

В документации для операторов ST сказано, что операторы сравнения и равенства <, >, <=, >=, = и <> имеют более высокий приоритет чем операторы логической логики и операторы побитовой логики.

Кроме того, в ST побитовыми логическими операторами являются AND и OR вместо & и |. Точно так же булевы логические операторы — это AND_THEN и OR_ELSE вместо && и ||. (однако учтите, что булев логический оператор был добавлен в компилятор CODESYS V3.5 SP4, если вы используете более раннюю версию, они будут недоступны. Например, SoMachine. em> использует более старый)

Кроме того, синтаксис IF выглядит следующим образом:

IF condition THEN
    statement1;
ELSEIF condition THEN
    statement2;
ELSE
    statement3;
END_IF;

Но в вашем коде есть ELSE IF вместо ELSEIF, а в вашем END_IF отсутствует точка с запятой. (Хотя у меня никогда не было жалоб компилятора, если я пропустил это, и они сами часто опускают их в своих примерах в документации)

Итак, вам просто нужно заключить в скобки побитовую операцию перед сравнением. (Такая же ситуация и в языках семейства C, что приводит к нечитаемым выражениям со слишком большим количеством скобок), замените их допустимыми операторами ST и исправьте часть ELSE IF.

Попробуйте включить эти изменения, например:

(Обратите внимание, что я также добавил пробелы для удобства чтения. ST не накладывает никакой семантики на пробелы (в отличие от Python, Haskell и т. д.), поэтому вы должны использовать пробелы, чтобы максимизировать удобочитаемость и удобство сопровождения). (Мой личный стиль заключается в том, чтобы в скобках были пробелы, а не снаружи — другие люди категорически не согласны, YMMV)

IF ( ( Rx_test_1 AND 4 ) = 4 ) THEN

    out ( OUT_1_POH_CL, 1500 );

ELSEIF ( ( Rx_test_1 AND 8 ) = 8 ) THEN

    out ( OUT_1_POH_CL, 0 );

END_IF;


1

Guiorgy
21 Ноя 2020 в 14:50

Если это не поможет, свяжитесь с изготовителем ПЛК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. Показов 10629. Ответов 10


Добрый день.
Подскажите плиз начинающему.
Установил Codesys 2.3
При попытке виртуального подключения к контроллеру выдает ошибку связи. (для запуска программы)
Может я что-то делаю не так?
Фактически я к нему и не подключаюсь — хочу потренироваться в режиме эмуляции.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.05.2015, 22:11

Ответы с готовыми решениями:

Внутреняя ошибка связи или нет связи с удалённым сервером
Данные сообщения выходят при загрузке сайтов и поэтому не могу загрузить ни одну…

Ошибка связи
Всем привет!
В общем из-за некоторых обстоятельств нужно срочно разобраться с APEX.
Проблема…

Ошибка связи.
Уважаемые знатоки, подскажите, может кто сталкивался…
Клиентская часть выдает ошибку &quot;The TCP/IP…

Ошибка связи
Всем привет, ребят, кому не сложно помогите со схемой БД, делаю АИС мастерской по ремонту бытовой…

10

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

Или просто вход А = выход В
вход меняю, выход не изменяется

Миниатюры

Ошибка связи в Codesys
 

0

Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

28037 / 15768 / 981

Регистрация: 15.09.2009

Сообщений: 67,753

Записей в блоге: 78

15.05.2015, 08:29

5

онлайн — логин
онлайн — ран

0

0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 7

15.05.2015, 08:48

 [ТС]

6

Совершенно верно, уважаемый. Но как увидеть изменение значений выходов?
В Owen logic для прогр. реле все изменяется «в онлайне» — изменил состояние входа, видно изменение выхода. А здесь не пойму.. Нужно делать визуализацию переменных, чтобы отследить работу?

0

0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 7

15.05.2015, 08:55

 [ТС]

7

Вот

Миниатюры

Ошибка связи в Codesys
 

0

0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 7

15.05.2015, 08:56

 [ТС]

8

Вход А изменяю, выход В не меняется…

0

Почетный модератор

Эксперт по компьютерным сетямЭксперт Windows

28037 / 15768 / 981

Регистрация: 15.09.2009

Сообщений: 67,753

Записей в блоге: 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 минут
Еще маленький вопрос. В реальном времени отслеживать можно работу?
Имею ввиду задержки TON и TOF, как регулируются в режиме эмуляции?
Я вижу результат на выходе, но как это происходит можно увидеть?
Я выставляю время задержки последовательного пуска двигателей и мне это важно..

0

91 / 86 / 12

Регистрация: 08.08.2013

Сообщений: 667

15.05.2015, 10:06

11

сверху, там где объявляются переменные типа ton1:ton;
ПОСЛЕ того как запустите проект появится маленький плюсик, его надо раскрыть, тем самым вы увидите все внутренние переменные FB.
Если хотите менять время на TON или TOF, то вам необходима создать дополнительную переменную типа TIME и подсоединить её на вход таймера PT, тоесть переменную а не константу.
Пишется значение так «T#100ms» или «T#0,1s» и т.д.
Так же нажимаем F1 в codesys, переходим на вкладку ПОИСК и вбиваем туда интересующий нас блок, там все с примерами.

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

15.05.2015, 10:06

Помогаю со студенческими работами здесь

CodeSYs v 2.3.9.43
здравствуйте форумчане. если возможно, то помогите реализовать в среде CodeSYs v 2.3.9.43 данные…

Codesys
Здравствуйте. Недавно скачал среду программирования Codesys v3.5, и не смог обнаружить под неё(и…

ошибка в связи с базой
Всем привет! вообщем ситуация такая дали готовые коды а базы не было . по запросам я пытался…

WAIT на CODESYS 2.3
Добрый день.
Задача следующая, необходимо после каждого цикла поставить счетчик обратного времени,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

11

  • Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  • Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО и средств взлома — бан без предупреждения.
  • Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать — читать здесь и здесь.

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 15 янв 2017, 17:59

Здравствуйте.Прошу совета.Скачал с сайта «ОВНА» архиав среды CoDeSys .Открыл ,запустил установку, установил, и вижу что после запуска среда как-то она не так «СВЕТИТСЯ-много значков на панели задач не светятся» попытался создать пустой проект и не могу понять что не так? Спасибо.

запустил.png

открыл.png

ффф.png

zpa.png

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло

почётный участник форума
почётный участник форума
Сообщения: 3381
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 4 раза
Поблагодарили: 205 раз

Установка CoDeSys прошу совета

Сообщение

Михайло » 15 янв 2017, 18:09

Кодесис — он такой, многие кнопки неактивны до тех пор, пока что-то не сделаешь, например, пока не выделишь какой-нибудь объект и т.д.

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 15 янв 2017, 18:24

Михайло писал(а): Кодесис — он такой, многие кнопки неактивны до тех пор, пока что-то не сделаешь, например, пока не выделишь какой-нибудь объект и т.д.

не подскажите где этот объект взять?если у меня нет реального ПЛК? И как на нём написать простую программу?Что-то вроде «hello world» Что бы я понял что всё нормально работает? :oops:

Михайло

почётный участник форума
почётный участник форума
Сообщения: 3381
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 4 раза
Поблагодарили: 205 раз

Установка CoDeSys прошу совета

Сообщение

Михайло » 15 янв 2017, 18:42

В принципе не надо реального ПЛК. Здесь есть симулятор, можно тестировать программу без железа.

Попробуйте освоить Кодесис наскоком (нахрапом). Вам нужно добавить новое устройство (ПЛК), затем добавить POU (блок программы). Ну там дальше может Вы найдете для себя некие понятные точки соприкосновения.

Аватара пользователя

megavolt86

эксперт
эксперт
Сообщения: 1148
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 60 раз

Установка CoDeSys прошу совета

Сообщение

megavolt86 » 15 янв 2017, 20:26

Во первых устройство просто так не добавишь…необходимо установить таргет, основная программа (plc_prg) создается первой, выбираете понравившийся язык тип» программа»…
Как таковая кодесис — одна из простейших сред разработки, но все же вы ведь должны понимать, что программированию удаленно не учат.
Для начала составьте для себя план что именно вы хотите сделать в первой программе, а по возникшим вопросам уже и подскажем ;-)

З.ы.: что такое «светятся-много значков не светятся»)))
З.з.ы.: ставьте 2.3 версию она попроще. ИМХО

:ext_secret:

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 17 янв 2017, 07:48

пытался раздобыть методички….кинул клич на помогашках в моём университете..пока не могу раздобыть методички((как-то же студентам дают методику познания этой среды… :ges_hmm:

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 27 янв 2017, 19:04

Таргет.png

RomTom писал(а): http://www.owen.ru/catalog/codesys_v2/51162335 Там разделы Документация и Инструкции и примеры. Сам только по ним когдаь то написал небольшой проект с нулевым знанием среды.

не подскажите где скачать — это PLC Documens????А то я начал видио следовать а уменя нету такой папки :oops: Надо в Сервисное ПО для контроллеров ОВЕН ПЛК 100/150/154??????Вроде скачал установил вот интересует а прошивки надо качать?Или

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Последний раз редактировалось chegevara 27 янв 2017, 19:42, всего редактировалось 1 раз.

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 27 янв 2017, 19:44

Спасибо.Теперь надо установить для RS — 232 я прям сейчас установками занят и вопросы по ходу пишу пока не забываю..)))

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 27 янв 2017, 19:47

Но я скачал из другого места

Таргет.png

Вот там где таргет написанно. Так тоже правильно?вроде всё скачалось как на видео получилось..

У вас нет необходимых прав для просмотра вложений в этом сообщении.

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 27 янв 2017, 20:01

Покачто проблемы возникли вот с этим на видео вот

Таргет.png

АААААА у меня вот так чёт найти не могу :ges_hmm:

Тр.png

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Ryzhij

почётный участник форума
почётный участник форума
Сообщения: 5260
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 391 раз
Поблагодарили: 577 раз

Установка CoDeSys прошу совета

Сообщение

Ryzhij » 27 янв 2017, 21:49

chegevara писал(а): Вроде скачал установил вот интересует а прошивки надо качать?

В трёх соснах…
«Таргет» (целевой файл, файл мишени) — компонент, необходимый универсальной среде разработки на компе, для конфигурации свойств и компиляции разработанной программы в код для работы в среде исполнения внутри аппаратуры (внутри ПЛК).
«Прошивка» (фирмваре, внутреннее ПО) — программное обеспечение аппаратной части (ПЛК), содержащее операционную систему и среду исполнения.
При работе с конкретным железом «таргет» для ПК и «прошивка» для ПЛК — эта та «сладкая парочка», которая позволяет добиться успеха.
Нет таргета — среда разработки не знает, для кого и по какому рецепту «готовить обед».
Прошивка не соответствует таргету — ПЛК не сможет «переварить стряпню».
При отсутствии реального железа и для работы в симуляторе из этой парочки нужен только таргет.
В самом начале разработки проекта надо указать на модель используемого ПЛК. Список предлагаемых моделей повторяет список установленных и подключенных к среде разработки таргетов.
Удачи!

—————————————————
«У человека в душе дыра размером с Бога, и каждый заполняет её как может». Жан-Поль Сартр

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 28 янв 2017, 10:26

Ryzhij писал(а):

chegevara писал(а): Вроде скачал установил вот интересует а прошивки надо качать?

В трёх соснах…
«Таргет» (целевой файл, файл мишени) — компонент, необходимый универсальной среде разработки на компе, для конфигурации свойств и компиляции разработанной программы в код для работы в среде исполнения внутри аппаратуры (внутри ПЛК).
«Прошивка» (фирмваре, внутреннее ПО) — программное обеспечение аппаратной части (ПЛК), содержащее операционную систему и среду исполнения.
При работе с конкретным железом «таргет» для ПК и «прошивка» для ПЛК — эта та «сладкая парочка», которая позволяет добиться успеха.
Нет таргета — среда разработки не знает, для кого и по какому рецепту «готовить обед».
Прошивка не соответствует таргету — ПЛК не сможет «переварить стряпню».
При отсутствии реального железа и для работы в симуляторе из этой парочки нужен только таргет.
В самом начале разработки проекта надо указать на модель используемого ПЛК. Список предлагаемых моделей повторяет список установленных и подключенных к среде разработки таргетов.
Удачи!

Спасибо.Я по виде на ютубу вреде уже простую програмку создал…иду дальше по пути)))

Аватара пользователя

megavolt86

эксперт
эксперт
Сообщения: 1148
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 60 раз

Установка CoDeSys прошу совета

Сообщение

megavolt86 » 28 янв 2017, 12:22

chegevara писал(а): Прям застрял

В добавлении интерфейса? Создаете новый и всеее…кнопочка «new» вам в этом поможет.

Интернет и эзернет это какбэ разные весчи. Эзернет это транспорт по которому происходит связь с плк. Вам же для эмулятора достаточно в поле адрес ввести: localhost или 127.0.0.1.
Далее производите загрузку в «виртуальный»плк и отлаживаете.

:ext_secret:

chegevara

осмотрелся
осмотрелся
Сообщения: 149
Зарегистрирован: 12 фев 2016, 10:53
Имя: Иван Иванович Чернов
Страна: Россия
город/регион: Томск
Благодарил (а): 54 раза
Поблагодарили: 1 раз

Установка CoDeSys прошу совета

Сообщение

chegevara » 28 янв 2017, 13:49

megavolt86 писал(а):

chegevara писал(а): Прям застрял

В добавлении интерфейса? Создаете новый и всеее…кнопочка «new» вам в этом поможет.

Интернет и эзернет это какбэ разные весчи. Эзернет это транспорт по которому происходит связь с плк. Вам же для эмулятора достаточно в поле адрес ввести: localhost или 127.0.0.1.
Далее производите загрузку в «виртуальный»плк и отлаживаете.

Спасибо. Изернет у меня точно ассоциировался с интернетом.

Вернуться в «Вопросы от студентов»


Перейти

  • Работа форума
  • База знаний (Knowledge Exchange)
  • ↳   Eplan Electric P8
  • ↳   Общий F.A.Q.
  • ↳   Общие вопросы
  • ↳   Новости
  • ↳   Ошибки
  • ↳   Проект
  • ↳   Изделия
  • ↳   Устройства
  • ↳   Соединения
  • ↳   Кабели
  • ↳   Клеммы
  • ↳   ПЛК
  • ↳   Компоновка 2D
  • ↳   Макросы
  • ↳   Eplan API
  • ↳   Сценарии (Только готовые решения)
  • ↳   Внешняя обработка
  • ↳   ProPanel
  • ↳   Инструкции ProPanel (Только готовые решения)
  • ↳   Прочие направления Eplan
  • ↳   FieldSys (Топология)
  • ↳   Preplanning
  • ↳   Harness proD
  • ↳   EEC One
  • ↳   Advantech
  • ↳   F.A.Q., Инструкции
  • ↳   Allen Bradley
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Операторские панели
  • ↳   B&R Automation
  • ↳   F.A.Q.
  • ↳   Danfoss
  • ↳   DEIF A/S
  • ↳   Общие вопросы
  • ↳   UNI-LINE
  • ↳   MULTI-LINE
  • ↳   MULTI-LINE 300
  • ↳   Emerson
  • ↳   Общие вопросы
  • ↳   КИП и регуляторы
  • ↳   DeltaV
  • ↳   ОВЕН
  • ↳   Прософт-Системы
  • ↳   Общие вопросы
  • ↳   ПЛК REGUL
  • ↳   Schneider Electric
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Панели оператора
  • ↳   SCADA
  • ↳   Электротехника
  • ↳   Приводная техника
  • ↳   SIEMENS
  • ↳   Общие вопросы
  • ↳   LOGO!
  • ↳   ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
  • ↳   Simatic Step7
  • ↳   Simatic TIA Portal
  • ↳   Simatic PCS 7
  • ↳   Операторские панели
  • ↳   WinCC
  • ↳   Приводная техника (Sinamics, Micromaster, Masterdrive, Simoreg, Simotics)
  • ↳   SmartGen
  • ↳   Общие вопросы
  • ↳   Промышленные (береговые) контроллеры
  • ↳   Морские контроллеры и устройства
  • ↳   WEINTEK (операторские панели)
  • ↳   F.A.Q., Инструкции
  • ↳   Архив
  • ↳   Микроконтроллеры и электроника
  • ↳   Arduino
  • ↳   Другие микроконтроллеры
  • ↳   Электроника
  • Общие вопросы АСУТП
  • ↳   Общие вопросы
  • ↳   Вопросы от студентов
  • ↳   Литература
  • ↳   Новости и отчётность
  • ↳   Нормативы, ГОСТы, стандарты
  • ↳   Информационная безопасность
  • ↳   Проектирование и САПР
  • ↳   Системная интеграция
  • ↳   Разбор полетов
  • ↳   Работа
  • ↳   Заготовки для базы знаний
  • ↳   Производство и технология
  • ↳   MES — Системы автоматизации управления производством
  • ↳   Метрология, КИП и датчики
  • ↳   Исполнительные устройства, регуляторы
  • ↳   Средний уровень автоматизации (управляющий)
  • ↳   Алгоритмы
  • ↳   Операторские панели
  • ↳   Верхний уровень автоматизации (отображение)
  • ↳   GE iFix
  • ↳   Wonderware Intouch
  • ↳   MasterScada
  • ↳   SCADA+
  • ↳   Интерфейсы, протоколы, связь
  • ↳   Радиосвязь
  • ↳   Полезное ПО
  • ↳   Электротехника, энергетика и электропривод
  • ↳   Генераторы и электростанции
  • ↳   Теплотехника
  • ↳   Подбор аналогов
  • F.A.Q. (краткая выжимка из некоторых сообщений форума)
  • ↳   Электротехника и электроэнергетика
  • ↳   Документация
  • ↳   Общие вопросы
  • ↳   Оформление документации
  • ↳   Нижний уровень автоматизации
  • ↳   Средний уровень автоматизации
  • ↳   Верхний уровень автоматизации
  • ↳   Интерфейсы, протоколы, связь
  • ↳   Функциональная и промышленная безопасность
  • ↳   Электротехника и энергетика
  • ↳   Автоматизация предприятия
  • ↳   Описания средств автоматизации
  • ↳   F.A.Q. по программируемым логическим контроллерам (PLC)
  • ↳   Обсуждение F.A.Q. по PLC
  • ↳   F.A.Q. по выбору PLC
  • ↳   F.A.Q. по аппаратной части PLC
  • ↳   F.A.Q. по языкам программирования
  • ↳   F.A.Q. по структуре программ
  • ↳   F.A.Q. по взаимодействию PLC с HMI
  • О жизни
  • ↳   Для дома, для семьи
  • ↳   Комната смеха
  • ↳   Электродвижение

Введение

За время работы инженером-программистом ПЛК очень часто в ходе разработки находились не самые очевидные, но довольно простые и красивые решения как типовых, так и специализированных задач. В этой статье хочу поделиться опытом и рассказать как сделать разработку под ПЛК приятнее и эффективнее.

Об опыте автора

Опыт работы с ПЛК: 3 года.

Разработка под ПЛК: Beckhoff CX series, SE Modicon M221, WAGO 750 series.

Среды разработки: TwinCAT 3, EcoStruxure Machine Expert-Basic, CODESYS V2.3.

Основная часть опыта приходится на ST+TwinCAT 3, который базируется на CODESYS и IEC 61131.

Статью решил написать так как покидаю OT и перехожу в мир IT. Хочется поделится опытом, чтобы эти 3 года не прошли даром.

Среда разработки

Если часто приходиться комментировать части кода — то узнайте какое сочетание клавиш позволит вам это сделать, это сэкономит много времени. В TwinCAT XAE Shell для комментирования выделенного кода: Ctrl+K+C и Ctrl+K+U для расскомментирования.

Обезвредьте кнопку Stop, чтобы случайно не остановить ПЛК, иногда такое случайное нажатие может привести к нежелательным последствиям. В TwinCAT XAE Shell можно выбрать какие кнопки выводить на toolbar. После локальной отладки программы рекомендую скрыть кнопку остановки ПЛК.

Structured Text

STRING vs WSTRING

В TwinCAT 3 есть возможность использовать Unicode строки. Они могут пригодиться, если необходимо передовать специфические символы, но без необходимости лучше не использовать WSTRING.

STRING

WSTRING

Format

ASCII

Unicode

Size of character

BYTE (1 byte)

WORD (2 bytes)

Terminator

Null character

0

Date and time

Почти в любом проекте необходимо знать точное время, вычислять временные интервалы. Часто работа с временем и датами доставляет много проблем и боли. Для себя я нашёл решение, уверен, оно упростит многим жизнь.

F_GetSystemTime() (Функция из модуля Tc2_System)

Эта функция может быть использована для считывания метки времени операционной системы. Временная метка представляет собой 64-разрядное целое значение с точностью до 100 нс. Помимо прочего, его можно использовать для синхронизации задач или измерения времени. Одна единица соответствует 100 нс. Время представляет собой количество интервалов в 100 нс с 1 января 1601 года.

Хранятся отметки в переменных типа ULINT. Зная всё это мы можем без труда рассчитывать интервалы времени с точностью до 100нс! Нужно просто найти разность между отметками.

К сожалению, стандартных функций для преобразования отметки в тип DATETYPE я не нашёл, поэтому пришлось реализовать такую функцию самостоятельно:

(*
:Description: Convert time since 1 January 1601 in 100 ns to DATE_AND_TIME  (Преобразует время с 1 Января 1601 года в 100 нс в DATE_AND_TIME)
:Usability: Convert timestamp to datetime

:Note: check then nSystemType more then 01.01.1970 00:00:00

Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)

FUNCTION F_SystemTimeToDT : DT
VAR CONSTANT
    SECONDS_BETWEEN_1601_AND_1970 : ULINT := 11_644_473_600;
END_VAR
VAR_INPUT
    nSystemTime : ULINT; // One unit is 100 ns since 1 January 1601
END_VAR
VAR
    nSeconds : ULINT;
END_VAR
nSeconds := (nSystemTime / 10_000_000) - SECONDS_BETWEEN_1601_AND_1970;
F_SystemTimeToDT := ULINT_TO_DT(nSeconds);

Как видно из кода, сложность заключалась в расчёте интервала между начальным отсчётом системного времени ПЛК и типа DATETIME.

Функция для получения текущей даты/времени в формате DATETIME

(*
:Description: Return datetime now in format DATE_AND_TIME (DT)
:Usability: For getting datetime now in format DATE_AND_TIME (DT)

Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)

FUNCTION F_DateTimeNow : DT
F_DateTimeNow := F_SystemTimeToDT(F_GetSystemTime());

Функция для получения прошедшего времени в формате TIME

(*
:Description: Time passed since tStart (Прошло времени c tStart)
:Usability: If need check how long time past

Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)

FUNCTION F_TimePassed : TIME
VAR_INPUT
    tStart: ULINT; (* Время начала в 100нс от 01.01.1601,
                    текущее время в данном формате предоставляет функция F_GetSystemTime()*)
END_VAR
F_TimePassed := ULINT_TO_TIME((F_GetSystemTime() - tStart) / 10000);

Числовые константы

Большинство документаций по обмену по промышленным протоколам содержит шестнадцатиричные адреса регистров, номера функций, обозначения комманд и т.д. Для битовых операций необходимо представлять числа в двоичном виде. Чтобы эффективно решать задачи, где приходиться отходить от десятичной системы счисления необходимо знать о возможности задания константных чисел заданного типа в заданной системе счисления.

В общем виде задание числовой константы выглядит так:

{datetype}#{numeral system}#value 

Пример: DINT#16#A1

Числовые значения могут быть двоичными числами, восьмеричными числами, десятичными числами или шестнадцатеричными числами. Если целое значение не является десятичным числом, его основание должно быть записано перед целочисленной константой, за которой следует символ хэша (#). Для шестнадцатеричных чисел цифры для чисел от 10 до 15, как обычно, представлены буквами A-F.

Типом этих числовых значений может быть BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL или LREAL.

ANY type

В языках программирования со статической типизацией довольно сложно делать универсальные функции/функциональные блоки. Когда мне поставили задачу собирать и анализировать различные данные, я решил, что копировать функциональные блоки и изменять в них только тип входного значения — не лучший вариант. Тогда появилась идея приводить все типы к одному и по объективным причинам это тип LREAL.

При реализации функции или метода вы можете объявлять входные данные (VAR_INPUT) как переменные с типом данных ANY. Далее вы можете получить указатель на значение, тип данных и размер переданной на этот вход переменной.

Структура типа данных ANY

TYPE AnyType :
STRUCT
    // the type of the actual parameter
    typeclass : __SYSTEM.TYPE_CLASS ;
    // the pointer to the actual parameter
    pvalue : POINTER TO BYTE;
    // the size of the data, to which the pointer points
    diSize : DINT;
END_STRUCT
END_TYPE

Кроме типа ANY существуют также дочерние типы:

Дерево наследования типов

Дерево наследования типов

Хочу обратить внимание что на вход типа ANY не может быть подана константа, поэтому в некоторых случаях придётся создавать дополнительную переменную.

Зная про этот тип мне удалось реализовать функцию, которая приводила данные разных типов к LREAL.

Функция по преобразованию числовых типов в LREAL

(*
:Description: Convert ANY_NUM and ANY_BIT to LREAL
:Usability: For development universal functions

:Note:
Valid types is:
ANY_NUM:
    - ANY_REAL: REAL, LREAL
    - ANY_INT: USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT
ANY_BIT:
    - BYTE, WORD, DWORD, LWORD

Version history:
Kozhemaykin E. A. | Creating | 01.06.2021;
Kozhemaykin E. A. | {CLASS_TO_LREAL -> TO_LREAL | 03.11.2021;
 
*)

FUNCTION F_AnyNumToLREAL : LREAL
VAR_INPUT
    AnyNum: ANY; // Variable for converting, need have address
END_VAR
VAR
    pReal : POINTER TO REAL;   // pointer to a variable of the type REAL
    pLReal : POINTER TO LREAL;  // pointer to a variable of the type LREAL
    
    pUSInt : POINTER TO USINT;   // pointer to a variable of the type USInt
   	pUInt : POINTER TO UINT;  // pointer to a variable of the type UInt
   	pUDInt : POINTER TO UDINT;  // pointer to a variable of the type UDInt
    pULInt : POINTER TO ULINT;   // pointer to a variable of the type ULInt
    
   	pSInt : POINTER TO SINT;  // pointer to a variable of the type SInt
    pInt : POINTER TO INT;   // pointer to a variable of the type Int
   	pDInt : POINTER TO DINT;  // pointer to a variable of the type DInt
    pLInt : POINTER TO LINT;   // pointer to a variable of the type LInt
    
    pByte : POINTER TO BYTE;  // pointer to a variable of the type Byte
    pWord : POINTER TO WORD;   // pointer to a variable of the type Word
   	pDWord : POINTER TO DWORD;  // pointer to a variable of the type DWord
    pLWord : POINTER TO LWORD;   // pointer to a variable of the type LWord

END_VAR
VAR_OUTPUT
    OrginalType: __SYSTEM.TYPE_CLASS;
    bInvalidType: BOOL := FALSE;
END_VAR
// Real numbers
IF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_REAL) THEN
    pReal := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_REAL;
    F_AnyNumToLREAL := TO_LREAL(pReal^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LREAL) THEN
    pLReal := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LREAL;
    F_AnyNumToLREAL := pLReal^;

// Bit's numbers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_BYTE) THEN
    pByte := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_BYTE;
    F_AnyNumToLREAL := TO_LREAL(pByte^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_WORD) THEN
    pWord := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_WORD;
    F_AnyNumToLREAL := TO_LREAL(pWord^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DWORD) THEN
    pDWord := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DWORD;
    F_AnyNumToLREAL := TO_LREAL(pDWord^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LWORD) THEN
    pLWord := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LWORD;
    F_AnyNumToLREAL := TO_LREAL(pLWord^);

// Unsigned integers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_USINT) THEN
    pUSInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_USINT;
    F_AnyNumToLREAL := TO_LREAL(pUSInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UINT) THEN
    pUInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UINT;
    F_AnyNumToLREAL := TO_LREAL(pUInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UDINT) THEN
    pUDInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UDINT;
    F_AnyNumToLREAL := TO_LREAL(pUDInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_ULINT) THEN
    pULInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_ULINT;
    F_AnyNumToLREAL := TO_LREAL(pULInt^);

// Signed integers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_SINT) THEN
    pSInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_SINT;
    F_AnyNumToLREAL := TO_LREAL(pSInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_INT) THEN
    pInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_INT;
    F_AnyNumToLREAL := TO_LREAL(pInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DINT) THEN
    pDInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DINT;
    F_AnyNumToLREAL := TO_LREAL(pDInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LINT) THEN
    pLInt := AnyNum.pValue;
    OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LINT;
    F_AnyNumToLREAL := TO_LREAL(pLInt^);
    
//Invalid type
ELSE
    F_AnyNumToLREAL := 0;
    bInvalidType := TRUE;
END_IF

REFERENCE

Все знают про указатели (POINTER) и связанные с ними проблемы, так вот многие из них можно избежать, если использовать ссылки(REFERENCE):

  • Ссылки проще в использовании: ссылку не нужно разыменовывать (с помощью ^), чтобы получить доступ к содержимому объекта, на который ссылается ссылка.

  • Более чистый синтаксис для передачи значений: Если вход является ссылкой, то нет необходимости писать ADDR(value).

  • В отличие от указателей, для ссылок компилятор проверяет типы данных при передаче значений.

Стоит отметить, что не всегда ссылкой можно заменить указатель, но когда это возможно, то сделайте это.

Pragmas

Инструкции pragma влияют на свойства переменных, относящихся к процессу компиляции или предкомпиляции. Не поленитесь просмотреть возможности каждого типа pragmas — обязательно найдёте что-то полезное для своего проекта.

Типы pragmas:

  • Message pragmas

  • Attribute pragmas

  • Conditional pragmas

  • Region pragma

  • Pragmas for warning suppression

Union

Union — тип структуры, который позволяет представлять значение в разных типах данных. Данная структура полезна при отладке кода а также при обработке входных значений.

В случае, если нужно обращаться к битам, то это можно сделать через точку. Но у этого способа я вижу огромный недостаток: нет возможности итерироваться по битам. Если нужно разобрать переменную на байты или по 16-бит или другим сложным образом, то вместо написания сложных функций попробуйте сначала сделать это с помощью Union.

SEL, MIN, MAX, LIMIT

Многим программистам ПЛК часто не хватает синтаксического сахара, которого много в других языках программирования. На примере функции SEL хочется показать, что возможно этот «сахар» в виде тернарного оператора не особо нужен.

Если вам нужно выбрать значение в зависимости от условия, выможете сделать это в одну строку:

value := SEL(condition, if false, if true);

Если вам нужно ограничить значение сверху и/или снизу, это также можно сделать в одну строку:

value := MIN(value, max_limit);
value := MAX(value, min_limit);
or
value := LIMIT(min_limit, value, max_limit); 

Многие функции и операторы, которых нам не хватает уже написаны — нужно только поискать.

Заключение

В статье описано,то на что лично мне захотелось обратить внимание (ООП решил не трогать). Буду рад если мой опыт принесёт кому-то пользу. Попрошу при использовании предоставленных функций оставлять продолжать version history.

Делитесь своим опытом в комментариях. Чтобы быть в курсе событий и общаться с коллегами предлагаю перейти по ссылкам: тг-канал proPLC, тг-чат proPLC.

Click here follow the steps to fix Codesys Error 3611 and related errors.

Instructions

 

To Fix (Codesys Error 3611) error you need to
follow the steps below:

Step 1:

 
Download
(Codesys Error 3611) Repair Tool
   

Step 2:

 
Click the «Scan» button
   

Step 3:

 
Click ‘Fix All‘ and you’re done!
 

Compatibility:
Windows 7, 8, Vista, XP

Download Size: 6MB
Requirements: 300 MHz Processor, 256 MB Ram, 22 MB HDD

Limitations:
This download is a free evaluation version. To unlock all features and tools, a purchase is required.

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-09-16 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.)

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка 38 при отправке смс теле2 как исправить
  • Ошибка 361003 hik connect
  • Ошибка 3802 ман тгс
  • Ошибка 380 vba excel
  • Ошибка 3610 play machine

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии