Меню
Блог Гридина Семёна

Автоматизация и логические контроллеры

Рубрики блога

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

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

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

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

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

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

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

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

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

Программа ST

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

  1. Наглядность. Вы можете на одном листинге оценить всю последовательность действий и выполнение условий
  2. Программа на ST может быть создана в любом текстовом редакторе
  3. Читабельность. За счёт символьного представления текста и выделения блоков разными цветами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотеки

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

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

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

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

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

Справка codesys

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

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

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

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

Вам так же может быть интересно

Комментариев к статье: 11
  • Добрый день, Семён.

    Внесу немного своего имхо в вашу статью.

    ST вовсе не похож на СИ, он заимствовал синтаксис от PASCAL.

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

    Если вы говорите о языках, то Ардуино IDE надо отсюда убрать, потому что это IDE, и кстати пишется там на C++.

    «Использование циклов и массив облегчают жизнь программисту и увеличивает читабельность кода. Циклы очень удобны при использовании сложных и ресурсоёмких функций…»

    С циклами надо быть очень осторожно, watch dog не простит вам длинного цикла и не очень хорошо если ваш ПЛК просто отрубится при управлении ГВС.

  • Привет, Саш. Насчёт синтаксиса согласен.

    Насчёт Ардуино IDE, это среда интерпретатор. То есть по сути Codesys, Python и Arduino являются средами разработки. Если в общих чертах, смысл один и тот же. :lol: .

    По поводу watch dog'a, честно говоря забыл указать этот нюанс. Так как бесконечный цикл он будет обрубать.

    • Codesys, Python и Arduino

      Python — язык программирования, так же как ST, C++ и др.

      Arduino — комплект платы+библиотека+IDE+в поставку включен компилятор

      Codesys — только IDE+также включен компилятор

  • Ну в принципе, всё верно, небольшая поправочка. Я упустил момент, что Python это ЯП а не среда. :oops:

  • «Об языке программирования ST и типы переменных», еще и выделено красным. Не каждый день встретишь такую коллекцию грамматических ошибок в одном небольшом предложении, сами-то хоть читаете, что пишете? Да, это не статья по русскому языку, но грамотно писать нужно и технические статьи. Корректно было бы «О языке программирования ST и типах переменных», либо — «Язык программирования ST и типы переменных».

    • Благодарю за замечание, исправил.

  • Помогите пожалуйста пошагово описать программу в CoDeSys. Язык програмирования LD.

    PROGRAM PLC_PRG

    VAR

    D1: BOOL;

    D2: BOOL;

    ludi: BYTE;

    D2_PRED: BOOL;

    D1_PRED: BOOL;

    LIGTH: BOOL;

    END_VAR

    • А что описать??

  • Требуется сделать пошаговое описание программы. То есть нужно описать подробно каждую строчку кода в отдельности, что она выполняет. (Сама программа написана для включения и выключения освещения в помещении. При последовательном срабатывании датчиков D1, D2 свет включается и производится подсчет людей в комнате например +1. А если датчики срабатываею в последовательности D2, D1 то счёт происходит как -1. При достижении 0 свет выключается. А при достижении 1 и более включается.

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

    Если это тоже нужно то могу скинуть на эл.почту если вышлете адрес.

    Заранее благодарю за уделенное время)

    • Я честно не успеваю, может кто-то из комментаторов возьмётся?

    • Пиши на почту, сделаю любую задачу на LD, если ещё актуально

      hamill79@bk.ru