/* * 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; } //////////////////////////////////////////////////////////