106 lines
3.1 KiB
C
106 lines
3.1 KiB
C
//
|
||
// Created by Владислав Остапов on 27.10.2022.
|
||
//
|
||
|
||
#ifndef SDP_SHEDULER_EMULATOR_H
|
||
#define SDP_SHEDULER_EMULATOR_H
|
||
|
||
#include <stdint.h>
|
||
|
||
#define BARRELS_COUNT 10
|
||
|
||
union flags {
|
||
int16_t raw_word;
|
||
struct {
|
||
char is_exist: 1;
|
||
char is_up: 1; // для панели
|
||
char robot: 2; // обслуживающий робот
|
||
int _unused: 11;
|
||
};
|
||
};
|
||
|
||
struct barrel {
|
||
union flags flags;
|
||
short zone;
|
||
short software_timer;
|
||
short curr_process; // стадия процесса
|
||
|
||
// время процессов
|
||
// TODO сделать это как union, чтобы можно было юзать как таблицу
|
||
short time_defatting; // Время обезжиривания
|
||
short time_washing_1a; // Время промывки 1А
|
||
short time_washing_1b; // Время промывки 1Б
|
||
short time_etching; // Время травления
|
||
short time_washing_2a; // Время промывки 2А
|
||
short time_washing_2b; // Время промывки 2Б
|
||
short time_galvanizing; // Время цинкования
|
||
short time_washing_3a; // Время промывки 3А
|
||
short time_washing_3b; // Время промывки 3Б
|
||
short time_passivation; // Время пассивации
|
||
short time_washing_4a; // Время промывки 4А
|
||
short time_washing_4b; // Время промывки 4Б
|
||
};
|
||
|
||
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[4];
|
||
short step;
|
||
};
|
||
|
||
|
||
union robot_flags_mz {
|
||
short raw_word;
|
||
struct {
|
||
char is_corrected: 1;
|
||
char is_up: 1;
|
||
};
|
||
};
|
||
|
||
struct robot {
|
||
union robot_flags_mz mz;
|
||
short curr_zone; // пока будет достаточно этого
|
||
};
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
extern struct barrel barrels[BARRELS_COUNT];
|
||
|
||
extern struct robot_cmd robot1_cmd;
|
||
extern struct robot_cmd robot2_cmd;
|
||
|
||
extern struct robot robot1;
|
||
extern struct robot robot2;
|
||
|
||
extern char schedulerSoftwareTimer;
|
||
extern char schedulerUnloadButton;
|
||
extern char schedulerLoadButton1;
|
||
extern char schedulerLoadButton2;
|
||
extern char schedulerOneRobotMode;
|
||
|
||
void scheduler_main();
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif //SDP_SHEDULER_EMULATOR_H
|