Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 25 из 25

Тема: Проблема с кодом на ST. Цикл выполняется с ошибкой.

  1. #21

    По умолчанию

    Не знаю на чем вы пишете, но в ST на ПР нет типа byte, есть udint. Попробовал вроде работает. И почему бы for не использовать?

    FUNCTION myFunc: udint;
    var_input
    x:bool;
    end_var
    VAR
    bCount: UDINT := 0;
    END_VAR


    WHILE NOT (bCount=255) DO
    bCount := bCount + 1;


    // IF bCount.0 THEN ......; END_IF
    // IF bCount.1 THEN ......; END_IF
    // IF bCount.2 THEN ......; END_IF
    // IF bCount.3 THEN ......; END_IF
    // IF bCount.4 THEN ......; END_IF
    // IF bCount.5 THEN ......; END_IF
    // IF bCount.6 THEN ......; END_IF
    // IF bCount.7 THEN ......; END_IF

    END_WHILE

    myFunc:=bCount;

    end_function
    image_2022_06_02T12_52_40_960Z.png
    Последний раз редактировалось Малышев Олег; 02.06.2022 в 15:56.
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  2. #22

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Решил не создавать новую тему, а продолжить здесь же, но с циклом While в ST.

    Хочу создать цикл, в котором переберутся все биты байта bCount. На эти биты физически повешены 8 реле, а на реле - 8 параллельных насосов с разной производительностью.
    До того, как оператор запустит программу, мне нужно по-быстрому программно пробежаться по всем возможным вариантам включения и прикинуть: а получиться ли задать нужную производительность комбинацией насосов?
    Код:
    Код:
    FUNCTION myFunc: BOOL
    
    VAR
        bCount: BYTE := 0;
    END_VAR
    
    
    WHILE NOT bCount=255 DO
        bCount := bCount + 1;
    
    
    //    IF bCount.0 THEN ......; END_IF
    //    IF bCount.1 THEN ......; END_IF
    //    IF bCount.2 THEN ......; END_IF
    //    IF bCount.3 THEN ......; END_IF
    //    IF bCount.4 THEN ......; END_IF
    //    IF bCount.5 THEN ......; END_IF
    //    IF bCount.6 THEN ......; END_IF
    //    IF bCount.7 THEN ......; END_IF
    
    END_WHILE
    Цикл не отрабатывается. Происходит только один проход. Потом выход из функции.
    Что я сделал не так?
    А на чём Вы это запускаете?
    Тролль-наседка, добрый, нежный и ласковый

  3. #23

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    использовать, чтоб проверить все 255 комбинаций в цикле while не получится, потому что выходы получат значение переменной в последний раз записываемом в цикла ПЛК
    Ну там еще надо включить общий пускатель. Так что во время перебора цикла насосы будут выключены.


    Цитата Сообщение от capzap Посмотреть сообщение
    Не знаю на чем вы пишете, но в ST не типа byte
    Есть. Компилятор не выкидывает ошибок. Всё норм.

    Цитата Сообщение от capzap Посмотреть сообщение
    И почему бы for не использовать?
    Хочется реализовать так, что если нужная производительность найдена (например, на 2-ом шаге), то цикл моментально прекращается и не тратит ресурсы ПЛК. Эта функция должна проверить возможность задавания аж 22 разных комбинации насосов. Т.е. ее надо будет запустить 22 раза с разным входным аргументом. Задача программы: сказать заранее оператору получиться у него или нет. Что-бы зря не начинал.
    Понимаю, что через FOR тоже можно.

    Цитата Сообщение от capzap Посмотреть сообщение
    WHILE NOT (bCount=255) DO
    Точняк! Нужны были скобки после NOT!
    Заработало. Цикл перебирается полностью.
    Спасибо.

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    А на чём Вы это запускаете?
    Не совсем понял ваш вопрос.
    Последний раз редактировалось ВладОвен; 02.06.2022 в 16:16.

  4. #24

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение

    Не совсем понял ваш вопрос.
    У нас есть ПЛК с ST и ПР с ST - поэтому просьба уточнять, иначе путаемся мы сильно
    Тролль-наседка, добрый, нежный и ласковый

  5. #25

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    У нас есть ПЛК с ST и ПР с ST...
    А. Понял.
    У меня ПЛК.
    Спасибо.

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 21.01.2021, 22:08
  2. Панель СП310 - загрузка проекта с исходным кодом
    от _Алексей_ в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 23.08.2018, 07:19
  3. Экспорт проекта с ошибкой
    от Poo в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 27.07.2018, 15:44
  4. Не выполняется PLC_PRG
    от S#716_0P в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 08.09.2017, 13:35
  5. Не выполняется установка Codesys V3
    от Дмитрий Артюховский в разделе СПК2хх
    Ответов: 11
    Последнее сообщение: 26.06.2013, 01:27

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

Ваши права

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