Страница 543 из 711 ПерваяПервая ... 43443493533541542543544545553593643 ... ПоследняяПоследняя
Показано с 5,421 по 5,430 из 7101

Тема: CODESYS V3.5. Вопросы и ответы

  1. #5421

    По умолчанию

    Подскажите что в коде не правильно написано, я так понимаю отсутствует цикличность и поэтому параметры не обновляются.
    должно получиться, если один из верхних концевиков не исправен то на выходе обоих ничего не должно быть и соответственно нижние должны передать сигнал

    Скрытый текст:
    IF NOT xLQ1_L_Up THEN // Левый верхний концевик

    eLQ_State := 10;

    END_IF

    IF NOT xLQ2_L_Down THEN // Левый нижний концевик

    eLQ_State := 20;

    END_IF

    IF NOT xLQ3_R_Up THEN // Правый верхний концевик

    eLQ_State := 30;

    END_IF

    IF NOT xLQ4_R_Down THEN // Правый нижний концевик

    eLQ_State := 40;

    END_IF

    IF xLQ5_Open THEN // Концевик границы открытия пиноли

    xOpen_DO := TRUE;

    ELSE // Сильно раскрыта пиноль
    xOpen_DO := FALSE;
    uiErrorCode := 14;

    END_IF

    IF xLQ6_Close THEN // Концевик границы закрытия пиноли

    xClose_DO := TRUE;

    ELSE // Сильно зажата пиноль
    xClose_DO := FALSE;
    uiErrorCode := 15;

    END_IF

    CASE eLQ_State OF
    0:
    xL_Up_DO := TRUE;
    xL_Down_DO := TRUE;
    xR_Up_DO := TRUE;
    xR_Down_DO := TRUE;



    10: // Не исправен верхний левый концевик
    xL_Up_DO := FALSE;
    xR_Up_DO := FALSE;
    uiErrorCode := 10;
    eLQ_State := 0;

    20: // Не исправен нижний левый концевик
    xL_Down_DO := FALSE;
    xR_Down_DO := FALSE;
    uiErrorCode := 11;
    eLQ_State := 0;

    30: // Не исправен верхний правый концевик
    xL_Up_DO := FALSE;
    xR_Up_DO := FALSE;
    uiErrorCode := 12;
    eLQ_State := 0;

    40: // Не исправен нижний левый концевик
    xL_Down_DO := FALSE;
    xR_Down_DO := FALSE;
    uiErrorCode := 13;
    eLQ_State := 0;


    END_CASE

  2. #5422

  3. #5423

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    У вас внутри шагов CASE происходит eLQ_State := 0;
    А на шаге 0 переменным всех 4 концевиков присваивается TRUE - поэтому они не могут иметь другие значения.
    Убрал все равно значения не меняются
    Изображения Изображения
    • Тип файла: png 01.png (63.4 Кб, Просмотров: 9)

  4. #5424
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    А почему они должны меняться?
    xLQ4_R_Down имеет значение FALSE, соответственно, вы попали на шаг 40.
    Переменные под стрелочками остались в значениях FALSE, потому что на этом шаге им ничего не присваивается.

  5. #5425

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    А почему они должны меняться?
    xLQ4_R_Down имеет значение FALSE, соответственно, вы попали на шаг 40.
    Переменные под стрелочками остались в значениях FALSE, потому что на этом шаге им ничего не присваивается.
    xL_Up_DO и xR_Up_DO должны иметь значение TRUE.
    Скорее всего надо разрабатывать другой алгоритм

  6. #5426

    По умолчанию

    я так понимаю в Case надо добавить обработку где будет присваиваться значения
    xL_Up_DO := TRUE;
    xL_Down_DO := TRUE;
    и
    xR_Up_DO := TRUE;
    xR_Down_DO := TRUE;

  7. #5427

    По умолчанию

    Поэкспериментировал немного и все равно ничего не получается создается такое впечатление что код не работает
    Скрытый текст:
    IF NOT xLQ1_L_Up THEN // Левый верхний концевик

    eLQ_State := 10;

    END_IF

    IF NOT xLQ2_L_Down THEN // Левый нижний концевик

    eLQ_State := 20;

    END_IF

    IF NOT xLQ3_R_Up THEN // Правый верхний концевик

    eLQ_State := 30;

    END_IF

    IF NOT xLQ4_R_Down THEN // Правый нижний концевик

    eLQ_State := 40;

    END_IF

    IF xLQ5_Open THEN // Концевик границы открытия пиноли

    xOpen_DO := TRUE;

    ELSE // Сильно раскрыта пиноль
    xOpen_DO := FALSE;
    uiErrorCode := 14;

    END_IF

    IF xLQ6_Close THEN // Концевик границы закрытия пиноли

    xClose_DO := TRUE;

    ELSE // Сильно зажата пиноль
    xClose_DO := FALSE;
    uiErrorCode := 15;

    END_IF

    IF xLQ1_L_Up AND xLQ3_R_Up THEN // Верхнии концевики исправны
    eLQ_State := 50;
    END_IF

    IF xLQ2_L_Down AND xLQ4_R_Down THEN // Нижнии концевики исправны
    eLQ_State := 60;
    END_IF

    CASE eLQ_State OF


    10: // Не исправен верхний левый концевик
    xL_Up_DO := FALSE;
    xR_Up_DO := FALSE;
    uiErrorCode := 10;
    astErrorData[10].xAlarm := TRUE;
    astErrorData[10].wsMessage := "Не исправен верхний левый концевик";


    20: // Не исправен нижний левый концевик
    xL_Down_DO := FALSE;
    xR_Down_DO := FALSE;
    uiErrorCode := 11;
    astErrorData[11].xAlarm := TRUE;
    astErrorData[11].wsMessage := "Не исправен нижний левый концевик";


    30: // Не исправен верхний правый концевик
    xL_Up_DO := FALSE;
    xR_Up_DO := FALSE;
    uiErrorCode := 12;
    astErrorData[12].xAlarm := TRUE;
    astErrorData[12].wsMessage := "Не исправен верхний правый концевик";


    40: // Не исправен нижний левый концевик
    xL_Down_DO := FALSE;
    xR_Down_DO := FALSE;
    uiErrorCode := 13;
    astErrorData[13].xAlarm := TRUE;
    astErrorData[13].wsMessage := "Не исправен нижний левый концевик";


    50: // Верхнии концевики исправны
    xL_Up_DO := TRUE;
    xL_Down_DO := TRUE;


    60: // Нижнии концевики исправны
    xR_Up_DO := TRUE;
    xR_Down_DO := TRUE;


    END_CASE

    добавил таблицу тревог и в ней отображается только пару ошибок, а должно как минимум 6
    Изображения Изображения
    • Тип файла: png 09.png (27.1 Кб, Просмотров: 5)

  8. #5428

  9. #5429

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Почему вы так считаете?
    Программа работает циклически, сверху в низ и соответственно каждая ошибка должна прописаться.
    По алгоритму каждая ошибка должна фиксироваться в журнале.
    Или как-то надо фиксировать каждую ошибку?
    Последний раз редактировалось sco-scorpion; 22.03.2023 в 19:22.

  10. #5430
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от sco-scorpion Посмотреть сообщение
    Программа работает циклически, сверху в низ и соответственно каждая ошибка должна прописаться
    Программа действительно работает циклически и "сверху вниз".
    Каждый цикл вы записываете в eLQ_State значение 10, потом перезаписываете его значением 20, потом перезаписываете значением 30 и далее перезаписываете значением 40.
    В итоге к моменту начала CASE eLQ_State на каждом цикле равно 40.
    Так что программа работает совершенно корректно - в соответствии с написанным кодом.

Страница 543 из 711 ПерваяПервая ... 43443493533541542543544545553593643 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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