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

This commit is contained in:
2025-10-23 15:21:59 +03:00
parent a9c42feb81
commit 3f5e355783
10 changed files with 775 additions and 776 deletions
+9 -10
View File
@@ -56,9 +56,9 @@ void setup_adc()
if(Desk==dsk_COMM)
{
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0001; // Setup 2 conv's on SEQ1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // ñíà÷àëà òîæå áóäóò òåìïåðàòóðû
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // ������� ���� ����� �����������
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x4; // 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.ADCCHSELSEQ2.bit.CONV04 = 0x3; // Setup ADCINA2 as 2nd SEQ1 conv.
@@ -163,7 +163,7 @@ interrupt void adc_isr(void)
if(TermoAD)
{
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; // ������ ��� 300 � 400 ��������
}
select_tpl_canal(code_tpl_canal);
}
@@ -181,12 +181,11 @@ interrupt void adc_isr(void)
if(ok|!prev_ok[n])
{
if(WAKE) ADC_table[n] = Temper;
else
{
Filter = filterbat(&adc_filter[n],Temper);
ADC_table[n] = Filter;
} } }
Filter = filterbat(&adc_filter[n],Temper);
if(WAKE)ADC_table[n] = Temper;
else ADC_table[n] = Filter;
} }
if(++cownt_one_canal>=COUNT_ONE_CANAL)
{ cownt_one_canal=0;
@@ -214,7 +213,7 @@ modbus[0x2F]=Log.Adres;
{
cownt_cans = 0;
Test_mem_limit(TermoSW*(TPL_CANS+2));
Test_mem_limit(2*TermoSW*(TPL_CANS+1));
if(cWriteLog)no_write=1;
} }
+13 -15
View File
@@ -112,27 +112,25 @@
#define CanCycle (modbus+0x78) // ñ÷åò÷èê ïðîõîæäåíèé öèêëîâ CAN
#define CanRound (modbus+0x7A) // ñ÷åò÷èê îòîñëàííûõ ìàññèâîâ
#define komanda modbus[124]
#define Protokol modbus[125]
#define LastMode modbus[126]
#define Commands modbus[127]
#define comand modbus[128]
#define bit_comand Modbus[128]
#define bit_kom Modbus[124]
#define cTestLamp bit_comand.bit.bit0
#define cDefParam bit_comand.bit.bit1
#define cSaveParam bit_comand.bit.bit2
#define cLoadParam bit_comand.bit.bit3
#define cTermoCal bit_comand.bit.bit4
#define cKoefCalc bit_comand.bit.bit5
#define cSecretBt bit_comand.bit.bit6
#define cCanReset bit_comand.bit.bit7
#define cRawMeat bit_comand.bit.bit8
#define cLiteFire bit_comand.bit.bit9
#define cHighVolt bit_comand.bit.bitA
#define cTestLamp bit_kom.bit.bit0
#define cDefParam bit_kom.bit.bit1
#define cSaveParam bit_kom.bit.bit2
#define cLoadParam bit_kom.bit.bit3
#define cTermoCal bit_kom.bit.bit4
#define cKoefCalc bit_kom.bit.bit5
#define cSecretBt bit_kom.bit.bit6
#define cCanReset bit_kom.bit.bit7
#define cRawMeat bit_kom.bit.bit8
#define cWriteLog bit_comand.bit.bitE
#define cReset bit_comand.bit.bitF
#define cWriteLog bit_kom.bit.bitE
#define cReset bit_kom.bit.bitF
#endif //PACKAGE
+5 -4
View File
@@ -115,6 +115,7 @@ void main()
LastMode = Mode;
Protokol = PROTOKOL;
precom = Commands;
for(i=0;i<0x80;i++)
county[i]=1;
@@ -124,8 +125,6 @@ void main()
CanRound[i]=
CanCycle[i]=0;
comand=0;
EALLOW;
SysCtrlRegs.WDCR= 0x2F;
EDIS;
@@ -249,13 +248,14 @@ void main()
get_Buttons();
if(Commands!=precom)
comand = Commands & (~precom|comand);
komanda = Commands & (~precom|komanda);
precom = Commands;
if(cDefParam)
{
cDefParam=0;
Default_params();
Commands=precom;
}
if(cSaveParam)
@@ -268,6 +268,7 @@ void main()
{
cLoadParam=0;
Load_params();
Commands=precom;
}
if(cKoefCalc)
+3 -2
View File
@@ -242,7 +242,7 @@ void Init_packMask()
Maska[m_FAST][7]|= 0x0100; // Ñ÷åò÷èê ïîñûëîê
Maska[m_SLOW][7]|= 0x0E00; // Ñ÷åò÷èê ïîñûëîê
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)
@@ -316,7 +316,8 @@ void Temper_count(int chan)
}
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];
kun = chan - cal_addr;
+31 -33
View File
@@ -43,37 +43,37 @@ void Default_params()
for(i=0;i<7;i++)
Bright[i] = bright[Mode-adr_PLT1][i];
Cancount[m_FAST] = 2; // * 10msec, пауза между посылками CAN
Cancount[m_SLOW] = 100; // * 10msec, пауза между посылками CAN
Cancount[m_FAST] = 2; // * 10msec, ����� ����� ��������� CAN
Cancount[m_SLOW] = 100; // * 10msec, ����� ����� ��������� CAN
CanWait[m_FAST] = 1; // * 10msec, пауза после цикла
CanWait[m_SLOW] = 1; // * 10msec, пауза после цикла
CanWait[m_FAST] = 1; // * 10msec, ����� ����� �����
CanWait[m_SLOW] = 1; // * 10msec, ����� ����� �����
CanRestart[m_FAST] = 500; // * 10msec, перезапуск посылки
CanRestart[m_SLOW] = 1000; // * 10msec, перезапуск посылки
CanRestart[m_FAST] = 500; // * 10msec, ���������� �������
CanRestart[m_SLOW] = 1000; // * 10msec, ���������� �������
CanRptVez = 5; // кол-во повторений посылки «keys»
CanRptLen = 1; // длина повтораемой посылки «keys»
CanRptVez = 5; // ���-�� ���������� ������� �keys�
CanRptLen = 1; // ����� ����������� ������� �keys�
}
else
{
Cancount[m_FAST] = 20; // * 10msec, пауза между посылками CAN
Cancount[m_SLOW] = 100; // * 10msec, пауза между посылками CAN
Cancount[m_FAST] = 20; // * 10msec, ����� ����� ��������� CAN
Cancount[m_SLOW] = 100; // * 10msec, ����� ����� ��������� CAN
CanWait[m_FAST] = 1; // * 10msec, пауза после цикла
CanWait[m_SLOW] = 1; // * 10msec, пауза после цикла
CanWait[m_FAST] = 1; // * 10msec, ����� ����� �����
CanWait[m_SLOW] = 1; // * 10msec, ����� ����� �����
CanRestart[m_FAST] = 500; // * 10msec, перезапуск посылки
CanRestart[m_SLOW] = 1000; // * 10msec, перезапуск посылки
CanRestart[m_FAST] = 500; // * 10msec, ���������� �������
CanRestart[m_SLOW] = 1000; // * 10msec, ���������� �������
CanRptVez = 1; // кол-во повторений посылки «keys»
CanRptLen = 1; // длина повтораемой посылки «keys»
CanRptVez = 1; // ���-�� ���������� ������� �keys�
CanRptLen = 1; // ����� ����������� ������� �keys�
}
if(Mode == adr_PLT1)
{
RSleng = 9; // длина посылки RS485
RScount = 25; // * 10msec, пауза между посылками RS485
RSleng = 9; // ����� ������� RS485
RScount = 25; // * 10msec, ����� ����� ��������� RS485
}
if(Desk == dsk_COMM)
@@ -141,15 +141,14 @@ void Load_params()
Save_params();
if(TermoSW)
{
cTermoCal = 1;
Caliber_time = 25L * ADC_FREQ;
cTermoCal = 1;
} } }
void Save_params()
{
unsigned int i,dif=0;
for(i=0;i<ANSWER_LEN;i++)
if(param[i] != (unsigned int)modbus[i])
{
@@ -160,13 +159,12 @@ void Save_params()
{
param[ANSWER_LEN] = get_crc16(param,ANSWER_LEN);
Seeprom_write(0x3FFF-(ANSWER_LEN+1),param,(ANSWER_LEN+1)*2);
}
}
} }
/***************************************************************/
/***************************************************************/
/* Передача данных по протоколу ModBus - команда 3
Чтение ачеек данных */
/* �������� ������ �� ��������� ModBus - ������� 3
������ ����� ������ */
/***************************************************************/
/***************************************************************/
@@ -174,15 +172,15 @@ void ReceiveCommandModbus3(RS_DATA *rs_arr)
{
unsigned int crc, Address_MB, Length_MB, cal, i;
// получили начальный адрес чтениа
// �������� ��������� ����� ������
Address_MB =/*(rs_arr->RS_Header[2] << 8) |*/ rs_arr->RS_Header[3];
// получили количество слов данных
// �������� ���������� ���� ������
Length_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
/////////////////////////////////////////////////
// Отсылка
/* Посчитали контрольную сумму перед самой посылкой */
// �������
/* ��������� ����������� ����� ����� ����� �������� */
rs_arr->buffer[0] = CNTRL_ADDR;
rs_arr->buffer[1] = CMD_MODBUS_3;
@@ -232,17 +230,17 @@ void ReceiveCommandModbus6(RS_DATA *rs_arr)
unsigned int Address_MB, Data_MB, i;
/////////////////////////////////////////////////
// Отсылка
/* Отправлаем назад то же самое */
// �������
/* ���������� ����� �� �� ����� */
for (i=0;i<8;i++)
rs_arr->buffer[i] = rs_arr->RS_Header[i];
// получили начальный адрес записи
// �������� ��������� ����� ������
Address_MB = (/*(rs_arr->RS_Header[2] << 8) | */rs_arr->RS_Header[3]);
// получили слово данных
// �������� ����� ������
Data_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
modbus[Address_MB] = Data_MB;