Просмотр полной версии : трм132+Master OPC+ MasterSCADA. Есть проблема.
Добрый день.
Существует проблема в привязке по MODBUS к Master OPC переменных типа Parpoint с ТРМ132.
У меня в OPC читается только первый адрес переменной. При привязке второго оба значения отваливаются (BAD).
Подскажите, как правильно реализовать связи, чтобы график работал?
13111
SCADAMaster
29.05.2014, 13:44
Какой тег вы добавили для их опроса? Судя по всему эту обычные int16 (с включенным масштабированием - нужно поделить на 10).
Попробуйте в новую конфигурацию добавить только этих два тега, один с адресом 92, другой - 93. И попробуйте их опросить.
Какой тег вы добавили для их опроса? Судя по всему эту обычные int16 (с включенным масштабированием - нужно поделить на 10).
Попробуйте в новую конфигурацию добавить только этих два тега, один с адресом 92, другой - 93. И попробуйте их опросить.
Да. Именно int16 с коэфф. 0.1. Переменная для одной точки (92,93) видится, но как только создаешь вторую точку и дальше (94,95), (96,97) и т.д., то от связи отваливаются все.
SCADAMaster
30.05.2014, 09:43
Возможно что каждую из точек нужно опрашивать отдельным Modbus запросом.
Чтобы решить эту проблему, создайте все теги для точек (можно из разместить по отдельным группам), а затем у каждого последнего тега точки включите настройку "Последний тег в групповом запросе". В этом случае каждая пара точек будет опрашиваться отдельным запросом.
Именно каждый параметр отдельным запросом. Групповое чтение доступно, но по другим адресам. Надо читать руководство по ПЛК63.
Завтра попробуем. Отпишусь.
Здравствуйте, с радостью сообщаю что проблема решилась, но возникла другая. Некоторые переменные OPC не опрашивает (BAD) , поясните как настроить в OPS переменные температур. И еще один глюк см. рисунки131841318513186 Некоторые точки графиков отображаются не корректно, в чем тут проблема?
Вот есть переменная Дельта
ночь
ГВС
d.ntg
285 float -100.0 100.0 -10.
что мне нужно сделать для правильного отображения в OPC?
По умолчанию
Здравствуйте, с радостью сообщаю что проблема решилась, но возникла другая. Некоторые переменные OPC не опрашивает (BAD) , поясните как настроить в OPS переменные температур. И еще один глюк см. рисунки 13188 13189 13190 Некоторые точки графиков отображаются не корректно, в чем тут проблема?
Вот есть переменная Дельта
ночь
ГВС
d.ntg
285 float -100.0 100.0 -10.
что мне нужно сделать для правильного отображения в OPC?
SCADAMaster
05.06.2014, 15:23
Скорее всего у вас неправильное чередование байт. Для переменных Float обычно используется чередование байт "Старшим словом вперед".
Но если у вас переменные Float, то почему тогда тип данных в сервере у вас установлен int32? В этом случае дробные части будут теряться - нужно тоже установить Float.
Все получилось с температурами. Осталась одна 13339. Не удается привести в соответствие значения отрицательных температур графика отопления. Вместо -10, -20 и т.д. выдает фантастические числа. Переменная типа Int, но пробовал и другие варианты - результат отрицательный.
SCADAMaster
20.06.2014, 15:29
А у эти переменных чередование байт какое?
У двухбайтовых чисел обычно используется чередование байт "Старшим байтом вперед".
Укажите полученные значения в двоичном или 16ричном формате.
Укажите полученные значения в двоичном или 16ричном формате.
Не могли бы подробнее объяснить, где нужно указать. Непонятно. Ни в OPC ни в СКАДЕ подобных функций не нашел.
to SCADAMaster: Чередование байт не при чем. Пробовал разные варианты. Проблема В Овне, похоже. Техподдержка Овна ничем помочь не может. Не нравится, говорят, можете вернуть:mad:
З.Ы. Если вопрос не решится - придется выбросить ТРМ к чертям и ставлю SMH-2G. Перед заказчиком неудобно.
SCADAMaster
27.06.2014, 13:40
Не могли бы подробнее объяснить, где нужно указать. Непонятно. Ни в OPC ни в СКАДЕ подобных функций не нашел.
Какие именно регистры у вас некорректно опрашиваются?
Оставьте в конфигуарции ОРС сервера только эти регистры, включите в свойствах ОРС сервера запись журнала и всех событий. Включите режим исполнения. Лог пишется в папку:
c:\Documents and Settings\All Users\Application Data\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Посмотрите какие данные приходят от приборов.
Или приложите сюда пример ответа от прибора, и какие данные должны быть на самом деле.
З.Ы. Если вопрос не решится - придется выбросить ТРМ к чертям и ставлю SMH-2G. Перед заказчиком неудобно.
Segnetics также можно подключить к нашему ОРС серверу. У нас даже есть автоматический конвертер map карт в конфигурацию сервера. Конфигуратор лежит на странице загрузки ОРС:
http://insat.ru/prices/info.php?pid=6944
Проблема В Овне, похоже. Техподдержка Овна ничем помочь не может. Не нравится, говорят, можете вернуть:mad:У Вас очень похоже на число в дополнительном коде.
Как Вы считываете каждую точку графика - как пару регистров формата Int?
Если будет время в понедельник - посмотрю на своих аналогах.
У Вас очень похоже на число в дополнительном коде.
Как Вы считываете каждую точку графика - как пару регистров формата Int?
Если будет время в понедельник - посмотрю на своих аналогах.
Да, пара регистров формата Int.
Я посмотрел, разобрался.
Эти разработчики [вырезано внутренним цензором] сделали отрицательные числа для данного типа данных (пара значений) не int в дополнительном коде, а int со знаком :(
Грубо - старший разряд - знак, 0 - положительное число, 1 - отрицательное. Младшие 15 разрядов - модуль значения в десятых долях градуса.
Можно обработать скриптом, но мне лениво его писать. Может, уважаемый SCADAMaster поможет.
SCADAMaster
30.06.2014, 12:05
Ничего не понятно.
В чем отличие от обычного int?
В представлении числа.
Обычный int - в дополнительном коде, а тут целое со знаком.
Т.е. -1 (в десятых) в доп. коде будет 1111111111110110 а у ОВЕНа в этом типе переменной 1000000000001010
SCADAMaster
30.06.2014, 14:55
Тогда должен помочь примерно такой скрипт:
function OnRead()
val,qual=server.ReadCurrentTag(); --читаем значение
if qual==OPC_QUALITY_GOOD then --если признак качества хороший
sub=bit.BitFromData(val,15); --анализируем 15 бит
if sub==true then --если он истина
val=bit.BitToData(val,false,15)*(-1); --сбрасываем бит и умножаем результат на -1
end;
server.WriteCurrentTag(val/10,OPC_QUALITY_GOOD); --делим результат на 10 и записываем в тег
end;
end
Пример скрипта в конфигурации в приложении
Извиняюсь, что выпал из процесса на пару недель.
Отписываюсь по результатам.
Спасибо за скрипт, но не помогло.
Значения изменились, но бредовость их осталась. Биться об стену надоело.
Согласовываем замену
lopezmil
19.08.2014, 17:17
Здравствуйте. У меня практически такая же проблема. Только с ТРМ133м. Суть проблемы во вложенном файле
lopezmil
19.08.2014, 17:24
Думаю проблема описана достаточно подробно
SCADAMaster
19.08.2014, 18:28
Скорее всего проблема в том, что прибор не отвечает при запросе более 2 регистров (что несколько странно).
Вы можете включить у каждого из проблемных тегов настройку "Последний тег в групповом запросе" - в этом случае они опрашиваться поотдельности.
lopezmil
21.08.2014, 08:35
Спасибо! Попробую.
lopezmil
25.08.2014, 14:06
Спасибо, помогло. Действительно проблема заключалась именно в этом. У меня теперь возник вопрос другого характера: каким образом можно в вашем ОРС сервере организовать перечислимые переменные?
lopezmil
25.08.2014, 14:16
И ещё вопрос: можете объяснить чего ему не хватает и что он от меня требует? Вопрос в картинке
lopezmil
25.08.2014, 15:31
Всё, вопрос снят, сам разобрался.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot