Skip to content

Commit 4f49ae8

Browse files
committed
admt: Changed samples per cycle to total samples in calibration tab
- Revised displayed turn count in acquisition tab Signed-off-by: John Lloyd Juanillo <[email protected]>
1 parent ccb730b commit 4f49ae8

File tree

3 files changed

+35
-32
lines changed

3 files changed

+35
-32
lines changed

plugins/admt/include/admt/harmoniccalibration.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public Q_SLOTS:
166166
*clearCalibrateDataButton, *clearCommandLogButton, *applySequenceButton, *readAllRegistersButton;
167167
QButtonGroup *rightMenuButtonGroup;
168168

169-
QLineEdit *acquisitionMotorRPMLineEdit, *calibrationCycleCountLineEdit, *calibrationSamplesPerCycleLineEdit,
169+
QLineEdit *acquisitionMotorRPMLineEdit, *calibrationCycleCountLineEdit, *calibrationTotalSamplesLineEdit,
170170
*calibrationMotorRPMLineEdit, *motorTargetPositionLineEdit, *displayLengthLineEdit,
171171
*dataGraphSamplesLineEdit, *tempGraphSamplesLineEdit, *acquisitionMotorCurrentPositionLineEdit,
172172
*calibrationH1MagLineEdit, *calibrationH2MagLineEdit, *calibrationH3MagLineEdit,
@@ -411,7 +411,7 @@ public Q_SLOTS:
411411
void connectLineEditToRPSConversion(QLineEdit *lineEdit, double &vmax);
412412
void connectLineEditToAMAXConversion(QLineEdit *lineEdit, double &amax);
413413
void connectRegisterBlockToRegistry(RegisterBlockWidget *widget);
414-
void connectLineEditToRPM(QLineEdit *lineEdit, double &variable);
414+
void connectLineEditToRPM(QLineEdit *lineEdit, double &variable, double min, double max);
415415
#pragma endregion
416416

417417
#pragma region Convert Methods

plugins/admt/src/admtcontroller.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1220,7 +1220,7 @@ int ADMTController::getAbsAngleTurnCount(uint16_t registerValue)
12201220
return turnCount / 4; // Convert from quarter turns to whole turns
12211221
} else if(turnCount >= 0xD8 && turnCount <= 0xDB) {
12221222
// Invalid turn count
1223-
return -10;
1223+
return turnCount / 4;
12241224
} else {
12251225
// 2's complement turn count
12261226
int8_t signedTurnCount = static_cast<int8_t>(turnCount); // Handle as signed value

plugins/admt/src/harmoniccalibration.cpp

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ static int continuousCalibrationSampleRate = 10000000;
4343

4444
static int bufferSize = 1;
4545
static int cycleCount = 11;
46-
static int samplesPerCycle = 256;
47-
static int totalSamplesCount = cycleCount * samplesPerCycle;
46+
static int samplesPerCycle = 24;
47+
static int totalSamplesCount = 256;
4848
static bool isStartMotor = false;
4949
static bool isPostCalibration = false;
5050
static bool isCalculatedCoeff = false;
@@ -312,7 +312,7 @@ ToolTemplate *HarmonicCalibration::createAcquisitionWidget()
312312
QLabel *motorRPMLabel = new QLabel("Motor RPM", motorRPMWidget);
313313
Style::setStyle(motorRPMLabel, style::properties::label::subtle);
314314
acquisitionMotorRPMLineEdit = new QLineEdit(QString::number(motor_rpm), motorRPMWidget);
315-
connectLineEditToRPM(acquisitionMotorRPMLineEdit, motor_rpm);
315+
connectLineEditToRPM(acquisitionMotorRPMLineEdit, motor_rpm, 1, fast_motor_rpm);
316316
motorRPMLayout->addWidget(motorRPMLabel);
317317
motorRPMLayout->addWidget(acquisitionMotorRPMLineEdit);
318318

@@ -1325,18 +1325,18 @@ ToolTemplate *HarmonicCalibration::createCalibrationWidget()
13251325
calibrationCycleCountLayout->addWidget(calibrationCycleCountLabel);
13261326
calibrationCycleCountLayout->addWidget(calibrationCycleCountLineEdit);
13271327

1328-
QWidget *calibrationSamplesPerCycleWidget = new QWidget(calibrationDatasetConfigCollapseSection);
1329-
QVBoxLayout *calibrationSamplesPerCycleLayout = new QVBoxLayout(calibrationSamplesPerCycleWidget);
1330-
calibrationSamplesPerCycleWidget->setLayout(calibrationSamplesPerCycleLayout);
1331-
calibrationSamplesPerCycleLayout->setMargin(0);
1332-
calibrationSamplesPerCycleLayout->setSpacing(0);
1333-
QLabel *calibrationSamplesPerCycleLabel = new QLabel("Samples Per Cycle", calibrationSamplesPerCycleWidget);
1334-
Style::setStyle(calibrationSamplesPerCycleLabel, style::properties::label::subtle);
1335-
calibrationSamplesPerCycleLineEdit = new QLineEdit(calibrationSamplesPerCycleWidget);
1336-
calibrationSamplesPerCycleLineEdit->setText(QString::number(samplesPerCycle));
1337-
connectLineEditToNumber(calibrationSamplesPerCycleLineEdit, samplesPerCycle, 1, 256);
1338-
calibrationSamplesPerCycleLayout->addWidget(calibrationSamplesPerCycleLabel);
1339-
calibrationSamplesPerCycleLayout->addWidget(calibrationSamplesPerCycleLineEdit);
1328+
QWidget *calibrationTotalSamplesWidget = new QWidget(calibrationDatasetConfigCollapseSection);
1329+
QVBoxLayout *calibrationTotalSamplesLayout = new QVBoxLayout(calibrationTotalSamplesWidget);
1330+
calibrationTotalSamplesWidget->setLayout(calibrationTotalSamplesLayout);
1331+
calibrationTotalSamplesLayout->setMargin(0);
1332+
calibrationTotalSamplesLayout->setSpacing(0);
1333+
QLabel *calibrationTotalSamplesLabel = new QLabel("Total Samples", calibrationTotalSamplesWidget);
1334+
Style::setStyle(calibrationTotalSamplesLabel, style::properties::label::subtle);
1335+
calibrationTotalSamplesLineEdit = new QLineEdit(calibrationTotalSamplesWidget);
1336+
calibrationTotalSamplesLineEdit->setText(QString::number(totalSamplesCount));
1337+
connectLineEditToNumber(calibrationTotalSamplesLineEdit, totalSamplesCount, 1, 8192);
1338+
calibrationTotalSamplesLayout->addWidget(calibrationTotalSamplesLabel);
1339+
calibrationTotalSamplesLayout->addWidget(calibrationTotalSamplesLineEdit);
13401340

13411341
QWidget *motorRPMWidget = new QWidget(calibrationDatasetConfigCollapseSection);
13421342
QVBoxLayout *motorRPMLayout = new QVBoxLayout(motorRPMWidget);
@@ -1346,7 +1346,7 @@ ToolTemplate *HarmonicCalibration::createCalibrationWidget()
13461346
QLabel *motorRPMLabel = new QLabel("Motor RPM", motorRPMWidget);
13471347
Style::setStyle(motorRPMLabel, style::properties::label::subtle);
13481348
calibrationMotorRPMLineEdit = new QLineEdit(QString::number(motor_rpm), motorRPMWidget);
1349-
connectLineEditToRPM(calibrationMotorRPMLineEdit, motor_rpm);
1349+
connectLineEditToRPM(calibrationMotorRPMLineEdit, motor_rpm, 1, fast_motor_rpm);
13501350
motorRPMLayout->addWidget(motorRPMLabel);
13511351
motorRPMLayout->addWidget(calibrationMotorRPMLineEdit);
13521352

@@ -1367,7 +1367,7 @@ ToolTemplate *HarmonicCalibration::createCalibrationWidget()
13671367
calibrationDatasetConfigCollapseSection->contentLayout()->setSpacing(8);
13681368
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(calibrationModeMenuCombo);
13691369
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(calibrationCycleCountWidget);
1370-
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(calibrationSamplesPerCycleWidget);
1370+
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(calibrationTotalSamplesWidget);
13711371
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(motorRPMWidget);
13721372
calibrationDatasetConfigCollapseSection->contentLayout()->addWidget(motorDirectionWidget);
13731373

@@ -1487,7 +1487,6 @@ ToolTemplate *HarmonicCalibration::createCalibrationWidget()
14871487
stopMotor();
14881488
isStartMotor = false;
14891489
toggleTabSwitching(true);
1490-
toggleCalibrationControls(true);
14911490

14921491
if(isPostCalibration) {
14931492
graphPostDataList = m_admtController->streamBufferedValues;
@@ -2561,7 +2560,7 @@ void HarmonicCalibration::getDeviceFaultStatus(int sampleRate)
25612560
success = false;
25622561

25632562
if(!success) {
2564-
StatusBarManager::pushUrgentMessage("Could not read device, disconnecting device");
2563+
StatusBarManager::pushMessage("Could not read device, disconnecting device");
25652564
Q_EMIT m_admtController->requestDisconnect();
25662565
break;
25672566
}
@@ -2723,8 +2722,10 @@ void HarmonicCalibration::updateLineEditValues()
27232722
if(count == static_cast<double>(UINT64_MAX)) {
27242723
countValueLabel->setText("N/A");
27252724
} else {
2726-
if(count == -10)
2727-
countValueLabel->setText("Invalid turn count");
2725+
if(count == 54)
2726+
countValueLabel->setText("Invalid turn count (54)");
2727+
else if(count == -9)
2728+
countValueLabel->setText("Invalid turn count (-9)");
27282729
else
27292730
countValueLabel->setText(QString::number(count));
27302731
}
@@ -3257,7 +3258,8 @@ void HarmonicCalibration::getCalibrationSamples()
32573258

32583259
void HarmonicCalibration::startCalibration()
32593260
{
3260-
totalSamplesCount = cycleCount * samplesPerCycle;
3261+
// totalSamplesCount = cycleCount * samplesPerCycle;
3262+
samplesPerCycle = ceil(totalSamplesCount / cycleCount);
32613263
graphPostDataList.reserve(totalSamplesCount);
32623264
graphPostDataList.squeeze();
32633265
graphDataList.reserve(totalSamplesCount);
@@ -3542,6 +3544,10 @@ void HarmonicCalibration::resetAllCalibrationState()
35423544
isCalculatedCoeff = false;
35433545
resetToZero = true;
35443546
displayCalculatedCoeff();
3547+
3548+
clearHarmonicRegisters();
3549+
3550+
toggleCalibrationControls(true);
35453551
}
35463552

35473553
void HarmonicCalibration::computeSineCosineOfAngles(QVector<double> graphDataList)
@@ -4108,7 +4114,7 @@ void HarmonicCalibration::toggleCalibrationControls(bool value)
41084114
{
41094115
calibrationModeMenuCombo->setEnabled(value);
41104116
calibrationCycleCountLineEdit->setEnabled(value);
4111-
calibrationSamplesPerCycleLineEdit->setEnabled(value);
4117+
calibrationTotalSamplesLineEdit->setEnabled(value);
41124118
calibrationMotorRPMLineEdit->setEnabled(value);
41134119
calibrationMotorDirectionSwitch->setEnabled(value);
41144120
}
@@ -5115,15 +5121,12 @@ void HarmonicCalibration::connectRegisterBlockToRegistry(RegisterBlockWidget *wi
51155121
}
51165122
}
51175123

5118-
void HarmonicCalibration::connectLineEditToRPM(QLineEdit *lineEdit, double &variable)
5124+
void HarmonicCalibration::connectLineEditToRPM(QLineEdit *lineEdit, double &variable, double min, double max)
51195125
{
5120-
QDoubleValidator *validator = new QDoubleValidator(this);
5121-
validator->setNotation(QDoubleValidator::StandardNotation);
5122-
lineEdit->setValidator(validator);
5123-
connect(lineEdit, &QLineEdit::editingFinished, this, [this, lineEdit, &variable]() {
5126+
connect(lineEdit, &QLineEdit::editingFinished, this, [this, lineEdit, min, max, &variable]() {
51245127
bool ok;
51255128
double value = lineEdit->text().toDouble(&ok);
5126-
if(ok && variable != value) {
5129+
if(ok && variable != value && value >= min && value <= max) {
51275130
variable = value;
51285131
rotate_vmax = convertRPStoVMAX(convertRPMtoRPS(variable));
51295132
writeMotorAttributeValue(ADMTController::MotorAttribute::ROTATE_VMAX, rotate_vmax);

0 commit comments

Comments
 (0)