From 0fab14bd3b70cdb16f134eaeeaac7d0947f2078f Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期三, 25 十一月 2020 19:36:16 +0800 Subject: [PATCH] 增加速度滤波阈值 --- 源码/核心板/Src/application/modbus.c | 63 +++++++++++++++++-------------- 1 files changed, 34 insertions(+), 29 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/modbus.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/modbus.c" index a0ed72f..715d445 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/modbus.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/modbus.c" @@ -1,5 +1,6 @@ #include "modbus.h" #include "Rcc_Nvic_Systick.h" +#include "global_param.h" /////////////////////////////////////////////////////////// //u32 RS485_Baudrate=9600;//通讯波特率 //u8 RS485_Parity=0;//0无校验;1奇校验;2偶校验 @@ -24,6 +25,7 @@ void Modbus_RegMap(void) { u16 i; + RS485_Addr=g_com_map[DEV_ID]; for(i=0;i<MODBUS_SIZE;i++) { Modbus_HoldReg[i]=i; @@ -184,19 +186,22 @@ //发送n个字节数据 //buff:发送区首地址 //len:发送的字节数 -void RS485_SendData(u8 *buff,u8 len) -{ - RS485_TX_ON;//切换为发送模式 - delay_us(100); - while(len--) - { - while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待发送区为空 - USART_SendData(USART1,*(buff++)); - } - while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//等待发送完成 - RS485_TX_OFF;//开启接收模式 - delay_us(100); -} +//void RS485_SendData(u8 *buff,u8 len) +//{ +// RS485_TX_ON;//切换为发送模式 +// #ifdef BAUDRATE_19200 +// delay_ms(5); +// #else +// delay_ms(1); +// #endif +// while(len--) +// { +// while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待发送区为空 +// USART_SendData(USART1,*(buff++)); +// } +// while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//等待发送完成 +// RS485_TX_OFF;//开启接收模式 +//} ///////////////////////////////////////////////////////////////////////////////////// @@ -324,7 +329,7 @@ RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x04; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); cmd_mode = 0;//协议处理完成 } } @@ -333,7 +338,7 @@ RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); cmd_mode = 0;//协议处理完成 } } @@ -342,7 +347,7 @@ RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x01; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); cmd_mode = 0;//协议处理完成 } } @@ -380,14 +385,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,ByteNum+3); RS485_TX_BUFF[ByteNum+3]=(calCRC>>8)&0xFF; RS485_TX_BUFF[ByteNum+4]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,ByteNum+5); + UART_PushFrame(RS485_TX_BUFF,ByteNum+5); } else//寄存器地址+数量超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } @@ -418,14 +423,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,ByteNum+3); RS485_TX_BUFF[ByteNum+3]=(calCRC>>8)&0xFF; RS485_TX_BUFF[ByteNum+4]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,ByteNum+5); + UART_PushFrame(RS485_TX_BUFF,ByteNum+5); } else//寄存器地址+数量超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } @@ -448,14 +453,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,6); RS485_TX_BUFF[6]=(calCRC>>8)&0xFF; RS485_TX_BUFF[7]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,8); + UART_PushFrame(RS485_TX_BUFF,8); } else//寄存器地址超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } @@ -483,14 +488,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,6); RS485_TX_BUFF[6]=(calCRC>>8)&0xFF; RS485_TX_BUFF[7]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,8); + UART_PushFrame(RS485_TX_BUFF,8); } else//寄存器地址+数量超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } @@ -513,14 +518,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,RegNum*2+3); RS485_TX_BUFF[RegNum*2+3]=(calCRC>>8)&0xFF; //CRC高地位不对吗? // 先高后低 RS485_TX_BUFF[RegNum*2+4]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,RegNum*2+5); + UART_PushFrame(RS485_TX_BUFF,RegNum*2+5); } else//寄存器地址+数量超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } @@ -542,7 +547,7 @@ calCRC=CRC_Compute(RS485_TX_BUFF,6); RS485_TX_BUFF[6]=(calCRC>>8)&0xFF; RS485_TX_BUFF[7]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,8); + UART_PushFrame(RS485_TX_BUFF,8); } //Modbus功能码16处理程序 /////////////////////////////////////////////////////////////////////////////////////////////////已验证程序OK @@ -569,14 +574,14 @@ calCRC=CRC_Compute(RS485_TX_BUFF,6); RS485_TX_BUFF[6]=(calCRC>>8)&0xFF; RS485_TX_BUFF[7]=(calCRC)&0xFF; - RS485_SendData(RS485_TX_BUFF,8); + UART_PushFrame(RS485_TX_BUFF,8); } else//寄存器地址+数量超出范围 { RS485_TX_BUFF[0]=RS485_RX_BUFF[0]; RS485_TX_BUFF[1]=RS485_RX_BUFF[1]|0x80; RS485_TX_BUFF[2]=0x02; //异常码 - RS485_SendData(RS485_TX_BUFF,3); + UART_PushFrame(RS485_TX_BUFF,3); } } -- Gitblit v1.9.3