|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
16.02.2012, 17:58 | #31 |
Member
Регистрация: Nov 2008
Сообщения: 50
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Логические головоломки
селектор получилось сократить на 1 блок и избавиться от двух делений
|
16.02.2012, 18:10 | #32 | |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Логические головоломки
Цитата:
В регистрах ничего не запоминается. Регистры при аварии или неактуальном значении (если датчик не участвует в вычислениях) обнуляют значение, чтобы оно не влияло на сумму. Обнуление потом усложнило вычисление минимального значения при отказе, пришлось добавить несколько дополнительных блоков. Основная изюминка не в вычислениях, там все просто. Основная изюминка в обработке аварий __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
|
16.02.2012, 18:15 | #33 | |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Логические головоломки
Цитата:
__________________ Автомат АК - самый распространенный преобразователь стека в очередь |
|
16.02.2012, 19:12 | #34 | |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили:
10 раз(а) в 10 сообщениях
|
Ответ: Логические головоломки
Цитата:
|
|
17.02.2012, 10:55 | #35 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Логические головоломки
Цитата:
http://forum.segnetics.com/showthrea...0872#post10872 35 блоков, количество обслуживаемых датчиков до 255 штук __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 26.04.2012 в 17:05 |
|
17.02.2012, 18:36 | #36 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили:
10 раз(а) в 10 сообщениях
|
Ответ: Логические головоломки
Использовать в качестве критерия работоспособности дисперсию (среднеквадратическое отклонение). Фильтр рабочий. А выбор датчиков только в качестве идеи без проверки работоспособности.
|
15.05.2012, 15:02 | #37 |
Senior Member
Регистрация: Oct 2011
Сообщения: 184
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Логические головоломки
Задачу выбор наименьшего из 10 надо было сюда постить...
Усложним: предположим есть 10 заданий выполняющихся по времени. У каждого задания есть время пуска. Как найти номер следующего задания, которое будет выполнятся? Пример заданий: 1 задание 9:48 2 задание 14:40 3 задание 12:34 ... 10 задание 3:12 |
15.05.2012, 15:20 | #38 | |
Senior Member
Регистрация: Oct 2011
Сообщения: 184
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Логические головоломки
Цитата:
Алгоритм таков: сравниваем время каждого задания с текущим временем. Если меншье (т.е. задание прошлое) приравниваем к его часы и минуты к 99. Все времена сравниваем между собой и находим наименьшее... Недостатки: много блоков, возможность сравнения токлько в течении суток. |
|
15.05.2012, 16:24 | #39 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили:
10 раз(а) в 10 сообщениях
|
Ответ: Логические головоломки
Дату перевести в другой формат. В переключатели добавить второй переключатель предыдущего, текущего номера. Номер выставлять снаружи макроса. Сравнивать числа Long.
|
15.05.2012, 17:03 | #40 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили:
10 раз(а) в 10 сообщениях
|
Ответ: Логические головоломки
Можно время представлять в UTC. В некоторых контроллерах внутреннее время так и представляется. Количество секунд, прошедших с 01.01.1970 00:00:000 по Гринвичу. Только перевода в UTC и обратно у меня нет.
|
15.05.2012, 17:12 | #41 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Логические головоломки
Цитата:
На самом деле перевод в UTC не нужен, достаточно по любой формуле упаковать время в Long или Int и сравнить эти числа между собой. Из-за совпадений формул операция сравнения даст верный результат. Вот как, например, сравнивает Конструктор (фото). Пакует время по формуле ЧАС*100+МИНУТЫ и сравнивает. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
15.05.2012, 17:26 | #42 |
Senior Member
Регистрация: Oct 2011
Сообщения: 184
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Логические головоломки
Видимо не верно я обрисовал задачу...
Перефразирую: задачи ЕЖЕСУТОЧНЫЕ, без определения даты. Например как определить что следующая задача выполнится завтра в 6-00 ? Т.е. все сравнения времен должны вестись относительно 24 часов, но с учетом перехода через 0-00. |
15.05.2012, 17:39 | #43 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Логические головоломки
Цитата:
Для наглядности можно тупо работать с UTC, все формулы есть в вики и гугле. Либо интерфейсно разделяете задания так, чтобы они задавались только в пределах дня по возрастанию. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
15.05.2012, 17:46 | #44 | |
Senior Member
Регистрация: Oct 2011
Сообщения: 184
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Логические головоломки
Цитата:
|
|
15.05.2012, 17:53 | #45 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Логические головоломки
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
16.05.2012, 07:53 | #46 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили:
10 раз(а) в 10 сообщениях
|
Ответ: Логические головоломки
Раз требуется определить, какое событие будет первым по времени считая не от начала суток, а от текущего времени, то придется добавить сравнение с текущим временем. Предлагаю первым делом сделать блок сравнения каждого значения времени события с текущим временем. У тех событий где сравнения отрицательные (события уже прошли) добавить к времени события 24 часа. Затем это все использовать на определение минимального. Соответственно без перевода в UTC или что-нибудь подобное не обойтись. Так как в конце месяца будет 31 и 1 число, в конце года 12 и 01 месяц и так далее.
|