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

Тема: подскажите по работе с массивами

  1. #1
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию подскажите по работе с массивами

    Подскажите по работе с массивами что то я не могу разобраться
    VAR_GLOBAL CONSTANT
    MAX_BYTON:WORD:=5; (*объявляю константу размера массива*)
    END_VAR
    VAR_GLOBAL
    BYTON:ARRAY [ 1..MAX_BYTON ] OF FB_BYTON; (*имя массива BYTON и он связан с функциональным блоком FB_BYTON*)
    END_VAR
    ----------------------------------------------------
    вроде так я понял поправите если неправ
    PROGRAM PLC_PRG
    VAR
    i:WORD; (*объявляем числовую переменную*)
    END_VAR
    -------------------------------------------------
    FOR i := 1 TO MAX_BYTON DO (*опрашиваем кнопки в цикле на предмет их нажатия и сохраняем результаты в нашем массиве и пиреходим FB_BYTON на действие Check это при условии если я правильно понимаю это*)
    BYTON[ i ].Check;
    END_FOR
    -----------------------------------------------------
    FUNCTION_BLOCK FB_BYTON
    VAR_INPUT
    Open:BOOL; (*Состояние кнопок нажата или нет*)
    END_VAR
    VAR
    Num_BYTON:WORD; (*Номер нажатой кнопки*)
    END_VAR
    -------------------------------------------------------
    ;
    --------------------------------
    Check
    ------
    IF Open THEN (*если кнопка нажата в визуализации на кнопки прописана такая вот переменная .Byton[1].Open*)
    (*а вот тут мне надо узнать номер нажатой кнопки и записать его в числовую переменную Num_BYTON и как это сделать я что то не пойму помогите пожалуйста*)
    END_IF

  2. #2

    По умолчанию

    Мало что понятно.
    Что есть на входе? Переменные состояния концевых выключателей типа bool?
    Или word переменная с установленными битами?

    На выходе тоже должен быть массив переменных типа bool? Или массив номеров нажатых кнопок?
    Я бы сначала предложил изложить постановку задачи: что по сути есть на входе и что должно быть на выходе.

    Код:
    VAR_GLOBAL
    ........................
    button_state:ARRAY [ 1..MAX_BUTTON] of bool;
    END_VAR
    
    FOR i := 1 TO MAX_BYTON DO 
             button_state[i]:= FALSE;
             button[ i ](Open:= check[i], button_state[i]);
    END_FOR

  3. #3
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию

    На входе состояние кнопок bool на выходе нужны номер нажатой кнопке в переменую типа word

  4. #4

    По умолчанию

    Т.е. на выходе мы имеем массив номеров нажатых кнопок?

    Код:
    FOR i := 1 TO MAX_BYTON DO
             button_num[i]:= 0;
    END_FOR
    j:=0;
    FOR i := 1 TO MAX_BYTON DO
             if button_state = TRUE then
                             button_num[j] := i;
                              j:= j + 1;
             end_if
    END_FOR

  5. #5
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию

    да, дома гляну ваш вариант кода сейчас нету под рукой компа

Ваши права

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