Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Отображение со сдвигом запятой  (Прочитано 4093 раз)

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Отображение со сдвигом запятой
« : 16 Марта 2020, 14:42:01 »
Добрый день!
Не нашел похожей темы. Поэтому сначала вводная.
При переходе на субстраницу скриптом заполняем таблицу из DateSet.
В таблице юзер выбирает нужную строчку и жмет кнопку.
На кнопке висит универсальгый скрипт с процедурой из глобального модуля по присвоению переменной значения ячейки.
Код
TU4XXXMXX_XXXXRCS001_iPositionStop_Set.Value := 10 * StrToFloat(UTF8ToString(tblRoutes_U4XXXMXX_XXX.Columns(4).Cells(tblRoutes_U4XXXMXX_XXX.RowIndex).Text));
В поле отображается значение переменной TU4XXXMXX_XXXXRCS001_iPositionStop_Set, в доп.настройках которой стоит сдвиг на минус один(-1).
По сути получается следующее:
В таблице отображается 56.7, переменной присваивается значение 567 и в поле должно отобразиться 56.7.
Но в поле отображается 567.
Читая по данной теме менял тип переменной. Менял число сдвига. Менял шкалы. Но что то пошло не так. Нужного результата нет.
Подскажите что не так?
Жду вопросов и предложений!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Отображение со сдвигом запятой
« Ответ #1 : 16 Марта 2020, 14:50:57 »
Здравствуйте.

Если Вы выставили сдвиг запятой, то не нужно дополнительно выполнять умножение на 10 (или любые другие преобразования). При использовании сдвига запятой скада делает всё сама, как на чтение, так и на запись. Например при чтении значения 123 с контроллера, смещает знак и отображает 12.3, а при записи 12.3 отправит на контроллер 123.

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #2 : 16 Марта 2020, 15:56:58 »
Возможно не полностью раскрыл тему.
В таблицу записываем результат запроса к базе данных. В ячейке отображается значение 56.7. Данное значение не привязано к какой то переменной. Это DateSet.
Для упрощения передачи из скады в плк умножаем значение на 10 (как бы отбрасываем дробную часть) и присваиваем его переменной. Далее значение 567 считывает контролер и у себя делит на 10. Как бы добавляем дробную часть и получаем 56.7. ПЛК получил нужное ему значение.
Так же для упрощения контроля выбора значения думали вывести данную переменную для визуализации со сдвигом, 56.7. Но оператор видит 567. Поэтому и решили использовать сдвиг.
Цитировать
...Например при чтении значения 123 с контроллера, смещает знак и отображает 12.3, а при записи 12.3 отправит на контроллер 123....
Да переменная взятая из контролера без проблем работает со сдвигом.
Возможно этот вариант не подходит и придется делать либо 2 переменных (одна для ПЛК, вторая для СКАДЫ) либо скриптами.
Наверное опять не понятно написал. НО все равно жду вопросов.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #3 : 17 Марта 2020, 11:46:21 »
Здравствуйте.

Как мы писали выше, при использовании сдвига запятой скада выполняет необходимые преобразования как на чтение, так и на запись, поэтому если используется сдвиг запятой, то не нужно дополнительно умножать/делить значение переменной. Уберите из скрипта умножение на 10 и все будет работать так как нужно.

Цитировать
В ячейке отображается значение 56.7 . Для упрощения передачи из скады в плк умножаем значение на 10 и присваиваем его переменной.
Получается, в переменную записывается: 56,7 *10 *10(т.к. используется сдвиг запятой "-1") = 5670. После того, как Вы у переменной поставили сдвиг запятой = "-1", на контроллер записывается не 567, а 5670.

Цитировать
Так же думали вывести данную переменную для визуализации со сдвигом, 56.7. Но оператор видит 567.
При считывании переменной выполняется сдвиг запятой влево на один знак: 5670 = 567. Что и видит оператор.

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #4 : 17 Марта 2020, 13:54:44 »
Добрый день!
Все разобрался все работает как Вы и говорили.
На всякий пожарный проверьте справку и подсказку. Возможно ошибаюсь, но по моему перепутано право с левым.
Или Вы сдвигаете не запятую, а полностью число относительно фиксированной запятой?
Жду ответов и вопросов!

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #5 : 17 Июня 2020, 16:38:45 »
Добрый день!
Дабы не плодить темы.
Правильно ли я понимаю:
- сдвиг на -1 влияет на значение переменной.
- так же сдвиг влияет на шкалу. Т.е если указаны значения шкалы -10 .. 1000, то на графике отображается -1 .. 100.
- режим масштабирования при включении берет указанную шкалу (-10 .. 1000) и преобразует график. Вопрос: смещение на -1 то же действует в этот момент?
Если надо могу выложить принтскрины.
Жду вопросов и предложений.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #6 : 18 Июня 2020, 20:16:45 »
Здравствуйте.

Цитировать
- сдвиг на -1 влияет на значение переменной.
- так же сдвиг влияет на шкалу. Т.е если указаны значения шкалы -10 .. 1000, то на графике отображается -1 .. 100.
Да, все верно.

Цитировать
режим масштабирования при включении берет указанную шкалу (-10 .. 1000) и преобразует график. Вопрос: смещение на -1 то же действует в этот момент?
Это два разных режима, которые переключаются соответствующей кнопкой при редактировании переменной и будет работать тот режим, который на данный момент выбран в настройках переменной. Т.е., если выбран сдвиг запятой, то будет производиться сдвиг запятой(без масштабирования), если активирован режим масштабирования, то будет выполняться масштабирование значения переменной к заданной шкале(без сдвига запятой). Одновременно данные режимы работать не могут.

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #7 : 19 Июня 2020, 13:50:55 »
Добрый день!
Соответственно если нужно делать смещение например на -1, то не используя режим масштабирования необходимо увеличить значения шкалы. Если было -10..1000, то надо установить -100..10000 и на графике отобразиться -10..1000 с нужными данными. Правильно ли я понимаю?
Просто экспериментируя таким образом данные вроде правильно приходят, а вот на графике не понятно что.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #8 : 19 Июня 2020, 17:12:19 »
Режим масштабирования обычно применяется для преобразования разных шкал, например когда в контроллере используется шкала 0 - 100, а в скаде необходимо отображать значения в шкале 0 - 150. В случае, когда в контроллере используется шкала -10 .. 1000, а в скаде нужно отображать значения в шкале -1 .. 100, то нужно использовать сдвиг запятой "-1". Шкала для переменной это диапазон значений, которые может принимать данная переменная. В скаде нужно указывать ту шкалу, которая используется в контроллере. Если переменная в ПЛК изменяется в диапазоне -10 .. 1000, значит в скаде у переменной также должна быть задана шкала -10 .. 1000. Далее, если требуется отображать значение переменной в скаде в шкале -1..100, то нужно использовать сдвиг запятой "-1", при этом тренды также будут отображаться в шкале -1..100. Свойства масштабирования и сдвиг запятой подробно описаны здесь. Если что-то не понятно, напишите какая шкала используется у переменной в ПЛК(в каком диапазоне изменяется переменная) и в какой шкале ее нужно отображать в скаде.

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #9 : 24 Июня 2020, 10:20:53 »
Добрый день!
Так.
На ПЛК диапазон значений переменной равен -100 ... 10000, значение переменной 456 .
На скаде надо отобразить в диапазоне равному -10 ... 1000, значение переменной 45,6.
Следовательно надо для переменной в скаде установить сдвиг на -1 и шкалу -100...10000.
Либо надо для переменной в скаде установить масштабирование мин = -10 мах = 1000 и шкалу можно не указывать.
Правильно ли я понял, ибо путаюсь и хочется разобраться раз и навсегда

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Отображение со сдвигом запятой
« Ответ #10 : 24 Июня 2020, 21:08:58 »
Цитировать
Следовательно надо для переменной в скаде установить сдвиг на -1 и шкалу -100...10000.
Все верно.