Показать сообщение отдельно
Старый 04.02.2012, 14:29   #48
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,754
Вы сказали Спасибо: 1,426
Поблагодарили 2,403 раз(а) в 1,352 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

есть два способа построения схемы в ТРС - перепроверочный и событийный. В первом случае мы раз в определённый промежуток времени перепроверяем нужные нам контуры схемы, и в зависимости от них включаем/выключаем реле. Событийный - это когда
-"мы включили АВ3(три), всё остальное уже собрано, значит можно включить РВ2 РВ3 маслопрокачку и вызвать ожидание 30 секунд"
-"мы замкнули контакты контроллера машиниста, всё остальное уже собрано, значит можно включить РВ2 РВ3 маслопрокачку и вызвать ожидание 30 секунд"
-"мы включили тумблер пуск-остановка, всё остальное уже собрано, значит можно включить РВ2 РВ3 маслопрокачку и вызвать ожидание 30 секунд"

и так далее, по всем параметрам. Несмотря на то, что если писать так, то код звеличивается в разы, он будет работать намного быстрее, чем "проверка каждые 5 секунд, собрана ли схема запуска ".
Пример проверок например есть в 2ТЭ116 -
Код:
if(p_control == zapusk1) нажимаем кнопку запуска
{
if(bloc.GetValue()==0 or throttle_lever2.GetValue()!=0 or loco.GetEngineSetting("reverser") == 1 or !cd.switchOn4)
	return;
если у нас поднята блокировка, или контроллер не в нуле, или реверс в нуле, или АВЗ выключен, схему запуска не собирать, выполнение кода прекратить

в остальных случаях
	if(p_value>0.5)   
		cd.zapusk1=true; если хорошо нажали кнопку - запустить дизель
	else если нажали кнопку плохо - не запускать дизель
		cd.zapusk1=false;
 loco.SetCabinData(cd); - передать информацию о новом положении контролов из кабины в локомотив
}
Ожидалка реле в простейшем случае выглядит как, только нужно следить, чтоб её немогли одновременно вызвать из разных кусков кода. Ведь если подать напряжение из одного провода, а через некоторое время, не отключая первый, от другого, то реле должно выключиться через промежуток времени от первого подключения, а на второе не реагировать.

Код:
thread void RU5()
{
ru5_st=true;
Sleep(30);
ru5_st=false;
}
__________________
местный зомбяк

Последний раз редактировалось TRam_; 04.02.2012 в 14:32.
TRam_ вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо TRam_ за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


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