Страница 2 из 2

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт мар 27, 2012 6:31 pm
trs
Но нужно IO Real double float

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вс июн 10, 2012 1:53 pm
ChipS
To Igor V. Zhdanov
УВП-280 не только переворачивает регистры (с этой проблемой драйвер модбас справился бы), но переворачивает еще и байты в слове. Поэтому считываю как целое и преобразовываю в Интаче вот таким образом (может, кому пригодится):
Получение старшего слова и перестановка байтов:
((T1 SHL 16 SHR 24)+(T1 SHL 24 SHR 16))
Получение младшего слова и перестановка байтов:
((T1 SHR 24)+(T1 SHL 8 SHR 16))
Преобразование:
H31=(((a31 - (Int(a31/128))*128)+128)*65536+b31)*2**((Int(a31/128)) - 150)
Делаем подстановку в последнюю формулу и получаем в итоге:
(((((T1 SHL 16 SHR 24)+(T1 SHL 24 SHR 16)) - (Int(((T1 SHL 16 SHR 24)+(T1 SHL 24 SHR 16))/128))*128)+128)*65536+((T1 SHR 24)+(T1 SHL 8 SHR 16)))*2**((Int(((T1 SHL 16 SHR 24)+(T1 SHL 24 SHR 16))/128)) - 150)
Тег в Интаче должен быть Real с диапазоном от -1e+015 до 1e+015, item типа 31001I, 31004I ит.д. Считывается как двойное слово.
Можно и упростить, но делал в спешке.


Формула преобразования - верна.
Сдвиг делаем иначе.
Пример для УВП-280А. Результат: получение значения давления с УВП, второй трубопровод, ТЭГ UVP_P, тип real , указываем адрес 301064 L (тех.мин, тех макс, ставим -2e+015, +2e+015).
Собственно формула:

((((((UVP_P & 0xFF0000) SHR 8) ^ ((UVP_P & 0xFF000000) SHR 24)) - (Int((((UVP_P & 0xFF0000) SHR 8) ^ ((UVP_P & 0xFF000000) SHR 24))/128))*128)+128)*65536+(((UVP_P & 0xFF) SHL 8) ^ ((UVP_P & 0xFF00) SHR 8)))*2**((Int((((UVP_P & 0xFF0000) SHR 8) ^ ((UVP_P & 0xFF000000) SHR 24))/128)) - 150)

Строку вставляем в Value display, - тип Аnаlog , радуемся :)

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 2:38 pm
trs
B Kepware имеются тэги float и double, через OPC клиент видны их значения. В InTouch через OPC Tag Creator создаём тэги (I/O Real). При запуске Runtime float отображается, а double - нет. OPC Link говорит - ошибка. Есть ли способ прикрутить double к InTouch?

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 9:17 pm
mp3corp
А смысл использовать OPC Link для "доставания" тэгов из KepServer'a? У себя на работе тоже использую KepWare (ПЛК Октопус), с него напрямую тяну данные в InTouch. Если в OPC клиенте в самом KepWare значения отображаются корректно, то проблем с отображением их в рантайме интача не должно быть. Проверте региональные настройки Виндовс.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 9:34 pm
Генератор зла
trs писал(а):OPC Link говорит - ошибка

Префикс не забыли добавить?

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 9:54 pm
mp3corp
Не, думаю префиксы ни при чем, сам не так давно забыл про них, так вот если их не ставить, то топик имеет статус-Good, но количество тегов будет = 0!

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 10:43 pm
Генератор зла
mp3corp писал(а):Не, думаю префиксы ни при чем, сам не так давно забыл про них, так вот если их не ставить, то топик имеет статус-Good, но количество тегов будет = 0!

Дык...
OPC Link говорит - ошибка

Больно уж туманно. Windows тоже много по каким причинам сообщает об ошибках. Неплохо бы конкретики получить, типа логов SMC.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт сен 25, 2012 11:49 pm
mp3corp
Будем ждать)
Хотя зачем использовать промежуточный клиент, если можно сразу с kepware забирать?

Re: Получение данных из float Holding Register

СообщениеДобавлено: Ср сен 26, 2012 11:29 am
trs
OPCLink-ом пользовался из лени. :wink:
Напрямую действительно всё отображается. :D
Всем спасибо!

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 12:48 pm
Datsun
Добрый день у меня подобная проблема с Получением данных из float Holding Register.
Подскажите каким именно KeepWare для правильного отображения в InTouch. Так понял данная программа платная, может есть демо версии или бесплатные, Если можно ссылку.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 1:50 pm
Генератор зла

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 4:45 pm
Datsun
Генератор зла писал(а):http://www.KEPWare.com
Спасибо за ссылку, Гуглом я умею пользоваться. Вопрос был какой Kepware (EX5-MDBUS-NA00) пользуются другие участники форума.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 6:16 pm
Генератор зла
Datsun писал(а):может есть демо версии или бесплатные, Если можно ссылку.

Вот и дал ссылку. Там есть демки.
Datsun писал(а):Вопрос был какой Kepware (EX5-MDBUS-NA00) пользуются другие участники форума.

EX5-BCNET-NA00
EX5-MDBUS-NA00
EX5-ATDRT-NA00
Версии от 4.х и выше.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 7:07 pm
mp3corp
Только помни что демо работает 2 часа, а потом :evil:

Re: Получение данных из float Holding Register

СообщениеДобавлено: Вт окт 02, 2012 8:47 pm
Datsun
Вот теперь спасибо, искал демо версии не нашел, теперь все ок. Буду пробовать.

Re: Получение данных из float Holding Register

СообщениеДобавлено: Пн янв 26, 2015 1:13 pm
Frol
Здравствуйте. Почитал данную тему, понял, что обсуждение близко и к моей проблеме. Если кто сталкивался, прошу, подскажите.
InTouch 12 версии опрашивает регистры SP334 через драйвер MBENET. Прошивка для SP334 разработана в IsaGRAF. Данные формата float в InTouch отображаются не корректно. К примеру, считываю значение из регистра 40053 (real), при этом в InTouch, в поле Item ввожу 40052 F (на регистр меньше). В IsaGraf, в таблице регистров задаю число 897.543, а в InTouch отображается 897.599 (чем больше число, тем больше погрешность). Если в InTouch считать регистр 40053, в нем окажется 0.
При этом, OPC сервер (KEPServerEx) данные передает корректно, если произвести настройку в поле Data Encoding (поменять местами регистры). Насколько я понял, такие драйвера как MBENET и MODBUS не способны менять местами регистры, поэтому получается искажение. Но, может в InTouch есть какая либо настройка? Или в поле Item я как-то не правильно записываю адрес? Не тот синтаксис?
Необходимо использовать MBENET, так как OPC сервера требуют лицензии, которой нет.
Заранее благодарю за любую информацию!

Re: Получение данных из float Holding Register

СообщениеДобавлено: Пн янв 26, 2015 1:44 pm
Steelman63
Frol писал(а): MBENET и MODBUS не способны менять местами регистры, поэтому получается искажение.


у DASMBTCP есть настройка:
Use Concept data structures (Reals): Select to read data from the PLC in
concept data structure format for Real item types. If checked, the
DAServer will process the data in the same register order as the Concept
programming software.
• Checked – selected (Default)
• Not checked – not selected