Исправления последовательности техпроцесса, исправления создания команд

This commit is contained in:
VladislavOstapov 2023-01-29 20:27:53 +03:00
parent 353aad9bec
commit 848e3cfdcb

117
utils.c
View File

@ -203,7 +203,7 @@ short can_move(struct barrel *bar, char robot_id) {
if (robot_id == 1) {
approximate_time = bar->zone - robot1.dx.current_zone;
} else {
approximate_time = bar->zone - robot1.dx.current_zone;
approximate_time = bar->zone - robot2.dx.current_zone;
}
// abs(approximate_time)
@ -239,8 +239,8 @@ short can_move(struct barrel *bar, char robot_id) {
if (border < robot2_lock_zone) {
border = robot2_lock_zone;
}
if (border < ZONE_WASHING_2A) {
border = ZONE_WASHING_2A;
if (border < ZONE_ETCHING_2) {
border = ZONE_ETCHING_2;
}
border += LOCK_ZONE_BORDER;
@ -493,6 +493,10 @@ void create_operation(struct robot_code *code, short barrel_id, const short star
if (hla_night_mode && barrels[barrel_id].flags.is_empty && dest_zone == get_first_night_zone()) {
barrels[barrel_id].flags.is_night = -1;
}
if (start_zone == 22) {
button_unload = 0;
}
}
short cmd_index = 0;
@ -631,11 +635,15 @@ void create_operation(struct robot_code *code, short barrel_id, const short star
code->code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL(dest_zone);
// инкремент зоны (если травление или цинкование)
if (dest_zone == ZONE_ETCHING_1 || dest_zone == ZONE_ETCHING_2) {
code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_ETCH);
} else if (dest_zone >= ZONE_GALVANIZING_1 && dest_zone <= ZONE_GALVANIZING_8) {
code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_GAL);
if (barrel_id >= 0) {
if (!barrels[barrel_id].flags.is_empty) {
// инкремент зоны (если травление или цинкование)
if (dest_zone == ZONE_ETCHING_1 || dest_zone == ZONE_ETCHING_2) {
code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_ETCH);
} else if (dest_zone >= ZONE_GALVANIZING_1 && dest_zone <= ZONE_GALVANIZING_8) {
code->code[cmd_index++] = ROBOT_CMD_INC_ZONE(ROBOT_ZONE_GAL);
}
}
}
code->code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL();
@ -646,60 +654,65 @@ void create_operation(struct robot_code *code, short barrel_id, const short star
code->code[cmd_index++] = ROBOT_CMD_UP();
code->code[cmd_index++] = ROBOT_CMD_DOWN();
} else {
if (dest_zone != 0) {
// установка времени ожидания барабана
short tmp = -1;
switch (dest_zone) {
case ZONE_DEGREASING:
tmp = barrels[barrel_id].time_degreasing;
break;
if (barrel_id >= 0) {
if (!barrels[barrel_id].flags.is_empty) {
switch (dest_zone) {
case ZONE_DEGREASING:
tmp = barrels[barrel_id].time_degreasing;
break;
case ZONE_ETCHING_1:
case ZONE_ETCHING_2:
tmp = barrels[barrel_id].time_etching;
break;
case ZONE_ETCHING_1:
case ZONE_ETCHING_2:
tmp = barrels[barrel_id].time_etching;
break;
case ZONE_GALVANIZING_1:
case ZONE_GALVANIZING_2:
case ZONE_GALVANIZING_3:
case ZONE_GALVANIZING_4:
case ZONE_GALVANIZING_5:
case ZONE_GALVANIZING_6:
case ZONE_GALVANIZING_7:
case ZONE_GALVANIZING_8:
tmp = barrels[barrel_id].time_galvanizing;
break;
case ZONE_GALVANIZING_1:
case ZONE_GALVANIZING_2:
case ZONE_GALVANIZING_3:
case ZONE_GALVANIZING_4:
case ZONE_GALVANIZING_5:
case ZONE_GALVANIZING_6:
case ZONE_GALVANIZING_7:
case ZONE_GALVANIZING_8:
tmp = barrels[barrel_id].time_galvanizing;
break;
case ZONE_WASHING_1A:
tmp = barrels[barrel_id].time_washing_1a;
break;
case ZONE_WASHING_2A:
tmp = barrels[barrel_id].time_washing_2a;
break;
case ZONE_WASHING_3A:
tmp = barrels[barrel_id].time_washing_3a;
break;
case ZONE_WASHING_4A:
tmp = barrels[barrel_id].time_washing_4a;
break;
case ZONE_WASHING_1A:
tmp = barrels[barrel_id].time_washing_1a;
break;
case ZONE_WASHING_2A:
tmp = barrels[barrel_id].time_washing_2a;
break;
case ZONE_WASHING_3A:
tmp = barrels[barrel_id].time_washing_3a;
break;
case ZONE_WASHING_4A:
tmp = barrels[barrel_id].time_washing_4a;
break;
case ZONE_WASHING_1B:
tmp = barrels[barrel_id].time_washing_1b;
break;
case ZONE_WASHING_2B:
tmp = barrels[barrel_id].time_washing_2b;
break;
case ZONE_WASHING_3B:
tmp = barrels[barrel_id].time_washing_3b;
break;
case ZONE_WASHING_4B:
tmp = barrels[barrel_id].time_washing_4b;
break;
case ZONE_WASHING_1B:
tmp = barrels[barrel_id].time_washing_1b;
break;
case ZONE_WASHING_2B:
tmp = barrels[barrel_id].time_washing_2b;
break;
case ZONE_WASHING_3B:
tmp = barrels[barrel_id].time_washing_3b;
break;
case ZONE_WASHING_4B:
tmp = barrels[barrel_id].time_washing_4b;
break;
}
} else {
tmp = 0;
}
}
if (tmp > 0) {
if (tmp >= 0) {
if (tmp > 8000) {
tmp = 8000;
}