1-RU-75044-1.33

Руководство пользователя

Введение

В настоящем руководстве изложены основы процедуры создания пользовательской программы и настройки для программируемых логических контроллеров ПЛК110 [М02] и ПЛК160 [М02] (далее по тексту именуемых «контроллер» или «ПЛК») c помощью ПО CODESYS v.2.3 (далее по тексту – CODESYS).

Полная информация о создании пользовательской программы содержится в документе «Руководство пользователя по программированию ПЛК в CoDeSys V2.3», доступном на сайте owen.ru в разделе Codesys V2.

При первом прочтении настоящего руководства рекомендуется сначала ознакомиться с разделом и предыдущими. В дальнейшем рекомендуется обращаться к последующим разделам документа.

Информация по установке, эксплуатации, техническому обслуживанию и устранению ошибок работы контроллеров содержится в руководствах по эксплуатации на соответствующие ПЛК, доступные на сайте owen.ru.

Персонал, программирующий и настраивающий ПЛК, обязан владеть:

  • приемами работы с графическим интерфейсом операционной системы и ПО;

  • методикой программирования ПЛК с использованием CODESYS в объеме, изложенном в документе «Руководство пользователя по программированию ПЛК в CoDeSys V2.3»;

  • методикой эксплуатации ПЛК в объеме, изложенном в руководстве по эксплуатации на соответствующий ПЛК.

Предупреждающие сообщения

В данном руководстве применяются следующие предупреждения:

Внимание
Ключевое слово ВНИМАНИЕ сообщает о критически важной информации, на которую рекомендуется обратить особое внимание.
Предупреждение
Ключевое слово ПРЕДУПРЕЖДЕНИЕ сообщает о важной информации, на которую рекомендуется обратить внимание.
Примечание
Ключевое слово ПРИМЕЧАНИЕ обращает внимание на полезные советы и рекомендации, а также информацию для эффективной и безаварийной работы оборудования.

Используемые термины и аббревиатуры

  • CODESYS (Controller Development System) – программное обеспечение, специализированная среда программирования логических контроллеров. Торговой марка компании 3S-Smart Software Solutions GmbH.
  • OPC (OLE for Process Control) – открытый для использования набор спецификаций, разработанный организацией OPC Foundation на основе технологий Microsoft COM/DCOM.

  • OPC DA – спецификация Data Access (DA) OPC, которая позволяет читать и записывать данные в прибор, организовывать подписку на данные и передавать клиенту уведомление об обновлении данных.

  • Retain-память – энергонезависимая память для хранения значений Retain-переменных пользовательской программы.

  • Retain-переменная – переменная пользовательской программы, значение которой сохраняется в случае выключения питания контроллера.

  • SCADA (Supervisory Control And Data Acquisition) – программное обеспечение для получения и отображения данных в удобном для пользователя виде, с возможностью управления.

  • ЛКМ/ПКМ – левая/правая кнопка мыши.

  • ПК – персональный компьютер.

  • ПЛК – программируемый логический контроллер.

  • ПО – программное обеспечение.

  • Проект – пользовательская программа ПЛК, разрабатываемая в CODESYS. После отладки и загрузки в контроллер обеспечивает правильную работу контроллера.

  • ОЗУ – оперативное запоминающее устройство.

  • Файл настроек целевой платформы (target-файл) – файл, поставляемый производителем ПЛК и описывающий аппаратные и программные особенности конкретного ПЛК. Файл обеспечивает корректное взаимодействие CODESYS и ПЛК.

  • ШИМ – широтно-импульсная модуляция.

Примечание
Терминология, используемая в интерфейсах и документации CODESYS, специфична и не всегда соответствует требованиям стандартов ЕСПД. Например, режимы редактирования текстов программ именуются «редакторы». Режимы редактирования объектов ПО, отнесенных в интерфейсе CODESYS к «ресурсам», именуются «ресурсами» (например, режим редактирования конфигурации ПЛК – «ресурсом Конфигурация ПЛК») и т. п. Описания режимов работы ПО проиллюстрированы и достаточно подробны, чтобы различие в терминологии не могло повлиять на понимание текста.

Требования к ПК

Минимальные системные требования для ПК:

  • Pentium IV, 2 ГГц;

  • 512 Мб ОЗУ (рекомендуется 1024 Мб);

  • 500 Mб жесткий диск;

  • CD-ROM привод;

  • интерфейсы RS-232, Ethernet или USB для подключения ПЛК.

  • ОС Windows XP, 7 (Service Pack 1 или выше), 8, 10 (32/64 Bit).

Для программирования ПЛК подключается к ПК с помощью кабеля КС14 из комплекта поставки ПЛК (про подключение с помощью других интерфейсов см. раздел).

Подключение к ПК описывается в руководстве по эксплуатации на соответствующий контроллер.

Ограничение контроллера по размеру памяти

Связь ПЛК с внешними устройствами (модулями ввода-вывода и т. д.) производится по сети через специальную область памяти ПЛК – память ввода-вывода.

Размер памяти ввода-вывода определяется типом лицензии CODESYS и программными ограничениями контроллера. Тип лицензии указывается в маркировке конкретного ПЛК в последнем знаке обозначения:

  • L – объем памяти ввода-вывода контроллера ограничен 360 байтами*: 122 байта отводятся для памяти ввода (%I), 234 байта отводятся для памяти вывода (%Q) и оставшиеся 4 байта – под специальную память (%М).

  • M – ограничений со стороны лицензии в размере памяти нет, но есть программное ограничение в 100 Кбайт. По умолчанию суммарный объем памяти ввода (%I) и вывода (%Q) установлен равным 16 Кбайт. Этого достаточно для большинства задач, но этот объем может быть увеличен до 32 Кбайт (на вкладке «Распределение памяти» окна «Настройки целевой платформы» в строках «Входы» и «Выходы», см. рисунок).

Примечание
* Ограничение до 360 байт распространяется только на размер памяти области ввода-вывода, количество внутренних переменных программы контроллера ограничивается только количеством свободной оперативной памяти.
Пример

Контроллер ПЛК110-24.60.Р-L [M02] имеет ограничение объема памяти ввода-вывода размером 360 байт.

Контроллер ПЛК110-24.60.Р-M [M02] имеет ограничение объема памяти ввода-вывода 100 Кбайт.

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

Задание конфигурации памяти ввода-вывода описано в разделе.

Порядок программирования

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

Порядок программирования и настройки ПЛК:

  1. Установка CODESYS (см. раздел).

  2. Выбор контроллера и установка требуемого файла настроек целевой платформы – target-файла (см. раздел).

  3. Создание и отладка пользовательского проекта в CODESYS.

  4. Установка связи ПК с контроллером. Во время установки связи CODESYS автоматически компилирует пользовательский проект и предлагает загрузку скомпилированного кода в ОЗУ контроллера (см. раздел).

  5. Запуск выполнения пользовательского проекта, проверка его работоспособности и, в случае необходимости, отладка (см. раздел).

  6. Если пользовательский проект работает корректно, то сохранение в энергонезависимой Flash-памяти контроллера для последующей загрузки и выполнения при включении питания ПЛК. В противном случае возврат к шагу 5 (в процессе отладки операции могут выполняться многократно).

Установка CODESYS

Примечание
CODESYS распространяется бесплатно и не требует лицензирования (за исключением отдельных необязательных приложений).

Для установки CODESYS на ПК следует:

  1. Скачать установочный exe-файл CODESYS со страницы CODESYS V2 на сайте owen.ru.

  2. Запустить установочный exe-файл CODESYS.

  3. Следовать инструкциям мастера установки.

    Примечание
    Во время установки CODESYS следует обратить внимание, что язык работы ПО в процессе установки выбирается дважды: при первом выборе русский язык отсутствует в списке доступных языков, при втором – присутствует.
    Graphic
    Окно установки CODESYS

Установка настроек целевой платформы (target-файла)

Исходная информация о конфигурации ПЛК содержится в предварительных настройках целевой платформы (target-файле) контроллера. Настройки целевой платформы поставляются в виде набора файлов, основным (указываемым пользователем в процессе установки настроек) среди которых является target-файл, имеющий расширение *.tnf, (Target Information).

Target-файл для контроллеров можно скачать на странице CODESYS V2 на сайте owen.ru.

Target-файл содержит информацию о ресурсах конкретного ПЛК (о количестве и типах входов и выходов, интерфейсов, памяти, дополнительных устройств и т. д.), с которыми работает CODESYS. Чтобы контроллер стал доступен для разработки пользовательских программ в конкретной системе с установленным CODESYS, требуется в этой системе установить target-файл.

Примечание
Компания «ОВЕН» совершенствует производимые контроллеры и ПО и периодически предлагает пользователю обновленные версии встроенного ПО микроконтроллера и target-файлов. Подробнее об обновлении встроенного ПО микроконтроллера и target-файлов см. раздел.

Target-файлы для разных версий встроенного ПО одной и той же модели контроллера могут быть установлены в один и тот же экземпляр CODESYS. Названия target-файлов всегда различаются, например, указанными в них номерами версий. Пользовательская программа, созданная с использованием target-файла для встроенного ПО одной версии может оказаться несовместимым со встроенным ПО другой версии. Для переноса проекта между контроллерами с различными версиями встроенного ПО см. приложение Перенос проекта между несовместимыми версиями встроенного ПО контроллера.

Примечание
Следует обратить внимание, что имя target-файла не полностью совпадает с наименованием контроллера: в наименовании контроллера использована кириллица (например, ПЛК110), в названии target-файла – латиница (например, PLC110).

Способ 1

Настройки целевой платформы (target-файл) устанавливаются с помощью утилиты «InstallTarget». Утилита представляет собой компонент CODESYS и устанавливается на ПК совместно с CODESYS.

Для установки target-файла следует:

  1. На ПК выбрать команду Пуск → Программы → 3S Software → InstallTarget. В поле «Installed Targets» (Установленные файлы) отображается перечень ранее установленных target-файлов.

  2. В открывшемся окне утилиты (см. рисунок) нажать кнопку «Open…» (Открыть).

    Graphic
    Окно утилиты «InstallTarget»
  3. В открывшемся окне выбора файла указать путь к target-файлу для требуемого контроллера. В поле «Installation directory» (Путь к файлу) отобразится выбранный путь к папке, в поле «Possible Targets» (Доступные файлы) отобразится список доступных target-файлов.

  4. Выделить требуемый target-файл и нажать кнопку «Install» (Установить). Target-файл будет инсталлирован на ПК и отобразится в поле «Installed Targets».

    Graphic
    Установленный target-файл
    Примечание
    В случае необходимости (например, при ошибке в выборе файла) установленный target-файл можно удалить. Для деинсталляции следует выделить target-файл в поле «Installed Targets» и нажать кнопку «Remove» (Удалить). Файл будет удален и перестанет отображаться в списке в поле «Installed Targets».
  5. После завершения инсталляции требуемого target-файла нажать кнопку «Close» (Закрыть). Окно утилиты «InstallTarget» закроется.

Способ 2

Target-файл устанавливается с помощью специализированной утилиты «InstallTarget.bat», которая входит в архив файлов настроек целевой платформы.

Для установки target-файла следует:

  1. Открыть директорию архива файлов настроек целевой платформы.

  2. Запустить файл «InstallTarget.bat».

  3. Дождатся завершения установки.

  4. Перезагрузить CODESYS.

Работа с CODESYS

Для запуска CODESYS следует вызвать команду Пуск → Программы → 3S Software → CoDeSys V2.3. Откроется главное окно CODESYS.

Graphic
Главное окно CODESYS

Создание проекта

Для создания нового проекта (пользовательской программы) следует:

  1. В главном окне ПО CODESYS вызвать команду Файл → Создать в главного меню или нажать кнопку Graphic на панели инструментов.

  2. В открывшемся окне «Настройки целевой платформы» (Target Settings) нажатием на кнопку у правого края поля «Конфигурация» (Configuration) раскрыть список предварительно установленных на ПК target-файлов (см. раздел). В списке выделить требуемый файл и щелкнуть на его названии ЛКМ.

    Graphic
    Окно «Настройки целевой платформы» (Target Setting)
    Graphic
    Выбор конфигурации
  3. В открывшихся вкладках окна «Настройки целевой платформы» (Target Setting) отображаются установленные производителем значения параметров целевой платформы. Как правило, установленные производителем значения параметров не требуют изменения. Исключение могут составить размеры сохраняемой при отключении питания retain-памяти и памяти входов-выходов. Объем retain-памяти по умолчанию установлен «16#4000», что соответствует 16 кбайт.

    Примечание
    В предыдущей версии ПО контроллера для увеличения размера retain-памяти требовалось перейти на вкладку «Распределение памяти» (Memory Layout) окна «Настройки целевой платформы» (Target Setting) и исправить значение в строке Retain («Энергонез.»): значение «16#1000» заменить на «16#4000», в настоящей же версии это значение по умолчанию установлено «16#4000».
  4. Для увеличения размера памяти входов-выходов (%I и %Q) следует перейти на вкладку «Распределение памяти» (Memory Layout) окна «Настройки целевой платформы» (Target Setting) и исправить значение в строках «Входы»/«Выходы»: значение «16#1FFF» заменить на «16#2FFF».

    Graphic
    Увеличение размера памяти входов-выходов на вкладке «Распределение памяти» (Memory Layout)
  5. Нажать кнопку «ОК» окна «Настройки целевой платформы» (Target Setting).

  6. В открывшемся окне «Новый программный компонент» (New POU) в поле «Имя нового POU» (Name of new POU) отображается заданное по умолчанию имя новой главной программы проекта (PLC_PRG) – его не следует изменять. В группе переключателей «Тип POU » (Type of POU) отображается заданный по умолчанию тип новой главной программы проекта Программа (Program) – его также не следует изменять.

    Graphic
    Окно «Новый программный компонент» (New POU)
  7. В группе переключателей «Язык реализации» (Language of the POU) следует выбрать требуемый язык программирования (о языках программирования см. раздел). В правой верхней области главного окна программы откроется окно редактора, в котором создается программа, исполняемая контроллером. В зависимости от выбранного языка программирования это окно выглядит по-разному (на рисунке ниже пример для языка программирования LD). В верхней части окна отображается область объявления переменных – «Редактор объявлений», в нижней – область редактора собственно программы.

    Graphic
    Главное окно проекта

    Одновременно главное меню программы, команда «Вставить» (Insert), и контекстное меню области редактирования программы дополняются командами, специфичными для выбранного языка. Панель инструментов дополняется локальной панелью, содержащей кнопки, соответствующие этим командам.

    Graphic
    Контекстное меню области редактирования программы на языке программирования LD

Основные элементы интерфейса

Graphic
Основные элементы интерфейса

Главное окно CODESYS содержит следующие элементы:

  1. Главное меню – перечень доступных групп команд ПО. В различных режимах работы группы команд главного меню дополняются специализированными командами.

  2. Панель инструментов – кнопки, дублирующие часто используемые команды программы. В различных режимах работы панель инструментов дополняется специализированными панелями.

    Примечание
    Значение команд главного меню и панели инструментов, а также горячие клавиши для вызова см. в разделе.
  3. Организатор объектов – переключатель групп режимов работы ПО (см. раздел).

  4. Рабочая область – служит для отображения окон режимов работы, кода и элементов проекта.

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

  6. Окно режима работы – служит для изменения параметров проекта.

  7. Строка статуса – содержит информацию о текущем состоянии проекта (см. раздел).

Области главного окна разделены линиями – разделителями, которые могут перемещаться с помощью мыши, что позволяет подобрать оптимальное сочетание размеров областей.

Организатор объектов

Организатор объектов расположен в левой части главного окна программы (см. рисунок) и предназначен для вызова режимов работы ПО. Организатор объектов включает вкладки:

  • «POU»;

  • «Типы данных»;

  • «Визуализации»;

  • «Ресурсы».

В пределах вкладок отображаются иерархические списки соответствующих объектов проекта (например, режимов работы ПО или объектов в пределах одного и того же режима).

Для перехода на требуемую вкладку следует щелкнуть ЛКМ на наименовании требуемой вкладки (в нижней части организатора объектов). Для перехода к требуемому объекту в пределах выбранной вкладки следует щелкнуть ЛКМ на наименовании требуемого объекта или перейти на требуемую строку с помощью клавиш со стрелками. Для открытия окна режима (или окна одного из объектов режима) следует дважды щелкнуть ЛКМ на наименовании требуемого объекта или, выбрав наименование требуемого объекта, нажать клавишу Enter. Окно режима (или окно одного из объектов режима) откроется в рабочей области главного окна.

«POU»

На вкладке «POU» отображается иерархический список программных компонентов (POU) проекта: функциональных блоков, функций и программ. Отдельные POU могут включать действия (подпрограммы). Каждый программный компонент состоит из раздела объявлений и кода. Для написания всего кода POU используется только один из поддерживаемых CODESYS языков программирования.

«Типы данных»

На вкладке «Типы данных» отображается иерархический список типов данных, используемых в проекте. Кроме стандартных типов данных можно использовать определяемые пользователем типы данных: структуры, перечисления и ссылки.

«Визуализации»

На вкладке «Визуализации» отображается иерархический список элементов визуализации пользовательской программы – графических представлений объекта управления. Визуализация непосредственно связана с созданной в CODESYS пользовательской программой контроллера. Редактор визуализации CODESYS предоставляет набор готовых графических элементов, которые можно соответствующим образом связать с переменными проекта.

В режиме «Online» представление элементов на экране изменяется в зависимости от значений переменных (см. раздел). Визуализация может исполняться в системе программирования, в отдельном приложении «CODESYS HMI».

«Ресурсы»

На вкладке «Ресурсы» отображается иерархический список ресурсов – объектов CODESYS, обеспечивающих конфигурацию проекта:

  • глобальные переменные, используемые во всем проекте;

  • менеджер библиотек для подключения необходимых библиотек к проекту;

  • журнал записи действий во время исполнения;

  • конфигурация тревог для конфигурирования обработки тревог в проекте;

  • конфигурация ПЛК для конфигурирования аппаратуры контроллера;

  • конфигурация задач для управления задачами;

  • менеджер для просмотра и заказа наборов значений переменных;

  • настройки целевой платформы.

Двойное нажатие ЛКМ на требуемой записи в списке «Ресурсы» приводит к открытию в рабочей области окна выбранного режима («ресурса»).

Строка статуса

В строке статуса отображаются:

  • при выборе пункта меню – его описание;

  • во время работы в текстовом редакторе – указывается позиция, в которой находится курсор (например, Line:5, Col.11);

  • в режиме визуализации – отображаются координаты курсора X и Y, которые отсчитываются относительно верхнего левого угла окна. Если указатель мыши находится на элементе, или над элементом производятся какие-либо действия, то отображается номер этого элемента;

  • при вставке элемента – отображается название элемента (например, Rectangle);

  • во время работы в режиме «Online» надпись Online в строке статуса выделяется черным цветом, в ином случае надпись серая. В режиме «Online» можно определить, в каком состоянии находится пользовательская программа:

    • SIM – в режиме эмуляции;

    • RUN – пользовательская программа запущена;

    • BP – установлена точка останова;

    • FORCE – фиксируются переменные.

Команды главного меню

Элементы управления главного меню
Команда менюКнопка панели инструментовГорячие клавишиОписание команды
Файл (File)
Создать (New)GraphicСоздает новый проект. Новый проект получает имя «Untitled»
Создать по шаблону (New from template)Открывает окно выбора файла, в котором следует выбрать требуемый файл проекта (*.pro), который послужит шаблоном нового проекта. Новый проект получает имя «Untitled»
Открыть (Open)Graphic<Ctrl + O>Открывает ранее сохраненный проект. Если в момент вызова команды какой-то проект уже открыт и в него были внесены изменения, то CODESYS предложит сохранить открытый проект
Закрыть (Close)Закрывает открытый в данный момент проект. Если с момента открытия в проект были внесены изменения, то CODESYS предложит сохранить открытый проект
Сохранить (Save)Graphic<Ctrl + S>Сохраняет файл проекта
Сохранить как… (Save as…)Сохраняет проект или библиотеку под новым именем. Исходный файл не изменяется
Сохранить/отправить архив (Save/Mail Archive…)Создает архив проекта. Все файлы, которые используются проектом CODESYS, сохраняются и сжимаются в файл с расширением *.zip, который удобно хранить и пересылать по электронной почте
Печать (Print)<Ctrl + P>Печатает содержание активного окна
Параметры печати (Printer Setup…)Открывает окно настройки печати
Выход (Exit)<Alt + F4>Закрывает CODESYS. Если в момент вызова этой команды открыт проект, то программа предложит его сохранить
Правка (Edit)
Отменить (Undo)<Ctrl + Z>Отменяет последнее изменение, сделанное в открытом редакторе или в организаторе объектов. Используя эту команду, можно отменить все изменения, выполненные после открытия окна
Вернуть (Redo)<Ctrl + Y>Возвращает последнее изменение, отмененное в открытом редакторе или в организаторе объектов командой Undo
Вырезать (Cut)Graphic<Ctrl + X>Перемещает выделенный элемент в буфер. Выделенный элемент удаляется из окна редактора
Копировать (Copy)Graphic<Ctrl + C>Копирует выделенный элемент в буфер, содержимое окна редактора не изменяется
Вставить (Paste)Graphic<Ctrl + V>Вставляет содержимое буфера, начиная с текущей позиции курсора в окне редактора. В графических редакторах команда выполняется только если содержимое буфера соответствует выбранному элементу
Удалить (Delete)<Delete>Удаляет выбранную область, содержимое буфера не изменяется
Найти (Find)Graphic<Ctrl + F>Находит введенный текст в активном окне редактора. Открывает диалоговое окно поиска
Найти далее (Find next)Graphic<F3>Начинает поиск введенного текста с текущей позиции и далее
Найти и заменить (Replace)<Ctrl + H>Находит заданный текст и заменяет его на введенный. Вызов команды открывает диалоговое окно поиска и замены выбранного текста
Ассистент ввода (Input Assistant)<F2>Открывает диалоговое окно выбора элемента, который можно ввести в текущей позиции. В левом столбце следует выбрать категорию элементов, в правом – требуемый элемент, а затем нажать «OK»
Автоматическое объявление переменных (Auto Declare)<Shift + F2>Открывает диалог объявления переменных
Следующая ошибка (Next Error)<F4>Показывает следующую ошибку, если проект скомпилирован с ошибками. Открывается соответствующий редактор в том месте, где допущена ошибка, а в окне сообщений отображается краткое описание ошибки
Предыдущая ошибка (Previous Error)<Shift + F4>Показывает предыдущую ошибку, если проект скомпилирован с ошибками. Открывается соответствующий редактор в том месте, где допущена ошибка, а в окне сообщений отображается краткое описание ошибки
Макросы (Macros)Показывает список всех определенных в проекте макрокоманд (макросов). Во время выполнения макроса открывается окно «Process Macro», в котором выводится имя макроса и имя активной команды
Проект (Project)
Компилировать (Build)<F11>Компилирует только POU, которые были изменены
Компилировать все (Rebuild all)Компилирует весь проект, даже если он не был изменен
Очистить все (Clear all)Стирает всю информацию о предыдущей компиляции и загрузке проекта в контроллер
Загрузить информацию о загрузке кода (Load Download-Information)Загружает информацию о загрузке кода в контроллер, если она была сохранена в директории, отличной от той, в которой находится проект
Перевод на другой язык (Translate into another language)Переводит текст проекта на другой язык (используется вспомогательный текстовый файл, созданный в CODESYS и переведенный в текстовом редакторе на требуемый язык)
Документ… (Document)Создает версию проекта для печати
Экспорт… (Export…)Экспортирует проект из одного инструмента МЭК программирования в другой. Можно экспортировать POU, типы данных, визуализации, описания подключенных к проекту библиотек (но не сами библиотеки) и другие ресурсы
Импорт… (Import…)Импортирует в проект данные из выбранного файла
Siemens импорт (Siemens Imports)Импортирует переменные и POU из файлов Siemens-STEP5 и Siemens-STEP7
Объединить… (Merge)Объединяет два проекта
Сравнить… (Compare)Сравнивает два проекта или разные версии одного и того же проекта
Информация о проекте (Project info)Сохраняет дополнительную информацию о проекте
Глобальный поиск (Global Search)Graphic<Ctrl + F>Находит заданный текст в POU, типах данных или разделе глобальных переменных проекта
Глобальная замена (Global Replace)Находит заданный текст в POU, типах данных или в глобальных переменных проекта и заменяет его другим
Просмотр экземпляра (View Instance)Показывает экземпляры выбранного в организаторе объектов функционального блока. Отображает список всех экземпляров выбранного функционального блока и его реализаций
Показать дерево вызовов (Show Call Tree)Показывает дерево вызовов выбранного объекта в новом окне (проект должен быть скомпилирован)
Показать перекрестные ссылки (Show Cross Reference)Открывает диалоговое окно, в котором отображены адрес, место расположения (POU, номер строки) переменной (проект должен быть скомпилирован)
Контроль (Check)Команды этого меню используются для дополнительного семантического контроля (проект должен быть скомпилирован без ошибок)
Добавить действие (Add Action)Создает действие, связанное с блоком, выделенным в организаторе объектов. Требуется задать имя действия и язык, на котором оно будет описано
Пароли Группы пользователей… (User Group Passwords)Устанавливает права доступа к объекту для различных групп пользователей
Вставить (Insert)
Ключевое слово… (Declaration keywords)Вывод списка ключевых слов для быстрого ввода ключевых слов, допускаемых в разделе объявлений POU. После выбора ключевого слова из списка, оно будет вставлено в текущую позицию курсора
Тип… (Types)Вывод списка доступных типов для их быстрого ввода
Новое объявление (New declaration)Добавляет новую переменную в таблицу редактора объявлений
Дополнения (Extras)

Команды данного пункта меню могут меняться в зависимости от режима работы

Онлайн (Online)
Подключение (Login)GraphicУстанавливает соединение CODESYS с контроллером (или запускает программу эмуляции) и включает режим «Online»
Отключение (Logout)GraphicРазрывает соединение с контроллером или заканчивает работу программы (в режиме эмуляции). Включает режим «Offline»
Загрузка (Download)Загружает код проекта в контроллер
Старт (Run)<F5>Запускает программу на выполнение в контроллере или в режиме эмуляции
Стоп (Stop)<Shift + F8>Останавливает программу при ее выполнении в контроллере или в режиме эмуляции
Сброс (Reset)Сброс заново инициализирует все переменные, за исключением VAR RETAIN. Если определены начальные значения переменных, они будут присвоены (включая VAR PERSISTENT). Прочие переменные приобретут стандартные значения по умолчанию (например, 0 для целых типов). Данный сброс аналогичен выключению и включению питания ПЛК, при работающей программе
Сброс (холодный) Reset (cold)Холодный сброс. Выполняет те же действия, что и при команде «Сброс», и дополнительно выполняет инициализацию энергонезависимой области памяти RETAIN
Сброс (заводской) Reset (original)Выполняет «Сброс (холодный)», а также инициализация области PERSISTENT и удаление программы пользователя. Восстанавливаются заводские настройки контроллера
Переключить точку останова (Toggle Breakpoint)<F9>Устанавливает точку останова в текущей позиции активного окна. Если в этой позиции уже стоит точка останова, то она будет удалена
Диалог точек останова (Breakpoint Dialog)GraphicОткрывает диалоговое окно управления точками останова в проекте, в нем указаны все заданные точки останова
Шаг поверху (Step over)Graphic<F10>Выполняет одну инструкцию программы. Если это инструкция вызова POU, то данный POU выполняется целиком, затем программа останавливается
Шаг детальный (Step in)<F8>Выполняет программу по шагам, с заходом в вызываемые блоки. Вызываемые POU открываются в отдельных окнах
Один цикл (Single Cycle)<Ctrl + F5>Выполняет один рабочий цикл контроллера. Команду можно повторять многократно для отслеживания работы программы по рабочим циклам
Записать значения (Write values)<Ctrl + F7>Перед началом рабочего цикла присваивает переменной (или нескольким переменным) заранее введенные значения
Фиксировать значения (Force values)<F7>

Фиксирует значения одной или нескольких переменных. Заданное значение записывается в начале и в конце каждого управляющего цикла:

  1. Чтение входов.

  2. Фиксация переменных.

  3. Выполнение кода программы.

  4. Фиксация переменных.

  5. Запись выходов.

Освободить фиксацию (Release force)<Shift + F7>Отменяет фиксацию значений переменных
Диалог Запись/Фиксация (Write/Force-Dialog)<Ctrl + Shift + F7>Открывает окно, содержащее таблицы записываемых (Writelist) и фиксируемых (Forcelist) переменных. В левом столбце таблиц отображаются имена переменных, в правом – их установленные значения
Показать стек вызовов… (Show Call Stack)Показывает список вызванных POU, когда программа остановлена в точке останова
Отображать поток выполнения (Display Flow control)Включает режим контроля потока исполнения. Если данная возможность поддерживается целевой платформой, то каждая строка или цепь программы, которая была выполнена в контроллере в предыдущем управляющем цикле, будет выделена
Режим эмуляции (Simulation)Graphic«Старт». Включает режим эмуляции, программа будет выполнена в ПК. Если режим эмуляции выключен, программа будет запущена в контроллере
Graphic«Стоп». Останавливает программу при ее выполнении в контроллере или в режиме эмуляции
Параметры связи (Communication Parameters)Выводит диалоговое окно настройки параметров связи ПК и ПЛК (если используется OPC или DDE сервер, то эти параметры можно настроить из их конфигурации)
Загрузка исходных текстов (Sourcecode download)Загружает исходные тексты проекта в контроллер (именно исходные тексты проекта – не код проекта, который создается при компиляции)
Создание загрузочного проекта (Create bootproject)Делает код проекта автоматически загружаемым при перезапуске контроллера: проект будет выполняться автоматически при перезапуске ПЛК
Записать файл в ПЛК (Write file to PLC)Записывает в ПЛК выбранный файл (любого типа), размер файла ограничивается размером карты памяти контроллера
Читать файл из ПЛК (Read file from PLC)Считывает ранее сохраненный в контроллере файл и сохраняет его в указанную директорию на ПК
Окно (Window)
По вертикали (Tile Vertical)Упорядочивает размещение окон по вертикали так, чтобы они не перекрывали друг друга и полностью занимали рабочую область
По горизонтали (Tile Horizontal)Упорядочивает размещение окон по горизонтали так, чтобы они не перекрывали друг друга и полностью занимали рабочую область
Каскадом (Cascade)Упорядочивает окна каскадом – каждое следующее поверх остальных
Выровнять свернутые (Arrange Symbols)Выстраивает свернутые окна в ряд в нижней части Рабочего окна
Закрыть все (Close All)Закрывает все окна
Сообщения (Messages)<Shift + Escape>Открывает окно сообщений, которое содержит информацию о предыдущей компиляции, проверке или сравнении проекта
Менеджер библиотек (Library Manager)Открывает окно менеджера библиотек
Бортжурнал (Log)Открывает «бортжурнал» – детальный протокол последовательности действий, которые были выполнены во время «Online»-сессии. Бортжурнал записывается в двоичный файл формата *.log
Справка (Help)
Содержание… (Contents)Открывает окно системы оперативной помощи
Поиск… (Search)Переход к контекстному поиску по текстам оперативной помощи
О программе… (About)Открывает окно с информацией о программе CODESYS

Основные режимы (редакторы)

CODESYS предоставляет встроенные специализированные редакторы для всех пяти языков стандарта МЭК 61131-3 и дополнительный CFC редактор:

  • список инструкций (IL);

  • функциональные блоковые диаграммы (FBD);

  • релейно-контактные схемы (LD);

  • структурированный текст (ST);

  • последовательные функциональные схемы (SFC):

    • мониторинг времени исполнения шагов;

    • автоматический анализатор причин ошибок;

    • набор управляющих флагов: сброс, разрешение мониторинга, фиксация переходов и т. д.

  • непрерывные функциональные диаграммы (CFC):

    • автоматическая расстановка и соединение;

    • макроопция для структурирования больших диаграмм.

Специальные редакторы отвечают за прикладные функции рабочей среды:

  • конфигуратор задач задает:

    • циклические задачи и задачи, исполняемые по событиям;

    • параметры сторожевого таймера;

    • настройку событий.

  • конфигуратор ввода-вывода обеспечивает:

    • Profibus конфигурирование на основе GSD файлов;

    • CANopen конфигурирование на основе EDS файлов;

    • ASI конфигурирование.

Языки программирования

В соответствии с требованиями стандарта МЭК 61131-3 CODESYS поддерживает следующие языки программирования:

  • IL;

  • ST;

  • FBD;

  • LD;

  • SFC.

CODESYS также поддерживает «Язык непрерывных функциональных схем» (CFC), который отличается от FBD тем, что блоки и соединители в CFC располагаются свободно, разрешены циклы и свободные соединения.

Подробное описание языков программирования приведено в документе «Руководство пользователя по программированию ПЛК в CoDeSys V2.3» на сайте owen.ru.

IL (список инструкций)

IL – текстовый язык, схожий с ассемблером STEP5 компании SIEMENS. Все операции языка производятся через аккумулятор, язык IL легко читается в случае небольших программ.

Каждая инструкция начинается с новой строки и содержит оператор и, в зависимости от типа операции, один и более операндов, разделенных запятыми.

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

Graphic
Пример программы на языке IL
ST (структурированный текст)

ST – текстовый язык высокого уровня, схожий с языком Pascal. ST оптимален для программирования циклов и условий и состоит из набора инструкций, которые могут использоваться в условных операторах (IF…THEN…ELSE) и в циклах (WHILE…DO).

Graphic
Пример программы на языке ST
FBD (функциональные блоковые диаграммы)

FBD – графический язык программирования, который работает со схемами, состоящими из блоков и операндов – с последовательностью цепей. Каждая цепь содержит логическое или арифметическое выражение, вызов функционального блока, переход или инструкцию возврата.

Graphic
Пример программы на языке FBD
LD (релейные диаграммы)

LD – графический язык, реализующий структуры электрических цепей. Программа на языке LD состоит из схем с последовательностью цепей, каждая из которых содержит логическое или арифметическое выражение, вызов функционального блока, переход или инструкцию возврата. Язык сложен в использовании для работы с аналоговыми типами данных.

LD лучше всего подходит для построения логических переключателей и используется для программирования большинства ПЛК. Допускается переключение между языками FBD и LD.

Диаграмма LD состоит из ряда цепей. Слева и справа схема ограничена вертикальными линиями – шинами питания. Между ними расположены цепи, образованные контактами и обмотками реле, по аналогии с обычными электронными цепями. Слева цепь начинается  набором контактов, которые посылают слева направо состояние «ON» или «OFF», соответствующие логическим значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если переменная имеет значение ИСТИНА, то состояние передается через контакт, если ЛОЖЬ, то правое соединение получает значение «OFF» (Выключено).

Graphic
Пример программы на языке LD
SFC (последовательные функциональные схемы)

SFC – графический язык, который используется для структурирования приложений и состоит из шагов и переходов. Действия выполняются внутри шагов. SFC не конвертируется в другие языки.

Graphic
Пример программы на языке SFC
CFC (непрерывные функциональные схемы)

CFC – язык непрерывных функциональных схем. В отличие от FBD, язык CFC не использует цепи, но дает возможность свободно размещать компоненты и соединения, что позволяет создавать, в частности, обратные связи.

Примечание
Свобода размещения компонентов и соединений приводит к тому, что требуется задавать порядок выполнения программы. Группа команд «Порядок» контекстного меню позволяет отобразить порядковые номера (по очередности выполнения) элементов программы и изменить этот порядок в случае необходимости. Порядковые номера элементов отображаются в затемненном поле у правого верхнего угла каждого элемента.
Graphic
Пример программы на языке CFC

Редактор

Все режимы редактирования (далее – «редакторы») программных компонентов POU содержат раздел объявлений (верхняя часть окна) и область кода (нижняя часть окна), см. рисунок.

Область кода может включать графический или текстовый редактор, раздел объявлений – это всегда текст. Разделы кода и объявлений разделены горизонтальной границей, которую можно перетаскивать мышкой.

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

Graphic
Пример окна редактирования: 1 – раздел объявлений; 2 – область кода

Типы данных

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

Установка связи с ПЛК

Пользовательскую программу можно загрузить в контроллер только после установки связи контроллера с ПК.

Поддерживаемые интерфейсы связи контроллера и ПК для загрузки пользовательской программы:

  • Ethernet;

  • RS-232;

  • USB.

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

Настройка связи требуется однократно для определенного интерфейса. Во время отладки настройка связи может потребоваться только в случае перехода на другой интерфейс связи.

Настройка интерфейсов связи

Для настройки соединения с контроллером следует выбрать в главном меню Онлайн → Параметры связи…. Откроется окно настройки интерфейсов связи с контроллером.

Graphic
Окно настройки интерфейсов связи

В левой части окна в иерархическом списке (Channels) перечислены все созданные каналы связи.

В средней части окна отображается таблица настроек канала связи, выделенного в иерархическом списке. Таблица состоит из колонок:

  • Название параметра (Name);

  • Значение (Value);

  • Комментарий (Comment).

Каждый вид подключения имеет свой набор параметров: адрес или номер устройства, если в данный канал включено несколько устройств, а также свойства канала связи, например, скорость передачи данных, наличие защиты от помех, временные задержки, и т. п. Над таблицей расположены две панели, которые отображают текст без возможности редактирования: в левой панели – название вида (протокола) связи, используемого в текущем канале.

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

  • OK/Cancel – применить/отменить изменения, внесенные в список каналов связи;

  • New/Remove – создать новую и удалить текущую запись о канале связи;

  • Gateway – вызов окна переключения локальных/удаленных подключений (см. рисунок);

  • Update – обновление данных.

Graphic
Окно команды Gateway

В окне Gateway переключатель Connection (Соединение) устанавливает соединение при подключении:

  • «Local» – локальное;

  • «Tcp/Ip» – сетевое с использованием протокола TCP/IP.

Для локального соединения требуется установить только параметры порта. В случае подключения по сети с использованием протокола TCP/IP, в текущем диалоговом окне становятся доступными дополнительные настройки:

  • сетевой адрес компьютера (Address) с подключенным к нему контроллером (IP-адрес, имя компьютера, в случае использования в сети протокола DNS либо слово «localhost», если требуется установить соединение с контроллером, подключенным по локальной сети);

  • пароль (Password) для доступа к защищенному соединению;

  • порт (Port) указывается для введенного сетевого адреса (по умолчанию используется 1210).

Смена подключения с локального на удаленное с использованием протокола TCP/IP (и наоборот) приводит к очистке списка подключений в таблице настроек канала связи.

RS-232

Интерфейс RS-232 (последовательный порт) в промышленной автоматике является распространенным интерфейсом взаимодействия микропроцессорных устройств. В ПК такие интерфейсы обозначались, как COM-порты (порты COM1, COM2, … COMn). В современных конфигурациях ПК порты RS-232 нередко отсутствуют и для подключения различных внешних устройств используются более высокоскоростные USB-порты, обладающие, однако, меньшими возможностями в плане длины соединяющих проводов (до пяти метров).

Для настройки интерфейса RS-232 следует:

  1. Выбрать Онлайн → Параметры связи… в главном меню. Откроется окно настройки интерфейсов связи с контроллером.

  2. Нажать кнопку New. Откроется окно «Communication parameters: New Channel» – задания нового канала связи.

  3. В окне задать имя нового соединения (например, Owen) и выбрать из перечня интерфейс соединения Serial (RS232) для связи по интерфейсу Debug RS-232 или USB Device.

  4. В случае выбора соединения Serial (RS232) в настройках параметров следует задать:

    • СОМ-порт (параметр Port), по которому ПЛК подключается к ПК;

    • скорость соединения (параметр Baudrate) – 115200 бит/с;

    • бит четности (параметр Parity) – No;

    • параметры Gateway → Connection – «local».

Работа с USB-портом ничем не отличается от работы с обычным последовательным портом, увидеть номер данного порта можно с помощью диспетчера устройств Windows. По умолчанию скорость передачи составляет 115200 бит/с, размер передаваемого слова 8 бит, проверка четности выключена, количество стоповых битов равно 1.

Драйвер виртуального СОМ-порта можно скачать на сайте owen.ru на странице контроллера. Для установки драйвера следует подключить включенный ПЛК к USB-порту ПК стандартным кабелем типа А-В (в комплект поставки не входит). После отключения питания или перезагрузки ПЛК для установки связи может потребоваться повторное отключение и подключение кабеля USB-порта для повторной инициализации драйвера.

Ethernet

Для установки соединения между ПЛК и ПК по интерфейсу Ethernet требуется выполнение следующих условий:

  • IP-адреса должны выбираться из значений, допустимых для частного пользования*;

  • IP-адрес ПК должен быть статическим;

  • IP-адреса и маска подсети ПК и контроллера устанавливаются так, чтобы они находились в одной IP-подсети.

Примечание
* Согласно правилам распределения IP-адресов, некоторые адреса могут использоваться свободно всеми желающими при организации подсетей с протоколом TCP/IP: адреса 10.x.y.z c маской 255.0.0.0, адреса 172.16.x.y…172.31.x.y с маской 255.240.0.0 и адреса 192.168.x. y с маской 255.255.0.0, где x, y, z – целые числа в диапазоне от 0 до 255.

IP-адрес контроллера можно изменить с помощью команды «SetIP», подаваемой в режиме «ПЛК-Браузер (PLC-Browser)» (подробнее о работе в режиме «ПЛК Браузер (PLC-Browser)» см. раздел). Для изменения IP-адреса связь с контроллером должна быть предварительно установлена через интерфейс Debug RS-232 или USB Device.

Дополнительный IP-адрес ПК задается в свойствах протокола TCP/IP в настройках сетевого окружения Windows. При изготовлении IP-адрес контроллера – 10.0.6.10, поэтому ПК следует присвоить дополнительный IP-адрес в подсети 10.0.6, отличный от адреса 10.0.6.10, маска подсети задается равной 255.255.0.0. Подробно процесс присвоения дополнительного IP-адреса для ПК приведен в видеоинструкции Подключение ПЛК к ПК по Ethernet.

TCP/IP

Для установки связи с помощью протокола TCP/IP по интерфейсу Ethernet следует:

  1. Проверить состояние сетевого подключения Ethernet на ПК.

  2. Соединить кросс-кабелем Ethernet контроллер и ПК. Если соединение установлено успешно, на экране ПК появится соответствующее сообщение, индикаторы Ethernet соединения на ПЛК начнут мигать.

Для начала работы с контроллером, подключенным по протоколу TCP/IP, следует настроить подключение контроллера к ПК:

  1. Перенастроить сетевое соединение подключенного контроллера: ввести статический IP-адрес и маску подсети (см. раздел).

  2. Выбрать Онлайн → Параметры связи… в главном меню. Откроется окно настройки интерфейсов связи с контроллером.

  3. Нажать кнопку New. Откроется окно «Communication parameters: New Channel» – задания нового канала связи.

  4. В окне задать имя нового соединения (например, TCP_IP_new) и выбрать из перечня интерфейс соединения: «Tcp/Ip (Level 2)» для связи по протоколу TCP/IP.

    Graphic
    Создание нового TCP/IP соединения
  5. В параметре Address указать значение IP-адреса контроллера и сохранить новый канал связи.

    Graphic
    Ввод IP-адреса
  6. Нажать на кнопку Gateway и в параметре Connection поставить «Tcp\Ip», нажать кнопку OK.

После задания параметров соединения по интерфейсу Ethernet по протоколу TCP/IP следует перезагрузить контроллер отключением питания контроллера и повторным его включением через пять или более секунд.

Установка связи с контроллером

Для установки связи с контроллером требуется любая пользовательская программа (подойдет простейшая).

Простейшей пользовательской программой на языке ST является символ «;» (точка с запятой) – её будет достаточно для проверки связи с контроллером. Простейшие пользовательские программы на других языках приведены на рисунке ниже.

Graphic
Примеры простейших пользовательских программ на языках FBD, LD и ST

Для установки связи с контроллером следует:

  1. Выбрать Онлайн → Подключение в главном меню. Предварительно должен быть снят флаг перед строкой меню Онлайн → Режим эмуляции (установка и снятие флага производится последовательными щелчками ЛКМ на строке). Перед установкой связи CODESYS скомпилирует пользовательскую программу, и в случае наличия в ней ошибок – прервет установку связи.

  2. После установки связи CODESYS предложит загрузить или обновить код пользовательской программы в оперативной памяти контроллера (см. рисунок).

    Graphic
    Окно предложения загрузки программы
    Примечание
    ПЛК110 поддерживает режим «ONLINE CHANGE», позволяющий обновить выполняющуюся в контроллере программу без прерывания ее работы (см. рисунок).
Graphic
Окно предложения обновления программы в режиме «ONLINE CHANGE»

Установка драйвера подключения ПЛК по USB Device

Для связи контроллера с ПК следует:

  1. Скачать драйвер с сайта owen.ru из раздела CODESYS V2.

    Примечание
    Для работы драйвера требуется ОС Windows 7/8/10.
  2. Запустить установщик драйвера и следовать инструкциям мастера установки.

  3. Соединить кабелем «USB A – B» разъем «USB B» на лицевой панели контроллера и любой свободный USB-порт ПК.

  4. Подать питание на контроллер и на ПК. Если драйвер успешно установился, то в диспетчере устройств на ПК появляется новый порт «PLC110 USB Virtual Serial Port», таким образом подключение ПЛК к ПК распознается как добавление нового COM-порта к ПК с присвоением порту индивидуального порядкового номера (например, COM4).

  5. Далее подключение к контроллеру осуществляется так же, как если бы контроллер подключался через физический COM-порт ПК.

В случае успешной установки драйвера и подключения контроллера с помощью порта «USB B» окно диспетчера устройств Windows отобразит новое устройство так, как показано на рисунке ниже.

Graphic
Диспетчер устройств Windows после успешной установки драйвера

После установки можно сразу приступать к работе с CODESYS. Во время настройки подключения следует указывать номер COM-порта, соответствующий отображенному в диспетчере устройств (в рассмотренном примере, на рисунке выше это порт COM4).

Конфигурирование памяти ввода-вывода ПЛК

Перед написанием пользовательской программы рекомендуется настроить конфигурацию входов, выходов и интерфейсов связи ПЛК с внешними устройствами (модулями ввода-вывода, устройствами индикации и т. д.), обмен данными с которыми будет производиться по сети. Устройства обмениваются данными с пользовательской программой через специальную область памяти ввода-вывода. Конфигурация памяти ввода-вывода ПЛК задается в окне режима «Конфигурация ПЛК», которое вызывается на вкладке «Ресурсы» организатора объектов.

Размер памяти ввода-вывода определяется типом лицензии CODESYS контроллера ПЛК (см. раздел).

Подробное описание конфигурирования памяти ввода-вывода приведено в разделе.

Для подсчета объема памяти ввода-вывода, требуемой для работы с приборами компании «ОВЕН», следует воспользоваться данными из таблицы ниже.

Потребности ПЛК в памяти ввода-вывода, требуемой для работы с некоторыми приборами компании ОВЕН
Прибор

Объем требуемой памяти для протоколов передачи данных, байт

ОВЕНModbusDCON
%I%Q%I%Q%I%Q
ТРМ2хх (один аналоговый вход)4
ТРМ151, ТРМ148, ТРМ133 (один аналоговый вход)4
СП3хх (одна переменная на чтение с ПЛК)2
СП3хх (одна переменная на запись с ПЛК)2
МВ110-224.2А (один аналоговый вход)444
МВ110-224.8А (один аналоговый вход)444
МУ110-224.8И (один аналоговый выход)22
МУ110-224.6У (шесть аналоговых выходов)22

Рекомендации по расчету требуемой памяти ввода-вывода:

  • в случае использования приборов других производителей, работающих по протоколам Modbus или DCON, следует по руководствам по эксплуатации на эти приборы определить сколько байт данных содержат команды, посылаемые по сети. Для работы с приборами ввода требуемое количество байт надо прибавить к размеру области %I, для работы с приборами вывода требуемое количество байт надо прибавить к размеру области %Q;

  • для дискретных модулей ввода-вывода сторонних производителей, работающих по протоколу Modbus, как правило, значение одного входа или одного выхода кодируется одним битом. Соответственно, занимаемый размер памяти в области ввода-вывода следует считать в битах, но с учетом того, что на один модуль тратится целое число байт. Таким образом, на двенадцатиканальный модуль дискретного ввода потребуется два байта, из 16 бит которых только 12 будут значащими;

  • для приборов и операторских панелей, работающих по протоколу Modbus, одно значение параметра передается, как минимум, в двухбайтном регистре (даже если параметр – однобайтовый);

  • в случае использования модуля архивации на каждую архивируемую переменную следует зарезервировать в памяти %Q место, равное размеру этой переменной;

  • в случае использования модулей в режиме Master сетевых протоколов (т. е. модулей, организующих обмен с внешними устройствами и модулями) дополнительно следует учесть, что эти модули содержат ряд служебных переменных, также расположенных в области памяти вывода %Q. Один модуль в режиме Master одного сетевого протокола дополнительно требует от 4 до 8 байт;

  • после подсчета необходимого размера областей памяти %I и %Q следует провести проверку достаточности объема доступной памяти каждого типа. Следует учитывать, что часть памяти занимается собственными входами и выходами. Если расчет показал, что резерва памяти нет, то следует использовать контроллер с лицензией «М», так как из-за принятого в CODESYS способа выравнивания адресов переменных в памяти ввода-вывода может возникнуть дополнительный расход памяти. Алгоритм выравнивания описан в разделе, но учитывать особенности выравнивания во время расчета потребности в памяти ввода-вывода не рекомендуется из-за сложности расчета.

Визуализация

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

В режиме «Online» представление элементов на экране изменяется в зависимости от значений переменных.

Если уровень заполнения емкости жидкостью доступен в пользовательской программе в виде значения переменной, то в окне визуализации он может быть изображен графическим элементом в виде полосы, которая, в зависимости от значения переменной проекта, будет изменять свою длину и/или цвет. Рядом может быть размещен текст, отображающий в виде числа текущий результат измерения. Также можно разместить кнопки запуска и остановки пользовательской программы.

Окно визуализации можно создать во вкладке «Визуализации» организатора объектов, нажав кнопку «Добавить объект» в контекстном меню строки «Визуализации».

Graphic
Окно визуализации проекта

Сохранение проекта

Созданный проект можно сохранить в виде файла на жестком диске ПК для дальнейшей работы. Первоначально проект сохраняется вызовом команды Файл → Сохранить как… в главном меню, далее возможно сохранение вызовом команды Файл → Сохранить в главном меню или нажатием кнопки Сохранить (Graphic) на панели инструментов.

Внимание
Проект может быть также сохранен на встроенный в контроллер Flash-диск, что позволяет хранить проект непосредственно в контроллере и снижает вероятность его потери. Для загрузки проекта на встроенный Flash-диск контроллера следует после установки связи с контроллером (подробнее об установке связи см. раздел) выбрать команду Онлайн → Загрузки исходных текстов главного меню.

Проект может быть сохранен совместно с конфигурацией, т. е. со структурой, описанной в target-файле, загруженном при вызове проекта. Сохранение с конфигурацией на несколько килобайт увеличивает сохраняемый файл проекта, но позволяет в дальнейшем не заботиться о совместимости проекта и версии target-файла, установленного в системе на момент редактирования проекта. Рекомендуется сохранять проект в таком режиме, если предполагается возможность редактирования проекта по прошествии значительного времени с момента его создания. Режим сохранения проекта совместно с конфигурацией включается в окне «Конфигурация ПЛК» на вкладке «Ресурсы» организатора объектов, установкой флажка переключателя «Сохранять конф. файлы в проекте».

Graphic
Установка режима сохранения конфигурации в файл проекта в окне «Конфигурация ПЛК»

Индикация состояния контроллера

Во время работы с контроллером (программирование, отладка, работа с Flash-памятью) следует отслеживать его состояние по светодиодным индикаторам на передней панели корпуса контроллера.

Индикация контроллера
ИндикаторСостояние индикатораОписание
«Работа»СветитсяЯдро ОС загружено успешно, пользовательская программа загрузилась и запустилась
Не светитсяПользовательская программа не работает, остановлена или не загружена
Слабо светитсяЯдро ОС еще не загрузилось после включения питания прибора
Мигает раз в 500 мсЯдро ОС повреждено (не совпадает контрольная сумма)
Мигает раз в 200 мсПерегрузка центрального процессора
«Питание»СветитсяНаличие питания у контроллера
Не светитсяОтсутствие питания у контроллера
«Связь»СветитсяНаличие связи с CODESYS
Не светитсяОтсутствие связи с CODESYS
«Бат.»СветитсяТребуется замена батарейки
Не светитсяЗамена батарейки не требуется

Также на передней панели контроллера расположены светодиодные индикаторы состояний дискретных входов и выходов. Каждый индикатор соответствует одному дискретному (как быстрому, так и обычному) входу или выходу. Во время работы контроллера индикатор светится в случае значения логической единицы на соответствующем ему входе или выходе и не светится, когда на входе или выходе значение логического нуля. Уровни напряжений, соответствующие логическим нулю и единице, приведены в руководстве по эксплуатации контроллера.

Запуск пользовательской программы (отладка)

Для отладочного запуска загруженной пользовательской программы следует выбрать команду Онлайн → Старт в главном меню.

Примечание
Установка трехпозиционного переключателя «Работа – Стоп – Сброс» в положение «Работа» или «Стоп» на подключенном контроллере не приведет к запуску или остановке загруженной программы.

Запуск текущей пользовательской программы, записанной в ПЗУ, после выключения контроллера или сброс контроллера из CODESYS (сброс текущей пользовательской программы, записанной в ОЗУ, выбором команд Онлайн → Сброс (горячий) или Онлайн → Сброс (горячий) происходит, если трехпозиционный переключатель находится в положении «Работа». Если трехпозиционный переключатель находится в положении «Стоп», то запуск или сброс не происходят.

Предупреждение
Положение трехпозиционного переключателя анализируется контроллером при подаче питания или после сброса с помощью трехпозиционного переключателя.
Положения переключателя
Положение переключателяСостояние прибораОписание
Перевод в верхнее положение «Работа»Во включенном состоянии Пользовательская программа не запустится
До включения Со стартом контроллера запустится пользовательская программа, если она настроена на автозапуск*
Перевод в среднее положение «Стоп»Во включенном состоянии Пользовательская программа не будет остановлена
До включения Во время старта прибора пользовательская программа не будет загружена в ОЗУ контроллера и запущена**
Перевод в нижнее (нефиксируемое) положение «Сброс»Во включенном состоянииЧерез 6 секунд удержания произойдет перезагрузка прибора
В отключенном состоянииНичего не произойдет
Примечание

* Для настройки пользовательская программы на автозапуск следует заранее подключить контроллер к CODESYS и создать загрузочный проект (Онлайн → Создание загрузочного проекта).

** В случае попытки подключения к контроллеру из CODESYS будет выдаваться сообщение об отсутствии пользовательской программы.

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

Сохранение пользовательской программы в памяти контроллера

После написания и отладки пользовательскую программы можно записать во внутреннюю Flash-память контроллера командой Онлайн → Создание загрузочного проекта в главном меню. Пользовательская программа сохраняется в памяти контроллера и после отключения питания или перезагрузки контроллера будет автоматически запускаться после перезагрузки или включения питания.

Внимание
Ресурс встроенной Flash-памяти контроллера ограничен (около 50 000 циклов записи), поэтому не рекомендуется во время отладки пользовательской программы каждый раз записывать ее во Flash-память контроллера.

Если контроллер циклически перезагружается из-за ошибок в пользовательской программе, сохраненной во Flash-памяти, или некорректной записи программы во Flash-память, следует до или сразу после перезагрузки контроллера установить трехпозиционный переключатель в положение «Стоп». Пользовательская программа из Flash-памяти не будет автоматически запущена, что даст возможность подключиться к контроллеру и загрузить в него корректно работающую пользовательскую программу.

Разработка пользовательской программы

Приемы работы и примеры разработки пользовательских программ представлены в документе «Первые шаги с CoDeSys V2.3» на сайте owen.ru.

Программные компоненты (POU)

Пользовательская программа создается в CODESYS на любом из доступных языков программирования и может состоять из одного или нескольких программных компонентов (POU).

К программным компонентам (POU) относятся:

  • программы;

  • функции;

  • функциональные блоки.

Отдельные POU могут включать действия (подпрограммы). Каждый программный компонент состоит из раздела объявлений и кода. Для написания всего кода POU используется только один язык программирования.

CODESYS поддерживает все описанные стандартом МЭК компоненты. Для использования стандартных элементов достаточно включить в проект библиотеку standard.lib (подробнее о библиотеках см. раздел).

Программные компоненты могут вызывать другие программные компоненты, но рекурсии недопустимы.

Главная программа, выполняемая циклически, должна называться PLC_PRG. В проекте могут быть определены несколько задач с различными условиями выполнения. Работа с задачами описана в разделе «Конфигуратор задач (Task Configuration)» документа «Руководство пользователя по программированию ПЛК в CoDeSys V2.3».

Внимание
Если в окне «Конфигурация задач (Task Configuration)» определена последовательность выполнения задач (см. раздел), то проект может не содержать PLC_PRG. Нельзя удалять или переименовывать POU PLC_PRG в однозадачном проекте – если не используется «Конфигурация задач (Task Configuration)». В однозадачном проекте PLC_PRG является главной программой.

Программа

Программа – это программный компонент (POU), способный формировать произвольное число значений во время вычислений. Значения всех переменных программы сохраняются между вызовами. В отличие от функционального блока, экземпляров программы не существует. Программа является глобальной во всем проекте.

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

Список объявлений программы (в разделе объявлений окна редактирования) начинается с ключевого слова PROGRAM и следующего за ним имени программы.

Graphic
Пример записи программы на языке IL

Функция

Функция – это программный компонент (POU), который возвращает только единственное значение (которое может состоять из нескольких элементов, если это битовое поле или структура). В текстовых языках функция вызывается как оператор и может входить в выражения.

При объявлении функции следует указать тип возвращаемого значения – после имени функции написать двоеточие и тип (см. рекомендации по наименованию в приложении документа «Руководство пользователя по программированию ПЛК в CoDeSys V2.3»). Правильно объявленная функция выглядит следующим образом:

FUNCTION Fct: INT;

Имя функции используется как выходная переменная, которой присваивается результат вычислений.

Пример
Graphic
Пример записи функции на языке IL

В функции, написанной на языке IL, используется три входных переменных (par1par3) целочисленного типа (INT, диапазон изменения от –32768 до 32767) и возвращается результат деления произведения первых двух на третью. Список объявлений функции в разделе объявлений начинается с ключевого слова FUNCTION и следующего за ним имени функции, за которым, отделенное двоеточием, указывается название типа возвращаемого значения.

В языке ST вызов функции может присутствовать в выражениях как операнд.

В языке SFC функция вызывается только из шага или перехода.

Примечание
Функция не имеет внутренней памяти, но CODESYS допускает использование в функциях глобальных переменных, что является отклонением от требований стандарта МЭК 61131-3, в соответствии с которыми выходное значение функции должно зависеть исключительно от входных параметров. Другими словами, функция с одними и теми же значениями входных параметров всегда должна возвращать одно и то же значение.

Функциональный блок

Функциональный блок – это программный компонент (POU), который принимает и возвращает произвольное число значений. В отличие от функции, функциональный блок не формирует возвращаемое значение. Список всех объявлений функционального блока в разделе объявлений начинается с ключевого слова FUNCTION_BLOCK и следующего за ним имени блока.

Функциональный блок может имеет один или несколько экземпляров (копий).

Пример
Graphic
Пример записи функционального блока на языке IL

В примере функциональный блок, написанный на языке IL, имеет две входных и две выходных переменных. Значение выходной переменной MULERG равно произведению значений двух входных переменных, значение VERGL определяется в результате сравнения значений входных переменных.

Переменные

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

Типы переменных

Переменные в CODESYS могут принадлежать к нескольким типам.

Переменные могут быть:

  • локальные – используются только в рамках текущего программного компонента и задаются в разделе объявлений (см. раздел);

  • глобальные – используются в рамках всего проекта (во всех программных компонентах, входящих в его состав) и задаются в разделе объявлений, вызываемом выбором объекта «Глобальные переменные» (Global Variables) на вкладке «Ресурсы» организатора объектов.

Переменные также могут относиться к входным или выходным, а также одновременно к входным и выходным.

Если необходимо сохранять значения переменных, то их можно объявить как перманентные переменные – такие переменные сохраняют свои значения при определенных сбоях в системе. Перманентные переменные бывают сохраняемые и постоянные.

Сохраняемые переменные обозначаются во время объявления ключевым словом RETAIN. RETAIN-переменные сохраняют свои значения, даже если произошла авария питания (выключение и включение) контроллера, что равносильно команде «Сброс» (Онлайн → Сброс). Значения RETAIN-переменных сохраняются в энергонезависимой памяти контроллера.

Примечание
Переменные, объявленные в окне «Конфигурация ПЛК» в подэлементе «ModBus (slave)», являются сохраняемыми RETAIN-переменными.
Пример

Сохраняемая RETAIN-переменная

VAR RETAIN     rTemperature: REAL; (* Сохраняемая RETAIN-переменная *) END_VAR

Контроллеры с версией ПО 1.0.х поддерживают следующие режимы работы с энергонезависимой памятью:

  • запись по событию (используется по умолчанию) – RETAIN-переменные записываются автоматически по сигналу об отключении питания контроллера. Для записи используется накопленная энергия конденсаторов источника питания ПЛК;

    Внимание

    RETAIN-переменные не сохраняются в следующих случаях:

    • срабатывание сторожевого таймера (WatchDog);

    • перезагрузка контроллера по команде из пользовательской программы или ПЛК браузера («PLC-Browser»).

    В энергонезависимой памяти контроллера остаются значения, записанные ранее.

  • циклическая запись – RETAIN-переменные записываются циклично. Период устанавливается пользователем в пределах от 1 до 1000 секунд. Для надежности запись ведется поочередно в две копии RETAIN-переменных. В режиме циклической записи рекомендуется использовать цикл ПЛК не менее 10 мс, так как запись RETAIN-переменных вызывает дополнительную нагрузку на процессор контроллера.

Узнать или изменить активный режим работы с энергонезависимой памятью можно в ПЛК-Браузере («PLC-Browser») с помощью специальных команд:

  • SetupRetainMode – просмотр активного режима работы с RETAIN-переменными;

  • SetCyclicMode XXX – выбор режима циклической записи, где XXX – значение периода в секундах от 1 до 1000;

  • SetCyclicMode 0 – отключение режима циклической записи и переход к режиму записи по сигналу о пропадании питании контроллера.

Примечание
Для применения настроек режима работы с энергонезависимой памятью следует перезагрузить ПЛК по питанию или командой rebooT.

Подробная информация и примеры проектов доступны в описании библиотеки RetainControlLib в разделе CODESYS V2 на сайте owen.ru.

Постоянные переменные обозначаются ключевым словом PERSISTENT. В отличие от сохраняемых переменных постоянные переменные сохраняют свои значения только в случае загрузки кода новой пользовательской программы, но не в случае выключения питания или сброса. Значения постоянных переменных размещаются вне энергонезависимого ОЗУ.

Подробнее о типах переменных см. Руководство пользователя по программированию ПЛК в CoDeSys V2.3.

Объявление переменных

Для использования в POU переменная должна быть объявлена. Объявление переменных производится в разделе объявлений (см. раздел). Синтаксис, используемый при объявлении переменных, соответствует стандарту МЭК 61131-3.

Раздел объявлений используется для объявления переменных POU, глобальных переменных, описания типов данных.

В разделе объявлений зарезервированные слова, типы данных и сами переменные автоматически подсвечиваются разными цветами.

Наиболее важные команды можно найти в контекстном меню, которое появляется по щелчку ПКМ или по нажатию сочетания клавиш Ctrl + F10.

Локальные переменные POU объявляются в разделе объявлений редактора программного компонента. Локальными переменными могут быть входные и выходные переменные, переменные, одновременно являющиеся входными и выходными, локальные переменные, сохраняемые переменные и константы.

Graphic
Окно раздела объявлений (верхняя часть окна редактора POU)

Методы объявления переменных

В CODESYS применяются следующие методы объявления переменных:

  • текстовый;

  • табличный;

  • автоматический.

Текстовый

Синтаксис объявления переменных текстовым методом (наименования заключены в квадратные скобки):

<Идентификатор> {AT <Адрес>}:<Тип> {:=<начальное значение>};

Имена переменных не должны содержать пробелов и специальных символов, должны объявляться только один раз и не должны совпадать с зарезервированными словами. Регистр букв в имени переменной не имеет значения (т. е. переменные Var1, VAR1  и var1 не различаются). В именах переменных важен знак подчеркивания: переменные A_BCD и AB_CD считаются разными. Идентификатор не должен содержать подряд более одного символа подчеркивания. Длина идентификатора не ограничена, все символы являются значимыми.

Все переменные и типы данных можно инициализировать с помощью оператора «=». Переменные простейших типов инициализируются константами. По умолчанию все переменные инициализируются нулем.

Пример
iVar1:INT:=12; (*Переменная типа INT, инициализируемая числом 12*)

Если требуется поместить переменную по определенному адресу, то следует объявить ее с ключевым словом AT.

Внимание
Не рекомендуется использовать прямую адресацию при помощи ключевого слова АТ. Для прямой адресации компилятор не проверяет за пользователем область памяти, на которую он ссылается при объявлении переменной. Переменным, размещаемым в области конфигурации ПЛК, следует присваивать имена непосредственно в области конфигурации. Дополнительное объявление переменных, объявленных в области конфигурации, не требуется.
Табличное

Табличный способ объявления переменных позволяет ускорить процедуру объявления переменных. Для вызова окна табличного объявления следует выбрать команду Объявления в форме таблицы контекстного меню окна раздела объявлений. На вкладках окна редактора отображаются списки переменных различных типов. В ячейках таблицы списки переменных могут быть дополнены новыми переменными. Значения атрибутов переменных могут быть введены или отредактированы также в ячейках таблицы. Кроме того, требуемые переменные могут быть не только отредактированы, но и удалены из списков.

Graphic
Окно раздела объявлений в табличном представлении
Автоматическое

Автоматическое объявление переменных позволяет автоматизировать ввод значений ряда атрибутов переменной, что позволяет ускорить и упростить процедуру ввода и одновременно избежать ошибок, возможных при ручном вводе.

Для вызова окна автоматического объявления переменных следует выбрать команду Авто объявление… в контекстном меню окна раздела объявлений.

В открывшемся окне задается имя добавляемой переменной (в поле «Имя»). В других полях окна значения задаются выбором из раскрывающегося списка или списков, отображаемых в специальных окнах.

Graphic
Окно автоматического объявления переменной

Например, требуемый тип переменной можно выбрать в окне «Ассистент ввода», которое открывается по нажатию кнопки с тремя точками, размещенной у правого края поля «Тип».

Graphic
Окно ассистента ввода типа переменной

Типы данных

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

Базовые типы данных

Логический (BOOL)

BOOL – логический тип данных, который может принимать два значения – ИСТИНА (TRUE) или ЛОЖЬ (FALSE). Логический тип данных занимает 8 бит памяти (если не задан прямой битовый адрес).

Целочисленный

BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT и UDINT – целочисленные типы данных, которые отличаются диапазонами сохраняемых данных и требованиями к памяти. Характеристики целочисленных типов данных приведен в таблице ниже.

Характеристики целочисленных типов данных
ТипНижний пределВерхний пределРазмер памяти

BYTE

0

255

8 бит

WORD

0

65535

16 бит

DWORD

0

4294967295

32 бит

SINT

–128

127

8 бит

USINT

0

255

8 бит

INT

–32768

32767

16 бит

UINT

0

65535

16 бит

DINT

–2147483648

2147483647

32 бит

UDINT

0

4294967295

32 бит

Рациональный

REAL – данные в формате с плавающей запятой, используются для сохранения рациональных чисел. Для рационального типа требуется 32 бита памяти.

Диапазон значений рационального типа от [1.175494351e-38] до [3.402823466e+38].

Строки

Строковый тип STRING представляет строки символов. Максимальный размер строки определяет количество резервируемой памяти и указывается во время объявления переменной. Размер задается в круглых или квадратных скобках. Если размер не указан, принимается размер по умолчанию – 80 символов.

Длина строки в CODESYS не ограничена, но строковые функции способны обращаться со строками от 1 до 255 символов.

Пример
Объявление строки размером до 35 символов:str:STRING(35):='Просто строка';
Время и дата

Форматы данных времени и даты:

  • TIME – представляет длительность интервалов времени в миллисекундах. Максимальное значение для типа TIME: 49d17h2m47s295ms (4194967295 ms);

  • TIME, TIME_OF_DAY (сокр. TOD) – содержит время суток, начиная с 0 часов (с точностью до миллисекунд). Диапазон значений TOD: от 00:00:00 до 23:59:59.999;

  • DATE – содержит календарную дату, начиная с 1 января 1970 года. Диапазон значений от: 1970-00-00 до 2106-02-06;

  • DATE_AND_TIME (сокр. DT) – содержит время в секундах, начиная с 0 часов 1 января 1970 года. Диапазон значений от: 1970-00-00-00:00:00 до 2106-02-06-06:28:15.

Типы TIME, TOD, DATE и DATE_AND_TIME (сокр. DT) сохраняются физически как DWORD.

Пользовательские типы данных

Кроме стандартных типов данных в проекте можно использовать определяемые пользователем сложные типы данных: массивы, перечисления, структуры и некоторые другие (см. раздел).

Подключение дополнительных программных модулей

Дополнительные программные модули (библиотеки) подключаются в окне «Менеджер библиотек» (см. рисунок).

Окно «Менеджер библиотек» вызывается командой Окно → Менеджер библиотек или выбором пункта «Менеджер библиотек» в дереве на вкладке «Ресурсы» организатора объектов.

Graphic
Окно «Менеджер библиотек»

Для подключения библиотеки следует:

  1. Выбрать команду «Добавить библиотеку» (Add library) в контекстном меню списка подключенных библиотек (отображаемого в верхней левой области окна «Менеджер библиотек») или команду Вставка → Добавить библиотеку… в главном меню.

  2. В открывшемся окне выбора файлов выбрать файл требуемой библиотеки и нажать кнопку «Открыть». Выбранная библиотека будет подключена к проекту. Ее наименование отобразится в списке установленных библиотек (в верхней левой области окна «Менеджер библиотек»).

Для удаления подключенной библиотеки следует:

  1. Выделить требуемую библиотеку в списке подключенных (отображается в верхней левой области окна «Менеджер библиотек»).

  2. Вызвать команду «Удалить» контекстного меню списка. Выделенная библиотека будет отключена от проекта.

Для включения в проект дополнительного программного модуля (то есть модуля, который содержится в подключенной к проекту библиотеке) следует:

  1. Перейти на вкладку «POU» организатора объектов.

  2. В дереве программных компонентов объекта выбрать требуемый компонент.

  3. Вызвать команду Правка → Ассистент ввода в главном меню или команду «Ассистент ввода» в контекстном меню раздела объявлений.

  4. В открывшемся окне «Ассистент ввода» (см. рисунок), в левой части, где отображается перечень доступных типов добавляемых объектов, выделить требуемый тип (в данном случае – «Стандартные функциональные блоки»). В правой части окна отобразится перечень доступных объектов выбранного типа. Если флажок переключателя «Структурно» в нижней части окна установлен, то перечень отображается в виде иерархического структурированного списка. В противном случае перечень отображается в виде отсортированного по алфавиту линейного списка.

  5. В перечне доступных объектов (в правой части окна) выбрать требуемый объект и нажать кнопку «ОК» окна. Выбранный объект (в данном случае – стандартный функциональный блок) будет вставлен в редактируемый программный компонент проекта. Для отказа от добавления блока нажать кнопку «Отмена».

Graphic
Доступные дополнительные программные модули

Описания системных библиотек CODESYS доступны на сайте компании 3S Software и на странице CODESYS V2 на сайте owen.ru.

ПЛК110 поддерживают следующие библиотеки программных компонентов:

  • OwenLibFileAsync.lib;

  • OwenLibUSBSerial.lib;

  • OwenLibNetControl.lib;

  • OwenLibFactorySetups.lib;

  • OwenLibHidEvent.lib;

  • OwenLibPing.lib;

  • Timer.lib;

  • RetainControlLib.lib.

Рекомендуемые библиотеки:

  • Standart.lib;

  • Util.lib;

  • SysLibTime.lib;

  • SysLibCom.lib;

  • SysLibProjectInfo.lib;

  • SysLibMem.lib;

  • SysLibSockets.lib;

  • SysLibFile.lib;

  • SysLibPorts.lib;

  • NetVarUdp_LIB_V23.lib;

  • ComService.lib;

  • ModBus.lib;

  • OwenNet.lib;

  • Mercury.lib;

  • UNM.lib;

  • PID_Regulators.lib;

  • SmsOwenLib.lib;

  • OwenModbusSlave.lib;

  • Oscat_basic_333.lib;

  • Oscat_building_100.lib.

Установщик библиотек и их описания доступны на странице CODESYS V2 на сайте owen.ru. Помимо вышеперечисленных библиотек в состав установщика включены и некоторые сопутствующие библиотеки.

Модуль работы с файлами OwenLibFileAsync.lib

Модуль OwenLibFileAsync.lib поддерживает сохранение в файлы произвольных данных, чтение, удаление, копирование, переименование файлов и др. в асинхронном режиме, так как встроенное ПО контроллера в новой версии предусматривает работу с файловыми системами.

Примечание
Библиотека OwenLibFileAsync.lib рекомендуется для всех новых разработок.

Файлы можно сохранять на следующие устройства хранения:

  • внешний накопитель, подключенный к порту USB-Host (например, Flash-память, или жесткий диск);

  • внутренний Flash-накопитель;

  • внутренний виртуальный RAM диск (64 килобайт).

На носителях поддерживаются подкаталоги, а также доступны операции с файлами в директориях и просмотр содержимого директорий.

Устройство, на которое файл будет записываться, задается с помощью префикса к имени файла:

  • ffs: – для внутренней Flash-памяти;

  • ram: – для виртуального диска

  • usb: – для внешнего накопителя, подключенного к порту USB-Host.

Пример
Чтобы записать файл с именем «file1.txt» на разные носители, следует преобразовать его в «ffs:file1.txt» для записи во внутреннюю flash-память, «ram:file1.txt» – для записи на виртуальный диск и «usb:file.txt» – для записи на внешний накопитель.

На ПЛК запущен TFTP-сервер для передачи данных по протоколу TFTP (см. RFC 1350 – THE TFTP PROTOCOL (REVISION 2) http://tools.ietf.org/html/rfc1350). Следует обратить внимание, что только RAM-диск доступен для TFTP протокола, а также отсутствует функция разграничения доступа. Сервер доступен на всех интерфейсах ПЛК по соответствующим IP-адресам на порту 69. Подробный пример доступен в документе «Руководство по работе с файлами на ПЛК по протоколу TFTP», который находится на странице CODESYS V2 на сайте owen.ru.

Внимание
Не рекомендуется использовать встроенную Flash-память для записи часто переписываемых файлов, так как ее ресурс ограничен (около 50 000 циклов записи). В создаваемых пользовательских программах для контроллера рекомендуется программировать сохранение файла с предпочтением внешнего накопителя при его наличии.
Внимание
Виртуальный диск расположен в ОЗУ контроллера, поэтому все файлы, записанные под именами с префиксом «ram:», будут храниться в контроллере до первого его выключения. Для сохранения файлов следует их копировать на Flash-носители – внутренний или внешний.
Примечание
Пользовательская программа может работать одновременно максимум с пятью файлами.

Во время работы с USB-Host следует учитывать:

  • Суммарное потребление тока хабом и подключенными устройствами не должно превышать 0,5 А;

  • USB-Host имеет функцию защиты от перегрузки и короткого замыкания. Срабатывание защиты приводит к выключению питания на USB-Host с последующими периодическими попытками восстановления питания;

  • к ПЛК могут быть подключены USB MassStorage и USB HID устройства. Общее число подключенных USB MassStorage и USB HID устройств не должно превышать 1 для каждого типа. Остальные устройства игнорируются. Устройства инициализируются в порядке подключения. Если два USB MassStorage устройства уже подключены и подается питание на ПЛК, то порядок их инициализации непредсказуем;

  • стек USB-Host поддерживает опрос не менее 1 устройства класса USB HID;

  • с помощью библиотеки OwenLibHidEvent.lib можно получать сообщения от HID устройства, например мыши и/или клавиатуры;

  • в ПЛК поддерживается класс USB MassStorage с файловой системой FAT (12, 16, 32). Ограничения на размер накопителя налагаются только ограничениями файловой системы FAT.

    Примечание
    Рекомендуется использовать файловую систему FAT32.

Запись на USB MassStorage накопитель происходит без кэширования, т. е. для безопасного отключения накопителя следует:

  1. Завершить все процедуры записи (остановить запись из программы через библиотеку OwenLibFileAsync и закрыть открытые файлы, дождаться завершения всех системных загрузок файлов, остановить работу модуля(ей) архивации, остановить опрос файлов через 0x20 функцию ModBus slave).

  2. Дождаться прекращения активности на накопителе (если индикация активности присутствует) или выждать не менее 3 секунд.

  3. Отключить накопитель.

Не рекомендуется подключать USB MassStorage устройства на базе жестких дисков и SDD без дополнительного внешнего питания, т. к. это может привести к перегрузке по питанию и циклическому включению/выключению внешнего диска.

Примечание
Не гарантируется корректная работа ПЛК с USB устройствами, если последние обратно не совместимы с протоколом USB 1.1.

В контроллере реализован асинхронный механизм доступа к файлам из пользовательской программы. Асинхронный доступ гарантирует отсутствие задержек в выполнении пользовательской программы при доступе к файлам, в том числе расположенным на внешних носителях. Основной особенностью использования модуля OwenLibFileAsync.lib является выполнение функций в два этапа:

  1. Подача команду для работы с файлом.

  2. Проверка завершенности выполнения указанной команды и разрешение для подачи следующих команд для дальнейших операций с файлом.

Любая функция библиотеки OwenLibFileAsync.lib возвращает 2 значения:

  1. Состояние запроса к асинхронной библиотеке:

    • ASYNC_PAUSED -1000 (*Система по своим внутренним причинам приостановила обработку асинхронных запросов*);

    • ASYNC_QUERY_FULL -1001 (*более 5 запросов в очереди*);

    • ASYNC_BLOCK_ACCESS -1002 (*Запрос к уже обрабатываемому объекту с другой функцией*);

    • ASYNC_GENERAL_ERROR -1003 (*фатальная ошибка*);

    • ASYNC_INVALID_HANDLE_ERROR -1004 (*Запрос к неоткрытому/открытому не через асинхронную библиотеку файлу*);

    • ASYNC_WORKING 32766 (*идет работа асинхронной библиотеки*);

    • ASYNC_DONE 32767 (* работа завершена -> смотрите значение return value *).

  2. При получении ASYNC_DONE требуется посмотреть второе возвращаемое значение, уже самой функции файловой системы:

    returnvalue:POINTER TO DWORD;

    В этой переменной лежит возвращаемое функцией значение, и расшифровку значения следует смотреть в описании соответствующей функции обычной, синхронной библиотеки SysLibFile.lib.

Функции работы с файлами в асинхронном режиме:

  • OwenFileOpenAsync – используется для открытия существующего или создания нового файла. Выход hFile (DWORD) сообщает дескриптор файла. Он используется другими функциональными блоками для работы с данным файлом;

  • OwenSysFileCloseAllOpenAsync – функциональный блок закрывает все открытые файлы. Имена или дескрипторы файлов не нужно сообщать, поскольку они все уже известны системе;

  • OwenSysFileCloseAsync – используется для закрытия файла. После закрытия файл освобождается для других процессов, дескриптор более не имеет значения;

  • OwenSysFileWriteAsync – используется для записи данных в файл. Файл должен быть предварительно успешно открыт с помощью SysFileOpenAsync;

  • OwenSysFileReadAsync – используется для чтения данных из файла. Файл должен быть предварительно успешно открыт с помощью SysFileOpenAsync;

  • OwenSysFileDeleteAsync – удаление файла с заданным именем;

  • OwenSysFileGetPosAsync – возвращает позицию (смещение от начала файла в байтах) записи и чтения в файл;

  • OwenSysFileSetPosAsync – задает позицию записи и чтения в файл;

  • OwenSysFileEOFAsync – возвращает TRUE, если текущая позиция чтения/записи находится в конце файла, иначе возвращает FALSE;

  • OwenSysFileGetSizeAsync – возвращает размер файла с заданным именем;

  • OwenSysFileGetTimeAsync – возвращает время создания, последнего доступа и последнего изменения файла с заданным именем;

  • OwenSysFileCopyAsync – копирование файла с заданным именем в файл с другим именем;

  • OwenSysFileRenameAsync – переименование (перенос) файла с заданным именем.

Функция OwenSysFileOpenAsync

Функция OwenSysFileOpenAsync возвращает значение типа DWORD и используется для открытия существующего или создания нового файла. Возвращаемое значение – дескриптор файла, либо «0» в случае ошибки. Дескриптор файла используется для доступа к открытому файлу другими функциями библиотеки. В некоторых случаях сообщение об ошибке имеет вид «16#FFFFFFFF» (в десятичной системе это число 4294967295 при интерпретации как беззнакового числа или число –1 при интерпретации как числа со знаком).

Входные переменные:

  • FileName типа STRING – имя файла;

  • Mode типа STRING – режим работы с файлом, может имеет следующие значения:

    • w+ – если требуется открыть файл только для записи. Если файл существовал до начала записи, то он будет стерт и создан пустой файл с заданным именем;

    • r – если требуется открыть файл только для чтения;

    • a – аналогично w+, но если файл существовал до начала операции, данные будут дописываться в конец файла.

Пример

Открытие файла в режиме «а» и разрешение на переход к дальнейшим операциям с файлом на языке ST:

0: res:=OwenFileOpenAsync(filename,'a',ADR(handle)); IF res=ASYNC_WORKING THEN     state:=1; END_IF 1: res:=OwenFileOpenAsync(filename,'a',ADR(handle)); IF res=ASYNC_DONE THEN     IF handle<>0 THEN         state:=2;     ELSE         state:=0;     END_IF ELSIF res<0 THEN     state:=0; END_IF
Функция OwenSysFileCloseAsync

Функция OwenSysFileCloseAsync закрывает файл, открытый ранее функцией OwenSysFileOpenAsync, и возвращает значение типа BOOL, которое равно TRUE при успешном закрытии файла, иначе (например, если файл не был открыт) FALSE. Входным параметром является дескриптор закрываемого файла.

Входные переменные:

  • hFile типа DWORD – дескриптор файла, число, которое возвратила функция OwenSysFileOpenAsync.

Пример

Закрытие файла в режиме «а» и разрешение на переход к дальнейшим операциям с файлом на языке ST:

res:=OwenFileCloseAsync(handle,ADR(result)); IF res=ASYNC_WORKING THEN     state:=7; ELSE     state:=0; END_IF 7: res:=OwenFileCloseAsync(handle,ADR(result)); IF res=ASYNC_DONE THEN     IF result=0 THEN         state:=8;     ELSE         state:=8;     END_IF ELSIF res<0 THEN     state:=8; END_IF
Функция OwenSysFileWriteAsync

Функция OwenSysFileWriteAsync записывает данные в файл, открытый с помощью OwenSysFileOpenAsync, и возвращает значение типа DWORD – количество записанных байт данных.

Входные переменные:

  • File типа DWORD – дескриптор файла, число, которое возвратила функция OwenSysFileOpenAsync;

  • Buffer – адрес буфера, содержащего данные, которые необходимо записать в файл, число, которое возвратила функция ADR с аргументом – именем переменной-буфера, тип – массив, например, массив байт, или строка;

  • Size типа DWORD – размер буфера в байтах, может использоваться функция SIZEOF с аргументом (именем переменной-буфера).

Пример

Запись значения «buffout» в файл в режиме «а» на языке ST:

2: res:=OwenFileWriteAsync(handle,ADR(bufout),14,ADR(result)); IF res=ASYNC_WORKING THEN     state:=3; ELSE     state:=6; END_IF 3: res:=OwenFileWriteAsync(handle,ADR(bufout),14,ADR(result)); IF res=ASYNC_DONE THEN     IF result=14 THEN         state:=4;     ELSE         state:=6;     END_IF ELSIF res<0 THEN     state:=6; END_IF
Функция OwenSysFileReadAsync

Функция OwenSysFileReadAsync считывает данные из файла, открытого с помощью функции OwenSysFileOpenAsync, и возвращает значение типа DWORD – количество считанных байт данных.

Входные переменные:

  • File типа DWORD – дескриптор файла, число, которое возвратила функция OwenSysFileOpenAsync;

  • Buffer – адрес буфера, содержащего данные, которые необходимо записать в файл. Число, которое возвратила функция ADR с аргументом – именем переменной-буфера. Тип – массив, например, массив байт или строка;

  • Size типа DWORD – размер буфера в байтах, может использоваться функция SIZEOF с аргументом – именем переменной-буфера.

Пример функции аналогичен функции OwenSysFileWriteAsync.

Функция OwenSysFileDeleteAsync

Функция OwenSysFileDeleteAsync удаляет файл и возвращает значение типа BOOL: TRUE в случае успешного удаления или FALSE в случае ошибки.

Входная переменная FileName типа STRING – имя удаляемого файла.

Функция OwenSysFileGetPosAsync

Функция OwenSysFileGetPosAsync возвращает число типа DWORD – фактическое смещение в байтах от начала до текущей позиции в открытом файле с заданным дескриптором. Число определяет «место» в файле, откуда будет считана или куда будет записана информация, если операция чтения или записи будет произведена без дополнительного предварительного смещения позиции (см. функцию OwenSysFileSetPosAsync).

Входная переменная File типа DWORD – дескриптор открытого файла.

Функция OwenSysFileSetPosAsync

Функция OwenSysFileSetPosAsync устанавливает для открытого файла с заданным дескриптором позицию чтения (записи) с помощью заданного смещения и возвращает значение типа BOOL. Если позиция была установлена, то возвращается значение TRUE, иначе возвращается FALSE.

Входные переменные:

  • File типа DWORD – дескриптор открытого файла, в котором необходимо задать текущую позицию чтения (записи);

  • Pos типа DWORD – позиция чтения (записи), заданная смещением в байтах от начала файла.

Функция OwenSysFileEOFAsync

Функция OwenSysFileEOFAsync определяет, достигнут ли конец файла, и возвращает значение типа BOOL, равное TRUE, если текущим положением позиции чтения (записи) является конец файла, иначе FALSE.

Входная переменная File типа DWORD – дескриптор открытого файла, в котором проверяется достижение текущей позицией конца.

Функция OwenSysFileGetSizeAsync

Функция OwenSysFileGetSizeAsync возвращает размер файла в байтах в виде значения типа DWORD.

Входная переменная FileName типа STRING – имя файла.

Функция OwenSysFileGetTimeAsync

Функция OwenSysFileGetTimeAsync определяет значения даты и времени создания, последнего изменения и последнего доступа к файлу, и возвращает значение типа BOOL: TRUE в случае успешного завершения выполнения функции и FALSE в случае любой ошибки (например, доступа к файлу). Для хранения трех значений времени в одной переменной используется структура FileTime, приведенная ниже.

TYPE FILETIME     STRUCT         dtCreation:DT; (* Дата и время создания файла *)         dtLastAccess:DT; (* Дата и время последнего доступа *)         dtLastModification:DT; (* Дата и время последнего изменения файла *)     END_STRUCT END_TYPE

Входные переменные:

  • FileName типа STRING – имя файла;

  • ftFileTime типа POINTER TO FILE TIME – адрес структуры, в которую будут сохраняться считанные данные о времени создания файла, последнего доступа к нему и его последней модификации. Извлекается с помощью функции ADR.

Пример

Программа на языке ST, считывающая структуру со значениями времени создания файла:

VAR     file_time:POINTER TO FILETIME;     returnvalue:POINTER TO DWORD;     w: FILETIME; END_VAR 8:     OwenFileGetTimeAsync(filename, file_time, returnvalue);     w:=file_time; ELSE     state:=0; END_CASE
Функция OwenSysFileCopyAsync

Функция OwenSysFileCopyAsync копирует один файл в другой (файлы задаются именами) и возвращает значение типа UDINT, в котором содержится количество действительно скопированных байт.

Входные переменные:

  • FileDest типа STRING – имя копии файла (файл-приемник);

  • FileSource типа STRING – имя копируемого файла (файл-источник).

Функция OwenSysFileRenameAsync

Функция OwenSysFileRenameAsync переименовывает файл и возвращает значение типа BOOL: TRUE в случае успешного переименования или FALSE в случае ошибки. Ошибка может возникать, например, если попытаться переименовать открытый файл.

Входные переменные:

  • FileOldName типа STRING – текущее имя файла;

  • FileNewName типа STRING – новое имя файла.

Модуль контроля выхода в интернет OwenLibNetControl.lib

Модуль-библиотека OwenLibNetControl.lib предназначена для управления сетевыми устройствами в ПЛК. Библиотека позволяет включать/выключать интерфейсы (если это разрешено), получать статус интерфейса, его тип, атрибуты и адреса интерфейса (MAC, IP, APN, телефонный номер и т. п.). Библиотека подключается аналогично стандартным библиотекам CODESYS.

В ПЛК интерфейсы Ethernet и PPP имеют, соответственно, номера 0 и 1.

Функция START_IFACE
Graphic
Графические отображение функции START_IFACE

Входная переменная IFACE типа DWORD – номер запускаемого интерфейса.

Выходная переменная START_IFACE типа BOOL – значение, указывающее на успешность выполнения команды. Если возвращается значение «0», запуск произошел успешно.

Функция STOP_IFACE
Graphic
Графические отображение функции STOP_IFACE

Входная переменная IFACE типа DWORD – номер закрываемого интерфейса.

Выходные переменные STOP_IFACE типа BOOL – значение, указывающие на успешность закрытия интерфейса. Если возвращается значение «0», интерфейс закрыт успешно.

Функция GET_IFACE_INFO
Graphic
Графические отображение функции GET_IFACE_INFO

Входная переменная IFACE типа DWORD – номер интерфейса.

Выходная переменная GET_IFACE_INFO типа POINTER TO IFACE_INFO возвращает указатель на структуру, содержащую информацию об интерфейсе:

TYPE IFACE_INFO: STRUCT     name: STRING(79); (* Имя интерфейса *)     itype: IFACE_TYPES; (* Тип интерфейса *)     addreses: ARRAY[0..9] OF ARRAY[0..31] OF BYTE; (* Все адреса интерфейса (МАС, IP, имя порта) список зависит от типа *)     atributes: IFACE_ATRIBUTES; (* Атрибуты интерфейса *) END_STRUCT END_TYPE

Поля структуры параметра GET_IFACE_INFO:

  • IFACE_TYPES – типы интерфейсов, поле может принимать следующие значения:

    • NO_IFACE 0 – нет интерфейса;

    • ETHERNET_IFACE 1 – интерфейс Ethernet;

    • PPP_IFACE 2 – использование модема.

  • IFACE_ATRIBUTES – атрибуты интерфейса, поле может принимать следующие значения:

    • HAVE_STATUS 1 – возвращает статус;

    • AUTOSTART 2 – запускается автоматически;

    • USE_DHCP 4 – настроен в режиме DHCP.

  • IFACE_ADDRESS_TYPES – массив из 10 полей типа Array [0..31] of BYTES, каждый элемент массива содержит информацию об определенных адресах интерфейса:

    • IFACE_MAC_ADDRESS 0 – массив, содержащий МАС-адрес;

    • IFACE_IP_ADDRESS 1 – массив, содержащий IP-адрес;

    • IFACE_IP_MASK 2 – массив, содержащий маску сети;

    • IFACE_IP_GATE 3 – массив, содержащий шлюз сети;

    • IFACE_TEL_NUMBER 4 – массив, содержащий телефонный номер текущего дозвона;

    • IFACE_APN_NAME 5 – массив, содержащий адрес APN-оператора.

Функция GET_IFACE_STATUS
Graphic
Графические отображение функции GET_IFACE_STATUS

Входная переменная IFACE типа DWORD – номер интерфейса.

Выходная переменная GET_IFACE_STATUS типа IFACE_STATUS возвращает статус модема, битовые поля которого имеют следующие значения, по битам:

  • IFACE_NOT_PRESENT – если возвращается 0, то интерфейс не запущен;

  • IFACE_PRESENT – 0 – интерфейс запущен;

  • IFACE_CONFIGURED – 1 – интерфейс настроен (есть настройки);

  • IFACE_CONNECTED – 2 – есть физическое соединение;

  • IFACE_WORKING – 3 – есть логическое соединение;

  • IFACE_SEND_DATA – 4 – в течение 5 секунд была отправлена посылка;

  • IFACE_READ_DATA – 5 – в течение 5 секунд была получена посылка;

  • IFACE_HAVE_ERROR – 6 – есть ошибки;

  • IFACE_NO_IFACE – если возвращается 16#FFFF, то такого интерфейса нет.

Модуль получения серийного номера USB-устройства OwenLibUSBSerial.lib

Модуль OwenLibUSBSerial.lib предназначен для получения статуса подключенных к USB-Host устройств и доступа к их серийному номеру. Модуль содержит только одну функцию – GETUSBSERIAL.

Graphic
Графическое отображение функции GETUSBSERIAL

Входные переменные:

  • Unit типа DINT – номер устройства, обычно 0;

  • Buffer типа POINTER TO BYTE – указатель на массив размером 24 байт, куда будет записан серийный номер.

Выходной параметр GetUSBSerial типа DINT возвращает значения:

  • 0 – чтение серийного номера прошло успешно;

  • (–1) – устройство USB не подключено;

  • (–2) – серийный номер прочитан с ошибкой.

Расшифровка массива, содержащего серийный номер USB:

Значения массива
OffsetFieldSizeValueDescription
0

bLength

1

N+2

Size of this descriptor in bytes

1

bDescriptorType

1

Constant

STRING Descriptor Type

2

wLANGID[0]

2

Number

LANGID code zero

N

wLANGID[x]

2

Number

LANGID code x

Расшифровка строки (вместо серийного номера):

Значения строки
OffsetFieldSizeValueDescription
0bLength1NumberSize of this descriptor in bytes
1bDescriptorType1ConstantSTRING Descriptor Type
2bString NNumberUNICODE encoded string

Модуль работы с HID-устройствами OwenLibHidEvent.lib

Модуль OwenLibHidEvent.lib предназначен для получения статуса подключенных к USB-Host HID-устройств. Общее число Mass Storage Device и HID-устройств не должно превышать 1 для каждого типа. Остальные устройства игнорируются. Инициализация устройств в порядке подключения.

Модуль содержит только одну функцию – GETHIDEVENT.

Graphic
Графическое представление функции GETHIDEVENT

Входная переменная pHIDEv типа POINTER TO BYTE – указатель на массив, в котором будут храниться данные. Размер массива должен быть равен 17 байтам.

Выходная переменная GetUSBSerial типа DINT возвращает указатель на массив, где хранятся данные:

  • Code:DINT; (*или xChange для мыши*) (*Для клавиатуры Code трактовать как DWORD*);

  • Value:DINT; (*или yChange для мыши*) (*Для клавиатуры Value трактовать как DWORD. Индицирует нажата/отпущена*);

  • WheelChange:DINT; (*как и x(y)Change относительное перемещение*);

  • ButtonState:DINT; (*биты нажатых кнопок*);

  • Event_type:BYTE; (*==1 - мышь ==2 - клавиатура*).

Модуль PING OwenLibPing.lib

Модуль OwenLibPing.lib предназначен для посылки команды «ping» по указанному адресу. Ответ ожидается в течение заранее установленного тайм-аута.

Функция SENDPING
Graphic
Графическое представление функции SENDPING

Входные переменные:

  • IFace типа DWORD – тип используемого интерфейса (0 – Ethernet, 1 – PPP);

  • IP_addr типа DWORD – IP-адрес устройства, которое требуется пинговать (например, 16#0A020B32 – устройство с IP-адресом 10.02.11.50);

  • timeout – предустановленный тайм-аут пинга в мс (минимум 50 мс, максимум 25000 мс).

Выходная переменная SendPing типа DINT возвращает статус пинга:

  • PING_SERVICE_READY:=1(*?*);

  • PING_SERVICE_IFACE_NOT_READY:=-1 (*интерфейс не поднят*);

  • PING_SERVICE_SENDING:=2 (*?*);

  • PING_SERVICE_TIMEOUT:=-2 (*таймаут ответа*);

  • PING_SERVICE_ANSV_RECEIVED:=3 (*?*);

  • PING_SERVICE_BUSY:=-3 (*запрос был послан,интерфейс занят*);

  • PING_SERVICE_DEST_UNREACHABLE:=-4 (*?*).

Функция GETPINGSTATUS
Graphic
Графическое представление функции GETPINGSTATUS

Функция не имеет входных переменных.

Выходная переменная GetPingStatus типа DINT возвращает статус. Если ошибка или PING_SERVICE_ANSV_RECEIVED, то после чтения статус сбрасывается в PING_SERVICE_READY.

Модуль таймера Timer.lib

Модуль Timer.lib используется для работы со встроенным таймером, по прерыванию которого может быть вызван отдельный программный элемент (POU), не связанный с выполнением основной программы ПЛК.

Подробное описание модуля находится в разделе и на странице CODESYS V2 на сайте owen.ru.

Модуль RetainControlLib.lib

Модуль RetainControlLib.lib используется для принудительной записи RETAIN по команде из пользовательской программы.

Примечание
Использование модуля RetainControlLib.lib возможно только в режиме записи по событию (SetCyclicMode установлен в значение «0»).

Модуль имеет одну функцию SAVENOW, которая служит для принудительной записи RETAIN-переменных.

Graphic
Графическое представление функции SAVENOW

Функция не имеет входных переменных.

Выходная переменная SAVENOW типа BOOL – флаг, возвращаемый функцией по завершению записи.

Внимание
Использование функции приостанавливает выполнение программы ПЛК до завершения полной записи RETAIN-переменных. Запись длится около 30 мс, поэтому рекомендуется вызывать функцию SAVENOW только когда значения RETAIN-переменных были изменены.
Пример
PROGRAM PLC_PRG VAR     xSaveRetain: BOOL; (* Переменная управления сохранением RETAIN.                Запись происходит по переднему фронту *)     xDone: BOOL; (* Флаг завершения записи *) END_VAR VAR RETAIN     rSetPoint: REAL; (* RETAIN переменная, которую хотим принудительно                                    сохранить *) END_VAR IF xSaveRetain = TRUE THEN     xDone := SaveNow();     IF xDone = TRUE THEN         xSaveRetain := FALSE;     END_IF END_IF

Создание и использование дополнительных программных модулей

Пользователь может разрабатывать и применять дополнительные программные модули. Такая необходимость может возникнуть в том случае, если применяемая программа должна содержать алгоритмы, которые не могут быть написаны с использованием готовых программных модулей.

Для создания пользовательского программного модуля следует:

  1. Создать новый проект (см. раздел).

  2. В проекта создать объект типа «Функциональный блок» (см. рисунок).

    Graphic
    Создание нового функционального блока
  3. Написать программу функционального блока, которую предполагается использовать в качестве пользовательского программного модуля.

    Graphic
    Пример кода нового программного компонента
  4. Удалить из проекта программный компонент PLC_PRG (команда «Удалить объект» контекстного меню объекта в дереве объектов), оставив в нем только созданный функциональный блок.

  5. Сохранить функциональный блок командой Файл → Сохранить как, задав в открывшемся окне в поле «Тип файла» тип файла – «Внешняя библиотека (*.lib)» и нажав кнопку «Сохранить».

  6. Сохраненный функциональный блок подключить к разрабатываемому проекту аналогично тому, как подключаются готовые программные модули (см. раздел).

  7. Новый функциональный блок отобразится в перечне доступных стандартных функциональных блоков окна «Ассистент ввода» и может быть добавлен в текущий проект аналогично тому, как это выполняется для функциональных блоков из состава поставляемых библиотек (см. раздел).

Graphic
Пользовательский модуль в окне «Ассистент ввода»

Многозадачность

По умолчанию в проекте всегда создается единственная «главная» программа PLC_PRG, выполняемая циклически (см. раздел). В проекте можно явно определить несколько задач с различными условиями выполнения. Задача – это единица обработки программы.

Каждая задача имеет:

  • Название – служит идентификатором задачи;

  • Тип – определяет условие вызова задачи. Условием может служить время (циклическое или свободное freewheeling выполнение), внутреннее или внешнее событие (например, превышение заданного порога глобальной переменной или прерывание в контроллере);

  • Приоритет – задается числом (от 1 до 15) и в сочетании заданными условиями вызова задачи определяет хронологический порядок выполнения задач.

Для каждой задачи назначается ряд программ, которые будут в ней выполняться. Если задача выполняется в текущем цикле, то выполняются все включенные в нее программы (по одному циклу каждая). Порядок выполнения задач определяется комбинацией приоритетов и условий вызова задач.

Для каждой задачи можно задать контроль времени выполнения («сторожевой таймер»). Возможности его использования и настройки определяются целевой платформой.

Выполнение каждой задачи можно разрешить или запретить независимо от других.

Конфигурирование задач

Задачи определяются в окне «Конфигурация задач», которое открывается на вкладке «Ресурсы» организатора объектов.

Graphic
Окно «Конфигурация задач»

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

Для добавления в проект новой задачи следует выбрать команду Вставка → Вставить задачу главного меню или команду «Вставить задачу» контекстного меню дерева задач.

После добавления задачи в проект она включается в дерево задач и снабжается пиктограммой, отображающей тип задачи:

  • Graphic – выполняемые по системным событиям (Старт, Стоп, Сброс);

  • Graphic – циклически выполняемые задачи;

  • Graphic – выполняемые по времени (свободному);

  • Graphic – выполняемые по событию (связанному с глобальными переменными проекта);

  • Graphic – выполняемые по внешнему событию.

В правой части окна отображаются поля задания атрибутов текущей (выбранной в дереве задач) задачи. Набор полей соответствует атрибутам задачи выбранного типа.

Задавая значения атрибутов, можно конфигурировать свойства задач (Task properties), вызова программ (Program call), задавать связи с системными событиями (System events). Эта возможность зависит от выбора целевой платформы. Она должна быть поддержана в системе исполнения и разрешена в опциях целевой системы. Если стандартный набор настроек расширен специфическими параметрами, они будут представлены на отдельной вкладке «Parameter» в правой части окна.

Внимание
Если в окне «Конфигурация задач» определена последовательность выполнения задач, то проект может не содержать PLC_PRG. В противном случае удалять или переименовывать программный компонент PLC_PRG нельзя. PLC_PRG является главной программой в однозадачном проекте.

Конфигурирование задач типа «Системные события», то есть выполняемых по одному из возможных системных событий включает:

  • Указание требуемого события – установкой флажка в поле переключателя в требуемой строке списка системных событий;

  • Указание имени программного компонента (POU), который должен выполняться по наступлению события (ввод с клавиатуры в столбце «Вызываемый POU» в требуемой строке списка системных событий). Если POU с указанным именем не существует в текущем проекте, то активируется кнопка «Создать POU <Имя POU>». По нажатию этой кнопки автоматически формируется программный компонент проекта, имеющий указанное имя. Он может редактироваться так же, как другие POU.

Конфигурирование задач других типов включает:

  • указание типа задачи – «Циклическая/Свободная/По событию/По внешнему событию;

  • для задачи циклического типа – указание интервала выполнения;

    Graphic
    Указание интервала выполнения для задачи циклического типа
  • для задачи, выполняемой по событию – указание события, по нажатию кнопки у правого края поля открывается окно «Ассистент ввода», в котором можно выбрать требуемую переменную;

    Graphic
    Указание переменной для задачи, выполняемой по событию
  • для задачи, выполняемой по внешнему событию – указание события, по нажатию кнопки у правого края поля открывается список задач, в котором можно выбрать требуемую задачу;

    Graphic
    Указание переменной для задачи, выполняемой по внешнему событию
  • для задач любого типа задание параметров контроля времени выполнения («сторожевого таймера»), если эта опция доступна в используемом ПЛК.

    Graphic
    Указание параметров сторожевого таймера
Примечание
Не следует использовать одни и те же строковые функции в разных задачах, что может привести к ошибкам перезаписи данных.

В режиме «Online» выполнение задач можно наблюдать в виде графической диаграммы.

Обработка событий

Системные события, которые контроллер способен обрабатывать (см. рисунок):

  • start – вызов функции, если программа начала выполняться (после загрузки в ОЗУ автоматически,либо по команде пользователя). Функция выполняется до начала выполнения первого цикла программы;

  • stop – вызов функции, если программа была остановлена. Функция выполняется сразу после получения системой команды остановки программы (из отладочной среды или с помощью управляющего тумблера на передней панели);

  • before_reset – вызов функции, если был произведен горячий рестарт системы с помощью трехпозиционного переключателя (переключатель удерживался пять и более секунд в положении «Сброс»). Функция выполняется до перезагрузки контроллера;

  • after_reset – вызов функции, если был произведен горячий рестарт системы с помощью трехпозиционного переключателя (переключатель удерживался пять и более секунд в положении «Сброс»). Функция выполняется после перезагрузки контроллера.

  • debug_loop – вызов функции, если включен режим отладки и выполнение программы дошло до отладочной точки останова.

  • Timer – вызов функции каждые 20 микросекунд.

Функции обработки событий должны иметь параметры, указанные во вкладке «Системные события» окна «Конфигурация задач». В случае с контроллером ПЛК110 функции обработки событий имеют одинаковый набор параметров: входными параметрами являются dwEvent, dwFilter и dwOwner типа INT, функция выдает значение типа WORD (см. Помощь по CODESYS – «Система программирования CODESYS» – «Ресурсы» – «Конфигуратор задач» – «Системные события»).

Отладка

Опция отладки заставляет компилятор формировать дополнительный код, упрощающий поиск ошибок. Опция «Отладочный код» включается установкой флажка переключателя «Отладочный код» в окне «Опции (Options)», вызываемом командой Проект → Опции главного меню на вкладке Генератор кода.

Graphic
Окно «Опции…», вкладка «Генератор кода»

Точки останова

Точки останова – это места, в которых выполнение программы будет приостанавливаться, что позволяет просмотреть значения переменных на определенном этапе работы программы. Точки останова можно задавать во всех редакторах. В текстовом редакторе точка останова устанавливается на номер строки, в языках FBD и LD – на графический элемент, в языке SFC – на шаг.

Внимание
Система исполнения CODESYS SP32 Bit Full автоматически деактивирует сторожевой таймер задачи, если она выходит на точку останова.

Пошаговое выполнение

Примечание

Подробнее о пошаговом выполнении можно узнать из встроенной помощи CODESYS:

  1. Вызвать справку (F1 или в главном меню → Справка → Содержание…).

  2. Выбрать в содержании Система программирования CODESYS → Что есть что в CODESYS → Отладка и Online-функции.

Пошаговое выполнение позволяет проверить логическую правильность программы. Под шагом подразумевается:

  • в языке IL – выполнить программу до следующего оператора CALL, LD или JMP;

  • в языке ST – выполнить следующую инструкцию;

  • в языках FBD, LD – выполнить следующую цепь;

  • в языке SFC – продолжить действие до следующего шага.

Выполнение по циклам

Команда Онлайн → Один цикл выполняет один рабочий цикл и останавливает контроллер после выполнения.

Эмуляция

Режим эмуляции последовательно включается и отключается выбором команды Онлайн → Режим эмуляции главного меню. Включенный режим маркируется установленным флажком в строке главного меню и записью «Эмул.» в строке состояния главного окна.

Во время эмуляции созданная программа выполняется не в ПЛК, а в ПК, на котором запущено ПО CODESYS. В режиме эмуляции доступны все функции онлайн, что позволяет проверить логическую правильность программ, не используя контроллер.

Внимание
В режиме эмуляции функции внешних библиотек не выполняются.

Бортжурнал (Log)

«Бортжурнал (Log)» хронологически записывает действия пользователя, внутренние сообщения системы исполнения, изменения состояния и исключения в режиме «Online», что позволяет анализировать условия возникновения ошибки во время отладки программы.

Записи «Бортжурнала (Log)» можно просмотреть в режиме, вызываемом командой «Бортжурнал (Log)» дерева ресурсов проекта на вкладке «Ресурсы» организатора объектов.

Сложные структуры данных

Кроме стандартных типов данных (см. раздел) в проектах можно использовать определяемые пользователем сложные типы данных (массивы, перечисления, структуры и некоторые другие) – переменные или постоянные объекты, которые имеют внутреннюю структуру, доступную программисту. Переменные или постоянные объекты позволяют произвольно конструировать требуемые структуры данных из небольшого набора предопределенных типов.

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

Массив

Элементарные типы данных могут образовывать одномерные, двумерные и трехмерные массивы. Массивы могут быть объявлены в разделе объявлений POU или в списке глобальных переменных.

Путем вложения массивов можно получить многомерные массивы, но не более девятимерных («ARRAY[0..2] OF ARRAY[0..3] OF …»). Синтаксис:

<Имя_массива>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>] OF <базовый тип>

ll1, ll2, ll3 указывают нижний предел индексов, ul1, ul2 и ul3 указывают верхние пределы. Индексы должны быть целого типа, нельзя использовать отрицательные индексы.

Перечисление

Перечисление – это тип данных, задающий несколько строковых псевдонимов для числовых констант.

Перечисление доступно в любой части проекта, даже при локальном его объявлении внутри POU. Поэтому рекомендуется создавать все перечисления на вкладке «Типы данных» организатора объектов.

Объявление перечисления должно начинаться с ключевого слова TYPE и заканчиваться ключевым словом END_TYPE. Синтаксис:

TYPE     <Имя_перечисления>:(<Элемент_0> ,< Элемент _1>, ..., < Элемент_n>); END_TYPE

Переменная типа <Имя_перечисления> может принимать только перечисленные значения. Во время инициализации переменная получает первое значение из заданного списка. Если числовые значения элементов перечисления не указаны явно, то им присваиваются последовательно возрастающие числа, начиная с 0. Фактически элемент перечисления – это число типа INT, и работать с ними можно точно так же. Можно напрямую присвоить число переменной типа перечисление.

Элемент, уже включенный в перечисление, нельзя повторно включать в другое перечисление.

Структура

Структура создается командой «Добавить объект» контекстного меню во вкладке «Типы данных» организатора объектов. Новый объект отображается в дереве объектов, окно задания параметров объекта открывается в рабочей области главного окна.

Graphic
Окно задания структуры

Объявление должно начинаться с ключевых слов TYPE и STRUCT и заканчиваться ключевыми словами END_STRUCT и END_TYPE. Синтаксис:

TYPE <Имя _структуры>: STRUCT     <Объявление переменной 1>     ...     ...     <Объявление переменной n> END_STRUCT END_TYPE

<Имя _структуры> образует новый тип данных, который может быть использован в любой части проекта наряду с базовыми типами.

Допускаются вложенные структуры, но запрещено размещать элементы структуры по прямым адресам (в частности, недопустимы AT объявления).

Для доступа к элементам структуры используется следующий синтаксис:

<Имя_структуры>.<Имя_компонента>
Пример

Если структура «Week» содержит компонент «Monday», то обращение к нему будет выглядеть:

Week.Monday

Указатель

Указатель позволяет работать с адресами переменных или функциональных блоков. Синтаксис:

<Имя_указателя>: POINTER TO <Тип данных/Функциональный блок>;

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

Визуализация проекта

Визуализация проекта предназначена для графического представления объекта управления и непосредственно связана с созданной пользовательской программой. Редактор визуализации предоставляет набор готовых графических элементов, которые могут быть связаны требуемым образом с переменными проекта.

Пример

Если в пользовательской программе доступна переменная, связанная с уровнем заполнения некоторой емкости, то в визуализации ее можно изобразить графическим элементом в виде полосы, которая, в зависимости от значения переменной проекта, будет изменять свою длину и/или цвет.

В режиме «Online» представление элементов визуализации на экране изменяется в зависимости от значений переменных.

Свойства отдельных элементов визуализации, а также визуализации в целом устанавливаются в соответствующих диалоговых окнах конфигурации и в диалоговом окне свойств объекта, где определяется начальный вид элементов и выполняется привязка динамических свойств к значениям переменных проекта.

Graphic
Контекстное меню элемента визуализации
Graphic
Окно конфигурации элемента визуализации

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

Способы использования созданной визуализации:

  • ПО Win32 CODESYS HMI отображает формы визуализации на ПК в полноэкранном режиме. ПО Win32 CODESYS HMI не распространяется бесплатно в отличие от CODESYS;

  • Web-визуализация отображает данные и предоставляет возможность удаленного управления через Интернет;

  • для контроллеров со встроенным дисплеем доступна целевая визуализация.

Подробнее о создании окон визуализации см. документ «Визуализация CoDeSys V2.3. Дополнение к руководству пользователя по программированию ПЛК» на странице CODESYS V2 на сайте owen.ru.

CODESYS HMI

CODESYS HMI – это система исполнения визуализаций созданных в CODESYS.

Если проект содержит визуализацию, то во время запуска CODESYS HMI визуализация будет воспроизводиться в полноэкранном режиме. Пользователь сможет использовать заданные в программе функции управления и отображения с помощью мыши и клавиатуры, даже если проект CODESYS защищен от чтения.

Редактирование программ, меню и панели инструментов CODESYS недоступно пользователю, поэтому все элементы визуализации должны соответствовать необходимым функциям управления и отображения данных. Для этого в диалоге конфигурации элементов визуализации предусмотрены специальные возможности ввода для CODESYS HMI.

Конфигурирование контроллера

Память ввода-вывода

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

Внешние устройства обмениваются данными с пользовательской программой ПЛК через область памяти ввода-вывода ПЛК (%I и %Q). Память ввода-вывода включает дискретные и аналоговые входы и выходы, модули расширения функционала (в том числе организующие обмен информацией между ПЛК и отдельными приборами и устройствами, связанными по сети с ПЛК). Размер памяти ввода-вывода определяется типом лицензии CODESYS контроллера ПЛК (см. раздел).

Память ввода-вывода настраивается в окне редактора «Конфигурация ПЛК», которое вызывается на вкладке «Ресурсы» организатора объектов.

Graphic
Окно редактора «Конфигурация ПЛК»

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

Graphic
Параметры в окне редактора «Конфигурация ПЛК»
Примечание
Правая часть окна видна по умолчанию, но может быть скрыта выбором переключателя Дополнения → Свойства главного меню.

Корневой элемент конфигурационного дерева определяется используемым target-файлом. Если проект создается без установки настроек целевой платформы, или если в процессе создания проекта target-файл был заменен другим (т. е. был совершен переход на другую платформу), то вместо дерева конфигурации может отобразиться запись «Not found (Не найдено)». В этом случае следует выбрать команду Дополнения → Стандартная конфигурация главного меню, и в окне отобразится дерево конфигурации, соответствующее текущему target-файлу.

Конфигурация ПЛК определяет аппаратные средства системы. В дереве конфигурации задается распределение адресов входов/выходов контроллера, что определяет привязку проекта к аппаратным средствам. На основе описания конфигурации ПЛК CODESYS проверяет правильность задания МЭК адресов, используемых в программах, на их соответствие фактически имеющимся аппаратным средствам.

В дереве конфигурации отображаются элементы:

  • Модуль (элемент конфигурации) – независимая единица аппаратных средств. Модуль включает набор каналов ввода-вывода и (как и каждый отдельный канал) может иметь параметры. Каждый тип модуля имеет уникальный идентификатор. Модуль может иметь вложенные подмодули (подэлементы конфигурации);

  • Канал – данные ввода-вывода. Как правило, модуль имеет фиксированный набор каналов или подмодулей. Каждый канал имеет определенный МЭК тип и адрес. Для каждого канала автоматически выделяется определенное пространство памяти. Каждый канал имеет уникальный в пределах данной конфигурации ПЛК идентификатор;

  • Битовый канал – идентификатор отдельного бита в многобитном канале.

В конфигурации ПЛК присутствуют модули, отвечающие за структурирование областей ввода и/или вывода, каждый из которых может содержать вложенные подэлементы (подмодули и каналы). Для каналов могут быть назначены символические имена. Прямые МЭК адреса отображаются в конфигурации для каждого символического имени.

Адреса каналов в области ввода-вывода ПЛК рекомендуется определять в автоматическом режиме установкой флажка переключателя «Автоматическое вычисление адресов» на вкладке «Настройки». В случае изменения положения модуля адреса его каналов соответствующим образом смещаются. Альтернативой может служить фиксированная адресация. В случае фиксированной адресации для каждого модуля отводится фиксированное адресное окно, которое определяется физическим расположением (номером слота) модуля. Например: %QB0, %IB26, %MW4. Подробнее см. раздел «Конфигуратор ПЛК (PLC Configuration)» документа «Руководство пользователя по программированию ПЛК в CoDeSys V2.3» на сайте owen.ru.

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

Внимание
Добавление и удаление модулей конфигурации, а также настройка их параметров осуществляются при контроллере, отключенном от CODESYS. Для отключения контроллера следует вызвать команду Онлайн → Отключение главного меню или нажать кнопку Отключение (Graphic) на панели инструментов.
Внимание
Во время конфигурирования ПЛК следует иметь в виду, что можно изменять только значения переменных, лежащих в области вывода. Значения переменных из области ввода можно только считывать.

Если в процессе создания пользовательской программы требуется изменить используемый ПЛК (сменить настройки целевой платформы), то следует:

  1. В окне «Настройки целевой платформы» (вкладка «Ресурсы» организатора объектов) открыть настройки целевой платформы и выбрать новый target-файл (соответствующий новому ПЛК).

  2. Перейти в окно редактора «Конфигурация ПЛК» и выбрать команду Дополнения → Стандартная конфигурация главного меню.

Если предполагается переход от одного типа контроллера к другому, то переменные следует задавать в режиме («ресурсе») «Глобальные переменные». Во время задания стандартной конфигурации («Standard Configuaration») переменные, заданные в редакторе «Конфигурация ПЛК», пропадают, и ранее созданное распределение и именование переменных теряется. Глобальные переменные и их имена не будут потеряны, и в случае перехода к другому target-файлу достаточно только скорректировать адреса.

Предупреждение
Все переменные, привязанные к каналам конфигурации ПЛК, автоматически объявляются глобальными переменными.

Для объявления глобальной переменной следует:

  1. Открыть окно объявлений «Глобальные переменные» на вкладке «Ресурсы» организатора объектов.

  2. В контекстном меню окна объявлений «Глобальные переменные» выбрать команду «Авто объявление…» (см. рисунок).

    Graphic
    Команда «Авто объявление…»
  3. Задать и сохранить глобальную переменную в открывшемся окне автоматического объявления переменной (см. рисунок).

    Graphic
    Окно объявления переменной

Подробнее об объявлении и применении глобальных переменных см. раздел «Глобальные и конфигурационные переменные, файл комментариев» документа «Руководство пользователя по программированию ПЛК в CoDeSys V2.3», который доступен в разделе CODESYS V2 на сайте owen.ru.

Редактирование конфигурации ПЛК

Начальный вид конфигурации ПЛК задает файл конфигурации (*.cfg) ПЛК, расположенный в директории, определенной в установленном целевом файле (target-файле) и считываемый во время открытия проекта в CODESYS.

Редактирование элементов конфигурации ПЛК заключается в выполнении операций над элементами дерева окна редактора «Конфигурация ПЛК» (добавление, замена и удаление модулей, подмодулей и каналов) и редактировании значений параметров элементов дерева в правой части окна.

Типы и виды модулей в конфигурации

Виды модулей в конфигурации:

  • Фиксированные модули – заданы обязательно и не могут быть удалены или заменены. Доступно только редактирование их параметров;

  • Добавляемые модули – добавляются (заменяются, удаляются) пользователем в процессе конфигурирования. Модули подразделяются на типы:

    • SLOT – для модуля зарезервировано место, которое может быть занято или оставлено пустым. На одно зарезервированное место может быть установлен один модуль;

    • VAR (свободный) – можно установить любое количество модулей (с учетом физических возможностей области ввода-вывода).

Добавление подмодуля (подэлемента)

К модулям конфигурации могут быть добавлены подмодули («подэлементы»), которые расширяют функционал или изменяют алгоритм работы модуля.

Для добавления подмодуля (подэлемента) в текущую конфигурацию следует:

  1. Выделить требуемый модуль (элемент) конфигурации и нажатием ПКМ вызвать контекстное меню.

  2. Выбрать в контекстном меню требуемую команду Добавить Подэлемент → <Имя Подэлемента>. Выбранный подэлемент будет добавлен в редактируемую конфигурацию.

Другой способ добавления подмодуля (подэлемента) в текущую конфигурацию:

  1. Выделить требуемый элемент (модуль) конфигурации.

  2. Выбрать команду Вставка → Добавить Подэлемент → <Имя Подэлемента> в главном меню. Выбранный подэлемент будет добавлен в редактируемую конфигурацию.

Graphic
Добавление подмодуля в контекстном меню

Замена модуля (элемента)

Для замены модуля (элемента) в текущей конфигурации следует:

  1. Выделить требуемый модуль (элемент) конфигурации.

  2. В контекстном меню модуля выбрать команду Заменить Элемент → <Имя элемента>. Выбранный элемент заместит собою выделенный модуль (элемент) редактируемой конфигурации.

Другой способ замены модуля (элемента) в текущей конфигурации:

  1. Выделить требуемый модуль (элемент) конфигурации.

  2. Выбрать команду «Дополнения → Заменить элемент → <Имя элемента> в главном меню. Выбранный элемент заместит собою выделенный модуль (элемент) редактируемой конфигурации.

Graphic
Замена элемента в контекстном меню

Удаление модуля (элемента)

Для удаления модуля (элемента) из текущей конфигурации (можно удалить только добавляемые модули, фиксированные модули не могут быть удалены из конфигурации) следует:

  1. Выделить требуемый модуль в дереве конфигурации.

  2. Выбрать команду Удалить в контекстном меню модуля.

  3. В открывшемся окне запроса подтверждения операции нажать кнопку «Да» для подтверждения операции (или кнопку «Нет» для отказа от завершения операции удаления). Выделенный модуль будет удален из дерева конфигурации.

Размер файла конфигурации

Для определения размера файла конфигурации ПЛК следует:

  1. Отключить ПЛК от ПК.

  2. Создать копию проекта.

  3. Удалить из копии проекта все кроме файла конфигурации.

  4. Выбрать команду Онлайн → Создание загрузочного проекта. В папке с проектом появится файл <имя_проекта>.PRG. Размер файла примерно соответствует размеру файла конфигурации.

Верхний предел размера файла конфигурации – 150 Кб.

Если отведенных 150 Кб не хватает для проекта, то рекомендуется использовать для опроса входов и выходов библиотеки программных компонентов ModBus.lib и OwenModbusSlave.lib, см. раздел.

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

Параметры модулей

Параметры текущего (выделенного в дереве конфигурации) модуля отображаются на вкладках в правой части окна ресурса «Конфигурация ПЛК».

Вкладка «Базовые параметры»

В полях вкладки «Базовые параметры» отображаются значения параметров:

  • Идент. модуля – идентификационный номер модуля;

  • Идент. узла – положение модуля на его уровне иерархии в общей конфигурации. Значение можно редактировать, в таком случае аналогичные идентификаторы других модулей одного уровня иерархии будут сдвигаться;

  • Адрес входов, Адрес выходов, Адрес диагностики – адреса областей ввода-вывода (приводятся конкретные номера). Адреса могут использоваться для обращения при программировании, значения недоступны для редактирования;

  • Комментарий – произвольный текст комментария.

Graphic
Вкладка «Базовые параметры» окна редактора «Конфигурация ПЛК» для модуля дискретных выходов

Вкладка «Параметры модуля»

На вкладке «Параметры модуля» отображаются значения параметров, представленные в виде таблицы, содержащей столбцы:

  • Индекс;

  • Имя;

  • Значение (текущее);

  • По умолчанию – значение по умолчанию;

  • Мин. – минимальная величина диапазона возможных значений;

  • Макс. – максимальная величина диапазона возможных значений.

Примечание
Значения параметров по умолчанию, минимальные и максимальные значения – опциональные и не всегда присутствуют во вкладках параметров модулей.
Graphic
Вкладка «Параметры модуля» окна редактора «Конфигурация ПЛК», модуль дискретных входов

Для редактирования цифровых или символьных значений параметров следует щелкнуть ЛКМ на требуемом значении, после чего запись переключается в режим редактирования, и ввести требуемое значение параметра с клавиатуры.

Для редактирования значений параметров, которые могут принимать определенное значение из списка значений, следует щелкнуть ЛКМ кнопку с треугольной стрелкой, отображаемую рядом со значением параметра. Нажатие этой кнопки раскрывает список допустимых значений параметра, в котором следует выбрать требуемое значение. Значение будет подставлено в перечень параметров. После щелчка ЛКМ в любой другой области окна выбранное значение сохраняется в списке.

Каналы

В состав модуля входят каналы (битовые, байтовые, каналы для данных типа REAL или STRING).

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

Каналу и соответствующей ячейке памяти может быть присвоено имя. Правила наименования переменных:

  • имя может состоять из латинских букв, цифр и знака «_» (нижнее подчеркивание);

  • имя должно начинаться с буквы или знака «_»;

  • имя должно быть уникальным;

  • в некоторых случаях редактирование имен каналов может быть запрещено.

По присвоенному имени к переменной можно обращаться из программы. Переменную канала можно вызвать из программы по адресу, который установлен аппаратно (например, %IX 0.0.1).

Способы получения данных из канала:

  • после клика по ключевому слову АТ появляется поле ввода (см. рисунок) и в программе можно будет обращаться к данным по указанному имени канала (рекомендованный способ).

    Graphic
    Ввод и редактирование имени переменной канала
  • объявление необходимого количества глобальных переменных (в окне «Глобальные переменные» и связь добавленных переменных с областью ввода-вывода через МЭК адрес, указывающий в какой области памяти ввода-вывода хранится значение переменной;

Пример

Дискретный вход 1: DI1 AT %IX0.0.1: bool,

где DI1 – имя переменной, задаваемое пользователем;

AT – указатель, что свое значение переменная будет получать из памяти ввода-вывода;

%IX0.0.1 – указание на ячейку хранения значения в области памяти ввода-вывода.

  • обращение к значениям переменных в программе непосредственно через МЭК-адрес переменной в области ввода-вывода.

Внимание
Не рекомендуется использовать прямую адресацию с помощью ключевого слова АТ. В случае использования прямой адресации компилятор не проверяет за пользователем область памяти, на которую он ссылается во время объявления переменной. Переменным, размещаемым в области конфигурации ПЛК, следует присваивать имена непосредственно в области конфигурации. Дополнительное объявление переменных, объявленных в области конфигурации, не требуется.

Данные в полях вкладки «Базовые параметры» носят информационный характер и (за исключением текста комментария) не редактируются.

Для байтового канала отображаются следующие данные:

  • комментарий – характеристика канала (например, для модуля дискретных входов – «8 discrete inputs» = «8 дискретных входов»);

  • ID канала – идентификационный номер канала в общем списке;

  • размер – указывается в битах.

Для битового канала программа выводит только комментарий с номером битового канала, например, «Bit 3».

Задание времени цикла

Для изменения параметров времени цикла ПЛК следует:

  1. В дереве окна «Конфигурация ПЛК» выделить корневой элемент (например, «PLC110-60», см. рисунок).

  2. В области задания параметров перейти на вкладку «Параметры модуля».

    Graphic
    Задание минимального значения цикла работы ПЛК
  3. Задать требуемые значения параметров времени цикла ПЛК:

    • PLCName – имя контроллера, используемое в текущем проекте. Максимальная длина имени – 80 символов. Имя может содержать любые русские и латинские буквы и знаки и предназначено для хранения описаний элементов конфигурации ПЛК и их назначения непосредственно в ПЛК. Имя контроллера может быть использовано для идентификации контроллера в сети или для вывода на ЖК-панель.

    • MinCycleLength, ms (Минимальное значение цикла работы ПЛК, в мс) – параметр определяет минимальный период, с которым ПЛК выполняет полный цикл своей работы. Диапазон значений от 0 до 50 мс, значение по умолчанию – 1 мс.

      Программная реализация ПЛК обеспечивает вызов цикла ПЛК не чаще, чем 1 раз в установленное число миллисекунд. Поэтому, задавая значение параметра, следует учитывать, что после выполнения цикла ПЛК (т. е. после выполнения операции ввода данных, выполнения пользовательской программы и вывода данных) выполняется еще ряд сервисных функций (обеспечивающих сетевой обмен, работу с файлами и т. д.), на выполнение которых также требуется процессорное время. Если пользовательская программа ПЛК выполняется за время, превышающее 70–80 % от значения, заданного в параметре «MinCycleLength», то на выполнение сервисных операций контроллеру не остается времени. В таком случае возможны сбои, замедление или прекращение сетевого обмена с модулями ввода-вывода, сбои в записи архивов и т. д. Для исправления некорректной ситуации следует увеличить значение параметра.

      Узнать о времени выполнения пользовательской программы, сервисных функций и о времени простоя процессора можно в модуле «Statistic» (см. раздел).

      Для нормальной работы рекомендуется, чтобы время простоя процессора составляло не менее 20 % от значения, заданного в параметре MinCycleLength.

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

      Примечание
      Не рекомендуется устанавливать время цикла равное нулю.
    • MaxCycleLength, ms (Максимальное значение цикла работы ПЛК, в мс) – параметр определяет максимальное допустимое время, за которое ПЛК выполняет полный цикл своей работы. Если в процессе работы ПЛК заданная величина будет превышена (зависание программы или выполнение бесконечного цикла), то ПЛК будет принудительно перезагружен. То есть параметр MaxCycleLength задает время ожидания сторожевого таймера («WatchDog Timer»). Диапазон значений от 1000 до 10000 мс, значение по умолчанию – 1000 мс.

Фиксированные модули (элементы) конфигурации. Входы и выходы

Fast discrete inputs (Быстрые дискретные входы)

Модуль быстрых (высокочастотных) дискретных входов (Fast discrete input) отображает в области ввода-вывода значения, характеризующие состояния дискретных быстрых (высокочастотных) входов ПЛК.

Модуль имеет битовые каналы по числу быстрых входов.

Параметры модуля:

  • Name – имя элемента конфигурации ПЛК, используемое в текущем проекте. Максимальная длина имени – 80 символов, имя может содержать любые кириллические и латинские символы и предназначено для хранения описаний элементов конфигурации ПЛК и их назначения непосредственно в ПЛК. Значение имени может быть использовано, например, для вывода на ЖК-экран или панель;

  • Time of filtration fast inputs, mks (Время фильтрации быстрых входов, мкс) – период опроса состояния одного дискретного входа; задается в микросекундах (1 ед. = 1 мкс). Диапазон значений от 0 до 65535, значение по умолчанию – 10000 (10 мс).

    Принцип действия фильтрации:

    • в сдвиговом регистре в драйвере каждого дискретного входа накапливаются значения четырех последних состояний, полученных в результате опроса с периодом, заданным в параметре «Время фильтрации»;

    • если состояние битового канала дискретного входа равно 1 (TRUE), а количество единиц в сдвиговом регистре менее двух, то битовый канал переключается на 0 (FALSE);

    • если состояние битового канала равно 0 (FALSE), а количество единиц в сдвиговом регистре три и более, то битовый канал переключается на 1 (TRUE);

    • если количество единиц в сдвиговом регистре равно двум, то состояние битового канала дискретного входа не меняется.

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

Graphic
Параметры модуля быстрых (высокочастотных) дискретных входов (Fast Discrete input)
Замещающие элементы (модули)

Процедура замещения модуля описана в разделе.

Модули для замены модуля «Быстрые дискретные входы» (Fast discrete input):

  • Fast Counters (Высокочастотный Счетчик) (см. раздел);

  • Fast Encoders (Высокочастотный энкодер) (см. раздел);

  • Fast Z-Encoder+Counter (Высокочастотный Z-энкодер) только для ПЛК110-60 и ПЛК160 (см. раздел);

  • Fast discrete inputs - direct control (Прямое управление дискретными быстрыми входами) только для ПЛК110-60 (см. раздел).

Graphic
Модули для замены модуля «Быстрые дискретные входы» (Fast discrete input)
Fast Counters (Высокочастотный счетчик)

Высокочастотный счетчик – программный модуль, ведущий учет входных импульсов, поступающих на быстрые дискретные входы ПЛК, и экспортирующий учетные данные в программу ПЛК, в соответствующее место в области памяти входов-выходов.

Модуль «Высокочастотный счетчик» (Fast Counter) является модулем, замещающим модуль быстрых дискретных входов.

Значение быстрого счетчика каждый программный цикл увеличивается на количество импульсов на входе, которое он зарегистрировал в течение цикла. Счетчик обнуляется в случае достижения значения большего, чем 65535 (FFFF16), либо, если происходит не увеличение, а уменьшение значения счетчика, после того, как будет достигнут ноль, значение счетчика станет равно 65535 (FFFF16). Импульсы считаются по переднему (возрастающему) фронту импульса. Таким образом, для использования и обработки значения данного канала, необходимо считывать его каждый раз в начале цикла пользовательской программы. Например, можно ввести в программу дополнительную переменную, и в начале цикла передавать в эту переменную значение переменной, привязанной к счетчику.

Модуль имеет два (для ПЛК110-30 и ПЛК110-32) или четыре (для ПЛК110-60 и ПЛК160) шестнадцатибитовых каналов, по числу быстрых входов.

Модуль не имеет параметров.

Fast Encoder (Высокочастотный энкодер)

Высокочастотный энкодер – программный модуль, позволяющий подключать к двум быстрым дискретным входам относительного энкодера для получения данных о вращении или линейном перемещении контролируемого механизма с последующей передачей информации в цифровой форме в программу ПЛК. Для работы с механическими энкодерами следует включать режим фильтрации дребезга сигналов в параметре Time of filtration in mks. Схемы подключения энкодеров к быстрым входам ПЛК приводятся в руководствах по эксплуатации.

Модуль является замещающим для модуля Быстрых дискретных входов (Fast discrete input).

Модуль имеет один или два шестнадцатибитовых канала (формат WORD) по максимальному числу подключаемых к контроллеру энкодеров.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Time of filtration in mks (Время фильтрации, в микросекундах) – время установления сигнала, значения от 0 до 255 (1 единица = 1 мкс). Параметр задает время, в течение которого контроллер игнорирует дребезг контактов механического энкодера. Отсчет времени начинается с момента переключения выхода энкодера в противоположное положение. Если по истечении заданного времени сигнал выхода энкодера не изменяется, то считается, что он установился и дребезг контакта закончился.

    Значение параметра задается в сотнях микросекунд (т. е. 1 единица равна 100 мкс, 10 ед. = 1 мс).

    Для механических энкодеров рекомендуется устанавливать значение параметра в диапазоне от 20 до 40 (от 2 до 4 мс). Для отключения фильтрации (при применении оптических энкодеров) следует задать значение 0. Если в модуле только один параметр, то его действие распространяется на все энкодеры, подключенные к контроллеру.

  • Visibility (Видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры модуля Высокочастотный энкодер (FastEncoder) для ПЛК110-32
Graphic
Параметры модуля Высокочастотный энкодер (FastEncoder) для ПЛК160
Fast Z-Encoder+Counter (Высокочастотный Z-энкодер + счетчик)

Высокочастотный Z-энкодер – программный модуль, который позволяет подключать на трех быстрых дискретных входах контроллера относительный энкодер с отметкой пересечения нуля для получения данных о вращении или линейном перемещении контролируемого механизма, с последующей передачей информации в цифровой форме в программу ПЛК. Для работы с механическими энкодерами следует включать режим фильтрации дребезга сигналов в параметре Time of filtration in mks.

Модуль является замещающим для модуля Быстрых дискретных входов (Fast discrete input). Модуль доступен только в ПЛК110-60 и ПЛК160.

Неиспользуемый при подключении Z-энкодера дискретный вход может быть использован в качестве высокоскоростного счетчика.

Модуль имеет два шестнадцатибитовых канала (формат WORD), по числу подключаемых к контроллеру Z-энкодеров и счетчиков.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Time of filtration in mks (Время фильтрации, в микросекундах) – время установления сигнала, значения от 0 до 255, 1 единица = 1 мкс (см. раздел);

  • Visibility (Видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры модуля «Высокочастотный Z-энкодер + счетчик»

Особенностью подключения Z-энкодера является порядок подключения выходов энкодера. Контроллер требует следующего порядка подключения:

  • на первый быстрый вход (DI1) – сигнал А;

  • на второй быстрый вход (DI2) – сигнал В;

  • на третий быстрый вход (DI3) – сигнал Z;

  • четвертый быстрый вход (DI4) – может использоваться в качестве высокоскоростного счетчика.

Fast discrete inputs - direct control (Прямое управление быстрыми дискретными входами)

Модуль переводит быстрые дискретные входы в режим прямого управления из функций стандартной библиотеки SysLibPort. Дискретные входы не отображаются в пространстве области ввода (%I).

Прямое управление быстрыми входами из библиотеки SysLibPort служит для управления быстрыми входами из процедуры обработки прерываний высокочастотного таймера, т. к. вызов обработчика по таймеру происходит чаще, чем заканчивается цикл ПЛК и, соответственно, чаще, чем происходит обращение к памяти вывода.

Модуль является замещающим для модуля Быстрых дискретных входов (Fast discrete input).

Во время установки модуля все быстрые входы переключаются на режим прямого управления из библиотеки SysLibPort и не реагируют на изменение значений каналов в памяти ввода.

Модуль доступен в ПЛК110 и ПЛК160 и не имеет параметров и каналов.

Работа с высокочастотным таймером подробно описана в разделе.

Discrete inputs (Дискретные входы)

Фиксированный модуль «Discrete inputs» (Дискретные входы) отображает в области ввода-вывода значения, характеризующие состояния дискретных входов ПЛК.

Модуль имеет два (для ПЛК110-30, ПЛК110-32 и ПЛК160) или четыре (для ПЛК110-60) восьмибитовых канала.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Time of filtration general inputs in ms (Время фильтрации основных входов в миллисекундах) – период опроса состояния одного дискретного входа, задается в сотнях микросекунд (1 ед. = 1 мс). Диапазон значений от 0 до 1000, значение по умолчанию – 10.

    Принцип действия фильтрации описан в разделе. Режим фильтрации может быть отключен установкой в параметре «Время фильтрации» значения «0». Фильтрацию следует отключать во время работы с подчиненными модулями энкодеров, чтобы не пропускать высокочастотные сигналы, а также в тех случаях, когда ПЛК функционирует без ограничения цикла по частоте, т. е. на максимальной возможной частоте.

Graphic
Параметры модуля «Дискретные входы» (Discrete input)

Fast discrete outputs (Быстрые дискретные выходы)

Фиксированный модуль быстрых (высокочастотных) дискретных выходов (Fast discrete output) отображает в области памяти ввода-вывода значения быстрых дискретных выходов ПЛК.

Модуль имеет несколько битовых каналов по числу быстрых выходов контроллера.

Примечание
Следует обратить внимание, что в ПЛК160 при частых коммутациях ресурс электромеханических реле может быстро исчерпаться. Частота срабатывания выходов ограничена возможностями электромеханических реле.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Safe Value (Безопасное значение)TRUE или FALSE для быстрого дискретного выхода.

    Во время загрузки или в случае сбоя в работе ПЛК, выходы могут оказаться выключены или включены. Такая неопределенность может быть недопустима во время эксплуатации управляемого оборудования, и для исключения подобной ситуации ПЛК переводит выходы во время сбоя или загрузки в состояние, заданное в параметре «Безопасное состояние выхода» (Safe Value).Значение параметра FALSE означает, что выход выключен (0), TRUE – выход включен (1). Значение параметра устанавливается раздельно для каждого битового канала.

  • Visibility (Видимость) – задает видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры модуля Быстрые дискретные выходы (Fast discrete output)
Замещающие элементы (модули)

Процедура замещения модуля описана в разделе.

Модули для замены модуля «Быстрые дискретные выходы (Fast Discrete output)»:

  • PWM (Pulse-wide modulator) – ШИМ, см. раздел;

  • Fast discrete outputs - Direct control – прямое управление быстрыми дискретными выходами, см. раздел.

Graphic
Замещающие модули модуля Быстрые дискретные выходы (Fast Discrete output)
PWM (Pulse-wide modulator) – ШИМ

Модуль ШИМ (PWM – Pulse-wide modulator) предназначен для работы с генератором ШИМ, который подключен к дискретному выходу. Модуль является замещающим для модуля быстрых дискретных выходов.

Примечание
Следует обратить внимание, что в ПЛК160 при частых коммутациях ресурс электромеханических реле может быстро исчерпаться. Частота срабатывания выходов ограничена возможностями электромеханических реле.

Каналы модуля:

  • PWM power – шестнадцатибитовый канал (формат WORD), задающий значение скважности ШИМ. Изменяется от 0 (0 %) до 1000 (100 %);

  • PWM Period – тридцатидвухбитный канал (формат DWORD), позволяющий задать или прочитать значение периода ШИМ, заданного в мкс.

    В начале работы значение периода ШИМ записывается из одноименного параметра в канал, затем оно может быть изменено в канале. Измененное значение канала PWM Period не передается в одноименный параметр модуля, поэтому в случае выключения контроллера значение не сохраняется.

Параметры модуля:

  • Min. duration of PWM in mksec (минимальная длительность импульса ШИМ в мкс) – ограничение на минимальную длительность импульса ШИМ. Диапазон значений от 1 до 65000, значение по умолчанию – 3000 мкс;

  • PWM default Period in mks (период ШИМ в мкс) – длительность одного периода ШИМ-регулирования. Принимает значения от 2 до 4 294 000 000 мкс, соответственно задавая период ШИМ до 4294 секунд. При наличии одноименного канала в модуле значение параметра переписывается в канал при загрузке пользовательской программы. В дальнейшем значение периода ШИМ может быть изменено в канале модуля;

  • Visibility (видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры модуля ШИМ (PWM – Pulse-wide modulator)
Fast discrete outputs – Direct control (Прямое управление быстрыми дискретными выходами)

Модуль переводит быстрые дискретные выходы в режим прямого управления из функций стандартной библиотеки SysLibPorts.lib. Выходы не отображаются в пространстве области вывода (%Q).

Примечание
Следует обратить внимание, что в ПЛК160 при частых коммутациях ресурс электромеханических реле может быстро исчерпаться. Частота срабатывания выходов ограничена возможностями электромеханических реле.

Прямое управление быстрыми выходами из библиотеки SysLibPorts.lib требуется для управления быстрыми выходами из процедуры обработки прерываний высокочастотного таймера, т. к. вызов обработчика по таймеру происходит чаще, чем заканчивается цикл ПЛК и, соответственно, чаще, чем происходит обращение к памяти вывода.

В случае установки модуля все быстрые выхода переключаются на режим прямого управления из библиотеки SysLibPorts.lib и не реагируют на изменение значений каналов в памяти вывода.

Модуль не имеет параметров и каналов.

Discrete outputs (Дискретные выходы)

Модуль дискретных выходов (Discrete outputs) отображает в области памяти ввода-вывода значения дискретного выхода ПЛК.

Модуль имеет несколько битовых каналов (количество каналов зависит от варианта исполнения контроллера).

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Safe Value (Безопасное значение)TRUE или FALSE для быстрого дискретного выхода.

    Во время загрузки или в случае сбоя в работе ПЛК его выходы могут оказаться выключены или включены. Такая неопределенность может быть недопустима во время эксплуатации управляемого оборудования, и для исключения подобной ситуации ПЛК переводит выходы во время сбоя или загрузки в состояние, заданное в параметре «Безопасное состояние выхода» (Safe Value). Значение параметра FALSE означает, что выход выключен (0), TRUE – выход включен (1). Значение параметра устанавливается раздельно для каждого битового канала.

Graphic
Параметры модуля Дискретные выходы (Discrete outputs)

Fast analog inputs (Аналоговые входы)

Структура модуля

Фиксированный модуль «Analog input» (Аналоговые входы) отображает в области ввода-вывода значения, характеризующие состояния аналоговых входов ПЛК.

Модуль имеет восемь идентичных каналов (%IR4.0–%IR4.7), измеряющих напряжение в диапазоне от 0 до 10 В или ток в диапазонах 4–20 мА, 0–20 мА и 0–5 мА.

Аналоговые входы имеют групповую гальваническую изоляцию на 560 В от остальной части схемы. Период обновления значений каналов %IR4.0–%IR4.7 равен 10 мс. Каналы аналогового ввода во всех режимах работы имеют защиту от перегрузки и выдерживают подачу на вход сигналов с напряжением от –40 до +40 В.

Структура одного из входных каналов приведена на рисунке ниже.

Graphic
Структура каналов модуля аналогового ввода

Параметры модуля:

  • Fltr Comm (Тип входного фильтра) – общий для всех каналов параметр. Входной цифровой фильтр обеспечивает предварительную фильтрацию сигналов на аналоговых входах. Частота отсчетов на входе фильтра равна 1600 Гц, частота выходных отсчетов 200 Гц. Параметр может принимать следующие значения (по умолчанию установлен фильтр «50 Hz 4por»):

    • Откл – входной фильтр отключен. При отключенном входном фильтре обеспечивается минимальная задержка результатов измерения, но не гарантируется заявленная точность измерения. Режим работы с отключенным входным фильтром применять не рекомендуется;

    • 50 Hz 1por – входной фильтр среднего, первого порядка, длиной 32. Групповое время задержки фильтра равно 10 мс;

    • 50 Hz 2por – входной фильтр среднего, второго порядка, длиной 32. Групповое время задержки фильтра равно 20 мс;

    • 50 Hz 4por – входной фильтр среднего, четвертого порядка, длиной 32. Групповое время задержки фильтра равно 40 мс;

    • 200 Hz 1por – входной фильтр среднего, первого порядка, длиной 8. Групповое время задержки фильтра равно 2,5 мс. При работе с этим типом фильтра не гарантируется заявленная точность измерения.

    Примечание

    Фильтры меньшего порядка рекомендуется устанавливать только в случае необходимости получения задержки измерения менее 40 мс.

    Фильтры 50 Hz 1, 2 и 4 порядков обеспечивают подавление помех с частотами, кратными 50 Гц.

  • Input Type (Тип аналогового входа) – параметр определяет тип измеряемого сигнала: 4–20 мА, 0–20 мА, 0–5 мА, 0–10 В;

  • Peak Filter (Пиковый фильтр) – пиковый фильтр используется для подавления импульсных помех. Режим работы пикового фильтра устанавливается индивидуально для каждого канала. Параметр может принимать значения от 1 до 200. Работа фильтра описана ниже;

  • Filter Ch (Канальный фильтр) – канальный фильтр используется для дополнительной, индивидуально для каждого канала, фильтрации измеряемого сигнала. Параметр может принимать следующие значения:

    • Off – фильтр отключен;

    • Avr 4 – фильтр среднего длиной 4, время групповой задержки 10 мс;

    • Avr 8 – фильтр среднего длиной 8, время групповой задержки 20 мс;

    • Avr 12 – фильтр среднего длиной 12, время групповой задержки 30 мс;

    • Avr 16 – фильтр среднего длиной 16, время групповой задержки 40 мс;

    • RC – аналог RC фильтра. Постоянная времени RC-фильтра определяется параметром «Tau RC».

  • Tau RC (Постоянная времени RC-фильтра) – постоянная времени RC-фильтра. Параметр может принимать значения от 10 до 10 000 мс;

  • Min FV и Max FV – параметры приведения результатов измерения к физической величине.

    Параметры обеспечивают приведение результатов измерения к физической величине и могут принимать значения от –1Е9 до +1Е9. При подаче на вход измерения минимального сигнала выбранного диапазона результат измерения будет равным «Min FV», при подаче на вход измерения максимального сигнала выбранного диапазона результат измерения будет равным «Max FV». При подаче на вход измерения сигналов с уровнями от минимального до максимального результат измерения будет линейно преобразован в диапазон от «Min FV» до «Max FV» (прямо пропорционально при Max FV > Min FV и обратно пропорционально при Min FV > Max FV).

Внимание

Новые настройки аналоговых входов вступают в силу после загрузки проекта с новыми настройками и перезагрузки ПЛК по питанию.

Пример
На датчике с выходным током от 4 до 20 мА (параметр «Input Type» равен 4–20 мА), который контролирует давление в диапазоне от 0 до 25 атм, в параметре «Min FV» задано значение 00,00, в параметре «Max FV» – значение 25,00. Вывод результатов измерения будет выполняться в атмосферах. При значении измеренного тока, равном 4 мА, результат измерения будет равен 00,00, при значении измеренного тока, равном 20 мА, результат измерения будет равен 25,00.
Работа пикового фильтра

Пиковый фильтр работает в соответствии с формулой:

Graphic

где X – сигнал на входе фильтра;

Y – сигнал на выходе фильтра;

Yi–1 – сигнал на выходе фильтра в предыдущий такт (5 мс) измерения;

P – параметр ограничения скорости, рассчитанный по формуле ниже.

Graphic

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

Значение параметра ограничения задается в долях изменения входного сигнала относительно измеряемого диапазона за одну секунду.

Пример
Если максимальная скорость изменения тока равна 50 мА/с, измеряемый диапазон равен 20 – 4 = 16 мА, то скорость изменения тока за одну секунду будет равна Graphic

В случае установки параметра равным 4, исключается влияние фильтра на полезный сигнал, и в то же время обеспечивается эффективная защита от импульсных помех. Значение параметра, равное 200, отключает фильтр. По умолчанию значение параметра «Peak Filter» устанавливается равным 200.

Поведение модуля в исключительных ситуациях

В случае возникновения исключительных ситуаций, в результате измерения соответствующего канала (старший байт переменной типа REAL) устанавливается специальное значение, соответствующее исключительной ситуации, остальные байты принимают значение 0xFF.

Модуль аналогового ввода распознает следующие исключительные ситуации:

  • результаты измерения заведомо не верны – 0xF1;

  • результаты измерения не готовы – 0xF6;

  • сигнал на входе больше возможного – 0xFA;

  • сигнал на входе меньше возможного – 0xFB;

  • перегрузка в канале измерения тока – 0xFС;

  • обрыв датчика в канале измерения напряжения – 0xFD.

Analog output (Аналоговые выходы)

Фиксированный модуль «Analog output» (Аналоговые выходы) отображает в области ввода-вывода C