PDA

Просмотр полной версии : Экспресс вопрос (ответ)



Страницы : 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

rovki
28.08.2016, 10:11
Вот вам 2 варианта
для 1-ставите энергонезависимость в переменных
для 2-ставьте энергонезависимость в свойствах счетчика

серник
28.08.2016, 10:27
Большое спасибо!

Василий Кашуба
28.08.2016, 12:49
А это вам третий вариант, энергонезависимость в свойствах переменной.26049

rovki
28.08.2016, 12:53
Большое спасибо!
3 вариант .....

Сергей0308
28.08.2016, 22:12
Сложновато, однако, вот мой вариант SR-триггера:

26052

rovki
28.08.2016, 23:08
Цели не было упрощать -цель была показать ход мыслей ,направление :rolleyes:...вот еще вариант

Сергей0308
29.08.2016, 23:46
Цели не было упрощать -цель была показать ход мыслей ,направление :rolleyes:...вот еще вариант

Для большинства случаев пройдёт, но всё же по логике работы это не RS-триггер!

rovki
30.08.2016, 06:52
Раз запоминает два состояния -значит триггер(память) !И не важно на чем он сделал .

AI!
30.08.2016, 08:43
Сложновато, однако, вот мой вариант SR-триггера:
26052до 32х SR-RS в одну mem:
(почему в эмуляторе странно [не]работает предустановка?)

rovki
30.08.2016, 10:03
Потому что энергонезавизимость не моделируется .

rovki
30.08.2016, 10:10
вот еще вариант ,всего 2 элемента :D

AI!
30.08.2016, 10:22
вот еще вариант ,всего 2 элемента :Dа to-bool и to-int не считаются?
ИМХО они посложнее будут всех остальных булевых и целочисленных...

Сергей0308
30.08.2016, 11:43
Для сторонников универсальности, наверно оптимально JK-триггер с галочкой энергонезависимости в свойствах! И лепи, что хочешь!

26079

Artemid
30.08.2016, 21:13
Доброго времени суток! Подскажите пожалуйста: возможно ли подружить ПР200 с инкрементальным энкодером? Или посоветуете что то еще, нужен дисплей, ввод значения, и немного логики.

игорь68
30.08.2016, 21:15
Пр-ки дружат с энкодером. Вопрос в скорости. смотри в поиске. где-то есть макрос.

Ревака Юрий
31.08.2016, 11:21
Добрый день!
Посмотрите в этой теме http://www.owen.ru/forum/showthread.php?t=21138

Grampus
31.08.2016, 11:30
Добрый день господа! ответьте пожалуйста как сделать сравнение переменной с константой в овен логик!? с помощью ФБ EQ ничего не получилось, точнее первая переменная не изменяется.

У ПР110 есть аналоговые входы?

Павел Братковский
31.08.2016, 11:53
У ПР110 есть аналоговые входы?

аналоговые входы есть у пр114 и пр200


ответьте пожалуйста как сделать сравнение переменной с константой в овен логик!? с помощью ФБ EQ ничего не получилось, точнее первая переменная не изменяется.

на один из входов подать константу, на другой переменную, когда значения будут равны, на выходе появится 1....

Grampus
31.08.2016, 12:02
аналоговые входы есть у пр114 и пр200



на один из входов подать константу, на другой переменную, когда значения будут равны, на выходе появится 1....

А в жизни , в реале это как реализовывается. измерять нужно давление, при достижении значения 25МПа - разомкнуть контакты.
напрямую с датчика на вход ПР и уже там преобразование идет или вне ПР? и как осуществляется торировка или калибровка датчика к ПР?

maximov2009
31.08.2016, 12:33
Добрый день. Всё зависит от типа выбранного Вами (или имеющегося) датчика. Если он имеет аналоговый выход, например 4-20ма, то на вход ПР подаёте сигнал с датчика. Устанавливаете параметры входа, например если Ваш датчик выдаёт при 0МПа - 4 ма а при 50МПа 20ма, то и в свойствах входа можете указать нижнюю границу 0 а верхнюю 50. Вещественное число внутри программы со входа подаёте на блок сравнения. В Вашем случае на мой взгляд лучше использовать блок GT. На верхний вход блока подаёте сигнал со входа на нижний прилепляете константу. Тогда при превышении константы, на выходе блока появится 1. Следите за типом переменных. Можете либо перед блоком GT поставить блок преобразования из вещественного в целочисленный или использовать блок FGT. Тип константы также выбирайте соответствующий.
А если датчик имеет настраиваемый дискретный выход, то можете взять с него сигнал на дискретный вход. Тогда может Вам и ПР не нужно.
С уважением.

xroi
02.09.2016, 00:12
Буэнос ночес.
Не могу понять, почему не отображается результат на экране.
В симуляторе все работает и значения есть.
На ПР200 только частично.
Поясню - есть 3 формулы в зависимости от выбора пользователя. Для одной показывает экран ПР200, для других нет). И еще странно, на входе смотрим значение - меняется для 3х случаев..
В симуляторе все ок
Какого цвета бубен и размера нужно достать?

Павел Братковский
02.09.2016, 05:16
Какого цвета бубен и размера нужно достать?

бубен по ходу нужен отвечающим, проект если показать, то может быть чем и поможем.....

Ревака Юрий
02.09.2016, 09:11
Буэнос ночес.
Не могу понять, почему не отображается результат на экране.
В симуляторе все работает и значения есть.
На ПР200 только частично.
Поясню - есть 3 формулы в зависимости от выбора пользователя. Для одной показывает экран ПР200, для других нет). И еще странно, на входе смотрим значение - меняется для 3х случаев..
В симуляторе все ок
Какого цвета бубен и размера нужно достать?

Добрый день! Прикрепите проект, а то ничего не понятно, ответ я думаю не заставит себя ждать.

игорь68
02.09.2016, 09:18
Ревака Юрий подскажите как с помощью кнопок "<", ">" и кнопки "SEL" сделать управление выходами реле. Нужен пример хотя бы на одно реле. В остальном сам.

Ревака Юрий
02.09.2016, 10:36
Ревака Юрий подскажите как с помощью кнопок "<", ">" и кнопки "SEL" сделать управление выходами реле. Нужен пример хотя бы на одно реле. В остальном сам.

Во вложении файл, с экрана можно управлять 8 реле, ПО для ПР200-X-2.X

Grampus
02.09.2016, 12:55
Добрый день а как можно переключать по ходу программы макросы с учетом что у них одни и те же входы и выходы. Т.е. макросы почти идентичные меняется только один или два параметра. входы те же . выходы те же. выполнятся должны друг за другом. помогите пожалуйста советом. никак не могу сообразить ...

Василий Кашуба
02.09.2016, 13:19
Добрый день а как можно переключать по ходу программы макросы с учетом что у них одни и те же входы и выходы. Т.е. макросы почти идентичные меняется только один или два параметра. входы те же . выходы те же. выполнятся должны друг за другом. помогите пожалуйста советом. никак не могу сообразить ...
Если макросы одни и те же, а уставки разные, то используйте один макрос и меняйте оперативно уставки.

nikolos
02.09.2016, 18:27
Добрый день .
Дайте ссылку на пример управления аналоговым выходом в зависимости от сигнала на аналоговом (как пример поодержание заданного давления).
Реле ПР114.

nikolos
02.09.2016, 19:59
Уже нашел пид регулятор.

Grampus
05.09.2016, 06:04
Если макросы одни и те же, а уставки разные, то используйте один макрос и меняйте оперативно уставки.

А как это сделать подскажите пожалуйста!

Сергей0308
05.09.2016, 06:33
А как это сделать подскажите пожалуйста!

Способов много, например с помощью SEL, FSEL:

26166

Как пример, светофор:

игорь68
05.09.2016, 19:58
Во вложении файл, с экрана можно управлять 8 реле, ПО для ПР200-X-2.X

Спасибо за файлик. Но если честно так и не разобрался как и где вы там что писали. Понял одно кнопки вы прописывали где то в экране. Повторить хотя бы с одним реле не смог. Почему не сделать в лоджике ФБ клавиш как у других производителе. На сколько мне известно у 2х производителей(железо как и у ПР200 ) такие ФБ есть. Будем ковырять дальше. Или ждать инструкцию по лоджику.

rovki
05.09.2016, 20:13
В индикаторе кнопки нельзя использовать по своему усмотрению ,в том смысле что они предназначены для работы со знакоместами (переходы ,изменения ,ввод значений, листание, итд). Нет возможности нажать, например на стрелку вверх и что то сделать в проекте по этому событию ...Можно работать только через переменные ,меняя их штатным образом на индикаторе кнопками .

игорь68
06.09.2016, 08:07
И какой инструмент мне использовать. Комбобокс или динамический теккст.

Pavel_
06.09.2016, 08:57
И какой инструмент мне использовать. Комбобокс или динамический теккст.
http://www.owen.ru/forum/showthread.php?t=9398&page=226&p=200196&viewfull=1#post200196

Ревака Юрий
06.09.2016, 09:01
И какой инструмент мне использовать. Комбобокс или динамический теккст.

Для управления реле проще использовать на экране Ввод/вывод Boolean, и тогда этой переменной которую вы назначите в элементе можно сразу управлять реле, именно так и сделано в моем примере, а кнопки непосредственно управлять реле не могут, только экранами.

rovki
06.09.2016, 10:07
И какой инструмент мне использовать. .
Каскаду ;)

Grog
06.09.2016, 15:33
Подскажите, кто может!!! В чем заключается проблема, разобраться не могу . Все делается на основе ПР200.
Суть проблемы: На экране не отображается нормальное значение аналогово входа. К входу будет подключён датчик с выходом 0-10В. В данный момент я пока экспериментирую на столе. В OWEN Logic данный вход я настроил как аналоговый 0-10В с пределами 0-100 (на рисунке1 видно). От не гоже вывел переменную «тек_темп» которую прикрутил к блоку на экране (рис2). Залил все это п ПР200. Подаю на вход AI1 напряжение, а на экране получаю полную ахинею, при подаче 1В на экране показывается значение 41,2.
2618826189

Ревака Юрий
06.09.2016, 16:07
Подскажите, кто может!!! В чем заключается проблема, разобраться не могу . Все делается на основе ПР200.
Суть проблемы: На экране не отображается нормальное значение аналогово входа. К входу будет подключён датчик с выходом 0-10В. В данный момент я пока экспериментирую на столе. В OWEN Logic данный вход я настроил как аналоговый 0-10В с пределами 0-100 (на рисунке1 видно). От не гоже вывел переменную «тек_темп» которую прикрутил к блоку на экране (рис2). Залил все это п ПР200. Подаю на вход AI1 напряжение, а на экране получаю полную ахинею, при подаче 1В на экране показывается значение 41,2.
2618826189

Добрый день! А джамперы на ПР200 у Вас установлены на режим 0-10В?

Grog
06.09.2016, 16:28
Добрый день! А джамперы на ПР200 у Вас установлены на режим 0-10В?
Джамперов я если честно не нашел (снаружи), а внутрь пока не лазил. Новенький пока.

Ревака Юрий
06.09.2016, 16:38
Джамперов я если честно не нашел (снаружи), а внутрь пока не лазил. Новенький пока.

Надо снять крышку и выставить джампер того канала который используется на соответствующий режим, положение джамперов для каждого режима есть в руководстве и на самой плате ПР200.

Grog
06.09.2016, 16:59
Надо снять крышку и выставить джампер того канала который используется на соответствующий режим, положение джамперов для каждого режима есть в руководстве и на самой плате ПР200.
Спасибо огромное Юрий!!!
Все нашел :) и даже заработало!!! В руководстве я читал про джамперы, но посмотрел снаружи и не удивив их подумал что может от них отказались и оставили только программное переключение. Так только у нас могут сделать - что если надо что-то переключить то необходимо все разобрать, а вот вынести это на панель - не судьба.

игорь68
06.09.2016, 18:49
Вынеси на панель джамперы и тут же найдется умник переключит положение. Так что это как защита

Grog
07.09.2016, 15:27
Вынеси на панель джамперы и тут же найдется умник переключит положение. Так что это как защита
Добрый день! В таком случае можно и проводки перекрутить.

игорь68
12.09.2016, 23:31
В целях оптимизации схем шкафов автоматики возникла необходимость разработать макрос управления кнопками ПУСК/СТОП в режиме РУЧНОЙ/АВТО.
То есть на весь шкаф автоматики ставим только один переключатель РУЧНОЕ/АВТО. А кнопок ПУСК/СТОП может быть несколько. Сделал простой макрос но что то не очень хорошо работает. Входа макроса :S1-"0" ручное ; "1"авто.
S2- ручное стоп; S3-ручное пуск; S4-авто стоп; S5- авто пуск. Макрос работает в режиме" Авто". В "Ручном" не хочет. И еще а режиме " АВТО" если подать "1" вход S3 или S2 происходит сбой работы . Подскажите в какую сторону смотреть. Если етсь еще варианты подскажите.

petera
13.09.2016, 04:24
В целях оптимизации схем шкафов автоматики возникла необходимость разработать макрос управления кнопками ПУСК/СТОП в режиме РУЧНОЙ/АВТО.
То есть на весь шкаф автоматики ставим только один переключатель РУЧНОЕ/АВТО. А кнопок ПУСК/СТОП может быть несколько. Сделал простой макрос но что то не очень хорошо работает. Входа макроса :S1-"0" ручное ; "1"авто.
S2- ручное стоп; S3-ручное пуск; S4-авто стоп; S5- авто пуск. Макрос работает в режиме" Авто". В "Ручном" не хочет. И еще а режиме " АВТО" если подать "1" вход S3 или S2 происходит сбой работы . Подскажите в какую сторону смотреть. Если етсь еще варианты подскажите.

Что же Вы, батенька, сумматоров (XOR) сюда навставляли. Вот они Вам честно и складывают Пуски и Стопы
26362
Условия задачи четко задают использовать "И"
В режиме АВТО
1. Условие пуск - если S1(Авто)=1 И S5(Автопуск)=1
2. Условие стоп - если S1(Авто)=1 И S4(Автостоп)=1

В режиме РУЧНОЙ
3. Условие пуск - если S1(ручное)=0 И S5(ручное пуск)=1
4. Условие стоп - если S1(ручное)=0 И S4(ручное стоп)=1

Соответственно ВЫХОД
ВКЛЮЧЕН - если условие 1 ИЛИ условие 2
ВЫКЛЮЧЕН - если условие 3 ИЛИ условие 4
26363

игорь68
13.09.2016, 06:46
PETERA спасибо. Вечером отпишусь. Вы хорошо прописали условие . Сразу понятно где моя ошибка.

sea
13.09.2016, 22:00
СП270 опрашивает ПР114.
"Передать блок данных" 14 регистров (с 768 по 781 в ПР) - связи нет.
"Передать блок данных" 13 регистров (с 768 по 780 в ПР) - все ОК.
"Копировать регистр" (768) и "Копировать регистр" (781) - данные передаются.
"Копировать регистр" (768), "Копировать регистр" (775) и "Копировать регистр" (781) - связи нет.
В чем может быть заморочка? Ограничение количества считываемых регистров у ПР114 для одного запроса?

rovki
14.09.2016, 05:52
Да ,не более 12 ,если не ошибаюсь .

petera
14.09.2016, 07:22
СП270 опрашивает ПР114.
"Передать блок данных" 14 регистров (с 768 по 781 в ПР) - связи нет.
"Передать блок данных" 13 регистров (с 768 по 780 в ПР) - все ОК.
"Копировать регистр" (768) и "Копировать регистр" (781) - данные передаются.
"Копировать регистр" (768), "Копировать регистр" (775) и "Копировать регистр" (781) - связи нет.
В чем может быть заморочка? Ограничение количества считываемых регистров у ПР114 для одного запроса?

Тут нужно учитывать особенности панели.
Потому что для

"Копировать регистр" (768), "Копировать регистр" (775) и "Копировать регистр" (781).
На самом деле панель читает не 3 регистра, а целую группу регистров с 768 по 781 http://www.owen.ru/forum/showthread.php?t=14132&p=139313&viewfull=1#post139313

Чтение будет осуществляться группой если адреса регистров отличаются не более чем на 5, например
- для двух дисплеев с регистрами Wrd 4х00 и 4х5 будет одна команда чтения шести регистров 0,1,2,3,4,5. А для двух дисплеев с регистрами Wrd 4х00 и 4х6 будут две отдельные команды чтения по одному регистру.
- для двух дисплеев с регистрами DWrd 4х00 и 4х6 будет одна команда чтения восьми регистров 0,1,2,3,4,5,6,7. А для двух дисплеев с регистрами DWrd 4х00 и 4х8 будут две отдельные команды чтения по два регистра.
Соответственно к вышеописанной цепочки из двух регистров могут добавляться последующие регистры, если их адрес отличаются не более чем на 5 от предыдущего. Например
- для трех дисплеев с регистрами Wrd 4х00, 4х5 и 4х8 будет одна команда чтения девяти регистров 0,1,2,3,4,5,6,7,8.
и т.д.
Но максимальное число регистров в групповой команде чтения не может превышать 16.
Т.е. если есть функция прочитать блок данных из ПЛК, например, 50 регистров, то будет сформировано четыре команды чтения (три по 16 регистров и одна 2 регистра).

Но если действительно нужно только 3 регистра, то панель можно обмануть используя в адресах регистров механизм переадресации http://www.owen.ru/forum/showthread.php?t=17497&p=139257&viewfull=1#post139257

sea
14.09.2016, 08:10
Да ,не более 12 ,если не ошибаюсь .
Спасибо!
Все-таки ограничения ПР. Это где-нибудь задокументировано?

sea
14.09.2016, 08:18
Тут нужно учитывать особенности панели.
На самом деле панель читает не 3 регистра, а целую группу регистров с 768 по 781 http://www.owen.ru/forum/showthread.php?t=14132&p=139313&viewfull=1#post139313

Но если действительно нужно только 3 регистра, то панель можно обмануть используя в адресах регистров механизм переадресации http://www.owen.ru/forum/showthread.php?t=17497&p=139257&viewfull=1#post139257

С тремя регистрами - это был эксперимент. Нужно 14 считывать.
Спасибо! Попробую предложенный способ с переадресацией или уменьшу кол-во сетевых переменных.

sea
14.09.2016, 08:19
Да ,не более 12 ,если не ошибаюсь .

Для ПР200 такие ограничения тоже есть?

rovki
14.09.2016, 15:40
Ну да ....модбас то один

Ревака Юрий
14.09.2016, 16:40
Для ПР200 такие ограничения тоже есть?

Мне сейчас удалось прочитать 13 регистров, больше ошибка.

Ревака Юрий
14.09.2016, 16:41
Ну да ....модбас то один

Ну это же не модбас ограничивает.

rovki
14.09.2016, 17:55
Ну это же не модбас ограничивает.
Нет конечно ,его реализация в ПР ввиду определенных ограничений .А раз реализация его в пр200 сделана на основе кода ПР114 ,то результат будет один ,имхо.

Сергей0308
14.09.2016, 17:57
Ну это же не модбас ограничивает.

Если не ошибаюсь, товарищ Сталин говорил, что у каждой ошибки есть фамилия, имя и отчество!

xroi
15.09.2016, 02:02
Подскажите, функция округления до целого числа в Овен-лоджик имеется?
И кто-либо похожее реализовывал?

petera
15.09.2016, 04:53
Подскажите, функция округления до целого числа в Овен-лоджик имеется?
И кто-либо похожее реализовывал?

Например так
26395
Будет работать только для положительных чисел

Pavel_
15.09.2016, 12:17
Мне сейчас удалось прочитать 13 регистров, больше ошибка.
а записать сколько можно?

Владимир Ситников
15.09.2016, 12:33
Например так
26395
Будет работать только для положительных чисел

А просто TO_INT(fADD(x;0.5)) разве не достаточно?
Зачем нужно fSUB и fGT?

petera
15.09.2016, 12:37
А просто TO_INT(fADD(x;0.5)) разве не достаточно?
Зачем нужно fSUB и fGT?
Вы правы, достаточно.

игорь68
15.09.2016, 13:25
Можно ли настроить Лоджик что бы те макросы что есть на диске компьютера были сразу доступны при открытии нового проекта.

Серёга Букашкин
15.09.2016, 13:27
Вы правы, достаточно.
Лучше защищаться от отрицательных, как на этом примере

Сергей0308
17.09.2016, 00:59
Лучше защищаться от отрицательных, как на этом примере

Но они же существуют! Без претензий на совершенство:

26427

Если кто захочет в INTе, выкладывал макросы конвертации в специальных макросах: http://www.owen.ru/forum/showthread.php?t=13106&page=3

AI!
17.09.2016, 07:15
Без претензий на совершенство:ну и вариант от меня, до кучи

PS пример того, что деление на 0/0 в ПР делается правильно! и ничего менять не надо!

Евстигнеев Максим
17.09.2016, 11:03
Можно ли настроить Лоджик что бы те макросы что есть на диске компьютера были сразу доступны при открытии нового проекта.

Сейчас нет.
Но у нас в планах - повышение функциональности менеджера макросов. В том числе и работа с оффлайн базой на диске.

Сергей0308
17.09.2016, 21:58
ну и вариант от меня, до кучи

PS пример того, что деление на 0/0 в ПР делается правильно! и ничего менять не надо!

Наверно наука в руках овен не стоит на месте, но мне всё дорогу говорили, что делить на ноль нельзя!

rovki
17.09.2016, 22:28
Наверно наука в руках овен не стоит на месте, но мне всё дорогу говорили, что делить на ноль нельзя!
Ну почему же -будет бесконечность .Если ноль поделить или умножить на любое число или бесконечность должно быть ноль ,имхо ...:rolleyes:

Сергей0308
17.09.2016, 22:39
Ну почему же -будет бесконечность .Если ноль поделить или умножить на любое число или бесконечность должно быть ноль ,имхо ...:rolleyes:

Бесконечность больше радует в денежном выражении!

rovki
17.09.2016, 22:46
Бесконечность больше радует в денежном выражении!
Кому что ,а мне Пушкин нравится ...

xroi
20.09.2016, 09:42
Подскажите, работаю с математикой и вот с чем столкнулся:
Функция TO_INT откидывает чуток числа)

26460

26461

Так вот я правильно понимаю, что если число больше 4294967295 (32 разр.), то лишнее откидывается?
И как быть? Хранить в памяти 4294967295, когда вычисляемое выходит за 32 разряда?

Ревака Юрий
20.09.2016, 09:51
Подскажите, работаю с математикой и вот с чем столкнулся:
Функция TO_INT откидывает чуток числа)

26460

26461

Так вот я правильно понимаю, что если число больше 4294967295 (32 разр.), то лишнее откидывается?
И как быть? Хранить в памяти 4294967295, когда вычисляемое выходит за 32 разряда?

В данном случае у Вас числа меньше 2^32, то что выводится перед умножением на 100, скорее всего не равно в точности 5,1E-7, попробуйте вывести на экран эти значения, если у Вас ПР200 и сравните в действительности числа. В режиме симуляции там идет округление и не всегда эти числа равны расчетным.

Grog
20.09.2016, 10:55
Здравствуйте!
Может, кто сталкивался с такой проблемой и нашёл пути её решения:
Имеются три тэна которые управляются ПИД регулятором, на который информация поступает от датчика температуры. В зависимости от мощности выдаваемой ПИДом, работают один, два или три тэна. Последний тэн работает только в момент первоначального прогрева, а первые два тэна уже на поддержание заданной температуры. Вот и проблема от сюда вытекает: как уравновесить продолжительности работы каждого тэна отталкиваясь от фактической наработки, а не от календарного времени.

melky
20.09.2016, 11:17
Посмотрите среди макросов были для управления насосами с равномерным временем включения. Его можно применить в данном случае.
Кажется AI делал для 8-ми насосов.

Не нашел в списке макросов, может плохо искал, поэтому прикладываю.
В вашем случае 3 тена, на входе ОК - битовая маска разрешенных устройств, в вашем случае 7 подойдет (всего три тена)
На входе Nm - количество в работе - в вашем случае 2
По фронту происходит переключение, правда если есть некоторая разница в выработке, то есть клацать и видеть результат сразу не получится.

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

Grog
20.09.2016, 11:46
Почему - то не могу найти :(. Нашел вот такой вариант:http://www.owen.ru/forum/attachment.php?attachmentid=12937&d=1400172860 но он не хочет вставать в ПР200 так как заточен под ПР114 и говорит что не поддерживается:(
Хотя к моей задаче скорее всего подходит лучше. (для моего понимания проще).

Ревака Юрий
20.09.2016, 12:08
Почему - то не могу найти :(. Нашел вот такой вариант:http://www.owen.ru/forum/attachment.php?attachmentid=12937&d=1400172860 но он не хочет вставать в ПР200 так как заточен под ПР114 и говорит что не поддерживается:(
Хотя к моей задаче скорее всего подходит лучше. (для моего понимания проще).

Добрый день! Т.к. проект написан для другого реле, залить его в ПР200 не получится, можно создать проект для ПР200 и перенести логику.

melky
20.09.2016, 12:33
Если не поддерживается, то придется копировать из листа в лист из старой программы в новую наверное.
з.ы. я приложил макрос, про который говорил.

Grog
20.09.2016, 12:44
Так я и попробовал, открыл свой проект, открыл этот, нажал копировать на макрос, а потом вставить уже в свой проект и мне программа сказала "Компонент RPTU не поддерживается в данном проекте".

xroi
20.09.2016, 12:45
В данном случае у Вас числа меньше 2^32, то что выводится перед умножением на 100, скорее всего не равно в точности 5,1E-7, попробуйте вывести на экран эти значения, если у Вас ПР200 и сравните в действительности числа. В режиме симуляции там идет округление и не всегда эти числа равны расчетным.

Юрий, спасибо за совет.
Так и есть, в симуляции идет нехилое округление, это я знаю.
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..

Ревака Юрий
20.09.2016, 12:47
Так я и попробовал, открыл свой проект, открыл этот, нажал копировать на макрос, а потом вставить уже в свой проект и мне программа сказала "Компонент RPTU не поддерживается в данном проекте".

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

Ревака Юрий
20.09.2016, 12:50
Юрий, спасибо за совет.
Так и есть, в симуляции идет нехилое округление, это я знаю.
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..

Это надо у разработчиков уточнить, а если вывести эти числа на экран реле, что там происходит, главное чтоб в реале все было правильно.

Grog
20.09.2016, 13:05
Попробуйте сохранить макрос в виде файла с расширением tpl, затем добавить его в новом проекте, и так со всеми макросами которые встречаются в проекте.
Почему то нет возможности выбора пункта "экспорт макроса в файл". Иначе бы уже запихнул бы его в проект.

melky
20.09.2016, 13:11
Grog откройте макрос на редактирование, зайдите в него и появится экспорт

Grog
20.09.2016, 13:33
Grog откройте макрос на редактирование, зайдите в него и появится экспорт

Еслиб пароль знал, то открыл бы :(

Ревака Юрий
20.09.2016, 13:43
Юрий, спасибо за совет.
Так и есть, в симуляции идет нехилое округление, это я знаю.
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..

Пообщавшись с разработчиками выяснилось, что данный эффект проявляется из-за переполнения, я изначально поторопился с выводами что с числами все нормально, я сравнил Ваше 5.1E9 с 2^32, оно оказалось меньше и я успокоился, но это работает для целых чисел, для float же размерность меньше, из-за отведения разрядов под знак и мантиссу. Вот поэтому и появилась такая "магия".

Ревака Юрий
20.09.2016, 13:47
Еслиб пароль знал, то открыл бы :(

Вы сейчас о каком файле говорите, специально открыл оба о которых шла речь, в одном архиве макрос в другом проекте вроде нет закрытых макросов?

Grog
20.09.2016, 13:52
Вы сейчас о каком файле говорите, специально открыл оба о которых шла речь, в одном архиве макрос в другом проекте вроде нет закрытых макросов?
В том котором макрос RPTU. И который собственно нужен.

Ревака Юрий
20.09.2016, 13:59
В том котором макрос RPTU. И который собственно нужен.

Где о нем упоминание, не могу найти ссылку чтоб посмотреть?

Grog
20.09.2016, 14:03
Где о нем упоминание, не могу найти ссылку чтоб посмотреть?

Макрос ротации оборудования число до трех по времени наработки
http://www.owen.ru/forum/attachment.php?attachmentid=12936&d=1400171574 (это конкретно ссылка на файл)
http://www.owen.ru/forum/showthread.php?t=17372&highlight=%EC%E0%EA%F0%EE%F1%2C+%ED%E0%F1%EE%F1 (это страница с которой он взят)

Ревака Юрий
20.09.2016, 14:11
Макрос ротации оборудования число до трех по времени наработки
http://www.owen.ru/forum/attachment.php?attachmentid=12936&d=1400171574 (это конкретно ссылка на файл)
http://www.owen.ru/forum/showthread.php?t=17372&highlight=%EC%E0%EA%F0%EE%F1%2C+%ED%E0%F1%EE%F1 (это страница с которой он взят)

Перебросил макрос в проект для ПР200 пробуйте, ну а на счет пароля, попробуйте к разработчику обратиться.

Grog
20.09.2016, 14:27
Перебросил макрос в проект для ПР200 пробуйте, ну а на счет пароля, попробуйте к разработчику обратиться.
А как Вы его перебросили? Возможно ли такое же сделать в уже существующий проект? Если нет то тогда придется мой существующий придется переписывать заново :( .

Ревака Юрий
20.09.2016, 14:30
А как Вы его перебросили? Возможно ли такое же сделать в уже существующий проект? Если нет то тогда придется мой существующий придется переписывать заново :( .

Запаковал в новый макрос:D, сейчас приложу сам макрос, загрузите его в свой проект.

В файле расширение txt нужно поменять на tpl.

Grog
20.09.2016, 15:56
Запаковал в новый макрос:D, сейчас приложу сам макрос, загрузите его в свой проект.

В файле расширение txt нужно поменять на tpl.

Спасибо! Внедрил в свой проект, потестил и оказалось это не совсем то что мне надо :"(:"(:"(.
Надо что-то еще искать.

melky
20.09.2016, 16:04
Ну а вы пробовали макрос Ротация8 ?
Там то всего на выходе поставить EXTRACT bit и OR на их выходах для включения 3-его тэна с проверкой по температуре или с таймером для быстрого прогрева.

Вот даже что получилось. I2 - принудительная смена ротации, если необходима, можно не использовать
I3 - включение всех 3-х тэнов для прогрева
I4 - Вкл/выключение нагрева

xroi
20.09.2016, 17:17
Пообщавшись с разработчиками выяснилось, что данный эффект проявляется из-за переполнения, я изначально поторопился с выводами что с числами все нормально, я сравнил Ваше 5.1E9 с 2^32, оно оказалось меньше и я успокоился, но это работает для целых чисел, для float же размерность меньше, из-за отведения разрядов под знак и мантиссу. Вот поэтому и появилась такая "магия".

Ладно, Юрий , спасибо.
Тогда с учетом плавающей точки и знака сколько будет в моем распоряжении разрядов?

AI!
20.09.2016, 20:47
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..всё очень просто: 2,5+10 and 0xFFFFFFFF ~ 3,5+9

xroi
21.09.2016, 09:09
Мне бы поточнее)
Как в справке.
Типа 32 разряда (4294967295) в вашем распоряжении.

xroi
21.09.2016, 09:19
Друзья, поигравшись с калькулятором и блоком TO_INT пришел к выводу, что в свободном доступе 31 разряд.
Т.е. при вводе в блок число более 268435455 оно становится 268435456 и все, далее никак.
26482
Поэтому всем кто использует функцию округления нужно будет предусмотреть защиту.

Юрий, не подтвердите мои доводы?

AI!
21.09.2016, 09:39
Юрий, не подтвердите мои доводы?я не Юрий, но кое-что понимаю.....

1) выход TO-INT ограничен всё же 32 битами, в подтверждение попробуйте перевести из INT в FLOAT и обратно 4294967040
а потом сделайте к нему fADD 768, и посмотрите....

2) вещественное число - это мантисса и экспонента, в сумме они занимают 32 бита, из них 24 бита мантисса и 8 бит экспонента
тот пример который вы привели

и все, далее никак
это вы упёрлис в округление младших бит...

melky
21.09.2016, 09:39
что-то не пахнет там 32-мя разрядами, если смотреть на калькулятор

RA.
21.09.2016, 09:41
Друзья, поигравшись с калькулятором и блоком TO_INT пришел к выводу, что в свободном доступе 31 разряд.
Т.е. при вводе в блок число более 268435455 оно становится 268435456 и все, далее никак.
26482
Поэтому всем кто использует функцию округления нужно будет предусмотреть защиту.

Юрий, не подтвердите мои доводы?

что-то совсем запутал )) 268435455 - это 27 выставленных битов.
т.е. при подаче на вход (float - да?) 268435456(7,8 и больше) на выходе to_int видим всегда 268435456 ?

PS: а почему собственно блок называется INT (int - 2байта -32767 ... +32767), ведь по факту это же DINT ?

xroi
21.09.2016, 09:49
RA, да все так. И да, получается DINT.

AI!, это я обращался к техподдержке Юрию (разработчикам).

Вы лучше подскажите, как мне FLOAT перевести в целочисленное без потери.
Нужно округление для больших чисел.

melky
21.09.2016, 09:53
целая часть для float ограничена 28 битами похоже.

Интересно узнать, а зачем вам такие большие флоаты с переводом в INT ?

RA.
21.09.2016, 09:55
RA, да все так. И да, получается DINT.

AI!, это я обращался к техподдержке Юрию (разработчикам).

Вы лучше подскажите, как мне FLOAT перевести в целочисленное без потери.
Нужно округление для больших чисел.

float - он такой, если по простому - у него %-ая точность,

т.е. например : float различает 0,0000001 и 0,0000002, но при этом же 99 999 999 и 100 000 000 и 100 000 001 - в формате float будут 99 999 999, а следующим значением уже будет 100 000 032 и тд.

цифири и их порядки абстрактные - суть только старался передать

Grog
21.09.2016, 10:18
По ротации тэнов.
У меня сложилось такое впечатление, что меня не поняли, поэтому прикладываю скрин проекта. В нем вроде все понятно, но я постараюсь его описать.
На вход AI4 приходит значение с датчика температуры. ПИД уже выдаёт значение необходимой мощности, которое блоками гистерезиса разбивается на три группы, которые собственно и управляют работой тэнов (Q6, Q7, Q8). И мне собственно надо чтобы в процессе работы (зависит от наработки) эти тэны сменяли друг друга, тем самым обеспечивая равномерный износ.
26483

Ревака Юрий
21.09.2016, 10:32
Друзья, поигравшись с калькулятором и блоком TO_INT пришел к выводу, что в свободном доступе 31 разряд.
Т.е. при вводе в блок число более 268435455 оно становится 268435456 и все, далее никак.
26482
Поэтому всем кто использует функцию округления нужно будет предусмотреть защиту.

Юрий, не подтвердите мои доводы?

Вы затронули интересный вопрос, я надеюсь в будущем это отразится в программе OL, возможно в симуляторе будет выведено окно предупреждения когда результат выходит за допустимые пределы. Говорить о максимальном числе не совсем уместно, т.к в реальном проекте сложно будет просчитать результат умножения. Но для себя я провел следующий эксперимент, вывел на экран ПР200 два числа одно float с максимальным кол-вом разрядов которое допустимо в менеджере экранов, второе int, задал максимально возможное число float 9999999, оно корректно преобразовалось. Для полноты картины порекомендую сайт http://www.h-schmidt.net/FloatConverter/IEEE754.html.

Ревака Юрий
21.09.2016, 10:39
По ротации тэнов.
У меня сложилось такое впечатление, что меня не поняли, поэтому прикладываю скрин проекта. В нем вроде все понятно, но я постараюсь его описать.
На вход AI4 приходит значение с датчика температуры. ПИД уже выдаёт значение необходимой мощности, которое блоками гистерезиса разбивается на три группы, которые собственно и управляют работой тэнов (Q6, Q7, Q8). И мне собственно надо чтобы в процессе работы (зависит от наработки) эти тэны сменяли друг друга, тем самым обеспечивая равномерный износ.
26483

А где у Вас считается наработка по тенам, необходимо добавить наработку по тенам и далее в зависимости от наработки сделать присвоение 1-2-3 по времени работы и затем в первую очередь включать в работу блок с номером 3 вторым 2 и последним 1, в первом приближении как-то так.

Grog
21.09.2016, 10:54
А где у Вас считается наработка по тенам, необходимо добавить наработку по тенам и далее в зависимости от наработки сделать присвоение 1-2-3 по времени работы и затем в первую очередь включать в работу блок с номером 3 вторым 2 и последним 1, в первом приближении как-то так.

Так вот о чем и речь, что у меня его нет (не сделан), а хотел это все реализовать одним макросом. Но к сожалению такого не нашлось. :(

RA.
21.09.2016, 11:08
вывел на экран ПР200 два числа одно float с максимальным кол-вом разрядов которое допустимо в менеджере экранов, второе int, задал максимально возможное число float 9999999, оно корректно преобразовалось. Для полноты картины порекомендую сайт http://www.h-schmidt.net/FloatConverter/IEEE754.html.

маловато 9999999 будет, - у float "точность" 24бита.

вот преобразования dint > to float > dint 2

dint = 16777210 real = 16777210.000000 dint 2 = 16777210
dint = 16777211 real = 16777211.000000 dint 2 = 16777211
dint = 16777212 real = 16777212.000000 dint 2 = 16777212
dint = 16777213 real = 16777213.000000 dint 2 = 16777213
dint = 16777214 real = 16777214.000000 dint 2 = 16777214
dint = 16777215 real = 16777215.000000 dint 2 = 16777215
dint = 16777216 real = 16777216.000000 dint 2 = 16777216
dint = 16777217 real = 16777216.000000 dint 2 = 16777216
dint = 16777218 real = 16777218.000000 dint 2 = 16777218
dint = 16777219 real = 16777220.000000 dint 2 = 16777220
dint = 16777220 real = 16777220.000000 dint 2 = 16777220
dint = 16777221 real = 16777220.000000 dint 2 = 16777220
dint = 16777222 real = 16777222.000000 dint 2 = 16777222
dint = 16777223 real = 16777224.000000 dint 2 = 16777224
dint = 16777224 real = 16777224.000000 dint 2 = 16777224
dint = 16777225 real = 16777224.000000 dint 2 = 16777224
dint = 16777226 real = 16777226.000000 dint 2 = 16777226
dint = 16777227 real = 16777228.000000 dint 2 = 16777228
dint = 16777228 real = 16777228.000000 dint 2 = 16777228
dint = 16777229 real = 16777228.000000 dint 2 = 16777228
dint = 16777230 real = 16777230.000000 dint 2 = 16777230



dint = 67108860 real = 67108860.000000 dint 2 = 67108860
dint = 67108861 real = 67108860.000000 dint 2 = 67108860
dint = 67108862 real = 67108864.000000 dint 2 = 67108864
dint = 67108863 real = 67108864.000000 dint 2 = 67108864
dint = 67108864 real = 67108864.000000 dint 2 = 67108864
dint = 67108865 real = 67108864.000000 dint 2 = 67108864
dint = 67108866 real = 67108864.000000 dint 2 = 67108864
dint = 67108867 real = 67108864.000000 dint 2 = 67108864
dint = 67108868 real = 67108864.000000 dint 2 = 67108864
dint = 67108869 real = 67108872.000000 dint 2 = 67108872
dint = 67108870 real = 67108872.000000 dint 2 = 67108872
dint = 67108871 real = 67108872.000000 dint 2 = 67108872
dint = 67108872 real = 67108872.000000 dint 2 = 67108872
dint = 67108873 real = 67108872.000000 dint 2 = 67108872
dint = 67108874 real = 67108872.000000 dint 2 = 67108872
dint = 67108875 real = 67108872.000000 dint 2 = 67108872
dint = 67108876 real = 67108880.000000 dint 2 = 67108880
dint = 67108877 real = 67108880.000000 dint 2 = 67108880
dint = 67108878 real = 67108880.000000 dint 2 = 67108880
dint = 67108879 real = 67108880.000000 dint 2 = 67108880
dint = 67108880 real = 67108880.000000 dint 2 = 67108880


и чем больше число будет, тем больше погрешность будет в хвосте

melky
21.09.2016, 11:38
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...

Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)

А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.

Вот вам вариант с гистерезизами

SEL как раз стоит для полного выключения, независимо от гистерезисов.

Pavel_
21.09.2016, 11:42
А где у Вас считается наработка по тенам, необходимо добавить наработку по тенам
Так вот о чем и речь, что у меня его нет (не сделан), а хотел это все реализовать одним макросом. Но к сожалению такого не нашлось. :(
почитайте тему "Тема: ПР200 счетчик времени наработки. Помогите новичку. (http://www.owen.ru/forum/showthread.php?t=25020)"

Ревака Юрий
21.09.2016, 12:20
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...

Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)

А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.

Я так понял что изначально идея была вводить в работу тэны в соответствии с временем наработки, в данном же примере время можно только добавить для информации, но с учетом задачи я думаю нет смысла в таком точном подборе времени работы тэнов, и предложенный макрос подойдет. От себя могу предложить заготовку для регистрации времени включенного выхода реле, значение сохраняется после выключения прибора, для проверки использовал время в секундах, на реальном объекте можно увеличить дискретность до минуты например, хватит на 1000 часов, за одно через какое-то время можно сравнить как отработает ротация, насколько будет различие по наработке каждого тэна.

petera
21.09.2016, 12:21
RA, да все так. И да, получается DINT.

AI!, это я обращался к техподдержке Юрию (разработчикам).

Вы лучше подскажите, как мне FLOAT перевести в целочисленное без потери.
Нужно округление для больших чисел.

Я бы сказал, что точность будет ограничена не величиной числа, а количеством десятичных цифр в нем.
Если диапазон представления чисел для REAL от -3.4028E+38 до 3.4028E+38, то это вовсе не означает, что можно одиннадцати разрядные числа использовать!
Ведь для мантиссы отводится всего 23 бита из 32. В стандарте IEEE 754 несколько значений данного типа зарезервировано для обеспечения возможности представления специальных значений. К ним относятся значения NaN (Not a Number, «не число») и +/-INF (Infinity, бесконечность), получающихся в результате операций деления на ноль или при превышении числового диапазона. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы.
В любом случае числа REAL то приблизительные и точность ограничена машинным эпсилоном.
Смотреть про "Машинный эпсилон"
26486
https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D1%81_%D0%BF%D0%BB %D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7% D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9
Т.е. число REAL будет гарантированно точно переведено в INT, если число десятичных знаков будет не более семи
Что прекрасно видно из поста #2672 http://www.owen.ru/forum/showthread.php?t=9398&p=221013&viewfull=1#post221013

melky
21.09.2016, 12:29
Ревака Юрий так макрос AI! открыт, вывести из него время каждого "насоса" или тэна не составит большого труда и для проверки и для сохранения и т.д.

Макрос именно так и работает, вводит очередное устройство с меньшим временем наработки.
з.ы. за такие макросы людям надо памятники ставить еще при жизни :)))

Ревака Юрий
21.09.2016, 12:40
Ревака Юрий так макрос AI! открыт, вывести из него время каждого "насоса" или тэна не составит большого труда и для проверки и для сохранения и т.д.

Макрос именно так и работает, вводит очередное устройство с меньшим временем наработки.
з.ы. за такие макросы людям надо памятники ставить еще при жизни :)))

Честно говоря с ходу, так и не понял где там хранится время наработки, ни одной энергонезависимой переменной там нет. Допустим мы знаем что 1й тэн отработал 10 часов, 2й 5 часов, третий 18, по логике нужно первыми включить 1 и 2, мы даем команду включить тэны и как эти значения участвуют в алгоритме? А если ПР было обесточено?

Grog
21.09.2016, 12:49
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...

Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)



А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.

Вот вам вариант с гистерезизами

SEL как раз стоит для полного выключения, независимо от гистерезисов.
Спасибо, попробую разобраться. В этом деле я еще новичок.

melky
21.09.2016, 12:50
Ну, макрос писался очень давно, еще до появления ПР200.

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

Да и погрешности думаю будут не велики в масштабах сауны по равномерности работы тэнов при отключении питания...

Время там не хранится, оно участвует в расчетах просто., думаю, что добавив входов, можно сделать и инициализацию переменных если уж так это нужно.

Кстати в ПР есть возможность сделать энергонезависимым весь FB ? ну чтобы не долбаться и памяти хватает ?

AI!
21.09.2016, 14:19
А если ПР было обесточено?макрос писался давно.... (http://www.owen.ru/forum/showthread.php?t=7023&p=97247&viewfull=1#post97247)

в корне не согласен.
если считать насосы равноправными,то их моторесурс достаточно быстро выровняется сам по себе.
(просто насос который имеет меньший моторесурс будет чаще включаться)
PS не нравиться - напишите свой. А я писал его просто так, только затем что бы выложить в форум, никто мне за него не платил, даже просто "спасибо" я услышал только сейчас....
PPS кстати, я работаю вообще по другому профилю...

RA.
21.09.2016, 14:21
Т.е. число REAL будет гарантированно точно переведено в INT, если число десятичных знаков будет не более семи


ну если говорить именно о десятичных знаках (что после запятой) - то в преобразовании to_int они вообще в расчет не берутся - в любом случае обрежет до ближайшего целого

остановимся на том что, если в 23 бита значения укладываются - будет нормально преобразовываться, в соответсвии с приводимым типом данных ))

Ревака Юрий
21.09.2016, 14:45
макрос писался, когда кроме ПР110 ничего не было.... (http://www.owen.ru/forum/showthread.php?t=7023&p=97247&viewfull=1#post97247)

PS не нравиться - напишите свой. А я писал его просто так, только затем что бы выложить в форум....
PPS кстати, я работаю вообще по другому профилю...

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

Ревака Юрий
21.09.2016, 14:56
Кстати в ПР есть возможность сделать энергонезависимым весь FB ? ну чтобы не долбаться и памяти хватает ?

Если сделать все промежуточные переменные энергонезависимыми, то наверное можно, но нужно ли? Общей настройки для блока нет, если под FB подразумевается макрос, а так состояние счетчиков можно хранить.

melky
21.09.2016, 15:30
Ревака Юрий Да, имелась ввиду возможность указать программе, что весь FB или макрос энергонезависим. Иногда было бы полезным и более простым методом превращать переменные внутри макроса в запоминаемое состояние.

AI! ну за Boolen Вам тоже огромное спасибо. Конечно возможности OL не позволяют в макросах выставлять галочки, но небольшой эксель файлик помогает посчитать комбинацию для нужной работы входов при которой выход true :)

Да и вообще у Вас много математически направленных макросов и не только отличного качества....
И главное есть на чем учиться и к чему стремиться :)

petera
21.09.2016, 15:54
ну если говорить именно о десятичных знаках (что после запятой) - то в преобразовании to_int они вообще в расчет не берутся - в любом случае обрежет до ближайшего целого

остановимся на том что, если в 23 бита значения укладываются - будет нормально преобразовываться, в соответсвии с приводимым типом данных ))

Я имел ввиду такие числа 4,29496E+07 или те, что в посте #2672
....
67108875 ==> 67108872.000000 ( 6,710875E+7) ==> 67108872 - есть погрешность
а если число "знаков" будет меньше
67108800 ==> 67108800.000000 ( 6,71088E+7) ==> 67108800 - нет погрешности

Grog
21.09.2016, 17:33
melky
Огромное Спасибо!!!
Реализовал Ваше предложение. Теперь буду "въезжать" в макрос и пробовать его допиливать под мое количество тэнов.

melky
21.09.2016, 17:46
Ну спасибо не мне а AI! :)

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

Кстати можно не перелопачивать макрос, а просто поставить рядом с управляющими "контакторами" программы счетчики наработки с выводом на экран и в сетевую переменную.
И добавить корректировку выравнивания времени за счет изменения битовой маски (Ок) из переменной с экрана. (ремонт, техобслуживание тэна) просто много проработавший в битовой маске 0 ставим исходя из счетчика и все (запрещаем этому устройству включаться и все)

игорь68
21.09.2016, 23:30
Ревака Юрий вам вопрос. Интересует связка ПР114+ПР114+ИП120=МСД200 . Есть необходимость сделать что то типа "черный ящик" . Без скад, КАСКАД, опс серверов и тд и тп. Или можно по пробовать ПР200+ ПР-М.24.Д16=МСД200. Есть примеры опроса пр этим устройством.

Grog
22.09.2016, 09:05
Ну спасибо не мне а AI! :)

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

Кстати можно не перелопачивать макрос, а просто поставить рядом с управляющими "контакторами" программы счетчики наработки с выводом на экран и в сетевую переменную.
И добавить корректировку выравнивания времени за счет изменения битовой маски (Ок) из переменной с экрана. (ремонт, техобслуживание тэна) просто много проработавший в битовой маске 0 ставим исходя из счетчика и все (запрещаем этому устройству включаться и все)

AI Спасибо за макрос, а Вам за вариант решения этого конкретного случая.

Ревака Юрий
22.09.2016, 10:07
Ревака Юрий вам вопрос. Интересует связка ПР114+ПР114+ИП120=МСД200 . Есть необходимость сделать что то типа "черный ящик" . Без скад, КАСКАД, опс серверов и тд и тп. Или можно по пробовать ПР200+ ПР-М.24.Д16=МСД200. Есть примеры опроса пр этим устройством.

Добрый день!

Не совсем понял по Вашему уравнению, ПР114+ПР114+ИП120=это аналог МСД200, или вы все это хотите писать на МСД200? В любом случае там обычный RS485, необходимые регистры читаются и записываются на карточку, тут больше вопрос по МСД200, на сайте есть настройки под некоторые приборы. В случае ПР200+ ПР-М.24.Д16, тут еще проще, модуль расширения добавляется в самом OL, входа выхода модуля добавляются на холст и становятся единым целым с ПР200, т.е. о связи Вам не нужно заботиться, работа идет как с обычным ПР200.

игорь68
22.09.2016, 11:42
То есть я беру из доков номера нужных мне регистров и пишу МСД. Просто идея такова. Пишем работу ПР( регистры входа и выхода) на флешку МСД200. К модулю СМД200 подключаем модем и через запрос с другого модема скидываем на комп работу ПР за сутки. То есть цепочка будет такая ПР200+ПР-М.24.Д16+ МСД200+ПМ01( модем). Пример работы между МСД200 и ПМ01 есть. Заказал МСД жду как поступит. Вот и хотел узнать будет это работать или нет. если воен сделает модуль UART для работы с вашим модемом будет вообще хорошо. Один слот порта для RS485 другой слот для SR232 под модем.
Спасибо за помощь.

timik2009
24.09.2016, 16:06
Привет коллеги.как принять отрицательные числа на ПР200 от СПК107.

Сергей0308
24.09.2016, 16:52
Привет коллеги.как принять отрицательные числа на ПР200 от СПК107.

Если в инте, я макросы выкладывал: http://www.owen.ru/forum/showthread.php?t=13106&page=3

26573

timik2009
24.09.2016, 21:16
спасибо Сергей за помощь.

Сергей0308
24.09.2016, 21:27
спасибо Сергей за помощь.

Вообще-то эта идея capzap, я только намалевал!

acronis
06.10.2016, 04:54
Добрый день.

Вопрос такого плана
как сделать энергонезависимую проверку на смену даты.

например сегодня несколько раз отключали и включали ПР200 - последняя дата совпадает с датой часов реального времени - делать ничего не надо
сегодня выключили ПР200 - а завтра включат - нужно выполнить 1 раз действие ( пока разнятся дата последнего выключения и текущих часов)


заранее спасибо

Ревака Юрий
06.10.2016, 07:53
Добрый день.

Вопрос такого плана
как сделать энергонезависимую проверку на смену даты.

например сегодня несколько раз отключали и включали ПР200 - последняя дата совпадает с датой часов реального времени - делать ничего не надо
сегодня выключили ПР200 - а завтра включат - нужно выполнить 1 раз действие ( пока разнятся дата последнего выключения и текущих часов)


заранее спасибо

Какую переменную Вы берете за отсчет, день? Текущее время не имеет значения, когда сравнивается? Если так, то при выполнении действия единоразово записываете в энергонезависимую переменную текущий день, в следующий раз сравниваете переменную и день, если совпадают, ничего не делаем, в 00:00 переменную обнуляем, и так по кругу.

acronis
06.10.2016, 08:20
Ок. спасибо ! то что нужно !

Grog
06.10.2016, 11:58
Добрый день! Столкнулся с такой проблемой: OWEN Logic начал выдавать ошибку "Не удалось соединиться с сервером обновлений. Удаленный сервер возвратил ошибку: (404) Не найден." и так несколько дней, подумал что проблема у меня. Скачал заново более старую версию с сайта и переустановил её и теперь созданный проект (в более новой версии) не открывается ругаясь на "Owen.Visualization.dll", а при попытке обновления программа так-же ссылается на ошибку "404".
Можно ли исправить сервер обновлений или найти ссылку на свежую версию?

melky
06.10.2016, 12:03
http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/Setup/

или посмотрите 90-ю версию для начала.

Grog
06.10.2016, 14:24
http://www.owen.ru/forum/showthread....l=1#post222336

или посмотрите 90-ю версию для начала.

Ссылка не работает :(

melky
06.10.2016, 14:32
Прямая ссылка

acronis
11.10.2016, 06:40
Добрый день.

Подскажите, по какой причине не сохраняются значения счетчика в моем проекте

То есть счетчик должен сохранятся после выключения питания ( если включили и выключали питание в течении одного дня) и сбрасываться в 0 только если изменился день (выключили в один день - включили в другой)

Павел Братковский
11.10.2016, 07:30
если правильно понял, счет нужно сохранять стн1....если так, то у вас при подачи питания детектор переднего фронта выдаст 1 на сброс счетчика, смысла в энергонезависемости в вашем случае нет.

смысла программы не знаю, попробуйте так 26980

AI!
11.10.2016, 08:24
(если включили и выключали питание в течении одного дня)у вас день по факту не сохраняется....

Сергей0308
11.10.2016, 08:33
И не имеет смысла после счётчика ставить энергонезависимость переменной, она всё равно перезапишется его значением!

Алексей Геннадьевич
11.10.2016, 08:39
acronis
Пробуйте. Всё как надо работает.
И секундный тик нужно так делать, чтобы он от RTC работал.

И не имеет смысла после счётчика ставить энергонезависимость переменной, она всё равно перезапишется его значением!
Это таки да. Энергонезависимость нужно в счётчике делать.

acronis
11.10.2016, 09:26
acronis
Пробуйте. Всё как надо работает.
И секундный тик нужно так делать, чтобы он от RTC работал.

Это таки да. Энергонезависимость нужно в счётчике делать.

Спасибо, все работает !

А генератор 0,5 -0,5 точности не даст секундной ?

melky
11.10.2016, 09:32
http://www.owen.ru/forum/showthread.php?t=23843&p=223180&viewfull=1#post223180

Я вот здесь переделал свой счетчик с внедрением в него макроса от AI!. Собственно цель была чтобы пир модернизации прошивки ПР сперва проверять счетчик, потом в программе выставлять эти значения как по умолчанию и прошивать ПР. Проверенно - работает.

з.ы. Когда уже починят Modbus переменные, чтобы начальное значение сохранялось в ПР при прошивке ?

Будет погрешность на время цикла программы. При очень большом желании можно ввести корректировку.

Ревака Юрий
11.10.2016, 09:45
Будет погрешность на время цикла программы. При очень большом желании можно ввести корректировку.

Если использовать Blink, то по идее от цикла зависимости быть не должно, я думаю 1 секунду не так сложно будет выдержать.

acronis
11.10.2016, 10:30
[QUOTE=melky;223373]http://www.owen.ru/forum/showthread.php?t=23843&p=223180&viewfull=1#post223180

Я вот здесь переделал свой счетчик с внедрением в него макроса от AI!. Собственно цель была чтобы пир модернизации прошивки ПР сперва проверять счетчик, потом в программе выставлять эти значения как по умолчанию и прошивать ПР. Проверенно - работает.

з.ы. Когда уже починят Modbus переменные, чтобы начальное значение сохранялось в ПР при прошивке ?
QUOTE]

Очень хорошая идея с возможностью внесения первоначальных значений при смене ПО или реле !!!

2Nikus
11.10.2016, 10:34
Я сделал через Blink, для моих целей точности достаточно.

Алексей Геннадьевич
11.10.2016, 11:16
Спасибо, все работает !

А генератор 0,5 -0,5 точности не даст секундной ?
Это проверить надо на длительном промежутке времени.
В Codesys - "плавает", а как в ОЛ завязано - не в курсе.

Toxa_Pervik
13.10.2016, 19:21
Всем доброго времени суток.
Имею реле ПР110 которое надо запрограммировать, имею конвертер USB/RS485 от Carel. Реально ли подконектиться?
Понимаю что вопрос наверно уже звучал но искать нет времени:(

rovki
13.10.2016, 19:46
Пр100 программируется через интерфейс UART ///Нужен ПРкп

RamzesWL
13.10.2016, 21:17
Добрый вечер!
Кому не сложно подскажите пожалуйста новичку, как в ПР200 в овенлоджике сделать так чтоб Реле включало исполнительный орган только на каждом нечетном срабатывании датчика. Мне надо, чтоб при движении каретки станка вперед реле срабатывало, а когда она назад возвращается мимо этого же датчика, чтоб не срабатывало.
Заранее спасибо!

Сергей0308
13.10.2016, 21:27
Добрый вечер!
Кому не сложно подскажите пожалуйста новичку, как в ПР200 в овенлоджике сделать так чтоб Реле включало исполнительный орган только на каждом нечетном срабатывании датчика. Мне надо, чтоб при движении каретки станка вперед реле срабатывало, а когда она назад возвращается мимо этого же датчика, чтоб не срабатывало.
Заранее спасибо!

Так Вам надо через раз чтобы срабатывало! Из д-триггера можно сделать т-триггер, заодно у д-триггера сброс есть для определения начала отсчёта, на всякий случай! Надеюсь идея понятна?!
Как-то так:

27026

melky
13.10.2016, 21:43
Toxa_Pervik реально, купив у китайцев UART-RS485 двунаправленный с автоопределением передачи. 135 рублей примерно
Или сразу USB-UART

Но все ждать

Можно например делить на 2 с остатком выход универсального счетчика, определяя чет/нечет.

rovki
13.10.2016, 21:57
Toxa_Pervik реально, купив у китайцев UART-RS485 двунаправленный с автоопределением передачи. 135 рублей примерно
Или сразу USB-UART

Но все ждать
.
А потом выяснится что нет автоперенаправления или питание 3,3в ;)

RamzesWL
13.10.2016, 22:12
Сергей0308
Сергей, все работает! Спасибо огромное!

melky
13.10.2016, 22:31
rovki если взять такой, то все у него есть, в том числе и питание либо 5 либо 3,3

https://ru.aliexpress.com/item/Single-Chip-Microcomputer-TTL-Turn-RS485-Module-Automatic-Flow-Control-Module/32385757602.html

Vlad84
31.10.2016, 07:12
Здравствуйте! Как подключить ДТС324 к аналоговому входу ПР200 через барьер ИСКРА-ТС? На выходе барьера два провода соединены, а на входе, судя по схеме - нет. Как быть?

Павел Братковский
31.10.2016, 08:04
пр 200 нет компенсации длинны линии, на аналоговый вход можно подать или А и С или В и С, я бы например А и В закоротил...

а омметром и зажигалкой не пробовали проверить?

Vlad84
31.10.2016, 08:06
То есть на входе у нас будет двухпроводное подключение?

Павел Братковский
31.10.2016, 08:07
То есть на входе у нас будет двухпроводное подключение?

РЭ так и говорит...стр 61.

Vlad84
31.10.2016, 08:29
Спасибо :)

Vlad84
31.10.2016, 08:33
А как можно задать аварийную ситуацию "обрыв датчика" и "КЗ датчика" в ОЛ? У меня ДТС324. "Обрыв" можно определить по недопустимому времени отсутствия сигнала на входе?

Vlad952mir
31.10.2016, 09:34
Неделю назад занялся ПР200. Появились вопросы.
ПР-200 не выводит переменную, и при редактировании элементы ввод/вывод
не сохраняет переменную, после нажатия кнопки ОК.
Похоже экран не воспринимает эту переменную.

Ревака Юрий
31.10.2016, 10:06
Неделю назад занялся ПР200. Появились вопросы.
ПР-200 не выводит переменную, и при редактировании элементы ввод/вывод
не сохраняет переменную, после нажатия кнопки ОК.
Похоже экран не воспринимает эту переменную.

Добрый день! Приложите проект, возможно Вы пытаетесь редактировать переменную которая установлена на выходе какого-то элемента, например счетчика, тогда да, редактировать ее не получится, т.к. ее будет перезаписывать счетчик.

Ревака Юрий
31.10.2016, 10:10
А как можно задать аварийную ситуацию "обрыв датчика" и "КЗ датчика" в ОЛ? У меня ДТС324. "Обрыв" можно определить по недопустимому времени отсутствия сигнала на входе?

В зависимости от используемой НСХ, в макросах которые находятся в онлайн базе используется сравнение сопротивления, если оно меньше рабочего минимума, считаем к.з если больше рабочего максимума то обрыв.

Vlad84
31.10.2016, 11:41
Ещё бы разобраться в них)

Vlad952mir
31.10.2016, 11:41
вот проект, там достаточно много лишнего, поскольку пробую. переменная цикл

Vlad952mir
31.10.2016, 11:44
Спасибо, Юрий. что то не нашел где в обычном ответе вставить файл.
получилось отдельно, как вопрос, на следующей странице.

melky
31.10.2016, 12:24
Vlad952mir привяжите выход MUL в схему, скорее всего компилятор ее вообще не включает в прошивку...

Ревака Юрий
31.10.2016, 12:26
вот проект, там достаточно много лишнего, поскольку пробую. переменная цикл

У Вас переменная Цикл никуда не подключена, для компилятора ее как-бы не существует, попробуйте включить ее в логику, например как на скриншоте, при установке с экрана переменной =10 у Вас включится реле и переменная должна редактироваться.

Vlad84
31.10.2016, 12:34
А как узнать у меня ДТС324 50М W100=1,426 или 50М W100=1,428? В РЭ не написано.

Vlad952mir
31.10.2016, 12:45
У Вас переменная Цикл никуда не подключена, для компилятора ее как-бы не существует, попробуйте включить ее в логику, например как на скриншоте, при установке с экрана переменной =10 у Вас включится реле и переменная должна редактироваться.

Спасибо, попробую

Vlad84
31.10.2016, 12:46
А если задать при экстремальных значениях моего датчика (-50...+150°С) в формулу для пересчёта сопротивления на входе в температуру и получить сопротивления для мин. и макс. температуры моего датчика, это будет точная уставка на проверку по "обрыву" и "КЗ" датчика?

Ревака Юрий
31.10.2016, 12:47
А как узнать у меня ДТС324 50М W100=1,426 или 50М W100=1,428? В РЭ не написано.

Пришлите полное наименование с паспорта, или как вариант измерить сопротивление при 100 °С.

Vlad84
31.10.2016, 12:56
Датчика нет, только техзадание, спросить тоже пока никак нельзя у заказчика. Это можно уточнить на этапе согласования. А вообще возможно так перевести мин. и макс. сопротивление в температуру? Точное значение получится? Чтобы попроще схема получилась.

Ревака Юрий
31.10.2016, 12:58
А если задать при экстремальных значениях моего датчика (-50...+150°С) в формулу для пересчёта сопротивления на входе в температуру и получить сопротивления для мин. и макс. температуры моего датчика, это будет точная уставка на проверку по "обрыву" и "КЗ" датчика?

Скорее всего у Вас W100=1,426, вот так в макросе реализовано, можно откорректировать под Ваш диапазон, с небольшим запасом.

Vlad952mir
31.10.2016, 13:00
что то я все таки не догоняю. сейчас переменная выводится на дисплей, но не сохраняется по нажатию ОК.
вообще то задача такова: нужна некая переменная , имеющая некое значение по умолчанию, величину
которой можно редактировать и затем эту измененную величину передать с помощью WB в счетчик или тригер,
для отсчета циклов. То , что все элементы надо подключать уже понял. Если можно приложите пример решения такой задачи.

Ревака Юрий
31.10.2016, 13:11
что то я все таки не догоняю. сейчас переменная выводится на дисплей, но не сохраняется по нажатию ОК.
вообще то задача такова: нужна некая переменная , имеющая некое значение по умолчанию, величину
которой можно редактировать и затем эту измененную величину передать с помощью WB в счетчик или тригер,
для отсчета циклов. То , что все элементы надо подключать уже понял. Если можно приложите пример решения такой задачи.

Вот этот проект, у меня все изменяется и запоминает, единственное я убрал связь с выходом и исправил один блинк, т.к они мимели 0 уставки и реле дребезжали.

Vlad952mir
31.10.2016, 13:28
Вот этот проект, у меня все изменяется и запоминает, единственное я убрал связь с выходом и исправил один блинк, т.к они мимели 0 уставки и реле дребезжали.

Спасибо. неужели это так критично? Попробую теперь продолжить дальше.

Vlad84
31.10.2016, 13:33
А почему в группе "сопротивление больше диапазона" происходит умножение на 2? Это и есть запас?

Ревака Юрий
31.10.2016, 13:34
Спасибо. неужели это так критично? Попробую теперь продолжить дальше.

Что именно критично, то что я оторвал выхода, так это на программу влиять не должно, я убрал чтоб не убивались реле, пока буду тестировать.

Vlad952mir
31.10.2016, 14:07
Что именно критично, то что я оторвал выхода, так это на программу влиять не должно, я убрал чтоб не убивались реле, пока буду тестировать.

тогда просто не понятно, что изменилось, по сравнению с исходником?
И еще один вопрос, если в процессе работы эта переменная, которая будет записана в счетчик и надо будет следить за состоянием этого счетчика, необходимо создать еще окно, в которое считывать с помощью RB переменную?

Ревака Юрий
31.10.2016, 14:19
А почему в группе "сопротивление больше диапазона" происходит умножение на 2? Это и есть запас?

Там нет умножения на 2, там организован вывод в переменную ошибки числа 1-если КЗ, т.е сопротивление меньше нижней границы, и 2-если обрыв, т.е сопротивление > верхней границы? вот те 2 числа Вы и можете отредактировать под свой диапазон используя НСХ для датчика, примем пока что W100 у него 1.426.

Ревака Юрий
31.10.2016, 14:29
тогда просто не понятно, что изменилось, по сравнению с исходником?
И еще один вопрос, если в процессе работы эта переменная, которая будет записана в счетчик и надо будет следить за состоянием этого счетчика, необходимо создать еще окно, в которое считывать с помощью RB переменную?

Сложно ответить не имея полного представления по алгоритму, во вложении по быстрому набросал как задавать с экрана кол-во импульсов , отсчет будет производится по срабатыванию входа I8, пример нужно отладить в режиме симуляции по задачу.

Vlad84
31.10.2016, 14:37
Спасибо, разобрался. Буду пересчитывать.

Vlad84
31.10.2016, 15:04
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?

Ревака Юрий
31.10.2016, 15:07
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?

Это где такое написано,

Vlad84
31.10.2016, 15:18
В моём техзадании.

Сергей0308
31.10.2016, 15:25
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?

Наверно для Марса разрабатываете, там такая средняя температура?!

Vlad84
31.10.2016, 15:31
Да я понимаю, что это всё их непонятные запросы) У нас на заводе ТРМ1 и ему подобные приборы не только хранились, но и несколько лет успешно работали и при минус 35 градусах) Пока печка не нагреет воздух в операторской до плюсовой температуры.

Vlad84
31.10.2016, 16:26
А формула-то для расчёта температуры по сопротивлению останется та же? Какой коэффициент изменится?

Vlad84
31.10.2016, 20:13
И с этим разобрался)

Vlad84
31.10.2016, 22:44
Вопрос ещё возник: как работать с отрицательными числами в ОЛ? При расчёте температуры.

Сергей0308
31.10.2016, 22:56
Вопрос ещё возник: как работать с отрицательными числами в ОЛ? При расчёте температуры.

В ОЛ через FLOAT, передавать туда-сюда можно во FLOAT и INT, как угодно, для интов макросы есть: http://www.owen.ru/forum/showthread.php?t=13106&page=3

27371

Vlad84
31.10.2016, 23:09
У меня после деления и появления знака минус, всё нарушается. Перестаёт температуру на выходе показывать.

Сергей0308
31.10.2016, 23:23
У меня после деления и появления знака минус, всё нарушается. Перестаёт температуру на выходе показывать.

Вы хоть на картинке покажите, а то с Вами не желая, ясновидящим станешь, а лучше в проекте, типа здесь бяка:

27372

Vlad84
31.10.2016, 23:40
Вот изображение 27373

Vlad84
31.10.2016, 23:42
Если подать на вход 50 Ом, то всё нормально - 0 градусов на выходе. Меньше 50 Ом, сразу не выходит ничего хорошего.

melky
31.10.2016, 23:52
так вы от значения меньше 1 отнимаете 1-цу, и чего вы хотите ? вас напугала запись -2Е-02 ?

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

Сергей0308
31.10.2016, 23:52
Вот изображение 27373

В ОЛ отрицательные значения только во FLOAT, если хотите в инте передать по сети, я макросы Вам предлагал, нет Вы идёте своим непонятным путём, так у Вас полная лабуда получится!
Короче FLOAT значение, если хотите иметь один знак после запятой умножаете на 10, два на 100 и преобразуете в инт с помощью моего макроса, передаёте куда хотите в инте, после передачи делите, на сколько умножали до передачи, всё! Не помешает округлить, не очень давно округление разбирали по косточкам! Если на экран ПР надо, только во FLOAT!
Если вкратце в ОЛ INT не INT, а UINT, точнее UDINT, поэтому нельзя в него отрицательные значения преобразовывать, они не бывают отрицательными!
Если лениво идти по ссылке, вот Вам проект с макросами:

Vlad84
01.11.2016, 06:52
Просто хотелось бы разобраться, а не копировать) В макросах не всё понятно. А на экран не надо выводить, только по сети передать.

Сергей0308
01.11.2016, 06:57
Просто хотелось бы разобраться, а не копировать) В макросах не всё понятно. А на экран не надо выводить, только по сети передать.

Это приветствуется, что не совсем понятно, спросите, объясню, как смогу!

Vlad84
01.11.2016, 08:03
Для чего 15-й бит читается в макросе?

Сергей0308
01.11.2016, 08:09
Для чего 15-й бит читается в макросе?

Этим в инте обозначается знак "минус", единицей в 15 бите! В теме, где я макросы выложил, есть ссылка на википедию!
https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BB%D0%BE%D0%B5_(%D1%82%D0%B8%D0%BF _%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)#.D0.A6.D0.B 5.D0.BB.D1.8B.D0.B5_.D1.81.D0.BE_.D0.B7.D0.BD.D0.B 0.D0.BA.D0.BE.D0.BC

Vlad84
01.11.2016, 08:45
Ничего не получается с этими макросами. Оставлю как есть. По сети такие же числа передадутся: -4,7Е+00 или нормальная температура?

Сергей0308
01.11.2016, 09:07
Ничего не получается с этими макросами. Оставлю как есть. По сети такие же числа передадутся: -4,7Е+00 или нормальная температура?

INT - целочисленный тип данных, если надо со знаками, после запятой, делаем через умножить-разделить на 10 в n-ой степени, где n-количество знаков, после запятой! Я уже писал об этом! Контролируем, чтобы не переполнялось, т. е. от -32768 до 32767!

Vlad84
01.11.2016, 09:13
Float у меня. И, хотелось бы узнать, почему некоторые линии связи в ОЛ красного цвета? Похоже, что они к целочисленным и булевским блокам подходят.

Сергей0308
01.11.2016, 09:16
Float у меня.

Возможно нужно байты "потусовать" в массиве из двух вордов!

27382

И повторюсь на всякий случай, мои макросы только чтобы в инте передавать по сети, если передаёте во флоате, они не нужны, как-то так!

melky
01.11.2016, 09:38
float передается нормально, хоть + хоть минус.

в виде 4Е+ и так далее отображается только в симуляторе, в приборе так же все нормально при выводе на экран и передачи по сети.

Vlad84
01.11.2016, 09:53
Спасибо всем за помощь!) Я хоть и почти год как на сайте, но работать по этому направлению почти не приходилось) Поэтому так много непонятного и глупых вопросов) Больше всего сложностей с созданием разветвлённых и сложных программ в ОЛ, сами логические функции вопросов не вызывают.

melky
01.11.2016, 09:59
Если в симуляции вас не устраивает 4Е+ поставьте округлялку тогда и видеть все будете :)

Сергей0308
01.11.2016, 10:56
Спасибо всем за помощь!) Я хоть и почти год как на сайте, но работать по этому направлению почти не приходилось) Поэтому так много непонятного и глупых вопросов) Больше всего сложностей с созданием разветвлённых и сложных программ в ОЛ, сами логические функции вопросов не вызывают.

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

AI!
01.11.2016, 13:19
вот Вам проект с макросами:предложу свой вариант Int-Float, более простой... (по крайней мере с точки зрения ПР)

melky
01.11.2016, 14:19
AI! а где на выходе минус при значении больше 65536 ?

в общем я не понял как оно работает :) флоат там только в названии....

AI!
01.11.2016, 14:44
AI! а где на выходе минус при значении больше 65536?встречный вопрос - как в 16 бит затолкать числа больше 65536?

PS на входе -32768..32767, только в "неправильном виде"
(65535=-1, 32768=-32768, даж не знаю как объяснить.... просто поверьте, а поймёте потом...)

PPS на выходе float - это тип данных такой...... в OL - сиреневенький...

melky
01.11.2016, 15:07
AI! через переменные если например и делить на 2 регистра

я имел ввиду сразу делать с дробной частью. Ведь -32768 еще надо будет превратить например в -40 градусов... или в -25,43 градуса

у меня вопрос, целочисленное 65535 = - 1 , а вот 32768 = сколько ? оно должно быть в минусе больше или меньше 65535 ???

AI!
01.11.2016, 15:12
AI! через переменные если например и делить на 2 регистраЯ всего лишь оптимизировал макрос уважаемого Сергей0308, по функционалу все вопросы к нему...

melky
01.11.2016, 15:36
ну я вообще спросил про отрицательные числа и как они представляются в целочисленном формате, а то что-то я запутался :)

AI!
01.11.2016, 15:42
ну я вообще спросил про отрицательные числа и как они представляются в целочисленном формате, а то что-то я запутался :)загуглите "shot int" и "обратный код"

Vlad952mir
01.11.2016, 15:49
Какие величины можно выводить в порты аналогового выхода при 4 - 20мА и 0 - 10 В?

AI!
01.11.2016, 15:50
у меня вопрос, целочисленное 65535 = - 1 , а вот 32768 = сколько ? оно должно быть в минусе больше или меньше 65535 ???ИМХО когда думали что делать с 32768 - решили просто, раз старший (знаковый) бит =1, значит число должно быть отрицательным...
65535=-1, 32768=-32768

melky
01.11.2016, 16:11
AI! да, уже нагуглил про обратный код, 65535 превращается в одну единственную 1 в старшем разряде ну и так далее...
Тогда все работает, на выходе поставил Scale_R входные значения -32768, 32767, для выходных -40, 100 например. Ну можно еще и зону отсечь если необходимо, уже не принципиально... работает....


Vlad952mir от нуля до единицы в формате плавающей точки - 0.0 = 4мА, 1.0 = 20 мА и соответственно для 0 -10В аналогично.

Vlad952mir
01.11.2016, 16:21
AI! да, уже нагуглил про обратный код, 65535 превращается в одну единственную 1 в старшем разряде ну и так далее...
Тогда все работает, на выходе поставил Scale_R входные значения -32768, 32767, для выходных -40, 100 например. Ну можно еще и зону отсечь если необходимо, уже не принципиально... работает....


Vlad952mir от нуля до единицы в формате плавающей точки - 0.0 = 4мА, 1.0 = 20 мА и соответственно для 0 -10В аналогично.
Спасибо. неожиданно.

melky
01.11.2016, 16:22
Так вроде это есть в руководстве... да и многим привычнее после ПЛК 63, 73

Сергей0308
01.11.2016, 18:51
Я всего лишь оптимизировал макрос уважаемого Сергей0308, по функционалу все вопросы к нему...

Странное недовольство, что поделаешь диапазон INT ограничен(-32768 - 32767), тут ничего не поделаешь, можете смастерить свой собственный тип данных если недовольны, можно типа х,ххх умноженное на 10 в энной степени, 10 не передаём, в уме держим, короче в натуральном виде число, так можно сэкономить несколько байт, ну прославится нельзя, всё уже придумано до Вас, можете по аналогии с моим сделать макрос для DINT, если Вам диапазона INT катастрофически не хватает!

AI!
01.11.2016, 20:54
Странное недовольствоу меня нет недовольства. Я не до конца понимаю где оно используется, именно за этим я сослался к Вам.
Но если макрос есть, значит он кому-то нужен.

PS макрос LongInt-Float будет ещё проще - там не будет среднего AND из моего макроса

Сергей0308
01.11.2016, 21:21
у меня нет недовольства. Я не до конца понимаю где оно используется, именно за этим я сослался к Вам.
Но если макрос есть, значит он кому-то нужен.

PS макрос LongInt-Float будет ещё проще - там не будет среднего AND из моего макроса

Попробую объяснить, начну издалека, вот Вы частенько стараетесь всё усовершенствовать, оптимизировать, предлагаете свои решения, макросы, здесь примерно тоже самое, для большинства случаев хватает диапазона INT(хотя некоторым и DINT не хватало), так зачем мне передавать во флоате(если значения могут быть как выше, так и ниже ноля), занимает 2 регистра, могут возникнуть проблемы с "чередованием" байт, смысл в чём? И также с получением данных, например от ТРМ2хх!
Забыл сказать самое неожиданное для меня от флоата, раньше считывал СМИ2 из ПР114 очень медленно меняющийся параметр(уровень в накопительных ёмкостях) в инте в процентах(0 - 100%) с точностью до десятых долей и ступенька была "0,1" ну и разумеется показания менялись на 0,1 через какое-то время, потом переделал на флоат, и как бы ожидал уменьшение ступеньки до сотых долей, но произошло прямо противоположное, ступенька увеличилась в 2,5 раза до 0,25, что мне очень непонятно, так что флоаты только в случае крайней необходимости теперь буду применять!

Artemid
02.11.2016, 10:30
Здравствуйте! На ПР200 надо с экрана задавать число с запятой в таймер, на экране задаю тип переменной-вещественная,дальше в программе эту переменную обозначаю как с плавающей запятой, дальше умножаю мулом на 1000 и запись в таймер-не работает. Вопрос-все ли правильно делаю? С целыми числами все работает.

melky
02.11.2016, 10:33
таймер не понимает вещественных переменных. картинку выложите что у вас там...
А просто целочисленное на экране сделать и передавать в таймер ?

Artemid
02.11.2016, 10:51
Именно с запятой число надо27400

melky
02.11.2016, 11:15
Artemid - MUL у вас целочисленный, как вы ему смогли скормить переменную с плавающей запятой ?
Write to FB понимает только целочисленные. Вы определитесь что вы хотите и главное ЗАЧЕМ ?

А так, есть там такая вещь как преобразование To INT

Блок записи в FB пишет в миллисекундах, это целочисленный параметр, или вы хотите записывать в виде 0,1 мс с экрана ?

тогда float c экрана сперва умножаем fMUL на 1000, потом TO INT и запись в FB

Сергей0308
02.11.2016, 11:15
Именно с запятой число надо27400

Как-то так:

27401

melky
02.11.2016, 11:22
для корректности надо еще fABS поставить.... а то мало ли, через минус начнут записывать :)

petera
02.11.2016, 11:32
для корректности надо еще fABS поставить.... а то мало ли, через минус начнут записывать :)

Нужно просто контроль диапазона включить
27404

melky
02.11.2016, 11:34
Если переменная не сетевая то да, если сетевая, то контроль не работает...

Серёга Букашкин
02.11.2016, 11:39
Есть желание передавать 2 целочисленные переменные по 485 с мастера ПР200 одним посылом, упаковав в сетевую все 32 бита. Это будет работать? По сути ведь целочисленная имеет 32 бита и можно заполнять их по полной если там не числовые данные. Но как отдать 32-битную целочисленную в сетевую "с плав запятой", ОЛ не разрешает, требует преобразовать во флоат, а мне не надо преобразования, это не число, а набор битов! Обратное преобразование из флоат не вернет исходногоЕсть ли какая хитрость для реализации передачи 32-битной целочисленной одним посылом? То есть имею потребность в еще одном виде сетевой переменной "целочисленная-32", которая передавалась бы аналогично флоат (2-мя соседними регистрами), но не требовала бы преобразования во флоат. Тогда на приеме можно было бы либо объявить тот же формат, либо считывать обычными целочисленными сетевыми переменными младшую и старшую часть. Сейчас получается, что фактически имея в целочисленной переменной DINT, можно реально для передачи по сети пользоваться только его половинкой, это нехорошо.

melky
02.11.2016, 11:43
Если ПР будет мастером надо пробовать так как нет групповых запросов, а если слейвом то ради бога, до 12 регистров точно поддерживается групповой запрос, просто раскидывайте на 2 регистра (2 переменных) свою переменную и все.

Artemid
02.11.2016, 11:52
melky спасибо большое все отл. работает. Все от невнимательности, не заметил fMUL

Сергей0308
02.11.2016, 12:09
Если ПР будет мастером надо пробовать так как нет групповых запросов, а если слейвом то ради бога, до 12 регистров точно поддерживается групповой запрос, просто раскидывайте на 2 регистра (2 переменных) свою переменную и все.

А по-моему надо раскидывать на два соседних регистра, а не просто на два!

melky
02.11.2016, 12:10
Сергей0308 ну да, именно соседних, чтобы в SCADA например сказать, что с ними потом делать.
При необходимости переставить местами программно в ПР, если SCADA не умеет этого делать или идут общие настройки для всех регистров.

capzap
02.11.2016, 12:34
Есть желание передавать 2 целочисленные переменные по 485 с мастера ПР200 одним посылом, объявив в свойствах сетевой 32-битной переменной, что она как бы "с плав запятой", и упаковав в нее все 32 бита.

в ОЛ это не подойдет, потому что пеобразование TO_FLOAT изменит текущее целочисленное значение условно просто добавив точку с ноликом, к расположению состояний разрядов это не имеет отношения и даже если что то можно придумать, то могут возникнуть ситуации когда флоат превратится в нечисло

AI!
02.11.2016, 15:49
Но как отдать 32-битную целочисленную в сетевую "с плав запятой"у float точность всего 24 бита
перегоняя из INT в FLOAT и обратно числа больше 16777216 будут обрезаны младшие биты.

acronis
05.11.2016, 12:36
Подскажите , как организовать SEL , но для float. не используя макрос fSave.

Сергей0308
05.11.2016, 14:38
Подскажите , как организовать SEL , но для float. не используя макрос fSave.

Есть же в онлайн базе макросов:

27452

Да и миллион раз рисовали:

27453

Vlad84
11.11.2016, 10:42
Здравствуйте! Недавно задавал вопрос по настройте термометров сопротивления (как пересчитать сигнал в Омах с датчика в температуру). А при токовом сигнале с датчика те же действия? Ток преобразовать по формуле в температуру? И по какой формуле считать, если датчик Pt100? С ПР200 связь через барьеры искрозащиты.