вы не озвучили, что за прибор
...скорей всего лог. анализатор к pc, на "кипарисе"-CY.
вы не озвучили, что за прибор




_RUS73_ писал(а):
Микро термостат, подогрев. Пока тестовий вариант, прогон.Спойлер
Код: Выделить всё
case MODE_WRUNG_STOW:
if( lastWrungTimerSec == timerSec ) break;
lastWrungTimerSec = timerSec;
HYLCD_ViewSpeed( currSpeed );
if( wrungTimerSec == 0 ) ROTATION_LEFT = 1;
else if( wrungTimerSec == 1 ) rtSpeed = setRotationSpeed;
else if( wrungTimerSec == 10 ) rtSpeed = 0;
else if( wrungTimerSec == 11 ) ROTATION_LEFT = 0;
else if( wrungTimerSec == 15 ) ROTATION_RIGHT = 1;
else if( wrungTimerSec == 16 ) rtSpeed = setRotationSpeed;
else if( wrungTimerSec == 26 ) rtSpeed = 0;
else if( wrungTimerSec == 27 ) ROTATION_RIGHT = 0;
else if( wrungTimerSec == 30 ) ROTATION_LEFT = 1;
else if( wrungTimerSec == 31 ) rtSpeed = setRotationSpeed;
else if( wrungTimerSec == 32 )
{
wrungTimerSec = 0;
mode = MODE_WRUNG_TEST_STOW;
break;
}
wrungTimerSec++;
break;
case MODE_WRUNG_TEST_STOW:
if( lastWrungTimerSec == timerSec ) break;
lastWrungTimerSec = timerSec;
HYLCD_ViewSpeed( currSpeed );
if( rtSpeed < 100 && disbalance == 100 )
{
if( rtSpeed < 60 ) rtSpeed += 2 ;
else rtSpeed++; // достижение скороти проверки наличия биений бака
}
else
{
HYLCD_ViewTemp( disbalance );
normDisbalance = ( 110 - setWrungSpeed ) / 10;
if( disbalance <= normDisbalance + 1 )
{
// начинаем отжим без тестирования
rtSpeed = 10; // не сбрасывать мощность двигателя
pump_timer_sec = 60;
wrungSpeed = 110 - ( disbalance * MAX_DISBALANCE );
if( wrungSpeed >= setWrungSpeed ) wrungSpeed = setWrungSpeed;
mode = MODE_WRUNG;
break;
}
else if( superMinDisbalance != MAX_DISBALANCE && disbalance <= superMinDisbalance )
{
// начинаем отжим
rtSpeed = 10; // не сбрасывать мощность двигателя
pump_timer_sec = 60;
if( disbalance < 10 )
{
wrungSpeed = 110 - ( disbalance * MAX_DISBALANCE );
if( wrungSpeed >= setWrungSpeed ) wrungSpeed = setWrungSpeed;
}
else wrungSpeed = 10;
mode = MODE_WRUNG;
break;
}
else if( testStowCount >= 3 && disbalance <= minDisbalance )
{
// цель достигнута, начинаем отжим
rtSpeed = 10; // не сбрасывать мощность двигателя
pump_timer_sec = 60;
if( disbalance < 10 )
{
wrungSpeed = 110 - ( disbalance * MAX_DISBALANCE );
if( wrungSpeed >= setWrungSpeed ) wrungSpeed = setWrungSpeed;
}
else wrungSpeed = 10;
mode = MODE_WRUNG;
break;
}
else if( testStowCount >= 6 )
{
testStowCount = 0;
if( superMinDisbalance > minDisbalance ) superMinDisbalance = minDisbalance;
minDisbalance = MAX_DISBALANCE; // свыше вообще не пропускать
}
if( minDisbalance > disbalance ) minDisbalance = disbalance;
pump_timer_sec = 15;
wrungTimerSec = 0;
wrungTimerMin = 0;
testStowCount++;
HYLCD_ViewTime( 0, testStowCount );
mode = MODE_WRUNG_STOW;
}
break;
case MODE_WRUNG:
if( lastWrungTimerSec == timerSec ) break;
lastWrungTimerSec = timerSec;
HYLCD_ViewSpeed( currSpeed );
sW = (unsigned int)wrungSpeed * (unsigned int)10;
if( sW < currSpeed && CCPR1L > 50 ) CCPR1L--;
else if( sW > currSpeed && CCPR1L < 255 ) CCPR1L++;
pump_timer_sec = 10; // помпе работать беспрерывно
wrungTimerSec++;
if( wrungTimerSec == 60 )
{
wrungTimerSec = 0;
wrungTimerMin++;
}
if( wrungTimerMin == 2 + wrungCount )
{
if( wrungCount < 1 && returnMode != MODE_RINSE_WATER )
{
wrungTimerSec = 0;
wrungTimerMin = 0;
testStowCount = 0;
wrungCount++;
CCPR1L = 0;
// DelayMs( 100 );
// ROTATION_RIGHT = 0;
// ROTATION_LEFT = 0;
setWrungSpeed = userSetWrungSpeed;
mode = MODE_WRUNG_ROTATION_STOP;
returnMode = MODE_WRUNG_STOW;
}
else
{
CCPR1L = 0;
DelayMs( 100 );
ROTATION_RIGHT = 0;
ROTATION_LEFT = 0;
if( returnMode == MODE_RINSE_WATER ) water = 3; // продолжаем полоскание, лить во все лейки
else
{
LOCK = 0; // отмыкаем и выходим
HYLCD_ViewRinseSymbol( 0 );
returnMode = MODE_STOP;
}
HYLCD_ViewWashSymbol( 0 );
HYLCD_ViewWrungSymbol( 0 );
mode = MODE_WRUNG_ROTATION_STOP;
}
}
break;



