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

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

@@ -6,8 +6,6 @@
#define m_FAST 0
#define m_SLOW 1
#define keys 0x0 // адрес повтораемой посылки «keys»
#define Inputs Modbus[0x0]
@@ -41,37 +39,25 @@
#define CanCycle (modbus+0x78) // счетчик циклов CAN
#define CanRound (modbus+0x7A) // счетчик еще более полных циклов CAN
#define komanda modbus[124]
#define Protokol modbus[125]
#define LastMode modbus[126]
#define Commands modbus[127]
#define command params[128]
#define bit_command Params[128]
#define bit_kom Modbus[124]
#define cTestLamp bit_command.bit.bit0
#define cDefParam bit_command.bit.bit1
#define cSaveParam bit_command.bit.bit2
#define cLoadParam bit_command.bit.bit3
#define cTermoCal bit_command.bit.bit4
#define cKoefCalc bit_command.bit.bit5
#define cSecretBt bit_command.bit.bit6
#define cCanReset bit_command.bit.bit7
#define cRawMeat bit_command.bit.bit8
#define cCanReset bit_command.bit.bit7
#define cReset bit_command.bit.bitF
#define cTestLamp bit_kom.bit.bit0
#define cDefParam bit_kom.bit.bit1
#define cSaveParam bit_kom.bit.bit2
#define cLoadParam bit_kom.bit.bit3
#define cTermoCal bit_kom.bit.bit4
#define cKoefCalc bit_kom.bit.bit5
#define cSecretBt bit_kom.bit.bit6
#define cCanReset bit_kom.bit.bit7
#define cRawMeat bit_kom.bit.bit8
#define cTestOut bit_kom.bit.bit9
//...
#define cReset bit_kom.bit.bitF
/*
#define cTestLamp Modbus[127].bit.bit0
#define cDefParam Modbus[127].bit.bit1
#define cSaveParam Modbus[127].bit.bit2
#define cLoadParam Modbus[127].bit.bit3
#define cTermoCal Modbus[127].bit.bit4
#define cKoefCalc Modbus[127].bit.bit5
#define cSecretBt Modbus[127].bit.bit6
#define cCanReset Modbus[127].bit.bit7
#define cRawMeat Modbus[127].bit.bit8
#define cCanReset Modbus[127].bit.bit7
#define cReset Modbus[127].bit.bitF
*/
#endif //PACKAGE

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; // Команды
}