Initial commit

This commit is contained in:
2022-11-19 10:21:39 +03:00
commit 0dd1158b3d
7 changed files with 1034 additions and 0 deletions

105
emulator.h Normal file
View File

@@ -0,0 +1,105 @@
//
// 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