Страница 21 из 252 ПерваяПервая ... 1119202122233171121 ... ПоследняяПоследняя
Показано с 201 по 210 из 2512

Тема: CODESYS V3.5. Визуализация

  1. #201
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

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

    Ну, а давайте попробуем так? Пример с тремя экранами в фрейме, независимое для клиентов переключение с помощью кнопок, определение активного экрана фрейма в программе.

    1. Пишем такой вот код:

    001.png

    Здесь 10 - это максимальное число клиентов. Программа проходится по всем, считывая индекс открытого в фрейме экрана, тем самым определяя его название (порядок экранов определяется в конфигурации фрейма). Потом в программе мы можем проходиться по STRING массиву, и если хотя бы одно его значение совпадает с именем нужного нам экрана, то делаем, что хотим.

    2. Экран визуализации будет выглядеть так:

    002.png

    3. К фрейму мы привязываем вот такую переменную:

    003.png

    4. А кнопки переключения будут выполнять такой код (остальные две, соответственно, будут присваивать 1 и 2):

    004.png

    5. Ну и к прямоугольнику привяжем уже понятно что:

    005.png

    Прикладываю архив для 3.5 SP7 Patch3. Скачать эту версию CODESYS можно здесь:
    http://cleverhouse.club/scope/bms/re...7-patch-3.html

    SP5 Patch5 у меня, к сожалению, нет.


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

  2. #202

    По умолчанию

    Очень вам благодарен.
    Буду применять.

  3. #203
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от KAPITOSHKARU Посмотреть сообщение
    при активности данного экрана включаем триггеры опросов тех переменных которые опрашиваются по триггерам.
    При не активности триггеры выключаем.
    Я это делаю без информации об активном экране/фрейме. Все обращения к регистрам слейва обёрнуты в функцию read_reg(). В этой функции формируется список переменных, которые нужно запросить у слейва (или у слейвов). В отдельной задаче, которая выполняет обмен со слейвами, данный списк используется по назначению.

    // Регистр шины MODBUS.
    TYPE mb_reg :
    STRUCT
    vis: WORD; // Значение для визуализации; новые значения
    // (те, которые вводит оператор) заносятся сюда же.
    save: WORD; // полученное от слейва значение
    END_STRUCT
    END_TYPE
    // Путём сравнения полей vis и save (в функции find_changed_val) будем определять
    // изменние значения в регистре MODBUS для последующей передачи его слейву.
    Список требуемых регистров слейва:
    VAR_GLOBAL CONSTANT
    ring_size: WORD := 100;
    END_VAR

    VAR_GLOBAL
    arr: ARRAY [0..ring_size-1] OF WORD;
    head_idx: WORD := 0;
    tail_idx: WORD := 0;
    END_VAR
    FUNCTION ring_isIn : BOOL
    VAR_INPUT
    val: WORD;
    END_VAR
    VAR
    test_idx: WORD;
    ret_val: BOOL;
    END_VAR

    test_idx := ring.head_idx;
    ret_val := FALSE;

    WHILE ( NOT ret_val AND (test_idx <> ring.tail_idx) ) DO
    IF ( ring.arr[test_idx] = val ) THEN
    ret_val := TRUE;
    ELSE
    // test_idx := next_idx( test_idx );
    IF ( test_idx = ring_size - 1 ) THEN //test_idx := next_idx( test_idx );
    test_idx := 0;
    ELSE
    test_idx := test_idx + 1;
    END_IF
    END_IF
    END_WHILE

    ring_isIn := ret_val;
    FUNCTION read_reg : word
    VAR_INPUT
    idx: WORD;
    END_VAR

    IF ( NOT ring_isIn(idx) ) THEN
    ring_put( idx );
    END_IF

    read_reg := mb.regs[idx].vis;
    При формировании телеграмм для слейва индексы регистров забираю из кольца во временный буфер и запрашиваю те регистры, индексы которых оказались в буфере. После опроса всех таких регистров цикл повторяю.

    В высоконагруженной системе это будет не лучшее решение, но у меня СПК используется только как панелька, поэтому такое решение меня устраивает.

    Илья

  4. #204

    По умолчанию

    Супер, простинько и со вкусом, но есть переменные которые просто отображаются на экране, такие как выходное напряжение, потребление тока, имею в виду информационные переменные - они должны читаться при активной визуализации и (или) опрашиваться программой автоматизации и (или) программой защиты данного устройства и (или) линии в целом.
    Идея очень хорошая, обязательно возьму себе на вооружение.

  5. #205
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Обновил документ до версии 1.0 (см. первый пост темы).

    Список изменений:

    1. Исправлены ошибки предыдущей версии.
    2. Добавлена глава 12: Визуализация на СПК: ограничения и рекомендации
    3. Добавлена глава 13: Список изменений в новых сервис-паках (SP) CODESYS
    4. Добавлен пример 11.4.1: CODESYS HMI
    5. Добавлен пример 11.4.2: Работа с динамическими точками (элемент Ломаная)
    6. Добавлен пример 11.4.3: Считывание координат курсора
    7. Добавлен пример 11.4.4: Многопользовательский доступ. Независимая обработка клиентов визуализации
    8. Добавлен пример 11.4.5: Подсчет количества клиентов web-визуализации

    Это релизная версия документа. Следующие будут появляться по мере накопления новых примеров (если будет возникать потребность в таковых) и расширению функционала CODESYS.

  6. #206
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    7. Добавлен пример 11.4.4: Многопользовательский доступ. Независимая обработка клиентов визуализации
    И где он этот пример?

  7. #207

  8. #208

    По умолчанию

    Подскажите, пожалуйста, как присвоить значения из таблицы кнопкам Y и Z?
    Сколько строк может иметь таблица максимум?
    сколько ячеек можно сделать энергонезависимыми?
    Вложения Вложения

  9. #209
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Подскажите, пожалуйста, как присвоить значения из таблицы кнопкам Y и Z?
    Я так понимаю, на экране технолога все работает нормально, вопрос об экране оператора.
    Вводите новую переменную (например, x_op) и используйте ее для выбора строки таблицы, значения которой будет видеть оператор.
    Для отображения значений используйте переменные PLC_PRG.arrTable[PLC_PRG.x_op].y_teh и PLC_PRG.arrTable[PLC_PRG.x_op].z_teh. Соответственно, выводить их надо будет через %s.

    Цитата Сообщение от gecha Посмотреть сообщение
    Сколько строк может иметь таблица максимум?
    Точное число назвать нельзя. Очень много. Но создав таблицу с тысячами строк и прокручивая ее в визуализации, вы, скорее всего, столкнетесь с лагами. Попробуйте для начала ограничиться 20 строками на лист таблицы, и общим числом строк - 100.

    Цитата Сообщение от gecha Посмотреть сообщение
    сколько ячеек можно сделать энергонезависимыми?
    Retain-память СПК (энергонезависимое ОЗУ) составляет 128 Кб. Для сравнения,переменная типа INT занимает 2 байта.

  10. #210

    По умолчанию

    Ура, заработало!!!!
    Спасибо, Евгений.
    Поскольку ни разу с таблицами не работал, то хочу спросить, а как создать таблицу листами? Или где прочитать эту информацию?
    Последний раз редактировалось gecha; 09.12.2015 в 20:53.

Страница 21 из 252 ПерваяПервая ... 1119202122233171121 ... ПоследняяПоследняя

Похожие темы

  1. Визуализация CoDeSys
    от Newcomer в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 24.04.2018, 15:26
  2. Визуализация в CoDeSys
    от Newcomer в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 10.05.2017, 21:11
  3. Визуализация CodeSys
    от DanJer в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 30.08.2012, 04:53
  4. Визуализация Codesys
    от Slipknot в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 31.10.2008, 11:36
  5. Визуализация в CoDeSys 2.3
    от Slawa в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 29.08.2008, 18:30

Ваши права

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