Просмотр полной версии : Экспресс вопрос (ответ)
Вот вам 2 варианта
для 1-ставите энергонезависимость в переменных
для 2-ставьте энергонезависимость в свойствах счетчика
Василий Кашуба
28.08.2016, 12:49
А это вам третий вариант, энергонезависимость в свойствах переменной.26049
Большое спасибо!
3 вариант .....
Сергей0308
28.08.2016, 22:12
Сложновато, однако, вот мой вариант SR-триггера:
26052
Цели не было упрощать -цель была показать ход мыслей ,направление :rolleyes:...вот еще вариант
Сергей0308
29.08.2016, 23:46
Цели не было упрощать -цель была показать ход мыслей ,направление :rolleyes:...вот еще вариант
Для большинства случаев пройдёт, но всё же по логике работы это не RS-триггер!
Раз запоминает два состояния -значит триггер(память) !И не важно на чем он сделал .
Сложновато, однако, вот мой вариант SR-триггера:
26052до 32х SR-RS в одну mem:
(почему в эмуляторе странно [не]работает предустановка?)
Потому что энергонезавизимость не моделируется .
вот еще вариант ,всего 2 элемента :D
вот еще вариант ,всего 2 элемента :Dа to-bool и to-int не считаются?
ИМХО они посложнее будут всех остальных булевых и целочисленных...
Сергей0308
30.08.2016, 11:43
Для сторонников универсальности, наверно оптимально JK-триггер с галочкой энергонезависимости в свойствах! И лепи, что хочешь!
26079
Доброго времени суток! Подскажите пожалуйста: возможно ли подружить ПР200 с инкрементальным энкодером? Или посоветуете что то еще, нужен дисплей, ввод значения, и немного логики.
Пр-ки дружат с энкодером. Вопрос в скорости. смотри в поиске. где-то есть макрос.
Ревака Юрий
31.08.2016, 11:21
Добрый день!
Посмотрите в этой теме http://www.owen.ru/forum/showthread.php?t=21138
Добрый день господа! ответьте пожалуйста как сделать сравнение переменной с константой в овен логик!? с помощью ФБ EQ ничего не получилось, точнее первая переменная не изменяется.
У ПР110 есть аналоговые входы?
Павел Братковский
31.08.2016, 11:53
У ПР110 есть аналоговые входы?
аналоговые входы есть у пр114 и пр200
ответьте пожалуйста как сделать сравнение переменной с константой в овен логик!? с помощью ФБ EQ ничего не получилось, точнее первая переменная не изменяется.
на один из входов подать константу, на другой переменную, когда значения будут равны, на выходе появится 1....
аналоговые входы есть у пр114 и пр200
на один из входов подать константу, на другой переменную, когда значения будут равны, на выходе появится 1....
А в жизни , в реале это как реализовывается. измерять нужно давление, при достижении значения 25МПа - разомкнуть контакты.
напрямую с датчика на вход ПР и уже там преобразование идет или вне ПР? и как осуществляется торировка или калибровка датчика к ПР?
maximov2009
31.08.2016, 12:33
Добрый день. Всё зависит от типа выбранного Вами (или имеющегося) датчика. Если он имеет аналоговый выход, например 4-20ма, то на вход ПР подаёте сигнал с датчика. Устанавливаете параметры входа, например если Ваш датчик выдаёт при 0МПа - 4 ма а при 50МПа 20ма, то и в свойствах входа можете указать нижнюю границу 0 а верхнюю 50. Вещественное число внутри программы со входа подаёте на блок сравнения. В Вашем случае на мой взгляд лучше использовать блок GT. На верхний вход блока подаёте сигнал со входа на нижний прилепляете константу. Тогда при превышении константы, на выходе блока появится 1. Следите за типом переменных. Можете либо перед блоком GT поставить блок преобразования из вещественного в целочисленный или использовать блок FGT. Тип константы также выбирайте соответствующий.
А если датчик имеет настраиваемый дискретный выход, то можете взять с него сигнал на дискретный вход. Тогда может Вам и ПР не нужно.
С уважением.
Буэнос ночес.
Не могу понять, почему не отображается результат на экране.
В симуляторе все работает и значения есть.
На ПР200 только частично.
Поясню - есть 3 формулы в зависимости от выбора пользователя. Для одной показывает экран ПР200, для других нет). И еще странно, на входе смотрим значение - меняется для 3х случаев..
В симуляторе все ок
Какого цвета бубен и размера нужно достать?
Павел Братковский
02.09.2016, 05:16
Какого цвета бубен и размера нужно достать?
бубен по ходу нужен отвечающим, проект если показать, то может быть чем и поможем.....
Ревака Юрий
02.09.2016, 09:11
Буэнос ночес.
Не могу понять, почему не отображается результат на экране.
В симуляторе все работает и значения есть.
На ПР200 только частично.
Поясню - есть 3 формулы в зависимости от выбора пользователя. Для одной показывает экран ПР200, для других нет). И еще странно, на входе смотрим значение - меняется для 3х случаев..
В симуляторе все ок
Какого цвета бубен и размера нужно достать?
Добрый день! Прикрепите проект, а то ничего не понятно, ответ я думаю не заставит себя ждать.
Ревака Юрий подскажите как с помощью кнопок "<", ">" и кнопки "SEL" сделать управление выходами реле. Нужен пример хотя бы на одно реле. В остальном сам.
Ревака Юрий
02.09.2016, 10:36
Ревака Юрий подскажите как с помощью кнопок "<", ">" и кнопки "SEL" сделать управление выходами реле. Нужен пример хотя бы на одно реле. В остальном сам.
Во вложении файл, с экрана можно управлять 8 реле, ПО для ПР200-X-2.X
Добрый день а как можно переключать по ходу программы макросы с учетом что у них одни и те же входы и выходы. Т.е. макросы почти идентичные меняется только один или два параметра. входы те же . выходы те же. выполнятся должны друг за другом. помогите пожалуйста советом. никак не могу сообразить ...
Василий Кашуба
02.09.2016, 13:19
Добрый день а как можно переключать по ходу программы макросы с учетом что у них одни и те же входы и выходы. Т.е. макросы почти идентичные меняется только один или два параметра. входы те же . выходы те же. выполнятся должны друг за другом. помогите пожалуйста советом. никак не могу сообразить ...
Если макросы одни и те же, а уставки разные, то используйте один макрос и меняйте оперативно уставки.
Добрый день .
Дайте ссылку на пример управления аналоговым выходом в зависимости от сигнала на аналоговом (как пример поодержание заданного давления).
Реле ПР114.
Если макросы одни и те же, а уставки разные, то используйте один макрос и меняйте оперативно уставки.
А как это сделать подскажите пожалуйста!
Сергей0308
05.09.2016, 06:33
А как это сделать подскажите пожалуйста!
Способов много, например с помощью SEL, FSEL:
26166
Как пример, светофор:
Во вложении файл, с экрана можно управлять 8 реле, ПО для ПР200-X-2.X
Спасибо за файлик. Но если честно так и не разобрался как и где вы там что писали. Понял одно кнопки вы прописывали где то в экране. Повторить хотя бы с одним реле не смог. Почему не сделать в лоджике ФБ клавиш как у других производителе. На сколько мне известно у 2х производителей(железо как и у ПР200 ) такие ФБ есть. Будем ковырять дальше. Или ждать инструкцию по лоджику.
В индикаторе кнопки нельзя использовать по своему усмотрению ,в том смысле что они предназначены для работы со знакоместами (переходы ,изменения ,ввод значений, листание, итд). Нет возможности нажать, например на стрелку вверх и что то сделать в проекте по этому событию ...Можно работать только через переменные ,меняя их штатным образом на индикаторе кнопками .
И какой инструмент мне использовать. Комбобокс или динамический теккст.
И какой инструмент мне использовать. Комбобокс или динамический теккст.
http://www.owen.ru/forum/showthread.php?t=9398&page=226&p=200196&viewfull=1#post200196
Ревака Юрий
06.09.2016, 09:01
И какой инструмент мне использовать. Комбобокс или динамический теккст.
Для управления реле проще использовать на экране Ввод/вывод Boolean, и тогда этой переменной которую вы назначите в элементе можно сразу управлять реле, именно так и сделано в моем примере, а кнопки непосредственно управлять реле не могут, только экранами.
И какой инструмент мне использовать. .
Каскаду ;)
Подскажите, кто может!!! В чем заключается проблема, разобраться не могу . Все делается на основе ПР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В?
Добрый день! А джамперы на ПР200 у Вас установлены на режим 0-10В?
Джамперов я если честно не нашел (снаружи), а внутрь пока не лазил. Новенький пока.
Ревака Юрий
06.09.2016, 16:38
Джамперов я если честно не нашел (снаружи), а внутрь пока не лазил. Новенький пока.
Надо снять крышку и выставить джампер того канала который используется на соответствующий режим, положение джамперов для каждого режима есть в руководстве и на самой плате ПР200.
Надо снять крышку и выставить джампер того канала который используется на соответствующий режим, положение джамперов для каждого режима есть в руководстве и на самой плате ПР200.
Спасибо огромное Юрий!!!
Все нашел :) и даже заработало!!! В руководстве я читал про джамперы, но посмотрел снаружи и не удивив их подумал что может от них отказались и оставили только программное переключение. Так только у нас могут сделать - что если надо что-то переключить то необходимо все разобрать, а вот вынести это на панель - не судьба.
Вынеси на панель джамперы и тут же найдется умник переключит положение. Так что это как защита
Вынеси на панель джамперы и тут же найдется умник переключит положение. Так что это как защита
Добрый день! В таком случае можно и проводки перекрутить.
В целях оптимизации схем шкафов автоматики возникла необходимость разработать макрос управления кнопками ПУСК/СТОП в режиме РУЧНОЙ/АВТО.
То есть на весь шкаф автоматики ставим только один переключатель РУЧНОЕ/АВТО. А кнопок ПУСК/СТОП может быть несколько. Сделал простой макрос но что то не очень хорошо работает. Входа макроса :S1-"0" ручное ; "1"авто.
S2- ручное стоп; S3-ручное пуск; S4-авто стоп; S5- авто пуск. Макрос работает в режиме" Авто". В "Ручном" не хочет. И еще а режиме " АВТО" если подать "1" вход S3 или S2 происходит сбой работы . Подскажите в какую сторону смотреть. Если етсь еще варианты подскажите.
В целях оптимизации схем шкафов автоматики возникла необходимость разработать макрос управления кнопками ПУСК/СТОП в режиме РУЧНОЙ/АВТО.
То есть на весь шкаф автоматики ставим только один переключатель РУЧНОЕ/АВТО. А кнопок ПУСК/СТОП может быть несколько. Сделал простой макрос но что то не очень хорошо работает. Входа макроса :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
PETERA спасибо. Вечером отпишусь. Вы хорошо прописали условие . Сразу понятно где моя ошибка.
СП270 опрашивает ПР114.
"Передать блок данных" 14 регистров (с 768 по 781 в ПР) - связи нет.
"Передать блок данных" 13 регистров (с 768 по 780 в ПР) - все ОК.
"Копировать регистр" (768) и "Копировать регистр" (781) - данные передаются.
"Копировать регистр" (768), "Копировать регистр" (775) и "Копировать регистр" (781) - связи нет.
В чем может быть заморочка? Ограничение количества считываемых регистров у ПР114 для одного запроса?
Да ,не более 12 ,если не ошибаюсь .
СП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
Да ,не более 12 ,если не ошибаюсь .
Спасибо!
Все-таки ограничения ПР. Это где-нибудь задокументировано?
Тут нужно учитывать особенности панели.
На самом деле панель читает не 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 считывать.
Спасибо! Попробую предложенный способ с переадресацией или уменьшу кол-во сетевых переменных.
Да ,не более 12 ,если не ошибаюсь .
Для ПР200 такие ограничения тоже есть?
Ревака Юрий
14.09.2016, 16:40
Для ПР200 такие ограничения тоже есть?
Мне сейчас удалось прочитать 13 регистров, больше ошибка.
Ревака Юрий
14.09.2016, 16:41
Ну да ....модбас то один
Ну это же не модбас ограничивает.
Ну это же не модбас ограничивает.
Нет конечно ,его реализация в ПР ввиду определенных ограничений .А раз реализация его в пр200 сделана на основе кода ПР114 ,то результат будет один ,имхо.
Сергей0308
14.09.2016, 17:57
Ну это же не модбас ограничивает.
Если не ошибаюсь, товарищ Сталин говорил, что у каждой ошибки есть фамилия, имя и отчество!
Подскажите, функция округления до целого числа в Овен-лоджик имеется?
И кто-либо похожее реализовывал?
Подскажите, функция округления до целого числа в Овен-лоджик имеется?
И кто-либо похожее реализовывал?
Например так
26395
Будет работать только для положительных чисел
Мне сейчас удалось прочитать 13 регистров, больше ошибка.
а записать сколько можно?
Владимир Ситников
15.09.2016, 12:33
Например так
26395
Будет работать только для положительных чисел
А просто TO_INT(fADD(x;0.5)) разве не достаточно?
Зачем нужно fSUB и fGT?
А просто TO_INT(fADD(x;0.5)) разве не достаточно?
Зачем нужно fSUB и fGT?
Вы правы, достаточно.
Можно ли настроить Лоджик что бы те макросы что есть на диске компьютера были сразу доступны при открытии нового проекта.
Серёга Букашкин
15.09.2016, 13:27
Вы правы, достаточно.
Лучше защищаться от отрицательных, как на этом примере
Сергей0308
17.09.2016, 00:59
Лучше защищаться от отрицательных, как на этом примере
Но они же существуют! Без претензий на совершенство:
26427
Если кто захочет в INTе, выкладывал макросы конвертации в специальных макросах: http://www.owen.ru/forum/showthread.php?t=13106&page=3
Без претензий на совершенство:ну и вариант от меня, до кучи
PS пример того, что деление на 0/0 в ПР делается правильно! и ничего менять не надо!
Евстигнеев Максим
17.09.2016, 11:03
Можно ли настроить Лоджик что бы те макросы что есть на диске компьютера были сразу доступны при открытии нового проекта.
Сейчас нет.
Но у нас в планах - повышение функциональности менеджера макросов. В том числе и работа с оффлайн базой на диске.
Сергей0308
17.09.2016, 21:58
ну и вариант от меня, до кучи
PS пример того, что деление на 0/0 в ПР делается правильно! и ничего менять не надо!
Наверно наука в руках овен не стоит на месте, но мне всё дорогу говорили, что делить на ноль нельзя!
Наверно наука в руках овен не стоит на месте, но мне всё дорогу говорили, что делить на ноль нельзя!
Ну почему же -будет бесконечность .Если ноль поделить или умножить на любое число или бесконечность должно быть ноль ,имхо ...:rolleyes:
Сергей0308
17.09.2016, 22:39
Ну почему же -будет бесконечность .Если ноль поделить или умножить на любое число или бесконечность должно быть ноль ,имхо ...:rolleyes:
Бесконечность больше радует в денежном выражении!
Бесконечность больше радует в денежном выражении!
Кому что ,а мне Пушкин нравится ...
Подскажите, работаю с математикой и вот с чем столкнулся:
Функция 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 и сравните в действительности числа. В режиме симуляции там идет округление и не всегда эти числа равны расчетным.
Здравствуйте!
Может, кто сталкивался с такой проблемой и нашёл пути её решения:
Имеются три тэна которые управляются ПИД регулятором, на который информация поступает от датчика температуры. В зависимости от мощности выдаваемой ПИДом, работают один, два или три тэна. Последний тэн работает только в момент первоначального прогрева, а первые два тэна уже на поддержание заданной температуры. Вот и проблема от сюда вытекает: как уравновесить продолжительности работы каждого тэна отталкиваясь от фактической наработки, а не от календарного времени.
Посмотрите среди макросов были для управления насосами с равномерным временем включения. Его можно применить в данном случае.
Кажется AI делал для 8-ми насосов.
Не нашел в списке макросов, может плохо искал, поэтому прикладываю.
В вашем случае 3 тена, на входе ОК - битовая маска разрешенных устройств, в вашем случае 7 подойдет (всего три тена)
На входе Nm - количество в работе - в вашем случае 2
По фронту происходит переключение, правда если есть некоторая разница в выработке, то есть клацать и видеть результат сразу не получится.
На выходе число, битовая маска которого будет включать устройства.
Ну подхватывать выключенный для прогрева внешней обвязкой.
Почему - то не могу найти :(. Нашел вот такой вариант: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 и перенести логику.
Если не поддерживается, то придется копировать из листа в лист из старой программы в новую наверное.
з.ы. я приложил макрос, про который говорил.
Так я и попробовал, открыл свой проект, открыл этот, нажал копировать на макрос, а потом вставить уже в свой проект и мне программа сказала "Компонент RPTU не поддерживается в данном проекте".
В данном случае у Вас числа меньше 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.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..
Это надо у разработчиков уточнить, а если вывести эти числа на экран реле, что там происходит, главное чтоб в реале все было правильно.
Попробуйте сохранить макрос в виде файла с расширением tpl, затем добавить его в новом проекте, и так со всеми макросами которые встречаются в проекте.
Почему то нет возможности выбора пункта "экспорт макроса в файл". Иначе бы уже запихнул бы его в проект.
Grog откройте макрос на редактирование, зайдите в него и появится экспорт
Grog откройте макрос на редактирование, зайдите в него и появится экспорт
Еслиб пароль знал, то открыл бы :(
Ревака Юрий
20.09.2016, 13:43
Юрий, спасибо за совет.
Так и есть, в симуляции идет нехилое округление, это я знаю.
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..
Пообщавшись с разработчиками выяснилось, что данный эффект проявляется из-за переполнения, я изначально поторопился с выводами что с числами все нормально, я сравнил Ваше 5.1E9 с 2^32, оно оказалось меньше и я успокоился, но это работает для целых чисел, для float же размерность меньше, из-за отведения разрядов под знак и мантиссу. Вот поэтому и появилась такая "магия".
Ревака Юрий
20.09.2016, 13:47
Еслиб пароль знал, то открыл бы :(
Вы сейчас о каком файле говорите, специально открыл оба о которых шла речь, в одном архиве макрос в другом проекте вроде нет закрытых макросов?
Вы сейчас о каком файле говорите, специально открыл оба о которых шла речь, в одном архиве макрос в другом проекте вроде нет закрытых макросов?
В том котором макрос RPTU. И который собственно нужен.
Ревака Юрий
20.09.2016, 13:59
В том котором макрос RPTU. И который собственно нужен.
Где о нем упоминание, не могу найти ссылку чтоб посмотреть?
Где о нем упоминание, не могу найти ссылку чтоб посмотреть?
Макрос ротации оборудования число до трех по времени наработки
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 пробуйте, ну а на счет пароля, попробуйте к разработчику обратиться.
Перебросил макрос в проект для ПР200 пробуйте, ну а на счет пароля, попробуйте к разработчику обратиться.
А как Вы его перебросили? Возможно ли такое же сделать в уже существующий проект? Если нет то тогда придется мой существующий придется переписывать заново :( .
Ревака Юрий
20.09.2016, 14:30
А как Вы его перебросили? Возможно ли такое же сделать в уже существующий проект? Если нет то тогда придется мой существующий придется переписывать заново :( .
Запаковал в новый макрос:D, сейчас приложу сам макрос, загрузите его в свой проект.
В файле расширение txt нужно поменять на tpl.
Запаковал в новый макрос:D, сейчас приложу сам макрос, загрузите его в свой проект.
В файле расширение txt нужно поменять на tpl.
Спасибо! Внедрил в свой проект, потестил и оказалось это не совсем то что мне надо :"(:"(:"(.
Надо что-то еще искать.
Ну а вы пробовали макрос Ротация8 ?
Там то всего на выходе поставить EXTRACT bit и OR на их выходах для включения 3-его тэна с проверкой по температуре или с таймером для быстрого прогрева.
Вот даже что получилось. I2 - принудительная смена ротации, если необходима, можно не использовать
I3 - включение всех 3-х тэнов для прогрева
I4 - Вкл/выключение нагрева
Пообщавшись с разработчиками выяснилось, что данный эффект проявляется из-за переполнения, я изначально поторопился с выводами что с числами все нормально, я сравнил Ваше 5.1E9 с 2^32, оно оказалось меньше и я успокоился, но это работает для целых чисел, для float же размерность меньше, из-за отведения разрядов под знак и мантиссу. Вот поэтому и появилась такая "магия".
Ладно, Юрий , спасибо.
Тогда с учетом плавающей точки и знака сколько будет в моем распоряжении разрядов?
Меня интересует другое - как одно число до TO_INT превращается в совершенно другое после.
Т.е. было 2,5+10, а стало 3,9+9.
Именно вот это меня смущает. Магия ведь в чистом виде).
Вот это бы понять..всё очень просто: 2,5+10 and 0xFFFFFFFF ~ 3,5+9
Мне бы поточнее)
Как в справке.
Типа 32 разряда (4294967295) в вашем распоряжении.
Друзья, поигравшись с калькулятором и блоком TO_INT пришел к выводу, что в свободном доступе 31 разряд.
Т.е. при вводе в блок число более 268435455 оно становится 268435456 и все, далее никак.
26482
Поэтому всем кто использует функцию округления нужно будет предусмотреть защиту.
Юрий, не подтвердите мои доводы?
Юрий, не подтвердите мои доводы?я не Юрий, но кое-что понимаю.....
1) выход TO-INT ограничен всё же 32 битами, в подтверждение попробуйте перевести из INT в FLOAT и обратно 4294967040
а потом сделайте к нему fADD 768, и посмотрите....
2) вещественное число - это мантисса и экспонента, в сумме они занимают 32 бита, из них 24 бита мантисса и 8 бит экспонента
тот пример который вы привели
и все, далее никак
это вы упёрлис в округление младших бит...
что-то не пахнет там 32-мя разрядами, если смотреть на калькулятор
Друзья, поигравшись с калькулятором и блоком TO_INT пришел к выводу, что в свободном доступе 31 разряд.
Т.е. при вводе в блок число более 268435455 оно становится 268435456 и все, далее никак.
26482
Поэтому всем кто использует функцию округления нужно будет предусмотреть защиту.
Юрий, не подтвердите мои доводы?
что-то совсем запутал )) 268435455 - это 27 выставленных битов.
т.е. при подаче на вход (float - да?) 268435456(7,8 и больше) на выходе to_int видим всегда 268435456 ?
PS: а почему собственно блок называется INT (int - 2байта -32767 ... +32767), ведь по факту это же DINT ?
RA, да все так. И да, получается DINT.
AI!, это я обращался к техподдержке Юрию (разработчикам).
Вы лучше подскажите, как мне FLOAT перевести в целочисленное без потери.
Нужно округление для больших чисел.
целая часть для float ограничена 28 битами похоже.
Интересно узнать, а зачем вам такие большие флоаты с переводом в INT ?
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 и тд.
цифири и их порядки абстрактные - суть только старался передать
По ротации тэнов.
У меня сложилось такое впечатление, что меня не поняли, поэтому прикладываю скрин проекта. В нем вроде все понятно, но я постараюсь его описать.
На вход 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, в первом приближении как-то так.
А где у Вас считается наработка по тенам, необходимо добавить наработку по тенам и далее в зависимости от наработки сделать присвоение 1-2-3 по времени работы и затем в первую очередь включать в работу блок с номером 3 вторым 2 и последним 1, в первом приближении как-то так.
Так вот о чем и речь, что у меня его нет (не сделан), а хотел это все реализовать одним макросом. Но к сожалению такого не нашлось. :(
вывел на экран ПР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
и чем больше число будет, тем больше погрешность будет в хвосте
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...
Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)
А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.
Вот вам вариант с гистерезизами
SEL как раз стоит для полного выключения, независимо от гистерезисов.
А где у Вас считается наработка по тенам, необходимо добавить наработку по тенам
Так вот о чем и речь, что у меня его нет (не сделан), а хотел это все реализовать одним макросом. Но к сожалению такого не нашлось. :(
почитайте тему "Тема: ПР200 счетчик времени наработки. Помогите новичку. (http://www.owen.ru/forum/showthread.php?t=25020)"
Ревака Юрий
21.09.2016, 12:20
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...
Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)
А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.
Я так понял что изначально идея была вводить в работу тэны в соответствии с временем наработки, в данном же примере время можно только добавить для информации, но с учетом задачи я думаю нет смысла в таком точном подборе времени работы тэнов, и предложенный макрос подойдет. От себя могу предложить заготовку для регистрации времени включенного выхода реле, значение сохраняется после выключения прибора, для проверки использовал время в секундах, на реальном объекте можно увеличить дискретность до минуты например, хватит на 1000 часов, за одно через какое-то время можно сравнить как отработает ротация, насколько будет различие по наработке каждого тэна.
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
Ревака Юрий так макрос AI! открыт, вывести из него время каждого "насоса" или тэна не составит большого труда и для проверки и для сохранения и т.д.
Макрос именно так и работает, вводит очередное устройство с меньшим временем наработки.
з.ы. за такие макросы людям надо памятники ставить еще при жизни :)))
Ревака Юрий
21.09.2016, 12:40
Ревака Юрий так макрос AI! открыт, вывести из него время каждого "насоса" или тэна не составит большого труда и для проверки и для сохранения и т.д.
Макрос именно так и работает, вводит очередное устройство с меньшим временем наработки.
з.ы. за такие макросы людям надо памятники ставить еще при жизни :)))
Честно говоря с ходу, так и не понял где там хранится время наработки, ни одной энергонезависимой переменной там нет. Допустим мы знаем что 1й тэн отработал 10 часов, 2й 5 часов, третий 18, по логике нужно первыми включить 1 и 2, мы даем команду включить тэны и как эти значения участвуют в алгоритме? А если ПР было обесточено?
Grog я выложил вам рабочий пример, на основе макроса AI! и даже его изменил так, чтобы даже 3-й подключаемый ТЭН был расчитан по наработке...
Просто внимательно его посмотрите и поймете, что меняя количество рабочих одновременно ТЭНов (Nm) из доступных (Ок) даст вам нужный результат.
Просто гистерезисы должны управлять не тэнами, а указанием сколько включить в работу или отключить вообще (значение Nm=0)
А если покопаетесь в макросе, укоротите его например до 4-х устройств и благо в новом OL можно добавлять удалять входы/выходы то сможете вывести из макроса и время работы каждого из своих тэнов в переменные.
Вот вам вариант с гистерезизами
SEL как раз стоит для полного выключения, независимо от гистерезисов.
Спасибо, попробую разобраться. В этом деле я еще новичок.
Ну, макрос писался очень давно, еще до появления ПР200.
В таких системах ПР как бы должен быть на бесперебойном питании, что снимает проблемы с энергонезависимостью.
Да и погрешности думаю будут не велики в масштабах сауны по равномерности работы тэнов при отключении питания...
Время там не хранится, оно участвует в расчетах просто., думаю, что добавив входов, можно сделать и инициализацию переменных если уж так это нужно.
Кстати в ПР есть возможность сделать энергонезависимым весь FB ? ну чтобы не долбаться и памяти хватает ?
А если ПР было обесточено?макрос писался давно.... (http://www.owen.ru/forum/showthread.php?t=7023&p=97247&viewfull=1#post97247)
в корне не согласен.
если считать насосы равноправными,то их моторесурс достаточно быстро выровняется сам по себе.
(просто насос который имеет меньший моторесурс будет чаще включаться)
PS не нравиться - напишите свой. А я писал его просто так, только затем что бы выложить в форум, никто мне за него не платил, даже просто "спасибо" я услышал только сейчас....
PPS кстати, я работаю вообще по другому профилю...
Т.е. число 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 подразумевается макрос, а так состояние счетчиков можно хранить.
Ревака Юрий Да, имелась ввиду возможность указать программе, что весь FB или макрос энергонезависим. Иногда было бы полезным и более простым методом превращать переменные внутри макроса в запоминаемое состояние.
AI! ну за Boolen Вам тоже огромное спасибо. Конечно возможности OL не позволяют в макросах выставлять галочки, но небольшой эксель файлик помогает посчитать комбинацию для нужной работы входов при которой выход true :)
Да и вообще у Вас много математически направленных макросов и не только отличного качества....
И главное есть на чем учиться и к чему стремиться :)
ну если говорить именно о десятичных знаках (что после запятой) - то в преобразовании to_int они вообще в расчет не берутся - в любом случае обрежет до ближайшего целого
остановимся на том что, если в 23 бита значения укладываются - будет нормально преобразовываться, в соответсвии с приводимым типом данных ))
Я имел ввиду такие числа 4,29496E+07 или те, что в посте #2672
....
67108875 ==> 67108872.000000 ( 6,710875E+7) ==> 67108872 - есть погрешность
а если число "знаков" будет меньше
67108800 ==> 67108800.000000 ( 6,71088E+7) ==> 67108800 - нет погрешности
melky
Огромное Спасибо!!!
Реализовал Ваше предложение. Теперь буду "въезжать" в макрос и пробовать его допиливать под мое количество тэнов.
Ну спасибо не мне а AI! :)
Если памяти хватает, то там и допиливать то нечего, можно использовать как есть. Ну будут свет выключать когда пару тэнов на час больше поработают, не такой великий разброс.
Ну а если конечно озадачиться, то можно уменьшить макрос до 3-х устройств и вывести переменные о времени работы, чтобы они инициализировались при запуске ПР
Кстати можно не перелопачивать макрос, а просто поставить рядом с управляющими "контакторами" программы счетчики наработки с выводом на экран и в сетевую переменную.
И добавить корректировку выравнивания времени за счет изменения битовой маски (Ок) из переменной с экрана. (ремонт, техобслуживание тэна) просто много проработавший в битовой маске 0 ставим исходя из счетчика и все (запрещаем этому устройству включаться и все)
Ревака Юрий вам вопрос. Интересует связка ПР114+ПР114+ИП120=МСД200 . Есть необходимость сделать что то типа "черный ящик" . Без скад, КАСКАД, опс серверов и тд и тп. Или можно по пробовать ПР200+ ПР-М.24.Д16=МСД200. Есть примеры опроса пр этим устройством.
Ну спасибо не мне а 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.
То есть я беру из доков номера нужных мне регистров и пишу МСД. Просто идея такова. Пишем работу ПР( регистры входа и выхода) на флешку МСД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, я только намалевал!
Добрый день.
Вопрос такого плана
как сделать энергонезависимую проверку на смену даты.
например сегодня несколько раз отключали и включали ПР200 - последняя дата совпадает с датой часов реального времени - делать ничего не надо
сегодня выключили ПР200 - а завтра включат - нужно выполнить 1 раз действие ( пока разнятся дата последнего выключения и текущих часов)
заранее спасибо
Ревака Юрий
06.10.2016, 07:53
Добрый день.
Вопрос такого плана
как сделать энергонезависимую проверку на смену даты.
например сегодня несколько раз отключали и включали ПР200 - последняя дата совпадает с датой часов реального времени - делать ничего не надо
сегодня выключили ПР200 - а завтра включат - нужно выполнить 1 раз действие ( пока разнятся дата последнего выключения и текущих часов)
заранее спасибо
Какую переменную Вы берете за отсчет, день? Текущее время не имеет значения, когда сравнивается? Если так, то при выполнении действия единоразово записываете в энергонезависимую переменную текущий день, в следующий раз сравниваете переменную и день, если совпадают, ничего не делаем, в 00:00 переменную обнуляем, и так по кругу.
Ок. спасибо ! то что нужно !
Добрый день! Столкнулся с такой проблемой: OWEN Logic начал выдавать ошибку "Не удалось соединиться с сервером обновлений. Удаленный сервер возвратил ошибку: (404) Не найден." и так несколько дней, подумал что проблема у меня. Скачал заново более старую версию с сайта и переустановил её и теперь созданный проект (в более новой версии) не открывается ругаясь на "Owen.Visualization.dll", а при попытке обновления программа так-же ссылается на ошибку "404".
Можно ли исправить сервер обновлений или найти ссылку на свежую версию?
http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/Setup/
или посмотрите 90-ю версию для начала.
http://www.owen.ru/forum/showthread....l=1#post222336
или посмотрите 90-ю версию для начала.
Ссылка не работает :(
Добрый день.
Подскажите, по какой причине не сохраняются значения счетчика в моем проекте
То есть счетчик должен сохранятся после выключения питания ( если включили и выключали питание в течении одного дня) и сбрасываться в 0 только если изменился день (выключили в один день - включили в другой)
Павел Братковский
11.10.2016, 07:30
если правильно понял, счет нужно сохранять стн1....если так, то у вас при подачи питания детектор переднего фронта выдаст 1 на сброс счетчика, смысла в энергонезависемости в вашем случае нет.
смысла программы не знаю, попробуйте так 26980
(если включили и выключали питание в течении одного дня)у вас день по факту не сохраняется....
Сергей0308
11.10.2016, 08:33
И не имеет смысла после счётчика ставить энергонезависимость переменной, она всё равно перезапишется его значением!
Алексей Геннадьевич
11.10.2016, 08:39
acronis
Пробуйте. Всё как надо работает.
И секундный тик нужно так делать, чтобы он от RTC работал.
И не имеет смысла после счётчика ставить энергонезависимость переменной, она всё равно перезапишется его значением!
Это таки да. Энергонезависимость нужно в счётчике делать.
acronis
Пробуйте. Всё как надо работает.
И секундный тик нужно так делать, чтобы он от RTC работал.
Это таки да. Энергонезависимость нужно в счётчике делать.
Спасибо, все работает !
А генератор 0,5 -0,5 точности не даст секундной ?
http://www.owen.ru/forum/showthread.php?t=23843&p=223180&viewfull=1#post223180
Я вот здесь переделал свой счетчик с внедрением в него макроса от AI!. Собственно цель была чтобы пир модернизации прошивки ПР сперва проверять счетчик, потом в программе выставлять эти значения как по умолчанию и прошивать ПР. Проверенно - работает.
з.ы. Когда уже починят Modbus переменные, чтобы начальное значение сохранялось в ПР при прошивке ?
Будет погрешность на время цикла программы. При очень большом желании можно ввести корректировку.
Ревака Юрий
11.10.2016, 09:45
Будет погрешность на время цикла программы. При очень большом желании можно ввести корректировку.
Если использовать Blink, то по идее от цикла зависимости быть не должно, я думаю 1 секунду не так сложно будет выдержать.
[QUOTE=melky;223373]http://www.owen.ru/forum/showthread.php?t=23843&p=223180&viewfull=1#post223180
Я вот здесь переделал свой счетчик с внедрением в него макроса от AI!. Собственно цель была чтобы пир модернизации прошивки ПР сперва проверять счетчик, потом в программе выставлять эти значения как по умолчанию и прошивать ПР. Проверенно - работает.
з.ы. Когда уже починят Modbus переменные, чтобы начальное значение сохранялось в ПР при прошивке ?
QUOTE]
Очень хорошая идея с возможностью внесения первоначальных значений при смене ПО или реле !!!
Я сделал через Blink, для моих целей точности достаточно.
Алексей Геннадьевич
11.10.2016, 11:16
Спасибо, все работает !
А генератор 0,5 -0,5 точности не даст секундной ?
Это проверить надо на длительном промежутке времени.
В Codesys - "плавает", а как в ОЛ завязано - не в курсе.
Toxa_Pervik
13.10.2016, 19:21
Всем доброго времени суток.
Имею реле ПР110 которое надо запрограммировать, имею конвертер USB/RS485 от Carel. Реально ли подконектиться?
Понимаю что вопрос наверно уже звучал но искать нет времени:(
Пр100 программируется через интерфейс UART ///Нужен ПРкп
RamzesWL
13.10.2016, 21:17
Добрый вечер!
Кому не сложно подскажите пожалуйста новичку, как в ПР200 в овенлоджике сделать так чтоб Реле включало исполнительный орган только на каждом нечетном срабатывании датчика. Мне надо, чтоб при движении каретки станка вперед реле срабатывало, а когда она назад возвращается мимо этого же датчика, чтоб не срабатывало.
Заранее спасибо!
Сергей0308
13.10.2016, 21:27
Добрый вечер!
Кому не сложно подскажите пожалуйста новичку, как в ПР200 в овенлоджике сделать так чтоб Реле включало исполнительный орган только на каждом нечетном срабатывании датчика. Мне надо, чтоб при движении каретки станка вперед реле срабатывало, а когда она назад возвращается мимо этого же датчика, чтоб не срабатывало.
Заранее спасибо!
Так Вам надо через раз чтобы срабатывало! Из д-триггера можно сделать т-триггер, заодно у д-триггера сброс есть для определения начала отсчёта, на всякий случай! Надеюсь идея понятна?!
Как-то так:
27026
Toxa_Pervik реально, купив у китайцев UART-RS485 двунаправленный с автоопределением передачи. 135 рублей примерно
Или сразу USB-UART
Но все ждать
Можно например делить на 2 с остатком выход универсального счетчика, определяя чет/нечет.
Toxa_Pervik реально, купив у китайцев UART-RS485 двунаправленный с автоопределением передачи. 135 рублей примерно
Или сразу USB-UART
Но все ждать
.
А потом выяснится что нет автоперенаправления или питание 3,3в ;)
RamzesWL
13.10.2016, 22:12
Сергей0308
Сергей, все работает! Спасибо огромное!
rovki если взять такой, то все у него есть, в том числе и питание либо 5 либо 3,3
https://ru.aliexpress.com/item/Single-Chip-Microcomputer-TTL-Turn-RS485-Module-Automatic-Flow-Control-Module/32385757602.html
Здравствуйте! Как подключить ДТС324 к аналоговому входу ПР200 через барьер ИСКРА-ТС? На выходе барьера два провода соединены, а на входе, судя по схеме - нет. Как быть?
Павел Братковский
31.10.2016, 08:04
пр 200 нет компенсации длинны линии, на аналоговый вход можно подать или А и С или В и С, я бы например А и В закоротил...
а омметром и зажигалкой не пробовали проверить?
То есть на входе у нас будет двухпроводное подключение?
Павел Братковский
31.10.2016, 08:07
То есть на входе у нас будет двухпроводное подключение?
РЭ так и говорит...стр 61.
А как можно задать аварийную ситуацию "обрыв датчика" и "КЗ датчика" в ОЛ? У меня ДТС324. "Обрыв" можно определить по недопустимому времени отсутствия сигнала на входе?
Vlad952mir
31.10.2016, 09:34
Неделю назад занялся ПР200. Появились вопросы.
ПР-200 не выводит переменную, и при редактировании элементы ввод/вывод
не сохраняет переменную, после нажатия кнопки ОК.
Похоже экран не воспринимает эту переменную.
Ревака Юрий
31.10.2016, 10:06
Неделю назад занялся ПР200. Появились вопросы.
ПР-200 не выводит переменную, и при редактировании элементы ввод/вывод
не сохраняет переменную, после нажатия кнопки ОК.
Похоже экран не воспринимает эту переменную.
Добрый день! Приложите проект, возможно Вы пытаетесь редактировать переменную которая установлена на выходе какого-то элемента, например счетчика, тогда да, редактировать ее не получится, т.к. ее будет перезаписывать счетчик.
Ревака Юрий
31.10.2016, 10:10
А как можно задать аварийную ситуацию "обрыв датчика" и "КЗ датчика" в ОЛ? У меня ДТС324. "Обрыв" можно определить по недопустимому времени отсутствия сигнала на входе?
В зависимости от используемой НСХ, в макросах которые находятся в онлайн базе используется сравнение сопротивления, если оно меньше рабочего минимума, считаем к.з если больше рабочего максимума то обрыв.
Ещё бы разобраться в них)
Vlad952mir
31.10.2016, 11:41
вот проект, там достаточно много лишнего, поскольку пробую. переменная цикл
Vlad952mir
31.10.2016, 11:44
Спасибо, Юрий. что то не нашел где в обычном ответе вставить файл.
получилось отдельно, как вопрос, на следующей странице.
Vlad952mir привяжите выход MUL в схему, скорее всего компилятор ее вообще не включает в прошивку...
Ревака Юрий
31.10.2016, 12:26
вот проект, там достаточно много лишнего, поскольку пробую. переменная цикл
У Вас переменная Цикл никуда не подключена, для компилятора ее как-бы не существует, попробуйте включить ее в логику, например как на скриншоте, при установке с экрана переменной =10 у Вас включится реле и переменная должна редактироваться.
А как узнать у меня ДТС324 50М W100=1,426 или 50М W100=1,428? В РЭ не написано.
Vlad952mir
31.10.2016, 12:45
У Вас переменная Цикл никуда не подключена, для компилятора ее как-бы не существует, попробуйте включить ее в логику, например как на скриншоте, при установке с экрана переменной =10 у Вас включится реле и переменная должна редактироваться.
Спасибо, попробую
А если задать при экстремальных значениях моего датчика (-50...+150°С) в формулу для пересчёта сопротивления на входе в температуру и получить сопротивления для мин. и макс. температуры моего датчика, это будет точная уставка на проверку по "обрыву" и "КЗ" датчика?
Ревака Юрий
31.10.2016, 12:47
А как узнать у меня ДТС324 50М W100=1,426 или 50М W100=1,428? В РЭ не написано.
Пришлите полное наименование с паспорта, или как вариант измерить сопротивление при 100 °С.
Датчика нет, только техзадание, спросить тоже пока никак нельзя у заказчика. Это можно уточнить на этапе согласования. А вообще возможно так перевести мин. и макс. сопротивление в температуру? Точное значение получится? Чтобы попроще схема получилась.
Ревака Юрий
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 уставки и реле дребезжали.
Спасибо. неужели это так критично? Попробую теперь продолжить дальше.
А почему в группе "сопротивление больше диапазона" происходит умножение на 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, пример нужно отладить в режиме симуляции по задачу.
Спасибо, разобрался. Буду пересчитывать.
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?
Ревака Юрий
31.10.2016, 15:07
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?
Это где такое написано,
Сергей0308
31.10.2016, 15:25
Кстати, в ТЗ указана температура хранения прибора ОВЕН -56°С, это реально? ПР200 такую температуру в нерабочем состоянии перенесёт?
Наверно для Марса разрабатываете, там такая средняя температура?!
Да я понимаю, что это всё их непонятные запросы) У нас на заводе ТРМ1 и ему подобные приборы не только хранились, но и несколько лет успешно работали и при минус 35 градусах) Пока печка не нагреет воздух в операторской до плюсовой температуры.
А формула-то для расчёта температуры по сопротивлению останется та же? Какой коэффициент изменится?
Вопрос ещё возник: как работать с отрицательными числами в ОЛ? При расчёте температуры.
Сергей0308
31.10.2016, 22:56
Вопрос ещё возник: как работать с отрицательными числами в ОЛ? При расчёте температуры.
В ОЛ через FLOAT, передавать туда-сюда можно во FLOAT и INT, как угодно, для интов макросы есть: http://www.owen.ru/forum/showthread.php?t=13106&page=3
27371
У меня после деления и появления знака минус, всё нарушается. Перестаёт температуру на выходе показывать.
Сергей0308
31.10.2016, 23:23
У меня после деления и появления знака минус, всё нарушается. Перестаёт температуру на выходе показывать.
Вы хоть на картинке покажите, а то с Вами не желая, ясновидящим станешь, а лучше в проекте, типа здесь бяка:
27372
Если подать на вход 50 Ом, то всё нормально - 0 градусов на выходе. Меньше 50 Ом, сразу не выходит ничего хорошего.
так вы от значения меньше 1 отнимаете 1-цу, и чего вы хотите ? вас напугала запись -2Е-02 ?
на экран выведите переменную, она будет нормальной, так симулятор работает. Ну и если надо округлите до 1 и 2-х знаков после запятой то и в симуляторе будет нормально работать.
Сергей0308
31.10.2016, 23:52
Вот изображение 27373
В ОЛ отрицательные значения только во FLOAT, если хотите в инте передать по сети, я макросы Вам предлагал, нет Вы идёте своим непонятным путём, так у Вас полная лабуда получится!
Короче FLOAT значение, если хотите иметь один знак после запятой умножаете на 10, два на 100 и преобразуете в инт с помощью моего макроса, передаёте куда хотите в инте, после передачи делите, на сколько умножали до передачи, всё! Не помешает округлить, не очень давно округление разбирали по косточкам! Если на экран ПР надо, только во FLOAT!
Если вкратце в ОЛ INT не INT, а UINT, точнее UDINT, поэтому нельзя в него отрицательные значения преобразовывать, они не бывают отрицательными!
Если лениво идти по ссылке, вот Вам проект с макросами:
Просто хотелось бы разобраться, а не копировать) В макросах не всё понятно. А на экран не надо выводить, только по сети передать.
Сергей0308
01.11.2016, 06:57
Просто хотелось бы разобраться, а не копировать) В макросах не всё понятно. А на экран не надо выводить, только по сети передать.
Это приветствуется, что не совсем понятно, спросите, объясню, как смогу!
Для чего 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
Ничего не получается с этими макросами. Оставлю как есть. По сети такие же числа передадутся: -4,7Е+00 или нормальная температура?
Сергей0308
01.11.2016, 09:07
Ничего не получается с этими макросами. Оставлю как есть. По сети такие же числа передадутся: -4,7Е+00 или нормальная температура?
INT - целочисленный тип данных, если надо со знаками, после запятой, делаем через умножить-разделить на 10 в n-ой степени, где n-количество знаков, после запятой! Я уже писал об этом! Контролируем, чтобы не переполнялось, т. е. от -32768 до 32767!
Float у меня. И, хотелось бы узнать, почему некоторые линии связи в ОЛ красного цвета? Похоже, что они к целочисленным и булевским блокам подходят.
Сергей0308
01.11.2016, 09:16
Float у меня.
Возможно нужно байты "потусовать" в массиве из двух вордов!
27382
И повторюсь на всякий случай, мои макросы только чтобы в инте передавать по сети, если передаёте во флоате, они не нужны, как-то так!
float передается нормально, хоть + хоть минус.
в виде 4Е+ и так далее отображается только в симуляторе, в приборе так же все нормально при выводе на экран и передачи по сети.
Спасибо всем за помощь!) Я хоть и почти год как на сайте, но работать по этому направлению почти не приходилось) Поэтому так много непонятного и глупых вопросов) Больше всего сложностей с созданием разветвлённых и сложных программ в ОЛ, сами логические функции вопросов не вызывают.
Если в симуляции вас не устраивает 4Е+ поставьте округлялку тогда и видеть все будете :)
Сергей0308
01.11.2016, 10:56
Спасибо всем за помощь!) Я хоть и почти год как на сайте, но работать по этому направлению почти не приходилось) Поэтому так много непонятного и глупых вопросов) Больше всего сложностей с созданием разветвлённых и сложных программ в ОЛ, сами логические функции вопросов не вызывают.
Так начинать надо с самого простого, чтобы понятно было, потом, постепенно двигаться к более сложному, а сразу со сложного не начинают, всё равно ничего не понятно и толку никакого, я так думаю!
вот Вам проект с макросами:предложу свой вариант Int-Float, более простой... (по крайней мере с точки зрения ПР)
AI! а где на выходе минус при значении больше 65536 ?
в общем я не понял как оно работает :) флоат там только в названии....
AI! а где на выходе минус при значении больше 65536?встречный вопрос - как в 16 бит затолкать числа больше 65536?
PS на входе -32768..32767, только в "неправильном виде"
(65535=-1, 32768=-32768, даж не знаю как объяснить.... просто поверьте, а поймёте потом...)
PPS на выходе float - это тип данных такой...... в OL - сиреневенький...
AI! через переменные если например и делить на 2 регистра
я имел ввиду сразу делать с дробной частью. Ведь -32768 еще надо будет превратить например в -40 градусов... или в -25,43 градуса
у меня вопрос, целочисленное 65535 = - 1 , а вот 32768 = сколько ? оно должно быть в минусе больше или меньше 65535 ???
AI! через переменные если например и делить на 2 регистраЯ всего лишь оптимизировал макрос уважаемого Сергей0308, по функционалу все вопросы к нему...
ну я вообще спросил про отрицательные числа и как они представляются в целочисленном формате, а то что-то я запутался :)
ну я вообще спросил про отрицательные числа и как они представляются в целочисленном формате, а то что-то я запутался :)загуглите "shot int" и "обратный код"
Vlad952mir
01.11.2016, 15:49
Какие величины можно выводить в порты аналогового выхода при 4 - 20мА и 0 - 10 В?
у меня вопрос, целочисленное 65535 = - 1 , а вот 32768 = сколько ? оно должно быть в минусе больше или меньше 65535 ???ИМХО когда думали что делать с 32768 - решили просто, раз старший (знаковый) бит =1, значит число должно быть отрицательным...
65535=-1, 32768=-32768
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В аналогично.
Спасибо. неожиданно.
Так вроде это есть в руководстве... да и многим привычнее после ПЛК 63, 73
Сергей0308
01.11.2016, 18:51
Я всего лишь оптимизировал макрос уважаемого Сергей0308, по функционалу все вопросы к нему...
Странное недовольство, что поделаешь диапазон INT ограничен(-32768 - 32767), тут ничего не поделаешь, можете смастерить свой собственный тип данных если недовольны, можно типа х,ххх умноженное на 10 в энной степени, 10 не передаём, в уме держим, короче в натуральном виде число, так можно сэкономить несколько байт, ну прославится нельзя, всё уже придумано до Вас, можете по аналогии с моим сделать макрос для DINT, если Вам диапазона INT катастрофически не хватает!
Странное недовольствоу меня нет недовольства. Я не до конца понимаю где оно используется, именно за этим я сослался к Вам.
Но если макрос есть, значит он кому-то нужен.
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, что мне очень непонятно, так что флоаты только в случае крайней необходимости теперь буду применять!
Здравствуйте! На ПР200 надо с экрана задавать число с запятой в таймер, на экране задаю тип переменной-вещественная,дальше в программе эту переменную обозначаю как с плавающей запятой, дальше умножаю мулом на 1000 и запись в таймер-не работает. Вопрос-все ли правильно делаю? С целыми числами все работает.
таймер не понимает вещественных переменных. картинку выложите что у вас там...
А просто целочисленное на экране сделать и передавать в таймер ?
Именно с запятой число надо27400
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
для корректности надо еще fABS поставить.... а то мало ли, через минус начнут записывать :)
для корректности надо еще fABS поставить.... а то мало ли, через минус начнут записывать :)
Нужно просто контроль диапазона включить
27404
Если переменная не сетевая то да, если сетевая, то контроль не работает...
Серёга Букашкин
02.11.2016, 11:39
Есть желание передавать 2 целочисленные переменные по 485 с мастера ПР200 одним посылом, упаковав в сетевую все 32 бита. Это будет работать? По сути ведь целочисленная имеет 32 бита и можно заполнять их по полной если там не числовые данные. Но как отдать 32-битную целочисленную в сетевую "с плав запятой", ОЛ не разрешает, требует преобразовать во флоат, а мне не надо преобразования, это не число, а набор битов! Обратное преобразование из флоат не вернет исходногоЕсть ли какая хитрость для реализации передачи 32-битной целочисленной одним посылом? То есть имею потребность в еще одном виде сетевой переменной "целочисленная-32", которая передавалась бы аналогично флоат (2-мя соседними регистрами), но не требовала бы преобразования во флоат. Тогда на приеме можно было бы либо объявить тот же формат, либо считывать обычными целочисленными сетевыми переменными младшую и старшую часть. Сейчас получается, что фактически имея в целочисленной переменной DINT, можно реально для передачи по сети пользоваться только его половинкой, это нехорошо.
Если ПР будет мастером надо пробовать так как нет групповых запросов, а если слейвом то ради бога, до 12 регистров точно поддерживается групповой запрос, просто раскидывайте на 2 регистра (2 переменных) свою переменную и все.
melky спасибо большое все отл. работает. Все от невнимательности, не заметил fMUL
Сергей0308
02.11.2016, 12:09
Если ПР будет мастером надо пробовать так как нет групповых запросов, а если слейвом то ради бога, до 12 регистров точно поддерживается групповой запрос, просто раскидывайте на 2 регистра (2 переменных) свою переменную и все.
А по-моему надо раскидывать на два соседних регистра, а не просто на два!
Сергей0308 ну да, именно соседних, чтобы в SCADA например сказать, что с ними потом делать.
При необходимости переставить местами программно в ПР, если SCADA не умеет этого делать или идут общие настройки для всех регистров.
Есть желание передавать 2 целочисленные переменные по 485 с мастера ПР200 одним посылом, объявив в свойствах сетевой 32-битной переменной, что она как бы "с плав запятой", и упаковав в нее все 32 бита.
в ОЛ это не подойдет, потому что пеобразование TO_FLOAT изменит текущее целочисленное значение условно просто добавив точку с ноликом, к расположению состояний разрядов это не имеет отношения и даже если что то можно придумать, то могут возникнуть ситуации когда флоат превратится в нечисло
Но как отдать 32-битную целочисленную в сетевую "с плав запятой"у float точность всего 24 бита
перегоняя из INT в FLOAT и обратно числа больше 16777216 будут обрезаны младшие биты.
Подскажите , как организовать SEL , но для float. не используя макрос fSave.
Сергей0308
05.11.2016, 14:38
Подскажите , как организовать SEL , но для float. не используя макрос fSave.
Есть же в онлайн базе макросов:
27452
Да и миллион раз рисовали:
27453
Здравствуйте! Недавно задавал вопрос по настройте термометров сопротивления (как пересчитать сигнал в Омах с датчика в температуру). А при токовом сигнале с датчика те же действия? Ток преобразовать по формуле в температуру? И по какой формуле считать, если датчик Pt100? С ПР200 связь через барьеры искрозащиты.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot