Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 52

Тема: массивы array

  1. #1

    По умолчанию массивы array

    добрый день. сильно не ругайтесь,)
    написал в cfc код массива
    mas1: ARRAY[1..100] OF WORD;
    расскажите как его заполнить значением внутренней переменной (к примеру out1)?
    если значение переменной формируется счетчиком на выходе out1 , и постоянно меняется , и поэтому нужно сохранять каждое новое значение в список?.
    большое спасибо.
    в разделе PLC_PRG (PRG) написал

    PROGRAM PLC_PRG
    VAR
    out1: word;
    mas1: ARRAY[1..100] OF WORD;

    end_var
    что писать дальше?

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

    По умолчанию

    Код:
      
      .....
      init: bool;
      out1_: word;
      i:word;
    end_var
    ---------------------------------------
    if init and out1 <> out1_ then
      i := (i mod 100) + 1;
      mas1[i] := out1;
    end_if
    init := true;
    out1_ := out1;

  3. #3

    По умолчанию

    В соседней теме выложил ФБ Sohran для сохранения переменной в массиве по кругу, 1 Массив 100.jpg
    самое старое значение удаляется, новое пишется,
    глобальняя константа N=10, определяет границу массива, можно изменить на 100. Первое значение вседа самое новое. Запись и обработка массива в цикле FOR.
    в примере идёт подсчёт кол-ва нажатий на кнопку и запись в массив, но можно сохранять что угодно, например время или расход.
    https://owen.ru/forum/showthread.php...l=1#post481683

    На скрине по нажатию кнопки In1 каждое нажатие записывает время в массив
    Последний раз редактировалось kondor3000; 28.03.2026 в 10:21.

  4. #4

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Код:
      
      .....
      init: bool;
      out1_: word;
      i:word;
    end_var
    ---------------------------------------
    if init and out1 <> out1_ then
      i := (i mod 100) + 1;
      mas1[i] := out1;
    end_if
    init := true;
    out1_ := out1;




    Добрый день

    Выдает ошибку
    IMG_20260328_105752.jpg

  5. #5

    По умолчанию

    Цитата Сообщение от Rs219 Посмотреть сообщение
    Добрый день

    Выдает ошибку
    Ещё бы, вы текст программы на ST, поместили в окно объявления переменных. Вот скрин как надо 1 ФБ массива.jpg
    Смотрите мой пример, как вызывать блоки ФБ на ST, в основной программе на CFC.
    Надо поставить таргет старого ПЛК110-60M
    Последний раз редактировалось kondor3000; 28.03.2026 в 13:32.

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

    По умолчанию

    Массив кошерней через VAR_IN_OUТ (на мой взгляд)
    Изменябельным будет и в верхнем коде и исполнение легче

  7. #7

    По умолчанию

    Т. Е. Вы создали
    1. функ. Блок, назвали его "zapis-masiv" - записали в него функцию
    2 объявили в prg_plc этот блок
    3. Привязали ко входу "выход счётчика" И к выходу объявленный массив.

    ??

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

    По умолчанию

    4. Работаете с массивом

  9. #9

    По умолчанию

    Цитата Сообщение от Rs219 Посмотреть сообщение
    Т. Е. Вы создали
    1. функ. Блок, назвали его "zapis-masiv" - записали в него функцию
    2 объявили в prg_plc этот блок
    3. Привязали ко входу "выход счётчика" И к выходу объявленный массив.

    ??
    Всё, запускаете эмуляцию и Старт, смотрите так записывается массив при изменении счётчика.

    Масив можно в ФБ поместить в VAR_IN_OUT 1 Вход выход массива.jpg
    тогда он будет не только записываться, но и читаться.
    а значит поместив его в RETAIN (написать самому) в главной программе, он будет сохраняться при выключении питания
    VAR RETAIN
    mas1: ARRAY[1..100] OF WORD ;
    END_VAR

    Дважды щёлкнув по ФБ в дереве и открыв экземпляр, можно смотреть, что происходит в ФБ.
    Последний раз редактировалось kondor3000; 28.03.2026 в 17:33.

  10. #10

    По умолчанию

    Да работает.
    Только в массив заносятся числа последовательно 1,2,3,4,5,6
    Хотелось бы, что бы было именно если 6 сигналов, то записалось 6
    А пишется вот так: 1,2,3,4,5,6

Страница 1 из 6 123 ... ПоследняяПоследняя

Похожие темы

  1. Массивы структур
    от BSA в разделе ПЛК1хх [М02]
    Ответов: 2
    Последнее сообщение: 14.12.2021, 15:10
  2. Массивы в MasterScada
    от ivydy в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 1
    Последнее сообщение: 07.07.2021, 22:16
  3. Array String
    от irrWN в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 22.05.2020, 14:51
  4. Преобразование ARRAY OF BYTE в REAL
    от Дениска в разделе ПЛК1хх [М02]
    Ответов: 7
    Последнее сообщение: 31.07.2019, 10:07
  5. Подскажите про массивы
    от alexxx в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 20.11.2008, 22:35

Ваши права

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