修复modbus错误回传0长度报文 zsxfly20240820

This commit is contained in:
zsx 2024-08-20 23:33:30 +08:00
parent 33051e8fb3
commit 399d6f4f5f
7 changed files with 4988 additions and 5083 deletions

File diff suppressed because it is too large Load Diff

View File

@ -93,8 +93,8 @@
<flags>0</flags> <flags>0</flags>
<showCmd>1</showCmd> <showCmd>1</showCmd>
<MinPosition> <MinPosition>
<xPos>-1</xPos> <xPos>-32000</xPos>
<yPos>-1</yPos> <yPos>-32000</yPos>
</MinPosition> </MinPosition>
<MaxPosition> <MaxPosition>
<xPos>-1</xPos> <xPos>-1</xPos>
@ -3714,9 +3714,9 @@
</Doc> </Doc>
<Doc> <Doc>
<Name>..\src\app_PAD.c</Name> <Name>..\src\app_PAD.c</Name>
<ColumnNumber>0</ColumnNumber> <ColumnNumber>25</ColumnNumber>
<TopLine>196</TopLine> <TopLine>263</TopLine>
<CurrentLine>224</CurrentLine> <CurrentLine>282</CurrentLine>
<Folding>1</Folding> <Folding>1</Folding>
<ContractedFolders></ContractedFolders> <ContractedFolders></ContractedFolders>
<PaneID>0</PaneID> <PaneID>0</PaneID>
@ -3768,7 +3768,7 @@
</Doc> </Doc>
<Doc> <Doc>
<Name>..\src\app_modbus.c</Name> <Name>..\src\app_modbus.c</Name>
<ColumnNumber>16</ColumnNumber> <ColumnNumber>28</ColumnNumber>
<TopLine>238</TopLine> <TopLine>238</TopLine>
<CurrentLine>258</CurrentLine> <CurrentLine>258</CurrentLine>
<Folding>1</Folding> <Folding>1</Folding>

View File

@ -215,8 +215,18 @@ void app_PAD_CheckData(uint8_t *dat , uint8_t len){
case 0x06: //读 //12V输出状态 case 0x06: //读 //12V输出状态
sys_sta.O_12V = PAD_daraframe.data[0] & 0x01; sys_sta.O_12V = PAD_daraframe.data[0] & 0x01;
break; break;
case 0x10:
ret_data[length++] =BAT_Message.Bat_STA; // 电池状态
ret_data[length++] =BAT_Message.Bat_Voltage >> 8; //电池电压
ret_data[length++] =BAT_Message.Bat_Voltage & 0xff;
ret_data[length++] =get_in_acc_percent();// 当前油门百分比
ret_data[length++] =radar_data.radar_id;// 雷达ID
ret_data[length++] =radar_data.distance/100;// 雷达距离信息
ret_data[length++] =(sys_sta.IOgps <<0) | (sys_sta.I_back <<1) | (sys_sta.I_brake <<2)
| (sys_sta.IOmanager <<3) | (sys_sta.Manager <<4)
| (sys_sta.Tourist <<5) | (sys_sta.A_Speed_Cut <<6) | (sys_sta.A_brake <<7);
} }
app_PAD_Sendcmd(PAD_daraframe.cmd_id ,0x01 ,ret_data ,length); app_PAD_Sendcmd(PAD_daraframe.cmd_id ,PAD_daraframe.reg_addr ,ret_data ,length);
} }
} }
} }

View File

@ -56,16 +56,19 @@ enum app_control{
typedef struct sys_sta{ typedef struct sys_sta{
// uint16_t Pmode:2; // uint16_t Pmode:2;
union{ union{
uint8_t Pmode:2; uint8_t Pmode;
uint8_t Smode:2;
struct{ struct{
uint8_t Tourist:1; uint8_t Tourist:1;
uint8_t Manager:1; uint8_t Manager:1;
uint8_t RES0 :2; uint8_t RES_0:6;
};
};
union{
uint8_t Smode;
struct{
uint8_t IOgps:1; uint8_t IOgps:1;
uint8_t IOmanager:1; uint8_t IOmanager:1;
uint8_t RES1 :2; uint8_t RES_1:6;
}; };
}; };
union{// 输入状态 union{// 输入状态

View File

@ -90,7 +90,8 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
MODBUS_Sent_BUF[len_count++] =MODBUS_ADDR; MODBUS_Sent_BUF[len_count++] =MODBUS_ADDR;
MODBUS_Sent_BUF[len_count++] =CMDCode; MODBUS_Sent_BUF[len_count++] =CMDCode;
if(CMDCode == 0x03){ if(CMDCode == 0x03){//寄存器个数计数
MODBUS_Sent_BUF[2] =0;
len_count++; len_count++;
}else if(CMDCode == 0x06){ }else if(CMDCode == 0x06){
MODBUS_Sent_BUF[len_count++] =(reg_addr >> 8) & 0xff; MODBUS_Sent_BUF[len_count++] =(reg_addr >> 8) & 0xff;
@ -359,6 +360,9 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
len_count =0; len_count =0;
break; break;
} }
if(len_count == 0){
return;
}
app_modbus_SendData(MODBUS_Sent_BUF ,len_count); app_modbus_SendData(MODBUS_Sent_BUF ,len_count);
} }

View File

@ -8,7 +8,7 @@
#include "sys_config.h" #include "sys_config.h"
#define DBG_RADAR_EN 1 #define DBG_RADAR_EN 0
#if (DBG_RADAR_EN) #if (DBG_RADAR_EN)
#include "dbg.h" #include "dbg.h"
@ -156,6 +156,8 @@ void app_radar_Sendcmd(uint8_t radar_id , uint8_t radar_mode){
// 雷达测离初始化 // 雷达测离初始化
void app_radar_init(void){ void app_radar_init(void){
radar_data.radar_id = RADAR_ID_Front;
radar_data.distance = 0;
// sftmr_init(); //main函数中已初始化 // sftmr_init(); //main函数中已初始化
sftmr_start(10, radar_timer_handler); sftmr_start(10, radar_timer_handler);
} }

View File

@ -50,8 +50,8 @@ void conf_init(void);
/**************************系统版本**************************/ /**************************系统版本**************************/
// 软件本号 // 软件本号
#define SOFTWARE_ID 0x0102 #define SOFTWARE_ID 0x0101
#define D_Modbus_addr 0x01 #define D_Modbus_addr 0x37
/************************油门(Unit:%)************************/ /************************油门(Unit:%)************************/
// 管理员模式默认油门极限(0-100%) // 管理员模式默认油门极限(0-100%)
#define D_Manager_sLim 100 #define D_Manager_sLim 100