Так нельзя, о какой надежности идет речь?
На глазок не пойдет, здесь нужен точный расчет, однако. http://www.owen.ru/forum/showthread....l=1#post139595
Подсмотреть начало (номер первого регистра PSW) для первого и для второго графиком можно по этой методике
http://www.owen.ru/forum/showthread....l=1#post139654 или жестко задавать вручную с учетом подсчитанного требуемого количества регистров для каждого графика.
Изучите этот пример
Захват-1.png
ЗЫ.
Я тоже не буду плодить ответы и напишу здесь.
Дело вовсе не в ОВЕНЕ и не в ДЕЛЬТЕ. Дело в представлении чисел в памяти ПЛК или компьютера или микропроцессора. Для представления целых отрицательных чисел, в том числе и с фиксированной точкой, используется дополнительный код. Распространяться не буду, я уже на похожий вопрос отвечал 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 график" просто добавив в нем еще одну кривую. Подсказка - для второй кривой распределение регистров совпадают с теми, что и в примере с двумя экранами.![]()





.
Ответить с цитированием