Слияние кода из проекта для ПЛК с этим проектом
This commit is contained in:
parent
ab2f574428
commit
f04fb49a16
@ -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(sdp_sheduler scheduler.c emulator.cpp emulator.h robot.cpp robot.h utils.c utils.h)
|
||||||
|
|
||||||
add_executable(remote_listener remote_listener.cpp)
|
add_executable(remote_listener remote_listener.cpp)
|
||||||
|
add_definitions(-DEMULATOR=1)
|
||||||
|
16
emulator.cpp
16
emulator.cpp
@ -12,11 +12,15 @@ struct robot_regs robot1;
|
|||||||
struct robot_regs robot2;
|
struct robot_regs robot2;
|
||||||
|
|
||||||
char schedulerSoftwareTimer = 0;
|
char schedulerSoftwareTimer = 0;
|
||||||
char schedulerUnloadButton = 0;
|
|
||||||
char schedulerLoadButton1 = 0;
|
|
||||||
char schedulerLoadButton2 = 0;
|
|
||||||
char schedulerOneRobotMode = 1;
|
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 ROWS = 10;
|
||||||
static const int COLS = 23 * 5 + 1;
|
static const int COLS = 23 * 5 + 1;
|
||||||
static char buffer[ROWS][COLS];
|
static char buffer[ROWS][COLS];
|
||||||
@ -227,13 +231,13 @@ int main() {
|
|||||||
message = "Continue...";
|
message = "Continue...";
|
||||||
} else {
|
} else {
|
||||||
if (in == "u") {
|
if (in == "u") {
|
||||||
schedulerUnloadButton = 1;
|
button_unload = 1;
|
||||||
message = "Нажата кнопка выгрузки";
|
message = "Нажата кнопка выгрузки";
|
||||||
} else if (in == "1") {
|
} else if (in == "1") {
|
||||||
schedulerLoadButton1 = 1;
|
button_unload_end = 1;
|
||||||
message = "Нажата кнопка загрузки 1";
|
message = "Нажата кнопка загрузки 1";
|
||||||
} else if (in == "2") {
|
} else if (in == "2") {
|
||||||
schedulerLoadButton2 = 1;
|
button_load = 1;
|
||||||
message = "Нажата кнопка загрузки 2";
|
message = "Нажата кнопка загрузки 2";
|
||||||
} else {
|
} else {
|
||||||
message = "Неизвестная команда. q - выход, u - выгрузка, 1 - загрузка 1, 2 - загрузка 2";
|
message = "Неизвестная команда. q - выход, u - выгрузка, 1 - загрузка 1, 2 - загрузка 2";
|
||||||
|
@ -11,9 +11,6 @@ extern struct robot_regs robot1;
|
|||||||
extern struct robot_regs robot2;
|
extern struct robot_regs robot2;
|
||||||
|
|
||||||
extern char schedulerSoftwareTimer;
|
extern char schedulerSoftwareTimer;
|
||||||
extern char schedulerUnloadButton;
|
|
||||||
extern char schedulerLoadButton1;
|
|
||||||
extern char schedulerLoadButton2;
|
|
||||||
extern char schedulerOneRobotMode;
|
extern char schedulerOneRobotMode;
|
||||||
|
|
||||||
extern short etching_zone, galvanizing_zone;
|
extern short etching_zone, galvanizing_zone;
|
||||||
|
@ -159,7 +159,7 @@ short can_move(struct barrel* bar) {
|
|||||||
|
|
||||||
case ZONE_UNLOAD:
|
case ZONE_UNLOAD:
|
||||||
// последняя промывка, нужно разрешение на выгрузку
|
// последняя промывка, нужно разрешение на выгрузку
|
||||||
if (schedulerOneRobotMode && schedulerUnloadButton) {
|
if (schedulerOneRobotMode && button_unload) {
|
||||||
// нужно промывку загрузку 0
|
// нужно промывку загрузку 0
|
||||||
if (!zone_is_busy(ZONE_LOAD_1)) {
|
if (!zone_is_busy(ZONE_LOAD_1)) {
|
||||||
return ZONE_LOAD_1;
|
return ZONE_LOAD_1;
|
||||||
@ -668,8 +668,8 @@ void scheduler_main() {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// тут возможна только вставка барабанов
|
// тут возможна только вставка барабанов
|
||||||
if (schedulerLoadButton2) {
|
if (button_load) {
|
||||||
schedulerLoadButton2 = create_barrel_in_load();
|
button_load = create_barrel_in_load();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (schedulerSoftwareTimer) {
|
if (schedulerSoftwareTimer) {
|
||||||
|
63
utils.h
63
utils.h
@ -132,8 +132,11 @@ struct robot_regs {
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef EMULATOR
|
||||||
extern struct barrel barrels[BARRELS_COUNT];
|
extern struct barrel barrels[BARRELS_COUNT];
|
||||||
|
#else
|
||||||
|
#define barrels ((struct barrel*)&barrels_array)
|
||||||
|
#endif
|
||||||
|
|
||||||
// почему-то компилер говорит что размер структуру сраный
|
// почему-то компилер говорит что размер структуру сраный
|
||||||
//extern struct robot robot1;
|
//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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user