Страница 1156 из 1178 ПерваяПервая ... 156656105611061146115411551156115711581166 ... ПоследняяПоследняя
Показано с 11,551 по 11,560 из 11771

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #11551
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    Цитата Сообщение от atomo2 Посмотреть сообщение
    но опять же протока нет.... что он считает то
    а не может такого быть, что на старом плк была настроена фильтрация на входах, а на новом этого пока нет, поэтому и считает всякий мусор
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #11552
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,285

    По умолчанию

    capzap
    В проекте применен FastCounter на FDI, в этом режиме фильтрации нет.

  3. #11553
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,285

    По умолчанию

    WATER_ZAD_NR170 := wtmp_zad;

    counter_copy := COUNTER_NR170_WATER;

    IF O_CL_NR170_WATER THEN
    WCOUNTER_ACTIVE_NR170 := TRUE;
    wimpCount := wimpCount + counter_copy;
    END_IF;
    1. Считываем показания аппаратного счетчика
    2. Счетчик дозировки := Счетчик дозировки + показания аппаратного счетчика
    3. Повторяем до выхода на 3-ю космическую скорость.
    Чуете подвох?
    Надо к счетчику дозировки добавлять разницу между актуальными данными аппаратного счетчика и его же данными с предыдущего цикла ПЛК. Причем учитывать переполнение аппаратного счетчика. При достижении максимального значение счетчик сам обнуляется и считает с нуля. Это и есть те неудобства, о которых я говорил выше.
    Последний раз редактировалось Sulfur; 15.07.2025 в 08:42.

  4. #11554

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    capzap
    В проекте применен FastCounter на FDI, в этом режиме фильтрации нет.
    в этом может быть проблема?

    даже сейчас по всем 4 дозировкам , хотя я ничего не запускал и ничего не бежит , счетчики фигачат изображение_2025-07-15_125717759.png
    Последний раз редактировалось atomo2; 15.07.2025 в 08:57.

  5. #11555
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,285

    По умолчанию

    atomo2

    В теории да, если датчик расхода на механических контактах, например геркон. Дребезг есть даже у них. В любом случае, стоит убедиться в отсутствие изменений показаний аппаратного счетчика при отключенном датчике.

  6. #11556
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,285

    По умолчанию

    counter_copy := COUNTER_NR170_WATER;
    Далее
    wimpCount := wimpCount + counter_copy;
    --
    Происходит увеличение wimpCount на величину counter_copy в каждом цикле ПЛК.
    COUNTER_NR170_WATER в проекте прикручен к аппаратному счетчику на FDI, он не сбрасывается.

    Надо как-то так:
    1. Однократно при запуске программы считать COUNTER_NR170_WATER в переменную например old_counter_copy,
    2. При дозировке:
    wimpCount := wimpCount + (COUNTER_NR170_WATER - old_counter_copy);
    old_counter_copy:= COUNTER_NR170_WATER;
    Останется только прикрутить контроль переполнения COUNTER_NR170_WATER.
    ---
    В конфиге ПЛК при мониторинге смотрели показания счетчиков FDI?
    Последний раз редактировалось Sulfur; 15.07.2025 в 09:18.

  7. #11557

    По умолчанию

    Товарищи , какой то странный прикол, перезагружаю я ПЛК и из 4 дозировок только на 1 счетчике бегут показания сразу после перезагрузки.
    Далее жму старт дозировки 170 счетчика и он работает нормально, то есть показания не бегут, жму стоп , все останавливается , жму старт снова все запускается и показания не бегут (но может все же вылететь после 15 раз так и опять побегут и поможет только перезагрузка)
    на других 2х после перезагрузки не бегут сразу автоматом , но после того как жмешь старт начинают бежать и помогает только перезагрузка ПЛК

    Как раз и получается что написали вы Валенок?

  8. #11558

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Далее
    wimpCount := wimpCount + counter_copy;
    --
    Происходит увеличение wimpCount на величину counter_copy в каждом цикле ПЛК.
    COUNTER_NR170_WATER в проекте прикручен к аппаратному счетчику на FDI, он не сбрасывается.

    Надо как-то так:
    1. Однократно при запуске программы считать COUNTER_NR170_WATER в переменную например old_counter_copy,
    2. При дозировке:
    wimpCount := wimpCount + (COUNTER_NR170_WATER - old_counter_copy);
    old_counter_copy:= COUNTER_NR170_WATER;
    Останется только прикрутить контроль переполнения COUNTER_NR170_WATER.
    ---
    В конфиге ПЛК при мониторинге смотрели показания счетчиков FDI?
    изображение_2025-07-15_150428988.png вот как раз после перезагрузки ПЛК видно что 3 счетчик сам включился автоматически и у него 1. Остальные по 0 , даже 170 после старта и стопа, а так до перезагрузки на 1 Единцу увеличивались после старта
    Последний раз редактировалось atomo2; 15.07.2025 в 11:07.

  9. #11559
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,285

    По умолчанию

    atomo2
    Не столь важно первоначальное значение, сколь именно его прирост без работы внешних датчиков. Если прироста не наблюдается, значит с датчиками всё в порядке, следует искать ошибку в алгоритме подсчета\преобразования данных аппаратного счетчика в своей программе. Примерные пути уже обозначены.

  10. #11560

    По умолчанию

    Ну вроде как исправил, теперь просто так счетчик не бежит и при нажатии кнопки старт тоже.
    Код:
    PROGRAM WODA_DOZIROVKA_NR170
    
    VAR
        wtmp_zad     : WORD;
        wimpCount    : DWORD;
        wcur         : INT;
        wprev        : INT;
        startCounter : DWORD := 0;
        delta        : DWORD := 0;
        wtimer       : TIMERING;
    END_VAR
    
    wcur := WATER_FACT_NR170;
    
    wtimer(
        tme := t#120s,
        CUR := wcur,
        PREV := wprev,
        DOZ := WATER_DOZ_NR170,
        NORM_S := TRUE
    );
    
    IF wtimer.TIME_OUT THEN
        WATER_DOZ_NR170 := FALSE;
    END_IF;
    
    IF WATER_START_NR170 AND (NOT WATER_DOZ_NR170) THEN
        startCounter := COUNTER_NR170_WATER;
        wimpCount := 0;
        WATER_DOZ_NR170 := TRUE;
        WATER_START_NR170 := FALSE;
        WATER_DONE_NR170 := FALSE;
        wtmp_zad := WATER_ZAD_NR170;
        wcur := 0;
        wprev := 0;
    END_IF;
    
    IF WATER_START_NR170 AND WATER_DOZ_NR170 THEN
        WATER_START_NR93_1 := FALSE;
    END_IF;
    
    IF WATER_DOZ_NR170 THEN
        WATER_ZAD_NR170 := wtmp_zad;
    
        IF O_CL_NR170_WATER THEN
            WCOUNTER_ACTIVE_NR170 := TRUE;
        ELSE
            WCOUNTER_ACTIVE_NR170 := FALSE;
        END_IF;
    
        delta := COUNTER_NR170_WATER - startCounter;
        wimpCount := delta;
    
        WATER_FACT_NR170 := DWORD_TO_WORD(wimpCount / 88);
    
    
    ELSE
        WCOUNTER_ACTIVE_NR170 := FALSE;
        WATER_FACT_NR170 := 0;
    END_IF;
    
    IF WATER_FACT_NR170 >= WATER_ZAD_NR170 THEN
        WATER_DOZ_NR170 := FALSE;
        WATER_DONE_NR170 := TRUE;
    END_IF;
    
    IF WATER_STOP_NR170 = TRUE THEN
        WATER_DOZ_NR170 := FALSE;
        WATER_DONE_NR170 := TRUE;
        WATER_STOP_NR170 := FALSE;
    END_IF;
    
    wprev := wcur;

Страница 1156 из 1178 ПерваяПервая ... 156656105611061146115411551156115711581166 ... ПоследняяПоследняя

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

Ваши права

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