PDA

Просмотр полной версии : Управление ПР200 из облака и из настроек одновременно



Serhioromano
19.08.2018, 15:14
Допустим у меня есть программа, и в ней куча переменных, энергонезависимых, это настройки программы которые устанавливаются через меню на экране. Теперь мы подключаем это устройство в облаку. Хотелось бы что бы в облаке все эти настройки тоже были и можно было из облака менять настройки.

Я думал что просто заменю все переменные настроек с локальных на сетевые, и они будут работать и локально и по сети. Но увидел что в них нет энергонезависимости, хотя ПР выступает как подчиненное устройство.

Как я понимаю нужно писать какой-то блок? Простое соединение сетевой переменной с локальной не даст результата, или локальная будет всегда перезаписывать сетевую или наоборот.

Как мне элегантно решить эту задачу?

petera
19.08.2018, 17:24
Допустим у меня есть программа, и в ней куча переменных, энергонезависимых, это настройки программы которые устанавливаются через меню на экране. Теперь мы подключаем это устройство в облаку. Хотелось бы что бы в облаке все эти настройки тоже были и можно было из облака менять настройки.

Я думал что просто заменю все переменные настроек с локальных на сетевые, и они будут работать и локально и по сети. Но увидел что в них нет энергонезависимости, хотя ПР выступает как подчиненное устройство.

Как я понимаю нужно писать какой-то блок? Простое соединение сетевой переменной с локальной не даст результата, или локальная будет всегда перезаписывать сетевую или наоборот.

Как мне элегантно решить эту задачу?

Сетевые переменные в слейве ПРки являются энергонезависимыми по умолчанию, ничего настраивать ненужно

Serhioromano
19.08.2018, 17:24
Спасибо. То что нужно.

Serhioromano
19.08.2018, 17:25
Сетевые переменные в слейве ПРки являются энергонезависимыми по умолчанию, ничего настраивать ненужно

Так что можно просто поменять локальные на сетевые и все будет работать? Но там нет параметра по умолчанию значения как в локальной переменной.

ASo
19.08.2018, 18:36
Увы, придется после заливки задать вручную.

Сергей0308
19.08.2018, 18:49
Или соседнюю тему посмотреть: http://www.owen.ru/forum/showthread.php?t=29260

И ещё хотел добавить: в ПР переменные типа INT32, на мой взгляд, самые распространённые, но в ОЛ нет таких переменных для передачи по сети. Приходится применять нечто вроде этого:


38397


Можно и попроще:


38398

Или так:

38399

Но так в симуляторе будет неверно показывать, так как в симуляторе не обрезается до 16 бит, как в железе, но в железе всё должно правильно работать!

Вот лично мне кажется очень-очень странно, когда за много-много лет "Овену" не приходит в голову самая элементарная мысль, которая приходит мне - передать это по сети!

Serhioromano
20.08.2018, 08:04
в ПР переменные типа INT32, на мой взгляд, самые распространённые, но в ОЛ нет таких переменных для передачи по сети.

Не совсем понял. А что целочисленный сетевой тип отличается от целочисленного локального? Я как то передаю целочисленные значения в облако без всяких преобразований и все работает. Получаю корректные данные.

Сергей0308
20.08.2018, 08:23
Не совсем понял. А что целочисленный сетевой тип отличается от целочисленного локального? Я как то передаю целочисленные значения в облако без всяких преобразований и все работает. Получаю корректные данные.

Диапазон отличается в 65536 раз! Я же вроде ясно написал, что сетевая переменная обрезается до 16 бит с 32, она занимает один регистр, а локальная 32 бита! Вот Вы попробуйте передать целочисленной сетевой переменной значение 65536 и более, не надо быть ясновидящим, чтобы понимать, что такое не получится!

Ревака Юрий
20.08.2018, 09:38
Диапазон отличается в 65536 раз! Я же вроде ясно написал, что сетевая переменная обрезается до 16 бит с 32, она занимает один регистр, а локальная 32 бита! Вот Вы попробуйте передать целочисленной сетевой переменной значение 65536 и более, не надо быть ясновидящим, чтобы понимать, что такое не получится!

Я так понимаю речь о режиме слейв? Видимо не было запросов от клиентов, тут наверное в первую очередь необходимо на стороне мастера такая возможность, у ПР200 она есть.

Сергей0308
20.08.2018, 10:35
Далеко не будем ходить, по текущей теме, чтобы переменную в облако передать я могу ПР мастером сделать?!

Ревака Юрий
20.08.2018, 10:55
Далеко не будем ходить, по текущей теме, чтобы переменную в облако передать я могу ПР мастером сделать?!

Логично:) получается сейчас необходимо задействовать 2 регистра в слейве и с облака запрашивать чтение INT с количеством регистров 2. Т.е возможность передать INT32 есть.

Сергей0308
20.08.2018, 12:09
Логично:) получается сейчас необходимо задействовать 2 регистра в слейве и с облака запрашивать чтение INT с количеством регистров 2. Т.е возможность передать INT32 есть.

Это чем отличается от костыльных решений что я предлагал? Также придётся в ПР UDINT разделять на два UINT! Мне кажется надо аналогично FLOAT переменным сделать! Про облако не знаю, там можно назначать тип переменной UDINT или тоже надо вручную склеивать?

Сергей Лысов
20.08.2018, 12:19
Про облако не знаю, там можно назначать тип переменной UDINT или тоже надо вручную склеивать?

В облаке ничего склеивать не нужно. Формат UINT32(UDINT) поддержан штатно.
Полный список форматов данных, которые поддерживает облако:

38402

Ревака Юрий
20.08.2018, 12:27
Это чем отличается от костыльных решений что я предлагал? Также придётся в ПР UDINT разделять на два UINT! Мне кажется надо аналогично FLOAT переменным сделать!

Я как бы только "за",:) просто из всех "хотелок" которые я видел за последние 2 года, не было запросов на эту тему.

Сергей0308
20.08.2018, 14:30
В облаке ничего склеивать не нужно. Формат UINT32(UDINT) поддержан штатно.
Полный список форматов данных, которые поддерживает облако:

38402

Очень замечательно! Видимо Вам понятно зачем это нужно, помогли бы коллегам, которым не ясно это!

Godlike_S
14.01.2019, 21:34
Доброго дня!

Прочитал тему, но ответ для меня к сожалению не раскрыт :( Можно все же как то связать сетевые переменные с переменными в ПР?

Godlike_S
15.01.2019, 00:12
Вот фрагмент программы:

40756

Сетевая переменная "Control" это внешнее управление нагревателем из облака, переменная "Нагрев" получает свою булевскую единичку и при старте прибора все ОК. Я так понимаю из облака я могу менять значение сетевой переменной, и это автоматически пропишется и сетевую и в локальную переменную. Но теперь саму переменную "Нагрев" из прибора никак не поменять... Все мозги уже поизломал... Это вообще реально сделать?

Godlike_S
15.01.2019, 02:52
Вроде как решил с помощью адовых костылей, но все равно либо так либо так... А вместе никак :(

40757

Я правильно понимаю, что все сетевые переменные энергонезависимы? Не произойдет ли ЧП в случае если сеть умрет?

Алексеев
15.01.2019, 06:52
Используйте макросы они есть в базе для всех видов переменных удобно .
40758
Сетевые переменные сохраняются в энергонезависимой памяти после выключения питания.
Посмотри здесь ПРИМЕР

Godlike_S
15.01.2019, 09:52
Огромное Вам спасибо!!! Как раз то, что нужно!