Тема: СПК - Примеры программ, инструкции, полезные советы, FAQ

Тема: СПК - Примеры программ, инструкции, полезные советы, FAQ

СПК - Примеры программ, инструкции, полезные советы, FAQ

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

CODESYS – это стандартный инструмент программирования

Профессиональная разработка систем промышленной автоматизации неразрывно связана с CODESYS (Controller Development System). Основным назначением комплекса CODESYS является разработка прикладных программ на языках стандарта МЭК 61131-3.

Комплекс состоит из двух основных частей: среды программированияCoDeSys и системы исполнения CODESYS Control. CODESYS работает на компьютере и применяется при подготовке программ. Программы компилируются в быстрый машинный код и загружаются в контроллер. CODESYS Control работает в контроллере, он обеспечивает загрузку и отладку кода, обслуживание ввода/вывода и прочие сервисные функции.

Более 300 известных компаний изготавливают оборудование с CODESYS . С ним ежедневно работают тысячи людей, решающих задачи промышленной автоматизации. На сегодняшний день CODESYS – это самый распространенный комплекс МЭК программирования в мире. Практически он сам служит стандартом и образцом систем МЭК программирования.

CODESYS v3 - это новый виток в развитии среды программирования CODESYS . При разработке новой версии среды программирования разработчики решили взять за основу ООП - объектно ориентированное программирование. В версии 3 можно писать программы используя привычный многим процедурный метод, либо писать программу основываясь на принципах стандартного ООП. В новой версии используется абсолютно новый дизайн. Используется новый метод построения конфигурации контроллера. Введена версионность библиотек, Target-файлов и других компонентов. Это обеспечивается с помощью репозитория устройств и библиотек.

Очень сильно преобразилась визуализация. Добавлено множество компонентов, таких как таблицы, выпадающие списки, текст с поддержкой форматирования. Также можно использовать различные стили визуализации, либо применять свои методы заливки с применением градиентов. Введена поддержка векторной графики в формате SVG. Одним словом - CODESYS v3 - это абсолютно новая среда программирования. Но при этом все языки программирования в новой версии остаются неизменными, но дополнены множеством новых типов.

Т.к. CODESYS v3 - это абсолютно новый продукт, то и устройства которые программируются в нем - это абсолютно новые устройства. На текущий момент к таким устройствам относятся следующие приборы:

Сенсорные панельные контроллеры: Линейка СПК2хх: СПК207, СПК210 Линейка СПК1хх: СПК105, СПК107, СПК110

Коммуникационные контроллеры: Линейка ПЛК3хх: ПЛК304, ПЛК308, ПЛК323

Модульные контроллеры: Линейка Модус: Модус 5684 + модули

Приборы, которые программируются в версии CODESYS 2.3 нельзя программировать в 3-й версии. Возможно, что в дальнейшем при модернизации старых линеек (ПЛК100/150/154/110/160) они будут постепенно переводиться на новое ПО.

Официальные требования от разработчиков Минимальные: • ОС: Windows 2000 (Windows XP или Windows Vista также возможно) • ОЗУ: 512MB • Жесткий диск: 200MB • Процессор: Pentium V, Centrino > 1,8 Ггц, Pentium M > 1,0Ггц

Рекомендуемые: • ОС: Windows XP • ОЗУ: 1024MB • Жесткий диск: 1GB • Процессор: Pentium V, Centrino > 3,0 Ггц, Pentium M > 1,5Ггц

Рекомендация от фирмы ОВЕН: Для комфортной работы в среде программирования CODESYS 3.5 рекомендуется использовать следующие конфигурации:

• ОС: Windows XP (32бит) • ОЗУ: 2Гб • Жесткий диск: не менее 3GB свободного пространства • Процессор: Core i5 > 2.8 Ггц

• ОС: Windows 7/8/8.1 (64бит) • ОЗУ: не менее 4Гб • Жесткий диск: не менее 5GB свободного пространства • Процессор: Core i7 > 3 Ггц

Общая инструкция(незаконченный вариант, инструкция в процессе написания): ModBus_VS_CODESYS_V35.pdf

Пример неправильной настройки Modbus Master (распространенная ошибка):

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

Все СПК работают под управлением операционной системы ОС Linux. В этой операционной системе работа с внешними накопителями имеет ряд особенностей, которые нужно знать и понимать, если Вы планируете написать свою собственную программу.

1. Если устройство (SD/USB) поддерживается СПК, то при подключении к СПК, оно должно появиться в каталоге /dev 2. Если устройство определяется ОС и файловая система поддерживается ОС Linux (Fat16/Fat32), то оно монтируется в каталог /mnt/ufs/media/ 3. Во всех СПК (1хх и 2хх) устройства подключенные к СПК имеют следующие названия: 'sda1' для USB1 'sdb1' для USB2 'mmcblk0p1' для SD карты

Например. При подключении SD карты к СПК в каталоге dev появится устройство '/dev/mmcblk0p1'. Если у данной карты корректная файловая система, она примонтируется в каталог '/mnt/ufs/media/mmcblk0p1/'. И в этом каталоге будет содержимое SD карты.

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

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

Примечание. При работе с файлами среда программирования предлагает использовать различные библиотеки, такие как: CAA File - Абсолютно новый тип библиотек. Рекомендуется использовать именно ее. SysFile23 - Библиотека работы с файлами, портированная из CoDeSys 2.3 SysFile - Библиотека аналогичная, SysFile23.

Использовать библиотеки SysFile23 и SysFile не рекомендуется, т.к. при некорректно написанной программе может "Вылетать" CODESYS. Под словом некорректной имеется ввиду неправильная работа с указателями на файл. Например, повторное закрытие уже закрытого файла. В библиотеках CAA File подобных проблем нет.

В операционной системе Linux любые компоненты системы представлены в виде файлов. Устройство управление подсветкой также представляет из себя файл, в который необходимо записать определенное значение. В СПК1хх для управления подсветкой необходимо писать значение яркости в файл: '/sys/class/backlight/pwm-backlight/brightness'. В СПК2хх для управления подсветкой необходимо писать значение яркости в файл: '/sys/class/backlight/backlight/brightness'.

Для СПК1хх в данный файл необходимо записывать данные в формате STRING в диапазоне от '0' до '100'. 0 - подсветка отключена 100 - максимальная яркость

Для СПК2хх в данный файл необходимо записывать данные в формате STRING в диапазоне от '0' до '200'. 0 - подсветка отключена 200 - максимальная яркость

Данный функционал реализован в библиотеке SPK TOOLS.

Необходимо использовать библиотеку SysTargetVisu23. Из этой библиотеки необходимо использовать функции: GetLastMouseDownEvent - Нажатие на Touch "пальцем" GetLastMouseMoveEvent - Перемещение "пальца" по Touch GetLastMouseUpEvent - "Палец" убран с Touch

Данные функции возвращают структуру типа MouseEvent. Она содержит 3 поля. Два поля, это координаты, где произошло событие, а поле dwCounter - это счетчик событий.

Смысл использования библиотеки следующий. Все 3 функции постоянно опрашивают состояние Touch. Если оператор производит на экране какие либо действия, то счетчики в данных функциях будут обновляться. Если счетчики обновляются, они должны сбрасывать некий таймер (например, TON) и подсветка стоит на уровне 100%, если же оператор не производит ни каких действий, то счетчик должен стоять на месте и таймер сбрасываться не должен. Соответственно, когда таймер отсчитает заданный интервал, уровень яркости надо переключить в 0%.

Данный функционал реализован в библиотеке SPK TOOLS.

В операционной системе Linux любые компоненты системы представлены в виде файлов. Устройство управления зумером также представляет из себя файл, в который необходимо записать определенное значение. В СПК1хх для управления зумером необходимо писать его состояние в файл: '/sys/class/leds/pwm-beeper/brightness'. В СПК2хх для управления зумером необходимо писать его состояние в файл: '/sys/class/leds/buzzer/brightness'.

В одном и другом случае в данный файл необходимо записывать данные в формате STRING: '0' - Зумер отключен '1' - Зумер включен

Данный функционал реализован в библиотеке SPK TOOLS.

Для добавления визуализации необходимо правой кнопкой Мыши выбрать на вкладке Устроуства элемент Application. Далее правой кнопкой мыши выбрать в появившемся меню пункт Добавить элемент и далее выбрать элемент Визуализация.

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

В Таргет-визуализации (это та, которая выполняется на контроллере) необходимо задать размер визуализации. Как правило это 800*480.

Если в контроллере поддержана WEB-визуализация, то в элементе Web-визуализация (та, которая отображается в браузере) необходимо задать ее размеры.

В свойствах самой визуализации желательно тоже указывать размер визуализации.

Для удобства редактирования визуализации в Меню -> Инструменты -> Опции ->Визуализация на вкладке Сетка необходимо активировать галки Видимая и Активная. В этом случае на визуализации будет активна сетка, к которой можно привязывать элементы визуализации.

Ниже видео пример настройки визуализации для СПК1хх:

Ниже видео пример настройки визуализации для СПК2хх с Web визуализацией:

Для этого необходимо открыть нужную визуализацию. С помощью вкладки Панель инструментов необходимо выбрать нужные элементы, например, Lamp1(лампа), DipSwitch (переключатель) и PushSwitch. В основной программе (PLC_PRG) должны быть созданы переменные, которые будут отвечать за состояние кнопок и переключателей. Если просто разместить на визуализации элементы, но не связать их с переменными - они работать не будут.

Для привязки переменных к элементам необходимо выбрать нужный элемент и открыть вкладку Свойства. В большинстве случаев за изменение состояния (включено/выключено) отвечает поле Variable - переменная. Чтобы с этим полем связать переменную, необходимо по нему кликнуть, появится кнопка с многоточие. Необходимо нажать на эту кнопку и с помощью ассистента ввода выбрать необходимую переменную.

У каждого компонента визуализации есть много параметров, которые можно настраивать. Более подробно с ними можно ознакомиться в справочной системе CODESYS.

1. Для отображения надписей на русском языке в настройках менеджера визуализации должна быть активирована галка использовать строки Unicode. 2. Если в программе используются строковые переменные, которые выводятся на визуализацию их необходимо перевести в формат WSTRING - это строки в формате Unicode. Для работы со строками данного типа предусмотрены все теже операторы, что и для строк в формате STRING. ФБ и функции для работы со строками WSTRING размещены в библиотеке Standard64.

В менеджере визуализации необходимо поставить галку на пункте Use Сurrent Visu Variable (Использовать переменную Current Visu).

Далее в программе(в данном случае на ST) пишите:

где vizualization_1 - это имя визуализации, на которую необходимо перейти.

VisuElems.CurrentVisu - это глобальная переменная, которая имеет тип STRING.

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

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

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

Пока мы можем предоставить только ряд рекомендаций по оптимизации данного компонента. Но не смотря на это, на экране с трассировкой все равно будут наблюдаться небольшие "подвисания", но при этом СПК не будет полностью терять управление.

Рекомендация состоит из 2-х этапов:

1. подключаем СПК к ПК 2. запускаем WinSCP 3. подключаемся к СПК 4. открываем каталог /mnt/ufs/root/CoDeSysSP 5. находим файл setupcfg207.cfg 6. скачиваем его на ПК 7. Делаем резервную копию файла 8. Открываем файл текстовым редактором. Рекомендую использовать редактор EmEditor. Остальные редакторы могут некорректно добавлять переносы на новую строку. Если файл будет отредактирован не корректно СПК не запустит CODESYS. 9. В открывшемся файле ищем опцию [CmpTargetVisu] в нее надо добавить настройку Updaterate_ms=1000, например так:

[CmpTargetVisu] BitmapbufferSize=3 Updaterate_ms=1000

10. После этого файл сохранить на ПК 11. Изменённый файл с заменой скопировать в СПК 12. Через меню Commands-> Open terminal запустить окно терминала 13. В открывшемся терминале выполнить команду /sbin/reboot 14. Дождаться перезагрузки СПК

Если появился курсор или загрузился заранее созданный проект, манипуляция прошла удачно. Если CODESYS не загрузился, необходимо выполнить подключение через WinSCP и вернуть оригинальный файл. Либо выполнить перепрошивку.

Если в проекте используется Trace, то необходимо использовать несколько простых правил: 1. Актуальная прошивка и Target, на данный момент это прошивка 3,302. 2. Для Trace лучше создать отдельную задачу, например, TraceTask, вызывающуюся циклично, с циклом 500-1000мс (или больше) 3. Переменные которые будут выводиться на график должны быть объявлены именно в этой задаче программе/Programm (POU). 4. Если переменные надо передавать из другого блока или они глобальные, то лучше создать дублирующие локальные переменные и данные просто внести переприсвоением. 5.Задача визуализации должна вызываться с циклом в 300-400мс. 6.При добавлении трассировки в визуализацию рекомендуется задать статические диапазоны для графика и статическое значение его длительности. В этом случае график будет меньше пересчитываться и меньше тратить ресурсов процессора. 7.Параметр Measure in every n-th cycle подбирать так, чтобы значение справа было 1 секунда или больше, но не меньше! 8. Для основной программы цикл делать менее 20мс не рекомендуется. 9. Чем меньше окно трассировки, тем меньше наблюдаются подвисания.

Данные рекомендации даны для линейки СПК1хх. Для оптимизации графиков на СПК2хх используется аналогичная технология.

Сейчас есть договоренность с компанией 3S о дальнейшей оптимизации данного компонента. Запланирована оптимизация данного компонента в CODESYS3.5 SP5, который выйдет в марте 14 года.

На СПК2хх на новом железе (на модуле SOM) данная проблема не актуальна, позже выложу видео пример для СПК2хх.SOM.

Видео пример настройки Trace на СПК с оптимальными настройками:

Начиная с прошивки 3,9хх Компания ОВЕН разработала драйвер, который поддерживает все операционные системы. Нижеприведенный текст актуален для прошивок со старой версией драйвера и прошивок ниже 3.9хх! В операционной системе корпорация Wicrosoft ужесточила требования к драйверам. Теперь в систему можно установить драйвер имеющий цифровую подпись. Пока мы не получили цифровую подпись, драйвер который мы распространяем установить в Windows 8 нельзя. Но эту проблему можно легко обойти если использовать аналогичный драйвер из самой Windows.

Полный процесс подключения и настройки СПК в Windows 8 можно посмотреть в данном видео:

📎📎📎📎📎📎📎📎📎📎