Исправлена автокалибровка

This commit is contained in:
Dimas 2025-10-23 15:21:59 +03:00
parent a9c42feb81
commit 3f5e355783
10 changed files with 775 additions and 776 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ PHYSICAL MEMORY PARAMETERS
BOOT LOADER PARAMETERS BOOT LOADER PARAMETERS
Table Type: SERIAL PORT (SCI 8 bit Mode) Table Type: SERIAL PORT (SCI 8 bit Mode)
Entry Point: 0x0000b576 Entry Point: 0x0000b589
OUTPUT TRANSLATION MAP OUTPUT TRANSLATION MAP
@ -21,9 +21,9 @@ OUTPUT TRANSLATION MAP
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
OUTPUT FILES: D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.bin [b0..b7] OUTPUT FILES: D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.bin [b0..b7]
CONTENTS: 00000000..00007481 BOOT TABLE CONTENTS: 00000000..000074a7 BOOT TABLE
.cinit : dest=0000b6cb size=000001f7 width=00000002 .cinit : dest=0000b6de size=000001f7 width=00000002
.text : dest=00008000 size=000036cb width=00000002 .text : dest=00008000 size=000036de width=00000002
ramfuncs : dest=0000c13c size=0000002b width=00000002 ramfuncs : dest=0000c13c size=0000002b width=00000002
.econst : dest=0000c000 size=00000111 width=00000002 .econst : dest=0000c000 size=00000111 width=00000002
.switch : dest=0000c168 size=00000028 width=00000002 .switch : dest=0000c168 size=00000028 width=00000002

Binary file not shown.

Binary file not shown.

View File

@ -56,9 +56,9 @@ void setup_adc()
if(Desk==dsk_COMM) if(Desk==dsk_COMM)
{ {
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0001; // Setup 2 conv's on SEQ1 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0001; // Setup 2 conv's on SEQ1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // ñíà÷àëà òîæå áóäóò òåìïåðàòóðû AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x4; // Setup ADCINA2 as 2nd SEQ1 conv. AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x4; // Setup ADCINA2 as 2nd SEQ1 conv.
/* À íàïðàæåíèé íàì òóò è íå íàäî /* <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD>
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x7; // Setup ADCINA2 as 2nd SEQ1 conv. AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x7; // Setup ADCINA2 as 2nd SEQ1 conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv. AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x3; // Setup ADCINA2 as 2nd SEQ1 conv. AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x3; // Setup ADCINA2 as 2nd SEQ1 conv.
@ -163,7 +163,7 @@ interrupt void adc_isr(void)
if(TermoAD) if(TermoAD)
{ {
if(cownt_cans == TPL_CANS ) code_tpl_canal = TERMOPAIR-1; if(cownt_cans == TPL_CANS ) code_tpl_canal = TERMOPAIR-1;
if(cownt_cans == TPL_CANS+1) code_tpl_canal = TERMOPAIR-2; // ïîòîìó ÷òî 300 è 400 íàîáîðîò if(cownt_cans == TPL_CANS+1) code_tpl_canal = TERMOPAIR-2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 300 <20> 400 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} }
select_tpl_canal(code_tpl_canal); select_tpl_canal(code_tpl_canal);
} }
@ -181,12 +181,11 @@ interrupt void adc_isr(void)
if(ok|!prev_ok[n]) if(ok|!prev_ok[n])
{ {
if(WAKE) ADC_table[n] = Temper; Filter = filterbat(&adc_filter[n],Temper);
else
{ if(WAKE)ADC_table[n] = Temper;
Filter = filterbat(&adc_filter[n],Temper); else ADC_table[n] = Filter;
ADC_table[n] = Filter; } }
} } }
if(++cownt_one_canal>=COUNT_ONE_CANAL) if(++cownt_one_canal>=COUNT_ONE_CANAL)
{ cownt_one_canal=0; { cownt_one_canal=0;
@ -214,7 +213,7 @@ modbus[0x2F]=Log.Adres;
{ {
cownt_cans = 0; cownt_cans = 0;
Test_mem_limit(TermoSW*(TPL_CANS+2)); Test_mem_limit(2*TermoSW*(TPL_CANS+1));
if(cWriteLog)no_write=1; if(cWriteLog)no_write=1;
} } } }

View File

@ -112,27 +112,25 @@
#define CanCycle (modbus+0x78) // ñ÷åò÷èê ïðîõîæäåíèé öèêëîâ CAN #define CanCycle (modbus+0x78) // ñ÷åò÷èê ïðîõîæäåíèé öèêëîâ CAN
#define CanRound (modbus+0x7A) // ñ÷åò÷èê îòîñëàííûõ ìàññèâîâ #define CanRound (modbus+0x7A) // ñ÷åò÷èê îòîñëàííûõ ìàññèâîâ
#define komanda modbus[124]
#define Protokol modbus[125] #define Protokol modbus[125]
#define LastMode modbus[126] #define LastMode modbus[126]
#define Commands modbus[127] #define Commands modbus[127]
#define comand modbus[128] #define bit_kom Modbus[124]
#define bit_comand Modbus[128]
#define cTestLamp bit_comand.bit.bit0 #define cTestLamp bit_kom.bit.bit0
#define cDefParam bit_comand.bit.bit1 #define cDefParam bit_kom.bit.bit1
#define cSaveParam bit_comand.bit.bit2 #define cSaveParam bit_kom.bit.bit2
#define cLoadParam bit_comand.bit.bit3 #define cLoadParam bit_kom.bit.bit3
#define cTermoCal bit_comand.bit.bit4 #define cTermoCal bit_kom.bit.bit4
#define cKoefCalc bit_comand.bit.bit5 #define cKoefCalc bit_kom.bit.bit5
#define cSecretBt bit_comand.bit.bit6 #define cSecretBt bit_kom.bit.bit6
#define cCanReset bit_comand.bit.bit7 #define cCanReset bit_kom.bit.bit7
#define cRawMeat bit_comand.bit.bit8 #define cRawMeat bit_kom.bit.bit8
#define cLiteFire bit_comand.bit.bit9
#define cHighVolt bit_comand.bit.bitA
#define cWriteLog bit_comand.bit.bitE #define cWriteLog bit_kom.bit.bitE
#define cReset bit_comand.bit.bitF #define cReset bit_kom.bit.bitF
#endif //PACKAGE #endif //PACKAGE

View File

@ -115,6 +115,7 @@ void main()
LastMode = Mode; LastMode = Mode;
Protokol = PROTOKOL; Protokol = PROTOKOL;
precom = Commands;
for(i=0;i<0x80;i++) for(i=0;i<0x80;i++)
county[i]=1; county[i]=1;
@ -124,8 +125,6 @@ void main()
CanRound[i]= CanRound[i]=
CanCycle[i]=0; CanCycle[i]=0;
comand=0;
EALLOW; EALLOW;
SysCtrlRegs.WDCR= 0x2F; SysCtrlRegs.WDCR= 0x2F;
EDIS; EDIS;
@ -249,13 +248,14 @@ void main()
get_Buttons(); get_Buttons();
if(Commands!=precom) if(Commands!=precom)
comand = Commands & (~precom|comand); komanda = Commands & (~precom|komanda);
precom = Commands; precom = Commands;
if(cDefParam) if(cDefParam)
{ {
cDefParam=0; cDefParam=0;
Default_params(); Default_params();
Commands=precom;
} }
if(cSaveParam) if(cSaveParam)
@ -268,6 +268,7 @@ void main()
{ {
cLoadParam=0; cLoadParam=0;
Load_params(); Load_params();
Commands=precom;
} }
if(cKoefCalc) if(cKoefCalc)

View File

@ -242,7 +242,7 @@ void Init_packMask()
Maska[m_FAST][7]|= 0x0100; // Ñ÷åò÷èê ïîñûëîê Maska[m_FAST][7]|= 0x0100; // Ñ÷åò÷èê ïîñûëîê
Maska[m_SLOW][7]|= 0x0E00; // Ñ÷åò÷èê ïîñûëîê Maska[m_SLOW][7]|= 0x0E00; // Ñ÷åò÷èê ïîñûëîê
Maska[m_SLOW][7]|= 0x6000; // Ïðîòîêîë, àäðåñ Maska[m_SLOW][7]|= 0x6000; // Ïðîòîêîë, àäðåñ
Maska[m_FAST][7]|= 0x8000; // Êîìàíäû Maska[m_FAST][7]|= 0x9000; // Êîìàíäû
} }
int er_anal(int term, long * count, int edge, int pre) int er_anal(int term, long * count, int edge, int pre)
@ -316,7 +316,8 @@ void Temper_count(int chan)
} }
if(WAKE)out_filter[chan] = Numb; if(WAKE)out_filter[chan] = Numb;
else out_filter[chan]+=(Numb-out_filter[chan])/MesPerSec; out_filter[chan]+=(Numb-out_filter[chan])/MesPerSec;
Numb = out_filter[chan]; Numb = out_filter[chan];
kun = chan - cal_addr; kun = chan - cal_addr;

View File

@ -43,37 +43,37 @@ void Default_params()
for(i=0;i<7;i++) for(i=0;i<7;i++)
Bright[i] = bright[Mode-adr_PLT1][i]; Bright[i] = bright[Mode-adr_PLT1][i];
Cancount[m_FAST] = 2; // * 10msec, пауза между посылками CAN Cancount[m_FAST] = 2; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN
Cancount[m_SLOW] = 100; // * 10msec, пауза между посылками CAN Cancount[m_SLOW] = 100; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN
CanWait[m_FAST] = 1; // * 10msec, пауза после цикла CanWait[m_FAST] = 1; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CanWait[m_SLOW] = 1; // * 10msec, пауза после цикла CanWait[m_SLOW] = 1; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CanRestart[m_FAST] = 500; // * 10msec, перезапуск посылки CanRestart[m_FAST] = 500; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CanRestart[m_SLOW] = 1000; // * 10msec, перезапуск посылки CanRestart[m_SLOW] = 1000; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CanRptVez = 5; // кол-во повторений посылки «keys» CanRptVez = 5; // <EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>keys<79>
CanRptLen = 1; // длина повтораемой посылки «keys» CanRptLen = 1; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>keys<79>
} }
else else
{ {
Cancount[m_FAST] = 20; // * 10msec, пауза между посылками CAN Cancount[m_FAST] = 20; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN
Cancount[m_SLOW] = 100; // * 10msec, пауза между посылками CAN Cancount[m_SLOW] = 100; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN
CanWait[m_FAST] = 1; // * 10msec, пауза после цикла CanWait[m_FAST] = 1; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CanWait[m_SLOW] = 1; // * 10msec, пауза после цикла CanWait[m_SLOW] = 1; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CanRestart[m_FAST] = 500; // * 10msec, перезапуск посылки CanRestart[m_FAST] = 500; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CanRestart[m_SLOW] = 1000; // * 10msec, перезапуск посылки CanRestart[m_SLOW] = 1000; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CanRptVez = 1; // кол-во повторений посылки «keys» CanRptVez = 1; // <EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>keys<79>
CanRptLen = 1; // длина повтораемой посылки «keys» CanRptLen = 1; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>keys<79>
} }
if(Mode == adr_PLT1) if(Mode == adr_PLT1)
{ {
RSleng = 9; // длина посылки RS485 RSleng = 9; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS485
RScount = 25; // * 10msec, пауза между посылками RS485 RScount = 25; // * 10msec, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS485
} }
if(Desk == dsk_COMM) if(Desk == dsk_COMM)
@ -141,11 +141,10 @@ void Load_params()
Save_params(); Save_params();
if(TermoSW) if(TermoSW)
{ {
cTermoCal = 1;
Caliber_time = 25L * ADC_FREQ; Caliber_time = 25L * ADC_FREQ;
cTermoCal = 1;
} } } } } }
void Save_params() void Save_params()
{ {
unsigned int i,dif=0; unsigned int i,dif=0;
@ -160,13 +159,12 @@ void Save_params()
{ {
param[ANSWER_LEN] = get_crc16(param,ANSWER_LEN); param[ANSWER_LEN] = get_crc16(param,ANSWER_LEN);
Seeprom_write(0x3FFF-(ANSWER_LEN+1),param,(ANSWER_LEN+1)*2); Seeprom_write(0x3FFF-(ANSWER_LEN+1),param,(ANSWER_LEN+1)*2);
} } }
}
/***************************************************************/ /***************************************************************/
/***************************************************************/ /***************************************************************/
/* Передача данных по протоколу ModBus - команда 3 /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ModBus - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3
Чтение ачеек данных */ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/***************************************************************/ /***************************************************************/
/***************************************************************/ /***************************************************************/
@ -174,15 +172,15 @@ void ReceiveCommandModbus3(RS_DATA *rs_arr)
{ {
unsigned int crc, Address_MB, Length_MB, cal, i; unsigned int crc, Address_MB, Length_MB, cal, i;
// получили начальный адрес чтениа // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Address_MB =/*(rs_arr->RS_Header[2] << 8) |*/ rs_arr->RS_Header[3]; Address_MB =/*(rs_arr->RS_Header[2] << 8) |*/ rs_arr->RS_Header[3];
// получили количество слов данных // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Length_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5]; Length_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
///////////////////////////////////////////////// /////////////////////////////////////////////////
// Отсылка // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* Посчитали контрольную сумму перед самой посылкой */ /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
rs_arr->buffer[0] = CNTRL_ADDR; rs_arr->buffer[0] = CNTRL_ADDR;
rs_arr->buffer[1] = CMD_MODBUS_3; rs_arr->buffer[1] = CMD_MODBUS_3;
@ -232,17 +230,17 @@ void ReceiveCommandModbus6(RS_DATA *rs_arr)
unsigned int Address_MB, Data_MB, i; unsigned int Address_MB, Data_MB, i;
///////////////////////////////////////////////// /////////////////////////////////////////////////
// Отсылка // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* Отправлаем назад то же самое */ /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
for (i=0;i<8;i++) for (i=0;i<8;i++)
rs_arr->buffer[i] = rs_arr->RS_Header[i]; rs_arr->buffer[i] = rs_arr->RS_Header[i];
// получили начальный адрес записи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Address_MB = (/*(rs_arr->RS_Header[2] << 8) | */rs_arr->RS_Header[3]); Address_MB = (/*(rs_arr->RS_Header[2] << 8) | */rs_arr->RS_Header[3]);
// получили слово данных // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Data_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5]; Data_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
modbus[Address_MB] = Data_MB; modbus[Address_MB] = Data_MB;