Тест дискретных сигналов

This commit is contained in:
2025-11-18 10:48:59 +03:00
parent 964da5d306
commit 964b00f1aa
12 changed files with 26259 additions and 20372 deletions

View File

@@ -131,8 +131,6 @@ int main(void)
LastMode = Mode;
Protokol = PROTOKOL;
command=0;
for(i=0;i<0x80;i++)
county[i]=1;
for(i=0;i<8;i++)
@@ -142,8 +140,6 @@ int main(void)
CanCycle[i]=0;
timGo=1;
/* USER CODE END 2 */
@@ -302,25 +298,28 @@ int main(void)
ReadEnteres(); // Функция чтения дискретных входов
//=== УПРАВЛЕНИЕ ВЫХОДНЫМИ СИГНАЛАМИ ===//
if (Errors.all | Alarms.all)
Pvt4_OFF; // Выключение сигнала "Система ВЭП в норме"
else
Pvt4_ON; // Включение сигнала "Система ВЭП в норме"
if(!cTestOut)
{
if (Errors.all | Alarms.all)
Pvt4_OFF; // Выключение сигнала "Система ВЭП в норме"
else
Pvt4_ON; // Включение сигнала "Система ВЭП в норме"
if (Errors.all)
Pvt3_ON; // Включение сигнала "Авария системы ВЭП"
else
Pvt3_OFF; // Выключение сигнала "Авария системы ВЭП"
if (Errors.all)
Pvt3_ON; // Включение сигнала "Авария системы ВЭП"
else
Pvt3_OFF; // Выключение сигнала "Авария системы ВЭП"
if (Falling_asleep)
Pvt2_ON; // Включение сигнала управления
else
Pvt2_OFF; // Выключение сигнала управления
if (Falling_asleep)
Pvt2_ON; // Включение сигнала управления
else
Pvt2_OFF; // Выключение сигнала управления
}
//=== ОБРАБОТКА КОМАНД ===//
if (Commands != precom) // Если команды изменились
{
command = (~precom | command) & Commands; // Обновление активных команд
komanda = Commands & (~precom|komanda); // Обновление активных команд
}
precom = Commands; // Сохранение текущих команд для следующей итерации
@@ -329,6 +328,7 @@ int main(void)
{
cDefParam = 0;
Default_params(); // Вызов функции сброса параметров
Commands=precom;
}
if (cSaveParam) // Команда сохранения параметров
@@ -341,6 +341,7 @@ int main(void)
{
cLoadParam = 0;
Load_params(); // Вызов функции загрузки параметров
Commands=precom;
}
if (cCanReset) // Команда сброса CAN-системы
@@ -362,8 +363,6 @@ int main(void)
for(i = 0; i < 8; i++)
masca[i] = 0; // Сброс масок
}
/* USER CODE END WHILE */
@@ -470,7 +469,7 @@ void Millisecond()
work_diod, // Состояние рабочего светодиода
norm_diod; // Состояние нормального светодиода
static int preTest; // Предыдущее состояние теста
int TST; // Текущее состояние теста
int TST,JMP; // Текущее состояние теста
// Константы времени
#define CANPOWSE 10 // 10 msec - период обновления CAN
@@ -485,7 +484,7 @@ void Millisecond()
//=== ЧТЕНИЕ ПЕРЕКЛЮЧАТЕЛЕЙ И КНОПОК ===//
Jumpers.byt.byte_1 = ReadJumpers(); // Чтение состояния переключателей
Jumpers.bit.bit0 = Buttons.bit.bit0 = TestJumper(); // Чтение состояния кнопки
JMP = Jumpers.bit.bit0 = Buttons.bit.bit0 = TestJumper(); // Чтение состояния кнопки
//=== УПРАВЛЕНИЕ CAN-ШИНОЙ ===//
if(++CanPowse >= CANPOWSE)
@@ -503,7 +502,7 @@ void Millisecond()
Falling_asleep = 1000L * Sleep_time; // Установка времени до "сна"
//=== ОБРАБОТКА ТЕСТОВОГО РЕЖИМА ===//
TST = TestJumper() | cTestLamp; // Текущее состояние теста (кнопка или команда)
TST = JMP | cTestLamp; // Текущее состояние теста (кнопка или команда)
if(TST & !preTest) // Обнаружение фронта нажатия кнопки
{
@@ -581,6 +580,25 @@ void Millisecond()
if(norm_diod) LED_3_ON; // Включение нормального светодиода
else LED_3_OFF; // Выключение нормального светодиода
// Тест дискретных сигналов
if(cTestOut && JMP)
{
if (blink_over)
Pvt4_OFF; // Выключение сигнала "Система ВЭП в норме"
else
Pvt4_ON; // Включение сигнала "Система ВЭП в норме"
if (blink_over)
Pvt3_ON; // Включение сигнала "Авария системы ВЭП"
else
Pvt3_OFF; // Выключение сигнала "Авария системы ВЭП"
if (blink_over)
Pvt2_ON; // Включение сигнала управления
else
Pvt2_OFF; // Выключение сигнала управления
}
}

View File

@@ -123,7 +123,9 @@ void Init_packMask()
Maska[m_SLOW][6]|= 0x05FF; // Яркость лампы и периоды посылок
Maska[m_FAST][7]|= 0x0100; // Счетчик посылок
Maska[m_SLOW][7]|= 0x0E00; // Счетчик посылок
Maska[m_SLOW][7]|= 0xE000; // Протокол, адрес, команды
Maska[m_SLOW][7]|= 0x6000; // Протокол, адрес
Maska[m_FAST][7]|= 0x9000; // Команды
}