Учебно-методическое пособие по дисциплине Архитектура вычислительных систем
.pdfПрограмма на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции.
Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной.
Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
─┤ ├ ─ нормально разомкнутый контакт разомкнут при значении ложь, назначенной ему переменной и замыкается при значении истина.
─┤/├ ─ нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение ложь, и разомкнут, если переменная имеет значение истина.
─()─ итог логической цепочки копируется в целевую переменную, которая называется катушка. Это слово имеет обобщённый образ исполнительного устройства, поэтому в русскоязычной документации обычно говорят о выходе цепочки, хотя можно встретить и частные значения термина, например катушка реле.
Конкретные версии языка реализуются обычно в рамках программных продуктов для работы с определенными типами PLC. Часто такие реализации содержат команды, расширяющие множество стандартных команд языка, что вызвано желанием производителя полнее учесть желания заказчика, но в итоге приводят к несовместимости программ, созданных для контроллеров различных типов.
FBD (Function Block Diagram) — язык функциональных блоков — второй по распространённости язык для PLC графический язык программирования стандарта IEC 61131-3. Предназначен для программирования программируемых логических контроллеров (PLC). Программа образуется из списка цепей, выполняемых последовательно сверху вниз. Цепи могут иметь метки. Инструкция перехода на метку позволяет изменять последовательность выполнения цепей для программирования условий и циклов. При программировании используются наборы библиотечных блоков и собственные блоки, также
11
написанные на FBD или других языках IEC 61131-3. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.).
Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход PLC.
Пример фрагмента программы на FBD: A поделить на B, умножить на два и записать в переменную result
Та же самая функция на псевдокоде:
result := 2*A/B
При необходимости управления вызовом блоков в них добавляются специальные входы EN (enable) и выходы ENO. Логический ноль на входе EN запрещает вызов блока. Выход ENO используется для индикации ошибки в блоке и позволяет прекратить вычисление остатка цепи.
Язык FBD прост в изучении, нагляден и удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики. Жесткая последовательность выполнения приводит к простой внутренней структуре команд, которая транслируется в быстрый и надежный код.
Существует много практических реализаций языка FBD с определенными расширениями или ограничениями.
Одним из вариантов FBD является язык программирования CFC (Continuous Function Chart). Он позволяет произвольно задавать порядок выполнения блоков. Диаграммы CFC дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объемный код.
Существует модификация FBD, допускающая использование только чистых функций с одним выходом, без промежуточных состояний. Она реализует парадигму функционального программирования.
Sequential Function Chart (последовательные функциональные схемы)
— язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров. Широко используется в SCADA/HMI пакетах.
12
SFC — графический язык, предназначенный для написания программ последовательного управления технологическим процессом, описывающий его в форме, близкой к диаграмме состояний. Аналогом может служить сеть Петри с разноцветными фишками. В каждом состоянии система выполняет действия (подпрограммы) с определенными модификаторами. Например, модификатор N — исполнять, пока состояние активно.
Основными элементами языка являются:
состояния, в которых выполняются определенные действия, одновременно могут быть активны несколько состояний, одно из состояний является начальным;
переходы из состояния в состояние, для каждого перехода задается логическое условие перехода к следующему шагу;
альтернативное ветвление алгоритма, когда из текущего состояния возможны переходы к нескольким состояниям, при этом каждому переходу соответствует свое логическое условие и при выполнении алгоритма производится только один из альтернативных переходов;
параллельное ветвление, в отличие от альтернативного имеет общее условие перехода на несколько параллельно работающих веток;
переход к заданному состоянию;
остановка процесса.
При программировании контроллеров семейства SIMATIC используются две версии этого языка, разработанных в компании Siemens. Язык Graph 7 является дополнением к пакету STEP7 и реализуем как для контроллеров SIMATIC S7-300, так и SIMATIC S7-400. Вторая версия этого языка под названием SFC применяется только в рамках интегрированной среды разработки программ контроллеров и систем человеко-машинного интерфейса SIMATIC PCS 7.
IL (Instruction List) — язык программирования стандарта IEC 61131-3. Предназначен для программирования промышленных контроллеров. По синтаксису напоминает ассемблер.
Применяется на производстве для программирования автоматизированных систем управления технологическим процессом и систем промышленной автоматизации.
Structured Text (ST) — язык программирования стандарта IEC 61131-3. Предназначен для программирования промышленных контроллеров и операторских станций. Широко используется в SCADA/HMI/SoftLogic
13
пакетах. По структуре и синтаксису ближе всего к языку программирования Pascal. Удобен для написания больших программ и работы с аналоговыми сигналами и числами с плавающей запятой.
Существует расширенный стандарт IEC 61131-3, который вносит элементы объектно-ориентированного программирования путём расширения возможностей функциональных блоков (наследование, свойства, методы, интерфейсы). Также расширенный стандарт предполагает введение новых типов данных, таких как указатели, объединения, строки с двумя байтами на символ, ссылки и прочее.
Некоторые производители дополняют свои реализации собственными нестандартными расширениями. Примером могут служить операции динамического выделения и освобождения памяти в TwinCAT 3.1 компании Beckhoff ( __NEW и __DELETE соответственно). Эти расширения открывают много новых возможностей при написании программ.
Задача 1
Необходимо собрать схему, подключить контроллер к ПК и используя датчик приближения, включить выходной канал.
Пример
1. Создаем новый проект.
Выбираем язык программирования. В данной задаче будет использоваться LD.
14
По умолчанию в Memory Allocation стоит auto, выбираем Assign(AT).
Вводим номер входного контакта, куда подключен датчик: IX0.0.1
Ту же самую операцию проделываем над выходным контактом, только его номер задается вот в таком виде:QX0.0.1.
Теперь необходимо скомпилировать проект и записать в контроллер. Для этого делаем соединения с контроллером.
Заходим в Project-> Option, выбираем вкладку Connection Option.
Метод: RS-232C и выбираем COM порт, к которому подключен контроллер, нажимаем OK.
Вставляем на контролере переключатель в среднее положение и нажимаем ctrl+R или Online->Connct+Write+Run+MnitorOn
15
После того как успешно записали программу, приближаемся к датчику и, если все правильно, то загорится индикатор на выходе.
ВАРИАНТЫ
Номер варианта |
Номер входа |
Номер выхода |
|
|
|
1 |
19 |
17 |
|
|
|
2 |
1 |
5 |
|
|
|
3 |
4 |
14 |
|
|
|
4 |
6 |
2 |
|
|
|
5 |
7 |
3 |
|
|
|
6 |
8 |
2 |
|
|
|
7 |
9 |
17 |
|
|
|
8 |
1 |
17 |
|
|
|
9 |
3 |
5 |
|
|
|
10 |
5 |
14 |
|
|
|
11 |
6 |
2 |
|
|
|
12 |
3 |
17 |
|
|
|
13 |
19 |
5 |
|
|
|
14 |
19 |
14 |
|
|
|
15 |
1 |
2 |
|
|
|
16 |
4 |
7 |
|
|
|
17 |
6 |
9 |
|
|
|
18 |
7 |
4 |
|
|
|
19 |
8 |
2 |
|
|
|
20 |
9 |
9 |
|
|
|
21 |
1 |
17 |
|
|
|
22 |
19 |
5 |
|
|
|
23 |
1 |
14 |
|
|
|
24 |
4 |
2 |
|
|
|
25 |
6 |
17 |
|
|
|
26 |
7 |
5 |
|
|
|
27 |
8 |
14 |
|
|
|
28 |
9 |
2 |
|
|
|
29 |
1 |
5 |
|
|
|
30 |
3 |
7 |
|
|
|
Подписано в печать 20.06.2016г. Формат 60х90 1/16. Объём 1,0 усл.п.л. Тираж 50 экз. Изд. № 44. Заказ 80.
ООО «Брис-М». Москва, ул. Авиамоторная, д. 8а.
16
