Как реализовать последовательное включение до 3-5 устройств с задержкой на пару секунд в произвольном порядке? Хотя бы приблизительный пример. Или на словах. Неделю ломаю голову - не выходит!
Как реализовать последовательное включение до 3-5 устройств с задержкой на пару секунд в произвольном порядке? Хотя бы приблизительный пример. Или на словах. Неделю ломаю голову - не выходит!
а поподробнее , что именно требуется?
какие устройства, как включать?
в сеть чтоли?
или в опрос?
Если конкретнее, то сразу все двигатели (мощные) включать нельзя. А только последовательно. И в произвольном порядке, т.е. не обязательно все, а в разное время разное количество. В визуализации кнопками определяю путь движения продукта и после нажатия кнопки "старт" они должны последовательно с задержкой включаться. В пути может быть различное количество двигателей. В чём и трудность. Привязать переменную к какому-то определённому двигателю невозможно. Я, вообще стал сомневаться что это возможно.
Решение простое.
1. Перед выходом упраления на каждый двг. повесить свой таймер с задержкой на включение.
2. Макс. число двиг. - это число N от 1 до Макс.
Выбрал путь и порядок пример из 10 двиг.
Тогда таймеру ставишь:
первый (10-1) =9 сек
второй (10-2)= 8 сек
.....
и последний (10-10) = 0 сек. Включить сразу первым.
И даешь команду ПУСК.
Похоже на вариант. Спасибо! Обмозгую - доложу результат.
Именно в том и суть, что не конкретный двигатель должен в определённый момент включиться, а произвольно выбранный. Например: включаю дв.1 и 8. Первый включится через 2 секунды после старта, а второй 8х2 - через 16 сек. Это если привязать каждому двигателю задержку. Нужно так:выбрал 2 и 5. Включился (можно сразу) 2-й, через 2 сек 5-й. Выбрал 1, 3, 8 - включился 1-й, через 2 сек 3-й, через 2 сек 8-й. Есть и другие условия, например, в порядке возрастания, но это решается.
если не критично разное время между включениями двигателей то можно предложить такое решение на плк.
простая программа на Sfc с количеством шагов равным количеству двигателей +1. в начале каждого шаге включаем или не включаем один двигатель, в свойствах шага задаем необходимое время.
Принципиально не критично, но не хочу идти по облегчённому пути в ущерб логике. С программой в будущем будут работать наладчики, операторы и т.д. Народец достаточно придирчивый. Да и если логика безупречная, легче усваивается и более надёжная.
ну если совсем по сложному то в начале формируем маску для необходимых двигателей например 1,3,7-101000010,
далее анализируя каждый бит по порядку включаем двигатель, затем если он был включен выжидаем паузу в х секунд, если не включаем то соответственно паузу не делаем. но это получается громоздкая конструкция
пы.сы. только что дошло, по первому варианту чтобы не ждать пустые шаги, для каждого шага делается альтернативный пустой с нулевым временем исполнения. т.е. если в предидущем шаге двигатель не включался то переход на следующий шаг выполняется мгновенно
Последний раз редактировалось Rand0m; 11.09.2008 в 15:24.