更新:
1、频率输入正常(两个校准器,一个输出一个输入,0-100KHz,误差1Hz左右); 2、热电偶和电阻输出功能调试完毕(将DAC7811的MISO断开后,两者能够共同工作); 3、modbus寄存器更新逻辑调整:新增upper_control_flag变量,初始为0,收到“写”命令后置1,寄存器更新后置0;
This commit is contained in:
parent
cd05491dd9
commit
46cc2f2021
|
@ -12,20 +12,6 @@ long ADS1220RTDGainCorrection = 1;
|
|||
long ADS1220TCGainCorrection = 1;
|
||||
BOOL ads1220_spi_init_flag = FALSE;
|
||||
|
||||
|
||||
// void test1()
|
||||
// {
|
||||
// static uint32_t count = 0;
|
||||
// while(1)
|
||||
// {
|
||||
// count = 10000;
|
||||
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_SET);
|
||||
// while(!(count--));
|
||||
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_RESET);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
static void ads1220_cs(cs_state_type state)
|
||||
{
|
||||
if (state == CS_L)
|
||||
|
@ -71,6 +57,7 @@ static void fun_ads1220_spi1_init(void)
|
|||
// {
|
||||
// HAL_SPI_TransmitReceive(&hspi1, pTxData, pRxData, 1, 1000);
|
||||
// }
|
||||
|
||||
HAL_StatusTypeDef ads1220spi_status_watch;
|
||||
static void spi_write_read(uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
|
||||
{
|
||||
|
@ -257,22 +244,13 @@ static void ads1220_start(void)
|
|||
// uint8_t cmd = ADS1220_POWERDOWN_CMD;
|
||||
// spi_write_read(&cmd, RcvData, 1);
|
||||
//}
|
||||
|
||||
uint8_t in_data_1220[3] = {0};
|
||||
int data_1220_raw = 0;
|
||||
long data_1220 = 0;
|
||||
static void ads1220_get_conversion_data(float32 *conversionData)
|
||||
{
|
||||
uint8_t out_data[3] = {0xff, 0xff, 0xff};
|
||||
// uint8_t in_data[3] = {0};
|
||||
// long data = 0;
|
||||
|
||||
// spi_write_read(out_data, in_data, 3);
|
||||
// data = (((long)in_data[0] << 16) + ((long)in_data[1] << 8) + (long)in_data[2]);
|
||||
// if (data & 0x800000)
|
||||
// {
|
||||
// data ^= 0x00FFFFFF;
|
||||
// data += 1;
|
||||
// }
|
||||
|
||||
spi_write_read(out_data, in_data_1220, 3);
|
||||
data_1220_raw = data_1220;
|
||||
|
@ -316,53 +294,66 @@ void ads1220_operation(uint8_t channel, float32 *data_pv)
|
|||
|
||||
ads1220_cs(CS_L);
|
||||
vTaskDelay(10);
|
||||
//HAL_Delay(10);
|
||||
// if (channel == CH2_OUT_CUR)
|
||||
// {
|
||||
// ads1220_reset();
|
||||
// vTaskDelay(5);
|
||||
// setup_ads1220(
|
||||
// ADS1220_MUX_AIN2_AVSS, // 输入多路复用器配置
|
||||
// ADS1220_OP_MODE_NORMAL, // 工作模式选择
|
||||
// ADS1220_CONVERSION_SINGLE_SHOT, // 转换模式
|
||||
// ADS1220_DATA_RATE_45SPS, // 数据速率
|
||||
// ADS1220_GAIN_1, // 增益配置
|
||||
// ADS1220_PGA_BYPASS, // 禁止/启用可编程增益放大器
|
||||
// ADS1220_IDAC1_DISABLED, // 选择IDAC1将路由到的通道
|
||||
// ADS1220_IDAC2_DISABLED, // 选择IDAC2将路由到的通道
|
||||
// ADS1220_IDAC_CURRENT_OFF, // IDAC电流设置
|
||||
// ADS1220_VREF_EXT_REF0_PINS, // 基准电压选择
|
||||
// ADS1220_TEMP_SENSOR_OFF); // 温度传感器
|
||||
// vTaskDelay(5);
|
||||
// ads1220_start();
|
||||
// vTaskDelay(30);
|
||||
// ads1220_get_conversion_data(data_pv);
|
||||
// }
|
||||
// else if (channel == CH10_IN_TC)
|
||||
// {
|
||||
ads1220_reset();
|
||||
//HAL_Delay(5);
|
||||
vTaskDelay(5);
|
||||
setup_ads1220(
|
||||
ADS1220_MUX_AIN0_AIN1, // 输入多路复用器配置
|
||||
ADS1220_OP_MODE_NORMAL, // 工作模式选择
|
||||
ADS1220_CONVERSION_SINGLE_SHOT, // 转换模式*
|
||||
ADS1220_DATA_RATE_45SPS, // 数据速率*
|
||||
ADS1220_GAIN_1, // 增益配置*
|
||||
ADS1220_PGA_BYPASS, // 禁止/启用可编程增益放大器
|
||||
ADS1220_IDAC1_DISABLED, // 选择IDAC1将路由到的通道
|
||||
ADS1220_IDAC2_DISABLED, // 选择IDAC2将路由到的通道
|
||||
ADS1220_IDAC_CURRENT_OFF, // IDAC电流设置
|
||||
ADS1220_VREF_EXT_REF0_PINS, // 基准电压选择*
|
||||
ADS1220_TEMP_SENSOR_OFF); // 温度传感器
|
||||
vTaskDelay(5);
|
||||
//HAL_Delay(5);
|
||||
ads1220_start();
|
||||
//HAL_Delay(30);
|
||||
vTaskDelay(30);
|
||||
ads1220_get_conversion_data(data_pv);
|
||||
// }
|
||||
|
||||
ads1220_reset();
|
||||
//HAL_Delay(5);
|
||||
vTaskDelay(5);
|
||||
|
||||
setup_ads1220(
|
||||
ADS1220_MUX_AIN0_AIN1, // 输入多路复用器配置
|
||||
ADS1220_OP_MODE_NORMAL, // 工作模式选择
|
||||
ADS1220_CONVERSION_SINGLE_SHOT, // 转换模式*
|
||||
ADS1220_DATA_RATE_45SPS, // 数据速率*
|
||||
ADS1220_GAIN_1, // 增益配置*
|
||||
ADS1220_PGA_BYPASS, // 禁止/启用可编程增益放大器
|
||||
ADS1220_IDAC1_DISABLED, // 选择IDAC1将路由到的通道
|
||||
ADS1220_IDAC2_DISABLED, // 选择IDAC2将路由到的通道
|
||||
ADS1220_IDAC_CURRENT_OFF, // IDAC电流设置
|
||||
ADS1220_VREF_EXT_REF0_PINS, // 基准电压选择*
|
||||
ADS1220_TEMP_SENSOR_OFF); // 温度传感器
|
||||
vTaskDelay(5);
|
||||
//HAL_Delay(5);
|
||||
|
||||
ads1220_start();
|
||||
//HAL_Delay(30);
|
||||
vTaskDelay(30);
|
||||
|
||||
ads1220_get_conversion_data(data_pv);
|
||||
|
||||
ads1220_cs(CS_H);
|
||||
vTaskDelay(5);
|
||||
//HAL_Delay(5);
|
||||
}
|
||||
|
||||
// void simulate_SPI_WriteReadByte(uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
|
||||
// {
|
||||
// uint8_t i = 0, j = 0;
|
||||
// uint8_t temp = 0, data = 0;
|
||||
|
||||
// for(j = 0; j < Size; j++)
|
||||
// {
|
||||
// data = pTxData[j];
|
||||
// for(i = 0; i < 8; i++)
|
||||
// {
|
||||
// temp = ((data&0x80) == 0x80)? 1:0;
|
||||
// data = data << 1;
|
||||
// read_data = read_data << 1;
|
||||
|
||||
// SPI_CLK(0);
|
||||
|
||||
// SPI_MOSI(temp);
|
||||
// delay_cnt(10);
|
||||
|
||||
// SPI_CLK(1);
|
||||
// delay_cnt(10);
|
||||
|
||||
// if(SPI_MISO()==1)
|
||||
// {
|
||||
// read_data = read_data + 1;
|
||||
// }
|
||||
|
||||
// SPI_CLK(0);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
|
|
@ -759,26 +759,6 @@ void input_value_show(void)
|
|||
|
||||
void io_on2off_status(void)
|
||||
{
|
||||
switch (tabdata.item3_page0_language)
|
||||
{
|
||||
case MENU_SIMPLYFY_CHINESE:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_IN, "输入:");
|
||||
lv_label_set_text(guider_ui.screen_main_label_OUT, "输出:");
|
||||
}
|
||||
break;
|
||||
|
||||
case MENU_ENGLISH:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_IN, "IN:");
|
||||
lv_label_set_text(guider_ui.screen_main_label_OUT, "OUT:");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (menu_data.io_on2off)
|
||||
{
|
||||
case IO_ON:
|
||||
|
@ -848,6 +828,26 @@ void io_on2off_status(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (tabdata.item3_page0_language)
|
||||
{
|
||||
case MENU_SIMPLYFY_CHINESE:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_IN, "输入:");
|
||||
lv_label_set_text(guider_ui.screen_main_label_OUT, "输出:");
|
||||
}
|
||||
break;
|
||||
|
||||
case MENU_ENGLISH:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_IN, "IN:");
|
||||
lv_label_set_text(guider_ui.screen_main_label_OUT, "OUT:");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void scr_main_recover(void)
|
||||
|
|
|
@ -384,36 +384,36 @@ void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type)
|
|||
// uint16_t uit_test_l = 0, uit_test_h = 0;
|
||||
void sig_sv_update(void)
|
||||
{
|
||||
if(progout_data.process == PROGOUT_WAITING)
|
||||
if( !get_coil_val(COIL_ADDR_HOLD_SV_CTRL) )
|
||||
{
|
||||
//按键修改屏幕上的设定值 -> 将屏幕上的值转化成实际值 -> 实际值再转化成mux输入值
|
||||
switch (menu_data.io_on2off)
|
||||
if(progout_data.process == PROGOUT_WAITING)
|
||||
{
|
||||
case IO_ON:
|
||||
//按键修改屏幕上的设定值 -> 将屏幕上的值转化成实际值 -> 实际值再转化成mux输入值
|
||||
switch (menu_data.io_on2off)
|
||||
{
|
||||
mux_signal.data_sv = real2mux( get_output_value() );
|
||||
}
|
||||
break;
|
||||
case IO_ON:
|
||||
{
|
||||
mux_signal.data_sv = real2mux( get_output_value() );
|
||||
}
|
||||
break;
|
||||
|
||||
case IO_OFF:
|
||||
{
|
||||
mux_signal.data_sv = 0;
|
||||
case IO_OFF:
|
||||
{
|
||||
mux_signal.data_sv = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
program_out_run();
|
||||
set_output( mux2real(mux_signal.data_sv) );
|
||||
}
|
||||
else
|
||||
{
|
||||
program_out_run();
|
||||
set_output( mux2real(mux_signal.data_sv) );
|
||||
}
|
||||
|
||||
//本地控制的情况下,保持寄存器的值跟随设定值变化
|
||||
if(get_coil_val(COIL_ADDR_HOLD_SV_CTRL) == 0)
|
||||
{
|
||||
//本地控制的情况下,保持寄存器的值跟随设定值变化
|
||||
HoldReg[HOLD_ADDR_MUX_SV_H] = ( (uint32_t)mux2real(mux_signal.data_sv) ) >> 16;
|
||||
HoldReg[HOLD_ADDR_MUX_SV_L] = ( (uint32_t)mux2real(mux_signal.data_sv) ) & 0x0000FFFF;
|
||||
}
|
||||
|
|
|
@ -44,8 +44,8 @@ uint8_t ble_init(void)
|
|||
{
|
||||
if(ble_cnt == 0)
|
||||
{
|
||||
char ble_id[9];
|
||||
strcpy (ble_id, "00000001");
|
||||
char ble_id[32];
|
||||
strcpy (ble_id, "GSDT_Signal_Generator_V1.0");
|
||||
|
||||
write_ble_id(ble_id); //修改蓝牙名称
|
||||
ble_cnt++;
|
||||
|
|
|
@ -18,6 +18,7 @@ extern uint32_t tick_end;
|
|||
extern uint32_t trans_log_tx;
|
||||
extern uint8_t sig2slave_step;
|
||||
extern TRANS_PROCESS st_flag;
|
||||
extern uint8_t upper_control_flag;
|
||||
|
||||
void parse_scom_485(st_scom *scom);
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ uint32_t tick_end = 0;
|
|||
//uint32_t trans_log_rx = 0;
|
||||
uint32_t trans_log_tx = 0;
|
||||
TRANS_PROCESS st_flag = TRANSPARENT_WAIT;
|
||||
uint8_t upper_control_flag = 0; //modbus协议处理中,执行写入功能时令 upper_control_flag = 1
|
||||
|
||||
|
||||
void parse_scom_485(st_scom *scom)
|
||||
|
|
|
@ -14,6 +14,8 @@ void modbus_registers_update(void)
|
|||
|
||||
//输入寄存器
|
||||
modbus_reg_update_input();
|
||||
|
||||
upper_control_flag = 0;
|
||||
}
|
||||
|
||||
//线圈寄存器,读写
|
||||
|
@ -83,10 +85,10 @@ uint8_t get_coil_val(uint8_t addr)
|
|||
|
||||
void coil_deal_ON2OFF(void)
|
||||
{
|
||||
if( (get_coil_val(COIL_ADDR_ON_OFF) != menu_data.io_on2off)&&(get_coil_val(COIL_ADDR_ON_OFF) < 2) )
|
||||
if(get_coil_val(COIL_ADDR_ON_OFF) != menu_data.io_on2off)
|
||||
{
|
||||
//进入此处说明线圈寄存器的值被上位机修改
|
||||
if( menu_data.scr_now == SCREEN_MAIN )
|
||||
if( (menu_data.scr_now == SCREEN_MAIN)&&(upper_control_flag) )
|
||||
{
|
||||
//只有在主界面时,修改内容才生效
|
||||
menu_data.io_on2off = get_coil_val(COIL_ADDR_ON_OFF);
|
||||
|
@ -102,31 +104,39 @@ void coil_deal_ON2OFF(void)
|
|||
|
||||
void coil_deal_light(void)
|
||||
{
|
||||
if( (get_coil_val(COIL_ADDR_LIGHT) != tabdata.item3_page0_lightflag)&&(get_coil_val(COIL_ADDR_LIGHT) < 2) )
|
||||
if(get_coil_val(COIL_ADDR_LIGHT) != tabdata.item3_page0_lightflag)
|
||||
{
|
||||
//进入此处说明线圈寄存器的值被上位机修改
|
||||
tabdata.item3_page0_lightflag = get_coil_val(COIL_ADDR_LIGHT);
|
||||
if(tabdata.item3_page0_lightflag)
|
||||
if(upper_control_flag)
|
||||
{
|
||||
LIGHT_ON;
|
||||
tabdata.item3_page0_lightflag = get_coil_val(COIL_ADDR_LIGHT);
|
||||
if(tabdata.item3_page0_lightflag)
|
||||
{
|
||||
LIGHT_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
LIGHT_OFF;
|
||||
}
|
||||
|
||||
//如果当前页面存在该内容,则更新文本
|
||||
if( (menu_data.scr_now == SCREEN_SETTING)&&(tabdata.item_cursor == ITEM_3) ) set_item3_text(LIGHT_STATUS);
|
||||
}
|
||||
else
|
||||
{
|
||||
LIGHT_OFF;
|
||||
set_coil_val(COIL_ADDR_LIGHT, tabdata.item3_page0_lightflag);
|
||||
}
|
||||
|
||||
//如果当前页面存在该内容,则更新文本
|
||||
if( (menu_data.scr_now == SCREEN_SETTING)&&(tabdata.item_cursor == ITEM_3) ) set_item3_text(LIGHT_STATUS);
|
||||
}
|
||||
}
|
||||
|
||||
void coil_deal_save(void)
|
||||
{
|
||||
if( (get_coil_val(COIL_ADDR_CONFIG_SAVE) == 1)&&(tabdata.item3_page0_saveflag == 0) )
|
||||
if( get_coil_val(COIL_ADDR_CONFIG_SAVE) != tabdata.item3_page0_saveflag )
|
||||
{
|
||||
if( (menu_data.scr_now == SCREEN_SETTING)&&(tabdata.item3_page0_resetflag != 1) )
|
||||
if( (upper_control_flag)&&(tabdata.item3_page0_resetflag != 1)&&(tabdata.item3_page0_saveflag == 0)\
|
||||
&&(get_coil_val(COIL_ADDR_CONFIG_SAVE))&&(menu_data.scr_now == SCREEN_SETTING) )
|
||||
{
|
||||
//当前处于设置界面,并且未处于重置过程中,执行保存
|
||||
//上位机控制、未处于复位过程、未保存、需要保存、当前位于设置界面时,才能执行保存
|
||||
tabdata.item3_page0_saveflag = 1;
|
||||
}
|
||||
else
|
||||
|
@ -139,11 +149,12 @@ void coil_deal_save(void)
|
|||
|
||||
void coil_deal_reset(void)
|
||||
{
|
||||
if( (get_coil_val(COIL_ADDR_CONFIG_RESET) == 1)&&(tabdata.item3_page0_resetflag == 0) )
|
||||
if( get_coil_val(COIL_ADDR_CONFIG_RESET) != tabdata.item3_page0_resetflag )
|
||||
{
|
||||
if( (menu_data.scr_now == SCREEN_SETTING)&&(tabdata.item3_page0_saveflag != 1) )
|
||||
if( (upper_control_flag)&&(tabdata.item3_page0_saveflag != 1)&&(tabdata.item3_page0_resetflag == 0)\
|
||||
&&(get_coil_val(COIL_ADDR_CONFIG_RESET))&&(menu_data.scr_now == SCREEN_SETTING) )
|
||||
{
|
||||
//当前处于设置界面,并且未处于保存过程中,执行复位
|
||||
//上位机控制、未处于保存过程、未复位、需要复位、当前位于设置界面时,才能执行复位
|
||||
tabdata.item3_page0_resetflag = 1;
|
||||
}
|
||||
else
|
||||
|
@ -261,7 +272,7 @@ void hold_deal_set_work_mode(void)
|
|||
if( (HoldReg[HOLD_ADDR_SET_WORK_MODE] != work_mode_pv)&&(0 < HoldReg[HOLD_ADDR_SET_WORK_MODE])&&(HoldReg[HOLD_ADDR_SET_WORK_MODE] <= 28) )
|
||||
{
|
||||
//只有在主界面才接受修改
|
||||
if(menu_data.scr_now == SCREEN_MAIN)
|
||||
if( (menu_data.scr_now == SCREEN_MAIN)&&(upper_control_flag) )
|
||||
{
|
||||
SIG_FUNCTIONS iom;
|
||||
SIG_FUNCTIONS_TYPE iomt;
|
||||
|
@ -323,14 +334,16 @@ void hold_deal_set_work_mode(void)
|
|||
|
||||
void hold_deal_muxsv(void)
|
||||
{
|
||||
if( !get_coil_val(COIL_ADDR_HOLD_SV_CTRL) ) return;
|
||||
|
||||
//上位机控制的情况下,设定值跟随保持寄存器的值变化
|
||||
uint32_t hold_temp = (HoldReg[HOLD_ADDR_MUX_SV_H] << 16) + HoldReg[HOLD_ADDR_MUX_SV_L];
|
||||
float32 real_hold = 0;
|
||||
memcpy(&real_hold, &hold_temp, 4);
|
||||
|
||||
if( (real2mux(real_hold) != mux_signal.data_sv)&&get_coil_val(COIL_ADDR_HOLD_SV_CTRL)&&get_coil_val(COIL_ADDR_HOLD_SV_ENSURE) )
|
||||
if( (real2mux(real_hold) != mux_signal.data_sv)&&get_coil_val(COIL_ADDR_HOLD_SV_ENSURE) )
|
||||
{
|
||||
if( (menu_data.scr_now == SCREEN_MAIN)&&(pltdata.yreal_pri_low <= real_hold)&&(real_hold <= pltdata.yreal_pri_up) )
|
||||
if( (upper_control_flag)&&(menu_data.scr_now == SCREEN_MAIN)&&(pltdata.yreal_pri_low <= real_hold)&&(real_hold <= pltdata.yreal_pri_up) )
|
||||
{
|
||||
set_output(real_hold);
|
||||
}
|
||||
|
@ -515,7 +528,7 @@ void hold_deal_range_max(void)
|
|||
if( (!p8up)|(!p8low) ) return;
|
||||
|
||||
uint8_t hold_temp8 = 0x00FF & HoldReg[HOLD_ADDR_PHY_UP];
|
||||
if( (*p8low <= hold_temp8)&&(hold_temp8 <= (uint8_t)rg_max) )
|
||||
if( (*p8low <= hold_temp8)&&(hold_temp8 <= (uint8_t)rg_max)&&(upper_control_flag) )
|
||||
{
|
||||
*p8up = hold_temp8;
|
||||
*p8up_prv = *p8up;
|
||||
|
@ -546,7 +559,7 @@ void hold_deal_range_max(void)
|
|||
int16_t hold_temp16 = 0;
|
||||
|
||||
memcpy(&hold_temp16, HoldReg + HOLD_ADDR_PHY_UP, 2);
|
||||
if( (*p16low <= hold_temp16)&&(hold_temp16 <= rg_max) )
|
||||
if( (*p16low <= hold_temp16)&&(hold_temp16 <= rg_max)&&(upper_control_flag) )
|
||||
{
|
||||
*p16up = hold_temp16;
|
||||
*p16up_prv = *p16up;
|
||||
|
@ -597,7 +610,7 @@ void hold_deal_range_min(void)
|
|||
if( (!p8up)|(!p8low) ) return;
|
||||
|
||||
uint8_t hold_temp8 = 0x00FF & HoldReg[HOLD_ADDR_PHY_LOW];
|
||||
if( ((uint8_t)rg_min <= hold_temp8)&&(hold_temp8 <= *p8up) )
|
||||
if( ((uint8_t)rg_min <= hold_temp8)&&(hold_temp8 <= *p8up)&&(upper_control_flag) )
|
||||
{
|
||||
*p8low = hold_temp8;
|
||||
if(menu_data.scr_now == SCREEN_MAIN)
|
||||
|
@ -626,7 +639,7 @@ void hold_deal_range_min(void)
|
|||
int16_t hold_temp16 = 0;
|
||||
|
||||
memcpy(&hold_temp16, HoldReg + HOLD_ADDR_PHY_LOW, 2);
|
||||
if( (rg_min <= hold_temp16)&&(hold_temp16 <= *p16up) )
|
||||
if( (rg_min <= hold_temp16)&&(hold_temp16 <= *p16up)&&(upper_control_flag) )
|
||||
{
|
||||
*p16low = hold_temp16;
|
||||
|
||||
|
@ -658,7 +671,7 @@ void hold_deal_sample_interval(void)
|
|||
|
||||
if( HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] != tabdata.item1_page0_sample_interval )
|
||||
{
|
||||
if( (MENU_TASK_PERIOD <= HoldReg[HOLD_ADDR_SAMPLE_INTERVAL])&&(HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] <= SAMPLE_INTERVAL_MAX) )
|
||||
if( (MENU_TASK_PERIOD <= HoldReg[HOLD_ADDR_SAMPLE_INTERVAL])&&(HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] <= SAMPLE_INTERVAL_MAX)&&(upper_control_flag) )
|
||||
{
|
||||
tabdata.item1_page0_sample_interval = HoldReg[HOLD_ADDR_SAMPLE_INTERVAL];
|
||||
|
||||
|
@ -679,7 +692,7 @@ void hold_deal_plot_counts(void)
|
|||
|
||||
if( HoldReg[HOLD_ADDR_PLOT_COUNTS] != (0x00FF & tabdata.item1_page0_plot_num) )
|
||||
{
|
||||
if( (PLOT_NUM_MIN <= HoldReg[HOLD_ADDR_PLOT_COUNTS])&&(HoldReg[HOLD_ADDR_PLOT_COUNTS] <= PLOT_NUM_MAX) )
|
||||
if( (PLOT_NUM_MIN <= HoldReg[HOLD_ADDR_PLOT_COUNTS])&&(HoldReg[HOLD_ADDR_PLOT_COUNTS] <= PLOT_NUM_MAX)&&(upper_control_flag) )
|
||||
{
|
||||
tabdata.item1_page0_plot_num = 0x00FF & HoldReg[HOLD_ADDR_PLOT_COUNTS];
|
||||
|
||||
|
@ -710,7 +723,7 @@ void hold_deal_color_input(void)
|
|||
|
||||
if( HoldReg[HOLD_ADDR_INPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_input) )
|
||||
{
|
||||
if( HoldReg[HOLD_ADDR_INPUT_COLOR] <= 5 )
|
||||
if( (HoldReg[HOLD_ADDR_INPUT_COLOR] <= 5)&&(upper_control_flag) )
|
||||
{
|
||||
tabdata.item1_page0_color_input = (COLORS)HoldReg[HOLD_ADDR_INPUT_COLOR];
|
||||
|
||||
|
@ -738,7 +751,7 @@ void hold_deal_color_output(void)
|
|||
|
||||
if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_output) )
|
||||
{
|
||||
if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] <= 5 )
|
||||
if( (HoldReg[HOLD_ADDR_OUTPUT_COLOR] <= 5)&&(upper_control_flag) )
|
||||
{
|
||||
tabdata.item1_page0_color_output = (COLORS)HoldReg[HOLD_ADDR_OUTPUT_COLOR];
|
||||
|
||||
|
@ -766,7 +779,7 @@ void hold_deal_language_select(void)
|
|||
|
||||
if( HoldReg[HOLD_ADDR_LANGUAGE] != (0x00FF & (uint8_t)tabdata.item3_page0_language) )
|
||||
{
|
||||
if( HoldReg[HOLD_ADDR_LANGUAGE] <= 1 )
|
||||
if( (HoldReg[HOLD_ADDR_LANGUAGE] <= 1)&&(upper_control_flag) )
|
||||
{
|
||||
tabdata.item3_page0_language = (LANGUAGES)HoldReg[HOLD_ADDR_LANGUAGE];
|
||||
|
||||
|
|
|
@ -46,22 +46,26 @@ void modbus_analysis_rtu(uint8_t * upRxdbuf, uint16_t wRxdLen)
|
|||
|
||||
case WriteSingleReg:
|
||||
writesinglereg_rtu(upRxdbuf + 2, wRxdLen - 2); // 写单个寄存器
|
||||
upper_control_flag = 1;
|
||||
break;
|
||||
|
||||
case WriteMultiCoil:
|
||||
writemulticoil_rtu(upRxdbuf + 2, wRxdLen - 2); // 写多个线圈
|
||||
upper_control_flag = 1;
|
||||
break;
|
||||
|
||||
case WriteMultiReg:
|
||||
writemultireg_rtu(upRxdbuf + 2, wRxdLen - 2); // 写多个寄存器
|
||||
upper_control_flag = 1;
|
||||
break;
|
||||
|
||||
case WriteSingleCoil:
|
||||
writesinglecoil_rtu(upRxdbuf + 2, wRxdLen - 2); // 写单个线圈
|
||||
upper_control_flag = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
modbus_errfunction_rtu(upRxdbuf[1], 0x01); // 错误码处理
|
||||
modbus_errfunction_rtu(upRxdbuf[1], 0x01); // 错误码处理
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -332,7 +332,7 @@ void start_rs485(void const * argument)
|
|||
}
|
||||
|
||||
//更新modbus的寄存器值
|
||||
//开机动画结束后再执行
|
||||
//开机动画结束后再执行,否则会与数据初始化中的EEPROM读取产生冲突
|
||||
if(menu_data.scr_init_flag == 1)
|
||||
{
|
||||
modbus_registers_update();
|
||||
|
|
|
@ -270,21 +270,6 @@
|
|||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cali_paras</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>23</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>in_data_1220</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>24</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>data_1220_raw</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>25</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>data_1220</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<WatchWindow2>
|
||||
<Ww>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue