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

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

В соответствии с требованиями стандарта МЭК 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

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

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

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

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

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

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

Размер памяти ввода-вывода определяется типом лицензии 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 способа выравнивания адресов переменных в памяти ввода-вывода может возникнуть дополнительный расход памяти. Алгоритм выравнивания описан в разделе, но учитывать особенности выравнивания во время расчета потребности в памяти ввода-вывода не рекомендуется из-за сложности расчета.

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

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

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

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

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

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

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

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

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

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

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

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

Элементы управления главного меню
Команда менюКнопка панели инструментовГорячие клавишиОписание команды
Файл (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

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

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

  • «POU»;

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

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

  • «Ресурсы».

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

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

«POU»

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

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

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

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

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

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

«Ресурсы»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Редактор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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

Типы данных

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

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

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

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

  • 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 (и наоборот) приводит к очистке списка подключений в таблице настроек канала связи.

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.

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-порта для повторной инициализации драйвера.

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 следует перезагрузить контроллер отключением питания контроллера и повторным его включением через пять или более секунд.

Установка драйвера подключения ПЛК по 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эмуляция

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

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

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

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

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

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
Окно «Опции…», вкладка «Генератор кода»

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

Переменные

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

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

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

  • текстовый;

  • табличный;

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

Текстовый

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Graphic
Окно раздела объявлений (верхняя часть окна редактора 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.

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

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

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

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. Помимо вышеперечисленных библиотек в состав установщика включены и некоторые сопутствующие библиотеки.

Модуль контроля выхода в интернет 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, то такого интерфейса нет.

Модуль 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.

Модуль получения серийного номера 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

Модуль работы с файлами 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 – новое имя файла.

Модуль работы с 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 - клавиатура*).

Модуль 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программные компоненты (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), который возвращает только единственное значение (которое может состоять из нескольких элементов, если это битовое поле или структура). В текстовых языках функция вызывается как оператор и может входить в выражения.

При объявлении функции следует указать тип возвращаемого значения – после имени функции написать двоеточие и тип (см. рекомендации по наименованию в приложении документа «Руководство пользователя по программированию ПЛК в 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), способный формировать произвольное число значений во время вычислений. Значения всех переменных программы сохраняются между вызовами. В отличие от функционального блока, экземпляров программы не существует. Программа является глобальной во всем проекте.

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

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

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

Типы данных

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

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

Логический (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.

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

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

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

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

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

Массив

Элементарные типы данных могут образовывать одномерные, двумерные и трехмерные массивы. Массивы могут быть объявлены в разделе объявлений 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.

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

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

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

В конфигурацию могут быть добавлены подмодули (подэлементы) настройки режимов работы (Master/Slave) и интерфейсов связи:

  • ModBus (Master);

  • ModBus (Slave);

  • DCON (Master);

  • OWEN (Slave);

  • OWEN (Spy);

  • OWEN (Master).

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

  • Statistic (модуль статистики);

  • Universal network module;

  • Extended settings;

  • Archiver (архиватор).

Модуль «Archiver» (Архиватор)

Модуль «Archiver» (Архиватор) используется для архивирования требуемых данных. Архивируемые данные могут храниться на Flash-диске ПЛК и извлекаться оттуда при необходимости, или выводиться через коммуникационный интерфейс (например, данные могут быть распечатаны на принтере, подключенном к ПЛК через последовательный интерфейс). К модулю «Archiver» (Архиватор) может быть добавлен подмодуль архивации информации в файл «File Output» (см. раздел).

Перечень архивируемых переменных (внесение переменных в список для последующего архивирования) создается вызовом команды Добавить подэлемент (Append Subelement) контекстного меню строки «Archiver».

В список могут быть добавлены переменные следующих типов:

  • 8-битная;

  • 16-битная;

  • 32-битная;

  • число с плавающей точкой («Float»);

  • текстовая строка («String») – максимум 15 символов + завершающий нуль.

После добавления переменной любого типа в ее параметрах следует задать имя архивируемой переменной – Variable Name. Этим же именем переменная будет именоваться в архивном файле (см. рисунок).

Graphic
Внесение переменных в список архивируемых
Graphic
Именование переменных в список архивируемых

Параметры передачи архивных данных (режим передачи, формат данных) задаются в параметрах модуля:

  • Name – имя элемента, см. раздел;

  • Archive Mode (Режим проведения архивации) – режим архивации. Значения выбираются из списка:

    • By timer (по таймеру) – данные записываются в архив с заданным периодом архивации, значение по умолчанию;

    • By change value (по изменению значений) – если какая-то переменная, включенная в список архивации, меняет свое значение, то происходит ее архивация, причем только этой переменной. Изменения могут записываться не чаще, чем раз в пять секунд;

    • By command (по команде) – если в переменной Status модуля архивации записана специальная команда, то происходит старт архивации, либо ее остановка (0x00FE – «стоп», 0x00FF – «старт»).

      Примечание

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

      • во время загрузки проекта модуль архивации находится в режиме «Работает»;

      • повторная команда «Старт» приводит к немедленному акту архивации;

      • если архиватор остановлен, то команда «Старт» запустит его.

  • Type of archive (тип данных архивации) – тип записи архивируемых данных. Значения выбираются из списка:

    • ASCII only – данные выдаются в текстовом виде, удобном для чтения пользователя, для печати и т. п. (значения по умолчанию);

    • Mixed – данные выдаются в смешанном виде: запись имеет заголовок архива с именами переменных, временные данные в удобном для чтения виде, а все архивируемые переменные записываются в бинарном виде.

  • Period of Archiving (период архивации, с) – периодичность обновления данных архива при работе модуля в режиме «по таймеру». Диапазон значений от 5 до 65535 секунд, значение по умолчанию – 60;

  • Archive Name (имя архива) – имя архива, которое записывается в начале файла;

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

  • Start time (время начала архивации) – время старта архивации;

  • Stop time (время остановки архивации) – время остановки архивации;

    Внимание
    Параметры «Start time (Время начала архивации)» и «Stop time (Время остановки архивации)», задающие временные рамки процесса архивирования, независимы друг от друга, т. е. один или оба параметра могут быть не заданы. Для параметров определен формат, в котором они должны задаваться – чч:мм:сс, – с обязательным использованием полноформатного задания величин и разделителя «двоеточие». При неполном формате и/или использовании иного разделителя программа проигнорирует информацию, как ошибочную.
  • On Sunday (воскресенье)…On Saturday (суббота) (всего семь параметров) – назначается день (дни) недели, когда будет производиться архивация. Значения выбираются из списка «yes» и «no», значение по умолчанию – «yes»;

  • Visibility (видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

    Внимание
    Между всеми условиями старта и остановки архивирования установлен приоритет . Главный приоритет имеет переменная File Status: если в ней записана команда «стоп», то операция в любом случае прекратится, если «старт» – она будет выполнена минимум один раз. Следующим по приоритету идет день недели и, далее, время старта и время останова процедуры архивации.
Graphic
Параметры модуля
Настройка коммуникационных интерфейсов

По умолчанию к модулю «Archiver (Архиватор)» подключен подмодуль интерфейсного порта, через который передаются архивные данные. Интерфейсный порт может быть заменен на требуемый выбором команды «Replace element» (Заменить элемент) контекстного меню (см. рисунок).

Настройка последовательных интерфейсов, интерфейса TCP, модема, и выгрузка архива в файл (порт «File Output») описана в разделе.

В модуле «Archiver (Архиватор)» имеется канал «Status», который отображает статус архива и коды возникающих ошибок. Коды ошибок ПЛК представлены в приложении Сообщения об ошибках в ПЛК.

Graphic
Смена интерфейсного порта
Подмодуль архивации информации в файл («File output»)

Подмодуль интерфейсного порта «File output» задает параметры архивации информации в файл и является подчиненным подмодулем модуля «Архиватор».

Подмодуль «File output» имеет собственную переменную «File Status», в которой сохраняется информация о работе подмодуля. Коды ошибок ПЛК представлены в приложении Сообщения об ошибках в ПЛК.

Параметры подмодуля:

  • Name – имя элемента, см. раздел;

  • File name (имя файла) – имя файла, в который будет записываться архивная информация. Значение по умолчанию – «File_name.log»;

  • Mode (режим работы модуля) – вариант архивации информации:

    • Append to end (добавить в конец) – информация добавляется в конец файла, и, как только файл переполняется, запись прекращается. Файл имеет ограничение по размеру (в байтах) или по количеству записей (задаваемому в параметре Max file size), значение по умолчанию;

    • Rewrite on start (перезапись при старте) – старый файл стирается во время старта ПЛК или загрузки новой конфигурации и начинается запись файла с самого начала;

    • Rewrite on oversize (перезапись старого файла при превышении заданного размера) – файл стирается при достижением им заданного размера, и запись начинается сначала;

    • Shift Mode (режим сдвига) – вариант работы, при котором, при достижении файлом заданного размера, вторая (более поздняя по времени записи) половина файла переносится в начало, запись продолжается, дописывается, т. е. остаются самые последние записи.

  • Type (тип) – способ подсчета размера файла:

    • Text (текстовый режим) – по количеству записей, каждая запись заканчивается символом перевода каретки;

    • Binary (цифровой или двоичный режим) – по размеру файла в байтах.

  • Max file size (размер записи) – ограничение размера записываемого файла, размер определяется в зависимости от типа (Type). Диапазон значений от 100 до 320000, значение по умолчанию – 500;

  • Visibility (видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры подмодуля «File output»

Модуль «DCON (Master)»

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

Во время установки модуля «DCON (Master)» требуется выбрать коммуникационный интерфейс для обмена данными с другими устройствами, добавить и настроить требуемые переменные.

Модуль имеет один параметр: «Visibility (Видимость)», который задает видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Во время опроса модулем «DCON (Master)» подчиненных устройств информация о ходе обмена записывается в канал модуля:

  • Last Error – код ошибки. В переменной отображается код ошибки, если информационный обмен прошел неудачно, что требуется для корректности работы опрашиваемого устройства. Коды ошибок данного модуля представлены в приложении Сообщения об ошибках в ПЛК.

Настройка коммуникационных интерфейсов

При добавлении модуля «DCON (Master)» в конфигурацию ПЛК в состав модуля уже подключен порт Debug RS-232. Для работы через другой коммуникационный интерфейс порт Debug RS-232 можно заменить требуемым последовательным портом или модемом (выбрать команду Заменить элемент → <Элемент> контекстного меню строки «Debug RS-232»).

Graphic
Выбор коммуникационных интерфейсов «DCON (Master)»
Подмодуль Universal DCON Device

Для добавления в список опроса, проводимого мастером сети, устройств, работающих в режиме DCON (Slave), следует в модуле DCON (Master) добавить подмодуль «Universal DCON Device» (универсальное устройство DCON). Для добавления в список нескольких опрашиваемых устройств процедуру следует повторить столько раз, сколько устройств должно быть подключено: для каждого устройства должен быть добавлен соответствующий ему модуль Universal DCON Device с индивидуальными настройками.

Чтобы добавить подмодуль «Universal DCON Device» в конфигурацию, следует выбрать команду Добавить подэлемент → Universal DCON Device контекстного меню строки «ModBus (Master)».

Добавленные подмодули «Universal DCON device» опрашиваются последовательно, в порядке следования в конфигурации (если другой порядок не задан отдельно, в настройках модуля).

Подмодуль «Universal DCON device» имеет один канал Status:

  • если в него записывается значение 0x00FF, то происходит старт работы данного устройства DCON;

  • если модуль уже запущен, то повторная запись в канал значения 0x00FF приводит к внеочередному запросу одной очередной переменной устройства DCON;

  • если в канал записано значение 0x00FE, то происходит его остановка и прекращение всех посылок в сеть;

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

В случае необходимости устройство можно исключить из списка опроса, подав соответствующую команду в канал Start\Stop.

При добавлении модуля «Universal DCON Device» его параметры и идентификаторы не привязаны к конкретному внешнему устройству (модулю ввода-вывода, операторской панели). Тип внешнего устройства указывается заданием значений параметров модуля (конфигурированием модуля).

Graphic
Параметры подмодуля Universal DCON device

Параметры подмодуля «Universal DCON device»:

  • Name – имя элемента, см. раздел;

  • Request format (Формат запроса) – формат запроса, может быть любым, ограничения не накладываются (см. ниже);

  • Good response format (Формат правильного ответа) – формат правильного ответа, значение по умолчанию – «!» (см. ниже);

  • Bad response format (Формат неправильного ответа) – формат неправильного ответа, значение по умолчанию – «?» (см. ниже);

  • Max response timeout (Максимальное время ответа) – время, за которое опрашиваемый прибор должен ответить на запрос DCON (Master). Если в течение этого времени прибор не отвечает, то считается, что он отключен или произошел обрыв линии связи. Информация об этом заносится в переменную «Код последней ошибки» (Last error). Значение сверху не ограничено, может быть любым, в том числе дробным, но не меньше 10 мс, значение по умолчанию – 150 мс;

  • Work mode (Режим работы) – режим работы модуля «DCON (Master)» при опросе внешних устройств. Значения выбираются из списка (значение по умолчанию – «By poll time»):

    • By poll time (по времени) – контролируемые устройства опрашиваются с периодичностью, заданной в параметре «Период опроса устройства» (Polling time);

    • By value change (по изменению значения переменных) – модуль DCON (Master) генерирует запрос устройству при изменении значений выходных переменных модуля;

    • Both (оба варианта) – опрос производится с временным интервалом, заданным в параметре Polling time и когда изменяются значения выходных переменных;

    • By command (по команде) – производится однократная посылка запроса, когда в канал Статус (Status) модуля Универсальное устройство DCON записывается значение 0x00FF.

  • Polling time (Период опроса устройства, в мс) – диапазон значений от 10 до 10000, значение по умолчанию – 100;

  • Visibility (Видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Примечание
В Мастере, когда он работает в режиме «По изменению значения переменных» или «По команде» , нельзя ставить значение параметра Polling time слишком маленьким. По умолчанию его значение 100 мс. Однако, если на реальном проекте будет замечено, что Мастер при загрузке программы или при Login формирует лишние пакеты и/или запросы, которых не должно быть, значение параметра увеличивают (до 200, 300 и т. д.) до предотвращения появления ложных пакетов.
Параметры «Формат…»

В протоколе DCON при организации опроса устройств создается строка запроса. При ее посылке опрашиваемое устройство может вернуть два варианта ответа: ответ правильный (команда распознана, данные есть) – один формат, и ответ неправильный (не распознана команда, нет данных и/или пр.) – другой формат.

Строки «Формат запроса» (Request format), «Формат правильного ответа» (Good response format), «Формат неправильного ответа» (Bad response format) используются для задания формата запроса DCON (Master) и разбора правильного/неправильного ответа.

Строки формата ответа могут не задаваться, если устройство не отвечает на запрос.

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

  • символы – любой символ, кроме служебных, к которым относятся символы «$» (знак доллара), «[» и «]» (открывающая и закрывающая квадратные скобки);

    Примечание
    При необходимости вывести служебный символ в качестве обычного, он вводится в строку два раза подряд.
  • спецкоманда имеет формат: [{модификатор}действие]:

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

    • действие – отображается в строке спецкоманды одним из символов – D, H, F, S, *, +, %. Регистр символов значения не имеет.

    Символы соответствуют следующим видам действий:

    • D – представляет передаваемую переменную в ASCII-символах в десятичном формате (без знака) или преобразует ASCII-строку из десятичного формата (без знака) в принимаемую переменную. Количество символов задается модификатором;

    • H – представляет передаваемую переменную в ASCII-символах в шестнадцатеричном формате или преобразует ASCII-строку из шестнадцатеричного формата в принимаемую переменную. Количество символов задается модификатором;

    • F – представляет передаваемую переменную в ASCII-символах в десятичном формате со знаком, разделителем целой и дробной части числа (точкой). Строка имеет фиксированное число символов, заданное модификатором. Для принимаемых переменных производит обратное преобразование из ASCII-строки в число;

    • S – осуществляет прямое копирование из передаваемой строковой переменной в строку запроса числа символов, заданного модификатором или обратное копирование из строки ответа в принимаемую переменную строкового типа;

    • * – задает в строке ответа набор символов, которые надо пропустить. Количество символов может быть задано модификатором;

    • + – вставляет в строку запроса контрольную сумму или получает ее в строке ответа. Контрольная сумма вычисляется путем сложения с переполнением по модулю 256. Данное действие не может иметь модификатора;

    • % – вставляет в строку запроса контрольную сумму или получает ее в строке ответа. Контрольная сумма вычисляется по восьмибитному полиному (DOW-CRC). Данное действие не может иметь модификатора.

    Примечание
    Во время работы ПЛК по протоколу DCON есть три варианта работы: без расчета контрольных сумм, с расчетом контрольных сумм путем сложения значений всех символов и с расчетом контрольных сумм восьмибитовых. Вариант работы пользователь выбирает в соответствии с тем, какой вариант расчета контрольной суммы используется в опрашиваемом приборе.

    Используются следующие алгоритмы преобразования:

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

    • при разборе ответа – все символы вне спецкоманд сравниваются с соответствующими позициями ответа и, при нахождении различия, вырабатывается сообщение об ошибке. Данные в позициях ответа, соответствующих спецкомандам, преобразуются и сохраняются в соответствующих принимаемых (входных) переменных.

    Если запрос жестко фиксированный, т. е. в строке не содержатся изменяемые данные, то строка набивается без каких-либо команд, в таком виде отсылается. В строку может быть добавлена контрольная сумма.

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

Настройка входов и выходов подмодуля

После задания значений параметров подмодуля «Universal DCON Device» к нему требуется подключить каналы, задающие входные параметры (параметры, значение которых Мастер запрашивает у Slave-устройств) и выходные параметры (значения, которые Мастер передает – записывает – в Slave устройства) подмодуля.

Каналы добавляются выбором команды Добавить подэлемент → <Наименование подэлемента> контекстного меню строки подмодуля «Universal DCON Device».

В подмодуль «Universal DCON Device» можно добавить каналы из таблицы ниже.

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

Типы каналов модуля «Universal DCON Device»
КаналРазмер в памятиНаправление пересылки данных
8-bit input8 битЧтение
16-bit input16 бит
32-bit input

32 бита

Float input
String input

16 байт (строка)

8-bit input8 битЗапись
16-bit input16 бит
32-bit input

32 бита

Float input
String input

16 байт (строка)

Тип и порядок расположения входных и выходных переменных в модуле должны соответствовать строкам команд в полях «Request format» и «Good response format» (см. выше).

Примеры настройки модуля DCON (Master) для опроса устройств ввода-вывода представлены в приложении Примеры настройки опроса для модуля «DCON (Master)».

Модуль «Extended settings» (Расширенные настройки)

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

Также в модуле «Extended settings» индицируется состояние батареи питания часов ПЛК.

Параметры модуля:

  • «Состояние батареи» (Batery discharged) – в зависимости от состояния батареи данный параметр принимает состояние: False (0) – батарея заряжена, True (1) – до окончания срока работы батарее не более 5 месяцев. Поле в модуле дублирует индикатор на лицевой панели и включается при снижении напряжения на батарее до 2,7 В. Часы ПЛК сохраняют работоспособность при снижении напряжения питания на батарее до 1,4 В. После включения индикатора «батарея разряжена» работа часов при нормальных условиях обеспечивается ещё на протяжении 6 месяцев;

  • «Подтягивающий резистор интерфейса RS 485-1» (RS 485-1 master mode) – значения выбираются из списка «master device» и «terminal device», значение по умолчанию – «master device». Значение выбирается в зависимости от режима работы по данному порту: «master device» – режим master и «terminal device» – режим slave на данном порте;

  • «Подтягивающий резистор интерфейса RS 485-2» (RS 485-2 master mode) – значения выбираются из списка «master device» и «terminal device», значение по умолчанию – «master device». Значение выбирается в зависимости от режима работы по данному порту: «master device» – режим master и «terminal device» – режим slave на данном порте;

Graphic
Параметры модуля «Extended settings»

Модуль ModBus (Master)

Модуль ModBus (Master) используется для работы контроллера в режиме Мастера сети, т. е. для опроса и контроля других Modbus устройств, работающих в сети в подчиненном режиме (slave) – например, модули ввода-вывода, панели оператора, частотные преобразователи и т. д. Во время установки модуля «ModBus (Master)» выбирается коммуникационный интерфейс для обмена данными с другими устройствами, добавляются и настраиваются требуемые переменные.

Модуль имеет один параметр: «Visibility (Видимость)», который задает видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

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

Каналы модуля:

  • Last Address – адрес последнего опрошенного ModBus (Slave) устройства. Модуль запрашивает устройство, и, соответственно, тут же меняется значение: показывается значение адреса последнего запроса.

  • Last Error – код ошибки. В переменной отображается код ошибки, если информационный обмен прошел неудачно, что требуется для корректности работы опрашиваемого устройства. Коды ошибок данного модуля представлены в приложении Сообщения об ошибках в ПЛК.

Добавление и настройка коммуникационных интерфейсов «ModBus (Master)»

При добавлении модуля «ModBus (Master)» в конфигурацию ПЛК в состав модуля уже подключен порт Debug RS-232. В случае необходимости работы через другой коммуникационный интерфейс этот порт можно заменить требуемым последователным портом или модемом (команда Заменить элемент → <Элемент> контекстного меню строки «Debug RS-232»).

Graphic
Выбор коммуникационных интерфейсов «ModBus (Master)»
Внимание
Если предполагается, что Мастер сети будет работать с устройствами по протоколу TCP, то необходимая настройка производится в подмодуле устройства (параметр «TCP port» модуля Universal ModBus Device).

Модуль ModBus (Slave)

Модуль «ModBus (Slave)» используется для работы контроллера в сети в подчиненном режиме (slave), т. е. отвечает на запросы устройства, работающего в режиме Master. Во время установки модуля «ModBus (Slave)» выбирается коммуникационный интерфейс для обмена данными с другими устройствами, добавляются и настраиваются требуемые переменные.

Модуль «ModBus (slave)» имеет в своем составе подмодуль ModBus (FIX), см. раздел.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Address (адрес устройства) – адрес ПЛК, по которому прибор будет опрашиваться в сети Master-устройством (например, панелью оператора). Параметр имеет значения в диапазоне от 1 до 247, значение по умолчанию – 1;

  • Visibility (видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

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

Примечание
При случайном отключении питания во время работы ПЛК последние (текущие) значения переменных сохраняются в энергонезависимой памяти и восстанавливаются при возобновлении работы прибора.
Graphic
Параметры модуля ModBus (Slave)
Подмодуль «File». Передача архивных данных

Подмодуль «File» используется для передачи архивных данных (файла) при помощи функции 20 протокола Modbus.

Записанные c помощью модуля Archiver (см. раздел) архивные данные (файл) могут быть переданы по последовательному интерфейсу по протоколу Modbus c помощью специализированной функции № 20. Данные могут быть приняты специализированным ПО на ПК или OPC-сервером, поддерживающим работу с этой функцией (например Lectus OPC).

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

Для реализации передачи архивных файлов следует подключить к модулю «ModBus (Slave)» подмодуль «File». Параметры модуля:

  • File name (имя) – имя файла с архивной информацией, находящегося на Flash-диске ПЛК, внешнем Flash-диске либо на RAM-диске ПЛК, записанного модулем Archiver (см. раздел). Расположение файла задается с помощью префикса, так же, как и в модуле работы с файлами (см. раздел);

  • Amount Byte (размер записи) – размер одной архивной записи в байтах (в запросе записей может быть больше одной);
  • Visibility (видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Параметры подмодуля «File»

В случае необходимости работать с несколькими архивными файлами следует последовательно подключить в модуль ModBus (Slave) требуемое количество подмодулей File, настроив каждый из них. Во время настройки следует иметь в виду, что в запросе нет возможности передать имя файла. Поэтому соответствие имени файла (которых может быть много) и запроса осуществляется следующим образом: номер файла в запросе соответствует позиции файла в дереве режима «Конфигурация ПЛК» (PLC Configurations), начиная с нуля. Таким образом, запрос с нулевым номером файла будет читать данные из первого файла в конфигурации подмодуля, первый – из второго, и т. д. Если запрошен файл, которого нет на диске (или в конфигурации он не указан), то выдается код ошибки с номером 0x04.

Примечание
Чтобы Lectus OPC работал с этой функцией, следует дополнительно поместить в рабочую директорию библиотеку ModBus.dll.
Форматы запросов и ответов

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

Формат запросов и ответов приведен в таблице ниже.

Формат запросов и ответов
Function Code0x14ByteКод функции

Формат запросов

Byte count0x07

Byte

Количество байт, следующих ниже
Referens Type0x06Подфункция (здесь константа = 6)
Hi File numberСтарший байт номера требуемого файла
Lo File numberМладший байт номера требуемого файла
Hi Rec addrСтарший байт адреса записи в файле
Lo Rec addrМладший байт адреса записи в файле

Hi Rec num

Старший байт количества запрашиваемых записей

Lo Rec num

Младший байт количества запрашиваемых записей

Формат ответов

Byte count

0x07

Byte

Количество байт, следующих ниже

Byte count

Количество байт, следующих ниже (необходимо по стандарту)

Referens Type

0x06

Подфункция (здесь константа = 6)

Data

Byte*Rec_num*Amount_byte

Данные длиной Rec num из (запроса), умноженные на длину одной записи из конфигурации

Примечание
  1. File number может принимать значение от 0x0000 до 0xffff.

  2. Rec number может принимать значение от 0x0000 до 0xffff.

  3. Rec addr может принимать значение от 0x0000 до 0xfffe.

  4. В случае ошибки возвращается стандартный код ошибки Modbus 0x02.

  5. При запросе с адресом Recaddr = 0xffff происходит удаление файла.

Подмодуль ModBus (FIX). Настройка коммуникационных интерфейсов

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

В ПЛК предусмотрена возможность обмена данными по интерфейсам:

  • RS-232;

  • RS-485;

  • TCP (Ethernet).

Для работы с разными коммуникационными интерфейсами в ПЛК предусмотрены соответствующие подмодули (подэлементы). Подэлементы подключаются выбором требуемой команды Добавить подэлемент → <Имя подэлемента> контекстного меню (см. рисунок).

Во время работы ПЛК в режиме «Ведомый (slave)» можно использовать нескольких разных портов, т. е. опрос может вестись по разным интерфейсам. Таким образом, подключая несколько разных портов, один модуль можно соединить с разными Master-устройствами по разным физическим линиям (и интерфейсам). Этот прием может использоваться, например, для создания межсетевого шлюза и/или линии резервного управления (например, подключения SCADA-системы в резервном варианте): например, при выходе из строя порта Ethernet (авария, сбой и пр.), вышестоящая SCADA понимает, что произошел сбой, и начинает информационный обмен с устройством по резервной линии – через COM-порт. Скорость обмена информацией уменьшается, но функционирование устройства продолжается.

Graphic
Контекстное меню добавления подмодулей настройки коммуникаций

Количество подключаемых портов ограничено конструкцией ПЛК.

Пример подключения нескольких портов представлен на рисунке ниже.

Graphic
Подключение нескольких портов в подмодуле ModBus (FIX)
Настройка входов и выходов подмодуля

После задания значений параметров подмодуля «ModBus (Slave)» к нему подключаются каналы (переменные) входа/выхода.

Каналы добавляются выбором команды Добавить подэлемент → <Наименование подэлемента> контекстного меню строки «ModBus (Slave)».

Graphic
Добавление переменных в модуль «ModBus (Slave)»

Возможные типы каналов (переменных) приведены в таблице ниже.

Типы каналов (переменных) модуля «ModBus (Slave)»
Типы передаваемых переменныхКаналРазмер в памятиКоманды считыванияКоманды записи
1…8 (8 bits) бит8 bit 8 бит 01, 0205
Word, INT, (2 byte) 16 бит2 byte2 байта03, 046, 16
Dword, DINT, (4 byte) 32 бита4 byte4 байта

16

Real (Float)Float32 бита

Файл (File)

File*

20

Примечание
* Об использовании подэлемента «File» см. раздел.

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

Выравнивание адресации

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

Типы переменных для адресации:

  • Логический (BOOL) – занимает один бит памяти и адресуется как бит с заданным номером в пронумерованном байте;

  • Короткие знаковые и беззнаковые целые, байты (BYTE, SINT, USINT) – занимают восемь бит и имеют адрес, который увеличивается на единицу для каждых следующих восьми бит, то есть адресуется каждый байт;

  • Знаковые и беззнаковые целые, слова (WORD, INT, UINT) – занимают 16 бит и имеют адрес, который увеличивается на единицу для каждых следующих шестнадцати бит, то есть адресуется каждые два байта, и началу следующей по адресу ячейке с двухбайтовой переменной соответствует начало байта с адресом, равным адресу слова, умноженному на два;

  • Знаковые и беззнаковые двойные целые, двойные слова (DWORD, DINT, UDINT) – занимают 32 бита и имеют адрес, который увеличивается на единицу для каждых следующих 32 бит, то есть адресуются каждые четыре байта, и началу следующей по адресу ячейки с четырехбайтовой переменной соответствует байт с адресом, равным адресу двойного слова, умноженному на четыре.

Данный способ адресации наглядно показан в таблице.

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

Если в модуле используются переменные одного типа, то при запросе устройством – Мастером регистра с адресом «0», модуль считывает первые два байта, для регистра с адресом «1» – вторые два байта и т. д.

Если переменные имеют длину более двух байт, то во время запроса регистра с адресом «0», модуль считывает первые два байта первой переменной, для регистра с адресом «1» – вторые два байта первой переменной и т. д.

Пример
Адресация битов и регистров в памяти модуля
Адрес битаАдрес байта (BYTE, SINT, USINT)Адрес двухбайтовой переменной (WORD, INT, UINT)Адрес четырехбайтовой переменной (DWORD, DINT, UDINT)
0…70x00000x00000x0000
8…150x0001
16…230x00020x0001
24…310x0003
32…390x00040x00020x0001
40…470x0005
48…550x00060x0003
56…630x0007

Если в модуле используются переменные разных типов (например, одновременно восьмибитный, двухбайтный и четырехбайтный), то во время распределения адресов CODESYS «выравнивает» адресов переменных – упорядочивать адреса переменных в памяти модуля. Упорядочение адресов заключается в организации памяти таким образом, что переменные размером 8 бит, 2 байта и 4 байта располагаются только по определенным адресам: четырехбайтным переменным присваиваются адреса, кратные 2, двухбайтным – кратные 1. Вне зависимости от порядка задания переменных, выравнивание назначает переменным адреса, кратные их длине.

Первая восьмибитная переменная будет расположена в 0…7 битах памяти модуля, вторая – в 8… 15 и т. д. Если вторая переменная двухбайтная, то она будет располагаться в 16…31 битах, т. е., по любому (то есть, кратному 1) адресу. Четырехбайтная переменная займет следующее свободное место, кратное 2.

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

Пример
«Выравнивание» адресации переменных в памяти модуля
Адрес регистраАдрес битаАдресация переменных
0x000…78 бит (1 байт)
8…15↓ Сдвиг выравнивания: пропущенные адреса
0x0116…232 байта
24…31
0x0232…398 бит (1 байт)
40…478 бит (1 байт)
0x0348…558 бит (1 байт)
56…63↓ Сдвиг выравнивания: пропущенные адреса
0x0464…714 байта
72…79
0x0580…87
88…95
Внимание

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

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

В случае возникновения подобной проблемы с выравниванием пространства адресации следует обратиться в группу технической поддержки компании «ОВЕН» или описать свою проблему на форуме сайта www.owen.ru  – технические специалисты компании посоветуют способ исправить ошибку, чтобы она не возникала в дальнейшем.

Модуль «Owen (Master)»

Модуль «Owen (Master)» используется для работы контроллера в режиме Мастера сети, т. е. для опроса и контроля других устройств, работающих в сети по протоколу ОВЕН в подчиненном режиме (Slave) – например, модули ввода-вывода, панели оператора, частотные преобразователи и т. д. (протокол предназначен для описания процесса обмена информацией между приборами компании «ОВЕН» и между приборами и ПК на базе сети RS-485).

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

Во время установки модуля «Owen (Master)» следует выбрать коммуникационный интерфейс для обмена данными с другими устройствами, добавить и настроить требуемые переменные.

Параметры модуля:

  • Name – имя элемента, см. раздел;

  • Max response delay, ms (Максимальное время задержки ответа, мс) – время, за которое опрашиваемый прибор должен ответить на запрос Owen (Master). Если прибор не отвечает, то считается, что прибор отключен или произошел обрыв линии связи. Диапазон значений от 0 до 32000, значение по умолчанию – 50;

  • Visibility (Видимость) – видимость параметров модуля в протоколе «Gateway» (в частности, в программе «EasyWorkPLC» разработки компании «ОВЕН»). Значения выбираются из списка «yes» и «no», значение по умолчанию – «no».

Graphic
Каналы и параметры модуля «Owen (Master)»

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

Каналы модуля:

  • Last address (Последний адрес) – адрес последнего прибора, по которому обращался Owen (Master). При использовании 8 бит адреса – восьмибитный адрес при отображении умножается на 23 (т. е. на 8), при 11 – не умножается;

  • Last error (Код последней ошибки) – код ошибки, которая произошла при последнем опросе;

  • Last Hash (Последний Hash-код) – hash-код параметра, который фигурировал в последнем опросе;

  • Start/Stop (Старт/Стоп) – используется для управления включением/выключением работы модуля мастера: если в канал записывается значение 0x00FF, то происходит старт работы модуля, если же в канал записано значение 0x00FE, то происходит его остановка и прекращение всех посылок в сеть. Если модуль уже запущен, то повторная запись в канал значения 0x00FF приводит к внеочередному запросу очередной переменной протокола ОВЕН.

Коды ошибок работы ПЛК и пояснения к ним представлены в приложении Сообщения об ошибках в ПЛК.

Настройка коммуникационных интерфейсов

Во время добавлении модуля «OWEN (Master)» в конфигурацию ПЛК в состав модуля уже подключен порт Debug RS-232 (см. рисунок). Если необходимо использовать другой коммуникационный интерфейс, порт по умолчанию можно заменить требуемым последовательным портом или модемом (выбрать команду Заменить элемент → <Элемент> контекстного меню строки «Debug RS-232»).

Graphic
Выбор коммуникационных интерфейсов
Настройка входов и выходов

После задания значений параметров модуля «OWEN (Master)» к нему требуется подключить каналы, задающие входные параметры (параметры, значение которых Мастер запрашивает у Slave-устройств) и выходные параметры (значения, которые Мастер передает – записывает в Slave устройства) модуля.

Каналы добавляются выбором команды Добавить подэлемент → <Наименование подэлемента> контекстного меню строки «OWEN (Master)».

Graphic
Добавление каналов ввода-вывода

При добавлении канала в «OWEN (Master)» в дерево конфигурации добавляется подкаталог, содержащий внутри себя канал, в котором и отображаются полученное/передаваемое по сети значение.

Graphic
Каналы и параметры переменной

В модуле« Owen (Master)» могут быть использованы следующие типы переменных:

  • для чтения («Listen»);

  • для записи («Write»);

  • для чтения («Listen») с дополнительным командным управляющим каналом (