Слияние кода из проекта для ПЛК с этим проектом

This commit is contained in:
VladislavOstapov 2022-12-05 11:51:31 +03:00
parent ab2f574428
commit f04fb49a16
5 changed files with 76 additions and 13 deletions

View File

@ -7,3 +7,4 @@ set(CMAKE_CXX_STANDARD 17)
add_executable(sdp_sheduler scheduler.c emulator.cpp emulator.h robot.cpp robot.h utils.c utils.h)
add_executable(remote_listener remote_listener.cpp)
add_definitions(-DEMULATOR=1)

View File

@ -12,11 +12,15 @@ struct robot_regs robot1;
struct robot_regs robot2;
char schedulerSoftwareTimer = 0;
char schedulerUnloadButton = 0;
char schedulerLoadButton1 = 0;
char schedulerLoadButton2 = 0;
char schedulerOneRobotMode = 1;
// кнопка загрузки в зоне 0, означает что барабан надо изъять из этой загрузки (а перед этим создать)
char button_load = 0;
char button_unload = 0;
char button_unload_end = 0;
char button_unload_remove = 0;
static const int ROWS = 10;
static const int COLS = 23 * 5 + 1;
static char buffer[ROWS][COLS];
@ -227,13 +231,13 @@ int main() {
message = "Continue...";
} else {
if (in == "u") {
schedulerUnloadButton = 1;
button_unload = 1;
message = "Нажата кнопка выгрузки";
} else if (in == "1") {
schedulerLoadButton1 = 1;
button_unload_end = 1;
message = "Нажата кнопка загрузки 1";
} else if (in == "2") {
schedulerLoadButton2 = 1;
button_load = 1;
message = "Нажата кнопка загрузки 2";
} else {
message = "Неизвестная команда. q - выход, u - выгрузка, 1 - загрузка 1, 2 - загрузка 2";

View File

@ -11,9 +11,6 @@ extern struct robot_regs robot1;
extern struct robot_regs robot2;
extern char schedulerSoftwareTimer;
extern char schedulerUnloadButton;
extern char schedulerLoadButton1;
extern char schedulerLoadButton2;
extern char schedulerOneRobotMode;
extern short etching_zone, galvanizing_zone;

View File

@ -159,7 +159,7 @@ short can_move(struct barrel* bar) {
case ZONE_UNLOAD:
// последняя промывка, нужно разрешение на выгрузку
if (schedulerOneRobotMode && schedulerUnloadButton) {
if (schedulerOneRobotMode && button_unload) {
// нужно промывку загрузку 0
if (!zone_is_busy(ZONE_LOAD_1)) {
return ZONE_LOAD_1;
@ -668,8 +668,8 @@ void scheduler_main() {
// }
// тут возможна только вставка барабанов
if (schedulerLoadButton2) {
schedulerLoadButton2 = create_barrel_in_load();
if (button_load) {
button_load = create_barrel_in_load();
}
if (schedulerSoftwareTimer) {

63
utils.h
View File

@ -132,8 +132,11 @@ struct robot_regs {
extern "C" {
#endif
#ifdef EMULATOR
extern struct barrel barrels[BARRELS_COUNT];
#else
#define barrels ((struct barrel*)&barrels_array)
#endif
// почему-то компилер говорит что размер структуру сраный
//extern struct robot robot1;
@ -214,7 +217,65 @@ struct robot_code {
};
/* ======================== IO DEFS ======================== */
#define ROBOT1_X 1
#define ROBOT1_Z 2
#define ROBOT2_X 3
#define ROBOT2_Z 4
#define VFD_REG_D0_ADDR 4096
#define VFD_REG_M0_ADDR 2048
/* ======================== ROBOT DEFS ======================== */
#define MB_CMD_WRITE_FLAG 5
#define MB_CMD_WRITE_REG 6
#define VFD_REG_D0_ADDR 4096
#define VFD_REG_M0_ADDR 2048
// смещение регистров M относительно M0
#define ROBOT_Z_CORRECT_STATUS_OFFSET 0
#define ROBOT_Z_CMD_EXECUTED_OFFSET 1
#define ROBOT_Z_CMD_UP_OFFSET 3
#define ROBOT_Z_CMD_DOWN_OFFSET 4
#define ROBOT_Z_CMD_CORRECT_OFFSET 5
#define ROBOT_X_CORRECT_STATUS_OFFSET 0
#define ROBOT_X_CMD_EXECUTED_OFFSET 1
#define ROBOT_X_CORRECT_SENSOR_OFFSET 2
#define ROBOT_X_CMD_MOVE_TO_ZONE_OFFSET 3
#define ROBOT_X_CMD_MOVE_TO_OFF_POS_OFFSET 4 // встать в смещенную позицию
#define ROBOT_X_CMD_MOVE_TO_COR_POS_OFFSET 5 // встать в точную позицию
#define ROBOT_X_CMD_CORRECT_OFFSET 6
#define ROBOT_X_CMD_CMD_PARKING_OFFSET 7
// смещение регистров D относительно D0
#define ROBOT_X_TARGET_ZONE_OFFSET 2
// адреса регистров в частотнике
#define ROBOT_Z_CORRECT_STATUS_ADDR VFD_REG_M0_ADDR
#define ROBOT_Z_CMD_EXECUTED_ADDR (VFD_REG_M0_ADDR + 1)
#define ROBOT_Z_CMD_UP_ADDR (VFD_REG_M0_ADDR + 3)
#define ROBOT_Z_CMD_DOWN_ADDR (VFD_REG_M0_ADDR + 4)
#define ROBOT_Z_CMD_CORRECT_ADDR (VFD_REG_M0_ADDR + 5)
#define ROBOT_X_CORRECT_STATUS_ADDR VFD_REG_M0_ADDR
#define ROBOT_X_CMD_EXECUTED_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_EXECUTED_OFFSET)
#define ROBOT_X_CORRECT_SENSOR_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CORRECT_SENSOR_OFFSET)
#define ROBOT_X_CMD_MOVE_TO_ZONE_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_MOVE_TO_ZONE_OFFSET)
#define ROBOT_X_CMD_MOVE_TO_OFF_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_MOVE_TO_OFF_POS_OFFSET)
#define ROBOT_X_CMD_MOVE_TO_COR_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_MOVE_TO_COR_POS_OFFSET)
#define ROBOT_X_CMD_CORRECT_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_CORRECT_OFFSET)
#define ROBOT_X_CMD_CMD_PARKING_ADDR (VFD_REG_M0_ADDR + ROBOT_X_CMD_CMD_PARKING_OFFSET)
#define ROBOT_X_TARGET_ZONE_ADDR (VFD_REG_D0_ADDR + ROBOT_X_TARGET_ZONE_OFFSET)
#ifdef __cplusplus
}