Example #1
0
void MainWindow::data()
{
    double  amplitude = ui->dSpinAmp->value();
    double  periodo   = ui->dSpinPeriodo->value();
    double  offSet    = ui->dSpinOffSet->value();
    int     canalEscrita = ui->cb_canalEscrita->currentIndex();
    int     tipoSinal    = ui->comboTipoSinal->currentIndex();
    bool windUP = false;

    bool malhaAberta  = ui->radioAberta->isChecked();
    bool malhaFechada = ui->radioFechada->isChecked();

    bool primeiraOrdem = ui->rbSistemaO1->isChecked();
    bool segundaOrdem = ui->rbSistemaO2->isChecked();
    bool observador = ui->radioObservador->isChecked();
    bool seguidor = ui->radioSeguidor->isChecked();
    //bool controladorCascataO2 = ui->radioCascata->isChecked();
    //bool controladorSimplesO2 = ui->radioSimples->isChecked();

    double polo1[2] = {ui->dSpinP1Real_Obs->value(),ui->dSpinComplexo_Obs->value()};
    double polo2[2] = {ui->dSpinP2Real_Obs->value(),-(ui->dSpinComplexo_Obs->value())};

    qDebug() << "polos main windows";
    qDebug() << polo1[0] << polo1[1];
    qDebug() << polo2[0] << polo2[1];
    if(malhaAberta) {
        control->setTensao(amplitude);
        control->setTipoMalha(M_ABERTA);
        control->setWindUP(false);
    } else if(malhaFechada) {
        windUP = ui->windup->isChecked();
        control->setWindUP(windUP);
        control->setTensao(0);
        control->setAmplitude(amplitude);
        control->setTipoMalha(M_FECHADA);

        controladorPID();

        if(primeiraOrdem) {
            control->setTipoOrdemSistema(SISTEMA_ORDEM_1);
            control->setCanalLeitura(0);
        } else if(segundaOrdem) {
            int tipoTr = ui->combo_Tr->currentIndex();
            int tipoTs = ui->combo_Ts->currentIndex();
            int tipoMp = ui->combo_Mp->currentIndex();

            control->setTipoTr(tipoTr);
            control->setTipoTs(tipoTs);
            control->setTipoMp(tipoMp);

            control->setTipoOrdemSistema(SISTEMA_ORDEM_2);
            control->setCanalLeitura(1);


        }
        if(observador) {
            control->setPolos(polo1,polo2);
            control->setObservador(true);
        } else {
            control->setObservador(false);
        }

        if(seguidor) {
            control->setGanhosSeguidor(matGanhosSeguidor);
        }
    }

    if(tipoSinal == ALEATORIO) {
        double auxForRand = ui->dSpinAux->value();
        control->setAuxForRand(auxForRand);
    }

    control->setCanalEscrita(canalEscrita);
    control->setPeriodo(periodo);
    control->setOffSet(offSet);
    control->setTipoSinal(tipoSinal);
}
/*******************************************************************************
 *Função principal do controle de velocidade -----------------------------------
 */
void controleVelocidade(void)
{
	updateEncoders();	// Updates the distance and speeds
	controladorPID();		// Speed controller
}