/************************************************************************** Description: Функции для приёма и выдачи параметров. Автор: Улитовский Д.И. Дата последнего обновления: 2021.11.08 **************************************************************************/ #include "app_io.h" #include "pwm_sim.h" #include "adc_sim.h" int Unites[UNIT_QUA_UNITS][UNIT_LEN]; int CAN_timeout[UNIT_QUA]; RS_DATA_STRUCT rs_a = RS_DATA_STRUCT_DEFAULT, rs_b = RS_DATA_STRUCT_DEFAULT; // Изменяет значение параметра void readInputParameters(const real_T* u) { iq_norm_ADC[0][0] = _IQ(AdcSim.udc1.adc_norm); iq_norm_ADC[0][1] = _IQ(AdcSim.udc2.adc_norm); iq_norm_ADC[0][2] = _IQ(AdcSim.ia1.adc_norm); iq_norm_ADC[0][3] = _IQ(AdcSim.ib1.adc_norm); iq_norm_ADC[0][4] = _IQ(AdcSim.ic1.adc_norm); iq_norm_ADC[0][5] = _IQ(AdcSim.ia2.adc_norm); iq_norm_ADC[0][6] = _IQ(AdcSim.ib2.adc_norm); iq_norm_ADC[0][7] = _IQ(AdcSim.ic2.adc_norm); int nn = 8; WRotor.iqWRotorCalcBeforeRegul1 = _IQ(u[nn++] / (PI*2) / NORMA_FROTOR); u[nn++]; edrk.Go = u[nn++]; u[nn++]; edrk.zadanie.iq_power_zad = _IQmpy(_IQ(u[nn]), (edrk.zadanie.rmp_powers_zad.RampHighLimit)); edrk.zadanie.iq_oborots_zad_hz = _IQmpy(_IQ(u[nn++]), (edrk.zadanie.rmp_oborots_zad_hz.RampHighLimit)); } //void input_param(unsigned short num, unsigned short val) void writeOutputParameters(real_T* xD) { int nn = 0; //xD[nn++] = t2sim.ciA; //xD[nn++] = t1sim.ciA; //xD[nn++] = t2sim.ciB; //xD[nn++] = t1sim.ciB; // //xD[nn++] = t4sim.ciA; //xD[nn++] = t3sim.ciA; //xD[nn++] = t4sim.ciB; //xD[nn++] = t3sim.ciB; // //xD[nn++] = t6sim.ciA; //xD[nn++] = t5sim.ciA; //xD[nn++] = t6sim.ciB; //xD[nn++] = t5sim.ciB; //xD[nn++] = t1sim.ciB; //xD[nn++] = t2sim.ciB; //xD[nn++] = t1sim.ciA; //xD[nn++] = t2sim.ciA; //xD[nn++] = t3sim.ciB; //xD[nn++] = t4sim.ciB; //xD[nn++] = t3sim.ciA; //xD[nn++] = t4sim.ciA; // //xD[nn++] = t5sim.ciB; //xD[nn++] = t6sim.ciB; //xD[nn++] = t5sim.ciA; //xD[nn++] = t6sim.ciA; xD[nn++] = PWMPhaseA1.pwmOut.ci1A; xD[nn++] = PWMPhaseA1.pwmOut.ci2A; xD[nn++] = PWMPhaseA1.pwmOut.ci1B; xD[nn++] = PWMPhaseA1.pwmOut.ci2B; xD[nn++] = PWMPhaseB1.pwmOut.ci1A; xD[nn++] = PWMPhaseB1.pwmOut.ci2A; xD[nn++] = PWMPhaseB1.pwmOut.ci1B; xD[nn++] = PWMPhaseB1.pwmOut.ci2B; xD[nn++] = PWMPhaseC1.pwmOut.ci1A; xD[nn++] = PWMPhaseC1.pwmOut.ci2A; xD[nn++] = PWMPhaseC1.pwmOut.ci1B; xD[nn++] = PWMPhaseC1.pwmOut.ci2B; xD[nn++] = PWMPhaseA2.pwmOut.ci1A; xD[nn++] = PWMPhaseA2.pwmOut.ci2A; xD[nn++] = PWMPhaseA2.pwmOut.ci1B; xD[nn++] = PWMPhaseA2.pwmOut.ci2B; xD[nn++] = PWMPhaseB2.pwmOut.ci1A; xD[nn++] = PWMPhaseB2.pwmOut.ci2A; xD[nn++] = PWMPhaseB2.pwmOut.ci1B; xD[nn++] = PWMPhaseB2.pwmOut.ci2B; xD[nn++] = PWMPhaseC2.pwmOut.ci1A; xD[nn++] = PWMPhaseC2.pwmOut.ci2A; xD[nn++] = PWMPhaseC2.pwmOut.ci1B; xD[nn++] = PWMPhaseC2.pwmOut.ci2B; // Только для просмотра xD[nn++] = xpwm_time.Ta0_0; xD[nn++] = xpwm_time.Ta0_1; xD[nn++] = xpwm_time.Ta1_0; xD[nn++] = xpwm_time.Ta1_1; xD[nn++] = xpwm_time.Tb0_0; xD[nn++] = xpwm_time.Tb0_1; xD[nn++] = xpwm_time.Tb1_0; xD[nn++] = xpwm_time.Tb1_1; xD[nn++] = xpwm_time.Tc0_0; xD[nn++] = xpwm_time.Tc0_1; xD[nn++] = xpwm_time.Tc1_0; xD[nn++] = xpwm_time.Tc1_1; xD[nn++] = _IQtoF(iq_norm_ADC[0][0]); xD[nn++] = _IQtoF(iq_norm_ADC[0][1]); xD[nn++] = _IQtoF(iq_norm_ADC[0][2]); xD[nn++] = _IQtoF(iq_norm_ADC[0][3]); xD[nn++] = _IQtoF(iq_norm_ADC[0][4]); xD[nn++] = _IQtoF(iq_norm_ADC[0][5]); xD[nn++] = _IQtoF(iq_norm_ADC[0][6]); xD[nn++] = _IQtoF(iq_norm_ADC[0][7]); }