Коллеги, доброго всем вечера!
Возникла весьма необычная задача:
принять на контроллер несколько расчетных точек со значениями мощности (порядка 200 штук). По ним необходимо получить спектрограмму и от нее регулировать подачу продукта. Решение пока вижу только через преобразование Фурье, а конкретно через БПФ. Но возник вопрос можно ли на ПЛК (в моем случае в среде CODESYS, но также интересно на других вендорах) использовать рекурсивный вызов ФБ? Где-то читал, что рекурсия в МЭК 61131 в принципе запрещена, но так и не смог найти где (то ли у Петрова И.В., то ли в самом стандарте, но ни там, ни там не нашел ничего), возможно это даже кто-то мне сказал... .
В теории можно реализовать не рекурсивный, а итеративный алгоритм, но интересно стало по рекурсии
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Рекурсия на ПЛК
Модератор: Глоб.модераторы
-
- завсегдатай
- Сообщения: 545
- Зарегистрирован: 05 ноя 2012, 07:38
- Имя: Дозморов Владимир Владимирович
- Страна: Россия
- город/регион: Северск
- Благодарил (а): 1 раз
- Поблагодарили: 28 раз
Рекурсия на ПЛК
В FBD запрет на обработку на неопределенность, к примеру взяв два блока и-не нельзя сделать RS тригер.
Это можно увидеть во время программирования когда по ошибки зацикливании блоков (рекурсия запрещена).
-
- эксперт
- Сообщения: 1035
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 100 раз
- Поблагодарили: 141 раз
-
- почётный участник форума
- Сообщения: 1180
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Рекурсия на ПЛК
Оба алгоритма опасны для PLC, если это делать в одном скане (внимание на сходимость), может сработать Watchdog.
Пример RS триггера, см. картинку. Неопределенность отсутствует, внимание на вход с -->>.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
Рекурсия на ПЛК
Рекурсия запрещена правилами хорошего тона. Тема всплывала на форуме, но применительно к морскому подрегистровому оборудованию.
Ибо поведение непредсказуемо - поймать stack overflow на рекурсии особо удачливым удавалось даже на классической учебной задаче по вычислению факториала. А уж зацикленная рекурсия обвалит программу обязательно
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- завсегдатай
- Сообщения: 545
- Зарегистрирован: 05 ноя 2012, 07:38
- Имя: Дозморов Владимир Владимирович
- Страна: Россия
- город/регион: Северск
- Благодарил (а): 1 раз
- Поблагодарили: 28 раз
Рекурсия на ПЛК
не оригенально
Интересней BNOT_02 – Out выкинуть на свободный физический выход с него проводком на физический вход и на BAND_01 – In2
Чебурашку видишь???? я тоже не вижу, а он есть.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Рекурсия на ПЛК
Для каждой рекурсии можно составить эквивалентный цикл. Рекурсия просто чуть побыстрее и более читаема.
Например так:
https://habr.com/ru/articles/533034/
Например так:
https://habr.com/ru/articles/533034/
-
- эксперт
- Сообщения: 2469
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2119 раз
- Поблагодарили: 206 раз
Рекурсия на ПЛК
Да, например, while с массивом. Главное аккуратно управлять индексом массива.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.