Показать сообщение отдельно
Старый 10.07.2013, 13:23   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Дискретная система управления

Цитата:
Сообщение от Shogun Посмотреть сообщение
Это значение задаётся с экрана в часах, потом в блоке умножается на 3600
Понятно. Правильный ответ: значение на этом входе 65535 * (24*3600 mod 65535) = 20864

Вы можете в этом убедиться, запустив свой проект в отладку.

Теперь перейдём к изначальному вашему вопросу: "Почему не выключается?".

На самом деле выключается, но не ранее, чем через 20864 цикла программы. Это значит, что при времени одного цикла, равным 100 мсек, выключение произойдёт через 20864 * 0.1 = 2086,4 секунды. Или, другими словами, почти через 35 минут.

Теперь перейдём к вашей задаче. Вы оговорились, что вам нужно циклическое переключение насосов раз в сутки. Посмотрим, что вы сделали на самом деле.

Открываем файл описания из первого сообщения в этой теме. Читаем:

t1..t15 - входы задания для внутренних счётчиков таймаутов. Для каждой ступени используется отдельный счётчик. Значения на этих входах определяют максимальную частоту переключения ступеней. Единицы измерения - тики системы. Логика такова: после включения ступени значение с соответствующего входа загружается в счётчик и пока счётчик не досчитает до нуля, ступень не может быть выключена. После выключения ступени значение с соответствующего входа опять загружается в счётчик и пока счётчик не досчитает до нуля, ступень не может быть включена.

Похоже на то, что у вас сейчас происходит?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием