Здравствуйте. Разбираюсь с задачей построения двумерного графика. Есть сеть устройств, объединенных по Modbus RTU, которые передают по запросу от панели данные для построения двумерного графика (набор точек). Причем каждое устройство передает данных только 4 байта, в каждом байте если запись "0", то точка графика не строится, если "1", то строится (т.е. для байта запись будет вида например 01011101). Прошу не ругаться, если пишу, как профан, я с программированием и протоколами только начал разбираться... Каждой такой точке соответствует жестко заданная координата Х и Y (это отдельный вопрос, как это соответствие лучше записать и экспортировать в панель, или может придется использовать ПЛК для этого, чтобы он формировал массив данных для построения графика на панели). По запросу устройства производят измерения, и каждый раз ответ от устройств (эти байты) может быть новым, т.е. необходимо также архивировать эти данные от устройств для каждого запроса/ответа и при необходимости выводить на дисплей.
В панели для построения XY Plot можно пойти двумя путями (как я выяснил, может есть еще какой-то способ):
1) Формировать данные для регистра, определенного для данных X и Y (если общие данные для Х и Y) в виде последовательности X,Y,X,Y,X,Y... и т.д., как это сделано в примере с помощью макроса. Но тогда нужно каким-то образом суметь или обработать эти данные в панели, т.е. считать с устройств, обработать и записать в регистр, или получить уже обработанные данные с ПЛК, который будет выполнять эту обработку, и записать эти данные в регистр X, Y. Тут наверное без макросов не обойтись.
2) Второй вариант описан здесь: https://www.youtube.com/watch?v=F-oT0JCGwRg&t=500s Можно последовательно задавать координаты X, Y, записывая их в регистры для X и Y для одной точки, обновлять график, и таким образом наносить все точки на график. При этом уже имеющиеся на графике точки не будут удаляться, если не использовалось отчистка или перерисовка графика. Скорее всего опять же нужен макрос, который бы после получения каждой точки запускал команду черчения графика. Опять же - это лучше сделать в ПЛК или в панели?
В связи с вышесказанным есть следующие вопросы:
1) Как лучше поступить - делать обработку точек (выборку точек с "1" и формирование данных для построения графика) в ПЛК (нужна также запись архива по каждому считыванию данных с устройства, чтобы её можно было выводить на экран), или с этим справится и панель? Количество устройств в сети ограничивается только максимальным количеством устройств в сети ModBus. Т.е. задача подразумевает масштабирование, в зависимости от объекта. Т.е. имеет значение удобство создания нового проекта под новый объект с другим количеством устройств в сети.
2) Каким образом можно создать макрос для обработки данных в панели (в зависимости от варианта по п. 1)?
3) Есть ли возможность симуляции всего вышеописанного, если нет в наличии ни панели, ни ПЛК (если он будет необходим)? Самая главная проблема, как мне видится - это увязать массив координат и данные с устройств, передаваемые по ModBus (пусть даже если для проверки этих устройств будет например два, следовательно нужно иметь для обработки таблицу координат с 64 точками).
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Двумерный график (XY plot)
Модераторы: Глоб.модераторы, специалисты Weintek
-
- освоился
- Сообщения: 214
- Зарегистрирован: 08 дек 2016, 11:55
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 24 раза
- Поблагодарили: 8 раз