51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
|
|
/**
|
||
|
|
******************************************************************************
|
||
|
|
* @file modbus_tcp_client.h
|
||
|
|
* @brief Modbus TCP 客户端模块头文件 (基于 W5500)
|
||
|
|
******************************************************************************
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef __MODBUS_TCP_CLIENT_H
|
||
|
|
#define __MODBUS_TCP_CLIENT_H
|
||
|
|
|
||
|
|
#include <stdint.h>
|
||
|
|
#include <stdbool.h>
|
||
|
|
#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_PROCESS_DATA,
|
||
|
|
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);
|
||
|
|
|
||
|
|
#endif
|