Цитата:
Сообщение от tyubik
Если так, то "универсальная" МПЦ привязана к определённым типам РЦ, напряжение на которых всегда различно.
|
Ось "Напряжение" показана для понимания процесса, на самом деле показания в МПЦ будут дискретные, получаемые от ОК.
Просто инженер АиТ добавил 05.04.2017 в 11:51
Так с этим определись! Отлично!
Следующий вопрос - возможность перевода стрелки (что проверяем)?
Просто инженер АиТ добавил 05.04.2017 в 12:43
Для РЦ проверка состояния РЦ может выглядеть так!
// Установить Физическое Состояние РЦ.
virtual short SetStateP ( ) {
// Получить Новое Состояние из Массива Дискретных Сигналов.
Word NewState = GetStateFromArray ( );
if ( NewState == State_Physical )
return 0; // Состояние Не Изменилось!!!
// Состояние Изменилось.
Word PrevTC = Prev->GetState ( ); // Получить состояние Предыдущей РЦ.
Word NextTC = Next->GetState ( ); // Получить состояние Последующей РЦ.
short Ret = 1; // Состояние РЦ - Изменилось!
// Проверим Логическое Состояние РЦ.
if ( State_Logical == TC_NormLogic )
{ // Логическое Состояние - Норма.
if ( PrevTC == TC_Free // Свободна.
&& NextTC == TC_Free // Свободна.
&& State_Physical == TC_Free // Свободна.
&& NewState == TC_Busy ) // Занята.
{
State_Logical = TC_Busy_False; // Ложно Занята.
Ret = -1; // Есть Логическая Ошибка!
}
}
else if ( State_Logical = TC_Busy_False )
{
if ( PrevTC == TC_Free // Свободна.
&& NextTC == TC_Free // Свободна.
&& State_Physical == TC_Free // Свободна.
&& NewState == TC_Free ) // Свободна.
State_Logical = TC_NormLogic; // Норма.
}
// Установим Новое Физическое Состояние РЦ.
State_Physical = NewState;
return Ret; // Возвращаемое Значение!
}