Просмотр полной версии : Чтение целочисленного значения из ПР100 в OwenCloud uint32 или int32.
kipiasutp
28.12.2020, 03:10
Добрый день!
Как правильно считать в OwenCloud Целочисленную сетевую переменную?
Это показания счетчиков 7-8 разрядов.
Перепробовал все варианты с uint32, int32 и порядком байт и регистров в облаке и ПР100.
В ПР100 в онлайне все отображается правильно.
Не приходят правильные значения в OwenCloud.
Также неправильно записываются из облака в ПР100 текущие значения счетчиков.
kipiasutp
28.12.2020, 10:03
Сетевая переменная одна.
Общая картина такая:
52800 52801 52802 52803
а порядок байтов не надо поменять?
kipiasutp
28.12.2020, 10:16
Менял, вроде все варианты перепробовал.
Сетевая переменная одна.
сетевая перменная это 16 бит, ваши тестовые надо делить на два слова и их вставлять в сетевые переменные
ЗЫ и еще по скринам можно предположить что переменные задавались не согласно руководства https://ftp.owen.ru/OwenCloud/01_Docs/rp_owencloud.pdf раздел 5.6 а самостоятельно возможно в этом причина может быть
для ПР слейва порядок байт 2301 для флоат и 32-х битных... ВСЕГДА, невзирая на галочки в настройках ПР
kipiasutp
28.12.2020, 23:19
По совету capzap соорудил я такой огород :):
52824 52825 52826 52827
Зато работает.
В макросе INT_BOOL сделал сквозную нумерацию и переименовал в INT_BOOL_32.
Получается ПР100 по "физиологии" не может отдавать в сеть 32 бита за раз?
А ПР200 умеет интересно?
Всем спасибо за участие!
PS: А есть более изящный способ деления на два слова?
Алексеев
28.12.2020, 23:42
По совету capzap соорудил я такой огород :):
52824 52825 52826 52827
Зато работает.
Всем спасибо за участие!
PS: А есть более изящный способ деления на два слова?
Всё намного проще делается 52828 ОЛ един и для ПР100 и ПР200 . Аналогично придется
раскладывать на старший и младший ---- не когда с этим не сталкивался .
это точно не мой совет по битно слова разбивать), маска 16#FFFF и SHR на 16 (смещение можно заменить на деление как выше) я это имел ввиду
Алексеев
29.12.2020, 08:59
А что - ПР не может прислать 2 регистра в ответ 8( ? А как же флоаты ? Если оное - так, то в некоторых случаях это полная задница. И со счетчиками тоже может она быть иногда.
Надеюсь что это всё-таки не так. Кто-нить все-таки просветит ?
.
SLAVE только формирует регистры (ПР200 и т.д.). А MASTER определяет в каком формате считывать ( OWENCLOUD) . Поэтому методом который изложен выше можно допиливать
передачу INT32 ( UINT32) , Даже между устройствами программируемыми из ОЛ . И Я не считаю это большой проблемой ( или неудобством ).
для ПР нет понятия 32-х битного регистра, так что в коде думаем. Для Scada систем фиолетово, сказали 32 бита (2 регистра прочесть) прочтет, сказали 32 бита (2 регистра) записать, запишет... Ну и float туда же...
kipiasutp
29.12.2020, 17:01
Всё намного проще делается 52828 ОЛ един и для ПР100 и ПР200 . Аналогично придется
раскладывать на старший и младший ---- не когда с этим не сталкивался .
А как мне обратную задачу решить?
Из двух регистров собрать в один красиво.
Сергей0308
29.12.2020, 18:45
А как мне обратную задачу решить?
Из двух регистров собрать в один красиво.
В ПР-е примерно как то так в обе стороны:
52843
kipiasutp
29.12.2020, 19:32
В ПР-е примерно как то так в обе стороны:
52843
Спасибо!
Разобрал, собрал все работает.
qwer4230
14.08.2022, 22:19
Можно вопрос а где находятся в библиотеке операторы and и or для целочисленных
Алексеев
15.08.2022, 05:46
Можно вопрос а где находятся в библиотеке операторы and и or для целочисленных
Подключите целочисленную переменную к and и or ( или к другой подобной логике) , она и станет для целочисленной.
qwer4230
18.08.2022, 10:37
Спасибо большое
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot