DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 17:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 09:48 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Владимир Ситников (спасибо ему) начал обсуждение на нашем форуме новой проблемы, которая ранее здесь никогда не обсуждалась. Проблема называется так:

Язык ДРАКОН и программируемые логические контроллеры (ПЛК)

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

Цитата:
Программируемый логический контроллер

Материал из Википедии — свободной энциклопедии

Программи́руемый логи́ческий контро́ллер (сокр. ПЛК; англ. programmable logic controller, сокр. PLC; более точный перевод на русский — контроллер с программируемой логикой), программируемый контроллер — электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов.

В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания и практически без вмешательства человека.
Иногда на ПЛК строятся системы числового программного управления станков.

ПЛК — устройства, предназначенные для работы в системах реального времени.

ПЛК имеют ряд особенностей, отличающих их от прочих электронных приборов, применяемых в промышленности:

в отличие от микроконтроллера (однокристального компьютера) — микросхемы, предназначенной для управления электронными устройствами — областью применения ПЛК обычно являются автоматизированные процессы промышленного производства в контексте производственного предприятия;

в отличие от компьютеров, ориентированных на принятие решений и управление оператором, ПЛК ориентированы на работу с машинами через развитый ввод сигналов датчиков и вывод сигналов на исполнительные механизмы;

в отличие от встраиваемых систем ПЛК изготавливаются как самостоятельные изделия, отдельные от управляемого при его помощи оборудования.

В системах управления технологическими объектами логические команды, как правило, преобладают над арифметическими операциями над числами с плавающей точкой, что позволяет при сравнительной простоте микроконтроллера (шины шириной 8 или 16 разрядов), получить мощные системы, действующие в режиме реального времени.

В современных ПЛК числовые операции в языках их программирования реализуются наравне с логическими.

Все языки программирования ПЛК имеют лёгкий доступ к манипулированию битами в машинных словах, в отличие от большинства высокоуровневых языков программирования современных компьютеров.

Содержание

1 История
2 Виды ПЛК
3 Структуры систем управления
4 Интерфейсы ПЛК
5 Удаленное управление и мониторинг
6 Языки программирования ПЛК
7 Программирование ПЛК
8 См. также
9 Литература
10 Примечания
11 Ссылки

История

Первые логические контроллеры появились в виде шкафов с набором соединённых между собой реле и контактов. Эта схема задавалась жёстко на этапе проектирования и не могла быть изменена далее. Первым в мире, программируемым логическим контроллером, в 1968 году стал Modicon 084 (1968) (от англ. modular digital controller), имевший 4 кБ памяти.

Термин PLC ввел Odo Josef Struger (Allen-Bradley) в 1971 году. Он также сыграл ключевую роль в унификации языков программирования ПЛК и принятии стандарта IEC61131-3. Вместе с Richard Morley (Modicon) их называют 'отцами ПЛК’.
Параллельно с термином ПЛК в 1970-е годы широко использовался термин микропроцессорный командоаппарат.

В первых ПЛК, пришедших на замену релейным логическим контроллерам, логика работы программировалась схемой соединений LD.

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

Виды ПЛК

Основные ПЛК,

Программируемое (интеллектуальные) реле,

Программные ПЛК на базе IBM PC-совместимых компьютеров (англ. SoftPLC),

ПЛК на базе простейших микропроцессоров (i8088/8086/8051 и т. п.),

Контроллер ЭСУД (Электронная система управления двигателем).

Структуры систем управления

Централизованная: в корзину ПЛК устанавливаются модули ввода-вывода.
Датчики и исполнительные устройства подключаются отдельными проводами непосредственно, либо при помощи модулей согласования к входам/выходам сигнальных модулей;

Распределенная: удалённые от ПЛК датчики и исполнительные устройства связаны с ПЛК посредством каналов связи и, возможно, корзин-расширителей с использованием связей типа «ведущий-ведомый» (англ. Master-Slave).

Интерфейсы ПЛК

См. также: Промышленная сеть

RS-232
RS-485
Modbus
CC-Link
Profibus
DeviceNet
ControlNet
CAN
AS-Interface
Industrial Ethernet

Удаленное управление и мониторинг]


— SCADA
— операторскими панелями
— Веб-интерфейс

[b]Языки программирования ПЛК


Для программирования ПЛК используются стандартизированные языки МЭК (IEC) стандарта IEC61131-3

Языки программирования (графические)

LD (Ladder Diagram) — Язык релейных схем — самый распространённый язык для PLC

FBD (Function Block Diagram) — Язык функциональных блоков — 2-й по распространённости язык для PLC

SFC (Sequential Function Chart) — Язык диаграмм состояний — используется для программирования автоматов

CFC (Continuous Function Chart) — Не сертифицирован IEC61131-3, дальнейшее развитие FBD

Языки программирования (текстовые)

IL (Instruction List) — Ассемблеро-подобный язык

ST (Structured Text) — Паскале-подобный язык

C-YART — Си-подобный язык (YART Studio)

Структурно в IEC61131-3 среда исполнения представляет собой набор ресурсов (в большинстве случаев это и есть ПЛК, хотя некоторые мощные компьютеры под управлением многозадачных ОС представляют возможность запустить несколько программ типа softPLC и имитировать на одном ЦП несколько ресурсов).

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

Программа — это один из типов программных модулей POU. Модули (POU) могут быть типа программа, функциональный блок и функция.

В некоторых случаях для программирования ПЛК используются нестандартные языки, например: Блок-схемы алгоритмов С-ориентированная среда разработки программ для ПЛК. HiGraph 7 — язык управления на основе графа состояний системы.

Инструменты программирования ПЛК на языках МЭК 61131-3 могут быть специализированными для отдельного семейства ПЛК или универсальными, работающими с несколькими (но далеко не всеми) типами контроллеров:

CoDeSys
ISaGRAF
ИСР "КРУГОЛ"
Beremiz
KLogic

Программирование ПЛК

Конфигурируемые: В ПЛК хранится несколько программ, а через клавиатуру ПЛК выбирается нужная версия программы;

Свободно программируемые: программа загружается в ПЛК через его специальный интерфейс с Персонального компьютера используя специальное ПО производителя, иногда с помощью программатора.

Программирование ПЛК имеет отличие от традиционного программирования. Это связано с тем, что ПЛК исполняют бесконечную последовательность программных циклов, в каждом из которых:

— считывание входных сигналов, в том числе манипуляций, например, на клавиатуре оператором;

— вычисления выходных сигналов и проверка логических условий;

— выдача управляющих сигналов и при необходимости управление индикаторами интерфейса оператора.

Поэтому при программировании ПЛК используются флаги - булевые переменные признаков прохождения алгоритмом программы тех или иных ветвей условных переходов. Отсюда, при программировании ПЛК от программиста требуется определённый навык.

Например, процедуры начальной инициализации системы после сброса или включения питания. Эти процедуры нужно исполнять только однократно.

Поэтому вводят булевую переменную (флаг) завершения инициализации, устанавливаемую при завершении инициализации.

Программа анализирует этот флаг, и если он установлен, то обходит исполнение кода процедур инициализации.

См. также

Микроконтроллер
Промышленный контроллер
Промышленная автоматика

Литература

Мишель Ж. Программируемые контроллеры: архитектура и применение. — М.: Машиностроение, 1986

Э. Парр. Программируемые контроллеры: руководство для инженера. — М.: БИНОМ. Лаборатория знаний, 2007. — 516 с. ISBN 978-5-94774-340-1

Петров И. В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования / Под ред. проф. В. П. Дьяконова. — М.: СОЛОН-Пресс, 2004. — 256 c. ISBN 5-98003-079-4

Денисенко В. В. Компьютерное управление технологическим процессом, экспериментом, оборудованием. — М: Горячая Линия-Телеком, 2009. — 608 с. ISBN 978-5-9912-0060-8
Минаев И. Г. Программируемые логические контроллеры.
Практическое руководство для начинающего инженера. /И. Г.
Минаев, В. В. Самойленко — Ставрополь: АГРУС, 2009. — 100 с. ISBN 978-5-9596-0609-1

Минаев И. Г. Программируемые логические контроллеры в автоматизированных системах управления / И. Г. Минаев, В. М. Шарапов, В. В. Самойленко, Д. Г. Ушкур. 2-е изд., перераб. и доп. — Ставрополь: АГРУС, 2010. — 128 с. ISBN 978-5-9596-0670-1

О. А. Андрюшенко, В. А. Водичев. Электронные программируемые реле серий EASY и MFD-Titan. — 2-е изд., испр. — Одесса: Одесский национальный политехнический университет, 2006. — С. 223.

Минаев И.Г. Свободно программируемые устройства в автоматизированных системах управления / И.Г. Минаев, В.В.

Самойленко, Д.Г. Ушкур, И.В. Федоренко - Ставрополь: АГРУС. 2016. - 168 с. ISBN 978-5-9596-1222-1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 13:03 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Смежные темы

Отладка прикладных ПЛК программ в CoDeSys

http://docplayer.ru/40680876-Otladka-pr ... t-7-1.html

По той же ссылке (прокрутите ниже)

Цитата:
Язык ДРАКОН. Вводный курс, часть 2: Взаимодействие со внешним миром, параллельные алгоритмы и реальное время


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 13:20 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Дмитрий Дагаев. Алаверды Дракону

http://drakon.su/_media/biblioteka/alaverdy_drakon.pdf


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 13:29 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Отрывок из Рабочей программы (Пензенский университет)

http://moodle.pnzgu.ru/pluginfile_free. ... %D0%95.pdf

Цитата:
Тема 3. Инструментальные средства визуального программирования.

Обзор языков и сред визуального программирования. Классификация инструментальных средств.
Графический язык программирования Дракон.
Язык последовательных функциональных схем SFC.
Язык Функциональных блоковых диаграмм FBD.
Высокоуровневый язык графического программирования CFC. Язык «G» системы LabVIEW.
Визуальная объектно-ориентированная среда HiAsm.

Тема 4. Визуальное программирование в ИС ДРАКОН.

Язык ДРАКОН и его визуальный синтаксис. Дракон-схемы и их преимущества.
Визуализация циклических алгоритмов. Визуализация логических формул.
Интегрированная среда ДРАКОН. Примеры алгоритмов для различных отраслей знаний.
Алгоритмы и формализация профессиональных знаний.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 14:31 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Functional Block Diagram (FBD)

viewtopic.php?p=75329#p75329

и далее


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 16:13 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Уважаемые коллеги!
Как показала проктика применив ИС Дракон, с алгоритмами реального времени проблем не возникало!
Основные проблемы это соответствие элементов Дракона коду ST, режим отладки и многое другое.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 18:55 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Беседа Дениса Шубенкова и Геннадия Тышова

Геннадий Тышов любезно предоставил мне протокол беседы.

Цитата:
Сегодня

[8:32:52] Геннадий Тышов: Денис, здравствуйте.
Тут собрались заинтересованные в использовании ИС Дракон в системе CoDeSys:
viewtopic.php?p=99406#p99406
viewtopic.php?p=100236#p100236
Много вопросов и сомнений.

[13:07:13] Denis Shubenkov: Здравствуйте Геннадий,
Да начал читать эти форумы. Что касается споров относительно полезности ДРАКОН в программировании ПЛК, то я для себя давно решил.

Мне очень удобно представлять алгоритм в ДРАКОН схеме, а потом переводить ее на ST язык. Так я наглядно вижу общую структуру программы.

Что касается дискуссий по поводу работы с таймером, то тут надо немного пояснить как работает CoDeSys.

Главный принцип работы ПЛК это то, что входные переменные изменяют свое состояние в начале алгоритма, а выходные после выполнения алгоритма.

Т.е. нельзя несколько раз поменять значение входной и выходной переменной в течение выполнения алгоритма. И это очень правильно, т.к. в этом случае невозможно загнать алгоритм в невыполнимое условие и тем самым повесить выполнение алгоритма.

[13:32:55] Геннадий Тышов: Ок. Передам Паронджанову для помещения на форуме. Или можете сами присоединиться к участникам.

[13:34:58] Denis Shubenkov: Так вот, что касается запуска и выполнение таймеров.

На самом деле, делать таймеры в которых ПЛК будет просто ждать завершения работы таймера нельзя, т.к. за это время может произойти еще массу событий, которые также требуют обработки.

Но это вообще не проблема и я не очень понял в чем проблема отображения. Запускается таймер, а затем проверяется условие его окончания, т.е. после завершения работы таймера алгоритм уходит во вторую ветку.

Да, хорошо, я попробую присоединиться к участникам.

[13:40:18] Геннадий Тышов: Я, сам на форуме не участвую. Передам наш диалог В.Д. Паронджанову. Думаю он разместит его, а Вы присоединяйтесь. В таком варианте Вам не придется писать вновь.

[13:40:58] Denis Shubenkov: Я Вам уже писал, что более интересный и благодарный результат от ДРАКОНа может получиться от внедрения его в школьную программу и интеграции с таким железом для обучающихся программированию как Arduino

Для этого ДРАКОН нужен только компилятор для контроллеров использующиеся в Arduino.

Возможность подключения библиотек и т.д. что способствовало бы масштабированию и по максимуму реализация принципа конструктора.

[13:50:16] Геннадий Тышов: Да не нужен в ИС Драконе компилятор для Ардуино. Там используется Си-шная запись, для этого в комплектации ИС Дракона есть файл описания языка Си.

Нужно только помнить, что Дракон-схема так же выполняется многократно в цикле Ардуино. На форуме был крупный специалист по Ардуино (Arhat109), у него все с ИС Драконом работало, и 10-летний сын освоил. Адрес Arhat109 есть на форуме.

[13:53:00] Denis Shubenkov: Да но смысл же в другом, что не надо будет обращаться в принципе к этой достаточно ущербной среде разработки. А код можно будет закачивать в контроллер сразу напрямую со среды ДРАКОН. Вот в чем идея!

[13:54:22] Геннадий Тышов: Закачивать в Ардуино прямо из ИС Дракон я не сделаю, не смогу.

Выложил выпуск от 01.10.2017. Вы, каким выпуском пользуетесь?

[13:58:03] Denis Shubenkov: Я про это и говорю, что надо подключать команду разработчиков, а это возможно при заинтересованности со стороны министерства образования и поиска инвесторов.

У меня выпуск 02.03.2016

[14:00:06] Геннадий Тышов: Почему зависли на старом выпуске? Все таки программа изменяется и надеюсь к лучшему.

[14:01:26] Denis Shubenkov: Да я уверен что к лучшему )). Пока хватало функционала

[14:02:40] Геннадий Тышов: "подключать команду разработчиков" - это для меня сложно. Я частник - единоличник, а не колхозник.

[14:06:22] Denis Shubenkov: Знать множество технологий в программировании на сегодня очень сложная задача, поэтому люди и объединяются в команды.

В общем я что хотел сказать, если ДРАКОН завернуть в красивую, удобную и функциональную упаковку он получит большую популярность и развитие

[14:09:59] Геннадий Тышов: Для множества технологий должно быть и много соответствующих программ. У меня скромная цель.

Денис, приятно было пообщаться. Успехов Вам вообще и совместно с ИС Драконом

[14:17:34] Denis Shubenkov: Спасибо! Вам так же удачи! А цели у вас не такие уж и скромные. Это все имеет возможность вырасти в большой значимый образовательный проект.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 19:55 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Denis Shubenkov писал(а):
На самом деле, делать таймеры в которых ПЛК будет просто ждать завершения работы таймера нельзя, т.к. за это время может произойти еще массу событий, которые также требуют обработки.

Но это вообще не проблема и я не очень понял в чем проблема отображения. Запускается таймер, а затем проверяется условие его окончания, т.е. после завершения работы таймера алгоритм уходит во вторую ветку.


Вообще говоря, забавно слышать "да это вообще не проблема".
Лучше бы показывали пример Дракон схем. Схему А_МУР "с насосами", очевидно, без пол-литра не поймёшь (отчасти из-за того, что там торчат уши этого "запускается таймер и потом проверяется условие").
Поясню: как-то присобачить Дракон к ПЛК можно, но едва ли стоит учить детей алгоритмам, погружаясь в особенности "строжевых таймеров". Да и промышленный код от такого применения Дракона только путаницу вносит.

Ну и, чтобы уж совсем понятно стало: можно прикрутить Дракон к ассемблеру (или машинным кодам) и этому учить детей под видом "вот, Дракон делает всё понятным".

Если Денис покажет примеры схем, где в алгоритме фигурирует время, тогда можно будет о чём-то говорить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 11 Октябрь, 2017 18:21 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Геннадий Тышов любезно переслал мне письмо Дениса Шубенкова с примером дракон-схемы
(к сожалению, картинка справа обрезана. Так в оригинале)

Цитата:
Геннадий Тышов <....@mail.ru>
Кому: Паронджанов Владимир

сегодня, 17:281 файл
Владимир Даниелович, здравствуйте.

Сегодня поступило сообщение от Дениса Шубенкова.

Геннадий здравствуйте,
Я закинул просьбу на регистрацию, но пока нет ответа. Поэтому пока могу ответить только через вас. Просили выложить пример с таймером.

/Картинка в файле к письму./

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

С уважением,
Геннадий Тышов


Фильтр для предотвращения ложного срабатывания аварийной ситуации. Это пример использования таймера в ПЛК

Вложение:
Алгоритм Дениса Шубенкова .png
Алгоритм Дениса Шубенкова .png [ 191.25 КБ | Просмотров: 23810 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 11 Октябрь, 2017 20:44 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Владимир Паронджанов писал(а):
Фильтр для предотвращения ложного срабатывания аварийной ситуации. Это пример использования таймера в ПЛК


Давайте разбираться.
Конечно, обидно, что не видно правой части, но не суть.

Первое, что видно сразу, так это то, что "за таймер" отвечают 5 икон!

И где эргономика?
Давайте покажем схему инженеру, зададим вопрос "что является критерием аварии?" и засечём время, которое он будет думать. Минуту? Пять? И правильный ли ответ он после этого даст?

Попробуем проследить логику (надеюсь, я нигде не ошибся):
1) Таймер запущен? -> нет -> вода есть? -> нет. Если воды нет, то каждый цикл ПЛК будем смотреть "а не появилась ли она".
2) Таймер запущен? -> нет -> вода есть? -> да -> запускаем таймер. По сути, это "вода обнаружена, но не факт, что авария"

Предаварийный режим:

3) Таймер запущен? -> таймер окончил работу? -> нет. Если таймер не окончил работу, то ничего не делаем
4) Таймер запущен? -> таймер окончил работу? -> да -> вода есть? Ну и тут ставим флаг ошибки в зависимости от того, есть ли вода, выключаем таймер.

Перерисуем это более человекопонятным образом (см water_alarm.png)
Вложение:
water_alarm.png
water_alarm.png [ 12.06 КБ | Просмотров: 23797 ]


Ну, что? По-моему, это называется "как небо и земля". Смотришь и сразу понятна логика.

Аварией считается, если будет обнаружена вода, а потом через 500мс вода тоже будет обнаружена.

При этом, видно, что алгоритм полностью игнорирует то, что творится на протяжении этих самых 500мс. Например, если окажется, что датчик просто сделает 2 выброса с интервалом 500мс, а всё остальное время будет возвращать "воды нет", то алгоритм всё равно примет решение об аварии.

Конечно, я не исключаю, что автору требовался именно такой алгоритм, но звучит он странно.

В моём варианте пришлось задвоить иконы "проверки показаний датчика", но, на самом деле, в реальной программе никто не "получает значения датчика как внешнее событие", т.е. само действие "опроса модуля ввода" нужно выносить вообще за пределы этой диаграммы. Но я оставил, чтобы было максимально близко к исходному варианту.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 13:55 

Зарегистрирован: Понедельник, 16 Октябрь, 2017 12:40
Сообщения: 4
Здравствуйте Владимир,

Да алгоритм вы прочитали абсолютно правильно и я надеюсь вам не потребовалось на это много времени. Не этого ли требуется от ДРАКОНа? ))

Что касается схемы, я хотел больше показать включение и обработку таймера. Что нет необходимости ждать окончания работы таймера. Насколько я понял, в этом то и был вопрос, при обсуждении включения таймера в ДРАКОН схему.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:14 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Денис Шубенков писал(а):
Да алгоритм вы прочитали абсолютно правильно и я надеюсь вам не потребовалось на это много времени. Не этого ли требуется от ДРАКОНа? ))

На самом деле, потребовалось. Более того, я точно помню, что сначала неправильно понял, начал писать ответ и только тогда понял, что ошибся.

Денис Шубенков писал(а):
Что касается схемы, я хотел больше показать включение и обработку таймера. Что нет необходимости ждать окончания работы таймера. Насколько я понял, в этом то и был вопрос, при обсуждении включения таймера в ДРАКОН схему.

Вопрос был не только в том, "как вкрячить ПЛК таймеры в Дракон схему", но и в том, как сделать программу с таймерами понятной.

Так вот: в вашем варианте вместо операции "подождать 500мс" используется куча веток, условий, квадратиков. Понятной такую схему ну никак не назовёшь.

Денис Шубенков писал(а):
Что касается вашей схемы, то у вас как раз видно зацикливание на опрос порта, т.е. согласно схеме процессор ни чем больше не занимается кроме как ждет сигнала с порта.

Почему это вы так думаете?
Вы, очевидно, полагаете, что "Дракон-схема возвращает управление в ПЛК только при достижении иконы <<Конец>>".

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

Более подробный пример тут: viewtopic.php?f=78&t=6068&start=40#p100412
Поэтому, мой пример не зациклится, а будет работать 1-в-1 с вашим.
Аналогично, "пауза 500мс" это не бесконечный цикл, а "возврат управления, если 500мс ещё не прошли".

Денис Шубенков писал(а):
В моем же варианте я, как вы правильно сказали, не отображаю опрос порта, а беру лишь полученное значение на момент начала общего цикла.

Я говорил про другое. Обычно, при фильтрации дребезга контактов используют подходы типа "если значение не менялось более X секунд, то, считаем, что дребезг закончился". или "если среди последних 10и состояний какого-то одного было более 7-и, то считаем, что дребезг закончился".
В вашем же алгоритме, вы делаете вывод "об аварийности" всего по двум измерениям. Да, два измерения лучше одного, но подход странный.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:30 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Владимир Ситников писал(а):
Почему это вы так думаете?
Вы, очевидно, полагаете, что "Дракон-схема возвращает управление в ПЛК только при достижении иконы <<Конец>>".

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

Более подробный пример тут: viewtopic.php?f=78&t=6068&start=40#p100412
Поэтому, мой пример не зациклится, а будет работать 1-в-1 с вашим.
Аналогично, "пауза 500мс" это не бесконечный цикл, а "возврат управления, если 500мс ещё не прошли".
"В соседней теме я предлагал, ..." - ошибочное предположение.

"на паузах, в циклах ожиданий, при использовании синхронизаторов" - при ОСРВ.
У С.Д. Ефанова - в режиме автоматного программирования, при этом в схеме Силуэт икона Заголовок имеет маркер А1 или А2, С.Д. Ефанов не использует икон Пауза и Ждать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:34 

Зарегистрирован: Понедельник, 16 Октябрь, 2017 12:40
Сообщения: 4
"Поясню: как-то присобачить Дракон к ПЛК можно, но едва ли стоит учить детей алгоритмам, погружаясь в особенности "строжевых таймеров". Да и промышленный код от такого применения Дракона только путаницу вносит.
Ну и, чтобы уж совсем понятно стало: можно прикрутить Дракон к ассемблеру (или машинным кодам) и этому учить детей под видом "вот, Дракон делает всё понятным"."


Я вообще считаю, что на начальном этапе вообще нет необходимости учить детей языку программирования, а надо учить правильно выражать свои мысли и идеи посредством алгоритмического языка. Больше заинтересовать детей можно показав наглядную работу алгоритма, вот для этого то и надо оболочка, которая позволила бы удобно создавать блок схемы ДРАКОН и компилировать сразу для программирования исполнительного устройства. Т.к. сделать универсальный компилятор нельзя, то и предложил сделать его для наиболее массового продукта для моделирования на сегодняшний день, т.е. для "Ардуино".
Так что погружаться в "сторожевые таймеры" вообще не нужно. Оболочка должна максимально скрыть от конечного пользователя всю рутину.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:43 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
LKom писал(а):
"В соседней теме я предлагал, ..." - ошибочное предположение.

Во-первых, это предложение, а не предположение.
Во-вторых, в чём его ошибочность-то?

Вот пример, где Владимир Паронджанов говорит об этом же самом: viewtopic.php?f=62&t=4275#p78398 (возврат управления на протяжении паузы). Там, конечно, про ОСРВ, а в обсуждаемых ПЛК многозадачность вытесняющая, но общий смысл мало отличается.

LKom писал(а):
при ОСРВ.
У С.Д. Ефанова - в режиме автоматного программирования, при этом в схеме Силуэт икона Заголовок имеет маркер А1 или А2.

Очень рад за Ефанова, и за то, что вы каким-то мифическим образом знаете, что "в схеме Силуэт икона Заголовок имеет маркер А1 или А2".
Сможете пояснить в чём смысл этих маркеров A1, A2?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:50 

Зарегистрирован: Понедельник, 16 Октябрь, 2017 12:40
Сообщения: 4
Цитата:
Я говорил про другое. Обычно, при фильтрации дребезга контактов используют подходы типа "если значение не менялось более X секунд, то, считаем, что дребезг закончился". или "если среди последних 10и состояний какого-то одного было более 7-и, то считаем, что дребезг закончился".
В вашем же алгоритме, вы делаете вывод "об аварийности" всего по двум измерениям. Да, два измерения лучше одного, но подход странный.


Да вы правы, что дребезг контактов определяется именно так. Возможно я впоследствии изменю алгоритм, но пока меня устраивает такой вариант.

Что касается возврата управления, то да я считал что это происходит только по достижению "Конец".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 14:55 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Коли предлагали, то вероятно исходили из своего предположения. Ну, не в этом суть.

Маркер А1 автоматного программирования видим у С.Д Ефанова на схеме в сообщении viewtopic.php?p=100386#p100386

Маркер А1 или А2 устанавливается в контекстном меню схемы Силуэт, пункты "- Свойство: Авт1, С, Switch" и "- Свойство: Авт2, С, Ветка-функция".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 15:04 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Денис Шубенков писал(а):
Да вы правы, что дребезг контактов определяется именно так. Возможно я впоследствии изменю алгоритм, но пока меня устраивает такой вариант.

Про это я и говорю: этот алгоритм "на паузах" гораздо понятнее, чем "на ручном запуске-проверке МЭК таймеров".

Означает ли это, что 90% ПЛК алгоритмов станут "на паузах" проще? Вот тут не знаю, поэтому и спрашиваю какие вообще есть примеры.

Денис Шубенков писал(а):
Что касается возврата управления, то да я считал что это происходит только по достижению "Конец".

По-моему, нужно делать так, чтобы сам Дракон редактор понимал где должен быть этот самый возврат управления.
Пишем "пауза 5 секунд", и это без дополнительного кода должно обрабатываться как "пауза алгоритма на 5 секунд".
Сделали цикл ожидания -- добавился возврат управления и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 15:24 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
LKom писал(а):
Маркер А1 или А2 устанавливается в контекстном меню схемы Силуэт, пункты "- Свойство: Авт1, С, Switch" и "- Свойство: Авт2, С, Ветка-функция".

И?
Эти свойства как-то влияют на компиляцию пауз, циклов задержки?

Там был пример из двух веток, двух циклов ожидания, запуска таймера и всё для чего? Только для того, чтобы изобразить операцию "пауза 10 секунд" в программе.
Внимание, вопрос: зачем использовать такую громоздкую схему, если в самом Драконе уже есть икона "пауза"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Октябрь, 2017 15:33 

Зарегистрирован: Понедельник, 16 Октябрь, 2017 12:40
Сообщения: 4
Цитата:
По-моему, нужно делать так, чтобы сам Дракон редактор понимал где должен быть этот самый возврат управления.
Пишем "пауза 5 секунд", и это без дополнительного кода должно обрабатываться как "пауза алгоритма на 5 секунд".
Сделали цикл ожидания -- добавился возврат управления и т.п.


Согласен.
Пока возврат управления надо делать вручную. Т.е. самому побеспокоиться чтобы произошел возврат управления после запуска паузы (таймера) и обработать условие по окончанию работы паузы (таймера).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB