Полезные возможности ST+Codesys 3, которые многие не замечают
За время работы инженером-программистом ПЛК очень часто в ходе разработки находились не самые очевидные, но довольно простые и красивые решения как типовых, так и специализированных задач. В этой статье хочу поделиться опытом и рассказать как сделать разработку под ПЛК приятнее и эффективнее.
Об опыте автора
Опыт работы с ПЛК: 3 года.
Разработка под ПЛК: Beckhoff CX series, SE Modicon M221, WAGO 750 series.
Среды разработки: TwinCAT 3, EcoStruxure Machine Expert-Basic, CODESYS V2.3.
Основная часть опыта приходится на ST+TwinCAT 3, который базируется на CODESYS и IEC 61131.
Статью решил написать так как покидаю OT и перехожу в мир IT. Хочется поделится опытом, чтобы эти 3 года не прошли даром.
Среда разработки
Если часто приходиться комментировать части кода — то узнайте какое сочетание клавиш позволит вам это сделать, это сэкономит много времени. В TwinCAT XAE Shell для комментирования выделенного кода: Ctrl+K+C и Ctrl+K+U для расскомментирования.
ПЛК Агава-40 CODESYS V3.5 моя первая программа Модуль дискретных входов DI
Обезвредьте кнопку Stop, чтобы случайно не остановить ПЛК , иногда такое случайное нажатие может привести к нежелательным последствиям. В TwinCAT XAE Shell можно выбрать какие кнопки выводить на toolbar. После локальной отладки программы рекомендую скрыть кнопку остановки ПЛК .
Structured Text
STRING vs WSTRING
В TwinCAT 3 есть возможность использовать Unicode строки. Они могут пригодиться, если необходимо передовать специфические символы, но без необходимости лучше не использовать WSTRING.
Size of character
Date and time
Почти в любом проекте необходимо знать точное время, вычислять временные интервалы. Часто работа с временем и датами доставляет много проблем и боли. Для себя я нашёл решение, уверен, оно упростит многим жизнь.
F_GetSystemTime() (Функция из модуля Tc2_System)
Эта функция может быть использована для считывания метки времени операционной системы. Временная метка представляет собой 64-разрядное целое значение с точностью до 100 нс. Помимо прочего, его можно использовать для синхронизации задач или измерения времени. Одна единица соответствует 100 нс.
Время представляет собой количество интервалов в 100 нс с 1 января 1601 года.
Хранятся отметки в переменных типа ULINT. Зная всё это мы можем без труда рассчитывать интервалы времени с точностью до 100нс! Нужно просто найти разность между отметками.
К сожалению, стандартных функций для преобразования отметки в тип DATETYPE я не нашёл, поэтому пришлось реализовать такую функцию самостоятельно:
(* :Description: Convert time since 1 January 1601 in 100 ns to DATE_AND_TIME (Преобразует время с 1 Января 1601 года в 100 нс в DATE_AND_TIME) :Usability: Convert timestamp to datetime :Note: check then nSystemType more then 01.01.1970 00:00:00 Version history: Kozhemaykin E. A. | Creating | 16.08.2021; *) FUNCTION F_SystemTimeToDT : DT VAR CONSTANT SECONDS_BETWEEN_1601_AND_1970 : ULINT := 11_644_473_600; END_VAR VAR_INPUT nSystemTime : ULINT; // One unit is 100 ns since 1 January 1601 END_VAR VAR nSeconds : ULINT; END_VAR
nSeconds := (nSystemTime / 10_000_000) — SECONDS_BETWEEN_1601_AND_1970; F_SystemTimeToDT := ULINT_TO_DT(nSeconds);
Как видно из кода, сложность заключалась в расчёте интервала между начальным отсчётом системного времени ПЛК и типа DATETIME.
Обзор программы для Овен СПК105 в CoDeSys 3.5
Функция для получения текущей даты/времени в формате DATETIME
(* :Description: Return datetime now in format DATE_AND_TIME (DT) :Usability: For getting datetime now in format DATE_AND_TIME (DT) Version history: Kozhemaykin E. A. | Creating | 16.08.2021; *) FUNCTION F_DateTimeNow : DT
F_DateTimeNow := F_SystemTimeToDT(F_GetSystemTime());
Функция для получения прошедшего времени в формате TIME
(* :Description: Time passed since tStart (Прошло времени c tStart) :Usability: If need check how long time past Version history: Kozhemaykin E. A. | Creating | 16.08.2021; *) FUNCTION F_TimePassed : TIME VAR_INPUT tStart: ULINT; (* Время начала в 100нс от 01.01.1601, текущее время в данном формате предоставляет функция F_GetSystemTime()*) END_VAR
F_TimePassed := ULINT_TO_TIME((F_GetSystemTime() — tStart) / 10000);
Числовые константы
Большинство документаций по обмену по промышленным протоколам содержит шестнадцатиричные адреса регистров, номера функций, обозначения комманд и т.д. Для битовых операций необходимо представлять числа в двоичном виде. Чтобы эффективно решать задачи, где приходиться отходить от десятичной системы счисления необходимо знать о возможности задания константных чисел заданного типа в заданной системе счисления.
В общем виде задание числовой константы выглядит так:
##value
Числовые значения могут быть двоичными числами, восьмеричными числами, десятичными числами или шестнадцатеричными числами. Если целое значение не является десятичным числом, его основание должно быть записано перед целочисленной константой, за которой следует символ хэша (#). Для шестнадцатеричных чисел цифры для чисел от 10 до 15, как обычно, представлены буквами A-F.
Типом этих числовых значений может быть BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL или LREAL.
ANY type
В языках программирования со статической типизацией довольно сложно делать универсальные функции/функциональные блоки. Когда мне поставили задачу собирать и анализировать различные данные, я решил, что копировать функциональные блоки и изменять в них только тип входного значения — не лучший вариант. Тогда появилась идея приводить все типы к одному и по объективным причинам это тип LREAL.
При реализации функции или метода вы можете объявлять входные данные (VAR_INPUT) как переменные с типом данных ANY. Далее вы можете получить указатель на значение, тип данных и размер переданной на этот вход переменной.
Структура типа данных ANY
TYPE AnyType : STRUCT // the type of the actual parameter typeclass : __SYSTEM.TYPE_CLASS ; // the pointer to the actual parameter pvalue : POINTER TO BYTE; // the size of the data, to which the pointer points diSize : DINT; END_STRUCT END_TYPE
Кроме типа ANY существуют также дочерние типы:
Хочу обратить внимание что на вход типа ANY не может быть подана константа, поэтому в некоторых случаях придётся создавать дополнительную переменную.
Зная про этот тип мне удалось реализовать функцию, которая приводила данные разных типов к LREAL.
Функция по преобразованию числовых типов в LREAL
(* :Description: Convert ANY_NUM and ANY_BIT to LREAL :Usability: For development universal functions :Note: Valid types is: ANY_NUM: — ANY_REAL: REAL, LREAL — ANY_INT: USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT ANY_BIT: — BYTE, WORD, DWORD, LWORD Version history: Kozhemaykin E. A. | Creating | 01.06.2021; Kozhemaykin E. A. | TO_LREAL | 03.11.2021; *) FUNCTION F_AnyNumToLREAL : LREAL VAR_INPUT AnyNum: ANY; // Variable for converting, need have address END_VAR VAR pReal : POINTER TO REAL; // pointer to a variable of the type REAL pLReal : POINTER TO LREAL; // pointer to a variable of the type LREAL pUSInt : POINTER TO USINT; // pointer to a variable of the type USInt pUInt : POINTER TO UINT; // pointer to a variable of the type UInt pUDInt : POINTER TO UDINT; // pointer to a variable of the type UDInt pULInt : POINTER TO ULINT; // pointer to a variable of the type ULInt pSInt : POINTER TO SINT; // pointer to a variable of the type SInt pInt : POINTER TO INT; // pointer to a variable of the type Int pDInt : POINTER TO DINT; // pointer to a variable of the type DInt pLInt : POINTER TO LINT; // pointer to a variable of the type LInt pByte : POINTER TO BYTE; // pointer to a variable of the type Byte pWord : POINTER TO WORD; // pointer to a variable of the type Word pDWord : POINTER TO DWORD; // pointer to a variable of the type DWord pLWord : POINTER TO LWORD; // pointer to a variable of the type LWord END_VAR VAR_OUTPUT OrginalType: __SYSTEM.TYPE_CLASS; bInvalidType: BOOL := FALSE; END_VAR
// Real numbers IF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_REAL) THEN pReal := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_REAL; F_AnyNumToLREAL := TO_LREAL(pReal^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LREAL) THEN pLReal := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LREAL; F_AnyNumToLREAL := pLReal^; // Bit’s numbers ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_BYTE) THEN pByte := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_BYTE; F_AnyNumToLREAL := TO_LREAL(pByte^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_WORD) THEN pWord := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_WORD; F_AnyNumToLREAL := TO_LREAL(pWord^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DWORD) THEN pDWord := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DWORD; F_AnyNumToLREAL := TO_LREAL(pDWord^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LWORD) THEN pLWord := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LWORD; F_AnyNumToLREAL := TO_LREAL(pLWord^); // Unsigned integers ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_USINT) THEN pUSInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_USINT; F_AnyNumToLREAL := TO_LREAL(pUSInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UINT) THEN pUInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UINT; F_AnyNumToLREAL := TO_LREAL(pUInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UDINT) THEN pUDInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UDINT; F_AnyNumToLREAL := TO_LREAL(pUDInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_ULINT) THEN pULInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_ULINT; F_AnyNumToLREAL := TO_LREAL(pULInt^); // Signed integers ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_SINT) THEN pSInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_SINT; F_AnyNumToLREAL := TO_LREAL(pSInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_INT) THEN pInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_INT; F_AnyNumToLREAL := TO_LREAL(pInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DINT) THEN pDInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DINT; F_AnyNumToLREAL := TO_LREAL(pDInt^); ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LINT) THEN pLInt := AnyNum.pValue; OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LINT; F_AnyNumToLREAL := TO_LREAL(pLInt^); //Invalid type ELSE F_AnyNumToLREAL := 0; bInvalidType := TRUE; END_IF
REFERENCE
Все знают про указатели (POINTER) и связанные с ними проблемы, так вот многие из них можно избежать, если использовать ссылки(REFERENCE):
- Ссылки проще в использовании: ссылку не нужно разыменовывать (с помощью ^), чтобы получить доступ к содержимому объекта, на который ссылается ссылка.
- Более чистый синтаксис для передачи значений: Если вход является ссылкой, то нет необходимости писать ADDR(value).
- В отличие от указателей, для ссылок компилятор проверяет типы данных при передаче значений.
Стоит отметить, что не всегда ссылкой можно заменить указатель, но когда это возможно, то сделайте это.
Pragmas
Инструкции pragma влияют на свойства переменных, относящихся к процессу компиляции или предкомпиляции. Не поленитесь просмотреть возможности каждого типа pragmas — обязательно найдёте что-то полезное для своего проекта.
- Message pragmas
- Attribute pragmas
- Conditional pragmas
- Region pragma
- Pragmas for warning suppression
Union
Union — тип структуры, который позволяет представлять значение в разных типах данных. Данная структура полезна при отладке кода а также при обработке входных значений.
В случае, если нужно обращаться к битам, то это можно сделать через точку. Но у этого способа я вижу огромный недостаток: нет возможности итерироваться по битам. Если нужно разобрать переменную на байты или по 16-бит или другим сложным образом, то вместо написания сложных функций попробуйте сначала сделать это с помощью Union.
SEL, MIN, MAX, LIMIT
Многим программистам ПЛК часто не хватает синтаксического сахара, которого много в других языках программирования. На примере функции SEL хочется показать, что возможно этот «сахар» в виде тернарного оператора не особо нужен.
Если вам нужно выбрать значение в зависимости от условия, выможете сделать это в одну строку:
value := SEL(condition, if false, if true);
Если вам нужно ограничить значение сверху и/или снизу, это также можно сделать в одну строку:
value := MIN(value, max_limit); value := MAX(value, min_limit); or value := LIMIT(min_limit, value, max_limit);
Многие функции и операторы, которых нам не хватает уже написаны — нужно только поискать.
Заключение
В статье описано,то на что лично мне захотелось обратить внимание (ООП решил не трогать). Буду рад если мой опыт принесёт кому-то пользу. Попрошу при использовании предоставленных функций оставлять продолжать version history.
Делитесь своим опытом в комментариях. Чтобы быть в курсе событий и общаться с коллегами предлагаю перейти по ссылкам: тг-канал proPLC, тг-чат proPLC.
- Программирование
- Промышленное программирование
- SCADA
- Программирование микроконтроллеров
Источник: habr.com
ПО CODESYS для программирования ПЛК
CODESYS («кодесис») – комплексный инструмент для программирования промышленных контроллеров (ПЛК).
CODESYS v3 – это совершенно новая разработка. В основу CODESYS v3 положен модульный принцип, который позволяет дополнять систему посредством подключения дополнительных модулей.
Единожды изучив среду программирования, вы будете уметь программировать огромное количество контроллеров, основанных на CODESYS.
Особенности ПО для программирования и конфигурирования ПЛК CODESYS
В соответствии со стандартом МЭК 61131-3 CODESYS поддерживает 5 языков программирования:
- IL (Instruction List) – язык, по синтаксису схожий с языком низкого уровня Ассемблер.
- ST (Structured Text) – текстовый язык, похожий на Pascal.
- LD (Ladder Diagram) – язык релейно-лестничных схем.
- FBD (Function Block Diagramm) — язык функциональных блоков.
- SFC (Sequental Function Chart) – язык диаграмм, похожих на блок-схемы.
Кроме этих языков CODESYS включает в себя еще один язык – CFC (Continuous Function Chart). Он похож на FBD, но позволяет располагать функциональные блоки свободно на экране и задавать порядок их выполнения.
Первая версия CODESYS увидела свет в 1994 году. С тех пор CODESYS обрел огромную популярность среди пользователей и производителей ПЛК. На данный момент сотни производителей выпускают тысячи моделей контроллеров на базе CODESYS.
CODESYS очень удобен для программиста.
- Тот, кто раньше делал релейные схемы, легко сможет их адаптировать для ПЛК в языке LD.
- Программисты высокого уровня по достоинству оценят язык ST, который для них будет понятным и доступным.
- Разветвленные алгоритмы с четкой последовательностью действий удобно реализовывать с помощью SFC.
- А если человек ни разу не сталкивался с программированием, то возможно стоит начать с FBD или CFC.
Единожды изучив среду программирования, вы будете уметь программировать огромное количество контроллеров, основанных на CODESYS.
Описание ПО для программирования и конфигурирования ПЛК CODESYS
CODESYS – это не только среда программирования — это целый комплекс средств по работе с промышленным оборудованием. Он включает собственный OPC-сервер, графический редактор для создания визуализаций, менеджер рецептов, лог аварий и многое другое. На данный момент выпускаются контроллеры на базе двух версий CODESYS: версия 2 и версия 3.
CODESYS v2 поддерживается производителем только в режиме исправления ошибок. Новые функции в него уже не добавляются. Тем не менее, функционала CODESYS v2 достаточно для подавляющего большинства задач. К тому же он требует меньше ресурсов ПЛК и компьютера.
CODESYS v3 – это совершенно новая разработка. В основу CODESYS v3 положен модульный принцип, который позволяет дополнять систему посредством подключения дополнительных модулей.
Основные отличия СODESYS v3 от v2:
- Поддержка элементов Объектно Ориентированного Программирования (ООП).
- Новый язык программирования UML (Unified Modelling Language), тесно связанный с ООП.
- Сети ПЛК — инструмент управления в одном проекте несколькими контроллерами.
- Управление системами движения (CODESYS SoftMotion).
- Оптимизация программного кода (сложные конструкции типа IF … END_ IF можно «сворачивать» для упрощения просмотра кода).
- Обновленный и улучшенный менеджер визуализаций. Появились стили визуализаций, которые позволяют изменить оформление проекта в один клик, а также существенно расширилась библиотека графических элементов.
И это лишь немногие изменения, которые принесла третья версия CODESYS. Таким образом, CODESYS v3 аккумулировал в себе многие тенденции современной промышленной автоматизации и продолжает регулярно обновляться, обзаводясь всё новыми и новыми функциями.
О тенденциях в промышленных сетях
С тех пор, как в 1979 году появился протокол Modbus, он стал де-факто стандартом промышленной сети. Изначально он был спроектирован для использования с последовательными интерфейсами RS-232/RS-485. Позже практически без изменений он «перекочевал» в сети Ethernet в виде протокола Modbus TCP.
Всемирная популярность протокола Modbus обусловлена несколькими причинами:
- Протокол является полностью открытым, его спецификация доступна всем. При этом нет необходимости в специальных интерфейсных микросхемах для реализации.
- Реализация Modbus очень проста на программном уровне.
- Дешевая среда передачи (обычная витая пара).
- Высокая надежность передачи данных благодаря использованию в каждой посылке контрольной суммы.
При разработке протокол был рассчитан на потребности и вычислительные возможности оборудования того времени. Многие актуальные для сетей нынешнего времени вопросы учтены не были:
- Это низкая пропускная способность шины.
- Отсутствие какой-либо начальной инициализации системы. Пользователю вручную придется настраивать каждое устройство перед включением его в сеть (а именно задавать ему адрес, скорость обмена и т.д.).
- Дешевая среда передачи (обычная витая пара).
- В стандарте четко прописано использование только двух типов данных: BOOL и WORD. Соответственно, при передаче других типов данных зачастую возникают разночтения между устройствами разных производителей.
Стремление к развитию промышленных сетей привело в появлению в 2003 году стандарта EtherCAT.
Основой EtherCAT является технология Ethernet, что позволяет использовать все преимущества данной технологии.
Отличия Modbus TCP и EtherCAT
Дело в том, что промышленные сети как правило, характеризуются короткой длиной данных в каждом узле. Эта длина данных значительно меньше чем минимальная полезная нагрузка кадра Ethernet (46 байт данных).
Таким образом, если от одного устройства необходимо передать 4 байта данных, то мы имеем коэффициент полезного действия сети 8,7%. А если учесть служебные данные и межпакетный интервал, то КПД снижается до 4,7%.
Поэтому EtherCAT использует другой подход к передаче данных, называемый обработка «На лету».
Каждый пакет считывается устройством «на лету» одновременно с отправкой дальше. Вставка данных происходит аналогичным образом. Все устройства в сети работают с одной посылкой, последовательно обрабатывая её. Таким образом достигается КПД до 90%. Благодаря использованию в каждом ведомом устройстве специальной микросхемы, которая и занимается обработкой данных, задержка посылки на каждом узле составляет всего несколько наносекунд.
Схемы, приведенные ниже показывают различия в функционировании между Modbus TCP EtherCAT.
Таким образом, еще раз подчеркнем все преимущества и недостатки EtherCAT.
Преимущества:
- EtherCAT — это современная технология, учитывающая растущие потребности рынка
- Для работы используется стандартное оборудование для сетей Ethernet (свичи, маршрутизаторы, витая пара), которое имеет низкую цену.
- В отличие от Modbus, настройка сети и распределение адресов происходит автоматически. Пользователю для этого не нужно настраивать каждое устройство в отдельности.
- Большое и постоянно растущее количество оборудования от различных производителей (на сегодняшний день более 1000 компаний входят в EtherCAT Technology Group).
- Высочайшая производительность сети, обусловленная двумя факторами: ширина канала передачи данных 100 Мбит/с и высокий КПД при передаче.
Всё это позволяет работать в реальном времени с огромными объемами данных, не замечая никаких задержек.
Недостатки:
- Спецификация протокола доступна только членам EtherCAT Technology Group. Следовательно, реализовать его на любом контроллере нельзя.
- Для работы каждому ведомому устройству требуется специальная интерфейсная микросхема, что несколько повышает стоимость EtherCAT-обрудования.
В качестве завершения приведем сравнительный график производительности современных промышленных сетей.
Данный график показывает производительность при опросе 1000 дискретных точек ввода/вывода, распределенных между 50 ведомыми устройствами (для EtherCAT это время составляет всего 30 микросекунд). На графике производительность сети EtherCAT взята за 100%.
ПЛК на CoDeSyS
CoDeSys успешно применяется во многих отраслях промышленности.
CoDeSys 3.5, как интегрированная среда разработки, позволяет работать с разными моделями программируемых логических контроллеров. Помимо установки самой среды на персональный компьютер (ПК), потребуется установка таргет-файлов (поставляются производителем) нужной модели ПЛК, а также установки соответствующей версии CoDeSys RTS (исполнительной системы CoDeSys) в операционную систему ПЛК (как правило, предустановлена заранее).
Контроллеры программируемые в среде CODESYS v3.5:
- Сенсорный экран 4.3″ (480х272) и 7″ (800х480) 15.6″ (1366х768)
- Память: RAM 256 Мб, Flash 256 Мб, FRAM 100 Кб
- Мощный процессор ARM® Cortex-A9 ARM (800 МГц)
- Высокоскоростная шина EtherCAT (100 Мбит/с) для подключения модулей расширения
- Среда программирования CODESYS v3.5
- Интерфейсы Ethernet, EtherCAT, CAN, RS485, RS232
- Поддержка Modbus RTU и Modbus TCP
- Обновление программы контроллера с внешнего USB-носителя
- Мощный процессор ARM® Cortex-A9 с частотой 800 МГц
- Среда программирования: CODESYS v3.5
- Встроенный Web-сервер
- 6 языков программирования (ST, FBD, LD, SFC, CFC, IL)
- Высокоскоростная шина EtherCAT (100 Мбит/с)
- Встроенные интерфейсы Ethernet, EtherCAT, CAN, RS-485, RS-232
- Архивирование данных на внешний USB-носитель и/или MicroSD-карту
- 16 дискретных входов, 16 дискретных выходов
- до 12 аналоговых входов, до 6 аналоговых выходов
- Высокоскоростная шина EtherCAT (100 Мбит/с)
- Расширенный набор коммуникационных интерфейсов
- Среда программирования: CODESYS v3.5
- Встроенный Web-сервер
- Мощный контроллер в компактном корпусе
- Среда программирования: CODESYS v3.5
- Web-сервер
- Шина EtherCAT для модулей расширения
- Встроенные порты Ethernet, CAN, RS-232
- USB-порт и SD-карта для хранения архивов
- Мощный контроллер в компактном корпусе
- Среда программирования: CODESYS v3.5
- Web-сервер
- Шина EtherCAT для модулей расширения
- Встроенные порты Ethernet, CAN, RS-232, RS-485, разъем RJ-45 протоколы: Modbus RTU
- USB-порт и SD-карта для хранения архивов
- Протоколы CAN-Bus и/или CANopen Master
Источник: kipservis.ru
CODESYS
Программно-инструментальный комплекс, основанный на стандарте IEC 61131-3 и предназначенный для программирования промышленных контроллеров и компьютеров.
Интегрированный комплекс CODESYS (аббревиатура от Controller Development System) состоит из двух частей: среды программирования и системы исполнения.
Система исполнения CODESYS встраивается в контроллер в ходе его изготовления и необходима для программирования устройства в рассматриваемой среде. С помощью специального инструмента систему исполнения CODESYS можно адаптировать к различным аппаратным платформам.
Среда программирования – основа всего комплекса, позволяющая разрабатывать прикладные программы для логических контроллеров в пяти специализированных редакторах, использующих разные, определяемые стандартом IEC 61131-3 языки:
• ассемблер-подобный список инструкций IL;
• pascal-подобный структурированный текст ST;
• язык функциональных блоковых диаграмм FBD (а в дополнение к нему и CFC с возможностью свободного размещения элементов и обратными связями);
• язык релейно-контактных схем LD;
• язык последовательных функциональных схем SFC.
Данные редакторы содержат огромное число вспомогательных функций, ускоряющих написание программ. Среди них: автоматическое объявление переменных, ассистенты ввода, интеллектуальная коррекция ввода, синтаксический контроль и цветовое выделение при вводе, масштабирование, автоматическое соединение и размещение графических элементов, поддержка объектно-ориентированного программирования.
Встроенные оптимизирующие компиляторы CODESYS создают машинный код, который загружается в память контроллера. Поддерживаются 16-ти и 32-х разрядные микропроцессоры 80×86, Infineon C166, архитектура ARM, TriCore, Analog Devices Blackfin, PowerPC, архитектура MIPS, SH, TI C2000/28x и некоторые другие.
Режим эмуляции комплекса позволяет отладить программное обеспечение без контроллера. После подключения к устройству среда программирования CODESYS способна провести отладку программ и оборудования, используя функции мониторинга, изменения и фиксации значений переменных, контроля потока выполнения, расстановки точек останова, горячего обновления кода, графической трассировки в реальном времени. При непрерывных технологических процессах CODESYS может исправлять уже работающую программу на лету. Измененные части компилируются и попадают в контроллер, а система исполнения подключает новый код.
В программе существует менеджер задач и библиотек, встроенная поддержка различных сетей. Последние версии CODESYS позволяют пользователям самостоятельно развивать систему путем подключения плагинов, а встроенный в программу инструмент визуализации приближается по своей функциональности к коммерческим SCADA-системам.
Комплекс программирования CODESYS распространяется совершенно бесплатно. Никаких ограничений на число установок или привязки к аппаратным средствам нет. В процессе установки среды программирования не нужно вводить никаких кодов. Предметом лицензирования разработчиков являются лишь системы исполнения. Если оборудование поддерживает CODESYS, то это значит, что цена лицензии уже вошла в его стоимость.
Версия 1.0 программного комплекса CODESYS была выпущена в 1994-ом году немецкой компанией Smart Software Solutions или 3S. Штаб-квартира организации расположена в городе Кемптен (Германия).
В настоящее время комплекс активно развивается. Для расширения возможностей CODESYS компания создала целый ряд дополнительных приложений: пакет для построения систем по управлению движением CODESYS SoftMotion, инжиниринговый интерфейс ENI, инструмент визуализации CODESYS HMI, а также ряд специализированных библиотек.
Среда программирования полностью переведена на русский язык, включая файлы помощи и контекстно-зависимые подсказки.
CODESYS работает под Linux, QNX, Windows 98, NT, XP, 2000, Vista, 7 и 8. Код созданной прикладной программы функционирует на разных аппаратных платформах.
Распространение программы: Freeware
Источник: cxem.net
Программа codesys что это
АГАВА ПЛК-60 Новинка.
Бюджетный программируемый логический контроллер
ПЛК-60 построен на платформе АГАВА ПЛК-40, но без сенсорного экрана.
В архитектуру ПЛК-60 заложен тот же принцип конфигурирования, что и в ПЛК-40 и МВВ-40: клиент сам «собирает» свой прибор, то есть, определяет необходимое количество и тип интерфейсов, параметры входов и выходов.
Применение:Автоматизация небольших локальных систем, таких как насосные станции, устройства поддержания уровня или давления, управление освещением, температурой и т. д.
Автоматика для котлов и котельных
Конструкторское бюро «АГАВА» производит современную и надежную автоматику для котлов и котельных.
Комплекты автоматики предназначены для автоматического управления практически любыми типами паровых и водогрейных котлов на газовом, жидком и твердом топливе, а также печами и сушилками.
АГАВА 6432 гарантирует безаварийную работу оборудования, а система диспетчеризации позволяет управлять объектами без постоянного присутствия оператора.
Панели оператора (ПО)
Линейка панелей операторов представлена двумя сериями АГАВА ПО-40 и АГАВА ПО-50.
ПО могут использоваться в качестве программируемого логического контроллера для управления оборудованием в различных областях промышленности, жилищно-коммунального и сельского хозяйства.
Визуализация осуществляется с помощью среды разработки AgavaPLC.
Диагональ экрана 4,3″ / 7″ / 10,1″ / 15,6″
Программируемые логические контроллеры (ПЛК)
Линейка свободно программируемых логических контроллеров (ПЛК), а также модули ввода / вывода.
Программирование контроллеров осуществляется на языках МЭК 61131 в среде разработки CoDeSys 3.5 (контроллеры АГАВА ПЛК-40 и АГАВА ПЛК-30), либо в среде ISaGRAF 5 (контроллеры АГАВА 6432.20 ПЛК1 и АГАВА 6432.20 ПЛК2)
Контроллеры премиум класса по цене от 17 860 рублей.
АДИ – устройство индикации
Устройство цифровой индикации АДИ с цифровой и дискретной индикацией величины давления предназначено для:
- цифровой фильтрации измеренных сигналов;
- отображения цифровой информации о давлении и положении заслонки;
- формирования сигналов при достижении заданных уровней контролируемого параметра.
Электрическое питание от стабилизированного источника постоянного тока напряжением от 12 до 27 В.
Потребляемый ток не превышает 50 мА.
АДМ – манометр с токовым и цифровым выходами
Приборы семейства АДМ-100 позволяют получать исчерпывающую информацию об избыточном давлении жидкостей, паров и газов:
- визуальную (с циферблата);
- аналоговую (ток 4–20 мА);
- дискретную (в зависимости от модификации).
Эти приборы применяются в жилищно-коммунальном хозяйстве, в системах централизованного контроля и управления технологическими процессами на объектах тепло-, водо-, нефте- и газоснабжения, в распределительных сетях, а также в локальных системах автоматизации насосного, компрессорного и другого оборудования.
АДН / АДР многопредельные измерители
Датчик давления АДН / АДР – малогабаритное изделие, в котором совмещены функции первичного датчика и вторичного прибора. Измеритель построен на современной элементной базе с использованием технологии лазерной калибровки и микропроцессорной обработки результатов измерений.
Применения измерителя возможно в качестве напоромеров и тягонапоромеров в автоматике защиты газовых котлов и горелок, в качестве преобразователей давления газа, воздуха, а также разрежения в контурах регулирования.
АДП-01 – датчик пламени
Датчик-реле контроля пламени АДП-01 предназначен для индикации наличия или отсутствия пламени и формирования сигнала для автоматики защиты котла.
Отличительные особенности датчика АДП-01:
- в качестве чувствительного элемента в разных исполнениях используются фотодиод, фоторезистор, ультрафиолетовый сенсор, ионизационный сенсор;
- имеет автоматическую регулировку усиления сигнала;
- устойчив к вибрации элементов конструкции котлоагрегата.
БПРС–блок питания и разветвления сигналов
БПРС предназначен для разветвления токового сигнала 4–20 мА на два гальванически развязанных сигнала 4–20 мА. Дополнительно позволяет запитывать стабилизированным напряжением постоянного тока электронные приборы.
Областью применения БПРС являются системы управления, регулирования, защитной автоматики, в том числе для газовых котельных.
Частотные преобразователи ERMAN
Предлагаем вашему вниманию бюджетные частотные преобразователи (частотники) «ERMAN» для управления двигателями насосов, вентиляторов, дымососов, компрессоров, формовочных машин и др.
Произведем подбор частотного преобразователя под конкретные задачи. Гарантируем, что частотный преобразователь ERMAN прослужит долго и надежно.
Дорогие друзья!
Команда КБ АГАВА продолжает работать над совершенствованием своей продукции. Вы можете помочь нам в этой работе, ответив на вопросы анкеты, адресованной тем, кто на практике познакомился с тем или иным нашим изделием. Итак, вы купили программируемый логический контроллер АГАВА. Пройти опрос
1. Как давно вы преобрели контроллер АГАВА:
менее 3 месяцев назад от 3 месяцев до 1 года от 1 года до 3 лет более 3 лет
2. Возникали ли проблемы при программировании контроллера
да, очень серьезные несущественные никаких проблем
3. Устраивает ли вас форма представления протокола MODBUS, практикуемая КБ АГАВА
устраивает не устраивает в общем, устраивает, но хотелось бы более подробного описания в документации с примерами реализации
4. Приходилось ли вам обращаться в службу техподдержки КБ АГАВА
нет да, однократно да, неоднократно
5. Если обращались, каков итог
очень помогло кое в чем помогло никак не помогло
6. Есть ли у изделия недостатки, на которые разработчикам следует обратить особое внимание
таких нет есть
7. Устраивает ли вас форма предоставления технической и эксплуатационной документации на ПЛК в виде ссылок на официальный сайт КБ АГАВА в паспорте изделия
да, устраивает не устраивает – бумажный вариант удобнее
8. Помогает ли вам в работе с ПЛК руководство «БЫСТРЫЙ СТАРТ» с минимально необходимым набором информации
нужный и полезный документ нет, пользуюсь только полной версией
9. Насколько ценно для вас, что КБ АГАВА предоставляет заказчикам возможность выбрать оптимальную конфигурацию вводов-выводов и интерфейсов на борту
это очень ценно хорошая опция неплохо, но это не так уж важно мне это не важно
10. Устраивает ли вас качество визуализации, обеспечиваемое контроллерами АГАВА
вполне устраивает более-менее не устраивает
11. Устраивает ли вас производительность контроллера
вполне устраивает более-менее не устраивает
12. Как вы оцениваете дизайн и эргономику изделия
продумано и исполнено на высоком уровне приемлемо удобно, но невыразительно выглядит неплохо, но пользоваться неудобно все плохо
13. Устраивает ли вас время выполнения договоров на поставку изделий
устраивает хотелось бы побыстрее
14. Как вы оцениваете работу ПЛК АГАВА за все время эксплуатации
никаких нареканий иногда глючит по мелочи, но можно не обращать внимания были проблемы, но их удалось решить работает плохо сломался, пришлось заменить
15. Будете ли вы рекомендовать приобрести ПЛК АГАВА своим коллегам и партнерам
непременно с высокой вероятностью не исключено вряд ли ни за что
16. Вы впервые узнали о ПЛК АГАВА
от коллег, партнеров из Интернета (реклама на общедоступных сайтах) из Интернета (информация на отраслевых ресурсах) из печатных источников (буклеты, листовки и т. д.) из рекламы в СМИ из наружной рекламы из социальных сетей
Благодарим за помощь в работе! Постараемся учесть все ваши замечания.
Если у нас возникнут вопросы или уточнения, разрешаете ли вы с вами связаться?
Если да, укажите, пожалуйста ваш e-mail:
Команда КБ АГАВА
Предыдущий вопрос
Новости
Измерители давления серии АДТ-100 производства екатеринбургского конструкторского бюро «АГАВА» внесены в Государственный реестр средств измерений. Включение в Госреестр СИ дает возможность использовать данные измерители в сфере государственного метрологического регулирования. Теперь, в соответствии с существующим положением, они будут поставляться с первичной поверкой. Межповерочный интервал – три года!
Произведен монтаж комплектов автоматики для Усинской ТК предназначенной для автоматизации шести котлов типа ПТВМ-30 и ДКВР-20. Обеспечение полного цикла регулирования технологических процессов, а так же комплексной защиты и сигнализации позволит повысить безопасность и эффективность работы котлов. Автоматика выполнена на базе контроллера АГАВА и оснащена сенсорными панелями АГАВА ПО-50.
Конструкторское бюро «АГАВА», в числе изделий которого широко известные системы автономного водоснабжения загородных домов ERMANGIZER, выпустило на рынок новую модель частотных преобразователей ЭРМАНДЖАЙЗЕР ER-G-380. Главное отличие данного ПЧ от однофазных собратьев, работающих от сети 220 В, в способности управлять более мощным (от 2,2 до 7,5 кВт) трехфазным скважинным насосом. Это может выручить в ситуациях, когда водоносные слои располагаются на большой глубине (90 ̶110 м) и однофазные насосы не справляются с задачей подъема воды.
Источник: www.kb-agava.ru