Simple-Scada forum

Simple-Scada 2 => Ошибки => Тема начата: Greeds74 от 01 Июня 2017, 14:23:02

Название: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 01 Июня 2017, 14:23:02
День добрый!
Сейчас работаем над записью чисел с плавающей запятой в ОРС сервер. Число 4- байтное, тип Single.
ОРС -сервер Complex Systems, протокол Modbus RTU. Simple -scada версия 2.2.1.1.
При попытке записать число 12.7 через ОРС сервер на шину выдается вот такой  пакет:
Код
Запрос:6/1/2017 2:10:33 PM.84264 (+0.0313 seconds)
 03 10 00 14 00 02 04 00 00 60 00 D0 E8            .........`.Ðè   
Ответ:6/1/2017 2:10:33 PM.84264 (+0.0000 seconds)
 03 10 00 14 00 02 00 2E
Запись происходит - но число совершенно безумное получается.

Хотя должно быть вот так - правильный вариант:
Код
Запрос:6/1/2017 2:12:20 PM.76864 (+0.0938 seconds)
 03 10 00 14 00 02 04 33 33 41 4B 77 C4            .......33AKwÄ   
Ответ:6/1/2017 2:12:20 PM.76864 (+0.0000 seconds)
 03 10 00 14 00 02 00 2E 
Правильная запись получена при записи в сервер значений со стороннего ОРС клиента - Matricon OPC explorer.
При работе со сторонним клиентом операция проходит абсолютно корректно.
Число, передаваемое как Single со скады, в IEEE отображении получается как 6000 0000,
хотя должно быть 414B 3333.

С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 01 Июня 2017, 14:54:43
Здравствуйте.

Simple-Scada одинаково работает со всем OPC-серверами и типами данных, в соответствии со спецификацией OPC-DA. За все время работы с большим количеством OPC-серверов подобных проблем с присвоением не наблюдалось. Вы уверены, что ничего не напутано с типами данных? В скаде у переменной выбран тип данных Single, на OPC-сервере также Single (на некоторых OPC-серверах он называется Float) (вещественно число, со знаком, 4 байта)?

Как тег был добавлен в скаду? Импортом с OPC-сервера, или просто в скаде "вручную" была создана переменная?
Если пытаться присваивать не 12.7, а целое 12, то ситуация такая же?
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 01 Июня 2017, 15:15:41
Формат правильный - более чем уверен.
Тег добавлен путём импорта из ОРС сервера.
Давайте теперь попробуем записать 12.0 - то есть, в IEEE мы должны передать 4140 0000
Код
Запрос:6/1/2017 3:18:47 PM.76664 (+0.0469 seconds)
 03 10 00 14 00 02 04 00 00 00 00 F8 E8            ...........øè   
Ответ:6/1/2017 3:18:47 PM.76664 (+0.0000 seconds)
 03 10 00 14 00 02 00 2E                           ........
То есть тут вы пишите 0000 0000 - а это неверно.

Теперь пишем через Matricon OPC explorer
Код
Запрос:6/1/2017 3:20:42 PM.15664 (+0.0000 seconds)
 03 10 00 14 00 02 04 00 00 41 40 C9 48            .........A@ÉH   
Ответ:6/1/2017 3:20:42 PM.17264 (+0.0156 seconds)
 03 10 00 14 00 02 00 2E   
   
Тут, как видите, пишется 4140 0000 - а это верно.
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 01 Июня 2017, 15:43:17
Добавлю немного... Пишем 12.21.
Должно быть передано 41435C29
Итак- вот лог пакета и ответ контроллера
Код
Запрос:6/1/2017 3:45:51 PM.43564 (+0.0625 seconds)
 03 10 00 14 00 02 04 00 00 20 00 E1 28            ......... .á(   
Ответ:6/1/2017 3:45:51 PM.43564 (+0.0000 seconds)
 03 10 00 14 00 02 00 2E   
         
В запросе видим 20000000, а это совсем не то значение-1.084202E-19.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 01 Июня 2017, 21:24:33
Уже вечер добрый!
Для облегчения понимания проблемы во вложении XML файл конфигурации ОРС сервера. Можете посмотреть - никакой ошибки в конфиге нет. Работаем с переменной COM2.TP-PLC2.SP_T1 -  у неё тип данных VT_R4 и права доступа RW - чтение/запись.
Завтра архивом  обнародую тестовый проект.
Поверьте - решить эту проблему я могу запросто, напишу простенького ОРС клиента только для записи переменных и всё - буду запускать по кнопке.
Но эти костыли могут жутко не понравится заказчику - вы уж знаете, народ привередливый. Могут потребовать отказаться от системы с костылями!
Если что ещё вам необходимо - без проблем, пишите. Давайте работать - тем более, что и вы продукт улучшаете, и я не буду прыгать с Genesis32 на WinCC .
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 01 Июня 2017, 21:57:22
Цитировать
Давайте работать - тем более, что и вы продукт улучшаете, и я не буду прыгать с Genesis32 на WinCC .
Мы всегда рады что-то улучшить в нашем ПО, только неясно что исправлять? Проверили с OPC-серверами arOPC, Lectus, KepServerEx, Kassl, InSAT, Advosol, Owen. Работает со всеми перечисленными и с любыми типами данных, целочисленными, вещественными, строковыми. Почему OPC-сервер Complex Systems работает с запросом на присвоение не так как остальные OPC-серверы, пока остается загадкой. Запрос одинаковый для всех. И почему запрос проходит через Matricon OPC explorer пока также трудно сказать.

Во вложении стандартный Explorer от немецкого разработчика Kassl. Проверьте, с ним присвоения проходят? Инструкции ниже:
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 07:44:26
День добрый!
Итак - всё по вашей инструкции. Вот что летит в порт:
Код
Запрос:6/2/2017 7:41:40 AM.76164
 02 10 00 14 00 02 04 5C 29 41 43 4E 2D            .......\)ACN-   
Ответ:6/2/2017 7:41:40 AM.76164 (+0.0000 seconds)
 02 10 00 14 00 02 01 FF                           .......ÿ
Как видно, это корректное значение 4143 5С29 равняется 12.21. Во вложении скриншот

Теперь запись из скады того же значения
Код
Запрос:6/2/2017 7:48:52 AM.43664 (+0.0000 seconds)
 02 10 00 14 00 02 04 00 00 20 00 E5 D4            ......... .åÔ   
Ответ:6/2/2017 7:48:52 AM.43664 (+0.0000 seconds)
 02 10 00 14 00 02 01 FF                           .......ÿ

Записано некорректное значение. Итак - что делаем дальше? Со своей стороны я могу подключиться через другой ОРС сервер
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 08:51:08
Итак - в качестве тестового использую ICONICS Modbus OPC server v3.54. При работе через него происходит корректная запись - ниже лог порта
Код
Запрос:6/2/2017 8:46:54 AM.94664 (+0.6875 seconds)
 02 10 00 13 00 02 04 99 9A 41 BD 43 60            .......™šA½C`   
Ответ:6/2/2017 8:46:54 AM.94664 (+0.0000 seconds)
 02 10 00 13 00 02 B0 3E   

А теперь подключаемся через Complex System OPC -
Код
Запрос:6/2/2017 8:51:53 AM.09064 (+0.0000 seconds)
 02 10 00 14 00 02 04 00 00 80 00 9D D4            .........€.Ô   
Ответ:6/2/2017 8:51:53 AM.09064 (+0.0000 seconds)
 02 10 00 14 00 02 01 FF     
Как видите, некорректные данные переданы. Во вложении приведены свойства  обоих серверов из вашей же утилиты от Kassl. Сервера имеют разную спецификацию  - OPC DA 2 и OPC DA 3.
Ещё раз проверил через вашего ОРС клиента - запись через Complex System OPC проходит без проблем. Какие дальнейшие шаги мы можем предпринять?

С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 02 Июня 2017, 09:05:42
Отлично. Теперь тот же Kassl, но более приближенный к скаде тест с группой и разными типами записи. Инструкции:

Также пришлите проект скады, чтобы мы могли убедиться что в нем все корректно.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 10:10:26
День добрый!
Всё по вашим инструкциям - попытка записи приводит к передаче некорректного значения.
Во вложении скриншоты операций до и после. Также тестовый проект - Helio.zip.
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 02 Июня 2017, 10:12:58
Цитировать
попытка записи приводит к передаче некорректного значения.
Т.е. запись проходит некорректно и синхронным способом и асинхронным? Так ли это?
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 10:13:33
Да - и в том, и в другом случае результат один и тот же.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 02 Июня 2017, 10:37:57
Вот и вся разница. dOPCExplorer, который успешно меняет значение и dOPCDAClient, который работает "некорректно", это одна и та же программа от одного разработчика, но только в первом случае работа идёт с тегом "сразу", а во втором сначала создается группа со своей частотой опроса и тег добавляется в неё. OPC-сервер должен одинаково работать в двух вариантах, как это делают остальные OPC-серверы. Но, судя по тестам Complex System OPC работает с ними по-разному. Может у него есть проблемы при работе с разной частотой опроса? А может быть Complex System OPC делает разницу ещё в чем-то, что мы упускаем из виду, но сути это не меняет.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 10:50:22
Меня если честно тоже эта ситуация немного удивляет.Что касается работы сервера - то вот приведу лог обмена, где виден кусок команды записи значения

Код
Запрос:6/2/2017 10:28:17 AM.63364 (+0.1094 seconds)

 02 03 00 0A 00 40 64 0B                           .....@d.       

Ответ:6/2/2017 10:28:17 AM.66464 (+0.0313 seconds)

 02 03 80 00 00 00 00 00 00 00 00 00 00 00 00 00   ..€.............
 00 00 00 00 00 00 00 00 00 00 00 00 00 40 28 00   .............@(.
 00 42 18 3B B4 00 00 00 00 00 00 00 00 00 00 00   .B.;´...........
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 DD                                    ....Ý           

Запрос:6/2/2017 10:28:17 AM.71164 (+0.0469 seconds)

 02 06 00 1A 3B 84 BB 6D                           ....;„»m       

Ответ:6/2/2017 10:28:17 AM.72764 (+0.0156 seconds)

 02 06 00 1A 3B 84 BB 6D                           ....;„»m       

Запрос:6/2/2017 10:28:17 AM.75864 (+0.0313 seconds)

 02 03 00 0A 00 40 64 0B                           .....@d.       

Ответ:6/2/2017 10:28:17 AM.78964 (+0.0313 seconds)

 02 03 80 00 00 00 00 00 00 00 00 00 00 00 00 00   ..€.............
 00 00 00 00 00 00 00 00 00 00 00 00 00 40 28 00   .............@(.
 00 42 18 3B 84 00 00 00 00 00 00 00 00 00 00 00   .B.;„...........
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
 00 00 00 DB DB                                    ...ÛÛ
Запись с точки зрения протокола производится безупречно - а вот почему значения некорректные передаются, для меня большой вопрос.Кстати - читает чётко, только при записи возникают вот такие непонятности. Для других типов данных та же ситуация.
Если у вас есть идеи, куда копать дальше - давайте, будем продолжать.
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 02 Июня 2017, 15:13:48
В данной ситуации будет единственно правильным выбором будет замена ОРС сервера на другой. В противном случае время будет просто потрачено зря.
Огромное спасибо специалистам из службы поддержки за консультации.
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 04 Июня 2017, 06:38:50
День добрый!
Хотелось бы поделиться результатами - по поводу ОРС сервера. Переход на другую версию, а именно на ICONICS Modbus OPC, решил проблему полностью. Но ценник конечно, оставляет желать лучшего.
Остаётся надеяться и ждать, когда же в вашем продукте появится встроенная поддержка мастера modbus RTU .
Хотелось бы ещё раз выразить благодарность за поддержку.
С уважением,Михаил.
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Simple-Scada от 04 Июня 2017, 12:32:08
Цитировать
Остаётся надеяться и ждать, когда же в вашем продукте появится встроенная поддержка мастера modbus RTU.
Мы не планируем встроенную поддержку Modbus. Вместо этого мы предлагаем пользователям OPC-сервер arOPC по сниженной цене. Описание и цены доступны на этой странице (http://simple-scada.com/aropc). Данный OPC-сервер может работать как Modbus RTU мастер. Есть бесплатная версия на 32 тега, скачать можно на сайте разработчика (http://www.ardsoft.ru/). Также Вы можете задать любые вопросы касаемо arOPC в этом разделе форума (http://simple-scada.com/forum/index.php?board=9.0).
Название: Re: Проблемы при записи числа с плавающей запятой в ОРС сервер
Отправлено: Greeds74 от 04 Июня 2017, 13:56:15
Спасибо за ответ! arOPC уже тестируем как более суток - немного своеобразный, но очень даже хорошо себя показывает. Конечно, если сравнить цены - то тут импортный производитель проигрывает, причём сильно. Будем ориентироваться на Simple Scada + arOPC.
С уважением,Михаил.