Попробовал. Так не хочет работать с float как я хочу. СМИ2 автоматом дорисовывает ещё два нуля. Например, на выходе макроса 1,2 , то при отображении на СМИ2 всёравно выходит 1,200.
Вид для печати
Коллеги, опять нужна ваша помощь! )))
Надо с дисплея ПР200 менять кнопками текст с "вкл" на "выкл" и обратно так, чтобы в самой схеме ОЛ у переменной менялось состояние с 1 на 0 и обратно.
Подскажите, как сделать? ))
Вот здесь посмотрите: http://www.owen.ru/forum/showthread.php?t=29400&page=3
В посте#22, там проект есть! Нужная переменная на первом экране во второй строке!
Большое спасибо!
ПР200 потерял все энергонезависимые переменные, сброс всех переменных в 0. Причина неясна вообще. ПР отключалось примерно на 30 минут.
На столе лежит ПР с такой же программой, был выключен гораздо дольше и ничего не слетело.
Что может быть причиной и как проверить ?
Версии прошивки не знаю, как-то даже не посмотрел. но примерно оба покупались в одно время, то V1.12
Сергей0308 - совершенно верно, настроечные параметры все оказались по нулям, переменные энергонезависимые с возможностью изменения по сети.
ВСЕ СРАЗУ в 0, ну могу понять хозяин одну или парочку по незнанию скинул... но говорит что ничего не трогал.
К тому же, не все переменные можно изменить по сети (всегда перезаписываются из программы из энергонезависимых переменных), но и они оказались по нулям.
не подходит, еще раз повторяю, есть энергонезависимые переменные, которые в программе только пишутся в modbus но никак из modbus не изменяются, они тоже были по нулям.
Программа записана в версии ОЛ 1.9.
В моем понимании, если переменная энергонезависима и когда-то сохранила значение, например 5, то даже если при выключении питания по тем или иным причинам не может сохранить новое значение, например 6 или 7, то уж 5 никуда деться не может.
А так все стали по нулям.
В какой версии были проблемы чтобы посмотреть ?
хм. попробую прошить в 1.12 если программу переделывать не придется, посмотрим. Хотя репутацию конечно подпортили и уже не в первый раз.... чего только стоят объединенные пары реле... в ухо бы дать разработчикам... :)
Конечно не так. Возьмите съемные разъемы меньшего габарита, все равно встроенные реле дешевое г, так хоть для слаботочных систем можно было бы использовать без промежуточных реле.
Значит плату надо было делать иначе, чтобы еще разъемы поместились, но что-то делать правильно, а не через ж, объединив реле в пары.
Применений у программируемых реле много, не только коммутация 220В. В этом и была ошибка.
Иногда смотришь, по задаче подходит, начинаешь деньги считать, да ну его этот ОВен и ищешь что-то другое. Только из-за такой мелочи на взгляд производителя...
Как то так.
А мне всё нравится в ПР200, функционал, корпус, вообще идеально. И дело даже не в деньгах, а в удобстве монтажа и программирования. Я привык к OL и мне он нравится, несмотря на все его мелкие косячки. Зато сколько техподдержки, макросов и прочего-прочего, попробуйте такое-же найти под митсубиши альфу например или сименс логу. Ещё бы в таком-же корпусе как ПР200 делали бы модули ввода МВ110 и другие, а то вот эти неудобные винтики которые иногда теряются, уж больно напрягают. Ну и добавить бы строк и символов дисплею. А парные реле не напрягают, когда это необходимо разделить, разделяю промежуточными реле и всего делов.
RX9COZ да мне тоже нравится ПР200, у него очень сильная математика, универсальные аналоговые входы (если сравнивать с другими).
НО - дешманские реле внутри (да и черт бы с ними) и объединенные пары реле, что приводит к удорожанию при использовании в слаботочных системах, где сухие контакты должны быть гальванически развязаны между собой (приходится доставлять внешние релюшки)....
В остальном особых нареканий нет, ну кроме косяка с начальными значениями modbus переменных (работало на ПР114) и непонятных их сбросов, это я первый раз вижу.
Вернусь к СМИ2. Ещё одна проблема вылезла. При отключении питания СМИ2 (по цепи 24В) и вновь его подключении не отображаются показания переданные ПР200 на СМИ2, при этом контроль статуса устройства заведено на переменную и вывел на лампочку F1, думал чего не определяется, но нет, всё корректно, СМИ2 распознаётся ПРкой как подключенное (отвечает тобишь), но вывод значения прекращается, отображаются нули и через некоторое время сигнал что нет связи типа, но она есть. Такое происходит не всегда, но очень часто. Полное отключение СМИ2 и ПР200 проблему решает. СМИ2 запитано от встроенного в ПР200 блока питания. OL 1.9.149 , СМИ2: 2.06
Пробовали запитывать от стороннего блока питания?
Попробовал только-что. Ситуация такая-же. При включении СМИ2 от внешнего БП иногда сразу выводит данные, а иногда нули, а иногда спустя несколько секунд-десяток секунд начнёт отображать информацию. Конкретно в моём случае это не так критично, просто описал выявленный случайно факт. Но было дело, что оставил наночь показывать температуру, ночью показывало, утром проснулся - ошибка |- -|. В программе для теста СМИ2 предусмотрел переход из int во float через регистр R17, поменял его с панели ПР200 на другой и СМИ2 очнулся без перезагрузки.
upd: на почту отправил
Вышлите проекты на СМИ2 и на ПР нам на почту тех. поддержки support@owen.ru, пожалуйста.
Приветствую!
Подскажите, пожалуйста, как подключить к ПР200 к аналоговому входу датчик Pt100, у которого на выходе 3 провода? Только на 2 провода, а третий оставляем неподключенным?
Требуется подключить к ПР200 датчик фотометки для управляемой протяжки пленки. Есть у кого-нибудь опыт подключения такого датчика к ПР200?
Так вы скажите какой сигнал на выходе датчика .?
Я сейчас подбираю такой датчик. Никогда раньше с ними не работал, понимаю, что ничего сложного, скорее всего обычный дискретный pnp-сигнал +24VDC на выходе. Вопрос больше в другом - если кто-то использует такие датчики, то какие зарекомендовали себя с лучшей стороны (и, соответственно, контакты/явки/пароли поставщиков)))
Добрый день. Различаются в основном 2 вида таких датчиков.
1. Датчик контрастный - различает только саму фотометку, которая печатается отдельно от основного фона. Видит градации серого.
стоит примерно 10-30кр.
2. датчик цветной - различает именно определённый цвет, ориентируясь на длину волны света. Стоит примерно 40-80кр.
Сигналы у них одинаковые.
Это дискретный сигнал. Тип пнп или нпн выбирается при заказе. Есть и универсальные.
Датчики обычно обучаемые.
Мы такие датчики используем, какие лучше - не скажу. используем те, что имеем от поставщиков оборудования.
Если подбирать - зависит от региона.
Если интересно - можно в личку, скину какие у нас используются.
Вам вообще для чего?
с уважением.
Добрый день.
Пользуемся такими датчиками метки - http://www.sensor-com.ru/catalog/tag
Датчики не обучаемые, поэтому надо правильно подобрать цвета излучения датчика и метки\фона. Других замечаний к ним нет, работают без нареканий.
Для ПР200 нужны с PNP выходом; и надо учитывать частоту поступления сигнала с датчика в ПР200.
IMHO лучший датчик контрастной метки - лазерный SICK. Используем модель KT3L.
http://www.owen.ru/forum/showthread....l=1#post278339
Если сделать "правильный" макрос
Вложение 39135 Вложение 39136
то и считать время восхода/заката он будет верно. :rolleyes:
Сравните расчетные значения
Вложение 39137
со справочными - это Ваша картинка на 14-05-2018 г.
Вложение 39138
Еще лучше чем в симуляции.
Начало здесь http://www.owen.ru/forum/showthread....l=1#post278333
и возражения Сергея по макросу здесь http://www.owen.ru/forum/showthread....l=1#post278339
ЗЫ
Макрос сделан по мотивам OSCAT
Это переработаный ФБ с минимальным использованием других функций библиотеки OSCATКод:FUNCTION_BLOCK SUN_TIME_My
VAR_INPUT
LATITUDE : REAL; (* Широта географического положения *)
LONGITUDE : REAL; (* Долгота географического положения *)
UTC : DATE; (* мировое время *)
H : REAL := -0.83333333333; (* Высота над горизонтом для восхода солнца *)
END_VAR
VAR_OUTPUT
MIDDAY : TOD; (* Астрономический полдень по Гринвичу *)
SUN_RISE : TOD; (* Восход солнца на текущий день по Гринвичу *)
SUN_SET : TOD; (* Заход олнца на текущий день по Гринвичу *)
SUN_DECLINATION : REAL; (* Склонение солнца над горизонтом в полдень в градусах *)
END_VAR
VAR
dk: REAL; (* Склонение солнца над горизонтом в полдень *)
delta: TIME; (* Дельта от полудня для восхода и захода солнца *)
b: REAL;
RAD_H: REAL;
T: REAL;
OFFSET: REAL;
END_VAR
VAR CONSTANT
PI2: REAL := 6.28318530717958647692528676655900576;
END_VAR
B := latitude * 0.0174532925199433;
T := UINT_TO_REAL(DAY_OF_YEAR(utc));
OFFSET := -0.1752 * SIN(0.033430 * T + 0.5474) - 0.1340 * SIN(0.018234 * T - 0.1939);
MIDDAY := DWORD_TO_TOD(REAL_TO_DWORD((12.0 - OFFSET - longitude * 0.0666666666666) * 3600000));
DK := 0.40954 * SIN(0.0172 * (T - 79.35));
sun_declination := MODR(57.29577951308232 * DK, 360.0);
IF sun_declination > 180.0 THEN sun_declination := sun_declination - 360.0; END_IF;
sun_declination := 90.0 - LATITUDE + sun_declination;
RAD_H:= MODR(0.0174532925199433 * H, PI2);
delta := DWORD_TO_TIME(REAL_TO_DWORD((ACOS((SIN(RAD_H) - SIN(B) * SIN(DK)) / (COS(B) * COS(DK))) * 3.819718632) * 3600000));
sun_rise := MIDDAY - delta;
sun_set := MIDDAY + delta;
Интересный макрос получился для вычисления ARCCOS(x)
Вложение 39142
Если сравнивать с макросом, в котором используется разложение в ряд
то для значений X > 0,57 в плоть до 1 точность по этой формуле существенно выше
Чем я и воспользовался:)
Вложение 39143
А ниже - классический способ вычисления с помощью рядов.
Здесь "традиционный" ARCSIN разложен в ряд, а ARCCOS вычисляется через pi/2 - ARCSIN
Вложение 39144
Во вложении сам макрос SUN_TIME.tpl
И пример в 12 версии OL
На выходе макроса время в двух форматах
- аналог TIME_OF_DAY (сокр. TOD) содержит время суток, начиная с 0 часов (с точностью до миллисекунд)
- и в секундах начиная с 0 часов
Причем время рассчитано по Гринвичу. По этому для практического применения нужно использовать смещение, соответствующее часовому поясу Вашего места.
Назначение входа H см. комментарий внутри макроса.
Попутно были сделаны вспомогательные макросы, часть из них может быть использована не зависимо от Sun_Time
Может Юрий включит данный макрос в базу, если посчитает мой труд достойным для этого.
UPD
Сделал новую версия макроса SUN_TIME_v2.tpl
- Время на выходах толоько в сек
- Используются новые версии вспомогательных макросов
fMOD(v2) (остаток от деления для float)
Вложение 40708
FLOOR2(v2) (возвращает наибольшее ЦЕЛОЕ число, которое не больше, чем ВЕЩЕСТВЕННОЕ(float) X)
Вложение 40706
TO_FL(v2) (Конвертация целого со знаком в FLOAT)
Вложение 40707
Результат для Москвы на 10.01.2019
Вложение 40709
С сайта https://planetcalc.ru/300/
Вложение 40710
UPD2
Обновил версию макроса до SUN_TIME_v3.tpl
Изменения связанны с потенциальной ошибкой в макросе FLOOR2(v2)
Тк преобразование TO_INT для отрицательных FLOAT дает 0, то и функция FLOOR2 будет работать не правильно для отрицательного аргумента.
Вложение 43343
Скорей всего, что для данного применения макроса FLOOR2 отрицательных значений у аргумента не будет, но не хочется его в таком виде оставлять.
Новая редакция
FLOOR2(v3)
Вложение 43344
Макрос FLOOR2 используется в макросе fMOD, по этому fMOD получил новую редакцию
Вложение 43345
Вложения - архив с макросом и тестовый пример обновил.
з.ы. а никто не делал макрос времени в формате double ????
C# DateTime и перевод в double - DateTime.ToOADate() и обратно соответственно DateTime.FromOADate
Посмотрите тут http://www.owen.ru/forum/showthread....l=1#post219991
Набор макросов http://www.owen.ru/forum/showthread....l=1#post219992
Может поможет?