Tag Archives: IL

Список инструкций (IL)

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

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

Пример:

LD 17

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

GE 5

JMPC next

LD idword

EQ istruct.sdword

STN test

next:

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

В IL можно использовать следующие операторы и модификаторы.

Модификаторы:

С с JMP, CAL, RET: инструкция выполняется только тогда, когда результат аккумулятора ИСТИНА.

N с JMPC,CALC, RETC: инструкция выполняется тогда, когда результат аккумулятора ЛОЖЬ.

N в других случаях: отрицание операнда.

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

LD N

Присвоение аккумулятору значения оператора

ST N

Присвоение значения аккумулятора операнду

S

Присвоить логическому операнду значение ИСТИНА, если значение аккумулятора ИСТИНА

R

Присвоить логическому операнду значение ЛОЖЬ

AND N

Побитовое И

OR N

Побитовое ИЛИ

XOR N

Побитовое исключающее ИЛИ

ADD

Сложение

SUB

Вычитание

MUL

Умножение

DTV

Деление

GT

Больше

GE

Больше или равно

QE

Равно

NE

Не равно

LE

Меньше или равно

LT

Меньше

JMP CN

Переход к метке

 

CAL CN

Вызов функционального блока

 

RET CN

Выход из POU и возврат в вызывающую программу.

 

)

Вычисление задержанной операции

 

Пример IL программы с использованием некоторых модификаторов:

 

LD TRUE (*загрузить значение ИСТИНА в аккумулятор*)

AND BOOL1 (*выполнить И с инверсным значением переменной BOOL1*)

JMPC mark (*если значение аккумулятора ИСТИНА, то перейти к метке

» mark»*)

LDN BOOL2 (*сохранить инверсное значение BOOL2 в аккумуляторе*)

ST ERG (*сохранить значение аккумулятора в ERG*)

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

как операнд.

Например:

LD 2

MUL 2

ADD 3

ST ERG

Здесь значение ERG равно 7. Если поставить скобки, то порядок вычислений изменится:

LD 2

MUL ( 2

ADD 3

)

ST ERG

Теперь значение переменной ERG равно 10.

Операция MUL выполняется только тогда, когда программа доходит до «)». В качестве операнда MUL использует значение 5.

 

Языки программирования ПЛК. Проект ПЛК

У ПЛК есть несколько основных языков программирования. Во-первых, это что-то похожее на языки программирования высокого уровня. Называется язык структурированного текста (по-буржуйски ST). Исключительно удобная штука, если есть навыки программирования. Собственно, для программистов и придумана. Однако когда ПЛК разрабатывался и внедрялся, профессия программиста (в смысле толкового программиста с хорошей технической подготовкой) была еще более дефицитной, чем в наши суровые времена. Посему практичные янки и весь мир следом разработали несколько видов графических языков. Для электриков создали язык релейных диаграмм (по-буржуйски LD). Ничего в общем сложного – шина входов, шина выходов, между ними – схема из релюшек, нормально замкнутых или разомкнутых, ну и таймеров, конечно, триггеров всяких. Плюс в простоте – была бы схема, а программа напишется. Минус в трудностях работы с аналоговыми сигналами.

Другой вид графических языков – язык функциональных блоков (по-буржуйски FBD). Мне он очень напоминает работу, например, с пакетом Simulink программного комплекса Matlab, товарищу напротив — Vissim. Да, в общем, получить техническое образование ни разу не столкнувшись с такого рода ПО трудно.  Основа всего — блоки, соединенные в нужной последовательности линиями связи. Если вы – технарь, пожалуй, наиболее прост для освоения и активного использования. Плюс – наглядность, интуитивная понятность реализуемых алгоритмов. Минусы – работа с циклами. Можно, конечно, но на ST такого рода программки и пишутся легче и короче.
Последний вариант графического языка – алгоритмический (SFC). Это наиболее высокий по уровню графический язык. Каждый его шаг – маленькая (или большая) программа. Очень красивый язык, справедливо обожаемый технологами всех мастей. Позволяет создавать жестко структурированные, удобные для отладки проекты. Минус всего один – браться за его изучение стоит, лишь в достаточной степени освоив язык ST, LD или FBD. Программы для отдельного шага все равно писать на них.

Ах, да. Чуть не забыл. Есть еще что-то похожее на ассемблер. Называется  списком инструкций (по-буржуйски IL). Если вы фанат бесконечной работы с аккумулятором – это для вас. Минусы – длинный программный код, хорошо смотрящийся только в приложениях к диссертации, проблемы отладки. Короче в моем понимании – пятое колесо в телеге программирования ПЛК. Могу быть не прав.

Программа или проект?

Давайте сразу отделим котлеты от мух. Тот код, который мы героически пишем – это конечно программа. Вернее, более точно, программа – это код определяющий цикл работы ПЛК.  Их у контроллера может быть не одна,  не две, а много. Меняться они могут по времени, внешнему или программному событию. То есть программа – вещь достаточно частная. Совокупность же того, что «залито» в контроллер, принято называть проект. Помимо набора программ проект включает в себя подключенные библиотеки, типы данных, визуализации, конфигурации,  настройки конкретного ПЛК и многое другое.

 

Мой блог находят по следующим фразам