PDA

Просмотр полной версии : Быстродействие ПЛК, Время цикла



Isco
09.08.2024, 14:05
Здравствуйте,
имеется проект на ПЛК110 М02 (транзисторные выходы) который формирует определённую последовательность импульсов на четырёх дискретных выходах. В процессе выполнения программы длительность некоторых импульсов требуется регулировать, желательно с минимальной дискретностью.

Сейчас программа такова, что время цикла составляет 2мс и соответственно дискретность регулировки длительности на дискретном выходе составляет 2мс. Т.е. например 40мс, 42мс, 44мс и т.д. Проверял на осциллографе.

Вопрос - если применить более быстродействующую ПЛК (ПЛК210 как понимаю?) то будет ли та-же самая программа выполняться быстрее, так, чтоб я смог уменьшить время цикла например до 0,5мс и соответственно повысить дискретность регулировки длительности.

Быстродействующие выходы как понимаю не подойдут т.к. выходной сигнал не шим, а имеет сравнительно сложную последовательность которая меняется в соответствии с программой.

Спасибо.

kondor3000
09.08.2024, 14:27
Здравствуйте,
имеется проект на ПЛК110 М02 (транзисторные выходы) который формирует определённую последовательность импульсов на четырёх дискретных выходах. В процессе выполнения программы длительность некоторых импульсов требуется регулировать, желательно с минимальной дискретностью.

Сейчас программа такова, что время цикла составляет 2мс и соответственно дискретность регулировки длительности на дискретном выходе составляет 2мс. Т.е. например 40мс, 42мс, 44мс и т.д. Проверял на осциллографе.

Вопрос - если применить более быстродействующую ПЛК (ПЛК210 как понимаю?) то будет ли та-же самая программа выполняться быстрее, так, чтоб я смог уменьшить время цикла например до 0,5мс и соответственно повысить дискретность регулировки длительности.

Быстродействующие выходы как понимаю не подойдут т.к. выходной сигнал не шим, а имеет сравнительно сложную последовательность которая меняется в соответствии с программой.

Спасибо.

Программа на ПЛК210 быстрее не будет, будет примерно также цикл 2 мс.
Минимальное время цикла у всех ПЛК 1 мс. Вы можете добиться только цикла в 1 мс, упростив программу.

Валенок
09.08.2024, 17:27
плк110, быстрый таймер, для первых 4х/2х Do (плк60/30) квант 20мкс

melky
09.08.2024, 22:19
Если сложная форма, зависящая от программы вам и быстрый таймер не поможет.

Тут либо применять ПЛК, заточенные под движения (SoftMotion) либо ПЛК, где можно управлять выходами из программы, не дожидаясь конца цикла, и это не про Овен.
А там могут и санкции подкатить..

Валенок
10.08.2024, 11:26
Сложные формы в прерываниях (а быстрый таймер это оно в некотором смысле) не обсчитывают. Для этого юзают "паралельные" медленные (тут - обычный цикл) процессы.
Вы ж не вешаете у себя на пк на каждый системный тик обсчет состояния звезд Млечного пути.
Ну какая "сложная" форма на ПЛК?

melky
10.08.2024, 13:42
Валенок, сложная форма, когда вкл/выкл состояния меняются по длительности в рамках одного цикла программы.
Не знаю, что там тс нужно на самом деле.

Ну пример, нужны строгие импульсы 10-22-12-10-20 мс к примеру и их постоянное повторение, цикл программы 7 мс скажем.
На обычном ПЛК, который управляет выходами только в конце цикла основной программы это невозможно в принципе

Валенок
10.08.2024, 19:33
ну так приведенное не нужно будет даже на 20мкс вешать, на 100..1000мкс для минимизации "джитера", а основной цикл хоть 13мс хоть 27мс.
10,22,12мс... Ну ниочем для быстрого таймера (и быстрых выходов) задача же. Что такого сложного может родится в плк что обсчитывать очень долго и прямо таки в "прерывании" надо?

melky
10.08.2024, 20:24
Валенок, дело не в прерываниях, а в цикле самого ПЛК.
Если он 7мс то у тебя срабатывание выходов всегда кратно 7мс. Все, этим и ограничены.
И тут только быстрые выходы, которые работают вне цикла ПЛК, либо возможность управлять выходами внутри цикла ПЛК, что не все ПЛК позволяют.

Валенок
10.08.2024, 20:56
так я про быстрые выходы как бы и говорил.
А обычные выходы вроде не потянут даже не из за цикла (хотя 7мс это повод для оптимизации) а помойму по паспорту - даже для К там не 1мс.
Даже пустой проект не даст четких 1000 циклов за секунду.

melky
10.08.2024, 21:08
Валенок, так я и говорю, Овену далеко. Кстати вообще ПЛК на CodeSys практически всем далеко, ибо все таймеры софтовые

Валенок
10.08.2024, 22:22
Так все софтовые таймеры растут из хотя бы одного железного.
А ТС пока не описал нормально реальные требования, а то что привел - так себе.
Поэтому может и не подойдет Овен, а может и его за глаза хватит с лихвой. Выводы не из чего делать. Смысл с плеча рубить?
Я ж привел что есть - дальше он сам.

IVM
11.08.2024, 09:23
Я однажды делал обмен информацией с внешним устройством в последовательном коде через быстрый вход и выход ПЛК Овен. Все получилось.

melky
11.08.2024, 09:53
В CodeSys софтовый таймер не растет ни от какого железного, просто а момент проверки проверяет тики часов. А проверяет только когда до его кода дойдет очередь. Не путайте. Таймере в CodeSys это ошибка природы.

Newcomer
11.08.2024, 11:52
В CodeSys софтовый таймер не растет ни от какого железного, просто а момент проверки проверяет тики часов. А проверяет только когда до его кода дойдет очередь. Не путайте. Таймере в CodeSys это ошибка природы.

А прерывание 20 мкс от чего синхронизируется ?

melky
11.08.2024, 12:29
Newcomer вы про быстрые выходы или о таймерах CodeSys вообще? Покажите пожалуйста мне таймер Codesys в рамках PRG который сможет вызвать прерывание?

допустим вы запихнули задачу в прерывания на CodeSys, и у вас софтовый таймер работает в данной задаче (проверяет время срабатывания и т.д.).
Включите или выключите обычный выход К контролера до окончания основной программы PRG.

IVM
11.08.2024, 12:37
Newcomer вы про быстрые выходы или о таймерах CodeSys вообще? Покажите пожалуйста мне таймер Codesys в рамках PRG который сможет вызвать прерывание?

допустим вы запихнули задачу в прерывания на CodeSys, и у вас софтовый таймер работает в данной задаче (проверяет время срабатывания и т.д.).
Включите или выключите обычный выход К контролера до окончания основной программы PRG.

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

Валенок
11.08.2024, 16:22
В CodeSys софтовый таймер не растет ни от какого железного,
Растут все от железа, но в смысле что используют TIME(), который на прерывании


Таймере в CodeSys это ошибка природы.
Отличная штука. Достаточно ровно 1 (одного) железного и становятся странными рекламные фразы других сред программирования типа "а у нас аж 50 таймеров". А тута кол-во таймеров = размер_оперативки / sizeof(таймера)

А ошибка природы - это исполнители (просьба не принимать на свой счет) вычисляющие полиномы в прерываниях по таймеру.

melky
11.08.2024, 16:44
Валенок, там где таймеров типа 50, есть способность вызывать по ним прерывания и выполнение кода, независимо от цикла ПЛК. Не просто так скажем прямо.

Валенок
11.08.2024, 18:34
Ну там где именно "аж 50" - прерывания по ним все равно вторичные. Точно так же как 20мкс тут.

есть способность вызывать по ним прерывания и выполнение кода, независимо от цикла ПЛК.
Дык это прям про 20мкс - код вызывается и независимо от цикла ПЛК.

Не просто так скажем прямо.
Кто ж спорит. Есть такие задачи. Вот например на этом форуме если ткнуть рандомно 1000 вопросов, то наверно больше половины требуют работы с прерываниями. Я не ошибся?

))




--
Да еще. Там где именно прерывания - наверно совсем просто кодить. Ни о чем не нужно помнить. Так же как в Кодесис - взял любую переменную и поменял. И зачем/кому сдался этот Кодесис, а точнее - этот подход:
прочитать входы, отработать, записать выходы?

melky
11.08.2024, 18:42
Валенок, я не говорю, что просто, я сказал, что если надо управлять выходами в теле цикла ПЛК это не про Овен.
Ну это если действительно надо конечно, а не может потерпеть :)

Валенок
11.08.2024, 18:49
если надо управлять выходами в теле цикла ПЛК это не про Овен...
...но вполне про Овен если квант 20мкс норм и достаточно 4/2 di/do
Бывает что этого таки мало))