Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 16 из 16

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

  1. #11

    По умолчанию

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

  2. #12

    По умолчанию

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

  3. #13
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,869

    По умолчанию

    Цитата Сообщение от Demus Посмотреть сообщение
    Попробовал добавить на другой экран аналогичный график. Естесственно сместил адреса на+10 для модбаса. Адреса для массива графика для надежности на +20. Функциональные кнопки поправил. Результат - отсутсвует отрисовка уже теперь на обоих графиках на разных экранах. Что-то забыл изменить? Почему второй может влиять на первый?
    Так нельзя, о какой надежности идет речь?
    На глазок не пойдет, здесь нужен точный расчет, однако. http://www.owen.ru/forum/showthread....l=1#post139595
    Подсмотреть начало (номер первого регистра PSW) для первого и для второго графиком можно по этой методике
    http://www.owen.ru/forum/showthread....l=1#post139654 или жестко задавать вручную с учетом подсчитанного требуемого количества регистров для каждого графика.
    Изучите этот пример
    Захват-1.png




    ЗЫ.
    Цитата Сообщение от Demus Посмотреть сообщение
    До кучи уж, чтобы темы не плодить. С панели приходят координаты в формате 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....l=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 в 04:44.

  4. #14
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,869

    По умолчанию

    Пример использования двух кривых в одном графике XY (Два графика отопления)
    Захват-1.png



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

  5. #15
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,869

    По умолчанию

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

  6. #16

    По умолчанию

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

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Хронологический график в СП270
    от psn_owen в разделе Сервисное ПО
    Ответов: 19
    Последнее сообщение: 14.02.2011, 22:55
  2. терморегулирование в системе отопления
    от 207 в разделе Трёп (Курилка)
    Ответов: 12
    Последнее сообщение: 29.11.2010, 22:46
  3. Количественный метод отопления
    от Wer в разделе Трёп (Курилка)
    Ответов: 3
    Последнее сообщение: 16.03.2007, 22:44

Ваши права

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