606 lines
22 KiB
C
606 lines
22 KiB
C
/*
|
|
* ukss_tools.c
|
|
*
|
|
* Created on: 13 íîÿá. 2024 ã.
|
|
* Author: Evgeniy_Sokolov
|
|
*/
|
|
|
|
|
|
|
|
#include <edrk_main.h>
|
|
|
|
#include <params.h>
|
|
#include <params_alg.h>
|
|
#include <params_norma.h>
|
|
#include <params_pwm24.h>
|
|
#include <params_temper_p.h>
|
|
#include <project.h>
|
|
#include "IQmathLib.h"
|
|
#include "mathlib.h"
|
|
#include <optical_bus.h>
|
|
#include "adc_tools.h"
|
|
#include "CAN_project.h"
|
|
#include "CAN_Setup.h"
|
|
#include "global_time.h"
|
|
#include "v_rotor.h"
|
|
#include "ukss_tools.h"
|
|
#include "control_station_project.h"
|
|
#include "control_station.h"
|
|
#include "sync_tools.h"
|
|
|
|
|
|
#pragma DATA_SECTION(Unites2VPU, ".slow_vars")
|
|
int Unites2VPU[SIZE_UNITS_OUT]={0};
|
|
|
|
#pragma DATA_SECTION(Unites2Zadat4ik, ".slow_vars")
|
|
int Unites2Zadat4ik[SIZE_UNITS_OUT]={0};
|
|
|
|
#pragma DATA_SECTION(Unites2BKSSD, ".slow_vars")
|
|
int Unites2BKSSD[SIZE_UNITS_OUT]={0};
|
|
|
|
#pragma DATA_SECTION(Unites2UMU, ".slow_vars")
|
|
int Unites2UMU[SIZE_UNITS_OUT]={0};
|
|
|
|
|
|
|
|
void edrk_clear_cmd_ukss(void)
|
|
{
|
|
int i;
|
|
|
|
for (i=0;i<SIZE_UNITS_OUT;i++)
|
|
{
|
|
Unites2Zadat4ik[i] = 0;
|
|
Unites2VPU[i] = 0;
|
|
Unites2UMU[i] = 0;
|
|
Unites2BKSSD[i] = 0;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void update_ukss_setup(unsigned int pause)
|
|
{
|
|
static unsigned int old_time_ukss1=0;
|
|
int real_mbox;
|
|
unsigned long count_send = 0, start_adr = 0;
|
|
|
|
|
|
#if (CAN_PROTOCOL_UKSS == 1) // ñòàðûé ïðîòîêîë
|
|
|
|
Unites2Zadat4ik[96] = 25;
|
|
Unites2Zadat4ik[97] = 100;
|
|
Unites2Zadat4ik[98] = 8;
|
|
|
|
Unites2VPU[96] = 25;
|
|
Unites2VPU[97] = 100;
|
|
Unites2VPU[98] = 8;
|
|
|
|
Unites2UMU[96] = 25;
|
|
Unites2UMU[97] = 100;
|
|
Unites2UMU[98] = 8;
|
|
|
|
Unites2BKSSD[96] = 25;
|
|
Unites2BKSSD[97] = 100;
|
|
Unites2BKSSD[98] = 8;
|
|
|
|
count_send = 3;
|
|
start_adr = 96;
|
|
#endif
|
|
|
|
|
|
#if (CAN_PROTOCOL_UKSS == 2) // íîâûé ïðîòîêîë
|
|
|
|
Unites2Zadat4ik[ADR_CYCLES_TIMER_MAIN] = 2;
|
|
Unites2Zadat4ik[ADR_CYCLES_TIMER_ADD] = 100;
|
|
Unites2Zadat4ik[ADR_CYCLES_PAUSE_MAIN] = 10;
|
|
Unites2Zadat4ik[ADR_CYCLES_PAUSE_ADD] = 10;
|
|
Unites2Zadat4ik[ADR_CYCLES_REPEATE_MAIN] = 500;
|
|
Unites2Zadat4ik[ADR_CYCLES_REPEATE_ADD] = 1000;
|
|
Unites2Zadat4ik[ADR_CYCLES_REPEATE_DIGIO] = 5;
|
|
|
|
Unites2VPU[ADR_CYCLES_TIMER_MAIN] = 2;
|
|
Unites2VPU[ADR_CYCLES_TIMER_ADD] = 100;
|
|
Unites2VPU[ADR_CYCLES_PAUSE_MAIN] = 10;
|
|
Unites2VPU[ADR_CYCLES_PAUSE_ADD] = 10;
|
|
Unites2VPU[ADR_CYCLES_REPEATE_MAIN] = 500;
|
|
Unites2VPU[ADR_CYCLES_REPEATE_ADD] = 1000;
|
|
Unites2VPU[ADR_CYCLES_REPEATE_DIGIO] = 1;
|
|
|
|
Unites2UMU[ADR_CYCLES_TIMER_MAIN] = 2;
|
|
Unites2UMU[ADR_CYCLES_TIMER_ADD] = 100;
|
|
Unites2UMU[ADR_CYCLES_PAUSE_MAIN] = 10;
|
|
Unites2UMU[ADR_CYCLES_PAUSE_ADD] = 10;
|
|
Unites2UMU[ADR_CYCLES_REPEATE_MAIN] = 500;
|
|
Unites2UMU[ADR_CYCLES_REPEATE_ADD] = 1000;
|
|
Unites2UMU[ADR_CYCLES_REPEATE_DIGIO] = 1;
|
|
|
|
Unites2BKSSD[ADR_CYCLES_TIMER_MAIN] = 2;
|
|
Unites2BKSSD[ADR_CYCLES_TIMER_ADD] = 100;
|
|
Unites2BKSSD[ADR_CYCLES_PAUSE_MAIN] = 10;
|
|
Unites2BKSSD[ADR_CYCLES_PAUSE_ADD] = 10;
|
|
Unites2BKSSD[ADR_CYCLES_REPEATE_MAIN] = 500;
|
|
Unites2BKSSD[ADR_CYCLES_REPEATE_ADD] = 1000;
|
|
Unites2BKSSD[ADR_CYCLES_REPEATE_DIGIO] = 1;
|
|
|
|
start_adr = ADR_CYCLES_TIMER_MAIN;
|
|
count_send = ADR_CYCLES_REPEATE_DIGIO - ADR_CYCLES_TIMER_MAIN + 1;
|
|
#endif
|
|
|
|
if (detect_pause_milisec(pause,&old_time_ukss1))
|
|
{
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, ZADATCHIK_CAN);
|
|
|
|
if (CAN_cycle_free(real_mbox))
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, start_adr, &Unites2Zadat4ik[start_adr], count_send, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, VPU_CAN);
|
|
|
|
if (CAN_cycle_free(real_mbox))
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, VPU_CAN, start_adr, &Unites2VPU[start_adr], count_send, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, UMU_CAN_DEVICE);
|
|
|
|
if (CAN_cycle_free(real_mbox))
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, UMU_CAN_DEVICE, start_adr, &Unites2UMU[start_adr], count_send, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, BKSSD_CAN_DEVICE);
|
|
|
|
if (CAN_cycle_free(real_mbox))
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, BKSSD_CAN_DEVICE, start_adr, &Unites2BKSSD[start_adr], count_send, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
// îáíîâëßåì çàäàò÷èê äëÿ äàò÷èêà ìîìåíòà ÊÃÍÖ
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
void update_ukss_can_moment_kgnc(unsigned int pause)
|
|
{
|
|
int real_mbox;
|
|
int t1;
|
|
|
|
static unsigned int old_time_ukss2=0, test_flag = 0;
|
|
|
|
|
|
|
|
if (edrk.flag_second_PCH==0)
|
|
t1 = pause;
|
|
if (edrk.flag_second_PCH==1)
|
|
t1 = pause;
|
|
|
|
|
|
//////
|
|
|
|
|
|
if (test_flag == 0)
|
|
{
|
|
// 32 Äëèíà ïîñûëêè, ñëîâ 13
|
|
// 33 Ïåðèîä ïîñûëîê RS485 * 10 mñåê 25
|
|
|
|
Unites2Zadat4ik[32] = 13;//9
|
|
Unites2Zadat4ik[33] = 25;
|
|
|
|
// 34 Òîê ÇÏÒ 1 êàíàë, À
|
|
// 35 Íàïðÿæåíèå ÇÏÒ 1 êàíàë, Â
|
|
// 36 Òîê ÇÏÒ 2 êàíàë, À
|
|
// 37 Íàïðÿæåíèå ÇÏÒ 2 êàíàë, Â
|
|
// 38 Ìîùíîñòü, êÂò
|
|
// 39 Îáîðîòû, îá/ìèí
|
|
// 40 Íîìåð Ï×
|
|
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
Unites2Zadat4ik[34] = global_time.total_seconds10full;
|
|
Unites2Zadat4ik[35] = _IQtoF(analog.iqIin_sum)*NORMA_ACP;
|
|
Unites2Zadat4ik[36] = _IQtoF(filter.iqU_1_long+filter.iqU_2_long)*NORMA_ACP;
|
|
Unites2Zadat4ik[37] = fast_round(_IQtoF(edrk.k_stator1)*1000.0);
|
|
Unites2Zadat4ik[38] = _IQtoF(filter.iqIm_1 + filter.iqIm_2)*NORMA_ACP;
|
|
}
|
|
|
|
if (edrk.flag_second_PCH==1)
|
|
{
|
|
|
|
Unites2Zadat4ik[39] = global_time.total_seconds10full;
|
|
Unites2Zadat4ik[40] = _IQtoF(analog.iqIin_sum)*NORMA_ACP;
|
|
Unites2Zadat4ik[41] = _IQtoF(filter.iqU_1_long+filter.iqU_2_long)*NORMA_ACP;
|
|
Unites2Zadat4ik[42] = fast_round(_IQtoF(edrk.k_stator1)*1000.0);
|
|
Unites2Zadat4ik[43] = _IQtoF(filter.iqIm_1 + filter.iqIm_2)*NORMA_ACP;
|
|
|
|
}
|
|
|
|
Unites2Zadat4ik[44] = edrk.power_kw_full;
|
|
Unites2Zadat4ik[45] = _IQtoF(WRotor.iqWRotorSumFilter) * NORMA_FROTOR*6000.0;//;//_IQtoF(edrk.iq_f_rotor_hz) * NORMA_FROTOR*6000.0;
|
|
|
|
|
|
if (edrk.pult_data.data_from_pult.nPCH==11 || edrk.pult_data.data_from_pult.nPCH==12)
|
|
Unites2Zadat4ik[46] = 1;
|
|
else
|
|
Unites2Zadat4ik[46] = 2;
|
|
}
|
|
|
|
|
|
if (detect_pause_milisec(t1,&old_time_ukss2))
|
|
{
|
|
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, ZADATCHIK_CAN);
|
|
|
|
if (CAN_cycle_full_free(real_mbox,CAN_BOX_STAT_ON))
|
|
{
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 32, &Unites2Zadat4ik[32], 7, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 44, &Unites2Zadat4ik[44], 3, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
else
|
|
{
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 32, &Unites2Zadat4ik[32], 2, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 39, &Unites2Zadat4ik[39], 8, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
// îáíîâëßåì çàäàò÷èê è ÂÏÓ
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
#define MAX_WAIT_UPDATE_ZAD 10
|
|
|
|
void update_ukss_can(unsigned int pause)
|
|
{
|
|
int real_mbox;
|
|
int t1;
|
|
|
|
static int disable_update_zadat4ik = MAX_WAIT_UPDATE_ZAD;
|
|
static int disable_update_vpu = MAX_WAIT_UPDATE_ZAD;
|
|
|
|
static unsigned int old_time_ukss2=0;
|
|
|
|
|
|
static TO_ZADAT4IK prev_Zadat4ik = TO_ZADAT4IK_DEFAULT;
|
|
static TO_VPU prev_VPU = TO_VPU_DEFAULT;
|
|
|
|
|
|
|
|
if (edrk.flag_second_PCH==0)
|
|
t1 = pause;
|
|
if (edrk.flag_second_PCH==1)
|
|
t1 = pause;
|
|
|
|
Unites2Zadat4ik[4] = edrk.to_zadat4ik.OBOROTS1.all;
|
|
Unites2Zadat4ik[5] = edrk.to_zadat4ik.OBOROTS2.all;
|
|
Unites2Zadat4ik[6] = edrk.to_zadat4ik.BIG_LAMS.all;
|
|
Unites2Zadat4ik[7] = edrk.to_zadat4ik.APL_LAMS0.all;
|
|
Unites2Zadat4ik[8] = 0;
|
|
|
|
Unites2VPU[4] = edrk.to_vpu.OBOROTS1.all;
|
|
Unites2VPU[5] = edrk.to_vpu.OBOROTS2.all;
|
|
Unites2VPU[6] = edrk.to_vpu.BIG_LAMS.all;
|
|
Unites2VPU[7] = 0;
|
|
Unites2VPU[8] = 0;
|
|
|
|
|
|
if (detect_pause_milisec(t1,&old_time_ukss2))
|
|
{
|
|
|
|
if (disable_update_zadat4ik)
|
|
disable_update_zadat4ik--;
|
|
|
|
if (prev_Zadat4ik.APL_LAMS0.all != edrk.to_zadat4ik.APL_LAMS0.all
|
|
|| prev_Zadat4ik.APL_LAMS_PCH.all != edrk.to_zadat4ik.APL_LAMS_PCH.all
|
|
|| prev_Zadat4ik.BIG_LAMS.all != edrk.to_zadat4ik.BIG_LAMS.all
|
|
|| prev_Zadat4ik.OBOROTS1.all != edrk.to_zadat4ik.OBOROTS1.all
|
|
|| prev_Zadat4ik.OBOROTS2.all != edrk.to_zadat4ik.OBOROTS2.all)
|
|
disable_update_zadat4ik = 0;
|
|
|
|
if (disable_update_vpu)
|
|
disable_update_vpu--;
|
|
|
|
if ( prev_VPU.BIG_LAMS.all != edrk.to_vpu.BIG_LAMS.all
|
|
|| prev_VPU.OBOROTS1.all != edrk.to_vpu.OBOROTS1.all
|
|
|| prev_VPU.OBOROTS2.all != edrk.to_vpu.OBOROTS2.all)
|
|
disable_update_vpu = 0;
|
|
|
|
|
|
|
|
if (disable_update_zadat4ik==0)
|
|
{
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, ZADATCHIK_CAN);
|
|
|
|
if (CAN_cycle_full_free(real_mbox,CAN_BOX_STAT_ON))
|
|
{
|
|
if (edrk.flag_second_PCH==0)
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 4, &Unites2Zadat4ik[4], 5, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
else
|
|
CAN_cycle_send( UNITS_TYPE_BOX, ZADATCHIK_CAN, 0xa, &Unites2Zadat4ik[4], 5, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
prev_Zadat4ik.APL_LAMS0.all = edrk.to_zadat4ik.APL_LAMS0.all;
|
|
prev_Zadat4ik.APL_LAMS_PCH.all = edrk.to_zadat4ik.APL_LAMS_PCH.all;
|
|
prev_Zadat4ik.BIG_LAMS.all = edrk.to_zadat4ik.BIG_LAMS.all;
|
|
prev_Zadat4ik.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all;
|
|
prev_Zadat4ik.OBOROTS2.all = edrk.to_zadat4ik.OBOROTS2.all;
|
|
|
|
disable_update_zadat4ik = MAX_WAIT_UPDATE_ZAD;
|
|
}
|
|
|
|
if (disable_update_vpu==0)
|
|
{
|
|
real_mbox = get_real_out_mbox (UNITS_TYPE_BOX, VPU_CAN);
|
|
|
|
if (CAN_cycle_full_free(real_mbox,CAN_BOX_STAT_ON))
|
|
{
|
|
if (edrk.flag_second_PCH==0)
|
|
CAN_cycle_send( UNITS_TYPE_BOX, VPU_CAN, 4, &Unites2VPU[4], 4, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
else
|
|
CAN_cycle_send( UNITS_TYPE_BOX, VPU_CAN, 0xa, &Unites2VPU[4], 4, CAN_BOX_STANDART_ADR, CAN_BOX_PRIORITY_NORMAL);// ïðèìåðíî 40 ìñåê. èäåò îòïðàâêà âñåé ïîñûëêè
|
|
}
|
|
|
|
prev_VPU.BIG_LAMS.all = edrk.to_vpu.BIG_LAMS.all;
|
|
prev_VPU.OBOROTS1.all = edrk.to_vpu.OBOROTS1.all;
|
|
prev_VPU.OBOROTS2.all = edrk.to_vpu.OBOROTS2.all;
|
|
|
|
disable_update_vpu = MAX_WAIT_UPDATE_ZAD;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////
|
|
|
|
|
|
void update_zadat4ik(void)
|
|
{
|
|
|
|
static unsigned int time_toggle1 = 0, time_toggle2 = 0, time_toggle3 = 0, time_toggle4 = 0;
|
|
int b;
|
|
static unsigned int time_toggle_leds = 500;
|
|
|
|
|
|
// update zadatchik
|
|
// if (edrk.from_zadat4ik.bits.MINUS || edrk.from_zadat4ik.bits.PLUS || edrk.from_ing2.bits.KEY_MINUS || edrk.from_ing2.bits.KEY_PLUS || edrk.from_vpu.bits.PLUS || edrk.from_vpu.bits.MINUS)
|
|
// {
|
|
// if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_UF_CONST) // UFCONST
|
|
// {
|
|
// edrk.to_zadat4ik.OBOROTS1.all = fast_round(edrk.zadanie.fzad*100.0); // îáîðîòû çàäàííûå
|
|
// edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all; // îáîðîòû çàäàííûå
|
|
// }
|
|
// else
|
|
// {
|
|
// edrk.to_zadat4ik.OBOROTS1.all = (edrk.zadanie.oborots_zad); // îáîðîòû çàäàííûå
|
|
// edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all; // îáîðîòû çàäàííûå
|
|
// }
|
|
//
|
|
// }
|
|
// else
|
|
// {
|
|
//
|
|
// if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_UF_CONST) // UFCONST
|
|
// {
|
|
// edrk.to_zadat4ik.OBOROTS1.all = fast_round(_IQtoF(edrk.f_stator)*NORMA_FROTOR*100.0); // îáîðîòû òåê.
|
|
// edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all; // îáîðîòû òåê.
|
|
// }
|
|
// else
|
|
// {
|
|
// edrk.to_zadat4ik.OBOROTS1.all = edrk.oborots; // îáîðîòû òåê.
|
|
// edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all; // îáîðîòû òåê.
|
|
// }
|
|
//
|
|
// }
|
|
|
|
if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_UF_CONST) // UFCONST
|
|
{
|
|
edrk.to_zadat4ik.OBOROTS2.all = fast_round(_IQtoF(edrk.f_stator)*NORMA_FROTOR*100.0); // îáîðîòû òåê.
|
|
edrk.to_vpu.OBOROTS2.all = edrk.to_zadat4ik.OBOROTS2.all; // îáîðîòû òåê.
|
|
}
|
|
else
|
|
{
|
|
if (control_station.active_array_cmd[CONTROL_STATION_CMD_ROTOR_POWER]==0) // ïî îáîðîòàì
|
|
edrk.to_zadat4ik.OBOROTS2.all = edrk.zadanie.oborots_zad_no_dead_zone; // îáîðîòû çàäàííûå
|
|
else
|
|
edrk.to_zadat4ik.OBOROTS2.all = edrk.oborots; //îáîðòû òåêóùèå
|
|
|
|
edrk.to_vpu.OBOROTS2.all = edrk.to_zadat4ik.OBOROTS2.all; // îáîðîòû çàäàííûå
|
|
}
|
|
|
|
//edrk.to_zadat4ik.OBOROTS2.all = edrk.I_cur_vozbud_exp; // òîê âîçáóäèòåëß
|
|
|
|
if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_UF_CONST) // UFCONST
|
|
{
|
|
edrk.to_zadat4ik.OBOROTS1.all = fast_round(_IQtoF(edrk.k_stator1)*10000.0);
|
|
edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all;
|
|
}
|
|
else
|
|
{
|
|
// edrk.to_zadat4ik.OBOROTS2.all = edrk.to_zadat4ik.OBOROTS1.all;
|
|
// edrk.to_vpu.OBOROTS2.all = edrk.to_zadat4ik.OBOROTS2.all;
|
|
edrk.to_zadat4ik.OBOROTS1.all = edrk.oborots; //îáîðòû òåêóùèå
|
|
edrk.to_vpu.OBOROTS1.all = edrk.to_zadat4ik.OBOROTS1.all;
|
|
|
|
}
|
|
|
|
|
|
// Ãîòîâíîñòü2
|
|
if (edrk.Status_Ready.bits.ready_final)
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA = 1;//edrk.from_shema.bits.QTV_ON_OFF;
|
|
else
|
|
{
|
|
if (edrk.SumSbor)
|
|
{
|
|
if (detect_pause_milisec(time_toggle_leds,&time_toggle1))
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA = toggle_status_lamp((unsigned int)edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA,1);
|
|
}
|
|
else
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA = 0;
|
|
}
|
|
|
|
|
|
if (edrk.Ready2_another_bs && edrk.Status_Ready.bits.ready_final)
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV2 = 1;
|
|
else
|
|
{
|
|
if (edrk.Status_Ready.bits.ready_final)
|
|
{
|
|
if (detect_pause_milisec(time_toggle_leds,&time_toggle3))
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV2 = toggle_status_lamp((unsigned int)edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV2,1);
|
|
}
|
|
else
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV2 = 0;
|
|
}
|
|
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_MESTNOE = control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485];//edrk.from_ing1.bits.LOCAL_REMOUTE; // LOCAL
|
|
|
|
|
|
if (edrk.Status_Perehod_Rascepitel==0)
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN = edrk.Final_Status_Rascepitel;
|
|
else
|
|
{
|
|
b = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN;
|
|
if (detect_pause_milisec(time_toggle_leds,&time_toggle2))
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN = toggle_status_lamp((unsigned int)edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN,1);
|
|
}
|
|
|
|
// edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN = edrk.Status_Rascepitel_Ok || edrk.Status_Perehod_Rascepitel;
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_READY1 = edrk.Status_Ready.bits.ready1;
|
|
|
|
//Åìêîñòü
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.EMKOST = edrk.Status_Ready.bits.Batt;//edrk.Status_Charge; For 23550.3
|
|
|
|
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.PEREGREV = edrk.temper_limit_koeffs.code_status;
|
|
if (edrk.power_limit.all)
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.OGRAN_POWER = 1;
|
|
else
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.OGRAN_POWER = 0;
|
|
|
|
if (edrk.Ready1_another_bs && edrk.Status_Ready.bits.ready1)
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV1 = 1;
|
|
else
|
|
{
|
|
if (edrk.Status_Ready.bits.ready1)
|
|
{
|
|
if (detect_pause_milisec(time_toggle_leds,&time_toggle4))
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV1 = toggle_status_lamp((unsigned int)edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV1,1);
|
|
}
|
|
else
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.GOTOV1 = 0;
|
|
}
|
|
edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_READY1 = edrk.Status_Ready.bits.ready1;
|
|
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.NEISPRAVNOST = edrk.warning;
|
|
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH1_MESTNOE = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_MESTNOE;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH1_PODKLU4EN = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH1_READY1 = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_READY1;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH1_SHEMA_SOBRANA = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA;
|
|
}
|
|
else
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH2_MESTNOE = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_MESTNOE;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH2_PODKLU4EN = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_PODKLU4EN;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH2_READY1 = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_READY1;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH2_SHEMA_SOBRANA = edrk.to_zadat4ik.APL_LAMS_PCH.bits.PCH_SHEMA_SOBRANA;
|
|
}
|
|
|
|
|
|
// edrk.to_zadat4ik.APL_LAMS0.bits0.GED_PEREGRUZ = 0;
|
|
// edrk.to_zadat4ik.APL_LAMS0.bits0.PROVOROT = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_ZADAT = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_MONITOR = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_SVU = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_VPU = 0;
|
|
// edrk.to_zadat4ik.APL_LAMS0.bits.WORK_PMU = 0;
|
|
|
|
|
|
}
|
|
else // control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] == 0//edrk.RemouteFromDISPLAY==0
|
|
{
|
|
if (edrk.from_shema_filter.bits.SVU==0)
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_VPU = 0;
|
|
if (edrk.from_shema_filter.bits.ZADA_DISPLAY)
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_MONITOR = 1;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_ZADAT = 0;
|
|
}
|
|
else
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_MONITOR = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_ZADAT = 1;
|
|
}
|
|
}
|
|
else // SVU==1
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_MONITOR = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_ZADAT = 0;
|
|
}
|
|
|
|
if (edrk.from_shema_filter.bits.SVU)
|
|
{
|
|
|
|
if (edrk.from_vpu.bits.UOM_READY_ACTIVE)
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_VPU = 1;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_SVU = 0;
|
|
}
|
|
else
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_SVU = 1;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_VPU = 0;
|
|
}
|
|
|
|
}
|
|
else //edrk.from_shema.bits.SVU == 0
|
|
{
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_SVU = 0;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.OBOROT_VPU = 0;
|
|
}
|
|
}
|
|
|
|
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.HOD = edrk.Go;
|
|
edrk.to_zadat4ik.APL_LAMS0.bits.PCH1_PCH2_SYNC = sync_data.sync_ready;
|
|
|
|
// if (edrk.from_zadat4ik.bits.PROVOROT)
|
|
// edrk.to_zadat4ik.APL_LAMS0.bits.PROVOROT = 1;
|
|
// else
|
|
// edrk.to_zadat4ik.APL_LAMS0.bits.PROVOROT = 0;
|
|
|
|
edrk.to_zadat4ik.BIG_LAMS.bits.AVARIA = edrk.to_ing.bits.SMALL_LAMPA_AVARIA;
|
|
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////
|