Первые шаги в программирование

Современная автоматизация немыслима без
программирования.
И если вы ещё не пробовали это, то уже пора сделать...
...первые шаги в программирование

Главная / Проектирование / Программирование ПЛК /

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

Разрабатываю ПО для ПЛК ОВЕН в CoDeSys. Могу написать программу целиком, или часть программы. Или разработать АСУ на базе ПЛК ОВЕН (включая схемы и чертежи). При необходимости могу создать ПО и для ПЛК других производителей. Цена зависит от сложности, объёма работ и сроков. Ваши задачи присылайте на почту: ks-app@mail.ru. Или пишите в личку в группе ВК. Подробности см. здесь...

Пожалуй, среди языков программирования ПЛК язык IL самый сложный. И, тем не менее, я начну именно с него.

IL (Instructions List - перечень инструкций) - это текстовый язык программирования - список последовательных инструкций. Он очень похож на язык ассемблера и по сложности сравним с ним (хотя, конечно, здесь всё относительно).

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

МЕТКА:    ОПЕРАТОР    ОПЕРАНД    КОММЕНТАРИЙ

Пример:

START:  LD  2  (* Записать число в аккумулятор *)

Здесь START - это метка, LD - оператор (команда), 2 - операнд, а строка, заключённая между (* и *) - это комментарий. Комментарии игнорируются программой. Комментарии можно вставлять только в конце строки или между строками. Метка и комментарий не являются обязательными. Метка может быть в отдельной строке. Оператор (команда, инструкция) должен быть всегда (без него смысл команды теряется). Операнд также необходим для большинства инструкций.

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

LD   2    (* Записать число в аккумулятор *)
ADD  3    (* Прибавить к аккумулятору число 3 *)
ST   Res  (* Значение аккумулятора записать в переменную Res *)

Переменные объявляются обычным для языков МЭК способом. Например:

PROGRAM IL_TEST
VAR
  Res : INT;
END_VAR

Примерно так это будет выглядеть в среде разработки CoDeSys 2:

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

Аккумулятор в IL

Подавляющее большинство инструкций языка IL выполняют какие-либо действия с аккумулятором (точнее, с его содержимым). В примере выше инструкция LD загружает число 2 в аккумулятор. А команда ADD прибавляет число 3 к значению аккумулятора (куда, как мы помним, сначала было загружено число 2). Результат выполнения команды ADD также помещается в аккумулятор. В итоге в аккумуляторе будет число 5. Команда ST выгружает значение аккумулятора в переменную Res.

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

В аккумулятор можно поместить сначала значение типа BOOL, затем INT и так далее. Однако это не означает, что аккумулятор может одновременно хранить значения разных типов. Он может хранить только одно значение одного типа. Причём тип значения также запоминается аккумулятором. Так что если вы загрузите туда значение одного типа, а затем попробуете выполнить, например, сложение, с другим типом, то компилятор выдаст ошибку:

Несоответствие типов в IL

Невнимательный читатель даже не увидит разницы между первым и вторым рисунком. Однако в первом случае всё правильно, а во втором - ошибка несоответствия типов.

В стандарте МЭК вместо термина “аккумулятор” используется термин “результат” (result). Получается, что инструкция берёт “текущий результат” и создаёт “новый результат”. Однако почти все руководства по программированию, в том числе справочная документация, обычно применяют термин “аккумулятор”.

Зачем использовать IL

И ещё один вопрос, который наверняка мучает начинающих: зачем использовать этот не очень понятный язык, если в стандарте МЭК есть ещё четыре языка, намного более простых, чем IL.

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

Язык IL, можно сказать, не компилируется. Потому что он почти (ключевое слово “почти”) такой же крутой, как машинные команды. Так что можете быть уверены, что ваша программа на IL будет почти всегда быстрее, чем такая же программа на других языках.

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

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



Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su