AutomationDirect DirectLOGIC User Manual

Контроллеры DirectLOGIC
Основы программирования
ПЛК Системы, Москва 2009 г.
Введение
ПЛКСистемы 2009
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ............................................................................................................................................................... 4
Некоторые технические характеристики контроллеров DirectLOGIC .............................................................. 4
Средства для программирования контроллеров DirectLOGIC. ........................................................................ 5
Программируемые Логические Контроллеры – что это такое...................................................................... 5
Функционирование ПЛК DL06 ............................................................................................................................. 6
Особенности процессора DL06 ........................................................................................................................... 6
Работа в программном режиме ....................................................................................................................... 8
Работа в рабочем режиме ............................................................................................................................... 9
Время отклика ввода/вывода ............................................................................................................................ 11
Время сканирования процессора .................................................................................................................. 14
Системы счисления в ПЛК................................................................................................................................. 16
Карта памяти или регистры отображения ПЛК DL06 и типы данных ............................................................ 18
Сводная карта памяти контроллера DL06 ...................................................................................................... 22
Системная V-память DL06 ............................................................................................................................. 23
Специальные реле контроллера DL06 ......................................................................................................... 25
Начало работы с пакетом программирования DirectSOFT .......................................................................... 27
Версии DirectSOFT ......................................................................................................................................... 27
Кабель для связи DirectSOFT c контроллером ............................................................................................ 28
Запуск DirectSOFT6 - DSLaunch .................................................................................................................. 28
Виды представления программы .................................................................................................................. 30
Пример программирования ПЛК с помощью DirectSOFT. .......................................................................... 32
Просмотр доступных элементов языка программирования ....................................................................... 34
Немного о технике «рисования» программы ................................................................................................ 34
Состояния и файлы программы и проекта. Сохранение файлов. ............................................................. 35
Основы программирования на RLL ................................................................................................................. 38
Логические команды ....................................................................................................................................... 39
Логический стек ............................................................................................................................................... 41
Команды изменения состояний реле ............................................................................................................ 43
Логическое сравнение .................................................................................................................................... 43
Немедленный ввод/вывод ............................................................................................................................. 44
Таймеры .......................................................................................................................................................... 45
Счетчики .......................................................................................................................................................... 46
Регистры сдвига .............................................................................................................................................. 48
Аккумулятор .................................................................................................................................................... 48
Стек аккумулятора .......................................................................................................................................... 51
Указатели ........................................................................................................................................................ 52
Табличные команды ....................................................................................................................................... 53
Перечень команд RLL, RLL
PLUS
контроллера DL06 ......................................................................................... 55
Команды языка релейной логики RLL .......................................................................................................... 56
Команды барабанного командаппарата .......................................................................................................... 67
Команды языка RLL
PLUS
................................................................................................................................... 68
Интеллектуальные команды – I-BOX DL06 ...................................................................................................... 68
Работа с модулями аналогового ввода/вывода ........................................................................................... 72
Примеры программ релейной логики............................................................................................................. 75
Другие способы программирования DL06 ........................................................................................................ 81
Обмен данными по последовательным портам ........................................................................................... 82
Настройка портов DL06/DL260 на MODBUS и DirectNET .............................................................................. 82
Введение
ПЛК Системы 2004
3
Функционирование порта в режиме сетевого ведомого устройства .............................................................. 83
Связь с контроллером по MODBUS с помощью программы MODSCAN32 ................................................... 86
Функционирование порта в режиме ведущего устройства сети .................................................................... 87
Функционирование порта в режиме ведущего устройства сети MODBUS (команды MRX и MWX) ............ 91
Основы программирования на RLL
PLUS
.......................................................................................................... 98
Введение в стадийное программирование ...................................................................................................... 98
Знакомство с понятием "состояние процесса" ............................................................................................. 98
Начальные Стадии ....................................................................................................................................... 101
Что делают Биты Включения Стадий ......................................................................................................... 101
Свойства команды "Стадия" (Stage) ........................................................................................................... 102
Использование команд переходов между стадиями ................................................................................. 102
Пример стадийной программы: включение/ выключение лампы с помощью контроллера ....................... 104
Четыре действия для создания стадийной программы ................................................................................ 105
Пример стадийной программы: устройство открывания гаражной двери ................................................... 106
Правила создания стадийных программ ........................................................................................................ 110
Программирование на языке Стадий в вопросах и ответах ......................................................................... 117
Средства отладки и контроля работы программы ..................................................................................... 120
Контроль состояния программы из окон просмотра ..................................................................................... 120
Диалоговое окно Изменения значения - Change Value ................................................................................ 126
Использование редактора памяти .................................................................................................................. 128
Устранение неполадок с помощью тестового режима Test Mode ................................................................ 130
Монитор перехвата данных – Trap Monitor .................................................................................................... 132
Контроль стека (только для DL440) ................................................................................................................ 133
Trend View (только для DirectSOFT6) ............................................................................................................. 134
Перечень примеров программ для контроллера DL06 разработанных поставщиком ....................... 137
Программные средства для связи контроллера с компьютером в составе систем контроля и
управления ......................................................................................................................................................... 139
KEPDirect OPC/DDE-сервер для ПЛК ............................................................................................................. 140
Литература. ......................................................................................................................................................... 143
ВВЕДЕНИЕ
Модель контроллера
DL450
DL440
DL260
DL250-1
DL240
DL105
DL06
DL05
Объем памяти (слов),
- память команд
- память переменных
30.8 К
15.5 К
15.3 К
22.5 К
15.5 К 7К
30.4 К
15860 14592
14.8 К
7680 7168
3.8 К 2560 1280
2.4 К 2048
384
14.8 К
7680 7616
6 К 2048 4096
Макс. входов/выходов,
- локальных с расширением
- встроеннных
3584
2048
нет
1664
640 нет
8192
1280
нет
2048
768 нет
896 256 нет
18 18 18
100 100
36
30 30 14
Количество модулей в каркасе
4/6/8
4/6/8
3/4/6/9
3/4/6/9
3/4/6/9
нет 4 1
Количество локальных каркасов
4 4 5 3 1 1 1
1
Время выполнения команды, мкс
0.96
0.33
0.61
0.61
1.4
3.3
0.6
0.7
Среднее время сканирования (1К
входов/выходов), мс
4-5
2-3
1.9
1.9
10-12
5-6
1-2
1.5-3
Коммуникационные порты
4 2 2 2 2 1 2
2
Типы портов
RS232/422/
485
RS232/422
RS232/422/
485
RS232/422
RS232
RS232
RS232/422/
485
RS232
Число выполняемых команд
210
170
231
174
129
91
229
121
Математика
целочисл.
плавающ.
целочисл.
целочисл.
плавающ.
целочисл.
плавающ.
целочис.
целочис.
целочисл.
плавающ
целочис.
Часы/календарь
да
да
да
да
да
нет
да
модуль
ПИД регулирование
Встроено
16 контуров
+ модуль
модуль
Встроено
16 контуров
Встроено 4 контура
нет
нет
Встроено
8 контуров
Встроено 4 контура
В настоящем руководстве собраны сведения необходимые для программирования контроллеров
DirectLOGIC поставляемых в России фирмой ПЛКСистемы (PLC Systems). В приложении приведено
краткое описание контроллеров CLICK (серия С0), выпуск которых начат в 2008 году.
Программируемые контроллеры DirectLOGIC представлены пятью сериями: DL05/DL06, DL105, DL205,
DL305 и DL405. В каркасно-модульных контроллерах серий DL205, DL305 и DL405 можно выбирать один из
нескольких модулей процессора, отличающихся по производительности, ресурсам и коммуникационными
возможностями (в серии DL205, например, это DL230, DL240, DL250-1 и DL260).
Контроллеры всех семейств работают со своими подмножествами команд языка программирования RLL
(Relay Ladder Logic)/RLL
программный пакет DirectSOFT.
Далее в руководстве будет рассматриваться работа с контроллерами DirectLOGIC на примере
контроллера серии DL06. Это одна из последних моделей ПЛК DirectLOGIC, самая эффективная по
соотношению цена/качество и в то же время наиболее удобная для изучения и освоения контроллеров
DirectLOGIC.
В процессорах DL06 используются все системные и программные возможности процессоров DL260,
PLUS
. Для программирования и отладки программ используют один и тот же
включая встроенные ПИД-регуляторы с самонастройкой, математику с "плавающей" запятой и
использование протоколов MODBUS и ASCII ввод/вывод.
Некоторые технические характеристики контроллеров DirectLOGIC
ПЛК Системы, Москва 2009 г.
Основы программирования на RLL
ПЛК Системы 2004
5
Средства для программирования контроллеров DirectLOGIC.
Программирование контроллеров может производиться при помощью пакета программирования под
Windows – DirectSOFT или с помощью ручных программаторов (HHP). Существует несколько версий
DirectSOFT: 16-ти битовая версия(v.1 и v.2), 32-х битовая версия (v.3 и v.4), DirectSOFT5 и самая новая
версия DirectSOFT6.
DirectSOFT6 работает на ПК с процессором 1 ГГц, с памятью не менее 512 Мб ОЗУ и 50 Мб на жестком
диске с SVGA монитором 1024 x 768 и, по крайней мере, с одним последовательным портом RS232 (или
USB с адаптером), под Windows XP (Home and Pro) / Vista (все 32-bit и 64-bit версии) / Windows 7 /
Windows 8/8.1 (Не работает под Windows XP 64-bit, Macintosh, LINUX, UNIX)
Пакет предназначен для программирования всех серий контроллеров DirectLOGIC. DirectSOFT6, как
програмный продукт, существует в двух модификациях: поставляемый полнофункциональный пакет PC-
DSOFT6- и свободнораспространяемая версия PC-DS100,
PC-DS100 имеет ограничение на максимальную длину создаваемой и загружаемой в контроллер
программы – 100 слов RLL. Кроме того, Вы не сможете открыть проект с программой более 100слов. Вы
можете создать программу любой длины и сохранить ее на диске, но не можете ее вновь открыть или
загрузить в контроллер.
Вместе с DirectSOFT6 инсталируется бесплатно распространяемая утилита DNLoader (DirectNET Loader).
Эта утилита предназначена для выгрузки и загрузки образа программы из одного контроллера в другой
точно такой же по протоколу DirectNET (см.Руководство по быстрому запуску DNLoader).
Программируемые Логические Контроллеры – что это такое.
Программируемый логический контроллер (ПЛК) – это микропроцессорное устройство предназначенное
для контроля и управления машинами, агрегатами и технологическими процессами. Первоначально ПЛК
были предназначены для замены систем управления реализованных на реле и других логических не
программируемых устройствах.
Первый коммерческий ПЛК появился в конце 60-х годов. Это был ПЛК MODICON (Modular Digital Controller).
Он был разработан для использования в автомобилестроении, как антипод устройствам управления
создаваемых на базе компьютеров PDP-8 с использованием универсальных языков программирования..
MODICON и другие ПЛК представляют функционально полные универсальные устройства управления,
применение которых возможно силам инженеров электротехников, специалистов по автоматизации и
инженеров-технологов. С помощью ПЛК можно резко сократить время разработки, монтажа, отладки и
перенастройки системы управления конкретного пользователя.
Конструктивно большинство ПЛК состоит из трех основных устройств: процессорного модуля, модулей
системы ввода/вывода внешних сигналов и каркаса или объединительной платы с блоком питания.
Процессорный модуль управляет всей логикой работы ПЛК и состоит в свою очередь из собственно
процессора - ЦПУ и памяти - ОЗУ, ПЗУ, ППЗУ.
Модули ввода/вывода физически подключаются к датчикам входных сигналов, соленоидам, пускателям,
цепям управления приводами исполнительных механизмов, и т.д. и обеспечивают интерфейс между
процессорным модулем и информационными (входами) и управляющими каналами (выходами).
Основы программирования на языке RLL
ПЛКСистемы 2009
6
При работе процессор "читает" входные данные, затем выполняет управляющую программу, которая
загружена в память процессорного модуля. Наконец, на основании программы, ПЛК "записывает" или
обновляет управляющие выходы через выходные интерфейсы. Этот процесс называемый циклом
сканирования, постоянно выполняется в одной и той же последовательности без остановки и изменяется
только когда, когда вносятся изменения в управляющую программу.
Программы первоначально разрабатывали на графическом языках релейной логики (или «лестничной»
логики), программирование на котором имеет сходство с составлением схем релейной автоматики. В
дальнейшем эти языки развивались в строну увеличения числа и эффективности команд (использование
разнообразных функциональных блоков), а также использования разных методов структурирования
программ.
Язык программирования релейной логики - RLL/ RLL
содержит более 230 команд, в том числе таких, как барабанные командаппараты (Drum Sequenser)
работающие по времени и событиям. Одна такая команда позволяет реализовать, например, пуск-останов
небольшой установки или управлять работой агрегата.
PLUS
Язык стадий RLL
перехода между стадиями (частями программы) – условные, безусловные, ветвление программы и др..
позволяет структурировать программу и организовывать различные способы
PLUS
контроллеров DirectLOGIC в настоящее время
Функционирование ПЛК DL06
Грамотное программирование контроллера DL06 возможно только при ясном понимании того как ЦПУ
DL06 взаимодействует с подсистемой Ввода/Вывода; как DL06 использует коммуникационные и сетевые
средства; как DL06 обрабатывает данные и какие ресурсы ЦПУ при этом использует; сколько времени
занимают операции и в каких режимах может работать DL06.
Взаимодействие аппаратуры DL06 организует Операционная Система Центрального Процессора (ЦПУ),
которая в решающей мере определяет функциональные возможности контроллера серии DL06.
Особенности процессора DL06
ЦПУ DL06 имеет 14.8Кслов памяти, включающей 7.6К программной памяти и примерно 7.6К слов V-памяти
(регистры данных).
Программы хранятся в ЭППЗУ(Flash), которая является частью платы ЦПУ. Кроме ЭППЗУ на плате
процессора есть также оперативная память (RAM), в которой могут храниться параметры системы, V-
память и другие данные, не относящиеся к прикладной программе. Оперативная память поддерживается
суперконденсатором, сохраняющим данные несколько часов(суток) в случае потери питания. Конденсатор
автоматически подзаряжается при работе ПЛК. Если требуется сохранение данных в ОЗУ, то можно
использовать литиевую батарейку устанавливаемую дополнительно в специальное гнездо.
Кроме того процессор имеет 128 слов энергонезависимой неразрушаемой (non-volatile) V-памяти для
хранения данных пользователя.
DL06 имеет 20 встроенных дискретных входов и 16 встроенных дискретных выходов и
два встроенных последовательных порта RS232 и RS232/422/485, к которым Вы можете подсоединить
ручной программатор, операторскую панель или персональный компьютер. В контроллере есть четыре
слота для установки модулей ввода/вывода или коммуникационных сетевых модулей.
Основы программирования на RLL
ПЛК Системы 2004
7
Лицевая панель контроллера DL06
Встроенный блок питания в зависимости от модели работает с входным напряжением 95-240В
переменного тока или 12-24В постоянного тока. Блок питания обеспечивает работу контроллера и
дополнительных модулей, подавая напряжение 5В(1500-2000мА) , кроме того в составе блока питания
есть изолированный источник =24В(200-300мА).
При использовании дополнительных модулей следует проводить расчет потребляемой мощности и
возможности блока питания выбранной Вами модели DL06.
При включении питания процесор микроконтроллера DL06 автоматически обнаруживает все вставленные
модули ввода - вывода и устанавливает автоматическую настройку адресации ввода/вывода. Это
относится к встроенному вводу/выводу, а также к дополнительным модулям. Адреса назначаются группами
по 8 или 16 точек в зависимости от числа каналов ввода/вывода для модуля с использованием
восьмеричной нумерации. Входные и выходные дискретные модули могут размещаться в любом порядке.
При назначении адресов ввода/вывода дополнительных модулей, начинающуюся с X100 и Y100 для слота,
следующего за процессорным блоком.
Процессор DL06, допускает и ручное назначение адресов для любого слота ввода - вывода. Вы можете
вручную изменить автоматическую конфигурацию, и установить произвольные адреса ввода/вывода.
Некоторые дополнительные функциональные возможности процессора DL06:
Процессор можно настроить на работу с плавающим,фиксированным и ограниченным временем
Встроенные часы и календарь реального времени. Защита программ паролем. Встроенная диагностика. Встроенный журнал системных и пользовательских сообщений (System и User Error Log). Возможность принудительного изменения состояния входных и выходных регистров (Forcing, Bit
Настройка диапазонов ОЗУ , содержимое которых должно сохраняться при отключении питания
цикла выполнения программы.
Override).
(Retentive Range).
Основы программирования на языке RLL
ПЛКСистемы 2009
8
Работа процессора DL06
При включении питания процессор инициализирует внутренние
аппаратные средства. Инициализация памяти начинается с
проверки содержимого сохраняемой памяти (Retentive Range). В
общем случае, содержимое сохраняемой памяти
поддерживается, а не сохраняемая память очищается.
После однократного просмотра задач при включении питания
процессор начинает циклические операции сканирования.
На блок-схеме справа показано, как различается обработка задач
в зависимости от режима процессора и наличия ошибок.
Время сканирования (Scan Time) определяется как среднее
время выполнения всех задач. Следует отметить, что процессор
всегда считывает входы, даже в программном режиме. Это
позволяет программным средствам отслеживать состояние
входов в любой момент времени.
Выходы обновляются только в рабочем режиме. В программном
режиме они отключены. В рабочем режиме процессор выполняет
пользовательскую программу релейной логики. Сразу после этого
выполняются расчеты по каждому контуру ПИД -регулирования.
Затем процессор записывает результаты этих двух задач в
соответствующие выходные регистры.
Далее производится диагностика.Обнаруженные ошибки имеют
два уровня: Fatal Error и Non Fatal Error.
По исправимым ошибкам (Non Fatal Error) формируется
сообщение, а процессор остается в рабочем режиме. Если
обнаруживаются неисправимые ошибки (Fatal Error), то
процессор переводится в программный режим, а выходы
сбрасываются.
Работа в программном режиме
В программном режиме процессор не выполняет прикладные
программы и не обновляет выходы. Основным назначением
программного режима является ввод или изменение прикладных
программ. Вы можете использовать программный режим для
настройки параметров процессора, таких как сетевой адрес,
диапазоны сохраняемых областей памяти и др.
Для перехода в программный режим Вы можете использовать
переключатель режимов контроллера DL06, установив его в
положение STOP . Если переключатель режимов установлен в
положении TERM, Вы можете использовать программирующее
устройство, например компьютер с DirectSOFT, для перевода
Основы программирования на RLL
ПЛК Системы 2004
9
процессора в программный режим.
Для перевода контроллера в режим работы переключатель режимов контроллера DL06 надо установить в
положение RUN или использовать программирующее устройство .
Работа в рабочем режиме
В Рабочем (Run mode) режиме процессор выполняет прикладную
программу, делает вычисления для контуров ПИД-регуляторов и
обновляет входы/выходы системы. Кроме того выполняются другие
операции. Некоторые из них:
Контроль и изменение состояния точек ввода/вывода. Обновление параметров настройки таймеров/счетчиков. Обновление ячеек памяти с переменными.
. Для конкретного приложения важными могут быть разные операции,
например, частота обновления входов/выходов .
В рабочем режиме можно также редактировать программы.
Редакционные изменения в рабочем режиме не являются
«безударными». Пока принимается информация по новой программе,
процессор поддерживает последнее состояние выходных сигналов.
Но если в новой программе обнаружена ошибка, то процессор
отключает все выходы и переходит в программный режим.
Чтение входов
Процессор считывает состояние всех входов и записывает их в регистры отображения (Memory Map).
Ячейки регистра отображения входов обозначаются X и далее следует номер ячейки памяти. Данные
регистра отображения используются процессором при решении прикладной программы.
Конечно, вход может измениться после того, как процессор считает входы. В общем случае время
сканирования процессора измеряется миллисекундами. Если Ваше приложение не может ждать
следующего обновления входов/выходов, то можно использовать команды немедленного действия. Эти
команды при решении прикладной программы не считывают состояние регистров входных данных.
Команды немедленного действия считывают состояние входов прямо с модулей ввода/вывода. Однако
применение команд немедленного действия удлиняет время сканирования, поскольку процессор должен
повторно считывать состояние точек ввода.
Чтение входов специальных модулей ввода/вывода
После чтения входов процессор считывает информацию от всех установленных специальных модулей.
Обслуживание периферийных устройств и форсирование ввода/вывода
После считывания входов процессор опрашивает все подсоединенные периферийные устройства. Это, в
основном, устройства подсоединенные к последовательным портам. Например, устройство для
программирования может запрашивать состояния входов, выходов или состояния другого типа памяти.
На этом шаге производятся также операции форсирования (принудительного присвоения значений)
сигналов ввода/вывода: форсирование действующего в течении одного скан-цикла (Forcing) и операция
подавления бита (Bit Override).
Основы программирования на языке RLL
ПЛКСистемы 2009
10
Обмен по шине каркаса процессора
Интеллектуальные и коммуникационные модули используют для передачи данных в процессор и из
процессора системную шину контроллера, но состав этих данных шире, чем при обмене с модулями
ввода/вывода.
Обновление часов, специальных реле и специальных регистров
DL06 имеет внутренние часы реального времени и календарь, доступные для прикладной программы.
Специальные ячейки V-памяти отображают эту информацию. В этой части цикла производится обновление
этих ячеек. Кроме того, обновляются состояния различных специальных реле, например,
диагностических.
Выполнение прикладной программы
В этом сегменте цикла сканирования процессор производит вычисления по
каждой команде прикладной программы. Команды определяют отношение
между состояниями входов и выходами системы.
Процессор начинает с первой цепи программы релейной логики, выполняет
вычисления слева направо и сверху вниз, пока не встретится команда END.
Затем формируются новые значения выходных данных в регистрах
отображения. Процессор использует регистры отображения выходов
обозначаемые, как Y для хранения желаемых воздействий на физические
выходы. Обновление состояния физических выходов происходит каждый
скан-цикл. Кроме того есть команды немедленного вывода, которые
позволяют обновлять выходы не дожидаясь соответствующего сегмента
цикла.
Внутренние управляющие реле (С), биты состояния стадий (S) и память
переменных (V) также обновляются в этом сегменте.
Следует напомнить, что процессор получает и хранит информацию о
форсировании ввода/вывода. Если на какие-то точки ввода/вывода или на данные памяти было оказано
принудительное воздействие (Bit Override, Forsing), регистр отображения выходов будет содержать эту
информацию.
Решение уравнений контура ПИД-регулятора
Процессор DL06 может обрабатывать до 8-ми контуров ПИД-регулятора. Расчет контуров запускается как
отдельная задача сразу же после выполнения программы релейной логики. Расчеты ведутся только по
контурам, которые уже сконфигурированы, сами расчеты выполняются в соответствии со встроенной в
контур программой-планировщиком. Период дискретизации (интервал расчета и выдачи управляющего
воздействия) каждого контура устанавливается независимо в зависимости от инерционности объекта
регулирования.
Запись выходных данных
После того, как прикладная программа исполнила все команды и сформировала регистр отображения
выходных данных, процессор переписывает содержание регистра отображения выходных данных в
соответствующие физические выходы.
Запись выходов в специальные модули ввода/вывода
После обновления выходов процессор посылает информацию, требуемую всеми установленными
Основы программирования на RLL
ПЛК Системы 2004
11
специальными модулями.
Диагностика
В этой части цикла сканирования процессор производит системную диагностику и выполняет другие
задачи, такие как, вычисление времени сканирования и сброс сторожевого таймера. Процессор DL06
автоматически обнаруживает и регистрирует многие ошибочные состояния.
Одной их наиболее важных задач диагностики является расчет времени сканирования и управление
сторожевым таймером. Процессоры DL06 имеют сторожевой таймер — «Watch Dog», в котором хранится
максимально допустимое время, в течение которого процессор должен закончить прикладной сегмент
цикла сканирования. Его значение по умолчанию равно 200 миллисекунд. Если это время будет
превышено, то процессор перейдет в программный режим, сбросит все выходы и выдаст сообщение об
ошибке на устройство программирования «E003 S/W TIMEOUT». Это сообщение будет сохранено в
журнале диагностики контроллера.
Для просмотра минимального, максимального и текущего времени сканирования Вы можете использовать
DirectSOFT. Значения хранятся в системной области V-памяти.
Время отклика ввода/вывода
Временем отклика системы ввода/вывода является интервал времени, необходимый системе управления,
чтобы обнаружить изменения во входных точках и обновить соответствующие выходы. Некоторые
приложения требуют чрезвычайно быстрого отклика. Существует четыре составляющих, которые могут
повлиять на время отклика:
Момент времени (относительно периода сканирования), когда входы меняют свое состояние; Время задержки перехода входных схем из состояния выключено в состояние включено; Время сканирования процессора; Время задержки перехода выходных схем из состояния выключено в состояние включено
Нормальное минимальное время отклика ввода/вывода
Время отклика ввода/вывода будет наименьшим, когда значение входа изменяется до начала периода
опроса входов скан-цикла. В этом случае считываются состояния входов сразу после изменения значения,
решается прикладная программа и обновляются значения выходов. На следующей диаграмме показан
пример распределения времени для этого случая.
Основы программирования на языке RLL
ПЛКСистемы 2009
12
В этом случае Вы можете вычислить время отклика суммированием следующих элементов:
задержка входов + время сканирования + задержка выходов = время отклика
Нормальное максимальное время отклика ввода/вывода
Время отклика ввода/вывода будет наибольшим, когда когда значения входа изменяется после начала
периода опроса входов исполнительного цикла. В этом случае новое состояние входа не будет
считываться до следующего сканирования. На следующей диаграмме показан пример распределения
времени для этого случая.
В этом случае Вы можете вычислить время отклика суммированием следующих элементов:
задержка входов + (2 x время сканирования) + задержка выходов = время отклика
Улучшенное время отклика
Существует несколько способов, позволяющих повысить реакцию контроллера.
Выбрать команды с более коротким временем выполнения. Использовать команды ввода/вывода немедленного действия Выбрать режим 50 высокоростного ввода/вывода.
Основы программирования на RLL
ПЛК Системы 2004
13
Команды ввода/вывода немедленного действия, вероятно, являются наиболее полезным способом. В
следующем примере показаны команды ввода и вывода немедленного действия и их результат.
В этом случае Вы можете вычислить время отклика суммируя следующие элементы:
задержка входов + время выполнения команд + задержка выходов = время отклика
Время выполнения команд вычисляется суммированием времен для команды немедленного ввода,
команды немедленного вывода и всех команд между ними.
ПРИМЕЧАНИЕ. Когда команда немедленного действия считывает текущее состояние со входа она
использует полученный результат для решения задачи, выполняя это в рамках одной команды без
обновления значений регистра отображения. Поэтому любые обычные команды, которые последуют
далее, будут по-прежнему использовать значения регистра отображения. Любые последующие
команды немедленного действия будут снова обращаться к модулю, чтобы обновить
состояние.Немедленная запись выходов (Y), однако, прозводит одновременно запись значения в
регистоы.
Основы программирования на языке RLL
ПЛКСистемы 2009
14
Время сканирования процессора
Время скан-цикла ЦПУ включает все циклические задачи, которые
выполняются операционной системой. Можно использовать
DirectSOFT5 или ручной программатор для отображения
минимального, максимального и текущего времен сканирования,
которые имели место после последнего перехода из Программного
Режима в Рабочий Режим..
Как показано ранее существует несколько задач, которые
составляют цикл сканирования. Каждая из этих задач требует
определенного времени на выполнение. Из всех задач следующие
наиболее важные:
Обновление входов Обслуживание периферийных устройств Выполнение программы Обновление выходов Выполнение прерывание по времени
Из всех этих задач Вы можете влиять только на длительность
одной — на время выполнения прикладной программы. Это связано
с тем, что различные команды имеют разное время выполнения.
Поэтому, если Вы хотите иметь быстрое скан-цикл, то нужно
попытаться выбрать более быстрые команды.
Выбор типа ввода/вывода и периферийных устройств, также
влияют на время сканирования. Однако этот выбор, как правило,
диктуется приложением.
В следующих параграфах приводится общая информация о том,
сколько времени требуют отдельные задачи.
Чтение входов
Время, необходимое для считывания состояния всех встроенных
входов - 52.6мкс.
Запись выходов
Время, необходимое для записи во встроенные выходы – 41.1 мкс.
Обслуживание периферийных устройств
Запросы на связь могут появиться в любой момент при
сканировании. Однако процессор только «регистрирует» эти
запросы до их фактического обслуживания в части «Обслуживание
периферийных устройств» цикла сканирования. Процессор не
тратит время на обслуживание, если нет присоединеных периферийных устройствами.
Основы программирования на RLL
ПЛК Системы 2004
15
Регистрация запроса (в любое время)
Время обработки
Отсутствие соединения
мин и макс
0 мкс
Порт 1
Отправление мин /макс
5.8/11.8 мкс
Получение мин /макс
12.5/25.2 мкс
Порт 2
Отправление мин /макс
6.2/14.3 мкс
LCD (Встроенный ЖК дисплей)
Получение мин /макс
14.2/31.9 мкс
мин и макс
4.8/49.2 мкс
Запрос на обслуживание
Время обработки
Минимальный
9 мкс
Максимальный в режиме RUN
412 мкс
Режимы
Время обработки
Программный режим
Минимум
12.0 мкс
Максимум
12.0 мкс
Рабочий режим
Минимум
20.0мкс
Максимум
27.0мкс
В части «Обслуживание периферийных устройств» цикла сканирования процессор анализирует запросы
на коммуникации и отвечает соответствующим образом. Время, необходимое для обслуживания
периферийных устройств, зависит от содержания запроса.
Обновление часов/календаря, специальных реле, специальных регистров
На этом этапе обновляются часы, календарь и специальные реле, результаты загружаются в специальные
ячейки V-памяти. Такое обновление выполняется как в рабочем режиме, так и в программном режиме.
Время выполнение конкретной прикладной программы
Процессор обрабатывает программу сверху (с адреса 0) до команды
END. Процессор выполняет программу слева направо и сверху вниз. В
каждой цепи вычисляется соответствующий регистр отображения или
обновляется ячейка памяти.
Время, необходимое для выполнения прикладной программы, зависит от
типа и числа используемых команд и от количества служебных затрат
времени.
Вы можете сложить времена выполнения всех команд в Вашей
программе, чтобы найти общее время выполнения программы.
Например, время выполнения на DL06 программы, представленной на
рисунке, рассчитывается следующим образом.
Основы программирования на языке RLL
ПЛКСистемы 2009
16
Команда
Время
Команда
Время
STR X0
0.67мкс
STRN C102
0.67мкс
OR C0
0.51мкс
LD K50
9.00мкс
ANDN X1
0.51мкс
STRN C103
0.67мкс
OUT Y0
1.82мкс
OUT V2006
1.82мкс
STRN C100
0.67мкс
STR X5
0.67мкс
LD K10
9.00мкс
ANDN X10
0.51мкс
STRN C101
0.67мкс
OUT Y3
1.82мкс
OUT V2002
9.3мкс
END
12.80мкс
Сумма
51.11мкс
Сама программа выполняется за
51.11мкс во время каждого скан-цикла.
DL06 тратит 0.18мс на обработку
внутреннего прерывания от таймера
каждую миллисекунду.
Общее время сканирования вычисляется
добавлением к времени выполнения
программы времени на системные
издержки и умножения результата на
1.18.
«Системные издержки» включают обновление входов/выходов и диагностические задачи. Из-за
флуктуации времени на «системные издержки» общее время сканирования немного изменяется от цикла к
циклу. Системные издержки DL06 составляют: минимум 746.2мкс;максимум 4352.4мкс
Общее время = (время выполнения программы + системные издержки) х 1.18
Системы счисления в ПЛК
Как и большинство компьютеров, ПЛК DL-06 хранит числа и
манипулирует ими в двоичном виде: ноль и один. Так почему же мы
имеем дело со столь многими различными представлениями
чисел? Для конкретных целей некоторые представления чисел
более удобны, чем другие. Иногда мы используем числа для
представления размера или количества чего-либо. Другие числа
относятся к ячейкам или адресам, или ко времени.
Ресурсы ПЛК
В зависимости от модели и конфигурации ПЛК предлагают фиксированное количество ресурсов. Под
словом «ресурс» понимается память переменных (V-память), точки ввода/вывода, таймеры, счетчики и др.
Большинство модульных ПЛК позволяют добавлять точки ввода/вывода группами по 8 точек. Все ресурсы
наших ПЛК считаются в восьмеричной системе. Для компьютера легче считать группами по восемь штук,
чем по десять, так как восемь есть степень 2.
Восьмеричная система означает просто счет по группам из восьми предметов. На рисунке ниже приведены
две группы по восемь кружков. В восьмеричной системе мы имеем «20» предметов(8 и 9 отсутствуют в
восьмеричной системе), что означает 2 группы по восемь плюс 0 единичных. Нельзя говорить «двадцать»,
надо говорить «два - ноль восьмеричных». В этом четкое различие между системами счисления.
После определения того, как считаются ресурсы, следует перейти к тому, как осуществляется доступ ПЛК к
ресурсам (это не одно и то же). Команды процессора при доступе к ресурсам ПЛК используют
Основы программирования на RLL
ПЛК Системы 2004
17
восьмеричные адреса. Восьмеричные адреса тоже имеют восьмеричное значение, за исключением
того, что счет начинается с ноля. Число ноль для компьютера важно, поэтому его нельзя пропустить.
Память хранения переменых или V-память
В памяти переменных (называемой «V-памятью») хранятся данные для программы релейной логики и
параметры настройки ПЛК.
Ячейки V-памяти или адреса V-памяти — это одно и то же, нумеруются в восьмеричной системе.
Каждая ячейка V-памяти является одним словом, содержащим 16 бит.
Для системных регистров настройки ПЛК обычно указывается назначение каждого бита слова V-памяти.
Наименее значимый бит (LSB) находится справа, наиболее значимый бит (MSB) находится слева. Слово
«значимость» относится к относительным двоичным весам битов.
Данные V-памяти - это 16-битовый двоичный код, но мы редко используем регистры данных по битам.
Чаще мы используем команды и средства визуального отображения, которые позволяют нам работать с
двоичными, десятичными, восьмеричными и шестнадцатеричными числами. Все они преобразуются и
хранятся в двоичном виде.
Для ПЛК не имеет значения, как называть числа: двоичные, восьмеричные и др.. Важно, чтобы источник
или механизм, который записывает данные в ячейки V-памяти, и механизм, который затем их считывает,
использовали один и тот же тип данных (то есть восьмеричный, двоичный, шестнадцатеричный или любой
другой).
Ячейка V-памяти есть просто место для хранения. Она сама ни преобразовывает, ни переносит данные.
Двоично-десятичные числа (BCD)
Поскольку люди считают в десятичной системе, ввод и представление данных в ПЛК они также
производят в десятичной форме (через интерфейсы операторов). Но процессоры работают более
эффективно при использовании двоичных чисел.
Компромиссом между этими двумя системами является система двоично кодированного десятичного
(BCD - Binary Coded Decimal) представления чисел. Цифры BCD изменяются от 0 до 9 и хранятся как
четыре двоичных бита (полубайт – тетрада - nibble). Это позволяет хранить в каждой ячейке V-памяти
четыре цифры BCD с диапазоном соответствующим десятичным числам от 0000 до 9999.
В чисто двоичном виде 16-битовое слово представляет числа от 0 до 65535. При хранении чисел в BCD
диапазон сокращается от 0 до 9999. Многие математические команды контроллеров DirectLOGIC
используют данные в формате BCD.
Основы программирования на языке RLL
ПЛКСистемы 2009
18
Шестнадцатеричные числа
Шестнадцатеричные числа аналогичны BCD числам, за исключением того, что они используют все
возможные двоичные значения каждой 4-битовой комбинации.
Для дополнения десятичных цифр свыше 9 используются буквы от A до F, как показано ниже.
Шестнадцатеричное число из 4 цифр может представить все 65536 значений в слове V-памяти. Диапазон
шестнадцатеричных чисел: от 0000 до FFFF. В ПЛК часто требуется для данных чувствительных
элементов и др. Шестнадцатеричная система является более удобной для человека, чем двоичная.
Карта памяти или регистры отображения ПЛК DL06 и типы данных
Работая с любой системой на базе ПЛК, обычно
требуется обрабатывать множество различных видов
информации. Сюда включаются состояние входных
устройств, состояние выходных устройств, различные
элементы таймеров, счетчиков, и т.д. Важно понять, как
система представляет и сохраняет различные типы
данных. Например, необходимо знать, как система
идентифицирует входные точки и точки вывода, слова
данных, и т.д. В следующих абзацах описаны различные
типы данных, используемые в микроконтроллере DL06.
Краткий обзор карты памяти (Memory Map) процессора
следует за описаниями типов памяти.
Все ячейки памяти и ресурсы контроллера
пронумерованы в восьмеричной системе исчисления. Например, рисунок справа показывает, как
восьмеричная система исчисления работает при адресации входных дискретных каналов.
Дискретные и словные ячейки памяти.
В DL06 существуют два типа памяти (по способу хранения
и адресации), дискретная и двухбайтная (словная) память.
Дискретная память – это один бит, который может
принимать значение 1 или 0.
Словную (двухбайтную) память называют V-памятью, она
состоит из 16-разрядных ячеек памяти и обычно
используется, для манипуляций с данными / числами, хранения данных / чисел, и т.д.
Некоторая информация автоматически сохраняется в V-памяти. Например, текущее значение таймера.
Ячейки V-памяти для дискретной области памяти
Дискретная область памяти необходима для отображения входов, выходов, управляющих реле,
Основы программирования на RLL
ПЛК Системы 2004
19
специальных реле, стадий, битов состояния таймера и битов состояния счетчика. Однако, Вы можете
также обращаться к битовым типам данных как к слову V-памяти. Каждая ячейка V-памяти содержит 16
последовательных дискретных бит. Например, следующий рисунок показывает, как точки встроенного
ввода X отображаются в ячейках V-памяти.
Эти дискретные области памяти и соответствующие им диапазоны V-памяти перечислены в таблице карты
памяти для микроконтроллера DL06 на следующих страницах.
Примечание: При обращении к битам из слова (Bit of Word)
используйте типы данных - B и PB). Пример записи: В2000.5,
РВ1100.1
Входные точки (тип данных X)
Точки дискретных входных сигналов являются типом данных X.
20 встроенных дискретных входных сигналов и 512 адресов
дискретных входных сигналов, доступны ЦП DL06
Выходные точки (тип данных Y)
Дискретные точки вывода и являются типом данных Y. ЦП DL06
доступно 16 встроенных дискретных выходов и 512 дискретных
адресов вывода.
Входные/ Выходные точки удаленного ввода (тип данных GX/GY)
2048 точек GX и 2048 точек GY предназначены для отображения
дискретных сигналов от устройств удаленного ввода/вывода.
Управляющие реле (тип данных C)
Управляющие реле – это дискретные биты используемые, для
управления программой.
Управляющие реле не представляют собой реальное устройство, то
есть они не могут быть физически привязаны к переключателям,
выходам обмоток, и т.д. Это внутренние переменные процессора.
Управляющие реле могут программироваться как дискретные входные
сигналы или как дискретные выходы.
Таймеры и биты состояния таймеров (тип данных T)
Биты состояния таймера отражают связь между текущим значением и
предустановленным значением определенного таймера. Бит состояния
таймера будет включен, когда текущее значение тайиера является
равным или большим чем предустановленное значение
соответствующего таймера.
Когда вход X0 включается, таймер T1 начнет отсчет. Когда таймер
достигает предустановленного значения в 3 секунды (K30) бит состояние таймера T1 включается. Затем
Основы программирования на языке RLL
ПЛКСистемы 2009
20
T1 включает вывод Y12. Выключение X0 сбрасывает таймер.
Текущее значение таймера (тип данных V)
Как было упомянуто ранее, текущие значения таймеров автоматически
сохраняются в V-памяти.
Например, V0 сохраняет текущее значение для Таймера 0, V1 сохраняет
текущее значение для Таймера 1, и т.д. Они имеют также системные
обозначения: TA0 (Накопленное значение таймера) для Таймера 0, и
TA1 для Таймера 1.
Сделано так для большей гибкости программирования.
Счетчики и биты состояния счетчика (тип данных CT)
Биты состояния счетчиков отражают отношение между текущим и
предварительно установленным значением счетчика. Бит состояния
счетчика будет «включен», когда текущее его значение станет равным
или большим, чем предварительно установленное значение
соответствующего счетчика.
Каждый раз, когда контакт X0 переходит из состояния «выключен» в
состояние «включен», счетчик увеличивается на единицу. Если X1 включается, то счетчик возвращается в
состояние «ноль». Когда счетчик достигает установленных 10 подсчетов (К = 10), то контакт состояния
счетчика СТ3 «включается».
Текущее значение счетчика (тип данных V)
Ттекущие значения счетчиков также автоматически запоминаются в V-
памяти. Например, V1000 сохраняет текущее значение Счетчика СТ0,
V1001 сохраняет текущее значение Счетчика СТ1 и т. д. Системные
обозначения этих ячеек памяти: CTA0 (Суммирующий Счетчик) для
Счетчика 0 и CTA01 для Таймера1.
Пример показывает, как вы можете использовать относительные
контакты для контроля значений счетчика
Двухбайтная память (тип данных V)
Двухбайтная (словная) память представляет собой 16-битовую ячейку,
обычно используемую для хранения данных/чисел и др.
Все действия со словами производятся с использованием
Аккумулятора.
В приведенном примере показано, как четырехзначная двоично-
десятичная константа загружается в Аккумулятор и затем запоминается
в ячейке V-памяти.
Основы программирования на RLL
ПЛК Системы 2004
21
Бит состояния Стадии (тип данных S)
Стадии используются в программах RLL
PLUS
для создания
структурированных программ. Этот способ структурирования
аналогичен используемому в языке SFC IEC 61131-3. Каждая стадия
программы содержит программный сегмент. Когда стадия активна,
выполняется логическая схема данного сегмента. Если стадия
«отключена», или не активна, логическая схема сегмента не
выполняется, а ЦПУ переходит к следующей активной стадии.
(Краткое описание языка программирования на RLL
PLUS
см. далее).
Каждая стадия имеет бит индикации состояния (S), который можно
использовать как вход для указания того, активна ли стадия или нет.
Если стадия активна, то бит состояния «включен». Если стадия не
активна, то бит состояния «выключен». Этот бит может «включать» и
«выключать» и другими командами, такими как команды SET или
RESET. Это дает вам возможность легко управлять стадиями
программы
Специальные Реле (тип данных SP)
Специальные реле представляют собой ячейки дискретной памяти с
заранее определенным набором функций. Существует много различных
типов специальных реле.
В примере: управляющее реле С10 будет включено на 50 мс и отключено на 50 мс, так как SP5 является
специальным реле (генератором прямоугольных импульсов), которое находится в состоянии «включено» в
течение 50 мс и в состоянии «выключено» также в течение 50 мс.
Полный перечень специальных реле контроллера DL06 приведен в таблице в конце главы.
Основы программирования на языке RLL
ПЛКСистемы 2009
22
Тип памяти
Указатель
дискретной
памяти
(восьмеричный)
Указатель
двухбайтной
памяти
(восьмеричный)
Количество
Десятичное
Символ
Входные точки
X0 – X777
V40400 - V40437
512
Выходные точки
Y0 – Y777
V40500 – V40537
512
Управляющие реле
C0 – C1777
V40600 - V40677
1024
Специальные реле
SP0 – SP777
V41200 – V41237
512
Таймеры
T0 – T377
V41100 – V41117
256
Текущие значения таймеров
-
V0 – V377
256
Биты состояния таймеров
T0 – T377
V41100 – V41117
256
Счетчики
CT0 – CT177
V41140 – V41147
128
Текущие значения счетчиков
-
V1000 – V1177
128
Биты состояния счетчиков
CT0 – CT177
V41140 – V41147
128
Слова данных
-
V400-V677 V1200 – V7377 V10000 - V17777
192 3200 4096
Используются во многих командах
Слова данных неразрушаемые
-
V7400 – V7577
128
Используются во многих командах
Стадии
S0 – S1777
V41000 – V41017
1024
Удаленный ввод/вывод
GX0-GX3777 GY0-GY3777
V40000-V40177 V40200-V40377
2048 2048
Системные параметры
-
V700-V777 V7600 – V7777 V36000-V37777
64 128 1024
Используются для различных целей
Сводная карта памяти контроллера DL06
Основы программирования на RLL
ПЛК Системы 2004
23
Адрес
V-памяти
Описание содержимого
Значение по
умолчанию/диапазон
V700-707
Ячейки V-памяти для модуля в слоте 1
Отсутствует
V710-717
Ячейки V-памяти для модуля в слоте 2
Отсутствует
V720-727
Ячейки V-памяти для модуля в слоте 3
Отсутствует
V730-737
Ячейки V-памяти для модуля в слоте 4
Отсутствует
V3630-3707
Ячейки (по умолчанию) для предустановленных значений счетчика 1 или импульсной защелки высокоскоростного ввода/вывода
Отсутствует
V3710-3767
Ячейки (по умолчанию) для предустановок счетчика 2
Отсутствует
V7620-7627
Ячейки для параметров настройки панели оператора DV-1000.
V0- V3760
V7630
Начальная ячейка для многошаговых уставок канала 1. Первое значение будет получено из V3630 "по умолчанию". Макс. число уставок - 24, диапазон по умолчанию - V3630 - V3707.
Значение по умолчанию:
V3630 Диапазон: V0- V3710
V7631
Начальная ячейка для многошаговых уставок канала 2. Первое значение будет получено из V3710 "по умолчанию". Макс. число уставок - 24, диапазон по умолчанию - V3710 - V3767.
Значение по умолчанию:
V3710 Диапазон: V0- V3710
V7632
Регистр настройки импульсного вывода
Отсутствует
V7633
Устанавливает желательный код функции высокоскоростного счетчика, прерывания, импульсной защелки, последовательности импульсов или входной фильтрации.
Старший байт: Биты 8 –11, 14, 15 - не используется Бит 13: используется, чтобы установить режим RUN при включении питания, если переключатель режима в положении TERM. Бит 12: используется для указания – контроль V батарейки включен
По умолчанию: 0060
Младший байт: 10 –счетчик 20 –квадратурный счетчик 30 – импульсный вывод 40 –прерывание 50 – импульсная защелка 60 –фильтрованное значение
V7634-7637
Регистры настройки X0 – Х3 для высокоскоростного Ввода/Вывода.
По умолчанию: 1006
V7640
Начальные адреса Таблиц ПИД-регуляторов (PID Loop table)
V1200-V7377,V10000-V17777
V7641
Число ПИД- контуров
1-8
V7642
Код ошибки – ошибка размещения таблицы контура в V-памяти
V7643-7647
Резерв
V7650
Порт 2: адрес V-памяти для ASCII протокола
V1200-V7377,V10000-V17777
V7653
Порт 2: символы кода завершения передачи ASCII протокола
V7655
Порт 2: Настройки протокола, тайм-аут и время задержки ответа
V7656
Порт 2: Номер станции, скорость передачи, количество стоповых бит, и вид контроля четности
V7657
Порт 2: Код завершения настройки порта
V7660
Установка управления сканированием : сохраняет режим сканирования.
V7661
Уставка счетчика таймера превышения: Вычисляет сколько раз время, время сканирования превышло установленное время.
V76627717
Резерв
V7720
Указатель Именованной заданной величины таймеров
Используются при работе с
DV-1000
V7721
Указатель Именованной заданной величины счетчиков
V7722
Старший байт Размера блока Именованных уставок таймеров и младший байт Размера блока Именованных уставок счетчиков
Системная V-память DL06
В ПЛК DL06 резервируются отдельные адреса V-памяти для сохранения системных параметров или
некоторых типов данных системы. Эти ячейки памяти всегда сохраняют свое назначение.
Основы программирования на языке RLL
ПЛКСистемы 2009
24
Адрес
V-памяти
Описание содержимого
Значение по
умолчанию/диапазон
V77237737
Резерв
V7740
Порт 1 и порт 2: настройка таймера перезапуска связи
По умолчанию: 3030
V77417746
Резерв
V7747
Ячейка содержит 10мс счетчик (0-99) . Содержимое ячейки увеличивается на единицу каждые 10 мс.
V7750
Резерв
V7751
Код ошибки в сообщении об ошибке - 4-значный код, используемый при выполнении команды FAULT
V7752
Ошибка конфигурации вв/вывода: Текущий код слота с ошибкой
V7753
Ошибка конфигурации вв/вывода: Прежний код слота с ошибкой
V7754
Ошибка конфигурации вв/вывода: номер слота с ошибкой
V7755
Код ошибки - хранится код фатальной ошибки.
V7756
Код ошибки - хранится код основной ошибки.
V7757
Код ошибки - хранится код второстепенной ошибки.
V7760–7762
Резерв
V7763
Адрес программы с синтаксической ошибкой
V7764
Код Синтаксической ошибки
V7765
Счетчик циклов — сохраняет общее число циклов программы, которые прошли после перехода из програмного режима в рабочий.
V7766
Содержит текущее число секунд (00-59)
V7767
Содержит текущее число минут (00-59)
V7770
Содержит текущее число часов (00-23)
V7771
Содержит номер текущего дня недели (Пон. -1., Втор. -2 и т.д.)
V7772
Содержит текущий день месяца (01, 02, и т.д.)
V7773
Содержит текущий месяц (от 01 до 12)
V7774
Содержит текущий год (от 00 до 99)
V7775
Скан-контроль: - сохраняет текущее время сканирования (мс).
V7776
Скан-контроль - сохраняет минимальное время сканирования, которое было после перехода из программного режима в рабочий (мс).
V7777
Скан-контроль - сохраняет максимальное время сканирования, которое было после перехода из программного режима в рабочий (мс).
V37700 – 37737
Используются для настройки удаленного ввода – вывода (Remote I/O)
Основы программирования на RLL
ПЛК Системы 2004
25
Реле запуска и реального времени
SP0
Первое сканирование
Включено при первом цикле сканирования после включения питания и при переходе из программного режима в рабочий. Реле отключено на втором сканировании и далее.
SP1
Всегда ВКЛЮЧЕНО
Всегда включенный контакт (ON).Обеспечивает выполнение команды при каждом сканировании.
SP2
Всегда ВЫКЛЮЧЕНО
Всегда выключенный контакт (OFF)
SP3
1 мин. Реле-генератор
Включено 30 сек и отключено в течение 30 сек.
SP4
1 сек. Реле-генератор
Включено 0.5 сек и отключено в течение 0.5 сек.
SP5
100 мс Реле-генератор
Включено 50 мс и отключено в течение 50 мс.
SP6
50 мс Реле-генератор
Включено 25 мс и отключено в течение 25 мс.
SP7
Чередующееся сканирование
Включается через один скан-цикл контроллера.
Реле состояния процессора
SP11
Принудительный рабочий режим
Включено всегда, когда переключатель режимов ЦПУ находится в положении RUN (Работа).
SP12
Терминальный рабочий режим
Включено, когда переключатель режимов находится в положении TERM, а ЦПУ находится в режиме RUN.
SP13
Режим работы теста
Включено, когда ЦПУ находится в режиме Test RUN.
SP15
Режим останова теста
Включено, когда ЦПУ находится в режиме Test STOP.
SP16
Терминальный программный режим
Включено, когда переключатель находится в положении TERM, а ЦПУ находится в режиме PGM.
SP17
Реле принудительного останова
Включено всегда, когда переключатель режимов ЦПУ находится в положении STOP.
SP20
Реле останова
Включено, когда выполнена команда STOP.
SP22
Разрешение прерывания
Включено, когда прерывание разрешено командой ENI.
Реле контроля работы системы
SP36
Реле сигнализации подмены
Включено, когда используется функция форсирования переменных (Подмена реальных значений X / Y)
SP37
Ошибка времени цикла
Включено, если реальное время цикла превышает заданное.
SP40
Критическая ошибка
Включено, когда возникает критическая ошибка –Fatal Error
SP41
Предупреждение
Включено, когда возникает некритическая ошибка,
SP42
Диагностическая ошибка
Включено, при возникновении диагностической/системной ошибки
SP43
Низкое напряжение батареи
Включено, когда напряжение батареи ЦПУ мало.
SP44
Ошибка программной памяти
Включено, когда возникает ошибка памяти, например, ошибка четности памяти.
SP45
Ошибка Ввода/Вывода
Включено, когда возникает ошибка Ввода/Вывода
SP46
Ошибка Связи
Включено, когда возникает ошибка связи на любом порту ЦПУ.
SP50
Неправильная команда
Включено при выполнении неправильной команды. (Fault
Instruction)
SP51
Истечение времени сторожевого таймера
Включено, когда время сторожевого таймера ЦПУ истекло.
(Watch Dog Timeout)
SP52
Грамматическая ошибка
Включено, когда обнаружена грамматическая ошибка при работе ЦПУ или при проверке синтаксиса. В V7755 хранится код ошибки
SP53
Логическая ошибка
Включено, когда ЦПУ не может выполнить логику.
SP54
Ошибка связи
Включено, если команды RX,WX выполняются с неправильными параметрами.
SP56
Ошибка табличной команды
Включено, если табличная команда использует указатель, а значение указателя вышло за пределы таблицы.
SP60
Значение меньше, чем
Включено, когда значение в Аккумуляторе меньше, чем значение переменной в команде.
SP61
Значение равно
Включено, когда значение в Аккумуляторе равно значению в команде
SP62
Больше, чем
Включеноо, когда значение в Аккумуляторе больше, чем значение в команде.
Специальные реле контроллера DL06
Основы программирования на языке RLL
ПЛКСистемы 2009
26
SP63
Нуль
Включено, когда результат выполнения команды равен нулю
SP64
Заимствование половинной длины
Включено, когда команда 16-битового вычитания приводит к заимствованию.
SP65
Заимствование
Включено, когда команда 32-битового вычитания приводит к заимствованию.
SP66
Перенос половинной длины
Включено, когда команда 16-битового сложения приводит к переносу.
SP67
Перенос
Включено, если команда 32-битового сложения приводит к переносу.
SP70
Знак
Включено, когда значение в Аккумуляторе становится отрицательным.
SP71
Ошибка назначения указателя
Включено, когда указателем (P) определена неправильная ячейка V-памяти.
SP73
Переполнение
Включено при переполнении Аккумулятора, или если сложение/вычитание со знаком приводит к неправильному биту знака.
SP75
Ошибка в данных
Включено, если число не в формате BCD.
SP76
Загрузка нуля
Включено, когда команда загружает в Аккумулятор значение нуль.
Реле-защелка импульсов высокоскоростного ввода/ вывода
SP100
X0 включено
X0 - включается на 1 скан, после прохождения импульса
SP101
X1 включено
X1 - включается на 1 скан, после прохождения импульса
Реле выходных импульсов высокоскоростного ввода/вывода
SP104
Профиль завершен
Включено, когда профиль импульсов завершен (Режим 30).
Реле контроля работы коммуникационного порта 2
SP116
Порт 2 ЦПУ занят
Включено, когда порт 2 назначен мастером и посылает данные
SP117
Порт 2. Ошибка Связи
Включено, когда порт 2 назначен мастером и есть ошибка связи.
Реле контроля коммуникационных модулей в слотах расширения
SP120
Слот 1 занят
H0-ECOM / D0-DCM порт2
SP121
Слот 1 - ошибка
H0-ECOM / D0-DCM порт2
SP122
Слот 2 занят
H0-ECOM / D0-DCM порт2
SP123
Слот 2 - ошибка
H0-ECOM / D0-DCM порт2
SP124
Слот 3 занят
H0-ECOM / D0-DCM порт2
SP125
Слот 3 - ошибка
H0-ECOM / D0-DCM порт2
SP126
Слот 4 занят
H0-ECOM / D0-DCM порт2
SP127
Слот 4 - ошибка
H0-ECOM / D0-DCM порт2
Специальные реле привязанные к слотам расширения для использование различными модулями
SP140-237
Слот 1
SP реле для модулей расширения
SP240-337
Слот 2
SP реле для модулей расширения
SP340-437
Слот 3
SP реле для модулей расширения
SP440-537
Слот 4
SP реле для модулей расширения
Реле равенства для уставок высокоскоростного ввода/вывода в режиме 10
SP540 ­SP617
Текущее = заданному значению
Включено, когда текущее значение высокоскоростного счетчика 1 и 2 (режим 10) равно значениям в ячейках V3640 - V3766,
Основы программирования на RLL
ПЛК Системы 2004
27
Процессоры
Версии DirectSoft
DirectSoft (16-ти битовая версия)
DirectSoft32
DirectSoft5
DirectSoft6
v1.12i
v2.0
v2.1
v2.2
v2.3
v2.4
v3.0
v4.0
v5.0/5.1
V6.0
DL05
- - - - - + + + +
+
DL06
- - - - - - - + +
+
DL130
- + + + + + + + +
+
DL230/240
+ + + + + + + + +
+
DL250
- - + + + + + + +
+
DL250-1
- - * * * * * + +
+
DL260
- - - - - - - + +
+
TI325 /330/335
+ + + + + + + + +
+
DL330/330P/340
+ + + + + + + + +
+
DL350
- - - + + + + + +
+
TI425/ TI435
+ + + + + + + + +
+
DL430/440
+ + + + + + + + +
+
DL450
- + + + + + + + +
+
Начало работы с пакетом программирования DirectSOFT
Версии DirectSOFT
Основной способ программирования контроллеров - при помощи пакета программирования под Windows –
DirectSOFT. Существуют 16-ти битовые и 32-х битовые версии пакета.
16-ти битовая версия пакета – DirectSOFT работает на ПК с процессором 486DX (SX), 25 МГц (не хуже) и
не менее 8 Мб ОЗУ под Windows 3.1 или старше, WIN95, WINDOWS NT 3.51 или старше. На ПК должен
быть свободный последовательный порт и цветной монитор. Однако, эта версия не поддерживает работу с
новыми контроллерами и работу контроллеров с новыми модулями. В том числе нельзя программировать
контроллеры DL-06 и процессор DL260 (подробнее в таблице приведенной далее).
32-х битовая версия пакета– DirectSOFT32 (v.3 и v.4) работает на ПК с процессором Pentium/Celeron, 333
МГц (не хуже), не менее 32 Мб ОЗУ и 11 Мб на жестком диске под WINDOWS 98/2000/XP/NT 4.0 или
старше.
DirectSOFT5 работает на ПК с процессором 1 ГГц, с памятью не менее 512 Мб ОЗУ и 20 Мб на жестком
диске под WINDOWS 2000/XP.
Последняя версия DirectSOFT6 работает на ПК с процессором 1 ГГц, с памятью не менее 512 Мб ОЗУ и
50 Мб на жестком диске под под Windows XP (Home and Pro) / Vista (все 32-bit и 64-bit версии) / Windows 7
/ Windows 8/8.1 (Не работает под Windows XP 64-bit, Macintosh, LINUX, UNIX). ПК должен иметь цветной
SVGA монитор 1024 x 768, CD/DVD (или соединение с Internet) и, по крайней мере, один
последовательный порт RS232 (или USB с адаптером USB-RS232).
* - Частично совместимы. Локальное расширение ввода/вывода ЦПУ 250-1 не будет видно в
 - Возможность использования макросов - i-Box и др.
Direct
Soft.
Основы программирования на языке RLL
ПЛКСистемы 2009
28
Контроллер
Кабель
Компьютер
Разъем RJ12
(6P6C - вилка)
Разъем DB-9F
(мама)
1
Tx D 4
2
Rx D
Rx D 3
3
Tx D
4
GND 1
5
6
7
RTS
8
CTS
9
Модификации поставляемых пакетов DirectSOFT6
Пакет программирования DirectSOFT6 поставляется в двух модификациях: полнофункциональный пакет для всех типов контроллеров PC-DSOFT6 - и свободнораспространяемая версия PC-DS100 с ограничением на максимальную длину создаваемой и загружаемой в контроллер программы – 100 слов RLL. Кроме того, Вы не сможете открыть проект с программой более 100 слов. Вы можете создать
программу любой длины и сохранить ее на диске, но не можете ее вновь открыть или загрузить в
контроллер. Поставка производится на компакт-диске и для установки требует введения пароля (password). При установке без пароля пакет работает в демо-режиме.
Кабель для связи DirectSOFT c контроллером
Для программирования контроллеров необходимо либо приобрести соответствующий программный
кабель (D2-DSCBL, D2-DSCBL-1, D3-DSCBL, D4-DSCBL) либо изготовить самостоятельно по схеме
приведенной ниже. Для работы с контроллерами DL405 удобно использовать универсальный набор
переходников: FA-CABKIT.
Схема кабеля для программирования контроллеров DL05/L06, DL105, DL205, DL405-порт 2
Запуск DirectSOFT6 - DSLaunch
Инсталляция пакета производится по указаниям появляющимся при установке компакт-диска c DirectSOFT.
на Ваш компьютер.
После инсталляции пакета на рабочем столе появляется пиктограмма «DS6Launch». Щелкнув мышкой по этой пиктограмме Вы запускаете программу DirectSOFT. На экране открывается окно запуска, при помощи котророго можно начать производить различные действия по программированию контроллеров DirectLogic, KOYO и некоторых моделей контроллеров TI и GE.
Возможности DirectSOFT гораздо больше, чем у обычного пакета программирования. В пакет встроены утилиты для настройки различных сетевых и специализированных модулей. Постарайтесь подробнее изучить возможности DirectSOFT, его возможности по импорту-экспорту программ, описаний переменных и др. вспомогательным функциям.
Основы программирования на RLL
ПЛК Системы 2004
29
Примечание: Если Вы не хотите использовать автоматическое подключение к Internet, надо отключить функцию DirectSOFT On The Web. Для восстановления надо откорректировать файл DS500.INI: [DSLaunch] OnTheWeb=0 (Заменить 0 to на 1).
Примечание: Direct SOFT5 (версия 5.0) поддерживает работу с последовательными портами СОМ1­СОМ8, а Direct SOFT5 (версии 5.1) / Direct SOFT6 поддерживают работу с последовательными портами СОМ1- СОМ199. Однако, DirectSOFT при установке активизирует только 4 порта. Для активации других портов надо откорректировать файл DS500.INI/ DS600.INI (заменив 0 на 1, или добавив строчку):
[devasync.dll] COMnEnable=1
Программирование
Утилиты
Проекты Соединения с
контроллерами
Окно запуска DirectSOFT при просмотре проектов
Можно начать писать программу в режиме «OFF Line», без соединения с контроллером, выбрав
DirectSOFT Programming. Можно редактировать существующую программу - Project . Можно создать соединение с контроллером для просмотра программы, редактирования в режиме
«ON Line», для загрузки и выгрузки программы, выбрав Comm Links. Кроме того из этого окна производится пуск различных вспомогательных программ для настройки
отдельных видов модулей и запуска DDE/OPC сервера ввода вывода. При запуске программы DSLaunch производится проверка версии DirectSOFT и производится
обновление (если контроллер подключен к Internet)
Для подключения к контроллеру и работе в режиме «On-line» необходимо создать и настроить логическую связь: Для этого надо щелкнуть правой кнопкой мышки на Папку Comm Links в левом нижнем углу окна DSLaunch и выбрать Add (добавить). И далее, выбрав Link Editor или Next произвести настройку в соответствии с Вашей конфигурацией. Для работы по последовательному порту связаномму с программным портом контроллера выбирайте настройки по умолчанию (9600, Odd,
8, 1,None).
Основы программирования на языке RLL
ПЛКСистемы 2009
30
Виды представления программы
В пакете предусмотрено использование отображения программы в трех видах и одновременный просмотр
вспомогательных таблиц и окон. Возможно одновременно работать с несколькими проектами
(программами).
Первоначальную раскладку окон DirectSOFT5 можно изменять, используя функции меню Window.
При работе со множеством окон удобно использовать Закладки.
Существующая или разрабатываемая программа может быть представлена в графическом виде – Релейной логики (Ladder View) или Мнемоническом (Mnemonic View). Если при написании программы использовался Язык Стадий –RLL ниспадающем меню в пункте View основного меню. Окно Stage View состоит из двух частей-окна стадий и окна релейной логики Ladder View.
PLUS
, то можно использовать – Stage View. Выбор осуществляется в
Основное меню
DirectSOFT
X-ref View
Закладка Mnemonic View
Stage View
Ladder View
Data View
Основные виды представления программы и вспомогательных окон
Основы программирования на RLL
ПЛК Системы 2004
31
Окно редактирования программы
DirectSOFT позволяет редактировать программу в режимах: ON-Line, OFF-Line и Debug(Отладка).
Включение режима редактирования может производится из основного меню: пункт Edit > Edit Mode, при
этом Ladder View должно быть активным окном; нfжатием на кнопку в правом углу - Edit Mode или Ctrl + E.
При первом запуске программы используется стандарный набор и раскладка открытых окон. Это показано
на рисунке выше (выбрана закладка Stage View). Пользователь может полностью перестроить все по
своему желанию.
В правой части окна появится Палитра элементов языка RLL/RLL
При работе на языке стадий, ввод стадий и редактирование может производится при активном нижней
части окна Stage View. Верхнее окно Stage View заполняется автоматически после окончания ввода и
компиляции программы (после нажатия на функциональную клавишу F8, или Edit > Accept).
Если Вы начинаете писать новую программу (проект), то при открытии окна Ladder View Вы увидите Power
Rail - Шину питания и ряд заготовок цепей (Rungs) заканчивающихся неисполняемыми командами
(NOP). Нулевая шина на экране не появляется, она подразумевается.
plus
(Ladder Palette).
Цепи пронумерованы и каждой цепи можно написать комментарий при помощи Tools > Соmment Editor
или просто щелкнуть мышкой на месте коментария в Ladder View.
Цифры у начала цепи могут соответствовать номеру цепи или адресу элеметов RLL
(Изменении способа адресации производится в меню View > Options).
Ввод элементов языка программы производится установкой курсора в нужном месте, выбором нужного
элемента из Палитры и привязки элемента к переменным . Если после привязки элемента сразу нажать
клавиши Crtl+D или выбрать в меню Tools > Document Editor, то этой переменной можно присвоить
Логическое имя –Nickname.
Шина питания
Цепь – (Rung) номер 1
Элемент с Системным и Логическим именем
Ladder View
Палитра элементов –
Ladder Palette
Строка состояния
Окно редактирования программы
Основы программирования на языке RLL
ПЛКСистемы 2009
32
На самой нижней строчке окна DirectSOFT в левой части отображаются назначения кнопок управления
меню DirectSOFT, на которых останавливается курсор. В центре отображатся состояние связи с
контроллером, логическое имя связи и режим работы контроллера (только при редактировании в режиме
ON-Line).
В правом углу представлены цифры размера текущей программы / общего объема памяти; тип
контроллера/процессора; координаты курсора: номер Цепи, номер элемента,тип элемента. При изменении
способа адресации в меню View > Options или по кнопке Opts, соответственно, изменится показания
координат курсора.
При помощи меню Options Вы можете также настроить экран, как Вам нравится, в том числе, можно
изменить графическое представление программы в виде объемных линий - 3D на обычное- черные линии
на белом фоне. Этим не исчерпываются возможности настройки экранов DirectSOFT.
Пример программирования ПЛК с помощью DirectSOFT.
На примере простейшей программы управления электродвигателем при помощи кнопок Пуск и Стоп можно
освоить основные операции по работе с DirectSOFT.
Целесообразно начинать изучение программирования контроллеров в режиме ON-Line ( с
подсоединенным контроллером).
Вкратце, последовательность действий такова:
Соединяем программный порт контроллера с выбранным RS232 портом компьютера. Запускаем программу DSLaunch. Создаем связь с контроллером. Кликнув правой кнопкой мышки на Comm Links, выбираем Add
(Добавить) и далее, используя Link Editor или Link Wizard, настраиваем параметры связи: номер порта
компьютера, тип Вашего контроллера, протокол – K Sequence , адрес -1 и параметры порта: 9600, Odd,
8, 1, None (Flow Control – без использования RTS/CTS).После нажатия кнопки Accept или Finish,
созданная Вами связь появится в директории Comm Links в виде символа окрашенного в зеленый цвет
с надписью.
Двойной клик левой кнопкой мышки по обозначению созданной связи активизирует связь. Из контролера
будет считана вся информация и отбражена на окне DirectSOFT Programming. Все готово к началу
программирования в режиме ON-Line
Если в контроллере была программа, небходимо очистить память контроллера : PLC > Clear PLC
Memory > All. Кроме того, целесообразно, очистить память ОЗУ, котороая используется ЦПУ для
хранения настроек (параметры настройки портов, диапазоны сохраняемой памяти и др.: PLC > SetUp >
Initialize Scratch Pad.
Перед началом ,собственно, программирования присвоим переменным логические имена, используя
инструмент Tools > Documentation Editor.
В этом диалоговом
окне Вы можете
назначить Логические
имена – Nickname
всем элементам
памяти ПЛК
:регистрам входов и выходов, ячейкам памяти, таймерам, счетчикам и т.д..Можно заполнить поля: Wiring
Основы программирования на RLL
ПЛК Системы 2004
33
Info (Подключение) и Description (Описание), содержание которых будет отражаться на поле
программы. Нажимая кнопку >R, переходим к редактированию Y-регистров.
К каждой цепи можно создать Комментарий: Tools > Comment Editor. .Возвращаемся в Ladder View, включаем режим редактирования - Edit Mode (курсор станет полностью
черным и палитра с элементами будет отчетливо
видна). В этом положении курсора выбираем
нужный тип контакта – НО. Затем дважды кликнув
левой кнопкой мышки на окошко выбора
переменной во всплывшем окне Element Brauser
находим нужное логическое имя.
Далее перемещаем курсор в
соседнее поле и выбираем НЗ
контакт с переменной Кнопка Стоп.
Для создании цепи с блок
контактом,надо вернуть курсор на
место Кнопка Стоп и нажать
комбинацию клавиш Ctrl+ Стрелка
Вниз. У левой сторона\ы курсора
будет нарисована линия вниз, а
расстояние между цепями
увеличится и можно будет вставить
блок контакт.
Чтобы вставить нужную обмотку управления
пускателем мотора, на палитре выберем пиктограмму
Coi l- Обмотки . В окне Instruction Browser выбираем
Класс –Standart Coil > Out (Вывод).
Не забудьте вставить в конце Coil с безусловной
командой END.
Основы программирования на языке RLL
ПЛКСистемы 2009
34
Окончательный вид «нарисованной» программы приведен на рисунке внизу. Теперь можно нажать кнопку
Accept – графика будет считана и откомпилирована, в ОЗУ будут созданы все файлы программы и
проекта. В левой части поля
редактирования появятся две цветные
полосы - напоминание о том , что
программа не сохранен ни в контроллере,
ни на диске.
Запишем программу в контроллер, нажав
на соответствующую пиктограмму
основного меню, или File > Writre
Program > To PLC.
Переводим контроллер в режим RUN-
Работа. Это можно сделать разными способами в DirectSOFT и переключателем на контроллере.
Например кликнем по надписи Program в нижней части экрана.
Имитируя входы, можно наблюдать за выполнением программы. Для наблюдения и отладки программ
можно использовать, также, режим Debug > Status –состояния контактов будут отражаться цветом. В
режиме Debug > Data View > New – можно создать и сохранить отладочные окна для просмотра
состояния переменных. Если в окне Data View нажать желтую кнопку Е! , то можно будет оперативно
изменять значения параметров. ( А если предварительно в меню View > Options > Data View > Bit
Display Settings поставить галочку в окошке Override Bit, то можно будет отлаживать программу,
принудительно присваивая произвольные значения регистрам отображения физических входов/выходов).
Мнемонический вид откомпилированной програмыы можно увидеть: View > Mnemonic View.
Просмотр доступных элементов языка программирования
Нажимая на функциональные клавиши F4, F5, F7 или соответствующие кнопки Палитры, Вы можете
просмотреть все доступные для данного контроллера элементы языка RLL/RLL
plus
: Контакты (Contacts),
Обмотки реле (Coils) и Функциональные блоки (Box).
Нажимая функциональную клавишу F9 или кнопку меню Browz, Вы можете просмотреть все доступные для
программы внутренние и внешние переменные.
Немного о технике «рисования» программы
Используя уже описанные возможности DirectSOFT можно создать реальную программу, как мы это и
сделали ранее. Теперь расширим наши познания и возможности.
Для рисования линий связи между элементами надо использовать комбинацию клавиши Ctrl с
соответствующей стрелкой на клавиатуре компьютера. Горизонтальные линии будут нарисованы по центру
курсора (черного прямоугольника), а вертикальные вдоль левой стороны курсора.
Для того чтобы вставить дополнительную цепь (rung) между существующими надо использовать опции
основного меню Edit > Insert > How many rung (Сколько цепей?).или клавишу клавиатуры Insert .
Для выделения цепи или нескольких цепей используйте комбинации клавиш: Shift + Стрелки. Для
копирования выделенного фрагмента: Ctrl+C : и вставления: Ctrl+V или надо пользоваться функциями
основного меню Edit > Select, Copy, Paste. Эти действия могут производится только после компиляции
программы.
Основы программирования на RLL
ПЛК Системы 2004
35
Компилирование программы
Для других более сложных действий по редактированию программы (копированию, вставке кусков
программы и др.) предварительно программу надо откомпиллировать или акцептировать. Это можно
сделать нажатием функциональной клавиши F8 или выбрав в меню Edit > Accept.
Большинство функций DirectSOFT имеет несколько способов доступа: из меню, по выделенным кнопкам на
экране DirectSOFT и по комбинации «горячих» клавиш. В текстах меню и в подсказках приведены описания
этих клавиш.
Состояния и файлы программы и проекта. Сохранение файлов.
При создании и редактировании программы с подключенным контроллером (в режиме ON-Line) нужно
внимательно манипулировать программой на экране и правильно сохранять ее.
Программа на экране может отображать программу считанную с контроллера или считанную с диска.
И ее нужно своевременно копировать - сохранять на диске и в контроллере.
Программа может иметь только графический вид, пока не прошел этап компиляции.
Программа с полном объемом данных и коментариев называется в DirectSOFT – Проект (Project).
Комплект файлов образующих проект может состоять из более чем 20 файлов с расширениями:
*.prj - Ladder program – текст программы релейной логики *.vd - V-memory data – данные в V-памяти переременных *.vf - V-memory editor format - формат редактора V-памяти *.tls - PLC parameters, I/O configuration, pause bits – параметры настройки контроллера (setup) *.esd - Element documentation (nickname, wiring info, description) – описания элементов *.esx - Index for element documentation – индексный файл к описаниям элементов *.lda - Maps rung comments to rung numbers – соответствие комментариев и номера цепи *.lcd - Ladder comment data – комментарии к цепям *.lcx - Ladder comment index - индексный файл к комментариям цепей *.ldo - Online only, maps rung comments to rung numbers – временный файл *.scd - Stage comment data – комментарии к стадиям *.scx - Stage comment index - индексный файл к комментариям стадий *.wsp - DirectSoft window layout – размещение окон DirectSoft *.xml - Docking screen coordinates – координаты окон DirectSoft *.rd - 305 R-memory data – содержание R-памяти DL305 *.rf - 305 R-memory data editor format – формат данных R-памяти DL305 *.prt - Print layout config – настройка файла печати *.dv - DV1000 setup – настройки панели оператора DV1000 *.pid - PID documentation – настройки ПИД-контуров *.inf - Project information – описание проекта. *.dta - Data view - отладочные окна *.erm - Ethernet remote master config – настройка модуля ERM *.cwb - Counter I/O configuration - настройки вв/вывода счетчика *.csv -Comma-separated variable - данные разделенные запятой *.txt - Text file - текстовый файл
Не все файлы обязательны в конкретном проекте. Если не использутся какие-то функции и настройки, то
не создаются соответствующие типы файлов.
При копировании проекта средствами Microsoft, надо копировать файлы с именем проекта и
всеми расширениями.
В DirectSOFT параллельно существуют два понятия: программа и проект. Оперативные действия по
корректировке и последующей загрузке/выгрузке/сохранению программы производятся при помощи
специальных кнопок Панели инструментов(ToolBar) или при помощи основного меню File> Read Program
или Write Program > PLC или Disk. В DirectSoft32 v4.0 Build 22 и старше есть горячие клавиши:
Основы программирования на языке RLL
ПЛКСистемы 2009
36
(Ctrl+F12) - Read Only the Program from Disk – Чтение только программы с диска (Shift+F12) - Write Only the Program to Disk – Запись только программы на диск (Ctrl+F9) - Read Only the Program from PLC – Чтение только программы из контроллера (Shift+F9) - Write Only the Program to PLC – Запись только программы в контроллер
Для сохранения всего проекта (всех файлов) надо пользоваться функциями основного меню File> Save
Project > PLC или Disk; а также Save Project As.
В DirectSOFT предусмотрена по умолчанию функция AutoSave. Каждый раз, когда Вы сохраняете только
программу на диск (Save Program to Disk) создается резервная копия всего проекта в директории:
DirectSOFT / Projects / Backup / AutoSave. По умолчанию в этом месте хранятся 4 последние копии
проекта.Вы можете изменить число копий. Для этого надо откорректировать файл DS600.INI: в группе
[PATHS] MaxAutoBackups =4 (Заменить 4 на нужное число).
Примечание:. Если заменить 4 на 0 число сохраняемых копий будет бесконечно.
Когда Вы создаете сами резервную копию проекта: File->Backup Project, эта «активная» копия сохраняется
в директории Projects\Backup.
Примечание:. Никогда не открывайте резервные копии проекта из их директорий. Скопируйте проект в другое место. Иначе создастся мешанина из разных копий проекта.
Основы программирования на RLL
ПЛК Системы 2004
37
Функции меню
DirectSOFT
Файлы и сохраняемые данные
File > Save Project to Disk
File > Save Project to PLC
File > Backup Project File > Write Program to Disk
File > Write Program to PLC
File > Import > Program
Сохраняемые
данные
Ladder Program - Программа релейной логики V-memory Data - Данные в V-памяти
+ + + + + + + + + + + + System V-memory (1) - Системная область V-памяти Pause Bit Settings - Настройки битов паузы
+ + + + + + + + I/O Configuration - Конфигурация ввода/вывода Timer/Counter Accumulator Memory (4) - Память таймеров, счетчиков
+
(3) + +
Ladder Rung Comments (2) - Комментарии к цепям Element Documentation (2) - Документация к элементам
+ +
+ + + + + + (6) (6)
Stage Comments (2) - Комментарии к стадиям PLC Parameters (e.g. PLC type) - Настройки ПЛК ( в том числе, тип)
+ +
+ + + + +
(6)
V-memory Editor Format - Формат редактора V-памяти DirectSOFT Window Layout - Раскладка окон DirectSOFT
+ +
+ + + +
Используемые
файлы
.PRJ = Ladder program - Программа релейной логики .VD = V-memory data - Данные в V-памяти
+ + (5) + + + +
+ +
.VF = V-memory editor format - Формат редактора V-памяти .TLS = PLC parameters, I/O config., pause bits -Настройки ПЛК, вв/вывода…
+ +
+ + + +
.ESD = Element documentation - Документация к элементам .ESX = Index for element documentation - Индекс к документации элементов
+ +
+ + + +
.LDA = Maps rung comments - Размещение комментариев к цепям .LCD = Ladder comment data - Комментарии к цепям
+ +
+ + + + + +
.LCX = Index for ladder comments – Индекс комментариев к цепям .LDO = Online only, temporary - Временный файл
+ +
+ + + + + +
.SCD = Stage comments - Комментарии к стадиям .SCX = Intex for stage comments – Индекс комментариев к стадиям
+ +
+ + + + + +
.WSP = DirectSOFT window layout - Раскладка окон DirectSOFT .XML = Docking screen coordinates - Закрепление окон DirectSOFT
+ +
+ + + + +
+ +
.RD = 305 R-data - Данные R-памяти контроллеров DL305 .RF = 305 R- data editor format - Формат редактора данных R-памяти DL305
+ +
+ + + +
.PRT = Print layout config - Настройки печати программы .DV = DV1000 setup - Настройка DV1000
+ +
+ + + +
.PID = PID documentation (2) - Документация на ПИД контуры .INF = Project information - Информация по проекту
+ +
+ + + +
.DTA = Data view - Отладочные окна .ERM = Ethernet remote master config – Настройка модуля ERM
.CWB = Counter I/O configuration - Настройки вв/вывода счетчика .CSV = Comma-separated variable - Данные разделенные запятой .TXT = Text file - Текстовый файл
+
Подробности сохранения отдельных файлов в контроллере и в проекте приведены в таблице расположенной ниже.
Примечания:
(1) - Системная V-memory содержит множество настроек, но НЕ СОХРАНЯЕТ НИ пароль
НИ настройки коммуникационных портов, НИ настройки сторожевого таймера (Watchdog).
(2) - Сохраняются немедленно при редактировании. (3) – Если использована Ручная конфигурация. (4) – Значения никогда автоматически не записываются. Чтобы записать вручную (в файл или ПЛК), Вы
должны использовать Редактор памяти - Memory Editor
(5) -. Пользовательская V-memory из файла .VD (но не весь файл) записыватся в ПЛК.
(6) - По выбору пользователю-
Основы программирования на языке RLL
ПЛКСистемы 2009
38
Основы программирования на RLL
В этой главе изложены основы программирования на языке релейной логики RLL, встроенном в
операционную систему DL06. Здесь нет детального описания команд, но показаны приемы использования
основных элементов языка (подробное описание команд приводится в руководствах на соответствующий тип контроллера). Описание интеллектуальных команд I-BOX приведено в отдельном руководстве для каждого типа контроллеров.
Язык RLL допускает два основных способа представления и написания программ:
мнемонический и графический.
При использовании ручного программатора (D2-HPP) доступен только первый способ. Пакет Программирования DirectSOFT позволяет писать программы только графически, но, при этом,
создает и позволяет просматривать их мнемонический эквивалент для использования его при
корректировке программы при помощи ручного программатора.
Команды мнемоники Вид на экране DirectSOFT
STR X0 OR C0 ANDN X1 OUT Y0 STRN C100 LD K10 STRN C101 OUT V2002 STRN C102 LD K50 STRN C103 OUT V0006 STR X5 ANDN X10 OUT Y3 END
Выше показан достаточно простой пример программы на RLL, из которого однако понятно, почему этот
язык называют Релейной Лестничной Логикой (Relay Ladder Logic - RLL) - графическое представление программы напоминает лестницу, а программирование - сборку релейно контактных цепей.
Все программы на RLL состоят из цепей или ступеней (Rung), каждая цепь - из условной и исполняемой частей. В показанном примере условные части цепей занимают левую половину графики, а исполняемые ­правую. Мнемоническая запись этой программы представлена слева от релейной логики.
Логические операции - это все, что нужно для создания программного эквивалента релейно контактных цепей. DirectSOFT позволяет конструировать их из графических символов - контактов и обмоток реле.
Основы программирования на RLL
ПЛК Системы 2004
39
Оператор END
Любая программа должна заканчиваться операцией END. Ни одна команда,
записанная после END не будет обрабатываться, если только она не принадлежит
подпрограмме и на нее есть передача управления из основной программы..Графически оператор END представляется обмоткой реле, непосредственно соединенной с шиной питания - это одна из немногих «безусловных» команд.
Простая цепь,
нормально
разомкнутый
контакт
Простая цепь (Rung) состоит из условной и исполнительноой части. Обычно условную
часть цепи начинает контакт реле. Простейшая цепь нашего примера состоит из
нормально разомкнутого контакта Реле Х0, подающего питание на обмотку Реле Y0.
Условная часть состоит из единственной команды STR. Состояние входного Реле Х0 передается выходному Y0 командой OUT:
Простая цепь, нормально замкнутый
контакт
Нормально замкнутый контакт реле также часто начинает цепь. Если нужно добиться срабатывания выходного Реле Y0, при отпускании входного Х0, то условная часть
простой цепи должна состоять из команды STRN, а исполнительная - из команды
OUT:
Последователь­ные контакты
Команда AND (И) последовательно соединяет два (или более) контакта. Например, обмотка Реле Y0 будет «под током», когда «включены»оба Реле - X0 и X1:
Выходы c промежуточных точек условной цепи
Иногда необходимо «подать питание» на какие-либо исполнительные реле с промежуточных точек условной логической цепи контактов. Следующий пример показывает, как это можно сделать, используя команду AND. Реле Y0 срабатывает, как в предыдущем примере; Реле Y1 - когда вдобавок сработает Реле Х2, а Реле Y2 - когда сработает еще Реле Х3.
Мнемоника STR X0 AND X1 OUT Y0 END
Мнемоника STRN X0 OUT Y0 END
Мнемоника
STR X0 X0
Y0
OUT
END
X0
Y0
OUT
END
X0
Y0
OUT
END
X0
Y0
OUT
END
Х1
Следующий раздел посвящен технологии сборки логических цепей, которая похожа на проектирование
релейно-контактных схем, из-за чего часто будут употребляться термины «подача питания» или «соединение с шиной питания» и т.п.
Логические команды
Основы программирования на языке RLL
ПЛКСистемы 2009
40
Параллельные
элементы
Команда OR (Или) соединяет контакты условной части цепи параллельно. В следующем примере Реле Y0 сработает, если "под током" хотя бы одно из Реле - X0,
X1.
Параллельное соединение
последователь­ных цепей
Команда ORSTR позволяет параллельно соединять несколько последовательных
цепей. На следующем примере показано параллельное соединение двух
последовательных цепей: Х0-Х1 и Х2-Х3.
Последователь-
ное соединение параллельных
цепей
Если необходимо последовательно соединить несколько параллельных цепей, то эту
операцию позволяет сделать команда ANDSTR. Ниже показано последовательное соединение контакта реле Х0 и параллельно соединенных контактов реле Х1 и Х2.
RLL допускает достаточно сложные комбинации последовательных и параллельных релейно-контактных соединений в условной части цепи.
Мнемоника
STR X0 AND X1 STR X2 AND X3 ORSTR OUT Y0 END
Мнемоника
STR X0 STR X1 OR X2 ANDSTR OUT Y0 END
Мнемоника
STR X0
AND X1
OUT Y0
AND X2
OUT Y1
AND X3
OUT Y2
END
Мнемоника
STR X0
OR X1
OUT Y0
END
X0
Y0
OUT
END
Х1
Y1
OUT
Y2
OUT
Х2
Х3
X0 X1
END
Y0
OUT
X0
Y0
OUT
END
Х1
X2
X3
X0
Y0
OUT
END
Х1
X2
Основы программирования на RLL
ПЛК Системы 2004
41
Логический стек
Логический или булевый стек - это 8-битовый регистр сдвига, бит n (n=1,2,3...8) которого образует n-ный уровень логического стека. Бит 1 этого регистра является вершиной логического стека, а бит 8 - дном. Все условные логические команды служат для изменения состояния логического стека.
С этим устройством логического стека связано ограничение на число элементов, включаемых в условную часть логической цепи.
Все логические команды одним из операндов берут содержимое вершины логического стека, помещая результат также на вершину стека. Второй операнд либо явно указан в команде,
либо берется из второго уровня логического стека.
В предыдущих параграфах мы рассмотрели 4 пары логических команд DL06:
1 2 3 4 STR r
OR r
AND r
ORSTR
STRN r
ORN r
ANDN r
ANDSTR
Как видно из таблицы, первые три пары логических команд имеют в качестве второго операнда состояние Реле r, которое участвует в операции прямо или инверсно (в последнем случае обозначение команды имеет суффикс N).
STR STRN
Первая пара логических команд STR/STRN r загружает на вершину логического стека прямое/инверсное состояние Реле r. При этом прежнее содержимое вершины стека (1-й уровень) "вытесняется" на 2-й уровень, а прежнее содержимое этого уровня - на 3-й, и т.д. "Вытесненное" содержимое 8-го уровня ("дно" стека) теряется.
Другими словами, команды STR r и STRN r «проталкивают» в логический стек прямое или
инверсное состояние Реле r.
OR ORN AND ANDN
Логические команды OR/ORN r или AND/ANDN r производят логическое сложение (OR) или
логическое умножение (AND) содержимого вершины логического стека с прямым/
инверсным состоянием Реле r. Результат помещается на вершину логического стека, содержимое остальных его уровней не изменяется.
ORSTR ANDSTR
В логических командах ORSTR/ANDSTR операнды не указываются. Эти команды сначала производят «выталкивание» стека - перемещение содержимого n-ного (n=2,3...8) уровня логического стека на уровень n-1 («дно» стека обнуляется). «Вытолкнутое» содержимое
вершины логического стека логически складывается/умножается с новым ее содержимым,
поступившим со 2-го уровня, и результат остается на вершине стека.
Основы программирования на языке RLL
ПЛКСистемы 2009
42
Команда
Уровень
Содержимое уровня после выполнения команды
STR X0
1 (вершина)
X0
... -
8 (дно)
-
STR X1
1 (вершина)
X1
2
X0
... -
8 (дно)
-
STR X2
1 (вершина)
X2
2
X1
3
X0
... -
8 (дно)
-
AND X3
1 (вершина)
X2 AND X3
2
X1
3
X0
... -
8 (дно)
-
ORSTR
1 (вершина)
( X2 AND X3 ) OR X1
2
X0
... -
8 (дно)
-
AND X4
1 (вершина)
( ( X2 AND X3 ) OR X1 ) AND X4
2
X0
... -
8 (дно)
-
ORN X5
1 (вершина)
( ( ( X2 AND X3 ) OR X1 ) AND X4 ) OR ( NOT X5 )
2
X0
... -
8 (дно)
-
ANDSTR
1 (вершина)
( ( ( ( X2 AND X3 )OR X1 ) AND X4 )OR ( NOT X5 ) ) AND X0
... -
8 (дно)
-
OUT Y0
Содержимое вершины логического стека копируется в Реле Y0.
Из примера видно, каким образом продвигаются данные в логическом стеке. Хотя логическая цепь
контактов реле Х была достаточно сложной, «проталкивание» в логический стек «достало» только до 3-
го уровня. Понятно, что переполнение этого стека возможно только при очень сложной логической цепи,
насыщенной последовательно-параллельными ветвями.
X0
X1
Y0
OUT
X3
X4
X5
X2
Выход
ANDSTR
AND
ORSTR
AND
OR
STR
STR
STR
Работу логического стека поясняет следующий пример:
STR X0 STR X1 STR X2 AND X3 ORSTR AND X4 ORN X5 ANDSTR OUT Y0
Основы программирования на RLL
ПЛК Системы 2004
43
Команды изменения состояний реле
Прежде чем рассматривать команды, изменяющие состояния реле, подчеркнем, что их выполнение
зависит от состояния, которое к моменту выполнения имеет логический стек, в частности его вершина, а
также от некоторых других условий, например от активности последнего встретившегося мастер-реле или стадии, в которой находится команда («наличия напряжения на шине питания»). В таблице приведен список команд управления реле в DL06:
OUT r
OROUT r
PD r
SET r [r’]
RST r [r’]
PAUSE y [y’]
OUT
OROUT
PD
SET RST
PAUSE
y
y’
OUT
Команда OUT r копирует состояние вершины логического стека в Реле r. В неактивной стадии, что эквивалентно обнулению вершины логического стека, команда OUT r приводит к сбросу Реле r.
OROUT
Команда OROUT r специально спроектирована для использования в нескольких цепях программы и позволяет сделать состояние Обмотки Реле r зависимым от нескольких цепей так, как-будто их условная логика соединена в параллельные ветви. Команда
производит логическое сложение состояний Реле r и вершины логического стека, а
результат помещает в Реле r.
Взаимодействие команды OROUT r с другими командами, изменяющими состояние того же Реле
r, весьма сложно, поэтому мы не рекомендуем злоупотреблять ею.
PD
Команда PD r взведет Реле r, если состояние вершины логического стека в момент
выполнения инструкции в текущем Рабочем цикле равно «1», а в предыдущем было равно
«0». В начале следующего цикла команда автоматически сбросит Реле r. Эту команду называют иногда One-Shot Reley-Одноимпульсная обмотка реле.
SET RST
Команды SET r [r’] и RST r [r’] переводят реле r [или группу реле от r до r’] в состояние «1»
или «0» соответственно, если состояние вершины логического стека в момент выполнения
команды равно «1»; иначе состояние указанных реле не меняется.
PAUSE
Команда PAUSE y [y’] останавливает вывод из реле y [или из группы реле от y до y’] в модули вывода. При наличии PAUSE возможны любые действия над регистром y, результат которых тем не менее не изменит пассивного состояния соответствующего выхода в модуле вывода.
Команда Инверсии -
NOT
В некоторых операциях требуется изменить состояние вершины логического стека на противоположное, например, чтобы включить одно реле (Y0) и выключить другое (Y1) при
замыкании какой-либо сложной условной логической цепи:
Логическое сравнение
Команды логического (булевого) сравнения позволяют включить в цепь условий результат сравнения двух 16-разрядных целых чисел в виде контакта реле. Команды сравнения охватывают все возможные соотношения между двумя числами:
Основы программирования на языке RLL
ПЛКСистемы 2009
44
равно
не равно
Больше или равно
меньше
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
STRE Aaaa Bbbb
STRNE Aaaa Bbbb
STR Aaaa Bbbb
STRN Aaaa Bbbb
В таблице показаны графические изображения команд сравнения, которые использует DirectSOFT, а также их мнемонические обозначения. В качестве операндов сравнения (Аааа и Bbbb) могут выступать 16-разрядные целые числа из всех V-
регистров, например, текущие значения Таймеров и Счетчиков. При этом можно использовать либо
прямые ссылки на регистры, либо указатели-пойнтеры (Рррр) на них. В качестве операнда Bbbb может выступать еще шестнадцатиричная константа (Ккккк).
Команды сравнения могут быть дополнены командами, позволяющими соединять указанные контакты
параллельно или последовательно:
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
ORE Aaaa Bbbb
ORNE Aaaa Bbbb
OR Aaaa Bbbb
ORN Aaaa Bbbb
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
A aaa
B bbb
ANDE Aaaa Bbbb
ANDNE Aaaa Bbbb
AND Aaaa Bbbb
ANDN Aaaa Bbbb
Первые четыре команды сравнения (первая таблица) загружают результат сравнения на вершину логического стека, «проталкивая» ее содержимое на уровень 2 и т.д. Последние 4 команды сравнения
помещают результат сравнения на вершину логического стека, не изменяя содержимого остальных
уровней.
В примере, изображенном ниже, реле Y3 сработвает, если реле С5 «под током» и если число из регистра,
HEX-адрес которого в регистре V1400, равно 12cf (HEX).
Y3
OUT
K12сf
Р1400
С5
Заметим, что двоичное (НЕХ) число в регистре V1400, будучи записанным в восьмеричной системе счисления, должно давать допустимый номер V-регистра, иначе сработает специальное реле SP71.
Немедленный ввод/вывод
Цикл обновления ввода/вывода DL06 обычно составляет миллисекунды или десятки миллисекунд. Это время определяется длительностью Рабочего Цикла контроллера, в начале которого система проводит обновление Входов, а после прикладной программы – обновление Выходов. Длительность Рабочего Цикла непостоянна и зависит от многих факторов. Если какие-либо входы/выходы требуют стробирования через строго определенный интервал времени, то обычно применяют прерывание по таймеру (INT O17) и/или команды немедленного ввода и немедленного вывода.
STR C5
ANDE P1400 K12CF
OUT Y3
Основы программирования на RLL
ПЛК Системы 2004
45
Команда немедленного ввода использует результат ввода только в пределах данной
команды, не изменяя состояний соответствующих регистров Х, которые были установлены в начале скан-цикла программы.
Но команда немедленного вывода записывает состояние в модуль вывода и обновляет
соответствующий регистр Y-реле.
Простые Таймеры
Аккумулирующие Таймеры
Медленный вариант
Быстрый вариант
Медленный вариант
Быстрый вариант
TMR
TMRF
TMRA
TMRAF
Таймеры
Таймеры задают длительности событий и являются счетчиками внутрисистемных тактовых импульсов.
Таймеры бывают двух типов - простые и Аккумулирующие (накапливающие). Оба типа Таймеров существуют в медленном или быстром вариантах. Медленные Таймеры работают от тактовых импульсов частотой 10Гц (100 мс), быстрые - от тактовых импульсов частотой 100Гц (10мс):
Простой Таймер с номером nnn = 000 3778 - это объект, с которым связаны три параметра:
1) текущее значение TАnnn от 0000 до 9999 в BCD-формате (в памяти ЦПУ эти данные располагаются в 256 регистрах V0 V377 = ТА0 ТА377);
2) предустановка от 0000 до 9999 в BCD-формате, заданная константой, переменной V-памяти или указателем на нее;
3) реле Тnnn, устанавливающееся в «1», когда текущее значение TАnnn достигнет предустановки (в V- памяти эти реле занимают 16 регистров V41100 V41117 = VT0 VT360).
DirectSOFT изображает простой Таймер в виде исполнительного блока (Box) с одной входной цепью. Пока
эта цепь получает питание (выполняется условие запуска блока) к текущему значению Таймера
добавляется «1» каждые 100мс (TMR) или 10мс (TMRF). Когда текущее значение Таймера достигнет
величины 9999, он останавливает счет. Если условие пуска блока не выполняется, текущее значение
ТАnnn и реле Тnnn обнуляются. Обнуление Таймера можно провести также другим способом, обнуляя реле Тnnn или регистр ТАnnn. В приведенном примере Таймер 1 отсчитывает 3 секунды после установки реле Х1 и взводит реле Т1, что вызывает срабатывание реле Y0:
Основы программирования на языке RLL
ПЛКСистемы 2009
46
Аккумулирующий Таймер Tnnn подобен простому, но имеет два входа и под текущее значение занимает 2 регистра - TAnnn и TA(nnn+1), емкостью до 99999999 в BCD-формате. Предустановка также 8-разрядное число, являющееся константой или переменной занимающем два смежных V-регистра. В качестве флага Таймера nnn выступает реле Тnnn, а реле Т(nnn+1) нельзя использовать. Если Вход разрешения счета (верхний) не получает питания, он останавливает Таймер, не обнуляя его. Подача питания на вход сброса обнуляет текущее значение Таймера и реле Т.
Ниже показан пример, где реле Х1 разрешает накопление текущего значения Таймера Т0 (в регистровой
паре ТА0, ТА1), а реле Х2 обнуляет его и реле Т0:
Счетчики
Если Таймеры подсчитывают внутрисистемные тактовые импульсы, то Счетчики - моменты замыкания определенных контактов. Счетчики бывают трех типов - простые (CNT), реверсивные (UP-Down Counters - UDC) и Счетчик для стадий (SGCNT).
Счетчик - это объект, с которым связаны три параметра в памяти ЦПУ:
1) текущее значение СTАnnn от 0000 до 9999 в BCD-формате (в памяти ЦП эти данные занимают 128 регистров V1000 V1177 или CTA0 CTA177);
2) предустановка от 0000 до 9999 в BCD-формате, заданная константой, переменной V-памяти или указателем на нее;
3) реле СТnnn, активизирующееся, когда текущее значение достигнет значения предустановки (в V- памяти эти реле размещаются в восьми регистрах-словах V41140 V41147 (VСT0 VСT360)
DirectSOFT изображает простой Счетчик исполнительным блоком с двумя входными цепями. В момент
замыкания контактов условий верхней цепи простой Счетчик увеличивает текущее значение на «1». Как и
Таймер, простой счетчик останавливает счет на числе 9999 (BCD). Подача питания на нижнюю цепь
обнуляет текущее значение СТАnnn и реле СTnnn:
Основы программирования на RLL
ПЛК Системы 2004
47
В показанном примере Счетчик CNT СТ1 подсчитывает срабатывания контакта Х1. После третьего замыкания контактов реле Х1 устанавливается реле СТ1. Срабатывание реле Х2 сбрасывает текущее значение СТА1 и реле СТ1.
Реверсивный счетчикUDC имеет три входные цепи управления счетом. Подача питания на верхнюю цепь увеличивает на «1», на среднюю цепь - уменьшает на «1», а на нижнюю цепь обнуляет текущее значение СТАnnn. Текущее значение реверсивного Счетчика (UDC) СТnnn занимает регистровую пару СТАnnn-CTA(nnn+1). При счете на увеличение достижение максимального значения (99999999 в BCD­формате) останавливает счет. То же при достижении нуля в счете на уменьшение.
В примере показан Счетчик UDC СТ2, подсчитывающий разницу в количестве срабатываний реле Х1 и
реле Х2. Когда она (разница) достигает 30000, срабатывает реле СТ2. Срабатывание реле Х3 сбрасывает
текущее значение СТА2-СТА3 и реле СТ2. Счетчик для стадий SGCNT полностью аналогичен простому CNT, но не имеет входа сброса. Счетчик для
стадий СТnnn можно сбросить либо через реле СТnnn, либо обнулением регистра СТАnnn. Этот тип
Счетчиков был разработан и будет особенно полезен при программировании на языке RLL
PLUS
.
Ниже показана работа Счетчика стадий SGCNT СТ2 в варианте, полностью эквивалентном примеру с
простым Счетчиком СТ1, который был показан на предыдущей странице.
Основы программирования на языке RLL
ПЛКСистемы 2009
48
В тех случаях, когда необходимо стробировать последовательные состояния определенной логической цепи в моменты, когда замыкается
другая логическая цепь, ЦПУ позволяет организовать регистр сдвига в С-
области памяти. В сдвиге может участвовать цепочка из любого
количества (кратного 8) С-реле, а сам сдвиг может быть организован как в сторону увеличения порядковых номеров С-реле, так и в сторону уменьшения.
SR
От C aaa
До C bbb
Сброс
Сдвиг
Вход
Вход
Сдвиг
Сброс
Вход
Сдвиг
Сброс
Аккумулятор ЦП DL06 – это 32-битовый регистр, который используется при обработке чисел и кодов. При этом используются два формата представления чисел:
двоичный код (HEX-формат); упакованный двоично-десятичный (BCD-формат).
Команды Аккумулятора DL06 работают только с целыми числами.
Программы DL06, в основном, работают с 16-разрядными данными. Этому отвечает структура V-памяти ЦПУ, которая разбита на 16-разрядные регистры. Но DL06 может работать также и с 32-разрядными данными, используя в памяти ЦПУ регистровые пары
– два смежных V-регистра, адресуемые по регистру с меньшим номером.
При 16-разрядных операциях представление данных в BCD-формате ограничивается 4-разрядными десятичными числами, а в 32-разрядных операциях - 8-разрядными.
Регистры сдвига
В приведенном примере при каждом срабатывании реле Х2 (переход от состояния «0» к состоянию «1»)
команда SR произведет следующие действия: состояние реле C16 запишется в реле С17 (прежнее
состояние реле С17 теряется), состояние реле С15 запишется в реле С16 и т.д. Состояние реле С0 запишется в реле С0, а состояние реле Х1 запишется в реле С0. Установленное в состояние «1» реле Х3
будет удерживать в состоянии «0» все реле цепочки от С0 до С17.
Аккумулятор
Основы программирования на RLL
ПЛК Системы 2004
49
При выполнении 16-разрядных аккумуляторных команд старшие 16 разрядов аккумулятора обнуляются. В начале каждого цикла ЦПУ обнуляет весь аккумулятор.
Загрузка данных в аккумулятор и выгрузка из него
Загрузка 32-х битовых данных в аккумулятор и выгрузка из него
Пожалуй самыми распространенными командами в любой программе являются команды
загрузки аккумулятора числами из V-памяти ЦПУ (команда LD) и команды выгрузки чисел из аккумулятора в V-память (OUT).
Пример показывает, как число из регистра V1400 пересылается через аккумулятор в регистр V1410 (разумеется, содержимое регистра V1400 при этом не изменяется):
Аккумулятор имеет возможность обмениваться данными с регистровыми парами, т.к.
емкость аккумулятора в 2 раза больше емкости V-регистра. Для этого в DL06 имеются команды загрузки и выгрузки 32-битовых чисел (LDD и OUTD).
Например, если необходимо скопировать данные, из регистров V1400, V1401 в регистры
V1410, V1411 соответственно, то наиболее эффективный путь следующий:
Основы программирования на языке RLL
ПЛКСистемы 2009
50
Обработка данных в аккумуляторе
Команды, которые обрабатывают данные, используют содержимое аккумулятора,
помещая в него результат обработки (исходное содержимое аккумулятора теряется). В нижеследующем примере BCD-константа 4935, загруженная в аккумулятор, сдвигается командой SHFR вправо на 4 бита (на один десятичный разряд) арифметически (с
потерей младшего десятичного разряда исходного числа), и результат выводится в
регистр V1410.
Когда требуется обработка 32-разрядных данных используется емкость всего аккумулятора, два последовательных V-регистра памяти (регистровая пара) или 32-разрядные константы (8-значные двоично-десятичные константы). Например, BCD-константа 67053101 сдвигается в аккумуляторе циклически вправо на два бита и результат выводится в регистровую пару V1410, V1411.
Основы программирования на RLL
ПЛК Системы 2004
51
Стек аккумулятора
Команды, требующие для выполнения более одного параметра, используют стек аккумулятора. Стек аккумулятора используют также, когда выполняется подряд более одной команды загрузки типа LD (без использования команды выгрузки OUT). Первая после OUT (или с начала цикла DL06) команда загрузки
помещает данные в аккумулятор на место его прежнего содержимого. Каждая последующая инструкция
загрузки, кроме того, сначала «проталкивает» содержимое аккумулятора в 8-уровневый стек, который образован восемью регистровыми парами (32-х битовыми регистрами).
«Проталкивание» в стек происходит следующим образом. Содержимое 7-го уровня стека копируется в 8-й уровень, прежнее содержимое которого теряется. Содержимое 6-го уровня стека копируется в 7-й уровень и т.д. Наконец,, содержимое аккумулятора копируется в 1-й уровень стека.
Ниже приводится пример загрузки BCD-константой 3245 второго уровня стека, BCD- константой 5151 первого уровня стека и BCD-константой 6363 аккумулятора:
Основы программирования на языке RLL
ПЛКСистемы 2009
52
Команда POP «выталкивает» данные из стека в аккумулятор. Этот процесс идет в направлении, обратном процессу «загрузки - проталкивания». Когда POP выполняется, значение, которое было в аккумуляторе, замещается данными с уровня 1 стека. Данные уровня n=2,3…8 стека перемещаются на уровень (n-1), а уровень 8 - "дно" стека - обнуляется.
Указатели
Многие команды DL06 могут использовать в качестве операнда содержимое V-регистра, как номер другого V-регистра, где содержится операнд. В этом случае первый V-регистр называется указателем - Pointer.
Указатели полезны при обращении к массивам операндов, но могут быть сложны в понимании, если нет
опыта работы с указателями (косвенной адресацией).
В DL06 принято нумеровать регистры V-памяти восьмеричными числами. Однако это лишь формат представления номера V-регистра, который в регистре-указателе должен быть представлен двоичным кодом (НЕХ-формат). Чтобы облегчить перевод восьмеричной формы числа в шестнадцатиричную, в составе DL06 имеется специальная команда LDA Oхххх (LOAD ADDRESS) – загрузить адрес хххх в аккумулятор. LDA попутно выполняет преобразование восьмеричного числа (О) в шестнадцатеричное
(HEX).
Основы программирования на RLL
ПЛК Системы 2004
53
В следующем примере инструкция LD использует регистр V1400, в котором находится число 340h (в HEX­формате), как указатель на регистр V1500, поскольку НЕХ-число 340h в восьмеричной записи выглядит как
1500: 34016=1500
. В этом примере регистр V1500 содержит число 2635 в шестнадцатеричной (НЕХ)
8
форме, которое будет скопировано в регистр V1600, через младшую часть аккумулятора.
Следующий пример эквивалентен предыдущему с одним отличием. Используется команда LDA, которая автоматически преобразует восьмеричный адрес в шестнадцатеричный эквивалент.
Табличные команды
В DL06 можно обрабатывать таблицы данных. Таблица - это массив V-регистров (общим числом до 256), в котором младший по номеру регистр выполняет роль указателя. Здесь сумма содержимого регистра­указателя с его номером дает номер выбранного V-регистра таблицы. Иными словами, регистр-указатель содержит «расстояние» до выбранного V-регистра.
Возможны следующие манипуляции с массивами и таблицами регистров:
заполнить массив определенным числом;
Основы программирования на языке RLL
ПЛКСистемы 2009
54
найти в массиве заданное число; найти в массиве первое число, которое больше заданного; скопировать содержимое одного массива в другой; скопировать указанное значение из таблицы в заданный регистр с последующим увеличением
указателя на 1 (инкремент);
скопировать указанное значение из таблицы в заданный регистр с последующим уменьшением
указателя на 1 (декремент);
скопировать значение из заданного регистра в указанное место таблицы с последующим
инкрементом указателя;
скопировать значение из заданного регистра в указанное место таблицы с последующим
декрементом указателя;
Пример демонстрирует перемещение информации из группы V-регистров в другую группу V-регистров. Когда нужно перемещать много данных, табличные инструкции экономят время.
Выше мы рассмотрели некоторые группы команд, но полный перечень команд контроллера составляет 229 команд. Все они описаны в Руководстве на контроллер. Далее приедено краткое описание команд.
Основы программирования на RLL
ПЛК Системы 2004
55
Перечень команд RLL, RLL
PLUS
контроллера DL06
Микроконтроллер DL06 имеет широкий набор команд (229) для выполнения множества различных типов
действий. Ниже в таблице приведены стандартные команды языка релейной логики (RLL). В дополнение к этим командам, Вы можете также использовать интеллектуальные команды – I-BOX (66) c DirectSOFT5. Некоторые из этих команд (преобразование форматов чисел и некоторые математические) включены в общий список. Полный перечень I-BOX приведен далее. В таблицах приведены ссылки на страницы разделов Руководства пользователя контроллера DL06,
на которых подробно описана данная команда.
Примечание: кроме перечисленных ниже команд при программировании контроллера DL06 могут быть использованы другие способы программирования/настройки контуров ПИД-регулирования и встроенных высокоскоростных счетных входов/импульсных выходов DL06.
В руководстве (и в таблице) все RLL команды объединены в следующие группы:
Логические или булевы команды Логические команды сравнения Команды немедленного действия Команды таймеров, счетчиков и команды сдвига Команды работы с данными в Аккумуляторе и Стеке Аккумулятора Логические команды Аккумулятора Математические команды Математические команды для работы с трансцендентными функциями Команды работы с битами Команды преобразования чисел Табличные команды Команды времени/даты Команды управления процессором Команды управления программой Команды прерывания Команды вывода сообщений Команды обмена данными по сетям DirectNet и Modbus Команды Modbus RTU Команды ASCII
Основы программирования на языке RLL
ПЛКСистемы 2009
56
Команды языка релейной логики RLL
Команда
Краткое описание
Стр.
Логические или булевы команды
5–10
Store (STR)
Начинает новую цепь или ветвь НО-контактом.
Store Not (STRN)
Начинает новую цепь или ветвь НЗ-контактом.
Store Bit-of-Word (STRB)
Начинает новую цепь или ветвь НО-контактом.
Store Not Bit-of-Word (STRNB)
Начинает новую цепь или ветвь НЗ-контактом.
Or (OR)
Выполняет операцию логического ИЛИ для цепи, состоящего из НО-контакта, соединенного параллельно с другим контактом.
Or Not (ORN)
Выполняет операцию логического ИЛИ для цепи, состоящего из НЗ-контакта, соединенного параллельно с другим контактом
Or Not Bit-of-Word (ORNB)
Выполняет операцию логического ИЛИ для цепи с НЗ-контактом, соединенного параллельно с другим контактом.
Or Bit-of-Word (ORB)
Выполняет операцию логического ИЛИ для цепи с НО контактом, соединенного параллельно с другим контактом.
And (AND)
Выполняет операцию логического И для цепи, состоящей из НО-контакта соединенного последовательно с другим контактом.
And Not (ANDN)
Выполняет операцию логического И для цепи, состоящей из НО-контакта соединенного последовательно с другим контактом.
AND Bit-of-Word (ANDB)
Выполняет операцию логического И для цепи с НО- контактом соединенного последовательно с другим контактом.
And Not Bit-of-Word (ANDNB)
Выполняет операцию логического И для цепи с НЗ- контактом, соединенного последовательно с другим контактом. Состояние контакта будет противоположно состоянию бита, на который ссылаются.
And Store (AND STR)
Выполняет операцию логического И для цепи, состоящей из двух последовательных ветвей. Обе ветви должны начинаться с команды Store.
Or Store (OR STR)
Выполняет операцию логического ИЛИ для цепи, состоящей из двух параллельных ветвей. Обе ветви должны начинаться с команды Store.
Or Out (OR OUT)
Позволяет использовать несколько цепей для управления одним выходом. Операция ИЛИ выполняется одновременно над всеми контактами, управляющими указанным выходом.
Out (OUT)
Отражает состояние цепи (вкл/выкл) и выводит дискретное состояние в определенное место регистра отображения или ячейку памяти.
Out Bit-of-Word (OUTB)
Отражает состояние цепи (вкл\выкл) и выводит дискретное состояние (вкл\выкл) в определенный бит в ячейки памяти.
Positive Differential (PD)
Команду PD, иногда, называют «одиночный импульс». Когда входная логика меняет сигнал с ВЫКЛ на ВКЛ., выход сработает на время одного цикла сканирования.
Not (NOT)
Инвертирует состояние цепи в точке команды.
Store Positive Differential (STRPD)
Начинает новую цепь или ветвь цепи НО - контактом. Контакт замыкается на один цикл сканирования, когда состояние соответствующего бита регистра отображения изменит состояние ВЫКЛ на ВКЛ.
Store Negative Differential (STRND)
Начинает новую цепь или ветвь цепи НО-контактом. Контакт замыкается на один цикл сканирования, когда состояние соответствующего бита регистра отображения изменит состояние ВКЛ на ВЫКЛ.
Or Positive Differential (ORPD)
Это НО-контакт параллельный с другим контактом цепи. Состояние контакта остается разомкнутым на один цикл сканирования, когда состояние соответствующего бита регистра отображения изменит состояние ВЫКЛ на ВКЛ, замыкая его на один скан.
Or Negative Differential (ORND)
Это НО-контакт параллельный с другим контактом цепи. Состояние контакта остается разомкнутым на один цикл сканирования, когда состояние соответствующего бита регистра отображения изменит состояние ВКЛ на ВЫКЛ (On /Off), замыкая его на один скан.
Основы программирования на RLL
ПЛК Системы 2004
57
And Negative Differential (ANDND)
Это НО контакт соединенный последовательно с другим контактом цепи. Состояние контакта остается разомкнутым до тех пор пока состояние соответствующего бита регистра отображения изменит состояние ВКЛ на ВЫКЛ, замыкая его на один скан.
And Positive Differential (ANDPD)
Это НО-контакт соединенный последовательно с другим контактом цепи. Состояние контакта остается разомкнутым до тех пор, пока состояние соответствующего бита регистра отображения изменит состояние ВЫКЛ на ВКЛ, замыкая его на один скан.
Set (SET)
Устанавливает или включает точку регистра отображения / ячейку памяти или последовательный диапазон точек регистра отображения / ячеек памяти. Как только точка установлена, она будет оставаться включенной до тех пор, пока ее не сбросит команда Reset.
Reset (RST)
Сбрасывает или выключает точку регистра отображения / ячейку памяти или диапазон точек регистра отображения / ячеек памяти. Как только точка сброшена, она будет оставаться отключенной до тех пор, пока ее не установят командой Set.
Set Bit-of-Word (SETB)
Устанавливает или включает бит в ячейке V-памяти. Как только бит установлен, он будет оставаться включенным до тех пор, пока его не сбросит команда Reset
Bit-of-Word.
Reset Bit-of-Word (RSTB)
Сбрасывает или выключает бит в ячейке V-памяти. Как только бит сброшен, нет необходимости, сохранять включенное состояние входа управления.
Логические команды сравнения
5–26
Store If Equal (STRE)
Начинает новую цепь или ветвь в цепи НО-контактом сравнения. Контакт будет включен, когда Vaaa = Bbbb.
Store If Not Equal (STRNE)
Начинает новую цепь или ветвь в цепи НЗ-контактом сравнения. Контакт будет включен, когда Vaaa не равен Bbbb.
Or If Equal (ORE)
Соединяет НО-контакт сравнения параллельно с другим контактом. Контакт будет включен, когда Vaaa = Bbbb.
Or If Not Egual (ORNE)
Соединяет НЗ-контакт сравнения параллельно с другим контактом. Контакт будет включен, когда Vaaa не равен Bbbb.
And If Equal (ANDE)
Соединяет НО-контакт сравнения последовательно с другим контактом. Контакт будет включен, когда Vaaa = Bbbb
And If Not Equal (ANDNE)
Соединяет НЗ-контакт сравнения последовательно с другим контактом. Контакт будет включен, когда Vaaa не равно Bbbb.
Store (STR)- Comparative
Начинает новую цепь или ветвь в цепи НО-контактом сравнения. Контакт будет включен, когда Aaaa >= Bbbb.
Store Not (STRN)­Comparative
Начинает новую цепь или ветвь в цепи НЗ-контактом сравнения. Контакт будет включен, когда Aaaa < Bbbb.
Or (OR)- Comparative
Соединяет НО-контакт сравнения параллельно с другим контактом. Контакт будет включен, когда Aaaa >= Bbbb.
Or Not (ORN) ­Comparative
Соединяет НО-контакт сравнения параллельно с другим контактом. Контакт будет включен, когда Aaaa < Bbbb.
And (AND) - Comparative
Соединяет НО-контакт сравнения последовательно с другим контактом. Контакт будет включен, когда Aaaa Bbbb.
And Not (ANDN) ­Comparative
Соединяет НО-контакт сравнения последовательно с другим контактом. Контакт будет включен, когда Aaaa < Bbbb.
Основы программирования на языке RLL
ПЛКСистемы 2009
58
Команда
Краткое описание
Стр.
Команды немедленного действия
5–32
Store Immediate (STRI)
Начинает новую цепь или дополнительную ветвь в цепи. Состояние контакта будет таким же, как состояние соответствующей входной точки во время, когда команда выполняется. Регистр отбражения не изменяется.
Store Not Immediate (STRNI)
Начинает новую цепь или дополнительную ветвь в цепи. Состояние контакта будет противоположным состоянию соответствующей входной точки во время, когда команда выполняется. Регистр отбражения не изменяется.
Or Immediate (ORI)
Соединяет два контакта параллельно. Состояние контакта будет таким же, как состояние соответствующей входной точки модуля модуля во время выполнения команды. Регистр отбражения не изменяется.
Or Not Immediate (ORNI)
Соединяет два контакта параллельно. Состояние контакта будет противоположным состоянию соответствующей входной точки модуля во время выполнения команды. Регистр отбражения не изменяется.
And Immediate (ANDI)
Соединяет два контакта последовательно. Состояние контакта будет таким же, как состояние соответствующей входной точки модуля модуля во время выполнения команды. Регистр отбражения не изменяется.
And Not Immediate (ANDNI)
Соединяет два контакта последовательно. Состояние контакта будет противоположным состоянию соответствующей входной точки модуля во время выполнения команды. Регистр отбражения не изменяется
Or Out Immediate (OROUTI)
Разработана, чтобы использовать несколько цепей дискретной логики для управления одним выходом. Операция ИЛИ выполняется одновременно над всеми контактами, управляющими выходом.
Out Immediate (OUTI)
Отражает состояние цепи (вкл/выкл) и выводит дискретное состояние в определенную канал модуля выхода и регистр отбражения во время выполнения команды. Можно многократно использовать OUTI, ссылающуюся на одну и ту же дискретную точку, для изменения состояния выходного модуля несколько раз за цикл сканирования процессора.
Out Immediate Formatted (OUTIF)
Выводит от 1 до 32 дискретных значения из аккумулятора в указанные выходные точки во время выполнения команды. Биты Аккумулятора, не используемые командой, устанавливаются равными нулю
Set Immediate (SETI)
Немедленно устанавливает (включает) выход или группу выходов в регистре отбражения и в соответствующем модуле (модулях) выхода во время выполнения команды. Команда Reset Immediate может использоваться для сброса выходов.
Reset Immediate (RSTI)
Немедленно сбрасывает (выключает) выход или группу выходов в регистре отбражения и в модуле (модулях) выхода во время выполнения команды.
Load Immediate (LDI)
Загружает 16-разрядное значение ячейки V-памяти в аккумулатор. Интервал допустимых адресов включает все адреса входных точек в локальном каркасе. Значение отражает текущее состояние входных точек в момент выполнения команды.
Load Immediate Formatted (LDIF)
Загружает от 1 до 32 бит двоичных значений в аккумулятор. Значение отражает текущее состояние входов модуля (модулей) в момент выполнения инструкции. Неиспользуемые командой биты аккумулятора устанавливаются в ноль.
Команды таймеров, счетчиков и команды сдвига
5–40
Timer (TMR) и Timer Fast (TMRF)
TMR это 0.1с таймер с одним входом, который считает максимально до 999.9с. TMRF - это 0.01с таймер, который считает до 99.99с.
Accumulating Timer (TMRA) и Accumulating Timer Fast (TMRFA)
TMRA это 0.1 секундный таймер с двумя входами, который считает до
9999999.9с. TMRFA — это быстрый (0.01с) аккумулирующий таймер с двумя входами, который считает до 99999.99с.
Counter (CNT)
Счетчик с двумя входами, значение которого увеличивается, когда вход Count переходит из состояния ВЫКЛ. в состояние ВКЛ. Когда включается вход Reset, счетчик сбрасывается в 0. Когда текущее значение равно заданному значению, бит состояния счетчика включается, а счетчик продолжает считать до максимального значения 9999. Максимальное значение будет сохраняться до тех пор, пока счетчик не будет сброшен.
Основы программирования на RLL
ПЛК Системы 2004
59
Stage Counter (SGCNT)
Счетчик с одним входом, значение которого увеличивается, когда на входе происходит переход из состояния ВЫКЛ. в состояние ВКЛ. Этот счетчик отличается от других счетчиков, так как он хранит текущее значение до тех пор, пока не будет сброшен командой RST(reset). Stage Counter разработан для использования в программах RLL
PLUS
, но может использоваться в программах релейной логики. Когда текущее значение равно заданному значению, бит состояния счетчика включается, а счетчик продолжает считать до максимального значения 9999. Максимальное значение будет сохраняться до тех пор, пока счетчик не сбросится.
Up Down Counter (UDC)
Реверсивный счетчик - увеличивается каждый раз при переходе входа Up (Вверх) из состояния ВЫКЛ. в состояние ВКЛ. и уменьшается каждый раз при переходе входа Down (Вниз) из состояния ВЫКЛ. в состояние ВКЛ. Счетчик сбрасывается в 0, когда вход Reset (Сброс) включается. Диапазон счета: 0-
99999999. Неиспользуемый счетный вход должен быть выключен, чтобы функционировал активный счетный вход.
Shift Register (SR)
Cдвиговый регистр сдвигает данные на определенное число реле управления (С).
Команды работы с данными в Аккумуляторе и Стеке Аккумулятора
5–57
Load (LD)
Это 16-битная команда, которая загружает значение, которое является ячейкой V-памяти или 4-разрядной константой, в нижние 16 бит аккумулятора. Верхние 16 бит аккумулятора устанавливаются в 0.
Load Double (LDD)
Это 32-битная команда, которая загружает значение, которое является двумя последовательными ячейками V-памяти или 8-разрядной константой, в аккумулятор.
Load Formatted (LDF)
Загружает 1-32 последовательных бита из дискретных ячеек памяти в аккумулятор. Для загрузки команды требуется определить стартовую ячейку и количество битов. Неиспользуемые ячейки аккумулятора устанавливаются в ноль.
Load Address (LDA)
16-битная команда. Она преобразует любое восьмеричное значение или адрес в шестнадцатиричный эквивалент и загружает шестнадцатиричное значение в аккумулятор. Эта команда полезна, когда требуется использовать в качестве параметра адрес.
Load Accumulator Indexed (LDX)
16-битная команда, которая загружает в аккумулятор значение ячейки V-памяти, определяя исходный адрес и добавляя к нему смещение заданное в первой ячейке стека.
Load Accumulator Indexed from Data Constants (LDSX)
16-битная команда, определяет Область меток данных Data Label Area (DLBL) где хранятся числовые или ASCII константы. Значение будет загружено в младшие 16 бит.
Load Real Number (LDR)
Загружает вещественное число, содержащееся в двух последовательных ячейках V-памяти, или в 8-разрядной константе аккумулятора.
Основы программирования на языке RLL
ПЛКСистемы 2009
60
Команда
Краткое описание
Стр.
Логические команды аккумулятора
5–69
And (AND).
16-битная команда, которая выполняет операцию логического И над значением, расположенным в младших 16 битах аккумулятора, и значением в заданной ячейке V-памяти. Результат находится в аккумуляторе. Флаг состояния
указывает, является ли результат нулем.
And Double (ANDD)
32-битная команда, которая выполняет операцию логического И над значением из аккумулятора вместе с двумя последовательными ячейками V-памяти или 8­ми разрядным значением константы. Результат находится в аккумуляторе. Флаги состояния указывают, является ли результат нулем или отрицательным числом
And Formatted (ANDF)
Выполняет операцию логического И над двоичным значением аккумулятора и заданным диапазоном бит памяти (1-32). Флаги состояния указывают, является ли результат нулем или отрицательным числом
Or (OR)
16-битная команда, которая выполняет операцию логического ИЛИ над значением, расположенным в младших 16 битах аккумулятора, и значением в заданной ячейке V-памяти. Результат находится в аккумуляторе. Флаг состояния указывает, является ли результат команды нулем.
Or Double (ORD)
16-битная команда, которая выполняет операцию логического ИЛИ над значением, расположенным в младших 16 битах аккумулятора, и значением в заданной ячейке V-памяти. Результат находится в аккумуляторе. Флаг состояния указывает, является ли результат нулем.
Or Formatted (ORF)
Выполняет операцию логического ИЛИ над двоичным значением аккумулятора и заданным диапазоном бит памяти (1-32). Флаги указывают, является ли результат нулем или отрицательным числом
Or with Stack (ORS)
32-битная команда, которая выполняет операцию логического ИЛИ над значением из аккумулятора и значением первого уровня стека аккумулятора. Результат находится в аккумуляторе. Удаляется из стека значение, расположенное на первом уровне стека аккумулятора, и все значения перемещаются на один уровень вверх. Флаги указывают, является ли результат команды нулем или отрицательным числом
Out (OUT)
16-битная команда, которая копирует значение из младших 16 бит аккумулятора в заданную ячейку V-памяти
Out Double (OUTD)
32-битная команда, которая копирует значение из аккумулятора в две последовательных ячейки V-памяти.
Out Formatted (OUTF
Выводит 1-32 бита из аккумулятора в указанные дискретные ячейки памяти.
Out Indexed (OUTX)
16-разрядная команда, копирует 16 бит или 4-х-разрядное значение из первого уровня стека аккумулятора в ячейку памяти с адресом – исходный адрес + смещение. Команда интерпретирует значение смещения как шестнадцатиричное число. Старшие 16 бит аккумулятора устанавливаются в ноль.
Out Least (OUTL).
Копирует значение младших восьми бит аккумулятора в заданные младшие восемь бит ячейки V-памяти
Out Most (OUTM)
Копирует значение старших 8-ми битов (из младших шестнадцати битов аккумулятора) в старшие восемь бит заданной ячейки V-памяти
Pause (PAUSE)
Отключает изменение выхода на заданном диапазоне выходов. Программа релейной логики будет продолжать выполнение и изменять регистр отображения, однако выходы модулей будут выключены в диапазоне, заданном в команде Pause(Пауза).
Pop (POP)
Перемещает (выталкивает) значение с первого уровня стека аккумулятора (32 бита) в аккумулятор и сдвигает каждое значение в стеке вверх на один уровень.
And with Stack (ANDS)
32-битная команда, которая выполняет операцию логического И над значением из аккумулятора вместе с значением, расположенным на первом уровне стека аккумулятора. Результат находится в аккумуляторе. Удаляется из стека значение, расположенное на первом уровне стека аккумулятора, и все значения перемещаются на один уровень вверх. Флаги состояния указывают, является ли результат нулем или отрицательным числом
Основы программирования на RLL
ПЛК Системы 2004
61
Exclusive Or (XOR
16-битная команда, которая выполняет операцию исключающего ИЛИ над значением, расположенным в нижних 16 битах аккумулятора, и значением в заданной ячейке V-памяти. Результат находится в аккумуляторе. Флаг состояния указывает, является ли результат нулем.
Exclusive Or Double (XORD)
32-битная команда, которая выполняет операцию исключающего ИЛИ над значением из аккумулятора и константой, которая является или двумя последовательными ячейками V-памяти, или 8-ми разрядной константой (максимум). Результат находится в аккумуляторе. Флаги состояния указывают, является ли результат нулем или отрицательным числом
Exclusive Or Formatted (XORF)
Выполняет операцию исключающего ИЛИ над двоичным значением аккумулятора и заданным диапазоном бит дискретной памяти (1-32). Команда требует значение адреса исходной ячейки и числа бит, чтобы выполнить исключающее ИЛИ. Флаги состояния указывают, является ли результат нулем или отрицательным числом
Exclusive Or with Stack (XORS)
32-битная команда, которая выполняет операцию исключающего ИЛИ над значением из аккумулятора и значением первого уровня стека аккумулятора. Результат находится в аккумуляторе. Из стека удаляется значение, расположенное на первом уровне стека аккумулятора, и все значения перемещаются на один уровень вверх. Флаги указывают, является ли результат команды нулем или отрицательным числом
Compare (CMP) – Acc.
16-битная команда, которая сравнивает значение из младших 16 бит аккумулятора со значением в определенной ячейке V-памяти. Соответствующий флаг состояния покажет результат сравнения.
Compare Double (CMPD)
32-битная команда, которая сравнивает значение из аккумулятора со значением , которое является или двумя последовательными ячейками V-памяти или 8-ми разрядной константой. Соответствующий флаг состояния покажет результат сравнения.
Compare Formatted (CMPF)
Сравнивает значение в аккумуляторе с заданным числом дискретных ячеек (1-
32). Соответствующий флаг состояния покажет результат сравнения..
Compare with Stack (CMPS)
32-битная команда, которая сравнивает значение в аккумуляторе со значением в первом уровне стека аккумулятора. Соответствующий флаг состояния покажет результат сравнения. Команда не влияет на значение в аккумуляторе.
Compare Real Number (CMPR)
Сравнивает значение вещественного числа в аккумуляторе с двумя последовательными ячейками V-памяти. Соответствующий флаг состояния покажет результат сравнения. Оба сравниваемых числа – длиной 32 бита.
Математические команды
5–86
Add (ADD)
16-битная команда, которая складывает BCD значение в аккумуляторе с BCD значением в ячейке V-памяти. Результат находится в аккумуляторе.
Add Double (ADDD)
32-битная команда, которая складывает BCD значение в аккумуляторе с BCD значением, которое является двумя последовательными ячейками V-памяти или BCD константой (до 8 знаков). Результат в аккумуляторе.
Add Real (ADDR)
Складывает вещественное число в аккумуляторе с вещественной константой / значением в двух последовательных ячейках V-памяти. Результат записывается в аккумулятор. Числа должны быть представлены в формате вещественного числа IEEE с плавающей точкой.
Subtract (SUB)
16-битная команда, которая вычитает BCD значение в ячейке V-памяти из BCD значения в младших 16 битах аккумулятора. Результат в аккумуляторе.
Subtract Double (SUBD)
32-битная команда, которая вычитает BCD значение, которое является двумя последовательными ячейками V-памяти или константой (8 знаков максимум), из BCD значения в аккумуляторе. Результат в аккумуляторе.
Subtract Real (SUBR)
Вычитает из аккумулятора вещественное число, которое является или константой, или двумя последовательными ячейками V-памяти. Результат находится в аккумуляторе. Оба числа должны быть в формате IEEE, с плавающей запятой.
Multiply (MUL)
16-битная команда, которая умножает BCD значение, которое является ячейкой V-памяти или константой (4 знака), на BCD значение в нижних 16 битах аккумулятора. Результат может иметь до 8 знаков и находится в аккумуляторе.
Основы программирования на языке RLL
ПЛКСистемы 2009
62
Multiply Double (MULD)
32-битная команда, которая умножает 8-знаковое BCD значение в аккумуляторе на 8-знаковое BCD значение в двух последовательных ячейках V-памяти. Нижние 8 знаков результата находятся в аккумуляторе. Верхние знаки результата хранятся в стеке аккумулятора.
Multiply Real (MULR)
Умножает вещественное число в аккумуляторе на вещественную константу или число, находящееся в двух последовательных ячейках V-памяти. Результат сохраняется в аккумуляторе.
Divide (DIV)
16-битная команда, которая делит BCD значение в аккумуляторе на BCD значение, которое является или ячейкой V-памяти или константой (4 знака). Целая часть результата находится в аккумуляторе, а остаток — в первой ячейке стека.
Divide Double (DIVD)
32-битная команда, которая делит BCD значение в аккумуляторе на BCD значение, которое должно быть взято из двух последовательных ячеек V­памяти. (Вы не можете использовать константу как параметр в команде). Первая часть результата находится в аккумуляторе, а остаток — в первой ячейке стека.
Divide Real (DIVR)
Делит вещественное число в аккумуляторе на вещественную константу или число, находящееся в двух последовательных ячейках V-памяти. Результат сохраняется в аккумуляторе.
Decrement (DEC)
Уменьшает BCD значение в определенной ячейке V-памяти на «1» каждый раз при выполнении команды.
Increment (INC)
Увеличивает BCD значение в определенной ячейке V-памяти на «1» каждый раз при выполнении команды.
Add Binary (ADDB)
16-битная команда, которая складывает двоичное значение в дополнительном коде без знака в младших 16 битах аккумулятора с двоичным значением в дополнительном коде без знака, которое является ячейкой V-памяти или 16­битной константой. Результат может быть до 32 бит (без знака) и находится в аккумуляторе.
Add Binary Double (ADDBD)
32-битная команда, которая складывает двоичное значение в дополнительном коде без знака в аккумуляторе с двоичным значением в дополнительном коде без знака, которое является ячейкой V-памяти или 32-битной константой в дополнительном коде. Результат находится в аккумуляторе.
Subtract Binary (SUBB)
16-битная команда, которая вычитает двоичное значение в дополнительном коде без знака, которое является ячейкой V-памяти или 16-битным двухкомпонентным двоичным значением, из двоичного значения в дополнительном коде в аккумуляторе. Результат в аккумуляторе.
Subtract Binary Double (SUBBD)
32-битная команда, которая вычитает двоичное значение в дополнительном коде без знака, которое является ячейкой V-памяти или 32-битным двоичным значением, из двоичного значения в дополнительном коде в аккумуляторе. Результат в аккумуляторе.
Multiply Binary (MULB)
16-битная команда умножения двоичного значения в дополнительном коде без знака, которое является ячейкой V-памяти или 16-битной двоичной константой в дополнительном коде без знака, на 16-битное двоичное значение в аккумуляторе. Результат может быть до 32 бит и находится в аккумуляторе.
Divide Binary (DIVB)
16-битная команда, которая делит двоичное значение в дополнительном коде без знака в аккумуляторе на двоичное значение, которое является ячейкой V­памяти или 16-битной двоичной константой в дополнительном коде без знака. Целая часть результата находится в аккумуляторе, а остаток от деления — в первом уровне стека.
Increment Binary (INCB)
Увеличивает двоичное значение в определенной ячейке V-памяти на «1» каждый раз при выполнении команды.
Decrement Binary (DECB)
Уменьшает двоичное значение в определенной ячейке V-памяти на «1» каждый раз при выполнении команды.
Add Formatted (ADDF)
32-битная команда, которая складывает BCD значение в аккумуляторе с BCD значением, которое является диапазоном от 1 до 32 последовательных бит. Результат находится в аккумуляторе.
Subtract Formatted (SUBF)
32-битная команда, которая вычитает из BCD значения аккумулятора BCD значение, которое является диапазоном от 1 до 32 последовательных бит. Результат в аккумуляторе.
Основы программирования на RLL
ПЛК Системы 2004
63
Multiply Formatted (MULF)
16-битная команда, которая умножает BCD значение аккумулятора на BCD значение, которое является диапазоном от 1 до 16 последовательных бит. Результат в аккумуляторе.
Divide Formatted (DIVF)
16-битная команда, которая делит BCD значение аккумулятора на BCD значение, которое является диапазоном 1 –16 бит. Результат в аккумуляторе.
Add Top of Stack (ADDS)
32-битная команда, которая выполняет сложение BCD значение аккумулятора с BCD значением в первом уровне стека аккумулятора. Результат находится в
аккумуляторе. Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Subtract Top of Stack (SUBS)
32-битная команда, которая выполняет вычитание из BCD значения аккумулятора BCD значения в первом уровне стека аккумулятора. Результат находится в аккумуляторе. Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Multiply Top of Stack (MULS)
16-битная команда, которая выполняет умножение 4-х разрядного BCD значения аккумулятора и 4-х разрядного BCD значения в первом уровне стека аккумулятора. Результат находится в аккумуляторе. Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Divide by Top of Stack (DIVS)
32-битная команда, которая выполняет деление 8-разрядного BCD значения в аккумуляторе на 4-разрядное BCD значение в первом уровне стека аккумулятора. Результат находится в аккумуляторе, а остаток в первом уровне стека.
Add Binary Top of Stack (ADDBS)
32-битная команда, которая выполняет сложение двоичного значения аккумулятора с двоичным значением в первом уровне стека аккумулятора. Результат находится в аккумуляторе. Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Subtract Binary Top of Stack (SUBBS)
32-битная команда, которая выполняет вычитание из двоичного значения аккумулятора двоичное значение в первом уровне стека аккумулятора. Результат находится в аккумуляторе. Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Multiply Binary Top of Stack (MULBS)
16-битная команда, которая выполняет умножение 16-и битного двоичного значения аккумулятора и 16-и битного двоичного значения в первом уровне стека аккумулятора. Результат находится в аккумуляторе и может быть размером до 32 бит (до 8 цифр). Значение в первом уровне стека удаляется и все значения в стеке поднимаются вверх на один уровень.
Divide Binary by Top OF Stack (DIVBS)
32-битная команда, которая выполняет деление 32-х битного двоичного значения в аккумуляторе на 16-ти битное двоичное значение в первом уровне стека аккумулятора. Результат находится в аккумуляторе, а остаток в первом уровне стека.
Математические команды для работы с трансцендентными функциями
5–118
Sine Real (SINR)
Вычисляет синус вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Cosine Real (COSR)
Вычисляет косинус вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Tangent Real (TANR)
Вычисляет тангенс вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Arc Sine Real (ASINR)
Вычисляет арксинус вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Arc Cosine Real (ACOSR)
Вычисляет арккосинус вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Arc Tangent Real (ATANR)
Вычисляет арктангенс вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32-битном формате представления вещественного числа IEEE.
Основы программирования на языке RLL
ПЛКСистемы 2009
64
Square Root Real (SQRTR)
Вычисляет квадратный корень вещественного числа находящегося в аккумуляторе. Результат остается в аккумуляторе. Число и результат в 32­битном формате представления вещественного числа IEEE.
Square BCD (SQUARE)- I­BOX!
Вычисляет квадрат BCD числа (одно слово - 4 цифры). Результат DWORD BCD число (двойное слово)- 8 цифр.
Square Binary (SQUAREB)- I-BOX!
Вычисляет квадрат двоичного числа (одно слово – 16 бит). Результат DWORD Binary число (двойное слово)- 32 бита.
Команды работы с битами
5–120
Sum (SUM)
Считает число битов в аккумуляторе, которые установлены в «1». Результат в шестнадцатиричном виде находится в аккумуляторе.
Shift Left (SHFL)
32-битная команда, которая сдвигает биты в аккумуляторе на указанное число мест влево. Незанятые позиции заполняются нулями, а биты, сдвинутые из аккумулятора, теряются.
Shift Right (SHFR)
32-битная команда, которая сдвигает биты в аккумуляторе на указанное число мест вправо. Незанятые позиции заполняются нулями, а биты, сдвинутые из аккумулятора, теряются.
Rotate Left (ROTL)
32-битная команда, которая вращает биты в аккумуляторе на указанное число мест влево.
Rotate Right (ROTR)
32-битная команда, которая вращает биты в аккумуляторе на указанное число мест вправо.
Encode (ENCO)
Кодирует позицию бита в аккумуляторе, имеющего значение «1», и возвращает соответствующее двоичное представление
Decode (DECO)
Декодирует 5-битовое двоичное значение 0-31 (0-1F HEX) в аккумуляторе, устанавливая соответствующую позицию бита в «1».
Команды преобразования чисел
5–127
Binary (BIN)
Преобразует BCD значение в аккумуляторе в эквивалентное двоичное значение. Результат находится в аккумуляторе.
Binary Coded Decimal (BCD)
Преобразует двоичное значение в аккумуляторе в эквивалентное BCD значение. Результат находится в аккумуляторе.
BCD to Real Conversion (BCDTOR) – I-BOX!
Преобразует BCD значение (слово) в аккумуляторе в формат вещественного числа с указанием места десятичной точки
BCD to Real Conversion (BCDTORD) – I-BOX!
Преобразует BCD значение (два слова) в аккумуляторе в формат вещественного числа с указанием места десятичной точки
Real to BCD Conversion (RTOBCD) – I-BOX!
Преобразует абсолютное значение вещественного числа формат в BCD(слово) с указанием места десятичной точки и округлением
Real to BCD Conversion (RTOBCDD) – I-BOX!
Преобразует абсолютное значение вещественного числа в формат BCD(два слова) с указанием места десятичной точки и округлением
Invert (INV)
Инвертирует 32-битное значение в обратном коде в аккумуляторе. Результат хранится в аккумуляторе.
Ten’s Complement
(BCDCPL)
Выполняет поразрядное дополнение до «10» 8-ми разрядного BCD значения в аккумуляторе. Результат находится в аккумуляторе.
Binary to Real Conversion (BTOR)
Преобразует двоичное значение в аккумуляторе в формат эквивалентного вещественного числа. Результат хранится в аккумуляторе. И двоичное значение, и вещественное число может использовать все 32 бита аккумулятора.
Real to Binary Conversion (RTOB)
Преобразует вещественное число в аккумуляторе в двоичное значение. Результат хранится в аккумуляторе. И двоичное значение, и вещественное число может использовать все 32 бита аккумулятора
Radian Real Conversion (RADR)
Преобразует вещественное число градусов в аккумуляторе в эквивалетное вещественное число радиан. Результат хранится в аккумуляторе.
Degree Real Conversion (DEGR)
Преобразует вещественное число радиан в аккумуляторе в эквивалетное вещественное число градусов. Результат хранится в аккумуляторе.
ASCII to HEX (ATH)
Преобразует таблицу ASCII значений в таблицу шестнадцатиричных значений. ASCII значения состоят из двух цифр, а их шестнадцатиричные эквиваленты — из одной.
Основы программирования на RLL
ПЛК Системы 2004
65
HEX to ASCII (HTA)
Преобразует таблицу шестнадцатиричных значений в таблицу ASCII значений. Шестнадцатиричные значения состоят из одной цифры, а их ASCII эквиваленты — из двух.
Segment (SEG)
Преобразует 4-х разрядное шестнадцатиричное значение в аккумуляторе в формата 7-сегментного дисплея. Результат сохраняется в аккумуляторе.
Gray Code (GRAY)
Преобразует 16-битное значение в коде Грэя (двоичный циклический код) в BCD значение.
Shuffle Digits (SFLDGT)
Меняет местами максимум 8 знаков, располагая их в заданном порядке.
Табличные команды
5–141
Move (MOV)
Перемещает значения из одной таблицы V-памяти в другую таблицу V-памяти такой же длины.
Move Memory Cartridge (MOVMC)
Используется для копирования данных между V-памятью и памятью программ.
Load Label (LDLBL)
Используется только с командой MOVMC при копировании данных из памяти программ в V-память.
SETBIT
Устанавливает отдельный бит в единицу в указанном диапазоне V-памяти.
RSTBIT
Сбрасывает отдельный бит в ноль в указанном диапазоне V-памяти.
Fill (FILL)
Заполняет таблицу до 255 ячеек V-памяти значением, которое является ячейкой V-памяти или 4-х разрядной константой.
Find (FIND)
Используется для поиска заданной величины в таблице до 255 ячеек V-памяти.
Find Greater Than (FDGT)
Используется для поиска, первого местонахождения значения в таблице V­памяти, больше заданной величины, которая может быть ячейкой V-памяти или 4-разрядной константой
Table to Destination (TTD)
Перемещает значение из таблицы V-памяти в V-память и увеличивает указатель таблицы на 1.
Source to Table (STT)
Перемещает значения из V-памяти в таблицу V-памяти и увеличивает указатель таблицы на 1. Когда указатель таблицы достигает конца таблицы, то он сбрасывается в 1.
Table Shift Left (TSHFL)
Сдвигает все биты в таблице V-памяти влево, на заданное число разрядов.
Table Shift Right (TSHFR)
Сдвигает все биты в таблице V-памяти вправо, на заданное число разрядов.
Remove from Bottom (RFB)
Перемещает значение из таблицы V-памяти в V-память и уменьшает указатель таблицы на 1.
Remove from Table (RFT)
Удаляет значение из таблицы V-памяти и сохраняет его в ячейке V-памяти. Все остальные значения перемещаются вверх на 1 ячейку.
Add to Top (ATT)
Сохраняет значение из ячейки V-памяти в таблицу V-памяти. Все остальные значения перемещаются вниз на 1 ячейку.
AND Move (ANDMOV)
Копирует данные из таблицы в ячейку памяти, осуществляя операцию И каждого слова с данными, записанными в аккумуляторе.
Exclusive OR Move (XORMOV)
Копирует данные из таблицы в ячейку памяти, осуществляя операцию исключающего ИЛИ каждого слова с данными, записанными в аккумуляторе.
OR Move (ORMOV)
Копирует данные из таблицы в ячейку памяти, осуществляя операцию ИЛИ каждого слова с данными, записанными в аккумуляторе.
Find Block (FINDB)
Выполняет поиск местонахождения блока значений в таблице V-памяти.
Swap (SWAP)
Обменивает данные в двух таблицах равной длины.
Команды времени/даты
5-171
Date (DATE)
Может использоваться, чтобы установить текущую дату в календаре процессора ПЛК.
Time (TIME)
Может использоваться, для того чтобы установить текущее время (24 часа) в процессоре ПЛК.
Команды управления процессором
5–173
No Operation (NOP)
Пустая (непрограммируемая) ячейка памяти
End (END)
Отмечает точку окончания обычного сканирования программы.
Основы программирования на языке RLL
ПЛКСистемы 2009
66
Stop (STOP)
Меняет режим работы ЦПУ с режима Run (Работа) на режим Stop (Program) – режим программирования.
Reset Watch Dog Timer (RSTWT)
Cбрасывает таймер сканирования ЦПУ. Настройка сторожевого таймера по умолчанию— 200 мс.
Команды управления программой
5–175
Goto / Label (GOTO) / (LBL)
Пропускает все инструкции между Goto и соответствующей командой LBL. Значение операнда для Goto и соответствующей команды LBL - одинаково.
For / Next (FOR) (NEXT)
Используются для выполнения участка программы релейной логики между командами For и Next указанное число раз.
Goto Subroutine (GTS) / (SBR)
Позволяет части программы релейной логики быть помещенной вне основного тела программы, чтобы выполнять ее только при необходимости. В программе может использоваться максимум 256 команд GTS и 256 команды SBR. Команды GTS могут быть вложены до 8 уровней.
Subroutine Return (RT)
Когда в подпрограмме выполняется команда RT, ЦПУ вернется к той точке в главном теле программы, с которой эта подпрограмма была вызвана.
Subroutine Return Conditional (RTC)
Команда RTC- дополнительная команда, используемая с входным контактом для выполнения условного возврата из подпрограммы.
Master Line Reset (MLR)
Отмечает конец элемента управления для соответствующей команды MLS.
Master Line Set (MLS)
Позволяет программе управлять разделами релейной логики, формируя новую шину питания, управляемую главной левой шиной питания.
Команды прерывания
5–183
Interrupt (INT)
Позволяет поместить раздел релейной логики вне главного тела программы и выполнять его при необходимости.
Enable Interrupts (ENI)
Применяется в главном теле прикладной программы, чтобы разрешить аппаратные или программные прерывания. Прерывания разрешены, пока не будут запрещены командой Disable Interrupt.
Interrupt Return (IRT)
Является последней командой в процедуре прерывания.
Interrupt Return Conditional (IRTC)
Дополнительная команда, используемая с входным контактом, для выполнения условного возврата из программы прерывания.
Disable Interrupts (DISI)
Применяется в главном теле прикладной программы, чтобы блокировать прерывания (внешнее или прерывание по времени).
Команды вывода сообщений
5–186
Fault (FAULT)
Используется для отображения сообщения на ручном программаторе, дополнительном жидкокристаллическом дисплее или в строке текущего состояния DirectSOFT.
Data Label (DLBL)
Отмечает начало ASCII / числовой области данных. Команды DLBL располагаются в программе после оператора End.
ASCII Constant (ACON)
Используется с командой DLBL, чтобы сохранить ASCII текст для использования с другими командами.
Numerical Constant (NCON)
Используется с командой DLBL, чтобы сохранить шестнадцатиричный ASCII эквивалент цифровых данных для использования с другими командами.
Print Message (PRINT)
Печатает вложенный текст или сообщение с текстом / переменными в указанный коммуникационный порт (для DL06 – порт 2)
LCD
Когда запускается команда LCD, то определяемое пользователем текстовое сообщение отображается на жидкокристаллическом дисплее контроллера.
Команды обмена данными по сетям DirectNet и Modbus
5–193
Read from Network (RX)
Команда Read from Network используется ведущим (master) устройством в сети для чтения блока данных с подчиненного устройства сети.
Write to Network (WX)
Команда Write to Network используется для записи блока данных из ведущего (master) устройства в подчиненное (slave) устройство сети.
Основы программирования на RLL
ПЛК Системы 2004
67
Команда
Краткое описание
Стр.
Команды Modbus RTU
5–201
MODBUS Read from Network (MRX)
Команда чтения сети MODBUS (MRX) используется ведущим сети (мастером) DL06, чтобы прочитать блок данных из подсоединенного ведомого устройства и записать данные в адреса V-памяти ведущего.
MODBUS Write to Network (MWX)
Команда записи в сети MODBUS (MWX) используется для записи блока данных из памяти ведущего сети (мастера) DL06, в подсоединенное ведомое устройство. Команда содержит Код Функции MODBUS, Адрес ведомой станции, начальные адреса ведущего и ведомого, число пересылаемых элементов, формат данных MODBUS и буфер ошибок.
Команды ASCII
5–209
ASCII Input (AIN)
Разрешает процессору получить ASCII-строки через указанный порт связи и помещает строку в указанную последовательность регистров V-памяти.
ASCII Find (AFIND)
Обнаруживает отдельную строку ASCII или часть строки ASCII в пределах диапазона V-памяти, регистрирует и размещает номер строки (номер байта, где требуемая строка найдена), в шестнадцатиричном формате, в регистр V-памяти
ASCII Extract (AEX)
Извлекает определенное число байт ASCII-данных из одной серии регистров V­памяти и помещает их в другую серию регистров V-памяти.
ASCII Compare (CMPV)
Сравнивает две группы регистров V–памяти. CMPV сравнивает любые типы данных (ASCII с ASCII, BCD с BCD, и т.д.) одной группы регистров V– памяти с другой указанной длины.
ASCII Print to V–memory (VPRINT)
Записывает ASCII-строку в последовательные регистры V–памяти.
ASCII Print from V– memory (PRINTV)
Используется для вывода ASCII-строки на указанный порта связи из определенной последовательности регистров V-памяти с определенной длиной в байтах.
ASCII Swap Bytes (SWAPB)
Обменивает местами позиции байт (старший байт в младший и, наоборот, младший байт в старший) в каждом регистре V-памяти в указанной последовательности регистров V-памяти.
ASCII Clear Buffer (ACRB)
Очищает премный ASCII буфер на коммуникационном порту №2.
Команды барабанного командаппарата
(страницы 6-12 и далее)
DRUM - Барабанный командаппарат с дискретными выходами и переходами по времени
DRUM – это основная команда барабанного командаппарата DL06
EDRUM - Барабанный командаппарат с переходами по времени и по событиям
В EDRUM возможны переходы между шагами по времени и по событию.
MDRMD - Барабанный командаппарат с дискретными выходами и маской выходов, с переходами шагов по событию
Барабанный командаппарат с дискретными выходами, маской выходов и с переходами по событию обладает всеми свойствами базовой команды барабанного командоаппарата с переходами по событию, а также дополнительным свойством, которое заключается в формировании конечного состояния выходов на каждом шаге с использованием маски
MDRMW - Барабанный командаппарат со словом на выходе и с маской выхода, с переходом по событию
В барабанном командаппарате с выходным словом и с маской выходов, с переходом шагов по событию, выходы организованы не как дискретные точки, а как биты одного слова.
Основы программирования на языке RLL
ПЛКСистемы 2009
68
Команда
Краткое описание
Стр.
Команды языка RLL
PLUS
(страницы 7-21 и далее)
Stage (SG) (Стадия)
Команды Stage (Стадия) используются для создания структурированных программ на языке RLL
PLUS
. Стадии являются сегментами программы, которые становятся активными согласно запрограммированной логике переходов состояний, а также по командам перехода или установки Стадии, которые исполняются в текущей активной Стадии. Стадии перестают быть активными один цикл спустя после выполнения логического условия перехода, после выполнения команды перехода или команды сброса Стадии.
ISG - Initial Stage
(Начальная Стадия)
Команда Initial Stage (Начальная Стадия) используется, как правило, в первом сегменте программы RLL
PLUS
. Допускается включать в программу несколько Начальных Стадий. Они становятся активными, когда ЦПУ переходит в режим исполнения (RUN), и определяют точку начала исполнения программы.
JMP - Jump (Переход)
Команда Jump (Переход) позволяет программе перейти из текущей активной Стадии, в которой находится команда перехода, к другой Стадии.
NJMP - Not Jump
(Переход по НЕ)
Команда Not Jump (Переход по НЕ) позволяет программе перейти из текущей
активной Стадии, в которой находится команда перехода, к другой Стадии.
CV - Converge Stage
(Сходящаяся Стадия)
CVJMP - Converge Jump
(Переход схождения)
Команды Converge Stage используется с целью сведения определенных Стадий к одной Стадии
BCALL - Block Call (Вызов блока)
Команды блока стадий позволяют активизировать одновременно группу Стадий.
BLK - Block (Блок)
Команда Bloсk (Блок) является признаком начала блока Стадий
BEND - Block End
(Завершение блока)
Команда Block End является признаком завершения блока Стадий
Контроллер
Версия для
DS5 / DS6
DL05
5.10
DL06
2.10
D2-250-1
4.60
D2-260
2.40
D4-450
3.30
Интеллектуальные команды – I-BOX DL06
Одно из новшеств DirectSOFT5 и DirectSOFT6 это возможность использования I-BOX. В DirectSOFT6 количество I-BOX значительно увеличено. Команды IBox предназначены для облегчения процедуры
написания программ, но исполняемый контроллером код будет таким же, как и без применения этих
команд. Они работают как «макросы». Команды IBox можно использовать только с контроллерами,
приведенными в таблице. Эти контроллеры должны иметь Фирменное ПО
(firmware) соответствующей версии, не ниже. Для детального изучения I-BOX используйте руководства на I-BOX для
Вашего типа контроллера (на русском языке). Примеры программ с использованием IBox инсталлируются вместе с DirectSOFT
Перечень команд IBOX контроллера DL06
(I-BOX DirectSOFT6 выделены жирным шрифтом)
Основы программирования на RLL
ПЛК Системы 2004
69
Помошники для работы с аналоговыми сигналами - Analog Helper
ANLGCMB - Analog Combo Module Pointer Setup ANLGIN - Analog Input Module Pointer Setup ANLGOUT - Analog Output Module Pointer Setup ANSCL - Analog Scale BCD to BCD ANSCLB - Analog Scale Binary to Binary FILTER - Filter Over Time - BCD FILTERD - Filter Over Time - BCD Double
FILTERB - Filter Over Time - Binary FILTERBD - Filter Over Time - Binary Double
HILOAL - Hi/Lo Alarm - BCD HILOALD - Hi/Lo Alarm - BCD Double HILOALB - Hi/Lo Alarm - Binary HILOALBD - Hi/Lo Alarm - Binary Double
HILOALR - Hi/Lo Alarm - Real)
Помошники для работы с дискретными сигналами - Discrete Helper
OFFDTMR - Off Delay Timer ONDTMR - On Delay Timer ONESHOT - One Shot PONOFF - Push ON / Push OFF Circuit
Математические команды - Math
ABSBIN - Absolute Value - Binary
ABSR - Absolute Value - Real BCDTOR - BCD to Real with Implied Decimal Point BCDTORD - Double BCD to Real with Implied Decimal Point BINTOR - Unsigned Binary to Real BINTORD - Unsigned Double Binary to Real BINSTOR - Signed Binary to Real BINSTORD - Signed Double Binary to Real INCBYBCD - Increment By BCD
INCBYBCDD - Increment By BCD Double INCBYBIN - Increment By Binary INCBYBIND - Increment By Binary Double INCBYBR - Increment By Real DECBYBIN - Decrement By Binary DECBYBIND - Decrement By Binary Double DECBYBCD - Decrement By BCD DECBYBCDD - Decrement By BCD Double DECBYR - Decrement By Real
MATHBCD - Math - BCD MATHBIN - Math - Binary MATHR - Math - Real RTOBCD - Real to BCD w/Implied Decimal Point and Rounding RTOBCDD - Real to Double BCD w/Implied Decimal Point and Rounding RTOBIN - Real to Unsigned Binary
RTOBIND - Real to Double Unsigned Binary RTOBINS - Real to Signed Binary RTOBINSD - Real to Double Signed Binary SCALEB - Scale Value - Unsigned Binary SCALEBD - Scale Value - Unsigned Double Binary
SQUARE - Square - BCD SQUAREB - Square - Binary SQUARER - Square - Real SUMBCD - Sum BCD Numbers SUMBIN - Sum Binary Numbers SUMR - Sum Real Numbers
Основы программирования на языке RLL
ПЛКСистемы 2009
70
CTRADPT - CTRIO Add to Preset Table CTRCLRT - CTRIO Clear Preset Table CTREDPT - CTRIO Edit Preset Table CTREDRL - CTRIO Edit Preset Table and Reload CTRINPT - CTRIO Initialize Preset Table CTRINTR - CTRIO Initialize Preset Table on Reset CTRIO - CTRIO Config CTRLDPR - CTRIO Load Profile CTRRDER - CTRIO Read Error Code CTRRTLM - CTRIO Run To Limit Mode
CTRRTPM - CTRIO Run To Position Mode CTRVELO - CTRIO Velocity Mode CTRWFTR - CTRIO Write File To ROM
CTRELVL - CTRIO Edit Level CTRRGRD - CTRIO Register Read CTRRGWR - CTRIO Register Write CTRVEL2 - CTRIO Velocity Mode 2 CTRRTLM2 - CTRIO Run To Limit Mode 2 CTRRTPM2 - CTRIO Run to Position Mode 2
Команды работы с памятью - Memory
MOVEW - Move WORD MOVED - Move DWORD MOVER - Move Real
MOVRANGE - Move Range of V Using MOV MOVEFOR - Move Range of V Using FOR/NEXT)
Коммуникационные команды - Communications: Networking
ECOM100 - ECOM100 Config
ECRX - ECOM100 RX Network Read ECWX - ECOM100 WX Network Write NETCFG - Network Config NETRX - Network RX Read NETWX - Network WX Write
ECRDPL - ECOM100 Read PEERLINK Status
ECWRPLPA - ECOM100 - Write PEERLINK Pause
Коммуникационные команды ECOM100: EMAIL
ECEMAIL - ECOM100 - Send Email ECEMRDS - ECOM100 Restore Default Email Setup ECEMSUP - ECOM100 Email Setup
Коммуникационные команды ECOM100: Module Setup ECRDDES - ECOM100 Read Description ECRDMID - ECOM100 Read Module ID ECRDNAM - ECOM100 Read Name ECWRDES - ECOM100 Write Description ECWRMID - ECOM100 Write Module ID ECWRNAM - ECOM100 Write Name
Коммуникационные команды ECOM100: TCP/IP
ECDHCPD - ECOM100 Disable DHCP ECDHCPE - ECOM100 Enable DHCP ECDHCPQ - ECOM100 Query DHCP Setting ECIPSUP - ECOM100 IP Setup ECRDGWA - ECOM100 Read Gateway Address ECRDIP - ECOM100 Read IP Address ECRDSNM - ECOM100 Read Subnet Mask ECWRGWA - ECOM100 Write Gateway Address ECWRIP - ECOM100 Write IP Address ECWRSNM - ECOM100 Write Subnet Mask
Коммуникационные команды: ERM ERM - ERM Config
ERMSLAVE - ERM Read Slave Error Codes ERMSTATS - ERM Read Status
Команды для работы с модулями CTRIO
Основы программирования на RLL
ПЛК Системы 2004
71
Analog Input/Output Combo Module Pointer Setup ( ANLGCMB )
На первом скан-цикле контроллера, Analog Input/Output Combo Module Pointer Setup IBox настроит ЦПУ на работу с
комбинированным модулем аналогового ввода/вывода с
использованием "метода указателей (пойнтеров)". Так как IBox настраивает только один модуль, вам необходимо использовать столько IBox, сколько таких модулей есть в контроллере.
Analog Input Module Pointer Setup Parameters:
Base # (K0=Local)
Range: K0 - K4
Номер каркаса (Base), где расположен аналоговый модуль.
Slot #
Номер слота в каркасе, где расположен аналоговый модуль. Диапазон
возможных значений - Range: K0 - K7
Number of Input Channels
Сколько каналов должен опрашивать модуль. Range: K1 - K8
Input Data Format (0=BCD 1=BIN)
Формат данных, используемый для хранения аналоговых значений. Все
каналы будут использовать этот формат. Range: K0 - K1
Input Data Address
Начальный адрес блока V-memory, используемого для хранения аналоговых данных. Range: All User V memory
Number of Output Channels
Со сколькими каналами аналогового вывода должен работать. Range: K1 ­K8
Input Data Format (0=BCD 1=BIN)
Формат данных, используемый для хранения значений аналоговых
выходов. Все каналы будут использовать этот формат. Range: K0 - K1
Output Data Address
Начальный адрес блока V-memory, используемого для хранения аналоговых выходов. Range: All User V memory
Примечание:Этот IBox срабатывает автоматически на первом скане, поэтому не может иметь на входе дополнительной релейной логики.
В качестве примера приведем описание одной из команд I_BOX в табличной форме, так как оно
приведено в руководстве или в файле Help DirectSOFT и цепь с использованием этой команды для
настройки аналогового модуля, описание которого приведено в главе «Работа с аналоговыми модулями».
В главе «Работа с аналоговыми модулями» для настройки модуля использован стандартный метод c шестью командами. Применение I-BOX зрительно сокращает размер программы и не требует знания адресов ячеек памяти привязанных к слотам. Однако, если Вы посмотрите на цифру 55 – то она показывает сколько адресов использует одна эта команда I-BOX.
Основы программирования на языке RLL
ПЛКСистемы 2009
72
Специальные ячейки V-памяти для настройки модулей ввода/вывода
Номер слота
1 2 3
4
Тип данных и число каналов
V700
V710
V720
V730
Указатель (Pointer) адреса места сохранения входов
V701
V711
V721
V731
Указатель
(Pointer) адреса
места хранения выходов
V702
V712
V722
V732
Работа с модулями аналогового ввода/вывода
Для начала работы с дискретными входами / выходами в ПЛК не требуется никаких предварительных
действий - состояние физических входов / выходов автоматически отображаются в памяти процессора.
Все модули аналогового ввода многоканальные. Сигналы поступают на коммутатор измерительных
каналов - мультиплексор и далее на один АЦП. Оцифровованные значения всех каналов поочередно
выставляется на один и тот же регистр памяти. Одновременно со значением сигнала на регистры
поступает информация о номере активного канала и биты диагностики (если предусмотрено в модуле).
Поэтому перед началом обработки аналоговых сигналов их надо разложить по отдельным ячейкам V-
памяти. Для этого существует несколько способов: индивидуальный, мультиплексорный и пойнтерный
(метод указателей. Выбор способа зависит от серии контроллера и типа процессора, типа модуля и задач
пользователя. Развитие ПО контроллеров DirectLOGIC идет по пути максимально возможной реализации
настройки модулей в системном режиме. Если у аналоговых модулей контроллеров DL250,260 значения
отображались на регистры Х-ов (занимая адреса, но и позваляя использовать разные способы записи), то
у контроллеров DL06 значения сигналов отбражаются в системной области недоступной пользователи и
единственным способом записи является – метод указателей.
Работа с модулями аналогового ввода/вывода будет показана на примере использования F0-2AD2DA-2 -
комбинированного 2-х канального модуля ввода и 2-х канального вывода аналоговых сигналов
напряжения 0-5, 0-10В. Модуль установлен в слот 1 контроллера DL06.
Работа модуля
Модуль осуществляет опрос всех каналов асинхронно от цикла ЦП контроллера.
Быстродействие АЦП с учетом времени аналоговой фильтрации составляет 25 мс
при изменении сигнала от 0 до 95%.
Аналоговый сигнал преобразуется в 12-ти битный код и поступает на выходные
регистры связанные по внутренней шине с ЦПУ.
Выбор лиапазона сигнала на входе и выходе(5В или 10В) производится при помощи
перемычкек J2 на модуле индивидуально для каждого канала.
В большинстве случаев для модулей работающих в диапазоне 0-20, 4-20 мА
рекомендуется устанавливать внешний быстродействующий предохранитель на ток
32мА.
Примечание: Если Вы используете модуль аналогового ввода/вывода какого то типа впервые, внимательно прочитайте руководство, именно, на этот тип модуля. Модули разных типов могут отличатся способом подключения (2-х, 3-х и 4-х проводная схема), необходимостью установки предохранителя, количеством настроек осуществляемых при помощи перемычек (jumpers) или программой.
Прием и форматирование данных в DL06
У контроллера DL06 есть 4 слота для установки дополнительных модулей и каждому слоту соответствует
несколько ячеек V-памяти для настройки модулей ввода/вывода.
Основы программирования на RLL
ПЛК Системы 2004
73
Загрузка константы указывающей число каналов и формат
представления данных в аккумулятор .
К402 - четыре входа, два выхода и формат представления BCD
Альтернативный вариант: загрузка константы 8482. К8482 -четыре
входа, два выхода и формат представления чисел двоичный.
Вывод (запись) константы в специализированную ячеку V-памяти ,
соответствующую первому слоту.
Загрузка восьмеричного числа, которое будет указывать место
хранения значений входов. Первый канал - V2000, второй - V2001,
третий -V2002, четвертый - V2003
Вывод (запись) восьмеричного числа в ячейку Указателя входов
слота номер один.
Загрузка восьмеричного числа, которое будет указывать место
откуда будут браться значения выходов. Первый канал - из V2010,
второй - из V2011
Вывод (запись) восьмеричного числа в ячейку Указателя выходов
слота номер одина.
Структура слов V700, 710, 720, 730: младший байт-число каналов вывода, старший байт-число каналов
ввода.
Ввод числа 402 будет означать, что в модуле используются четыре входа, два выхода и данные будут
представлены в формате BCD («0» перед числом каналов).
Ввод числа 8482 будет означать, что в модуле используются четыре входа, один выход и данные будут
представлены в двоичном формате («8» перед числом каналов).
В ячейки памяти V701, V711, V721, V731, V702, V712, V722, V732 должны быть записаны восьмеричные
(октальные) числа, которые будут указывать адрес ячейки хранения данных для первого канала. Данные
для остальных каналов будут размещены с последующих ячейках.
Программа настройки модуля и опроса сигналов с использованием метода указателей.
Единственный метод работы с модулями F0-2AD2DA-2 – это использование специализированных
Указателей (Пойнтеров) соответствующим каждому месту установки модуля.
Основы программирования на языке RLL
ПЛКСистемы 2009
74
Масштабирование входных сигналов
После работы программы ввода анаоговых сигналов в ячейках V- памяти будут хранится числа в формате
BCD. Изменению аналогового сигнала от 4 до 20 мА будет соответствовать BCD число от 0 до 4096.
Во многих приложениях необходимо перевести эти значения в инженерные (технические) единицы для
использования в представлении информации персоналу.
Для этого преобразования можно использовать формулу:
Значение в техединицах = BCD значение х (H L) / 4095 + L;
где: Н – верхний предел шкалы датчика в технических единицах,
L – нижний предел шкалы датчика в технических единицах.
Слева представлена программа реализующая перевод значения
параметра в ячейке V2000 в число с диапазоном изменения от 0 до 1000.
Это позволит представлять число на панелях оператора в диапазоне от
0.0 до 100.0 для более точного представления.
Примечание: В главе Интеллектуальные команды – I-BOX DL06
приведен перечень новых команд, которые предназначены для более
удобного масштабирования значений параметров:
Analog Scale BCD to BCD (ANSCL) – Масштабирование BCD значений Analog Scale Binary to Binary (ANSCLB) – Масштабирование значений в
формате Binary (Decimal).
Основы программирования на RLL
ПЛК Системы 2004
75
LD K1
OUT V4003
LD V4000
ADD V4003
OUT V4000
TMR T70 K50
LD V4000
DIV K16
OUT V4001
POP
OUT V4002
T70
T70
_On
SP1
Примеры программ релейной логики
Пример 1: Программный генератор псевдослучайных чисел
Иногда в приложениях для работы программы или имитации входных сигналов необходимо использовать генератор случайных чисел. Простой генератор псевдослучайных чисел для контроллеров DirectLOGIC можно сделать на языке релейной логики. Приведенная ниже программа генерирует случайные числа в диапазоне 0 – 15 каждые 5 секунд и сохраняет их в ячейке V4002.
_FirstScan SPO
Программа работает так: каждый цикл содержимое V4000 увеличивается на 1 до 32 767. Число в V4000 делится на 16 каждые 5 секунд (настраивается константой таймера Т70) и остаток хранится в V4002. Если Вам нужен другой интервал деления (короче или длиннее), просто измените константу 100 мс таймера Т70. Если Вам нужен другой диапазон изменения случайных чисел измените величину делителя. Если Вы измените делитель с 16 на 100, диапазон изменения случайных чисел будет 0-99. Если изменить
на 1000, то будет 0-999
Основы программирования на языке RLL
ПЛКСистемы 2009
76
Пример 2: Перевод значений текущего значения счетчика секунд в формат: часы-минуты-
секунды.
Проблема, возникающая при необходимости представления информации в таком формате на панелях
оператора.
Основы программирования на RLL
ПЛК Системы 2004
77
Пример 3: Фильтрация/сглаживание сигналов методом скользящего среднего.
Проблемы, возникающие при работе с зашумленными аналоговых сигналами в большинстве случаев
решаются техническими средствами – правильным заземлением, экранированием, подбором и
настройкой преобразователей, фильтров и т.п.. Однако, и после принятых мер флуктуации сигнала могут
нежелательно влиять на работу контроллера системы управления.
Возникает необходимость в использовании программных способов борьбы со случайными импульсными
выбегами в значениях измеряемых переменных. Обычно для фильтрации используют сглаживание.
Алгоритмов сглаживания много. Один из них (с использованием формулы экспоненциадьного
сглаживания) приведенный в описании ПИД-регулятора и в руководствах на аналоговые модули будет
показан далее. Он используется для фильтрации относительно высокочастотных помех.
Еще одним из алгоритмов сглаживания зашумленных аналоговых сигналов является метод скользящего
среднего (Running average). Параметры настройки этого алгоритма - это число опросов и период
усреднения сигнала.
Метод состоит в получении последовательного набора значений сигнала, не обязательно с той же
частотой, что и скан-цикл ЦПУ и помещение их в таблицу. При каждом опросе новое значение помещают в
верхнюю строку таблицы, все предыдущие значения сдвигаются вниз. Последнее значение теряется.
Одновременно производится суммирование всех значений таблицы и деление на число опросов –
вычисляется среднее значение на скользящем интервале.
Для относительно медленно изменяющихся параметров (температура, уровень) этот метод сглаживания
хорошо подходит. Он позволяет избежать появления ложных аварийных сигналов от случайных скачков
величины параметра.
Пример программы для контроллеров DirectLOGIC приведен на следующей странице.
В этом примере сглаживается значение аналогового сигнала (12 бит -BCD) из ячейки V2000.. Контроллер
считывает это значение каждый скан-цикл, который может быть переменным или фиксированным.
Длительность скан-цикла, в большинстве случаев, находится в диапазоне 10 – 100мс.
Таблица значений находится в памяти, начиная с адреса V1200, и занимает 10 слов памяти (с V1200 до
V1211), т.е. длина таблицы 10 строк.
Сумма всех значений записывается в V1300 в формате BCD слова двойной длины, а результат –
скользящее среднее – в V1400 в формате BCD.
Период опроса – 100мс и число опросов 10. Интервал усреднения 1с.
Период опроса и число опросов участвующих в сглаживании можно изменять в соответствии с
конкретными требованиями системы управления.
Основы программирования на языке RLL
ПЛКСистемы 2009
78
Каждые 100мс при переходе значения SP5 из ON в OFF реле С0 срабатывает и держит значение в течении одного скан-цикла
Загружает значение длины таблицы
Преобразует октальное число 1200 в Шестнадцатиричное и загружает в младшие 16-ть бит аккумулятора Копирут таблицу начинающуюся с адреса V1200 и длиной 9 в таблицу с адреса V1201
Загружает аналоговое значение (0-4095) в аккумулятор
Копирует значение из младших 16-ти бит аккумулятора в
V1200
Загружает значение из V1200(значение параметра) в младшие 16-т бит аккумулятора
Прибавляет значение из V1201 к значению аккумулятора
Прибавляет значение из V1202 к значению аккумулятора
Прибавляет значение из V1203 к значению аккумулятора
Прибавляет значение из V1204 к значению аккумулятора
Прибавляет значение из V1205 к значению аккумулятора
Прибавляет значение из V1206 к значению аккумулятора
Прибавляет значение из V1207 к значению аккумулятора
Прибавляет значение из V1210 к значению аккумулятора
Прибавляет значение из V1211 к значению аккумулятора
Копирует значение из аккумулятора в V1300 и V1301
Делит суммарное значение на 10
Копирует значение из аккумулятора в V1400 . Это и есть скользящее среднее
Основы программирования на RLL
ПЛК Системы 2004
79
Загрузка значения аналогового сигнала в двоично-десятичном формате (BCD) из V2000 в аккумулятор. Контакт SP1 всегда замкнут.
Преобразование значения в аккумуляторе из двоично-десятичного
формата в двоичный формат. Это преобразование не нужно, если
аналоговое значение уже в двоичном формате.
Преобразование двоичного числа в аккумуляторе в действительное число
(Real).
Вычитание действительного числа, находящегося в ячейке V1400 из действительного числа в аккумуляторе. V1400 используется как рабочая ячейка памяти.
Умножение числа с плавающей точкой в аккумуляторе на 0.2
(коэффициент фильтрации) и сохранение результата в аккумуляторе.
Сложение действительного числа, хранящегося в ячейке V1400 с
действительным числом в аккумуляторе и сохранение результата в
аккумуляторе. Результат - фильтрованное текущее значение.
Копирование значения в аккумуляторе в ячейку V1400.
Преобразование числа с плавающей точкой в аккумуляторе в двоичный
формат и сохранение результата в аккумуляторе.
Преобразование числа в двоичном формате в аккумуляторе в двоично­десятичный формат.
Загрузка двоично-десятичного фильтрованного значения из аккумулятора в ячейку V1402 для использования в приложении.
BIN
BTOR
SUBR V1400
MULR R0.2
ADDR V1400
OUTD V1400
RTOB
BCD
OUT 1402
LD 2000
SP1
Пример 4: Фильтрация входных сигналов методом экспоненциального сглаживания
При работе с процессорными модулями DL250/350/450 или контролером DL06 можно использовать приведенную ниже программу для фильтрации (сглаживания) входных сигналов. Это особенно полезно при использовании D – составляющей PID-регуляторов. Аналоговое значение в двоично-десятичном формате (BCD) сначала надо преобразовать в двоичное число, так как отсутствуют команда преобразования BCD - чисел в формат действительных[ чисел. Ячейка V1400 в приведенном ниже примере используется как рабочая. Команда MULR используется для задания
коэффициента фильтрации, который может принимать значения от 0.1 до 0.9. В приведенном ниже
примере используется значение 0.2. При уменьшении значения коэффициента уровень фильтрации
возрастает. Можно задавать данный коэффициент с большей точностью, но обычно это не требуется.
Фильтрованное значение затем преобразуется снова в двоичный, а затем двоично-десятичный формат (BCD). Фильтрованное значение сохраняется в ячейке V1402 для использования в приложении.
Формула фильтра: Х
ф-тек
=
тек
– Х
)0.2 + Х
ф
ф
Основы программирования на языке RLL
ПЛКСистемы 2009
80
Пример 5: Использование указателей-пойнтеров
Использование метода указателя-пойнтера для создания таблицы.
Основы программирования на RLL
ПЛК Системы 2004
81
Другие способы программирования DL06
Помимо возможности создания программы на языке RLL в контроллере DL06 существуют другие,
несколько более специфичные способы программирования. Они основаны на прцедурах использующих
механизм предварительной настройки – Setup - процессора.О них мы только упомянем, это:
Программирование при помощи специальных графических объектов – Барабанных
командаппаратов (Drum Sequenser). Набор из нескольких типов Барабанных командаппаратов
управляемых по времени, по событию, по сочетанию управления по времени и событию позволяет
только при помощи одного этого инструмента создать программу Логического управления
объектом, например, пуском-остановом или программу управления циклическими процессами c
16-тью дискретными выходами.
Программирование ПИД-контуров регулирования. DL06 может иметь до 8-ми встроенных контуров,
каждый из которых функционирует в своем цикле независимо от скан-цикла контроллера.
Программирование и настройка контуров регулирования (в том числе, автоматическая)
производится при помощи специальных окон DirectSOFT (PLC > Setup > PID).
Контроллеры DL06 с встроенными входами/выходами постоянного тока могут использовать часть
входов, как высокоскоростные счетчики, а часть выходов для вывода импульсных сигналов.
Настройке этих входов/выходов на эти и другие функции посвящена отдельная большая глава в
руководстве на контроллер.
У контроллеров DL06 на лицевой панели есть панель-заглушка, вместо которой можно установить
жидкокристаллический символьный индикатор с клавиатурой (LCD). С помощью этого устройства
можно просматривать и изменять содержимое памяти контроллера, настраивать календарь,
вводить пароль, просматривать сообщения об ошибках, выводить сообщения. Для
программирования сообщений используютс специальная команда - LCD . Кроме встроенного
символьного ЖК-индикатора у ПЛК DirectLOGIC, существует самостоятельное устройство- панель
DV-1000 (Direct View) с аналогичными функциями. «Программирование» DV-1000 производится
также с помощью функций Setup контроллера.
Основы программирования на языке RLL
ПЛКСистемы 2009
82
Настройка портов DL06/DL260 на MODBUS и DirectNET
Первый шаг к реализации функции обмена данными с контролером состоит в корректной настройке
встроенных сетевых портов процессора для работы по протоколам MODBUS или DirectNET.
Это даст вам возможность подсоединить ПЛК DL06 к устройствам сети MODBUS RTU или к
устройствам в сети DirectNET.
Характеристики портов
Коммуникационный порт 1 - Com 1
Коммуникационный порт 2 - Com 2
Cвязь с DirectSOFT, панелями операторов и др.
6-контактов, RS232C 9600 бод (фиксировая) Контроль нечетности (фиксировано) 8 бит данных,1 стартовый и 1 стоповый биты Асинхронный, полудуплекс, DTE Протоколы (Автоопределение):
K-sequence (Slave) DirectNET(Slave) MODBUS (Slave)
Сетевой порт.
15-контактов, порт RS232C, RS422, RS485; Скорость передачи: 300 – 38400 бод Контроль нечетности (по умолчанию) 8 бит данных, 1 стартовый и 1 стоповый биты Асинхронный, полудуплекс, DTE Протоколы:
K-sequence (Slave) DirectNET(Master/Slave) MODBUS (Master/Slave) Непроцедурный/Принтер/ASCII In/Out
Выбор интерфейс сети
Многофункциональный порт DL06/DL260 предоставляет Вам возможность использования
интерфейсов RS-232C, RS-422, или RS-485.
Интерфейс RS-232 используется для связи между двумя устройствами.на коротких расстояний (15
метров максимум), Интерфейсы RS-422 / RS-485 предназначены для передачи на более расстояния
до 1000 м. и могут быть использованы для многоточечных сетей связи (от 1 до 247 устройств).
Настройка порта 2 на MODBUS
В DirectSOFT выберите в меню PLC > Setup
> Secondary Comm Port и вы увидите окно
(см.). Далее произведите настройку:
Протокол (Protocol): Установите метку
«MODBUS»
Время ожидания (Timeout). время
ожидания порта после посылки им
сообщения и до получения реакции
перед регистрацией ошибки
Обмен данными по последовательным портам
Основы программирования на RLL
ПЛК Системы 2004
83
Время задержки RTS (Ready to Send). RTS ON — это время между установлением сигнала на контакте RTS и передачей данных. RTS OFF — это время после окончания передачи данных и снятием сигнала с контакта RTS. При работе в многоточечной сети RTS ON должно быть не менее 5мс, Время задержки RTS OFF должно быть не менее 2мс. А если у Вас проблемы с синхронизацией, то эти времена должны быть увеличены.
Номер станции (Station Number). Для того, чтобы сделать порт ведущим устройством
MODBUS назначьте номер станции «1». Допустимый диапазон номеров станций для ведомых
устройством MODBUS — от 1 до 247, но сетевые команды ПЛК (WX/RX), используемые в режиме
Ведущего устройства, допускают для ведомых устройств только номера с 1 по 99. Каждое
ведомое устройство должно иметь уникальный номер. При включении питания порт
автоматически устанавливается в режим ведомого устройства, который сохраняется до тех пор,
пока DL не начнет выполнять сетевые команды релейной логики, использующие порт как
Ведущее устройство. После их выполнения порт возвращается в режим ведомого устройства.
Скорость передачи (Baud Rate). Доступны скорости передачи от 300 до 38400 бод. Сначала
выберите наибольшую скорость, и снижайте ее, если при передаче возникают ошибки в данных
или помехи в линии. Вы должны установить одинаковую скорость передачи данных для всех
устройств сети.
Стоповые биты (Stop Bits). Для использования в протоколе выберите 1 или 2 стоповых бита. Контроль четности (Parity). Для контроля ошибок выберите «нет», «четное» или «нечетное». Если Вы используете 2-х проводный RS485, используйте функцию подавления эхо-сигнала (Echo
Suppression)
Затем нажмите клавишу, указывающую на запоминание конфигурации Процессором
DL, и только потом нажмите «Close» - «Закрыть».
Настройка порта 2 на DirectNET
Настройка порта 2 на работу по DirectNET производится аналогично вышеописанному. У DirectNET
есть только дополнительная настройка:
Формат (Format). Выберите либо шестнадцатеричный (HEX), либо ASCII формат
Подробная информация по протоколу DirectNET с примерами программ есть в руководстве по
DirectNET (DA-DNET_M).
Примечание: протокол DirectNET не работает по интерфейсу – 2-х проводный RS485
Функционирование порта в режиме сетевого ведомого устройства
Рассмотрим, каким образом другие устройства в сети могут обращаться к порту процессора DL, который
сконфигурирован ранее как ведомое устройство MODBUS Slave (или DirectNET Slave).
Ведущее устройство MODBUS(или DirectNET) должно использовать протокол MODBUS RTU(или
DirectNET) для установления соединения с DL в качестве ведомого устройства.
Далее мы будем работать с протоколом MODBUS RTU. Программа Ведущего устройства должны посылать
код функции MODBUS и адрес MODBUS для указания ячейки памяти ПЛК.
В качестве Ведущего устройства будем использовать ПК с программой Modscan32.
В контроллере не требуется никаких команд релейной логики процессора для обмена информацией по
протоколам MODBUS или DirectNET в качестве ведомого устройства.
Основы программирования на языке RLL
ПЛКСистемы 2009
84
Коды функций MODBUS
Функция
Доступные типы данных DL
01
Чтение группы обмоток
Y, CR, T, CT
02
Чтение группы входов
X, SP
05
Установка/сброс одного реле
Y, CR, T, CT
15
Установка/сброс группы реле
Y, CR, T, CT
03,04
Чтение значения входного или холдинг регистров
V 06
Запись значения в один регистр
V
16
Запись значения в группу регистров
V
Указание адресов MODBUS
Существуют два способа, с помощью которых большинство программных средств Ведущего
устройства может специфицировать ячейку памяти ПЛК. Ими являются:
Указание типа данных и адреса MODBUS, Указание только адреса MODBUS.
Если программное обеспечение требует тип данных и адрес
Многие программные пакеты ведущих устройств позволяют указать тип данных MODBUS и адрес
MODBUS, которые соответствуют ячейке памяти ПЛК. При обращении к контроллерам
DirectLOGIC по протоколу MODBUS необходимо произвести пересчет адресов MODBUS в адреса
DirectLOGIC, так как типы данных и размещение регистров в памяти ПЛК отличается от принятого
в контроллерах Modicon.
Уравнение, применяемое для вычисления адреса, учитывает тип данных, который вы используете.
Типы данных ПЛК разделяются на две категории:
Дискретные, битовые — X, SP, Y, CR, S, T, C Слова, 16-ти битовые — V, Текущее значение таймера, Текущее значение счетчика
В любом случае Вы преобразуете, восьмеричный адрес ПЛК в десятичный и добавляете
стартовый адрес MODBUS. Адреса регистов MODBUS начинаются с «1», а у DL c «0».
Тип памяти DL06
Кол-во
Диапазон ПЛК (восьмеричный)
Диапазон адресов MODBUS (дес.)
Тип данных MODBUS
Входы X
256
X0-X377
2049-2304
Input Status-Входы
Специальные реле (SP)
512
SP0-SP777
3073-3584
Input Status-Входы
Выходы (Y)
256
Y0-Y377
2049-2304
Coil Status - Реле
Управляющие реле (CR)
512
C0-C777
3073-4584
Coil Status - Реле
Контакты таймера (T)
128
T0-T177
6145-6272
Coil Status - Реле
Контакты счетчика (СT)
128
CT0-CT177
6401-6528
Coil Status - Реле
Биты состояния Stage (S)
256
S0-S377
5121-5376
Coil Status - Реле
Тип данных Слово
Текущие значения таймера
128
V0-V177
1-128
Input Register -
Регистры входов Текущие значения счетчика
128
V1000-V1177
513-640
V-память
3968
V1200-V7377
641-3840
Holding Register­Регистры хранения
V-память, неразрушаемая
128
V7600-V7777
3969-4096
Поддерживаемые коды функций MODBUS.
Коды функций MODBUS определяют тип запроса: чтение или запись, а также относится ли запрос к одному
данному, либо к группе данных. Ниже приводятся коды функций MODBUS, поддерживаемые DL06.
Основы программирования на RLL
ПЛК Системы 2004
85
На следующих примерах показано, как сформировать адрес и тип данных MODBUS для программного
обеспечения ведущего устройства, в котором требуется этот формат.
Пример 1: Найти адрес MODBUS для ячейки памяти V2100
1. Найдите ячейку V-памяти в таблице.
2. Преобразуйте V2100 в десятичный вид: 1088 + 1
Регистр хранения 1089
Пример 2: Найти адрес MODBUS для выхода Y20
1. Найдите выхода Y в таблице.
2. Преобразуйте Y20 в десятичный вид: 16
Реле 2065
3. Прибавьте стартовый адрес для диапазона: 2049
Пример 3: Найти адрес MODBUS текущего значение ТА10
1. Найдите таймера в таблице.
2. Преобразуйте Т10 в десятичный вид: 8
3. Прибавьте стартовый адрес для диапазона: 1
Регистр входа 9
Пример 4: Найти адрес MODBUS для управляющего реле С54
1. Найдите управляющие реле в таблице.
2. Преобразуйте С54 в десятичный вид: 44
3. Прибавьте стартовый адрес для диапазона: 3073
Реле 3117
Если программное обеспечение требует только адрес MODBUS
Некоторые программы позволяют указывать только адрес MODBUS.
MODBUS разносит типы данных по диапазонам адресов и адреса достаточно для выбора типа данных и
ячейки памяти. Обычно в базовом программном обеспечении доступны два различных режима адресации:
Режим 484 или Режим 584/984
Режим 584/984 позволяет иметь доступ к большему числу ячеек памяти для каждого типа данных. Типы
данных ПЛК разделяются на две категории:
Дискретные — X, SP, Y, CR, S, T, C Слова — V, Текущие значение таймера, счетчика
В любом случае Вы преобразуете восьмеричный адрес ПЛК в десятичный и добавляете
соответствующий начальный адрес MODBUS .
Дискретный тип данных
Тип памяти DL06
Диапазон ПЛК (восьмерич)
Адрес режима
484
Адрес режима
584/984
Тип данных
MODBUS
Глобальные входы (GX)
GX0-GX1746
1001 - 1999
10001 - 10999
Входы
GX1747-GX3777
-
11000 - 12048
Входы
Входы (X)
X0-X1777
-
12049 - 13072
Входы
Специальные Реле (SP)
SP0-SP777
-
13073 - 13584
Входы
Глобальные выходы (GY)
GY0 – GY3777
1 - 2048
1 - 2048
Выходы
Выходы (Y)
Y0-Y1777
2049 - 3072
2049 - 3072
Выходы
Управляющие Реле (CR)
C0-C3777
3073-5120
3073-5120
Выходы
Контакты Таймера (T)
T0-T377
6145 - 6400
6145 - 6400
Выходы
Контакты Счетчика (СT)
CT0-CT377
6401 - 6656
6401 - 6656
Выходы
Биты состояния Стадий (S)
S0-S1777
5121 - 6144
5121 - 6144
Выходы
Основы программирования на языке RLL
ПЛКСистемы 2009
86
Тип данных «Слово»
Регистры
Диапазон ПЛК (восьмерич)
Вход/Хранение (режим 484)
Вход/Хранение (режим 584/984)
V память(Текущее значение Таймеров)
V0-V377
3001/4001
30001/40001
V память(Текущее значение Счетчиков)
V1000-V1177
3513/4513
30513/40513
V-память
V1200-V1377
3641/4641
30641/40641
V1400-V1746
3769/4769
30769/40769
V1747-V1777
-
31000/41000
V2000-V7377
-
41025
V10000-V17777
-
44097
Пример 1: Найти адрес MODBUS V2100 Режим 584/984
Адрес ПЛК (Дес.)+Начальный адрес режима
1. Найдите V-память в таблице. V2100 = 1088 десятичное
2. Преобразуйте V2100 в десятичный вид (1088) 1088 + 40001 =
41089
3. Добавьте стартовый адрес для режима(40001).
Для типов данных «Слово». . . Адрес ПЛК (десят.) + Соответствующий адрес режима
Пример 2: Найти адрес MODBUS для Y20 Режим 584/984
Адрес ПЛК (Дес.)+Стартовый адрес режима
1. Найдите выходы Y в таблице. Y20 = 16 десятичное
2. Преобразуйте Y20 в десятичный вид (16) 16 + 2049 =
2065
3. Добавьте стартовый адрес для данного диапазона (2049)
Пример 3: Найти адрес MODBUS для реле C54 Режим 584/984
Адрес ПЛК (Дес.)+Стартовый адрес + Режим
1. Найдите управляющие реле в таблице. C54 = 44 десятичное
2. Преобразуйте C54 в десятичный вид (44) 44 + 3073 =
3117
3. Добавьте стартовый адрес для данного диапазона (3073)
Связь с контроллером по MODBUS с помощью программы MODSCAN32
Запустите программу MODSCAN32. Программа работает в демо-режиме. После открытия основного окна,
надо:
Выбрать Connection > Connect > Connection Details Настроить параметры связи: Connect Using > COM1, Configuration > 9600, 8,1, ODD. Выбрать Protocol Selection > Standard RTU, OK, Выбрать нужный Modbus Point Type (и код соответствующей команды Modbus) Рассчитать смещение адресов и занести его в окно Address Целесообразно сократить число запрашиваемых данных Length (Длина) до 10. Поэкспериментируйте с разными типами данных. Для проверки работы команд 03/04 удобно использовать системные переменные контроллеров
DirectLOGIC: V7765- число скан - циклов, V7766 – число секунд
Помимо просмотра данных в программе можно использовать просмотр самих сообщений:Setup >
Display Option > Show Traffic.
Основы программирования на RLL
ПЛК Системы 2004
87
Функционирование порта в режиме ведущего устройства сети
DL06 может взаимодействовать с устройствами по сети MODBUS или DirectNET в качестве
ведущего устройства. Как MODBUS, так и DirectNET могут иметь в сети единственное ведущее
устройство и множество ведомых устройств. Ведущим устройством (master) является такой
элемент сети, который может инициировать запросы в сети.
При использовании
контроллера DL06 в
качестве ведущей
станции применяют
команды WX / RX,
которые инициируют
сетевые операции
записи или чтения.
Перед выполнением
этих команд вам
необходимо загрузить
данные, относящиеся к
операции чтения или записи в стек аккумулятора процессора.
Команды WX или RX процессор использует информацию в этом стеке наряду с данными поля
команды, чтобы полностью определить задачу, которая выдается порту.
Следующая пошаговая процедура содержит информацию, необходимую вам для настройки вашей
программы релейной логики на получение данных из ведомого устройства сети.
С помощью MODSCAN32 можно также управлять (изменять значения) данными, кликнув мышкой на
значение соответствующей переменной.
Примечание: В MODSCAN32 используется задание адреса с разделением на тип данных
Modbus Point Type и Address. А в окне принятых данных указан полный адрес.
Основы программирования на языке RLL
ПЛКСистемы 2009
88
Шаг 1: указать номер порта ведущего устройства и номер ведомого устройства
Первая команда загрузки (LD) определяет номер
коммуникационного порта ведущего устройства сети
(DL06) и адрес ведомой станции. Эта команда может
адресовать до 99 ведомых устройств MODBUS или до
90 ведомых устройств DirectNET. Справа показан
формат слова. «F2» в верхнем байте указывает на
использования правого порта процессора DL06 с
номером 2. Младший байт содержит номер адреса
ведомого устройства в BCD (от 01 до 99).
У контролеров DL250/260 сетевой порт 2 имеет
программный номер 1, поэтому его адрес в
команде: F1
Шаг 2: загрузить число байтов для передачи
Вторая команда загрузки (LD) определяет число байтов,
которые необходимо передать между ведущим и ведомым
устройствами в последующей команде WX или RX.
Загружаемое значение должно быть в диапазоне от 1 до 128 в
формате BCD.
Число задаваемых байт зависит от типа данных, который вы
хотите получить. В таблице приводятся диапазоны байтов
для различных типов данных DirectLOGIC
Память DL 05/06/205/350/405
Байт
V-память
2
Текущее значение ТA / СTA
2
Входы (X, SP)
1
Выходы (биты Y, C, Stage, T/CT)
1
Шаг 3: указать область памяти ведущего устройства
Третьей командой в последовательности RX или WX
является команда загрузки адреса (LDA). Ее назначение —
загрузить начальный адрес области памяти, которая должна
быть передана. Получая на входе восьмеричное число,
команда LDA преобразует его в шестнадцатеричное число, а
результат помещает в аккумулятор.
По команде WX Процессор DL06 посылает предварительно
определенное число байтов из области памяти, начиная с
определенного LDA адреса.
Основы программирования на RLL
ПЛК Системы 2004
89
По команде RX процессор DL06 считывает предварительно определенное число байтов из
ведомого устройства, помещает полученные данные в область памяти, начиная с определенного
в команде LDA адреса.
Шаг 4: указать область памяти ведомого устройства
Последней командой в нашей последовательности
является сама команда WX или RX. Используйте WX
для записи в ведомое устройство, а RX — для чтения
с ведомого устройства. Все четыре наши команды
показаны справа. С помощью последней команды вы
должны определить начальный адрес и
действительный тип данных для ведомого устройства.
Ведомые устройства DirectNET в командах WX и RX указывают те же адреса, что и собственные
адреса ввода/вывода .
Ведомые устройства MODBUS DL405, DL205 или DL06 в командах WX и RX указывают те же
адреса, что и собственные адреса ввода/вывода.
Передача данных из программы релейной логики
Обычно передача данных по сети продолжается
дольше, чем одно сканирование. Перед началом
очередной операции программа должна ожидать
окончания предыдущей передачи данных
Порт 2, имеет два связанных с ним Специальных
Реле. Один из них указывает «Порт занят» (SP116),
другой указывает «Ошибка связи порта» (SP117).
Приведенный выше пример показывает
использование этих контактов для сетевого ведущего
устройства, который только считывает с устройства
(RX). Бит «Порт занят» находится в состоянии
«включен», когда ПЛК осуществляет обмен с ведомым
устройством. Когда этот бит «выключен», программа
может инициировать следующий сетевой запрос.
Основы программирования на языке RLL
ПЛКСистемы 2009
90
Блокировки многократного чтения и записи
Если вы применяете многократные чтения и записи в
программе RLL, то вы должны взаимно блокировать
цепи передач, чтобы обеспечить их выполнение. Если
вы не применяете взаимоблокировки, то Процессор
выполнит только первую передачу. Это происходит
потому, что порт может одновременно управлять
только одной транзакцией.
На примере справа после выполнения команды RX
устанавливается С100. Когда порт завершает обмен,
выполняется вторая подпрограмма и С100
сбрасывается.
Если вы используете RLL
plus
, то вы можете включить
каждую подпрограмму в отдельную стадию программы
для ее корректного выполнения и переходить с одной
стадии на другую, давая возможность только одной из
подпрограмм быть активной в каждый момент
времени.
Использование функции 04 MODBUS в командах RX / WX
В командах RX/WX нет явного указания код функции 03 или 04. По умолчанию используется чтение 03.
Для того чтобы использовать Функцию 04 MODBUS (чтение регистра входов, адреса 30001 и далее) в
контроллерах DL05/06, DL250-1/260, DL350 и DL450, поместите число 4 на место наиболее значащего
разряда (4xxx) в константу указывающую количество передаваемых байт. Чтобы работать должным
образом с этим режимом, все четыре цифры должны быть введены.
Максимальное значение константы – 4128. Это связано с
ограничением команд RX/WX (максимум 128 байт).
Команда RX использует функцию 04 (30001 диапазон),
если число 4 в наиболее значащем разряде слова.
Основы программирования на RLL
ПЛК Системы 2004
91
Функционирование порта в режиме ведущего устройства сети MODBUS (команды MRX и MWX)
DL06/DL260 может связываться по сети MODBUS в качестве ведущего устройства, применяя команды
чтения/записи: MRX и MWX. Эти команды дают вам возможность использовать стандартную адресацию
MODBUS в программе релейной логики без необходимости производить преобразование восьмеричного в
десятичное число. В сети MODBUS один ведущий / множество ведомых устройств. Ведущий -
единственный участник сети, который может инициировать запросы в сети.
Поддерживаемые функциональные коды MODBUS
Коды функций MODBUS определяют тип запроса: чтение или запись, а также относится ли запрос к одному
данному, либо к группе данных. DL06 поддерживает коды команд MODBUS, описанные ниже.
Код MODBUS
Назначение
Доступный тип данных
DL
01
Считывание группы реле
Y,CR,T,CT
02
Считывание группы входов
X,SP
05
Установка/сброс одиночного реле (только для одного ведомого)
Y,CR,T,CT
15
Установка/сброс группы реле
Y,CR,T,CT
03
Считывание значения из одного или из большего количества регистров хранения (Holding registers)
V
04
Считывание значения из одного или из большего количества регистров входов (Input registers)
V 06
Запись значения в один регистр (только для ведомого)
V
07
Считывание регистров состояния (Exeption status)
V
08
Диагностика
V
16
Запись значения в группу регистров
V
Настройка порта 2 на MODBUS
Настройте порт 2 на MODBUS, как было описано ранее с Сетевым адресом – Station number - 1
Основы программирования на языке RLL
ПЛКСистемы 2009
92
Чтение по сети MODBUS (MRX)
Команда чтения по сети MODBUS (MRX) используется DL06
в режиме ведущего устройства сети для чтения блока
данных из подключенного ведомого устройства и записи
данных в свои адреса V-памяти.
Команда предусматривает выбор пользователем
функционального кода MODBUS, адреса ведомого
устройства, начальных адресов в ведущем и ведомом
устройстве, числа передаваемых элементов, формата
данных MODBUS и Адреса Буфера ошибок выполнения
(Exception Response Buffer).
Примечание: Номер сетевого порта в этой команде -2
(В командах WX/RX этот номер -1).
Номер порта (Port Number): должен быть Port 2 (K2) Адрес ведомого (Slave Address): Определите адрес ведомой станции (0247) Функциональный код (Function Code): Следующие функциональные коды MODBUS поддерживаются
командой MRX:
01 – Чтение группы реле
02 – Чтение группы входов
03 – Чтение регистров хранения
04 – Чтение входных регистров
07 – Чтение регистров состояния (Exeption status)
08 – Диагностика
Начальный адрес памяти ведомого (Start Slave Memory Address): Адрес памяти ведомого устройства
откуда должны быть считаны данные. Смотри таблицу.
Начальный адрес памяти ведущего (Start Master Memory Address): Адрес памяти ведущего устройства
куда должны быть записаны данные. Смотри таблицу.
Число элементов (Number of Elements): Количество реле, входов, регистров, которое необходимо
прочитать. Можно использовать константу или ячейку памяти.
Формат данных (MODBUS Data Format): MODBUS 584/984 или 484. Буфер ошибок выполнения (Exception Response Buffer)
Диапазоны адресов ведомого устройства для команды MRX
Функциональный код
Формат данных
MODBUS
Диапазоны адресов ведомого 01 – Чтение реле
484
1–999
01 – Чтение реле
584/984+
1–65535
02 – Чтение состояния входов
484
1001–1999
02 – Чтение состояния входов
584/984+
10001–19999 (5 цифр) или 100001– 165535 (6 цифр)
03 – Чтение регистров хранения
484
4001–4999
03 – Чтение регистров хранения
584/984+
40001–49999 (5 цифр) или 4000001– 465535(6 цифр)
04 – Чтение входных регистров
484
3001–3999
Основы программирования на RLL
ПЛК Системы 2004
93
04 – Чтение входных регистров
584/984+
30001–39999 (5 цифр) или 3000001– 365535 (6 цифр)
07 – Чтение регистров состояния
484 и 584/984+
Нет доступа
08 – Диагностика
484 и 584/984+
065535
Диапазоны адресов ведущего устройства для команды MRX
Тип данных операнда
Диапазон DL06
Входы X
0–777
Выходы Y
0–777
Управляющие реле C
0–1777
Биты стадий S
0–1777
Биты таймеров T
0–377
Биты счетчиков CT
0–177
Специальные реле SP
0–777
V–память V
Вся
Удаленные входы GX
03777
Удаленные выходы GY
03777
Запись в сети MODBUS (MWX)
Команда записи в сети MODBUS (MWX) используется
DL06 в режиме ведущего устройства сети для записи
блока данных из ведушего в память подключенного
ведомого устройства.
Команда предусматривает выбор пользователем
функционального кода MODBUS, адреса ведомого
устройства, начальных адресов в ведущем и ведомом
устройстве, числа передаваемых элементов, формата
данных MODBUS и места буфера ошибок
выполнения.
Примечание: Номер сетевого порта в этой
команде -2 (В командах WX/RX этот номер -1).
Номер порта (Port Number): должен быть Port 2 (K2) Адрес ведомого (Slave Address): Определите адрес ведомой станции (0–247) Функциональный код (Function Code): Следующие функциональные коды MODBUS
поддерживаются командой MWX:
05 – Установка одного реле (Force Single Coil)
06 – Установка (Запись) одного регистра (Preset Single Register)
08 – Диагностика
15 – Установка нескольких реле (Force Multiple Coil)
16 – Установка (Запись) нескольких регистров (Preset Multiple Register)
Начальный адрес памяти ведомого (Start Slave Memory Address): Начальный адрес памяти
ведомого устройства куда должны быть записаны данные.
Начальный адрес памяти ведущего (Start Master Memory Address): Начальный адрес памяти
ведомого устройства откуда должны быть записаны данные
Основы программирования на языке RLL
ПЛКСистемы 2009
94
Число элементов (Number of Elements): Количество реле или регистров, которое необходимо
записать. Это поле активно только при выборе функциональных кодов 15 или 16.
Формат данных (MODBUS Data Format): MODBUS 584/984 или 484. Буфер ошибок выпонения (Exception Response Buffer): Адрес памяти ведущего устройства,
куда будет помещены ошибки выполнения.
Диапазоны адресов ведомого устройства для команды MWX
Функциональный код
Формат данных
MODBUS
Диапазоны адресов ведомого
05 – Установка одного реле
484
1–999
05 – Установка одного реле
584/984+
1–65535
06 – Установка одного регистра
484
4001–4999
06 – Установка одного регистра
584/984
40001–49999 (5 цифр или 400001–465535 (6 цифр)
08 – Диагностика
484 и 584/984+
0-65535
15 – Установка нескольких реле
484
1-999
15 – Установка нескольких реле
584/984+
1-65535
16 – Установка нескольких регистров
484
4001-4999
16 – Установка нескольких регистров
584/984+
40001–49999 (5 цифр) или 400001–465535 (6 цифр)
Диапазоны адресов ведущего устройства для команды MWX
Тип данных операнда
Диапазон DL06 / DL260
Входы X
0–777
Выходы Y
0–777
Управляющие реле C
0–1777
Биты стадий S
0–1777
Биты таймеров T
0–377
Биты счетчиков CT
0–177
Специальные реле SP
0–777
V–память V
Вся
Удаленные входы GX
03777
Удаленные выходы GY
03777
Число элементов в команде MWX
Тип данных операнда
Диапазон DL06 / DL260
V–память V
Вся
Константы K
12000
Буфер ошибок выполнения команды MWX
Тип данных операнда
Диапазон DL06 / DL260
V–память V
Вся
Основы программирования на RLL
ПЛК Системы 2004
95
Примеры работы с командами MRX/MWX в DirectSOFT
Порт 2 DL06/DL260 имеет два, связанных с ним, специальных контакта реле:
SP116 указывает “Порт занят”, а SP117 - ”Ошибка связи порта”.
Бит “Порт занят” включен, в то время, когда ПЛК связывается с ведомым устройством. Если этот
бит выключен, то программа может инициировать следующий сетевой запрос.
Бит “Ошибка связи порта” включается, когда ПЛК обнаружил ошибку. Он должен проверяться
перед любым обращением к сети, так как бит ошибки сбрасывается после того, как команда MRX
или MWX выполнена. Обычно связь по сети продолжается дольше одного цикла сканирования
процессора. Программа должна ждать окончания сеанса связи перед стартом следующей
посылки.
Программа, считывает значения числа секунд часов контроллера (V7766) и записывает его в
Регистр хранения (Holding Register) 40001 ведомого устройства с адресом 1
(например, ModSIM). В команде использован Функциональный код 06 –Запись одного регистра.
Контроль работы связи.
SP116 будет включаться каждый раз при опросе сети. Вы можете проверять увеличение этого
счетчика перед выполнением команд MWX и MRX. Возможные ошибки, при которых счетчик не
будет увеличиваться. .
1
Основы программирования на языке RLL
ПЛКСистемы 2009
96
SP117 включится когда:
1) Подчиненное устройство посылает ответ "Ошибка выполнения" Если эта ситуация появилась,
то просмотрите ячеки V-памяти, связанные с той командой. 2) Проблемы с кабелем. 3) Настройки
связи устройств не соответствуют друг другу. Например: Скорость обмена, контроль четности,
количество стоповых бит. 4) Опрос несуществующего в сети адреса
При хорошем состоянии связи, SP116 будет увеличивать счетчик, а SP117 - нет. Могут появляться
случайные ошибки связи из-за высокого уровня электромагнитных помех. Для каждого проекта
необходимо задать какой-то допустимый "процент" ошибок по связи. Обычно количество ошибок
ниже 10 % не слишком сильно влияет на пропускную способность сети.
2
Взаимная блокировка многократных команд чтения и записи
Если вы применяете команды чтения и записи многократно в программе RLL, то вы должны взаимно
блокировать команды, чтобы обеспечить их выполнение. Если вы не применяете взаимные
блокировки, то процессор выполнит только первую команду. Это происходит потому, что порт может
одновременно управлять только одной транзакцией. В показанном примере, после выполнения
команды RX устанавливается С100. Когда порт завершает коммуникационную задачу, С100
сбрасывается.
Если вы используете Стадийное программирование RLL
plus
, то вы можете включить каждую цепь в
отдельную стадию программы для ее корректного выполнения и переходить с одной стадии на
другую, давая возможность только одной цепи из программ быть активной в каждый момент времени.
Эта цепь делает запись по сети MODBUS в первый регистр хранения 40001 ведомого устройства с
адресом 1. Записываемое значение хранится в ячейке V2000. Функциональный код (06) записывает
только в один регистр.
Только одна сетевая команда (WX, RX, MWX, MRX) может быть выполнена в одном цикле
сканирования. В этом причина необходимости использования битов для взаимной блокировки. При
использовании нескольких сетевых команд на одном порту используйте команду сдвига регистра
(Shift Register).
3
Основы программирования на RLL
ПЛК Системы 2004
97
Эта ветвь выполняет чтение сети MODBUS из первых 32 реле ведомого устройства с адресом 1.
Данная команда последовательно разместит 32 значения реле в битовую память ведущего, начиная
с C0.
4
Проверка передачи данных контроллером по MODBUS с помощью программы MODSim32
Для проверки работы контроллера в режиме ведущего (master), надо создать ведомое устройство (slave) ,
которое будет принимать сигналы ведущего.
В качестве ведомого устройства мы будем использовать компьютер с программой MODSim32.
Запустите программу MODSim32. Программа работает в демо-режиме. После открытия основного окна,
надо:
Выбрать File > NEW Далее Connection > Connect > COM1….. SetUp Comm Port2 Настроить параметры связи : SetUp Comm Port2 > RTU, 9600, 8,1, ODD, OK. Выбрать нужный Modbus Point Type (и код соответствующей команды Modbus) Рассчитать смещение адресов и занести его в окно Address Целесообразно сократить число запрашиваемых данных Length (Длина) Поэкспериментируйте с разными типами данных. И изменяя программу вы контроллере для
чтения/записи разных типов данных.
Для проверки работы команд 03/04 удобно использовать системные переменные контроллеров
DirectLOGIC: V7765- число скан - циклов, V7766 – число секунд
Помимо просмотра данных в программе можно использовать просмотр самих сообщений: Display >
Show Traffic.
С помощью MODSSim32 можно также управлять (изменять) данными, кликнув мышкой на значение
соответствующей переменной (если в контроллере программа считывает данные с ведомого
устройства, например из регистров Modbus в выходы Y).
Примечание: В MODSim32 используется задание адреса с разделением на тип данных (Modbus Point
Type и Address. А в окне принятых данных указан полный адрес.
Основы программирования на RLL
PLUS
Введение в стадийное программирование
По сравнению с решениями, использующими язык релейной логики (RLL) в чистом виде, стадийное
программирование предоставляет более легкий способ организации и построения программ для решения
сложных прикладных задач. Стадийное программирование не заменяет и не отменяет использование
традиционных программ на языке релейной логики. Именно поэтому стадийное программирование
называют RLL
программирование всего лишь позволяет организовать RLL-программу в виде отдельных групп, каждая из
которых состоит из команд обычных RLL-программ. Такие группы называются "стадиями". В результате
разработка релейных программ становится более быстрой и интуитивно понятной в сравнении с
традиционными языками релейной логики.
Программисты, работающие с ПЛК, привыкли к использованию
языка релейной логики, применяя его для большинства ПЛК, и
зачастую относятся скептически, а иногда и со страхом к изучению
plus
. Полученные ранее знания, а также предыдущий опыт не окажутся лишними. Стадийное
Преодоление "боязни стадий"
такой техники программирования, как стадийное
программирование.
Обладая большими возможностями при решении задач,
подчиняющихся правилам булевой алгебры, язык релейной логики
обладает одновременно и рядом недостатков:
С большими программами трудно разбираться из-за отсутствия в
них какой-либо структуры.Когда в процессе наступает сбой,
довольно сложно обнаружить цепь, в которой произошла ошибка.
В дальнейшем программу очень сложно модифицировать,
поскольку ее структура имеет другую логику, отличную от логики
решаемой прикладной задачи.
Знакомство с понятием "состояние процесса"
Тому, кто знаком с принципом исполнения программ, написанных на языке релейной логики, известно, что
ЦПУ исполняет релейную программу последовательно и непрерывно - циклически. Цикл работы состоит из
трех основных этапов:
1. Чтение входов.
2. Исполнение релейной программы.
3. Запись выходов.
Изменение состояния на входе может привести к изменению состояния на выходе всего за несколько миллисекунд.
Большинство же производственных процессов состоит из серии операций или состояний, каждое из
которых длится несколько секунд, минут или даже часов. Такие состояния можно назвать "состояниями
процесса". Каждое "состояние процесса" в любой момент времени является либо активным, либо
неактивным.
ПЛК Системы, Москва 2009 г.
Основы программирования на RLL
ПЛК Системы 2004
99
Релейную программу тоже можно разбить на отдельные секции, называемые "стадиями". Каждая "Стадия" может
представлять собой состояние процесса. Но прежде чем перейти к подробному описанию программирования
Стадий, мы опишем механизм, который позволит нам понять один из способов создания стадийных программ и
этот механизм - диаграммы переходов состояний.
Зачем нужны диаграммы состояний
Сначала необходимо отвлечься от циклического принципа работы ПЛК и сосредоточиться на состояниях
процесса, которые требуется идентифицировать. Ясное понимание и четкий анализ прикладной задачи -
вот наилучший способ создания эффективных программ.
Диаграмма состояний - это инструмент, который позволяет нам наглядно представить картину
автоматизируемого процесса!
Мы вскоре убедимся, что если картина процесса была воссоздана правильно, то будет правильной и
создаваемая программа!
Процесс с двумя состояниями
На рисунке справа показан простой процесс, заключающийся в
управлении промышленным двигателем. Для включения двигателя будем
использовать зеленую кнопку без фиксации, а для отключения - красную кнопку без фиксации.
Управляя установкой, оператор нажимает на соответствующую кнопку.
Нажатие длится около секунды. Таким образом, в процессе имеется два состояния: ВКЛ и ВЫКЛ.
На следующем этапе мы рисуем диаграмму переходов состояний,
показанную на рисунке справа. На диаграмме показаны два состояния, ВЫКЛ и ВКЛ, объединенные двумя
линиями переходов. Когда верно событие Х0, происходит переход от ВЫКЛ к ВКЛ. Когда верно Х1,
происходит переход от ВКЛ к ВЫКЛ.
Внимательно следуя за ходом мысли, вы, должно быть, уже поняли, в чем состоит идея диаграмм
переходов состояний, и в чем заключается их сила. В нашем примере контроллер имеет выход Y0,
который находится в состоянии логической "1", когда наступает состояние ВКЛ.
Теперь попробуем реализовать диаграмму состояний в виде RLL, а затем в виде стадийной программы.
Это позволит понять взаимосвязь между рассматриваемыми способами решения задачи.
Показанная справа диаграмма переходов состояний - есть не что
иное, как нужная нам картина решаемой задачи. Она иллюстрирует
задачу абсолютно независимо от используемого нами языка
программирования. Другими словами, нарисовав диаграмму, мы в
результате решим задачу управления!
Для начала переведем диаграмму состояний на традиционный язык релейной логики. Затем попробуем
перевести диаграмму на язык стадийного программирования.
Основы программирования на языке RLL
ПЛКСистемы 2009
100
Программа на языке RLL
Решение в виде RLL-программы показано справа. В состав программы
входит самоблокирующееся реле управления C0. Когда нажата кнопка
включения (Х0), возбуждается выходная обмотка С0, и контакт С0 во
второй цепи переходит во включенное состояние с
самоудерживанием. Итак, Х0 переводит защелку С0 во включенное
состояние, и последняя остается включенной после размыкания
контакта X0. Выход управления двигателем Y0 также будет запитан,
поэтому двигатель будет включен.
Нажатие кнопки выключения (Х1) приводит к размыканию нормально замкнутого контакта Х1, который
сбрасывает защелку. Выход управления двигателем Y0 отключается, когда отключается обмотка
защелки С0.
Эквивалент программы на языке стадий
Решение в виде стадийной программы показано на рисунке справа.
Элементы Стадий S0 и S1, включенные последовательно в левую шину,
соответствуют состояниям ВЫКЛ и ВКЛ. Цепи релейной программы
относятся к той Стадии (прямоугольному элементу), под которой они
расположены.
Это означает, что ПЛК должен опрашивать цепи только тогда, когда
соответствующая Стадия, под которой они расположены, является
активной!
Предположим теперь, что работа начинается в состоянии ВЫКЛ, т.е.,
активной является Стадия S0. По нажатию кнопки включения (Х0)
происходит переход к следующей Стадии (переключение состояния).
Выполняется команда JMP S1, которая просто сбрасывает бит Стадии S0
и устанавливает бит Стадии S1. Поэтому в следующем цикле ПЛК ЦПУ не
будет выполнять Стадию S0, а выполнит Стадию S1.
Мы хотим, чтобы в состоянии включения (S1) двигатель работал. Поскольку специальный контакт реле
SP1 всегда включен, Y0 включит двигатель.
По нажатию кнопки выключения (Х1) происходит возврат к состоянию выключения. Выполняется
инструкция JMP S0, которая просто сбрасывает бит Стадии S1 и устанавливает бит Стадии S0. В
следующем цикле ПЛК ЦПУ не исполняет
Стадию S1, поэтому выход управления
двигателем Y0 выключается. Состояние
выключения -(Стадия 0) наступит в следующем
цикле.
Давайте сравним
Пока никаких особых преимуществ стадийного
программирования не видно. Напротив,
стадийная программа занимает больше места
Loading...