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

Тема: Таблица данных и архив

  1. #1

    По умолчанию Таблица данных и архив

    Добрый день, коллеги!
    Мне необходимо вывести архивные данные в таблицу данных за указанный период времени. Чтение производится с помощью READ_ARCHIVE_DATA, который возвращает безразмерные массивы значений и меток времени. Однако если я создаю безразмерный массив структур (который является источником данных для таблицы данных), то у меня не получается заполнить его значениями из массивов значений и меток времени:
    IF Completed_1 THEN

    FOR i := 1 to Count_1 DO
    ARCH[i].Values := Values_1[i];
    ARCH[i].Times:=Times_1[i];
    END_FOR;

    END_IF;
    А если создать массив структур размера UINT, то в таблице данных будут присутствовать все его элементы (65535), а не только тех, из которых я делал выборку из архива.
    Подскажите, пожалуйста, как в этом случае быть.
    Вложения Вложения

  2. #2

    По умолчанию

    С помощью Resize_array() теперь получилось заполнить его значениями выходных массивов READ_ARCHIVE_DATA() и вывести их в таблицу. Но Resize_array() срабатывает только первый раз. После этого изменение размера больше не происходит, хотя счетчик увеличивается. Код (Completed, Count, Values[], Times [] передаются из READ_ARCHIVE_DATA() ):
    IF Completed THEN
    ARCH := RESIZE_ARRAY(ARCH, Init_Struct, Count);
    FOR i := 1 to Count DO
    ARCH[i].Values := Values[i];
    ARCH[i].Times:=Times[i];
    END_FOR;

    END_IF;
    Вложения Вложения

  3. #3

    По умолчанию

    Разобрался. Так гораздо лучше

    PROGRAM Программа_массив_структур_ID_58520
    VAR_INPUT
    Completed: BOOL := False;
    Count: UINT := 0;
    Values: ARRAY[*] OF LREAL;
    Times: ARRAY[*] OF DATE_AND_TIME;
    END_VAR

    VAR_IN_OUT
    ARCH: ARRAY[*] OF Структура_Values_Times;
    END_VAR

    VAR_OUTPUT
    EnO: BOOL := True;
    END_VAR

    VAR
    i: UINT := 0;
    Init_Struct: Локальная.Структура_Values_Times := (Values := 0, Times := DT#0001-01-01-00:00);
    ARCH_1: ARRAY[*] OF Структура_Values_Times;
    END_VAR




    IF Completed THEN
    ARCH := RESIZE_ARRAY(ARCH_1, Init_Struct, Count_1);
    FOR i := 1 to Count DO
    ARCH[i].Values := Values[i];
    ARCH[i].Times:=Times[i];
    END_FOR;

    END_IF;

    END_PROGRAM

Похожие темы

  1. MasterSCADA 4D Графический элемент 'Таблица данных'.
    от Николай НВ в разделе Master SCADA
    Ответов: 13
    Последнее сообщение: 18.10.2019, 15:08
  2. КМС-Ф1, Таблица 3.1
    от Вольд в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 12.07.2018, 15:29
  3. ФБ Таблица
    от Семенов в разделе Master SCADA
    Ответов: 1
    Последнее сообщение: 20.10.2016, 20:56
  4. ПЛК323 Архив данных на Micro-SD
    от Alex_Chuy в разделе ПЛК3хх
    Ответов: 1
    Последнее сообщение: 07.10.2016, 13:25
  5. Таблица
    от jus в разделе Master SCADA
    Ответов: 5
    Последнее сообщение: 17.04.2015, 19:26

Ваши права

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