Страница 205 из 1044 ПерваяПервая ... 105155195203204205206207215255305705 ... ПоследняяПоследняя
Показано с 2,041 по 2,050 из 10436

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

  1. #2041
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    to Денис_Гуливатенко. Будет. Я только что проверил. Можно еще так:

    (*пользовательский блок proba*)
    VAR_INPUT
    i: BYTE;
    END_VAR
    VAR_OUTPUT
    q: BYTE;
    END_VAR
    -------
    i.2:=1;
    q:=i;

    (*вызвающая программа*)

    proba1(i:=by1,q=>by1);

  2. #2042

    По умолчанию

    Спасибо. В не сообразил в эмуляторе проверить

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

    По умолчанию

    Цитата Сообщение от Денис_Гуливатенко Посмотреть сообщение
    Как можно изменить значение переменной главной программы в пользовательском ФБ.
    Через указатель можно?

    (* фрагмент из PLC_PRG*)
    start_adr:=ADR(start);
    FB(i:=start_adr)
    ------------------------------
    (* фрагмент из пользовательского блока*)
    i^.8:=0; (*записываем 8бит переменной start*)

    То что я написал выше будет работать?
    По моему Вы куда-то не туда свернули.
    А почему нельзя использовать явную адресацию переменных? Используйте входные и выходные переменные ФБ.
    Ведь ФБ делают тогда, когда предполагается использовать его многократно в разных частях проекта и в главной программе и в не главных программах или внутри других ФБ. При каждом использовании одного и того же ФБ создаются его копии(реализации) и каждая живет своей жизнью.
    Если же в ФБ изменять косвенно значения переменной в вызывающей программе , то о использовании такого ФБ в других POU бессмысленно. И это уже не ФБ, а программа(подпрограмма). Но и у программы есть входные и выходные переменные.
    Эти переменные и предназначены для передачи значений между ФБ или программой и вызывающей их главной программой.
    Разница между ФБ и программой
    Программа
    Программа - это POU, способный формировать произвольное число значение во время вычислений. Значения всех переменных программы сохраняются между вызовами. В отличие от функционального блока экземпляров программы не существует. Программа является глобальной во всем проекте.

    Нельзя вызывать программу из функции.

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

    В этом заключается главное различие между программой и функциональным блоком, в котором изменяются только значения переменных данного экземпляра функционального блока.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #2044

    По умолчанию

    Цитата Сообщение от Vlad_45 Посмотреть сообщение
    Всем привет. Такая ситуация: 6 котлов, у каждого есть время наработки, условие работоспособности и состояние вкл/выкл. Как можно выбрать один котел с минимальным временем наработки из шести, при этом участвовать в сравнении должны только котлы с условием работоспособности ПРАВДА и состоянием ВЫКЛ??
    Создаем массив из 6 элементов типа структура. Структура из наработки, флага разрешения запуска и текущего состояния. дальше создаем переменную A где будет хранится номер выбранного котла и пишем туда ноль. Далее в цикле FOR i=1 TO 6 DO Проверяем возможность запуска котла и что он остановлен. Если условия выполнены то если А=0 то A= текущий котел. Если не нулю то проверяем если наработка текущего котла меньше чем наработка котла в массиве с индексом равным А то А= номер текущего котла.
    P.S. У меня есть аналогичный пример с наработкой насосов, могу прислать на почту.

  5. #2045

    По умолчанию

    По моему Вы куда-то не туда свернули.
    Я попробую объяснить для чего я это затеял. Мне нужно к ПЛК73 подключить чатотник iG5A. В данном контроллере все настройки подключения нужно описывать в программе. А управление через командное слово, в котором каждый бит определенная команда для него. Я хочу сделать отдельно функции для запуска/останова/аварийного установа/ и т.д. А в значении переменной(глобальной) буду после запуска той или иной функции менять биты, чтобы командное слово было "правильно" записано, то есть чтобы не было противоречий "запуск" и "останов" одновременно.

    Поправьте, если я неправильно думаю))

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    По моему Вы куда-то не туда свернули.
    А почему нельзя использовать явную адресацию переменных? Используйте входные и выходные переменные ФБ.
    Ведь ФБ делают тогда, когда предполагается использовать его многократно в разных частях проекта и в главной программе и в не главных программах или внутри других ФБ. При каждом использовании одного и того же ФБ создаются его копии(реализации) и каждая живет своей жизнью.
    Если же в ФБ изменять косвенно значения переменной в вызывающей программе , то о использовании такого ФБ в других POU бессмысленно. И это уже не ФБ, а программа(подпрограмма). Но и у программы есть входные и выходные переменные.
    Эти переменные и предназначены для передачи значений между ФБ или программой и вызывающей их главной программой.
    Разница между ФБ и программой
    Уважаемый petera, Вы увлеклись или зациклились на ФБ, а есть ведь еще и функции, если возвращать необходимо множество значений, то можно пойти двумя способами: возвратить структуру, а потом после вызова распределять знчения по переменным программы, а можно послать функции указатели и прям в теле функции изменить требуемые значениЯ

  7. #2047
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Что-то про простой VAR_IN_OUT никто ничего не сказал. Нелюбят штоли

  8. #2048
    Пользователь
    Регистрация
    12.09.2013
    Адрес
    Курган
    Сообщений
    4

    По умолчанию

    Добрый день... До сих пор занимаюсь каскадом с котлами. Интересует такой вопрос:
    Допустим у нас есть диапазоны разностей температур уставки и подачи (0-5 градусов - включаем один котел, 5-15 градусов - включаем второй (два) котел и т.д). К примеру я задаю условие (см. приложение) для включения одного котла, он включается, в режиме отладки меняю текущую температуру на более высокую, прописываю условие, что при такой температуре котел с макс наработкой должен выключиться, он выключается...
    Не могу сделать включение второго котла при переходе в диапазон работы двух котлов...

  9. #2049
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Vlad_45, тут тема про это есть. Может там Вам быстрей ответят http://www.owen.ru/forum/showthread.php?t=14338

  10. #2050
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Что-то про простой VAR_IN_OUT никто ничего не сказал. Нелюбят штоли
    В документации написано, что битовую адресацию нельзя использовать с переменными VAR_IN_OUT.

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

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

Ваши права

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