Страница 846 из 1043 ПерваяПервая ... 346746796836844845846847848856896946 ... ПоследняяПоследняя
Показано с 8,451 по 8,460 из 10426

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

  1. #8451

    По умолчанию

    У меня в PROGRAM PLC_PRG вызываются поочередно функционально законченные POU. И некоторые POU используются одни те же константы.
    Как объявить глобальные константы (VAR_GLOBAL CONSTANT ) для правильной работы CASE?
    ....
    VAR CONSTANT
    Poz_KL_11:INT :=2;
    Poz_KL_21:INT:=3;
    Poz_KL_31:INT :=4;
    Poz_Pult_11: INT:=7;
    Poz_Pult_21:INT:=9;
    END_VAR
    ...

    IF Down_1 AND DN_1 THEN
    CASE MST_1 OF
    Poz_KL_11 : KL1:=TRUE; (* ON KL1*)
    Poz_KL_21 : KL2:=TRUE; (* ON KL2*)
    Poz_KL_31 : KL3:=TRUE; (* ON KL3*)
    Poz_Pult_11: Pult.1:=TRUE; (* ON Pult1*)
    Poz_Pult_21: Pult.2:=TRUE; (* ON Pult21*)
    END_CASE
    END_IF

    Объявить VAR CONSTANT в текущем POU могу и все работает, но эти константы требуются в других POU. Не понимаю, куда вставлять, чтобы эти константы были видны и другим POU ? Как создать глобальные константы в проекте?
    Последний раз редактировалось vsa; 21.01.2022 в 19:38.

  2. #8452
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    У меня в PROGRAM PLC_PRG вызываются поочередно функционально законченные POU. И некоторые POU используются одни те же константы.
    Как объявить глобальные константы (VAR CONSTANT GLOBAL) для правильной работы CASE?
    ....
    VAR CONSTANT
    Poz_KL_11:INT :=2;
    Poz_KL_21:INT:=3;
    Poz_KL_31:INT :=4;
    Poz_Pult_11: INT:=7;
    Poz_Pult_21:INT:=9;
    END_VAR
    ...

    IF Down_1 AND DN_1 THEN
    CASE MST_1 OF
    Poz_KL_11 : KL1:=TRUE; (* ON KL1*)
    Poz_KL_21 : KL2:=TRUE; (* ON KL2*)
    Poz_KL_31 : KL3:=TRUE; (* ON KL3*)
    Poz_Pult_11: Pult.1:=TRUE; (* ON Pult1*)
    Poz_Pult_21: Pult.2:=TRUE; (* ON Pult21*)
    END_CASE
    END_IF

    Объявить VAR CONSTANT в текущем POU могу и все работает, но эти константы требуются в других POU. Не понимаю, куда вставлять, чтобы эти константы были видны и другим POU ? Как создать глобальные константы в проекте?
    Вкладка Ресурсы, Глобальные переменные
    Захват-01.png Захват-03.png

    ЗЫ
    Или при объявлении новой переменной в теле программы
    Захват-02.png
    Последний раз редактировалось petera; 21.01.2022 в 19:48.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #8453

    По умолчанию

    petera, понял Ваш скрин.
    Последний раз редактировалось vsa; 21.01.2022 в 19:52.

  4. #8454
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    petera, эти вкладки я знаю. И как это выглядит?
    VAR_GLOBAL
    ....
    VAR CONSTANT GLOBAL
    ....
    END_VAR
    END_VAR

    Так? НЕ идет.
    Захват-03.png
    10 символов
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #8455

    По умолчанию

    Извините, поспешил с выводами. Все заработало! Спасибо за урок!

  6. #8456

    По умолчанию

    И опять требуется помощь форума.
    Представьте, что в программе имеется переменная, например, PAUSE :

    VAR RETAIN
    PAUSE: TIME;
    END_VAR

    И мне необходимо в эту переменную (PAUSE) иногда записывать значение внешним компьютером через регистр ввода. Т.к. тип TIME требует 4 байта, то и регистр ввода тоже должен быть DWORD.
    Предлагаю два варианта настроек. Это я сделал для примера.
    TIME.png
    Первый регистр явно не для типа TIME, а второй 32 бита, как раз для типа TIME.
    Подскажите, как правильнее вводить внешним компьютером значение времени (минуты) в рабочее слово программы? И как в 32 битах размещается значение, например, - 4 минуты.
    А может имеется конвертор INT->TIME?

  7. #8457

    По умолчанию

    Time==dword.

  8. #8458

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Первый регистр явно не для типа TIME, а второй 32 бита, как раз для типа TIME.
    Подскажите, как правильнее вводить внешним компьютером значение времени (минуты) в рабочее слово программы? И как в 32 битах размещается значение, например, - 4 минуты.
    А может имеется конвертор INT->TIME?
    Конвертировать можно почти все типы, но желательно соблюдать размерность в байтах. Например INT_TO_WORD

    Для времени подходит конвертер DWORD_TO_TIME, и обратно. В DWORD, время в секундах и мили секундах 4 минуты=4*60*1000= 240сек*1000= 240000,
    в TIME T#0h4m0s0ms
    Последний раз редактировалось kondor3000; 22.01.2022 в 15:17.

  9. #8459

    По умолчанию

    kondor3000, спасибо. Буду пробовать. А где Вы такую информацию берете? Подскажите. Я прорыл эту тему, но не смог подобное найти.

  10. #8460

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    kondor3000, спасибо. Буду пробовать. А где Вы такую информацию берете? Подскажите. Я прорыл эту тему, но не смог подобное найти.
    Всё есть в справке по F1 , или например можно выделить TIME и нажать F1

Страница 846 из 1043 ПерваяПервая ... 346746796836844845846847848856896946 ... ПоследняяПоследняя

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

Ваши права

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