У ПРки - да, а я спрашивал со стороны OwenCloud: может он по Команде записать бит, а не весь регистр, например.
Вид для печати
У ПРки - да, а я спрашивал со стороны OwenCloud: может он по Команде записать бит, а не весь регистр, например.
Есть же руководство пользователя, там на стр.33 написано:
Вложение 77162
В смысле, если Вы не верите, что там написано, тогда всё нужно проверять опытным путём!
Вложение 77163
Вот так выглядит настройка битового тега в Cloud:
Вложение 77165
Управление битами - аналогично, только разрешение на запись нужно.
Есть МНОЖИТЕЛЬ, наверное должен работать:
Вложение 77164
Но в OL придётся умножать float на 100 и использовать функцию перевода в int (чтобы передавать отрицательные значения)
Код:function REAL_TO_INT : udint;
var_input
rIn : real;
end_var
var //
udTmp : udint;
end_var
IF rIn < -32768 THEN rIn := -32768;
ELSIF rIn > 32767 THEN rIn := 32767;
END_IF;
udTmp := real_to_udint(abs(rIn));
IF rIn > -1 THEN REAL_TO_INT := udTmp;
ELSE REAL_TO_INT := 65536 - udTmp;
END_IF;
end_function
Так он писать хочет биты в регистры ПР, а не читать, в смысле, ваши настройки для чтения, они не подойдут в данном конкретном случае!
И, макросы преобразования уже имеются, здесь в посте#83 в последний раз выкладывал универсальные, в смысле, для INT и DINT:
https://owen.ru/forum/showthread.php?t=39392&page=9
А здесь обсуждали:
https://owen.ru/forum/showthread.php?t=9398&page=647
Спасибо (ссылки себе копирую)!
Так. Примерно ясно:
1. Читать биты можно.
2. Передавать FLOAT в INT можно с множителем (на 0,01 - отлично).
3. С заприсью бит надо пробовать. У меня ж это всё на квартире матери работает, я пока не могу поехать туда, всё сломать, и тестировать.
Хотел заранее продумать карту регистров...
Вроде petera показывал как читать и писать биты в ПР200. у вас регистр 512, умножаем на 16 и получаем адрес первого бита. Вроде что-то вроде этого.
Если же оперировать регистром и самостоятельно получать биты типа через GetBit (или что-то аналогичное, что там есть в облаке, если есть), то при записи одного бита в регистр надо его изменить в данных самого регистра и отправить регистр целиком. Вот такое есть в облаке или нет даже не смотрел.
Всё уже упростили давно, функция выглядит так https://owen.ru/forum/showthread.php...821#post429821
Код:function FLOAT_TO_DINT: udint; //имя функции и тип данных выхода
VAR_INPUT
in : REAL;
END_VAR
if In >= 0 then
FLOAT_TO_DINT := real_to_udint(In);
else
// FLOAT_TO_INT:= 65536 - real_to_udint(-In); // Для INT
FLOAT_TO_DINT:= 0 - real_to_udint(-In); // Для DINT
end_if
end_function
Я всё же буду использовать чуть более сложный вариант, чтобы не получить ненароком подобных результатов:
Вложение 77170
Вы же используете функцию не ту , у меня всё правильно Вложение 77171
Там выбор, куда переводить в INT или DINT
Ну т.к. изначально шёл разговор про передачу float одним регистром, то я и использовал закомментированную строку в таком виде:
Код:function FLOAT_TO_DINT: udint; //имя функции и тип данных выхода
VAR_INPUT
in : REAL;
END_VAR
if In >= 0 then
FLOAT_TO_DINT := real_to_udint(In);
else
FLOAT_TO_DINT:= 65536 - real_to_udint(-In); // Для INT
// FLOAT_TO_DINT:= 0 - real_to_udint(-In); // Для DINT
end_if
end_function
1. Вы можете использовать функции 05 и 15 для записи конкретных битов в ПР200. Тогда параметр должен быть типа BOOL. А в поле регистр нужно записать число как выше описал melkyЦитата:
С заприсью бит надо пробовать. У меня ж это всё на квартире матери работает, я пока не могу поехать туда, всё сломать, и тестировать.
2. При чтении параметров, используя битовую маску, вы настраиваете параметры как указал 1exan на скриншотах (в таком варианте идет 1 запрос на чтение всего регистра, а потом он раскладывается на нужные биты внутри сервиса). При этом их можно и записывать, но формально будет писаться весь регистр (функция 16). Это работает так: при записи такого параметра сначала идет запрос на чтение (получаем целочисленное число), чтобы выяснить значение битов в этом регистре. Потом сервис исходя из того какие биты вы хотите записать и какие биты должны остаться неизменными получает новое целочисленное число, которое и пишется функцией 16 в ПР200.
Подал -33000 на ваш блок с ограничением, получил +32768, так какой в нём смысл то? Вложение 77172
Как сказал Валенок, можно везде использовать функцию DINT, просто использовать 1 или 2 регистра для передачи. А ограничивать вход всё равно надо для INT.
Алексей Фомин О! Большое спасибо!!
Я тогда буду на биты переходить, так как они у меня будут командами на ПРку, и команда будет подаваться только одна в один интервал времени.
То есть схема "Чтение регистра - маскирование - запись регистра" мне подходит!
1exan, kondor3000. Шо-то вы меня с FLOAT_TO_DINT запутали. Почему DINT? Это ж два регистра будет, или нет? А я хотел в один запихать.
DINT по определению 2 регистра безнаковое целое. Но в понятиях ПР тут может быть все, что угодно :) потому что понятия short и ushort тут нет в принципе.
Ну как правильно - при выходе float из диапазона значений int, сетевая переменная будет иметь значение например 32536, что на мой взгляд, несколько запутывает получателя значения:
Вложение 77175
Вот так это работает, сетевая переменная INT- это 1 регистр, лоджик сам раскладывает на 2 WORD и передаёт только младший регистр из двух. Вложение 77177
И перестаньте пихать в INT числа больше его пределов 32 767 (-32768).
Добрый день.
Планируется ли для шлюзов ПМ обеспечить чтение входящих СМС сообщений?
Вклинюсь) Каким образом это должно выглядеть на ваш взгляд? Где смотреть эти входящие SMS? В облаке?
Т.е. это нужно просто чтобы посмотреть код, который присылается при аутентификации в ЛК оператора связи?
То же интересно. На примере модема с rndis драйвером, есть web морда, из которой можно отправить SMS и просмотреть поступившие. То есть не надо вытаскивать симку и вставлять в телефон. Предположительно тогда да, надо в облаке иметь служебный ка_нал который как минимум будет показывать последнее SMS или вообще иметь возможность их запрашивать с устройства.
Функционал, позволяющий посмотреть отправленные SMS , не планировали.
В планах добавить возможность просмотра в OwenCloud типа сети, в которой работает шлюз ПМ (2G, 4G), уровня сигнала сети, баланса сим-карты, текущей прошивки шлюза.
Просмотр и удаление sms полезная вещь. Помнится были темы, как у народа зависали и тратили деньги шлагбаумы, так как управление было на модемах специализированных, а им втихую всякие подписки подключали. SMS входящие переполняли буфер, новые принять не могли. И тому подобное.
Прошу добавить в единицы измерений миллилитры.
И, мне кажется, было бы удобнее, если по умолчанию единицей измерения стал "none".
Добрый день
Уведомления через мессенджер Telegram - это платная услуга ?
Бесплатная
Подключил ПР200 к облаку через ПМ210. На странице в облаке подключение не активно. Все моргания на шлюзе заканчиваются: Горят светодиоды 1-4 (уровень сигнала) и красный треугольник. Подключался к ПР200 прямо через Owen OPC cerver. Работает отлично. Раньше подключал без проблем неоднократно. Сейчас даже инструкцию скачал и прочитал. Не помогает. Заменил шлюз на ПЕ210. В настройках только поменял заводской номер одного на второй. Все сразу заработало через комп. сеть. Нашел причину неработоспособности. В графе "идентификатор" был записан IMEI. Поменял на заводской номер и все заработало через GSM (ПМ210). Хотя он был записан еще и в графе "заводской номер". Т.е. заводской номер должен быть записан дважды.