Просмотр полной версии : Быстродействие ПЛК, Время цикла
Здравствуйте,
имеется проект на ПЛК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 мс, упростив программу.
плк110, быстрый таймер, для первых 4х/2х Do (плк60/30) квант 20мкс
Если сложная форма, зависящая от программы вам и быстрый таймер не поможет.
Тут либо применять ПЛК, заточенные под движения (SoftMotion) либо ПЛК, где можно управлять выходами из программы, не дожидаясь конца цикла, и это не про Овен.
А там могут и санкции подкатить..
Сложные формы в прерываниях (а быстрый таймер это оно в некотором смысле) не обсчитывают. Для этого юзают "паралельные" медленные (тут - обычный цикл) процессы.
Вы ж не вешаете у себя на пк на каждый системный тик обсчет состояния звезд Млечного пути.
Ну какая "сложная" форма на ПЛК?
Валенок, сложная форма, когда вкл/выкл состояния меняются по длительности в рамках одного цикла программы.
Не знаю, что там тс нужно на самом деле.
Ну пример, нужны строгие импульсы 10-22-12-10-20 мс к примеру и их постоянное повторение, цикл программы 7 мс скажем.
На обычном ПЛК, который управляет выходами только в конце цикла основной программы это невозможно в принципе
ну так приведенное не нужно будет даже на 20мкс вешать, на 100..1000мкс для минимизации "джитера", а основной цикл хоть 13мс хоть 27мс.
10,22,12мс... Ну ниочем для быстрого таймера (и быстрых выходов) задача же. Что такого сложного может родится в плк что обсчитывать очень долго и прямо таки в "прерывании" надо?
Валенок, дело не в прерываниях, а в цикле самого ПЛК.
Если он 7мс то у тебя срабатывание выходов всегда кратно 7мс. Все, этим и ограничены.
И тут только быстрые выходы, которые работают вне цикла ПЛК, либо возможность управлять выходами внутри цикла ПЛК, что не все ПЛК позволяют.
так я про быстрые выходы как бы и говорил.
А обычные выходы вроде не потянут даже не из за цикла (хотя 7мс это повод для оптимизации) а помойму по паспорту - даже для К там не 1мс.
Даже пустой проект не даст четких 1000 циклов за секунду.
Валенок, так я и говорю, Овену далеко. Кстати вообще ПЛК на CodeSys практически всем далеко, ибо все таймеры софтовые
Так все софтовые таймеры растут из хотя бы одного железного.
А ТС пока не описал нормально реальные требования, а то что привел - так себе.
Поэтому может и не подойдет Овен, а может и его за глаза хватит с лихвой. Выводы не из чего делать. Смысл с плеча рубить?
Я ж привел что есть - дальше он сам.
Я однажды делал обмен информацией с внешним устройством в последовательном коде через быстрый вход и выход ПЛК Овен. Все получилось.
В CodeSys софтовый таймер не растет ни от какого железного, просто а момент проверки проверяет тики часов. А проверяет только когда до его кода дойдет очередь. Не путайте. Таймере в CodeSys это ошибка природы.
Newcomer
11.08.2024, 11:52
В CodeSys софтовый таймер не растет ни от какого железного, просто а момент проверки проверяет тики часов. А проверяет только когда до его кода дойдет очередь. Не путайте. Таймере в CodeSys это ошибка природы.
А прерывание 20 мкс от чего синхронизируется ?
Newcomer вы про быстрые выходы или о таймерах CodeSys вообще? Покажите пожалуйста мне таймер Codesys в рамках PRG который сможет вызвать прерывание?
допустим вы запихнули задачу в прерывания на CodeSys, и у вас софтовый таймер работает в данной задаче (проверяет время срабатывания и т.д.).
Включите или выключите обычный выход К контролера до окончания основной программы PRG.
Newcomer вы про быстрые выходы или о таймерах CodeSys вообще? Покажите пожалуйста мне таймер Codesys в рамках PRG который сможет вызвать прерывание?
допустим вы запихнули задачу в прерывания на CodeSys, и у вас софтовый таймер работает в данной задаче (проверяет время срабатывания и т.д.).
Включите или выключите обычный выход К контролера до окончания основной программы PRG.
Зачем задавать глупые вопросы и толочь воду в ступе про софтовый таймер, который абсолютно бесполезен для автора темы. Валенок давно написал что надо использовать.
В CodeSys софтовый таймер не растет ни от какого железного,
Растут все от железа, но в смысле что используют TIME(), который на прерывании
Таймере в CodeSys это ошибка природы.
Отличная штука. Достаточно ровно 1 (одного) железного и становятся странными рекламные фразы других сред программирования типа "а у нас аж 50 таймеров". А тута кол-во таймеров = размер_оперативки / sizeof(таймера)
А ошибка природы - это исполнители (просьба не принимать на свой счет) вычисляющие полиномы в прерываниях по таймеру.
Валенок, там где таймеров типа 50, есть способность вызывать по ним прерывания и выполнение кода, независимо от цикла ПЛК. Не просто так скажем прямо.
Ну там где именно "аж 50" - прерывания по ним все равно вторичные. Точно так же как 20мкс тут.
есть способность вызывать по ним прерывания и выполнение кода, независимо от цикла ПЛК.
Дык это прям про 20мкс - код вызывается и независимо от цикла ПЛК.
Не просто так скажем прямо.
Кто ж спорит. Есть такие задачи. Вот например на этом форуме если ткнуть рандомно 1000 вопросов, то наверно больше половины требуют работы с прерываниями. Я не ошибся?
))
--
Да еще. Там где именно прерывания - наверно совсем просто кодить. Ни о чем не нужно помнить. Так же как в Кодесис - взял любую переменную и поменял. И зачем/кому сдался этот Кодесис, а точнее - этот подход:
прочитать входы, отработать, записать выходы?
Валенок, я не говорю, что просто, я сказал, что если надо управлять выходами в теле цикла ПЛК это не про Овен.
Ну это если действительно надо конечно, а не может потерпеть :)
если надо управлять выходами в теле цикла ПЛК это не про Овен...
...но вполне про Овен если квант 20мкс норм и достаточно 4/2 di/do
Бывает что этого таки мало))
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot