Browse Source

update

master
zhaohe 2 years ago
parent
commit
20922035f1
  1. 2
      sdk
  2. 211
      usrc/main.cpp

2
sdk

@ -1 +1 @@
Subproject commit 62f322c59d64e4d8ff4795173a885a320813cd6b
Subproject commit 2952161f647a478806fc7ed0c26e8480b2dccf59

211
usrc/main.cpp

@ -8,10 +8,12 @@
//
#include "one_dimensional_code_laser_scanner.hpp"
// #include "sdk/components/single_axis_motor_control_v2/single_axis_motor_control_v2.hpp"
#include "sdk/components/iflytop_can_slave_modules/idcard_reader_service.hpp"
#include "sdk/components/single_axis_motor_control/single_axis_motor_control.hpp"
#include "sdk/hal/zhal.hpp"
#include "sdk\components\iflytop_can_slave_modules\io_control_service.hpp"
#include "sdk\components\iflytop_can_slave_v1\iflytop_can_slave.hpp"
#include "sdk\components\m3078\m3078_code_scaner.hpp"
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
@ -46,11 +48,14 @@ ZGPIO io_fybjl_sensor2;
ZGPIO io_fybjl_sensor1;
ZGPIO io_fybjl_sensor0;
M3078CodeScanner m_m3078CodeScanner;
DeviceBaseControlService m_deviceBaseControlService;
IOControlService m_ioControlService;
SingleAxisMotorControler m_pyMotorControlService; // 平移电机
SingleAxisMotorControler m_tjMotorControlService; // 推进电机
OneDimensionalCodeLaserScanner m_oneDimensionalCodeLaserScanner;
IDCardReaderService m_idCardReaderService;
void input_sensors_init() {
io_fybh_read1.initAsInput(FYBH_READ1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false /*mirror*/);
@ -71,7 +76,6 @@ void input_sensors_init() {
io_fybjl_sensor0.initAsInput(FYBJL_SENSOR0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_risingAndFallingIrq, true /*mirror*/);
}
icps::error_t Main::onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser *processer, icps::WriteEvent *event) { return icps::kSuccess; }
icps::error_t Main::onHostRegisterReadEvent(IflytopCanProtocolStackProcesser *processer, icps::ReadEvent *event) { return icps::kSuccess; }
void Main::onHostRegisterReportEvent(IflytopCanProtocolStackProcesser *processer, icps::ReportEvent *event) {}
@ -90,12 +94,55 @@ void Main::run() {
ZHAL_CORE_REG(200, { debuglight.toggleState(); });
/*******************************************************************************
* *
*******************************************************************************/
{ //
auto *cfg = IflytopCanProtocolStackProcesser::createDefaultConfig(DEVICE_ID, 128);
m_protocolStack.initialize(cfg);
m_protocolStack.setDumpPacketFlag(false);
// m_protocolStack.registerListener(this);
// m_protocolStack.activeReg(REG_GPIO_INPUT0, icps::kwr, 0);
}
{ //
m_deviceBaseControlService.initialize(&m_protocolStack, DEVICE_ID);
m_deviceBaseControlService.setListener([](int32_t engineer_mode) {
// m_pyMotorControlService.setEngineerMode(engineer_mode);
// m_tjMotorControlService.setEngineerMode(engineer_mode);
});
}
/*******************************************************************************
* GPIO输入初始化 *
*******************************************************************************/
input_sensors_init();
{
m_ioControlService.initialize(&m_protocolStack, GPIO_INPUT_ADD_BASE, nullptr, //
//
[this](int io_off) {
if (io_off == 0) return io_fybjl_sensor0.getState();
if (io_off == 1) return io_fybjl_sensor1.getState();
if (io_off == 2) return io_fybjl_sensor2.getState();
if (io_off == 3) return io_fybjl_sensor3.getState();
if (io_off == 4) return io_fybjl_sensor4.getState();
if (io_off == 5) return io_fybjl_sensor5.getState();
if (io_off == 6) return io_fybjl_sensor6.getState();
if (io_off == 7) return io_fybjl_sensor7.getState();
if (io_off == 8) return io_fybjl_sensor8.getState();
if (io_off == 9) return io_fybh_read1.getState();
if (io_off == 10) return io_fybh_read2.getState();
if (io_off == 11) return io_fybh_read3.getState();
if (io_off == 12) return io_fybh_read4.getState();
if (io_off == 13) return io_fybh_read5.getState();
if (io_off == 14) return io_fybh_read6.getState();
return false;
});
}
/*******************************************************************************
* *
* *
*******************************************************************************/
{
TMC5130::cfg_t cfg = {.hspi = &MOTOR_SPI, .enn_pin = MOTOR0_ENN, .csn_pin = MOTOR0_CSN};
@ -105,8 +152,33 @@ void Main::run() {
ZLOGI(TAG, "m_py_motor:%lx", chipv);
m_py_motor.setIHOLD_IRUN(1, 31, 0);
// m_py_motor.rotate(500000);
m_py_motor.setIHOLD_IRUN(2, 12, 0);
m_py_motor.setMotorShaft(false);
m_pyMotorControlService.initialize( //
"infeedMotor", &m_protocolStack, REG_PY_MOTOR_CTRL_ADD_BASE,
&io_fybjl_sensor1, // ZERO_GPIO
NULL, // LGPIO
NULL, // RGPIO
&m_py_motor // motor
);
m_pyMotorControlService.cfg_acc->setVal(30000);
m_pyMotorControlService.cfg_dec->setVal(30000);
m_pyMotorControlService.cfg_velocity->setVal(1000000);
m_pyMotorControlService.cfg_zero_shift->setVal(0);
m_pyMotorControlService.cfg_runhome_velocity->setVal(50000);
m_pyMotorControlService.cfg_runtohome_dec->setVal(100000);
m_pyMotorControlService.cfg_min_pos->setVal(-1000);
m_pyMotorControlService.cfg_max_pos->setVal(1144028);
m_pyMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
m_pyMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
}
/*******************************************************************************
* *
*******************************************************************************/
{
TMC5130::cfg_t cfg = {.hspi = &MOTOR_SPI, .enn_pin = MOTOR1_ENN, .csn_pin = MOTOR1_CSN};
@ -115,125 +187,40 @@ void Main::run() {
ZLOGI(TAG, "m_tj_motor:%lx", chipv);
m_tj_motor.setIHOLD_IRUN(1, 31, 0);
// m_tj_motor.rotate(500000);
m_tj_motor.setIHOLD_IRUN(2, 12, 0);
m_tj_motor.setMotorShaft(true);
m_tjMotorControlService.initialize( //
"outfeedMotor", &m_protocolStack, REG_TJ_MOTOR_CTRL_ADD_BASE,
&io_fybjl_sensor4, // ZERO_GPIO
NULL, // LGPIO
NULL, // RGPIO
&m_tj_motor // motor
);
m_tjMotorControlService.cfg_acc->setVal(30000);
m_tjMotorControlService.cfg_dec->setVal(30000);
m_tjMotorControlService.cfg_velocity->setVal(1000000);
m_tjMotorControlService.cfg_zero_shift->setVal(0);
m_tjMotorControlService.cfg_runhome_velocity->setVal(50000);
m_tjMotorControlService.cfg_runtohome_dec->setVal(100000);
m_tjMotorControlService.cfg_min_pos->setVal(-1000);
m_tjMotorControlService.cfg_max_pos->setVal(1130108);
m_tjMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
m_tjMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
}
/*******************************************************************************
* *
*******************************************************************************/
{
// static ZUART uart;
// PB6.initAsOutput(STM32_GPIO::kOutput_nopull, true, false);
// ZUART::cfg_t cfg = {
// .name = "CODE_SCANER_UART",
// .huart = &CODE_SCANER_UART,
// .rxbuffersize = 300,
// .rxovertime_ms = 10,
// };
// uart.initialize(&cfg,[](){})
// uart.initialize_basic("CODE_SCANER_UART", &m_hardware, &CODE_SCANER_UART);
// uart.initialize_setRxBuffer(300);
// uart.initialize_setRxOvertime(33);
// uart.initialize_finished();
m_m3078CodeScanner.initialize(&REACTION_BOX_SWEEP_SENSOR_UART, PC11, false /*trigger pin mirror*/);
m_idCardReaderService.initialize("idCardReaderService", &m_protocolStack, REG_ID_CARD_READER_CTRL_ADD_BASE, &m_m3078CodeScanner);
}
/*******************************************************************************
* *
*******************************************************************************/
{ //
auto *cfg = IflytopCanProtocolStackProcesser::createDefaultConfig(DEVICE_ID, 128);
m_protocolStack.initialize(cfg);
m_protocolStack.setDumpPacketFlag(false);
// m_protocolStack.registerListener(this);
// m_protocolStack.activeReg(REG_GPIO_INPUT0, icps::kwr, 0);
}
{ //
m_deviceBaseControlService.initialize(&m_protocolStack, DEVICE_ID);
m_deviceBaseControlService.setListener([](int32_t engineer_mode) {
// m_pyMotorControlService.setEngineerMode(engineer_mode);
// m_tjMotorControlService.setEngineerMode(engineer_mode);
});
}
m_ioControlService.initialize(&m_protocolStack, GPIO_INPUT_ADD_BASE, nullptr, [this](int io_off) {
if (io_off == 0) return io_fybjl_sensor0.getState();
if (io_off == 1) return io_fybjl_sensor1.getState();
if (io_off == 2) return io_fybjl_sensor2.getState();
if (io_off == 3) return io_fybjl_sensor3.getState();
if (io_off == 4) return io_fybjl_sensor4.getState();
if (io_off == 5) return io_fybjl_sensor5.getState();
if (io_off == 6) return io_fybjl_sensor6.getState();
if (io_off == 7) return io_fybjl_sensor7.getState();
if (io_off == 8) return io_fybjl_sensor8.getState();
if (io_off == 9) return io_fybh_read1.getState();
if (io_off == 10) return io_fybh_read2.getState();
if (io_off == 11) return io_fybh_read3.getState();
if (io_off == 12) return io_fybh_read4.getState();
if (io_off == 13) return io_fybh_read5.getState();
if (io_off == 14) return io_fybh_read6.getState();
return false;
});
/*******************************************************************************
* *
*******************************************************************************/
m_py_motor.setIHOLD_IRUN(2, 12, 0);
m_py_motor.setMotorShaft(false);
m_pyMotorControlService.initialize( //
"infeedMotor", &m_protocolStack, REG_PY_MOTOR_CTRL_ADD_BASE,
&io_fybjl_sensor1, // ZERO_GPIO
NULL, // LGPIO
NULL, // RGPIO
&m_py_motor // motor
);
m_pyMotorControlService.cfg_acc->setVal(30000);
m_pyMotorControlService.cfg_dec->setVal(30000);
m_pyMotorControlService.cfg_velocity->setVal(1000000);
m_pyMotorControlService.cfg_zero_shift->setVal(0);
m_pyMotorControlService.cfg_runhome_velocity->setVal(50000);
m_pyMotorControlService.cfg_runtohome_dec->setVal(100000);
m_pyMotorControlService.cfg_min_pos->setVal(-1000);
m_pyMotorControlService.cfg_max_pos->setVal(1144028);
m_pyMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
m_pyMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
/*******************************************************************************
* *
*******************************************************************************/
m_tj_motor.setIHOLD_IRUN(2, 12, 0);
m_tj_motor.setMotorShaft(true);
m_tjMotorControlService.initialize( //
"outfeedMotor", &m_protocolStack, REG_TJ_MOTOR_CTRL_ADD_BASE,
&io_fybjl_sensor4, // ZERO_GPIO
NULL, // LGPIO
NULL, // RGPIO
&m_tj_motor // motor
);
m_tjMotorControlService.cfg_acc->setVal(30000);
m_tjMotorControlService.cfg_dec->setVal(30000);
m_tjMotorControlService.cfg_velocity->setVal(1000000);
m_tjMotorControlService.cfg_zero_shift->setVal(0);
m_tjMotorControlService.cfg_runhome_velocity->setVal(50000);
m_tjMotorControlService.cfg_runtohome_dec->setVal(100000);
m_tjMotorControlService.cfg_min_pos->setVal(-1000);
m_tjMotorControlService.cfg_max_pos->setVal(1130108);
m_tjMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
m_tjMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
{
#if 0
:518400
:659200
#endif
// 扫描开始位置:518400
// 扫描结束位置:659200
OneDimensionalCodeLaserScanner::cfg_t cfg;
cfg.triggerPin = FYBJL_SENSOR0;
cfg.codestartpos = 518500;

Loading…
Cancel
Save