279 lines
7.0 KiB
C
279 lines
7.0 KiB
C
/*
|
|
* message2can.c
|
|
*
|
|
* Created on: 3 èþí. 2020 ã.
|
|
* Author: Yura
|
|
*/
|
|
#include <adc_tools.h>
|
|
#include <edrk_main.h>
|
|
#include <message2can.h>
|
|
#include <params.h>
|
|
#include <params_norma.h>
|
|
#include <v_rotor.h>
|
|
#include <vector.h>
|
|
|
|
#include "control_station.h"
|
|
#include "CAN_Setup.h"
|
|
#include "global_time.h"
|
|
#include "IQmathLib.h"
|
|
#include "DSP281x_Device.h"
|
|
#include "x_basic_types.h"
|
|
#include "xp_cds_in.h"
|
|
#include "xp_hwp.h"
|
|
#include "xp_project.h"
|
|
|
|
|
|
void detecting_cmd_from_can(void)
|
|
{
|
|
|
|
if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_CAN])
|
|
{
|
|
func_unpack_answer_from_TMS_CAN((TERMINAL_UNITES_STRUCT_handle)&TerminalUnites[edrk.number_can_box_terminal_cmd][0]);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void func_unpack_answer_from_TMS_CAN(TERMINAL_UNITES_STRUCT_handle unites_t)
|
|
{
|
|
// Êîíòðîëüíày ñóììà
|
|
unsigned int DataOut,h;
|
|
int Data, Data1, Data2, DataAnalog1, DataAnalog2, DataAnalog3, DataAnalog4,DataAnalog5,DataAnalog6, i;
|
|
unsigned char *pByte;
|
|
// static int vs11,vs12,vs1;
|
|
// static int DataCnt=0;
|
|
// int GoT,Assemble_scheme;
|
|
// static int prev_temp_Rele1=0, temp_Rele1=0, prev_temp_Rele2=0, temp_Rele2=0;
|
|
|
|
static int flag_prev_turn_on = 0;
|
|
static int flag_prev_turn_off = 0;
|
|
static int prev_byte01_bit4 = 0;
|
|
static int prev_byte01_bit1 = 0;
|
|
static int flag_wait_revers_sbor = 1;
|
|
static int flag_wait_revers_go = 1;
|
|
|
|
static unsigned int count_transmited = 0;
|
|
|
|
|
|
//
|
|
|
|
if (TERMINAL_UNIT_LEN>CONTROL_STATION_MAX_RAW_DATA)
|
|
xerror(main_er_ID(2),(void *)0);
|
|
|
|
|
|
|
|
// ïåðåïàêóåì èç áàéòîâ â ñëîâà, ò.ê. â RS232 äàííûå èäóò áàéòàìè
|
|
// pByte = (unsigned char *)(pcommand);//->analog_data.analog1_lo;
|
|
|
|
for (h=0;h<TERMINAL_UNIT_LEN;h++)
|
|
{
|
|
control_station.raw_array_data[CONTROL_STATION_TERMINAL_CAN][h].all = unites_t->buf[h].all;
|
|
}
|
|
|
|
/*
|
|
|
|
if (control_station.alive_control_station[CONTROL_STATION_TERMINAL_CAN]==0)
|
|
{
|
|
edrk.from_can.bits.ACTIVE = 0;
|
|
return;
|
|
}
|
|
|
|
if ((control_station.active_control_station[CONTROL_STATION_TERMINAL_RS232]==1))
|
|
{
|
|
edrk.from_can.bits.ACTIVE = 0;
|
|
return;
|
|
}
|
|
|
|
// unites_t->buf[0].bits.bit0
|
|
|
|
edrk.test_mode = 0;
|
|
|
|
edrk.from_can.bits.ACTIVE = unites_t->buf[6].bits.bit3;
|
|
|
|
if (edrk.from_can.bits.ACTIVE==0)
|
|
return;
|
|
|
|
// f.RScount = SECOND * 3;
|
|
|
|
// unites_t->
|
|
// StartGED
|
|
|
|
if (edrk.summ_errors)
|
|
{
|
|
flag_wait_revers_go = 1;
|
|
}
|
|
|
|
if (flag_wait_revers_go==1)
|
|
edrk.StartGEDRS = 0;
|
|
if (unites_t->buf[6].bits.bit0 && flag_wait_revers_go)
|
|
edrk.StartGEDRS = 0;
|
|
if (unites_t->buf[6].bits.bit0==0)
|
|
edrk.StartGEDRS = 0;
|
|
if (unites_t->buf[6].bits.bit0==0 && flag_wait_revers_go)
|
|
flag_wait_revers_go = 0;
|
|
if (unites_t->buf[6].bits.bit0==1 && flag_wait_revers_go==0)
|
|
edrk.StartGEDRS = 1;
|
|
|
|
// edrk.StartGEDRS = pcommand->digit_data.Byte01.bit_data.bit0;
|
|
|
|
// end StartGED
|
|
|
|
|
|
edrk.Mode_UFConst = unites_t->buf[6].bits.bit2;
|
|
|
|
|
|
////////////////
|
|
|
|
if (unites_t->buf[6].bits.bit1 && prev_byte01_bit1==0)
|
|
edrk.KvitirRS = 1;
|
|
|
|
prev_byte01_bit1 = unites_t->buf[6].bits.bit1;
|
|
|
|
|
|
// 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 (unites_t->buf[6].bits.bit4 && flag_wait_revers_sbor)
|
|
edrk.from_can.bits.SBOR_SHEMA = 0;
|
|
|
|
if (unites_t->buf[6].bits.bit4==0)
|
|
edrk.from_can.bits.SBOR_SHEMA = 0;
|
|
|
|
if (unites_t->buf[6].bits.bit4==0 && flag_wait_revers_sbor)
|
|
flag_wait_revers_sbor = 0;
|
|
|
|
if (unites_t->buf[6].bits.bit4==1 && flag_wait_revers_sbor==0)
|
|
edrk.from_can.bits.SBOR_SHEMA = unites_t->buf[6].bits.bit4;
|
|
|
|
prev_byte01_bit4 = unites_t->buf[6].bits.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.SelectPump0_1 = unites_t->buf[6].bits.bit6;
|
|
edrk.DirectOUT = unites_t->buf[6].bits.bit7;
|
|
|
|
edrk.DirectNagrevOff = unites_t->buf[6].bits.bit8;
|
|
edrk.DirectBlockKeyOff = unites_t->buf[6].bits.bit9;
|
|
edrk.DirectPumpON = unites_t->buf[6].bits.bit10;
|
|
edrk.DirectZaryadOn = unites_t->buf[6].bits.bit11;
|
|
|
|
#ifdef STENDD
|
|
|
|
// edrk.to_shema.bits.QTV_ON = pcommand->digit_data.Byte02.bit_data.bit3;
|
|
|
|
#endif
|
|
|
|
edrk.Status_Ready.bits.ImitationReady2 = unites_t->buf[6].bits.bit12;
|
|
|
|
edrk.SetSpeed = unites_t->buf[6].bits.bit13;
|
|
|
|
|
|
|
|
// 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.Obmotka1 = unites_t->buf[6].bits.bit15;
|
|
f.Obmotka2 = unites_t->buf[7].bits.bit0;
|
|
|
|
edrk.disable_alg_u_disbalance = unites_t->buf[7].bits.bit1;
|
|
|
|
// 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;
|
|
|
|
|
|
// Data1 = pcommand->analog_data.analog1_hi;
|
|
// Data2 = pcommand->analog_data.analog1_lo;
|
|
// Data = (Data2 + Data1 * 256);
|
|
// if (Data > 32767)
|
|
// Data = Data - 65536;
|
|
DataAnalog1 = unites_t->buf[0].all;
|
|
|
|
// Data1 = pcommand->analog_data.analog2_hi;
|
|
// Data2 = pcommand->analog_data.analog2_lo;
|
|
// Data = (Data2 + Data1 * 256);
|
|
// if (Data > 32767)
|
|
// Data = Data - 65536;
|
|
DataAnalog2 = unites_t->buf[1].all;
|
|
|
|
// Data1 = pcommand->analog_data.analog3_hi;
|
|
// Data2 = pcommand->analog_data.analog3_lo;
|
|
// Data = (Data2 + Data1 * 256);
|
|
// if (Data > 32767)
|
|
// Data = Data - 65536;
|
|
DataAnalog3 = unites_t->buf[2].all;
|
|
|
|
// Data1 = pcommand->analog_data.analog4_hi;
|
|
// Data2 = pcommand->analog_data.analog4_lo;
|
|
// Data = (Data2 + Data1 * 256);
|
|
// if (Data > 32767)
|
|
// Data = Data - 65536;
|
|
DataAnalog4 = unites_t->buf[3].all;
|
|
DataAnalog5 = unites_t->buf[4].all;
|
|
DataAnalog6 = unites_t->buf[5].all;
|
|
|
|
|
|
edrk.W_from_RS = DataAnalog1;
|
|
edrk.I_zad_vozb_add_from_RS = 0;//DataAnalog4;
|
|
|
|
|
|
if (!edrk.SetSpeed)
|
|
{
|
|
if (DataAnalog3<0)
|
|
edrk.ZadanieU_Charge_RS = 0;
|
|
else
|
|
edrk.ZadanieU_Charge_RS = DataAnalog3;
|
|
}
|
|
|
|
if (edrk.SetSpeed)
|
|
{
|
|
edrk.fzad = DataAnalog1/100.0;
|
|
edrk.kzad = DataAnalog2/10000.0;
|
|
edrk.k_u_disbalance = _IQ(DataAnalog4/100.0);
|
|
edrk.kplus_u_disbalance = _IQ(DataAnalog3/1000.0);
|
|
|
|
}
|
|
*/
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
|