/** ****************************************************************************** * @file modbus_tcp_client.h * @brief Modbus TCP 客户端模块头文件 (基于 W5500) ****************************************************************************** */ #ifndef __MODBUS_TCP_CLIENT_H #define __MODBUS_TCP_CLIENT_H #include #include #include "main.h" /* Modbus TCP 配置 */ #if TEST_A701 #define MODBUS_SERVER_IP {192, 168, 6, 4} /* A701 测试服务器 */ #else #define MODBUS_SERVER_IP {192, 168, 0, 1} /* 现场生产服务器 */ #endif #define MODBUS_SERVER_PORT 502 #define MODBUS_UNIT_ID 1 #define MODBUS_POLL_INTERVAL 2000 /* 轮询间隔 (ms) */ /* 寄存器定义 */ #define TARGET_REG_ADDR 30 /* 逻辑 40031 */ /* 客户端状态枚举 */ typedef enum { MODBUS_STATE_IDLE, MODBUS_STATE_CONNECTING, MODBUS_STATE_SEND_QUERY, MODBUS_STATE_WAIT_RESPONSE, MODBUS_STATE_ERROR_RETRY } modbus_client_state_t; /** * @brief 初始化 Modbus TCP 客户端 * @param sn: W5500 Socket 编号 */ void ModbusTCP_Client_Init(uint8_t sn); /** * @brief Modbus TCP 客户端任务处理 (主循环调用) */ void ModbusTCP_Client_Task(void); /** * @brief 获取最新成功读取的 Modbus 寄存器值 * @retval 16位寄存器值 (未读到时默认返回 0xFFFF) */ uint16_t ModbusTCP_Get_LastRegVal(void); #endif