/*
 * control_station_project.c
 *
 *  Created on: 1 èþí. 2020 ã.
 *      Author: Yura
 */
#include <can_bs2bs.h>
#include <control_station_project.h>
#include <CAN_project.h>
#include <edrk_main.h>
#include <master_slave.h>
#include <math.h>

#include <modbus_hmi_update.h>
#include <modbus_svu_update.h>
#include <params_alg.h>
#include <params_motor.h>
#include <params_norma.h>

#include "control_station.h"
#include "CAN_Setup.h"
#include "global_time.h"
#include "IQmathLib.h"
#include "mathlib.h"
#include "modbus_table_v2.h"
#include "vector_control.h"
#include "RS_Functions.h"






/*CONTROL_STATION_TERMINAL_RS232
 CONTROL_STATION_TERMINAL_CAN,

 CONTROL_STATION_INGETEAM_PULT_RS485,
 CONTROL_STATION_MPU_SVU_CAN,
 CONTROL_STATION_MPU_KEY_CAN,
 CONTROL_STATION_MPU_SVU_RS485,
 CONTROL_STATION_MPU_KEY_RS485,
 CONTROL_STATION_ZADATCHIK_CAN,



 CONTROL_STATION_CMD_GO    =      0,// cmd_go îò ïîñòà ïóñê/ñòîï ØÈÌà
 CONTROL_STATION_CMD_SET_IZAD,// òîê îò ïîñòà
 CONTROL_STATION_CMD_SET_ROTOR,// îáîðîòû îò ïîñòà
 CONTROL_STATION_CMD_CHARGE,// ñáîð ñõåìû îò ïîñòà
 CONTROL_STATION_CMD_UNCHARGE,// ðàçáîð ñõåìû îò ïîñòà
 CONTROL_STATION_CMD_CHECKBACK,// êâèòèðîâàíèå îò ïîñòà
 CONTROL_STATION_CMD_TEST_LEDS
 */


#define DEC_ZAD_OBOROTS 1
#define INC_ZAD_OBOROTS 1





/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void detect_active_from_all_signals(void)
{
    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
    {
   //     control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ACTIVE_CONTROL] = control_station
    }


}
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
float plus_minus_oborots(int key_plus, int key_minus, float ff, int ufconst_vector, int flag)
{
    static float ff_add=0, ff_dec=0;

    float ff_add1=0, ff_dec1=0;
    float ff_add2=0, ff_dec2=0;
    float ff_add3=0, ff_dec3=0;

    static int prev_key_plus=0, prev_key_minus=0;

    static int direct_zad=0, direct_cur=0, only_plus=0, only_minus=0;
    static unsigned int old_time_plus_minus=0, count_press = 0;

    if (flag==1)
    {
        count_press = 0;

        ff_dec = 0;
        ff_add = 0;

        prev_key_plus = key_plus;
        prev_key_minus = key_minus;

        return ff;
    }

    if (ff>0)
    {
//        if (key_minus || key_plus)
          only_plus = 1;
          only_minus = 0;
    }
    else
    if (ff<0)
    {
//        if (key_minus || key_plus)
            only_minus = 1;
            only_plus = 0;
    }
    else
    {
        if (key_minus==0 && key_plus==0)
        {
            only_plus = 0;
            only_minus = 0;
        }

    }


//
//
//    if (key_plus)
//    {
//       if (ff>0)
//           direct_zad = 1;
//       if (ff<0)
//           direct_zad = -1;
//       if (ff==0)
//           direct_zad = 0;
//
//    }
//    if (key_minus)
//    {
//       if (ff>0)
//           direct_zad = -1;
//       if (ff<0)
//           direct_zad = 1;
//       if (ff==0)
//           direct_zad = 0;
//    }


    if (ufconst_vector==0)
    {
        ff_add1 = INC_ZAD_OBOROTS*10.0;
        ff_dec1 = DEC_ZAD_OBOROTS*10.0;

        ff_add2 = INC_ZAD_OBOROTS*30.0;
        ff_dec2 = DEC_ZAD_OBOROTS*30.0;
        ff_add3 = INC_ZAD_OBOROTS*60.0;
        ff_dec3 = DEC_ZAD_OBOROTS*60.0;

    }
    else
    {
        ff_add1 = INC_ZAD_OBOROTS;
        ff_dec1 = DEC_ZAD_OBOROTS;

        ff_add2 = INC_ZAD_OBOROTS*5.0;
        ff_dec2 = DEC_ZAD_OBOROTS*5.0;
        ff_add3 = INC_ZAD_OBOROTS*10.0;
        ff_dec3 = DEC_ZAD_OBOROTS*10.0;
    }


    if (detect_pause_milisec(500,&old_time_plus_minus))
    {
        if (key_minus || key_plus)
        {
            if (count_press<100)
                count_press++;
        }
        else
            count_press = 0;


        if (count_press==0)
        {
            ff_dec = 0;
            ff_add = 0;
        }

        if (count_press==2)
        {
            ff_dec = ff_dec1;
            ff_add = ff_add1;
        }

        if (count_press==10)
        {
            ff_dec = ff_dec2;
            ff_add = ff_add2;
        }

        if (count_press==20)
        {
            ff_dec = ff_dec3;
            ff_add = ff_add3;
        }


        if (key_minus)
        {
                if (ff>ff_dec)
                    ff=ff-ff_dec;
                else
                if (ff<=ff_dec && ff>0)
                    ff=0;
                else
                if (ff<=0 && only_plus==0)
                   ff=ff-ff_add;
        }
        else
        if (key_plus)
        {
                if (ff>=0 && only_minus==0)
                    ff=ff+ff_add;
                else
                if (ff>=-ff_dec && ff<0)
                    ff=0;
                else
                if (ff<-ff_dec)
                   ff=ff+ff_dec;
        }

    }

    if (ufconst_vector==0)
        ff = my_satur_float(ff,fast_round(MAX_ZADANIE_F*100.0),fast_round(-MAX_ZADANIE_F*100.0));
    else
        ff = my_satur_float(ff,MAX_ZADANIE_OBOROTS_ROTOR,MIN_ZADANIE_OBOROTS_ROTOR);


    prev_key_plus = key_plus;
    prev_key_minus = key_minus;


    return ff;
}

/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_another_bs(int cc)
{
    int i, pos_numbercmd;
    static int prev_checkback = 0;
    static int flag_wait_revers_go = 0;

    _iq _iq_ff;
    static unsigned int prev_charge=0, prev_uncharge=0, key_local_charge, key_local_uncharge;
    static unsigned int old_time_pult_ing = 0;
    float ff=0, ff_add=0, ff_dec=0;
    int key_plus = 0, key_minus = 0;




        if (edrk.ms.err_signals.alive_can_to_another_bs==0)
        {

            //
    //        edrk.zadanie_from_another_bs.int_fzad = Unites[ANOTHER_BSU1_CAN_DEVICE][3];
    //        edrk.zadanie_from_another_bs.int_kzad = Unites[ANOTHER_BSU1_CAN_DEVICE][4];
    //        edrk.zadanie_from_another_bs.int_Izad = Unites[ANOTHER_BSU1_CAN_DEVICE][5];
    //        edrk.zadanie_from_another_bs.int_oborots_zad = Unites[ANOTHER_BSU1_CAN_DEVICE][6];
    //        edrk.zadanie_from_another_bs.int_power_zad = Unites[ANOTHER_BSU1_CAN_DEVICE][7];
    //        //
    //        edrk.zadanie_from_another_bs.iq_fzad = _IQ15toIQ(edrk.zadanie_from_another_bs.int_fzad);
    //        edrk.zadanie_from_another_bs.iq_kzad = _IQ15toIQ(edrk.zadanie_from_another_bs.int_kzad);
    //        edrk.zadanie_from_another_bs.iq_Izad = _IQ15toIQ(edrk.zadanie_from_another_bs.int_Izad);
    //        edrk.zadanie_from_another_bs.oborots_zad = edrk.zadanie_from_another_bs.int_oborots_zad;
    //        edrk.zadanie_from_another_bs.iq_power_zad = _IQ15toIQ(edrk.zadanie_from_another_bs.int_power_zad);


        }
        else
        {



        }


    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[cc][i] = 0; // clear all data

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }

    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;


    for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
        control_station.array_cmd[cc][i] = Unites[ANOTHER_BSU1_CAN_DEVICE][POS_STATION_CMD_ANOTHER_BSU1+i];

    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
    {



    }
    if (edrk.MasterSlave == MODE_SLAVE && Unites[ANOTHER_BSU1_CAN_DEVICE][12] > 0 && Unites[ANOTHER_BSU1_CAN_DEVICE][12] < 600) {
        vect_control.iqId_min = _IQ((float)Unites[ANOTHER_BSU1_CAN_DEVICE][12] / NORMA_ACP);
    }
/*

    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_VPU_CAN];


// scalar, vector, ufconst
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_UFCONST_VECTOR];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SCALAR_FOC];


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = 0;

// àíàëîãîâûå
//  if

   if ((detect_pause_milisec(100,&old_time_pult_ing)) && control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
   {

//       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.raw_array_data[cc][4].all;
       ff = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR];

       key_plus = edrk.from_vpu.bits.PLUS;
       key_minus = edrk.from_vpu.bits.MINUS;

       ff = plus_minus_oborots(key_plus, key_minus, ff, control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR]);

       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = ff;
   }


// öèôðîâûå
//    pos_numbercmd = 15; // ñ êàêîãî ýëåìåíòà ìàññèâà èäóò êîìàíäû, îíè ïîñëå àíàëîãîâûõ äàííûõ

    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = edrk.from_vpu.bits.KVITIR;

// çàðÿä, ðàçðÿä
    key_local_charge = 0;//edrk.from_shema.bits.SBOR_SHEMA;
    key_local_uncharge = 0;//edrk.from_shema.bits.RAZBOR_SHEMA;

    if (key_local_charge && prev_charge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
    prev_charge = key_local_charge;


    if (key_local_uncharge && prev_uncharge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    prev_uncharge = key_local_uncharge;


///////////////////////////////////////////
// ýòè áåðåì ñ òåðìèíàëêè
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_IZAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_KM];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_U_ZARYAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE];


//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 1;
//    else
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_GO];

//
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = 0;
//
//    prev_checkback = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;

    // êîïèðóåì èç rs232
    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_QTV];

    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    // áåðåì ñèãíàë óïðàâëåíèÿ íàñîñîâ îò ïóëüòà
    control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MODE_PUMP];


    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;
*/

}
/////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_pult_vpu(int cc)
{
    int i, pos_numbercmd;
    static int prev_checkback = 0, prev_key_oborots = 0;
    static int flag_wait_revers_go = 0;

    _iq _iq_ff;
    static unsigned int prev_charge=0, prev_uncharge=0, key_local_charge, key_local_uncharge;
    static unsigned int old_time_pult_ing = 0, old_time_pult_ing2 = 0;
    float ff=0, ff_add=0, ff_dec=0;
    int key_plus = 0, key_minus = 0;


    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[cc][i] = 0; // clear all data

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }

    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_VPU_CAN];

///////////////////////////////////////////
// ýòè áåðåì ñ òåðìèíàëêè
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_IZAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_KM];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_U_ZARYAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER] = my_satur_int(control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_LIMIT_POWER], MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);


// scalar, vector, ufconst
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_UFCONST_VECTOR];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SCALAR_FOC];


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = 0;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER];

// àíàëîãîâûå

   if ((detect_pause_milisec(100,&old_time_pult_ing)) && control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
   {
       ff = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR];

       key_plus = edrk.from_vpu.bits.PLUS;
       key_minus = edrk.from_vpu.bits.MINUS;

///////////////
       if (edrk.from_vpu.bits.PROVOROT)
       {
           if (detect_pause_milisec(1000,&old_time_pult_ing2))
                   {
                       edrk.Provorot = 1;
                       ff = PROVOROT_OBOROTS;
                   }
       }
       else
           old_time_pult_ing2 = global_time.miliseconds;

       if (edrk.from_vpu.bits.PROVOROT != prev_key_oborots && edrk.from_vpu.bits.PROVOROT == 0 && edrk.Provorot==1)
       {
           ff = 0;
           edrk.Provorot = 0;
       }

       prev_key_oborots = edrk.from_vpu.bits.PROVOROT;
/////////////
       ff = plus_minus_oborots(key_plus, key_minus, ff, control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR], 0);

       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = ff;

 //      control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_SET_ROTOR] = ff;
  //     control_station.array_cmd[CONTROL_STATION_ZADATCHIK_CAN][CONTROL_STATION_CMD_SET_ROTOR] = ff;
   }


// öèôðîâûå
//    pos_numbercmd = 15; // ñ êàêîãî ýëåìåíòà ìàññèâà èäóò êîìàíäû, îíè ïîñëå àíàëîãîâûõ äàííûõ

    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = edrk.from_vpu.bits.KVITIR;

// çàðÿä, ðàçðÿä
    key_local_charge = 0;//edrk.from_shema.bits.SBOR_SHEMA;
    key_local_uncharge = 0;//edrk.from_shema.bits.RAZBOR_SHEMA;

    if (key_local_charge && prev_charge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
    prev_charge = key_local_charge;


    if (key_local_uncharge)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    prev_uncharge = key_local_uncharge;




//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 1;
//    else
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
//
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = 0;
//
//    prev_checkback = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;


    // êîïèðóåì èç rs232
    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_GO];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_QTV];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_UMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_MANUAL_DISCHARGE];
    }
    else
        if (control_station.alive_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_GO];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_QTV];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_UMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MANUAL_DISCHARGE];

            edrk.Status_Ready.bits.ImitationReady2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][181].all;
            edrk.Obmotka1 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][194].all;
            edrk.Obmotka2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][195].all;
            edrk.disable_alg_u_disbalance = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][193].all;



        }


    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    // áåðåì ñèãíàë óïðàâëåíèÿ íàñîñîâ îò ïóëüòà
    control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MODE_PUMP];


    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;


}
/////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_pult_zadat4ik(int cc)
{
    int i, pos_numbercmd;
    static int prev_checkback = 0, prev_key_oborots = 0;
    static int flag_wait_revers_go = 0;

    float ff=0, ff_add=0, ff_dec=0;
    int key_plus = 0, key_minus = 0;

    _iq _iq_ff;
    static unsigned int prev_charge=0, prev_uncharge=0, key_local_charge, key_local_uncharge;
    static unsigned int old_time_pult_ing = 0, old_time_pult_ing2 = 0;

    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[cc][i] = 0; // clear all data

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }

    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN];
///////////////////////////////////////////
// ýòè áåðåì ñ òåðìèíàëêè
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_IZAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_KM];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_U_ZARYAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER] = my_satur_int(control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_LIMIT_POWER], MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);



// scalar, vector, ufconst
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_UFCONST_VECTOR];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SCALAR_FOC];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = 0;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER];
// àíàëîãîâûå
//  if

   if ((detect_pause_milisec(100,&old_time_pult_ing)) && control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
   {

//       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.raw_array_data[cc][4].all;
       ff = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR];

       key_plus = edrk.from_zadat4ik.bits.PLUS;
       key_minus =edrk.from_zadat4ik.bits.MINUS;

       if (edrk.from_zadat4ik.bits.PROVOROT)
       {
           if (detect_pause_milisec(1000,&old_time_pult_ing2))
                   {
                       edrk.Provorot = 1;
                       ff = PROVOROT_OBOROTS;
                   }
       }
       else
           old_time_pult_ing2 = global_time.miliseconds;

       if (edrk.from_zadat4ik.bits.PROVOROT != prev_key_oborots && edrk.from_zadat4ik.bits.PROVOROT == 0 && edrk.Provorot==1)
       {
           ff = 0;
           edrk.Provorot = 0;
       }

       prev_key_oborots = edrk.from_zadat4ik.bits.PROVOROT;

       ff = plus_minus_oborots(key_plus, key_minus, ff, control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR], 0);


       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = ff;

 //      control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_SET_ROTOR] = ff;
 //      control_station.array_cmd[CONTROL_STATION_VPU_CAN][CONTROL_STATION_CMD_SET_ROTOR] = ff;

   }


// öèôðîâûå
//    pos_numbercmd = 15; // ñ êàêîãî ýëåìåíòà ìàññèâà èäóò êîìàíäû, îíè ïîñëå àíàëîãîâûõ äàííûõ

    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = edrk.from_zadat4ik.bits.KVITIR;

// çàðÿä, ðàçðÿä
    key_local_charge = edrk.from_shema.bits.SBOR_SHEMA;
    key_local_uncharge = edrk.from_shema.bits.RAZBOR_SHEMA;


    if (key_local_uncharge && key_local_charge)
    {
        key_local_charge = 0;
        edrk.errors.e1.bits.BOTH_KEYS_CHARGE_DISCHARGE |=1;
    }

    if (key_local_charge && prev_charge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
    prev_charge = key_local_charge;


    if (key_local_uncharge)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    prev_uncharge = key_local_uncharge;


//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 1;
//    else
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;

//
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = 0;
//
//    prev_checkback = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;


    // êîïèðóåì èç rs232
    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_GO];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_QTV];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_UMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_MANUAL_DISCHARGE];
    }
    else
        if (control_station.alive_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_GO];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_QTV];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_UMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MANUAL_DISCHARGE];

            edrk.Status_Ready.bits.ImitationReady2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][181].all;
            edrk.Obmotka1 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][194].all;
            edrk.Obmotka2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][195].all;
            edrk.disable_alg_u_disbalance = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][193].all;

        }


    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    // áåðåì ñèãíàë óïðàâëåíèÿ íàñîñîâ îò ïóëüòà
    control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MODE_PUMP];


    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;


}
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_pult_ingeteam(int cc)
{
    int i, pos_numbercmd;
    static int prev_checkback = 0;
    static int flag_wait_revers_go = 0;
    float ff=0, ff_add=0, ff_dec=0;
    int key_plus = 0, key_minus = 0;
    _iq _iq_ff;
    static unsigned int prev_key_local_charge_key=0, prev_key_local_uncharge_key=0, key_local_charge_key, key_local_uncharge_key;
    static unsigned int prev_key_local_charge_display=0, prev_key_local_uncharge_display=0, key_local_charge_display, key_local_uncharge_display;

    static unsigned int prev_charge=0, prev_uncharge=0, key_local_charge, key_local_uncharge;

    static unsigned int old_time_pult_ing = 0, old_time_pult_ing2 = 0;
    static unsigned int prev_key_local_charge_uncharge_display=0, key_local_charge_uncharge_display;

    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[cc][i] = 0; // clear all data

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }



  //  control_station.raw_array_data[CONTROL_STATION_TERMINAL_RS232]


    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485];


    ///////////////////////////////////////////
    // ýòè áåðåì ñ òåðìèíàëêè

    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_IZAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_KM];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_U_ZARYAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER] = my_satur_int(control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_LIMIT_POWER], MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);

// vector, ufconst
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_UFCONST_VECTOR];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SCALAR_FOC];


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = control_station.raw_array_data[cc][3].all;

// àíàëîãîâûå

 //  if

   if ((detect_pause_milisec(100,&old_time_pult_ing)) && control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
   {


       if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER]==1)
       {
           control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.raw_array_data[cc][4].all;
           control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = MAX_ZADANIE_OBOROTS_ROTOR;
       }
       else
       {
           control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER];

           ff = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR];

           key_plus = edrk.from_ing2.bits.KEY_PLUS;
           key_minus = edrk.from_ing2.bits.KEY_MINUS;

           if (key_plus || key_minus)
           {
              ff = plus_minus_oborots(key_plus, key_minus, ff, control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR], 0);
              old_time_pult_ing2 = global_time.miliseconds;
              // âûñòàâèì áèò çàïðåòà äî ñëåäóþùåãî óäà÷íîãî îáìåíà ñ ïóëüòîì
              control_station.flag_refresh_array[cc] = 2; // êîë-âî ïðîêðóòîâ îáíîâëåíèé ìàññèâà äî ïîäõâàòà
           }
           else
           {
               plus_minus_oborots(0, 0, ff, control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR], 1);//÷èñòèì

               if (detect_pause_milisec(3000,&old_time_pult_ing2))
                   if (control_station.flag_refresh_array[cc] == 0)
                       ff = control_station.raw_array_data[cc][5].all;
           }
           control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = ff;

//           control_station.array_cmd[CONTROL_STATION_ZADATCHIK_CAN][CONTROL_STATION_CMD_SET_ROTOR] = ff;
 //          control_station.array_cmd[CONTROL_STATION_VPU_CAN][CONTROL_STATION_CMD_SET_ROTOR] = ff;

       }



   }


// öèôðîâûå
//    pos_numbercmd = 15; // ñ êàêîãî ýëåìåíòà ìàññèâà èäóò êîìàíäû, îíè ïîñëå àíàëîãîâûõ äàííûõ

    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = control_station.raw_array_data[cc][1].all;


// çàðÿä, ðàçðÿä ïî êíîïêå
    key_local_charge_key = edrk.from_ing2.bits.KEY_SBOR;
    key_local_uncharge_key = edrk.from_ing2.bits.KEY_RAZBOR;



// çàðÿä, ðàçðÿä îò äèñïëåÿ
    key_local_charge_uncharge_display = control_station.raw_array_data[cc][2].all;


    prev_key_local_charge_key = key_local_charge_key;
    prev_key_local_uncharge_key = key_local_uncharge_key;


    if (prev_key_local_charge_uncharge_display != key_local_charge_uncharge_display)
    {
       if (key_local_charge_uncharge_display==1)
       {
           key_local_charge_display = 1;
           key_local_uncharge_display = 0;
       }
       else
       {
           key_local_charge_display = 0;
           key_local_uncharge_display =1;
       }
    }
    else
    {
        key_local_charge_display = 0;
        key_local_uncharge_display = 0;
    }

    prev_key_local_charge_uncharge_display = key_local_charge_uncharge_display;


    prev_key_local_charge_display = key_local_charge_display;
    prev_key_local_uncharge_display = key_local_uncharge_display;

    key_local_charge = key_local_charge_key || key_local_charge_display;
    key_local_uncharge = key_local_uncharge_key || key_local_uncharge_display;

    if (key_local_uncharge_key && key_local_charge_key)
    {
        key_local_charge = 0;
        edrk.errors.e1.bits.BOTH_KEYS_CHARGE_DISCHARGE |=1;
    }



    if (key_local_charge && prev_charge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
    prev_charge = key_local_charge;


    if (key_local_uncharge)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;

    prev_uncharge = key_local_uncharge;



//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 1;
//    else
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
//

//
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = 0;
//
//    prev_checkback = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;


    // êîïèðóåì èç rs232
    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_PUMP]
                                                                               | control_station.raw_array_data[cc][188].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ENABLE_ON_CHARGE]
                                                                               | control_station.raw_array_data[cc][191].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_QTV]
                                                                               | control_station.raw_array_data[cc][189].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_UMP]
                                                                               | control_station.raw_array_data[cc][190].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_MANUAL_DISCHARGE]
                                                                               | control_station.raw_array_data[cc][180].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_GO]               = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_GO]
                                                                               | !control_station.raw_array_data[cc][192].all;
    }
    else
    {

        edrk.Status_Ready.bits.ImitationReady2 = control_station.raw_array_data[cc][181].all;
        edrk.Obmotka1 = control_station.raw_array_data[cc][194].all;
        edrk.Obmotka2 = control_station.raw_array_data[cc][195].all;
        edrk.disable_alg_u_disbalance = control_station.raw_array_data[cc][193].all;

        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP]  = control_station.raw_array_data[cc][188].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV]   = control_station.raw_array_data[cc][189].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP]   = control_station.raw_array_data[cc][190].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.raw_array_data[cc][191].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.raw_array_data[cc][180].all;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_GO]               = !control_station.raw_array_data[cc][192].all;

    }



    //control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP]  = control_station.raw_array_data[cc][188].all;
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV]   = control_station.raw_array_data[cc][189].all;
    //control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP]   = control_station.raw_array_data[cc][190].all;
    //control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.raw_array_data[cc][191].all;
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.raw_array_data[cc][180].all;
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_GO]               = !control_station.raw_array_data[cc][192].all;



    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    if (control_station.raw_array_data[cc][9].all<=2)  //Âêë Íàñîñ_àâòî(0)_ðó÷íîé(1)
    {
        if (control_station.raw_array_data[cc][9].all==0) // Àâòî âûáîð Íàñîñà(0) 1_2(1)
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 0;
        if (control_station.raw_array_data[cc][9].all==1) //Ðó÷íîé âûáîð íàñîñà_1
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 1;
        if (control_station.raw_array_data[cc][9].all==2) //Ðó÷íîé âûáîð íàñîñà_2
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 2;
    }
    else
    {
        if (control_station.raw_array_data[cc][9].all==3) //Ðó÷íîé âûáîð íàñîñà_1_2
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 3;
        if (control_station.raw_array_data[cc][9].all==4) //Ðó÷íîé âûáîð íàñîñà_1_2
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 4;
    }


    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;

}
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_MPU_SVU(int cc)
{
    int i;
    static int prev_checkback = 0;
    static int flag_wait_revers_go = 0;
    _iq _iq_ff;

    static unsigned int prev_charge=0, prev_uncharge=0, cmd_local_charge, cmd_local_uncharge;

    static unsigned int old_time_MPU_SVU = 0;

    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[cc][i] = 0; // clear all data

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }



  //  control_station.raw_array_data[CONTROL_STATION_TERMINAL_RS232]


    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;


//    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN];


    ///////////////////////////////////////////
    // ýòè áåðåì ñ òåðìèíàëêè
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_IZAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_KM];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_U_ZARYAD];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER] = my_satur_int(control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SET_LIMIT_POWER], MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);
                                                              //control_station.raw_array_data[cc][12].all; // Çàïàñ ìîùíîñòè
// vector, ufconst
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_UFCONST_VECTOR];
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_SCALAR_FOC];


    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = control_station.raw_array_data[cc][1].all;

// àíàëîãîâûå

 //  if

    if ((detect_pause_milisec(100, &old_time_MPU_SVU))
            && control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL])
    {

        if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] == 1)
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.raw_array_data[cc][3].all;
            control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = MAX_ZADANIE_OBOROTS_ROTOR;
        }
        else
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = control_station.raw_array_data[cc][2].all;
        }
    }
    //Êâèòèðîâàíèå
    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = control_station.raw_array_data[cc][0].all;


// çàðÿä, ðàçðÿä
    if (edrk.flag_second_PCH == 0) {
        cmd_local_charge = control_station.raw_array_data[cc][6].all;
        cmd_local_uncharge = control_station.raw_array_data[cc][9].all;
    } else {
        cmd_local_charge = modbus_table_can_in[129].all; //control_station.raw_array_data[cc][7].all;
        cmd_local_uncharge = control_station.raw_array_data[cc][10].all;
    }


    if (cmd_local_charge && cmd_local_uncharge)
    {
        cmd_local_charge = 0;
        edrk.errors.e1.bits.BOTH_KEYS_CHARGE_DISCHARGE |=1;
    }



    if (cmd_local_charge && prev_charge==0)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
    prev_charge = cmd_local_charge;


    if (cmd_local_uncharge)
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
        control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
    }
    else
        control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;

    prev_uncharge = cmd_local_uncharge;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_BLOCK_BS] = control_station.raw_array_data[cc][4].all;

//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 1;
//    else
//       control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
//
//
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = 0;
//
//    prev_checkback = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;


    // êîïèðóåì èç rs232
    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
    {
        control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_GO];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_QTV];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_DISABLE_ON_UMP];
        control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_MANUAL_DISCHARGE];
    }
    else
        if (control_station.alive_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_GO];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_PUMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_ENABLE_ON_CHARGE];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_QTV];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_DISABLE_ON_UMP];
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MANUAL_DISCHARGE];

            edrk.Status_Ready.bits.ImitationReady2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][181].all;
            edrk.Obmotka1 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][194].all;
            edrk.Obmotka2 = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][195].all;
            edrk.disable_alg_u_disbalance = control_station.raw_array_data[CONTROL_STATION_INGETEAM_PULT_RS485][193].all;




        }


    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    //Àâòîâûáîð íàñîñà
    control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = control_station.array_cmd[CONTROL_STATION_INGETEAM_PULT_RS485][CONTROL_STATION_CMD_MODE_PUMP];

    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;

}
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_one_control_station_terminal_rs232(int cc)
{
    int i, pos_numbercmd;
    static int prev_checkback = 0;
    static int flag_wait_revers_go = 0;
    static unsigned int prev_charge=0, prev_uncharge=0, key_local_charge, key_local_uncharge;
    float ff;
    _iq _iq_ff;

    if (control_station.alive_control_station[cc])
    {

    }
    else
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
        {
 //           control_station.array_cmd[cc][i] = 0; // clear all data
            // íå îáíóëÿåì, ò.ê. åñëè âèñëà ÌÎÕÀ òî âûðóáàåòñÿ Ï×
        }

        return; // òóò âûøëò ñáðîñèâ âñå ñòàíäàðòíûå êîìàíäû
        // à "íå ñòàíäàðòíûå" äàííûå íå î÷èùàþòñÿ.
    }



  //  control_station.raw_array_data[CONTROL_STATION_TERMINAL_RS232]


    edrk.test_mode = 0;
//  f.RScount = SECOND * 3;

    pos_numbercmd = 15; // ñ êàêîãî ýëåìåíòà ìàññèâà èäóò êîìàíäû, îíè ïîñëå àíàëîãîâûõ äàííûõ
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL] =  control_station.raw_array_data[cc][pos_numbercmd].bits.bit0;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_UFCONST_VECTOR] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit2;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit3;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SCALAR_FOC] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit4;


    //control_station.raw_array_data[cc][pos_numbercmd].bits.bit4 = Go

    //control_station.raw_array_data[cc][pos_numbercmd].bits.bit5

//    control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit6;
 //   control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit7;

    // çàðÿä, ðàçðÿä
        key_local_charge = control_station.raw_array_data[cc][pos_numbercmd].bits.bit6;;
        key_local_uncharge = control_station.raw_array_data[cc][pos_numbercmd].bits.bit7;

        if (key_local_uncharge && key_local_charge)
        {
            key_local_charge = 0;
            edrk.errors.e1.bits.BOTH_KEYS_CHARGE_DISCHARGE |=1;
        }

        if (key_local_charge && prev_charge==0)
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 1;
            control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
        }
        else
            control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE] = 0;
        prev_charge = key_local_charge;


        if (key_local_uncharge)
        {
            control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 1;
            control_station.array_cmd[cc][CONTROL_STATION_CMD_CHARGE]   = 0;
        }
        else
            control_station.array_cmd[cc][CONTROL_STATION_CMD_UNCHARGE] = 0;
        prev_uncharge = key_local_uncharge;




    // 0 - auto on - rand pump
    // 1 - auto on  1 pump
    // 2 - auto on  2 pump
    // 3 - manual on 1 pump
    // 4 - manual on 2 pump

    if (control_station.raw_array_data[cc][pos_numbercmd].bits.bit8==0) //  Âêë Íàñîñ_àâòî(0)_ðó÷íîé(1)
    {

        if (control_station.raw_array_data[cc][pos_numbercmd].bits.bit9==0) // Àâòî âûáîð
            control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 0;
        else
        // ðó÷íîé âûáîð äëÿ àâòî âêëþ÷åíèÿ
        {
            if (control_station.raw_array_data[cc][pos_numbercmd].bits.bit10==0) //Ðó÷íîé âûáîð íàñîñà_1_2 àâòîâêëþ÷åíèå
                control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 1;
            else
                control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 2;
        }
    }
    else // ðó÷íîå âêëþ÷åíèå
    {
            if (control_station.raw_array_data[cc][pos_numbercmd].bits.bit10==0) //Ðó÷íîé âûáîð íàñîñà_1_2 ðó÷íîå âêëþ÷åíèå
                control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 3;
            else
                control_station.array_cmd[cc][CONTROL_STATION_CMD_MODE_PUMP] = 4;
    }

    control_station.array_cmd[cc][CONTROL_STATION_CMD_TEST_LEDS] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit11;

    //control_station.raw_array_data[cc][pos_numbercmd].bits.bit12

    edrk.Status_Ready.bits.ImitationReady2 = control_station.raw_array_data[cc][pos_numbercmd].bits.bit13;
    edrk.Run_Rascepitel_from_RS = control_station.raw_array_data[cc][pos_numbercmd].bits.bit14;
    edrk.Obmotka1 = control_station.raw_array_data[cc][pos_numbercmd].bits.bit15;

    edrk.Obmotka2 = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit0;
    edrk.disable_alg_u_disbalance = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit1;

//    control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit2;
//    control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit3;
//    control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit4;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_CROSS_STEND_AUTOMATS] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit2;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_UMP] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit3;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_MANUAL_DISCHARGE] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit4;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_PUMP] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit5;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_ENABLE_ON_CHARGE] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit6;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_ON_QTV] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit7;

//    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_INTERRUPT_SYNC] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit8;
//    control_station.array_cmd[cc][CONTROL_STATION_CMD_DISABLE_INTERRUPT_TIMER2] = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit9;

    edrk.disable_rascepitel_work = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit10;
    edrk.enable_pwm_test_lines   = control_station.raw_array_data[cc][pos_numbercmd+1].bits.bit11;






// analog
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR] = control_station.raw_array_data[cc][0].all;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_KM] = control_station.raw_array_data[cc][1].all;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER] = my_satur_int(control_station.raw_array_data[cc][2].all, MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_IZAD] = my_satur_int(control_station.raw_array_data[cc][3].all, MAX_ZADANIE_I_M, 0);

    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_CROSS_STEND_AUTOMATS]==0)
       control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = control_station.raw_array_data[cc][4].all;
    else
        // áëîêèðóåì ñáîð ñõåìû, ò.ê. ìû â ïðîáðîñå àâòîìàòîâ
        control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_U_ZARYAD] = 0;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_U_DISBALANCE] = control_station.raw_array_data[cc][5].all;
    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE] = control_station.raw_array_data[cc][6].all;


    control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_LIMIT_POWER] = my_satur_int(control_station.raw_array_data[cc][7].all, MAX_ZADANIE_POWER, MIN_ZADANIE_POWER);
    if (control_station.raw_array_data[cc][8].all > 0 && control_station.raw_array_data[cc][8].all <= 600 && edrk.MasterSlave == MODE_MASTER) {
        vect_control.iqId_min = _IQ((float)control_station.raw_array_data[cc][8].all / NORMA_ACP);
    }

    prev_checkback = control_station.array_cmd[cc][CONTROL_STATION_CMD_CHECKBACK];//control_station.raw_array_data[cc][pos_numbercmd].bits.bit1;
    // edrk.KvitirRS = 1;

    control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit5;

//    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ROTOR_POWER]==0)
//    {
//        if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR]!=0)
//           control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit5;
//        else
//            control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
//    }
//    else
//    {
//        if (control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_POWER]!=0)
//           control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = control_station.raw_array_data[cc][pos_numbercmd].bits.bit5;
//        else
//            control_station.array_cmd[cc][CONTROL_STATION_CMD_GO] = 0;
//    }


/*
    edrk.from_rs.bits.ACTIVE = control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL];


    if (edrk.from_rs.bits.ACTIVE==0)
        return;

    edrk.from_can.bits.ACTIVE = 0;

*/



    if (control_station.array_cmd[cc][CONTROL_STATION_CMD_ACTIVE_CONTROL]==0)
            return;

    // ìû â àíàëèçå CAN äàííûõ è âêëþ÷åíî óïðàâëåíèÿ ñ RS232
    if (control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ACTIVE_CONTROL] && cc==CONTROL_STATION_TERMINAL_CAN)
            return;





//    edrk.DirectOUT       = control_station.raw_array_data[cc][pos_numbercmd].bits.bit7;

//    edrk.DirectNagrevOff = control_station.raw_array_data[cc][pos_numbercmd].bits.bit8;
//    edrk.DirectBlockKeyOff = control_station.raw_array_data[cc][pos_numbercmd].bits.bit9;
////    edrk.DirectPumpON = control_station.raw_array_data[cc][pos_numbercmd].bits.bit10;
//    edrk.DirectZaryadOn = control_station.raw_array_data[cc][pos_numbercmd].bits.bit11;


//    edrk.SetSpeed = control_station.raw_array_data[cc][pos_numbercmd].bits.bit14;





    ////////////////////////////
    /////////////////////////


}

//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
void parse_data_from_master_to_alg(void)
{

    if (edrk.MasterSlave==MODE_SLAVE)
    {
        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_ROTOR] = control_station.array_cmd[CONTROL_STATION_ANOTHER_BS][CONTROL_STATION_CMD_SET_ROTOR];
        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_KM] = control_station.array_cmd[CONTROL_STATION_ANOTHER_BS][CONTROL_STATION_CMD_SET_KM];
        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_IZAD] = control_station.array_cmd[CONTROL_STATION_ANOTHER_BS][CONTROL_STATION_CMD_SET_IZAD];
        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_POWER] = control_station.array_cmd[CONTROL_STATION_ANOTHER_BS][CONTROL_STATION_CMD_SET_POWER];
    }

}
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////

void parse_analog_data_from_active_control_station_to_alg(void)
{
    float ff;
    _iq _iq_ff;
    int i;

//    edrk.disable_interrupt_sync = control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_INTERRUPT_SYNC];
//    edrk.disable_interrupt_timer2 = control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_INTERRUPT_TIMER2];

    edrk.NoDetectUZeroDischarge = control_station.active_array_cmd[CONTROL_STATION_CMD_DISABLE_ON_QTV];

    //   if (current_active_control==CONTROL_STATION_TERMINAL_RS232)
    edrk.StartGEDfromControl = control_station.active_array_cmd[CONTROL_STATION_CMD_GO];



//////////////////
    if (control_station.active_array_cmd[CONTROL_STATION_CMD_UFCONST_VECTOR]==0)
        edrk.Mode_ScalarVectorUFConst = ALG_MODE_UF_CONST;
    else
        if (control_station.active_array_cmd[CONTROL_STATION_CMD_SCALAR_FOC]==0)
        {
            if (control_station.active_array_cmd[CONTROL_STATION_CMD_ROTOR_POWER]==0)
              edrk.Mode_ScalarVectorUFConst = ALG_MODE_SCALAR_OBOROTS;
            else
              edrk.Mode_ScalarVectorUFConst = ALG_MODE_SCALAR_POWER;
        }
        else
        {
            if (control_station.active_array_cmd[CONTROL_STATION_CMD_ROTOR_POWER]==0)
              edrk.Mode_ScalarVectorUFConst = ALG_MODE_FOC_OBOROTS;
            else
              edrk.Mode_ScalarVectorUFConst = ALG_MODE_FOC_POWER;
        }


    //////////////////////////////////////////////////////
//    edrk.W_from_RS = control_station.array_cmd[cc][CONTROL_STATION_CMD_SET_ROTOR];  //DataAnalog1;
//    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_I_VOZBUD];//0;//DataAnalog4;
//    edrk.I_zad_vozb_add_from_RS = my_satur_float(ff,MAX_ZADANIE_I_VOZBUD,0);


    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_U_ZARYAD];
    edrk.zadanie.ZadanieU_Charge = my_satur_float(ff,MAX_ZADANIE_U_CHARGE,0);
    edrk.zadanie.iq_ZadanieU_Charge = _IQ(edrk.zadanie.ZadanieU_Charge/NORMA_ACP);


    if (edrk.Status_Ready.bits.ready_final==0)
    {
        // åñëè ñõåìà íå ñîáðàíà, îáíóëÿåì çàäàíèÿ âî âñåõ ïîñòàõ
        for (i=0;i<CONTROL_STATION_LAST;i++)
        {
            control_station.array_cmd[i][CONTROL_STATION_CMD_SET_ROTOR] = 0;
//            control_station.array_cmd[i][CONTROL_STATION_CMD_SET_KM] = 0;
 //           control_station.array_cmd[i][CONTROL_STATION_CMD_SET_IZAD] = 0;
            control_station.array_cmd[i][CONTROL_STATION_CMD_SET_POWER] = 0;
        }


         control_station.active_array_cmd[CONTROL_STATION_CMD_SET_ROTOR] = 0;
 //        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_KM] = 0;
 //        control_station.active_array_cmd[CONTROL_STATION_CMD_SET_IZAD] = 0;
         control_station.active_array_cmd[CONTROL_STATION_CMD_SET_POWER] = 0;
    }


    if (edrk.Mode_ScalarVectorUFConst==ALG_MODE_UF_CONST)
    {
        ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_ROTOR]/100.0;
        ff = my_satur_float(ff,MAX_ZADANIE_F,MIN_ZADANIE_F);
        edrk.zadanie.fzad = ff; // Ãö.
        edrk.zadanie.iq_fzad = _IQ(edrk.zadanie.fzad/NORMA_FROTOR);
    }
    else
    {
        ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_ROTOR];
        ff = my_satur_float(ff,MAX_ZADANIE_OBOROTS_ROTOR,MIN_ZADANIE_OBOROTS_ROTOR);
        edrk.zadanie.oborots_zad = ff;// îá/ìèí
        edrk.zadanie.oborots_zad_hz = ff/60.0;// èç îáîðîòîâ â Ãö.
        edrk.zadanie.iq_oborots_zad_hz = _IQ(edrk.zadanie.oborots_zad_hz/NORMA_FROTOR);
    }


    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_KM]/10000.0;
    edrk.zadanie.kzad = my_satur_float(ff,K_STATOR_MAX,0);
    edrk.zadanie.iq_kzad = _IQ(edrk.zadanie.kzad);

    ff = (control_station.active_array_cmd[CONTROL_STATION_CMD_SET_K_U_DISBALANCE]/100.0);
    edrk.zadanie.k_u_disbalance = my_satur_float(ff,MAX_ZADANIE_K_U_DISBALANCE,0.0);
    edrk.zadanie.iq_k_u_disbalance = _IQ(edrk.zadanie.k_u_disbalance);


    ff = (control_station.active_array_cmd[CONTROL_STATION_CMD_SET_K_PLUS_U_DISBALANCE]/1000.0);
    edrk.zadanie.kplus_u_disbalance = my_satur_float(ff,1.0,0.0);
    edrk.zadanie.iq_kplus_u_disbalance = _IQ(edrk.zadanie.kplus_u_disbalance);

    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_IZAD];
    edrk.zadanie.Izad = my_satur_float(ff,MAX_ZADANIE_I_M,0);
    edrk.zadanie.iq_Izad = _IQ(edrk.zadanie.Izad/NORMA_MZZ);

    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_LIMIT_POWER]; //kWt
    edrk.zadanie.limit_power_zad = my_satur_float(ff,MAX_ZADANIE_POWER,MIN_ZADANIE_POWER); // kWt
    edrk.zadanie.iq_limit_power_zad = _IQ(edrk.zadanie.limit_power_zad*1000.0/(NORMA_MZZ*NORMA_MZZ)); //Wt


    ff = control_station.active_array_cmd[CONTROL_STATION_CMD_SET_POWER]; //kWt
    ff = my_satur_float(ff,MAX_ZADANIE_POWER,MIN_ZADANIE_POWER); // kWt
    ff = my_satur_float(ff,edrk.zadanie.limit_power_zad,-edrk.zadanie.limit_power_zad); // kWt

    edrk.zadanie.power_zad = ff; // kWt
    edrk.zadanie.iq_power_zad = _IQ(edrk.zadanie.power_zad*1000.0/(NORMA_MZZ*NORMA_MZZ)); //Wt



// StartGED
//////////////////////////////////////////////////////
 //   edrk.StartGEDRS = control_station.array_cmd[cc][CONTROL_STATION_CMD_GO];
/*
    if (edrk.summ_errors)
    {
        flag_wait_revers_go = 1;
    }

    if (flag_wait_revers_go==1)
      edrk.StartGEDRS = 0;
    if (pcommand->digit_data.Byte01.bit_data.bit0 && flag_wait_revers_go)
      edrk.StartGEDRS = 0;
    if (pcommand->digit_data.Byte01.bit_data.bit0==0)
      edrk.StartGEDRS = 0;
    if (pcommand->digit_data.Byte01.bit_data.bit0==0 && flag_wait_revers_go)
      flag_wait_revers_go = 0;
    if (pcommand->digit_data.Byte01.bit_data.bit0==1 && flag_wait_revers_go==0)
       edrk.StartGEDRS    = 1;

//  edrk.StartGEDRS = pcommand->digit_data.Byte01.bit_data.bit0;
*/
// end StartGED




////////////////




//  edrk.from_rs.bits.RAZBOR_SHEMA  = pcommand->digit_data.Byte01.bit_data.bit5;



// SBOR SHEMA
/*
    if (edrk.summ_errors)
    {
        flag_wait_revers_sbor = 1;
    }

    if (flag_wait_revers_sbor==1)
      edrk.from_can.bits.SBOR_SHEMA = 0;

    if (pcommand->digit_data.Byte01.bit_data.bit4 && flag_wait_revers_sbor)
      edrk.from_can.bits.SBOR_SHEMA = 0;

    if (pcommand->digit_data.Byte01.bit_data.bit4==0)
      edrk.from_can.bits.SBOR_SHEMA = 0;

    if (pcommand->digit_data.Byte01.bit_data.bit4==0 && flag_wait_revers_sbor)
      flag_wait_revers_sbor = 0;

    if (pcommand->digit_data.Byte01.bit_data.bit4==1 && flag_wait_revers_sbor==0)
       edrk.from_can.bits.SBOR_SHEMA    = pcommand->digit_data.Byte01.bit_data.bit4;

    prev_byte01_bit4 = pcommand->digit_data.Byte01.bit_data.bit4;
*/
// end SBOR SHEMA





//    if (edrk.from_rs.bits.RAZBOR_SHEMA)
 //     edrk.from_rs.bits.SBOR_SHEMA = 0;

    //edrk.SborRS   = pcommand->digit_data.Byte01.bit_data.bit4;


//    edrk.to_shema.bits.QTV_ON = pcommand->digit_data.Byte02.bit_data.bit3;




//  edrk.RemouteFromRS = pcommand->digit_data.Byte01.bit_data.bit3;




//  edrk.VozbudOnOffFromRS = pcommand->digit_data.Byte01.bit_data.bit1;
//  edrk.enable_set_vozbud = pcommand->digit_data.Byte01.bit_data.bit1;
//  edrk.SborRS = pcommand->digit_data.Byte01.bit_data.bit2;
//  edrk.RazborRS = pcommand->digit_data.Byte01.bit_data.bit3;
//  edrk.DirectOUT = pcommand->digit_data.Byte01.bit_data.bit4;

//  edrk.StartGED   = pcommand->digit_data.Byte01.bit_data.bit6;


//  f.flag_distance = pcommand->digit_data.Byte01.bit_data.bit6;
//  f.Set_power = pcommand->digit_data.Byte01.bit_data.bit7;


    //  f.Down50   = pcommand->digit_data.Byte02.bit_data.bit2;
//  f.Up50 = pcommand->digit_data.Byte02.bit_data.bit3;
//  f.Ciclelog = pcommand->digit_data.Byte02.bit_data.bit4;

    //  if (SPEED_SELECT_ZADAT==1)
//  f.Provorot = pcommand->digit_data.Byte02.bit_data.bit5;













}



/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void parse_parameters_from_all_control_station(void)
{

    parse_parameters_from_one_control_station_terminal_rs232(CONTROL_STATION_TERMINAL_RS232);
    parse_parameters_from_one_control_station_terminal_rs232(CONTROL_STATION_TERMINAL_CAN);
    load_parameters_from_can_control_station_to_rs232();

    if (edrk.get_new_data_from_hmi==1) // äàííûå ïðèøëè?
    {
        func_unpack_answer_from_Ingeteam(CONTROL_STATION_INGETEAM_PULT_RS485);
        parse_parameters_from_one_control_station_pult_ingeteam(CONTROL_STATION_INGETEAM_PULT_RS485);
        edrk.get_new_data_from_hmi = 2; // äàííûå ðàñïàðñåíû è óëîæåíû â modbus
    }
    parse_parameters_from_one_control_station_pult_zadat4ik(CONTROL_STATION_ZADATCHIK_CAN);
    parse_parameters_from_one_control_station_pult_vpu(CONTROL_STATION_VPU_CAN);
    parse_parameters_from_one_control_station_another_bs(CONTROL_STATION_ANOTHER_BS);
//    unpack_answer_from_MPU_SVU_CAN(CONTROL_STATION_MPU_SVU_CAN);
    unpack_answer_from_MPU_SVU_CAN(CONTROL_STATION_MPU_KEY_CAN);
//    unpack_answer_from_MPU_SVU_RS(CONTROL_STATION_MPU_SVU_RS485);
 //   parse_parameters_from_one_control_station_MPU_SVU(CONTROL_STATION_MPU_SVU_CAN);
    parse_parameters_from_one_control_station_MPU_SVU(CONTROL_STATION_MPU_KEY_CAN);
//    parse_parameters_from_one_control_station_MPU_SVU(CONTROL_STATION_MPU_SVU_RS485);


}

/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
void load_parameters_from_active_control_station(int current_control)
{
    int i;

    if (current_control>=CONTROL_STATION_LAST || current_control<0 )
    {
        // ÷òî-òî íå òî! ïîñò íå îïðåäåëåí!
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.active_array_cmd[i] = 0; // clear
        return;
    }

    for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
        control_station.active_array_cmd[i] = control_station.array_cmd[current_control][i];




}

/////////////////////////////////////////////////////////////
// åñëè rs232 ìåðòâ, à CAN æèâ, òî êîïèðóåì äàííûå èç CAN â RS232
// äëÿ ñîâìåñòèìîñòè ïîëó÷åíèÿ äàííûõ ïî íàñòðîéêàì ïóñêà
/////////////////////////////////////////////////////////////
void load_parameters_from_can_control_station_to_rs232(void)
{
    int i;

    if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_CAN] &&
            control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232]==0)
    {
        for (i=0;i<CONTROL_STATION_CMD_LAST;i++)
            control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][i] = control_station.array_cmd[CONTROL_STATION_TERMINAL_CAN][i];
    }



}


/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
int get_current_station_control(void)
{
    int i;

    for (i=0;i<COUNT_CONTROL_STATION;i++)
        if (control_station.active_control_station[i])
            return i; // âåðíóëè ðàáî÷èé ïîñò.

    return CONTROL_STATION_LAST; // âîçâðàùàåì ìàêñèìóì êàê îøèáêó

}



/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//  Ïîäãîòîâêà äëÿ òåñòà alive_control
/////////////////////////////////////////////////////////////
void control_station_test_alive_all_control(void)
{
    int  test_a,test_b, real_box;

    // terminals can
    if (CAN_timeout[get_real_in_mbox(TERMINAL_TYPE_BOX,edrk.number_can_box_terminal_cmd)] == 0)
        control_station.detect_get_data_control_station[CONTROL_STATION_TERMINAL_CAN] = 1;

    // terminals rs232
    // test âûíåñåí â RS_Function.c
    if (rs_a.RS_DataReadyRequest)
    {
       rs_a.RS_DataReadyRequest = 0;
       control_station.detect_get_data_control_station[CONTROL_STATION_TERMINAL_RS232] = 1;
    }


    // mpu svu+key rs485
    // test âûíåñåí â RS_Function.c
    //    control_station.detect_get_data_control_station[CONTROL_STATION_MPU_KEY_RS485] = 1;
    //    control_station.detect_get_data_control_station[CONTROL_STATION_MPU_SVU_RS485] = 1;

    // mpu svu+key can
    if (CAN_timeout[get_real_in_mbox(MPU_TYPE_BOX,0)]==0)
    {
        control_station.detect_get_data_control_station[CONTROL_STATION_MPU_KEY_CAN] = 1;
        control_station.detect_get_data_control_station[CONTROL_STATION_MPU_SVU_CAN] = 1;
    }

    // zadatchik can
    real_box = get_real_in_mbox(UNITS_TYPE_BOX,ZADATCHIK_CAN);
    if (CAN_timeout[real_box] == 0)
        control_station.detect_get_data_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 1;

    // vpu can
    real_box = get_real_in_mbox(UNITS_TYPE_BOX,VPU_CAN);
    if (CAN_timeout[real_box] == 0)
        control_station.detect_get_data_control_station[CONTROL_STATION_VPU_CAN] = 1;

    // Ingeteam pult
    // test âûíåñåí â RS_Function.c
    //     control_station.detect_get_data_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] = 1;
    if (rs_b.RS_DataReadyRequest)
    {
       rs_b.RS_DataReadyRequest = 0;
       control_station.detect_get_data_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] = 1;
    }

    if (rs_b.RS_DataReadyFullUpdate) // îáíîâèëè âåñü ìàññèâ?
    {

        if (control_station.flag_refresh_array[CONTROL_STATION_INGETEAM_PULT_RS485])
            control_station.flag_refresh_array[CONTROL_STATION_INGETEAM_PULT_RS485]--;

        rs_b.RS_DataReadyFullUpdate = 0;
    }

    // another bs can
    real_box = get_real_in_mbox(UNITS_TYPE_BOX,ANOTHER_BSU1_CAN_DEVICE);
    if (CAN_timeout[real_box] == 0)
        control_station.detect_get_data_control_station[CONTROL_STATION_ANOTHER_BS] = 1;


}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
int control_station_select_active(void)
{
     int i;
 ///
 ///  if (edrk.from_shema.bits.SVU)     return;
//    if (edrk.from_shema.bits.ZADA_DISPLAY) return;
    //edrk.from_ing.bits.LOCAL_REMOUTE
    //  edrk.from_shema.bits.RAZBOR_SHEMA   = !FROM_BSU_RAZBOR_SHEMA;
    //edrk.from_shema.bits.SBOR_SHEMA     = !FROM_BSU_SBOR_SHEMA;
    //   if (CAN_timeout[get_real_in_mbox(MPU_TYPE_BOX,0)]==0)
    //{
    //  edrk.W_from_SVU = modbus_table_can_in[14].all;
    //  edrk.W_from_DISPLAY = modbus_table_can_in[16].all;
   //
   //edrk.from_rs.bits.ACTIVE


//////////////////////////////////////
// terminal rs232
//////////////////////////////////////
   if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_RS232])
   {
       if (control_station.array_cmd[CONTROL_STATION_TERMINAL_RS232][CONTROL_STATION_CMD_ACTIVE_CONTROL])
       {
           control_station.active_control_station[CONTROL_STATION_TERMINAL_RS232] = 1;
       }
       else
           control_station.active_control_station[CONTROL_STATION_TERMINAL_RS232] = 0;
   }
   else
       control_station.active_control_station[CONTROL_STATION_TERMINAL_RS232] = 0;

   // åñëè âûáðàí RS232 òî åìó äàåì âûñøèé ïðèîðèòåò, îñòàëüíûå ïîñòû âûêëþ÷àåì
   if (control_station.active_control_station[CONTROL_STATION_TERMINAL_RS232])
   {
       for (i=0;i<COUNT_CONTROL_STATION;i++)
         if (i != CONTROL_STATION_TERMINAL_RS232)
           control_station.active_control_station[i] = 0;
       return 0; // all ok
   }

//////////////////////////////////////
// terminal can
//////////////////////////////////////

   if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_CAN])
   {
       if (control_station.array_cmd[CONTROL_STATION_TERMINAL_CAN][CONTROL_STATION_CMD_ACTIVE_CONTROL])
       {
           control_station.active_control_station[CONTROL_STATION_TERMINAL_CAN] = 1;
       }
       else
           control_station.active_control_station[CONTROL_STATION_TERMINAL_CAN] = 0;
   }
   else
       control_station.active_control_station[CONTROL_STATION_TERMINAL_CAN] = 0;


   // åñëè âûáðàí CAN òî åìó äàåì âûñøèé ïðèîðèòåò, îñòàëüíûå ïîñòû âûêëþ÷àåì
   if (control_station.active_control_station[CONTROL_STATION_TERMINAL_CAN])
   {
       for (i=0;i<COUNT_CONTROL_STATION;i++)
         if (i != CONTROL_STATION_TERMINAL_CAN)
           control_station.active_control_station[i] = 0;
       return 0; // all ok
   }

//////////////////////////////////////
// ingeteam pult rs485
//////////////////////////////////////

   if (edrk.from_ing1.bits.LOCAL_REMOUTE == 1) //LOCAL DISPLAY ON
   {
      if (control_station.alive_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
      {
              control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] = 1;
      }
      else
          control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] = 0;

   // åñëè âûáðàí PULT òî åìó äàåì âûñøèé ïðèîðèòåò, îñòàëüíûå ïîñòû âûêëþ÷àåì
       for (i=0;i<COUNT_CONTROL_STATION;i++)
         if (i != CONTROL_STATION_INGETEAM_PULT_RS485)
           control_station.active_control_station[i] = 0;

       if (control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485])
       {
           return 0; // âñå îê
       }
       else
       {
           return 1; // îøèáêà, âûõîäèì. Ïîñò âûáðàí à ñâÿçè ñ íèì íåòó!!!
       }
   }
   else
       control_station.active_control_station[CONTROL_STATION_INGETEAM_PULT_RS485] = 0;

//////////////////////////////////////////////////////////////////
//  svu CAN,  svu RS485, zadatchik CAN, mpu CAN, mpu RS485
//////////////////////////////////////////////////////////////////
   if (edrk.from_ing1.bits.LOCAL_REMOUTE == 0) //REMOUTE on INGETEAM ON
   {
       ////////////////////////////
       // svu CAN RS485
       ////////////////////////////
       if (edrk.from_shema.bits.SVU) // ÑÂÓ èëè ÂÏÓ àêòèâåí
       {
           if (edrk.from_vpu.bits.ACTIVE==1)  // ÂÏÓ àêòèâèðîâàí
           {
               if (control_station.alive_control_station[CONTROL_STATION_VPU_CAN])
               {
                     control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 1;
               }
               else
                     control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 0;

               control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 0;


               if (control_station.active_control_station[CONTROL_STATION_VPU_CAN]==0)
                   return 1; // îøèáêà, âûõîäèì. Ïîñò âûáðàí à ñâÿçè ñ íèì íåòó!!!
           }
           else // ÂÏÓ íå âûáðàí
           {
               if (control_station.alive_control_station[CONTROL_STATION_MPU_SVU_CAN])
               {
                    control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 1; // ó CAN ïðèîðèòåò âûøå ÷åì ó RS485
                    control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
               }
               else
               {
                    control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 0;

                    if (control_station.alive_control_station[CONTROL_STATION_MPU_SVU_RS485])
                        control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 1;
                    else
                        control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
               }

               control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN]   = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 0;

               if (control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN]==0 &&
                   control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485]==0)
                   return 1; // îøèáêà, âûõîäèì. Ïîñò âûáðàí à ñâÿçè ñ íèì íåòó!!!
           }
       }
       else // ÑÂÓ âûêëþ÷åí
       {
           ////////////////////////////
           // zadatchik can
           ////////////////////////////
           if (edrk.from_shema.bits.ZADA_DISPLAY == 0)  // Çàäàò÷èê àêòèâèðîâàí è ÑÂÓ âûêëþ÷åí
           {
               if (control_station.alive_control_station[CONTROL_STATION_ZADATCHIK_CAN])
               {
                     control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 1;
               }
               else
                     control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 0;

               control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 0;

               if (control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN]==0)
                   return 1; // îøèáêà, âûõîäèì. Ïîñò âûáðàí à ñâÿçè ñ íèì íåòó!!!

           }
           else // çàäàò÷èê âûêëþ÷åí, KEY
           {
               ////////////////////////////
               // mpu CAN RS485
               ////////////////////////////
               if (control_station.alive_control_station[CONTROL_STATION_MPU_KEY_CAN])
               {
                    control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN] = 1; // ó CAN ïðèîðèòåò âûøå ÷åì ó RS485
                    control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
               }
               else
               {
                    control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN] = 0;

                    if (control_station.alive_control_station[CONTROL_STATION_MPU_KEY_RS485])
                        control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 1;
                    else
                        control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
               }

               control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
               control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 0;
               control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 0;

               if (control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN]==0 &&
                   control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485]==0)
                   return 1; // îøèáêà, âûõîäèì. Ïîñò âûáðàí à ñâÿçè ñ íèì íåòó!!!

           } // end if çàäàò÷èê âûêëþ÷åí, KEY

       } // end if // ÑÂÓ âûêëþ÷åí
   }
   else
   {
    // òóò âûðóáàåì âñå ïîñòû áîëåå íèçêîãî óðîâíÿ ÷åì ìåñòíûé ïóëüò
       // ñþäà ìû íèêîãäà íå ïîïàäåì, ò.ê. (edrk.from_ing.bits.LOCAL_REMOUTE == 1) ïðîâåðÿåòñÿ âûøå
       control_station.active_control_station[CONTROL_STATION_MPU_KEY_CAN] = 0;
       control_station.active_control_station[CONTROL_STATION_MPU_KEY_RS485] = 0;
       control_station.active_control_station[CONTROL_STATION_MPU_SVU_CAN] = 0;
       control_station.active_control_station[CONTROL_STATION_MPU_SVU_RS485] = 0;
       control_station.active_control_station[CONTROL_STATION_ZADATCHIK_CAN] = 0;
       control_station.active_control_station[CONTROL_STATION_VPU_CAN] = 0;
   } // end if REMOUTE on INGETEAM ON


   return 0;
}