update:main V0.005.0、hmi V1.4

main
1、MODBUS_TCP增加3个port口,总计4个port口供主机读取数据;
2、修复历史报警记录靠前条数不是最新的报警信息BUG;
3、修复MODBUS_TCP写寄存器时解析数据的异常BUG;

hmi
1、MODBUS_TCP设置界面增加3个port口,总计4个port口进行设置;
This commit is contained in:
2026-06-05 17:48:48 +08:00
parent 786b29bb85
commit 118727b491
15 changed files with 3980 additions and 5461 deletions

View File

@@ -48,7 +48,12 @@ static void proto_modbus_communication_data_send(u8 *p_data, u16 len)
static void proto_modbus_init(void)
{
W5500.W5500_Class[0].Rx_DataAnalysis = proto_modbus_communication_data_analysis;
u16 i;
for(i=0;i<BSP_W5500_PORT_NUM;i++)
{
W5500.W5500_Class[i].Rx_DataAnalysis = proto_modbus_communication_data_analysis;
}
}
static void proto_modbus_task(void)
{
@@ -134,8 +139,8 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
case 0x06:
{
modbus_analysis_data.write_data_addr[0] = pData[10];
modbus_analysis_data.write_data_addr[1] = pData[11];
modbus_analysis_data.write_data_addr = &pData[send_buff_index_offset + 4];
TempAddr = modbus_analysis_data.start_addr;
TempData = (modbus_analysis_data.write_data_addr[0] << 8) | modbus_analysis_data.write_data_addr[1];
error_code = proto_modbus_data_write(TempAddr, TempData);
@@ -155,11 +160,8 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
case 0x10:
{
u8 byte_count = pData[12]; // <20>ֽ<EFBFBD><D6BD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD> write_data_addr
for (u8 i = 0; i < byte_count; i++) {
modbus_analysis_data.write_data_addr[i] = pData[13 + i];
}
modbus_analysis_data.write_data_addr = &pData[send_buff_index_offset + 7];
TempAddr = modbus_analysis_data.start_addr;
for (inx = 0; inx < modbus_analysis_data.reg_number; inx++)
{
@@ -173,12 +175,12 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
}
}
send_struct.len = send_buff_index_offset + 6;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 0] = modbus_analysis_data.id;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 1] = modbus_analysis_data.func;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 2] = modbus_analysis_data.start_addr >> 8;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 3] = modbus_analysis_data.start_addr & 0xff;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 4] = modbus_analysis_data.reg_number >> 8;
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 5] = modbus_analysis_data.reg_number & 0xff;
send_struct.send_buffer[send_buff_index_offset + 0] = modbus_analysis_data.id;
send_struct.send_buffer[send_buff_index_offset + 1] = modbus_analysis_data.func;
send_struct.send_buffer[send_buff_index_offset + 2] = modbus_analysis_data.start_addr >> 8;
send_struct.send_buffer[send_buff_index_offset + 3] = modbus_analysis_data.start_addr & 0xff;
send_struct.send_buffer[send_buff_index_offset + 4] = modbus_analysis_data.reg_number >> 8;
send_struct.send_buffer[send_buff_index_offset + 5] = modbus_analysis_data.reg_number & 0xff;
}
break;
default: