Готов механизм транзакций на роботе с пачкой команд
This commit is contained in:
64
utils.h
64
utils.h
@@ -49,10 +49,9 @@ struct barrel {
|
||||
short zone;
|
||||
// программный таймер, тикает сразу у всех барабанов,
|
||||
short software_timer;
|
||||
short curr_process; // стадия процесса
|
||||
|
||||
// время процессов
|
||||
short time_defatting; // Время обезжиривания
|
||||
short time_degreasing; // Время обезжиривания
|
||||
short time_washing_1a; // Время промывки 1А
|
||||
short time_washing_1b; // Время промывки 1Б
|
||||
short time_etching; // Время травления
|
||||
@@ -66,30 +65,6 @@ struct barrel {
|
||||
short time_washing_4b; // Время промывки 4Б
|
||||
};
|
||||
|
||||
// deprecated: do not use!
|
||||
enum BarrelProcess {
|
||||
PROCESS_NONE = 0, // сразу после загрузки
|
||||
PROCESS_DEFATTING, // обезжиривание
|
||||
PROCESS_WASHING_1A, // промывка 1А
|
||||
PROCESS_WASHING_1B, // промывка 1Б
|
||||
PROCESS_ETCHING, // травление
|
||||
PROCESS_WASHING_2A, // промывка 2А
|
||||
PROCESS_WASHING_2B, // промывка 2Б
|
||||
PROCESS_GALVANIZING, // цинкование
|
||||
PROCESS_WASHING_3A, // промывка 3А
|
||||
PROCESS_WASHING_3B, // промывка 3Б
|
||||
PROCESS_PASSIVATION, // пассивация
|
||||
PROCESS_WASHING_4B, // промывка 4Б
|
||||
PROCESS_RETURN_1, // возвращение обратно, стадия 1 - перекладываем в свободную промывку (если есть)
|
||||
PROCESS_RETURN_2, // возвращение обратно, стадия 2 - перекладываем в свободную загрузку и удалить барабан
|
||||
};
|
||||
|
||||
struct robot_cmd {
|
||||
short cmd;
|
||||
short args[2];
|
||||
short step;
|
||||
};
|
||||
|
||||
|
||||
union robot_regs_mx {
|
||||
short raw_word;
|
||||
@@ -159,8 +134,6 @@ extern "C" {
|
||||
|
||||
extern struct barrel barrels[BARRELS_COUNT];
|
||||
|
||||
extern struct robot_cmd robot1_cmd;
|
||||
extern struct robot_cmd robot2_cmd;
|
||||
|
||||
// почему-то компилер говорит что размер структуру сраный
|
||||
//extern struct robot robot1;
|
||||
@@ -176,9 +149,28 @@ extern struct robot_cmd robot2_cmd;
|
||||
#define ROBOT_CMD_WAIT 0x6000
|
||||
#define ROBOT_CMD_TMR_SET 0x7000
|
||||
#define ROBOT_CMD_SET_LOCK_ZONE 0x8000
|
||||
#define ROBOT_CMD_CORRECT_X 0x9000
|
||||
#define ROBOT_CMD_CORRECT_Z 0xA000
|
||||
#define ROBOT_CMD_CORRECT_AXIS 0x9000
|
||||
#define ROBOT_CMD_INC_ZONE 0xA000
|
||||
|
||||
// перемещение с барабаном
|
||||
#define ROBOT_WITH_BARREL 0x0800
|
||||
|
||||
// алиасы перемещений с барабаном
|
||||
#define ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL (ROBOT_CMD_MOVE_TO_ZONE | ROBOT_WITH_BARREL)
|
||||
#define ROBOT_CMD_UP_WITH_BARREL (ROBOT_CMD_UP | ROBOT_WITH_BARREL)
|
||||
#define ROBOT_CMD_DOWN_WITH_BARREL (ROBOT_CMD_DOWN | ROBOT_WITH_BARREL)
|
||||
#define ROBOT_CMD_DOWN_2_WITH_BARREL (ROBOT_CMD_DOWN_2 | ROBOT_WITH_BARREL)
|
||||
|
||||
|
||||
#define ROBOT_AXIS_X 1
|
||||
#define ROBOT_CMD_CORRECT_AXIS_X (ROBOT_CMD_CORRECT_AXIS | ROBOT_AXIS_X)
|
||||
#define ROBOT_AXIS_Z 2
|
||||
#define ROBOT_CMD_CORRECT_AXIS_Z (ROBOT_CMD_CORRECT_AXIS | ROBOT_AXIS_Z)
|
||||
|
||||
#define ROBOT_ZONE_ETCH 1
|
||||
#define ROBOT_CMD_INC_ZONE_ETCH (ROBOT_CMD_INC_ZONE | ROBOT_ZONE_ETCH)
|
||||
#define ROBOT_ZONE_GAL 2
|
||||
#define ROBOT_CMD_INC_ZONE_GAL (ROBOT_CMD_INC_ZONE | ROBOT_ZONE_GAL)
|
||||
|
||||
// NOTE первой командой на любую транзакцию должна стоять команда опустить траверсу (в 22 зоне по идее никогда не закончим)
|
||||
struct robot_code {
|
||||
@@ -188,16 +180,16 @@ struct robot_code {
|
||||
/*
|
||||
* система команд, которая нужна: (квадратные скобки - аргумент это младший байт, фигурные - отдельное слово)
|
||||
* 0: конец
|
||||
* 1 [зона]: съебаться в зону
|
||||
* 1 (опция с барабаном) [зона]: съебаться в зону
|
||||
* 2: встать на смещенную позицию
|
||||
* 3 [с барабаном]: поднять траверсу (перед выполнением ожидать если таймер барабана не истек)
|
||||
* 4 [с барабаном]: опустить траверсу
|
||||
* 5 [с барабаном]: опустить траверсу не до конца
|
||||
* 3 (опция с барабаном): поднять траверсу (перед выполнением ожидать если таймер барабана не истек)
|
||||
* 4 (опция с барабаном): опустить траверсу
|
||||
* 5 (опция с барабаном): опустить траверсу не до конца
|
||||
* 6 [сек]: пауза на нужное количество секунд
|
||||
* 7 {время}: установить таймер барабану
|
||||
* 8 [зона]: установить зону блокировки
|
||||
* 9: скорректировать ос X
|
||||
* 10: скорректировать ос Z
|
||||
* 9 [X(1) | Y(2)]: скорректировать ось
|
||||
* 10 [ETCH(1) |GAL (2)]: сделать инкремент зоны гальваники или обезжиривания
|
||||
*
|
||||
* формат команды: (команда, старший байт) [младший байт, аргумент команды (если есть)] [слово, аргумент если команда требует]
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user