PDA

Просмотр полной версии : трм132+Master OPC+ MasterSCADA. Есть проблема.



ganz72
29.05.2014, 12:46
Добрый день.
Существует проблема в привязке по MODBUS к Master OPC переменных типа Parpoint с ТРМ132.
У меня в OPC читается только первый адрес переменной. При привязке второго оба значения отваливаются (BAD).
Подскажите, как правильно реализовать связи, чтобы график работал?
13111

SCADAMaster
29.05.2014, 13:44
Какой тег вы добавили для их опроса? Судя по всему эту обычные int16 (с включенным масштабированием - нужно поделить на 10).
Попробуйте в новую конфигурацию добавить только этих два тега, один с адресом 92, другой - 93. И попробуйте их опросить.

ganz72
30.05.2014, 08:16
Какой тег вы добавили для их опроса? Судя по всему эту обычные int16 (с включенным масштабированием - нужно поделить на 10).
Попробуйте в новую конфигурацию добавить только этих два тега, один с адресом 92, другой - 93. И попробуйте их опросить.

Да. Именно int16 с коэфф. 0.1. Переменная для одной точки (92,93) видится, но как только создаешь вторую точку и дальше (94,95), (96,97) и т.д., то от связи отваливаются все.

SCADAMaster
30.05.2014, 09:43
Возможно что каждую из точек нужно опрашивать отдельным Modbus запросом.
Чтобы решить эту проблему, создайте все теги для точек (можно из разместить по отдельным группам), а затем у каждого последнего тега точки включите настройку "Последний тег в групповом запросе". В этом случае каждая пара точек будет опрашиваться отдельным запросом.

ASo
30.05.2014, 11:49
Именно каждый параметр отдельным запросом. Групповое чтение доступно, но по другим адресам. Надо читать руководство по ПЛК63.

ganz72
30.05.2014, 19:50
Завтра попробуем. Отпишусь.

ganz72
05.06.2014, 14:26
Здравствуйте, с радостью сообщаю что проблема решилась, но возникла другая. Некоторые переменные OPC не опрашивает (BAD) , поясните как настроить в OPS переменные температур. И еще один глюк см. рисунки131841318513186 Некоторые точки графиков отображаются не корректно, в чем тут проблема?
Вот есть переменная Дельта
ночь
ГВС
d.ntg
285 float -100.0 100.0 -10.
что мне нужно сделать для правильного отображения в OPC?

ganz72
05.06.2014, 14:36
По умолчанию

Здравствуйте, с радостью сообщаю что проблема решилась, но возникла другая. Некоторые переменные 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.

ganz72
20.06.2014, 14:57
Все получилось с температурами. Осталась одна 13339. Не удается привести в соответствие значения отрицательных температур графика отопления. Вместо -10, -20 и т.д. выдает фантастические числа. Переменная типа Int, но пробовал и другие варианты - результат отрицательный.

SCADAMaster
20.06.2014, 15:29
А у эти переменных чередование байт какое?
У двухбайтовых чисел обычно используется чередование байт "Старшим байтом вперед".

ASo
20.06.2014, 20:56
Укажите полученные значения в двоичном или 16ричном формате.

ganz72
27.06.2014, 11:47
Укажите полученные значения в двоичном или 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

ASo
27.06.2014, 19:54
Проблема В Овне, похоже. Техподдержка Овна ничем помочь не может. Не нравится, говорят, можете вернуть:mad:У Вас очень похоже на число в дополнительном коде.
Как Вы считываете каждую точку графика - как пару регистров формата Int?
Если будет время в понедельник - посмотрю на своих аналогах.

ganz72
29.06.2014, 15:28
У Вас очень похоже на число в дополнительном коде.
Как Вы считываете каждую точку графика - как пару регистров формата Int?
Если будет время в понедельник - посмотрю на своих аналогах.

Да, пара регистров формата Int.

ASo
30.06.2014, 10:12
Я посмотрел, разобрался.
Эти разработчики [вырезано внутренним цензором] сделали отрицательные числа для данного типа данных (пара значений) не int в дополнительном коде, а int со знаком :(
Грубо - старший разряд - знак, 0 - положительное число, 1 - отрицательное. Младшие 15 разрядов - модуль значения в десятых долях градуса.
Можно обработать скриптом, но мне лениво его писать. Может, уважаемый SCADAMaster поможет.

SCADAMaster
30.06.2014, 12:05
Ничего не понятно.
В чем отличие от обычного int?

ASo
30.06.2014, 14:17
В представлении числа.
Обычный 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

Пример скрипта в конфигурации в приложении

ganz72
17.07.2014, 19:00
Извиняюсь, что выпал из процесса на пару недель.
Отписываюсь по результатам.
Спасибо за скрипт, но не помогло.
Значения изменились, но бредовость их осталась. Биться об стену надоело.
Согласовываем замену

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
Всё, вопрос снят, сам разобрался.