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

@@ -33,7 +33,7 @@ bsp_W5500_t W5500 =
{
.Gateway_IP = {192,168,100,1}, /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
.Sub_Mask = {255,255,255,0}, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
.Phy_Addr = {0x0c,0x29,0xab,0x7c,0x00,0x01}, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(MAC)*/
.Phy_Addr = {0x0c,0x29,0xab,0x7c,0x00,0x01}, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(MAC) <20><><EFBFBD>ݵ<EFBFBD>Ƭ<EFBFBD><C6AC>UID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MAC*/
.IP_Addr = {192,168,100,201}, /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
.Interrupt_Process = bsp_W5500_Interrupt_Process,
@@ -49,6 +49,24 @@ bsp_W5500_t W5500 =
.ConfigData.Port = {0x01,0xF6},
.Run_Mode = BSP_W5500_PORT_RUN_MODE_TCP_SERVER,
},
.W5500_Class[1] =
{
.SocketPort = 1, /*ʹ<>ö˿<C3B6>1*/
.ConfigData.Port = {0x01,0xF7},
.Run_Mode = BSP_W5500_PORT_RUN_MODE_TCP_SERVER,
},
.W5500_Class[2] =
{
.SocketPort = 2, /*ʹ<>ö˿<C3B6>2*/
.ConfigData.Port = {0x01,0xF8},
.Run_Mode = BSP_W5500_PORT_RUN_MODE_TCP_SERVER,
},
.W5500_Class[3] =
{
.SocketPort = 3, /*ʹ<>ö˿<C3B6>3*/
.ConfigData.Port = {0x01,0xF9},
.Run_Mode = BSP_W5500_PORT_RUN_MODE_TCP_SERVER,
},
};
bsp_W5500_t *pW5500 = &W5500;
@@ -822,7 +840,7 @@ static void bsp_W5500_Task(void)
if ((pW5500->W5500_Class[i].TR_Data_State & BSP_W5500_PORT_DATA_RECEIVE) == BSP_W5500_PORT_DATA_RECEIVE) // <20><><EFBFBD><EFBFBD>Socket0<74><30><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
{
pW5500->W5500_Class[i].TR_Data_State &= ~BSP_W5500_PORT_DATA_RECEIVE;
u16 Len = Read_SOCK_Data_Buffer(0, pW5500->W5500_Class[i].Rx_Buffer);
u16 Len = Read_SOCK_Data_Buffer(i, pW5500->W5500_Class[i].Rx_Buffer);
// Write_SOCK_Data_Buffer(&pW5500->W5500_Class[i], pW5500->W5500_Class[i].Rx_Buffer, Len);
// printf("RX");
// Debug_UartSend(pW5500->W5500_Class[i].Rx_Buffer, Len);

View File

@@ -215,7 +215,7 @@
#define W5500_INT_PORT W5500_INT_GPIO_Port
typedef u8 SOCKET; // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>˿ں<CBBF><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BSP_W5500_PORT_NUM 1
#define BSP_W5500_PORT_NUM 4
#define BSP_W5500_TX_DATA_LEN 2048
#define BSP_W5500_RX_DATA_LEN 2048

View File

@@ -98,6 +98,7 @@ static void gui_tjc_hmi_read_device_info_from_w25q(void)
static void gui_tjc_hmi_read_network_config_from_w25q(void)
{
u16 i;
network_config_t config;
w25q32.read(W25Q32_NETWORK_CONFIG_ADDR, (uint8_t*)&config, sizeof(config));
@@ -106,8 +107,12 @@ static void gui_tjc_hmi_read_network_config_from_w25q(void)
memcpy(W5500.IP_Addr, config.ip, 4);
memcpy(W5500.Sub_Mask, config.mask, 4);
memcpy(W5500.Gateway_IP, config.gateway, 4);
W5500.W5500_Class[0].ConfigData.Port[0] = (config.port >> 8) & 0xFF;
W5500.W5500_Class[0].ConfigData.Port[1] = config.port & 0xFF;
for(i=0;i<NETWORK_PORT_NUM;i++)
{
W5500.W5500_Class[i].ConfigData.Port[0] = (config.port[i] >> 8) & 0xFF;
W5500.W5500_Class[i].ConfigData.Port[1] = config.port[i] & 0xFF;
}
}
}