Синтаксис языка st для codesys + видео обзор

Содержание
  1. Подробности об языке программирования на ST в CoDeSyS
  2. Язык программирования ST и типы переменных
  3. Перечень основных операторов
  4. Общие сведения о языке ST¶
  5. Типы данных¶
  6. Работа со строками в CODESYS V3.5
  7. Типы строк в CODESYS V3.5
  8. Длина и размер строки
  9. Базовые функции работы со строками
  10. Расширенные функции работы со строками
  11. Управляющие последовательности
  12. Строки и массивы
  13. Заключение
  14. St язык программирования codesys – Язык ST CoDeSyS — самый гибкий язык программирования
  15. Язык программирования ST и типы переменных
  16. Перечень основных операторов
  17. Советы по программированию ПЛК в среде CoDeSyS
  18. Стандартные языки МЭК
  19. Конфигуратор входов/выходов
  20. CODESYS для программирования встраиваемых систем
  21. Аспекты программиста
  22. Аспекты руководителя
  23. Проблема правильной организации работ
  24. Проблема развития универсальности системы и расширения рынка сбыта
  25. Проблема интеграции с устройствами других компаний
  26. Проблема замены ПЛК встраиваемой системой
  27. Установка к CODESYS
  28. Заключение
  29. Языки программирования программного комплекса CoDeSys
  30. 4.1 Язык il (Instruction list)
  31. Модификаторы и операторы il
  32. Видео

Подробности об языке программирования на ST в CoDeSyS

Синтаксис языка st для codesys

Прежде чем мы с вами будем рассматривать упрощённую графическую систему программирования для технологов, хотелось бы в двух словах рассказать о базисном языке программирования СИ. Язык ST CoDeSyS отличается от других своей гибкостью и адаптивностью под любые задачи. Он позволяет обрабатывать сложные решения и видеть всю картину в целом. Чаще всего применяется в функциональных блоках для обработки алгоритма той или иной части рабочего органа станка или линии.

Из этой статьи вы узнаете:

Здравствуйте уважаемые Дамы и Господа! Меня зовут Гридин Семён, и я являюсь автором этого блога. В данном посте я хочу обсудить с вами базовые понятия языка программирования CoDeSyS. Называется он ST CoDeSyS, очень сильно напоминает СИ.

Язык программирования ST и типы переменных

ST (Structured text) — это одна из составных частей комплекса CoDeSyS и представляет собой текстовый редактор высокого уровня. Он очень похож на Basic или Pascal. Такой способ программирования является идеальным инструментом для людей-программистов. Преимуществом языка является создание сложных математических и разветвленных алгоритмов.

ST позволяет без труда описывать сложные операции компактным и лёгким для восприятия текстом. Structured Text содержит в себе много конструкций, позволяющие присваивать переменные, использовать готовые библиотеки, функции и функциональные блоки.

Синтаксис языка st для codesys

В чём преимущество данного способа программирования? давайте с вами перечислим:

С этим мы разобрались, но, прежде чем переходить к непосредственному изучению азов программирования, необходимо ознакомиться с элементом языка — тип данных. Хочу обратить внимание, этот элемент практически схож во многих си-подобных языках (Питон, Ардуино IDE, СИ# т.д.)

Синтаксис языка st для codesys

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

В таблице ниже я представлю типы данных, которые используются чаще всех:

ТипНазваниеПределРазмер в байтах
BOOLЛогическое1 бит1 бит
BYTEЦелочисленое8 бит1 байт
WORDЦелочисленое16 бит2 байта
INTЦелочисленое-32768-327672 байта
UINTЦелочисленое0-655352 байта
FLOATВещественное±10³³4 байта
DATE_AND_TIMEДата и время
STRINGСтроковое

Перечень основных операторов

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

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

Источник

Общие сведения о языке ST¶

ST (Structured Text) – это текстовый язык высокого уровня общего назначения, по синтаксису схожий с языком Pascal. Удобен для программ, включающих числовой анализ или сложные алгоритмы. Может использоваться в программах, в теле функции или функционального блока, а также для описания действия и перехода внутри элементов SFC. Согласно IEC 61131-3 ключевые слова должны быть введены в символах верхнего регистра. Пробелы и метки табуляции не влияют на синтаксис, они могут использоваться везде.

Выражения в ST выглядят точно также, как и в языке Pascal:

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

Типы данных¶

Согласно стандарту IEC 61131-3, язык ST поддерживает весь необходимый набор типов, аналогичный классическим языкам программирования. Целочисленные типы: SINT (char), USINT (unsigned char), INT (short int), UINT (unsigned int), DINT (long), UDINT (unsigned long), LINT (64 бит целое), ULINT (64 бит целое без знака). Действительные типы: REAL (float), LREAL (double). Специальные типы BYTE, WORD, DWORD, LWORD представляют собой битовые строки длиной 8, 16, 32 и 64 бит соответственно. Битовых полей в ST нет. К битовым строкам можно непосредственно обращаться побитно. Например:

a.3 := 1; (* Установить бит 3 переменной a *)

Логический тип BOOL может иметь значение TRUE или FALSE. Физически переменная типа BOOL может соответствовать одному биту. Строка STRING является именно строкой, а не массивом. Есть возможность сравнивать и копировать строки стандартными операторами. Например:

Для работы со строками есть стандартный набор функций (см. приложение 2, раздел «Строковые операции с переменными типа STRING»).

Специальные типы в стандарте IEC определены для длительности (TIME), времени суток (TOD), календарной даты (DATE) и момента времени (DT).

В таблице 3.1 приведены значения по умолчанию, соответствующие описанным выше типам.

Таблица 3.1 – Значения по умолчанию для типов данных IEC 61131-3

Тип(ы) данныхЗначение
BOOL, SINT, INT, DINT, LINT0
USINT, UINT, UDINT, ULINT0
BYTE, WORD, DWORD, LWORD0
REAL, LREAL0.0
TIMET#0S
DATED#0001-01-01
TIME_OF_DAYTOD#00:00:00
DATE_AND_TIMEDT#0001-01-01-00:00:00
STRING‘’ (пустая строка)

По умолчанию, все переменные инициализируются нулем. Иное значение переменной можно указать явно при ее объявлении. Например:

str1: STRING := ‘Hello world’;

В определённых ситуациях при разработке программных модулей удобно использовать обобщения типов, т.е. общее именование группы типов данных. Данные обобщения приведены в таблице 3.2.

Таблица 3.2 – Обобщения типов данных IEC 61131-3

Источник

Работа со строками в CODESYS V3.5

Синтаксис языка st для codesysСтандарт МЭК 61131-3 определяет типы данных при программировании ПЛК. Они делятся на четыре основных группы: биты, числа, строки и временные типы. В статье описывается работа со строками в среде CODESYS V3.5, применяемой для программирования контроллеров ОВЕН СПК1хх с Ethernet и ПЛК210.

Первые программируемые контроллеры появились в 60-70 годах прошлого века для замены электромеханических реле и аналоговых регуляторов. Тогда для разработки программ было достаточно двух основных типов данных: логического – для представления дискретных сигналов и целочисленного – для представления аналоговых сигналов. Эволюция ПЛК расширила спектр выполняемых задач, что потребовало введения новых типов данных, одним из которых стали строки.

Строки могут использоваться для задач:

Типы строк в CODESYS V3.5

Строка – это массив чисел, каждое из которых соответствует определенному символу. Соответствие между числами и символами называется кодировкой. В CODESYS V3.5 присутствуют два типа строк – STRING и WSTRING. Основные характеристики типов строк

Параметр

STRING

WSTRING

Пример записи литерала

Выбор типа зависит от решаемой задачи. Например, для отображения строк в визуализации контроллеров ОВЕН следует использовать только тип WSTRING. При работе с SMS удобнее применять STRING, так как при формировании AT-команд для модемов используется кодировка ASCII.

Длина и размер строки

В CODESYS V3.5 при объявлении строки задается ограничение числа ее символов. Если число символов не указано, то по умолчанию используется значение 80. Ограничение максимального числа символов строки в явном виде отсутствует. Фактически длина строки ограничена только объемом памяти, выделенной под проект.

В CODESYS используются нуль-терминированные строки (как в языке С), то есть каждая строка завершается NUL-символом с кодом «0». Память под этот символ выделяется автоматически, и он не учитывается при объявлении переменной.

VAR
// Максимальная длина – 40 символов
// Выделенная память – 41 байт
sMessage: STRING(40) := ‘test’;
// Максимальная длина – 80 символов (по умолчанию)
// Выделенная память – 162 байта
wsTitle: WSTRING := “test”;
END_VAR

Базовые функции работы со строками

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

Функция

Краткое описание

Объединяет две строки в одну

DELETE (STR, LEN, POS)

Удаляет из строки заданное число символов с нужной позиции

Производит поиск подстроки в строке

INSERT (STR1, STR2, POS)

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

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

Вычисляет длину строки

Выделяет из строки подстроку заданной длины (начиная с нужной позиции)

REPLACE (STR1, STR2, LEN, POS)

Заменяет в строке один фрагмент на другой (начиная с нужной позиции)

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

Примеры использования этих функций

sVar1 := ‘Hello, ’;
sVar2 := ‘world’;
// sVar3 теперь имеет значение ‘Hello, world’
sVar3 := CONCAT(sVar1, sVar2);
// iLen будет иметь значение 12
iLen := LEN(sVar3);

Функции из библиотеки Standard могут работать только с переменными типа STRING.
Для работы с WSTRING используется библиотека Standard64 с идентичным набором функций, имеющих префикс «W» (WCONCAT, WDELETE и т. д.).

Расширенные функции работы со строками

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

Типы строк STRING и WSTRING предназначены для работы с разными кодировками. Иногда требуется выполнить конвертацию этих типов, например, ввести в визуализацию строку-сообщение типа WSTRING и отправить ее по SMS в виде STRING-значения. Стандартные операторы конверсии STRING_TO_WSTRING/WSTRING_TO_STRING в этом случае не подходят, так как не производят конвертации кодировок, а перекладывают содержимое памяти одной переменной в другую. Решить проблему поможет библиотека OwenStringUtils, разработанная компанией ОВЕН.

// неправильная конвертация
// wsMessage получит значение «òåñò»
wsMessage := TO_WSTRING(‘тест’);
// правильная конвертация
// wsMessage получит значение «тест»
wsMessage := OSU.CP1251_TO_UNICODE(‘тест’);
// sDateTime получит значение ‘02.04.2019 08:11:30’
dtDateTime := DT#2019-04-02-08:11:30;
sDateTime := OSU.DT_TO_STRING_FORMAT
(dtDateTime, ‘%t[dd.MM.yyyy HH:mm:ss]’);

Большой набор функций для работы со строками можно найти в библиотеке OSCAT Basic. Часть из них повторяет функционал OwenStringUtils, но присутствуют и уникальные: например, зеркалирование строки и преобразование числа в строку с его HEX-значением. Русскоязычное описание библиотеки доступно на сайте owen.ru
в разделе CODESYS V3.

// sMessage получит значение ‘dbca’
sMessage := MIRROR(‘abcd’);
// sMessage получит значение ‘FF’
sMessage := BYTE_TO_STRH(255);

Управляющие последовательности

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

В редакторе CODESYS для ввода спецсимволов используется знак ‘$’. Полный список спецсимволов приведен в документе CODESYS V3.5. Визуализация.

sMessage := ‘Один$r$nДва’; Синтаксис языка st для codesys

Строки и массивы

VAR
sRecord: STRING := ‘123;456;789’;
sSeparatorChar: STRING := ‘;’;
auiSeparatorPos: ARRAY [0..10] OF INT;
i: INT;
j: INT;
END_VAR

j := 0;
FOR i:= 0 TO LEN(sRecord) DO
IF sRecord[i] = sSeparatorChar[0] THEN
auiSeparatorPos[j] := i;
j := j + 1;
// TODO: добавить проверку
// для верхней границы массива
END_IF
END_FOR

В некоторых случаях требуется очистить строку. Для этого достаточно присвоить ей «пустое» значение. Но следует учитывать, что эта операция не очищает строку полностью – она только записывает NUL-терминатор в ее начальный символ. На рис. 7 приведен пример, в котором переменной сначала присваивается значение ‘ABCD’, которое потом перезаписывается пустой строкой. Но фактически происходит только обнуление начального символа строки, а коды остальных символов остаются на своих местах. Поэтому, записав значение в начальный элемент через индексный доступ, вы получите строку не из одного символа (как могли ожидать), а из четырех. Обычно такие проблемы проявляются при реализации строкового протокола обмена. Чтобы избежать их, надо очищать строку с помощью специальных функций (например, MemFill).

sMessage := ‘ABCD’;
sMessage := ‘’;
// sMessage получит значение ‘EBCD’
sMessage[0] := 16#45;

Заключение

Рассмотрены ключевые моменты работы со строками в среде CODESYS V3.5. Все перечисленные библиотеки доступны для загрузки на сайте owen.ru в разделе CODESYS V3. Подробная информация о работе со строками приведена в документации к этим библиотекам, а также в справке среды программирования.

© Автоматизация и Производство, 2021. Все права защищены. Любое использование материалов допускается только с согласия редакции. За достоверность сведений, представленных в журнале, ответственность несут авторы статей.

Издание зарегистрировано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций. Свидетельство о регистрации средств массовой информации ПИ № ФС77-68720.

Источник

St язык программирования codesys – Язык ST CoDeSyS — самый гибкий язык программирования

Прежде чем мы с вами будем рассматривать упрощённую графическую систему программирования для технологов, хотелось бы в двух словах рассказать о базисном языке программирования СИ. Язык ST CoDeSyS отличается от других своей гибкостью и адаптивностью под любые задачи. Он позволяет обрабатывать сложные решения и видеть всю картину в целом. Чаще всего применяется в функциональных блоках для обработки алгоритма той или иной части рабочего органа станка или линии.

Из этой статьи вы узнаете:

Об языке программирования ST и типы переменных
Перечень основных операторов
Советы по программированию ПЛК в среде CoDeSyS

Здравствуйте уважаемые Дамы и Господа! Меня зовут Гридин Семён, и я являюсь автором этого блога. В данном посте я хочу обсудить с вами базовые понятия языка программирования CoDeSyS. Называется он ST CoDeSyS, очень сильно напоминает СИ.

Язык программирования ST и типы переменных

ST (Structured text) — это одна из составных частей комплекса CoDeSyS и представляет собой текстовый редактор высокого уровня. Он очень похож на Basic или Pascal. Такой способ программирования является идеальным инструментом для людей-программистов. Преимуществом языка является создание сложных математических и разветвленных алгоритмов.

ST позволяет без труда описывать сложные операции компактным и лёгким для восприятия текстом. Structured Text содержит в себе много конструкций, позволяющие присваивать переменные, использовать готовые библиотеки, функции и функциональные блоки.

Синтаксис языка st для codesys

В чём преимущество данного способа программирования? давайте с вами перечислим:

С этим мы разобрались, но, прежде чем переходить к непосредственному изучению азов программирования, необходимо ознакомиться с элементом языка — тип данных. Хочу обратить внимание, этот элемент практически схож во многих си-подобных языках (Питон, Ардуино IDE, СИ# т.д.)

Синтаксис языка st для codesys

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

В таблице ниже я представлю типы данных, которые используются чаще всех:

ТипНазваниеПределРазмер в байтах
BOOLЛогическое1 бит1 бит
BYTEЦелочисленое8 бит1 байт
WORDЦелочисленое16 бит2 байта
INTЦелочисленое-32768-327672 байта
UINTЦелочисленое0-655352 байта
FLOATВещественное±10³³4 байта
DATE_AND_TIMEДата и время
STRINGСтроковое

Перечень основных операторов

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

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

PROGRAM PLC_PRG VAR in:BOOL; out:INT; END_VAR IF in = TRUE THEN out:=1; ELSE out:=2; END_IF;

IF in = TRUE THEN out:=1; ELSE out:=2;

Оператор множественного выбора CASE позволяет выполнить различные группы выражений в зависимости от значения одной целочисленной переменной или выражения.

PROGRAM PLC_PRG VAR in:BOOL; test:INT; out:INT; END_VAR CASE test/2 OF 0,127: in:=TRUE; out:=123; 15..30: in:=FALSE; out:=456; ELSE out:=789; END_CASE;

Циклы WHILE и REPEAT обеспечивают повторение группы выражений, пока верно условное логическое выражение. Если условное выражение всегда истинно, то цикл становится бесконечным. Условие в цикле WHILE выполняется до начала цикла, а в REPEAT после тела цикла.

PROGRAM PLC_PRG VAR in:BOOL; test:INT:=64; out:INT; END_VAR WHILE test>1 DO out:=out+1; test:=test/2; END_WHILE

PROGRAM PLC_PRG VAR in:BOOL; test:INT:=64; out:INT; END_VAR REPEAT out:=out+1; test:=test/2; UNTIL test>1 END_REPEAT

Цикл FOR обеспечивает заданное количество повторений группы выражений.

PROGRAM PLC_PRG VAR in:BOOL; test:INT; out:INT; END_VAR FOR test:=1 TO 10 DO out:=out+1; END_FOR

FOR test:=1 TO 10 DO

Советы по программированию ПЛК в среде CoDeSyS

Одно из значительных отличий написание алгоритмов для АСУТП от классического программирования — это меньший уровень абстракции. Для описания тех. процесса не требуется глубокое и огромное описание. Достаточно опираться на логику процесса и здравый смысл.

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

Обращаю ваше внимание, чужие библиотеки, скачанные с форума на реальных объектах использовать категорически НЕ РЕКОМЕНДУЮ. Для этого есть куча готовых библиотек, такие как Standart, Utill, OSCAT. Фирма ОВЕН для своего оборудования пишет свои ПРОТЕСТИРОВАННЫЕ библиотеки.

Синтаксис языка st для codesys

У меня был такой горький опыт. Когда мы занимались автоматизацией ЦТП, а точнее контуром отопления и ГВС, я скачал с форума библиотеки для ПИД-регулирования задвижек. И что же в итоге получилось? Код тупо не сработал, вообще! Пришлось работать сутками, и днём и ночью допиливать программу в режиме цейтнота.

Пишите программы компактно, и оставляйте комментарии.

Когда пишите объёмную и сложную программу, пользуйтесь функциями, функциональными блоками и подпрограммами. Пишите комментарии возле каждого узла автоматизации. Это очень сильно упрощает жизнь. Особенно тогда, когда нужно через некоторое время что-то исправлять.

Пользуйтесь интерактивной справкой в среде разработки.

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

Синтаксис языка st для codesys

Плюсы языка ST-массивы и циклы.

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

На этом я с вами прощаюсь, дорогие друзья, пишите в комментариях, подписывайтесь, рассказывайте друзьям. До встречи в следующих статьях.

С уважением, Гридин Семён.

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

Итак, что же это за программа такая. Это среда разработки, то бишь некая программа, которая создает в себе другие программы для логических устройств. CoDeSyS разработан фирмой 3S Software, немецкими разработчиками. Это универсальный инструмент программирования контроллеров и встраиваемых систем. Комплекс программируется на стандартных языках МЭК 61131-3. О них буду говорить позже.

Из этой статьи вы узнаете:

Стандартные языки МЭК
Конфигуратор входов/выходов

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

Синтаксис языка st для codesys

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

Стандартные языки МЭК

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

Всего таких языков из стандарта МЭК существует 5:

Синтаксис языка st для codesys

Какими языками удобнее всего пользоваться? Ну, это для кого как и кому как удобно, жёстких правил нету. Для программистов ближе будет ST, для электриков LD, для технологов скорее всего CFC.

Мне удобно пользоваться CFC и ST. На CFC языке всё наглядно видно, а это очень важно. Особенно когда идёт процесс наладки программы. А ST удобен своей гибкостью, и сложность программы ограничивается лишь вашей фантазией. А какие языки выбрали вы??

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

Конфигуратор входов/выходов

Теперь вернёмся к конфигуратору входов-выходов. О чем идёт речь? Предположим, у вас есть контроллер. У него много входов и выходов, аналоговых и дискретных. И, нам же к каждому входу и выходу нужно каким-то образом привязаться. Чтобы мы могли управлять, либо считывать данные.

Синтаксис языка st для codesys

Компания 3S Software реализовала в своём пакете CoDeSyS структуру дерева, в которой уже подготовлены некие ячейки памяти, отвечающие за каждый вход и выход контроллера. И мы просто присваиваем имя каждой ячейке, чтобы в дальнейшем управлять ими.

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

Список контроллеров внушителен, поэтому я приведу те, которые знаю:

В целом CoDeSyS это мощный инструмент для реализаций технических задач. Для изготовления пультов управления технологическим процессом, от простых до сложных. Удобен для автоматизации умных домов. Минусом является стоимость подобных систем. Ну как говорится, в автоматике, чем надёжнее система, тем она дороже.

На этом у меня всё, успешных вам внедрений.

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

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

С наилучшими пожеланиями, Гридин Семён.

CODESYS для программирования встраиваемых систем

В системах промышленной автоматизации базовым интеллектуальным элементом является программируемый логический контроллер (ПЛК) [1, 2, 3, 6, 7]. С точки зрения программирования главная особенность ПЛК состоит в том, что для работы с ним не требуется образование в области информатики. Инструменты и языки программирования ПЛК должны быть максимально просты и в то же время эффективны. Упрощение использования не должно повлечь за собой ограничение круга решаемых задач.

Синтаксис языка st для codesys

Рис. Эволюционный набор для PLC Core модулей SYSTEC с системой исполнения и визуализацией CODESYS V3

Для удовлетворения этих противоречивых требований были созданы специальные языки программирования. В 1982 г. вышла первая редакция международного стандарта МЭК61131-3 (далее МЭК). В нем определено пять языков программирования ПЛК: три оригинальных визуальных и два, пришедших из мира компьютеров. Так, к первым относятся языки «релейных схем» (Ladder Diagram, LD), «функциональных блоковых диаграмм» (Function Block Diagram, FBD) и «последовательных функциональных схем» (Sequential Function Chart, SFC). А «Список инструкций» (Instruction List, IL) — это аппаратно-независимый ассемблер. Высокоуровневый язык «структурированный текст» (Structured Text, ST) представляет собой модифицированный Паскаль. Отдельные программные компоненты можно описывать на разных языках МЭК даже в одном проекте. В зависимости от уровня подготовки, типа решаемой задачи и личных предпочтений прикладной МЭК-программист выбирает оптимальный язык.

Создание качественного транслятора языка программирования высокого уровня является сложной и трудоемкой задачей. Для графических языков объем работы увеличивается за счет необходимости создания соответствующего графического редактора и отладчика. Поэтому задача поддержать несколько разных языков в одной программной среде стала серьезной проблемой для многих изготовителей ПЛК. В итоге это привело к возникновению компаний, специализирующихся на создании универсальных сред программирования на языках МЭК. Одной из наиболее успешных оказалась немецкая 3S-Smart Software Solutions GmbH со своим комплексом CODESYS.

CODESYS включает в себя редакторы и трансляторы для всех пяти стандартных языков с рядом существенных расширений. Он также поддерживает значительное число специализированных отладочных и сервисных функций. На сегодня CODESYS — мировой лидер среди МЭК-комплексов. С его помощью ежегодно программируется более полумиллиона контроллеров. После долгих лет горячих споров 18.01.2013 г. была одобрена третья редакция стандарта МЭК 61131-3. В нее вошли оригинальные объектно-ориентированные расширения языков МЭК [4], впервые реализованные в комплексе CODESYS V3. Таким образом, CODESYS создал новый международный стандарт. Описанию его составляющих, приемам эффективной работы и практике применения посвящено несколько книг и множество статей [1, 3, 6, 7, 8, 9].

Аспекты программиста

Чаще всего программисты встраиваемых систем противопоставляют CODESYS интегрированным компиляторам языка С/C++. Попробуем сравнить их технически (результаты сравнения приведены в таблице).

Таблица. Сравнительный анализ компиляторов С++ и CODESYS

С++CODESYS
1. Трансляция кода/Среда программирования
Компиляторы генерируют машинный код с качественной оптимизацией по размеру и быстродействию. Для разных семейств микропроцессоров обычно применяются разные компиляторы. Как правило, обновление версий компиляторов идет независимо от среды программирования.Встроенные компиляторы генерируют машинный код с оптимизацией по надежности и переносимости. Тысячи разных устройств, на разных микропроцессорах, используют одинаковые компиляторы, что обеспечивает их качество. Обновление компиляторов идет вместе с обновлением среды программирования. Но есть опция выбора версии компилятора. Это позволяет исключить риск при правке старых проектов.
2. Интерфейс с системным уровнем (API)
Функции чтения входов и записи выходов нужно писать в программе. На разных аппаратных платформах интерфейс с системным уровнем разный. Он меняется при замене процессора или ОС.МЭК-программа работает с образом входов/выходов. Их обслуживает система исполнения. Доступ к специфическим устройствам выполняется через системные библиотеки.
3. Переносимость
Многие функции прикладного кода могут быть использованы повторно. Системно-зависимые интерфейсы нужно адаптировать.Если набор ресурсов (порты, полевые сети и др.) не изменился, то программа переносится без изменений. Необходимо переконфигурировать ввод/вывод
и адаптировать системно-зависимые библиотеки.
4. Удобство прикладного программирования
Естественная среда для компьютерных программистов, чего не скажешь о сервисном персонале. Модификации прикладного кода могут влиять на стабильности системы в целом. Должны выполняться только опытными программистами.Семь различных языков программирования, включая графические, позволяют программисту создавать код так, чтобы он был понятен прикладным специалистам и обслуживающему персоналу. Программист может выбирать оптимальный язык для разных функций.
5. Разделение между верхним/прикладным/пользовательским уровнем управляющей программы и системным уровнем
Не реализовано. Для понимания работы управляющей программы нужно предварительно иметь представление об организации программного обеспечения в целом.Правильно организованное МЭК-приложение имеет два или более уровня с четким разделением. Верхний уровень отображает общую структуру и алгоритмы управления. Это позволяет понимать работу системы обслуживающему персоналу, не имеющему специальной подготовки. Внутренние детали приложения скрыты (защищены)
в функциональных блоках и библиотеках.
6. Объектно-ориентированное программирование (ООП)
Было сильнейшим аргументом в пользу выбора C++ до выхода CODESYS V3.Поддержано в CODESYS V3 для всех языков. Позволяет использовать современную технологию организации приложений.
7. Графический интерфейс оператора (HMI)
Возможен. Требует написания дополнительного кода или использования вспомогательных инструментов. Интерфейс отображения должен быть адаптирован для разных устройств вывода.Встроенный графический редактор с набором типовых элементов отображения и ввода. Для управления графическим элементом нужно ввести наименования переменных программы в соответствующие поля. Визуализация отображается в среде программирования, на графической панели устройства или через Интернет. Способ отображения выбирается в диалоговом окне.
8. Отладка
Среды программирования имеют встроенные отладчики. Дополнительные функции, типа графической трассировки, фиксации значений переменных, не практикуются.Полная поддержка общепринятых отладочных функций (выполнение по шагам, условные точки останова, стек вызовов и т. д.) на всех языках МЭК. Дополнительные функции для отладки и обслуживания системы в целом (графическая трассировка, менеджер рецептов, фиксация переменных, визуализация). Возможно визуальное моделирование объекта управления.
9. Реальное время
Определяется организацией программы. Зависит от ОС. Может вызвать ограничения при отладке.Обеспечивается системой исполнения. В прикладной программе усилий не требует.
10. Поддержка стандартных полевых сетей (Fieldbus)
Не включена. Требуется дополнительное ПО, реализующее стек протокола, и отдельный конфигуратор. Стеки аппаратно-зависимы. Конфигуратор (если есть) обычно не интегрирован в среду программирования. Символьное отображение входов/выходов проблематично.Интегрированные конфигураторы и стеки полевых сетей. Стеки полевых сетей написаны в среде CODESYS и независимы от нижнего уровня. Нужный стек компилируется и линкуется с приложением автоматически.
11. Специализированный инструментарий для прикладных областей
Нужно программировать самим или приобретать дополнительные инструменты. Интеграция обычно требует разделяемой памяти. Контроль движения и логика управляются разными процессами.Интегрированный механизм сохраняемых переменных. Мониторинг входов и управление выходами без программирования. Специализированные прикладные библиотеки. Встроенная система управления движением (Soft Motion CAM/CNC), 3D-редактор перемещений, интерпретатор G-кодов (ЧПУ). Работает в одном процессе, единая адресация.
12. Командная работа/управление версиями
Большинство сред разработки поддерживают контроль версий.Поддерживается путем установки специального плагина для интеграции с Subversion.
13. Быстрое создание/тиражирование однотипных систем
Существуют специальные приемы и инструменты, ускоряющие работу программиста.Пакет CODESYS Application Composer позволяет конструировать приложения с автоматической генерацией надежного кода. Приложение составляется из готовых настраиваемых блоков без программирования.
14. Поддержка новых стандартов на рынке систем управления
Нужно отслеживать и делать самостоятельно, заказывать или приобретать сторонние разработки.Функционал, соответствующий новейшим мировым стандартам, наращивается постоянно. Например: FDT, OPC UA, EtherCAT, CANopen, PROFINET, ASi и т. д.
15. Контроль целостности/защита копирования
Нет. Реализуется программно.Встроенная защита модификации кода, уникальный идентификатор проекта. Опционально: шифрование проекта, многоуровневая система прав доступа, сохранение исходных текстов в памяти устройства.

Как показано в таблице, для человека, имеющего образование по специальности программирование, C/C++ является естественным выбором. Переход к использованию МЭК-языков потребует некоторых усилий по освоению. Обычно начальный дискомфорт в CODESYS вызывает отсутствие главного цикла и функций ввода/вывода, которые полностью «спрятаны» в системе исполнения. Существенно отличается работа с таймерами. Ближе всего к языку C в CODESYS язык ST. Как правило, для его уверенного освоения программисту достаточно нескольких часов [5].

Использование МЭК-языков может не дать явных преимуществ мгновенно. Они проявляются ярко при необходимости пояснения прикладной программы другим людям. В этом смысле весьма эффективна связка языков SFC и ST. Диаграмма SFC визуально представляет интуитивно понятный алгоритм работы, буквально «оживающий» в онлайновом режиме. Действия шагов SFC описываются на привычном высокоуровневом языке ST.

Аспекты руководителя

Некоторые успешные практические применения CODESYS во встраиваемых системах инициировались не техническими специалистами, а менеджментом компании. Чаще всего главной причиной становилась одна из четырех, перечисленных ниже.

Проблема правильной организации работ

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

Синтаксис языка st для codesys

Рис. Самолетный тягачком пании TREPEL. Вместо обычных рычагов управления он оснащен встраиваемым панельным PC c CODESYS компании Janz Tec

Вначале сам программист рад своей уникальной позиции. По прошествии нескольких лет он замечает, что «золотой фонтан» не забил, а работа стала утомительной. Он отстал от новых технологий по основной специальности. Сменить работу не реально. Проблема возникает с двух сторон.

CODESYS выручает благодаря свойствам 2 и 5 (см. таблицу). Нижним уровнем, включая установку системы исполнения CODESYS, занимаются системные программисты. Прикладной проект делается в CODESYS специалистами по прикладной области. Благодаря 4, им не требуется специальное образование. Системный и прикладной уровни четко разделены, как и требования к их исполнителям. При необходимости сопровождение ПО может быть передано заказчику. Специалистам заказчика достаточно пройти двухдневные учебные курсы.

Проблема развития универсальности системы и расширения рынка сбыта

Синтаксис языка st для codesys

Рис. Пульт управления яхтой, разработанный компанией Exor

Если устройство оказалось востребованным, то постепенно возникает необходимость специальных исполнений для разных заказчиков. Появляется несколько «прошивок» программы. Потом разрабатывается специальная компьютерная программа — конфигуратор системы. Она настраивает параметры устройства. Постепенно число параметров возрастает. Соответственно, разбухает документация. Но по-прежнему находятся заказчики, которым не хватает нужного именно им функционала. Рождается логичная мысль пойти дальше и дать заказчикам (дистрибьюторам, установщикам) возможности программирования системы. С языком C++ это нереально. CODESYS решает данную проблему. Существует ряд специализированных контроллеров для печатных машин, деревообрабатывающих станков, заправочных станций, дорожных машин, химических аналитических приборов и др., которые оснащены CODESYS и дополнены специализированными библиотеками. Изготовитель соответствующей машины сам адаптирует контроллер под разнообразные модели и наращивает функционал. Изготовитель встраиваемой системы выигрывает за счет унификации и расширения областей применения.

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

Проблема интеграции с устройствами других компаний

Обычно в успешно развивающейся системе возникает необходимость подключения приборов, датчиков и других устройств ведущих мировых изготовителей. Самостоятельная реализация стандартных полевых сетей значительна по трудоемкости. Покупка готового стека дорога. CODESYS (см. п. 10 таблицы) позволяет поддержать практически все стандартные сети. В нашей практике к использованию CODESYS во встраиваемых системах чаще других приводила необходимость поддержки стеков CANopen и EtherCAT.

Проблема замены ПЛК встраиваемой системой

В некоторых случаях, помимо базового серийного изделия, требуются особые исполнения. Пример: компактный холодильник и заказная холодильная установка, различные термокамеры, весы, сварочные автоматы, научное оборудование и др. Под специальное исполнение целесообразно применить готовый ПЛК с CODESYS. На нашем рынке доступны десятки таких ПЛК разных ценовых категорий. В разных применениях могут использоваться компактные, модульные или панельные ПЛК. Для серийных изделий изготавливается собственный встраиваемый контроллер. Если везде стоит CODESYS, то одна команда справляется с разработкой ПО и сопровождением всех вариантов. Практически везде применяется один проект с разной конфигурацией.

Установка к CODESYS

Для того чтобы устройство программировалось в CODESYS, в нем предварительно должна быть установлена так называемая система исполнения CODESYS Control. Она включает планировщик задач, загрузчик, функции отладки, обслуживает полевые сети, ввод/вывод и т. д. Именно благодаря ей МЭК-программа оказывается аппаратно-независимой. Набор ресурсов, которые должна обслуживать система исполнения, отличается у разных контроллеров. Речь идет не только о микроконтроллере, но и об устройстве в целом. По этой причине нельзя просто скопировать систему исполнения с одного устройства на другое. Она всегда требует некоторой индивидуальной адаптации. Все существующие встраиваемые системы с CODESYS созданы одним из трех способов:

По требованию российских заказчиков Beck создала специальное исполнение чипов с расширенным температурным диапазоном (–40 °С). Существует исполнение для энергетики с поддержкой коммуникационной библиотеки МЭК 61850.

Первый путь выбирают крупные изготовители встраиваемых систем. Он оправдан при выпуске от нескольких сотен изделий в год и выше. В странах ЕС все более развивается практика заказа разработки. По числу применений в России лидирует технология Beck [email protected] В любом случае среда программирования CODESYS поставляется бесплатно. Никаких ограничений в функционале и числе установок в ней не предусмотрено. В CODESYS имеется встроенный эмулятор контроллера. Это позволяет начать работу без приобретения аппаратных средств.

Синтаксис языка st для codesys

Рис. «Беспилотный» транспортер E&K AUTOMATION на базе собственного встроенного контроллера и модулей ввода/вывода Wago IO

Заключение

Сегмент встраиваемых систем в суммарном годовом объеме применений CODESYS ежегодно увеличивается. CODESYS применяется во встраиваемых контроллерах компаний Bosh, Rolls-Royce Marine, Praxis, CC Systems, Moba и др. Это далеко не опытные прототипы, речь идет о десятках тысяч изделий. Примеры нескольких применений показаны на фотографиях.

Среди МЭК-систем программированиия CODESYS выделяется тем, что, подобно компиляторам С/С++, непосредственно генерирует надежный и компактный машинный код, пригодный для встраиваемых систем. Простые в освоении языки МЭК позволяют привлечь к разработке и сопровождению специалистов прикладной области. Интерес для разработчика встраиваемых систем может представлять богатый функционал комплекса CODESYS. Многозадачность реального времени, обработка событий, встроенная визуализация, развитый набор коммуникаций, «горячее» обновление кода, полевые сети, поддержка управления через Интернет, средства национальной локализации проектов и другие функции CODESYS могут быть не востребованы во встраиваемой системе изначально. Но необходимо учитывать, что все они создавались эволюционно, исходя из практических требований, возникавших у пользователей контроллеров в разных странах, разных условиях и на разных этапах работ. В процессе жизни встраиваемой системы неизбежно возникают аналогичные или близкие задачи. Например, задача настройки и тестирования оборудования заказчиком, интеграция с другим оборудованием, веб-интерфейс и т. п. Во многих случаях CODESYS даст готовое решение.

Языки программирования программного комплекса CoDeSys

4.1 Язык il (Instruction list)

Язык IL (Instruction list) дословно – список инструкций. Каждая инструкция начинается с новой строки и содержит оператор и, в зависимости от типа операции, один и более операндов, разделенных запятыми.

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

ST lint (* комментарий*)

Модификаторы и операторы il

В IL можно использовать следующие операторы и модификаторы. Модификатор С используется с операторами JMP, CAL, RET. Инструкция выполняется только тогда, когда результат аккумулятора ИСТИНА.

Модификатор N используется с операторами JMP, CAL, RET. Инструкция выполняется тогда, когда результат аккумулятора ЛОЖЬ. Модификатор N в других случаях означает отрицание операнда.

Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами:

Источник

Видео

Вебинар «Основы программирования ПЛК1хх на языке ST»

Вебинар «Основы программирования ПЛК1хх на языке ST»

Часть 14: Язык программирования ST

Часть 14: Язык программирования ST

#1 - Structured Text // Определение переднего (R_TRIG) и заднего (F_TRIG) фронта сигнала в Codesys

#1 - Structured Text // Определение переднего (R_TRIG) и заднего (F_TRIG) фронта сигнала в Codesys

Лекция. Программирование на языке SFC (CoDeSys)

Лекция. Программирование на языке SFC (CoDeSys)

#4 - Structured Text // Функция или функциональный блок?

#4 - Structured Text // Функция или функциональный блок?

67. Инициализация массивов и структур

67. Инициализация массивов и структур

Контроллер АГАВА ПЛК-50. Программирование на языке ST (урок 1)

Контроллер АГАВА ПЛК-50. Программирование на языке ST (урок 1)

Урок 7. Создание макроблока на языке ST

Урок 7. Создание макроблока на языке ST

Основы работы CoDeSys язык LD

Основы работы CoDeSys язык LD

Видео CoDeSys ПЛК Овен язык программирования ST Часть№1

Видео CoDeSys ПЛК Овен язык программирования ST Часть№1
Поделиться или сохранить к себе:
Добавить комментарий

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