PDA

Просмотр полной версии : пр200



FRV
28.04.2018, 13:15
Здравствуйте.
помогите с написанием программы:
Имеется три насоса, которыми управляю с помощью выходов 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
Что, дипломная работа?

rovki
28.04.2018, 16:32
У вас не задана длительность 3 импульса ...

rovki
28.04.2018, 16:50
Вот вам на скорую руку ,а дальше сами 36923 делал по эпюрам ..3 запускается после 2 ..

FRV
28.04.2018, 20:55
"У вас не задана длительность 3 импульса ..."

там длительность импульса не фиксированная, она в диапазоне, между окончанием Q1/Q2, и завершением цикла.

Сергей0308
28.04.2018, 21:11
Мне видится как-то так, если уставки в минутах и с плавающей запятой:

36925

Вообще-то я обычно так не делаю, предпочитаю один таймер "на весь колхоз" + мультиплексор!

36926

FRV
28.04.2018, 21:31
Вот вам на скорую руку ,а дальше сами 36923 делал по эпюрам ..3 запускается после 2 ..

как правильно сделать чтобы при сбросе сигнала I1 всё останавливалось (все выхода Q1/2/3 в "0", без окончания отработки таймеров), а потом при активном сигнале I1 всё запускалось заного?

rovki
28.04.2018, 22:28
Это сделано через элементы SEL - делается нулевая уставка на TP,

rovki
28.04.2018, 22:30
"У вас не задана длительность 3 импульса ..."

там длительность импульса не фиксированная, она в диапазоне, между окончанием Q1/Q2, и завершением цикла.

Тогда ее нужно вычислить и задать .

FRV
28.04.2018, 22:51
Мне видится как-то так, если уставки в минутах и с плавающей запятой:

36925

Вообще-то я обычно так не делаю, предпочитаю один таймер "на весь колхоз" + мультиплексор!

36926

Спасибо, алгоритм работает как надо.
Один вопрос: время каждого полного цикла увеличивается на 2 такта, чтобы это исключить нужно время полного цикла заранее меньше сделать на время этих двух тактов, или как-то иначе? (не критично, просто узнать как это делается).
а я всё колхозил и колхозил, ну никак у меня не получалось чтобы остановка Q1/2/3 происходила при снятии с I1 сигнала, всё время они у меня доезжали своё установленное время и только потом стояли )))

"Что, дипломная работа?"
нет, на работе задача такая стоит сделать, а я не силён в этом.

Сергей0308
28.04.2018, 23:18
Спасибо, алгоритм работает как надо.
Один вопрос: время каждого полного цикла увеличивается на 2 такта, чтобы это исключить нужно время полного цикла заранее меньше сделать на время этих двух тактов, или как-то иначе? (не критично, просто узнать как это делается).
а я всё колхозил и колхозил, ну никак у меня не получалось чтобы остановка Q1/2/3 происходила при снятии с I1 сигнала, всё время они у меня доезжали своё установленное время и только потом стояли )))

"Что, дипломная работа?"
нет, на работе задача такая стоит сделать, а я не силён в этом.

Можно как-то так, если идут цикл за циклом, без перекуров:

36927

Где время цикла - сумма времени включённого и отключенного состояния генератора импульсов!
Так, ещё круче, можно до двух разных циклов иметь:

36933


Тогда, как-то так:

36928

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

Вот немного поправил:

36932

Теперь вроде без серьёзных упущений!

Или так:

36946

FRV
03.05.2018, 15:54
Спасибо Сергей0308 за помощь, программа функционирует правильно, переписал её под свой ПР200-220.
сейчас добавлю несколько функций (счётчик включений каждого насоса и время их наработки), сделаю красивое меню, разберу ПР200 и покрою все платы двумя слоями лака акрилового для печатных плат (в ангаре где он будет стоять высокая влажность и идёт сильная коррозия всего, а вынести реле нет возможности), и можно ставить в работу.

Ревака Юрий
03.05.2018, 16:06
Спасибо Сергей0308 за помощь, программа функционирует правильно, переписал её под свой ПР200-220.
сейчас добавлю несколько функций (счётчик включений каждого насоса и время их наработки), сделаю красивое меню, разберу ПР200 и покрою все платы двумя слоями лака акрилового для печатных плат (в ангаре где он будет стоять высокая влажность и идёт сильная коррозия всего, а вынести реле нет возможности), и можно ставить в работу.

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

FRV
03.05.2018, 16:48
в моём ПР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

Несколько раз так делал, всё нормально прошло, без проблем!

FRV
04.05.2018, 10:26
1) Сергей0308, я догадывался что должно быть простое решение этой задачи :) оставил этот вопрос на потом, хотелось самому, по Вашему проекту, переписать программу полностью, первый опыт так сказать.
2) Ревака Юрий, а платы каким лаком покрываются? акрил или полиуретан?

Ревака Юрий
04.05.2018, 10:50
2) Ревака Юрий, а платы каким лаком покрываются? акрил или полиуретан?

Скорее всего акрил, точно не скажу.

FRV
08.05.2018, 15:46
Подскажите пожалуйста, как правильно с экрана задавать время работы в минутах и секундах не дробя при этом вещественное число на отдельно минуты и секунды, например мне надо 3 минуты 30 секунд, а с экрана приходится вводить 3.50 ( как половину между 3 и 4) а не 3.30

Сергей0308
08.05.2018, 16:29
Подскажите пожалуйста, как правильно с экрана задавать время работы в минутах и секундах не дробя при этом вещественное число на отдельно минуты и секунды, например мне надо 3 минуты 30 секунд, а с экрана приходится вводить 3.50 ( как половину между 3 и 4) а не 3.30

Сейчас так и сделано! Вам лучше успокоится и определится, а то пишите противоречиво, сначала не разделяя на минуты и секунды, а потом, мне надо 3 минуты 30 секунд! Определитесь, так разделяем или нет на минуты и секунды, а то Вы разрываетесь как обезьянка и умная и красивая, нельзя одновременно в нескольких местах стоять!

FRV
08.05.2018, 16:38
Сейчас так и сделано!

при вводе нет же ограничения в знаках после запятой в 60 сек, можно и 3.98 ввести

melky
08.05.2018, 16:40
FRV ограничение можно ввести в программе, либо привести все к 3.59 либо пересчитать до 4.38 как задумаете, так и будет

Сергей0308
08.05.2018, 16:44
при вводе нет же ограничения в знаках после запятой в 60 сек, можно и 3.98 ввести

Вы хоть программу посмотрите, там стоит два знака после запятой, если вам надо, можно один оставить, после запятой!

FRV
08.05.2018, 16:46
Сейчас так и сделано! Вам лучше успокоится и определится, а то пишите противоречиво, сначала не разделяя на минуты и секунды, а потом, мне надо 3 минуты 30 секунд! Определитесь, так разделяем или нет на минуты и секунды, а то Вы разрываетесь как обезьянка и умная и красивая, нельзя одновременно в нескольких местах стоять!

с существующим проектом всё в порядке, установлен на объекте и работает, спасибо Вам за это!
я понемногу хочу повысить знания работы с ОЛ, и сейчас вот возник вопрос, как вводить с помощью клавиатуры временное значения минуты и секунды. самое простое моё видение поставить рядом на экране два значения (минуты/секунды) и вводить их независимо друг от друга (у секунд поставить ограничение от 0 до 60) и в схеме их склеить в одно число. Но мне кажется есть более элегантное решение.

melky
08.05.2018, 16:53
FRV если через float то на экране нет элегантного решения, вы таки сможете доводить значение выше х.59 а х.60 не имеет смысла так как это х+1

FRV
08.05.2018, 16:58
FRV если через float то на экране нет элегантного решения, вы таки сможете доводить значение выше х.59 а х.60 не имеет смысла так как это х+1

да, ошибся ограничить до 59. Значит либо сразу вводить число в секундах (3мин 50 сек значит будет 230), либо одно число вводить отдельно минутами и секундами.

melky
08.05.2018, 17:00
лучше отдельно, так как это БЫСТРЕЕ. а то у вас стояло 3.40, а потом надо ввести 7.30 и ? будете держать кнопочку и ждать увеличения ?

FRV
08.05.2018, 17:03
Вы хоть программу посмотрите, там стоит два знака после запятой, если вам надо, можно один оставить, после запятой!

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

FRV
08.05.2018, 17:07
лучше отдельно, так как это БЫСТРЕЕ. а то у вас стояло 3.40, а потом надо ввести 7.30 и ? будете держать кнопочку и ждать увеличения ?

ну, так и сделаю.

Сергей0308
08.05.2018, 17:12
Можно и в одной переменной вводить минуты и секунды, например создаём целочисленную переменную 4 разрядную, определяем, два разряда отводим для минут и два для секунд, затем в программе разделяем на минуты и секунды, но это более сложно получится, а Вы же хотели легко и изящно!

Для быстроты можно и комбобокс на 4 отдельных переменных, в программе объединяете в две переменные по два разряда, минуты(десятки и единицы) и секунды(десятки и единицы), и располагаете рядом на экране, десятки, 0-5, единицы, 0-9, тогда точно всё будет ограниченно, лишнего шага не ступишь!