Просмотр полной версии : СП270 График отопления
Добрый день. Встала задача отображать график зависимости температуры подачи от наружной температуры на панели.
Для себя ограничился 5ю точками. На контроллере сформировано 2 массива из координат x и y.
Необходимо просто построить отрезки по этим координатам. Подскажите как сделать, не могу найти подходящих инструментов.
Из ближайшего - гисторамма дает похожую форму графика, но оси Y как таковой нет.
Добрый день. Встала задача отображать график зависимости температуры подачи от наружной температуры на панели.
Для себя ограничился 5ю точками. На контроллере сформировано 2 массива из координат x и y.
Необходимо просто построить отрезки по этим координатам. Подскажите как сделать, не могу найти подходящих инструментов.
Из ближайшего - гисторамма дает похожую форму графика, но оси Y как таковой нет.
Из ближайшего нужно попробовать "остановленный" XY график или придется рисовать из отрезков по точкам самому.
Пример графика отопительного или соотношения газ-воздух, который я сделал из стандартного XY графика
20685
Тестовая программа для ПЛК
20686
20687
График можно редактировать из панели
Видео работы графика.
https://www.youtube.com/watch?v=B6NkGm8SDQg
Спасибо большущее! Буду разбираться. Даже пример для моего ПЛК совпал))
Спасибо большущее! Буду разбираться. Даже пример для моего ПЛК совпал))
А с новым шаблоном для XY графика, наш отопительный будет выглядеть лучше:rolleyes:
https://www.youtube.com/watch?v=BRtOXPrjfVk
Новый шаблон для графиков XY можно взять здесь http://www.owen.ru/forum/showthread.php?t=14191&p=185720&viewfull=1#post185720
Не смог найти в инструкции по прораммировангию сп270 описание настроек xy графика. Многое конечно понятно интуитивно, но где почитать все-таки?
Не смог найти в инструкции по прораммировангию сп270 описание настроек xy графика. Многое конечно понятно интуитивно, но где почитать все-таки?
Почитать про XY график моно тут http://www.owen.ru/forum/showthread.php?t=16635&p=129591&viewfull=1#post129591 Информацмм достаточно для использования XY графика по прямому назначению. Но применительно к Вашему случаю нужны дополнительные пояснения:rolleyes:.
Суть стала ясна. Многое конечно на уровне потому-что так написано. Единственное не понятно в функциональной кнопке кажется перепутаны, по адресу 1024 Вы пишете 1038 а по адресу хвоста 1026 1028. А массив у нас начинается с 1030. Не понимаю почему не наоборот хвост и голова.
Суть стала ясна. Многое конечно на уровне потому-что так написано. Единственное не понятно в функциональной кнопке кажется перепутаны, по адресу 1024 Вы пишете 1038 а по адресу хвоста 1026 1028. А массив у нас начинается с 1030. Не понимаю почему не наоборот хвост и голова.
Я тоже не понимаю, почему в процессе работы выборки сначала увеличивается "голова"(по адресу 1024), а "хвост"(по адресу 1024) не изменяется до тех пор, пока вся выборка не заполнится.:rolleyes:
Почему массив, который мы редактируем начинается с адреса 1030, а не с 1028? Это маленькая хитрость!
Попробую вечером сделать описание этого проекта, там и откроется эта хитрость.
Начало массива я допускаю для себя слюбого адреса. Потому что он цикличен, как я понимаю для панели. Видимо особенность графика...Ждем описание)
До кучи уж, чтобы темы не плодить. С панели приходят координаты в формате WORD*10. Для вычисления уставки по графику нужно перевести в REAL. Делаю так:
Массив объявлен MassX: ARRAY[1..5] OF REAL;
MassX[1]:=WORD_TO_REAL (X1)/10;
X1 - двухбайтовое в модбас слейв (начало координат из таблицы задания на панели)..
Отображается в оналйн режиме в кодесис число в формате WORD только в 10 раз меньшее. Для минус 26 это 6527.6. Что я делаю не так?
С Овеном мало работал. Больше с дельтой и скадой. Там решал этот вопрос вычитая из 65536 такие числа. Здесь же должна работать функция WORD_TO_REAL по идее...
Попробовал добавить на другой экран аналогичный график. Естесственно сместил адреса на+10 для модбаса. Адреса для массива графика для надежности на +20. Функциональные кнопки поправил. Результат - отсутсвует отрисовка уже теперь на обоих графиках на разных экранах. Что-то забыл изменить? Почему второй может влиять на первый?
Попробовал добавить на другой экран аналогичный график. Естесственно сместил адреса на+10 для модбаса. Адреса для массива графика для надежности на +20. Функциональные кнопки поправил. Результат - отсутсвует отрисовка уже теперь на обоих графиках на разных экранах. Что-то забыл изменить? Почему второй может влиять на первый?
Так нельзя, о какой надежности идет речь?
На глазок не пойдет, здесь нужен точный расчет, однако:). http://www.owen.ru/forum/showthread.php?t=9992&p=139595&viewfull=1#post139595
Подсмотреть начало (номер первого регистра PSW) для первого и для второго графиком можно по этой методике
http://www.owen.ru/forum/showthread.php?t=9992&p=139654&viewfull=1#post139654 или жестко задавать вручную с учетом подсчитанного требуемого количества регистров для каждого графика.
Изучите этот пример
20761
https://www.youtube.com/watch?v=yYLqhFy3s9w
ЗЫ.
До кучи уж, чтобы темы не плодить. С панели приходят координаты в формате WORD*10. Для вычисления уставки по графику нужно перевести в REAL. Делаю так:
Массив объявлен MassX: ARRAY[1..5] OF REAL;
MassX[1]:=WORD_TO_REAL (X1)/10;
X1 - двухбайтовое в модбас слейв (начало координат из таблицы задания на панели)..
Отображается в оналйн режиме в кодесис число в формате WORD только в 10 раз меньшее. Для минус 26 это 6527.6. Что я делаю не так?
С Овеном мало работал. Больше с дельтой и скадой. Там решал этот вопрос вычитая из 65536 такие числа. Здесь же должна работать функция WORD_TO_REAL по идее...
Я тоже не буду плодить ответы и напишу здесь.
Дело вовсе не в ОВЕНЕ и не в ДЕЛЬТЕ. Дело в представлении чисел в памяти ПЛК или компьютера или микропроцессора. Для представления целых отрицательных чисел, в том числе и с фиксированной точкой, используется дополнительный код. Распространяться не буду, я уже на похожий вопрос отвечал http://www.owen.ru/forum/showthread.php?t=8604&p=182771&viewfull=1#post182771.
Таким образом панель, если в цифровом воде указали формат Dec, посылает в ПЛК число в дополнительном коде в КДС для таких чисел используется тип INT.
Фиксированная точка, если задан один знак после запятой, означает, что если ввели 26.0, то фактически в ПЛК отправляется число 260, если заданы два знака после запятой 26.00 превратятся в 2600.
В слейве ПЛК переменные используют тип данных WORD, т.е. целое без знаковое число без фиксированной точки.
И пока Вы вводите на экране числа от 0 до 32767(или с учетом фиксированной точки до 3276.7, 327.67, 32.767, 3.2767, 0.32767) то в переменной в Modbus Slave увидите это число, причем одно и тоже 32767.
Но как только Вы введете отрицательное число, то в переменной в Modbus Slave увидите это число в дополнительном коде, например не -26.0, а 65276.
Для арифметических операций можно использовать WORD и результат просто присваивать переменным INT без промежуточного преобразования типов.
А вот преобразовать в REAL без промежуточного преобразования WORD в INT не получится.
По этому нужно делать так
MassX[1]:=INT_TO_REAL (WORD_TO_INT(X1))/10;
Хочу заметить, что в слейве ПЛК можно для точек использовать Float. Для графика и таблицы в панели тоже использовать Float вместо Dec.
Структуры в массиве точек сразу будут с REAL
TYPE Point :STRUCT
X: REAL; (*Координата X точки*)
Y: REAL; (*Координата Y точки*)
END_STRUCT
END_TYPE
Естественно в графике и таблице количество регистров увеличится, почти в два раза.
ЗЫ. Дополнительная информация к размышлению.
Для двух графиков не обязательно использовать два экрана. Оба графика можно сделать в одном элементе "XY график" просто добавив в нем еще одну кривую. Подсказка - для второй кривой распределение регистров совпадают с теми, что и в примере с двумя экранами.:)
Пример использования двух кривых в одном графике XY (Два графика отопления)
20766
https://www.youtube.com/watch?v=2NR6sVJKMdQ
К сожалению на видео не могу показать, что данные в таблицах можно менять. В режиме эмуляции не хотят таблицы в окнах редактироваться.
Но в реальной панели все работает.
Я думаю, что полезно дополнить этот график возможностью добавлять новые точки графика, а также удалять имеющиеся.
При добавлении новой точки (вводе новых координат X,Y) существующий массив придется автоматически упорядочивать по возрастанию значений в столбце Х), тогда новые точки можно будет вводить в любом порядке. Пока не решил, делать такое упорядочивание средствами панели или делать это в ПЛК.
Несколько правильнее считаю делать упорядочивание в ПЛК. Т.к. при отказе панели хотя бы в ПЛК был массив в рабочем виде по которому вычисляется требуемая температура. ЗА спиной лежит панель сименс по которой рабочий со злости ударил рукой. Так что у панели больше шансов выйти из строя)
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot