Слияние кода из проекта для ПЛК с этим проектом
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(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;
|
||||
|
||||
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";
|
||||
|
@ -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;
|
||||
|
@ -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
63
utils.h
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user