Подготовка к переписыванию планировщика: добавлены переменные на ПЛК, добавлена система команд для роботов
This commit is contained in:
126
emulator.h
126
emulator.h
@@ -1,94 +1,14 @@
|
||||
//
|
||||
// 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; // пока будет достаточно этого
|
||||
};
|
||||
#include "utils.h"
|
||||
|
||||
#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 struct robot_regs robot1;
|
||||
extern struct robot_regs robot2;
|
||||
|
||||
extern char schedulerSoftwareTimer;
|
||||
extern char schedulerUnloadButton;
|
||||
@@ -98,6 +18,46 @@ extern char schedulerOneRobotMode;
|
||||
|
||||
void scheduler_main();
|
||||
|
||||
|
||||
// Флаги, которые есть в оригинальной программе на ПЛК, в "C global variables"
|
||||
|
||||
// Кнопки с панели
|
||||
extern char hla_auto_mode;
|
||||
extern char hla_night_mode;
|
||||
extern char hla_pause;
|
||||
extern char hla_correct_command;
|
||||
|
||||
|
||||
// кнопки управления роботом с панели
|
||||
|
||||
|
||||
// кнопка загрузки в зоне 0, означает что барабан надо изъять из этой загрузки (а перед этим создать)
|
||||
extern char button_load;
|
||||
|
||||
// разрешающий сигнал подавать не буду, он не нужен поскольку планировщик нужен всегда
|
||||
|
||||
// кнопка выгрузки, означает что барабан нужно вернуть обратно
|
||||
extern char button_unload;
|
||||
|
||||
// кнопка загрузки в зоне 1, означает что барабан в этой зоне подлежит удалению
|
||||
extern char button_unload_end;
|
||||
|
||||
// кнопка загрузки в зоне 22, означает что барабан в этой зоне подлежит удалению
|
||||
extern char button_unload_remove;
|
||||
|
||||
|
||||
// Переменные, которые надо добавить в C Global variables
|
||||
|
||||
// код для роботов
|
||||
extern robot_code robot1_code;
|
||||
extern robot_code robot2_code;
|
||||
|
||||
|
||||
// lock-зоны, нельзя двигаться за них и за робота
|
||||
extern short robot1_lock_zone;
|
||||
extern short robot2_lock_zone;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user