Показано с 1 по 4 из 4

Тема: Помогите разобраться с программой

  1. #1
    Пользователь Аватар для Fudz
    Регистрация
    03.04.2012
    Адрес
    Харьков
    Сообщений
    63

    По умолчанию Помогите разобраться с программой

    Суть программы. Нужно зафиксировать момент переключения дискретного входа с 1 в 0. Подсчитать количество таких переключений и записать в ретейн.
    Суть проблемы. Имеется функциональный блок и функция тело программы одинаковое но при этом функциональный блок выполняется, а функция нет. В чем проблема не пойму.

    Функциональный блок :

    FUNCTION_BLOCK counter_FB
    VAR_INPUT
    chislo : BOOL;
    END_VAR
    VAR_OUTPUT
    counter : WORD;
    reatin : WORD;
    END_VAR
    VAR
    chislo2 : BYTE;
    END_VAR


    IF BOOL_TO_BYTE(chislo) <> chislo2 THEN
    chislo2 := BOOL_TO_BYTE(chislo);
    IF (chislo2 AND 1) = 0 THEN
    counter := counter + 1;
    IF counter = 10000 THEN
    counter := 0;
    END_IF;
    reatin := counter;
    END_IF;
    END_IF;

    Функция :

    FUNCTION count : WORD
    VAR_INPUT
    chislo1 : BOOL;
    _retain : POINTER TO WORD;
    END_VAR
    VAR
    chislo2 : BYTE;
    END_VAR

    IF BOOL_TO_BYTE(chislo1) <> chislo2 THEN
    chislo2 := BOOL_TO_BYTE(chislo1);
    IF (chislo2 AND 1) = 0 THEN
    count := count + 1;
    IF count = 10000 THEN
    count := 0;
    END_IF;
    _retain^ := count;
    END_IF;
    END_IF;

  2. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Жуть какая. По-нормальному нельзя сделать что ли?
    Код:
    VAR
    	b: BOOL;
    	b_trig: F_TRIG;
    	count: POINTER TO INT;
    END_VAR
    
    b_trig(clk := b);
    count^ := (count^ + BOOL_TO_INT(b_trig.Q)) MOD 10000;
    функциональный блок выполняется, а функция нет
    Всё у вас выполняется, только у функции внутренние переменные каждый раз новые — в этом её отличие от функционального блока.

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

    По умолчанию

    конкретно в этом примере, ф-тригер не может сохранить в функции свой экземпляр, поетому не может поймать переход фронта, отсюда и нет работы
    Зы а вот если все переменные будут во входных объявлениях и вместо тригера будет его указатель то должно сработать
    Последний раз редактировалось capzap; 12.04.2013 в 14:53.

  4. #4
    Пользователь Аватар для Fudz
    Регистрация
    03.04.2012
    Адрес
    Харьков
    Сообщений
    63

    По умолчанию

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

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 03.05.2019, 07:18
  2. помогите с программой
    от service в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 25.10.2012, 16:39
  3. помогите разобратса с программой
    от alexval2006 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 29.03.2010, 18:25
  4. помогите с программой
    от Valia в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 22.12.2009, 09:12

Ваши права

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