Показано с 1 по 10 из 20

Тема: Прикол с TP, TON и TOF

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Игорь Петров
    tmrZ(In:=start_tmr,pt:=T#1450MS);
    IF ACP_get_zapros=1 THEN
    start_tmr:=FALSE; //обнулили вход экземляра ФБ
    ....
    start_tmr:=TRUE; //и сразу опять установили
    //в след. цикле вызываем ФБ с опять установленным
    входом. Итого, никто его со сброшенным входом ни разу не вызвал и сделать свою работ по сбросу шансов у него нет... в ST с этим нужно тщательнее.
    Точно точно, затупил малёк, странно что тот пример у мя отробатывает))), но правельнее так:
    Код:
    IF ACP_get_zapros=1 THEN 
    	start_tmr:=FALSE;
    	tmrZ(In:=start_tmr,pt:=T#1450MS);
    	//выполняю первую процедуру
    	ACP_get_zapros:=7;
    	start_tmr:=TRUE;
    	tmrZ(In:=start_tmr,pt:=T#1450MS);
    END_IF
    IF ACP_get_zapros=7 AND tmrZ.Q=TRUE THEN 
    	//выполняю вторую процедуру
    	ACP_get_zapros:=0;
    END_IF
    И всётаки, если я эти переменные (tmrZ и start_tmr) объявлю в этой функции, скока они жть будут? Или в КДС об этом можно не думать?

  2. #2

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    И всётаки, если я эти переменные (tmrZ и start_tmr) объявлю в этой функции, скока они жть будут? Или в КДС об этом можно не думать?
    Думать надо. Все же из примера не видно это именно функция или ФБ... В функции будут обновляться при каждом ее вызове. Тут надо сделать ФБ, объявить все локально, и переменные будут жить вечно Не надо их глобальными делать.

  3. #3

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Думать надо. Все же из примера не видно это именно функция или ФБ... В функции будут обновляться при каждом ее вызове. Тут надо сделать ФБ, объявить все локально, и переменные будут жить вечно Не надо их глобальными делать.
    Большое спасибо, что прояснили этот момент...
    А если в PROGRAM сделать, переменные долго проживут?
    ...
    забыл уточнить: почему не сробатывает такой вызов tmrZ.IN:=TRUE;
    вход меняется, а выходы нет...
    Последний раз редактировалось Crusash; 06.07.2009 в 14:38.

  4. #4

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    А если в PROGRAM сделать, переменные долго проживут?
    Да, долго. Программа похожа на ФБ, но не имеет экземпляров. Например, написал я свой таймер. Ну из программы 1 могу сделать. Все. Сделать их несколько, чтобы каждый имел свои внутренние данные = разные времена запуска, выдержки... никак, тут только ФБ с экземплярами.

    Обычно 'программы' делают на верхнем уровне. Если многозадачный проект, то он имеет несколько программ, связанных с задачами. Внутри программы используем функции и ФБ.

    Цитата Сообщение от Crusash Посмотреть сообщение
    забыл уточнить: почему не сробатывает такой вызов tmrZ.IN:=TRUE;
    вход меняется, а выходы нет...
    Дык это и не вызов совсем. Это просто изменение входа. Можно заранее все нужные входы поустанавливать в разных местах, затем вызов сделать совсем пустой, типа:
    tmrZ;

    Для полного понимания, подумайте над этим: допустим нужна такая штука как блок данных. Т.е. никакого кода, просто некий набор взаимосвязанных данных. В CoDeSys делаем пустой ФБ, без кода, только с переменными и получаем что надо. Это имеет право на жизнь. Можно наделать экземпляров этих блоков, хранить в них данные, обращаясь через точку. Это и есть метод работы с данными без вызова самого ФБ.

  5. #5
    Пользователь
    Регистрация
    18.03.2007
    Адрес
    г. Краснодар
    Сообщений
    231

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Для полного понимания, подумайте над этим: допустим нужна такая штука как блок данных. Т.е. никакого кода, просто некий набор взаимосвязанных данных. В CoDeSys делаем пустой ФБ, без кода, только с переменными и получаем что надо. Это имеет право на жизнь. Можно наделать экземпляров этих блоков, хранить в них данные, обращаясь через точку. Это и есть метод работы с данными без вызова самого ФБ.
    А можно в ФБ добавить Action (Save, Read итп) и и вызывая ФБ().Read или ФБ().Save писать и читать, например в файл.

Ваши права

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