Главная страница

Расчет сложных электрических цепей. Обзор программных блоков плк


Скачать 1.27 Mb.
НазваниеОбзор программных блоков плк
АнкорРасчет сложных электрических цепей
Дата13.10.2022
Размер1.27 Mb.
Формат файлаpdf
Имя файлаOverview_of_the_PLC_program_blocks.pdf
ТипОбзор
#732625
страница1 из 4
  1   2   3   4

Обзор программных блоков ПЛК
В ПЛК есть множество виртуальных реле, таймеров, счѐтчиков. У всех у них есть контакты
―a‖ - нормально разомкнутые и ―b‖ - нормально замкнутые.
Входные (Х) и выходные (Y) реле.
Главный блок ПЛК содержит входные и выходные реле пронумерованные в восьмеричной системе X000-X007, X010-X017... и Y000-Y007, X010-X017... .
Первая цифра обозначения указывает на блок, в котором расположен вход или выход. 0 - главный блок, 1-7 возможный номер расширения. Например, в первом расширении входы/выходы будут начинаться с X100/Y100.
Вспомогательное реле M
Вспомогательное реле не овеществлено в ПЛК, получает управление только на информационном уровне, тоесть из программы пользователя, программы управления ПЛК или по командам, принятым через интерфейс Modbus. Понятие вспомогательного реле близко к понятию флагов или семафоров в языках программирования высокого уровня. Часть вспомогательных реле имеют функцию энергонезависимого хранения своего сотояния, тоесть длительные перерывы в питании ПЛК не нарушат сотояния установленного программой во время нормального функционирования. Вспомогательные реле с номерами начиная с 8000 имеют специальные служебные назначения: они позволяют управлять работой ПЛК и являются источниками информации о исполнении программы или функционирования ПЛК в общем для программы пользователя.
Статус S
Этот программный блок имеет такие же свойства, как и вспомогательное реле, но используется для управления ветвлением в программе.
Счѐтчик C
Счѐтчик считает количество появлений управляющего сигнала на своѐм входе.
Делятся на:

16 разрядные с положительным направлением счѐта, диапазон значений 0..32767

32 разрядные с положительным/отрицательным направлением счѐта, диапазон значений -
2,147,483,648..+2,147,483,647

высокоскоростные 32-разрядные с положительным/отрицательным направлением счѐта, диапазон значений -2,147,483,648..+2,147,483,647
Первые 2 типа счѐтчиков используются только для счѐта внутри программы, соответственно, учитывая цикличность исполнения программы, период цикла 10-50 мс и тот факт, что для повторной подачи управляющего сигнала его перед этим надо снять, минимальный период подачи сигнала на программные счѐтчики составляет 20-100 мс или 10-50 Гц для периодических сигналов.
Последний тип счѐтчиков не зависит от программного цикла и имеет электрические входы, в качестве которых используются часть дискретных входов. Максимальная частота счѐта —
200 кГц. Возможны режимы счѐта: простой на увеличение, с указанием направления и двухфазный.
Таймер T

Таймер - это счѐтчик, значение которого, если он запущен, увеличивается каждые 1, 10 или
100 мс по выбору пользователя. По достижении заданного значения на его выходе устанавливается высокий уровень.
Таймеры T100-T199 - накапливающие. После исчезновения управляющего сигнала на входе их значение не обнуляется и при повторной подаче управляющего сигнала они продолжают отсчѐт с того же значения, что и было до отключения с периодом 100 мс. Остальные таймеры обнуляют своѐ значение при снятии управляющего сигнала.
Регистры данных D, FD
Регистры предназначены для хранения данных. Разрядность каждого регистра составляет 16 бит. Два регистра можно объединять в регистровую пару и использовать в вычислениях как
32-разрядное число. Числа в представлении с плавающей точкой хранятся в конроллере в регистровых парах. Регистры с префиксом D предназначены для оперативного хранения информации, необходимой для программы. Часть из них хранятся в ОЗУ контроллера, часть в ОЗУ, запитанном от литиевой батарейки. Последние сохраняют свои значения после обесточивания контроллера.
Регистры FD имеют такие же свойства при чтении из них. Они расположены во флэш памяти контроллера, не зависят от какого-либо электропитания, но это накладывает следующие ограничения:

запись нельзя осуществить командами, предполагающими помещение результата выполнения в регистр общего назначения. В тоже время по интерфейсу Modbus эти регистры модифицируются так же, как и обычные.

запись происходит медленнее, чем в регистр общего назначения

существует лимит на количество циклов записи в каждую ячейку памяти
Константы K, H
Константы использутся как аргументы комманд. Префикс K соотвествует десятичным константам, H — шестнадцатиричным.
Указатели P, I
Указатели используятся для указания места для перехода при ветвлении программы.
Указатели с префиксом I используются для обозначения начала процедур обработки прерываний.
(таб с 32/42)

Введение в языки программирования LD и IL
Применяемый для программирования данного ПЛК язык ЛД изначально был предназначен для описания устройств основанных на релейной логике. С появлением ПЛК и заменой ими релейной логики аргументом для его принятия как их основного языка программирования стало то, что многим специалистам не придѐтся переучиваться. Используя аналогии с электрическими устройствами, им легко будет перейти на новое оборудование. Хотя этот аргумент уже не является таким актуальным, поскольку в ПЛК зачастую за этим графическим представлением существует программа на каком-нибудь более «привычном»
(для людей связанным с программированием) языке и исполнение проиходит последовательно, в отличие от релейных схем, где все устройства работают параллельно, что нарушает аналогию, язык ЛД по сей день является традиционным для ПЛК. Его достоинством является то, что алгоритм упраления, который можно было бы реализовать в релейной логике, может быть описан на нѐм без использования каких-либо ключевых слов языка программирования контроллера, только графическими средствами языка. В то же время, поскольку системы управления сегодня не ограничиваются дискретными сигналами, в рассматриваемом ПЛК реализация языка ЛД позволяет интегрировать в программу комманды по обработке данных, будь то математические или связанные с пересылкой или обработкой двоичных данных. На самом же деле вся программа для ПЛК состоит из комманд на языке IL (Instruction List). Это преобразование происходит при компиляции программы на языке ЛД. Специалисты, которым больше по душе традиционные для микропроцессорных систем языки программирования, могут сразу писать управляющую программу для ПЛК с использованием мнемокода языка ИЛ.
Язык ЛД — это язык правил. Его название связано с визуальной аналогией, возникающей при просмотре программы на нѐм, с лестницей, у которой есть 2 шины и перекладины между ними. Левая из шин ассоциируется с шиной питания для реле и электромагнитных актуаторов. Каждая перекладина — это правило. Правая шина — исполнительные механизмы, реле, подключенные к общей шине источника питания.
Правило считается работающим, если прослеживается хоть один путь от мнимого источника питания слева до исполнительного механизма справа, и тогда на исполнительный механизм подаѐтся сигнал разрешения работы.
В дальнейшем при описании методов программирования будут приводиться комманды языка котроллера, а также их графические и электрические аналогии, где это применимо.

Основные инструкции.
LD, LDI, OUT мнемоническое обозначение графическое обозначение функция применимые устройства
LD (LoaD)
---| |--- загрузка состояния входа или другого дискретного устройства, нормально разомкнутые контакты
X, Y, M, S, T, C,
Dn.m, FDn.m
LDI (LoaD Inverse)
---|/|--- загрузка состояния входа или другого дискретного устройства с инверсией, нормально замкнутые контакты
X, Y, M, S, T, C,
Dn.m, FDn.m
OUT (OUT)
---( )--- подача управляющего сигнала на исполнительное устройство
X, Y, M, S, T, C,
Dn.m, FDn.m
Комманда LD загружает состояние битовых устройств, таких как входы, выходы ПЛК, вспомогательные катушки, выходы таймеров и счѐтчиков. При считывании состояния входов высокий логический уровень, как результат исполнения команды, будет в случае, если контакты, подключѐнные ко входу замкнуты на общий проводник входов. Команда LDI возвратит логическую 1 если контакты на входе разомкнуты или считываемый бит равен 0.
Команда OUT приводит в действие исполнильный механизм, указанный в еѐ аргументе, если результат выполнения предыдущей операции есть логическая 1.
Пример:
Приведѐнная выше программа считывает состояние входа X0 и, если контакты на этом входе были замкнуты, приводит в действие выход Y0. Таким образом состояние входа X0 без изменнеий передаѐтся на выход Y0. На выход Y1 передаѐтся проинвертированное состояние входа X1. Будучи преобразованной в инструкции контроллера, эта программа выглядит следующим образом.
LD
X0
OUT Y0
LDI
X1
OUT Y1

Для понимания следует представить, что результат комманды LD загружается в аккумулятор
(регистр хранения данных в ранних микропроцессорах, в котором хранились аргументы комманд и в который сохранялся результат их выполнения),а затем команда OUT выводит его в указанный порт.
AND, ANI мнемоническое обозначение графическое обозначение функция применимые устройства
AND (AND)
---| |------| |--- загрузка состояния входа или другого дискретного устройства, применение к полученному значению и результату выполнения предыдущей комманды логического И; последовательное соединение нормально разомкнутых контактов
X, Y, M, S, T, C,
Dn.m, FDn.m
ANI (ANd Inverse)
---| |------|/|--- загрузка состояния входа или другого дискретного устройства, применение к инвертированному полученному значению и результату выполнения предыдущей комманды логического И; последовательное соединение нормально разомкнутых контактов
X, Y, M, S, T, C,
Dn.m, FDn.m
Пример:
LD
X0
AND X1
OUT Y0
LD
X2
ANI
X3
OUT Y1
При замкнутых контактах на входах X0 и X1 правило, включающее Y0, будет работать.
При замкнутых контактах на входе X2 и разомкнутых на X3 правило, включающее Y1, будет работать.


OR, ORI мнемоническое обозначение графическое обозначение функция применимые устройства
OR (OR)
---| |---|
---| |---| загрузка состояния входа или другого дискретного устройства, применение к полученному значению и результату выполнения предыдущей комманды логического ИЛИ; параллельное соединение нормально разомкнутых контактов
X, Y, M, S, T, C,
Dn.m, FDn.m
ORI (OR Inverse)
---| |---|
---|/|---| загрузка состояния входа или другого дискретного устройства, применение к инвертированному полученному значению и результату выполнения предыдущей комманды логического ИЛИ; параллельное соединение нормально разомкнутых контактов
X, Y, M, S, T, C,
Dn.m, FDn.m
Пример:
LD
X0
OR
X1
OUT Y0
Правило для Y0 будет работать при замкнутых контактах на входах X0 и X1.

LDP, LDF, ANP, ANF, ORP, ORF
Комманда LDP возвращает результат обнаружения положительного перепада на входе, указанном как аргумент. Тоесть, если в предыдущем цикле исполнения программы (скане) указанный вход выдавал низкий уровень, а в текущем высокий — результат исполнения — высокий уровень. Из этого следует, что высокий уровень как результат исполнения этой комманды будет сохраняться в течение одного скана, так как в следующем скане не будет условий достаточных для обнаружения положительного перепада, поскольку с точки зрения следующего скана в предыдущем уже был высокий уровень и положительный перепад не может произойти.
LDF возвращает результат обнаружения отрицательного перепада на входе аналогичным образом.
Из предыдущищих описаний комманд, таких как AND, понятно, что при их исполнении происходит по сути сначала загрузка состояния указанного входа, как если бы это сделала комманда LD, а потом применение соответствующей логической операции. Комманды логических функций, мнемокоды которых заканчиваются на P и F, загружают состояние указанного в аргументах входа, как это произошло бы при использовании комманд LDP и
LDF соответственно. мнемоническое обозначение графическое обозначение функция применимые устройства
LDP (LoaD Pulse) стр вверх обнаружение положительного перепада на входе
X, Y, M, S, T, C,
Dn.m, FDn.m
LDP (LoaD Fall) стр вниз обнаружение отрицательного перепада на входе
X, Y, M, S, T, C,
Dn.m, FDn.m
ANP (ANd Pulse) обнаружение положительного перепада на входе, примение к полученному результату и результату выполнения предыдущей комманды логической функции AND
X, Y, M, S, T, C,
Dn.m, FDn.m
ANF (ANd Fall) обнаружение отрицательного перепада на входе, примение к полученному результату и результату выполнения предыдущей комманды логической функции AND
X, Y, M, S, T, C,
Dn.m, FDn.m
ORP (OR Pulse) обнаружение положительного перепада на входе, примение к полученному результату и результату выполнения предыдущей комманды логической функции OR
X, Y, M, S, T, C,
Dn.m, FDn.m
ORF (OR Fall) обнаружение
X, Y, M, S, T, C,
отрицательного перепада на входе, примение к полученному результату и результату выполнения предыдущей комманды логической функции OR
Dn.m, FDn.m

PLS, PLF, SET, RST, ALT
Эти 4 комманды предназначены для вывода в битовые устройства.
PLS выводит высокий логический уровень в течение 1 скана, если для указанного выхода в предыдущем скане правило для этой инструкции не работало, тоесть результат выполнения предшествующей ей инструкции — 0.
PLS выводит низкий логический уровень в течение 1 скана, если для указанного выхода в предыдущем скане правило для этой инструкции не работало, тоесть результат выполнения предшествующей ей инструкции — 0.
SET устанавливает состояние указанного выхода постоянно в высокое состояние, до тех пор пока оно не будет сменено другой коммандой, даже после прекращения действия правила, запускающего комманду SET.
RST устанавливает состояние указанного выхода постоянно в высокое состояние, до тех пор пока оно не будет сменено другой коммандой, даже после прекращения действия правила, запускающего комманду RST.
ALT сменяет сотояние указаного выхода на противоположное и оставляет его постоянным, до смены другой инструкцией. Следует проявлять осторожность при применинии этой инструкции. Если правило для этой инструкции действует от каких-то длительно присутствующих сигналов, смена состояния на указанном выходе будет производится в каждом скане, пока правило не перестанет действовать. Поэтому обычно целесообразно предварять эту инструкцию, такими, которые обнаруживают перепад. мнемоническое обозначение графическое обозначение применимые устройства
PLS (PuLSe) нет
Y, M, S, T, C,
Dn.m, FDn.m
PLF (PuLse Fall) нет
Y, M, S, T, C,
Dn.m, FDn.m
SET (SET)
---(S)---
Y, M, S, T, C,
Dn.m, FDn.m
RST (ReSeT)
---(R)---
Y, M, S, T, C,
Dn.m, FDn.m
ALT (ALTernate) нет
Y, M, S, T, C,
Dn.m, FDn.m

Прикладные инструкции
Тип
Обозначение
Функция
Подпрограмма
CJ
Условный переход
CALL
Вызов подпрограммы
SRET
Возврат из подпрограммы
STL
Начало отключаемого участка кода
STLE
Конец отключаемого участка кода
SET
Включить участок кода
ST
Выключить участок кода, не отключая текущий
FOR
Начало цикла FOR-NEXT
NEXT
Конец цикла FOR-NEXT
FEND
Первый конец программы
Сравнение данных
LD=
LD истина, если (S1) = (S2)
LD>
LD истина, если (S1) > (S2)
LD<
LD истина, если (S1) =< (S2)
LD<>
LD истина, если(S1)≠(S2)
LD<=
LD истина, если(S1)≤(S2)
LD>=
LD истина, если(S1)≥(S2)
AND=
AND истина, если(S1)=(S2)
AND>
AND истина, если(S1)>(S2)
AND<
AND истина, если(S1)<(S2)
AND<>
AND истина, если(S1)≠(S2)
AND<=
AND истина, если(S1)≤(S2)
AND>=
AND истина, если(S1)≥(S2)
OR=
OR истина, если(S1)=(S2)
OR>
OR истина, если(S1)>(S2)
OR<
OR истина, если(S1)<(S2)
OR<>
OR истина, если(S1)≠(S2)
OR<=
OR истина, если(S1)≤(S2)
OR>=
OR истина, если(S1)≥(S2)
Копирование содержимого
MOV
Копировать значение в один регистр
BMOV
Копировать значение в несколько регистров
FMOV
Fill move
FWRT
Запись во Flash память
MSET
Включение зоны
ZRST
Отключение зоны
SWAP
Старшие 8 разрядов слова меняются с младшими 8 разрядами
XCH перестановка
Операции с данными
ADD
Сложение
SUB
Вычитание
MUL
Умножение
DIV
Деление
INC
Инкремент
DEC
Декремент
MEAN
Среднее
WAND
Слово «И»
WOR
Слово «ИЛИ»

WXOR
Слово «Исключающее или»
CML
Дополнение
NEG
Негатив
(Далее в начале каждого описания должна следовать табличка с особенностями, я приведу для примера как я их вижу, но ставить не буду, иначе если понадобиться переделать в каких- то эстетических или типографских целях — придѐтся переделывать все.)
Вобщем, вот концепт:
Операция сложения ADD применима в устройствах
16 bit: ADD
32 bit: DADD
XC1, XC3, XC5
Применима к блокам: источник 1
K/H
DX
DY
DM
DS
TD
CD
D
FD источник 2
K/H
DX
DY
DM
DS
TD
CD
D
FD назначение (или получатель)
DY
DM
DS
TD
CD
D

CJ — Condition Jump — Условный переход
Допустимый аргумент: указатель — P
Допустимые границы аргумента: P0-P9999
Исполнение инструкции вызывает переход в программе на инструкцию следующую за указателем, указанным в аргументе при условии, что предыдущая инструкция возвратила высокий уровень.
На практике примение инструкции позволяет сократить длительность скана, избежать повторных воздействий на одни и те же устройства, а также менять поведение устройства в зависимости от его режима работы.
(рис с 75/85)
В приведѐнной выше программе видно, что существует 2 правила воздействия на Y0. В то же время, первое встречающееся правило для Y0 будет рассматриваться только при низком уровне на входе X0.
Инструкция не осуществляет переход от одной инструкции STLE к другой.

CALL — call subroutine, SRET — subroutine return — вызов и возврат из подпрограммы
Допустимый аргумент для CALL: указатель — P
Допустимые границы аргумента: P0-P9999
(рис с 76/86)
Инструкция CALL вызывает переход на подпрограмму, на которую указывает указатель в аргументе, при условии, что предыдущая инструкция возвратила высокий уровень.
Инструкция SRET возвращает управление исполнением программы на инструкцию, следующую за последней исполненной инструкцией CALL.
В приведѐнном примере подпрограмма между указателем P10 и инструкцией SRET исполняется при высоком уровне на входе X0. Инструкция FEND показывает конец тела основной программы, а END - всей программы.

SET, ST, STL, STLE — управление потоками
Допустимый аргумент для SET, ST, STL: статус — S
Эти 4 инструкции позволяют создавать и управлять программными потоками. В тексте программы начало потока обозначают инструкцией STL, а заканчивают инструкцией STLE.
Затем, чтоб разрешить исполнение потока необходимо исполнить инструкции SET или ST с аргументом, указывающим на номер потока. Разница между ними в том, что SET прекращает работу потока, из которого она исполняется. Запретить работу потока можно инструкцией
RST с аргументом, указывающим на поток.
(рис с 77/87)
Следует учитывать, что после завершения потока таймеры им используемые, а также регистры, используемые инструкциями PLS, PLF обнуляются.

Цикл FOR-NEXT
Аргументы :DX、DY、DM、DS、T、C、D、FD、K
Первой выполняется инструкция, находящаяся между инструкцией FOR-NEXT на некоторое время (зависит от размера данных внутри цикла), затем выполняется инструкция за NEXT.
FOR
K6
INC
D0
NEXT
FOR
K7
INC
D1
NEXT
NEXT
FOR
K5
M0
M3
M1
[A]
[B]
[C]
1) каждая инструкция FOR должна заканчиваться инструкцией NEXT. Максимальная вложенность таких пар не должна превышать 8-ми.
2) между FOR-NEXT инструкции LDP и LDF действуют один внешний цикл. Когда состояние катушки М0 изменяет свое состояние с 0 на 1 и М1 изменяет свое состояние с 0 на
1, цикл А выполнится 6 раз
3) когда катушки М0 и М3 меняют свое состояние с 0 на 1, цикл В выполнится 5*7=35 раз
4) если много циклов, то скан цикл будет продолжительным
5) если инструкция NEXT стоит перед FOR, или нет NEXT, или NEXT находится после блока
FENG, END, или количество NEXT не равно FOR – это приведет к ошибке
6) между FOR – NEXT недопустимо размещение блоков CJ, также это касается STL , FOR –
NEXT должны использоваться парно
  1   2   3   4


написать администратору сайта