Страница 854 из 869 ПерваяПервая ... 354754804844852853854855856864 ... ПоследняяПоследняя
Показано с 8,531 по 8,540 из 8683

Тема: Экспресс вопрос (ответ)

  1. #8531

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Вот проблема
    Код:
    WHILE Remaining > 0 DO
            FOR i := 1 TO 5 DO
                IF (Remaining > 0) AND (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE)
                    THEN
                        Corr_Array[i] := Corr_Array[i] + 1;
                        Remaining := Remaining - 1;
                    END_IF;
            END_FOR;
        END_WHILE;
    Если Number_Flowers_Gate[i] равен нулю (а он изначально равен нулю) или Gate_ON[i] выключен (а он выключен) у нас тупо не выполняется операция Remaining := Remaining - 1; и получаем бесконечный цикл.
    При запуске ПР в первом цикле действительно всё нули.
    Но он же не должен был смотреть всё что между THEN и END_IF (см. скрин)!? Этот бесконечный цикл вообще не должен был даже начать выполняться.
    В общем, пока прикрутил костыль, попробую загрузить потестировать. Но ощущение неполноценности остаётся >_<
    Снимок.JPG

  2. #8532

    По умолчанию

    Бесконечный цикл будет только в одном случае: когда Remaining > 0 и ни в одной итерации не выполняется условие (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE). Намбе флаверсы ваши приходят извне, за сим наши полномочия всё, ищите дальше сами

  3. #8533
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,901

    По умолчанию

    Цитата Сообщение от ultra76 Посмотреть сообщение
    При запуске ПР в первом цикле действительно всё нули.
    Но он же не должен был смотреть всё что между THEN и END_IF (см. скрин)!? Этот бесконечный цикл вообще не должен был даже начать выполняться.
    В общем, пока прикрутил костыль, попробую загрузить потестировать. Но ощущение неполноценности остаётся >_<
    Снимок.JPG
    У вас при запуске срабатывает триггер R_TRIG_Switch_To_r6(I := Switch_Flowers_Set = FALSE); // Момент переключения стрелки на робот 6
    Соответственно, выполняется это
    Код:
    // В момент переключения стрелки на робот 6
    IF R_TRIG_Switch_To_r6.Q = TRUE
    THEN
    // Подсчёт корретировки (общее количество)
    Corr_To_r6_Total := udint_to_real(11) - udint_to_real(Counter_Output_r6);
    // Сброс подсчитанных цветов
    Counter_Output_r6 := 0;
    END_IF;
    и далее
    Код:
    IF Switch_Flowers_Set = FALSE
    THEN
    Corr_Total := Corr_To_r6_Total;
    ELSE
    Corr_Total := Corr_To_r7_Total;
    END_IF;
    Т.е., Corr_Total ваш равен не нулю, а 11

  4. #8534

    По умолчанию

    Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
    Последний раз редактировалось valdik; 01.11.2025 в 15:33.

  5. #8535

    По умолчанию

    Цитата Сообщение от valdik Посмотреть сообщение
    Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
    На скрине сброс 3 бита (можно любой из 16) в регистре по условию 1 Сброс 3 бита.jpg бит должен быть один в регистре.
    Только ИП320 сама биты не может ставить, можно только руками.
    Последний раз редактировалось kondor3000; 01.11.2025 в 15:54.

  6. #8536

    По умолчанию

    Цитата Сообщение от valdik Посмотреть сообщение
    Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
    изображение_2025-11-01_195830881.png

    Целочисленные логические в ST пока не завезли, но можно так (сброс бита номер 0):

    Код:
    function ResetBit: udint;
        
        var_input
            I : udint;
            R : bool;
        end_var
    
        if R then I.0 := FALSE; end_if
        ResetBit := I;
        
    end_function

  7. #8537
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,435

    По умолчанию

    Мне кажется, можно сделать более универсальное решение, в смысле, чтобы было возможно писать любое значения выбранного бита(не только сбрасывать в "0"), короче, я это вижу примерно как-то так:

    WR_B_1.png

    WR_B_2.png

    WR_B.owle
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  8. #8538

    По умолчанию

    Т.к. одной командой, обычно, не ограничивается, то обрабатываю сразу всё слово управления от вышестоящей системы или панели.
    Сразу принял, что от вышестоящей системы поступают только импульсные команды - действующие только один машинный цикл. Поэтому пришлось разработать макросы, обрабатывающие одиночные (записать моточасы) и парные переключающие (включить и выключить режим) команды.

    На рисунке - выделение команд из принятого слова управления и фрагмент макроса (ФБ), выделяющего отдельные биты. Видно, что сразу после выделения бит всё принятое слово управления обнуляется целиком. Там ещё присутствует ограничение в получении команд на время инициализации при включении питания.
    cmd_01.jpg

    cmd_02.jpg

    На рисунке обработка одиночной команды - записать значения моточасов - применение на холсте и содержимое макроса обработчика от двух источников (т.к. для ПР205 команда может быть получена и от панели и от встроенной панели)
    это незаконченный проект и содержит небольшую недоработку - к выходу макроса Cmd_HMI_SCR_ нужно подключить переменную от встроенной панели для её автоматического сброса после обработки
    cmd_03.jpg

    cmd_04.jpg
    Последний раз редактировалось FPavel; 02.11.2025 в 07:55.

  9. #8539

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    ...

    На рисунке обработка одиночной команды - записать значения моточасов - применение на холсте и содержимое макроса обработчика от двух источников (т.к. для ПР205 команда может быть получена и от панели и от встроенной панели)
    это незаконченный проект и содержит небольшую недоработку - к выходу макроса Cmd_HMI_SCR_ нужно подключить переменную от встроенной панели для её автоматического сброса после обработки
    cmd_03.jpg

    cmd_04.jpg
    Если команды от вышестоящей системы сбрасываются каждой цикл - то R_TRIG на них можно и не ставить, не?

  10. #8540
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,901

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    ...
    На рисунке - выделение команд из принятого слова управления и фрагмент макроса (ФБ), выделяющего отдельные биты. Видно, что сразу после выделения бит всё принятое слово управления обнуляется целиком. Там ещё присутствует ограничение в получении команд на время инициализации при включении питания.
    cmd_01.jpg

    cmd_02.jpg
    Опечаточка, фрагмент макроса не выделяет биты, а собирает битовую маску

Страница 854 из 869 ПерваяПервая ... 354754804844852853854855856864 ... ПоследняяПоследняя

Похожие темы

  1. CODESYS V3.5. Вопросы и ответы
    от ООО "БЛС инжинеринг" в разделе ПЛК (среда CODESYS V3.5)
    Ответов: 8546
    Последнее сообщение: 05.12.2025, 17:25
  2. ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)
    от Serge_UA в разделе ПЛК (среда CoDeSys V2.3)
    Ответов: 11761
    Последнее сообщение: 01.12.2025, 07:41
  3. вопрос-ответ , или а поговорить????
    от Павел Братковский в разделе Трёп (Курилка)
    Ответов: 10
    Последнее сообщение: 24.01.2018, 11:05
  4. Преобразовать ответ
    от IIeroniux в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 05.10.2015, 17:45

Ваши права

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