PDA

Просмотр полной версии : СП270 График отопления



Demus
06.11.2015, 00:59
Добрый день. Встала задача отображать график зависимости температуры подачи от наружной температуры на панели.
Для себя ограничился 5ю точками. На контроллере сформировано 2 массива из координат x и y.
Необходимо просто построить отрезки по этим координатам. Подскажите как сделать, не могу найти подходящих инструментов.
Из ближайшего - гисторамма дает похожую форму графика, но оси Y как таковой нет.

petera
06.11.2015, 12:22
Добрый день. Встала задача отображать график зависимости температуры подачи от наружной температуры на панели.
Для себя ограничился 5ю точками. На контроллере сформировано 2 массива из координат x и y.
Необходимо просто построить отрезки по этим координатам. Подскажите как сделать, не могу найти подходящих инструментов.
Из ближайшего - гисторамма дает похожую форму графика, но оси Y как таковой нет.
Из ближайшего нужно попробовать "остановленный" XY график или придется рисовать из отрезков по точкам самому.

petera
06.11.2015, 15:19
Пример графика отопительного или соотношения газ-воздух, который я сделал из стандартного XY графика
20685

Тестовая программа для ПЛК
20686

20687

График можно редактировать из панели
Видео работы графика.

https://www.youtube.com/watch?v=B6NkGm8SDQg

Demus
07.11.2015, 18:59
Спасибо большущее! Буду разбираться. Даже пример для моего ПЛК совпал))

petera
08.11.2015, 02:25
Спасибо большущее! Буду разбираться. Даже пример для моего ПЛК совпал))
А с новым шаблоном для XY графика, наш отопительный будет выглядеть лучше:rolleyes:

https://www.youtube.com/watch?v=BRtOXPrjfVk
Новый шаблон для графиков XY можно взять здесь http://www.owen.ru/forum/showthread.php?t=14191&p=185720&viewfull=1#post185720

Demus
09.11.2015, 12:20
Не смог найти в инструкции по прораммировангию сп270 описание настроек xy графика. Многое конечно понятно интуитивно, но где почитать все-таки?

petera
09.11.2015, 15:33
Не смог найти в инструкции по прораммировангию сп270 описание настроек xy графика. Многое конечно понятно интуитивно, но где почитать все-таки?
Почитать про XY график моно тут http://www.owen.ru/forum/showthread.php?t=16635&p=129591&viewfull=1#post129591 Информацмм достаточно для использования XY графика по прямому назначению. Но применительно к Вашему случаю нужны дополнительные пояснения:rolleyes:.

Demus
10.11.2015, 15:50
Суть стала ясна. Многое конечно на уровне потому-что так написано. Единственное не понятно в функциональной кнопке кажется перепутаны, по адресу 1024 Вы пишете 1038 а по адресу хвоста 1026 1028. А массив у нас начинается с 1030. Не понимаю почему не наоборот хвост и голова.

petera
10.11.2015, 16:07
Суть стала ясна. Многое конечно на уровне потому-что так написано. Единственное не понятно в функциональной кнопке кажется перепутаны, по адресу 1024 Вы пишете 1038 а по адресу хвоста 1026 1028. А массив у нас начинается с 1030. Не понимаю почему не наоборот хвост и голова.
Я тоже не понимаю, почему в процессе работы выборки сначала увеличивается "голова"(по адресу 1024), а "хвост"(по адресу 1024) не изменяется до тех пор, пока вся выборка не заполнится.:rolleyes:
Почему массив, который мы редактируем начинается с адреса 1030, а не с 1028? Это маленькая хитрость!
Попробую вечером сделать описание этого проекта, там и откроется эта хитрость.

Demus
10.11.2015, 20:40
Начало массива я допускаю для себя слюбого адреса. Потому что он цикличен, как я понимаю для панели. Видимо особенность графика...Ждем описание)

Demus
11.11.2015, 00:03
До кучи уж, чтобы темы не плодить. С панели приходят координаты в формате 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 по идее...

Demus
11.11.2015, 00:30
Попробовал добавить на другой экран аналогичный график. Естесственно сместил адреса на+10 для модбаса. Адреса для массива графика для надежности на +20. Функциональные кнопки поправил. Результат - отсутсвует отрисовка уже теперь на обоих графиках на разных экранах. Что-то забыл изменить? Почему второй может влиять на первый?

petera
11.11.2015, 02:58
Попробовал добавить на другой экран аналогичный график. Естесственно сместил адреса на+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 график" просто добавив в нем еще одну кривую. Подсказка - для второй кривой распределение регистров совпадают с теми, что и в примере с двумя экранами.:)

petera
11.11.2015, 12:02
Пример использования двух кривых в одном графике XY (Два графика отопления)
20766


https://www.youtube.com/watch?v=2NR6sVJKMdQ

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

petera
12.11.2015, 13:03
Я думаю, что полезно дополнить этот график возможностью добавлять новые точки графика, а также удалять имеющиеся.
При добавлении новой точки (вводе новых координат X,Y) существующий массив придется автоматически упорядочивать по возрастанию значений в столбце Х), тогда новые точки можно будет вводить в любом порядке. Пока не решил, делать такое упорядочивание средствами панели или делать это в ПЛК.

Demus
17.11.2015, 15:14
Несколько правильнее считаю делать упорядочивание в ПЛК. Т.к. при отказе панели хотя бы в ПЛК был массив в рабочем виде по которому вычисляется требуемая температура. ЗА спиной лежит панель сименс по которой рабочий со злости ударил рукой. Так что у панели больше шансов выйти из строя)