一、TCPUDPDebug102_Setup
1.安装
2.STM32与W5500接线方法
PA3 -> W5500_RST
PA4 -> W5500_SCS
PA5 -> W5500_SCLK
PA6 -> W5500_MISO
PA7 -> W5500_MOSI
二、STM32+W5500+modbus协议编程
1.主函数部分
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI1_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
System_Initialization(); //STM32系统初始化函数(初始化STM32时钟及外设)
Load_Net_Parameters(); //装载网络参数
W5500_Hardware_Reset(); //硬件复位W5500
W5500_Initialization(); //W5500初始货配置
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
W5500_Socket_Set();//W5500端口初始化配置
W5500_Interrupt_Process();//W5500中断处理程序框架
if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到数据
{
S0_Data&=~S_RECEIVE;
Process_Socket_Data(0);//W5500接收并发送接收到的数据
}
// else //定时发送字符串
// {
// if(S0_State == (S_INIT|S_CONN))
// {
// S0_Data&=~S_TRANSMITOK;
// memcpy(Tx_Buffer, "\r\n你好服务器,我是客户1!\r\n", 23);
// Write_SOCK_Data_Buffer(0, Tx_Buffer, 23);//指定Socket(0~7)发送数据处理,端口0发送23字节数据
// }
// }
// HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
// data++;
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
2.响应函数
void Process_Socket_Data(SOCKET s)
{
int len;
unsigned char msg[11]={0x00,0x00,0x00 ,0x00, 0x00, 0x05, 0x01, 0x03, 0x02, 0x00, 0x70};
len=sizeof(msg);
unsigned short size;
size=Read_SOCK_Data_Buffer(s, Rx_Buffer);
memcpy(Tx_Buffer, Rx_Buffer, size);
//打印查询报文
for (int j=0;j<size;j++){
printf("0x%02X ",Tx_Buffer[j]);
}
//写响应报文
//检验码
msg[0]=Tx_Buffer[0];
msg[1]=Tx_Buffer[1];
//协议
msg[2]=0x00;
msg[3]=0x00;
//数据包长度
msg[4]=0x00;
msg[5]=0x05;
//设备编号
msg[6]=Tx_Buffer[6];
//功能码
msg[7]=Tx_Buffer[7];
//数据长度
msg[8]=0x02;
//低八位
msg[10]=data&0XFF;
//高八位
msg[9]=data>>8;
memcpy(Tx_Buffer, msg, len);
//发送响应报文
Write_SOCK_Data_Buffer(0, Tx_Buffer, len);
data++;
}
3.TCP连接
三、设置
1.setup->read/write definition…
2.Connection->Connect…
3.修改tcp
四、参考链接
http://www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.1/Comm_9.1.html#:~:text=Modbus%20TCP%E6%95%B0%E6%8D%AE%E5%B8%A7%20Modbus%E6%95%B0%E6%8D%AE%E5%9C%A8TCP/IP%E4%BB%A5%E5%A4%AA%E7%BD%91%E4%B8%8A%E4%BC%A0%E8%BE%93%EF%BC%8C%E6%94%AF%E6%8C%81Ethernet%20II%E5%92%8C802.3%E4%B8%A4%E7%A7%8D%E5%B8%A7%E6%A0%BC%E5%BC%8F%EF%BC%8CModbus,TCP%E6%95%B0%E6%8D%AE%E5%B8%A7%E5%8C%85%E5%90%AB%E6%8A%A5%E6%96%87%E5%A4%B4%E3%80%81%E5%8A%9F%E8%83%BD%E4%BB%A3%E7%A0%81%E5%92%8C%E6%95%B0%E6%8D%AE3%E9%83%A8%E5%88%86%EF%BC%8CMBAP%E6%8A%A5%E6%96%87%E5%A4%B4%28MBAP%E3%80%81Modbus%20Application%20Protocol%E3%80%81Modbus%E5%BA%94%E7%94%A8%E5%8D%8F%E8%AE%AE%29%E5%88%864%E4%B8%AA%E5%9F%9F%EF%BC%8C%E5%85%B17%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%8C%E5%A6%82%E5%9B%BE1%E6%89%80%E7%A4%BA%EF%BC%9A%20%E5%9B%BE1%EF%BC%9AMODBUS%20TCP%E6%8A%A5%E6%96%87
https://blog.csdn.net/tcjy1000/article/details/22962067
https://blog.csdn.net/qq_47281915/article/details/121927294?spm=1001.2014.3001.5501