Показано с 1 по 10 из 579

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,752

    По умолчанию

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

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

  2. #2

    По умолчанию

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

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

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    так на скрине же пишеться о том что break не нужен, программа сама выйдет из кейса не выполнив нижеследующие, я об этом с самого начала не пишу, но такой код бесмсленный об этом упоминал и по поводу Вашего радостного согласия с Валенком, прочитайте справку из ОЛ, бесконечный это цикл или не очень Вложение 62740
    Да, там ошибка в справке.
    попробуйте такую функцию на холст кинуть. Будет ошибка "программа зашла в бесконечный цикл"
    Код:
    function function1: bool; 
        var_input 
            inputVariable : bool; 
        end_var
        repeat
            
        until false
        end_repeat
        function1 := true;
    end_function
    Я Вас использовать exit таким образом не агитирую. Обходитесь без него - прекрасно. Зачем и в каких случаях я им пользуюсь написал, так как были заданы такие вопросы

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    я за документацию не отвечаю, я ей обычно верю. Хорошо ошибка, тогда все работает и exit и тот способ который я бы использовал вместо констант
    У Вас case 2: никогда не выполняется.
    Это так же видно по тому что блок на выходе всегда дает 1. Если бы цикл выполнился дважды, было бы 2
    Код:
        repeat
            count := count + 1;
            case count of
                2:
                    exit;
                1:
                    foo := true;     // в первый проход цикла попадаем сюда
                else
            end_case;
        until foo  // условие выполнилось, выходим из цикла
    В остальном я сейчас так же делаю, поскольку exit не работает.
    exit не работает, по крайней мере после выполнения кода ниже count = 2. Правда с поддержки написали что вроде бы починили в последней версии.
    Код:
        repeat
            count := count + 1;
            case count of
                2:
                    count := 100;
                    foo := true;
                    exit;
                1:
                    foo := false;
                else
            end_case;
        until foo
        end_repeat

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в эмуляции отредактировать с 1 на 3 и проверить необходмио 10 секунд, считаете это проблема
    попробуйте перед exit присвоение сделать, как ниже
    Блок будет выдавать на выходе 2 вместо 100

    Код:
        repeat
            count := count + 1;
            case count of
                2:
                    count := 100;
                    exit;
                3:
                    foo := true;
                else
            end_case;
        until foo
        end_repeat

Похожие темы

  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

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

Ваши права

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