Рефакторинг
This commit is contained in:
107
scheduler.c
107
scheduler.c
@@ -126,28 +126,32 @@ void scheduler_main()
|
||||
|
||||
// кнопка загрузки барабана
|
||||
if (button_load) {
|
||||
if (!zone_is_busy(1)) {
|
||||
for (int i = 0; i < BARRELS_COUNT; i++) {
|
||||
if (!barrels[i].flags.is_exist) {
|
||||
barrels[i].flags.raw_word = 1; // только is_exist
|
||||
barrels[i].zone = 1;
|
||||
barrels[i].software_timer = -1;
|
||||
barrels[i].time_degreasing = hla_time_degreasing;
|
||||
barrels[i].time_washing_1a = hla_time_washing_1a;
|
||||
barrels[i].time_washing_1b = hla_time_washing_1b;
|
||||
barrels[i].time_etching = hla_time_etching;
|
||||
barrels[i].time_washing_2a = hla_time_washing_2a;
|
||||
barrels[i].time_washing_2b = hla_time_washing_2b;
|
||||
barrels[i].time_galvanizing = hla_time_galvanizing;
|
||||
barrels[i].time_washing_3a = hla_time_washing_3a;
|
||||
barrels[i].time_washing_3b = hla_time_washing_3b;
|
||||
barrels[i].time_passivation = hla_time_passivation;
|
||||
barrels[i].time_washing_4a = hla_time_washing_4a;
|
||||
barrels[i].time_washing_4b = hla_time_washing_4b;
|
||||
button_load = 0;
|
||||
break;
|
||||
if (!hla_night_mode) {
|
||||
if (!zone_is_busy(1)) {
|
||||
for (int i = 0; i < BARRELS_COUNT; i++) {
|
||||
if (!barrels[i].flags.is_exist) {
|
||||
barrels[i].flags.raw_word = 1; // только is_exist
|
||||
barrels[i].zone = 1;
|
||||
barrels[i].software_timer = -1;
|
||||
barrels[i].time_degreasing = hla_time_degreasing;
|
||||
barrels[i].time_washing_1a = hla_time_washing_1a;
|
||||
barrels[i].time_washing_1b = hla_time_washing_1b;
|
||||
barrels[i].time_etching = hla_time_etching;
|
||||
barrels[i].time_washing_2a = hla_time_washing_2a;
|
||||
barrels[i].time_washing_2b = hla_time_washing_2b;
|
||||
barrels[i].time_galvanizing = hla_time_galvanizing;
|
||||
barrels[i].time_washing_3a = hla_time_washing_3a;
|
||||
barrels[i].time_washing_3b = hla_time_washing_3b;
|
||||
barrels[i].time_passivation = hla_time_passivation;
|
||||
barrels[i].time_washing_4a = hla_time_washing_4a;
|
||||
barrels[i].time_washing_4b = hla_time_washing_4b;
|
||||
button_load = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
button_load = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,51 +221,30 @@ void scheduler_main()
|
||||
// а вот для режима двух роботов все интересно
|
||||
// для каждого робота нужно получить свой список задач
|
||||
// и надо еще сделать так, чтобы роботы не столкнулись
|
||||
char cmd_en = 0;
|
||||
|
||||
// добавляем ночной режим: в режиме двух роботов требуется чтобы во время ночного режима робот 2 стоял на парковке
|
||||
if (hla_night_mode) {
|
||||
if (!robot2.mx.correct_sensor) {
|
||||
// уводим робота в парковку
|
||||
if (robot2_code.PC < 0) {
|
||||
robot2_code.barrel_id = -1;
|
||||
robot2_code.code[0] = ROBOT_CMD_DOWN();
|
||||
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_PARKING();
|
||||
robot2_code.code[2] = ROBOT_CMD_END();
|
||||
robot2_code.PC = 0;
|
||||
}
|
||||
} else {
|
||||
cmd_en = 1;
|
||||
// логика для того, чтобы роботы не столкнулись в начале
|
||||
if (robot1.dx.current_zone < ZONE_GALVANIZING_1) {
|
||||
// начальная позиция робота 1 - промывка 3Б
|
||||
robot2_lock_zone = -1;
|
||||
robot1_lock_zone = ZONE_WASHING_3B;
|
||||
if (robot1_code.PC < 0) {
|
||||
robot1_code.barrel_id = -1;
|
||||
robot1_code.code[0] = ROBOT_CMD_DOWN();
|
||||
robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_WASHING_3B);
|
||||
robot1_code.code[2] = ROBOT_CMD_END();
|
||||
robot1_code.PC = 0;
|
||||
}
|
||||
} else if (robot2.dx.current_zone < ZONE_DEGREASING) {
|
||||
// начальная позиция робота 1 - обезжир
|
||||
robot2_lock_zone = ZONE_WASHING_2A;
|
||||
if (robot2_code.PC < 0) {
|
||||
robot2_code.barrel_id = -1;
|
||||
robot2_code.code[0] = ROBOT_CMD_DOWN();
|
||||
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING);
|
||||
robot2_code.code[2] = ROBOT_CMD_END();
|
||||
robot2_code.PC = 0;
|
||||
}
|
||||
} else {
|
||||
// логика для того, чтобы роботы не столкнулись в начале
|
||||
if (robot1.dx.current_zone < ZONE_GALVANIZING_1) {
|
||||
// начальная позиция робота 1 - промывка 3Б
|
||||
robot2_lock_zone = -1;
|
||||
robot1_lock_zone = ZONE_WASHING_3B;
|
||||
if (robot1_code.PC < 0) {
|
||||
robot1_code.barrel_id = -1;
|
||||
robot1_code.code[0] = ROBOT_CMD_DOWN();
|
||||
robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_WASHING_3B);
|
||||
robot1_code.code[2] = ROBOT_CMD_END();
|
||||
robot1_code.PC = 0;
|
||||
}
|
||||
} else if (robot2.dx.current_zone < ZONE_DEGREASING) {
|
||||
// начальная позиция робота 1 - обезжир
|
||||
robot2_lock_zone = ZONE_WASHING_2A;
|
||||
if (robot2_code.PC < 0) {
|
||||
robot2_code.barrel_id = -1;
|
||||
robot2_code.code[0] = ROBOT_CMD_DOWN();
|
||||
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING);
|
||||
robot2_code.code[2] = ROBOT_CMD_END();
|
||||
robot2_code.PC = 0;
|
||||
}
|
||||
} else {
|
||||
cmd_en = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (cmd_en) {
|
||||
// отдельно просчитаем все для первого робота
|
||||
if (robot1_code.PC < 0) {
|
||||
for (short i = 0; i < BARRELS_COUNT; i++) {
|
||||
|
||||
Reference in New Issue
Block a user