PDA

Просмотр полной версии : СП310Р отрисовка графиков



Илья Блинов
18.02.2019, 11:27
Добрый день, подскажите знающие люди.
Необходимо отрисовывать графики запрессовки, на каждое изделие отдельный график. Если беру графики реального времени или тренд, то отрисовывает корректно, но не получается сделать чтобы отрисовывал на новое изделие новый график, после повторной подачи управляющего сигнала продолжает рисовать в старом поле графика. Если беру XY график, то после подачи постоянного управляющего сигнала (4 на управляющий регистр) отрисовывает линию от 0 координат до фактического значения и таскает эту линию по полю графика (в соответствии с изменениями фактических значений) но корректной отрисовки нет, если подаю импульсный управляющий сигнал и вместо 4 на управляющий регистр 2, то отрисовывает точки корректно но линиями соединяет не точки между собой, а тащит их от 0 координат к каждой точке отдельно. Отсюда вопрос как можно настроить графики реального времени на сброс значений по биту от контроллера или как можно настроить XY график на корректную отрисовку. Во вложении фото того что получается пока, слева тренд, справа XY график.

Евгений Кислов
18.02.2019, 11:53
Добрый день.
А вы пробовали использовать элемент Тренд в режиме Гистограмма?
Он просто отображает двухмерный массив регистров, обнулить его - не проблема.

Илья Блинов
18.02.2019, 12:13
Нет не пробовал, поскольку не совсем понимаю как в режиме гистограммы задать начало и окончание отрисовки графика, так же как и привязать в гистограмме ось Y к регистру с изменяющимися данными. Те примеры что есть в справке и руководстве пользователя не дают ответы на эти вопросы.

Евгений Кислов
18.02.2019, 12:21
Я правильно понял - фиксированный диапазон по оси Y не подходит?
Насчет начала и окончания отрисовки граифика - можно подробнее пояснить, что под этим имеется в виду?

Илья Блинов
18.02.2019, 12:29
Фиксированный диапазон подходит, я несовсем понимаю как заполнить массив значений из 1 регистра. График отрисовывается по биту управления (когда выбран холостой ход пресса и начинается уже сама запрессовка) и заканчивается отриссовка графика через 2 сек после дожатия, это можно увидеть на левом графике в 1 посте.

Евгений Кислов
18.02.2019, 13:30
Посмотрите пример.
В нем используются макросы, так что в эмуляции он работать не будет.

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

В макросе ClearGraph происходит очистка графика. В макросе SetOffsetForX устанавливаются координаты точек графика по X (однократно при загрузке панели).

Вам, насколько я понимаю, достаточно будет установить нужное число точек и вместо эмулируемого значения подставить регистр с данными для вашего графика.
Ну и подписи по оси X сделать, если нужно.

Илья Блинов
18.02.2019, 15:58
Спасибо, вот только не могли бы вы помочь по поводу подставки регистра с данными (с макросами пока не работал и они для меня темный лес), по скольку размер хранилища в срезах 100, я так понимаю в ClearGraph прописываем четные регистры с 600 по 798, в SetOffsetForX нечетные с 601 по 799. Вместо функциональной кнопки функциональную область чтобы очистка была от внешнего бита. А вот какие изменения должны быть проведены в Глобальном макросе и Simulation для меня темный лес (регистр с данными с контроллера PSW500).

Евгений Кислов
19.02.2019, 07:52
Переделал пример, теперь 100 точек.

Если бит PSB257 включен, то идет симуляция (случайные значения), если отключен (как по умолчанию) - то на график заносятся значения из PSW500.

Для изменения числа точек/номеров используемых регистров теперь достаточно редактировать дефайны в глобальном макросе.

Илья Блинов
19.02.2019, 08:12
А не могли бы ссылочку на этот пример скинуть, а то по предыдущей ссылке скачивается не измененный.

Евгений Кислов
19.02.2019, 08:17
Выше файл Example_Hyst_v3.txp - это уже измененный пример.

Илья Блинов
19.02.2019, 10:09
Установил, что получилось в приложении, к сожалению корректного графика всеравно не выходит.

Евгений Кислов
19.02.2019, 10:16
По видео сложно что-то прокомментировать.
Я рекомендую вам сначала изучить выложенный пример, который решает абстрактную базовую задачу - строит график с возможностью очистки.
Далее его следует адаптировать под конкретное приложение.

Илья Блинов
19.02.2019, 10:25
Да но насколько я понял он его строит не в реальном времени, а по управляющей команде начинает перебирать значения в массиве регистров отсюда и получается перезапись, в идеальном случае бы считывать 1 пару регистров в сек.

Евгений Кислов
19.02.2019, 10:33
Да но насколько я понял он его строит не в реальном времени, а по управляющей команде начинает перебирать значения в массиве регистров отсюда и получается перезапись, в идеальном случае бы считывать 1 пару регистров в сек.

Он его строит в реальном времени.
Построение графика представляет собой постоянное копирование "текущего" значения (в вашем случае PSW500) в массив со смещение позиции для записи.
Этот массив отображается трендом.

Илья Блинов
19.02.2019, 10:41
Все верно, но из за "постоянного копирования" получается не график где 1 срез равен 1 сек реального времени (как в графиках реального времени), а то что на видео.

Евгений Кислов
19.02.2019, 10:47
Все верно, но из за "постоянного копирования" получается не график где 1 срез равен 1 сек реального времени (как в графиках реального времени), а то что на видео.

Все верно.
Если нужно срез в секунду - в функциональной области вместо Непрерывно выберите режим Цикл, 1 секунда (бит управления не забудьте сохранить).

Илья Блинов
19.02.2019, 11:49
Спасибо огромное, все заработало.