This repository has been archived on 2024-09-18. You can view files and clone it, but cannot push or open issues or pull requests.
sdp-scheduler/emulator.h
2022-11-19 10:21:39 +03:00

106 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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