Показать сообщение отдельно
Старый 24.09.2021, 01:33   #694
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
так и не понял: как он гасит противоположгое направление.
Я вот его скрипт distance входного смотрю:
Скрытый текст:
Код:
SCRIPT APK_3AB_YGR_YW_DISTANCE

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
		
		
		
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) { //для входного
		WORK1 = opp_sig_mr ( SIGFN_NORMAL ); // опрашиваем проходной встречный рядом со входным вроде ? APK_4AB_YRG_Kv - проходной
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; } // у отключенных проходных APK_ALSN_KZ_20_B_20 выдает stop - не выполняеся это условие
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
		//проходной не выдает distance res - тут только  opp_POEZD = 1
	}

	if ( next_INFO ==# 4 ) { next_INFO = 8; }
	if ( next_INFO ==# 5 ) { next_INFO = 8; }
	if ( next_INFO ==# 6 ) { next_INFO = 8; }
	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) )
	{ next_INFO = 8; }

	state = SIGASP_STOP;
	if ( next_INFO ==# 8 && POEZD ==# 0 && block_state() ==# BLOCK_CLEAR ) {
		if ( SVET ==# 0 ) { state = SIGASP_CLEAR_1; }
		if ( SVET ==# 1 ) { state = SIGASP_APPROACH_3; }
		if ( SVET ==# 2 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 3 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 4 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 5 ) { state = SIGASP_CLEAR_2; }
	}
	if ( next_INFO ==# 0 && POEZD ==# 0 && block_state() ==# BLOCK_CLEAR ) { state = SIGASP_APPROACH_1; }

	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
	
	
		if ( ( block_state() ==# BLOCK_OCCUPIED || POEZD !=# 0 ) && opp_POEZD !=# 1 ) { state = SIGASP_STOP_AND_PROCEED; } //вроде должно сработать, когда за входной заедет прибывающий
		// и начать переключать перегон, но opp_POEZD = 1 - мимо пройдет
		if ( opp_ONE_WAY ==# 1 || opp_POEZD ==# 2 ) { state = SIGASP_STOP_AND_PROCEED; } // тоже не сработает
	}
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD ==# 1 ) { // не проходной - мимо
		state = SIGASP_STOP_AND_PROCEED;
	}
	draw_state = def_draw_state (state);


Если opp_POEZD !=# 1 поменять на opp_POEZD ==# 1, то гаснут попутные в момент пересечения входного трафиком, но обратное направление не зажигается. Не понятно, в скрипте ошибка или упускаю что-то ?

Добавлено через 1 минуту
Цитата:
Сообщение от КЕ Посмотреть сообщение
То есть в SAP переходят головы "ненужных" светофоров?
Именно и если sap на входном поставить, то все проходные его подхватят и погаснут. Надо теперь понять, чего с другой стороны перегона входной не прокинул "не sap".
roman5 вне форума   Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо roman5 за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА