PDA

Просмотр полной версии : Отображение при обрыве датчика



Stas
20.07.2011, 13:07
Здравствуйте!

На панели СП270 создал 3 канала вывода температур типа Float,
в настройках вида указал 00,000
При обрыве датчика выдается число 0000000000000000,000 это давольно-таки не удобно.
Можно ли сделать покороче? Чтоб не вылазило за рамку цифрового дисплея?

swerder
20.07.2011, 14:43
цифровой дисплей - вид - длина
всего 5, дробная 3
так?
сделайте картинку с этим "0000000000000000,000", интересно поглядеть на такую фичу

Stas
21.07.2011, 06:03
Так и есть всего 5 знаков, дробных 3
Вот скриншот

Stas
21.07.2011, 06:44
Вот полное число

swerder
21.07.2011, 09:48
классного жука вы нашли :)
у вас при обрыве датчика какого-то модуля ввода этот модуль по каналу измерения случаем не значение "NaN" посылает?
вот к примеру

На некорректные данные типа Float_32 возвращается значение NaN

Stas
21.07.2011, 10:22
Где посмотреть-то что он там посылает?
И что сделать можно?

swerder
21.07.2011, 11:07
1. посмотреть можно в руководстве по эксплуатации этого модуля.
2. а это уже зависит от модуля и чего он там вам посылает при обрыве, как пример перейти с флоата на целочисленные

Stas
21.07.2011, 12:24
Модуль МВ 110-224.8А опрашивается ПЛК 110-30, а Панель считывает с ПЛК
В описании модуля написано что при обрыве он выдает нулевое значение или диагностирует как неисправность(Значение слишком мало).
Если бы при обрыве показывал "0", это было бы неплохо.
На целые числа перейти вряд ли получится нужно именно Float.

swerder
21.07.2011, 12:38
в плк при обрыве датчика какое значение отображается в переменной флоат?

Stas
21.07.2011, 13:07
В ПЛК создана ветка Reai input module, там значение в оборваном канале=
-1,123548е+037

swerder
21.07.2011, 13:18
вот это значение панель и отображает.
вижу 2 пути:
1. простой - сделать обрезание полученного флоата перед передачей на панель с помощью LIMIT или MAX с нижней границей 0 (или -1, чтоб было понятно что случилось)
2. сложный - докапываться до модуля, почему он присылает такое значение, а не 0 и исправить причину

p.s. позвольте полюбопытствовать, для чего нужна точность измерения температуры до тысячных?

Евгений Сергеевич
21.07.2011, 13:59
для контроля состояния датчика используйте регистр "Статус измерения входа N (код исключительной ситуации)" и согласно нему корректируйте значение передаваемое на панель.

(в руководстве не нашел, что при исключительной ситуации передается ноль в качестве измеренного значения? А если у вас температура 0 это же не значит что датчик отвалился)

swerder
21.07.2011, 14:40
РЭ_МВ110-224 8А_984.pdf


Некоторые типы неисправностей первичных преобразователем не могут быть
диагностированы прибором. К ним относятся обрывы датчиков тока и напряжения (измеренный вход выдает нулевое значение или диагностирует как неисправность «Значение слишком
мало»).

Stas
25.07.2011, 10:49
Что значит с нижней границей 0? То есть у меня минусовых значений вообще не будет, как тогда зимой работать?
В ПЛК как сделать обрезание float хотя бы до десятых градуса или до сотых?
Можете ли написать пример как это выглядит?

swerder
25.07.2011, 11:16
Что значит с нижней границей 0? То есть у меня минусовых значений вообще не будет, как тогда зимой работать?
как зададите, так и будет, можете хоть -300 задать

В ПЛК как сделать обрезание float хотя бы до десятых градуса или до сотых?
обрезать real, если я не ошибаюсь, можно только преобразованием в целочисленное, что вам вроде не очень подходит

p.s. а сотые градуса для каких процессов требуются, если не секрет?
p.p.s если вам хватит точности десятых градуса, то вам вполне подойдет преобразование вашего реала в переменную типа int с помощью trunc. результатом будет измерение с верхней границей в 3276 градусов.
если уж совсем надо чтоб были сотые градуса, то соответственно тем же транком обрезаете до сотых, но в результате будет ограничение сверху в 327 градусов.

Stas
25.07.2011, 11:24
Просто хотят, чтобы 2 цифры было после запятой ну по крайней мере одну то точно нужно оставить.
А с помощью команды LIMIT только до целых округляется?

swerder
25.07.2011, 12:29
вобщем решайте сколько надо цифр после запятой, ставьте это число в параметр dp при конфигурировании модуля ввода, считывайте значение int и его же можно сквозняком передать на панель, выбрав там тип dec