Лекция посвящена языку Instruction List (IL) — одному из пяти языков стандарта МЭК 61131-3. Разбираются синтаксис и формат инструкции, роль аккумулятора, модификаторы операторов C и N, вызов функциональных блоков и программы, набор операторов. В практической части по таблице истинности синтезируется цифровое логическое устройство: программа набирается в среде, компилируется и проверяется в режиме эмуляции.
- 00:07 Язык Instruction List: назначение и синтаксис
- 06:01 Модификаторы операторов C и N
- 07:06 Модификаторы C и N для операторов IL
- 12:16 Пример программы на IL по таблице истинности
- 12:38 Реализация цифрового устройства на языке Instruction List
- 13:23 Создание проекта и объявление переменных в CODESYS
- 18:50 Реализация логических блоков на языке IL
- 20:32 Объединение результатов оператором OR и проверка программы
- Instruction List
- IL
- МЭК 61131-3
Кому полезно: Инженерам АСУ ТП, изучающим языки программирования ПЛК по стандарту МЭК 61131-3
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:07 Добрый день, уважаемые зрители канала, мы приступаем к изучению следующего языка программирования контроллеров, которым будет являться язык. Истракшен лист или список инструкций? Список инструкций, это 1 из 5 языков, поддерживаемых первоначальными версиями стандарта Мэк 611 33 ты. 3 Данный язык напоминает так называемый язык программирования низкого уровня, то. Есть это ассемблер, здесь ничего нет такого специального или примечательного язык и эл инстракшн. Лист является самым простым ассемблером по структуре, по технологии программирования.
0:59 Он представляет собой типовой ассемблер. Язык инстракшн лист представляет собой текстовый список последовательных инструкций, которые записываются в отдельной строке. Это что касается синтаксиса этого языка? Теперь давайте об этом поговорим более подробно, я. Поговорим о формате инструкции, это 1 из самых важных частей программирования. Каждая инструкция данного языка может содержать следующие 4 поля, это метка, оператор операнд. И комментарий Метка и комментарии являются необязательными при программировании. Оператор, естественно, обязателен, операнд почти всегда обязателен, просто существует. Инструкции точнее операторы, которые не нуждаются в операнте. Ну а так пара оператор и оперант, то есть это обязательно для выполнения каких либо инструкций на данном. Языке пример как можно записать формулу скорости тела, которая выражена вот такой вот формулой, используя язык программирования. Список инструкций для начала мы пусть. У нас будет такая вот метка, Марк. 1 Для начала мы загружаем переменную, с которая будет характеризовать перемещение, затем мы добавляем оператора Див, то есть делим. Время обязательно записываем наш операнд, время переменная характеризующее время и в следующей строчке все это сохраняем в переменную, в которая характеризует скорость. Здесь мы использовали 3 оператора, это оператор Лоуд. Загрузки, обычно с которого и начинается программа на языке инстракшн, лист загрузили, мы оперант вот такой вот. Такой вот переменную, которая характеризует перемещение делим ее, то есть используем оператор. Див затем в паре с ним операнты, на которые мы делим и сохраняем результат.
3:20 Переменную В. Вот таким вот образом у нас примерно будут выполняться. Инструкции, которые ложатся в основу всей программы. Важным понятием в в языке ассемблера является аккумулятором также и в языке инстракшн лист. Это понятие занимает центральное место практически каждая. Инструкция языке инстракшн лист выполняет определенную операцию с содержимым аккумулятора, аккумулятор языка, инстракшн лист представляет собой. Универсальный контейнер временного хранения для значений любого типа. То есть любая операция, которую мы выполняем в данном языке, она обязательным образом. Взаимодействует с аккумулятором, то есть если мы загружаем какую то переменную или какое то значение он обязательно загружается сначала в аккумулятор. Затем мы выполняем какие то действия над этими значениями. Они также хранятся результаты этих действий в аккумуляторе и только после того, как мы их. Сохраняем в области постоянной памяти, то есть стор. Они переносятся из аккумулятора в определенные ячейки памяти для постоянного хранения, поэтому. Аккумулятор здесь играет такую фундаментальную роль, и программа на языке инстракшн лист выполняется сверху вниз для организации циклов и изменения. Порядка выполнение программы пользуются командой перехода на метку, то есть Джамп безусловный переход, то есть, как только выполнилась команда Джамп Метка.
5:12 Программа на языке инстракшн лист сразу переносит порядок выполнения на ту строку, где установлена данная метка джампси. Переход выполняется, если в аккумуляторе значение истина, то есть мы добавляем вот такой вот модификатор.
5:35 К данному оператору и переход уже осуществляется по условию. Если модификатор вот такой джампси н переход выполняется, если в аккумуляторе значение ложь о модификаторах команд операторов, мы поговорим более подробно ниже.
6:01 Давайте поговорим о модификаторах операторов более подробно. Для изменения смысла выполнения инструкций к Мнемонике некоторых операторов можно добавить символы Си и Эн. Но мнемониккой мы называем слова которые. Описывают команды и операторы символ обозначает негейшен, вызывает инверсию значение операнда. К примеру, Лоуд Эн означает загрузить инверсное. Значение операнда в аккумулятор то есть. Если бы было по умолчанию выполнение команды загрузить просто лоуд, туда до загружалось бы то значение. Пиранда, которая у нас имеется в данный момент, но добавление вот такого символа к стандартному оператору Лоуд загрузки означает, что уже туда пойдет.
7:06 Инверсное значение, которое будет стоять после этого оператора, то есть операнда. Вот таким вот образом изменяется смысл выполнения команды Лоута команды. Загрузки, ну а символ си обозначает кондишн. То есть условия выполняет проверку условий командам перехода вызова и возврата это команды Джамп Кол и Ртерн?
7:36 Команда Джампси кол Си и Редси выполняются, когда в аккумуляторе значение истина, то есть опять таким вот образом уже изменяется смысл выполнения. Этих команд, ну а, например, эти же команды, но уже с символом н. То есть, Джампси, н. Колси, н. Ремерн Си Эн выполняется, когда в аккумуляторе значение ложь.
8:06 То есть с помощью модификаторов СИ и ЭН мы можем менять смысл выполнения некоторых операторов? Язык инстракшн лист, также как любой из языков Мэк 611 31. Работает с элементами, по то есть с компонентами, программными компонентами, поэтому иногда их требуется вызывать в программу, давайте поговорим. Об этом более подробно в тексте инструкции можно вызывать необходимые функциональные блоки и программы с одновременным присваиванием. Значения их перемен, например, вот такая вот команда у нас выполняется кол, и вот такой вот функциональный блок при этом можно в скобочках указать. Переменной функционального блока, которым сразу можно присвоить некоторые значения, которые будут храниться в аккумуляторе либо можно будет.
9:15 Работать отдельно с переменными функциональных блоков через вот такую вот точку. То есть обязательно должно быть название функционального блока и переменная этого функционального блока для того, чтобы выполнять? Неопределенные операции, ну и, допустим, здесь вот вызвана загружена вот эта переменная значение, которой потом будет сохраняться в эту переменную. То есть вот таким вот образом у нас вызываются функциональные блоки и программы?
9:50 Теперь давайте поговорим об операторах, которые применяются в данном языке. Они ничем не отличаются от тех операторов, которые мы рассматривали. Наших предыдущих лекциях, то есть все те операторы, которые мы использовали при программировании на языке. Си эф Си, они здесь также присутствуют. Давайте поговорим и посмотрим, что за операторы, как с ними мы будем работать. Вот здесь представлен список всех операторов, то есть у нас. Есть оператор Лоуд, обязательно с которого у нас, как правило, начинаются все программы на данном языке. Это загрузка значения в аккумулятор. Если мы добавляем к этому оператору модификатор Н. То, как мы помним, загружаемое значение будет инвертирована, далее здесь имеется оператор. Стор, то есть сохранение данных из аккумуляторов, какую то переменную в область постоянной памяти. Далее оператор с это установка значения. Операнда в значении истины далее у нас есть оператор Р. Это сбрасывание значения Пиранда, если аккумулятор имеет значение истина, затем у нас есть. Целый набор операторов, которые нам уже известны из написания программ на языке Си Эф Си. То есть логическое умножение, логическое сложение? Исключающее или прибавление, вычитание, умножение деление. Оператор сравнения больше больше равно равно не равно меньше, равно меньше и здесь.
11:36 Мы должны выделить оператор Джамп, то есть переход на метку, и мы помним. Если мы добавляем к этому оператору модификаторы, то переход выполняется при определенном условии. Да, то есть затем, затем здесь есть оператор. Кол вызова функционального блока или программы, и оператор Ретейн, который выводит из данного пол и возвращает в программу. Вот такие операторы у нас используются при программировании на языке инстракшн лист.
12:16 Теперь давайте выполним пример написание программы на языке инстракшн лист и в качестве примера. Пусть у нас будет задача, связанная с синтезом. Цифрового логического устройства по таблице истинности, который мы уже неоднократно выполняли. Здесь мы рассмотрим особенность выполнения.
12:38 Точнее, решение данной программы на языке инстракшн лист. Ну как мы помним, согласно таблице истинности, который мы видели на предыдущем слайде. Логическая формула цифрового устройства в виде совершенной дезъективной нормальной формы будет следующий. То есть вот такую формулу нам нужно? Записать на языке не страшен лист. Выполним реализацию данного цифрового устройства на языке программирования инстракшн лист, используя элементы синтаксиса списка инструкций. Давайте посмотрим, как это будет выполняться на коде СИС.
13:23 Итак, мы создаем новый проект в коде сист. Выбираем контроллер, необходимый нам путем настройки целевой платформы и выбираем язык реализации инстракшн лист. Теперь переходим непосредственно к программированию, но до того, как мы будем писать нашу программу на языке инстракшн лист, давайте объявим некоторые переменные, которые нам будут нужны и так в качестве глобальных переменных в конфигурации ПК, я задам 4.
14:02 Переменные, которые будут характеризовать наши. Входные переменные цифрового устройства это Икс, 1 Икс, 2 Икс, 3 и Икс, 4 это булевые переменные. И нам нужна будет 1 булевая логическая переменная выходная, я объявлю ее как Игрик. Теперь возвращаемся в программу и буду выполнять нашу формулу. Но прежде чем мы будем писать программу, нам пригодятся некоторое количество. Промежуточных переменных, которые я буду объявлять в качестве локальных, это переменная и Гликодина и Грик 2 и Грик 3 и Грик 4 5 6.
14:53 7 И Игрек, 8 это будут булевые, переменные, переменные, переменные типа булл, так запишем бул. Теперь будем писать непосредственно нашу программу. Сначала я должен буду загрузить 1 часть нашего блока, то есть лот, и я добавляю модификатор Н, потому что по условию. Переменная, которая будет загружаться модификатор, она была с инверсией. Как мы помним и добавляю и логическое, и и она также будет с модификатором Н. Потому что, как мы помним, в 1 блоке нашего цифрового устройства все 4 перемены были инвертированы, поэтому.
15:47 Вся совокупность перемножения друг с другом этих переменных икс 1 икс 2 икс, 3 икс, 4 они все будут инвертированы и сохранил результат в промежуточную переменную и уже локальная переменная игрек. 1 То есть 1 блок это? Инверсии всех 4 переменных между собой умноженных логически я сохраняю из аккумулятора времен в память в виде переменной игрек. 1 Затем я еще раз загружаю в аккумулятор уже лоуден. Значение х 1 умножаю я его инверс на икс 2 и умножаю уже не инверсно на ИКС 3 по формуле, которая у нас была записана и умножаю инверсно логически на переменную глобальную икс 4.
16:45 2 Блок нашего цифрового устройства уже таким образом был выполнен, и теперь результат всех этих операций я сохраняю во время не во временной, а в промежуточной переменной игрек. 2 То есть давайте отделим 1 блок наверху 2 блок, и у нас будет 8 таких блоков, которые будут в соответствии с Формулой написаны. Теперь загружаю опять инверс, но переменную х 1.
17:19 И умножаю ее логически. В соответствии с формулой на переменную здесь инверсии нет в этом блоке, далее инверсно умножаю ее на ИКС 3 и инверсно умножаю на переменную х 4 результат. Сохраняю стор в промежуточную локальную переменную игрик 3.
17:48 Далее выполняю 4. Блок нашего цифрового устройства в соответствии с таблицей истинности Лоуд н Икс 1 еще раз. Энт. Икс 2 Энт Икс 3. И энт? Н инвертирована на х 4 это 4 блок нашей формулы и храню это все в переменный 4 локальный. Далее работаю с 5 блоком, то есть лоуд Икс. 1 Он умножаю логически на инверсию, х 2 умножаю.
18:35 Логически на Инверсию Икс 3 и умножаю инверсно логически на переменную х. 4 Так у нас выполнился 5 блок нашей формулы и сохраняю все это в переменный локальный игрек 5. Далее мне еще раз в аккумуляторе нужно загрузить значение х 1 умножить его логически на инверсию. Х 2 еще раз умножить логически на переменную х 3 в соответствии с. Формулой и умножить логически на переменную х 4 результат сохранить в локальную переменную Игрик. 6 Вот так 6 блоков нашего цифрового устройства уже созданы Лоуд.
19:24 Икс 1 еще раз в аккумулятор. Энт логический х 2 затем. С модификатором, то есть не Икс 3. И энд м на переменную их можно добавлять, как прописывая, так и вызывая ассистент входа, и сохраняю результат в локальную переменную. 7 Теперь у нас остался последний блок, состоящий из логических умножений, Лоуд Икс 1. Энд Икс 2. Логическое умножение на х 3 и логически умножаю на инверсию переменная икс 4. Результат сохраняем в локальной переменной игрек 8. Все у нас созданы вот такие 8 отдельных.
20:32 Блоков нашего цифрового логического устройств. Теперь нам нужно все это логически сложить, а для этого все локальные перемены, где мы храним промежуточные. Значения мы между собой логически будем складывать с помощью оператора ОР. То есть Лоуд и Греко, 1 зачем затем ор Игрик, 2 ор Игрик, 3 ор Игрик 4?
20:58 Вот таким вот образом позовем его ор Игрик 5. Ор Игрик 6. Ор Игрек 7 и ор. Игрик 8 И результат всех этих операций мы будем хранить нашей глобальной переменной и которая связана с. Выходным каналом контроллера в принципе вся программа написана, я ее сохраняю, присваиваю ей имя. Компилирую нашу программу, ошибок нет, ну и соответственно нам нужно готовую программу. Загрузить, то есть она состоит вот таких из отдельных блоков, где выполняется логическое умножение. Результаты всех этих блоков мы логически складываем.
22:04 В режиме эмуляции подключаемся к контроллеру. Запускаем контроллер. У нас вот так вот выполняется, запускаем контроллер, и мы помним, когда все переменные, все 4 переменные отключены, то есть инвертированы, у нас активен выход также и. Здесь мы видим, все выполняется, то есть Игрек активен, потому что все 4 переменные у нас инверсные, то есть отключены. Теперь давайте изменим состояние переменных.
22:43 Я активирую х 1 и, допустим. Следующий набор вот все 4 переменные я активировал, и Игрик отключился. То есть программа работает, теперь давайте включим ее для включения, мне нужно собрать комбинацию. Вот такой вот икс 1 икс 2 включены, экстрикс 4 отключены. У нас Игрик активируется, то есть, как мы видим, мы логическое цифровое устройство в соответствии таблицы истинности у нас работает, опять игрек включился. То же самое здесь мы можем работать с переменными отсюда, то есть отключать, включать их, давайте еще сделаем 1 комбинацию.
23:30 Запишем все 4 включены, и у нас отключился выходной. Он отключен на видимом состоянии Фолз и. Теперь изменим некоторые состояния переменных, то есть это тру. Должно быть, это Фолс Фолс записываем значение. У нас должна включиться выходная, переменная, она включилась вот таким. Вот образом у нас выполняется программа на языке инстракшн лист.
24:11 В рамках данного видео мы обсудили. Язык инстракшн лист, я надеюсь, приблизились к написанию программ на данном языке. Как мы видели, это не так сложно, не так страшно, то есть программа на языке инстракшн лист, она просто получается длиннее. Чем обычно логика программирования довольно простая, поэтому мы будем прощаться. Я надеюсь, видео было полезным. Ставьте лайки, оставляйте комментарии, подписывайтесь на канал всем больших успехов.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.
В данном видео обсуждаются вопросы программирования на языке Instruction List (IL). Показаны основные приемы и атрибуты языка программирования, обсуждаются аккумулятор языка, переходы по меткам, операторы и их модификаторы.
В видео приводится пример написания программы на языке Instruction List (IL).
00:00 — Начало
00:05 — Об языке программирования ПЛК Instruction List (IL) — Список инструкций
01:17 — Формат инструкций языка IL
03:35 — Аккумулятор и переходы на метку
06:00 — Модификаторы операторов IL
08:18 — Вызов функциональных блоков и программ в прикладной программе IL
09:50 — Операторы языка Instruction List
12:15 — Пример. Реализация цифрового-логического устройства в виде программы на языке Instruction List