Просмотр полной версии : пр200
Здравствуйте.
помогите с написанием программы:
Имеется три насоса, которыми управляю с помощью выходов Q1, Q2 и Q3
задаётся время цикла (tцикла).
при подаче сигнала на запуск (I1) происходит:
насос Q1 включается, отрабатывает установленное время t1 и выключается до завершения цикла.
насос Q2 включается с небольшой паузой tп1, отрабатывает установленное время t2 и выключается до завершения цикла.
насос Q3 включается после отработки последнего насоса Q1 или Q2, выжидает паузу tп2 и выключается за время tп3 до окончания цикла.
далее всё повторяется пока есть сигнал I1.
при пропадании сигнала I1 всё останавливается, при возобновлении сигнала I1 запускается всё с начала.
(все переменные буду забивать с экрана, значение примерно такие: t1-5минут, t2-4минуты, tцикла-60минут, tп1/2/3 - около 2минут)
36921
Василий Кашуба
28.04.2018, 15:17
Что, дипломная работа?
У вас не задана длительность 3 импульса ...
Вот вам на скорую руку ,а дальше сами 36923 делал по эпюрам ..3 запускается после 2 ..
"У вас не задана длительность 3 импульса ..."
там длительность импульса не фиксированная, она в диапазоне, между окончанием Q1/Q2, и завершением цикла.
Сергей0308
28.04.2018, 21:11
Мне видится как-то так, если уставки в минутах и с плавающей запятой:
36925
Вообще-то я обычно так не делаю, предпочитаю один таймер "на весь колхоз" + мультиплексор!
36926
Вот вам на скорую руку ,а дальше сами 36923 делал по эпюрам ..3 запускается после 2 ..
как правильно сделать чтобы при сбросе сигнала I1 всё останавливалось (все выхода Q1/2/3 в "0", без окончания отработки таймеров), а потом при активном сигнале I1 всё запускалось заного?
Это сделано через элементы SEL - делается нулевая уставка на TP,
"У вас не задана длительность 3 импульса ..."
там длительность импульса не фиксированная, она в диапазоне, между окончанием Q1/Q2, и завершением цикла.
Тогда ее нужно вычислить и задать .
Мне видится как-то так, если уставки в минутах и с плавающей запятой:
36925
Вообще-то я обычно так не делаю, предпочитаю один таймер "на весь колхоз" + мультиплексор!
36926
Спасибо, алгоритм работает как надо.
Один вопрос: время каждого полного цикла увеличивается на 2 такта, чтобы это исключить нужно время полного цикла заранее меньше сделать на время этих двух тактов, или как-то иначе? (не критично, просто узнать как это делается).
а я всё колхозил и колхозил, ну никак у меня не получалось чтобы остановка Q1/2/3 происходила при снятии с I1 сигнала, всё время они у меня доезжали своё установленное время и только потом стояли )))
"Что, дипломная работа?"
нет, на работе задача такая стоит сделать, а я не силён в этом.
Сергей0308
28.04.2018, 23:18
Спасибо, алгоритм работает как надо.
Один вопрос: время каждого полного цикла увеличивается на 2 такта, чтобы это исключить нужно время полного цикла заранее меньше сделать на время этих двух тактов, или как-то иначе? (не критично, просто узнать как это делается).
а я всё колхозил и колхозил, ну никак у меня не получалось чтобы остановка Q1/2/3 происходила при снятии с I1 сигнала, всё время они у меня доезжали своё установленное время и только потом стояли )))
"Что, дипломная работа?"
нет, на работе задача такая стоит сделать, а я не силён в этом.
Можно как-то так, если идут цикл за циклом, без перекуров:
36927
Где время цикла - сумма времени включённого и отключенного состояния генератора импульсов!
Так, ещё круче, можно до двух разных циклов иметь:
36933
Тогда, как-то так:
36928
И вот только что вычитал, что третий насос включается с задержкой после выключения первого или второго, какой последний выключится(в таких случаях на диаграмме обычно рисуют два цикла работы, в каждом последним выключаются разные насосы), а у меня не так, делал по вашей диаграмме, там после выключения второго насоса нарисовано, короче, поправите сами, надеюсь справитесь, а то не совсем по заданию получится, если второй насос выключится раньше первого!
Вот немного поправил:
36932
Теперь вроде без серьёзных упущений!
Или так:
36946
Спасибо Сергей0308 за помощь, программа функционирует правильно, переписал её под свой ПР200-220.
сейчас добавлю несколько функций (счётчик включений каждого насоса и время их наработки), сделаю красивое меню, разберу ПР200 и покрою все платы двумя слоями лака акрилового для печатных плат (в ангаре где он будет стоять высокая влажность и идёт сильная коррозия всего, а вынести реле нет возможности), и можно ставить в работу.
Ревака Юрий
03.05.2018, 16:06
Спасибо Сергей0308 за помощь, программа функционирует правильно, переписал её под свой ПР200-220.
сейчас добавлю несколько функций (счётчик включений каждого насоса и время их наработки), сделаю красивое меню, разберу ПР200 и покрою все платы двумя слоями лака акрилового для печатных плат (в ангаре где он будет стоять высокая влажность и идёт сильная коррозия всего, а вынести реле нет возможности), и можно ставить в работу.
Добрый день, в таком случае лучше наверное предусмотреть отдельный шкаф, так как все лаком покрыть не получиться, да и нанесение второго слоя непонятно как скажется на свойствах уже нанесенного лака в заводских условиях.
в моём ПР200-220.2.1.0 покрытие лаком плат отсутствует. Реле будет установлено в отдельном шкафчике, но "ЗАРАЗА", имеет тенденцию просачиваться и туда, надо-же иногда шкаф открывать.
Ревака Юрий
03.05.2018, 17:28
в моём ПР200-220.2.1.0 покрытие лаком плат отсутствует. Реле будет установлено в отдельном шкафчике, но "ЗАРАЗА", имеет тенденцию просачиваться и туда, надо-же иногда шкаф открывать.
Возможно покрытие локальное, там где это необходимо, но мешочек с силикагелем должен улучшить ситуацию с влагой в шкафу, так как меж платные разъемы и кнопки покрыть лаком все равно не получится.
Сергей0308
03.05.2018, 19:39
Спасибо Сергей0308 за помощь, программа функционирует правильно, переписал её под свой ПР200-220.
сейчас добавлю несколько функций (счётчик включений каждого насоса и время их наработки), сделаю красивое меню, разберу ПР200 и покрою все платы двумя слоями лака акрилового для печатных плат (в ангаре где он будет стоять высокая влажность и идёт сильная коррозия всего, а вынести реле нет возможности), и можно ставить в работу.
Вообще-то для вашего ПР200-220.2.1, что Вы указали выше ничего переписывать не надо, меню "Файл", Смена целевой платформы и ваше ПР верхнее в списке:
37002
Несколько раз так делал, всё нормально прошло, без проблем!
1) Сергей0308, я догадывался что должно быть простое решение этой задачи :) оставил этот вопрос на потом, хотелось самому, по Вашему проекту, переписать программу полностью, первый опыт так сказать.
2) Ревака Юрий, а платы каким лаком покрываются? акрил или полиуретан?
Ревака Юрий
04.05.2018, 10:50
2) Ревака Юрий, а платы каким лаком покрываются? акрил или полиуретан?
Скорее всего акрил, точно не скажу.
Подскажите пожалуйста, как правильно с экрана задавать время работы в минутах и секундах не дробя при этом вещественное число на отдельно минуты и секунды, например мне надо 3 минуты 30 секунд, а с экрана приходится вводить 3.50 ( как половину между 3 и 4) а не 3.30
Сергей0308
08.05.2018, 16:29
Подскажите пожалуйста, как правильно с экрана задавать время работы в минутах и секундах не дробя при этом вещественное число на отдельно минуты и секунды, например мне надо 3 минуты 30 секунд, а с экрана приходится вводить 3.50 ( как половину между 3 и 4) а не 3.30
Сейчас так и сделано! Вам лучше успокоится и определится, а то пишите противоречиво, сначала не разделяя на минуты и секунды, а потом, мне надо 3 минуты 30 секунд! Определитесь, так разделяем или нет на минуты и секунды, а то Вы разрываетесь как обезьянка и умная и красивая, нельзя одновременно в нескольких местах стоять!
Сейчас так и сделано!
при вводе нет же ограничения в знаках после запятой в 60 сек, можно и 3.98 ввести
FRV ограничение можно ввести в программе, либо привести все к 3.59 либо пересчитать до 4.38 как задумаете, так и будет
Сергей0308
08.05.2018, 16:44
при вводе нет же ограничения в знаках после запятой в 60 сек, можно и 3.98 ввести
Вы хоть программу посмотрите, там стоит два знака после запятой, если вам надо, можно один оставить, после запятой!
Сейчас так и сделано! Вам лучше успокоится и определится, а то пишите противоречиво, сначала не разделяя на минуты и секунды, а потом, мне надо 3 минуты 30 секунд! Определитесь, так разделяем или нет на минуты и секунды, а то Вы разрываетесь как обезьянка и умная и красивая, нельзя одновременно в нескольких местах стоять!
с существующим проектом всё в порядке, установлен на объекте и работает, спасибо Вам за это!
я понемногу хочу повысить знания работы с ОЛ, и сейчас вот возник вопрос, как вводить с помощью клавиатуры временное значения минуты и секунды. самое простое моё видение поставить рядом на экране два значения (минуты/секунды) и вводить их независимо друг от друга (у секунд поставить ограничение от 0 до 60) и в схеме их склеить в одно число. Но мне кажется есть более элегантное решение.
FRV если через float то на экране нет элегантного решения, вы таки сможете доводить значение выше х.59 а х.60 не имеет смысла так как это х+1
FRV если через float то на экране нет элегантного решения, вы таки сможете доводить значение выше х.59 а х.60 не имеет смысла так как это х+1
да, ошибся ограничить до 59. Значит либо сразу вводить число в секундах (3мин 50 сек значит будет 230), либо одно число вводить отдельно минутами и секундами.
лучше отдельно, так как это БЫСТРЕЕ. а то у вас стояло 3.40, а потом надо ввести 7.30 и ? будете держать кнопочку и ждать увеличения ?
Вы хоть программу посмотрите, там стоит два знака после запятой, если вам надо, можно один оставить, после запятой!
я с программой полностью разобрался, что работает и как, посмотрел и полностью переписал и добавил некоторые функции, я же должен знать что и как будет на объекте работать
лучше отдельно, так как это БЫСТРЕЕ. а то у вас стояло 3.40, а потом надо ввести 7.30 и ? будете держать кнопочку и ждать увеличения ?
ну, так и сделаю.
Сергей0308
08.05.2018, 17:12
Можно и в одной переменной вводить минуты и секунды, например создаём целочисленную переменную 4 разрядную, определяем, два разряда отводим для минут и два для секунд, затем в программе разделяем на минуты и секунды, но это более сложно получится, а Вы же хотели легко и изящно!
Для быстроты можно и комбобокс на 4 отдельных переменных, в программе объединяете в две переменные по два разряда, минуты(десятки и единицы) и секунды(десятки и единицы), и располагаете рядом на экране, десятки, 0-5, единицы, 0-9, тогда точно всё будет ограниченно, лишнего шага не ступишь!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot