1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Рекурсия на ПЛК

Модератор: Глоб.модераторы

Ответить

Автор темы
Belyash_k
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 17 янв 2020, 14:11
Имя: Камиль
Страна: Россия
Благодарил (а): 7 раз

Рекурсия на ПЛК

Сообщение Belyash_k »

Коллеги, доброго всем вечера!

Возникла весьма необычная задача:
принять на контроллер несколько расчетных точек со значениями мощности (порядка 200 штук). По ним необходимо получить спектрограмму и от нее регулировать подачу продукта. Решение пока вижу только через преобразование Фурье, а конкретно через БПФ. Но возник вопрос можно ли на ПЛК (в моем случае в среде CODESYS, но также интересно на других вендорах) использовать рекурсивный вызов ФБ? Где-то читал, что рекурсия в МЭК 61131 в принципе запрещена, но так и не смог найти где (то ли у Петрова И.В., то ли в самом стандарте, но ни там, ни там не нашел ничего), возможно это даже кто-то мне сказал... :ext_secret: .

В теории можно реализовать не рекурсивный, а итеративный алгоритм, но интересно стало по рекурсии :ext_book:
Аватара пользователя

doza
завсегдатай
завсегдатай
Сообщения: 545
Зарегистрирован: 05 ноя 2012, 07:38
Имя: Дозморов Владимир Владимирович
Страна: Россия
город/регион: Северск
Благодарил (а): 1 раз
Поблагодарили: 28 раз

Рекурсия на ПЛК

Сообщение doza »

Belyash_k писал(а): 19 мар 2024, 22:09 Где-то читал, что рекурсия в МЭК 61131 в принципе запрещена
В FBD запрет на обработку на неопределенность, к примеру взяв два блока и-не нельзя сделать RS тригер.
Это можно увидеть во время программирования когда по ошибки зацикливании блоков (рекурсия запрещена).

stesl
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 100 раз
Поблагодарили: 141 раз

Рекурсия на ПЛК

Сообщение stesl »

Belyash_k писал(а): 19 мар 2024, 22:09 использовать рекурсивный вызов ФБ
А что мешает проверить? Создайте ФБ и вызовите в нем его самого, получится?)
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Рекурсия на ПЛК

Сообщение Looker »

Belyash_k писал(а): 19 мар 2024, 22:09В теории можно реализовать не рекурсивный, а итеративный алгоритм
Оба алгоритма опасны для PLC, если это делать в одном скане (внимание на сходимость), может сработать Watchdog.
doza писал(а): 20 мар 2024, 10:25В FBD запрет на обработку на неопределенность, к примеру взяв два блока и-не нельзя сделать RS тригер.
Пример RS триггера, см. картинку. Неопределенность отсутствует, внимание на вход с -->>.
RS.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3971
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 21 раз
Поблагодарили: 229 раз

Рекурсия на ПЛК

Сообщение Никита »

Belyash_k писал(а): 19 мар 2024, 22:09 Где-то читал, что рекурсия в МЭК 61131 в принципе запрещена, но так и не смог найти где (то ли у Петрова И.В., то ли в самом стандарте, но ни там, ни там не нашел ничего), возможно это даже кто-то мне сказал...
Рекурсия запрещена правилами хорошего тона. Тема всплывала на форуме, но применительно к морскому подрегистровому оборудованию.
Ибо поведение непредсказуемо - поймать stack overflow на рекурсии особо удачливым удавалось даже на классической учебной задаче по вычислению факториала. А уж зацикленная рекурсия обвалит программу обязательно
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
Аватара пользователя

doza
завсегдатай
завсегдатай
Сообщения: 545
Зарегистрирован: 05 ноя 2012, 07:38
Имя: Дозморов Владимир Владимирович
Страна: Россия
город/регион: Северск
Благодарил (а): 1 раз
Поблагодарили: 28 раз

Рекурсия на ПЛК

Сообщение doza »

Looker писал(а): 20 мар 2024, 18:31 Пример RS триггера, см. картинку. Неопределенность отсутствует, внимание на вход с -->>.
не оригенально
Интересней BNOT_02 – Out выкинуть на свободный физический выход с него проводком на физический вход и на BAND_01 – In2
Чебурашку видишь???? я тоже не вижу, а он есть.

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Рекурсия на ПЛК

Сообщение Михайло »

Для каждой рекурсии можно составить эквивалентный цикл. Рекурсия просто чуть побыстрее и более читаема.
Например так:
https://habr.com/ru/articles/533034/
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

Рекурсия на ПЛК

Сообщение keysansa »

Михайло писал(а): 21 мар 2024, 18:43 Для каждой рекурсии можно составить эквивалентный цикл.
Да, например, while с массивом. Главное аккуратно управлять индексом массива.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «ОВЕН»