Немного поправлен код стайл

This commit is contained in:
VladislavOstapov 2022-12-03 10:53:03 +03:00
parent 7bd6275bac
commit cea2422977

View File

@ -22,7 +22,7 @@ static short get_robot_barrel(char robot_id) {
return -1;
}
// TODO обновить метод
// TODO обновить метод для работы с двумя роботами
// вернет можно ли ехать и главное куда ехать, если можно (нельзя если вернулось значение < 0)
// -1 вернет что перемещать нельзя
// -2 вернет если требуется атомарная операция пассивации
@ -347,6 +347,9 @@ void schedule_robot_1() {
tasks[i].start_zone = barrels[i].zone;
// определяем можно ли ее выполнить и что вообще нужно выполнить
tasks[i].dest_zone = can_move(barrels + i);
if (tasks[i].dest_zone >= 0) {
tasks[i].priority = get_operation_priority(i);
}
}
// TODO добавить вставку lock-point'ов на задачах на несколько роботов
@ -362,9 +365,31 @@ void schedule_robot_1() {
// первым делом добавляем команду опустить траверсу
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN;
if (tasks[target_task].start_zone != ZONE_WASHING_3B) {
if (tasks[target_task].dest_zone == ZONE_PASSIVATION) {
// пассивация, тут все просто
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
if (tasks[target_task].start_zone == 22) {
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | ZONE_WASHING_3B;
}
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_PASSIVATION;
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
robot1_code.code[cmd_index++] = barrels[target_task].time_passivation;
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_WASHING_4A;
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
robot1_code.code[cmd_index++] = barrels[target_task].time_washing_4a;
} else {
// любой другой случай
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
if (tasks[target_task].start_zone != 22) {
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | tasks[target_task].start_zone;
} else {
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_OFF;
robot1_code.code[cmd_index++] = ROBOT_CMD_UP;
if (robot1.dx.current_zone != 21) {
@ -373,13 +398,11 @@ void schedule_robot_1() {
}
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_2;
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | 22;
} else {
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | tasks[target_task].start_zone;
}
}
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
// теперь надо определиться с тем, сколько ждать скапывания
switch (tasks[target_task].start_zone) {
case ZONE_DEGREASING:
@ -430,11 +453,13 @@ void schedule_robot_1() {
short tmp = -1;
switch (tasks[target_task].dest_zone) {
case ZONE_DEGREASING:
tmp = barrels[target_task].time_degreasing; break;
tmp = barrels[target_task].time_degreasing;
break;
case ZONE_ETCHING_1:
case ZONE_ETCHING_2:
tmp = barrels[target_task].time_etching; break;
tmp = barrels[target_task].time_etching;
break;
case ZONE_GALVANIZING_1:
case ZONE_GALVANIZING_2:
@ -444,25 +469,34 @@ void schedule_robot_1() {
case ZONE_GALVANIZING_6:
case ZONE_GALVANIZING_7:
case ZONE_GALVANIZING_8:
tmp = barrels[target_task].time_galvanizing; break;
tmp = barrels[target_task].time_galvanizing;
break;
case ZONE_WASHING_1A:
tmp = barrels[target_task].time_washing_1a; break;
tmp = barrels[target_task].time_washing_1a;
break;
case ZONE_WASHING_2A:
tmp = barrels[target_task].time_washing_2a; break;
tmp = barrels[target_task].time_washing_2a;
break;
case ZONE_WASHING_3A:
tmp = barrels[target_task].time_washing_3a; break;
tmp = barrels[target_task].time_washing_3a;
break;
case ZONE_WASHING_4A:
tmp = barrels[target_task].time_washing_4a; break;
tmp = barrels[target_task].time_washing_4a;
break;
case ZONE_WASHING_1B:
tmp = barrels[target_task].time_washing_1b; break;
tmp = barrels[target_task].time_washing_1b;
break;
case ZONE_WASHING_2B:
tmp = barrels[target_task].time_washing_2b; break;
tmp = barrels[target_task].time_washing_2b;
break;
case ZONE_WASHING_3B:
tmp = barrels[target_task].time_washing_3b; break;
tmp = barrels[target_task].time_washing_3b;
break;
case ZONE_WASHING_4B:
tmp = barrels[target_task].time_washing_4b; break;
tmp = barrels[target_task].time_washing_4b;
break;
}
if (tmp != -1) {
@ -471,30 +505,11 @@ void schedule_robot_1() {
}
}
}
} else {
// пассивация, тут все просто
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | ZONE_WASHING_3B;
}
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_PASSIVATION;
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
robot1_code.code[cmd_index++] = barrels[target_task].time_passivation;
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_WASHING_4A;
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
robot1_code.code[cmd_index++] = barrels[target_task].time_washing_4a;
}
robot1_code.code[cmd_index++] = ROBOT_CMD_END;
robot1_code.PC = 0;
printf("INFO: code length is %d\n", cmd_index);
debug_print_robot1_code();
}