PDA

Просмотр полной версии : Многопоточность



Smith2007
14.08.2013, 09:24
Существует ли возможность запуска одновременно нескольких потоков на ПЛК (многозадачность)?
Как это реализуется в CodeSys?

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

Если из одной задачи нужно передать данные в другую?

Николаев Андрей
14.08.2013, 10:54
МНогопоточность\читай многозадачность - вообще вещь условная.
Особенно на одноядерных процессорах :).
То, что Вас интересует - в наших контроллерах поддержана функция многозадачности.
Вы можете отказаться от PLC_PRG, и использовать Конфигуратор задач (Task Configurations).
Примеры есть на форуме. Лично делал.
Так же есть возможность делать подпрограммы, и вызывать их в основной программе.
Так же есть примеры в разделе примеров. Тоже делал лично.

Если говорить по сути - то используется псевдомногозадачность, с учетом приоритета подпрограммы, последней вызываемой подпрограммы и прерываний.

Филоненко Владислав
14.08.2013, 11:37
Все зависит от типа CoDeSys-а. В CoDeSys 2.3 кооперативная многозадачность, в 3-м - вытясняющая.

Yegor
14.08.2013, 11:45
Есть на ПЛК поточная многозадачность, но в отличие от ПК она там всего лишь костыль. Вся ваша программа будет исполняться от начала и до конца сотни раз в секунду — просто пишите свои задачи в разных подпрограммах, вызывайте эти подпрограммы в каком угодно порядке из главной PLC_PRG и считайте, что они работают одновременно как будто в разных потоках. Вопрос синхронизации в правильно написанной проге отпадёт, т.к. технически вы остаётесь в одном потоке.

Другими словами, на ПЛК многозадачность не поточная. В подпрограмме prog1 вы пишете out1 := in1, в пп prog2 пишете out2 := in2 + in3, в PLC_PRG пишете prog1(); prog2(); и вуаля — prog1 и prog2 выполняются одновременно.

Smith2007
14.08.2013, 12:17
Предположу, что на контроллерах с линухом дела обстоят иначе, а именно - "вытесняющая" многозадачность.
Впрочем как написал Егор, можно и последовательно.

capzap
14.08.2013, 14:06
позабавили своими рассуждениями. купите два плк и будет у Вас проект на двухядерном процессоре :)
плк с линуксом с мин.циклом 20 мс останутся далеко позади, если выполнять последовательно все задачи на том же плк100 с циклом в 1-2 мс

Sergey666
14.08.2013, 15:41
Есть на ПЛК поточная многозадачность, но в отличие от ПК она там всего лишь костыль. Вся ваша программа будет исполняться от начала и до конца сотни раз в секунду — просто пишите свои задачи в разных подпрограммах, вызывайте эти подпрограммы в каком угодно порядке из главной PLC_PRG и считайте, что они работают одновременно как будто в разных потоках. Вопрос синхронизации в правильно написанной проге отпадёт, т.к. технически вы остаётесь в одном потоке.

Другими словами, на ПЛК многозадачность не поточная. В подпрограмме prog1 вы пишете out1 := in1, в пп prog2 пишете out2 := in2 + in3, в PLC_PRG пишете prog1(); prog2(); и вуаля — prog1 и prog2 выполняются одновременно.

Выполнятся будет по очереди порядка записи вызовов. Актуальными будут значения , обработанные в последнем вызове. Этим можно неплохо пользоватся .

Yegor
14.08.2013, 19:06
Выполнятся будет по очереди порядка записи вызовов.При независимых наборах переменных порядок исполнения внутри цикла не имеет значения.

S.A.D.
15.08.2013, 11:02
При независимых наборах переменных порядок исполнения внутри цикла не имеет значения.
да, но тем не менее, как правильно сказал Sergey666 выполняться подпрограммы будут в порядке написания (слева направо, сверху вниз). А то, что за счет времени цикла человек воспринимает выполнение этих POU как мгновенные говорит лишь о быстроте работы контроллера, а не о многозадачности.

Николаев Андрей, пользуясь конфигуратором задач я так понимаю процессор будет работать по прерываниям и уделять больше времени тому POU у которого приоритет выше? Просто цикл получится рваный(в одном цикле процессора выполнили чуть-чуть одного POU, в другом чуть-чуть второго)? В данном случае удается ли сократить время цикла ПЛК(затрачиваемое на выполнение всего проекта)? Мне кажется что нет, но может я не прав? Удается лишь создать иллюзию многопоточности и более ровное выполнение независимых частей программы.

Николаев Андрей
15.08.2013, 14:06
Ну я таки рекомендовал бы посмотреть этот раздел.
Если в кратце - есть несколько типов вызовов программ. Именно программ - тут они уже не подпрограммы. Хотя обмениваться переменными вполне себе могут.
Так вот их 3 основных:
1. В свободное время. Это когда у ПЛК есть время - тогда и выполнит один раз.
2. По событию. Например замкнулся вход, и я один раз выполняю программу, которая по замыканию данного входа что-то обсчитает\включит\выключит.
3. По таймеру. Это когда каждая программа имеет свой приоритет и частоту вызова. Например отслеживать концевики или перепадник дискретный надо крайне часто, ну скажем раз в 10 мс. А вот программу, в которой обсчитываются ПИД регуляторы вызывать чаще чем раз в 100-300 мс и смысла никакого нет, по большому счету...

KGB
17.08.2013, 18:38
Вообще то, вопрос многозадачности намного глубже и, наверное разработчикам нужно как то более подробно его осветить. Ну с поточной многозадачностью вроде понятно - задачи выполняются последовательно. Если циклы разные, то тоже можно задачу с меньшим циклом прокручивать несколько раз в более долго играющей, но если у нас несколько таких программ (для наглядности штук 20) и все с разными циклами как поведет себя контроллер? И, наверное более актуальный вопрос: а как при разных циклах программ происходит считывание и запись входов-выходов? Для каждой задачи по отдельности или все вместе? А если данные из одной задачи используются в другой?
А какое максимальное количество задач можно формировать в проекте?

Smith2007
17.08.2013, 19:50
Если у меня выполняется программа по таймеру с приоритетом 2 и она довольно длительная. Во время ее выполнения произойдут 2 события (с дискретных входов) и еще одно по таймеру с приоритетом 1. Все события в т.ч. события от таймера ставятся в очередь и выполнятся в любом случае или могут быть пропущены?

ASo
17.08.2013, 19:57
Что вы называете событиями с дискретных входов? Если их срабатывания - то опрос состояния входов производится перед выполнением программы - это основы ПЛК.

Smith2007
18.08.2013, 08:01
А если "сработавшие" дискретные входы используются в другой программе? И при этом в настоящее время выполняется длительная программа со 2 приоритетом и сработал таймер программы с первым приоритетом.
Расскажите пожалуйста новичку алгоритм обработки событий и приоритетов.

capzap
18.08.2013, 08:38
А если "сработавшие" дискретные входы используются в другой программе? И при этом в настоящее время выполняется длительная программа со 2 приоритетом и сработал таймер программы с первым приоритетом.
Расскажите пожалуйста новичку алгоритм обработки событий и приоритетов.

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

Smith2007
18.08.2013, 12:24
http://www.owen.ru/forum/showthread.php?t=15602&p=116902&viewfull=1#post116902

Кроме этого есть еще задача мониторинга температуры, протечки (5 датчиков), авария электропитания. Не могу быть уверенным, что на этом все закончится :)
Видимо только во вкус вхожу. Понравилась мне идея смски отправлять при возникновении нештатной ситуации.

capzap
18.08.2013, 12:36
один плк160 справиться и в одном потоке

Филоненко Владислав
19.08.2013, 13:53
Многозадачность требуется если есть ряд задач, к-е большую часть времени ничего не делают (ждут события), но при этом следующее время запуска неизвестно, т.е.нельзя использовать таймер.
Если же у вас 2 (3, 5, 1000) задач, которые надо вызывать по расписанию - просто вызывайте их по расписанию, желательно составив его так, чтобы нагрузка была равномернее.

P.S. "А если "сработавшие" дискретные входы используются в другой программе? И при этом в настоящее время выполняется длительная программа со 2 приоритетом и сработал таймер программы с первым приоритетом." - Какая "длинная задача", которую нельзя прервать? Разбейте длинную задачу на 1000 мелких - и в промежутках проверяйте состояние критических высокоприоритетных задач. Так будет надёжнее и предсказуемей.

KGB
19.08.2013, 15:40
Не нужно так категорично про основы ПЛК. На сегодняшний день есть т.н. бстрые входы, которые могут изменять данные не подчиняясь законам цикла. И у ПЛК Овен они тоже есть, но в документации написано, что независимо от времени цикла они обрабатывают сигналы от счетчиков и энкодера, а вот о возможности запуска от них задач - ни слова! Скорее всего, нельзя. Хотелось бы услышать версию разработчиков!

KGB
19.08.2013, 15:47
К слову сказать, Господа Разработчики, а существует ли возможность на ПЛК Овен создать полноценное аппаратное прерывание по сигналу с любого входа со временем реакции, ну хотя бы 10мкс?

Amko
19.08.2013, 18:22
Куда вам такая реакция? И встречный вопрос: "Используя ПЛК с временем цикла равным миллисекундам откуда вы возьмете микросекунды?"

Yegor
19.08.2013, 21:02
Используя ПЛК с временем цикла равным миллисекундам откуда вы возьмете микросекунды?Аппаратное прерывание — когда процессор при некотором событии в железе забывает про всё на свете и бежит исполнять кусок кода (обработчик), который зарегистрирован на это прерывание, а уже потом возвращается к рутине. В автоматизации фишка часто встречается урезанной до «тупого» счётчика импульсов, который нужен, например, для энкодера.

ASo
19.08.2013, 21:27
Только Вы понимаете, что при написании такой программы обработки прерывания должны выполнятся весьма жесткие требования?

Amko
19.08.2013, 21:32
а существует ли возможность на ПЛК Овен создать полноценное аппаратное прерывание по сигналу с любого входа со временем реакции, ну хотя бы 10мкс?
Я это понял так: от момента появления сигнала на DI вызвать кусок кода, обработать его и отдать управляющий сигнал на DO. И все это за 10мкс. Если не прав, ок, учту.

BETEP
19.08.2013, 21:32
термины не путаете?
http://social.msdn.microsoft.com/Search/ru-RU?query=%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%B E%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C&ac=4

Yegor
20.08.2013, 09:08
Я это понял так: от момента появления сигнала на DI вызвать кусок кода, обработать его и отдать управляющий сигнал на DO. И все это за 10мкс. Если не прав, ок, учту.Конечно же без быстрых выходов в такое время не уложиться. Но реакция это не обязательно вывод сигнала на выход ПЛК — вполне может быть и просто регистрация событий с высоким разрешением по времени.

KGB
20.08.2013, 11:51
Очень приятно услышать столько интересных и разнообразных мнений по поводу прерывания! Однако, хотелось бы услышать и разработчиков. Повторюсь: ВОЗМОЖНО ЛИ НА ПЛК ОВЕН РЕАЛИЗОВАТЬ ПРЕРЫВАНИЕ ПО ВНЕШНЕМУ СОБЫТИЮ.
И что за странная строка в планировщике событий "TASK_I01"?

Дмитрий Артюховский
20.08.2013, 17:27
ПЛК110 - "быстрый таймер" - прерывания с периодом от 20 мкс.... опрашивайте свои внешние события и реагируйте на них...

Филоненко Владислав
21.08.2013, 17:17
К сожалению, языки CoDeSys (а скорее сам компилятор), не предназначены для написания прерываний. Очень уж неоптимизированный код получается.
Плюс большие накладные расходы на сам вызов программы CoDeSys из прерывания.
Поэтому 20 мкс - это тот предел, ниже которого ПЛК будет выполнять только код прерывания. Даже на простой программе.
Поэтому в ПЛК110 новой редакции мы применили 2 сопроцессора для обработки быстрых входов/выходов.
И высокоскоростная обработка буде происходить внутри сопроцесоров. На текущий момент поддержан весь "быстрый" функционал ПЛК110, в дальнейшем функционал будет расширен, Для реализациии типовых высокоскоростных задач.
Достигнутый цикл обработки = 1 мкс и не подвержен джиттеру.

KGB
21.08.2013, 18:23
Писать в CoDeSys обработчик прерывания - неблагодарное занятие, да и ненужное. В самом языке поддерживается идея вытесняющей многозадачности и для контроллеров имеющих быстрые входы можно реализовать переход к более приоритетной задаче при наличии события на таком входе (по сути это и есть прерывание) но при одном условии - если разработчики заложили такую функцию в свое изделие. У Овена есть быстрые входы, в планировщике задач есть вызов задачи по внешнему событию, и даже в этих событиях заложены две позиции TASK_Т01 и TASK_I01, первая из которых - вызов задачи по сигналу таймера. Что означает вторая - похоже военная тайна (ну, или я не заметил ее расшифровки между строк всей документации) хотя судя по написанию - это и есть физический вход, но тогда какой?И самое главное - непонятно, как работает вызов такой задачи, по принципу вытесняющей многозадачности или не вытесняющей. Собственно вот те несколько вопросов на которые я хотел бы услышать ответ.
Или, хотя бы, "...в током-то и таком-то контроллере такая функция реализована...", но в ответ - тишина....
Простите, не тишина, а куча идей на отвлеченную тему.

KGB
21.08.2013, 18:38
Кстати, Владислав, судя по вашей фразе
в ПЛК110 новой редакции мы применили 2 сопроцессора для обработки быстрых входов/выходов.
И высокоскоростная обработка буде происходить внутри сопроцесоров. На текущий момент поддержан весь "быстрый" функционал ПЛК110 в ранних версиях ПЛК110 и, наверное ПЛК100 эти функции должны "хромать"?

Дмитрий Артюховский
21.08.2013, 23:00
Идея прерываний противоречит концепции ПЛК в принципе. Однако она удобна, поэтому в ПЛК110 сделан параллельный циклик, который много быстрее основного. Это позволяет эмулировать прерывания, с запаздыванием отклика на время не более этого самого циклика. В ПЛК100 это совсем не реализовано. У меня наворочено довольно много функционала при быстром прерывании 40 мкс и основным циклом 4 мс. Быстрый таймер написан на IL, что быстрее чем аналог на ST процентов на 30, хотя это возможно от способа мышления зависит ))
ЗЫ. а чему там хромать? прошло 20 мкс - прогоняется циклик, кончился - происходит возврат к выполнению основного.... если в основном много работы - он не вложится в свои рамки... но это уже проблемы программера.... отличие от классических прерываний в том, что основной цикл нормально увидит результаты быстрых, только в начале следующего.... пробрасывать через общие переменные можно, но тогда такооой бардак при выполнении....

Филоненко Владислав
22.08.2013, 18:55
Писать в CoDeSys обработчик прерывания - неблагодарное занятие, да и ненужное.
Хм. А кто будет делать полезную работу?


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

Давайте не будем фантазировать. В языке ничего не поддерживается. Это все дело ОС и соответствующего ПО обработки прерываний.
Что прерывание таймера в ПЛК110, что вызов задачи по событию в том же СПК - внутри всё одинаковое :) И очень неоптимальное, к сожалению. В 3-м CODeSys-е еще хуже стало.



У Овена есть быстрые входы, в планировщике задач есть вызов задачи по внешнему событию, и даже в этих событиях заложены две позиции TASK_Т01 и TASK_I01, первая из которых - вызов задачи по сигналу таймера. Что означает вторая - похоже военная тайна (ну, или я не заметил ее расшифровки между строк всей документации) хотя судя по написанию - это и есть физический вход, но тогда какой?И самое главное - непонятно, как работает вызов такой задачи, по принципу вытесняющей многозадачности или не вытесняющей. Собственно вот те несколько вопросов на которые я хотел бы услышать ответ.
Или, хотя бы, "...в током-то и таком-то контроллере такая функция реализована...", но в ответ - тишина....
Простите, не тишина, а куча идей на отвлеченную тему.
TASK_Т01 и TASK_I01с - в первый раз такие аббревиатуры вижу. Сриншотик сохранился? Даже стало интересно.

Филоненко Владислав
22.08.2013, 18:56
Кстати, Владислав, судя по вашей фразе в ранних версиях ПЛК110 и, наверное ПЛК100 эти функции должны "хромать"?
Заданные скоростные параметры были реализованы. Но хотелось большего - поставили сопроцессоры.

Филоненко Владислав
22.08.2013, 18:57
Идея прерываний противоречит концепции ПЛК в принципе. Однако она удобна, поэтому в ПЛК110 сделан параллельный циклик, который много быстрее основного. Это позволяет эмулировать прерывания, с запаздыванием отклика на время не более этого самого циклика. В ПЛК100 это совсем не реализовано. У меня наворочено довольно много функционала при быстром прерывании 40 мкс и основным циклом 4 мс. Быстрый таймер написан на IL, что быстрее чем аналог на ST процентов на 30, хотя это возможно от способа мышления зависит ))
ЗЫ. а чему там хромать? прошло 20 мкс - прогоняется циклик, кончился - происходит возврат к выполнению основного.... если в основном много работы - он не вложится в свои рамки... но это уже проблемы программера.... отличие от классических прерываний в том, что основной цикл нормально увидит результаты быстрых, только в начале следующего.... пробрасывать через общие переменные можно, но тогда такооой бардак при выполнении....

Всё верно, кроме того, что прерывание не эмулируется, Код обработчика именно в нем и работает.

KGB
23.08.2013, 10:43
TASK_Т01 и TASK_I01с - в первый раз такие аббревиатуры вижу. Сриншотик сохранился? Даже стало интересно.

9689
Пожалуйста, Владислав!
Пополните свои знания о CoDeSys/

capzap
23.08.2013, 11:03
9689
Пожалуйста, Владислав!
Пополните свои знания о CoDeSys/

Вот Вы бы лучше Владиславу напомнили эту тему http://www.owen.ru/forum/showthread.php?t=1855 может он бы и вспомнил, а может и Вы бы не задали этот вопрос :)

KGB
23.08.2013, 11:50
Идея прерываний противоречит концепции ПЛК в принципе..
Дмитрий, давайте не будем углубляться в дебри концепций и принципов ПЛК...
Ваша идея маленького цикла - это просто выход из положения при отсутствии нормального решения. Тем более, что ее можно реализовать только в случае вытесняющей многозадачности, если многозадачность поточная, то результат будет весьма любопытный...
А если уж в ПЛК реализована вытесняющая многозадачность, то зачем такие сложности с обработкой входа, если можно просто реагировать на событие этого входа? Отсюда собственно и возник вопрос, повторюсь, а ВОЗМОЖНО ЛИ НА КАКОМ НИБУДЬ КОНТРОЛЛЕРЕ ОВЕН РЕАЛИЗОВАТЬ ПРИОРИТЕТНОЕ ВЫПОЛНЕНИЕ ЗАДАЧИ ПО СОБЫТИЮ НА ФИЗИЧЕСКОМ ВХОДЕ?
По моему это не слишком сложный вопрос для тех кто разрабатывал и создавал такой контроллер, но почему-то, вместо ответа ухе несколько страниц переливания из пустого в порожнее. Мне кажется, разработчикам должно быть стыдно, если они не знают что сказать... Да и не только им, но и всем кто связан с продвижение этого продукта на рынке. Вывеска красивая, а что под ней..., - да какая разница! Пипл хавает!
Ничего личного.... Просто - мысли вслух.

KGB
23.08.2013, 11:58
Вот Вы бы лучше Владиславу напомнили эту тему http://www.owen.ru/forum/showthread.php?t=1855 может он бы и вспомнил, а может и Вы бы не задали этот вопрос :)

Спасибо за подсказку. Сам не нашел.
Надо же, как все запущено... Уже пять лет вопрос висит в воздухе и ничего кроме фырканья в ответ не слышно!

capzap
23.08.2013, 12:04
Спасибо за подсказку. Сам не нашел.
Надо же, как все запущено... Уже пять лет вопрос висит в воздухе и ничего кроме фырканья в ответ не слышно!

там четко сказано что внешнее событие в контроллерах овен не поддерживается
по поводу собитий от физ.входа приоритетом может служить грамотно составленный код используя if else

Дмитрий Артюховский
23.08.2013, 12:10
"ВОЗМОЖНО ЛИ НА КАКОМ НИБУДЬ КОНТРОЛЛЕРЕ ОВЕН РЕАЛИЗОВАТЬ ПРИОРИТЕТНОЕ ВЫПОЛНЕНИЕ ЗАДАЧИ ПО СОБЫТИЮ НА ФИЗИЧЕСКОМ ВХОДЕ?"

дык, вам же четко ответили - НЕТ. и никто этого делать не будет, поскольку это нарушает концепцию ПКЛ : "считывание входов - обработка - установка выходов"

желаемое вами устройство сделать разумеется несложно, но это будет не ПЛК....

KGB
23.08.2013, 13:41
Или я не стой ноги сегодня встал, или в воздухе какие-то флюиды...


... это нарушает концепцию ПКЛ : "считывание входов - обработка - установка выходов"

желаемое вами устройство сделать разумеется несложно, но это будет не ПЛК....
Дмитрий, не надо рссказывать о концепции ПЛК! Это нескромно! Вы не являетесь отцом-основателем ни ПЛК, ни его концепции.
Для общего развития очень рекомендую почитать ГОСТ Р 51840-2001 (он же МЭК 61131-1-92) , и когда его досконально изучите обратите внимание на п.4.2 Таблица 1 вторая строка снизу "Управление исполнением...",
и после этого попробуйте вновь повторить фразу о концепции... уверен она будет звучать по другому!
Ваша концепция никак не стыкуется, ни с работой сторожевого таймере, ни с работой быстрых счетчиков, ШИМ выводов... и т.д. и сами Вы используете прерывание от таймера, которое тоже не вписывается в эту "концепцию"!
Или Вы хотите блеснуть пиком своего творчества, опрашивая по 40 000 раз в секунду вход с целью получить от туда сигнал, который, возможно приходит один раз в год?...
Повторяю, не цитируйте концепции всуе...

Филоненко Владислав
23.08.2013, 13:42
Вот Вы бы лучше Владиславу напомнили эту тему http://www.owen.ru/forum/showthread.php?t=1855 может он бы и вспомнил, а может и Вы бы не задали этот вопрос :)
Займусь самоцитированием:


1. External event не работает.

KGB
23.08.2013, 14:40
Спасибо!
В общем то именно такой простой ответ и хотелось бы услышать, ведь он не сильно сложный, наверное можно еще добавить что"...ни в одном из контроллеров..", В общемто такая мысль уже звучала в посте #10, но как то сильно завуалированно. А цитата имеет солидный возраст. Я надеялся что что нибудь поменялось.
Советую руководству ОВЕНа обратить внимание на "Руководсто по программированию ПКЛ110 и ПЛК160" стр.50 рис4.13, г) и подпись под им. Это все таки документ!

Николаев Андрей
23.08.2013, 14:46
Прекращу холивар:
1. Данный вид прерываний "External event" в контроллерах ОВЕН не поддерживается.
2. Поддерживается прерывание "по событию".

Теперь по реакции на срабатывание входов.
Обновление памяти входов-выходов на данный момент происходит в основном цикле контроллера.
Работа с быстрыми входами-выходами будет реализована немного по другому - через прямую работу с сопроцессорами.

Теперь о грустном. Господин (жа) KGB - прошу Вас в течение суток предоставить информацию о себе: где работаете, Ваши персональные и контактные данные. Можно в личку.
Иначе я буду рассматривать Вашу деятельность как подрывную на форуме, с соответствующими вытекающими :)

За ошибку в руководстве спасибо, поправим.

KGB
23.08.2013, 19:18
Андрей!
Свои личные данные я даю только при личном знакомстве, и не выкладываю их в Интернет. Это моя принципиальная позиция! И уж тем более, если такая просьба поступает в ультимативной форме! Если Вы считаете, что моя деятельность носит подрывной характер - делайте "соответствующие вытекающие" это ваше право. Хотя что подрывного Вы находите в попытке получить ответ на простой вопрос? Тем более что ответ Вы знали, но придерживали давая страстям накалиться, или это осознанная провокация?
По теме: в посте #14 прозвучал еще один интересный вопрос который, на мой взгляд осознано не воспринимается большинством пользователей контроллеров ОВЕН, но для нормальной работы требующий понимания. Но вопрос не мой, и отвечать на него или нет зависит только от уровня культуры тех, кто может на него ответить.

Дмитрий Артюховский
23.08.2013, 22:39
Почитал упомянутый гост, не нашел в нем противоречий концепции. Именно она там и описана. Магическое слово "прерывание" означает совершенно не тоже самое что в мире микроконтроллеров и больших компьютеров. Оно в данном контексте означает не более как прерывание цикла ожидания. Задача выполняется ПЕРИОДИЧЕСКИ, причем основное время это ожидание начала следующего такта, если нужно сократить цикл ожидания - его "прерывают". Если установлено малое (недостаточное) время выполнения основного цикла - "прерывание" теряет физический смысл. Упоминавшийся где-то буржуйский контроллер (серии F), имеющий "прерывания" по физическому сигналу - требует импульс этого сигнала не менее 200 мкс. Это не более чем рекламное извращение, малоприменимое в реальной практике.
Так что, малое время основного цикла, и программа, "размазывающая" свое выполнение по многим тактам......

Николаев Андрей
26.08.2013, 11:02
Андрей!
Свои личные данные я даю только при личном знакомстве, и не выкладываю их в Интернет. Это моя принципиальная позиция! И уж тем более, если такая просьба поступает в ультимативной форме! Если Вы считаете, что моя деятельность носит подрывной характер - делайте "соответствующие вытекающие" это ваше право. Хотя что подрывного Вы находите в попытке получить ответ на простой вопрос? Тем более что ответ Вы знали, но придерживали давая страстям накалиться, или это осознанная провокация?

Так я и предлагал Вам личное знакомство :) Хотите в личку, хотите на почту, хотите в офис приезжайте. Я общедоступен и все это знают. :)
Надо объяснять почему меня смущают Ваши сообщения? Извольте - нет ни одного вопроса по существу, или ни одного описания что же сделали именно Вы на оборудовании ОВЕН, или с какими вопросами по оборудованию ОВЕН Вы столкнулись. Нет ни одной конструктивной консультации по оборудованию ОВЕН. Да и неконструктивной нет... Скрытая реклама некоторых конкурентных компаний. и т.д.
Мы рады всем специалистам, готовым общаться. Мы открыты для критики. С конкурентами и провокаторами все будет достаточно просто. И быстро.
И так как я не хочу считать Вас таковым и предлагал Вам познакомиться. На что Вы ответили не сильно корректно по отношению к супермодератору.
Мое предложение все-еще в силе.
Однако предлагаю дальнейшее знакомство перевести в личку. Скажу проще - тут сообщения, не относящиеся к теме буду удалять.


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