Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм проверки на разобщение 
:(
    Опции темы
VanHelsing
Дата 13.9.2011, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Необходимо написать программу для аппаратуры, которая используется при проверки кабелей. Система релейная, то есть управляем реле. Проблема заключается в следующем, необходимо организовать проверку на разобщение. Допустим есть 10 точек и необходимо проверить что они друг с другом не замыкают. Я написал вариант при котором по циклу первую точку проверяем со всеми остальными, затем вторую, затем третью и т.д. Данный алгоритм работает очень долго, есть ли возможность программно ускорить данную проверку?
Заранее спасибо.



--------------------
PM MAIL   Вверх
nworm
Дата 13.9.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Какие возможные независимые исходы у этого эксперимента?
Если все точки совершенно независимо друг от друга могут с друг другом замыкать/незамыкать,
то есть всего 10*10=100 исходов, то разработанную проверку не улчшить.

Это сообщение отредактировал(а) nworm - 13.9.2011, 19:53
PM MAIL WWW   Вверх
_Y_
Дата 14.9.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Если разговор именно о замыкании, а не о минимально допустимом сопротивлении, и если направление тока не имеет значения, то:
1. Точку 1 проверяем на предмет замыкания с каждой точкой с 2 по N
2. Точку 2 - с каждой точкой с 3 по N *т.к. пару 1-2 уже проверили)
3. Точку 3 - с 4 по N 
И так далее.

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


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
VanHelsing
Дата 23.9.2011, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Я не до конца описал все сложности.
Во-первых - измерения производятся с помощью компаратора, у него есть две шины одна шина плюс, а другая шина минус. Соответственно на них мы подключаем измеряемые точки.
Во-вторых - если использовать алгоритм проверки точки каждой с каждой (способом, которой описал _Y_), то проверка проходит очень долго, а необходимо чтобы проверка была быстрой.
Предполагаю, например делим массив точке, которые проверяем, на две равные части, одну часть точек подключаем к шине минус, вторую к шине плюс, производим проверку, производим перетасовку, чтобы каждая точка обязательно побывала, на обоих шинах(то есть точки в шинам можно подключать группами).
Очень хотелось бы чтобы кто-нибудь объяснил мне как правильно выстроить алгоритм проверки. 
Заранее спасибо.


--------------------
PM MAIL   Вверх
nworm
Дата 23.9.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



ПРОЦЕДУРА P(G):
0. Если колличесвто точек 1, то конец процедуры.
1. Разбиваем точки на 2-е равные группы G1 и G2
2. Подклучаем G1 к +, G2 к -
3. Если есть замыкание, то Ответ:="не работает", конец программы.
4. Если нет замыкания, то выполняем P(G1) и P(G2).

ПРОРГАММА:
1. Обозначим все точки как G
2. P(G)
3. Если по итогам выполнения P(G), не получен ответ "не работает", то Ответ:="работает".
PM MAIL WWW   Вверх
VanHelsing
Дата 23.9.2011, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Проверку необходимо организовать таким образом чтобы проводилась проверка всего изделия сразу и выдавала информацию об ошибках.


--------------------
PM MAIL   Вверх
nworm
Дата 23.9.2011, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата(VanHelsing @ 23.9.2011,  20:46)
Проверку необходимо организовать таким образом чтобы проводилась проверка всего изделия сразу и выдавала информацию об ошибках.

И чем тогда не подходит предложенный мной способ?
PM MAIL WWW   Вверх
VanHelsing
Дата 24.9.2011, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



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


--------------------
PM MAIL   Вверх
nworm
Дата 24.9.2011, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата(VanHelsing @ 24.9.2011,  10:16)
Не совсем понял суть предложенного алгоритма. И как обнаружить ошибку, то есть найти какие конкретно точки замыкают.

Суть алгоритма - деление пополам. Этот алгоритм в отличии от предыдущих будет иметь сложность O(n*log(n)), а не n*n. 
Для обнаружения конкретно замыкажющих точек надо править этот алгоритм в пункте "3. Если есть замыкание, то Ответ:="не работает", конец программы."
Причём, не понятно надо все ошибки найти или только одну?
PM MAIL WWW   Вверх
VanHelsing
Дата 24.9.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Ошибки надо найти все, то есть проверка должна пройти до конца. Вот с выявлением ошибок у меня и проблема.


--------------------
PM MAIL   Вверх
nworm
Дата 24.9.2011, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



А сколько там ошибок?
Если все со всеми замыкают, частая ситуация, то надо как _Y_ делать.
Если же аппаратура, в основном, без ошибок, то можно с дихотомией проверять.


Это сообщение отредактировал(а) nworm - 24.9.2011, 15:54
PM MAIL WWW   Вверх
htoit
Дата 25.9.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 27.8.2011

Репутация: нет
Всего: нет



Проверка на разобщение одной точки проводится за одно измерение. Смотреть надо не алгоритм, а электрическую схему организации проверок. Собираете все точки, кроме проверяемой в кучу (замыкаете), а затем контролируете  разобщение. Если у вас нет возможности собирать точки в кучу, то переделывайте схему электрическую. Не тратьте впустую ресурсы реле. Нет разобщения -- в брак, или диагностируйте подробнее, метод деления пополам вполне годится.
PM MAIL   Вверх
VanHelsing
Дата 27.9.2011, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Мой выбор пал на следующий алгоритм.
Первую точку я подключаю на шину плюс, вторую на шину минус, произвожу проверку сопротивления  если ошибки нет, то вторую точку я снимаю с шины минус и подключаю ее к шину плюс. С третьей точкой мы производим те же действия что со второй точкой и т.к. далее. Если произошла ошибка, то точку, при подключении которой произошла ошибка, проверяю ее с каждой предыдущей.
Возможно кто подскажет есть ли возможность усовершенствовать данный алгоритм.


--------------------
PM MAIL   Вверх
_Y_
Дата 27.9.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



А плюс и минус имеют значение? Если нет, быстрее будет переключать через одну: минусом идти по нечетным точкам, а плюсом по четным.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
htoit
Дата 28.9.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 27.8.2011

Репутация: нет
Всего: нет



Цитата(VanHelsing @ 27.9.2011,  18:24)
Мой выбор пал на следующий алгоритм.
Первую точку я подключаю на шину плюс, вторую на шину минус, произвожу проверку сопротивления  если ошибки нет, то вторую точку я снимаю с шины минус и подключаю ее к шину плюс. С третьей точкой мы производим те же действия что со второй точкой и т.к. далее. Если произошла ошибка, то точку, при подключении которой произошла ошибка, проверяю ее с каждой предыдущей.
Возможно кто подскажет есть ли возможность усовершенствовать данный алгоритм.

Усовершенствуйте не алгоритм, а схему:
все садите на "землю", от которой каждый контакт может переключаться как на "плюс", так и на "минус".
контроль контакта -- один контакт на "плюс", другой на "минус". Измеряете "плюс"-"минус". Контроль изоляции -- просто переключаете контакт на "плюс" и измеряете "плюс"-"земля". Иначе будете "жрать" ресурс реле -- немерено. Три реле на точку, плюс релейная схема переключения на вольтметр (с "земли" на "минус").
В этом направлении подумайте. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1022 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.