Страница 851 из 1044 ПерваяПервая ... 351751801841849850851852853861901951 ... ПоследняяПоследняя
Показано с 8,501 по 8,510 из 10432

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

  1. #8501

    По умолчанию

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

    Проект, Экспорт, выберите ваш POU (функциональный блок), сохранить как, дайте название по имени блока.
    Выделил фильтрацию в отдельный POU.
    Но в этом POU нет описание переменных типа BOOL. Т.к. они глобальные и требуется их анализ в других POU программы.
    Пришлось и глобальные переменные экспортировать.
    FILTER.zip

  2. #8502

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Выделил фильтрацию в отдельный POU.
    Но в этом POU нет описание переменных типа BOOL. Т.к. они глобальные и требуется их анализ в других POU программы.
    Пришлось и глобальные переменные экспортировать.
    FILTER.zip
    Не хватило этих переменных:
    DV_1: BOOL;
    DN_1: BOOL;
    DV_2: BOOL;
    DN_2: BOOL;
    MODUL_IN: WORD; (* Маска входов *)
    1 Программа.jpg

    У вас на скрине Маске входов MODUL_IN присвоена цифра 4, поэтому и горит бит Kn_Up_1 который равен MODUL_IN.2 биту маски.
    Kn_Up_1:= MODUL_IN.2;
    На скрине повторил, что у вас

    А так всё работает.
    Правильно наверно так, из битов надо было собрать маску:
    MODUL_IN.2:=Kn_Up_1;
    Последний раз редактировалось kondor3000; 25.01.2022 в 19:57.

  3. #8503

    По умолчанию

    У меня до выделения в отдельный POU фильтрацию сигналов было ложное срабатывание (см. скрин)
    Проблема2.png
    После того, как я выделил фильтрацию в отдельный POU. Стал проверять, а все и работает! Странно. Меня это радует. Еще раз, спасибо!

  4. #8504

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    У меня до выделения в отдельный POU фильтрацию сигналов было ложное срабатывание (см. скрин)

    После того, как я выделил фильтрацию в отдельный POU. Стал проверять, а все и работает! Странно. Меня это радует. Еще раз, спасибо!
    Только зря вы в POU вынесли, лучше мне кажется делать ФБ для каждого отдельного блока. Написали ФБ, отладили и вставили в программу.

  5. #8505

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Только зря вы в POU вынесли, лучше мне кажется делать ФБ для каждого отдельного блока. Написали ФБ, отладили и вставили в программу.
    Я пока не знаю, как организовать самостоятельно ФБ в языке ST .
    Мне бы примерчик или ссылку на док. , я пойму.

  6. #8506

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Я пока не знаю, как организовать самостоятельно ФБ в языке ST .
    Мне бы примерчик или ссылку на док. , я пойму.
    Таймеры, это тоже ФБ, только стандартные, вы же создаёте пользовательские ФБ.
    Вы же POU создали, с ФБ всё тоже самое, например создали FUNCTION_BLOCK Swap_W или для вас FILTER 1 Фильтр.jpg
    В программе надо объявить экземпляр
    Swap_W1: Swap_W;
    а в теле программы вызвать
    Swap_W1();
    Все тоже самое, что с вызовом экземпляров таймеров.
    Вызвать как таймер по F2, только в пользовательских ФБ. Обратиться к переменным входа-выхода как к глобальным или так
    и к локальным.
    Swap_W2 (rIn:= , rOut=> );
    По справке F1 можно прочитать про "FUNCTION_BLOCK" выделив название без кавычек.
    Сделал пример из вашей же программы, только в виде ФБ. В эмуляции, чтобы посмотреть работу, щёлкните мышью по ФБ слева и выберите Экземпляр и нажмите ОК.
    Вложения Вложения
    Последний раз редактировалось kondor3000; 25.01.2022 в 22:41.

  7. #8507

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Я пока не знаю, как организовать самостоятельно ФБ в языке ST .
    Мне бы примерчик или ссылку на док. , я пойму.
    Во! Можно ещё так - при помощи окна вставки переменных, которое вызывается по F2 (если открыт код на ST и это окно можно показать).
    Для примера показал на том, как вставить вызов своего FB регулятора тепла.
    FBCall-1.gif FBCall-2.gif
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  8. #8508

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Таймеры, это тоже ФБ, только стандартные, вы же создаёте пользовательские ФБ.
    Вы же POU создали, с ФБ всё тоже самое, например создали FUNCTION_BLOCK Swap_W или для вас FILTER 1 Фильтр.jpg
    В программе надо объявить экземпляр
    Swap_W1: Swap_W;
    а в теле программы вызвать
    Swap_W1();
    Все тоже самое, что с вызовом экземпляров таймеров.
    Вызвать как таймер по F2, только в пользовательских ФБ. Обратиться к переменным входа-выхода как к глобальным или так
    и к локальным.
    Swap_W2 (rIn:= , rOut=> );
    По справке F1 можно прочитать про "FUNCTION_BLOCK" выделив название без кавычек.
    Сделал пример из вашей же программы, только в виде ФБ. В эмуляции, чтобы посмотреть работу, щёлкните мышью по ФБ слева и выберите Экземпляр и нажмите ОК.
    Спасибо, только утром зашел на форум. Чуть дела разгребу и начну вникать.

  9. #8509

    По умолчанию

    Cs-Cs, и Вам спасибо. Буду изучать. И еще на скрине мне понравилось оформление кода. Хочу перенять такой стиль. Хорошо читается.

  10. #8510

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Cs-Cs, и Вам спасибо. Буду изучать. И еще на скрине мне понравилось оформление кода. Хочу перенять такой стиль. Хорошо читается.
    Не за что! Код оформлять я учился с других языков (я программирую с 96-97 годов, с бэйсика начинал в школе), и все привычки перенёс на CodeSys сюда. Если кратко, то тезисы будут такие:
    0. Группировать всё по логическим группам (POU по папочкам раскладывать, переменные по группам - Входы Важные, Входы Кнопок, Входы Ламп, Датчики Температуры, Датчики Давления и так далее).
    1. Обзывать переменные так, чтобы по ним было удобно понимать что и для чего, и учитывать сортировку их по алфавиту в окнах выбора (типа такого, которое по F2 вызывается). Скажем, если я хочу чтобы все объявления FBшек регуляторов тёплых полов в окне выбора шли подряд - то я буду называть их fbRegTPolnnn - где nnn - помещение этого пола.
    Причём способ того, как части названия сочетаются между собой может быть тоже разным. Выдумал такой пример (на примере каких-нить двигателей мешалок, которых есть три штуки под разные техпроцессы - Замес, Прогрев, Слив):
    а) Если нам приоритетна группировка по типу мешалки - то его ставим первым:
    * ZamesWorkTime
    * ZamesTemperature
    * ProgrevWorkTime
    * ProgrevTemperature
    * SlivWorkTime
    * SlivTemperature
    б) Если нам приоритетна характеристика, то наоборот:
    * WorkTimeZames
    * WorkTimeProgrev
    * WorkTimeSliv
    * TemperatureZames
    * TemperatureProgrev
    * TemperatureSliv
    2. В названиях переменных использовать префикс типа. В CodeSys используют другие префиксы, но я свои притащил из других языков - b = BOOL, i = INT, w = WORD, dw = DWORD, s = STRING, ws = WSTRING, fb = какой-нибудь FB (таймер, свой FB), tm = TIME. По ним всё вполне читается, типа "dwWaterPulseCount" или "fbDelayTimer" и "tmDelayTime".
    3. Ну и всё комментировать. Если комментировать переменные, то среда эти комментарии видит и даже выводит их иногда, если на переменную навести мышку, или в окне выбора по F2.
    Я местами соображаю медленно в плане алгоритмов - вот и расписываю себе всё подряд.
    Если это удобно (публично я не хочу проект выкладывать), то можно написать мне своё мыло в личку - и я какой-нибудь проект скину как образец. Но НЕ для распространения.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Страница 851 из 1044 ПерваяПервая ... 351751801841849850851852853861901951 ... ПоследняяПоследняя

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

Ваши права

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