Страница 40 из 58 ПерваяПервая ... 30383940414250 ... ПоследняяПоследняя
Показано с 391 по 400 из 579

Тема: Создать функцию на ST

  1. #391

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Не совсем понимаю, что вы собрались вычислять за один скан при условии что входы у вас неизменны в течении всего цикла ? какой в этом попс?

    могу понять конечно, если у вас цикл с каким-то приращением и расчет конечной переменной связан с этим, а еще что тут можно прикрутить ?
    Задачи связанные с сортировкой и поиском, например. Обработка массива. Вычисления до выполнения условия. Про переключение состояний автомата писал уже.
    У Вас довольно общий вопрос - зачем вообще нужны циклы если если вся программа и так цикл.
    Ничего принципиально нового Вы на ПР конечно не сделаете ST функцией, и в ПЛК он не превратиться. Это просто дополнительный инструмент который может Вам пригодиться.

  2. #392

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    TRUE для repeat это выход из цикла (это про то, что тут нет бесконечных циклов до которых доколебались)

    А так, видимо exit здесь мастерили сишники)) Описанные симптомы располагают
    Респект вам что код посмотрели ) Я так то про exit спрашивал но почему то дискуссия в сторону циклов ушла и советов как мне писать автомат.

    repeat с безусловным выходом использую чтобы выскочить из case вызвав там exit. Я вообще думал это стандартная конструкция для ST, странно что такой ажиотаж вокруг нее.

  3. #393
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,642

    По умолчанию

    Andrey G я плохо знаю ST чтобы рассуждать о вашем коде. насколько понимаю exit это то, что в других break, и если есть совпадение то просто выход, не зачем искать что-то дальше....
    на счет repeat вообще не в курсе что это разве в case есть циклы ? , хм, ну да, Валенок прав, зачем тулить цикл, который выйдет сразу по окончании кода ?
    Последний раз редактировалось melky; 21.09.2022 в 12:22.

  4. #394

    По умолчанию

    Цитата Сообщение от Andrey G Посмотреть сообщение
    Респект вам что код посмотрели ) Я так то про exit спрашивал но почему то дискуссия в сторону циклов ушла и советов как мне писать автомат.

    repeat с безусловным выходом использую чтобы выскочить из case вызвав там exit. Я вообще думал это стандартная конструкция для ST, странно что такой ажиотаж вокруг нее.
    оператор CASE в ST:

    "CASE
    Аналогичен switch в C. Альтернативные ветки не имеют закрывающей программной скобки
    и не могут выполняться одна за другой. Соответственно оператор break не имеет смысла и
    отсутствует. "

    в справке ОЛ по CASE тоже ни exit ни repeat не упоминаются

  5. #395

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Andrey G я плохо знаю ST чтобы рассуждать о вашем коде. насколько понимаю exit это то, что в других break, и если есть совпадение то просто выход, не зачем искать что-то дальше....
    на счет repeat вообще не в курсе что это разве в case есть циклы ? , хм, ну да, Валенок прав, зачем тулить цикл, который выйдет сразу по окончании кода ?
    Совершенно верно, exit - просто выход из цикла. Выполнилось условие - вызвал exit и перешел сразу к инструкции после end_repeat. Просто exit не работал (по крайней мере в указаной версии OL)
    case как и другие конструкции языка можно помещать в цикл.
    repeat с безусловным выходом использую чтобы выскочить из case вызвав там exit. Из case в ST по другому по-моему выйти нельзя.

  6. #396
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,642

    По умолчанию

    а я думал exit относится к case, но суть в другом, case это набор констант в некотором роде, зачем вы его в цикл, даже если у вас единственная итерация ?

    з.ы. я не знаю, как там в C, но в C# вроде из switch case все таки выходят при найденном при помощи break. Может конечно еще какие реализации существуют, надо посмотреть...
    Последний раз редактировалось melky; 21.09.2022 в 13:05.

  7. #397

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    оператор CASE в ST:

    "CASE
    Аналогичен switch в C. Альтернативные ветки не имеют закрывающей программной скобки
    и не могут выполняться одна за другой. Соответственно оператор break не имеет смысла и
    отсутствует. "

    в справке ОЛ по CASE тоже ни exit ни repeat не упоминаются
    break; в СИ так же удобно использовать если вам не нужно выполнять всю ветку.
    например если у вас в ветке несколько проверок перед выполнением остального кода. Тогда у Вас есть вариант поместить код который должен выполнится под условие

    Код:
    case 1:
      if (условие)
      {
         код;
      }
      break;
    Когда условий много, вложенность if становится большой.

    Код:
    case 1:
      if (условие1)
      {
         if (условие2)
        {
           if (условие3)
           {
              код;
           }
         }
       }
       break;

    В таком случае бывает удобно записать так:
    Код:
    case 1:
      if (!условие1) break;
      if (!условие2) break;
      if (!условие3) break;
         
      код;
      break;

  8. #398

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    а я думал exit относится к case, но суть в другом, case это набор констант в некотором роде, зачем вы его в цикл, даже если у вас единственная итерация ?

    з.ы. я не знаю, как там в C, но в C# вроде из switch case все таки выходят при найденном при помощи break. Может конечно еще какие реализации существуют, надо посмотреть...
    Так вы сами и ответили на свой вопрос )
    В Си есть break; В ST аналогичной команды нет. Если поместить case в repeat - exit будет выполнять ту же функцию что и break в Си

  9. #399

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а с чего Вы решили что ST это Си-подобный язык?
    Вложение 62739
    я такого не писал, Вам показалось

  10. #400

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а зачем exit везде наставлены, потому что а так хотелось выйти из кейса?
    ну да, хотелось выйти из кейса. Я с самого начала об этом и пишу.

Страница 40 из 58 ПерваяПервая ... 30383940414250 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 14
    Последнее сообщение: 01.07.2023, 21:30
  2. Ответов: 6
    Последнее сообщение: 22.12.2021, 10:50
  3. Ответов: 3
    Последнее сообщение: 13.09.2021, 13:31
  4. ПЛК160. Чем заменить функцию записи 0x05?
    от FallenDAY в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.08.2017, 13:19
  5. Как написать собственную функцию wait()
    от PavelKazakov в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.07.2009, 12:37

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •