Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » АСУТП »
распределение задач во времени рабочего цикла ПЛК (страница 1)

Версия для печати (настроить)
Страницы: 1 2 3

Новая тема | Написать ответ

Подписаться

Автор Тема:   распределение задач во времени рабочего цикла ПЛК
kohausen
Junior Member

Сообщений: 4
Регистрация: Декабрь 2006

написано 28 Декабря 2006 10:02ИнфоПравкаОтветитьIP

Прочитав книгу Петрова про ПЛК, да и уже на основании собственного опыта убедился,что ключ к написанию грамотных программ для ПЛК - это дробление программы на множество более мелких подпрограмм (собственно избегание "гигантомании" и желания запихать все -в -одно является вообще распростанненой практикой в любом языке программировании, будь то С или G (Labview)и распределение их выполнения в общем цикле программы ПЛК...
Вопрос следующий: имея постоянно выполняемую задачу (например опрос физических входов; считывание данных по CAN шине c других контрооллеров и преобразователей частоты (Lenze)) предпочтительнее вызывать ее в интервале( допустим 1х мс ) как отдельную задачу (со своим приоретом, сторожевым таймером ) или вызывать ее в рамках программы PLC_PRG через оператор CAL (Петров писал,что plc_prg всегда работает циклично)? что более предпочтительно с точки зрения распределения аппаратных ресурсов?

IP
Member

Сообщений: 36
Откуда: Russia
Регистрация: Июнь 2006

написано 28 Декабря 2006 17:26ИнфоПравкаОтветитьIP

цитата:
kohausen:
...предпочтительнее вызывать ее в интервале как отдельную задачу или вызывать ее в рамках программы PLC_PRG через оператор CAL...?

Действительно большинство контроллеров вызывают PLC_PRG в цикле, так быстро как это только возможно (время цикла будет плавать в зависимости от выполняемой программы). Можно напихать в PLC_PRG вызовов других программ и самому написать модуль управления ими. Альтернатива – это делать отдельные задачи. Это правильнее: дает возможность использовать готовые средства управления задачами. Ресурсов это практически не потребляет, поскольку весь управляющий механизм уже встроен в систему исполнения.

В некоторых контроллерах цикл PLC_PRG намеренно сделан значительно (в сотни раз) большее, чем можно выжать из железа и фиксирован по длительности. Например, в SP RTE чтобы мы не делали в программе, цикл PLC_PRG (по умолчанию) всегда будет 50ms. Это удобно особенно при обработке аналоговых сигналов. В конфигураторе задач это время можно поменять или сделать максимально быстрым, но плавающим (freewheeling).

Самые мощьные контроллеры под CoDeSys (например Kontron Think IO) поддерживают вытесняющую многозадачность. Т.е. высокоприоритетная циклическая задача будет четко вызываться в заданное время, даже если другие задачи не отработали свои циклы или вообще зависли. Если вытеснения нет, то действительно надо аккуратно бить их на короткие части. Лишним не будет и защита по сторожевому таймеру.

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

цитата:
Петров писал,что plc_prg всегда работает циклично

Был грех, писал По умолчанию - это так, если не лазить в конфигуратор задач. Иначе можно поместить программу PLC_PRG в некую задачу и заставить работать ее совсем иначе, например по событию.

@sutp
Junior Member

Сообщений: 12
Откуда: Россия
Регистрация: Ноябрь 2006

написано 28 Декабря 2006 18:36ИнфоПравкаОтветитьIP

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

1. Программа (задача) объявляется циклической. При этом средствами операционной системы она автоматически запускается с заданным циклом.

2. Имеется программа-таймер. Она запускает Вашу программу (задачу) с использованием начальной метки времени и с заданным циклом.

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

PLC_PRG к какому из этих вариантов относится?

kohausen
Junior Member

Сообщений: 5
Регистрация: Декабрь 2006

написано 29 Декабря 2006 10:04ИнфоПравкаОтветитьIP

to IP

угу..понятно. тогда вопрос в догонку - вы писали в своей книге, что выполнение разовой задачи (насколько я понимаю это режим Single в Codesys по версии от lenze) выполняется по фронту логической переменной. Означает ли это,что задача ( в моем случае подпрограмма) прогонится лишь один раз (произойдет одна итерация)?Если это так, то как организовать намеренное "зацикливание"--пока задача не отработает нужное количесвто итераций? с помощбю переходов? Или она будет производить нужно мне количество итераций, выполняя нужные мне команды, пока запускающая логическая переменная находится в состоянии TRUE? и прекратит свое выполнение сразу же по сбросу этой переменной в FALSE?

IP
Member

Сообщений: 37
Откуда: Russia
Регистрация: Июнь 2006

написано 29 Декабря 2006 12:24ИнфоПравкаОтветитьIP

цитата:
kohausen:
...по фронту логической переменной. Означает ли это,что задача прогонится лишь один раз...

Должно быть именно так. На всякий случай проверьте, Lenze могли изменить детали в соответствии со своим пониманием. У меня сейчас нет их контроллера, чтобы проверить.
Для зацикливания можно сделать отдельную программу, вложить ее в некую циклическую задачу с вызовом по условию со счетчиком. В задаче вызываемой по фронту (разовой) нужно просто установить этот счетчик.

Кроме того, посмотрите описание библиотеку SysLibTasks.lib. Она позволяет запустить и остановить задачу из программы. В хелпе есть ее описание на русском.

Кстати есть новая книжка. Она называется 'Отладка прикладных ПЛК программ в CoDeSys'. Печатается в журнальном варианте в 'Промышленные АСУ и контроллеры'. Пока вышло 7 частей, будет еще с десяток. Можно скачать в pdf тут

Добавление от 29 Декабря 2006 12:42:

цитата:
@sutp:
PLC_PRG к какому из этих вариантов относится?

В CoDeSys 2.3 есть 4 типа систем исполнения, для разных семейств процессоров. CSP8, CSP16 и CSP32E могут работать на голом железе или под однозадачной ОС. В них есть простой встроенный планировщик задач без вытеснения (т.е. вариант 2). Система CSP32F работает только под многозадачными ОС и использует планировщик операционки для управления МЭК задачами (т.е. вариант 1).

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

@sutp
Junior Member

Сообщений: 13
Откуда: Россия
Регистрация: Ноябрь 2006

написано 30 Декабря 2006 17:15ИнфоПравкаОтветитьIP

IP
Кстати есть новая книжка
Можно скачать

А где старую книжку можно посмотреть?
Честно сказать удивлена, что знаменитые писатели так запросто общаются в форуме.
Пожалуйста, расскажите о себе, какой путь надо пройти, чтобы стать экспертом по программированию PLC?

Dmitry M. Gaidash
Member

Сообщений: 112
Регистрация: Сентябрь 2005

написано 31 Декабря 2006 00:35ИнфоПравкаОтветитьIP

экспертом по программированию PLC
То, о чем идет речь в этой теме, никак программированием PLC назвать нельзя Это какие-то ненужные и неинтересные системные дебри, в которые прикладнику соваться не то что не нужно, а даже противопоказано! Сочувствую разработчикам ПО для PLC, которым приходится забивать себе голову такими вещами.

P.S. Все строго ИМХО с позиций прикладных задач - именно тех, которые призваны решать PLC.

@sutp
Junior Member

Сообщений: 14
Откуда: Россия
Регистрация: Ноябрь 2006

написано 31 Декабря 2006 09:39ИнфоПравкаОтветитьIP

Для себя я пока сделала вывод, что мне было бы интереснее стать разработчиком ПО для PLC

kohausen
Junior Member

Сообщений: 7
Регистрация: Декабрь 2006

написано 05 Января 2007 18:49ИнфоПравкаОтветитьIP

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

IP
Member

Сообщений: 38
Откуда: Russia
Регистрация: Июнь 2006

написано 08 Января 2007 12:49ИнфоПравкаОтветитьIP

цитата:
@sutp:
А где старую книжку можно посмотреть?

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

цитата:
...какой путь надо пройти...

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

Добавление от 08 Января 2007 12:55:

цитата:
Dmitry M. Gaidash:
Сочувствую разработчикам ПО для PLC, которым приходится забивать себе голову такими вещами.

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

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

Dmitry M. Gaidash
Member

Сообщений: 113
Регистрация: Сентябрь 2005

написано 09 Января 2007 09:01ИнфоПравкаОтветитьIP

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

Ваши прикладные проекты всегда легко укладываются в одну задачу или есть некие простые типовые приемы их распараллеливания?
Я пользуюсь готовым механизмом многозадачности, реализованным в ПЛК У меня есть 9 циклических прерываний с конфигурируемой цикличностью от 10 мс до 9990 с, 29 других прерываний (аппаратных, по дате и времени, по задержке и пр.) и 29 классов приоритетов Если этого не хватает, то у меня есть еще 5 прерываний с цикличностью от 0.1 мс (100 мкс), правда уже без настройки приоритетов - более "быстрый" цикл всегда прерывает более медленный.

Я знаю, как это работает, но меня совершенно не волнует, как это реализовано - оно работает и все.

kohausen
Junior Member

Сообщений: 8
Регистрация: Декабрь 2006

написано 09 Января 2007 09:47ИнфоПравкаОтветитьIP

На данный момент я работаю на ниве автоматизации оборудования для производства металлокорда...Как правило, волочильные станы и свивочные машины управляются "смесью" из 2-4 приводов (частотнные преобразователи - векторные и скалярные,ПЛК, различными HMI... ну и так по "мелочи" - релюхи, дроссели, автоматы...стандартные "ингредиенты" шкафов управления...Естесвенно, все что можно обьединенно в сеть...CAN, modbus....
ИМХО без многозадачности мне не обойтись - ведь мне нужно отрабывать различные состояния машины (когда она в работе - один набор управляющих программ (управление двигателями по скорости и моменту, контроль длины, автоматика и т.д., ), когда машина стоит - другой набор программ...

IP
Member

Сообщений: 39
Откуда: Russia
Регистрация: Июнь 2006

написано 09 Января 2007 12:50ИнфоПравкаОтветитьIP

цитата:
Dmitry M. Gaidash:
...Сила ПЛК как раз в том, чтобы специалист мог сосредоточиться на задачах автоматизации, а не на задачах системного программирования контроллеров...

Я за это двумя руками! Действительно основной плюс ПЛК – это четкое разделение системного и прикладного ПО. Но раньше в контроллерах не было файловой системы, свободно программируемых коммуникационных портов, web-сервера и др. штук, которые теперь есть даже в очень недорогих моделях. В стандарте МЭК просто нет POU для работы с этим, стандартизация не успевает за развитием техники. Наиболее опытные пользователи просто не лезут в дебри, интуитивно обходя их известными типовыми методами. Но каждый новый пользователь (особенно из Украины и России) начинает с попытки использования самых экзотических вещей. Попытки объяснить, что это ненужно, что такие задачи решают не так, кончается получением официальной жалобы и разрывом отношений. Остается аккуратно отвечать на все вопросы и доводить экзотические вещи до нормального уровня. Может быть, это и неплохо?

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

Мы именно про это и говорим. Если хочется знать, как он устроен внутри, то почему не разобраться, хуже от этого не будет…

Кстати может ли в Вашей системе быть такое: я начал работать с переменной X в одной задаче. Например, проверил что она не равна некоторому значению, и пошел на ветку, где с ней производятся определенные вычисления. Но пока этот переход происходил, сработала более приоритетная задача и изменила эту переменную. Есть ли некий механизм, который не дает возникать таким ситуациям?

Добавление от 09 Января 2007 12:54:

цитата:
kohausen:
...ИМХО без многозадачности мне не обойтись...

Если у Вас статьи с описанием реализованных проектов с фрагментами программ? Очень не хватает примеров такого уровня, для вдохновения начинающих и сомневающихся в своих силах пользователей...

Dmitry M. Gaidash
Member

Сообщений: 114
Регистрация: Сентябрь 2005

написано 09 Января 2007 13:04ИнфоПравкаОтветитьIP

IP
я начал работать с переменной X в одной задаче. Например, проверил что она не равна некоторому значению, и пошел на ветку, где с ней производятся определенные вычисления. Но пока этот переход происходил, сработала более приоритетная задача и изменила эту переменную
Для исключения такой ситуации можно использовать локальные данные конкретной циклической задачи, т.е. на входе прочитать состояние некоторой глобальной переменной (если она действительно нужна такая глобальная), записать его во внутреннюю переменную и в программе работать с ней, а на выходе вернуть значение в глобальную. Я такие ситуации предпочитаю исключать на этапе проектирования архитектуры программы.

kohausen
Junior Member

Сообщений: 9
Регистрация: Декабрь 2006

написано 09 Января 2007 14:01ИнфоПравкаОтветитьIP

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

Добавление от 09 Января 2007 15:53:

Dmitry M. Gaidash
т.е. вы создаете для каждого POU (допустим программы) свои переменные класса VAR_INPUT и VAR_OUTPUT, а глобальные переменные используете лишь в случае крайней необходимости? т.е. тем самым предотвращая возможные проблемы при выполнении многозадачных проектов?

pw
Junior Member

Сообщений: 9
Регистрация: Январь 2007

написано 26 Января 2007 21:05ИнфоПравкаОтветитьIP

А не надо писать программы на С.. Надо покупать норм контроллеры и писать их технологические проги на их технологических языках. И тогда увидите, как все станет намного проще. Хотя возможно я не прав.

Добавление от 26 Января 2007 21:12:

Я работаю в АСУТП и пытался изучать Си.. Так как во всей ширпотребной литературе написано " что это язык програмирования для котроллеров". Поверьте мне, что это язык для программирования только очень дешевых и низкокачественных котроллеров. Большинство проблем, которые вы обсуждаете, давно все решены и решаются системным ПО норм котроллера. Изучать Си глупо, если ты работаешь в АСУТП, если только вы не используете всякое барахло, требующее от программиста особых усилий. Там есть лестничная логика, есть алгоблоки, есть структурированный текст. Чего вы еще тут обсуждаете? Какая ветка лестничной логики выполняется раньше другой?? 0_0 Поверьте мне, что это все глупость, хотя я знаю и Си и Паскаль и Ассемблер неплохо.. Никому в АСУТП это не надо, если это качественное АСУТП. АСУТП давным давнео готовый и отнивеллированный продукт и никто не решится внедрять системы, в которых такие вопросы не решены.
А файловая система и вебсерверы существуют в PC-совместимых котроллерах тока, которые на серьезное производство никто не пустит.. Несмотря на то, что они в космос летали. )

Добавление от 26 Января 2007 21:14:

Мечта Билла Гейтса, что РС будет управлять атомной электростанцией никогда не осуществится. В лучшем случае фикальной.

Добавление от 26 Января 2007 21:22:

Впрочем Веб-сервера в последнее время вставляют во всякие специализированные контроллеры, навроде хозучетных.. Так как это там объяснимо. Но с РС таки они все равно имеют мало общего. Для тех процесса никогда, так как это глупо.

pw
Junior Member

Сообщений: 10
Регистрация: Январь 2007

написано 26 Января 2007 21:30ИнфоПравкаОтветитьIP

А собственно по существу.. Конечно автор топика прав. Лучше всего разбить задачу на множество мелких кусков и иметь возможность вызывать каждую задачу с определенным быстродействием. В нормальных котроллерах это делается элементарно. Мало того, это особо оговорено и ставится в свойствах каждой отдельной задачи при помощи правой кнопки мыши или отдельной опцией в свойствах. Даже есди получится в конечном итоге, что все задачи вызываются с одинаковой частотой, то ничего страшного. Ну повезло, значит быстродействия хватает. Лишь бы контроллер успевал. А у вас есть параметр, который показывает реальную частоту выполнения задачи? Успевает котроллер или нет? Зато если вы будете иметь возможность варьировать частоту, то вы сможете качественно провести отладку. Оптимально делать наиболее быстродействующими именно обработку входов/выходов. Остальные задачи делать или такими же по быстродействию или менее. Другое поведение объяснить трудно, по крайней мере у меня аргументов нет.

Павел Мощицкий
Member

Сообщений: 1794
Откуда: Израиль. Бат-Ям
Регистрация: Январь 2004

написано 26 Января 2007 22:07ИнфоПравкаОтветитьIP

pw
файловая система и вебсерверы существуют в PC-совместимых котроллерах тока, которые на серьезное производство никто не пустит..
Парень, расскажи тогда, что делать, чтобы разгрузить АРМ оператора, что делать, чтобы создать САУ при отключении верхнего уровня для независимой работы АСУ ТП, не требующих постоянного HMI мониторинга? Ты просто не знаешь функцональную необходимость PC-совместимых контроллеров. И складывается такое впечатление, что PC-совместимый, это тот, который нужно программировать на C, а PLC-контроллеры, это что-то другое.
РС будет управлять атомной электростанцией
А кто сейчас управляет АЭС?
Успевает котроллер или нет?
А что делать, если контроллер не успевает?

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики
Страницы: 1 2 3

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика